❇️ نکاتی در مورد تست نویسی روی EF6 / EFCore توسط دیتابیس InMemory
🔸یکی از مزیت های الگوی Repository، قابلیت تست پذیری لایه دیتا به واسه ساختن ریپازیتوری های Fake هست. در واقع ریپازیتوری هایی میسازیم که از (مثلا IRepository) ارث بری میکنه ولی به جای ذخیره سازی در بانک اطلاعاتی، دیتا ها رو به صورت InMemory ذخیره و واکشی میکنه
همچنین روش های دیگری برای اینکار وجود داره مثل Mock کردن DbContext یا DbSet که هر کدوم دردسر ها و محدودیت های خودشو داره تا جایی که حتی بخشیدن عطاش به لقاش منطقی تره
اینجا لیستی از بهترین منابعش رو گلچین کردم (1 و 2 و 3 و 4 و 5 و 6 و 7 و 8 و 9) تا واسه خودمم آرشیو بمونه
🔻توی EFCore به دلیل وجود پروایدر InMemory نیازی به این کار نیست و عمل تست نویسی رو برامون خیلی راحت کرده ولی توی EF6 چون پروایدر InMemory نداریم مجبوریم تن به یکی از این بدیم.
🔹پروژه سورس باز و رایگان Effort یک پروایدر InMemory مخصوص Entity Framework هست (که از نسخه های 5 و 6 EF پشتیبانی میکنه) و امکان Unit Test نویسی برای EF رو براحتی براتون فراهم میکنه و سعی کرده
این کتابخونه از برای دیتابیس خودش از NMemory استفاده میکنه که یک Engine دیتابیس رابطه ای InMemory هست و سعی کرده تا حد زیادی رفتار های یک دیتابیس واقعی رو شبیه سازی کنه و از مواردی از جمله Indexes و Foreign Key Relations و Transaction Handling and Isolation و Stored Procedures و... پشتیبانی میکنه پس به نسبت بقیه روش ها (مثل یه List استاتیک!) در مورد شبیه سازی دیتابیس، رفتار بسیار بسیار قابل اعتماد تری ارائه میده
🔰کار باهاش هم خیلی راحته و از لینک و دردسر ها و محدودیت های پیاده سازی روش های قبلی رو نداره
https://entityframework-effort.net/overview
واسه مطالعه بیشتر هم لینک های زیر خوبن (اینجا و اینجا و اینجا)
نکته:
🔸تمام روش های بالا و اساسا تمام دیتابیس های InMemory (حتی پروایدر InMemory خود EFCore) یه مشکل اساسی دارن و اون هم اینه که هیچ کدوم نمیتونن 100 درصد رفتار یک دیتابیس واقعی رو شبیه سازی کنن. بدیهی هم هست چون که هیچ کدوم نمیتونن تمام قابلیت های دیتابیس واقعی پروژه شما (مثلا SqlServer) رو داشته باشن.
این کمبود ها که تعدادشونم کم نیست بعضی مواقع باعث مشکل میشن مثلا در مورد دیتابیس InMemory خود EFCore :
▪️شما نمیتونین SP های خودتون رو روش اجرا کنین
▪️شما نمیتونین از Transaction های دیتابیسی استفاده کنین
▪️شما نمیتونین از Function های دیتابیسی و یا کلا هر قابلیت منحصر به دیتابیس تون استفاده کنین
▪️قیودی که فقط توی دیتابیس واقعی اعمال میشن و ...
▪️حتی یک کوئری یکسان روی InMemory و دیتابیس واقعی میتونه نتایج متفاوتی داشته باشه (بدلیل تفسیر متفاوتی ازش توسط پروایدر مربوطه انجام میشه)
▪️در واقع تست درون حافظهی LINQ to Objects با تست واقعی LINQ to Entities که روی یک بانک اطلاعاتی واقعی اجرا میشود، الزاما نتایج یکسانی نخواهد داشت
▪️حتی اگه یه متدی که معادل SQL ایی نداره توی کوئری هاتون استفاده کنین، هنگام استفاده از InMemory خطا نمیده ولی موقع دیتابیس واقعی خطای عدم امکان تفسیر به معادل Sql میده
🔹در نتیجه همه اینها پاس شدن یک تست با دیتابیس InMemory الزاما دلیل بر صحت عملکرد پروژه و به معنای درست کار کردن برنامه در دنیای واقعی نیست. و ممکنه همون تست با دیتابیس واقعی به خطا بخوره.
🔸در نهایت هرچند که دیتابیس InMemory رفتار قابل اطمینانی از یه دیتابیس رو نمیتونه شبیه سازی کنه ولی در مورادی که به این تناقض ها بخورد نمیکنیم (معمولا در حد CRUD و یه Storage) میتونه خیلی مفید و کاربردی باشه. فقط نکته اش اینه که حواسمون به این کمبود ها باشه و توصیه میشه که حتما در این گونه موارد که از Integration Test به همراه یک دیتابیس واقعی استفاده کنی
----
🔸یکی از مزیت های الگوی Repository، قابلیت تست پذیری لایه دیتا به واسه ساختن ریپازیتوری های Fake هست. در واقع ریپازیتوری هایی میسازیم که از (مثلا IRepository) ارث بری میکنه ولی به جای ذخیره سازی در بانک اطلاعاتی، دیتا ها رو به صورت InMemory ذخیره و واکشی میکنه
همچنین روش های دیگری برای اینکار وجود داره مثل Mock کردن DbContext یا DbSet که هر کدوم دردسر ها و محدودیت های خودشو داره تا جایی که حتی بخشیدن عطاش به لقاش منطقی تره
اینجا لیستی از بهترین منابعش رو گلچین کردم (1 و 2 و 3 و 4 و 5 و 6 و 7 و 8 و 9) تا واسه خودمم آرشیو بمونه
🔻توی EFCore به دلیل وجود پروایدر InMemory نیازی به این کار نیست و عمل تست نویسی رو برامون خیلی راحت کرده ولی توی EF6 چون پروایدر InMemory نداریم مجبوریم تن به یکی از این بدیم.
🔹پروژه سورس باز و رایگان Effort یک پروایدر InMemory مخصوص Entity Framework هست (که از نسخه های 5 و 6 EF پشتیبانی میکنه) و امکان Unit Test نویسی برای EF رو براحتی براتون فراهم میکنه و سعی کرده
این کتابخونه از برای دیتابیس خودش از NMemory استفاده میکنه که یک Engine دیتابیس رابطه ای InMemory هست و سعی کرده تا حد زیادی رفتار های یک دیتابیس واقعی رو شبیه سازی کنه و از مواردی از جمله Indexes و Foreign Key Relations و Transaction Handling and Isolation و Stored Procedures و... پشتیبانی میکنه پس به نسبت بقیه روش ها (مثل یه List استاتیک!) در مورد شبیه سازی دیتابیس، رفتار بسیار بسیار قابل اعتماد تری ارائه میده
🔰کار باهاش هم خیلی راحته و از لینک و دردسر ها و محدودیت های پیاده سازی روش های قبلی رو نداره
https://entityframework-effort.net/overview
واسه مطالعه بیشتر هم لینک های زیر خوبن (اینجا و اینجا و اینجا)
نکته:
🔸تمام روش های بالا و اساسا تمام دیتابیس های InMemory (حتی پروایدر InMemory خود EFCore) یه مشکل اساسی دارن و اون هم اینه که هیچ کدوم نمیتونن 100 درصد رفتار یک دیتابیس واقعی رو شبیه سازی کنن. بدیهی هم هست چون که هیچ کدوم نمیتونن تمام قابلیت های دیتابیس واقعی پروژه شما (مثلا SqlServer) رو داشته باشن.
این کمبود ها که تعدادشونم کم نیست بعضی مواقع باعث مشکل میشن مثلا در مورد دیتابیس InMemory خود EFCore :
▪️شما نمیتونین SP های خودتون رو روش اجرا کنین
▪️شما نمیتونین از Transaction های دیتابیسی استفاده کنین
▪️شما نمیتونین از Function های دیتابیسی و یا کلا هر قابلیت منحصر به دیتابیس تون استفاده کنین
▪️قیودی که فقط توی دیتابیس واقعی اعمال میشن و ...
▪️حتی یک کوئری یکسان روی InMemory و دیتابیس واقعی میتونه نتایج متفاوتی داشته باشه (بدلیل تفسیر متفاوتی ازش توسط پروایدر مربوطه انجام میشه)
▪️در واقع تست درون حافظهی LINQ to Objects با تست واقعی LINQ to Entities که روی یک بانک اطلاعاتی واقعی اجرا میشود، الزاما نتایج یکسانی نخواهد داشت
▪️حتی اگه یه متدی که معادل SQL ایی نداره توی کوئری هاتون استفاده کنین، هنگام استفاده از InMemory خطا نمیده ولی موقع دیتابیس واقعی خطای عدم امکان تفسیر به معادل Sql میده
🔹در نتیجه همه اینها پاس شدن یک تست با دیتابیس InMemory الزاما دلیل بر صحت عملکرد پروژه و به معنای درست کار کردن برنامه در دنیای واقعی نیست. و ممکنه همون تست با دیتابیس واقعی به خطا بخوره.
🔸در نهایت هرچند که دیتابیس InMemory رفتار قابل اطمینانی از یه دیتابیس رو نمیتونه شبیه سازی کنه ولی در مورادی که به این تناقض ها بخورد نمیکنیم (معمولا در حد CRUD و یه Storage) میتونه خیلی مفید و کاربردی باشه. فقط نکته اش اینه که حواسمون به این کمبود ها باشه و توصیه میشه که حتما در این گونه موارد که از Integration Test به همراه یک دیتابیس واقعی استفاده کنی
----
entityframework-effort.net
Getting Started in EF Effort
Learn Getting Started using EntityFramework Effort by documentation & example
This media is not supported in your browser
VIEW IN TELEGRAM
قابلیت ارسال توییت صوتی به #توییتر اضافه شد
🔹توییتر از قابلیت ضبط صدا و پیوست آن به توییتها رونمایی کرد.
🔹توییتر میگوید این قابلیت ابتدا برای iOS فعال میشود و از حالا در دسترس تعداد محدودی از کاربران قرار گرفته است.
🔹توییتر از قابلیت ضبط صدا و پیوست آن به توییتها رونمایی کرد.
🔹توییتر میگوید این قابلیت ابتدا برای iOS فعال میشود و از حالا در دسترس تعداد محدودی از کاربران قرار گرفته است.
دانلد کنوت از دانشمندانی است که به لطف تحقیقات و مطالعات دانشگاهی وسیع در زمینه علوم کامپیوتر، اکنون عنوان “پدر تحلیل الگوریتمها” را از آن خود کرده است. هر چیزی در دنیای اینترنت، از الگوریتم فید اخبار فیسبوک تا پیشنهادات آمازون به نوعی مدیون کارهای این مرد هستند.
کنوت هنوز در حال نوشتن مجموعه کتابهای دنبالهداری با نام “هنر برنامه نویسی کامپیوتر” است که آخرین جلد آنها در سال ۲۰۱۱ منتشر شده است. او همچنین استاد افتخاری دانشگاه استنفورد است.
کنوت هنوز در حال نوشتن مجموعه کتابهای دنبالهداری با نام “هنر برنامه نویسی کامپیوتر” است که آخرین جلد آنها در سال ۲۰۱۱ منتشر شده است. او همچنین استاد افتخاری دانشگاه استنفورد است.
🔵 الگوریتم پنگوئن چه کار می کند؟
هدف این الگوریتم پایین آوردن رتبه سایتهایی است که لینکهای اسپم یا دستکاری شده دارد. بسیاری از سایتها از نظر گوگل پروفایلی دارند که در آن لینکهای غیر طبیعی دیده میشود. منظور لینک هایی است که میخواهد نتایج جستجو را اسپم کنند و یا از تکنیکهای دستکاری لینک استفاده نمایند. این الگوریتم که از اواخر سال ۲۰۱۶ به عنوان الگوریتم مرکزی رنکینگ گوگل قرار گرفت به صورت لحظه ای یا Real time کار میکند. این معنا که جریمه ها بسیار سریع اتفاق میافتد و البته خارج شدن از پنالتی گوگل هم وقت کمتری خواهد گرفت.
هدف این الگوریتم پایین آوردن رتبه سایتهایی است که لینکهای اسپم یا دستکاری شده دارد. بسیاری از سایتها از نظر گوگل پروفایلی دارند که در آن لینکهای غیر طبیعی دیده میشود. منظور لینک هایی است که میخواهد نتایج جستجو را اسپم کنند و یا از تکنیکهای دستکاری لینک استفاده نمایند. این الگوریتم که از اواخر سال ۲۰۱۶ به عنوان الگوریتم مرکزی رنکینگ گوگل قرار گرفت به صورت لحظه ای یا Real time کار میکند. این معنا که جریمه ها بسیار سریع اتفاق میافتد و البته خارج شدن از پنالتی گوگل هم وقت کمتری خواهد گرفت.
🔴 قابلیت منحصر به فردی که فقط در آنتیویروس Windows Defender یافت میشود
اخیراً مایکروسافت موتور حفاظتی Microsoft Defender Advanced Threat Protection (Microsoft ATP) را به بروز رسانی کرده است و حالا از یک UEFI اسکنر بهره میبرد. در وجود این قابلیت جدید، حالا ویندوز دفندر مایکروسافت تنها آنتی ویروس وجود است که قادر به تشخیص بدافزارهای تزریق شده به Firmware مادربرد و لپ تاپ است که امنیت را به سطح تازهای میرساند. Firmware های آلوده به بدافزار و کُدهای مخرب جزء پیچیدهترین حملات و البته دشوارترینها هستند. از آنجایی که این دست از بدافزارها مقیم تراشههای حافظه میشوند، شناسایی و پاکسازی آنها بسیار دشوارتر از بدافزارها در محیط سیستم عامل است. اغلب مواقع هرگز این بدافزارها شناسایی نمیشوند و به کار خود ادامه میدهند.
اخیراً مایکروسافت موتور حفاظتی Microsoft Defender Advanced Threat Protection (Microsoft ATP) را به بروز رسانی کرده است و حالا از یک UEFI اسکنر بهره میبرد. در وجود این قابلیت جدید، حالا ویندوز دفندر مایکروسافت تنها آنتی ویروس وجود است که قادر به تشخیص بدافزارهای تزریق شده به Firmware مادربرد و لپ تاپ است که امنیت را به سطح تازهای میرساند. Firmware های آلوده به بدافزار و کُدهای مخرب جزء پیچیدهترین حملات و البته دشوارترینها هستند. از آنجایی که این دست از بدافزارها مقیم تراشههای حافظه میشوند، شناسایی و پاکسازی آنها بسیار دشوارتر از بدافزارها در محیط سیستم عامل است. اغلب مواقع هرگز این بدافزارها شناسایی نمیشوند و به کار خود ادامه میدهند.
🔰 #آیا_میدانستید
که نوع Dictionary در سی شارپ، آیتم ها رو به همون ترتیبی که اضافه میکنین، نگه نمیداره⁉️
https://dotnetfiddle.net/cv49I2
_______________
که نوع Dictionary در سی شارپ، آیتم ها رو به همون ترتیبی که اضافه میکنین، نگه نمیداره⁉️
https://dotnetfiddle.net/cv49I2
_______________
dotnetfiddle.net
C# Online Compiler | .NET Fiddle
Test your C# code online with .NET Fiddle code editor.
💥 دانلود رایگان کتاب افزایش عملکرد
به دلیل قرنطینه خانگی و حمایت مدیرسبز از یادگیری و کتابخوانی، نسخه کامل کتاب افزایش عملکرد بهصورت رایگان در سایت قرار گرفت.
نسخه الکترونیکی این کتاب تا به حال در هیچ جایی منتشر نشده بود.
همین الان دانلود کنید!👇
به دلیل قرنطینه خانگی و حمایت مدیرسبز از یادگیری و کتابخوانی، نسخه کامل کتاب افزایش عملکرد بهصورت رایگان در سایت قرار گرفت.
نسخه الکترونیکی این کتاب تا به حال در هیچ جایی منتشر نشده بود.
همین الان دانلود کنید!👇
🔰 معرفی FilePond : یک پلاگین اپلود زیبا
به همراه کتابخانه یکپارچه شده برای jQuery و Angular و React و Vue
[Demo] https://pqina.nl/filepond
https://github.com/pqina/filepond
به همراه کتابخانه یکپارچه شده برای jQuery و Angular و React و Vue
[Demo] https://pqina.nl/filepond
https://github.com/pqina/filepond
pqina.nl
Easy File Uploading With JavaScript | FilePond
A JavaScript library that can upload anything you throw at it, optimizes images for faster uploads, and offers a great, accessible, silky smooth user experience.
⭕️ دلایل استفاده از فریمورک Xamarin برای طراحی اپلیکیشن ها
👈 چرا ما باید برای طراحی اپلیکیشن های موبایلی از xamarin استفاده کنیم؟ اگر به طور خلاصه بخواهیم بگوییم، با استفاده از فریمورک xamarin رویای بسیاری از برنامه بنویس ها محقق شد. آنها امروزه می توانند یک کد را روی پلتفرم های مختلف اجرا کنند بدون اینکه از عملکرد آن ها کاسته شود.
👈 امروزه با افزایش رقابت بین شرکت های توسعه دهنده، شرکت هایی موفق اند که برنامه های آن ها روی اکثر پلتفرم های رایج بدون هیچ نقصی اجرا شود. این رویه هم از نظر زمان صرف شده و هم هزینه برای شرکت ها بصرفه تر است. خوش بختانه وجود ابزار های توسعه دهنده قابل اطمینان به تیم های برنامه نویسی این اجازه را داده است که با طی کمترین زمان کد هایشان را روی پلتفرم های مختلف اجرا کنند.
👈 چرا ما باید برای طراحی اپلیکیشن های موبایلی از xamarin استفاده کنیم؟ اگر به طور خلاصه بخواهیم بگوییم، با استفاده از فریمورک xamarin رویای بسیاری از برنامه بنویس ها محقق شد. آنها امروزه می توانند یک کد را روی پلتفرم های مختلف اجرا کنند بدون اینکه از عملکرد آن ها کاسته شود.
👈 امروزه با افزایش رقابت بین شرکت های توسعه دهنده، شرکت هایی موفق اند که برنامه های آن ها روی اکثر پلتفرم های رایج بدون هیچ نقصی اجرا شود. این رویه هم از نظر زمان صرف شده و هم هزینه برای شرکت ها بصرفه تر است. خوش بختانه وجود ابزار های توسعه دهنده قابل اطمینان به تیم های برنامه نویسی این اجازه را داده است که با طی کمترین زمان کد هایشان را روی پلتفرم های مختلف اجرا کنند.
هشدار : جدیدا سایت کدکنیون و تم فارست با ای پی ایران باز میشه و میتونید وارد سایتشون بشید و محصولات رو دانلود کنید
با ورود شما به سایت ای پی ایران شما ثبت میشه و حساب شما مسدود میشه
حتما با فیلتر شکن واردش بشید و کش مرورگرتونم قبلش پاک کنید
حساب خیلی از دوستان به خاطر سهل انگاری بسته شده انگار اونتو از عمد اینکارو کرده که حساب های ایرانی رو شناسایی و مسدود کنه ( به هیچ عنوان سهل انگاری نکنید و مراقب باشید یه هو کلیه حساب ها رو شناسایی و مسدود میکنن)
با ورود شما به سایت ای پی ایران شما ثبت میشه و حساب شما مسدود میشه
حتما با فیلتر شکن واردش بشید و کش مرورگرتونم قبلش پاک کنید
حساب خیلی از دوستان به خاطر سهل انگاری بسته شده انگار اونتو از عمد اینکارو کرده که حساب های ایرانی رو شناسایی و مسدود کنه ( به هیچ عنوان سهل انگاری نکنید و مراقب باشید یه هو کلیه حساب ها رو شناسایی و مسدود میکنن)
❇️ استفاده از MongoDb در سیستم احراز هویت ASP.NET Core Identity
اگه توی پروژه ASPNET Core ایی تون از MongoDb استفاده میکنین و میخواین از سیستم احراز هویت Identity روش پیاده کنین
این کتابخونه (AspNetCore.Identity.MongoDbCore) کار یکپارچه سازیش رو براتون انجام میده
کتابخانه های زیادی برای پشتیبانی از MongoDb در Identity وجود دارند که من همشون رو بررسی کردم و این بهترینشون و کاملترینشون بود (بعدشم این یکی AspNetCore.Identity.Mongo)
🔰لینک ریپازیتوری گیتهاب (اموزششم توش هست)
https://github.com/alexandre-spieser/AspNetCore.Identity.MongoDbCore
#MongoDb #Identity
__________________
اگه توی پروژه ASPNET Core ایی تون از MongoDb استفاده میکنین و میخواین از سیستم احراز هویت Identity روش پیاده کنین
این کتابخونه (AspNetCore.Identity.MongoDbCore) کار یکپارچه سازیش رو براتون انجام میده
کتابخانه های زیادی برای پشتیبانی از MongoDb در Identity وجود دارند که من همشون رو بررسی کردم و این بهترینشون و کاملترینشون بود (بعدشم این یکی AspNetCore.Identity.Mongo)
🔰لینک ریپازیتوری گیتهاب (اموزششم توش هست)
https://github.com/alexandre-spieser/AspNetCore.Identity.MongoDbCore
#MongoDb #Identity
__________________
www.nuget.org
AspNetCore.Identity.MongoDbCore 6.0.0
A MongoDb UserStore and RoleStore adapter for Microsoft.Extensions.Identity.Core 6.0.
نسخه Alpha از Bootstrap 5.0 منتشر شد.
مهمترین تغییرات این نسخه حذف شدن وابستگی به jQuery است.
همچنین قرار است به زودی پشتیبانی از نوشتار راست به چپ به آن اضافه شود.
طبق گفته بلاگ بوت استرپ پشتیبانی از RTL باید سالها پیش به این کتابخانه اضافه میشد و حالا با کمک جامعه متن باز در حال انجام است.
مهمترین تغییرات این نسخه حذف شدن وابستگی به jQuery است.
همچنین قرار است به زودی پشتیبانی از نوشتار راست به چپ به آن اضافه شود.
طبق گفته بلاگ بوت استرپ پشتیبانی از RTL باید سالها پیش به این کتابخانه اضافه میشد و حالا با کمک جامعه متن باز در حال انجام است.
گوگل افزونهی جدیدی بهنام Link to Text Fragment معرفی کرد که به کاربر امکان میدهد تا لینکهایی با آدرسدهی مستقیم به بخشی از متن یک صفحهی وب تولید کنند. افزونهی جدید، صرفنظر از فرمت متن، کاربر را به هدف مدنظر سازندهی لینک هدایت میکند.
برای استفاده از افزونهی جدید گوگل، پس از نصب آن تنها باید بخشی از متن را انتخاب کنید که تصمیم به ساختن لینک برای آن دارید. سپس با کلیک راست کردن روی متن و انتخاب گزینهی Copy Link to Selected Text میتوانید لینک شخصیسازی شده برای هدایت کاربر به متن انتخابشده را تولید کنید. لینک مذکور را میتوان با افراد دیگر به اشتراک گذاشت که در مرورگرهای متنوع پشتیبانی میشود.
https://chrome.google.com/webstore/detail/link-to-text-fragment/pbcodcjpfjdpcineamnnmbkkmkdpajjg/related
برای استفاده از افزونهی جدید گوگل، پس از نصب آن تنها باید بخشی از متن را انتخاب کنید که تصمیم به ساختن لینک برای آن دارید. سپس با کلیک راست کردن روی متن و انتخاب گزینهی Copy Link to Selected Text میتوانید لینک شخصیسازی شده برای هدایت کاربر به متن انتخابشده را تولید کنید. لینک مذکور را میتوان با افراد دیگر به اشتراک گذاشت که در مرورگرهای متنوع پشتیبانی میشود.
https://chrome.google.com/webstore/detail/link-to-text-fragment/pbcodcjpfjdpcineamnnmbkkmkdpajjg/related
Google
Link to Text Fragment
Browser extension that allows for linking to arbitrary text on a page.
#سری_معرفی_وسایت_های_برتر
✅ معرفی 10 سایت های برتر (سری سوم)
در مورد #C و NET Core. و ASP.NET Core
🔶 اگه مشتاق به یادگیری و مطالعه هستین این میتونه بهترین پست برای شما باشه. توی این سری پست ها هربار 10 وبسایت که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم👌
اینا در واقع منابعی هستند که خودم معمولا دنبالشون میکنم
🔷 یادتون نره واسه رفقاتون بفرستید✌️
1️⃣ https://fullstackmark.com/
2️⃣ https://www.syncfusion.com/blogs/
3️⃣ https://weblog.west-wind.com/
4️⃣ https://www.blog.jamesmichaelhickey.com/
5️⃣ https://logcorner.com/
6️⃣ https://cmatskas.com/
7️⃣ https://www.tugberkugurlu.com/
8️⃣ https://dotnetcoretutorials.com/
9️⃣ https://damienbod.com/
🔟 https://chrissainty.com/
_____________
✅ معرفی 10 سایت های برتر (سری سوم)
در مورد #C و NET Core. و ASP.NET Core
🔶 اگه مشتاق به یادگیری و مطالعه هستین این میتونه بهترین پست برای شما باشه. توی این سری پست ها هربار 10 وبسایت که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم👌
اینا در واقع منابعی هستند که خودم معمولا دنبالشون میکنم
🔷 یادتون نره واسه رفقاتون بفرستید✌️
1️⃣ https://fullstackmark.com/
2️⃣ https://www.syncfusion.com/blogs/
3️⃣ https://weblog.west-wind.com/
4️⃣ https://www.blog.jamesmichaelhickey.com/
5️⃣ https://logcorner.com/
6️⃣ https://cmatskas.com/
7️⃣ https://www.tugberkugurlu.com/
8️⃣ https://dotnetcoretutorials.com/
9️⃣ https://damienbod.com/
🔟 https://chrissainty.com/
_____________
Fullstackmark
FullStack Mark - curiosity-driven development
Fullstack software development applying best practices and craftmanship.