کدهک
1.95K subscribers
1.29K photos
7 videos
1 file
672 links
آموزشگاه تخصصی دات نت

https://codehaks.com

لینکدین :
https://www.linkedin.com/in/codehaks

یوتیوب:
https://www.youtube.com/@codehaksfa

ارتباط با مدیر :
Admin: @codehak
Email: ghods.hakim@hotmail.com
call: 09380146555
Download Telegram
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
❇️ فعال سازی سطح دوم کش روی EF Core توسط EFCoreSecondLevelCacheInterceptor

قبلا کتابخانه EFSecondLevelCache.Core رو معرفی کرده بودیم
توسط این کتابخانه میتونین کش سطح دوم (second level caching) رو روی EF Core فعال کنین. در واقع میتونین نتیجه کوئری هاتون رو کش کنین تا دفعه بعد، به جای دیتابیس، از کش خونده بشه.
این کتابخانه توسط وحید نصیری عزیز، مدیر سایت dotnettips.info نوشته شده است.

اکنون میخوایم کتابخانه جایگزین اون یعنی EFCoreSecondLevelCacheInterceptor رو معرفی کنیم
این کتابخونه هم مشابه قبلی هست و توسط وحید نصیری نوشته

🔰مزیت این کتابخونه نسبت به قبلی اینه که :
🔹کار باهاش ساده تره
🔸به دلیل استفاده از Interceptor پرفرمنس بالاتری داره
🔹یه سری از باگ ها و محدودیت هایی که قبلی داشت رو دیگه نداره
🔸و وابستگی به کتابخونه شخص ثالث برای Caching نداره و از Abstract های خود دات نت استفاده میکنه

🔰 نکته :
✔️اکیدا پیشنهاد میکنم اگه از قبلی استفاده میکردین، به پکیج جدید مهاجرت کنین (ضمن اینکه کتابخانه قلبی Archive شده و دیگر توسعه داده نمشه)
✔️کشینگ همیشه ازش به عنوان یه شمشیر "دو لبه" یاد میشه که اگه با علم کافی و به جا ازش استفاده نکنین و حواستون به Invalidate کردن ایتم های کش شده نباشه، سیستم رو دچاره مشکل میکنه
خوبی این کتابخونه اینه که بحث Invalidate کردن رو به صورت خودکار انجام میده و دیگه نگرانیی بابت اون نخواهید داشت، پس افرادی که توی این مبحث واقعا بزرگ (Caching) حرفه ای هم نیستن راحت تر میتونن تو پروژه هاشون ازش استفاده کنن

https://github.com/VahidN/EFCoreSecondLevelCacheInterceptor
___________________
@DotNetZoom
Forwarded from کدهک
آشنایی با الگوریتم Hi/Lo

معمولا کلید اصلی توسط دیتابیس ساخته میشود اما برای بدست آوردن آن اطلاعات رکورد ابتدا باید در دیتابیس ذخیره شود.

گاهی لازم است پیش از ذخیره سازی کلید اصلی در دسترس باشد در این موارد می توان از الگوریتم Hi/Lo استفاده کرد.

https://cutt.ly/4rwlwyq
کنترل عمر اپلیکیشن در ASP NET Core

در ASP NET Core می توان اپ را با استفاده از کد درون برنامه متوقف کرد و همچنین قبل از بسته شدن برنامه عملیات انجام داد. در این ویدیو اینترفیس IHostApplicationLifetime را بررسی می کنیم.

https://codehaks.com/go/apl
نمایش Spinner هنگام بارگذاری AJAX

خوب است هنگامی که دریافت اطلاعات از سرور طولانی میشود با نمایش یک اسپینر یا لودر کاربر را از اجرای عملیات در پس زمینه با خبر کنیم. در این ویدیو به آموزش پیاده سازی Spinner هنگام بارگذاری اطلاعات AJAX در ASP NET Core می پردازیم.

https://codehaks.com/go/spn
آپلود فایل در ASP NET Core

