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

سعی میکنم همیشه در دسترس باشم.
@mhakarimi
Download Telegram
💎 داشتم با یکی از دوستان صحبت میکردم در مورد اینکه چرا و در چه شرایطی متد 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
💎 Latency is not zero - Microservices #2

🌀 قسمت دوم رو به این اختصاص دادیم که بین سرویس ها وقتی داریم کال انجام میدیم، تاخیر 0 نیست، و مهم ه برامون. هرچند بعضی از افراد دنبال میانگین کال کردن ها هستند که مثلا روی 60 میلی ثانیه هستیم و اوکیه، اما اینجا قضیه "دم دراز" یا Long Tail بوجود میاد که میتونه سرویس شما رو به معنای واقعی بکشه.

00:00 Latency is not zero
01:00 T local vs T remote
03:00 fine-grained services
04:30 long tail

🕶 مدت ویدیو : 7 دقیقه
📺 لینک ویدیو :
https://youtu.be/kcRmnUqIadc
18👍5🔥2
iCodeNext
این دیاگرام هم بد نیست داشته باشیم و اگه حال داشتید روش صحبت کنیم.
وقتی پست بالایی رو گذاشتم، نبی عزیز پیشنهاد داد که یه ایونت ۲ ساعته براش برگزار کنیم، که خیلی مشتی بود.

تاریخ و ساعت :
سه شنبه هفته‌ی بعدی که میشه ۲۴ بهمن، ساعت ۹ شب

مدت زمان : ۲ ساعت
هزینه : رایگان

لینک ثبت نام :
https://lu.ma/1qvwy339

فقط چون ظرفیت محدود هست، لطفا اگر ۱۰۰ درصد شرکت میکنید، ثبت نام کنید. دمتون گرم

ممنون میشم اگه دوستانی که توی چنل نیستن، این پیام رو براشون بفرستید‌
🙏🙏🙏

ظرفیت به ۹۸ عدد رسید. ممنون از شرکتتون، واقعا فکر نمیکردم اینقدر سریع پر بشه. مشتی هستید ❤️❤️❤️
👍1912🔥2👏2
💎 Bandwidth is not infinite - Microservices #3

🌀 ارتباطات و حجم دریافتی از هر سرویس مهمه، نمیتونیم یه اندپوینت رو به همه بدیم و بگیم همه از این استفاده کنند، چون احتمال Stamp coupling میره بالا. خوب باید این رو مد نظر داشت و همچنین راهکار هم داشته باشیم.

00:00 Bandwidth is not infinite
03:00 Stamp coupling
05:00 Solution

🕶 مدت ویدیو : 7 دقیقه
📺 لینک ویدیو :
https://youtu.be/HK8EXZFHaoo
20👍6👏1
💎 Github and Dependabot - Automated dependency updates

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

00:00 What is the Problem
02:00 what is dependaBot
02:30 How to Config dependabot
04:00 Pull-Request and details
06:00 Dependency graph

🕶 مدت ویدیو : 8 دقیقه
📺 لینک ویدیو :
https://youtu.be/Q4iywEJQ9E0
👍195👌2
💎 اگه میخواید بدونید که چطور یک Behavior کار میکنه و اینکه چه اجزایی داره، میتونید مقاله زیر رو بخونید. و همچنین ویدیویی که توی یوتیوب گذاشتم. درک درستی به شما در مورد Behavior ها در فریمورک MediatR میده.

🌀 لینک مقاله :
https://dev.to/mohammadkarimi/lets-dive-a-bit-deeper-into-each-step-of-the-mediatr-architecture-22n9

📺 لینک ویدیو:
https://youtu.be/rO0gKGMMzIw
👍22🙏4👌3