یکی یه پروژه ساخته که با فشرده کردن توکن ورودی و تبدیلش به عکس تا ۱۰ برابر تو هزینه استفاده از fable و مدلهای دیگه صرفهجویی میکنه :)
اصل ایده هم از مقالهای میاد که Deepseek سال پیش منتشر کرده بود و حتی این ایده مطرح شده بود که کانتکس جدید رو به صورت high-fidelity نگهداری کنیم و هر چی که دیتا قدیمیتر میشه به جای compress کردنش، اون قسمت عکس رو تار تَر کنیم دقیقا مدلی که خاطرات تو مغز ما یادآوری میشه!
لینک پروژه: https://github.com/teamchong/pxpipe…
لینک مقاله: https://github.com/deepseek-ai/DeepSeek-OCR/blob/main/DeepSeek_OCR_paper.pdf
@DevTwitter | <Amir/>
اصل ایده هم از مقالهای میاد که Deepseek سال پیش منتشر کرده بود و حتی این ایده مطرح شده بود که کانتکس جدید رو به صورت high-fidelity نگهداری کنیم و هر چی که دیتا قدیمیتر میشه به جای compress کردنش، اون قسمت عکس رو تار تَر کنیم دقیقا مدلی که خاطرات تو مغز ما یادآوری میشه!
لینک پروژه: https://github.com/teamchong/pxpipe…
لینک مقاله: https://github.com/deepseek-ai/DeepSeek-OCR/blob/main/DeepSeek_OCR_paper.pdf
@DevTwitter | <Amir/>
🔥82👍12👎3
اگه Vibe Coder هستید و خروجی فرانتاندی که از Claude تحویل میگیرید همش تکراریه و AI Slope میشه، مشکل از مدل نیست؛ مشکل اینه که دارید بدون Design Direction و Skills، بهش پرامپت میدید.
مدل بهصورت پیشفرض میره سمت امنترین انتخابها: Inter، کارتهای گرد، Heroهای تکراری، Layoutهای قابل پیشبینی و CTAهای کلیشهای.
چند تا کار ساده (جدا از اضافه کردن Skills و Plugins) که واقعاً تفاوت ایجاد میکنن:
1. از Cookbook خود Anthropic استفاده کنید:
https://platform.claude.com/cookbook/coding-prompting-for-frontend-aesthetics
مثلاً این رو به System Prompt اضافه کنید:
<frontend_aesthetics>
Avoid generic AI aesthetics. Choose distinctive fonts instead of Inter, Roboto or system fonts. Commit to one clear aesthetic direction. Use dominant colors with sharp accents. Avoid predictable layouts and clichéd patterns like purple gradients. Make unexpected but deliberate choices.
</frontend_aesthetics>
2. سعی کنید Design Tokens بدید، نه توصیف کلی.
بهجای اینکه بگید یه سایت مینیمال و ... برای فلان بساز، اینا رو مشخص کنید:
- Spacing Scale
- Border Radius
- Typography Scale
- Color Palette
- Shadow Rules
وقتی Token داشته باشه، کمتر تصمیمهای پیشفرض خودش رو اعمال میکنه.
3. برای فونت تصمیم بگیرید.
مثلاً:
Use Satoshi for UI, Clash Display for headings and IBM Plex Mono for code. Never use Inter.
4. رفرنس تصویری بدید.
دو سه تا اسکرینشات از سایتهایی که دوست دارید آپلود کنید و بگید:
Borrow the visual language, not the layout.
این خیلی بهتر از اینه که فقط بگید «مثل Apple» یا «مینیمال».
5. همه موارد رو توی یک پرامپت نفرستید، چند مرحلهای Iterate کنید.
اول Skeleton و Layout، بعد Typography، بعد Spacing، بعد Motion و Micro-interactions. انتظار نداشته باشید همهچیز با یه Prompt عالی بشه.
6. ازش بخواید از انتخابهاش دفاع کنه.
مثلاً:
Explain every typography, spacing and color decision before generating the code.
اینم باعث میشه کمتر سراغ انتخابهای کلیشهای بره.
همین چند تا تغییر ساده باعث میشه خروجی خیلی کمتر حس «AI-generated» داشته باشه.
@DevTwitter | <گیکزهرا/>
مدل بهصورت پیشفرض میره سمت امنترین انتخابها: Inter، کارتهای گرد، Heroهای تکراری، Layoutهای قابل پیشبینی و CTAهای کلیشهای.
چند تا کار ساده (جدا از اضافه کردن Skills و Plugins) که واقعاً تفاوت ایجاد میکنن:
1. از Cookbook خود Anthropic استفاده کنید:
https://platform.claude.com/cookbook/coding-prompting-for-frontend-aesthetics
مثلاً این رو به System Prompt اضافه کنید:
<frontend_aesthetics>
Avoid generic AI aesthetics. Choose distinctive fonts instead of Inter, Roboto or system fonts. Commit to one clear aesthetic direction. Use dominant colors with sharp accents. Avoid predictable layouts and clichéd patterns like purple gradients. Make unexpected but deliberate choices.
</frontend_aesthetics>
2. سعی کنید Design Tokens بدید، نه توصیف کلی.
بهجای اینکه بگید یه سایت مینیمال و ... برای فلان بساز، اینا رو مشخص کنید:
- Spacing Scale
- Border Radius
- Typography Scale
- Color Palette
- Shadow Rules
وقتی Token داشته باشه، کمتر تصمیمهای پیشفرض خودش رو اعمال میکنه.
3. برای فونت تصمیم بگیرید.
مثلاً:
Use Satoshi for UI, Clash Display for headings and IBM Plex Mono for code. Never use Inter.
4. رفرنس تصویری بدید.
دو سه تا اسکرینشات از سایتهایی که دوست دارید آپلود کنید و بگید:
Borrow the visual language, not the layout.
این خیلی بهتر از اینه که فقط بگید «مثل Apple» یا «مینیمال».
5. همه موارد رو توی یک پرامپت نفرستید، چند مرحلهای Iterate کنید.
اول Skeleton و Layout، بعد Typography، بعد Spacing، بعد Motion و Micro-interactions. انتظار نداشته باشید همهچیز با یه Prompt عالی بشه.
6. ازش بخواید از انتخابهاش دفاع کنه.
مثلاً:
Explain every typography, spacing and color decision before generating the code.
اینم باعث میشه کمتر سراغ انتخابهای کلیشهای بره.
همین چند تا تغییر ساده باعث میشه خروجی خیلی کمتر حس «AI-generated» داشته باشه.
@DevTwitter | <گیکزهرا/>
❤54🍌23👍10
نسخه جدید دانلود منجر Firelink منتشر شد:
- برای مک (arm)٬ ویندوز و لینوکس ۶۴ بیتی (Rust +Tauri)
- اکستنشن فایرفاکس
- دانلود پرسرعت با aria2
- دانلود از یوتیوب٬ توییتر٬ اینستاگرم و غیره با yt-dlp (و استفاده از Deno و FFmpeg)
https://github.com/nimbold/Firelink
@DevTwitter | <Nima/>
- برای مک (arm)٬ ویندوز و لینوکس ۶۴ بیتی (Rust +Tauri)
- اکستنشن فایرفاکس
- دانلود پرسرعت با aria2
- دانلود از یوتیوب٬ توییتر٬ اینستاگرم و غیره با yt-dlp (و استفاده از Deno و FFmpeg)
https://github.com/nimbold/Firelink
@DevTwitter | <Nima/>
🔥35❤7🍌2
چند روزه میبینم همه دارن در مورد whisper حرف میزنن. خواستم بگم یه ساله برای تبدیل گفتار به متن از Handy استفاده میکنم و واقعاً بیرقیبه.
کاملاً آفلاین با پشتیبانی دقیق از فارسی. حرف زدن با کامپیوترو خیلی ساده میکنه.
https://github.com/cjpais/handy
فقط کافیه شورتکات رو نگه دارید، صحبت کنید و رها کنید تا براتون تایپ کنه.
اگر دنبال یه ابزار STT بیدردسر و رایگان برای لینوکس، مک یا ویندوز هستید، حتماً تستش کنید.
@DevTwitter | <Bloody Crow of Painhurts/>
کاملاً آفلاین با پشتیبانی دقیق از فارسی. حرف زدن با کامپیوترو خیلی ساده میکنه.
https://github.com/cjpais/handy
فقط کافیه شورتکات رو نگه دارید، صحبت کنید و رها کنید تا براتون تایپ کنه.
اگر دنبال یه ابزار STT بیدردسر و رایگان برای لینوکس، مک یا ویندوز هستید، حتماً تستش کنید.
@DevTwitter | <Bloody Crow of Painhurts/>
👍49❤15🔥4
میدانید Mermaid چیه؟
اگه تا حالا خواستی یه فلوچارت، دیاگرام کلاس، یا sequence diagram رسم کنی — Mermaid دقیقاً برای اینه. بهجای کشیدن با ماوس، چند خط متن ساده مینویسی و یه دیاگرام زیبا میگیری. میتونی همین الان توی مرورگر امتحانش کنی: mermaid.live
دو پکیج پایتونی برای رندر Mermaid — بدون نیاز به مرورگر
معمولاً برای رندر Mermaid باید Node.js، npm و یه مرورگر headless روی سیستمت نصب باشه.
این دو پکیج این مشکل رو حل میکنن:
1. پکیج mmdc — همون Mermaid اصلی، بدون Node.js
این پکیج از همون mermaid.min.js رسمی استفاده میکنه — یعنی خروجی با mermaid.live یکسانه. زیر هود از phasma استفاده میکنه که یه PhantomJS سبک رو بدون نیاز به نصب هیچ چیزی روی سیستم اجرا میکنه. فقط pip install mmdc — تمام.
2. پکیج mmdr — بازنویسی mermaidjs به Rust، که ۱۰۰–۱۴۰۰ برابر سریعتر
این پکیج یه پیادهسازی native از Mermaid توی Rust هست. نه JS، نه مرورگر، نه هیچی — مستقیم کامپایلشده. دو backend داره، خروجی SVG، PNG، NumPy array میده و با pip install خالی نصب میشه.
اگه میخوای خروجی مطابق با Mermaid رسمی باشه → mmdc اگه سرعت و سبکی مهمه و دیاگرامهات رایجن → mmdr
لینک های گیت هاب:
https://github.com/mohammadraziei/mmdc
https://github.com/mohammadraziei/mmdr
https://github.com/mohammadraziei/phasma
@DevTwitter | <Mohammad Raziei/>
اگه تا حالا خواستی یه فلوچارت، دیاگرام کلاس، یا sequence diagram رسم کنی — Mermaid دقیقاً برای اینه. بهجای کشیدن با ماوس، چند خط متن ساده مینویسی و یه دیاگرام زیبا میگیری. میتونی همین الان توی مرورگر امتحانش کنی: mermaid.live
دو پکیج پایتونی برای رندر Mermaid — بدون نیاز به مرورگر
معمولاً برای رندر Mermaid باید Node.js، npm و یه مرورگر headless روی سیستمت نصب باشه.
این دو پکیج این مشکل رو حل میکنن:
1. پکیج mmdc — همون Mermaid اصلی، بدون Node.js
این پکیج از همون mermaid.min.js رسمی استفاده میکنه — یعنی خروجی با mermaid.live یکسانه. زیر هود از phasma استفاده میکنه که یه PhantomJS سبک رو بدون نیاز به نصب هیچ چیزی روی سیستم اجرا میکنه. فقط pip install mmdc — تمام.
pip install mmdc
mmdc -i diagram.mmd -o output.svg
2. پکیج mmdr — بازنویسی mermaidjs به Rust، که ۱۰۰–۱۴۰۰ برابر سریعتر
این پکیج یه پیادهسازی native از Mermaid توی Rust هست. نه JS، نه مرورگر، نه هیچی — مستقیم کامپایلشده. دو backend داره، خروجی SVG، PNG، NumPy array میده و با pip install خالی نصب میشه.
pip install mmdr
mmdr -i diagram.mmd -o output.svg
اگه میخوای خروجی مطابق با Mermaid رسمی باشه → mmdc اگه سرعت و سبکی مهمه و دیاگرامهات رایجن → mmdr
لینک های گیت هاب:
https://github.com/mohammadraziei/mmdc
https://github.com/mohammadraziei/mmdr
https://github.com/mohammadraziei/phasma
@DevTwitter | <Mohammad Raziei/>
❤17🔥2👎1
اگه تو این شرایط اقتصادی دنبال راهکارهای کمهزینه یا حتی بدون هزینه برای کار با AI میگردین، 9Router میتونه شدیداً کمکتون کنه.
داستانش اینه: وقتی با ابزارهایی مثل Cursor، Claude Code، Codex یا Cline کار میکنین، معمولاً باید بین مدلها، API Keyها، محدودیتها و هزینهها هی جابهجا بشین.
9Router میاد وسط و مثل یه مسیردهنده هوشمند عمل میکنه؛ درخواستتون رو میگیره و خودش میفرسته سمت بهترین گزینه. اگه یه سرویس محدود شد، خطا داد یا گرون بود، میتونه بره سراغ گزینههای ارزونتر یا رایگان.
یعنی بهجای اینکه دستی بین چند مدل بچرخین، یه لایه میذارین وسط که مصرف، هزینه و محدودیتها رو بهتر مدیریت کنه.
برای کسایی که زیاد با AI کد میزنن، واقعاً کاربردیه.
سایت:
https://9router.com
GitHub:
https://github.com/decolua/9router
@DevTwitter | <Pedram/>
داستانش اینه: وقتی با ابزارهایی مثل Cursor، Claude Code، Codex یا Cline کار میکنین، معمولاً باید بین مدلها، API Keyها، محدودیتها و هزینهها هی جابهجا بشین.
9Router میاد وسط و مثل یه مسیردهنده هوشمند عمل میکنه؛ درخواستتون رو میگیره و خودش میفرسته سمت بهترین گزینه. اگه یه سرویس محدود شد، خطا داد یا گرون بود، میتونه بره سراغ گزینههای ارزونتر یا رایگان.
یعنی بهجای اینکه دستی بین چند مدل بچرخین، یه لایه میذارین وسط که مصرف، هزینه و محدودیتها رو بهتر مدیریت کنه.
برای کسایی که زیاد با AI کد میزنن، واقعاً کاربردیه.
سایت:
https://9router.com
GitHub:
https://github.com/decolua/9router
@DevTwitter | <Pedram/>
👍23👎16❤8
اگه به داستانهای استارتاپ ها علاقهمندین، حتما این سایت رو چک کنین.
ماجرای استارتاپ های شات دان شده رو میگه و آنالیزشون میکنه.
https://www.failory.com/
@DevTwitter | <Black State/>
ماجرای استارتاپ های شات دان شده رو میگه و آنالیزشون میکنه.
https://www.failory.com/
@DevTwitter | <Black State/>
❤27👍7
سالهاست برای جستجوهای پیچیده در APIها یک مشکل وجود دارد:
با GET باید همه فیلترها را داخل URL قرار دهیم. اگر تعداد فیلترها زیاد شود، URL هم طولانی و ناخوانا میشود و حتی ممکن است به محدودیت طول URL بخوریم.
از طرف دیگر، استفاده از POST هم از نظر مفهوم درست نیست؛ چون قرار نیست دادهای ایجاد یا ویرایش شود، فقط میخواهیم اطلاعات را بخوانیم.
به همین دلیل متد جدید QUERY به HTTP اضافه شده است.
با QUERY میتوان درخواستهای جستجوی پیچیده را داخل Body ارسال کرد، بدون اینکه مفهوم "درخواست فقط برای خواندن داده" از بین برود.
فعلاً تا پشتیبانی کامل مرورگرها، سرورها و فریمورکها زمان مانده، اما به نظرم این یکی از منطقیترین تغییراتی است که بعد از سالها به HTTP اضافه شده است.
@DevTwitter | <Mohammad Hosseini/>
با GET باید همه فیلترها را داخل URL قرار دهیم. اگر تعداد فیلترها زیاد شود، URL هم طولانی و ناخوانا میشود و حتی ممکن است به محدودیت طول URL بخوریم.
از طرف دیگر، استفاده از POST هم از نظر مفهوم درست نیست؛ چون قرار نیست دادهای ایجاد یا ویرایش شود، فقط میخواهیم اطلاعات را بخوانیم.
به همین دلیل متد جدید QUERY به HTTP اضافه شده است.
با QUERY میتوان درخواستهای جستجوی پیچیده را داخل Body ارسال کرد، بدون اینکه مفهوم "درخواست فقط برای خواندن داده" از بین برود.
فعلاً تا پشتیبانی کامل مرورگرها، سرورها و فریمورکها زمان مانده، اما به نظرم این یکی از منطقیترین تغییراتی است که بعد از سالها به HTTP اضافه شده است.
@DevTwitter | <Mohammad Hosseini/>
❤60👍13🍌1
دیگه فک میکنم پروژه ای که 3 سال پیش به نام c_std شروع کردم . به بلوغ و بزرگی کامل رسیده . اینقدری شده که یه توسعه دهنده تو زبان C بتونه ازش بدون نگرانی استفاده کنه .
سورس : https://github.com/KaisenAmin/c_std
اگه بخوام بعضی از قابلیت هاشو بگم به همین چند مورد بسنده میکنم :
1 - از بخش بزرگی از کتابخونهی استاندارد C++ STL (مثل کانتینرها، الگوریتمها، Smart Pointerها و ...) بههمراه مجموعهای از ابزارهای الهامگرفته از کتابخونهی استاندارد Python (مثل statistics، random، json، regex و ...) هست؛ همهچیز بدون خارج شدن از اکوسیستم C.
2 - تمام ماژولها و مثالها با Valgrind تست شدن:0 Leak و 0 Error
3 - قابل کامپایل و اجرا روی Windows (MSVC و MinGW) و Linux (GCC و Clang)
4 - بیش از ۴۰ ماژول؛ از vector و hashmap گرفته تا JSON، شبکه (TCP / UDP / HTTP)، رمزنگاری، JWT
5 - و APIهایی آشنا، با الهام از STL در ++C و کتابخونهی استاندارد Python
6 - برنامه نویسی گرافیک با استفاده از ماژول هایی مثل Plot, Turtle با کمک raylib
7 - دسترسی به اطلاعات سخت افزار با کتابخانه هایی مثل sysinfo
@DevTwitter | <amin tahmasebi/>
سورس : https://github.com/KaisenAmin/c_std
اگه بخوام بعضی از قابلیت هاشو بگم به همین چند مورد بسنده میکنم :
1 - از بخش بزرگی از کتابخونهی استاندارد C++ STL (مثل کانتینرها، الگوریتمها، Smart Pointerها و ...) بههمراه مجموعهای از ابزارهای الهامگرفته از کتابخونهی استاندارد Python (مثل statistics، random، json، regex و ...) هست؛ همهچیز بدون خارج شدن از اکوسیستم C.
2 - تمام ماژولها و مثالها با Valgrind تست شدن:0 Leak و 0 Error
3 - قابل کامپایل و اجرا روی Windows (MSVC و MinGW) و Linux (GCC و Clang)
4 - بیش از ۴۰ ماژول؛ از vector و hashmap گرفته تا JSON، شبکه (TCP / UDP / HTTP)، رمزنگاری، JWT
5 - و APIهایی آشنا، با الهام از STL در ++C و کتابخونهی استاندارد Python
6 - برنامه نویسی گرافیک با استفاده از ماژول هایی مثل Plot, Turtle با کمک raylib
7 - دسترسی به اطلاعات سخت افزار با کتابخانه هایی مثل sysinfo
@DevTwitter | <amin tahmasebi/>
🔥81❤14🍌11
علیبابا پروژه متنبازی به نام Page-Agent منتشر کرده که با یک اسکریپت ساده، یک Agent هوش مصنوعی را مستقیماً داخل صفحات وب قرار میدهد برخلاف بسیاری از Browser Agentها به جای اسکرینشات و Computer Vision مستقیماً با DOM صفحه کار میکند
https://github.com/alibaba/page-agent
@DevTwitter | <Davinchi/>
https://github.com/alibaba/page-agent
@DevTwitter | <Davinchi/>
👍37👎2🍌2
یه مهندس گوگل، یه ابزار خیلی کاربردی ساخت به اسم gws؛ یه command line tool که کل Google Workspace (جیمیل، درایو، کلندر، شیت، داکس) رو از طریق ترمینال قابل مدیریت میکرد، بدون نیاز به باز کردن مرورگر.
این ابزار بهشدت وایرال شد، رتبه اول Hacker News رو گرفت و در چند روز هزاران استار تو گیتهاب جمع کرد.
بعدش ماجرا عجیبتر شد:
فقط دو روز قبل از اینکه این مهندس اخراج بشه، خود گوگل رسماً نسخه اختصاصی خودش از این CLI رو تو یه کنفرانس بزرگ (با بیش از ۳۲ هزار شرکتکننده) معرفی کرد!
یه مهندس ارشد دیگه که علناً از این ابزار تعریف کرده بود هم تقریباً همون موقع از گوگل رفت. هیچ توضیح رسمیای هم درباره ارتباط این اتفاقات داده نشده.
https://explainx.ai/blog/google-fires-engineer-workspace-cli-viral-hacker-news-2026
https://github.com/googleworkspace/cli
@DevTwitter | <^mad/>
این ابزار بهشدت وایرال شد، رتبه اول Hacker News رو گرفت و در چند روز هزاران استار تو گیتهاب جمع کرد.
بعدش ماجرا عجیبتر شد:
فقط دو روز قبل از اینکه این مهندس اخراج بشه، خود گوگل رسماً نسخه اختصاصی خودش از این CLI رو تو یه کنفرانس بزرگ (با بیش از ۳۲ هزار شرکتکننده) معرفی کرد!
یه مهندس ارشد دیگه که علناً از این ابزار تعریف کرده بود هم تقریباً همون موقع از گوگل رفت. هیچ توضیح رسمیای هم درباره ارتباط این اتفاقات داده نشده.
https://explainx.ai/blog/google-fires-engineer-workspace-cli-viral-hacker-news-2026
https://github.com/googleworkspace/cli
@DevTwitter | <^mad/>
🍌30💔15❤8
چند وقت پیش تو یه مصاحبه کاری، یه سوال پرسیدن که کاملاً جا خوردم: "با gRPC کار کردی؟"
با صداقت گفتم: "نه، اصلاً نمیدونم چیه." یه لحظه سکوت... و از اون مصاحبه که بیرون اومدم یه چیزی تو ذهنم قفل شده بود: "باید بفهمم این چیه."
اون حس ناراحتکنندهی «ندونستن» تو یه مصاحبه، شد یکی از بهترین موتورهای یادگیریم. رفتم سراغ مطالعهی عمیق gRPC، از مشکلات REST و HTTP/1.1 شروع کردم، تا رسیدم به Protobuf، HTTP/2 Multiplexing، و انواع Streaming Pattern هاش.
چیزی که خودم رو غافلگیر کرد این بود که gRPC-Web (نسخهی قابلاستفاده تو مرورگر) نمیتونه مستقیم به یه gRPC server وصل شه چون مرورگرها کنترل کامل روی HTTP/2 frame ها ندارن، همیشه یه proxy (مثل Envoy) لازمه. فکر میکردم gRPC همهجا یکسان کار میکنه، ولی این محدودیت نشونم داد که چقدر context بین "backend-to-backend" و "browser-to-backend" فرق داره.
نتیجهش شده این "gRPC Blueprint" که دومین پست از سری آموزشیمه
توش میبینید:
- چرا REST رو HTTP/1.1 با Head-of-Line Blocking دستوپاگیر میشه
- سه رکن اصلی gRPC که باعث سرعت و کاراییش میشن
- مقایسهی صادقانهی REST vs gRPC vs WebSocket کدوم کجا برندهس
- جایی که gRPC واقعاً میدرخشه (Microservices، سیستمهای Real-time، محیطهای Polyglot)
@DevTwitter | <shaghayegh Ayoubi/>
با صداقت گفتم: "نه، اصلاً نمیدونم چیه." یه لحظه سکوت... و از اون مصاحبه که بیرون اومدم یه چیزی تو ذهنم قفل شده بود: "باید بفهمم این چیه."
اون حس ناراحتکنندهی «ندونستن» تو یه مصاحبه، شد یکی از بهترین موتورهای یادگیریم. رفتم سراغ مطالعهی عمیق gRPC، از مشکلات REST و HTTP/1.1 شروع کردم، تا رسیدم به Protobuf، HTTP/2 Multiplexing، و انواع Streaming Pattern هاش.
چیزی که خودم رو غافلگیر کرد این بود که gRPC-Web (نسخهی قابلاستفاده تو مرورگر) نمیتونه مستقیم به یه gRPC server وصل شه چون مرورگرها کنترل کامل روی HTTP/2 frame ها ندارن، همیشه یه proxy (مثل Envoy) لازمه. فکر میکردم gRPC همهجا یکسان کار میکنه، ولی این محدودیت نشونم داد که چقدر context بین "backend-to-backend" و "browser-to-backend" فرق داره.
نتیجهش شده این "gRPC Blueprint" که دومین پست از سری آموزشیمه
توش میبینید:
- چرا REST رو HTTP/1.1 با Head-of-Line Blocking دستوپاگیر میشه
- سه رکن اصلی gRPC که باعث سرعت و کاراییش میشن
- مقایسهی صادقانهی REST vs gRPC vs WebSocket کدوم کجا برندهس
- جایی که gRPC واقعاً میدرخشه (Microservices، سیستمهای Real-time، محیطهای Polyglot)
@DevTwitter | <shaghayegh Ayoubi/>
👍38❤12👎6
معماری پنهان کشینگ در دیجیکالا؛ از CDN تا کنترل موجودی
مدت ها قبل روی یک اپلیکیشن مارکتپلیس کار میکردم، خیلی از مسئلههای پرفورمنس برام فقط در حد «کند شدن چند صفحه» یا «زیاد شدن فشار روی دیتابیس» دیده میشد.
بعدتر فهمیدم پشت همین مسئلههای ظاهرا ساده، موضوعهای مهمتری وجود داره:
کش شدن اشتباه لیست محصولات، قیمتهای قدیمی، موجودی ناهماهنگ، فیلترهای سنگین، فشار روی جستجو، Hot Key، ابطال کش، و سناریوهایی مثل فروش شگفت انگیز که میتونن کل طراحی سیستم را به چالش بکشن.
برای همین یک مقاله نوشتم درباره معماری کشینگ در پلتفرمهای بزرگی مثل دیجی کالا ؛ با تمرکز روی چیزهایی مثل CDN، کش API، کش جستجو، جدا کردن بخشهای صفحه محصول، ابطال کش، کنترل قیمت و موجودی، و مدیریت فشار در مقیاس بالا.
کشینگ فقط سریعتر کردن صفحهها نیست. در مارکتپلیسها، بخشی از اعتماد، پایداری و معماری محصول است.
لینک مقاله
@DevTwitter | <Afshin Yarinia/>
مدت ها قبل روی یک اپلیکیشن مارکتپلیس کار میکردم، خیلی از مسئلههای پرفورمنس برام فقط در حد «کند شدن چند صفحه» یا «زیاد شدن فشار روی دیتابیس» دیده میشد.
بعدتر فهمیدم پشت همین مسئلههای ظاهرا ساده، موضوعهای مهمتری وجود داره:
کش شدن اشتباه لیست محصولات، قیمتهای قدیمی، موجودی ناهماهنگ، فیلترهای سنگین، فشار روی جستجو، Hot Key، ابطال کش، و سناریوهایی مثل فروش شگفت انگیز که میتونن کل طراحی سیستم را به چالش بکشن.
برای همین یک مقاله نوشتم درباره معماری کشینگ در پلتفرمهای بزرگی مثل دیجی کالا ؛ با تمرکز روی چیزهایی مثل CDN، کش API، کش جستجو، جدا کردن بخشهای صفحه محصول، ابطال کش، کنترل قیمت و موجودی، و مدیریت فشار در مقیاس بالا.
کشینگ فقط سریعتر کردن صفحهها نیست. در مارکتپلیسها، بخشی از اعتماد، پایداری و معماری محصول است.
لینک مقاله
@DevTwitter | <Afshin Yarinia/>
👍39🍌19👎1
یه مخزن (Repository) در GitHub همهی سرویسهای هوش مصنوعی که برای همیشه رایگانن رو یه جا لیست کرده:
سقف مصرف هر کدوم، جزئیات راهاندازی، و سازگاری با ابزارهای مختلف.
پستش ۷۴ هزار بازدید گرفت.
قبل از خرید اشتراک برای هر ابزار، اول نسخهی رایگانش رو پیدا کن.
ذخیره کن.
https://github.com/cheahjs/free-llm-api-resources
@DevTwitter | <Navid Taheri/>
سقف مصرف هر کدوم، جزئیات راهاندازی، و سازگاری با ابزارهای مختلف.
پستش ۷۴ هزار بازدید گرفت.
قبل از خرید اشتراک برای هر ابزار، اول نسخهی رایگانش رو پیدا کن.
ذخیره کن.
https://github.com/cheahjs/free-llm-api-resources
@DevTwitter | <Navid Taheri/>
👍26❤8👎1
ابزار dir2txt یه ابزار سادهست که کل پروژهتون رو توی یک فایل متنی خروجی میگیره. مناسب برای استفاده با LLMها، کد ریویو یا بکاپ گرفتن از کدها. با یه دستور python -m dir2txt کل پروژه اسکن میشه، فایلهای باینری حذف میشن، از .dir2txtignore پشتیبانی میکنه و حتی تعداد توکنها رو تخمین میزنه فقط پایتون نیاز داره و هیچ وابستگی ای نداره.
https://github.com/unikOne56/dir2txt
@DevTwitter | <Vahid/>
https://github.com/unikOne56/dir2txt
@DevTwitter | <Vahid/>
🔥31🍌4👎1
فرمت Toon یک روش فشرده و بهینه برای نمایش دادههای JSON است که به طور خاص برای ورودی به مدلهای زبانی (LLMs) طراحی شده است. این فرمت با ترکیب ساختار تورفتگیمحور (مشابه YAML) و چیدمان جدولی (مشابه CSV)، تعداد توکنها را کاهش داده و درک ساختار داده را برای مدلها سادهتر میکند.
پروژه CToon پیادهسازی اصلی و سریعترین نسخه از این فرمت است که به عنوان هسته مرکزی برای چندین زبان برنامهنویسی عمل میکند. ویژگیهای کلیدی آن عبارتند از:
* پشتیبانی از زبانهای مختلف: شامل C، C++، Python، Go و Matlab.
* سرعت بالا: تمام زبانها از یک هسته C/C++ مشترک و بهینه استفاده میکنند.
* یکپارچگی: تغییرات در هسته اصلی به طور خودکار در تمام Bindings اعمال میشود.
* کیفیت تضمین شده: دارای تستهای کامل و مستندات دقیق.
مخزن پروژه:
github.com/mohammadraziei/ctoon
استفاده و حمایت از این پروژه به توسعه و بهبود فرمت Toon کمک میکند.
@DevTwitter | <Mohammad Raziei/>
پروژه CToon پیادهسازی اصلی و سریعترین نسخه از این فرمت است که به عنوان هسته مرکزی برای چندین زبان برنامهنویسی عمل میکند. ویژگیهای کلیدی آن عبارتند از:
* پشتیبانی از زبانهای مختلف: شامل C، C++، Python، Go و Matlab.
* سرعت بالا: تمام زبانها از یک هسته C/C++ مشترک و بهینه استفاده میکنند.
* یکپارچگی: تغییرات در هسته اصلی به طور خودکار در تمام Bindings اعمال میشود.
* کیفیت تضمین شده: دارای تستهای کامل و مستندات دقیق.
مخزن پروژه:
github.com/mohammadraziei/ctoon
استفاده و حمایت از این پروژه به توسعه و بهبود فرمت Toon کمک میکند.
@DevTwitter | <Mohammad Raziei/>
🔥24❤4👍3
تا حالا شده یک فیچر بزنید که کل دیتاش لود شده، ولی تا کاربر یک چیزی سرچ میکنه یا فیلتر رو تغییر میده، صفحه برای چند ثانیه Freeze میشه؟ Spinnerها قفل میکنند، Inputها لگ میزنند و کلاً Application حس سنگینی میده.
برای حل این چالش، سراغ یک تغییر معماری جالب توی فرانتاند رفتم تا پردازشهای سنگین محاسباتی را کاملاً بفرستم توی Background. اینطوری Main Thread کاملا آزاد موند تا بدون حتی یک فریم افت کیفیت، به کارش ادامه بده و UI مثل روز اول روان شد.
توی این مقاله جدیدی که نوشتم، سیر تا پیاز این سناریو، دلیل این که چرا Debouncing کافی نیست و چالشهای این ساختار را کاملاً باز کردم. یک دمو واقعی هم براش ساختم که میتوانید تفاوت پرفورمنس را با چشم ببینید. پیشنهاد میکنم این مقاله را بخوانید:
Demo: https://webworker-vs-main-thread.netlify.app/
Github: https://github.com/MiladSadeghi/webworker-vs-main-thread
https://www.linkedin.com/pulse/main-thread-vs-web-workers-milad-sadeghi-hqbie/
@DevTwitter | <Milad Sadeghi/>
برای حل این چالش، سراغ یک تغییر معماری جالب توی فرانتاند رفتم تا پردازشهای سنگین محاسباتی را کاملاً بفرستم توی Background. اینطوری Main Thread کاملا آزاد موند تا بدون حتی یک فریم افت کیفیت، به کارش ادامه بده و UI مثل روز اول روان شد.
توی این مقاله جدیدی که نوشتم، سیر تا پیاز این سناریو، دلیل این که چرا Debouncing کافی نیست و چالشهای این ساختار را کاملاً باز کردم. یک دمو واقعی هم براش ساختم که میتوانید تفاوت پرفورمنس را با چشم ببینید. پیشنهاد میکنم این مقاله را بخوانید:
Demo: https://webworker-vs-main-thread.netlify.app/
Github: https://github.com/MiladSadeghi/webworker-vs-main-thread
https://www.linkedin.com/pulse/main-thread-vs-web-workers-milad-sadeghi-hqbie/
@DevTwitter | <Milad Sadeghi/>
❤28👍9🍌8
هایپ MCP دیگه از بین رفته و کامیونیتی داره میره سمت استفاده از ابزارهای CLI و یکی از بزرگترین دلایلش مصرف توکن کمتر به واسطه کامندهایی مثل grep، jq، pipe، tail و... هست چون دیگه نیاز نیست کل متن یا فایل خونده بشه!
۱. کامند grep که برای جستجوی یه کلمه خاص تو متن استفاده میشه. وقتی agent این کامند رو ران میکنه، فقط لاینهایی رو میبینه که اون کلمه یا regex داخلشون هست!
۲. کامند jq: فیلتر کردن بر اساس یک فیلد یا ساختار schema از فایل json، مثلا این کامند فقط فیلد name رو از این json میکشه بیرون:
cat data.json | jq '.name'
۳. کامند tail برای دیدن انتهای فایل خصوصا log ها زیاد استفاده میشه. به صورت پیشفرض ۱۰ تا خط آخر رو برمیگردونه ولی میشه با فلگ -n بهش عدد دلخواه داد:
tail -n 50 app.log
۴. پایپ pipe() که باحالترینشه، خروجی یک دستور رو مستقیم به ورودی دستور بعدی میفرسته که قابلیت chaining تا بی نهایت رو داره :)
cat largefile.txt | grep "failed"
اینا دستورات مهمی هست که تو محیط ترمینالی ایجنتها زیاد ازش استفاده میکنن و بد نیست در موردش بدونیم!
@DevTwitter | <Amir/>
۱. کامند grep که برای جستجوی یه کلمه خاص تو متن استفاده میشه. وقتی agent این کامند رو ران میکنه، فقط لاینهایی رو میبینه که اون کلمه یا regex داخلشون هست!
۲. کامند jq: فیلتر کردن بر اساس یک فیلد یا ساختار schema از فایل json، مثلا این کامند فقط فیلد name رو از این json میکشه بیرون:
cat data.json | jq '.name'
۳. کامند tail برای دیدن انتهای فایل خصوصا log ها زیاد استفاده میشه. به صورت پیشفرض ۱۰ تا خط آخر رو برمیگردونه ولی میشه با فلگ -n بهش عدد دلخواه داد:
tail -n 50 app.log
۴. پایپ pipe() که باحالترینشه، خروجی یک دستور رو مستقیم به ورودی دستور بعدی میفرسته که قابلیت chaining تا بی نهایت رو داره :)
cat largefile.txt | grep "failed"
اینا دستورات مهمی هست که تو محیط ترمینالی ایجنتها زیاد ازش استفاده میکنن و بد نیست در موردش بدونیم!
@DevTwitter | <Amir/>
❤44🍌16👍6
یه پروژه آموزشی خیلی جالب توسط huggingface به تازگی منتشر شده که با مطالعهاش یاد میگیرین چطوری coding agent بسازین.
ریپوی گیتهابش:
https://github.com/huggingface/tau
@DevTwitter | <Mehrdad Ameri/>
ریپوی گیتهابش:
https://github.com/huggingface/tau
@DevTwitter | <Mehrdad Ameri/>
👍28❤7