در این ویدیو از یک پروژه خالی شروع می کنیم و گام به گام مراحل پیاده سازی آپلود کردن فایل در ASP NET Core پیاده می کنیم. با نحوه ذخیره فایل در هارد سرور آشنا می شویم و درباره سطح دسترسی به فایل صحبت میکنیم.

https://codehaks.com/go/xra
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
مشاهده تاریخچه فعالیت های یک ریپازیتوری یا یک شخص در گیتهاب با GitMemory

🔰توسط این سایت میتونین تاریخچه کاملی از فعالیت های یک شخص توی Gtihub از جمله
🔸نوع و میزان فعالیت هاش مثل commit - push - issue - pull request و... هایی که انجام داده
🔹اینکه چه ریپازیتوری هایی رو دنبال میکنه و به کدوما Star داده
🔸چه Contribute هایی داشته - چه Issue هایی باز کرده و چه Pull Request هایی زده
🔹و... رو مشاهده کنین

مثلا این لینک فعالیت های اخیر Marc Gravell (نویسنده کتابخانه های معروف Dapper و SE.Redis) رو نشون میده
https://www.gitmemory.com/mgravell

🔰یا مثلا یک ریپازیتوری Github اخیرا چه فعالیت هایی داشته از جمله
🔸نمودار Star های دریافت کرده
🔹توی یک سال اخیر چه کامیت هایی روش زده شده
🔸چندتا Issue باز و چندتا بسته داره
🔹و ... رو مشاهده کنین

مثلا این لینک فعالیت های اخیر کتابخونه log4net که به تازگی بازنشستگی خودش رو اعلام کرد نشون میده
https://www.gitmemory.com/apache/logging-log4net

توی همین لینک میشه عدم فعالیت توی یک سال اخیر این کتابخونه رو به وضوح دید، مثلا توی یک سال اخیر هیچ کامیتی نداشته
مشابه همین اتفاق برای کتابخونه CacheManager هم رخ داده و به احتمال زیاد آینده ای نخواهد داشت، به همین دلیل هست که پیشنهاد میکنم به جاش از EasyCaching استفاده کنین

مثلا CacheManager تو یک سال اخیر فقط 4 تا کامیت داشته در صورتی که EasyCaching تعداد 138 تا
همچنین CacheManager در حال حاضر 52 ایشو باز داره ولی EasyCaching فقط 8 تا

سایت GitCompare هم گزارش خوبی در جهت مقایسه بین فعالیت های اخیر دو یا چند ریپازیتوری بهتون میده. مثلا لینک زیر مقایسه CacheManager و EasyCaching هست
https://gitcompare.com/report?packages=dotnetcore%2Feasycaching&packages=michaco%2Fcachemanager

💠 در نهایت این مقایسه ها بهتون کمک میکنه بتونین آینده نگرانه تر کتابخونه ها و تکنولوژی های مورد نظرتون رو انتخاب کنین
____________________
@DotNetZoom
آشنایی با دیتابیس LiteDb

دیتابیس LiteDb با سی شارپ نوشته شده و به صورت Stand Alone کار میکند. این دیتابیس NoSQL است و بدون نیاز به Entity framework و نصب هیچ نرم افزاری میتوانید آن را در پروژه های ASP NET Core استفاده کنید.

https://codehaks.com/go/adb
Forwarded from کدهک
در دات نت حافظه ی Heap به دو بخش کوچک و بزرگ تقسیم میشود.

اشیایی که حافظه ی بیشتر از 85 کیلوبایت داشته باشند به Large Object Heap منتقل میشوند که کمتر پاکسازی میشود و نامنظم است.
Forwarded from کدهک
در این ویدیو با استفاده از Cancelation Token اجرای عملیات را در سمت سرور متوقف می کنیم و سپس مکانیزم TimeOut را درون یک حلقه پیاده می کنیم.

https://tinyurl.com/y6srku6x
ایجاد Service Extension در ASP NET Core

