.NET | دات نت – Telegram
.NET | دات نت
283 subscribers
121 photos
7 videos
26 files
164 links
دنیای شگفت انگیز و جذاب دات نت رو زیر ذره‌بین می‌بریم و تجربه ها رو به اشتراک میذاریم

به جمع توسعه دهندگان دات نت خوش اومدی 🥰❤️


گروه: https://news.1rj.ru/str/dndevelopchat
Download Telegram
کیانوش مختاریان
مدیر و رهبر فنی سابق در گوگل


فرق کار تو گوگل و ایران چیه؟
همه رفتند ولی اون برگشته به ایران ...

#ویدئو_کدنویس

🔗 YouTube
3👍1🔥1
net-interview-questions.pdf
3.9 MB
۱۵۰ سوال برای آماده شدن در مصاحبه NET.

هر سؤال طوری طراحی شده که بهت کمک کنه درک واقعی‌تری از نحوه کار سیستم‌ها پیدا کنی—نه اینکه فقط برای مباحث تئوری آماده بشی.
فرقی نمی‌کنه هدف‌ت موقعیت جونیور، میدل یا سینیور باشه؛ این مجموعه بهت وضوح و اعتمادبه‌نفس لازم برای قبولی در مصاحبه‌ها رو می‌ده.
🔥31
#استخدام

☑️ برنامه_نویس بک اند
پرتو بیتا (تهران)

💬 شرایط:
- تسلط به NET 7+، Clean Architecture، DDD، CQRS
- رعایت Clean Code + استانداردهای کدنویسی
- رویکرد TDD و Unit Test و Integration Test
- کار با Git و TFS Board.
- مهارت Test Automation، Automated Build، Deploy
- تحلیل و رفع باگها

🏅چرا اینجا؟
- بیمه تکمیلی رایگان شخص همکار
- اهدای فصلی پک ارزاق و مواد غذایی
- سرو میان وعده
- اعطای کمک هزینه ناهاری
- ولکام پکیج در شروع همکاری
- نزدیکی لوکیشن سازمان به ایستگاه مترو توحید

📧https://lnkd.in/dUx2HMVK
🔗 LinkedIn
👍3
فصل سوم - الگوهای کارآموزی

پیمودن راه طولانی

مسئله فقط فتح قله‌ای ناشناخته نیست، بلکه ترسیم گام به‌گام مسیری تازه به سوی آن است.
گوستاو مالر، موسیقیدان و آهنگساز

استادی در برنامه‌نویسی شبیه یک سفر طولانی است؛ سفری که هرچه بیشتر جلو بروی، بیشتر می‌فهمی چقدر راه مانده. دیو هم همین را تجربه کرد؛ با مدرک‌ها و دوره‌ها شروع کرد، اما وقتی با برنامه‌نویس‌های واقعی روبه‌رو شد دید که تازه نوک کوه را لمس کرده. این مسیر در جهانی که دنبال سرعت، ترفیع فوری و نتیجه‌ی فوری است، کمی نامتعارف به‌نظر می‌رسد، اما کسی که دنبال رشد واقعی است باید آینده‌ی بلندمدت را به جای موفقیت زودگذر انتخاب کند.

برنامه‌نویسی در ذاتش یک پیشه است. نرم‌افزاری که می‌سازی باید به کار بیاید، برای یک آدم واقعی مشکل حل کند. زیبایی و ظرافت هم شیرین‌اند، اما اول باید مفید باشی. صنعتگر بودن یعنی از وسوسه‌ی ساختن چیزهای درخشانِ بی‌فایده فاصله بگیری و تمرکزت را روی چیزی بگذاری که برای مشتری ارزش دارد، نه برای رزومه‌ات.

راه طولانی همیشه روزهای خوب ندارد. پروژه‌های شلخته، مدیرهای بی‌صبر، کارهای تکراری و بی‌نظم انرژی را می‌مکند. برای همین باید انگیزه‌ای داشته باشی که دوام بیاورد: عشق به یادگیری، کار روی بخش‌هایی که کیف می‌دهند، ارتباط با آدم‌های هم‌فکر، و ساخت ابزارها و پروژه‌های کوچکی که برای خودت می‌سازی. اگر مراقب نباشی، گرفتار قفل طلایی می‌شوی؛ جایی که پول خوب نمی‌گذارد یاد بگیری و جلو بروی.

هیچ‌کس مسیر تو را طراحی نمی‌کند. خودت باید مقصد، قدم‌های کوچک و راهت را مشخص کنی. اگر مسیر شغلی سازمان با مسیر رشدت هم‌سو نیست، باید تغییر مسیر بدهی یا سازمان را عوض کنی. عنوان شغلی هم معیار ارزش تو نیست؛ فقط نشانه‌ای است از اینکه سازمان در چه جایگاهی ایستاده، نه تو.

گاهی ترفیع‌ها تو را از کدنویسی دور می‌کنند. اگر می‌خواهی در مسیر استاد شدن بمانی، باید در عمل بمانی. هر روزی که کد نمی‌زنی یک قدم از مسیر دور می‌شوی. اگر سازمان می‌خواهد پاداشت را با نقشی غیر فنی بدهد، باید مذاکره کنی یا مسیر شغلی‌ات را جایی ادامه بدهی که همچنان در سنگر بمانی.

و اگر روزی فهمیدی راهت عوض شده، اشکالی ندارد. شاید مسیر جدید با ارزش‌های امروزت سازگارتر باشد. آنچه در دوران شاگردی یاد گرفته‌ای با تو می‌ماند و در هر جایی که بروی کمکت می‌کند.

