tgindex

DotNet | دات نت

описание

تو این روزا بهتره که همیشه علم خودمون رو بالا ببریم و بتونیم با سریع ترین راه ممکن خودمونو بروز نگه داریم. - سعی کنیم از کمترین امکانات بیشترین بهره رو ببریم منتظرت هستیم😉 دنیا رو جای بهتری برای یادگیری کنیم 🌹 #course #book 🆔 @dotnetcode

1 202
подписчиков
Охват к подписчикам
91,5%
ERR
Реакции к просмотрам
0,95%
275 на 27 постов
Пересылки к просмотрам
1,83%
531
Постов в день
0,0
всего 27

Где отзываются чаще

доля реакций к просмотрам
  • 10 июл.#مهندس_فکر_کن قسمت: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 می‌گویند. حالا بگو ببینم برای حل این مشکل چه راهکار هایی میدی؟🤔2,22%
  • 21 янв.سلام رفقا، نه چیزی برای گفتن هست، نه کتابی برای مرور کردن و نه درسی برای یاد گرفتن. تنها چیزی که میشه روش تمرکز کرد توانایی های خودمون بدون اینترنت و AI هست، مثل ۲۳ سال پیش که من شروع کردم.فقط هند بوک و تلاش بسیار. این پیام هم نمیدونم ارسال میشه یا نه، براتون فقط سلامتی آرزو می کنم.2,04%
  • 4 июн.تحولی بزرگ در دنیای سی‌شارپ: ویژگی هیجان‌انگیز 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 🖥1,96%
  • 2 февр.🔥 نکته حیاتی در Hangfire: جنگ با ساعت و تایم‌زون‌ها! ⏰🌍 اگر تا حالا براتون پیش اومده که جابی رو برای ساعت ۸ صبح تنظیم کردید ولی ساعت ۱۱:۳۰ اجرا شده، این پست برای شماست! ⚠️ ماجرا چیه؟ هنگ‌فایر (Hangfire) به صورت پیش‌فرض (Default) همه جاب‌های تکرارشونده (Recurring Jobs) رو بر مبنای ساعت UTC اجرا می‌کنه. یعنی اگر تنظیمات تایم‌زون رو بهش ندید، باید اختلاف ساعت ایران با گرینویچ رو دستی حساب کنید که اصلا جالب نیست. حالا اگر بخوایم بگیم "به وقت ایران اجرا شو"، با یه چالش جدید روبرو می‌شیم: 🔸 ویندوز می‌گه: "Iran Standard Time" 🔸 لینوکس/داکر می‌گه: "Asia/Tehran" اگر این تفاوت هندل نشه، روی سرور لینوکسی یا کانتینر داکر به خطای TimeZoneNotFoundException می‌خورید! 🤯 ✅ راه حل نهایی (Cross-Platform): با این تیکه کد، هم مشکل UTC رو حل کنید و هم کدی بنویسید که روی ویندوز، لینوکس و مک بدون تغییر کار کنه: using System.Runtime.InteropServices; // 1. تشخیص خودکار شناسه تایم‌زون بر اساس سیستم‌عامل // Windows -> "Iran Standard Time" // Linux/Docker -> "Asia/Tehran" var tehranId = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "Iran Standard Time" : "Asia/Tehran"; // 2. تنظیم ساعت به وقت ایران RecurringJob.AddOrUpdate( type.FullName, () => job.ExecuteAsync(), attribute.CronExpression, new RecurringJobOptions { // خداحافظ UTC، سلام تهران! 👋 TimeZone = TimeZoneInfo.FindSystemTimeZoneById(tehranId) } ); 💡 با این روش، دیگه نگران جلو/عقب کشیدن ساعت‌ها یا تفاوت محیط لوکال و سرور نباشید. 🔗 بحث مرتبط در کامیونیتی هنگ‌فایر: https://discuss.hangfire.io/t/need-local-time-instead-of-utc/279/7 🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید! 📚💻 @dotnetcode 🖥 #CSharp #DotNet #Hangfire #Docker #Backend #TimeZone #Tips1,80%
  • 28 нояб.без подписи1,49%
  • 19 июл. 2025 г.без подписи1,46%
  • 6 февр.🎆 کوپایلت رو دیگه فقط تو VS Code حبس نکنید! گیت‌هاب با معرفی GitHub Copilot SDK، بازی رو کلاً عوض کرد. حالا دیگه کوپایلت فقط یک افزونه تکمیل کد نیست؛ بلکه می‌تونید مغز متفکر اون رو بردارید و مستقیم توی اپلیکیشن‌های خودتون بذارید! این یعنی چی؟ یعنی شما می‌تونید ابزارها و Agentهایی بسازید که دقیقاً با نیازهای شما و تیمتون هماهنگ باشن. چرا این SDK یه انقلابه؟ 👇 ✅ هوش مصنوعی اختصاصی: اپلیکیشن‌هایی بسازید که به دیتای شما (مثل ریپوزیتوری‌ها یا لاگ‌ها) دسترسی دارن و بر اساس اون‌ها تصمیم می‌گیرن. ✅ جریان‌های کاری ایجنتیک (Agentic Workflows): امکان ساخت ایجنت‌هایی که می‌تونن چندین مرحله رو طی کنن، ابزارهای مختلف رو صدا بزنن (Tool Calling) و کار رو تموم کنن. ✅ یک مثال واقعی: توی دمو، اپلیکیشنی به اسم "Flight School" ساخته شده که پروفایل گیت‌هاب شما رو تحلیل می‌کنه و دقیقاً بر اساس مهارت‌ها و پروژه‌هاتون، بهتون تمرین کدنویسی میده و حتی جواب‌هاتون رو صحیح می‌کنه! ✅ فراتر از چت: دیگه فقط با متن سر و کار ندارید؛ می‌تونید با دسکتاپ تعامل کنید، فایل بسازید یا کارهای پیچیده رو خودکار انجام بدید. 💡 خلاصه: قدرت مدل‌های زبانی گیت‌هاب + دیتای اختصاصی شما = بی‌نهایت امکان جدید. همین الان ویدیو رو ببین و اولین ایده ساخت ایجنتت رو استارت بزن! 👨‍💻👩‍💻 📱 مشاهده دمو: https://youtu.be/ct_Ymw9RexM?si=SQgan8rBElWHns-g #GitHubCopilot #AI #DevTools #Programming #ArtificialIntelligence 🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید! 📚💻 @dotnetcode 🖥1,28%
  • 31 янв.🛠 نجات توسعه‌دهنده‌ها در شرایط «نت ملی»؛ تجربیات عملی ما برای زنده نگه داشتن چرخه تولید توی این چند وقت که دسترسی‌ها محدود شد و اینترنت به حالت داخلی (Intranet) رفت، ما هم مثل خیلی از تیم‌های دیگه با چالش‌های جدی روبرو شدیم. اما به جای متوقف شدن، سعی کردیم با ابزارهای جایگزین و تغییر استراتژی، جریان کار رو حفظ کنیم. خواستم تجربیات واقعی و سولوشن‌هایی که تو این مدت پیاده‌سازی کردیم رو باهاتون به اشتراک بذارم تا شاید گره‌ای از کار شما هم باز کنه: 1️⃣ عبور از تحریم و محدودیت پکیج‌ها (Frontend & Backend) برای پروژه‌هایی مثل Next.js که وابستگی زیادی به پکیج‌ها دارن، اولین حرکت ما استفاده از Mirror Serverهای داخلی بود. 🔹 پیشنهاد: سرویس Runflare تقریباً اکثر ابزارها رو Mirror کرده، سرورهاش داخلیه و سرعتش عالیه. 🔗 https://runflare.com/mirrors/ 🔥 خبر ویژه: همون روز اول با تیم فنی ران‌فلر صحبت کردم و دمشون گرم، خیلی سریع درخواست رو پیگیری کردن و Nuget رو هم به لیست سرویس‌هاشون اضافه کردن. الان دیگه دات‌نتی‌ها هم می‌تونن راحت پکیج‌ها رو دریافت کنن. 2️⃣ مدیریت داکر ایمیج‌ها (Docker Images) برای پول (Pull) کردن ایمیج‌ها، پلتفرم docker.ir گزینه کارراه‌اندازی هست. ⚠️ نکته حیاتی برای دات‌نتی‌ها: از اونجایی که ایمیج‌های دات‌نت روی Docker Hub نیستن و روی رجیستری مایکروسافت (MCR) قرار دارن، حتماً ایمیج‌های SDK و ASP Core رو: ۱. یا روی سیستم لوکال داشته باشید. ۲. یا (روش اصولی‌تر) روی رجیستری داخلی خودتون Push کنید تا در صورت قطعی، بیلدها فیل نشن. 3️⃣ خداحافظی با وابستگی به کش لوکال (The Nexus Solution) اوایل کار متکی به کشِ لوکال سیستم‌ها (فولدر .nuget) بودیم، اما این روش ریسک بالایی داشت. ✅ راهکار پایدار: ما Nexus رو بالا آوردیم. با این کار تمام پکیج‌های فرانت و بک‌‌اند یک‌بار در نکسوس کش میشن و اگه اینترنت کلاً قطع بشه، تیم فنی بدون هیچ توقفی به کارش ادامه میده. 4️⃣ ابزارهای مدیریت سورس، CI/CD و ارتباطات برای اینکه تیم ریموت و پایپ‌لاین‌ها از کار نیفتن، از سرویس‌های داخلی و Self-Hosted استفاده کردیم: * گیت و رانر: سرویس Hamgit (محصول هم‌روش) هم مخازن رو میزبانی می‌کنه و هم Runner برای پایپ‌لاین‌ها میده. * جلسات آنلاین: جایگزین Google Meet، از Jitsi استفاده کردیم (هم توی بازارچه هم‌روش هست، هم می‌تونید روی سرور خودتون بالا بیارید). * چت سازمانی: ما خودمون Mattermost رو روی سرور شخصی بالا آوردیم که عالیه. اگر دنبال سرویس آماده‌اید، Rocket.Chat در بازارچه ابری هم‌روش موجوده. 🔗 یک گزینه کمکی دیگر: سرویس چابکان هم Mirrorهای خوبی ارائه میده که داشتن لینککش به عنوان پلن B ضرری نداره: 🔗 https://iran.chabokan.net/#services 💡 هدفم از این پست فقط انتقال تجربه و کمک به کامیونیتی بود. امیدوارم به کارتون بیاد. هر جا سوالی بود یا کمکی از دستم برمیومد، حتماً بگید. 🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید! 📚💻 @dotnetcode 🖥👨‍💻 #DevOps #DotNet #Network #Programming #Intranet #ExperienceSharing #SoftwareEngineering1,28%
  • 5 дек.без подписи1,09%
  • 20 апр. 2025 г.без подписи1,07%
  • 6 февр.🔴 انقلاب جدید در گیت‌هاب: ادغام مستقیم Claude و Codex برای کدنویسی خودکار! گیت‌هاب (GitHub) در یک حرکت بزرگ برای رقابت با ابزارهایی مثل Cursor، رسماً اعلام کرد که ایجنت‌های هوش مصنوعی Claude (از شرکت Anthropic) و Codex را مستقیماً به پلتفرم خود اضافه کرده است. 💡 چه اتفاقی افتاده؟ تا پیش از این، کوپایلت (Copilot) بیشتر متکی به مدل‌های GPT بود، اما حالا توسعه‌دهندگان می‌توانند از قدرت مدل‌های Claude 3.7 Sonnet و OpenAI Codex به عنوان «ایجنت» استفاده کنند. این یعنی هوش مصنوعی دیگر فقط "پیشنهاد" نمی‌دهد، بلکه می‌تواند: 🔹 فایل‌ها را ویرایش کند 🔹 دستورات ترمینال را اجرا کند 🔹 باگ‌ها را به صورت خودکار رفع نماید 🔥 ویژگی‌های کلیدی این آپدیت: ⭐️ آزادی در انتخاب مدل: اگر طرفدار منطقِ Claude هستید یا سرعتِ Codex، حالا حق انتخاب دارید. ⭐️ درک عمیق‌تر از پروژه: این ایجنت‌ها می‌توانند کانتکست (Context) کامل پروژه شما را بفهمند و تغییرات پیچیده را اعمال کنند. ⭐️ جریان کاری روان: بدون نیاز به سوییچ کردن بین پنجره‌های مختلف، همه کارها داخل محیط گیت‌هاب انجام می‌شود. 🤔 چرا این مهم است؟ این تغییر نشان می‌دهد که گیت‌هاب نمی‌خواهد میدان را به IDEهای مبتنی بر هوش مصنوعی (مثل Cursor یا Windsurf) ببازد و قصد دارد همه چیز را در خانه خود نگه دارد. 📱لینک ویدیو : https://youtu.be/GuTQDXKwdJQ?si=znwN0dljFmrEF615 #GitHub #AI #Claude #Copilot #Programming #TechNews #گیت_هاب #هوش_مصنوعی #برنامه_نویسی #تکنولوژی #خبر 🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید! 📚💻 @dotnetcode 🖥1,05%
  • 31 янв.🚨 تغییر مهم در MassTransit: لایسنس تجاری از نسخه ۹.۰.۰ اگر در پروژه‌های دات‌نتی از کتابخانه MassTransit استفاده می‌کنید، مراقب آپدیت‌های جدید باشید. از نسخه 9.0.0 به بعد، این کتابخانه مدل لایسنس خود را به Commercial تغییر داده است. خلاصه وضعیت جدید: 🔹 نسخه‌های ۸ و قدیمی‌تر: همچنان رایگان و Open Source (Apache 2.0) باقی می‌مانند. 🔹 نسخه ۹ و بالاتر: برای شرکت‌هایی با درآمد بالای ۱ میلیون دلار در سال پولی است. 🔹 استارتاپ‌ها و توسعه‌دهندگان مستقل: اگر درآمد سالانه زیر ۱ میلیون دلار باشد، همچنان می‌توانید با تخفیف ۱۰۰ درصدی (رایگان) استفاده کنید. --- 🛠 راهکار فنی: جلوگیری از آپدیت خودکار به نسخه پولی برای اینکه ابزارهایی مثل NuGet یا Dependabot به صورت خودکار پروژه شما را به نسخه ۹ (پولی) ارتقا ندهند، باید ورژن را در فایل .csproj قفل کنید. استفاده از براکت `[]` به معنای اجبار روی یک نسخه دقیق است: <PackageReference Include="MassTransit" Version="[8.5.7]" /> چرا این کار مهم است؟ * نوشتن Version="8.5.7" به NuGet اجازه می‌دهد نسخه‌های بالاتر (مثل 9.0.1) را هم نصب کند. * اما Version="[8.5.7]" یعنی فقط و فقط همین نسخه نصب شود و جلوی ارتقای ناخواسته به نسخه پولی را می‌گیرد. اگر پروژه‌ی بزرگی دارید که فعلاً بودجه خرید لایسنس ندارد، حتماً این تغییر را در پکیج‌های خود اعمال کنید. 🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید! 📚💻 @dotnetcode 🖥👨‍💻 #DotNet #MassTransit #CSharp #Programming_Tips #Microservices0,99%