Mahi in Tech – Telegram
Mahi in Tech
402 subscribers
198 photos
17 videos
8 files
255 links
Download Telegram
من که یادم رفت تبریک بگم 🍉 ولی این‌جا بمونه به یادگار.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰10
Forwarded from Software Philosophy
بازنویسی تاریخی در دنیای دات‌نت با 9 NET.!

تیم NuGet در مایکروسافت موفق شد الگوریتم Restore را در نسخه 9 NET. به‌طور کامل بازنویسی کند؛ نتیجه؟ افزایش سرعت تا ۱۶ برابر!

📉 زمان Restore برای پروژه‌های بزرگ از ۳۲ دقیقه به فقط ۲ دقیقه رسید!

چرا این اتفاق افتاد؟
- الگوریتم قبلی بیش از ۱۰ سال بدون تغییر باقی مانده بود.
- پروژه‌های بزرگ مثل TeamX با کندی شدید مواجه شده بودند.
- ساختار بازگشتی و حافظه‌بر باعث دیباگ سخت و مصرف منابع بالا شده بود.

چه تغییراتی اعمال شد؟
- حذف ساخت گراف کامل و جایگزینی با ساختار تخت و تصمیم‌گیری لحظه‌ای.
- بهینه‌سازی حافظه، کاهش تعداد تکرارها و حذف نودهای تکراری.
- اضافه شدن ویژگی‌هایی مثل transitive pinning و مدیریت بهتر خطاها.

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

🔗 توضیحات کامل را در این لینک ببینید.

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

#حامد_حاجیلو (لینکدین)

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

______
🤩2👍1
دست از سر using (new HttpClient) بردارید 😁
توی دنیای دات‌نت، همیشه به ما یاد دادن که هر کلاسی که IDisposable رو پیاده‌سازی کرده، باید توی بلاک using استفاده بشه تا منابع‌ش بعد از انجام کار بلافاصله آزاد شه.
اما درمورد HttpClient یه استثنای بزرگ هست که خیلی از افراد هنوز درگیرش می‌شن.

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

using (var client = new HttpClient())
{
    var response = await client.GetAsync("https://api.example.com");
}


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

حالا چرا این اتفاق می‌افته؟
وقتی شما اینستنس کلاینت رو Dispose می‌کنید، آبجکت توی کد از بین میره، اما سیستم عامل پورت شبکه (Socket) متصل به اون رو تا چند دقیقه (به‌خاطر وضعیت TIME_WAIT در پروتکل TCP) باز نگه می‌داره.
اگر ترافیک بالا باشه، تمام پورت‌های سرور اشغال می‌شن و سیستم عامل دیگه پورتی نداره که به درخواست‌های جدید اختصاص بده (Socket Exhaustion).

یکی از راه حل‌ها: استفاده از IHttpClientFactory
مایکروسافت از نسخه‌ی ۲.۱ دات‌نت core به بعد، یک راهکار استاندارد و تمیز براش ارائه کرد. به جای ساختن نمونه‌های جدید، باید مدیریت طول عمر HttpClient رو به فکتوری خودش بسپرید.

⚙️ پیاده‌سازی:
۱. اول توی فایل Program.cs سرویس‌اش رو رجیستر کنید:
builder.Services.AddHttpClient();
۲. حالا توی سرویس یا کنترلر خودتون، IHttpClientFactory رو اینجکت کنید:
public class MyService
{
    private readonly IHttpClientFactory _clientFactory;

    public MyService(IHttpClientFactory clientFactory)
    {
        _clientFactory = clientFactory;
    }

    public async Task GetData()
    {
        var client = _clientFactory.CreateClient();
        var response = await client.GetAsync("...");
    }
}


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

- پرفورمنس بالاتر: سربار ساختن مداوم کلاینت حذف می‌شه.

- مدیریت DNS: مشکل معروفِ "کش شدن DNS در HttpClientهای استاتیک" رو هم هندل می‌کنه.

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

