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

سعی میکنم همیشه در دسترس باشم.
@mhakarimi
Download Telegram
💎 Types of Coupling in Software Development - Part 1

🌀 خوب بد نیست یکمی بیشتر در مورد Coupling صحبت کنیم که تا الان مثل کلمه مانترا توی یوگا شده برامون. سعی کردم انواع Coupling رو توضیح بدم و براشون هم یه نمونه دولوپ کنم و راهکار هم بدم تا جاییکه چیکار بکنیم براشون.

00:00 What is Coupling
06:00 Types of Coupling
06:28 No-Coupling
07:40 Data Coupling
11:30 Stamp Coupling
15:12 Real Example of Stamp Coupling
18:01 Control Coupling
22:18 External Coupling
27:58 Common Coupling
31:00 Content Coupling

🕶 مدت ویدیو : 37 دقیقه
📺 لینک ویدیو :
https://youtu.be/zkexz3srbno

🌗 گیت هاب :
https://github.com/iCodeNext/dotnet/tree/main/iCodeNext/TypesOfCoupling
24🙏5👍2👌1
💎 Type of Cohesion in Software Development - Part 2

🌀 حالا که در مورد Coupling صحبت کردیم بد نیست در مورد انواع Cohesion هم صحبت کنیم.

01:00 Coincidental Cohesion
04:00 Logical Cohesion
07:00 Temporal Cohesion
12:00 Procedural Cohesion
15:00 Communicational Cohesion
17:00 Sequential Cohesion
19:00 Functional Cohesion

🕶 مدت ویدیو : 21 دقیقه
📺 لینک ویدیو :
https://youtu.be/c1kfgeYAYN0

🌗 لینک گیت هاب:
https://github.com/iCodeNext/dotnet/tree/main/iCodeNext/TypesOfCohesion
14👍5🔥4
🌀 اگر قراره که کاربران تمام کدهای درون پروژه شما رو بخونن تا بتونن ازش استفاده کنند، پس دیگه انتزاعی وجود ندارد.
👍37
💎 EF Core internals: Entity Query Provider - Part 45

🌀 چیزیکه برام خیلی جذابه اینه که چقدر میشه از کارای ساده ای که شاید به ذهن همه میرسه، بهترین استفاده رو کرد، و این رو توی فاز های کامپایل کردن یک دستور LINQ به TSQL در انتیتی فریمورک میبینیم. مثل کش کردن کوئری ها و یا اینکه بیان پارامتر های کوئری رو در بیارن برای اینکه به یه کلید واحد برسند. و خیلی موارد دیگه که توی این سری از ویدیو ها میبینیمش.


00:00 Previous Session about IQueryable
08:00 Linq Provider in EF Core
08:30 Linq to Object
08:45 Linq to Sql
09:48 Server vs Client Evaluation
11:53 TSql and Materialzier
13:00 Query Cache
15:00 Parameter Extraction
20:30 Entity Query Provider in EF Code Source Code

🕶 مدت ویدیو : 26 دقیقه
📺 لینک ویدیو :
https://youtu.be/uVLmbn_Qi3I
24👍4
🌀 طراحی نرم‌افزار واقعا کار دشواریه، بنابراین احتمالاً اولین فکرهای شما در مورد چگونگی ساختار یک ماژول یا یک سیستم، بهترین طراحی را تولید نخواهد کرد.

پس بهتره دوبار طراحی کنید.
👍371👏1
🌀 ماژول هاتون رو عمیق طراحی کنید.
👌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