iCodeNext
2.59K subscribers
442 photos
49 videos
10 files
288 links
🪃 همیشه تمرکزمون روی تولید محتوی خوب و با کیفیت هست، با هم داریم یاد میگیریم و به همدیگه هم یاد میدیم. البته با تمرکز بر جزئیات.

سعی میکنم همیشه در دسترس باشم.
@mhakarimi
Download Telegram
🌀 ماژول هاتون رو عمیق طراحی کنید.
👌19👍6🤔2
💎 EF Core internals: Query Cache Hit Rate and Counters - Part 46

🌀 تو این ویدیو یه tool نصب کردیم که بتونیم اونت های درون انتیتی فریمورک رو ببینیم و اون هم dotnet-counters هست، با این tool کامل میتونیم ببینیم که انتیتی فریمورک واقعا داره 2 تا کار parameters Extraction و Query Caching رو انجام میده.

00:00 Previous Session
06:00 Demo for checking Query Caching
07:00 dotnet-counters
08:35 install dotnet-counters
09:12 monitoring EntityFrameworkCore
11:10 Query Cache Hit Rate

🕶 مدت ویدیو : 14 دقیقه
📺 لینک ویدیو :
https://youtu.be/Yn8tve-DCug
20👍5
💎 How EF Core Translates Linq into SQL - Part 47

🌀 اگه بخواید بدونید که انتیتی فریمورک واقعا چطور یه کوئری Linq رو به SQL ترجمه میکنه، این ویدیو دقیقا جواب این سوال رو میخواد بده که تو فاز کامپایل یک کوئری چه اتفاقاتی داره میوفته و چه مجیکی پشت داستانش هست.

00:00 Previous Session
04:00 Pre-Processing Expression Visitors
12:00 Translator Expression Visitor
13:00 SQL World Expression
15-30 Post-Processing and QuerySqlGenerator

پ.ن. شاید این ویدیو برای همه مناسب نباشه، اگه واقعا میخواید متوجه بشید که اون پشت ها چه خبره این ویدیو روببینید.

❤️ و اینکه واقعا ممنونم از محبتتون و لایک ها و کامنت هایی که میزارید کلی انرژی میگیریم.


🕶 مدت ویدیو : 23 دقیقه
📺 لینک ویدیو :
https://youtu.be/q7Wb1PFDP1U
👍31😍3🔥2
💎 کمتر از یک سال شده که کانال یوتیوب رو راه اندازی کردم، و اولش واقعیتش اینقدر برام جدی نبود که الان هست، وقتی این آمار ها و این همه لطف دوستان رو میبینه که کلی کلی لایک و کامنت های باحال میفرستند.

🌗 امیدوارم که کمک خیلی خیلی کوچیکی کرده باشم به کامینیتی دات نت توی ایران، و اینکه محتوی هایی که تولید کردم بدرد بخور بوده باشه.

❤️ نکته ی خیلی خفنش اینه که نزدیک 1100 نفر رفیق جدید پیدا کردم تو همین چند ماه.
87👍4🔥3👏2🙏2
💎 پس از اینکه ساعت‌ها وقت گذاشتیم که یک باگ را درست کنیم یا یک ویژگی رو توسعه بدیم، آخرین چیزی که ما توسعه‌دهندگان می‌خواهیم انجام دهیم، اینه که در قسمت متن کامیت گیت کارهای خودمون رو توضیح بدیم.

🌗 اما معمولا به یه تکست ساده و بدون فرمت بسنده میکنیم اما برای اینکه بدونیم چرا این قسمت مهم هست قسمت های زیر رو در نظر بگیرید:

🌀 تیم شما خیلی راحت تر میتونن Pull Request های شما رو درک کنند و میتونه بهشون خیلی کمک کنه.

🌀تاریخچه گیت شما یک داستان رو داره توصیف میکنه که هم "چی" تغییر کرده و هم "چرا" تغییر کرده.

🌀شما به راحتی می‌توانید مبدأ یک باگ یا تغییری که باعت ایجاد باگ شده است را پیدا کنید. ( کامنت محمد عزیز رو بخونید )

🌀 ریپازیتوری شما در آینده و برای افرادی که بعدا به تیم شما جوین میشن به‌راحتی قابل درک و مشارکت است. (با این کار داریم، و یه پروژه هم داریم روش کار میکنیم، که بزودی معرفی میکنیمش)
👍284
💎 داشتم با یکی از دوستان صحبت میکردم در مورد اینکه چرا و در چه شرایطی متد Update توی انتیتی فریمورک یک آنتی پترن هست؟

