چرا برای تولید 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
یه پروژه اوپنسورس ساختم که فقط با یک دستور توی تلگرام، لینک Google Meet فوری میسازه.
کافیه توی چت بنویسی:
/meet
و همون لحظه یک روم جدید و آماده استفاده میگیری—کاملاً آزاد برای همه و بدون نیاز به تأیید هاست! (اولین نفر که وارد بشه نقش هاست رو داره)
سورسکد و توضیحات کامل:
https://github.com/Mobinshahidi/google-meet-generator
@DevTwitter | <Mobin/>
کافیه توی چت بنویسی:
/meet
و همون لحظه یک روم جدید و آماده استفاده میگیری—کاملاً آزاد برای همه و بدون نیاز به تأیید هاست! (اولین نفر که وارد بشه نقش هاست رو داره)
سورسکد و توضیحات کامل:
https://github.com/Mobinshahidi/google-meet-generator
@DevTwitter | <Mobin/>
❤62👍25🔥7👎5
یه چیزی که در ورژن جدید php 8.5 بیشتر به چشمم اومد آپدیت curl share init ش هست، میاد از share data یه cache persistent میسازه، منتها این بار، بعد از اجرای اسکریپت از بین نمیره، برای اون worker همچنان valid هست و میشه ازش استفاده کرد
آپتیمایزیشن خوبیه حقیقتا
@DevTwitter | <hadi mirzaie/>
آپتیمایزیشن خوبیه حقیقتا
@DevTwitter | <hadi mirzaie/>
👍13🍌5👎3🔥1
وقتی میگیم AI Bubble همه سریع فکر میکن که موضع گیری راجب کلیت مسئله AI و LLM ها هست، یعنی که ما میخوایم این ها و اثراتشون رو نادیده بگیریم و بگیم به درد نمیخورن در حالی که بحث کلا چیز دیگریست، بحث مسائل سرمایه گزاری، استارت آپ، فاند ریز کردن و سهام هست.
https://www.youtube.com/shorts/ppy_toLPeqQ
@DevTwitter | <Max Shahdoost/>
https://www.youtube.com/shorts/ppy_toLPeqQ
@DevTwitter | <Max Shahdoost/>
👍16❤8👎2🔥2
فونت آراد هم یک فونت با مجوز آزاده که میتونید در کارهای مختلف استفاده کنید.
به امید افزایش تعداد فونتهای فارسی با مجوز آزاد.
تست فونت:
https://mohamaddarvishi.ir/Arad/lab/
لینک دانلود و گیتهاب و...:
https://mohamaddarvishi.ir/Arad/
@DevTwitter | <Milad Nouri/>
به امید افزایش تعداد فونتهای فارسی با مجوز آزاد.
تست فونت:
https://mohamaddarvishi.ir/Arad/lab/
لینک دانلود و گیتهاب و...:
https://mohamaddarvishi.ir/Arad/
@DevTwitter | <Milad Nouri/>
❤68👍13🔥5🍌1
#کدبوک
یک راهنمای مقدماتی و روان برای شروع کار با لینوکس از صفر:
- آشنایی با مفاهیم پایه و ساختار لینوکس
- یادگیری دستورات ضروری خط فرمان
- مدیریت فایلها، پوشهها و فرایندها
- مناسب برای تازهکارهایی که میخوان بدون پیچیدگی وارد دنیای لینوکس بشن
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
یک راهنمای مقدماتی و روان برای شروع کار با لینوکس از صفر:
- آشنایی با مفاهیم پایه و ساختار لینوکس
- یادگیری دستورات ضروری خط فرمان
- مدیریت فایلها، پوشهها و فرایندها
- مناسب برای تازهکارهایی که میخوان بدون پیچیدگی وارد دنیای لینوکس بشن
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
❤17👍2🔥1🍌1