DotNet | دات نت
описание
تو این روزا بهتره که همیشه علم خودمون رو بالا ببریم و بتونیم با سریع ترین راه ممکن خودمونو بروز نگه داریم. - سعی کنیم از کمترین امکانات بیشترین بهره رو ببریم منتظرت هستیم😉 دنیا رو جای بهتری برای یادگیری کنیم 🌹 #course #book 🆔 @dotnetcode
Лучшие посты
за три месяцаتحولی بزرگ در دنیای سیشارپ: ویژگی هیجانانگیز Union Types در C# 15! بالاخره یکی از جذابترین، مدرنترین و پردرخواستترین قابلیتهای دنیای برنامهنویسی داره به سیشارپ میآد. در رویداد اخیر مایکروسافت، مدس تورگرسن (Mads Torgersen) و داستین کمپبل (Dustin Campbell) رسماً از ویژگی بینظیر Union Types رونمایی کردند؛ قابلیتی که قرار است حدود ماه نوامبر همراه با C# 15 به طور رسمی منتشر بشه (البته نسخههای پیشنمایش اون همین الان در وبویژوال استودیو و داتنت ۱۰ در دسترسه!). اما این ویژگی چیه، چطور کار میکنه و چرا باید به عنوان یک داتنت دولوپر براش هیجانزده باشیم؟ بیایید خیلی ساده و تخصصی بررسیش کنیم: 💡 Union Types دقیقاً چیه؟ به زبان ساده، این ویژگی به شما اجازه میده مجموعهای محدود، بسته و مشخص از تایپهای مختلف رو زیر چتر یک نام واحد تعریف کنید. مدس و داستین توی دمو دو تا مثال فوقالعاده زدن که کاربرد واقعی اون رو کاملاً روشن میکنه: 🐾 مثال اول؛ حیوانات خانگی (Pets): تصور کنید چند کلاس یا رکورد کاملاً مستقل به اسمهای Dog، Cat و Bird دارید که از پکیجها یا کتابخانههای مختلف میآیند و هیچ ارثبری مشترکی ندارند. تا قبل از این، برای داشتن لیستی از آنها مجبور بودید از یک لیست از جنس object استفاده کنید که اصلاً ایمن نبود و ممکن بود ناخواسته یک Shark (کوسه!) هم وارد لیست بشه. اما با قابلیت جدید مینویسید: union Pet { Dog, Cat, Bird } حالا کامپایلر با قدرت از کد شما محافظت میکنه؛ اگر بخواهید Shark رو به این لیست پاس بدید، خطای کامپایل میگیرید. علاوه بر این، موقع نوشتن عبارت switch برای پردازش آنها، کامپایلر بررسی میکنه که حتماً تمام حالتها (سگ، گربه، پرنده) رو پوشش داده باشید (Exhaustive Pattern Matching) و اگر موردی جا بمونه بهتون وارنینگ میده. 🌐 مثال دوم؛ ساختار Result برای مدیریت خطا در شبکه: یکی از کاربردیترین الگوها در فریمورکهای مدرن (مثل Result Pattern)، مدیریت پاسخهای شبکه است. یک متد خروجیاش یا موفقیتآمیز است و داده برمیگرداند (Success<T>) یا با خطا مواجه میشود (Error). با تعریف یک Union ساده مثل union Result<T> { Success<T>, Error } بدون نیاز به چک کردن مقادیر Null یا ساختارهای پیچیده جنریک، خروجیها رو با بالاترین امنیتِ تایپ (Type Safety) مدیریت میکنید. 🛠 زیر پوست کامپایلر چه خبره؟ (استفاده از Struct و کنترل Boxing) شاید بپرسید تیم توسعه سیشارپ چطور این کار رو بدون افت عملکرد و پرفورمنس انجام داده؟ زیر پوست کامپایلر، برای هر Union Type یک Struct داخلی (Value Type) ساخته میشه. این استراکت شامل یک سیستم نشانهگذاری (Tag) برای تشخیص تایپ فعلی و فضایی بهینهسازیشده برای نگهداری خودِ مقدار هست. نکته طلایی اینجاست که کامپایلر به طور هوشمندانهای فرآیند Boxing (انتقال از استک به هیپ) رو کنترل و تا حد امکان از اون جلوگیری میکنه. این یعنی مدیریت حافظه فوقالعاده بهینه و بدون راندمان منفی، که در متدهای پر ترافیک و مسیرهای داغ (Hot Paths) بکاند برنامهتون معجزه میکنه! 👩💻 تفاوت بزرگ با تایپاسکریپت چیست؟ اگر فرانتاند کار کرده باشید یا با TypeScript آشنا باشید، قطعاً با Unionها برخورد داشتید؛ اما پیادهسازی سیشارپ یک تفاوت بنیادین دارد: در تایپاسکریپت: این ویژگی کاملاً ساختاری (Structural) است و در زمان اجرای برنامه (Runtime) کلاً پاک میشه (Type Erasure) و وجود خارجی نداره. در سیشارپ: این ویژگی اسمی (Nominal) است؛ یعنی تایپها کاملاً در محیط رانتایم زنده و معتبر هستن. به خاطر ساختار اکوسیستم .NET، شما میتونید در زمان اجرا هم دربارهی این تایپها پرسوجو کنید و مستقیماً روشون پترن مچینگ بزنید، بدون اینکه هویت تایپها از بین بره. 🔗لینک ویدیو : https://youtu.be/7qW92AwlrjM?is=2QRght0DTz11t5_P #csharp #dotnet #programming #csharp15 #backend #union_types #developer #architecture #microservices 🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید! 📚💻 @dotnetcode 🖥
آینده هوش مصنوعی و مهندسی کامپیوتر هوش مصنوعی مهندسی را نابود نمیکند، اما در سکوت در حال از بین بردن چیزی بسیار مهمتر است: مسیر رشد نیروهای جونیور! اخیرا که ویدئوی کنفرانس BUILD و صحبتهای اسکات هنسلمن و مارک روسینوویچ را دیدم یکی از مهمترین واقعیتها دربارهی هوش مصنوعی در مهندسی را مطرح کردند؛ حقیقتی که باید بلندتر گفته شود، واقعیتی که بیشتر شرکتها الان دیگر فهمیدهاند: هوش مصنوعی بهترین نتایجش را زمانی ارائه میدهد که مهندسان ارشد با آن کار میکنند. اما در عین حال، هوش مصنوعی تقریبا تمام وظایف سطح جونیور را جایگزین کرده است: ایجاد ساختار اولیه، دیباگ، نوشتن کدهای تکراری (boilerplate)، تست کردن و غیره. در نتیجه امروز بسیاری از تیمها عملاً استخدام جونیورها را متوقف کردهاند. و این همان خطر واقعی است. 🔥 اگر امروز جونیورها حذف شوند، فردا سنیوری وجود نخواهد داشت. بدون جونیور ⬅️ بدون نیروهای میانی ⬅️ بدون سنیور ⬅️ بدون آرشیتکت ⬅️ و در نهایت کسی نمیماند که بتواند هوش مصنوعی را به درستی هدایت کند. ما هم این موضوع را از نزدیک دیدهایم. به همین دلیل در CrystaCode بهطور جدی روز برنامهی #cs_internship سرمایهگذاری میکنیم تا جریان پایداری از استعدادهای جونیور حفظ شود و مسیر واقعی رشد آنها به نسل بعدی مهندسان ارشد فراهم گردد. چون آیندهی مهندسی به کسانی بستگی دارد که هنوز سنیور نشدهاند. 🔗 صحبتهای اسکات هنسلمن و مارک روسینوویچ را در یوتیوب ببینید. #مهران_داودی (لینکدین - بلاگ) ⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید. کانال تلگرام: @SoftwarePhilosophy ______
1. Indexes منابع پیشنهادی این چالش که برای من اینها جذاب بوده و هست. A. Designing Data-Intensive Applications 2nd Edition [book] - Chapter 4 - required B. Database Internals [book] - Chapters 1, 2 - required - Chapter 3, 4 - optional C. Pro SQL Server Internals [book] - Chapters 1, 2, 4, 6 - required - Chapters 3, 5 - optionals قرار نیست زردآلو بیاد تو گلو باشه رشد همیشه با کمی سختی، فشار و کش اومدن همراهه. هر وقت دیدی همهچی زیادی راحته، احتمالاً داری همون چیزهایی رو تکرار میکنی که بلدی. گرم دم اونایی که با ما بودن و ادامه میدن ❤️ Update 1 : من امروز که می خواستم کتاب اولی رو مجددا بخونم فهمیدم که ادیشن 2 هم اومده و این عنوان توی فصل چهارم هست برای همین آپدیت کردم تکست رو، در جریان باشید. Update 2: یکی از گلوگاه های بیزینس هایی مثل ما که همیشه انگار توی بلک فرایدی هستیم دیتابیس و محدودیت هاشه، برای همین خواستم با بزرگوار شروع کنید، پس اگر وقت داشتین حتما ۲ تا منبع اول رو بخونید :) @thisisnabi_dev
#مهندس_فکر_کن قسمت:4️⃣ 🎯مصاحبهکننده: ءCache Stampede چیست؟ فرض کن یک کلید در Cache داری: Product:123 و TTL آن 5 دقیقه است. در لحظهای که این کلید منقضی میشود، همزمان 5000 درخواست برای همان محصول میآید. اتفاقی که میافتد: Client 1 ----\ Client 2 -----\ Client 3 -------> Cache Miss Client 4 -----/ Client 5 ----/ ... 5000 Requests همه همزمان Cache Miss میخورند. سپس همه به Database میروند. 5000 Query ↓ Database در نتیجه Database Overload، افزایش شدید Latency ،احتمال Down شدن سرویس. به این حالت Cache Stampede میگویند. حالا بگو ببینم برای حل این مشکل چه راهکار هایی میدی؟🤔