DotNet | دات نت
1.2K subscribers
672 photos
231 videos
486 files
732 links
تو این روزا بهتره که همیشه علم خودمون رو بالا ببریم و بتونیم با سریع ترین راه ممکن خودمونو بروز نگه داریم.
- سعی کنیم از کمترین امکانات بیشترین بهره رو ببریم
منتظرت هستیم😉
دنیا رو جای بهتری برای یادگیری کنیم 🌹
#course #book


🆔 @dotnetcode
Download Telegram
🛠 نجات توسعه‌دهنده‌ها در شرایط «نت ملی»؛ تجربیات عملی ما برای زنده نگه داشتن چرخه تولید

توی این چند وقت که دسترسی‌ها محدود شد و اینترنت به حالت داخلی (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 #SoftwareEngineering
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍4👏4
🚨 تغییر مهم در 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 #Microservices
Please open Telegram to view this post
VIEW IN TELEGRAM
4👏3👍2🔥1
🔥 نکته حیاتی در 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 #Tips
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍7🔥3
🔴 انقلاب جدید در گیت‌هاب: ادغام مستقیم 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 🖥
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👏21🔥1
🎆 کوپایلت رو دیگه فقط تو 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 🖥
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥3👍1👏1
👩‍💻 هنوز داری با کوئری‌های سنگین دیتابیس رو زیر بار میبری؟

وقتی صحبت از پرفورمنس در PostgreSQL میشه، خیلی‌ها سریع میرن سراغ ایندکس‌گذاری. اما گاهی مشکل ایندکس نیست؛ مشکل اینه که داری یه محاسبات سنگین رو بارها و بارها تکرار می‌کنی!

اینجاست که Materialized View (MatView) وارد بازی میشه. برخلاف View معمولی که فقط یه "پنجره" به دیتاست، MatView نتیجه رو واقعاً روی دیسک ذخیره (Cache) می‌کنه.
اما سوال اصلی اینه: کی باید ازش استفاده کنیم و کی فرار کنیم؟ 🤔

کجا معجزه می‌کنه؟ (Use Cases)
* داشبورد‌های مدیریتی: مدیرها معمولاً آمار لحظه‌ای نمی‌خوان؛ آمار ۵ دقیقه پیش هم راضی‌شون می‌کنه.

* کوئری‌های تحلیلی سنگین: وقتی چند تا Join و Aggregation وحشتناک داری که هر بار اجراش چند ثانیه طول میکشه.

* آرشیو دیتا: وقتی دیتای قدیمی تغییر نمی‌کنه و فقط برای گزارش‌گیری لازمش داری.

کجا نباید سمتش بری؟ (Red Flags)
* دیتای ۱۰۰٪ ریل‌تایم: اگه کاربر باید تغییر رو در میلی‌ثانیه ببینه، MatView گزینه غلطیه (چون تا Refresh نشه، دیتا قدیمیه).

* نرخ تغییرات بالا: اگه دیتای اصلی مدام در حال آپدیته، هزینه Refresh کردن MatView ممکنه بیشتر از سودش بشه.

💡 نکته حرفه‌ای (Pro Tip):

موقع آپدیت کردن ویو، دیتابیس ممکنه قفل بشه! برای اینکه سرویس نخوابه، حتماً از دستور زیر استفاده کن تا همزمان با خوندن، بتونی آپدیتش کنی:
REFRESH MATERIALIZED VIEW CONCURRENTLY

👇 همین الان چک کن:

یه نگاه به لیست Slow Queryهای پروژه‌ت بنداز. اگه کوئری تکراری و سنگین داری، شاید وقتشه "متریالایزش" کنی!

🔗 https://stormatics.tech/blogs/postgresql-materialized-views-when-caching-your-query-results-makes-sense

#PostgreSQL #Database #Performance #Backend #SQL

🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید!

📚💻 @dotnetcode 🖥
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1🔥1👏1
👩‍💻 پستگرس رو ۲.۵ برابر سریع‌تر کن!

تصور کن مغز متفکر دیتابیست (Parser) رو بدی دست هوش مصنوعی و خروجی بگیری که از نسخه اصلی هم سریع‌تر و بهینه‌تر باشه. دقیقاً همین اتفاق افتاده!

تیم Multigres با یک حرکت مهندسی جذاب و کمک گرفتن از Claude Code، تونستن پارسر PostgreSQL رو بازنویسی کنن و به نتایج شگفت‌انگیزی برسن. این فقط یک آپدیت ساده نیست؛ قدرت‌نمایی ترکیب مهندسی نرم‌افزار با AI در لایه‌های عمیق زیرساختیه.

نکات کلیدی این شاهکار فنی: 👇

افزایش سرعت چشمگیر: دستیابی به سرعت ۲.۵ برابری در پردازش کوئری‌ها نسبت به پارسر استاندارد.

مهندسی با طعم AI: استفاده از هوش مصنوعی برای درک و بهینه‌سازی پیچیدگی‌های سطح پایین (Low-level).

کارایی بالاتر: کاهش سربار سیستم و مدیریت بهتر منابع هنگام اجرای کوئری‌های سنگین.

این یعنی هوش مصنوعی دیگه فقط برای تولید متن و عکس نیست؛ داره وارد قلب تپنده سیستم‌ها میشه!


🔗
https://multigres.com/blog/ai-parser-engineering

#PostgreSQL #Database #AI #TechNews #برنامه_نویسی

🎺برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامه‌نویسی، به کانال ما بپیوندید!

📚💻 @dotnetcode 🖥
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3
تحولی بزرگ در دنیای سی‌شارپ: ویژگی هیجان‌انگیز 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 🖥
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍4🔥2👏1
Forwarded from Software Philosophy
آینده هوش مصنوعی و مهندسی کامپیوتر

هوش مصنوعی مهندسی را نابود نمی‌کند، اما در سکوت در حال از بین بردن چیزی بسیار مهم‌تر است: مسیر رشد نیروهای جونیور!

اخیرا که ویدئوی کنفرانس BUILD و صحبت‌های اسکات هنسلمن و مارک روسینوویچ را دیدم یکی از مهم‌ترین واقعیت‌ها درباره‌ی هوش مصنوعی در مهندسی را مطرح کردند؛ حقیقتی که باید بلندتر گفته شود، واقعیتی که بیشتر شرکت‌ها الان دیگر فهمیده‌اند:

هوش مصنوعی بهترین نتایجش را زمانی ارائه می‌دهد که مهندسان ارشد با آن کار می‌کنند.


اما در عین حال، هوش مصنوعی تقریبا تمام وظایف سطح جونیور را جایگزین کرده است: ایجاد ساختار اولیه، دیباگ، نوشتن کدهای تکراری (boilerplate)، تست کردن و غیره.
در نتیجه امروز بسیاری از تیم‌ها عملاً استخدام جونیورها را متوقف کرده‌اند. و این همان خطر واقعی است.

🔥 اگر امروز جونیورها حذف شوند، فردا سنیوری وجود نخواهد داشت.

بدون جونیور ⬅️ بدون نیروهای میانی ⬅️ بدون سنیور ⬅️ بدون آرشیتکت ⬅️ و در نهایت کسی نمی‌ماند که بتواند هوش مصنوعی را به ‌درستی هدایت کند.

ما هم این موضوع را از نزدیک دیده‌ایم. به همین دلیل در CrystaCode به‌طور جدی روز برنامه‌ی #cs_internship سرمایه‌گذاری می‌کنیم تا جریان پایداری از استعدادهای جونیور حفظ شود و مسیر واقعی رشد آن‌ها به نسل بعدی مهندسان ارشد فراهم گردد.

چون آینده‌ی مهندسی به کسانی بستگی دارد که هنوز سنیور نشده‌اند.

🔗 صحبت‌های اسکات هنسلمن و مارک روسینوویچ را در یوتیوب ببینید.

#مهران_داودی (لینکدین - بلاگ)

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنت‌ها به اشتراک بگذارید.

کانال تلگرام:
@SoftwarePhilosophy

______
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
Forwarded from thisisnabi.dev [Farsi]
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
3
Forwarded from C# Geeks (.NET)
#مهندس_فکر_کن
قسمت: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 می‌گویند.

حالا بگو ببینم برای حل این مشکل چه راهکار هایی میدی؟🤔
6👏3🔥1