Code With HSN
رفتن به کانال در Telegram
من حسنم و اینجا تجربیاتم رو مینویسم براتون تا کمکتون کنم سنیور های واقعی باشین ❤️ یوتیوب من: https://youtube.com/@hasanxdev لینکدین: https://linkedin.com/in/hasanxdev گیت هابم: https://github.com/hasanxdev #CSharp #EFCore #ASPNETCore #Programming
نمایش بیشتر1 060
مشترکین
+124 ساعت
+17 روز
+130 روز
آرشیو پست ها
1 060
آقا زحمت میکشیم فردا صبح منتظر باشید 😁❤️
قبلی هارو دیدین؟
https://youtube.com/shorts/SNrkczYCfgc?si=zhLcKcNF2cuA2d-s
1 060
چطور دیجیکالا با مدیریت میلیونها تغییر موجودی در لحظه، همچنان بدون خطا کار میکند؟ 🚀🔥
در ویدیوی جدیدم از CQRS Deluxe پرده برداشتم و توضیح دادم که سیستم انبارداری چنین فروشگاههای بزرگی چطور طراحی میشود. 🏪📦
یکی از هیجانانگیزترین بخشهای این ویدیو بررسی نقش Kafka در پیادهسازی Event Sourcing هست؛ جایی که Kafka بهعنوان قلب سیستم، تمام تغییرات موجودی رو ثبت و مدیریت میکنه! 💡✨📚 در این ویدیو یاد خواهید گرفت: 1. چطور CQRS Deluxe فراتر از مدل استاندارد CQRS عمل میکند. 🚀 2. چرا Kafka انتخاب فوقالعادهای برای Event Sourcing در سیستمهای مقیاسپذیر است. ⚡️ 3. نحوه طراحی Read Models پیشرفته و ارتباط آنها با Kafka. 🛠 4. بهترین روشها برای طراحی Command و Event Handlers در معماریهای پیشرفته. 🔍 📽 لینک ویدیو: برای دیدن ویدیو کلیک کنید ⏳ مدت ویدیو: 30 دقیقه ⏯️ پلی لیست: برای ورود کلیک کنید 🥇 کانال ما در تلگرام: برای ورود کلیک کنید 🌟 اگر از محتوا لذت بردید، حتماً لایک کنید، کامنت بذارید و کانال رو دنبال کنید تا با حمایت شما این مسیر رو ادامه بدم! 💪❤️
1 060
فصل دوم از کتاب Pro .NET Memory Management خلاصه شد💡
Low Memory Management | مدیریت حافظه در سطح پاییندر این فصل یاد میگیریم: ✅ اصول مدیریت حافظه در سختافزار و بهتون نشون میدم چطوری یک Bit درون سخت افزار قرار میگیره ✅ باهم میبینیم CPU و RAM چطوری باهم کار میکنند چطوری CPU با سرعت کم RAM کنار آمده است ✅ یک نمونه کد باهم میزنیم و میبینیم که طبق چیزایی که یاد گرفتیم چطوری میشه بهبودش داد ✅ مفاهیم DDR رو بررسی میکنیم ✨ این پلی لیست از خلاصه کتاب Pro .NET Memory Management برای همه کسانی که به بهبود کارایی سیستمهای نرمافزاری علاقهمندند، یک منبع طلایی است. 📘 خلاصه این فصل رو در لینک زیر میتونید مشاهده کنید. اگر دوست دارید بیشتر بدونید یا نظرتون رو بگید، خوشحال میشم با هم صحبت کنیم! 📽 لینک ویدیو: برای دیدن ویدیو کلیک کنید ⏳ مدت ویدیو: حدودا 30 دقیقه ⏯️ پلی لیست: برای ورود کلیک کنید 🥇 کانال ما در تلگرام: برای ورود کلیک کنید #MemoryManagement #PerformanceOptimization #ProgrammingTips #ProNetMemoryManagement #CodeWithHSN #TechBooks
1 060
تا حالا فکر کردی وقتی یه پست اینستاگرام رو لایک میکنی، پشت صحنه چه اتفاقی میافته؟ 🤔 خب، اگر همیشه این سوال برات پیش اومده که چطور یه سیستم مثل اینستاگرام میتونه با حجم بالا از دادهها کنار بیاد و با یک کلیک ساده، تمام اطلاعات لایکها رو ثبت کنه، این ویدیو رو از دست نده! توی این ویدیو قراره با هم CQRS Premium رو بررسی کنیم و نشون بدیم چطور این معماری باعث میشه که سیستمها سریعتر و بهینهتر بشن! 🚀
✨ در این ویدیو به این مباحث میپردازیم:
1- فرق بین Eventual Consistency و Strong Consistency رو بررسی میکنیم مزایا و معایب هرکدوم میسنجیم 📨
2- مقایسه CQRS Regular و CQRS Premium تا بفهمیم با این روش به چه مزیت های فوق العاده ای دست پیدا میکنیم. 🤓
3- چرا باید عملیاتهای خواندن و نوشتن رو از هم جدا کنیم و این کار چه تاثیری روی عملکرد سیستم میذاره؟ 🔄
4- ترفندهایی برای scale کردن یک API یا یک قسمت مثل صفحه لیست محصولات (PLP) که کمک میکنه سیستم توی شرایط با حجم بالای درخواستها همچنان سریع بمونه. 📊
5- چطور سیستمهای مقیاسپذیر و توزیعشده بسازیم که با رشد تصاعدی دادهها همچنان به راحتی کار کنن؟ 💪
6- استفاده از CQRS Premium برای بهینهسازی زمان پاسخدهی و افزایش کارایی سیستمها 🚅
اگر به توسعه نرمافزار، معماری سیستمها و مقیاسپذیری علاقه داری، این ویدیو رو حتماً ببین! و نظرت رو با من به اشتراک بذار 😊
لینک ویدیو: https://www.youtube.com/watch?v=YuKWFCPU6f8
کانال تلگرام: https://t.me/hasanxdev
1 060
بالاخره تونستم Pro .NET Memory Management رو بسازمش...! 💡همیشه دنبال خلاصههای درست و کاربردی از کتابهای تخصصی بودم، که بتونم در تایم های خالیم ببینمشون ولی چیزی که میخواستم رو پیدا نمیکردم... تا اینکه تصمیم گرفتم خودم بسازمش! 📚 توی این ویدیو، خلاصهای از فصل اول کتاب Pro .NET Memory Management رو به صورت واضح و کاربردی براتون آماده کردم. این کتاب به قدری مفاهیم عمیق و پایهای رو توضیح میده که یه لحظه یادم رفت چند ساله برنامهنویسم! 😅
🚀 از Heap و Stack بگیرید تا Mutator، Allocator و Garbage Collector؛ بیایید با هم ذهنیتمون رو بهبود بدیم و دنیای پرفورمنس اپلیکیشنها رو از نو بررسی کنیم!
👈 لینک رو بزن و نظرت رو برام بنویس!
ویدیو: https://youtu.be/FMYtA0K3320
تلگرام: https://t.me/hasanxdev
#ProNETMemoryManagement #DotNET #MemoryManagement #CSharp #TechContent #BookSummary #PerformanceTuning
1 060
کد موردنظر:
var summary = BenchmarkRunner.Run<ListPerformanceTest>();
public class ListPerformanceTest
{
private List<List<int>> list;
public ListPerformanceTest()
{
list = new List<List<int>>(5000);
for (int i = 0; i < 5000; i++)
{
var innerList = new List<int>(5000);
for (int j = 0; j < 5000; j++)
{
innerList.Add(0);
}
list.Add(innerList);
}
}
[Benchmark]
public void RowMajorAccess()
{
for (int i = 0; i < 5000; i++)
{
for (int j = 0; j < 5000; j++)
{
list[i][j] = i + j;
}
}
}
[Benchmark]
public void ColumnMajorAccess()
{
for (int j = 0; j < 5000; j++)
{
for (int i = 0; i < 5000; i++)
{
list[i][j] = i + j;
}
}
}
}1 060
+1
یک عزیزی در لینکدین سوال پرسیدن که کاربرد دیگه ای هم داره چون از آرایه دو بعدی تقریبا هیچ وقت استفاده نکردم، سوال خوبی بود من اینجا میزارم که به دانش شما عزیزان هم اضافه بشه
1 060
آیا واقعاً از RAM به درستی استفاده میکنیم؟ 💻 میدونستید چیدمان دادهها در RAM چقدر میتونه روی سرعت برنامه ما تاثیر بزاره؟! 🚀 بیاید با هم یه نگاه عمیق به DRAM بندازیم و ببینیم چطور چیدمان داده ها در DRAM میتونه عملکرد سیستم رو تغییر بده. 👀
💡قبل هرچیزی باید بدونیم یک بیت توی سخت افزار چطوری ذخیره میشه!
🤔 هر سلول DRAM که فقط یک bit (0 یا 1) درونش قرار میگیرد، ترکیب یک ترانزیستور و یک خازن است، پایه منفی خازن به برد و پایه مثبت به ورودی ترانزیستور وصل میشود حالا برای اینکه بتونیم دیتارو از خازن بکشیم بیرون باید پایه وسط ترانزیستور رو شارژ کنیم یعنی یک سیگنالی بهش بدیم تا اجازه بده دیتای ترانزیستور از پایه سوم خارج بشه و برنامه با یک سیگنال دیگه دیتارو بگیره و بخونه
✍🏻 به زبان ساده برای اینکه دیتا رو از رم بخونیم، نیاز داریم دو کار انجام بدیم، هرکدوم از این کارها مقداری طول میکشه که جمعا میشه زمان دسترسی پذیری به یک سلول حافظه! و اگر یکی از عوامل رو حذف کنیم سرعت بالاتر میرود 🤯
🌐 حافظه DRAM دیتارو به صورت ماتریکس درون خودش نگه میداره یعنی برای اینکه دیتا بگیری ازش باید یک row رو شارژ کنی و بعد برای اینکه دیتارو بگیری باید بری سراغ column هاش
این یعنی اگر در DRAM همه چیز در یک ROW میبود لازم نبود برای رسیدن به دیتا یک کار اضافه تر انجام بدیم 🥇
🖼در عکسی که پیوست کرده ام دقت کنید، متد A خیلی سعی بر این ندارد که row رو تغییر بده هر 5 هزارباری که حلقه داخلی اجرا میشه یک بار row هم عوض میشه و پردازنده کمتر منتظر رسیدن دیتا از RAM میمونه احتمالا میدونید که سرعت پردازنده ها 2-3 برابر RAM هست
حالا متد B رو نگاه کنید column ثابت است و مدام داریم row رو عوض میکنیم همونطور که بالاتر گفتم اگر row عوض بشه ما یک هزینه زمانی باید بپردازیم تا بتوانیم سطر بعدی رو شارژ کنیم درکنار این موضوع دیتایی که برای CPU ارسال میشه cache line رو جوری پر نمیکنه که پردازنده کمتر به RAM سر بزنه یک row رو میدیم به پردازنده ولی اون فقط روی یک column کار میکنه بعدش درخواست row جدید داره (بحثش مفصله.. در متد A یک row که ارسال میشد براش بقیه کارش روی column ها بود پس همه چیزو توی register خودش کش کرده بوده)
🤯 و حالا خروجی benchmark رو ببینید!! میبینید که متد A خیلی سریع تر از متد B بوده است!
جالب بود نه؟ like و share فراموش نشه ❤️🥇
قراره به زودی یک پلی لیست از خلاصه کتاب های مهندسی درست کنم و کلی راجبش گپ بزنیم اگه همراه نیستی در چنل تلگرام و یوتیوبم جوین شو
عکس پیوست: https://t.me/hasanxdev_files/4
پست مرتبط در لینکدین: https://www.linkedin.com/feed/update/urn:li:activity:7270711302363254784/
یوتیوب: https://youtube.com/@hasanxdev
تلگرام: https://t.me/hasanxdev
1 060
🤯🤯 یک چالش و سوال خیلی خفن، دو متد داریم به شرح زیر:
public void MethodA()
{
int[,] tab = new int[N, M];
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < M; ++j)
{
tab[i, j] = 1;
}
}
}
public void MethodB()
{
int[,] tab = new int[N, M];
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < M; ++j)
{
tab[j, i] = 1;
}
}
}
کدوم سریع تر است چرا؟ توی کامنت ها بنویسید1 060
نظرتون چیه خلاصه کتاب های برنامه نویسی یا مهندسی کامپیوتر رکورد کنیم؟
بچها فیدبک هاتون در مسیر مون تاثیر میزاره باورندارین فیدبک قبلی هارو ببینید ❤️
1 060
پترن CQRS Regular: الگوی کامل یا چالشی بیپایان؟ 🤔 بعد از بررسی معایب و اشتباهات رایج، حالا وقتش رسیده که به قلب CQRS Regular برسیم! ❤️ این ویدیو نه درباره انتقاد، بلکه درباره قدرت واقعی این الگو است. اگر فکر میکنید قبلاً همه چیز را درباره CQRS شنیدهاید، باید این ویدیو و ویدیوهای بعدی را ببینید! 🎥
🔍 اگر ویدیوهای قبلی را دیدهاید، آماده یک تغییر دیدگاه باشید! زیرا در این ویدیو CQRS Regular را پیادهسازی میکنیم که برای پروژههای نسبتا پیچیده مناسب است و از پیچیدگی کد جلوگیری میکند. ⚙️
در این ویدیو یاد خواهید گرفت:
چگونه CQRS Regular را پیادهسازی کنید؟
کی پیادهسازی کنید؟ ⏰
چه محدودیتهایی در سطح معماری برنامه اعمال میکنید؟ 🚧
به چه قابلیتهای جدیدی به نسبت CQS میرسید؟ 🚀
📲 لینک ویدیو: https://youtu.be/nbt3sNdPWQA
📲 کانال تلگرام: @hasanxdev
پلی لیست این دوره: https://www.youtube.com/playlist?list=PLGiSgN3ODieI7a1HeMHyC6ylluc2jhvDS
در صورت مفید بودن، لطفاً با دیگران Share کنید! 🔄✨
1 060
👋🏻 دوستان عزیزم! اگر ویدیو براتون مفید بود، خوشحال میشم با RePost کردنش در لینکدین به انتشار بیشترش کمک کنید.
ممنون که همیشه کنارم هستید! ❤️
📎 لینک پستم در لینکدین:
https://www.linkedin.com/feed/update/urn:li:activity:7269328966086283264/
1 060
چرا باید CQS را بشناسید؟ سادهسازی پروژههای کوچک بدون پیچیدگی اضافی!
آیا تا به حال به این فکر کردهاید که چرا برخی پروژههای کوچک بیدلیل پیچیده میشوند؟ 🤔 اینجاست که CQS (Command Query Separation) وارد میشود تا برای پروژه های کوچیک پیچیدگی های CQRS را وارد نکند!
در این ویدیو یاد میگیریم که چگونه با شناخت این اصل ساده، از پیچیدگیهای غیرضروری جلوگیری کنیم. CQS که در سال 1988 توسط برتراند مایر معرفی شد، یکی از اصول مهم طراحی نرمافزار است که به خوانایی، سادهسازی منطق و بهبود تستپذیری کدها کمک میکند.
✅ مفهوم CQS چیست؟
✅ چه زمانی باید از آن استفاده کنیم؟
✅ چگونه آن را بهدرستی پیادهسازی کنیم؟
✅ تبدیل یک پروژه CRUD ساده به CQS
اگر میخواهید پروژههای خود را بهینهتر کنید و معماری نرمافزار بهتری داشته باشید، این ویدیو را از دست ندهید!
👈 لینک ویدیو: https://youtu.be/KYoZvEi-Pq4
📢 کانال تلگرام: t.me/hasanxdev
#CQS #CQRS #برنامهنویسی #CSharp #نرمافزار #معماری_نرمافزار #CodeWithHSN #برتراند_مایر
1 060
دیشب تا ساعت ۳ صبح براتون CQRS Normal، Regular و Premium رو رکورد کردم. به CQRS Deluxe که رسیدم، دیگه واقعاً نکشیدم! 😅
فقط سه قسمت دیگه مونده که رکورد کنم و بعد میرم سراغ ادیت و آماده کردن برای Share کردن ایشالا امشب تمومه.
مرسی از حمایت بینظیر ۱۰۶ نفرتون! باعث میشید مجبور بشم هر روز با انگیزهتر و باکیفیتتر رکورد کنم. 😁 البته کمکم کارم سختتر هم میشه! 😶🌫️
1 060
درود مجدد بچها 👋🏻،
بخاطر اینکه اینقدر مشتاق هستید هر هفته یک ویدیو رو کمترش میکنم، و بیشتر زمان میزارم هم CQRS رو تموم کنیم هم به بحث های جدید بپردازیم
عالی بودین مرسی که هستید هدف فقط آموزش رایگان با کیفیت بالاس ❤️
