Code With HSN
Відкрити в Telegram
من حسنم و اینجا تجربیاتم رو مینویسم براتون تا کمکتون کنم سنیور های واقعی باشین ❤️ یوتیوب من: https://youtube.com/@hasanxdev لینکدین: https://linkedin.com/in/hasanxdev گیت هابم: https://github.com/hasanxdev #CSharp #EFCore #ASPNETCore #Programming
Показати більше1 050
Підписники
Немає даних24 години
+57 днів
+7130 день
Архів дописів
1 050
+1
یک عزیزی در لینکدین سوال پرسیدن که کاربرد دیگه ای هم داره چون از آرایه دو بعدی تقریبا هیچ وقت استفاده نکردم، سوال خوبی بود من اینجا میزارم که به دانش شما عزیزان هم اضافه بشه
1 050
آیا واقعاً از 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 050
🤯🤯 یک چالش و سوال خیلی خفن، دو متد داریم به شرح زیر:
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 050
نظرتون چیه خلاصه کتاب های برنامه نویسی یا مهندسی کامپیوتر رکورد کنیم؟
بچها فیدبک هاتون در مسیر مون تاثیر میزاره باورندارین فیدبک قبلی هارو ببینید ❤️
1 050
پترن CQRS Regular: الگوی کامل یا چالشی بیپایان؟ 🤔 بعد از بررسی معایب و اشتباهات رایج، حالا وقتش رسیده که به قلب CQRS Regular برسیم! ❤️ این ویدیو نه درباره انتقاد، بلکه درباره قدرت واقعی این الگو است. اگر فکر میکنید قبلاً همه چیز را درباره CQRS شنیدهاید، باید این ویدیو و ویدیوهای بعدی را ببینید! 🎥
🔍 اگر ویدیوهای قبلی را دیدهاید، آماده یک تغییر دیدگاه باشید! زیرا در این ویدیو CQRS Regular را پیادهسازی میکنیم که برای پروژههای نسبتا پیچیده مناسب است و از پیچیدگی کد جلوگیری میکند. ⚙️
در این ویدیو یاد خواهید گرفت:
چگونه CQRS Regular را پیادهسازی کنید؟
کی پیادهسازی کنید؟ ⏰
چه محدودیتهایی در سطح معماری برنامه اعمال میکنید؟ 🚧
به چه قابلیتهای جدیدی به نسبت CQS میرسید؟ 🚀
📲 لینک ویدیو: https://youtu.be/nbt3sNdPWQA
📲 کانال تلگرام: @hasanxdev
پلی لیست این دوره: https://www.youtube.com/playlist?list=PLGiSgN3ODieI7a1HeMHyC6ylluc2jhvDS
در صورت مفید بودن، لطفاً با دیگران Share کنید! 🔄✨
1 050
👋🏻 دوستان عزیزم! اگر ویدیو براتون مفید بود، خوشحال میشم با RePost کردنش در لینکدین به انتشار بیشترش کمک کنید.
ممنون که همیشه کنارم هستید! ❤️
📎 لینک پستم در لینکدین:
https://www.linkedin.com/feed/update/urn:li:activity:7269328966086283264/
1 050
چرا باید CQS را بشناسید؟ سادهسازی پروژههای کوچک بدون پیچیدگی اضافی!
آیا تا به حال به این فکر کردهاید که چرا برخی پروژههای کوچک بیدلیل پیچیده میشوند؟ 🤔 اینجاست که CQS (Command Query Separation) وارد میشود تا برای پروژه های کوچیک پیچیدگی های CQRS را وارد نکند!
در این ویدیو یاد میگیریم که چگونه با شناخت این اصل ساده، از پیچیدگیهای غیرضروری جلوگیری کنیم. CQS که در سال 1988 توسط برتراند مایر معرفی شد، یکی از اصول مهم طراحی نرمافزار است که به خوانایی، سادهسازی منطق و بهبود تستپذیری کدها کمک میکند.
✅ مفهوم CQS چیست؟
✅ چه زمانی باید از آن استفاده کنیم؟
✅ چگونه آن را بهدرستی پیادهسازی کنیم؟
✅ تبدیل یک پروژه CRUD ساده به CQS
اگر میخواهید پروژههای خود را بهینهتر کنید و معماری نرمافزار بهتری داشته باشید، این ویدیو را از دست ندهید!
👈 لینک ویدیو: https://youtu.be/KYoZvEi-Pq4
📢 کانال تلگرام: t.me/hasanxdev
#CQS #CQRS #برنامهنویسی #CSharp #نرمافزار #معماری_نرمافزار #CodeWithHSN #برتراند_مایر
1 050
دیشب تا ساعت ۳ صبح براتون CQRS Normal، Regular و Premium رو رکورد کردم. به CQRS Deluxe که رسیدم، دیگه واقعاً نکشیدم! 😅
فقط سه قسمت دیگه مونده که رکورد کنم و بعد میرم سراغ ادیت و آماده کردن برای Share کردن ایشالا امشب تمومه.
مرسی از حمایت بینظیر ۱۰۶ نفرتون! باعث میشید مجبور بشم هر روز با انگیزهتر و باکیفیتتر رکورد کنم. 😁 البته کمکم کارم سختتر هم میشه! 😶🌫️
1 050
درود مجدد بچها 👋🏻،
بخاطر اینکه اینقدر مشتاق هستید هر هفته یک ویدیو رو کمترش میکنم، و بیشتر زمان میزارم هم CQRS رو تموم کنیم هم به بحث های جدید بپردازیم
عالی بودین مرسی که هستید هدف فقط آموزش رایگان با کیفیت بالاس ❤️
1 050
یک جایگزین خفن برای Repository Pattern میتونه Specification Pattern باشه 🤯🔥
تو این ویدیو با پترن Specification آشنا میشیم که کدنویسی رو از نظر readability، maintainability و reusability به سطح جدیدی میبره! 🚀
اگه در برنامه هاتون از Repository Pattern برای Persistence Ignorance (PI) استفاده نمیکنید نشون میدم چطور میشه از Specification به جای Repository Pattern استفاده کرد. 🤔
بعدش UML رو بررسی میکنیم و در نهایت با استفاده از Expression Tree در .NET کد میزنیم و به EF Core میفرستیم. 🔥
این ویدیو رو ببینید و اگر میخواهید کدنویسی تمیز و کاربردی یاد بگیرید، حتما سابسکرایب کنید! 👨💻💻
لینک ویدیو: https://youtu.be/92uVAm9AS74
1 050
بچها سلام 👋🏻،
💡 جهت اینکه تا یک ماه دو ماه درگیر CQRS نباشیم موافقین که در کنارش آموزش های دیگه رکورد کنیم؟ جوری که از کیفیت قسمت های CQRS کم نشه، و هر هفته یک قسمت از CQRS رکورد کنیم.
1 050
اشتباه نکنید! CQRS همیشه جواب نیست! ⚠️ اگه تنها ابزاری که دارید یک چکش باشه، همه چیز رو شبیه یه میخ میبینید!
کی گفته CRUD همیشه از CQRS بدتره؟ این تفکر معمولاً برمیگرده به افرادی که تازه با یه معماری آشنا شدن و همه مشکلات رو شبیه میخ میبینن که میخوان با چکش CQRS بزنن و حل کنن! 🛠
💡 دارم یه کورس رایگان رکورد میکنم که توش یه شیرجه عمیق میزنیم داخل CQRS. توی قسمت اول کلی درباره این صحبت کردیم که کجا باید CQRS استفاده کنیم و کجا نباید.
📚 از مفاهیم Basic شروع کردم و وارد مفاهیم عمیقتر میشم. اگه تا آخر باهام همراه بشید، مطمئنم یه استاد CQRS میشید که میتونید صاحبنظر باشید، نه فقط یه مصرفکننده! 🚀
🌟 اولین چیزی که برای انتخاب CQRS باید بدونید اینه که سیستم شما Read-Heavy هست یا Write-Heavy.
❓ دومین مورد هم مزایا و معایب این پترنه که توی ویدیو حدودا در 15 دقیقه کامل دربارهش گپ زدیم.
🎥 ویدیو رو میتونید اینجا ببینید:
👉 https://youtu.be/BPDmMmhHc-E
لایک، کامنت، و سابسکرایب یادتون نره، حمایتتون خیلی برام مهمه! ❤️
🔥 نظرتون درباره استفاده از CQRS چیه؟
برام بنویسید که چطور از این الگو در پروژههاتون استفاده کردید و چرا فکر کردید بهترین سلوشنه؟ 👇
#CQRS #CRUDvsCQRS #SoftwareArchitecture #Microservices
1 050
بچها سلام خوشحالم که جمعمون داره 50 تایی میشه
به همین مناسبت میخوام یک کورس رکورد کنم که اینقدر درون CQRS عمیق بشیم تهش غرق بشیم ☠️
شاید خیلی هاتون CQRS رو درحد MediatR بشناسید در کورسی که رکورد خواهم کرد صحبت میکنیم، میتونیم چقدر بزرگ تر از یک کتابخونه MediatR بهش فکر کنیم
نظرتون چیه؟ لایکی... دیسلایکی...
راجب چه چیزایی دیگه دوره رکورد کنیم؟
توی کامنتها بیاید صحبت کنیم! اگر محتوایی که تولید میکنم برای شما کاربردی نباشه، انگار دارم آب در هاون میکوبم. خوشحال میشم نظرتون رو بگید، چون باعث دلگرمی و پیشرفت همه مون هست.
1 050
🫂 ما یک دوستی داشتیم اومد گفت آقا ما هرکاری شما گفتی رو کردیم نه مشکل cpu داریم و نه مشکل ram داریم ولی برنامه از کل ریسورس های سرورمون استفاده نمیکنه زیر بار crash میکنه خسته شدیم منم رفتم نگاه کردم دیدم راست میگه تهش رسیدم به معماری پردازنده 😶🌫️
⭐️ خب این موضوع نیاز داره یکم دانش راجب پردازنده ها داشته باشین پس یه سری توضیحات میدم.
⬅️ بیاین بدونیم x86 و x64 چیست:
درواقع این دو اشاره به معماری پردازنده ها دارند Intel اولین پردازنده های خودش را با نام هایی معرفی کرد که انتهای آنها 86 بود و اکثرا 32 بیت بودند (مثل: 80186، 80286 و 80386) بعد ها AMD پردازنده جدیدی معرفی کرد که مشتقی از پردازنده هایی با معماری شبیه Intel بود و اسمش را گذاشت AMD64 که معماری آن x86-64 بود
امروزه برای سادگی و اشاره برای معماری پردازنده ها به صورت خلاصه از عبارات x86 و x64 استفاده میکنند که به صورت تکنیکالی x86 رو میگن 32 بیت و x64 رو میگن 64 بیت
وقتی میگیم پردازنده 32 بیت هست یعنی هربار که میخواین به یک آدرسی اشاره کنید (*ptr) فقط میتونه از 32 بیت استفاده بشه مثلا اولین آدرس حافظه میشود 0x00000000 و دومین آدرس میشود 0x00000001 و آخرین آدرس که به صورت HEX است میشود 0xFFFFFFFF
حال با یک محاسبه ریاضی میتوانیم درک کنیم هر خونه حافظه که یک بیت است یعنی یا داخلش 0 است یا 1 (2 حالت میشه) که اگر 2 به توان 32 (32 بیت) برسد جمعا 4,294,967,296 آدرس خواهیم داشت در هر آدرس هم نهایتا یک بایت (8 بیت) میتواند ذخیره شود حالا 4,294,967,296 بایت را اگر دوبار تقسیم بر 1024 کنیم حاصل میشود 4,096 مگابایت
به صورت خلاصه سیستم های 64 بیتی میتوانند 2 به توان 64 آدرس درون خودشان داشته باشند یعنی
۲^۶۴ بایت = ۱۸۴۴ میلیارد گیگابایت (تقریباً ۱۷.۵ میلیون ترابایت)
(بله دوستان منابع در هیچ هایی بینهایت نیست همیشه محدودیت وجود دارد 😵💫)
✅ حالا بیاین به جواب برسیم:
مشکل این بود که این داداشمون وقتی داشته پابلیش میگرفته خروجی پابلیشش رو روی معماری x86 زده 🥳 کلا هم نزدیک 4 گیگ اپلیکیشنش مصرف میکرد
به نظرم وقت این رسیده که برین یه نگاهی به این موضوع ساده بندازین و ببینید یه وقت اشتباه نکرده باشین ❤️
انواع کانفیگ های پابلیش برنامه
https://t.me/hasanxdev_files/3
1 050
اگر پروژهای که توی وبینار توضیح دادم رو خواستید، الآن میتونید از روی گیتهاب دانلودش کنید. چند تا مشکل کوچیک داشت که همونها هم فیکس شدن.
اگه دوست داشتید، حتماً Star کنید 🌟!
https://github.com/hasanxdev/ArtOfResourceOptimization
1 050
سلام دوستان!
ویدیو وبینار آپتیمایز RAM و CPU آمادهاست و میتونید در یوتیوب من تماشا کنید.
خوشحال میشم با Subscribe کردن از من حمایت کنید تا ویدیوهای جذابتر و مفیدتری براتون بیارم.
لینک ویدیو: https://youtu.be/BtN3EDexy0U
منتظرم نظرات و پیشنهاداتتون رو هم بشنوم! 🚀
1 050
HybridCache در .NET9
⬅️ خلاصه
احتمالا همه مون به کش خیلی علاقه داریم و میدونیم که 2 مکانیزم پایه داریم در کش
1- خواندن از کش
2- خواندن از سورس اصلی دیتا
احتمالا تا الان خیلی برای این مورد کد مینوشتید در .NET9 ویژگی جدیدی اضافه شده که میتونید باهاش به صورت قابل قبولی این دو کار رو ترکیب کنید
هم برای پروژه های Scale بالا مناسب هست هم برای پروژه هایی با Scale پایین چون هم In Memory میشه استفاده کردش هم به صورت Distributed
⬅️ کارکرد
1- نحوه رجیستر سرویس که میتونید از Deserializer و Serializer کتابخونه Protobuf استفاده کنید
builder.Services.AddHybridCache(options =>
{
options.DefaultEntryOptions = new HybridCacheEntryOptions
{
Expiration = TimeSpan.FromSeconds(10),
LocalCacheExpiration = TimeSpan.FromSeconds(5)
};
}).AddSerializer<SomeProtobufMessage,
GoogleProtobufSerializer<SomeProtobufMessage>>();
2- نحوه استفاده و ست کردن توی کش:
public class SomeService(HybridCache cache)
{
private HybridCache _cache = cache;
public async Task<string> GetSomeInfoAsync(string name, int id, CancellationToken token = default)
{
return await _cache.GetOrCreateAsync(
$"{name}-{id}", // Unique key to the cache entry
async cancel => await GetDataFromTheSourceAsync(name, id, cancel),
cancellationToken: token
);
}
public async Task<string> GetDataFromTheSourceAsync(string name, int id, CancellationToken token)
{
string someInfo = $"someinfo-{name}-{id}";
return someInfo;
}
}
اطلاعات بیشتر: لینک اصلی مقاله
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