در نهایت، استادی از یک مجموعه انتخاب‌های کوچک ساخته می‌شود، انتخاب‌هایی که کم‌کم شکل مسیر را تعیین می‌کنند. هیچ لحظه‌ی خاصی وجود ندارد که ناگهان استاد شوی؛ فقط قدم‌به‌قدم جلو می‌روی و یک روز می‌بینی نسخه‌ای از خودت شده‌ای که با روز اول قابل مقایسه نیست.
1🔥1🆒1
🎲7 بازی SQL که حسابی مهارت‌های تحلیل داده رو تقویت میکنه!


👨🏻💻 یکی از سخت‌ترین بخش‌های یادگیری SQL اینه که ساعت‌ها بشینی پای ویدئوهای آموزشی و یه عالمه آموزش تئوری ببینی. حوصله ات از آموزش‌های خشک و خالی سر میره مگه نه؟


💻 ولی اگه بشه با بازی کردن SQL رو یاد گرفت چی؟ اینجا ۷ تا بازی SQL رو معرفی می‌کردم که به نظرم هم سرگرم‌کننده هستن و هم یه جور تمرین حرفه‌ای برای تقویت مهارتهای SQL.


1️⃣ بازی SQL Island
https://lnkd.in/eEvx-Wgd
🤳 تصور کنین توی یه جزیره ناشناخته گیر افتادین! با استفاده از مهارت‌های SQL باید راه نجات خودتون رو پیدا کنین. ترکیب چالش و ماجراجویی، اونم توی دنیای SQL!


2️⃣ بازی SQL Murder Mystery
https://lnkd.in/e2pb9XEc
🤳 فرض کنید یه قتل توی شهر SQL اتفاق افتاده! حالا باید از دانش SQL استفاده کنین تا سرنخ‌ها رو کنار هم بذارین و قاتل رو پیدا کنید. جذابتر از این؟


3️⃣ بازی Lost at SQL
https://lnkd.in/eypHVzXH
🤳 تو یه دنیای پر از چالش‌های SQL گم شدین! باید معماها رو حل کنین تا به سطح بعدی برین.


4️⃣ بازی SQL Police Department
https://sqlpd.com/
🤳 اینجا شما به تیم پلیس SQL می‌پیوندین. قراره پرونده‌های مختلف رو حل کنین و همزمان کلی نکته جدید درباره SQL یاد بگیرین. یه تجربه هیجان‌انگیز و آموزنده!


5️⃣ بازی Querymon
https://lnkd.in/eiRv6riG
🤳 اگه تازه کارین و میخواین SQL رو از پایه یاد بگیرین، این بازی بهترین نقطهی شروعه!


6️⃣ بازی Schemaverse
https://schemaverse.com/
🤳 این یکی یه بازی استراتژی فضاییه که توی PostgreSQL پیاده شده. با دستورات خام SQL به ناوگان فضایی تون فرمان بدین و توی یه رقابت آنلاین، دیگران رو شکست بدین.


7️⃣ بازی CodinGame
https://lnkd.in/eQCUCtYQ
🤳 تمرین SQL همراه با چالشهای برنامه‌نویسی جذاب، توی یه پلتفرم که کلی زبان دیگه رو هم ساپورت میکنه.

🔗 LinkedIn
👍6
یکی از تصمیم‌های کلیدی در کار با زمان در ‎.NET، انتخاب بین DateTimeOffset.Now و DateTimeOffset.UtcNow هست. یک انتخاب اشتباه اینجا می‌تونه باعث باگ‌های پیچیده‌ای بشه که فقط در Time Zone های خاصی خودشون رو نشون میدن.

خلاصه تفاوت این دو:
DateTimeOffset.Now
زمان محلی سیستمی که کد روش اجرا میشه رو برمی‌گردونه. این مقدار کاملاً به Time Zone سرور یا کامپیوتر کاربر وابسته است.

DateTimeOffset.UtcNow
زمان جهانی (UTC) رو با Offset صفر (+00:00) برمی‌گردونه. این مقدار هیچ وابستگی به تنظیمات محلی نداره و برای همه در یک لحظه، یکسان و ثابته.

اصل کلی اینه: "با UTC ذخیره کن، با زمان محلی نمایش بده."
همیشه برای ثبت زمان در دیتابیس، لاگ‌ها یا هر نوع Storage دیگه‌ای، از DateTimeOffset.UtcNow استفاده کنید. این کار یک (Source of Truth) بدون ابهام و قابل مقایسه ایجاد می‌کنه.
نمایش زمان به کاربر نهایی باید در لایه UI و بر اساس Time Zone خود کاربر انجام بشه.
این رویکرد ساده، جلوی بسیاری از مشکلات در سیستم‌های توزیع‌شده (Distributed Systems) رو می‌گیره.
👍81👏1
کارآموزی بریم یا نه؟

#ویدئو_کدنویس
🔗 YouTube
👍4👎2
فصل چهارم - الگوهای کارآموزی

ارزیابی دقیق خود

خطرناک‌ترین جایگاه برای یک برنامه‌نویس، جایی است که احساس کند بهترین است. ماهی بزرگ در برکه‌ی کوچک بودن، شاید حس غرور بدهد، اما در حقیقت پایانِ رشد توست.

بزرگترین تهدید برای کسی که سریع یاد می‌گیرد، توهمِ رسیدن است. اینکه نگاهی به اطرافت بیندازی، ببینی از هم‌تیمی‌هایت جلوتری و با خودت بگویی: من دیگر استاد شده‌ام. اما واقعیت تلخ این است که در اقیانوس نرم‌افزار، همیشه ماهی‌های بزرگ‌تری هم هستند. اگر می‌خواهی رشد کنی، باید جرأت داشته باشی و از این برکه‌ی امن بیرون بیایی.

