همه دیزاین پترنها به فارسی
توی مصاحبههای شغلی یا کد نویسی تمیز، یادگیری Design Pattern ها میتونه کمکت کنه.
من مجموعه کاملی از الگوهای طراحی رو به زبان فارسی آماده کردم که هر پترن رو میتونی در کمتر از ۵ دقیقه همراه با مثال های کاربردی در سیشارپ بخونی.
شروع مطالعه:
https://alireza-haeri.github.io/Persian-Design-Patterns/
اگر مفید بود، با یه Star ازش حمایت کن:
https://github.com/alireza-haeri/Persian-Design-Patterns
@DevTwitter | <AliReza Haeri/>
توی مصاحبههای شغلی یا کد نویسی تمیز، یادگیری Design Pattern ها میتونه کمکت کنه.
من مجموعه کاملی از الگوهای طراحی رو به زبان فارسی آماده کردم که هر پترن رو میتونی در کمتر از ۵ دقیقه همراه با مثال های کاربردی در سیشارپ بخونی.
شروع مطالعه:
https://alireza-haeri.github.io/Persian-Design-Patterns/
اگر مفید بود، با یه Star ازش حمایت کن:
https://github.com/alireza-haeri/Persian-Design-Patterns
@DevTwitter | <AliReza Haeri/>
❤63👍4👎2🍌1
چند وقتیه روی پروژهای کار میکنم که اسمش رو Hyperion گذاشتم؛ یک سرویس سبک و قابل توسعه برای Health Monitoring که میتونه در کنار سرویسهای مختلف قرار بگیره و بهصورت مداوم وضعیت سلامت اونها رو بررسی کنه.
Hyperion دقیقا چیکار میکنه؟
Hyperion برای این طراحی شده که در کنار سرویسهای حیاتی یک سیستم قرار بگیره و وضعیت سلامت اونها رو real-time مانیتور کنه.
فعلاً سرویسهای زیر رو پشتیبانی میکنه:
1- PostgreSQL
2- Redis
3- MySQL
4- MongoDB
5- TCP Connections
کافیه داخل داشبورد، آدرس سرویس رو وارد کنید؛ باقی کار بر عهده Hyperion هست.
اتصالها در فواصل زمانی مشخص با استفاده از Celery Beat انجام میشن و نتیجهها در داشبورد نمایش داده میشن.
* تکنولوژیهای استفاده شده :
Django – هسته اصلی سرویس
Celery + Redis – اجرای تسکهای دورهای و اتصال به سرویسها
Dockerized – تنها با یک docker compose up --build بالا میاد
بدون API اضافه — سعی کردم خیلی ساده و سبک باشه و با template پیاده سازی کردم تا راحت قابل دسترس باشه
همچنین یک UI ساده برای مشاهده وضعیت سرویسها درست کردم تا بدون پیچیدگیهای اضافه بتوانید وضعیت health سرویسها را با توجه به interval ای که بهش دادید ، ببینید . مثلا هر 10 دقیقه سرویس مورد نظرتون چک بشه یا هر 1 دقیقه .
* قابلیتهای آینده :
در حال حاضر Hyperion در مرحله اولیه قرار داره و open source هم هست ، اما برنامههای توسعه زیادی براش دارم. مهمترینش:
Alerting System برای ارسال اعلان از طریق:
ایمیل
Webhook
پیامرسان تلگرام
و همچنین اضافه کردن سرویس های دیگری برای چک کردن
Hyperion یک پروژه Open Source هست و خوشحال میشم اگر توسعهدهندگان Python / Django، برنامهنویسهای Backend، یا دوستان DevOps علاقهمند به مانیتورینگ در توسعه اون شریک بشن.
https://github.com/soheilsshh/HYPERION
@DevTwitter | <soheil shorvarzy/>
Hyperion دقیقا چیکار میکنه؟
Hyperion برای این طراحی شده که در کنار سرویسهای حیاتی یک سیستم قرار بگیره و وضعیت سلامت اونها رو real-time مانیتور کنه.
فعلاً سرویسهای زیر رو پشتیبانی میکنه:
1- PostgreSQL
2- Redis
3- MySQL
4- MongoDB
5- TCP Connections
کافیه داخل داشبورد، آدرس سرویس رو وارد کنید؛ باقی کار بر عهده Hyperion هست.
اتصالها در فواصل زمانی مشخص با استفاده از Celery Beat انجام میشن و نتیجهها در داشبورد نمایش داده میشن.
* تکنولوژیهای استفاده شده :
Django – هسته اصلی سرویس
Celery + Redis – اجرای تسکهای دورهای و اتصال به سرویسها
Dockerized – تنها با یک docker compose up --build بالا میاد
بدون API اضافه — سعی کردم خیلی ساده و سبک باشه و با template پیاده سازی کردم تا راحت قابل دسترس باشه
همچنین یک UI ساده برای مشاهده وضعیت سرویسها درست کردم تا بدون پیچیدگیهای اضافه بتوانید وضعیت health سرویسها را با توجه به interval ای که بهش دادید ، ببینید . مثلا هر 10 دقیقه سرویس مورد نظرتون چک بشه یا هر 1 دقیقه .
* قابلیتهای آینده :
در حال حاضر Hyperion در مرحله اولیه قرار داره و open source هم هست ، اما برنامههای توسعه زیادی براش دارم. مهمترینش:
Alerting System برای ارسال اعلان از طریق:
ایمیل
Webhook
پیامرسان تلگرام
و همچنین اضافه کردن سرویس های دیگری برای چک کردن
Hyperion یک پروژه Open Source هست و خوشحال میشم اگر توسعهدهندگان Python / Django، برنامهنویسهای Backend، یا دوستان DevOps علاقهمند به مانیتورینگ در توسعه اون شریک بشن.
https://github.com/soheilsshh/HYPERION
@DevTwitter | <soheil shorvarzy/>
👍24👎10🔥4🍌1
This media is not supported in your browser
VIEW IN TELEGRAM
مدل Nano Banana Pro معرفی شد
مدل Nano Banana Pro یا همان Gemini 3 Pro Image جدیدترین مدل تصویری Google/DeepMind است که روی تولید و ویرایش تصویر با کیفیت بالا و کنترلپذیری دقیق تمرکز دارد. این مدل در درک صحنه و رندر جزئیات یک جهش جدی داشته.
یکی از نکات برجستهٔ آن، رندر متن داخل تصویر بدون distortion یا بهمریختگی است. برای ساخت پوسترهای حرفهای، نمودارها و صفحات محصول. همچنین امکان کنترل دقیق روی lighting، camera angle، scene setup و style را فراهم میکند.
جزئیات بیشتر در DeepMind
https://deepmind.google/models/gemini-image/pro/
@DevTwitter | <Hanieh Khalesi/>
مدل Nano Banana Pro یا همان Gemini 3 Pro Image جدیدترین مدل تصویری Google/DeepMind است که روی تولید و ویرایش تصویر با کیفیت بالا و کنترلپذیری دقیق تمرکز دارد. این مدل در درک صحنه و رندر جزئیات یک جهش جدی داشته.
یکی از نکات برجستهٔ آن، رندر متن داخل تصویر بدون distortion یا بهمریختگی است. برای ساخت پوسترهای حرفهای، نمودارها و صفحات محصول. همچنین امکان کنترل دقیق روی lighting، camera angle، scene setup و style را فراهم میکند.
جزئیات بیشتر در DeepMind
https://deepmind.google/models/gemini-image/pro/
@DevTwitter | <Hanieh Khalesi/>
❤12👍5🔥2
خبر داغ برنامهنویسا : گزارش Stack Overflow 2025 نشون میده ۸۴% دولوپرها از AI مثل ChatGPT و GitHub Copilot استفاده میکنن، اما ۶۶% کلافه از کدهای 'تقریباً باگی' هستن! Cursor و Copilot دارن کدینگ رو متحول میکنن، ولی دیباگش وقتگیره.
https://survey.stackoverflow.co/2025/ai/
@DevTwitter | <Arash/>
https://survey.stackoverflow.co/2025/ai/
@DevTwitter | <Arash/>
👍69❤6🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
ایشون رو بالاخره بهتر کردم..
حالا..نمایشگر فریم بافر داره و حرکت ها نرم تر شدند(پر پر رو تا جایی که می تونستم کم کردم)
حالا می تونید بیشترین امتیاز رو داشته باشید و اگر برد خاموش شد هم اون امتیاز از بین نمیره
مقاومت های ده هزار اهمی هم حذف شدند
لینک ریپو
https://github.com/aydakikio/arduino_snake
@DevTwitter | <Loanly/>
حالا..نمایشگر فریم بافر داره و حرکت ها نرم تر شدند(پر پر رو تا جایی که می تونستم کم کردم)
حالا می تونید بیشترین امتیاز رو داشته باشید و اگر برد خاموش شد هم اون امتیاز از بین نمیره
مقاومت های ده هزار اهمی هم حذف شدند
لینک ریپو
https://github.com/aydakikio/arduino_snake
@DevTwitter | <Loanly/>
🔥37👍7❤3👎2
چرا برای تولید OTP نباید از Math.random() استفاده کنیم؟
بسیاری از سیستمها برای تولید کدهای یکبارمصرف هنوز به Math.random() تکیه میکنن؛ درحالیکه این تابع امنیت لازم برای تولید توکن های حساس رو نداره.
مشکلمون چیه؟
تابع Math.random() یک Pseudo Random Number Generator غیرکریپتوگرافیک هست. یعنی خروجی آن با دونستن seed یا الگوی تولید، قابل پیشبینیه. همین پیشبینیپذیری باعث میشود یک مهاجم با brute-force یا تحلیل خروجیها بتونه OTP بعدی رو حدس بزنه.
در مقابل چی داریم؟
توابعی مثل crypto.randomInt() یا crypto.randomBytes() در Node.js از یک Cryptographically Secure PRNG استفاده میکنن.
این یعنی:
غیرقابل پیشبینی
دارای entropy کافی
مقاوم در برابر حملات آماری
مناسب برای توکنهای امنیتی مثل OTP، لینک بازیابی، session secret و موارد دیگه.
@DevTwitter | <Amirali Allahverdi/>
بسیاری از سیستمها برای تولید کدهای یکبارمصرف هنوز به Math.random() تکیه میکنن؛ درحالیکه این تابع امنیت لازم برای تولید توکن های حساس رو نداره.
مشکلمون چیه؟
تابع Math.random() یک Pseudo Random Number Generator غیرکریپتوگرافیک هست. یعنی خروجی آن با دونستن seed یا الگوی تولید، قابل پیشبینیه. همین پیشبینیپذیری باعث میشود یک مهاجم با brute-force یا تحلیل خروجیها بتونه OTP بعدی رو حدس بزنه.
در مقابل چی داریم؟
توابعی مثل crypto.randomInt() یا crypto.randomBytes() در Node.js از یک Cryptographically Secure PRNG استفاده میکنن.
این یعنی:
غیرقابل پیشبینی
دارای entropy کافی
مقاوم در برابر حملات آماری
مناسب برای توکنهای امنیتی مثل OTP، لینک بازیابی، session secret و موارد دیگه.
@DevTwitter | <Amirali Allahverdi/>
👍56❤18🔥3👎1
خبر خوب برای برنامهنویسهای داتنت
نسخه جدید داتنت ۱۰ از Server-Sent Events (SSE) پشتیبانی میکند. این قابلیت یک روش ساده و تمیز برای ارسال دادههای زنده از سرور به مرورگر است، بدون نیاز به WebSocket.
اگر با رابطهای کاربری زنده، داشبوردهای لحظهای یا سیستمهای نوتیفیکیشن سروکار داری، این قابلیت میتواند تجربهت رو تغییر بده.
چطور کار میکند؟
ارسال دادهها بهصورت یکطرفه از سرور → مرورگر، بدون پیچیدگیهای WebSocket.
چرا این ویژگی مهمه؟
- سادهتر از WebSocket
- مقیاسپذیرتر
- مناسب برای رابطهای لحظهای و نوتیفیکیشنها
- بدون نیاز به کتابخانههای جانبی، در خود فریمورک
نتیجه برای ما برنامهنویسها:
ساخت رابطهای پویا، داشبوردهای زنده و نوتیفیکیشنها راحتتر و سریعتر میشود.
خلاصه:
با SSE در داتنت ۱۰، ساخت «رابطهای زنده» دیگه راحتتر از همیشه شده.
@DevTwitter | <Säber V/>
نسخه جدید داتنت ۱۰ از Server-Sent Events (SSE) پشتیبانی میکند. این قابلیت یک روش ساده و تمیز برای ارسال دادههای زنده از سرور به مرورگر است، بدون نیاز به WebSocket.
اگر با رابطهای کاربری زنده، داشبوردهای لحظهای یا سیستمهای نوتیفیکیشن سروکار داری، این قابلیت میتواند تجربهت رو تغییر بده.
چطور کار میکند؟
ارسال دادهها بهصورت یکطرفه از سرور → مرورگر، بدون پیچیدگیهای WebSocket.
چرا این ویژگی مهمه؟
- سادهتر از WebSocket
- مقیاسپذیرتر
- مناسب برای رابطهای لحظهای و نوتیفیکیشنها
- بدون نیاز به کتابخانههای جانبی، در خود فریمورک
نتیجه برای ما برنامهنویسها:
ساخت رابطهای پویا، داشبوردهای زنده و نوتیفیکیشنها راحتتر و سریعتر میشود.
خلاصه:
با SSE در داتنت ۱۰، ساخت «رابطهای زنده» دیگه راحتتر از همیشه شده.
@DevTwitter | <Säber V/>
🔥33🍌13❤4👍3
چطور عملکرد پلاگینهامون رو در وردپرس بهینه کنیم؟
یکی از اشتباههای رایج در توسعه پلاگینهای وردپرس اینه که همه فایلها و کدها در تمام صفحات سایت لود میشن — حتی جایی که اصلاً لازم نیست
نتیجه؟
- کاهش سرعت سایت
- افزایش Memory Usage
- افت رتبه در Core Web Vitals
یه ترفند ساده برای بهینهسازی وجود داره
با این روش فایلهای پلاگین فقط در صفحاتی لود میشن که واقعاً نیاز دارن.
این یعنی:
- افزایش سرعت بارگذاری
- کاهش بار سرور
- تجربه بهتر برای کاربر
نکته طلایی:
به جای لود فایلها در همه صفحات (wp_enqueue_noscripts)، همیشه بررسی کن پلاگینت کجا استفاده میشه (is_page, is_admin, is_singular, …).
@DevTwitter | <ahmad esmaili/>
یکی از اشتباههای رایج در توسعه پلاگینهای وردپرس اینه که همه فایلها و کدها در تمام صفحات سایت لود میشن — حتی جایی که اصلاً لازم نیست
نتیجه؟
- کاهش سرعت سایت
- افزایش Memory Usage
- افت رتبه در Core Web Vitals
یه ترفند ساده برای بهینهسازی وجود داره
با این روش فایلهای پلاگین فقط در صفحاتی لود میشن که واقعاً نیاز دارن.
این یعنی:
- افزایش سرعت بارگذاری
- کاهش بار سرور
- تجربه بهتر برای کاربر
نکته طلایی:
به جای لود فایلها در همه صفحات (wp_enqueue_noscripts)، همیشه بررسی کن پلاگینت کجا استفاده میشه (is_page, is_admin, is_singular, …).
@DevTwitter | <ahmad esmaili/>
❤13🍌6👍1🔥1
ساخت سرویسهای بدون سرور با Python
«اگر هنوز پایتون را فقط برای اسکریپت نویسی میبینی، یا تازهکاری بهتره وارد بازی اصلی بشی تا تفاوت رو احساس کنی.»
با Python و Cloud Functions میتونی سرویسهایی بسازی که بدون سرور اجرا میشن، سریع و مقیاسپذیر.
خیلی پروژهها هنوز خودشون رو درگیر سرورها و مدیریت زیرساخت میکنن، در حالی که با چند خط کد همه چیز خودکار و بهینه میشه.
من تو چندتا پروژه سنگین، سرویسهایی که قبلاً یک سرور پرخرج لازم داشتن رو بردم تو مدل Function-based.
نتیجه؟ سرعت بهتر، هزینه نصف، و کل جنگهای زیرساختی هم از دوش آدم برداشته میشه.تابع ها و بخصوص توابع سنگین فقط وقتی اجرا میشه که لازم داری.
نه سرور ۲۴ ساعت روشن، نه دردسر نگهداری، نه استرس Scale.
دلایل اصلی که من فکر میکنم این سبک میتونه بهتر نتیجه بده :
- فانکشنهای سبک و تستپذیر با پایتون
- مدیریت State با Pub/Sub و Cloud Storage بدون پیچیدگی
- معماری ماژولار واقعی، نه اون ادعای فیگور گرفتن تو رزومهها
- حذف کامل نیاز به Nginx، سرور دائمی، یا دیپلویهای اعصابخردکن
هرکی میگه Serverless برای پروژه جدی مناسب نیست، معمولاً حتی یک بار درست پیادهسازیش نکرده.
منابع برای شروع و یادگیری عملی:
- مستندات رسمی گوگل: Cloud Functions Python Docs
- مثال عملی سرورلس پایتون: Serverless Python on GCP
@DevTwitter | <amin diba/>
«اگر هنوز پایتون را فقط برای اسکریپت نویسی میبینی، یا تازهکاری بهتره وارد بازی اصلی بشی تا تفاوت رو احساس کنی.»
با Python و Cloud Functions میتونی سرویسهایی بسازی که بدون سرور اجرا میشن، سریع و مقیاسپذیر.
خیلی پروژهها هنوز خودشون رو درگیر سرورها و مدیریت زیرساخت میکنن، در حالی که با چند خط کد همه چیز خودکار و بهینه میشه.
من تو چندتا پروژه سنگین، سرویسهایی که قبلاً یک سرور پرخرج لازم داشتن رو بردم تو مدل Function-based.
نتیجه؟ سرعت بهتر، هزینه نصف، و کل جنگهای زیرساختی هم از دوش آدم برداشته میشه.تابع ها و بخصوص توابع سنگین فقط وقتی اجرا میشه که لازم داری.
نه سرور ۲۴ ساعت روشن، نه دردسر نگهداری، نه استرس Scale.
دلایل اصلی که من فکر میکنم این سبک میتونه بهتر نتیجه بده :
- فانکشنهای سبک و تستپذیر با پایتون
- مدیریت State با Pub/Sub و Cloud Storage بدون پیچیدگی
- معماری ماژولار واقعی، نه اون ادعای فیگور گرفتن تو رزومهها
- حذف کامل نیاز به Nginx، سرور دائمی، یا دیپلویهای اعصابخردکن
هرکی میگه Serverless برای پروژه جدی مناسب نیست، معمولاً حتی یک بار درست پیادهسازیش نکرده.
منابع برای شروع و یادگیری عملی:
- مستندات رسمی گوگل: Cloud Functions Python Docs
- مثال عملی سرورلس پایتون: Serverless Python on GCP
@DevTwitter | <amin diba/>
❤19👍7👎6🔥4
تو این پست راجع به query string های تو در تو مفصل حرف زدیم و این که چجوری داخل node میشه ازشون استفاده کرد
https://dev.to/silentwatcher_95/nested-query-strings-in-depth-a-complete-technical-guide-1io8
@DevTwitter | <Ali Nazari/>
https://dev.to/silentwatcher_95/nested-query-strings-in-depth-a-complete-technical-guide-1io8
@DevTwitter | <Ali Nazari/>
❤9🔥2
Media is too big
VIEW IN TELEGRAM
یه نفر با ترکیب ابزار Antigravity و مدل Gemini 3 Pro، کل سیستمعامل اپل رو موبهمو بازسازی کرده.
باورتون نمیشه ولی تکتک اپلیکیشنهای داخلیش واقعاً کار میکنن و دکوری نیستن.
کل این پروژه الان روی گیتهاب در دسترسه.
https://github.com/PallavAg/iOS-Clone-SwiftUI
* البته کلمه "سیستمعامل" غلطه و توی این ریپو فقط اپهای اصلی و محیط شبیهسازی شده
@DevTwitter | <AppleFarsi/>
باورتون نمیشه ولی تکتک اپلیکیشنهای داخلیش واقعاً کار میکنن و دکوری نیستن.
کل این پروژه الان روی گیتهاب در دسترسه.
https://github.com/PallavAg/iOS-Clone-SwiftUI
* البته کلمه "سیستمعامل" غلطه و توی این ریپو فقط اپهای اصلی و محیط شبیهسازی شده
@DevTwitter | <AppleFarsi/>
👍40❤6👎6🍌4
یک کالکشن بسیار ارزشمند برای علاقمندان به باگبانتی / هک و امنیت
در این رپو میتونید لیست ابزار ها + توضیحات رو به بصورت دسته بندی های منظم و کاربردی داشته باشید
https://github.com/hahwul/WebHackersWeapons/
@DevTwitter | <POURYA/>
در این رپو میتونید لیست ابزار ها + توضیحات رو به بصورت دسته بندی های منظم و کاربردی داشته باشید
https://github.com/hahwul/WebHackersWeapons/
@DevTwitter | <POURYA/>
❤16👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
الان مدلهای اپن سورس هم به حدی خیلی خوب شدند که میشه برای GUI agents هم ازشون استفاده کرد. یعنی ایجنت هایی که کامپیوتر را به صورت real time کنترل میکنند تا تسک های پیچیده را انجام بدند.
کمپانی HuggingFace هم ورژن جدید Computer Use Agent را دادند که میتونید هم تستش کنید. و هم کدش را استفاده کنید. من یک تست کردم که خوب کار کرد.
لینک: https://huggingface.co/spaces/smolagents/CUA
@DevTwitter | <Mehdi Allahyari/>
کمپانی HuggingFace هم ورژن جدید Computer Use Agent را دادند که میتونید هم تستش کنید. و هم کدش را استفاده کنید. من یک تست کردم که خوب کار کرد.
لینک: https://huggingface.co/spaces/smolagents/CUA
@DevTwitter | <Mehdi Allahyari/>
👍18❤5👎2
This media is not supported in your browser
VIEW IN TELEGRAM
این جالبه
میگه LLM ها یک لایه محاسباتی هستند که با آدما تعامل میکنند و محتوا ایجاد میکنند! این مدلها بیشتر از اینکه فقط جواب بدن، در حال کمک به ساخت سیستمها و برنامهها هستند.
تو بایوش هم نوشته:
I help developers stay up to date with Al.
@DevTwitter | <kimia/>
میگه LLM ها یک لایه محاسباتی هستند که با آدما تعامل میکنند و محتوا ایجاد میکنند! این مدلها بیشتر از اینکه فقط جواب بدن، در حال کمک به ساخت سیستمها و برنامهها هستند.
تو بایوش هم نوشته:
I help developers stay up to date with Al.
@DevTwitter | <kimia/>
🔥23👍3❤1
خبر خوب برای برنامه نویسانی که میخوان AI به پروژ هاشون اضافه کنند
فریمورک byLLM که به کمکش میتونی مدل عظیم زبانی (LLM) رو توی نرمافزارات با فقط یک خط کد وارد کنی، بدون اینکه پرامپتانجینیری دستی بکنی! این یعنی وقت کمتر روی طراحی پرامپت و بیشتر روی منطق واقعی
دانشگاه میشیگان
با زبان Jac کار میکنه (زبان برنامهنویسی ساختهٔ Jaseci) ولی رابط پایتونی هم داره. هوش مصنوعی
برای شروع میتونی پکیج رو با:
pip install byllm
گیت هاب پروژ
https://github.com/jaseci-labs/jaseci/tree/main/jac-byllm
@DevTwitter | <Arash/>
فریمورک byLLM که به کمکش میتونی مدل عظیم زبانی (LLM) رو توی نرمافزارات با فقط یک خط کد وارد کنی، بدون اینکه پرامپتانجینیری دستی بکنی! این یعنی وقت کمتر روی طراحی پرامپت و بیشتر روی منطق واقعی
دانشگاه میشیگان
با زبان Jac کار میکنه (زبان برنامهنویسی ساختهٔ Jaseci) ولی رابط پایتونی هم داره. هوش مصنوعی
برای شروع میتونی پکیج رو با:
pip install byllm
گیت هاب پروژ
https://github.com/jaseci-labs/jaseci/tree/main/jac-byllm
@DevTwitter | <Arash/>
🍌13🔥8❤3👎2
یکی از کارای قدیم
شبیه ساز پرواز با گرافیک واقعی (❁´◡`❁)
https://github.com/dmaon/river-raid
@DevTwitter | <dmaon/>
شبیه ساز پرواز با گرافیک واقعی (❁´◡`❁)
https://github.com/dmaon/river-raid
@DevTwitter | <dmaon/>
❤26👎3🔥1🍌1
وقتی غولها هم زمین میخورند!
قطعی گسترده اخیر سرویسهای کلادفلر (Cloudflare) که ناشی از یک تغییر پیکربندی (Configuration Change) بود، یک واقعیت قاطع را به ما یادآوری کرد: قابلیت اطمینان ۱۰۰ درصدی یک توهم است.
موفقیت در دنیای فناوری، در طراحی برای شکست (Design for Failure) و توانایی بازگشت سریع و شفاف است.
۴ درس عملیاتی حیاتی برای افزایش پایداری سیستم (Resilience)
این واقعه، یک مطالعه موردی ارزشمند برای هر سازمان در حال رشدی است که بر روی سیستمهای توزیعشده (Distributed Systems) کار میکند:
۱. کاهش دامنه خطا (Blast Radius Reduction)
چالش: انتشار سریع یک خطای پیکربندی در کل شبکه.
استراتژی: پیادهسازی سختگیرانه انتشار تدریجی (Canary Deployments) و تقسیمبندی منطقی شبکه (Segmentation).
نکته کاربردی: مطمئن شوید که خطاهای پیکربندی در یک "منطقه کوچک" محبوس شده و پیش از گسترش به تمام نقاط، آزمایش شوند. فرآیندهای انتشار خود را مجدداً بررسی کنید.
۲. اهمیت شفافیت و ارتباطات بحران (Crisis Comms)
چالش: بیاعتمادی مشتریان در زمان سکوت.
استراتژی: از یک کانال ارتباطی ثانویه و کاملاً ایزوله (مانند یک صفحه وضعیت روی زیرساخت متفاوت) استفاده کنید.
نکته کاربردی: صداقت فنی را در اولویت قرار دهید. بهروزرسانیهای مکرر و فنی، حتی اگر کوتاه باشند ("ما هنوز در حال بررسی هستیم")، اعتماد را حفظ میکنند.
۳. مقاومت در برابر شکستهای آبشاری (Cascading Failures)
چالش: تبدیل یک مشکل کوچک به یک بحران گسترده.
استراتژی: حذف وابستگیهای متقابل (Decoupling) بین سرویسهای حیاتی. اطمینان حاصل کنید که شکست یک سرویس فرعی، سرویس اصلی را از کار نیندازد.
نکته کاربردی: پیادهسازی مدارهای قطع کننده (Circuit Breakers) در کد، که در صورت شکست یک سرویس وابسته، درخواست را دور زده یا پاسخ از پیش تعیین شده (Failover) ارائه دهند.
۴. یادگیری پس از واقعه (Blameless Post-Mortem)
چالش: تکرار مشکلات بدون تحلیل عمیق.
استراتژی: بلافاصله یک تحلیل بدون سرزنش (Blameless Post-Mortem) آغاز کنید.
نکته کاربردی: تمرکز بر درک دلایل ریشهای و بهبود فرآیندها، نه پیدا کردن مقصر. انتشار سریع و عمیق گزارش فنی (مانند کاری که کلادفلر انجام داد)، به بازگرداندن اعتماد و آموزش جامعه فنی کمک میکند.
اقدام کلیدی برای رهبران
این رویداد را به عنوان یک هشدار (Wake-Up Call) ببینید. آیا استراتژیهای انتشار و طرحهای ارتباطی شما میتوانند در برابر یک خطای غیرمنتظره داخلی مقاومت کنند؟
"در دسترس بودن ۱۰۰ درصدی یک رؤیاست، بازگشت سریع و شفافیت ۱۰۰ درصدی یک تعهد است."
@DevTwitter | <Alireza DavoodiNia/>
قطعی گسترده اخیر سرویسهای کلادفلر (Cloudflare) که ناشی از یک تغییر پیکربندی (Configuration Change) بود، یک واقعیت قاطع را به ما یادآوری کرد: قابلیت اطمینان ۱۰۰ درصدی یک توهم است.
موفقیت در دنیای فناوری، در طراحی برای شکست (Design for Failure) و توانایی بازگشت سریع و شفاف است.
۴ درس عملیاتی حیاتی برای افزایش پایداری سیستم (Resilience)
این واقعه، یک مطالعه موردی ارزشمند برای هر سازمان در حال رشدی است که بر روی سیستمهای توزیعشده (Distributed Systems) کار میکند:
۱. کاهش دامنه خطا (Blast Radius Reduction)
چالش: انتشار سریع یک خطای پیکربندی در کل شبکه.
استراتژی: پیادهسازی سختگیرانه انتشار تدریجی (Canary Deployments) و تقسیمبندی منطقی شبکه (Segmentation).
نکته کاربردی: مطمئن شوید که خطاهای پیکربندی در یک "منطقه کوچک" محبوس شده و پیش از گسترش به تمام نقاط، آزمایش شوند. فرآیندهای انتشار خود را مجدداً بررسی کنید.
۲. اهمیت شفافیت و ارتباطات بحران (Crisis Comms)
چالش: بیاعتمادی مشتریان در زمان سکوت.
استراتژی: از یک کانال ارتباطی ثانویه و کاملاً ایزوله (مانند یک صفحه وضعیت روی زیرساخت متفاوت) استفاده کنید.
نکته کاربردی: صداقت فنی را در اولویت قرار دهید. بهروزرسانیهای مکرر و فنی، حتی اگر کوتاه باشند ("ما هنوز در حال بررسی هستیم")، اعتماد را حفظ میکنند.
۳. مقاومت در برابر شکستهای آبشاری (Cascading Failures)
چالش: تبدیل یک مشکل کوچک به یک بحران گسترده.
استراتژی: حذف وابستگیهای متقابل (Decoupling) بین سرویسهای حیاتی. اطمینان حاصل کنید که شکست یک سرویس فرعی، سرویس اصلی را از کار نیندازد.
نکته کاربردی: پیادهسازی مدارهای قطع کننده (Circuit Breakers) در کد، که در صورت شکست یک سرویس وابسته، درخواست را دور زده یا پاسخ از پیش تعیین شده (Failover) ارائه دهند.
۴. یادگیری پس از واقعه (Blameless Post-Mortem)
چالش: تکرار مشکلات بدون تحلیل عمیق.
استراتژی: بلافاصله یک تحلیل بدون سرزنش (Blameless Post-Mortem) آغاز کنید.
نکته کاربردی: تمرکز بر درک دلایل ریشهای و بهبود فرآیندها، نه پیدا کردن مقصر. انتشار سریع و عمیق گزارش فنی (مانند کاری که کلادفلر انجام داد)، به بازگرداندن اعتماد و آموزش جامعه فنی کمک میکند.
اقدام کلیدی برای رهبران
این رویداد را به عنوان یک هشدار (Wake-Up Call) ببینید. آیا استراتژیهای انتشار و طرحهای ارتباطی شما میتوانند در برابر یک خطای غیرمنتظره داخلی مقاومت کنند؟
"در دسترس بودن ۱۰۰ درصدی یک رؤیاست، بازگشت سریع و شفافیت ۱۰۰ درصدی یک تعهد است."
@DevTwitter | <Alireza DavoodiNia/>
👍15🍌6❤3🔥2
اپ موزیک اپل برای آهنگای لوکال خودت باگ داره و نرمالکردن بلندی صداش به خوبی مورد انتظارم نیست.
گزینههای دیگه هر کدوم یه چیزیشون میلنگه، و foobar2000 مشکلش اینترفیس فجیعشه.
با کمک LLM یه اینترفیس برای مرور آلبوما طبق عکس کاور براش درست کردم و خوشحالم.
https://github.com/openmac/foo-cover-browser
@DevTwitter | <Ali Rastegar/>
گزینههای دیگه هر کدوم یه چیزیشون میلنگه، و foobar2000 مشکلش اینترفیس فجیعشه.
با کمک LLM یه اینترفیس برای مرور آلبوما طبق عکس کاور براش درست کردم و خوشحالم.
https://github.com/openmac/foo-cover-browser
@DevTwitter | <Ali Rastegar/>
👎13👍7🔥2🍌1
شرکت Canonical اکنون تضمین میکند که نسخههای Ubuntu LTS لینوکس تا ۱۵ سال با «Legacy add-on» پوشش امنیتی داشته باشند!
از Ubuntu 14.04 شروع شده گزینهای عالی برای زیرساختهای بلندمدت.
من عشق LTS نصب کردنم.
@DevTwitter | <MehrdadLinux/>
از Ubuntu 14.04 شروع شده گزینهای عالی برای زیرساختهای بلندمدت.
من عشق LTS نصب کردنم.
@DevTwitter | <MehrdadLinux/>
❤32👍4🔥2
دقیقا اون چیزهای مزخرفی که تو react بود و همیشه حالم ازشون بهم میخورد را Svelt نداره مثل اون Dependency آخر useEffect و یا jsx های آشغال که با return بود. امیدوارم روزی فرانت اند دولوپرها به آگاهی برسند این ریعکت مزخرف که ریکت هم مینویسندش از روزگار حذف بشه .
@DevTwitter | <Babak uk/>
@DevTwitter | <Babak uk/>
👎103👍57🍌28🔥4
چجوری بفهمیم ایمیجهای Docker کی نسخه جدید میدن
خیلی وقتا سرویسهای داکری روی نسخههای قدیمی ایمیج میمونن و کسی هم به این زودی متوجه نمیشه!
برای همین ابزاری هست به اسم DIUN که کارش فقط یه چیزه:
بفهمه ایمیجی که داری استفاده میکنی، نسخه جدید داده یا نه.
حالا DIUN چطوری اینو تشخیص میده؟
خیلی ساده:
به docker.sock وصل میشه، میفهمه چه کانتینرهایی داری و از چه ایمیجهایی استفاده میکنی. بعد Digest همونا رو با Digest رجیستری مقایسه میکنه :)))
اگر فرق داشت، یعنی نسخهٔ جدید منتشر شده.
برای استفاده هم فقط کافیه یه کانتینر DIUN کنار سرویسهات بیاری بالا.
حالا DIUN میتونه خروجی رو به هرجایی که API میده بفرسته:
تلگرام، Slack و...
جزئیاتش اینجاست:
https://hashbang.nl/blog/receive-notifications-when-updates-to-docker-images-are-released-using-diun
البته تو محیطهای بزرگ تر معمولاً از ابزارهایی مثل Renovate یا watchtower استفاده میکنن،
ولی DIUN یه گزینه راحت و کار راه اندازه برای اینکه سریع بفهمی ایمیج جدید اومده یا نه!
@DevTwitter | <Amir Haji Mohammad Sadegh/>
خیلی وقتا سرویسهای داکری روی نسخههای قدیمی ایمیج میمونن و کسی هم به این زودی متوجه نمیشه!
برای همین ابزاری هست به اسم DIUN که کارش فقط یه چیزه:
بفهمه ایمیجی که داری استفاده میکنی، نسخه جدید داده یا نه.
حالا DIUN چطوری اینو تشخیص میده؟
خیلی ساده:
به docker.sock وصل میشه، میفهمه چه کانتینرهایی داری و از چه ایمیجهایی استفاده میکنی. بعد Digest همونا رو با Digest رجیستری مقایسه میکنه :)))
اگر فرق داشت، یعنی نسخهٔ جدید منتشر شده.
برای استفاده هم فقط کافیه یه کانتینر DIUN کنار سرویسهات بیاری بالا.
حالا DIUN میتونه خروجی رو به هرجایی که API میده بفرسته:
تلگرام، Slack و...
جزئیاتش اینجاست:
https://hashbang.nl/blog/receive-notifications-when-updates-to-docker-images-are-released-using-diun
البته تو محیطهای بزرگ تر معمولاً از ابزارهایی مثل Renovate یا watchtower استفاده میکنن،
ولی DIUN یه گزینه راحت و کار راه اندازه برای اینکه سریع بفهمی ایمیج جدید اومده یا نه!
@DevTwitter | <Amir Haji Mohammad Sadegh/>
❤16👍5🔥1🍌1