🌀 زمانی رو فرض کنید که میخواهید قسمتی از یک انتیتی رو آپدیت کنید مثلا فقط نام و نام خانوادگی و کد ملی و شماره موبایل ، انتیتی User رو میخواهیم آپدیت کنیم اما این انتیتی احتمالا بیشتر از اینها Column دارد، اگر در این شرایط شما از متد Update استفاده کرده اید، شما دارید یک آنتی پترن رو توی کدهای خودتون نگه میدارید. چرا ؟

چون این متد تمامیه فیلد های اون جدول رو آپدیت میکنه. و تمام مقادیر رو به IsModified فلگ میزنه و براش کوئری آپدیت میسازه.

🌗 پس اگر در این شرایط هستید از این متد استفاده نکنید.

🕶 متد Update فقط در شرایطی که کل انتیتی تغییر کرده است باید استفاده شود.
👍375🤔1
💎 EF Core Internal ; Compiled Query - Part 48

🌀 نوبتی هم باشه نوبت Compiled Query ها و API که کلاس EF برامون فراهم میکنه که مدام فاز گشتن توی کش و یا کامپایل رو انجام ندیم، مناسب کوئری هایی هست که خیلی ازشون استفاده میکنیم مثل مکانیزم های Pooling، که حتی نمیخواهیم هزینه فاز پیدا کردن کوئری در کش رو هم پرداخت کنیم. پس در این شرایط بهتره که بریم سراغ این API.

00:00 Previous Session
07:00 Problem
10:00 Compiled Query
14:00 Compiled Query in EF Core Source Code

🕶 مدت ویدیو : 21 دقیقه
📺 لینک ویدیو :

https://youtu.be/G_45AAFplEY
25👍5🔥1
مسیر واقعا طولانیست...

هرکدوم از این باکس ها خودشون یک کتاب دارند که چطور اصلا بهش برسیم و توی اون جایگاه چیکار باید انجام بدیم.
👍34🔥3😱3👌3
💎 تفاوت <Func<T> , Expression<TDelegate>

🌀 فانک ها در واقع یک Executable Code هستند و در واقع یه Represent ای از فانکشن هستند.

🌀 در نقطه مقابل وقتی اکسپرشن که قسمتی از "𝐒𝐲𝐬𝐭𝐞𝐦.𝐋𝐢𝐧𝐪.𝐄𝐱𝐩𝐫𝐞𝐬𝐬𝐢𝐨𝐧𝐬" است رو دورش میگیریم، در واقع داریم اون لمبدا رو به شکل Tree در میاریم و اکسپرشن ها در واقع یه represent 𝐥𝐚𝐦𝐛𝐝𝐚 𝐞𝐱𝐩𝐫𝐞𝐬𝐬𝐢𝐨𝐧𝐬 در قالب درخت هستش.

🌗 حالا از این کجا استفاده میکنیم ؟
مثلا انتیتی فریمورک از این اکسپرشن برای اینکه کد رو ترجمه کنه به TSQL استفاده میکنه.

برای اطلاعات بیشتر :

https://youtube.com/playlist?list=PLN5rV4x2x5Xc_A6UwalFsX6XkMkX7fcAE&si=8fzNgLRwWgwhDr7w
👍267
BetterHealthCheck.pdf
880.9 KB
💎 چک کردن اینکه یه سرویس بالاست، و یا اینکه ارتباطش با دیتابیس، ردیس ، ربیت و غیره برقراره در خیلی جاها مهم میشه، و بایستی یه روشی داشته باشیم که بتونیم تمام این ارتباطات رو تست و از بالا بودن و در دسترسی بودن آن ها اطمینان داشته باشیم.

🌀 خوب اولین راه اینه که برای هر ارتباط یکی یکی خودمون HealthCheck های جداگانه ای بنویسیم. اما یه راه دیگش که تر تمیز تره، میتونیم از پکیج aspnetcore.healthchecks استفاده کنیم و حتی یه رابط کاربری هم داشته باشیم که این چک هارو در قالب یه گزارش بهمون نشون بده.

🌗 برای اطلاع بیشتر میتونید این لینک رو دنبال کنید
https://lnkd.in/ex5AvfSM
21👌12👍5
💎 Advanced features of the MediatR package - Pipeline Behaviors

