اگه مثل من با tmux کار میکنید حتما herdr.dev رو یه نگاه بندازید. این روزا که از agentها استفاده میکنیم، کار کردن با herdr میتونه براتون جذاب باشه.
@DevTwitter | <Mohsen Khodabakhshi/>
@DevTwitter | <Mohsen Khodabakhshi/>
👍17🔥3👎2
اگه با Claude Code کار میکنید، این ابزار کلاد رو به یک برنامهنویس سنیور باهوش ولی تنبل تبدیل میکنه!
یعنی با کمترین میزان کد و تولید توکن، بهترین نتیجه و ایدهآلترین خروجی رو بهتون میده.
76.000 Star
4.000 Fork
https://github.com/DietrichGebert/ponytail
@DevTwitter | <Saeid/>
یعنی با کمترین میزان کد و تولید توکن، بهترین نتیجه و ایدهآلترین خروجی رو بهتون میده.
76.000 Star
4.000 Fork
https://github.com/DietrichGebert/ponytail
@DevTwitter | <Saeid/>
❤28👍9👎6
#کوته_نیوز
سیتنا یه تایملاین از تپههای مختلف هر بانک منتشر کرده که دیدنش خالی از لطف نیست
@DevTwitter
سیتنا یه تایملاین از تپههای مختلف هر بانک منتشر کرده که دیدنش خالی از لطف نیست
@DevTwitter
❤26👍8🍌2
قابلیت اضافه کردن جستجوی معنایی (Semantic Search) به وب سایتتون
یعنی به جای جستجوی دقیق کلمه "interدثا" معنی و مفهوم جمله را درک و متنهای مرتبط با اون را پیدا کنه
یک مدل تعبیهسازی متن (Embedding Model) جدید Ternlight با اندازهی (۷ مگابایت) کارش همینه
https://ternlight-demo.vercel.app
@DevTwitter | <MehrdadLinux/>
یعنی به جای جستجوی دقیق کلمه "interدثا" معنی و مفهوم جمله را درک و متنهای مرتبط با اون را پیدا کنه
یک مدل تعبیهسازی متن (Embedding Model) جدید Ternlight با اندازهی (۷ مگابایت) کارش همینه
https://ternlight-demo.vercel.app
@DevTwitter | <MehrdadLinux/>
🔥26❤6👍4
اگه با docker کار میکنید، احتمالاً درگیر زدن پشتسرهمِ دستوراتی مثل docker ps و docker logs --tail 50 هستید تا چندتا کانتینر رو همزمان مدیریت کنید. این کار هم خستهکنندهست و هم ترمینال رو به هم میریزه.
ابزار Lazydocker دقیقاً برای حل همین مشکل ساخته شده؛ یه TUI برای داکر و داکر کامپوز که تمام کارها رو با شورتکاتهای کیبورد براتون انجام میده.
- بدون switch کردن: همه چیز از مصرف منابع (RAMو CPU) تا لاگ کانتینرها به صورت زنده توی یه داشبورد یکپارچه نشون داده میشه.
- سرعت بالا با کیبورد: لاگ دیدن، ریاستارت کردن یا پاک کردن کانتینرها فقط با زدن یک دکمه کیبورد انجام میشه (بدون نیاز به موس).
- پشتیبانی کامل از Compose: سرویسهای داکر کامپوز رو هم به خوبی میشناسه و مدیریت میکنه.
- بدون کانفیگ: با زبان Go نوشته شده و فقط یه فایل اجرایی باینریه؛ نیازی به نصب سرور یا دیپندنسی اضافه نداره.
و خلاصه این ابزار سرعت کارتون رو چند برابر میکنه.
گیتهاب Lazydocker + آموزش نصبش: https://github.com/jesseduffield/lazydocker
@DevTwitter | <Matin SenPai/>
ابزار Lazydocker دقیقاً برای حل همین مشکل ساخته شده؛ یه TUI برای داکر و داکر کامپوز که تمام کارها رو با شورتکاتهای کیبورد براتون انجام میده.
- بدون switch کردن: همه چیز از مصرف منابع (RAMو CPU) تا لاگ کانتینرها به صورت زنده توی یه داشبورد یکپارچه نشون داده میشه.
- سرعت بالا با کیبورد: لاگ دیدن، ریاستارت کردن یا پاک کردن کانتینرها فقط با زدن یک دکمه کیبورد انجام میشه (بدون نیاز به موس).
- پشتیبانی کامل از Compose: سرویسهای داکر کامپوز رو هم به خوبی میشناسه و مدیریت میکنه.
- بدون کانفیگ: با زبان Go نوشته شده و فقط یه فایل اجرایی باینریه؛ نیازی به نصب سرور یا دیپندنسی اضافه نداره.
و خلاصه این ابزار سرعت کارتون رو چند برابر میکنه.
گیتهاب Lazydocker + آموزش نصبش: https://github.com/jesseduffield/lazydocker
@DevTwitter | <Matin SenPai/>
🍌15❤14🔥5
🍌92🔥10👍4
مدتی بود که از OpenCode استفاده میکردم و مشکلاتی توش دیدم که MiMoCode اونارو برطرف کرده. ولی خب خود MiMoCode هم یکسری مشکلاتی داشت در کنار مزایاش که تصمیم گرفتم رفعشون کنم
فورکش اوپن سورس شده، میتونید از npm یا بخش release خود GitHub دانلود و استفاده کنید
https://github.com/ZethRise/ZethCode
@DevTwitter | <GloryMajor/>
فورکش اوپن سورس شده، میتونید از npm یا بخش release خود GitHub دانلود و استفاده کنید
https://github.com/ZethRise/ZethCode
@DevTwitter | <GloryMajor/>
❤14👍6👎6
اگر با AI به صورت همزمان با git worktree روی کد کار میکنید، این onorca.dev برای شماست.
کلی امکانات ریز اما کاربردی داره و واقعاً توصیه میکنم. رایگانه و اپنسورس و به صورت فعال توسعه داده میشه. باعث شد اون محصول روی ترمینال که قبلاً استفاده میکردم رو بگذارم کنار.
@DevTwitter | <Hamed/>
کلی امکانات ریز اما کاربردی داره و واقعاً توصیه میکنم. رایگانه و اپنسورس و به صورت فعال توسعه داده میشه. باعث شد اون محصول روی ترمینال که قبلاً استفاده میکردم رو بگذارم کنار.
@DevTwitter | <Hamed/>
❤17👎3👍2
لینوکس Mint با دسکتاپ Mate بر پایه اوبونتو، یه توزیع سبک و سریع و پایداره که برای نصبش درگیر هیچ پیچیدگی و چالشی نمیشید!
همه چیز دم دسته و در ساده ترین حالت ممکن خودشه!
تمام نرم افزارها سریع باز میشن و پردازنده و حافظه در بهینه ترین حالت ممکن درگیر هستن.
بنظرم برای سیستم قدیمیم کار درستی کردم که سراغ دسکتاپهای Gnome و KDE نرفتم!
از همه مهمتر تجربه کار با هرمس برای من بهتر و سریعتر شده که خیلی برام دلپذیره.
@DevTwitter | <بوکانت/>
همه چیز دم دسته و در ساده ترین حالت ممکن خودشه!
تمام نرم افزارها سریع باز میشن و پردازنده و حافظه در بهینه ترین حالت ممکن درگیر هستن.
بنظرم برای سیستم قدیمیم کار درستی کردم که سراغ دسکتاپهای Gnome و KDE نرفتم!
از همه مهمتر تجربه کار با هرمس برای من بهتر و سریعتر شده که خیلی برام دلپذیره.
@DevTwitter | <بوکانت/>
👍56👎34🍌13
یک راهنمای جامع برای ایمنسازی سرور linux
این مخزن یک چکلیست عملی ارزشمند برای امن سازی سرور های لینوکسی است
https://github.com/imthenachoman/How-To-Secure-A-Linux-Server
@DevTwitter | <MehrdadLinux/>
این مخزن یک چکلیست عملی ارزشمند برای امن سازی سرور های لینوکسی است
https://github.com/imthenachoman/How-To-Secure-A-Linux-Server
@DevTwitter | <MehrdadLinux/>
❤22👍5
یک دایرکتوری عالی با بیش از 190 ابزار اوپنسورس که مستقیم در مرورگر اجرا میشوند بدون نیاز به ثبتنام و نصب
http://fcksignups.com
@DevTwitter | <Davinci/>
http://fcksignups.com
@DevTwitter | <Davinci/>
❤31👍5👎2
این آدما رو میشناسید؟
اینا اعضای یه شرکت به اسم Nullsoft هستن. همین تیم و به خصوص دو نفر به اسمهای Justin Frankel و Dmitry Boldyrev بودن که نرمافزار محبوب Winamp رو به وجود آوردن.
گفتم شاید بخواید سازندههای اون شاهکار بیتکرار رو از نزدیک ببینید...
@DevTwitter | <Behrad Javed/>
اینا اعضای یه شرکت به اسم Nullsoft هستن. همین تیم و به خصوص دو نفر به اسمهای Justin Frankel و Dmitry Boldyrev بودن که نرمافزار محبوب Winamp رو به وجود آوردن.
گفتم شاید بخواید سازندههای اون شاهکار بیتکرار رو از نزدیک ببینید...
@DevTwitter | <Behrad Javed/>
👍49❤34👎2
در دیجیکالا چطور خروجی اپهای iOS رو برای تست میزبانی میکنیم
حدود یک سال پیش یه سؤال ذهنم رو مشغول کرد: چرا کاری که Diawi انجام میده رو خودمون انجام ندیم؟
هر بار برای رسوندن یه بیلد Ad Hoc به دست تیم تست، وابسته بودیم به یه سرویس ثالث؛ لینکهایی که منقضی میشدن، محدودیت حجم فایل، و این نگرانی که فایل نصبی اپ روی سرور یه شرکت دیگه بنشینه.
از همونجا ایدهی «میزبان» (Mizban) شکل گرفت: یه راهحل ساده و self-hosted برای هاست کردن خروجیهای iOS (و Android) و نصب مستقیم روی دستگاه، بدون واسطه.
نتیجهش این شد:
- حذف کامل وابستگی به Diawi و سرویسهای مشابه
- بدون محدودیت حجم فایل و بدون انقضای لینک
- استخراج خودکار متادیتای اپ (نام، ورژن، Bundle ID، آیکون)
- گروهبندی بیلدها بر اساس Bundle ID
- دیپلوی بهصورت static site، بدون نیاز به بکاند
- نصب مستقیم iOS از طریق itms-services:// و دانلود مستقیم برای Android
خوشحالم که بعد از حدود یک سال استفادهی داخلی، نسخهی ابتدایی «میزبان» رو بهصورت متنباز (MIT) در اختیار عموم قرار دادیم:
https://github.com/mberneti/mizban
@DevTwitter | <Mohammadreza Berneti/>
حدود یک سال پیش یه سؤال ذهنم رو مشغول کرد: چرا کاری که Diawi انجام میده رو خودمون انجام ندیم؟
هر بار برای رسوندن یه بیلد Ad Hoc به دست تیم تست، وابسته بودیم به یه سرویس ثالث؛ لینکهایی که منقضی میشدن، محدودیت حجم فایل، و این نگرانی که فایل نصبی اپ روی سرور یه شرکت دیگه بنشینه.
از همونجا ایدهی «میزبان» (Mizban) شکل گرفت: یه راهحل ساده و self-hosted برای هاست کردن خروجیهای iOS (و Android) و نصب مستقیم روی دستگاه، بدون واسطه.
نتیجهش این شد:
- حذف کامل وابستگی به Diawi و سرویسهای مشابه
- بدون محدودیت حجم فایل و بدون انقضای لینک
- استخراج خودکار متادیتای اپ (نام، ورژن، Bundle ID، آیکون)
- گروهبندی بیلدها بر اساس Bundle ID
- دیپلوی بهصورت static site، بدون نیاز به بکاند
- نصب مستقیم iOS از طریق itms-services:// و دانلود مستقیم برای Android
خوشحالم که بعد از حدود یک سال استفادهی داخلی، نسخهی ابتدایی «میزبان» رو بهصورت متنباز (MIT) در اختیار عموم قرار دادیم:
https://github.com/mberneti/mizban
@DevTwitter | <Mohammadreza Berneti/>
🍌30👍22🔥6
سالهاست توسعه PHP بین دو دنیا تقسیم شده است
یا یک فریمورک که همهچیز را باید از صفر بسازی، یا یک CMS که آزادی توسعه را محدود میکند.
اما اگر مجبور نباشیم یکی از این دو را انتخاب کنیم، چه؟ پینوکس ۳ از همین سؤال متولد شد.
ایده ساده است: پروژه PHP خود را توسعه بده آن را به یک بسته قابل نصب .pinx تبدیل کن و روی هر پینوکس، بهسادگی نصب یا بهروزرسانی کن.
هدف پینوکس ساختن یک فربمورک دیگه نیست هدفش سادهتر کردن توسعه، انتشار و استقرار پروژه های PHP است.
از یک پروژه شخصی تا یک محصول بزرگ، پینوکس برای همه ساخته شده است. روی لوکال، داکر، هاست اشتراکی، سرور مجازی یا اختصاصی هر جا PHP اجرا شود، پینوکس هم اجرا میشود.
دیگه پیچیدگی انتشار، نصب و بهروزرسانی پروژه از دوش برنامهنویس برداشته میشه تا فاصله بین نوشتن کد و رسیدن آن به دست کاربر سادهتر بشه
با یک Star از پروژه حمایت کنید
github.com/pinoox/pinoox
@DevTwitter | <Yoosef Alipouri/>
یا یک فریمورک که همهچیز را باید از صفر بسازی، یا یک CMS که آزادی توسعه را محدود میکند.
اما اگر مجبور نباشیم یکی از این دو را انتخاب کنیم، چه؟ پینوکس ۳ از همین سؤال متولد شد.
ایده ساده است: پروژه PHP خود را توسعه بده آن را به یک بسته قابل نصب .pinx تبدیل کن و روی هر پینوکس، بهسادگی نصب یا بهروزرسانی کن.
هدف پینوکس ساختن یک فربمورک دیگه نیست هدفش سادهتر کردن توسعه، انتشار و استقرار پروژه های PHP است.
از یک پروژه شخصی تا یک محصول بزرگ، پینوکس برای همه ساخته شده است. روی لوکال، داکر، هاست اشتراکی، سرور مجازی یا اختصاصی هر جا PHP اجرا شود، پینوکس هم اجرا میشود.
دیگه پیچیدگی انتشار، نصب و بهروزرسانی پروژه از دوش برنامهنویس برداشته میشه تا فاصله بین نوشتن کد و رسیدن آن به دست کاربر سادهتر بشه
با یک Star از پروژه حمایت کنید
github.com/pinoox/pinoox
@DevTwitter | <Yoosef Alipouri/>
🍌27❤20👎6
یکی از قابلیتهای کمتر شناختهشدهی Laravel.
به جای حدس زدن اینکه یک تغییر باعث بهبود عملکرد شده یا نه، باید اندازهگیری کنی.
خیلی اوقات ما تغییراتی توی کد میدیم و براساس تجربیات دیگران یا داکیومنت حس میکنیم سریعتر شده.
گاهی جواب نمیده، ساعتها وقت صرف Refactor میکنیم اما در نهایت تفاوت عملکرد یا ناچیزه یا حتی بدتر از قبل!
با Benchmark میتونی دو یا چند پیادهسازی مختلف رو کنار هم اجرا کنی و زمان واقعی اجرای هر کدوم رو ببینی.
این دقیقا تفاوت بین Optimization و Guessing هست. بهینهسازی واقعی با احساس انجام نمیشه، با داده انجام میشه.
اگر تا امروز از Benchmark استفاده نکردی، احتمالا ارزش داره توی پروژه بعدیت امتحانش کنی
@DevTwitter | <Ehsan Rezaei/>
به جای حدس زدن اینکه یک تغییر باعث بهبود عملکرد شده یا نه، باید اندازهگیری کنی.
خیلی اوقات ما تغییراتی توی کد میدیم و براساس تجربیات دیگران یا داکیومنت حس میکنیم سریعتر شده.
گاهی جواب نمیده، ساعتها وقت صرف Refactor میکنیم اما در نهایت تفاوت عملکرد یا ناچیزه یا حتی بدتر از قبل!
با Benchmark میتونی دو یا چند پیادهسازی مختلف رو کنار هم اجرا کنی و زمان واقعی اجرای هر کدوم رو ببینی.
این دقیقا تفاوت بین Optimization و Guessing هست. بهینهسازی واقعی با احساس انجام نمیشه، با داده انجام میشه.
اگر تا امروز از Benchmark استفاده نکردی، احتمالا ارزش داره توی پروژه بعدیت امتحانش کنی
@DevTwitter | <Ehsan Rezaei/>
❤23👍6👎1
چالش Race Condition: رقابت بین درخواستهای همزمان در مایکروسرویسها:
ما از مایکروسرویس استفاده می کنیم تا از مزایای همزمانی بهره ببریم پس باید سعی کنیم چالشهاشو با روشی حل کنیم که باعث «کاهش همزمانی» نشود.
فرض میکنیم ۱۰ درخواست همزمان داریم،
روشهای جلوگیری از Race Condition:
۱- استفاده از Redis Lock:
اولین درخواست پاسخ داده میشود و به ۹ تای دیگر خطای 429 Too Many Requests داده میشود که باعث از دست رفتن درخواستها میشود.
۲- استفاده از RowVersion:
اولین درخواست پاسخ داده میشود و ۹ تای دیگر از دیتابیس خطای DbUpdateConcurrencyException دریافت میکنند که باعث از دست رفتن درخواستها میشود.
۳- ایجاد صف در Redis:
با استفاده از ListRightPushAsync همهی درخواستهای همزمان را در یک لیست در Redis ثبت میکنیم و سپس توسط یک BackgroundService، یکی یکی با متد ListLeftPopAsync از لیست میخوانیم و پاسخ میدهیم.
مزیت این روش نسبت به دو روش قبلی این است که باعث از دست رفتن درخواستها نمیشود ولی به دلیل استفاده از صف، باعث «کاهش همزمانی» میشود.
۴- استفاده از Concurrency Limiter در Asp.net:
با اضافه کردن سرویس AddRateLimiter پردازش همزمان را به یک درخواست محدود میکنیم و ۹ تای دیگر را در صف قرار میگیرند، که به دلیل استفاده از صف، باعث «کاهش همزمانی» میشود.
@DevTwitter | <Mahnaz Azad/>
ما از مایکروسرویس استفاده می کنیم تا از مزایای همزمانی بهره ببریم پس باید سعی کنیم چالشهاشو با روشی حل کنیم که باعث «کاهش همزمانی» نشود.
فرض میکنیم ۱۰ درخواست همزمان داریم،
روشهای جلوگیری از Race Condition:
۱- استفاده از Redis Lock:
اولین درخواست پاسخ داده میشود و به ۹ تای دیگر خطای 429 Too Many Requests داده میشود که باعث از دست رفتن درخواستها میشود.
۲- استفاده از RowVersion:
اولین درخواست پاسخ داده میشود و ۹ تای دیگر از دیتابیس خطای DbUpdateConcurrencyException دریافت میکنند که باعث از دست رفتن درخواستها میشود.
۳- ایجاد صف در Redis:
با استفاده از ListRightPushAsync همهی درخواستهای همزمان را در یک لیست در Redis ثبت میکنیم و سپس توسط یک BackgroundService، یکی یکی با متد ListLeftPopAsync از لیست میخوانیم و پاسخ میدهیم.
مزیت این روش نسبت به دو روش قبلی این است که باعث از دست رفتن درخواستها نمیشود ولی به دلیل استفاده از صف، باعث «کاهش همزمانی» میشود.
۴- استفاده از Concurrency Limiter در Asp.net:
با اضافه کردن سرویس AddRateLimiter پردازش همزمان را به یک درخواست محدود میکنیم و ۹ تای دیگر را در صف قرار میگیرند، که به دلیل استفاده از صف، باعث «کاهش همزمانی» میشود.
@DevTwitter | <Mahnaz Azad/>
❤27👍6👎3
مدتی میشه که مشغول یادگیری Golang هستم و تصمیم گرفته بودم از همون ابتدا پروژه محور پیش برم؛ برای همین تصمیم گرفتم یه API Gateway بنویسم.
اصلی ترین دلیلی که این پروژه رو شروع کردم یادگیری و تسلط بیشتر روی زبان Golang بودش،
اما خیلی بیشتر از چیزی که فکر میکردم دانش و اطلاعات بهم اضافه کرد.
از نحوه پیاده سازی Rate limiter و الگوریتمهای مختلفش گرفته، سازوکار Reverse Proxy، طراحی Load Balancer هوشمند با Health Check همزمان، و نکات Graceful Shutdown آشنا شدم
البته هنوز یه سری فیچر ها هستش که در آینده حتما اضافشون میکنم (JWT Authentication، intelligent caching و ...)
لینک ریپوی پروژه
https://github.com/LigerTheTextRovert/nexus
@DevTwitter | <Abolfazl Samarghandi/>
اصلی ترین دلیلی که این پروژه رو شروع کردم یادگیری و تسلط بیشتر روی زبان Golang بودش،
اما خیلی بیشتر از چیزی که فکر میکردم دانش و اطلاعات بهم اضافه کرد.
از نحوه پیاده سازی Rate limiter و الگوریتمهای مختلفش گرفته، سازوکار Reverse Proxy، طراحی Load Balancer هوشمند با Health Check همزمان، و نکات Graceful Shutdown آشنا شدم
البته هنوز یه سری فیچر ها هستش که در آینده حتما اضافشون میکنم (JWT Authentication، intelligent caching و ...)
لینک ریپوی پروژه
https://github.com/LigerTheTextRovert/nexus
@DevTwitter | <Abolfazl Samarghandi/>
❤36👍8🔥5
اگه نیاز دارید که OCR یا استخراج اطلاعات از فایلهای PDF در اسکیل بالا انجام بدید بهترین راه اینه که pipeline خودتون را داشته باشید با مدلهای اپن سورس. اینجوری هم هزینه بسیار پایین میاد و هم اینکه از لحاظ امنیت و privacy دیگه نگران نیستید که اطلاعات بره روی cloud یک شرکت دیگه.
این بلاگ را بخونید که هزینه این کار برای ۱۱۶۰۰۰ صفحه کمتر از ۵ دلار شده در مقایسه با ۱۱۶۰ دلار اگه از Azure استفاده میکردند.
Blg: https://blueguardrails.com/en/blog/high-throughput-vlm-ocr
@DevTwitter | <Mehdi Allahyari/>
این بلاگ را بخونید که هزینه این کار برای ۱۱۶۰۰۰ صفحه کمتر از ۵ دلار شده در مقایسه با ۱۱۶۰ دلار اگه از Azure استفاده میکردند.
Blg: https://blueguardrails.com/en/blog/high-throughput-vlm-ocr
@DevTwitter | <Mehdi Allahyari/>
👍31❤7🍌4
دیروز کنجکاو شدم رفتم سمت سروش پلاس و مهندسی معکوسش کردم، از mtproto استفاده میکنه.
با معماری تلگرام یه مقدار فرق داشت ولی telethon رو ادیت کردم و تبدیلش کردم به کلاینت سروش پلاس، بعدش هم تو گیت هاب منتشرش کردم.
github.com/shayanheidari01/SPlusthon
اگه دوست داشتید مخزن گیتهاب رو ستاره بزنید
@DevTwitter | <Shayan/>
با معماری تلگرام یه مقدار فرق داشت ولی telethon رو ادیت کردم و تبدیلش کردم به کلاینت سروش پلاس، بعدش هم تو گیت هاب منتشرش کردم.
github.com/shayanheidari01/SPlusthon
اگه دوست داشتید مخزن گیتهاب رو ستاره بزنید
@DevTwitter | <Shayan/>
🍌116🔥22👍7
برای زیرنویس فارسی یوتیوب ابزار زیاد هست اما خیلیها API پولی میخوان به سرم زد یه راه سادهتر بسازم با این اکستنشن زیرنویس اصلی رو JSON میگیری میدی به هر مدل AI برای ترجمه JSON فارسی رو آپلود میکنی تمام
https://github.com/Omidzamani11/omid-youtube-fa-subtitle
@DevTwitter | <Omid Zamani/>
https://github.com/Omidzamani11/omid-youtube-fa-subtitle
@DevTwitter | <Omid Zamani/>
❤40🍌6👎2