نویسندگان در این فصل یک الگوی عجیب اما حیاتی را معرفی می‌کنند: بدترین باش!
این ایده از پت متنی (نوازنده جاز) می‌آید: همیشه در گروهی ساز بزن که در آن تو بدترین نوازنده هستی.
وقتی ضعیف‌ترین عضو تیم باشی، مجبوری بدوی تا برسی. مجبوری مشاهده کنی، بپرسی و تقلید کنی. بودن در کنار آدم‌های قوی‌تر، دردناک است چون ضعف‌هایت را به رخ می‌کشد، اما تنها راهی است که سقف توانایی‌هایت را می‌شکند.

اما این مسیر به تنهایی طی نمی‌شود. باید مربی پیدا کنی.
شاید دسترسی به یک استاد تمام‌عیار نداشته باشی، اما مربی‌ها همه‌جا هستند: نویسندگان کتاب‌هایی که می‌خوانی، سخنرانان کنفرانس‌ها، یا حتی آدم‌های باتجربه‌تری که در اینترنت می‌نویسند. و اگر مربی نیافتی، دنبال روح‌های هم‌فکر باش. کسانی که مثل تو تشنه‌ی یادگیری‌اند. جامعه‌ای که در آن به جای رقابت، دانش جریان دارد.

یادگیری واقعی هم پشت میز و در انزوا اتفاق نمی‌افتد؛ بلکه در ساییدن آرنج‌ها (Rubbing Elbows) رخ می‌دهد. باید کنار یک حرفه‌ای بنشینی، کد زدنش را ببینی، و ریزه‌کاری‌هایی را یاد بگیری که در هیچ کتابی نوشته نشده است. دانشی که فقط در عمل و هم‌نشینی منتقل می‌شود.

و در نهایت، رشد با تواضع گره خورده است. الگوی جارو کردن زمین درس بزرگی دارد:
تازه‌کار نباید انتظار داشته باشد از روز اول معماری سیستم را دستش بدهند. گاهی باید کارهای کوچک را انجام دهی، تست‌ها را درست کنی، مستندات را مرتب کنی یا باگ‌های خسته‌کننده را بگیری. این کارها بی‌ارزش نیستند؛ این‌ها راهی هستند برای جلب اعتماد تیم و شناخت عمیق سیستم از پایین‌ترین سطح.

این فصل یک هشدار جدی است:
اگر در کارت احساس راحتی می‌کنی، اگر کسی نیست که تو را به چالش بکشد، و اگر فکر می‌کنی همه چیز را بلدی، احتمالاً متوقف شده‌ای.

ارزیابی دقیق خود یعنی شجاعتِ دیدنِ نادانی‌هایت. یعنی بدانی که این مسیر، یک دوی سرعت نیست؛ یک ماراتن طولانی است که در آن، فروتنی سوختِ حرکت توست.

همیشه تیمی را پیدا کن که در آن بتوانی دوباره شاگرد باشی.
👍4🐳1
معیار واقعی کیفیت نرم‌افزار: WTF در ساعت

روش های زیادی برای سنجیدن کیفیت نرمافزار وجود داره — از code coverage تا پیچیدگی و ابزارهای مختلف تحلیل.
اما یک معیار ساده همیشه دقیقتر از بقیه بوده:

WTF/H — «چند بار در ساعت میگی این دیگه چی بود؟»

یعنی چند بار وسط خوندن کد مکث میکنی و با خودت میگی «چی شد؟!»

همین معیار ساده خیلی چیزها درباره‌ی کیفیت کد و فرهنگ تیم مشخص میکنه:

WTF/H پایین:
ساختار مشخص، نام‌گذاری درست، رفتار قابل پیش‌بینی و تست‌های قابل اعتماد.
اینجا میتونی راحت فکر کنی و مشکل حل کنی.

WTF/H متوسط:
کد کار میکنه، اما فهمیدنش زمان میبره.
ترکیبی از تصمیم‌های قدیمی و میان‌برهای که هنوز موندن.

WTF/H بالا:
فانکشن‌های طولانی، منطق نامشخص، تغییرات پرریسک.
هر تغییری میتونه مشکل درست کنه.


در نهایت کیفیت نرم‌افزار فقط به ابزار و استانداردها ربط نداره؛
به این ربط داره که مهندس بعدی چقدر راحت بتونه کد رو بخونه.

هرچه WTF/H کمتر باشه، توسعه سریع‌تر و تیم خوشحال تر.

🔗 LinkedIn
👍31
#استخدام
استخدام برنامه نویس Dotnet (دورکار)

با سلام، وقت بخیر

برای توسعه نیرو های پروژه نیاز به دو همکار Backend داریم که Mid-Level یا Senior باشند.

تسط به موارد زیر اجباری می باشد :

1. Dotnet 9-10
2. T-SQL
3. EFCore 9-10
4. ASP .NET Core Web API
5. AzureDevops (Git)
6. DDD (Domain Driven Design)
7. Onion or Clean Architecture
8. SSMS
9. RabbitMQ یا Kafka

تسط به موارد زیر دارای امتیاز مثبت خواهد بود :
1. تجربه کار پروژه ای با معماری Microservices
2. تجربه کار با APIGateway Ocelot
3. تجربه کار با Docker file
4. تجربه کار با Pipeline های Azuredevops

شرایط شرکت :
· محل کار : دورکار
· شرکت : گروه صنعتی گلرنگ
· پرداخت حقوق : پرداختی حقوق توافق شده سر ماه
· بیمه : تامین اجتماعی و بیمه تکمیلی
· روز های کاری : شنبه تا چهارشنبه

لطفا دوستان عزیز حقوق درخواستی مورد نظر برای سال 1404 رو ذکر کنند در ایمیل، که من به همکاران HR اعلام کنم.

ارسال رزومه :
ali.poustdouzan@gmail.com
LinkedIn
👍31🔥1
فصل پنجم - الگوهای کارآموزی

یادگیری همیشگی

توسعه‌ی نرم‌افزار تولید محصول نیست؛ بلکه فعالیتِ کسبِ دانش است.

