سیستم Logging در NET.: از اشتباهات رایج تا بهترین روشها
مقدمه
سلام دوستان! اینجا میخوایم در مورد Logging داخل برنامههای NET. صحبت کنیم. نکاتی که نیک چاپساس میگه رو به زبون ساده مرور میکنیم تا بتونید به راحتی سیستمهای خودتون رو بهبود بدید.
اهمیت Logging
سیستم Logging به شما کمک میکنه تا:
- خطاها رو راحتتر پیدا کنید.
- رفتار برنامه رو زیر نظر داشته باشید.
- اطلاعات لازم برای رفع مشکلات رو جمعآوری کنید.
اما اگه درست انجام نشه، ممکنه:
- گزارشها خیلی بزرگ و پیچیده بشن.
- نتونید مشکلات رو به درستی بفهمید.
- عملکرد برنامه تحت تاثیر قرار بگیره.
۸ قانون ساده Logging
قانون ۱: پیام یعنی الگوی پیام
به جای یه رشته ساده، پیام باید الگو باشه. اینجوری پیامها مرتبتر و قابل فهمتر میشن.
قانون ۲: از درونیابی یا الحاق رشته دوری کن
این روشها میتونن باعث کاهش سرعت برنامه بشن و اطلاعات مفید رو از بین ببرن.
قانون ۳: Logging ساختاریافته رو انتخاب کن
با استفاده از الگوهای پیام با پارامترهای مشخص:
- سرعت و کارایی بهتر میگیری.
- دادهها به صورت ساختاریافته ثبت میشن.
- خوانایی گزارشها افزایش پیدا میکنه.
قانون ۴: از جعبهسازی غیرضروری دوری کن
قبل از اینکه هر مقداری رو ارسال کنی، ببین سطح گزارش فعاله یا نه تا از مشکلات عملکردی جلو گیری کنی.
قانون ۵: از Source Generator استفاده کن
این ابزار توی NET. بهت کمک میکنه تا:
- کد بهینه تولید بشه.
- از نوشتن کد اضافی جلوگیری بشه.
- گزارشهای یکنواخت و ساختاریافته داشته باشی.
قانون ۶: پیچیدگیهای غیرضروری رو کنار بگذار
همیشه سعی کن راهحلهای ساده و قابل فهم انتخاب کنی تا همه راحت کار کنن.
قانون ۷: هشدار رو به عنوان سطح پیشفرض انتخاب کن
این کار باعث میشه:
- حجم گزارشها کمتر بشه.
- تمرکز روی موارد مهم حفظ بشه.
(البته برای موارد خاص میتونی گزارشهای اطلاعاتی هم فعال کنی.)
قانون ۸: فقط اطلاعات ضروری رو ثبت کن
تنها اون اطلاعاتی رو ثبت کن که واقعاً برای فهم داستان برنامه نیاز داری. اینجوری گزارشها مرتب و مفید میمونن.
نتیجهگیری
سیستم Logging درست کلید موفقیت توی برنامهنویسه. با رعایت این ۸ قانون ساده، میتونی گزارشهایی داشته باشی که هم کارآمد باشن و هم بهت کمک کنن داستان برنامهات رو بهتر بفهمی. فقط اطلاعات ضروری رو ثبت کن تا همه چیز مرتب و بهینه بمونه.
منابع
- ویدیوی اصلی
- مستندات NET. برای Logging
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
مقدمه
سلام دوستان! اینجا میخوایم در مورد Logging داخل برنامههای NET. صحبت کنیم. نکاتی که نیک چاپساس میگه رو به زبون ساده مرور میکنیم تا بتونید به راحتی سیستمهای خودتون رو بهبود بدید.
اهمیت Logging
سیستم Logging به شما کمک میکنه تا:
- خطاها رو راحتتر پیدا کنید.
- رفتار برنامه رو زیر نظر داشته باشید.
- اطلاعات لازم برای رفع مشکلات رو جمعآوری کنید.
اما اگه درست انجام نشه، ممکنه:
- گزارشها خیلی بزرگ و پیچیده بشن.
- نتونید مشکلات رو به درستی بفهمید.
- عملکرد برنامه تحت تاثیر قرار بگیره.
۸ قانون ساده Logging
قانون ۱: پیام یعنی الگوی پیام
به جای یه رشته ساده، پیام باید الگو باشه. اینجوری پیامها مرتبتر و قابل فهمتر میشن.
قانون ۲: از درونیابی یا الحاق رشته دوری کن
این روشها میتونن باعث کاهش سرعت برنامه بشن و اطلاعات مفید رو از بین ببرن.
قانون ۳: Logging ساختاریافته رو انتخاب کن
با استفاده از الگوهای پیام با پارامترهای مشخص:
- سرعت و کارایی بهتر میگیری.
- دادهها به صورت ساختاریافته ثبت میشن.
- خوانایی گزارشها افزایش پیدا میکنه.
قانون ۴: از جعبهسازی غیرضروری دوری کن
قبل از اینکه هر مقداری رو ارسال کنی، ببین سطح گزارش فعاله یا نه تا از مشکلات عملکردی جلو گیری کنی.
قانون ۵: از Source Generator استفاده کن
این ابزار توی NET. بهت کمک میکنه تا:
- کد بهینه تولید بشه.
- از نوشتن کد اضافی جلوگیری بشه.
- گزارشهای یکنواخت و ساختاریافته داشته باشی.
قانون ۶: پیچیدگیهای غیرضروری رو کنار بگذار
همیشه سعی کن راهحلهای ساده و قابل فهم انتخاب کنی تا همه راحت کار کنن.
قانون ۷: هشدار رو به عنوان سطح پیشفرض انتخاب کن
این کار باعث میشه:
- حجم گزارشها کمتر بشه.
- تمرکز روی موارد مهم حفظ بشه.
(البته برای موارد خاص میتونی گزارشهای اطلاعاتی هم فعال کنی.)
قانون ۸: فقط اطلاعات ضروری رو ثبت کن
تنها اون اطلاعاتی رو ثبت کن که واقعاً برای فهم داستان برنامه نیاز داری. اینجوری گزارشها مرتب و مفید میمونن.
نتیجهگیری
سیستم Logging درست کلید موفقیت توی برنامهنویسه. با رعایت این ۸ قانون ساده، میتونی گزارشهایی داشته باشی که هم کارآمد باشن و هم بهت کمک کنن داستان برنامهات رو بهتر بفهمی. فقط اطلاعات ضروری رو ثبت کن تا همه چیز مرتب و بهینه بمونه.
منابع
- ویدیوی اصلی
- مستندات NET. برای Logging
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
You are doing logging in .NET wrong. Let’s fix it. - Nick Chapsas - NDC London 2024
This talk was recorded at NDC London in London, England. #ndclondon #ndcconferences #developer #softwaredeveloper
Attend the next NDC conference near you:
https://ndcconferences.com
https://ndclondon.com/
Subscribe to our YouTube channel and learn…
Attend the next NDC conference near you:
https://ndcconferences.com
https://ndclondon.com/
Subscribe to our YouTube channel and learn…
👍5🔥1
آینده تستنویسی در .NET؛ وقتی هوش مصنوعی خودش را قضاوت میکند!
اگر در اکوسیستم داتنت فعالیت میکنید، حتماً میدانید که ورود AI به اپلیکیشنها، مدلهای سنتی تستنویسی را به چالش کشیده است. دیگر صرفاً چک کردن یک خروجی ثابت کافی نیست؛ ما با مدلهای زبانی (LLM) سر و کار داریم که پاسخهایشان متغیر است.
مایکروسافت با معرفی کتابخانههای Microsoft.Extensions.AI.Evaluation و ابزارهای جدید در Visual Studio 2026، پازل تستنویسی هوشمند را کامل کرده است.
💡 نکات کلیدی ویدیو (AI-Powered Testing in VS):
در ویدیوی جدید کانال داتنت، مککنا بارلو (PM تیم ابزارهای داتنت) نکات بسیار مهمی را مطرح کرد:
1️⃣ تستنویسی خودکار با Copilot: حالا GitHub Copilot میتواند برای کل Solution شما بهصورت یکجا Unit Testهای باکیفیت بنویسد. این یعنی دیگر لازم نیست ساعتها وقت صرف نوشتن کدهای تکراری تست کنید.
2️⃣ ترکیب Code Coverage و AI: ابزار Code Coverage در ویژوال استودیو حالا هوشمندتر شده؛ نقاطی از کد که تست نشدهاند را شناسایی کرده و مستقیماً به Copilot پیشنهاد میدهد تا برای همان بخشهای پرریسک، تست تولید کند.
3️⃣ گزارشهای بصری (AI Eval Reporting): با ابزار جدید dotnet aieval میتوانید گزارشهای گرافیکی دقیقی در مرورگر ببینید که نشان میدهد مدل هوش مصنوعی شما در چه بخشهایی (مثلاً در Groundedness یا صحت اطلاعات) ضعف داشته است.
4️⃣ فراتر از Black Box: هدف این ابزارها این است که خروجی AI دیگر یک "جعبه سیاه" نباشد. شما میتوانید دقیقاً بفهمید چرا یک مدل امتیاز پایینی گرفته و با چه منطقی پاسخ داده است.
🛠 کتابخانه Microsoft.Extensions.AI.Evaluation شامل چیست؟
این پکیجها فرآیند ارزیابی را به چهار لایه تقسیم میکنند:
✅ ارزیابی کیفی (Quality): سنجش میزان مرتبط بودن (Relevance) و انسجام (Coherence) پاسخها.
✅ ارزیابی ایمنی (Safety): شناسایی خودکار محتوای سمی، نفرتپراکنی یا کدهای مخرب تولید شده توسط AI.
✅ ارزیابی مستند بودن (Groundedness): حیاتیترین بخش برای جلوگیری از توهم (Hallucination)؛ چک میکند که آیا AI بر اساس دیتای واقعی شما حرف میزند یا از خودش داستان میسازد!
✅ ارزیابی کلاسیک (NLP): استفاده از معیارهای BLEU و F1 برای سنجش شباهت متنی با پاسخهای مرجع.
چرا این موضوع مهم است؟
در دنیای واقعی، ما نمیتوانیم به خروجی مدلهای هوش مصنوعی اعتماد صددرصدی داشته باشیم. این کتابخانهها به ما "اعتماد سیستماتیک" میدهند. یعنی قبل از اینکه کاربر نهایی با یک پاسخ اشتباه روبرو شود، سیستم تست شما آن را شکار میکند.
📌 ویژگی طلایی: تمام این فرآیندها دارای سیستم Caching هستند؛ یعنی اگر یک تست را دوباره اجرا کنید و ورودی تغییری نکرده باشد، هزینهای برای API پرداخت نمیکنید و نتیجه بلافاصله نمایش داده میشود.
📺 مشاهده ویدیو کامل در یوتیوب:
🔗 https://youtu.be/Bkn78klGhtc?si=c5dBLw1y7ituLTFH
📖 مطالعه مستندات رسمی:
🔗 https://learn.microsoft.com/en-us/dotnet/ai/evaluation/libraries
#dotnet #csharp #VisualStudio2026 #AI #Testing #GitHubCopilot #Programming #SoftwareEngineering #هوش_مصنوعی #برنامه_نویسی
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
اگر در اکوسیستم داتنت فعالیت میکنید، حتماً میدانید که ورود AI به اپلیکیشنها، مدلهای سنتی تستنویسی را به چالش کشیده است. دیگر صرفاً چک کردن یک خروجی ثابت کافی نیست؛ ما با مدلهای زبانی (LLM) سر و کار داریم که پاسخهایشان متغیر است.
مایکروسافت با معرفی کتابخانههای Microsoft.Extensions.AI.Evaluation و ابزارهای جدید در Visual Studio 2026، پازل تستنویسی هوشمند را کامل کرده است.
💡 نکات کلیدی ویدیو (AI-Powered Testing in VS):
در ویدیوی جدید کانال داتنت، مککنا بارلو (PM تیم ابزارهای داتنت) نکات بسیار مهمی را مطرح کرد:
1️⃣ تستنویسی خودکار با Copilot: حالا GitHub Copilot میتواند برای کل Solution شما بهصورت یکجا Unit Testهای باکیفیت بنویسد. این یعنی دیگر لازم نیست ساعتها وقت صرف نوشتن کدهای تکراری تست کنید.
2️⃣ ترکیب Code Coverage و AI: ابزار Code Coverage در ویژوال استودیو حالا هوشمندتر شده؛ نقاطی از کد که تست نشدهاند را شناسایی کرده و مستقیماً به Copilot پیشنهاد میدهد تا برای همان بخشهای پرریسک، تست تولید کند.
3️⃣ گزارشهای بصری (AI Eval Reporting): با ابزار جدید dotnet aieval میتوانید گزارشهای گرافیکی دقیقی در مرورگر ببینید که نشان میدهد مدل هوش مصنوعی شما در چه بخشهایی (مثلاً در Groundedness یا صحت اطلاعات) ضعف داشته است.
4️⃣ فراتر از Black Box: هدف این ابزارها این است که خروجی AI دیگر یک "جعبه سیاه" نباشد. شما میتوانید دقیقاً بفهمید چرا یک مدل امتیاز پایینی گرفته و با چه منطقی پاسخ داده است.
🛠 کتابخانه Microsoft.Extensions.AI.Evaluation شامل چیست؟
این پکیجها فرآیند ارزیابی را به چهار لایه تقسیم میکنند:
✅ ارزیابی کیفی (Quality): سنجش میزان مرتبط بودن (Relevance) و انسجام (Coherence) پاسخها.
✅ ارزیابی ایمنی (Safety): شناسایی خودکار محتوای سمی، نفرتپراکنی یا کدهای مخرب تولید شده توسط AI.
✅ ارزیابی مستند بودن (Groundedness): حیاتیترین بخش برای جلوگیری از توهم (Hallucination)؛ چک میکند که آیا AI بر اساس دیتای واقعی شما حرف میزند یا از خودش داستان میسازد!
✅ ارزیابی کلاسیک (NLP): استفاده از معیارهای BLEU و F1 برای سنجش شباهت متنی با پاسخهای مرجع.
چرا این موضوع مهم است؟
در دنیای واقعی، ما نمیتوانیم به خروجی مدلهای هوش مصنوعی اعتماد صددرصدی داشته باشیم. این کتابخانهها به ما "اعتماد سیستماتیک" میدهند. یعنی قبل از اینکه کاربر نهایی با یک پاسخ اشتباه روبرو شود، سیستم تست شما آن را شکار میکند.
📌 ویژگی طلایی: تمام این فرآیندها دارای سیستم Caching هستند؛ یعنی اگر یک تست را دوباره اجرا کنید و ورودی تغییری نکرده باشد، هزینهای برای API پرداخت نمیکنید و نتیجه بلافاصله نمایش داده میشود.
📺 مشاهده ویدیو کامل در یوتیوب:
🔗 https://youtu.be/Bkn78klGhtc?si=c5dBLw1y7ituLTFH
📖 مطالعه مستندات رسمی:
🔗 https://learn.microsoft.com/en-us/dotnet/ai/evaluation/libraries
#dotnet #csharp #VisualStudio2026 #AI #Testing #GitHubCopilot #Programming #SoftwareEngineering #هوش_مصنوعی #برنامه_نویسی
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
AI-Powered Testing in Visual Studio
Artificial intelligence is transforming how we approach testing and quality assurance. This session explores new AI-powered testing capabilities in Visual Studio that help you write better tests, identify edge cases, generate test data, and improve test coverage.…
❤6👏4🔥1
update-docker-images.ps1
6 KB
🐳 با یک کلیک، داکر خود را نونوار کنید!
آپدیت نگه داشتن ایمیجها همیشه دردسر بوده؛ یا یادت میرود، یا محیط ترمینال هنگام دانلود خیلی خشک و بیروح است. اما این اسکریپت PowerShell که براتون آماده کردم، ماجرا را کلاً عوض میکند.
💎 قابلیتهای جذاب این اسکریپت:
* تشخیص هوشمند: فقط ایمیجهای معتبر را لیست میکند و موارد اضافی (
* داشبورد زنده (Live UI): وضعیت CPU و سرعت دیسک شما را حین آپدیت نشان میدهد.
* محاسبه دقیق: زمان باقیمانده (ETA) و سرعت دانلود هر ایمیج را به شما میگوید.
* گزارش نهایی شیک: در پایان کار، یک جدول تمیز از ایمیجهای آپدیت شده، حجم مصرفی و زمان صرف شده به شما تحویل میدهد.
---
### 🛠 چطور از آن استفاده کنیم؟
۱. متن اسکریپت را کپی و در یک فایل با نام
۲. ترمینال (PowerShell) را باز کنید.
۳. دستور زیر را اجرا کنید:
خداحافظ ایمیجهای قدیمی، سلام به سرعت و امنیت! ⚡️
---
#Docker #DevOps #PowerShell #Automation #Programming #داکر #برنامه_نویسی #دوآپس #اتوماسیون
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
آپدیت نگه داشتن ایمیجها همیشه دردسر بوده؛ یا یادت میرود، یا محیط ترمینال هنگام دانلود خیلی خشک و بیروح است. اما این اسکریپت PowerShell که براتون آماده کردم، ماجرا را کلاً عوض میکند.
💎 قابلیتهای جذاب این اسکریپت:
* تشخیص هوشمند: فقط ایمیجهای معتبر را لیست میکند و موارد اضافی (
<none>) را نادیده میگیرد.* داشبورد زنده (Live UI): وضعیت CPU و سرعت دیسک شما را حین آپدیت نشان میدهد.
* محاسبه دقیق: زمان باقیمانده (ETA) و سرعت دانلود هر ایمیج را به شما میگوید.
* گزارش نهایی شیک: در پایان کار، یک جدول تمیز از ایمیجهای آپدیت شده، حجم مصرفی و زمان صرف شده به شما تحویل میدهد.
---
### 🛠 چطور از آن استفاده کنیم؟
۱. متن اسکریپت را کپی و در یک فایل با نام
update-docker.ps1 ذخیره کنید.۲. ترمینال (PowerShell) را باز کنید.
۳. دستور زیر را اجرا کنید:
.\update-docker.ps1خداحافظ ایمیجهای قدیمی، سلام به سرعت و امنیت! ⚡️
---
#Docker #DevOps #PowerShell #Automation #Programming #داکر #برنامه_نویسی #دوآپس #اتوماسیون
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥3👍1👏1
🛠 نجات توسعهدهندهها در شرایط «نت ملی»؛ تجربیات عملی ما برای زنده نگه داشتن چرخه تولید
توی این چند وقت که دسترسیها محدود شد و اینترنت به حالت داخلی (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
توی این چند وقت که دسترسیها محدود شد و اینترنت به حالت داخلی (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
💡 هدفم از این پست فقط انتقال تجربه و کمک به کامیونیتی بود. امیدوارم به کارتون بیاد. هر جا سوالی بود یا کمکی از دستم برمیومد، حتماً بگید.
📚💻 @dotnetcode
#DevOps #DotNet #Network #Programming #Intranet #ExperienceSharing #SoftwareEngineering
Please open Telegram to view this post
VIEW IN TELEGRAM
رانفلر | سکوی ابری - سرویس ابری - هاست ابری
Runflare Mirror - رانفلر | سکوی ابری - سرویس ابری - هاست ابری
Runflare Mirror در رانفلر برخی از مخزن ها و کتابخانه های مورد نیاز برنامه نویسان را به صورت mirror آماده ساخته ایم تا مشکل اختلال های اینترنت و محدودیت های زیر ساخت کشور در ارتباط با اینترنت بین الملل برای کاربران ما برطرف شود. از این لحظه شما می توانید با…
❤9👍4👏4
🚨 تغییر مهم در MassTransit: لایسنس تجاری از نسخه ۹.۰.۰
اگر در پروژههای داتنتی از کتابخانه MassTransit استفاده میکنید، مراقب آپدیتهای جدید باشید. از نسخه 9.0.0 به بعد، این کتابخانه مدل لایسنس خود را به Commercial تغییر داده است.
خلاصه وضعیت جدید:
🔹 نسخههای ۸ و قدیمیتر: همچنان رایگان و Open Source (Apache 2.0) باقی میمانند.
🔹 نسخه ۹ و بالاتر: برای شرکتهایی با درآمد بالای ۱ میلیون دلار در سال پولی است.
🔹 استارتاپها و توسعهدهندگان مستقل: اگر درآمد سالانه زیر ۱ میلیون دلار باشد، همچنان میتوانید با تخفیف ۱۰۰ درصدی (رایگان) استفاده کنید.
---
🛠 راهکار فنی: جلوگیری از آپدیت خودکار به نسخه پولی
برای اینکه ابزارهایی مثل NuGet یا Dependabot به صورت خودکار پروژه شما را به نسخه ۹ (پولی) ارتقا ندهند، باید ورژن را در فایل
چرا این کار مهم است؟
* نوشتن
* اما
اگر پروژهی بزرگی دارید که فعلاً بودجه خرید لایسنس ندارد، حتماً این تغییر را در پکیجهای خود اعمال کنید.
🎺 برای یادگیری بیشتر و دریافت مطالب مفید در زمینه .NET و برنامهنویسی، به کانال ما بپیوندید!
📚💻 @dotnetcode🖥 👨💻
#DotNet #MassTransit #CSharp #Programming_Tips #Microservices
اگر در پروژههای داتنتی از کتابخانه 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]" یعنی فقط و فقط همین نسخه نصب شود و جلوی ارتقای ناخواسته به نسخه پولی را میگیرد.اگر پروژهی بزرگی دارید که فعلاً بودجه خرید لایسنس ندارد، حتماً این تغییر را در پکیجهای خود اعمال کنید.
📚💻 @dotnetcode
#DotNet #MassTransit #CSharp #Programming_Tips #Microservices
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👏3👍2🔥1
گیتهاب (GitHub) در یک حرکت بزرگ برای رقابت با ابزارهایی مثل Cursor، رسماً اعلام کرد که ایجنتهای هوش مصنوعی Claude (از شرکت Anthropic) و Codex را مستقیماً به پلتفرم خود اضافه کرده است.
تا پیش از این، کوپایلت (Copilot) بیشتر متکی به مدلهای GPT بود، اما حالا توسعهدهندگان میتوانند از قدرت مدلهای Claude 3.7 Sonnet و OpenAI Codex به عنوان «ایجنت» استفاده کنند.
این یعنی هوش مصنوعی دیگر فقط "پیشنهاد" نمیدهد، بلکه میتواند:
🔹 فایلها را ویرایش کند
🔹 دستورات ترمینال را اجرا کند
🔹 باگها را به صورت خودکار رفع نماید
این تغییر نشان میدهد که گیتهاب نمیخواهد میدان را به IDEهای مبتنی بر هوش مصنوعی (مثل Cursor یا Windsurf) ببازد و قصد دارد همه چیز را در خانه خود نگه دارد.
https://youtu.be/GuTQDXKwdJQ?si=znwN0dljFmrEF615
#GitHub #AI #Claude #Copilot #Programming #TechNews
#گیت_هاب #هوش_مصنوعی #برنامه_نویسی #تکنولوژی #خبر
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👏2❤1🔥1
گیتهاب با معرفی GitHub Copilot SDK، بازی رو کلاً عوض کرد. حالا دیگه کوپایلت فقط یک افزونه تکمیل کد نیست؛ بلکه میتونید مغز متفکر اون رو بردارید و مستقیم توی اپلیکیشنهای خودتون بذارید!
این یعنی چی؟ یعنی شما میتونید ابزارها و Agentهایی بسازید که دقیقاً با نیازهای شما و تیمتون هماهنگ باشن.
چرا این SDK یه انقلابه؟ 👇
✅ هوش مصنوعی اختصاصی: اپلیکیشنهایی بسازید که به دیتای شما (مثل ریپوزیتوریها یا لاگها) دسترسی دارن و بر اساس اونها تصمیم میگیرن.
✅ جریانهای کاری ایجنتیک (Agentic Workflows): امکان ساخت ایجنتهایی که میتونن چندین مرحله رو طی کنن، ابزارهای مختلف رو صدا بزنن (Tool Calling) و کار رو تموم کنن.
✅ یک مثال واقعی: توی دمو، اپلیکیشنی به اسم "Flight School" ساخته شده که پروفایل گیتهاب شما رو تحلیل میکنه و دقیقاً بر اساس مهارتها و پروژههاتون، بهتون تمرین کدنویسی میده و حتی جوابهاتون رو صحیح میکنه!
✅ فراتر از چت: دیگه فقط با متن سر و کار ندارید؛ میتونید با دسکتاپ تعامل کنید، فایل بسازید یا کارهای پیچیده رو خودکار انجام بدید.
همین الان ویدیو رو ببین و اولین ایده ساخت ایجنتت رو استارت بزن! 👨💻👩💻
https://youtu.be/ct_Ymw9RexM?si=SQgan8rBElWHns-g
#GitHubCopilot #AI #DevTools #Programming #ArtificialIntelligence
📚💻 @dotnetcode
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
GitHub Copilot SDK demo: Creating "Flight School"
Chris Reddington demonstrates "Flight School," a custom Next.js application built to personalize his learning journey using the GitHub Copilot SDK. See how he leverages agentic workflows to generate daily coding challenges based on his GitHub profile, evaluate…
❤7🔥3👍1👏1