🌀 تو این ویدیو اول نشون میدیم که ساختار درونی پکیج خفن MediatR چجوری داره کار میکنه، IPipelineBehavior چه اجزایی دارند و چطوری میشه از این پایلاین برای بحث Validation استفاده کرد. بهتره بریم تو ویدیو و دقیق تر بررسیش کنیم.

00:00 MediatR Framework
04:00 Validation on RequestHandler
08:00 PipelineBehavior in MediatR
12:00 FluenValidation on Behavior
14:00 Demo

🕶 مدت ویدیو : 37 دقیقه
📺 لینک ویدیو :
https://youtu.be/rO0gKGMMzIw
👍187🔥4
💎 Better HealthCheck in Asp.net Core 8

🌀 وقتی یه سیستمی بزرگ میشه و ارتباطات زیادی به خودش میبینه، و بعضا این ارتباطات مهم هم میشن، از جنس اینکه من باید ارتباطم با ربیت، با ردیس برقرار باشه حتما. در این شرایط نیازه که مازاد بر اینکه خود سرویس بالا باشه، ارتباطات هم چک بشه. خوب استفاده از مکانیزم HealthCheck بهترین گزینه برای انجام این کاره. تو این ویدیو پکیجی رو معرفی میکنیم که خیلی راحت میتونید ارتباطاتتون رو هم چک بکنید.

00:00 Problem
03:00 Add Custom HealthCheck
04:00 AspNetCore.HealthChecks Package
08:00 Test with Redis and SqlServer

🕶 مدت ویدیو : 10 دقیقه
📺 لینک ویدیو :
https://youtu.be/vIzaEqlUmSs
👍1810🔥2
🧶 این بحث هیچوقت تموم نمیشه (مخصوصا بعد از پاندامی) که کساییکه فول دورکار هستند، همیشه میگن که ما توی خونه خیلی بیشتر کار میکنیم. از اون سمت ولی خوب خیلی هام این رو نمیتونن قبول کنن.

شما نظرتون چیه؟ شاید کامل عکس این قضیه هستید، یعنی توی محیط کار خیلی بیشتر کار میکنید.
👍33👏2
💎 Identity Resolution and AsNoTracking in EF Core - Part 49
🌀 خوب کم کم دیگه داریم به پایان خط نزدیک میشیم و یه بخشی که شاید خیلی کمتر بهش پرداخته میشه بحث Identity Resolution هست و اینکه اصلا این چیکار میکنه و همچنین AsNoTrackingWithIdentityResolution داره چه کاری انجام میده و مهم تر اینکه کی باید ازشون استفاده کنیم.

00:00 Previous Session
02:40 Identity Resolution
06:40 Demo Of Identity Resolution
09:00 AsNoTracking
10:26 AsNoTracking vs AsNoTrackingWithIdentityResolution

🕶 مدت ویدیو : 18 دقیقه
📺 لینک ویدیو :
https://youtu.be/PhY1Ij-2j3E
22👍9🔥2
🌗 درمورد ۱۰ باور غلط در معماری مایکروسرویس ها صحبت کنیم؟ به صورت ویس های ۵ دقیقه ای؟ و در نهایت یه ویدیوش کنیم.
اگه حالش رو داری یه لایکی بده. اگه نه دیس رو بزن.

🎃 ببینم به ۱۰٪ میرسیم یا نه.

۱۰٪ رو رد کردیم، دمتون گرممم. پس میریم که درستش کنیم. اما شما به لایک ها ادامه بدید، ببینیم چند چندیم. ❤️🙏
👍267👏32🌚2🔥1
🌗 چرا هر صنعتی به سرعت در حال تبدیل شدن به یک صنعت نرم افزاری جدید است؟ به این دلیله که یک تکامل واقعی داروینی در حال رخدادن هست
- ساختن و تطبیق خود در مقابل مردن.

🌀 مثال جذابی که شاید در اوایل سال 2000 میبینیم، اینه که آمازون شرکت نرم افزاری نبوده، و تو خرده فروشی کار میکرده و تقریبا همه با جف بزوس (مدیر عامل آمازون) اختلاف نظر داشتند، چون جف بزوس همیشه و در همه جا میگفته که آمازون یک کمپانی خرده فروشی نیست، آمازون یک کمپانیه نرم افزاری هست. (در اون زمان و شروع کار واقعا دید عجیبی داشته، چون داشتند از خرده فروشی پول در میاوردند.)