نرم‌افزار فقط جایی است که ما دانشی را که به دست آورده‌ایم، ذخیره می‌کنیم.
خیلی‌ها منتظرند تا "شرایط مناسب" از راه برسد تا یادگیری را شروع کنند. وقتی پروژه تمام شد، وقتی سرشان خلوت شد، وقتی استرس کم شد...
اما سی. اس. لوئیس حقیقت تلخی را می‌گوید: شرایط مناسب هرگز نخواهد آمد. تنها کسانی موفق می‌شوند که در میانه‌ی جنگ و آشوب، با ولع به دنبال دانش می‌گردند.

نویسندگان در این فصل، تفاوت حیاتی میان کار کردن و تمرین کردن را روشن می‌کنند.
نوازندگان بزرگ، ساعت‌ها در تنهایی تمرین می‌کنند تا فقط یک ساعت اجرا کنند. اما برنامه‌نویسان چه؟ ما معمولاً تمام روز را در حال اجرا (کدنویسی برای پروژه) هستیم و هیچ وقتی برای تمرین (بدون استرسِ تحویل) نمی‌گذاریم.

برای اینکه در مسیر استادی بمانید، باید این الگوها را زندگی کنید:

۱. تمرین، تمرین، تمرین:
همان‌طور که در هنرهای رزمی کاتا وجود دارد، در برنامه‌نویسی هم باید زمان‌هایی را به حل مسائل تکراری و ساختگی اختصاص دهید. جایی که اشتباه کردن هزینه ندارد. اگر در زمان کار اشتباه کنید، باگ تولید کرده‌اید؛ اما در زمان تمرین، اشتباه یعنی یادگیری.

۲. اسباب‌بازی‌های شکستنی (Breakable Toys):
لینوس توروالدز لینوکس را نساخت چون می‌خواست دنیا را تغییر دهد؛ آن را ساخت چون فقط یک سرگرمی بود.
شما هم باید پروژه‌هایی داشته باشید که فقط مال خودتان باشد. یک ویکی شخصی بسازید، یک بازی بنویسید، یا یک سیستم‌عامل ساده و ناقص طراحی کنید. این‌ها اسباب‌بازی‌هایی هستند که اجازه دارید آن‌ها را بشکنید، خراب کنید و از دلِ خرابی‌هایشان معماری واقعی را یاد بگیرید.

۳. استفاده از کد منبع (Use the Source):
فقط کتاب نخوانید؛ کد بخوانید. بیل گیتس می‌گفت سطل زباله‌های مرکز کامپیوتر را می‌گشت تا کدهای سیستم‌عامل دیگران را پیدا کند و بخواند. کد، داور نهایی است. خواندنِ کدهای متن‌بازِ خوب، به شما یاد می‌دهد که بزرگان این صنعت چگونه فکر می‌کنند.

۴. یادگیری را ثبت کن و به اشتراک بگذار:
وبلاگ بنویس، نه برای اینکه مشهور شوی، بلکه برای اینکه وقتی می‌نویسی، مجبور می‌شوی عمیق‌تر فکر کنی. وقتی یکی درس می‌دهد، دو نفر یاد می‌گیرند.

این فصل یک هشدار بزرگ دارد:
تجربه با تکرار فرق دارد.
بسیاری از برنامه‌نویسان ۱۰ سال تجربه ندارند؛ آن‌ها ۱ سال تجربه دارند که ۱۰ بار تکرار شده است.
یادگیری همیشگی یعنی هر روز به دنبال راهی باشی تا نادانی‌ات را به مهارت تبدیل کنی، حتی اگر این فرآیند دردناک باشد. چون دردِ یادگیری، تنها نشانه‌ی رشد است.
4👍1👏1
برنامه‌نویسی دات‌نت بدون این اصطلاحات، مثل رانندگی بدون ترمز و کلاچه! 🚗
این ۲۰ مفهوم حیاتی دات‌نت به زبان ساده و خودمونی:


🏗 زیرساخت (Engine Room)

۱. CLR:
قلب تپنده دات‌نت! مدیریت اجرا، حافظه و امنیت با ایشونه. بدون CLR کدت اجرا نمیشه.

۲. IL:
کد سی‌شارپ اول به زبان میانی (IL) تبدیل میشه، نه مستقیم به زبان ماشین.

۳. JIT:
مترجم لحظه آخر! موقع اجرا، کد IL رو به زبان ماشین تبدیل می‌کنه تا سرعت بره بالا.

۴. GC:
رفتگر حافظه! اتوماتیک آبجکت‌های بلااستفاده رو از رم پاک می‌کنه.

۵. Roslyn:
کامپایلر مدرن دات‌نت. همزمان با تایپ، کد رو تحلیل می‌کنه (مثل خط قرمزهای ویژوال استودیو).

🌐 وب و ASP .NET Core

۶. Kestrel:
وب‌سرور سبک، سریع و کراس‌پلتفرم که پیش‌فرض ASP .NET Core هست.

۷. Middleware:
ایستگاه بازرسی درخواست‌ها. هر Request از این لایه‌ها (مثل لاگین) رد میشه تا به Response برسه.

۸. DI:
تزریق وابستگی؛ بجای new کردن، آبجکت رو از سیستم می‌گیری. قلب معماری ASP .NET Core.

۹. Razor:
موتور ترکیب سی‌شارپ با HTML برای ساخت صفحات وب پویا (مثل cshtml.).

۱۰. Blazor:
جادوی مایکروسافت! نوشتن فرانت‌اند با سی شارپ (جای React) که توی مرورگر اجرا میشه.

🛠 ابزارها

۱۱. NuGet:
پکیج منیجر دات‌نت. معدن هزاران کتابخونه آماده تا چرخ رو دوباره اختراع نکنی.

۱۲. LINQ:
سینتکس جادویی برای فیلتر و جستجو در لیست‌ها و دیتابیس با کدی تمیز.

