یک ریپو ساختم و داخلش Skillهایی که به نظرم کاربردی و کارآمد بودن رو جمعآوری، طراحی و دستهبندی کردم.
یکی از مشکلاتی که بعضی وقتها موقع کار با چتباتها داریم، ساخت PDF با کیفیت بالاست؛ مثلاً فونت فارسی، راستچین بودن متن، صفحهبندی و ظاهر نهایی فایل ممکنه اون چیزی نباشه که انتظار داریم.
یکی از Skillهای این ریپو دقیقاً برای همین موضوع ساخته شده؛ هدفش اینه که وقتی از چتبات میخوایم PDF بسازه، خروجی نهایی از نظر ساختار، فونت، صفحهبندی و کیفیت بصری استانداردتر و حرفهایتر باشه.
البته این تنها Skill ریپو نیست و بهمرور Skillهای کاربردی دیگهای هم بهش اضافه میکنم.
https://github.com/mehranqadirian/skills
@DevTwitter | <Mehran Ghadirian/>
یکی از مشکلاتی که بعضی وقتها موقع کار با چتباتها داریم، ساخت PDF با کیفیت بالاست؛ مثلاً فونت فارسی، راستچین بودن متن، صفحهبندی و ظاهر نهایی فایل ممکنه اون چیزی نباشه که انتظار داریم.
یکی از Skillهای این ریپو دقیقاً برای همین موضوع ساخته شده؛ هدفش اینه که وقتی از چتبات میخوایم PDF بسازه، خروجی نهایی از نظر ساختار، فونت، صفحهبندی و کیفیت بصری استانداردتر و حرفهایتر باشه.
البته این تنها Skill ریپو نیست و بهمرور Skillهای کاربردی دیگهای هم بهش اضافه میکنم.
https://github.com/mehranqadirian/skills
@DevTwitter | <Mehran Ghadirian/>
🍌24🔥16❤2
یه پچ برای zcode نوشتم:
توی کل محیط zcode هر پاراگراف که حرف فارسی داشته باشه به صورت هوشمند راستچین میشه، کد و انگلیسی هم دست نمیخوره. یه دکمه هم توی خود محیط کاربری zcode داره که خاموش و روشنش میکنه. وزیرمتن هم قرار داده شده برای خوانایی بهتر فارسی زبان
نصبش فقط اجرای یه فایله:
github.com/Morteza-NW/rtl-zcode
@DevTwitter | <Morteza/>
توی کل محیط zcode هر پاراگراف که حرف فارسی داشته باشه به صورت هوشمند راستچین میشه، کد و انگلیسی هم دست نمیخوره. یه دکمه هم توی خود محیط کاربری zcode داره که خاموش و روشنش میکنه. وزیرمتن هم قرار داده شده برای خوانایی بهتر فارسی زبان
نصبش فقط اجرای یه فایله:
github.com/Morteza-NW/rtl-zcode
@DevTwitter | <Morteza/>
👍17🍌5❤2
این ریپو رو توی گشتوگذارام پیدا کردم و به نظرم میتونه منبع خیلی خوبی برای آماده شدن برای مصاحبههای System Design باشه.
محتواش به شکل نسبتاً ساختاریافتهای مفاهیم و سناریوهای مختلف System Design رو پوشش میده و میتونه برای مرور مباحث، آشنایی با الگوهای رایج و تمرین حل مسئله قبل از مصاحبه مفید باشه.
اگه دارید برای مصاحبههای Backend یا Software Engineering آماده میشید، به نظرم ارزش یه نگاه انداختن رو داره، مخصوصاً برای اینکه یه دید کلی از موضوعاتی که معمولاً توی مصاحبههای System Design مطرح میشن پیدا کنید.
https://github.com/liquidslr/system-design-notes
@DevTwitter | <Reza Jafari/>
محتواش به شکل نسبتاً ساختاریافتهای مفاهیم و سناریوهای مختلف System Design رو پوشش میده و میتونه برای مرور مباحث، آشنایی با الگوهای رایج و تمرین حل مسئله قبل از مصاحبه مفید باشه.
اگه دارید برای مصاحبههای Backend یا Software Engineering آماده میشید، به نظرم ارزش یه نگاه انداختن رو داره، مخصوصاً برای اینکه یه دید کلی از موضوعاتی که معمولاً توی مصاحبههای System Design مطرح میشن پیدا کنید.
https://github.com/liquidslr/system-design-notes
@DevTwitter | <Reza Jafari/>
🍌6❤5👍3
هوش مصنوعی در دیتابیس
اگر میتونستی با یک جمله ساده به PostgreSQL بگی: «فقط تیکتهایی رو پیدا کن که مشتری عصبانیه» چی میشد؟؟
با pgjev میتوانید مفهوم زبان طبیعی را مستقیماً وارد Queryهای PostgreSQL کنید.
یعنی بهجای اینکه برای هر سناریو کلی Regex، Rule یا منطق پیچیده برای تحلیل متن بنویسید، میتوانید چیزی شبیه این داشته باشید:
این پروژه قابلیتهایی مثل filtering، classification، scoring و probability را در اختیار PostgreSQL قرار میدهد.
به نظرم جذابترین بخش ماجرا این است که AI قرار نیست جای SQL را بگیرد؛ بلکه میتواند در کنار SQL، برای درک بخشهای غیرساختاریافته داده استفاده شود.
https://pgjev.com
@DevTwitter | <Milwad Khosravi/>
اگر میتونستی با یک جمله ساده به PostgreSQL بگی: «فقط تیکتهایی رو پیدا کن که مشتری عصبانیه» چی میشد؟؟
با pgjev میتوانید مفهوم زبان طبیعی را مستقیماً وارد Queryهای PostgreSQL کنید.
یعنی بهجای اینکه برای هر سناریو کلی Regex، Rule یا منطق پیچیده برای تحلیل متن بنویسید، میتوانید چیزی شبیه این داشته باشید:
SELECT *
FROM tickets
WHERE status = 'open'
AND jev(tickets, 'the customer is angry');
این پروژه قابلیتهایی مثل filtering، classification، scoring و probability را در اختیار PostgreSQL قرار میدهد.
به نظرم جذابترین بخش ماجرا این است که AI قرار نیست جای SQL را بگیرد؛ بلکه میتواند در کنار SQL، برای درک بخشهای غیرساختاریافته داده استفاده شود.
https://pgjev.com
@DevTwitter | <Milwad Khosravi/>
1❤54👍18🍌6
وقتی Redis به خواب میرود، صندوق ورودی کاربر تبدیل به میدان جنگ میشود!️
تصور کنید سیستم نوتیفیکیشن شما با سرعت بالا در حال ارسال پیامکها و ایمیلهای دورهای است. برای اینکه به یک کاربر در بازه زمانی کوتاه پیام تکراری نفرستید (Deduplication & Suppression)، تصمیم میگیرید کلیدهای سایلنت را با یک TTL ساده داخل Redis ذخیره کنید.
همه چیز سریع، سبک و عالی به نظر میرسد… تا زمانی که:
رم ردیس پر میشود و کلیدها Evict میشوند.
سرویس به هر دلیلی ریاستارت میشود یا با خطای 503 / Network Timeout مواجه میشوید.
یا یک Flush ناخواسته رخ میدهد.
نتیجه؟
تمام سدهای دفاعی برداشته میشوند و صدها هزار پیامک یا ایمیل تکراری در عرض چند دقیقه روی سر کاربر آوار میشود؛ هم هزینههای زیرساخت سر به فلک میکشد و هم تجربه کاربری نابود میشود!
چرا اتکای ۱۰۰٪ به اینمموری (In-Memory) خطرناک است؟
ردیس فوقالعاده سریع است، اما ماهیت آن Ephemeral (فرّار) است. در سیستمهای حساس به اسپم، شما نه تنها نیاز به سرعت دارید، بلکه به پایداری داده (Durability) و ردیابی (Auditability) نیاز دارید:
قابلیت اتکا و ماندگاری (Durability): دیتابیس تضمین میکند که سابقه و وضعیت سرکوب پیامها (Suppression Policies) پایدار است و با کرش سرویس دود نمیشود و به هوا نمیرود.
ثبت وقایع و لاگ سایلنتها (Audit Logs): وقتی پیامی ارسال نمیشود، باید دقیقاً مشخص باشد چرا، به چه دلیلی و طبق کدام Rule سرکوب شده است تا پشتیبانی و مانیتورینگ کور نمانند.
معماری برنده: ترکیب هوشمندانه دیتابیس و ردیس (Hybrid Pattern)
به جای حذف کامل ردیس یا تحمیل بار سنگین کوئری به دیتابیس، راهکار استاندارد پیادهسازی یک معماری ترکیبی و مقاوم است:
۱. دیتابیس به عنوان Source of Truth: سیاستهای سایلنت، لاگها و وضعیتهای ماندگار در RDBMS ذخیره و ایندکسگذاری دقیق میشوند.
۲. ردیس به عنوان Gatekeeper (سد دفاعی اول): ترافیک بالا در سطح میلیثانیه با دستورات اتمیک مثل SET NX EX چک میشود.
۳. مکانیزم Fallback و تابآوری: در صورت قطعی یا تایماوت ردیس، با کمک Circuit Breaker و Local Cache (کش موقت درون سرویس) جلوی طوفان پیامهای تکراری گرفته شده و سیستم به شکل کنترلشده با دیتابیس همگام میماند (Graceful Degradation).
درس اصلی معماری سیستم:
در سرویسهای حساس، هیچوقت کلید جلوگیری از خسارت مالی یا اسپم کاربر را فقط در دست دادههای فرّار قرار ندهید؛ سیستم باید برای لحظه وقوع خرابی (Design for Failure) طراحی شده باشد.
@DevTwitter | <AliReza Ghenaatiyan/>
تصور کنید سیستم نوتیفیکیشن شما با سرعت بالا در حال ارسال پیامکها و ایمیلهای دورهای است. برای اینکه به یک کاربر در بازه زمانی کوتاه پیام تکراری نفرستید (Deduplication & Suppression)، تصمیم میگیرید کلیدهای سایلنت را با یک TTL ساده داخل Redis ذخیره کنید.
همه چیز سریع، سبک و عالی به نظر میرسد… تا زمانی که:
رم ردیس پر میشود و کلیدها Evict میشوند.
سرویس به هر دلیلی ریاستارت میشود یا با خطای 503 / Network Timeout مواجه میشوید.
یا یک Flush ناخواسته رخ میدهد.
نتیجه؟
تمام سدهای دفاعی برداشته میشوند و صدها هزار پیامک یا ایمیل تکراری در عرض چند دقیقه روی سر کاربر آوار میشود؛ هم هزینههای زیرساخت سر به فلک میکشد و هم تجربه کاربری نابود میشود!
چرا اتکای ۱۰۰٪ به اینمموری (In-Memory) خطرناک است؟
ردیس فوقالعاده سریع است، اما ماهیت آن Ephemeral (فرّار) است. در سیستمهای حساس به اسپم، شما نه تنها نیاز به سرعت دارید، بلکه به پایداری داده (Durability) و ردیابی (Auditability) نیاز دارید:
قابلیت اتکا و ماندگاری (Durability): دیتابیس تضمین میکند که سابقه و وضعیت سرکوب پیامها (Suppression Policies) پایدار است و با کرش سرویس دود نمیشود و به هوا نمیرود.
ثبت وقایع و لاگ سایلنتها (Audit Logs): وقتی پیامی ارسال نمیشود، باید دقیقاً مشخص باشد چرا، به چه دلیلی و طبق کدام Rule سرکوب شده است تا پشتیبانی و مانیتورینگ کور نمانند.
معماری برنده: ترکیب هوشمندانه دیتابیس و ردیس (Hybrid Pattern)
به جای حذف کامل ردیس یا تحمیل بار سنگین کوئری به دیتابیس، راهکار استاندارد پیادهسازی یک معماری ترکیبی و مقاوم است:
۱. دیتابیس به عنوان Source of Truth: سیاستهای سایلنت، لاگها و وضعیتهای ماندگار در RDBMS ذخیره و ایندکسگذاری دقیق میشوند.
۲. ردیس به عنوان Gatekeeper (سد دفاعی اول): ترافیک بالا در سطح میلیثانیه با دستورات اتمیک مثل SET NX EX چک میشود.
۳. مکانیزم Fallback و تابآوری: در صورت قطعی یا تایماوت ردیس، با کمک Circuit Breaker و Local Cache (کش موقت درون سرویس) جلوی طوفان پیامهای تکراری گرفته شده و سیستم به شکل کنترلشده با دیتابیس همگام میماند (Graceful Degradation).
درس اصلی معماری سیستم:
در سرویسهای حساس، هیچوقت کلید جلوگیری از خسارت مالی یا اسپم کاربر را فقط در دست دادههای فرّار قرار ندهید؛ سیستم باید برای لحظه وقوع خرابی (Design for Failure) طراحی شده باشد.
@DevTwitter | <AliReza Ghenaatiyan/>
🔥29❤6👎3
چیزیکه تا الان من متوجه شدم خیلی از برنامه نویسای frontend فرق بین کوکی معمولی با HttpOnly یا Secure رو نمیدونن یا کلا فکر می کنن HttpOnly همون Secure cookie هستش...
ببینید زمانیکه شما کوکی رو میسازید میتونید چندتا فلگ براش ست کنید, که 2 تا از اونها HttpOnly و Secure هستش. وقتی شما HttpOnly رو از سمت سرور ست کنید, دیگه با جاوااسکریپت نمیتونید بهش دسترسی داشته باشید. در عوض مرورگر میاد تو هدر ریکوئست هایی که میزنید مقدار کوکی رو میفرسته و کار تمام هستش.
این HttpOnly دقیقا میاد جلوی XSS و سرقت رفتن مقادیری مثل jwt-token رو میگیره.
حالا Secure کوکی یعنی شما باید روی HTTPS این کوکی رو بسازید و به سرور بفرستید و اگر مثلا وب سایت روی HTTP باز بشه کوکی خوانده و ارسال نمیشه!
این رو درنظر داشته باشید که Secure کوکی میتونه با JavaScript ساخته و خوانده بشه ولی HttpOnly فقط روی سرور ساخته میشه. و در آخر اینکه HttpOnly و Secure میتونن هر دو فعال باشن یا یکیشون فعال بشه و با هم تداخل ندارن
حالا بیایم یکم عمیق تر به موضوع نگاه کنیم, اگر خواستیم تو React یا مثلا Angular این مقدار کوکی رو بگیریم و از اتفاق از نوع HttpOnly باشه باید چیکار کنیم؟
تو این شرایط معمولا تیم بک اند یک سرویس مخصوص Auth به شما میده که بهش ریکوئست میزنی ببینی کاربر Authenticated هستش و میتونه Protected Route و Component هارو ببینه یا نه؟ اینجوری میشه امنیت رو هم باهاش هندل کرد
@DevTwitter | <Mohammad E/>
ببینید زمانیکه شما کوکی رو میسازید میتونید چندتا فلگ براش ست کنید, که 2 تا از اونها HttpOnly و Secure هستش. وقتی شما HttpOnly رو از سمت سرور ست کنید, دیگه با جاوااسکریپت نمیتونید بهش دسترسی داشته باشید. در عوض مرورگر میاد تو هدر ریکوئست هایی که میزنید مقدار کوکی رو میفرسته و کار تمام هستش.
این HttpOnly دقیقا میاد جلوی XSS و سرقت رفتن مقادیری مثل jwt-token رو میگیره.
حالا Secure کوکی یعنی شما باید روی HTTPS این کوکی رو بسازید و به سرور بفرستید و اگر مثلا وب سایت روی HTTP باز بشه کوکی خوانده و ارسال نمیشه!
این رو درنظر داشته باشید که Secure کوکی میتونه با JavaScript ساخته و خوانده بشه ولی HttpOnly فقط روی سرور ساخته میشه. و در آخر اینکه HttpOnly و Secure میتونن هر دو فعال باشن یا یکیشون فعال بشه و با هم تداخل ندارن
حالا بیایم یکم عمیق تر به موضوع نگاه کنیم, اگر خواستیم تو React یا مثلا Angular این مقدار کوکی رو بگیریم و از اتفاق از نوع HttpOnly باشه باید چیکار کنیم؟
تو این شرایط معمولا تیم بک اند یک سرویس مخصوص Auth به شما میده که بهش ریکوئست میزنی ببینی کاربر Authenticated هستش و میتونه Protected Route و Component هارو ببینه یا نه؟ اینجوری میشه امنیت رو هم باهاش هندل کرد
@DevTwitter | <Mohammad E/>
👍57🍌6👎1
چند روز پیش مقالهای درباره «AI-Native Software Engineering» میخوندم که یک نکتهاش برام خیلی جالب بود:
اینکه LLM دیگه کل Architecture نیست؛ فقط یکی از اجزای اونه.
مقاله از چیزهایی مثل Context Engineering، Agent Orchestration، Tool/MCP Architecture، Sandboxed Execution و Verification صحبت میکنه.
اما وقتی این بحث را میبرم سمت Enterprise و مخصوصاً On-Prem، یک سؤال دیگه برام پررنگتر میشه:
اینکه Agent دقیقاً اجازه داره چه کاری انجام بده؟
در محیط واقعی ممکنه مشتری:
- به LLMهای Cloud دسترسی نداشته باشد
- دادههاش نباید از شبکه خارج بشه
- اینترنت و سرویسهای خارجی محدود باشه
- ما تو ایران هستیم و با محدودیتهای تحریم مواجه باشه
- و مهمتر از همه، Agent قرار باشه روی سیستم واقعی مشتری Action انجام بده.
تو این شرایط، اینکه یک LLM رو داخل شبکه بیاریم، بهتنهایی مسئله رو حل نمیکنه.
باید بدونیم:
این Agent با چه Identity ای کار میکنه؟
چه Permissionهایی داره؟
به چه دادهای دسترسی داره؟
چه Capabilityهایی در اختیارشه؟
کدوم Actionها نیاز به Approval دارن؟
و چطور میتونیم بعداً Audit کنیم که چه تصمیمی گرفته و چرا؟
برام این زنجیره داره تبدیل به یکی از بخشهای اصلی معماری Agent میشه:
Identity → Permission → Capability → Approval → Audit
یک API معمولاً میگه:
اما Agent میگه:
و این دو از نظر معماری خیلی با هم فرق دارن.
به نظرم یکی از تغییرات مهم معماری با ورود Agentها این نیست که Agent جای Service را میگیره.
تغییر مهمتر اینه که:
یک Decision Boundary تبدیل به یک Architectural Concern میشه.
در Enterprise، قبل از اینکه بپرسیم:
«کدوم LLM رو انتخاب کنیم؟»
شاید باید بپرسیم:
این «Agent رو تا کجا وارد سیستم کنیم و مرز اختیارش کجاست؟»
مقالهای که این بحث رو ازش شروع کردم:
AI-Native Software Engineering: Architecture Patterns for Context, Agents and Developer Tools
اگر شما هم درگیر معماری AI در محیطهای Enterprise یا On-Prem هستید، به نظرم این بخش از بحث، خیلی مهمتر از انتخاب صرف Model هستش.
پ.ن: لینک مقاله:
https://www.linkedin.com/pulse/ai-native-software-engineering-architecture-patterns-context-r-e6hoc/
@DevTwitter | <Mehdi Halvaei/>
اینکه LLM دیگه کل Architecture نیست؛ فقط یکی از اجزای اونه.
مقاله از چیزهایی مثل Context Engineering، Agent Orchestration، Tool/MCP Architecture، Sandboxed Execution و Verification صحبت میکنه.
اما وقتی این بحث را میبرم سمت Enterprise و مخصوصاً On-Prem، یک سؤال دیگه برام پررنگتر میشه:
اینکه Agent دقیقاً اجازه داره چه کاری انجام بده؟
در محیط واقعی ممکنه مشتری:
- به LLMهای Cloud دسترسی نداشته باشد
- دادههاش نباید از شبکه خارج بشه
- اینترنت و سرویسهای خارجی محدود باشه
- ما تو ایران هستیم و با محدودیتهای تحریم مواجه باشه
- و مهمتر از همه، Agent قرار باشه روی سیستم واقعی مشتری Action انجام بده.
تو این شرایط، اینکه یک LLM رو داخل شبکه بیاریم، بهتنهایی مسئله رو حل نمیکنه.
باید بدونیم:
این Agent با چه Identity ای کار میکنه؟
چه Permissionهایی داره؟
به چه دادهای دسترسی داره؟
چه Capabilityهایی در اختیارشه؟
کدوم Actionها نیاز به Approval دارن؟
و چطور میتونیم بعداً Audit کنیم که چه تصمیمی گرفته و چرا؟
برام این زنجیره داره تبدیل به یکی از بخشهای اصلی معماری Agent میشه:
Identity → Permission → Capability → Approval → Audit
یک API معمولاً میگه:
Do Xاما Agent میگه:
I decided to do X.و این دو از نظر معماری خیلی با هم فرق دارن.
به نظرم یکی از تغییرات مهم معماری با ورود Agentها این نیست که Agent جای Service را میگیره.
تغییر مهمتر اینه که:
یک Decision Boundary تبدیل به یک Architectural Concern میشه.
در Enterprise، قبل از اینکه بپرسیم:
«کدوم LLM رو انتخاب کنیم؟»
شاید باید بپرسیم:
این «Agent رو تا کجا وارد سیستم کنیم و مرز اختیارش کجاست؟»
مقالهای که این بحث رو ازش شروع کردم:
AI-Native Software Engineering: Architecture Patterns for Context, Agents and Developer Tools
اگر شما هم درگیر معماری AI در محیطهای Enterprise یا On-Prem هستید، به نظرم این بخش از بحث، خیلی مهمتر از انتخاب صرف Model هستش.
پ.ن: لینک مقاله:
https://www.linkedin.com/pulse/ai-native-software-engineering-architecture-patterns-context-r-e6hoc/
@DevTwitter | <Mehdi Halvaei/>
❤13🍌3👍1
یک آپدیت جدید برای nextjs-progress
بعد از انتشار nextjs-progress، در حین استفاده و توسعه بیشتر پکیج متوجه شدم که برای بعضی از پروژهها، فقط داشتن Link و useRouter اختصاصی کافی نیست.
بهخصوص در پروژههایی که از routing سفارشی یا کتابخانههایی مثل next-intl استفاده میکنند، نیاز به راهی بود که قابلیت progress را به router و Link موجود اضافه کنیم.
در نسخه جدید، چند قابلیت مهم به پکیج اضافه کردم:
- پشتیبانی از basePath
- پشتیبانی از مسیرهای دارای locale با i18nPath
- اضافه شدن createRouter() برای custom routerها
- اضافه شدن createLink() برای custom Linkها
- اضافه شدن nextjs-progress/navigation
- بهبود تشخیص navigation و مقایسه مسیرها
- پشتیبانی بهتر از navigation در پروژههایی با routing سفارشی
یکی از قسمتهایی که بیشتر روی آن کار کردم، امکان استفاده از createRouter() و createLink() در کنار next-intl است؛ بدون اینکه نیاز باشد ساختار routing پروژه تغییر کند.
برای نمونه میتوان progress را به router و Link موجود اضافه کرد:
const useRouter = createRouter(useNextIntlRouter);
const Link = createLink(NextIntlLink);
هدفم این بوده که nextjs-progress در پروژههای مختلف، مخصوصاً پروژههای واقعیتر و پیچیدهتر Next.js، انعطافپذیرتر باشد.
اگر با Next.js کار میکنید، خوشحال میشوم نگاهی به پروژه بیندازید و اگر تجربهای با آن داشتید، فیدبکتان را با من به اشتراک بگذارید.
GitHub: https://github.com/thehadikarimi/nextjs-progress
npm: https://www.npmjs.com/package/nextjs-progress
@DevTwitter | <Hadi Karimi/>
بعد از انتشار nextjs-progress، در حین استفاده و توسعه بیشتر پکیج متوجه شدم که برای بعضی از پروژهها، فقط داشتن Link و useRouter اختصاصی کافی نیست.
بهخصوص در پروژههایی که از routing سفارشی یا کتابخانههایی مثل next-intl استفاده میکنند، نیاز به راهی بود که قابلیت progress را به router و Link موجود اضافه کنیم.
در نسخه جدید، چند قابلیت مهم به پکیج اضافه کردم:
- پشتیبانی از basePath
- پشتیبانی از مسیرهای دارای locale با i18nPath
- اضافه شدن createRouter() برای custom routerها
- اضافه شدن createLink() برای custom Linkها
- اضافه شدن nextjs-progress/navigation
- بهبود تشخیص navigation و مقایسه مسیرها
- پشتیبانی بهتر از navigation در پروژههایی با routing سفارشی
یکی از قسمتهایی که بیشتر روی آن کار کردم، امکان استفاده از createRouter() و createLink() در کنار next-intl است؛ بدون اینکه نیاز باشد ساختار routing پروژه تغییر کند.
برای نمونه میتوان progress را به router و Link موجود اضافه کرد:
const useRouter = createRouter(useNextIntlRouter);
const Link = createLink(NextIntlLink);
هدفم این بوده که nextjs-progress در پروژههای مختلف، مخصوصاً پروژههای واقعیتر و پیچیدهتر Next.js، انعطافپذیرتر باشد.
اگر با Next.js کار میکنید، خوشحال میشوم نگاهی به پروژه بیندازید و اگر تجربهای با آن داشتید، فیدبکتان را با من به اشتراک بگذارید.
GitHub: https://github.com/thehadikarimi/nextjs-progress
npm: https://www.npmjs.com/package/nextjs-progress
@DevTwitter | <Hadi Karimi/>
👍8🍌2👎1
این ریپو توی یکی دو روزی که معرفی شده بالای ۱۵کا استار گرفته!!
شعارش اینکه هر اپی رو میتونی مهندسی معکوس کنی با ایجنت! mcp مختص خودشو داره
http://github.com/morluto/rea
@DevTwitter | <Meisam/>
شعارش اینکه هر اپی رو میتونی مهندسی معکوس کنی با ایجنت! mcp مختص خودشو داره
http://github.com/morluto/rea
@DevTwitter | <Meisam/>
🍌17👍14❤5
چند وقته رو یه پروژه فان کار میکردم، مفسر سی شارپ برای میکروکنترلر ها هست
همچین چیزی قبلا هست، مثل نانو فریمورک و حتی میکرو پایتون اما این ۳ برابر سریعتر از میکروپایتون هست و قابلیت های بیشتری داره
پروژه خیلی حرفه ای شده دوست داشتید یه نگاه بندازید
https://github.com/amir1387aht/MicroCS
@DevTwitter | <Another/>
همچین چیزی قبلا هست، مثل نانو فریمورک و حتی میکرو پایتون اما این ۳ برابر سریعتر از میکروپایتون هست و قابلیت های بیشتری داره
پروژه خیلی حرفه ای شده دوست داشتید یه نگاه بندازید
https://github.com/amir1387aht/MicroCS
@DevTwitter | <Another/>
🍌18👎2💔1
فتوکرافت یه ادیتور جدید و متنبازه، شبیه فتوشاپ، که با زبان راست نوشته شده. فایلهای واقعی PSD رو باز میکنه و روی مک، ویندوز، لینوکس و وب کار میکنه.
از ۱۳۵ فایل تست PSD، ۱۳۴ تاشون بعد از ذخیره دوباره دقیقاً همون بودن
خود پروژه میگه کارشون تمیز و مستقل بوده و فقط از مشخصات عمومی ساخته شده
اریک اس. ریموند میگه این نشون میده نرمافزارهای بدون سورس کد باز تموم شده
ریپو:
https://github.com/storytold/photocraft
@DevTwitter | <Yarad/>
از ۱۳۵ فایل تست PSD، ۱۳۴ تاشون بعد از ذخیره دوباره دقیقاً همون بودن
خود پروژه میگه کارشون تمیز و مستقل بوده و فقط از مشخصات عمومی ساخته شده
اریک اس. ریموند میگه این نشون میده نرمافزارهای بدون سورس کد باز تموم شده
ریپو:
https://github.com/storytold/photocraft
@DevTwitter | <Yarad/>
❤28🔥6🍌2
یکی اومده یه نقشهٔ راه کامل برای مهندس هوش مصنوعی شدن رو اوپنسورس کرده.
«ستاد مرکزی مهندس هوش مصنوعی» از پایهها شروع میکنه و میرسه به مدلهای زبانی بزرگ، RAG، فاینتیون، صدا زدن ابزار، و گردشکارهای ایجنتی؛ همه تو یه برنامهٔ آموزشی مرتب.
ریپو:
https://github.com/hemansnation/AI-Engineer-Headquarters
@DevTwitter | <Yarad/>
«ستاد مرکزی مهندس هوش مصنوعی» از پایهها شروع میکنه و میرسه به مدلهای زبانی بزرگ، RAG، فاینتیون، صدا زدن ابزار، و گردشکارهای ایجنتی؛ همه تو یه برنامهٔ آموزشی مرتب.
ریپو:
https://github.com/hemansnation/AI-Engineer-Headquarters
@DevTwitter | <Yarad/>
🍌18💔2👎1
مدل EmbeddingGemma 2 یه مدل جدید Embedding از Google و بر پایه Gemma 4 هست که با مجوز Apache 2.0 منتشر شده. چیزی که این مدل رو از نسل قبلی جدا میکنه اینه که دیگه فقط با text و code کار نمیکنه و میتونه text، code، image، video و audio رو توی یه فضای برداری مشترک قرار بده. یعنی میشه انواع مختلف داده رو کنار هم مقایسه کرد و برای کارهایی مثل جستجوی معنایی و بازیابی اطلاعات ازش استفاده کرد.
یکی از قابلیتهای جالبش اینه که میتونه چند نوع داده رو همزمان پردازش کنه. مثلاً میشه یه متن رو همراه با یه تصویر یا حتی صدا و ویدئو به مدل داد و در نهایت یه embedding مشترک برای همه این اطلاعات گرفت. این ویژگی برای ساخت سیستمهایی مثل multimodal RAG خیلی کاربردیه.
از طرف دیگه، معماری این مدل به شکل modular طراحی شده و لازم نیست همیشه کل مدل 740M پارامتر رو اجرا کنیم. برای مثال، یه نسخه 270M برای text و code وجود داره و با اضافه شدن بخشهای مربوط به تصویر و صدا، نسخههای بزرگتر ساخته میشن. این طراحی باعث شده مدل برای اجرای on-device و لوکال هم مناسب باشه. حتی نسخه کامل مالتی مودال، بعد از quantization، میتونه با حدود 567MB رم روی دستگاههایی مثل Pixel اجرا بشه. از کانتکس ویندو 8k اون هم نباید چشم پوشی کرد.
یه ویژگی مهم دیگه هم Matryoshka Representation Learning (MRL) هست. با این قابلیت میتونیم اندازه embedding رو از 768 تا 512، 256 یا 128 بعد کاهش بدیم و بر اساس نیازمون بین دقت، سرعت و فضای ذخیرهسازی تعادل ایجاد کنیم. این موضوع توی پروژههای بزرگ Vector Search اهمیت زیادی داره و میتونه حجم مورد نیاز برای ذخیرهسازی بردارها رو تا حدود 6 برابر کاهش بده.
در نهایت، چیزی که EmbeddingGemma 2 رو واقعاً جالب میکنه اینه که از یه مدل عمدتاً متنی به یه مدل سبک و مالتی مودال تبدیل شده که میتونه انواع مختلف داده رو توی یه فضای مشترک قرار بده، به شکل modular اجرا بشه و حتی روی دستگاههای نسبتاً محدود هم قابل استفاده باشه. ترکیب این قابلیتها باعث میشه برای ساخت سیستمهای local search، multimodal RAG، Vector Database و AI agentها انتخاب خیلی خوبی باشه.
https://huggingface.co/google/embeddinggemma-2
@DevTwitter | <Reza Jafari/>
یکی از قابلیتهای جالبش اینه که میتونه چند نوع داده رو همزمان پردازش کنه. مثلاً میشه یه متن رو همراه با یه تصویر یا حتی صدا و ویدئو به مدل داد و در نهایت یه embedding مشترک برای همه این اطلاعات گرفت. این ویژگی برای ساخت سیستمهایی مثل multimodal RAG خیلی کاربردیه.
از طرف دیگه، معماری این مدل به شکل modular طراحی شده و لازم نیست همیشه کل مدل 740M پارامتر رو اجرا کنیم. برای مثال، یه نسخه 270M برای text و code وجود داره و با اضافه شدن بخشهای مربوط به تصویر و صدا، نسخههای بزرگتر ساخته میشن. این طراحی باعث شده مدل برای اجرای on-device و لوکال هم مناسب باشه. حتی نسخه کامل مالتی مودال، بعد از quantization، میتونه با حدود 567MB رم روی دستگاههایی مثل Pixel اجرا بشه. از کانتکس ویندو 8k اون هم نباید چشم پوشی کرد.
یه ویژگی مهم دیگه هم Matryoshka Representation Learning (MRL) هست. با این قابلیت میتونیم اندازه embedding رو از 768 تا 512، 256 یا 128 بعد کاهش بدیم و بر اساس نیازمون بین دقت، سرعت و فضای ذخیرهسازی تعادل ایجاد کنیم. این موضوع توی پروژههای بزرگ Vector Search اهمیت زیادی داره و میتونه حجم مورد نیاز برای ذخیرهسازی بردارها رو تا حدود 6 برابر کاهش بده.
در نهایت، چیزی که EmbeddingGemma 2 رو واقعاً جالب میکنه اینه که از یه مدل عمدتاً متنی به یه مدل سبک و مالتی مودال تبدیل شده که میتونه انواع مختلف داده رو توی یه فضای مشترک قرار بده، به شکل modular اجرا بشه و حتی روی دستگاههای نسبتاً محدود هم قابل استفاده باشه. ترکیب این قابلیتها باعث میشه برای ساخت سیستمهای local search، multimodal RAG، Vector Database و AI agentها انتخاب خیلی خوبی باشه.
https://huggingface.co/google/embeddinggemma-2
@DevTwitter | <Reza Jafari/>
❤18👍4🍌1
یک skill برای Claude Code هست که هر وبسایتی رو با یک prompt بهطور کامل clone میکنه.
از MCP کروم استفاده میکنه تا font، رنگ و structure رو مستقیم از مرورگر استخراج کنه.
رایگانه و صددرصد open-source.
لینک ریپو:
https://github.com/JCodesMore/ai-website-cloner-template
@DevTwitter | <Yarad/>
از MCP کروم استفاده میکنه تا font، رنگ و structure رو مستقیم از مرورگر استخراج کنه.
رایگانه و صددرصد open-source.
لینک ریپو:
https://github.com/JCodesMore/ai-website-cloner-template
@DevTwitter | <Yarad/>
🔥25🍌8❤2
آقا پشمام، به نظرم به این نوع پروژه ها دیگه شاید در آینده کنسول سازی کنسل بشه، علنا فایل اجرایی ps5 رو میدی بهش، بعد روی pc برات اجرا میکنه، جالب اینجاست که اصلا Emulator نیست
https://github.com/boykopovar/AnyPS5
@DevTwitter | <HRY/>
https://github.com/boykopovar/AnyPS5
@DevTwitter | <HRY/>
1🔥71👎7🍌4
خبر مهم برای وردپرسیها؛ ورود رسمی MCP به WordPress
وردپرس بهتازگی پلاگین رسمی MCP Adapter را در مخزن WordPress.org منتشر کرده است.
تعریف MCP یک استاندارد ارتباطی بین هوش مصنوعی و وردپرس است که در آینده به AI اجازه میدهد با سایت وردپرسی تعامل داشته باشد؛ مثل:
- خواندن و ویرایش محتوا
- ایجاد نوشته و صفحات
- کار با اطلاعات محصولات
-️ اجرای قابلیتهای افزونهها
- انجام برخی کارهای مدیریتی با دستور هوش مصنوعی
یعنی وردپرس در حال ایجاد زیرساختی است که هوش مصنوعی فقط محتوای سایت را نخواند، بلکه بتواند با قابلیتهای خود وردپرس و افزونهها تعامل و کار انجام دهد.
نسخه رسمی MCP Adapter 0.7.0 در اکتبر ۲۰۲۶ وارد WordPress.org شده و هنوز در مرحله توسعه و آزمایشی قرار دارد.
️ فعلاً پیشنهاد نمیکنیم صرفاً به خاطر این خبر آن را روی سایت اصلی نصب کنید. این پلاگین بیشتر یک زیرساخت برای اتصال AI به وردپرس است و هنوز به معنی کنترل مستقیم سایت توسط ChatGPT نیست.
اما مسیر آینده وردپرس کاملاً مشخص است:
سایتهایی که میتوانند با هوش مصنوعی تعامل واقعی داشته باشند = WordPress + AI
@DevTwitter | <Abbas Bahadori Pour/>
وردپرس بهتازگی پلاگین رسمی MCP Adapter را در مخزن WordPress.org منتشر کرده است.
تعریف MCP یک استاندارد ارتباطی بین هوش مصنوعی و وردپرس است که در آینده به AI اجازه میدهد با سایت وردپرسی تعامل داشته باشد؛ مثل:
- خواندن و ویرایش محتوا
- ایجاد نوشته و صفحات
- کار با اطلاعات محصولات
-️ اجرای قابلیتهای افزونهها
- انجام برخی کارهای مدیریتی با دستور هوش مصنوعی
یعنی وردپرس در حال ایجاد زیرساختی است که هوش مصنوعی فقط محتوای سایت را نخواند، بلکه بتواند با قابلیتهای خود وردپرس و افزونهها تعامل و کار انجام دهد.
نسخه رسمی MCP Adapter 0.7.0 در اکتبر ۲۰۲۶ وارد WordPress.org شده و هنوز در مرحله توسعه و آزمایشی قرار دارد.
️ فعلاً پیشنهاد نمیکنیم صرفاً به خاطر این خبر آن را روی سایت اصلی نصب کنید. این پلاگین بیشتر یک زیرساخت برای اتصال AI به وردپرس است و هنوز به معنی کنترل مستقیم سایت توسط ChatGPT نیست.
اما مسیر آینده وردپرس کاملاً مشخص است:
سایتهایی که میتوانند با هوش مصنوعی تعامل واقعی داشته باشند = WordPress + AI
@DevTwitter | <Abbas Bahadori Pour/>
❤16👎2🔥2
چند روز پیش مارگارت همیلتون از اين دنيا رفت.
روحش در آرامش
برای خیلیها او یک زن ۹۰ ساله بود که چند دهه پیش در ناسا کار میکرد اما خوب است بدانيم این زن کدی را نوشت که وقتی کامپیوتر آپولو ۱۱ زیر فشار داشت از نفس میافتاد، فهمید کدام کار مهمتر است و کدام را باید کنار بگذارد.
چند دقیقه مانده به فرود روی ماه، همین طرز فکر میتوانست مرز بین فرود و شکست باشد، همیلتون فقط برای آپولو نرمافزار ننوشت، او کمک کرد چیزی شکل بگیرد که امروز اسمش را گذاشتهایم Software Engineering.
نسلی مثل او، کامپیوتر را برای لایک و فالو و وایرالشدن نساخت و شاید تلخترین بخش ماجرا همین باشد:
ما در دورهای زندگی میکنیم که ارزش آدمها را با تعداد فالوئر، بازدید و پولی که میسازند میسنجیم؛ نه با چیزی که به بشریت اضافه کردهاند.
احترام به آدمهایی مثل او، احترام به خودِ فناوری است.
Rest in peace, Margaret.
@DevTwitter | <Abbas Mohammadi/>
روحش در آرامش
برای خیلیها او یک زن ۹۰ ساله بود که چند دهه پیش در ناسا کار میکرد اما خوب است بدانيم این زن کدی را نوشت که وقتی کامپیوتر آپولو ۱۱ زیر فشار داشت از نفس میافتاد، فهمید کدام کار مهمتر است و کدام را باید کنار بگذارد.
چند دقیقه مانده به فرود روی ماه، همین طرز فکر میتوانست مرز بین فرود و شکست باشد، همیلتون فقط برای آپولو نرمافزار ننوشت، او کمک کرد چیزی شکل بگیرد که امروز اسمش را گذاشتهایم Software Engineering.
نسلی مثل او، کامپیوتر را برای لایک و فالو و وایرالشدن نساخت و شاید تلخترین بخش ماجرا همین باشد:
ما در دورهای زندگی میکنیم که ارزش آدمها را با تعداد فالوئر، بازدید و پولی که میسازند میسنجیم؛ نه با چیزی که به بشریت اضافه کردهاند.
احترام به آدمهایی مثل او، احترام به خودِ فناوری است.
Rest in peace, Margaret.
@DevTwitter | <Abbas Mohammadi/>
❤229🍌15👍10
پس از مدت ها انتظار...
بالاخره نسخهء Alpha 1 از نسل 6 فریمورک Bootstrap منتشر شد.
کلن کوبیدن از نو ساختن!
* نکته جالبی که در متن خبر دیدم، اعترافشون به استفاده از پیشوندها به سبک tailwind بود!
- این نسل برای نمایش حداقل به امکانات کرومیوم 130 نیازمنده.
- مولفه های محاوره ای ش از این نسل به بعد مبتنی بر TS توسعه داده خواهند شد.
- این نسل از سازوکارهای LLM-Friendly مثل skill ها پشتیبانی میکنه.
بر اساس مستنداتش:
- تعدادی مولفه جدید داره...
- نام تعدادی از مولفه های قدیمش تغییر داده شده...
- بالاخره DatePicker و OTP Input بومی بهش اضافه کردن!
* نحوه استفاده از CSS Class هاش تا حدودی تغییر کرده!
- پوسته بصری ش شبیه نسل یک شده ولی بصورت تخت، نه 3 بُعدی...
- افکت های گرافیکی ش خیلی بهتر شده...
- انیمیشن و ترانزیشن بهش اضافه شده!
خبر در بلاگ رسمی:
https://blog.getbootstrap.com/2026/10/08/bootstrap-6-alpha/
فهرست تغییرات: هنوز ارائه نشده
سایت رسمی:
https://getbootstrap.com/
مستندات رسمی:
https://getbootstrap.com/docs/6.0/getting-started/install/
پ.ن.
* صرفا در رابطه با layout و grid.
- معتقدم نسل برگ ریزونیه!
@DevTwitter | <Arash Laylazi/>
بالاخره نسخهء Alpha 1 از نسل 6 فریمورک Bootstrap منتشر شد.
کلن کوبیدن از نو ساختن!
* نکته جالبی که در متن خبر دیدم، اعترافشون به استفاده از پیشوندها به سبک tailwind بود!
- این نسل برای نمایش حداقل به امکانات کرومیوم 130 نیازمنده.
- مولفه های محاوره ای ش از این نسل به بعد مبتنی بر TS توسعه داده خواهند شد.
- این نسل از سازوکارهای LLM-Friendly مثل skill ها پشتیبانی میکنه.
بر اساس مستنداتش:
- تعدادی مولفه جدید داره...
- نام تعدادی از مولفه های قدیمش تغییر داده شده...
- بالاخره DatePicker و OTP Input بومی بهش اضافه کردن!
* نحوه استفاده از CSS Class هاش تا حدودی تغییر کرده!
- پوسته بصری ش شبیه نسل یک شده ولی بصورت تخت، نه 3 بُعدی...
- افکت های گرافیکی ش خیلی بهتر شده...
- انیمیشن و ترانزیشن بهش اضافه شده!
خبر در بلاگ رسمی:
https://blog.getbootstrap.com/2026/10/08/bootstrap-6-alpha/
فهرست تغییرات: هنوز ارائه نشده
سایت رسمی:
https://getbootstrap.com/
مستندات رسمی:
https://getbootstrap.com/docs/6.0/getting-started/install/
پ.ن.
* صرفا در رابطه با layout و grid.
- معتقدم نسل برگ ریزونیه!
@DevTwitter | <Arash Laylazi/>
🍌28👍14👎1
با یه پارادوکسی مواجه هستیم که خیلی مهمه درست درکش کنیم.
وقتی در مورد کارایی که با ایجنتها میکنم پست میذارم، یه سوال رایج اینه که setup و فریمورک و trickهایی که به کار میبری چیه. معمولا جواب نمیدم چون سخته توضیح بدم که برای خیلی از کارها واقعا چیز خاصی ندارم...
یا دوستان لطف دارن و میگن دوره و ورکشاپ برگزار کن. ولی به نظرم setup و trick اون چیزی نیست که فرق اصلی رو میسازه.
حالا تو توییتر dax و DHH این چند روز یه حرفی زدن که خیلی باهاش موافقم: دیگه لازم نیست برای کار با AI یه setup پیچیده و عجیب بچینی. مدلها خودشون خیلی خوب شدن.
تا چند ماه پیش خودم رو خیلی درگیر setupهای پیچیده میکردم. کلی skill، کلی MCP، فایلهای rule چند صفحهای و غیره...
علت اصلیش این بود که مدلهای اون موقع ضعیف بودن، یا بهتره بگم حواسپرت بودن...
مثلا یادش میرفت چی گفتیم، یه چیزی مینوشتیم که یادش بمونه. یا به یه سری چیزای بدیهی دقت نمیکرد و باید rule سفت و سخت براش مینوشتی که درست کار کنه.
الان مدلها هنوز بینقص نیستن، ولی این مشکلا رو خیلی کمتر دارن و بیشتر اون setupها دیگه لازم نیست.
ولی یه چیزی هست که به نظرم همچنان مهمه. مدل هر چقدر هم باهوش باشه، پروژه شما رو نمیشناسه. نمیدونه چرا فلان کار رو تو تیمتون اینطوری انجام میدید، یا اون قانون عجیب بیزینسی که شفاهیه و هیچجا داکیومنت نشده از کجا اومده. این چیزا رو باید یه جا براش بنویسید. این دیگه «جبران ضعف مدل» نیست، اطلاعاتیه که هیچجای دیگه پیداش نمیکنه.
در واقع بزرگترین ضعف بیزینسها الان «حجم خیلی زیاد contextهای شفاهیه» که هیچجا نوشته نشده جز ناخودآگاه آدمها، و تا این حل نشه ایجنتها بهرهوری کافی نخواهند داشت.
برای همین مهمترین کاری که معمولا میکنم اینه که نیازمندی رو کامل و شفاف کنم، هم از نظر بیزینسی هم فنی.
نکته مهم دیگه deterministic validationهاست. یعنی تستهایی که سیستماتیک قوانین بیزینس رو چک میکنن. ایجنت الان خیلی سریع کد مینویسه، و دقیقا برای همین باید بتونی سریع و مطمئن چک کنی درست نوشته یا نه. هر چی ایجنت سریعتر بشه، تست مهمتر میشه.
یه نکته مهم دیگه هم اینه که درک عمیق مسائل high level مهندسی نرمافزار، که اگه از ابعاد مختلف جمعشون کنی خیلی زیادن، همچنان تو کیفیت خروجی ایجنتها تعیینکنندهست. ابزار سادهتر شده، ولی هنوز باید بدونی داری چی میسازی. پس از نظر من بالا بردن دانش مهندسی نرمافزار خیلی مهمه.
چیزی که لازم نیست، micromanage کردن ایجنتهاست. این به معنی رها کردن کار نیست، ولی دخالت بیش از حد و وسواسی عملا سرعت ایجنت رو ازش میگیره.
حالا پارادوکس کجاست؟
اینجا که اگه بخوایم ایجنت بهترین عملکردش رو داشته باشه، بهتره ما مثل کسی رفتار کنیم که هیچی از مهندسی نرمافزار نمیدونه. اینطوری بدون ترس و وسواس، ماکزیمم پتانسیل ایجنت رو به کار میگیریم. اما برای اینکه چیزی که ایجنت میسازه واقعا درست باشه و اصطلاحا slop نباشه، باید خودت دید فنی و محصولی درستی داشته باشی.
و وقتی دید فنی و محصولی داری، همهش میخوای تو کار ایجنت دخالت کنی و کمکم میری سمت وسواس و micromanage کردن.
به نظرم باکیفیتترین محصولات نرمافزاری رو الان مهندسهایی میسازن که این پارادوکس رو تو نقطه تعادلش نگه دارن. یعنی تصمیمهای مهم مهندسی رو تو نقاط حیاتی life cycle توسعه خودشون بگیرن، و بقیه پروسه رو بسپرن به ایجنتها.
https://x.com/dhh/status/2107823432205484040
@DevTwitter | <Hossein Nazari/>
وقتی در مورد کارایی که با ایجنتها میکنم پست میذارم، یه سوال رایج اینه که setup و فریمورک و trickهایی که به کار میبری چیه. معمولا جواب نمیدم چون سخته توضیح بدم که برای خیلی از کارها واقعا چیز خاصی ندارم...
یا دوستان لطف دارن و میگن دوره و ورکشاپ برگزار کن. ولی به نظرم setup و trick اون چیزی نیست که فرق اصلی رو میسازه.
حالا تو توییتر dax و DHH این چند روز یه حرفی زدن که خیلی باهاش موافقم: دیگه لازم نیست برای کار با AI یه setup پیچیده و عجیب بچینی. مدلها خودشون خیلی خوب شدن.
تا چند ماه پیش خودم رو خیلی درگیر setupهای پیچیده میکردم. کلی skill، کلی MCP، فایلهای rule چند صفحهای و غیره...
علت اصلیش این بود که مدلهای اون موقع ضعیف بودن، یا بهتره بگم حواسپرت بودن...
مثلا یادش میرفت چی گفتیم، یه چیزی مینوشتیم که یادش بمونه. یا به یه سری چیزای بدیهی دقت نمیکرد و باید rule سفت و سخت براش مینوشتی که درست کار کنه.
الان مدلها هنوز بینقص نیستن، ولی این مشکلا رو خیلی کمتر دارن و بیشتر اون setupها دیگه لازم نیست.
ولی یه چیزی هست که به نظرم همچنان مهمه. مدل هر چقدر هم باهوش باشه، پروژه شما رو نمیشناسه. نمیدونه چرا فلان کار رو تو تیمتون اینطوری انجام میدید، یا اون قانون عجیب بیزینسی که شفاهیه و هیچجا داکیومنت نشده از کجا اومده. این چیزا رو باید یه جا براش بنویسید. این دیگه «جبران ضعف مدل» نیست، اطلاعاتیه که هیچجای دیگه پیداش نمیکنه.
در واقع بزرگترین ضعف بیزینسها الان «حجم خیلی زیاد contextهای شفاهیه» که هیچجا نوشته نشده جز ناخودآگاه آدمها، و تا این حل نشه ایجنتها بهرهوری کافی نخواهند داشت.
برای همین مهمترین کاری که معمولا میکنم اینه که نیازمندی رو کامل و شفاف کنم، هم از نظر بیزینسی هم فنی.
نکته مهم دیگه deterministic validationهاست. یعنی تستهایی که سیستماتیک قوانین بیزینس رو چک میکنن. ایجنت الان خیلی سریع کد مینویسه، و دقیقا برای همین باید بتونی سریع و مطمئن چک کنی درست نوشته یا نه. هر چی ایجنت سریعتر بشه، تست مهمتر میشه.
یه نکته مهم دیگه هم اینه که درک عمیق مسائل high level مهندسی نرمافزار، که اگه از ابعاد مختلف جمعشون کنی خیلی زیادن، همچنان تو کیفیت خروجی ایجنتها تعیینکنندهست. ابزار سادهتر شده، ولی هنوز باید بدونی داری چی میسازی. پس از نظر من بالا بردن دانش مهندسی نرمافزار خیلی مهمه.
چیزی که لازم نیست، micromanage کردن ایجنتهاست. این به معنی رها کردن کار نیست، ولی دخالت بیش از حد و وسواسی عملا سرعت ایجنت رو ازش میگیره.
حالا پارادوکس کجاست؟
اینجا که اگه بخوایم ایجنت بهترین عملکردش رو داشته باشه، بهتره ما مثل کسی رفتار کنیم که هیچی از مهندسی نرمافزار نمیدونه. اینطوری بدون ترس و وسواس، ماکزیمم پتانسیل ایجنت رو به کار میگیریم. اما برای اینکه چیزی که ایجنت میسازه واقعا درست باشه و اصطلاحا slop نباشه، باید خودت دید فنی و محصولی درستی داشته باشی.
و وقتی دید فنی و محصولی داری، همهش میخوای تو کار ایجنت دخالت کنی و کمکم میری سمت وسواس و micromanage کردن.
به نظرم باکیفیتترین محصولات نرمافزاری رو الان مهندسهایی میسازن که این پارادوکس رو تو نقطه تعادلش نگه دارن. یعنی تصمیمهای مهم مهندسی رو تو نقاط حیاتی life cycle توسعه خودشون بگیرن، و بقیه پروسه رو بسپرن به ایجنتها.
https://x.com/dhh/status/2107823432205484040
@DevTwitter | <Hossein Nazari/>
👍18❤7🍌4
ابزار M3E Canvas یه ابزار رایگان و Open Source که داخل مرورگر صفحههای Material 3 رو میسازی، به هم وصلشون میکنی، Flow رو تست میکنی و آخرش خودش یه Prompt آماده میده که میتونی مستقیم بدی به Claude Code، Codex، Gemini CLI یا Cursor تا برات پیاده کنی
GitHub:
https://github.com/lnkiai/m3e-canvas
@DevTwitter | <خانم_زاده/>
GitHub:
https://github.com/lnkiai/m3e-canvas
@DevTwitter | <خانم_زاده/>
👎2💔2🍌1