name: ASP.NET Core CI on: [push] jobs: build_and_test: runs-on: $ strategy: matrix: os: [macOS-latest, ubuntu-latest, windows-latest] steps: - name: Setup .NET Core uses: actions/setup-dotnet@v1.2.0 with: dotnet-version: 3.0.100 if: matrix.os == 'macOS-latest' || matrix.os == 'ubuntu-latest' - uses: actions/checkout@v1 - name: Build with dotnet run: dotnet build ./src/Solution.sln --configuration Release - name: Test with dotnet run: dotnet test ./src/Solution.sln --configuration Release
مثال 1: تمام اطلاعات یک جدول را دریافت کنید.
هدف دریافت تمام اطلاعات جدول facilities است.
برای انجام اینکار فقط کافیاست بر روی DbSet متناظر با آن، متد ToList فراخوانی شود:
var facilities = context.Facilities.ToList();
یک نکته: به فراخوانی متد ToList، اصطلاحا materialization گفته میشود و هدف آن تبدیل یک IQueryable، به یک IEnumerable است. اطلاعات بیشتر
مثال 2: اطلاعات ستونهای خاصی از یک جدول را دریافت کنید.
میخواهیم لیست نام امکانات مجموعه را به همراه هزینهی مرتبط با آنها، نمایش دهیم:
var facilities = context.Facilities.Select(x => new { x.Name, x.MemberCost }).ToList();
مثال 3: نحوهی بازگشت ردیفها را کنترل کنید.
چگونه میتوان لیست امکاناتی را بازگشت داد که برای کاربران رایگان نیستند؟
var facilities = context.Facilities.Where(x => x.MemberCost > 0).ToList();
مثال 4: نحوهی بازگشت ردیفها را کنترل کنید؛ قسمت دوم.
چگونه میتوان لیست امکاناتی را بازگشت داد که برای کاربران رایگان نیستند و همچنین هزینهی آنها، 1/50 ام هزینهی نگهداری ماهیانهی آنها است؟ خروجی این کوئری باید تنها به همراه ستونهای FacId, Name, MemberCost, MonthlyMaintenance باشد.
var facilities = context.Facilities.Where(x => x.MemberCost > 0 && x.MemberCost < (x.MonthlyMaintenance / 50)) .Select(x => new { x.FacId, x.Name, x.MemberCost, x.MonthlyMaintenance }).ToList();
در این مثال نحوهی ترکیب چند شرط را با هم در قسمت Where، مشاهده میکنید و همچنین با استفاده از متد Select، تعداد ستونهای بازگشتی نیز کنترل شدهاند.
مثال 5: جستجوهای سادهی رشتهای
لیستی از امکاناتی را تهیه کنید که واژهی «Tennis» در نام آنها بکار رفتهاست.
var facilities = context.Facilities.Where(x => x.Name.Contains("Tennis")).ToList();
مثال 6: ردیفهایی را که با چندین مقدار ممکن تطابق دارند، بازگشت دهید.
چگونه میتوان امکانات دارای ID مساوی 1 و 5 را بازگشت داد؟ برای اینکار از ترکیب شرطها با استفاده از OR استفاده نکنید.
int[] ids = { 1, 5 }; var facilities = context.Facilities.Where(x => ids.Contains(x.FacId)).ToList();
مثال 7: نتایج بازگشت داده شده را طبقه بندی کنید.
گزارشی از امکانات را تهیه کنید که در آن اگر هزینهی نگهداری ماهیانهی امکاناتی بیشتر از 100 دلار بود، به صورت expensive و در غیراینصورت cheap، طبقه بندی شوند.
var facilities = context.Facilities .Select(x => new { x.Name, Cost = x.MonthlyMaintenance > 100 ? "expensive" : "cheap" }).ToList();
مثال 8: کار با تاریخ و زمان
لیست کاربرانی را بازگشت دهید که پس از September 2012 عضو این مجموعه شدهاند. این گزارش باید تنها به همراه ستونهای MemId, Surname, FirstName, JoinDate باشد.
var date = new DateTime(2012, 09, 01); var members = context.Members.Where(x => x.JoinDate >= date) .Select(x => new { x.MemId, x.Surname, x.FirstName, x.JoinDate }).ToList();
مثال 9: نتایج تکراری را از اطلاعات بازگشتی حذف کرده و آنها را مرتب کنید.
گزارشی را تهیه کنید که در آن تنها فیلد Surname مرتب شدهی کاربران وجود دارد. از لیست Surnameها، تنها 10 مورد غیر تکراری را بازگشت دهید.
var members = context.Members.OrderBy(x => x.Surname) .Select(x => new { x.Surname }) .Distinct() .Take(10) .ToList();
مثال 10: نتایج چند کوئری را با هم ترکیب کنید.
لیست نامهای امکانات و نامهای اشخاص را با هم ترکیب کنید.
var names = context.Members.Select(m => m.Surname).ToList() .Union(context.Facilities.Select(f => f.Name).ToList()) // For now we have to use `.ToList()` here .ToList();
SELECT surname FROM members UNION SELECT name FROM facilities;
یعنی در مثال فوق، دوبار رفت و برگشت به بانک اطلاعاتی صورت گرفته (به ازای هر ToList ذکر شده) و سپس نتیجهی حاصل، در سمت کلاینت با هم Union شدهاند و نه در سمت دیتابیس.
مثال 11: محاسبات تجمعی ابتدایی
زمان ثبت نام آخرین عضو مجموعه چیست؟
برای حل این مثال میتوان از روشهای مختلفی استفاده کرد:
الف) استفاده از متد تجمعی Max برای یافتن بزرگترین مقدار JoinDate
var latest = context.Members.Max(x => x.JoinDate);
متد Max برای خواص nullable میتواند null را بازگشت دهد و همچنین اگر این مجموعه دارای مقداری نباشد و آن خاصیت نیز nullable نباشد، استثنای Sequence contains no element را صادر میکند. میتوان این استثناء را به صورت زیر با استفاده از متد DefaultIfEmpty کنترل کرد:
var latest2 = context.Members.Select(m => m.JoinDate).DefaultIfEmpty().Max();
SELECT MAX([m].[JoinDate]) FROM (SELECT NULL AS [empty]) AS [empty] LEFT OUTER JOIN [Members] AS [m] ON 1 = 1;
var latest3 = context.Members.Max(m => (DateTime?)m.JoinDate) ?? DateTime.Now;
ب) بجای استفاده از متد Max میتوان ابتدا رکوردها را بر اساس JoinDate به صورت نزولی مرتب کرد و سپس اولین عضو حاصل را بازگشت داد؛ چون اکنون بر اساس مرتب سازی صورت گرفته، در بالای لیست قرار دارد:
var latest4 = context.Members.OrderByDescending(m => m.JoinDate).Select(m => m.JoinDate).FirstOrDefault();
مثال 12: مثالی دیگر از محاسبات تجمعی ابتدایی
در مثال قبلی، نام و نام خانوادگی آخرین شخص ثبت نام شده را نیز به گزارش اضافه کنید؛ یعنی Select انجام شده شامل x.FirstName, x.Surname, x.JoinDate باشد.
یک روش انجام اینکار، همان کوئری ب مثال قبلی است که اینبار فقط Select آن فرق میکند:
var lastMember = context.Members.OrderByDescending(m => m.JoinDate) .Select(x => new { x.FirstName, x.Surname, x.JoinDate }) .FirstOrDefault();
روش دیگر آن نوشتن یک sub-query در قسمت Where است:
var members = context.Members.Select(x => new { x.FirstName, x.Surname, x.JoinDate }) .Where(x => x.JoinDate == context.Members.Max(x => x.JoinDate)) .ToList();
کدهای کامل این قسمت را در اینجا میتوانید مشاهده کنید.
00:00:00 Intro
00:04:40 Installation
00:13:11 Configs
00:21:46 Basics
00:26:57 Interface & Type
00:28:49 Optionals
00:36:40 Array & Tuple
00:41:05 Litteral Type & Enum
00:46:00 Null & Void
00:56:01 Any & Unknown
01:11:01 Extends
01:12:40 Interface vs Type
01:16:58 Never
01:28:50 Intersection
01:34:03 Generics
01:49:03 Conclusion
و اینکه به چه صورت میتوانم آنها را بصورت حروف کوچک نمایش دهم و حس کنجکاوی اونم از نوع مخصوص گل کرد.
برای اینکار دو روش وجود دارد :
روش 1 - تغییر مقدار در رجیستری سیستم عامل ویندوز
بدین صورت که شما باید به این مسیر مراجعه نموده
در ویندوز 7 :
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\General\
HKEY_CURRENT_USER\Software\Microsoft\VSWinExpress\11.0\General\
HKEY_CURRENT_USER\Software\Microsoft\VSWDExpress\11.0\General\
ایجاد یک کلید از نوع DWORD :
و با نام SuppressUppercaseConversion و با مقدار 1 در مسیر یاد شده تنظیم نمائید.
سپس راه اندازی مجدد visual studio و مشاهده منوهای تغییر یافته .
روش 2 - کسانی مثل من کمی تنبل هستند و از این کارهای فوق دوست ندارند راه آسانتر را میتوانند تجربه کنند بصورت ذیل:
در منوی start ویندوز با تایپ کلمه powershell و انتخاب Windows PowerShell به صفحهای آبی رنگ (در ویندوز 7 ) وارد میشود .
دستور ذیل را کپی و به پنجره powershell انتقال دهید :
Set-ItemProperty -Path HKCU:\Software\Microsoft\VisualStudio\11.0\General -Name SuppressUppercas eConversion -Type DWord -Value 1
React 16x
- قسمت 1 : معرفی و شروع به کار
- قسمت 2 : بررسی پیشنیازهای جاوا اسکریپتی - بخش 1
- قسمت 3 : بررسی پیشنیازهای جاوا اسکریپتی - بخش 2
- قسمت 4 : کامپوننتها - بخش 1 - کار با عبارات JSX
- قسمت 5 : کامپوننتها - بخش 2 - نمایش لیستها و مدیریت رویدادها و حالات
- قسمت 6 : کامپوننتها - بخش 3 - یک تمرین
- قسمت 7 : ترکیب کامپوننتها - بخش 1 - ارسال دادهها، مدیریت رخدادها
- قسمت 8 : ترکیب کامپوننتها - بخش 2 - مدیریت state
- قسمت 9 : ترکیب کامپوننتها - بخش 3 - Lifecycle Hooks
- قسمت 10 : ترکیب کامپوننتها - بخش 4 - یک تمرین
- قسمت 11 : طراحی یک گرید - بخش 1 - کامپوننت صفحه بندی
- قسمت 12 : طراحی یک گرید - بخش 2 - فیلتر کردن اطلاعات
- قسمت 13 : طراحی یک گرید - بخش 3 - مرتب سازی اطلاعات
- قسمت 14: طراحی یک گرید - بخش 4 - پویاسازی تعاریف ستونها
- قسمت 15 :مسیریابی - بخش 1 - تعریف و تنظیم مسیریابیها
- قسمت 16 : مسیریابی - بخش 2 - پارامترهای مسیریابی
- قسمت 17 : مسیریابی - بخش 3 - یک تمرین
- قسمت 18 : کار با فرمها - بخش 1 - دریافت ورودیها از کاربر
- قسمت 19 : کار با فرمها - بخش 2 - اعتبارسنجی ورودیهای کاربران
- قسمت 20 : کار با فرمها - بخش 3 - بهبود کیفیت کدهای فرم لاگین
- قسمت 21 : کار با فرمها - بخش 4 - چند تمرین
- قسمت 22 : ارتباط با سرور - بخش 1 - برپایی تنظیمات
- قسمت 23 : ارتباط با سرور - بخش 2 - شروع به کار با Axios
- قسمت 24 : ارتباط با سرور - بخش 3 - نکات تکمیلی کار با Axios
- قسمت 25 : ارتباط با سرور - بخش 4 - یک تمرین
- قسمت 26 : احراز هویت و اعتبارسنجی کاربران - بخش 1 - ثبت نام و ورود به سیستم
- قسمت 27 : احراز هویت و اعتبارسنجی کاربران - بخش 2 - استخراج و نمایش اطلاعات JWT و خروج از سیستم
- قسمت 28 : احراز هویت و اعتبارسنجی کاربران - بخش 3 - فراخوانی منابع محافظت شده و مخفی کردن عناصر صفحه
- قسمت 29 : احراز هویت و اعتبارسنجی کاربران - بخش 4 - محافظت از مسیرها
- قسمت 30 : React Hooks - بخش 1 - معرفی useState و useEffect
- قسمت 31 : React Hooks - بخش 2 - مقایسه حالتهای مختلف مدیریت حالت با useState Hook
- قسمت 32 : React Hooks - بخش 3 - نکات ویژهی برقراری ارتباط با سرور
- قسمت 33 : React Hooks - بخش 4 - useContext Hook
Redux
- قسمت اول : Redux چیست؟
- قسمت دوم : بررسی توابع Redux
- قسمت سوم : روش اتصال Redux به برنامههای React
- قسمت چهارم : انجام اعمال async با Redux
- قسمت پنجم : Redux Hooks
- قسمت ششم : MobX چیست؟
- قسمت هفتم : بررسی مفاهیم Mobx
- قسمت هشتم : تنظیمات پروژههای React برای کار با Mobx decorators
- قسمت نهم : مثالی از کتابخانهی mobx-react
- قسمت دهم : MobX Hooks و اعمال Async در Mobx
- ساخت یک مثال Todo با MobX و React
- روش یکی کردن پروژههای React و ASP.NET Core
- آپلود فایلها توسط برنامههای React به یک سرور ASP.NET Core به همراه نمایش درصد پیشرفت
- روش کار با فایلهای ایستا در برنامههای React
- روش کار با فایلهای پویای ارائه شدهی توسط یک برنامهی ASP.NET Core در برنامههای React
- استفاده از قالب مخصوص Redux Toolkit جهت ایجاد پروژههای React/Redux
- تبدیل یک قالب HTML معمولی به قالب React
- React component lifecycle
- React reconciliation
In this particular example (Windows 10 with SSD drive with BitLocker enabled) reading 1 MB file is now 2.5 times faster, while writing is 5.5 times faster.
The memory allocations dropped from 39 kilobytes to 192 bytes! This is a 99.5% improvement!
Method | Runtime | Mean | Ratio | Allocated |
---|---|---|---|---|
ReadAsync | .NET 5.0 | 3.419 ms | 1.00 | 39,504 B |
ReadAsync | .NET 6.0 | 1.445 ms | 0.42 | 192 B |
| | | | |
WriteAsync | .NET 5.0 | 12.181 ms | 1.00 | 39,192 B |
WriteAsync | .NET 6.0 | 2.193 ms | 0.18 | 192 B |
Today we are excited to announce the preview of the Microsoft Build of OpenJDK, a new no-cost Long-Term Support (LTS) distribution of OpenJDK that is open source and available for free for anyone to deploy anywhere. It includes binaries for Java 11, based on OpenJDK 11.0.10+9, on x64 server and desktop environments on macOS, Linux, and Windows. We are also publishing a new Early Access binary for Java 16 for Windows on ARM, based on the latest OpenJDK 16+36 release.
public IActionResult ConfirmOrder(Order order) { using (Serilog.Context.LogContext.PushProperty("OrderId", order.Id)) { _logger.LogInformation("Check order validation"); //DoSomething _logger.LogInformation("Order validation successfully"); //DoSomething _orderService.ConfirmOrder(order); _logger.LogInformation("Order confirmed successfully"); } return Ok(); }
{ "Timestamp":"2020-10-20T23:01:01.0492132+03:30", "Level":"Information", "MessageTemplate":"Order Confirmed successfully", "Properties":{ "SourceContext":"SerilogExamlpe.WebApplication.Controllers.WeatherForecastController", "ActionId":"870582be-312f-4065-88eb-5675e2df4928", "ActionName":"SerilogExamlpe.WebApplication.Controllers.WeatherForecastController.Get (SerilogExamlpe.WebApplication)", "RequestId":"0HM3L5QM34E6K:00000001", "RequestPath":"/weatherforecast", "SpanId":"|da92fcac-4169ab4e937de2ae.", "TraceId":"da92fcac-4169ab4e937de2ae", "ParentId":"", "OrderId":12345,//<-- NOTE THIS "MachineName":"FARHAD-PC", "Environment":"Development" } }
using (_logger.BeginScope("OrderId : {orderId}", 12345))
app.Use(async (httpContext, next) => { //Get username var username = httpContext.User.Identity.IsAuthenticated ? httpContext.User.Identity.Name : "anonymous"; LogContext.PushProperty("User", username); //Get remote IP address var ip = httpContext.Connection.RemoteIpAddress.ToString(); LogContext.PushProperty("IP", !String.IsNullOrWhiteSpace(ip) ? ip : "unknown"); await next.Invoke(); });
وبلاگها و سایتهای ایرانی
Visual Studio
ASP. Net
طراحی وب
اسکیوال سرور
Nhibernate
عمومی دات نت
ویندوز
متفرقه
- JavaFX 1.0 منتشر شد. (بحث داغ این هفتهی مجامع جاوا بود)
کتابخانه angular-overlay-menu
This directive is designed to provide a general purpose overlay menu. Floating menu can be used for both flat and nested navigation structures. Desgined to be as simple as possible in order to afford intuitive interactions. Demo