۱۳. EF Core:
رابط دیتابیس (ORM). بجای SQL، با کلاس‌های سی شارپ کار می‌کنی؛ تبدیل به کوئری با خودشه.

۱۴. Async/Await:
کلید سرعت! وقتی برنامه منتظر I/O هست، قفل نمیشه و کارهای دیگه رو انجام میده.

۱۵. SDK vs Runtime:
اولی جعبه‌ابزار برای ساخته، دومی موتور اجرا برای سرور مشتری.

🎯 پیشرفته

۱۶. TFM:
شناسه نسخه دات‌نت پروژه. مثلاً net8.0.

۱۷. LTS:
نسخه‌های با پشتیبانی طولانی ۳ سال آپدیت؛ مثل .NET 8.

۱۸. Poco:
کلاس‌های ساده (فقط پراپرتی) بدون وابستگی خاص.

۱۹. Scaffolding:
ساخت اتوماتیک کنترلر و ویو بر اساس مدل‌ها برای افزایش سرعت.

۲۰. Minimal API:
نوشتن API بدون کنترلر و پیچیدگی. فقط کد اصلی و تمام!
👍71🆒1
۲۰ اصطلاح دات‌نت که شما را از سطح جونیور به مید-لول میرساند!
(قسمت دوم)
اگر لیست قبلی الفبا بود، این لیست گرامر دات‌نت حساب میشه. بریم سراغش:

🧠 مفاهیم عمیق‌تر (Deep Dive)
۱. Stack vs Heap:
دو ناحیه حافظه. Stack برای متغیرهای کوچیک و سریعه (مثل int)، Heap برای آبجکت‌های بزرگ و موندگار. تفاوتش رو ندونی، مموری لیک (Memory Leak) در کمینته!

۲. Generics:
جادوی <T>! بهت اجازه میده کدی بنویسی که با هر نوع دادهای کار کنه، بدون اینکه برای هر کدوم جداگانه کد بزنی.

۳. Delegate & Event:
سیستم خبررسانی دات‌نت. Delegate اشاره‌گر به یک متده، و Event یعنی وقتی اتفاقی افتاد (مثل کلیک)، به بقیه خبر بده.

۴. Lambda Expression:
اون فلش معروف =>. روشی مختصر برای نوشتن توابع بینام و جمعوجور توی یک خط.

۵. Reflection:
قابلیت "خودآگاهی" کد! برنامه‌ای که میتونه در زمان اجرا، کلاس‌ها و متدهای خودش رو ببینه و دستکاری کنه (البته با احتیاط مصرف شود!).

🏗️ معماری و الگوها (Architecture)

۶. DTO (Data Transfer Object):
پیک موتوریِ داده‌ها! اشیایی که فقط برای جابجایی داده بین لایه ها ساخته شدن و هیچ منطق یا لاجیکی ندارن.

۷. Repository Pattern:
انباردارِ پروژه. لایه ای که بین کد شما و دیتابیس قرار میگیره تا مستقیم با دیتابیس درگیر نشید.

۸. CQRS:
قانون "تفکیک قوا". یعنی مسیر خوندن اطلاعات (Query) رو از مسیر نوشتن و تغییر اطلاعات (Command) جدا کنی تا سیستم تمیزتر بشه.

۹. Microservices:
شکستن غولِ نرم‌افزار به سرویس‌های کوچیک و مستقل که هر کدوم کار خودشون رو میکنن و با هم حرف میزنن.

۱۰. Solid Principles:
۵ قانون مقدس در طراحی شی گرا که اگر رعایت نکنی، کدت بعد از ۶ ماه غیرقابل نگهداری میشه!

🌐 وب مدرن و ارتباطات
۱۱. SignalR:
کتابخونه ای برای ارتباط Real-time (در لحظه). جون میده برای ساخت چتروم، داشبوردهای زنده و نوتیفیکیشن.

۱۲. gRPC:
جایگزین مدرن و فوق سریع برای REST API. گوگل ساختش و توی دات‌نت برای ارتباط بین میکروسرویس ها عالیه.

۱۳. JWT (JSON Web Token):
کارت ورود دیجیتال. روشی امن و استاندارد برای احراز هویت (Authentication) در APIها.

۱۴. Swagger / OpenAPI:
مستندات زنده! ابزاری که APIهای شما رو اسکن میکنه و یک صفحه شیک میسازه تا بقیه بتونن راحت تستش کنن.

۱۵. CORS:
نگهبان مرورگر. قانونی که تعیین میکنه آیا سایت A اجازه داره به منابع سایت B دسترسی داشته باشه یا نه.

تکنیک‌های حرفه‌ای (Pro Features)

