درود و امید که خوب باشید.
یکسری منابع قرار میدم که شاید توی این وضعیتای که امیدوارم هرچه زودتر به خوبی تموم شه، بهدردتون بخوره.
دیاناس داخلی:
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
یکسری منابع قرار میدم که شاید توی این وضعیتای که امیدوارم هرچه زودتر به خوبی تموم شه، بهدردتون بخوره.
دیاناس داخلی:
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
Mahi in Tech
runflare.com/mirrors
برای دوستان داتنت دولوپر،
بهنظر میاد این سرویس رجیستری NuGet هم اضافه کرده، میتونید استفاده کنید:
https://mirror-nuget.runflare.com/
بهنظر میاد این سرویس رجیستری NuGet هم اضافه کرده، میتونید استفاده کنید:
https://mirror-nuget.runflare.com/
👍4
حواستون باشه توی این وضعیت بدون داشتن سشن فعال از اکانت تلگرامتون خارج نشید. بههیچ وجه کد OTP تلگرام ارسال یا دریافت نمیشه بر بستر پیامک.
😭3
Forwarded from IRCF | اینترنت آزاد برای همه
اپ SlipNet یک کلاینت متنباز و رایگان برای اندروید هست، که با بهرهگیری از تونلسازی DNS-over-QUIC و موتور Slipstream، امکان انتقال امن و کمتاخیر درخواستهای DNS رو فراهم میکنه.
یکی از قابلیتهای مهم این برنامه اسکن و شناسایی خودکار سرورهای DNS سازگار هست، تا کاربر بدون تنظیمات پیچیده، بهترین گزینههای موجود رو پیدا و تست کنه. همچنین امکان ساخت و مدیریت چندین پروفایل مختلف برای سرورها وجود داره، که جابجایی بین تنظیمات مختلف رو ساده و سریع میکنه.
👉 github.com/anonvector/SlipNet/releases/latest
🔍 ircf.space
@ircfspace
یکی از قابلیتهای مهم این برنامه اسکن و شناسایی خودکار سرورهای DNS سازگار هست، تا کاربر بدون تنظیمات پیچیده، بهترین گزینههای موجود رو پیدا و تست کنه. همچنین امکان ساخت و مدیریت چندین پروفایل مختلف برای سرورها وجود داره، که جابجایی بین تنظیمات مختلف رو ساده و سریع میکنه.
👉 github.com/anonvector/SlipNet/releases/latest
🔍 ircf.space
@ircfspace
▪️ حقیقتا توانی برای فعالیتهای غیرضروری نبوده و نیست، اما خب چه میشه کرد؟ مجبوریم با همون شیب ملایمی که همیشه تلاش میکردیم پیش بریم. با همهی اتفاقات وحشتناکی که افتاده حس کردم که سکوت کردن، تنها راه برای پردازش این همه درد و اندوه بوده.
👍5❤🔥3
👀 Pipeline Pattern در CSharp، وقتی متد Handleت پر از if-else و مسئولیتهای مختلف میشه.
سناریوی واقعی:
داری یک عملیات ثبت سفارش مینویسی. باید اعتبارسنجی کنی، موجودی چک کنی، تخفیف حساب کنی، توی دیتابیس ذخیره کنی، نوتیفیکیشن بفرستی و لاگ بگیری.
اگر همه این کارها رو توی یه متد طولانی بنویسی، بعد از چند ماه دیگه هیچکس جرأت تغییرش رو نداره. تستش هم که دیگه کابوسه.
☑️ راهحل ساده: Pipeline Pattern
هر مرحله رو یه کلاس مستقل میکنیم. یک Context داریم که هم Request و هم Result رو داخلش نگه میداره و با پراپرتی HasError جریان رو کنترل میکنه. Stateهای مشترک رو هم میتونیم توی همین Context نگه داریم.
⚙️ پیادهسازی و استفادهش رو هم توی تصاویر بالا گذاشتم.
هر مرحله اطلاعات مورد نیازش رو از Context میخونه، Result رو پر یا بهروزرسانی میکنه و در صورت نیاز HasError رو true میکنه. اگر جایی HasError صحیح بشه، باقی مراحل اجرا نمیشن.
مزایای این روش:
- هر کلاس فقط یک کار مشخص انجام میده
- اضافه کردن مرحلهی جدید فقط یه کلاس جدید + یه AddStep
- تست هر مرحله بهصورت جداگانه راحتتره
- کد بیزینس اصلی تمیز میمونه
البته که این فقط یک پیادهسازی ساده بود و بهروشهای مختلفی میشه این پترن رو اجرایی کرد.
سناریوی واقعی:
داری یک عملیات ثبت سفارش مینویسی. باید اعتبارسنجی کنی، موجودی چک کنی، تخفیف حساب کنی، توی دیتابیس ذخیره کنی، نوتیفیکیشن بفرستی و لاگ بگیری.
اگر همه این کارها رو توی یه متد طولانی بنویسی، بعد از چند ماه دیگه هیچکس جرأت تغییرش رو نداره. تستش هم که دیگه کابوسه.
☑️ راهحل ساده: Pipeline Pattern
هر مرحله رو یه کلاس مستقل میکنیم. یک Context داریم که هم Request و هم Result رو داخلش نگه میداره و با پراپرتی HasError جریان رو کنترل میکنه. Stateهای مشترک رو هم میتونیم توی همین Context نگه داریم.
هر مرحله اطلاعات مورد نیازش رو از Context میخونه، Result رو پر یا بهروزرسانی میکنه و در صورت نیاز HasError رو true میکنه. اگر جایی HasError صحیح بشه، باقی مراحل اجرا نمیشن.
مزایای این روش:
- هر کلاس فقط یک کار مشخص انجام میده
- اضافه کردن مرحلهی جدید فقط یه کلاس جدید + یه AddStep
- تست هر مرحله بهصورت جداگانه راحتتره
- کد بیزینس اصلی تمیز میمونه
البته که این فقط یک پیادهسازی ساده بود و بهروشهای مختلفی میشه این پترن رو اجرایی کرد.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1 5👍2 2
Mahi in Tech
https://youtu.be/8Gl2RmUV0hg?si=CrSOJG1MsDdhRGZg
توی NET 11. قرار هست یکی از بزرگترین تغییرات زیرساختی از زمان معرفی Async/Await رو ببینیم. تا الان وقتی از async استفاده میکردیم، کامپایلر پشت صحنه کلی State Machine میساخت که هم حجم رو بالا میبرد و هم دیباگ کردن رو به خاطر Stack Traceهای شلوغ، سخت میکرد. اما حالا مایکروسافت این وظیفه رو از دوش کامپایلر برداشته و مدیریت اون رو مستقیم به Runtime سپرده.
نتیجهاش چیه؟ طبق بنچمارکها، تخصیص حافظه حدود ۵۰٪ کمتر شده و سرعت اجرای کدها هم بالاتر رفته. جذابترین بخشش برای ما توسعهدهندهها این هست که موقع بروز Exception، دیگه با اون لیستهای طولانی و نامفهوم State Machine روبرو نمیشیم و دقیقاً همون خطی که خطا داده رو توی خروجی میبینیم؛ یعنی دیباگ کردن کدهای async به راحتی کدهای معمولی شده.
این قابلیت فعلاً در نسخههای Preview ارائه شده و برای تست کردنش باید توی فایل csproj پروژهتون، فیچر RuntimeAsync رو به صورت دستی فعال کنید.
نتیجهاش چیه؟ طبق بنچمارکها، تخصیص حافظه حدود ۵۰٪ کمتر شده و سرعت اجرای کدها هم بالاتر رفته. جذابترین بخشش برای ما توسعهدهندهها این هست که موقع بروز Exception، دیگه با اون لیستهای طولانی و نامفهوم State Machine روبرو نمیشیم و دقیقاً همون خطی که خطا داده رو توی خروجی میبینیم؛ یعنی دیباگ کردن کدهای async به راحتی کدهای معمولی شده.
این قابلیت فعلاً در نسخههای Preview ارائه شده و برای تست کردنش باید توی فایل csproj پروژهتون، فیچر RuntimeAsync رو به صورت دستی فعال کنید.
1 10💯2👍1💔1 1