در فریم ورک ASP NET Core وابستگی ها از طریق Extension Method اضافه می شوند. مواردی مثل AddRazorPages یا AddDbContext در حقیق متدهای افزوده ای هستند که در پس زمینه سرویس تزریق می کنند. در این پست به بررسی نحوه ی پیاده سازی یک Service Extension برای دیتابیس LiteDb می پردازیم.

https://codehaks.com/go/jfm
Forwarded from کدهک
در این ویدیو با یک فایل را در ASP.NET Core آپلود می کنیم و می بینیم که چطور میتوان با استفاده از SignalR درصد پیشرفت آپلود را نمایش داد.


https://tinyurl.com/cdhk-signalr-progress
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
یک #نکته - آزاد سازی فضای درایو C با حذف پکیج های Nuget اضافی

وقتی یه پکیچ nuget رو نصب میکنید اون رو توی یه پوشه ای به ازای کاربری جاری سیستم عامل ذخیره میکنه (کش میکنه)
این باعث میشه که دفعات بعدی که اون پکیچ رو لازم دارید دیگه از اینترنت دانلود نکته و از کش شما بخونه. البته اگر ورژن جدید تری اومده باشه که توی پوشه کش شما وجود نداشته باشه اون رو دانلود میکنه و به لیست ورژن های قبلی ایی که داشتین اضافه میکنیه

این عمل خیلی خوبه و باعث میشه معمولا پکیج های اضافه دانلود نکنین و از کش نصب میکنه پس سرعت restore شدن پکیج ها خیلی بالا میره ولی در طولانی مدت باعث میشه حجم خیلی زیادی اشغال کنه. مثلا من که سالی 12 ماه ویندوز عوض نمیکنم و پکیج ها و ورژن های زیادی توی سیستمم ذخیره شده بود یه چند مدتی بود که فضای درایو C ایم کم بیاد و الان که این پوشه رو چک کردم بیش از 10 گیگابایت حجم داشت!

🔰واسه حذف این پکیج ها 2تا راه وجود داره:

1️⃣ مسیر زیر روی توی آدرس بار بزنین و دستی اون پوشه رو حذف کنین
%userprofile%\.nuget\packages
2️⃣ ویژوال استادیو رو باز کنین و از منو Tools به مسیر زیر برین (مانند تصویر)
Tools > NuGet Package Manager > General
و سپس دکمه Clear All NuGet Cache(s) رو بزنین. (ممکنه واسه چند لحظه هنگ کنه برنامه)

🔸این حذف کردن هیچ مشکلی هم براتون به وجود نمیاره فقط اگر پکیج هاتون شناسایی نشد رو Solution راست کلیک کنین و گزینه Restore Nuget Packages رو بزنین یا توسط NET Core CLI. دستور dotnet restore رو پروژه/سلشون تون اجرا کنین (این کار برای بار اول کمی زمان میبره تا همه رو دانلود کنه - یادتون نره یه بارم VS رو باز و بسته کنین)
___________________
@DotNetZoom
Forwarded from کدهک
بسیاری از پروژه های قدیمی به روش Database First پیاده شده است. در این ویدیو مشاهده می کنید که چطور می توانیم با استفاده از Entity Framework Core 3.0 دیتابیس های موجود را به حالت Code First تبدیل کنیم.

https://tinyurl.com/cdhk-dbtocd
هنگام روی دادن خطا می توان صفحات مشخصی را به کاربر نمایش داد و او را از وضعیت پیش آمده با خبر کرد. در این ویدیو یک صفحه ی کاستوم برای خطای 404 ایجاد می کنیم و با نحوه ی تنظیم محیط پروژه جهت تست حالت Production آشنا می شویم.

https://codehaks.com/go/jnj
با استفاده از اینترفیس IActionResult میتوان در ASP NET Core نوع بازگشتی اختصاصی ایجاد کرد. در این ویدیو می بنیم که چطور یک کاکشن را به صورت فایل CSV در خروجی اکشن تولید کنیم.

https://codehaks.com/go/dyk
Forwarded from DotNetZoom (محمد جواد ابراهیمی)
دات نت 5 و 5 ASPNET Core و EFCore 5 پیش نمایش 3 منتشر شد