Use IHttpClientFactory to implement resilient HTTP requests
Please open Telegram to view this post
VIEW IN TELEGRAM
71
خطر حمله‌ی قلبی برای بچه‌های دات‌نت دولوپر.
😁442
Forwarded from NetBlocks
⚠️ Confirmed: Live metrics show #Iran is now in the midst of a nationwide internet blackout; the incident follows a series of escalating digital censorship measures targeting protests across the country and hinders the public's right to communicate at a critical moment 📉
💔1
This media is not supported in your browser
VIEW IN TELEGRAM
👍1
درود و امید که خوب باشید.

یک‌سری منابع قرار می‌دم که شاید توی این وضعیت‌‌ای که امیدوارم هرچه زودتر به خوبی تموم شه، به‌دردتون بخوره.

دی‌ان‌اس داخلی:
5.202.100.100
5.202.100.101

رجیستری داکر:
hub.hamdocker.ir
docker.mobinhost.com
docker.arvancloud.ir

میرور NPM, PyPi و NuGet:
runflare.com/mirrors

میرور Ubuntu:
mirror.digitalvps.ir/ubuntu
ubuntu.pishgaman.net/ubuntu
ubuntu.pars.host
mirror.arvancloud.ir/ubuntu

داکیومنت یه‌سری از تکنولوژی‌ها و ویکی‌پدیای کامپیوتر:
193.151.130.199

DNSTT Resolver:
8.8.8.8:53
77.88.8.8:53
77.88.8.1:53
2.188.21.130:53
2.189.1.1:53
👍7
Mahi in Tech
درود و امید که خوب باشید. یک‌سری منابع قرار می‌دم که شاید توی این وضعیت‌‌ای که امیدوارم هرچه زودتر به خوبی تموم شه، به‌دردتون بخوره. دی‌ان‌اس داخلی: 5.202.100.100 5.202.100.101 رجیستری داکر: hub.hamdocker.ir docker.mobinhost.com docker.arvancloud.ir …
اگر هم قصد داشتید که یک پیام‌رسان سلف‌هاست بالا بیارید (چیزی که توی این خاموشی ارتباطات به کار میاد) و حوصله‌ی سر و کله زدن با این‌ها و قطعی اینترنت رو برای بالا آوردن mattermost یا rocketchat و یا هرچی نداشتین، می‌تونید از سرویس hamravesh.com استفاده کنید و روش RocketChat خودتون رو بدون دردسر راه‌اندازی کنین، E2EE هم می‌شه روش فعال کرد تا خیال‌تون کمی راحت‌تر باشه.

درغیر این‌صورت ایمیج‌هاشون توی همین رجیستری‌ها موجود هستن، می‌تونید خودتون بالا بیارید.
👍4
عزیزان ایران، اگر وصل شدین یادتون نره این تنظیم رو..
💯2
Mahi in Tech
runflare.com/mirrors
برای دوستان دات‌نت دولوپر،‌
به‌نظر میاد این سرویس رجیستری NuGet هم اضافه کرده، می‌تونید استفاده کنید:
https://mirror-nuget.runflare.com/
👍4
حواستون باشه توی این وضعیت بدون داشتن سشن فعال از اکانت تلگرام‌تون خارج نشید. به‌هیچ وجه کد OTP تلگرام ارسال یا دریافت نمی‌شه بر بستر پیامک.
😭3
این‌ها خیال می‌کنند با کندنِ شکوفه، بهار نمی‌آید.
🕊4
اپ SlipNet یک کلاینت متن‌باز و رایگان برای اندروید هست، که با بهره‌گیری از تونل‌سازی DNS-over-QUIC و موتور Slipstream، امکان انتقال امن و کم‌تاخیر درخواست‌های DNS رو فراهم می‌کنه.
یکی از قابلیت‌های مهم این برنامه اسکن و شناسایی خودکار سرورهای DNS سازگار هست، تا کاربر بدون تنظیمات پیچیده، بهترین گزینه‌های موجود رو پیدا و تست کنه. همچنین امکان ساخت و مدیریت چندین پروفایل مختلف برای سرورها وجود داره، که جابجایی بین تنظیمات مختلف رو ساده و سریع می‌کنه.

👉 github.com/anonvector/SlipNet/releases/latest

🔍 ircf.space
@ircfspace