🌀 حتی در جای دیگه ای میگه، بیزینس ما اون چیزی نیست که درون جعبه های قهوه ای هست، بیزینس ما اون نرم افزاریه که این باکس هارو داره ارسال میکنه.

"این قوی ترین و یا باهوش ترین گونه ها نیستند که زنده می مانند، بلکه آنهایی که بیشترین واکنش را به تغییر دارند، زنده می مانند."

🐟 چارلز داروین
👍41👌64
iCodeNext
🌗 چرا هر صنعتی به سرعت در حال تبدیل شدن به یک صنعت نرم افزاری جدید است؟ به این دلیله که یک تکامل واقعی داروینی در حال رخدادن هست - ساختن و تطبیق خود در مقابل مردن. 🌀 مثال جذابی که شاید در اوایل سال 2000 میبینیم، اینه که آمازون شرکت نرم افزاری نبوده، و…
🌗 شما نیاز دارید که مثل یه شخص نرم افزاری فکر کنید، این شخص نرم افزاری لزوما یک توسعه دهنده نیست. این شخص میتونه کسی باشه که وقتی با یه مشکلی روبرو میشه، میپرسه که چطور یه نرم افزار میتونه این موضوع رو حل کنه.
بخاطر همینه، شخص نرم افزاری بودن یه مایندست هست، نه یه اسکیل ست.

🌀 مثالی که میشه زد شرکت تسلاست. تسلا بجای استفاده از چندین دکمه روی داشبورد که هر دکمه کاری رو انجام بده همه رو با یه نرم افزار و یه موس و چند دکمه ساده روی اسکرین مدیریت کرده .

پس هر کمپانی ای میتونه یه کمپانی نرم افزاری بشه، تنها کاری که باید انجام بده اینه که بره توی فاز ساخت و بهبود مستمر به صورت داخلی، شما نیازی نیست که ایلان ماسک و یا جک دروسی باشید. تنها چیزی که شما باید بهش ایمان داشته باشید، قدرت ساخت و تکرار مستمر هست، و باید بدونید که قانون داروین هم کنار شماست.

ولی این رو باید بدونید که در ابتدا باید یه چیزی رو بسازیم و بعد بهترش کنیم اینجاست که به این قانون برمیگردیم.

🌗 ساختن و تطبیق پیدا کردن و یا مردن.
👍27👌51
💎 Dispatch Proxy and AOP in .Net

🐟 در واقع یه تایپ جدیدیه که از ابتدای دات نت کور بوده و یه مکانیزم درست کردن پراکسی روی آبجکت هاییه که میخواید.
قبلا این نوع پراکسی هارو با ریل پراکسی انجام میدادن اما عملا این تایپ یه جایگزین عالی براش محسوب میشه.

🕶 مدت ویدیو : 30 دقیقه
📺 لینک ویدیو :

https://youtu.be/0pXk9y97Vlk
18👍7
💎 Network is not reliable - Microservices #1

🌀 توی ویدیوهای 5 دقیقه ای میخوام در مورد 10 فرضیه اشتباهی و یا فرضیه ای که اصلا در طراحی دیده نمیشه رو یکبار باهم مرور کنیم. و در نهایت برای هر کدوم راهکار مناسبی بدیم. پس بریم فرضیه اول که نتوریک همیشه قابل اعتماد نیست.

00:00 Network is not Reliable
02:00 Problem
04:00 Solution- Retry Pattern and circuit
breakers
04:30 Polly

🕶 مدت ویدیو : 5 دقیقه
📺 لینک ویدیو :

https://youtu.be/UelkhEqZHv0
👍197👌2
این دیاگرام هم بد نیست داشته باشیم و اگه حال داشتید روش صحبت کنیم.
👍428
💎 Generics and Constraints on type parameters C#

🌀 خیلی وقت بود از سی شارپ محتوی درست نکرده بودم، حالا که دوستان خواستند در مورد جنریک ها صحبت کنم، یه ویدیو رو استارت کنیم با محدودیت هایی که روی پرامتر های جنریک میتونیم بزاریم و هر کدوم چه کاربردی دارند. مثلا : new() , و یا : struct

00:00 What is Generic Type
06:00 Where T : struct
07:00 Where T : class
09:00 Where T : new
12:00 Where T : notnull
17:00 Where T : class, new()

🕶 مدت ویدیو : 18 دقیقه
📺 لینک ویدیو :
https://youtu.be/CEDndxVAWYs
35👍10🔥2