🔰این آپدیت با چند تغییر کاربردی و مهم همراه بود که الان با هم بررسیشون میکنیم. بقیه تغییراتشون اکثرا بهبود و رفع باگ بوده یا موارد low level و غیر مهم.

1️⃣ مشکل ReferenceLoopHandling مربوط به System.Text.Json حل شد✌️

2️⃣ چند extension متد روی HttpClient اضافه شده که مستقیما خروجی Json رو Deserialize میکنه. 👍
برای استفاده از این متد ها نیازه پکیج زیر رو نصب کنین
System.Net.Http.Json
مثال یه درخواست GET که خروجی Json میده و میخوایم به لیستی از Person ها Deserialize اش کنیم
return await client.GetJsonAsync<List<Person>>("/api/people");


3️⃣ و سرانجام بلاخره قابلیت Filter کردن Include ها به EFCore اضافه شد. (هرچند زودتر باید میشد ولی بازم دمشون گرم خیلی لازم بود✌️)

تا قبل از این نسخه امکان اینکه روی فیلد های چیزی که Include میکنیم شرط بذاریم وجود نداشت. در نتیجه اگه لازم بود فقط 2 رکورد از 100 رکورد موجود رو Include کنیم نمیشد و همش باید از دیتابیس واکشی میشد که این قضیه سرباز بسیار زیادی داشت.
برای حل این مشکل چندین راه حل وجود داشت:
1- استفاده از Projection/Flatening موجود در AutoMapper روی EFCore
2- واکشی اطلاعات به صورت دستی در قالب یه Type دلخواه
3- و بهترین راه اینکه از متد IncludeFilter کتابخونه زیر که مال شرکت ZZZ هست استفاده کنیم
Z.EntityFramework.Plus.EFCore
این کتابخونه رایگانه (با اون یکی نسخه که پولیه اشتباهش نگیرین) و امکانات بسیار خوبی میده و شخصا برای پروژه های واقعی و بزرگ پیشنهادش میکنم. اگه به جا ازش استفاده بشه تاثیر زیادی روی پرفرمنس پروژه میزاره (پیشنهاد میکنم حتما داکیومنتش رو بخونین)

واقعا کمبود این قابلیت خیلی حس میشد تا اینکه بلاخره توی این آپدیت به EFCore اضافه شد و حالا میتونیم براحتی ازش استفاده کنیم
var blogs = context.Blogs
.Include(e => e.Posts.Where(p => p.Title.Contains("Cheese")))
.ToList();


🔸Announcing .NET 5.0 Preview 3
🔹
ASP.NET Core updates in .NET 5 Preview 3
🔸Announcing Entity Framework Core 5.0 Preview 3
___________________
@DotNetZoom
Forwarded from کدهک
آشنایی با ML.NET

فریم ورک ML.NET ابزاری برای Machine Learning در دات نت است که توسط مایکروسافت توسعه داده شده است. در این ویدیو با استفاده از ML.NET شانس زنده ماندن مسافران کشتی تایتانیک را پیش بینی می کنیم.

https://tinyurl.com/cdhk-mlnet
Forwarded from کدهک
آشنایی با Global Filter در EF Core

https://bit.ly/2Ao7fvb
Forwarded from کدهک
چگونه یک سرور دانلود بسازیم؟

آموزش مفهوم Range در HTTP
کار با FileResult
بدست آوردن حجم دانلود با Head
دانلود فایل با HttpClient

تماشا در یوتویب :

https://tinyurl.com/cdhks-dwnld-server
ایرادهای زیادی از بنچمارک تک امپاور گرفته میشود. در این ویدیو به این ایرادات پاسخ میدهیم و بررسی می کنیم چرا تست هایی مثل Plaintext باعث بالارفتن پرفورمنس وب شده است. درباره اسب بخار صحبت می کنیم و میگوییم چرا زبانهایی مثل Erlang یا Nodejs در ابتدای لیست قرار ندارند.

https://codehaks.com/go/tec