ممکنه پیش بیاد که روی چندین پروژه در سیستم خودتون کار کنید، برای سویچ کردن و مدیریت سریع تر آنها در ترمینال یه ابزار خیلی ساده نوشتم گفتم اینجا هم بزارم که شاید بکار دوستان هم اومد
فرایندش اینه که بعد از نصب، دستور (opener aap) رو در ترمینال میزنی
نام پوشه پروژه رو بهش میدی، اونم میره در مسیر home یوزر، سرچ میکنه (Recursive Search) و پروژه رو با مسیرش پیدا میکنه
و بعدش زبان توسعه اونو ازت میخواد (طبق لیستی از زبان های ارائه شده، انتخابش میکنی)
و در نهایت انتخاب ادیتور رو ازت میخواد (کد ادیتور های نصب شده روی سیستم رو پیدا میکنه و لیست میکنه) و بعدش ذخیرش میکنه
بعد از انتخاب یه ادیتور، همونو برای اون پروژه در نظر میگیره و برای بار دوم دیگه نیازی به سلکت مجدد نیست و تنها با دستور کوتاه (o- project-name) پروژه رو باز میکنی
حذف پروژه هایی که به این ابزار معرفی می کنی ربطی به پروژه اصلی نداره
این ابزار opener_cli نسخه لینوکس هست و با node.js نوشته شده
https://github.com/NorouziMilad/opener
@DevTwitter | <YouVsYs/>
فرایندش اینه که بعد از نصب، دستور (opener aap) رو در ترمینال میزنی
نام پوشه پروژه رو بهش میدی، اونم میره در مسیر home یوزر، سرچ میکنه (Recursive Search) و پروژه رو با مسیرش پیدا میکنه
و بعدش زبان توسعه اونو ازت میخواد (طبق لیستی از زبان های ارائه شده، انتخابش میکنی)
و در نهایت انتخاب ادیتور رو ازت میخواد (کد ادیتور های نصب شده روی سیستم رو پیدا میکنه و لیست میکنه) و بعدش ذخیرش میکنه
بعد از انتخاب یه ادیتور، همونو برای اون پروژه در نظر میگیره و برای بار دوم دیگه نیازی به سلکت مجدد نیست و تنها با دستور کوتاه (o- project-name) پروژه رو باز میکنی
حذف پروژه هایی که به این ابزار معرفی می کنی ربطی به پروژه اصلی نداره
این ابزار opener_cli نسخه لینوکس هست و با node.js نوشته شده
https://github.com/NorouziMilad/opener
@DevTwitter | <YouVsYs/>
🔥16👎6❤2👍2
ابزار diff برای چک کردن تفاوت خط به خط تغییرات فایل استفاده میشه. اما نمیتونه سینتکس رو بفهمه اومدن یه ابزار ساختن که سینتکس رو میفهمه و تغییرات رو توی سطح سینتکس بهتون نشون میده!
نصب :
http://github.com/Wilfred/difftastic
@DevTwitter | <Nimo/>
نصب :
http://github.com/Wilfred/difftastic
@DevTwitter | <Nimo/>
🔥37❤4👍3👎1
برای یادگیری C++ دارم (گشاد گشاد) یه mini grep می نویسم. اینو میذارم اینجا که تنبلی کردم دچار شرم بشم بشینم کاملش کنم
فقط نمیدونم طبق داکیومنت grep ببرمش جلو یا از صفر مال خودمو بنویسم
https://github.com/hamedtahmasebi/mini-grep-cpp
@DevTwitter | <Hamedooo/>
فقط نمیدونم طبق داکیومنت grep ببرمش جلو یا از صفر مال خودمو بنویسم
https://github.com/hamedtahmasebi/mini-grep-cpp
@DevTwitter | <Hamedooo/>
👎42👍25❤3
برنامه نویس خوش ذوق که برای هر ریلیز از کاور یه انیمه استفاده کرده
https://github.com/panjf2000/ants/releases
@DevTwitter | <Mdhesari/>
https://github.com/panjf2000/ants/releases
@DevTwitter | <Mdhesari/>
❤57👎15👍6🔥1
یک بلاگ بسیار جالب از کمپانی HuggingFace که توضیح میده چطور یک مدل سبک VLM) vision–language) تونسته مهارتهای کار با رابط کاربری رو یاد بگیره و کمکم تبدیل بشه به یه coding agent برای GUI. تمام پروسه را هم کامل توضیح دادند از دستورالعملهای آموزش، ابزارهای پردازش داده، خود مدل، دمو و دیتاستها. تا کامل قابل تکرار باشه. خیلی خوبه! Blog: https://huggingface.co/blog/smol2operator
@DevTwitter | <Mehdi Allahyari/>
@DevTwitter | <Mehdi Allahyari/>
👍23👎1
خواستید برنامه اندروید بسازید و معماری قاطیپاطی شد؟
یه نمونه معماری تمیز ببینید که همه بخشها جداست و توسعهپذیری خیلی بالاست:
http://github.com/android10/Android-CleanArchitecture
@DevTwitter | <Nimo/>
یه نمونه معماری تمیز ببینید که همه بخشها جداست و توسعهپذیری خیلی بالاست:
http://github.com/android10/Android-CleanArchitecture
@DevTwitter | <Nimo/>
👎12❤7👍1
This media is not supported in your browser
VIEW IN TELEGRAM
اسلایدرها استفاده میکنی، وقتشه یه گزینه جدید رو بشناسی:
یک کتابخونه جاوااسکریپت برای ساخت اسلایدر و کروسلهای سایت
- سبک
- متنوع
- بینظیر
اسمش هست: Keen Slider
تازه واردی که ارزش امتحان کردن رو داره
مخصوصاً اگر دنبال عملکرد رَوون و طراحی قابل شخصیسازی هستی.
راستی لینکش هم اینجاست
Link : keen-slider.io
@DevTwitter | <Abolfazl Shekarshekan/>
یک کتابخونه جاوااسکریپت برای ساخت اسلایدر و کروسلهای سایت
- سبک
- متنوع
- بینظیر
اسمش هست: Keen Slider
تازه واردی که ارزش امتحان کردن رو داره
مخصوصاً اگر دنبال عملکرد رَوون و طراحی قابل شخصیسازی هستی.
راستی لینکش هم اینجاست
Link : keen-slider.io
@DevTwitter | <Abolfazl Shekarshekan/>
👍14❤6👎1
امروز گوگل این مقاله رو بهم پیشنهاد داد. خیلی ازش خوشم اومد. چه قشنگ مشکل رو توضیح داد.
https://gist.github.com/avestura/ce2aa6e55dad783b1aba946161d5fef4
@DevTwitter | <Mohsen Shabanian/>
https://gist.github.com/avestura/ce2aa6e55dad783b1aba946161d5fef4
@DevTwitter | <Mohsen Shabanian/>
👍35👎8❤5🔥2
سرویس ایمیل برای وب سایتتون
قبلا شما با سرویس Email Routing شرکت cloudflare میتوانستید ایمیل دریافت کنید ولی ارسال نه
سرویس Cloudflare Email Service’s مشکل را با Cloudflare Workers حل کرد و حالا میتوانید ارسال هم داشته باشید
اطلاعات بیشتر
https://blog.cloudflare.com/email-service/
@DevTwitter | <MehrdadLinux/>
قبلا شما با سرویس Email Routing شرکت cloudflare میتوانستید ایمیل دریافت کنید ولی ارسال نه
سرویس Cloudflare Email Service’s مشکل را با Cloudflare Workers حل کرد و حالا میتوانید ارسال هم داشته باشید
اطلاعات بیشتر
https://blog.cloudflare.com/email-service/
@DevTwitter | <MehrdadLinux/>
❤17🔥6
بچه هایی که میخوایید از تست XSS خیالتون راحت باشه تا روی بقیه آسیب پذیری ها متمرکز بشید حتما از Reflix استفاده کنید حتما هم با سوییچ -he اجرا کنید تا تستون کامل بشه ،
Github
github.com/nexovir/reflix
ReCommand :
reflix -l urls -X GET -c 15 --dom --headless --xss -pi -hi -he
@DevTwitter | <sardine web/>
Github
github.com/nexovir/reflix
ReCommand :
reflix -l urls -X GET -c 15 --dom --headless --xss -pi -hi -he
@DevTwitter | <sardine web/>
❤14👎8🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
اینقدر هر روز مدلهای خوب میاد بیرون که گاهی انتخاب سخت میشه. IBM یک مدل فوق سبک ولی فوق العاده با کیفیت از مدلهای vision-language model (VLM) به اسم Granite-Docling-258M داده بیرون. با اینکه فقط ۲۵۸ میلیون پارامتر داره ولی عالیه در OCR، استخراج فرمولهای ریاضی، کد وجدول از داکیومنت. همچین خیلی دقیق هست در تبدیل pdf به HTML با حفظ ساختار اصلی داکیومنت.
روی سیستم لوکال راحت اجرا میشه. و کلی کار جالب میتونید باهاش انجام بدید برای انواع اپلیکیشنها. برای اطلاعات کامل بلاگشون را بخونید که کلی خوندنیه. مدل هم روی HuggingFace هست که میدونید دانلود کنید و استفاده کنید.
https://www.ibm.com/new/announcements/granite-docling-end-to-end-document-conversion
@DevTwitter | <Mehdi Allahyari/>
روی سیستم لوکال راحت اجرا میشه. و کلی کار جالب میتونید باهاش انجام بدید برای انواع اپلیکیشنها. برای اطلاعات کامل بلاگشون را بخونید که کلی خوندنیه. مدل هم روی HuggingFace هست که میدونید دانلود کنید و استفاده کنید.
https://www.ibm.com/new/announcements/granite-docling-end-to-end-document-conversion
@DevTwitter | <Mehdi Allahyari/>
👍22❤9
ورژن جدید جاوااسکریپت ECMAScript 2026 یه متود جدید به اسم try به Promise اضافه کرده
باهاش میتونید یه تابع sync رو با ظاهر async اجرا کنید و فرقش با حالت then اینه که این همون لحظه اجرا میشه اما then اجرا رو به میکروتسک بعدی منتقل میکنه، یعنی کمی تأخیر داره.
@DevTwitter | <Nimo/>
باهاش میتونید یه تابع sync رو با ظاهر async اجرا کنید و فرقش با حالت then اینه که این همون لحظه اجرا میشه اما then اجرا رو به میکروتسک بعدی منتقل میکنه، یعنی کمی تأخیر داره.
@DevTwitter | <Nimo/>
❤36👍7
قصه غمانگیز هوش مصنوعی در ایران
ردههای بالای سازمانی دستور میدن که هوش مصنوعی رو وارد سازمان کنید.
ردههای میانی هم میان یه مشت داکیومنت از ته انبار ورمیدارن میارن میگن بیاید برای ما چتبات بسازید.
نه فکری...نه حساب کتابی...نه نیازسنجی...هیچی
@DevTwitter | <Reza Jafari/>
ردههای بالای سازمانی دستور میدن که هوش مصنوعی رو وارد سازمان کنید.
ردههای میانی هم میان یه مشت داکیومنت از ته انبار ورمیدارن میارن میگن بیاید برای ما چتبات بسازید.
نه فکری...نه حساب کتابی...نه نیازسنجی...هیچی
@DevTwitter | <Reza Jafari/>
👍144❤2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
علیبابا در رقابت با گوگل، مدل ادیت عکس وان۲.۵ با حداقل لزوم پرامپتنویسی و بیشترین درک تصویری رو منتشر کرده. پلتفرمهای زیادی هم این مدل را ارائه کردن.
@DevTwitter | <Setareh/>
@DevTwitter | <Setareh/>
🔥18👍6❤2
رفع هشدارهای Git GC (Garbage Collection)
گاهی وقتا موقع اجرای
این هشدارها یعنی ریپازیتوری شما پر از فایلهای قدیمی و objectهای غیرقابل دسترس شده. برای پاکسازی و بهینهسازی کافیه مراحل زیر رو انجام بدید:
مرحله ۱: پاک کردن لاگ قدیمی GC
مرحله ۲: حذف objectهای غیرقابل دسترس
مرحله ۳: اجرای Garbage Collection بهصورت کامل و تهاجمی
اگه بخواید همهی مراحل رو یکجا اجرا کنید:
بعد از این کار، ریپازیتوری سبکتر میشه و دیگه این هشدارها رو نمیبینید
@DevTwitter | <MrBardia72/>
گاهی وقتا موقع اجرای
git pull
یا git fetch
با پیامهای زیر مواجه میشید:warning: The last gc run reported the following. Please correct the root cause and remove .git/gc.log
warning: There are too many unreachable loose objects; run 'git prune' to remove them.
این هشدارها یعنی ریپازیتوری شما پر از فایلهای قدیمی و objectهای غیرقابل دسترس شده. برای پاکسازی و بهینهسازی کافیه مراحل زیر رو انجام بدید:
مرحله ۱: پاک کردن لاگ قدیمی GC
rm -f .git/gc.log
مرحله ۲: حذف objectهای غیرقابل دسترس
git prune
مرحله ۳: اجرای Garbage Collection بهصورت کامل و تهاجمی
git gc --aggressive --prune=now
اگه بخواید همهی مراحل رو یکجا اجرا کنید:
rm -f .git/gc.log && git prune && git gc --aggressive --prune=now
بعد از این کار، ریپازیتوری سبکتر میشه و دیگه این هشدارها رو نمیبینید
@DevTwitter | <MrBardia72/>
❤21👍11🔥1
این اپ اندرویدی Metrolist میتونه باعث بشه اسپاتیفای رو تمدید نکنم، خیلی خوبه
https://github.com/mostafaalagamy/Metrolist
@DevTwitter | <iman/>
https://github.com/mostafaalagamy/Metrolist
@DevTwitter | <iman/>
👍17👎8❤4
اگر دوست دارید توی یه پروژه نسبتاً ساده ببینید که الگوریتم Q-learning چطور کار می کنه، میتونید یه نگاهی به این مخزن بندازید.
https://github.com/naseridev/notch
@DevTwitter | <Nima Naseri/>
https://github.com/naseridev/notch
@DevTwitter | <Nima Naseri/>
👎11👍8❤1
This media is not supported in your browser
VIEW IN TELEGRAM
دو تا ابزار pgcli و mycli خیلی میتونه کار با دیتابیس هارو راحت تر و حتی امن تر کنه در محیط ترمینال
اولا که خیلی ux خوبی دارن و auto complete داره خیلی کارو راحت میکنه
دوما اینکه برای دستورات خطرناکی مثل آپدیت و حذف و غیره ازت یه تایید ثانویه دستور میگیره که خیلی ریسک اجرا رو کمتر میکنه اگه ریویو کنی دستور رو قبل از اجرا
pgcli
https://github.com/dbcli/pgcli
mycli
https://github.com/dbcli/mycli
@DevTwitter | <Hossein Nazari/>
اولا که خیلی ux خوبی دارن و auto complete داره خیلی کارو راحت میکنه
دوما اینکه برای دستورات خطرناکی مثل آپدیت و حذف و غیره ازت یه تایید ثانویه دستور میگیره که خیلی ریسک اجرا رو کمتر میکنه اگه ریویو کنی دستور رو قبل از اجرا
pgcli
https://github.com/dbcli/pgcli
mycli
https://github.com/dbcli/mycli
@DevTwitter | <Hossein Nazari/>
👍13👎4🔥3
واقعیت پنهان: PHP-FPM اغلب گلوگاه (bottleneck) اصلی اپلیکیشن های PHP است، نه Nginx!
بسیاری از تیم ها با دیدن خطای 502 یا 504، انگشت اتهام را به سمت Nginx می گیرند. اما در اغلب موارد، مشکل از کانفیگ نادرست PHP-FPM (FastCGI Process Manager) است.
PHP-FPM چگونه کار می کند؟
به زبان ساده:
هر Worker فقط یک درخواست را در لحظه پردازش می کند.
وقتی Worker آزاد نباشد، درخواست های جدید وارد یک صف (Queue) می شوند.
اگر این صف پر شود، خطای 502 Bad Gateway یا 504 Gateway Timeout رخ می دهد.
تنظیمات حیاتی برای عملکرد بهینه
1. مدیریت Concurrency بر اساس RAM، نه CPU
بزرگ ترین اشتباه، تنظیم max_children بر اساس تعداد هسته های CPU است. مصرف حافظه (RAM) هر Worker، عامل محدودکننده اصلی است.
فرمول صحیح:
max_children = (Total RAM for Pool) / (Avg RAM per Child)
2. انتخاب Process Manager (pm) مناسب
dynamic: بهترین گزینه برای اپلیکیشن های وب و API با ترافیک متغیر.
ondemand: ایده آل برای سرورهای کم ترافیک و با حافظه محدود.
static: فقط برای سرورهایی با بار کاری کاملاً پایدار و قابل پیش بینی.
3. حفاظت از منابع سرور
request_terminate_timeout: برای توقف خودکار اسکریپت های سرکش (runaway).
request_slowlog_timeout: برای شناسایی و لاگ گیری درخواست های کند و پیدا کردن گلوگاه ها.
pm.max_requests: برای جلوگیری از نشت حافظه (memory leak) در بلندمدت با ریستارت کردن Workerها.
4. بهینه سازی OPcache
OPcache اولین و مهم ترین خط دفاعی شما برای بهبود پرفورمنس است. همیشه حداقل ۲۰٪ از حافظه آن را آزاد نگه دارید. بدون OPcache، سرور شما به یک کارخانه کامپایل مجدد کد تبدیل می شود!
مطالعه موردی (اپلیکیشن Laravel با 8GB RAM)
حافظه تخصیص داده شده به PHP-FPM: 6GB
میانگین حافظه مصرفی هر Worker: ~120MB
محاسبه max_children: 6000MB / 120MB = 50 (برای اطمینان روی 44 تنظیم شد)
نتیجه: پایداری کامل در تست بار 120 RPS و حذف کامل خطاهای 502.
جمع بندی
مشکل از PHP-FPM نیست، بلکه از کانفیگ های پیش فرض و کپی شده است. با درک صحیح مدیریت حافظه، صف ها و OPcache، می توان به عملکردی پایدار و قابل پیش بینی دست یافت.
گام بعدی: اگر ماهیت کار شما (مانند پردازش های طولانی مدت یا real-time) با معماری FPM سازگار نیست، ابزارهایی مانند RoadRunner یا Swoole را بررسی کنید.
آیا تجربه ای در زمینه خطاهای ناشی از کانفیگ نادرست PHP-FPM داشته اید؟ راه حل شما چه بوده است؟
@DevTwitter | <Farzad Forouzanfar/>
بسیاری از تیم ها با دیدن خطای 502 یا 504، انگشت اتهام را به سمت Nginx می گیرند. اما در اغلب موارد، مشکل از کانفیگ نادرست PHP-FPM (FastCGI Process Manager) است.
PHP-FPM چگونه کار می کند؟
به زبان ساده:
هر Worker فقط یک درخواست را در لحظه پردازش می کند.
وقتی Worker آزاد نباشد، درخواست های جدید وارد یک صف (Queue) می شوند.
اگر این صف پر شود، خطای 502 Bad Gateway یا 504 Gateway Timeout رخ می دهد.
تنظیمات حیاتی برای عملکرد بهینه
1. مدیریت Concurrency بر اساس RAM، نه CPU
بزرگ ترین اشتباه، تنظیم max_children بر اساس تعداد هسته های CPU است. مصرف حافظه (RAM) هر Worker، عامل محدودکننده اصلی است.
فرمول صحیح:
max_children = (Total RAM for Pool) / (Avg RAM per Child)
2. انتخاب Process Manager (pm) مناسب
dynamic: بهترین گزینه برای اپلیکیشن های وب و API با ترافیک متغیر.
ondemand: ایده آل برای سرورهای کم ترافیک و با حافظه محدود.
static: فقط برای سرورهایی با بار کاری کاملاً پایدار و قابل پیش بینی.
3. حفاظت از منابع سرور
request_terminate_timeout: برای توقف خودکار اسکریپت های سرکش (runaway).
request_slowlog_timeout: برای شناسایی و لاگ گیری درخواست های کند و پیدا کردن گلوگاه ها.
pm.max_requests: برای جلوگیری از نشت حافظه (memory leak) در بلندمدت با ریستارت کردن Workerها.
4. بهینه سازی OPcache
OPcache اولین و مهم ترین خط دفاعی شما برای بهبود پرفورمنس است. همیشه حداقل ۲۰٪ از حافظه آن را آزاد نگه دارید. بدون OPcache، سرور شما به یک کارخانه کامپایل مجدد کد تبدیل می شود!
مطالعه موردی (اپلیکیشن Laravel با 8GB RAM)
حافظه تخصیص داده شده به PHP-FPM: 6GB
میانگین حافظه مصرفی هر Worker: ~120MB
محاسبه max_children: 6000MB / 120MB = 50 (برای اطمینان روی 44 تنظیم شد)
نتیجه: پایداری کامل در تست بار 120 RPS و حذف کامل خطاهای 502.
جمع بندی
مشکل از PHP-FPM نیست، بلکه از کانفیگ های پیش فرض و کپی شده است. با درک صحیح مدیریت حافظه، صف ها و OPcache، می توان به عملکردی پایدار و قابل پیش بینی دست یافت.
گام بعدی: اگر ماهیت کار شما (مانند پردازش های طولانی مدت یا real-time) با معماری FPM سازگار نیست، ابزارهایی مانند RoadRunner یا Swoole را بررسی کنید.
آیا تجربه ای در زمینه خطاهای ناشی از کانفیگ نادرست PHP-FPM داشته اید؟ راه حل شما چه بوده است؟
@DevTwitter | <Farzad Forouzanfar/>
🔥13👍11❤6👎1
کلودفلر ۱۳ سال پیش PHP رو از کد بیسشون حذف کردند
این هفته هم رفتند روی سرور rust بیسشون و همه چیز سریعتر و ایمنتر شده + پوستشون شفافتر شده
https://blog.cloudflare.com/20-percent-internet-upgrade/
@DevTwitter | <~/mj/>
این هفته هم رفتند روی سرور rust بیسشون و همه چیز سریعتر و ایمنتر شده + پوستشون شفافتر شده
https://blog.cloudflare.com/20-percent-internet-upgrade/
@DevTwitter | <~/mj/>
🔥52❤7👍5