۱۶. Records:
نوع داده جدید (C# 9.0+) که مخصوص نگهداری دادههای ثابته (Immutable). امنتر و خلاصه‌تر از Class معمولی.

۱۷. Span:
مدیریت حافظه بدون کپی کردن! برای کار با متنها و آرایه های بزرگ، سرعت رو فضایی بالا میبره.

۱۸. Extension Methods:
روشی برای چسبوندن متدهای جدید به کلاس های قدیمی (حتی کلاس های خود دات‌نت مثل String) بدون دستکاری اونها.

۱۹. Hot Reload:
قابلیت جذاب ویژوال استودیو که میذاره وقتی برنامه در حال اجراست، کد رو عوض کنی و نتیجه رو همون لحظه ببینی.

۲۰. AOT (Ahead-of-Time):
کامپایل پیش از موعد. برنامه رو مستقیم به کد ماشین تبدیل میکنه تا بدون نیاز به JIT، توی کسری از ثانیه اجرا بشه.

کدوم یکی از اینا اخیراً بیشتر به کارتون اومده؟ 😎
👍42🐳1
فصل ششم - الگوهای کارآموزی

ساخت برنامه درسی خود

ما دیگر برای نمره درس نمی‌خوانیم. ما یاد می‌گیریم چون این تنها راه بقا در این اقیانوس بی‌انتهای تکنولوژی است.

در مدرسه، معلم‌ها به ما می‌گفتند چه بخوانیم و کِی امتحان بدهیم. اما در دنیای واقعی، هیچ سرفصل درسی وجود ندارد. اگر منتظر مانده‌اید کسی به شما بگوید قدم بعدی چیست، در حال درجا زدن هستید. در عصر انفجار اطلاعات، مشکل دسترسی نیست؛ مشکل انتخاب است.

برای اینکه در این سیلاب غرق نشوید، باید برنامه‌ی درسیِ شخصی خود را بسازید:

۱. فهرست کتاب‌ها (The Reading List):
کتاب‌هایی که باید بخوانید همیشه بیشتر از زمان شماست. یک صف اولویت‌دار درست کنید. نکته کلیدی اینجاست: کتاب درست را باید در زمان درست خواند. خواندن Design Patterns وقتی هنوز اصول اولیه را نمی‌دانید، فقط گیج‌تان می‌کند. از مربیان بپرسید: الان چه چیزی برای من حیاتی است؟

۲. دائماً مطالعه کنید (Read Constantly):
تسلط بر زبان اول کافی نیست. دیو هوور (نویسنده کتاب) هر روز ۹۰ دقیقه در قطار مطالعه می‌کرد. شما باید همیشه یک کتاب در دست داشته باشید تا زمان‌های مرده را زنده کنید.

۳. مطالعه کلاسیک‌ها (Study the Classics):
تکنولوژی‌ها می‌آیند و می‌روند، اما اصول می‌مانند. به جای اینکه فقط دنبال جدیدترین فریم‌ورک جاوااسکریپت باشید، کتاب‌های قدیمی و کلاسیک مثل The Pragmatic Programmer یا The Mythical Man-Month را بخوانید. اگر دیدید کتابی متعلق به ۳۰ سال پیش است اما هنوز حرف‌هایش تازه است، بدانید گنج پیدا کرده‌اید.

۴. عمیق‌تر کاوش کنید (Dig Deeper):
سطحی‌نگری آفت برنامه‌نویسان مدرن است. ما یاد می‌گیریم چطور با یک ابزار کار کنیم، اما نمی‌دانیم چرا کار می‌کند.
فرق بین یک کدنویس معمولی و یک مهندس نرم‌افزار در همین عمق است. کسی که RFC پروتکل HTTP را می‌خواند، درکی از وب دارد که کسی که فقط داکیومنت React را خوانده، هرگز نخواهد داشت. به زیرِ پوستِ ابزارها بروید.

۵. ابزارهای آشنا (Familiar Tools):
در میانه‌ی یادگیری چیزهای جدید، باید جعبه‌ابزاری داشته باشید که چشم‌بسته با آن کار کنید. این‌ها ابزارهایی هستند که بهره‌وری شما را تضمین می‌کنند و به شما اعتمادبه‌نفس می‌دهند تا در پروژه‌های پرریسک، روی چیزی محکم بایستید.

جمع‌بندی:
شما دیگر دانش‌آموز نیستید؛ شما معمارِ ذهنِ خودتان هستید.
برنامه درسی خود را بسازید، منابع اصلی را بخوانید، و هرگز اجازه ندهید جریان تند تکنولوژی، شما را به یک مصرف‌کننده‌ی سطحی تبدیل کند.
2🔥1
آیا هوش مصنوعی می‌تواند برنامه‌ریزی بلندمدت بکند؟

#ویدئو_کدنویس
🔗 YouTube
👍2👨‍💻21
یک جعبه‌ ابزار کاربردی برای توسعه‌ دهندگان دات‌ نت

استفاده از کتابخانه‌های استاندارد و تست‌ شده، کارهای تکراری و پیچیده را ساده می‌کند تا تمرکز اصلی روی منطق (Business Logic) برنامه باشد.
این ۱۰ کتابخانه (Nuget Package) از پرکاربردترین و محبوب‌ترین ابزارها در اکوسیستم دات‌نت هستند:

۱. Newtonsoft.Json (Json.NET)
هنوز هم یکی از قدرتمندترین و منعطف‌ترین کتابخانه‌ها برای کار با JSON محسوب می‌شود، حتی با وجود کتابخانه داخلی مایکروسافت.

۲. Serilog
جایگزینی مدرن برای لاگ‌برداری سنتی. این کتابخانه امکان ثبت لاگ‌های "ساختاریافته" (Structured) را فراهم می‌کند که جستجو و تحلیل داده‌ها را بسیار ساده‌تر می‌سازد.

۳. AutoMapper
ابزاری برای حذف کدهای تکراری هنگام تبدیل مدل‌ها به یکدیگر (مانند تبدیل Entity به DTO). با یک بار تنظیم، عملیات مپینگ به صورت خودکار انجام می‌شود.

۴. FluentValidation
جداسازی قوانین اعتبارسنجی از کلاس‌های مدل. این کتابخانه اجازه می‌دهد قوانین را به صورت زنجیره‌ای، خوانا و تمیز تعریف کنید.

۵. Polly
یک کتابخانه حیاتی برای مدیریت خطاها و پایداری سیستم. پیاده‌سازی الگوهایی مثل Retry (تلاش مجدد)، Circuit Breaker و Timeout با این ابزار بسیار ساده است.

۶. Hangfire
راهکاری جامع برای مدیریت کارهای پس‌زمینه (Background Jobs). برای زمان‌بندی کارها و اطمینان از اجرای آن‌ها (حتی در صورت ریست شدن سرور) استفاده می‌شود.

۷. Dapper
یک Micro-ORM فوق‌العاده سریع و سبک. گزینه‌ای عالی برای زمانی که نیاز به پرفورمنس بالا و کنترل مستقیم روی کوئری‌های SQL وجود دارد.

۸. FluentAssertions
مخصوص تست‌نویسی. این کتابخانه کمک می‌کند تا کدهای Unit Test با زبانی بسیار نزدیک به زبان انسان نوشته شوند و خوانایی بالایی داشته باشند.

۹. Swashbuckle (Swagger)
تولید خودکار مستندات API. با اسکن کدها، یک رابط کاربری تعاملی می‌سازد که فرانت‌اندکارها و تسترها می‌توانند از آن استفاده کنند.

۱۰. BenchmarkDotNet
ابزاری دقیق برای اندازه‌گیری عملکرد کد. برای بهینه‌سازی و مقایسه سرعت اجرای الگوریتم‌های مختلف ضروری است.


جای کدام کتابخانه مهم دیگر در این لیست خالی؟
👍41
جعبه‌ابزار توسعه‌دهندگان دات‌نت - قسمت دوم
در قسمت اول ۱۰ کتابخانه پایه را معرفی کردیم. در این لیست به سراغ ابزارهایی می‌رویم که کدهای شما را تمیزتر، معماری را منعطف‌تر و تست‌ها را حرفه‌ای‌تر می‌کنند.

این ۱۰ پکیج (Nuget Package) عصای دست توسعه‌دهندگان حرفه‌ای هستند:

۱. MediatR
قلب تپنده بسیاری از پروژه‌های مدرن (به خصوص Clean Architecture). این کتابخانه پیاده‌سازی الگوی Mediator و CQRS را بسیار ساده می‌کند و باعث کاهش وابستگی بین اجزای سیستم می‌شود.

۲. xUnit
استانداردترین فریم‌ورک برای نوشتن Unit Test در دات‌نت. سبک، مدرن و توسعه‌پذیر است و مایکروسافت هم برای پروژه‌های خودش از آن استفاده می‌کند.

۳. Moq
وقتی تست می‌نویسید، نیاز دارید وابستگی‌ها (مثل دیتابیس) را شبیه‌سازی کنید. Moq محبوب‌ترین ابزار برای ساختن این اشیای مصنوعی (Mock Objects) در تست‌هاست.

۴. Refit
تبدیل اینترفیس‌های C# به HTTP Client! با این کتابخانه دیگر نیازی به نوشتن کدهای تکراری HttpClient ندارید؛ فقط اینترفیس تعریف کنید، Refit بقیه کار را انجام می‌دهد.

۵. MassTransit
اگر سمت میکروسرویس یا رویدادها (Events) می‌روید، این ابزار ضروری است. مدیریت ارتباط با Message Brokerها (مثل RabbitMQ و Kafka) را به شکلی انتزاعی و قدرتمند انجام می‌دهد.

۶. Bogus
داده‌های تستی واقعی نیاز دارید؟ Bogus می‌تواند هزاران رکورد داده جعلی اما منطقی (نام، آدرس، ایمیل و...) برای تست کردن دیتابیس یا UI تولید کند.

۷. StackExchange.Redis
پروژه‌ای نیست که بزرگ شود و به Caching نیاز نداشته باشد. این کتابخانه، کلاینت استاندارد و با پرفورمنس بالا برای کار با Redis در دات‌نت است.

۸. Quartz .NET
یک سیستم زمان‌بندی (Scheduling) بسیار دقیق و قدیمی. اگر نیازهای زمان‌بندی پیچیده‌ای دارید (مثل Cron Jobهای خاص) که فراتر از توانایی Hangfire است، Quartz انتخاب اول است.

۹. OpenTelemetry
استاندارد جدید برای مانیتورینگ و Trace کردن درخواست‌ها در سیستم‌های توزیع شده. به شما نشان می‌دهد یک درخواست دقیقا کجا کند شده یا به خطا خورده است.

۱۰. Humanizer
جزئیات کوچک اما مهم! این کتابخانه داده‌های کامپیوتری را به زبان انسان تبدیل می‌کند. (مثلاً تاریخ 2023-10-01 را به "2 days ago" یا PascalCase را به "Pascal Case" تبدیل می‌کند).
👍5
ترجمه فارسی The Pragmatic Programmer

این کتاب فقط درباره نوشتن کد نیست؛ درباره ساختن ذهنیت یک توسعه‌دهنده حرفه‌ایه

مسئولیت‌پذیری، تصمیم‌گیری بهتر، و نوشتن کدی که هم قابل اعتماد باشه هم قابل نگهداری، حتی وقتی پروژه بزرگ و تیم شلوغ می‌شه.
با گذشت سال‌ها هنوز هم یکی از بهترین منابع رشد شغلیه؛ از جونیور تا سنیور.


https://github.com/hheydarian/the-pragmatic-programmer-parsion
16👍1🔥1👏1
فصل هفتم - الگوهای کارآموزی

نتیجه‌گیری (پایان یا آغاز؟)

آیا استادان نرم‌افزار وجود دارند؟ شاید هنوز نه.
اما اگر می‌خواهیم روزی وجود داشته باشند، باید رازی را که استرادیواری با خود به گور برد، کشف کنیم.

ویولن‌های استرادیواری ۳۰۰ سال است که بی‌رقیب مانده‌اند. چرا؟ چون او نتوانست نبوغ خود را فرموله کند و به شاگردانش یاد دهد. با مرگ او، کارگاهش هم مُرد.

صنعت نرم‌افزار در خطر مشابهی است. ما جیب‌های کوچکی از کیفیت داریم؛ تیم‌های فوق‌العاده‌ای که وقتی از هم می‌پاشند، دانش‌شان هم ناپدید می‌شود.

۱. استادی یعنی انتقال مهارت:
نبوغ شخصی کافی نیست. سِمل‌وایس (پزشکی که فهمید شستن دست‌ها جان مادران را نجات می‌دهد) یک نابغه بود، اما یک نابغه‌ی شکست‌خورده. چون نتوانست دیگران را قانع کند. او دیوانه شد و مُرد، و ۲۰ سال طول کشید تا دنیا حرفش را بفهمد.
استاد نرم‌افزار کسی نیست که کد خارق‌العاده می‌زند؛ کسی است که می‌تواند آن مهارت خارق‌العاده را به دیگران هم یاد بدهد.

۲. خطر توهم مهارت:
بیشتر برنامه‌نویسان فکر می‌کنند بالاتر از میانگین هستند. این اثر "دنینگ-کروگر" است: ما آنقدر نمی‌دانیم که حتی بفهمیم چقدر نمی‌دانیم.
استادی یعنی درک اینکه مقیاس مهارت از ۱ تا ۱۰ نیست؛ از ۱ تا ۱۰۰ است و ما شاید تازه به ۹ رسیده باشیم.

۳. هیچ‌کس خودش را استاد نمی‌نامد:
اگر کسی گفت "من استاد هستم"، به او شک کنید. استادی یک برچسب است که دیگران (آن هم دیگر استادان) باید به تو بدهند.
مدرک واقعی استادی، کیفیت کار شاگردان توست. اگر شاگردانت از تو بهتر شدند، یعنی تو استادی.

۴. هنوز استادان واقعی نداریم:
نویسندگان کتاب صادقانه می‌گویند: ما خودمان هنوز استاد نیستیم. ما مسافریم.
شاید هنوز در تاریخ نرم‌افزار، استادی در تراز میکل‌آنژ یا استرادیواری ظهور نکرده باشد. اما این یک خبر بد نیست؛ این یک دعوت‌نامه است.
شاید نسل بعدی کارآموزان (شما) همان کسانی باشید که می‌گویید:
استادان نرم‌افزار وجود نداشتند... تا اینکه ما آمدیم.

این کتاب تمام شد، اما مسیر The Long Road تازه شروع شده است.
3👍1🔥1
کدنویسی شغل نیست؛ یک مسیر طولانی است

دانشگاه و بوت‌کمپ‌ها به ما سینتکس یاد می‌دهند، اما کسی به ما یاد نمی‌دهد چطور در این اقیانوس بی‌انتها غرق نشویم، چطور رشد کنیم و چطور از یک کدنویس معمولی به یک استاد نرم‌افزار تبدیل شویم.
کتاب Apprenticeship Patterns (الگوهای شاگردی) دقیقاً همان حلقه گمشده است.
این کتاب درباره جاوا یا پایتون نیست؛ درباره تو است. درباره مسیر شغلی‌ات، طرز تفکرت و عادات روزانه‌ای که تفاوت میان یک کارمند خسته و یک مهندس خلاق را رقم می‌زند.
من در هفته‌های گذشته، عصاره‌ی این کتاب ارزشمند را فصل‌ به‌ فصل خلاصه کردم تا راهنمایی باشد برای تمام کسانی که نمی‌خواهند درجا بزنند.
اگر احساس می‌کنید رشدتان متوقف شده، یا اگر تازه اول راه هستید و نقشه راه می‌خواهید، این مجموعه پست‌ها برای شماست.
- دسترسی به خلاصه تمام فصل‌ها

- فصل اول: الگوهای کارآموزی (چرا باید ذهنیت شاگردی داشته باشیم؟)

- فصل دوم: خالی کردن فنجان (چگونه غرور دانایی مانع یادگیری می‌شود؟)

- فصل سوم: پیمودن راه طولانی (چرا نباید عجله کرد و چگونه در مسیر بمانیم؟)

- فصل چهارم: ارزیابی دقیق خود (چرا باید همیشه بدترین عضو تیم باشیم؟)

- فصل پنجم: یادگیری همیشگی (تفاوت کار کردن و تمرین کردن؛ اسباب‌بازی‌های شکستنی)

- فصل ششم: ساخت برنامه درسی خود (چگونه منتظر دیگران نمانیم و مسیر یادگیری خودمان را بسازیم؟)

- فصل هفتم: نتیجه‌گیری (آیا استادان نرم‌افزار وجود دارند؟)
6
۵ اشتباه رایج در نوشتن رزومه که باعث رد شدن در نقش‌های بین‌المللی می‌شود

اگر دنبال شغل با ویزا اسپانسر شیپ هستید، رزومه تان باید یک سطح بالاتر از معمول باشد.

این ۵ خطا، بیشتر از هر چیز، باعث رد شدن رزومه ها میشود:

۱) نوشتن وظایف شغلی به جای نتایج
✔️ کارفرما دنبال اثر است، نه فعالیت.
بهجای:
“Worked on Python APIs”
✔️ بنویس:
“Reduced API latency by 34% through refactoring Python microservices.”

۲) نداشتن مهارت‌های کلیدی همان نقش
سیستم‌های ATS دقیقاً دنبال همان ۵–۸ Skill اصلی هستند.
✔️ مهارت ها باید با Job Denoscription همراستا باشند نه پراکنده.

۳) جمله‌های طولانی، بدون اعداد
اعداد = واقعیت + تاثیر
✔️ “Improved ETL throughput by 45%”
✔️ “Cut cloud cost by 27%”

۴) نبود بخش Tech Stack کاربردی
کارفرما باید در ۵ ثانیه متوجه شود با چه ابزارهایی کار کردهاید.
✔️ “Python, FastAPI, Airflow, AWS, Docker, PostgreSQL, BigQuery”

۵) رزومه ی طولانی بدون ساختار
یک رزومه موفق برای نقشهای بین‌المللی:
دو صفحه
بخش بندی حرفه‌ای
Bullet Points
مثال های عدددار

🔗 LinkedIn
👍7