مسئله:
چالش مدیریت بافت در عامل های هوش مصنوعی و مصرف انفجاری توکن
استراتژی:
MikroSkill
کپسوله سازی مهارت و ایجاد چهارچوب تشخیص مهارت های موجود و مرز میان بروزرسانی یک مهارت یا ایجاد مهارت جدید
این فریم ورک میتواند نرخ مصرف توکن را تا ۹۳ درصد کاهش داده و نرخ کامپایل موفق کدها را از ۴۰ به ۸۰ درصد برساند
اطلاعات بیشتر در مقاله ی ذیل:
https://arxiv.org/abs/2606.05720
#سامان #AI
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
چالش مدیریت بافت در عامل های هوش مصنوعی و مصرف انفجاری توکن
استراتژی:
MikroSkill
کپسوله سازی مهارت و ایجاد چهارچوب تشخیص مهارت های موجود و مرز میان بروزرسانی یک مهارت یا ایجاد مهارت جدید
این فریم ورک میتواند نرخ مصرف توکن را تا ۹۳ درصد کاهش داده و نرخ کامپایل موفق کدها را از ۴۰ به ۸۰ درصد برساند
اطلاعات بیشتر در مقاله ی ذیل:
https://arxiv.org/abs/2606.05720
#سامان #AI
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
arXiv.org
Microskill Architecture: A Modular Skill-Driven Framework for...
Large language models and AI coding agents have reshaped software development, but the path to fully AI-native systems faces structural challenges. Chief among them is managing context windows...
اگر به اجرای مدل های LLM در لوکال و کدنویسی با اونها علاقه مندید و مثل من با مشکلات زمینه ی کانتکست٬ توهم مدل٬ نادیده گرفتن قوانین٬ عدم تعامل صحیح در Agent هایی مثل هارنس و ... دست و پنجه نرم میکنید
این مقاله میتونه انتقال تجربه ی خوبی از alexellis ( یک توسعه دهنده ی فعال و متخصص ) باشه
https://blog.alexellis.io/local-ai-is-not-opus
#سامان #AI
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
این مقاله میتونه انتقال تجربه ی خوبی از alexellis ( یک توسعه دهنده ی فعال و متخصص ) باشه
https://blog.alexellis.io/local-ai-is-not-opus
#سامان #AI
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
Alex Ellis' Blog
Local Qwen isn't a worse Opus, it's a different tool
We've all heard people say that Qwen is near-Opus level, but I have receipts and am here to be transparent with you.
❤1
HPC چیست؟
High-Performance Computing
اگه بخوام خیلی ساده بگم، HPC یعنی وقتی یه مسئله اونقدر سنگین و پیچیده هست که یه کامپیوتر معمولی (حتی اگه خیلی قوی باشه) میخواد هفتهها روش وقت بذاره، ما میریم سراغ دنیای HPC تا اون کار رو در چند ساعت یا حتی دقیقه انجام بدیم.
⚙️ حالا چطوری کار میکنه؟
توی سیستمهای معمولی، ما با یه CPU و یه مقدار رم سر و کله میزنیم. اما توی HPC، ما با یه “کلاستر” طرفیم. یعنی صدها یا حتی هزاران سرور رو به هم وصل میکنیم تا مثل یه موجود واحد، با هم محاسبات رو انجام بدن.
فرق اصلی توی “موازیسازی” (Parallelism) هست. فرض کنید میخوای یه کتاب ۱۰۰۰ صفحهای رو ترجمه کنی؛ اگه یه نفر باشه، خیلی طول میکشه. اما اگه ۱۰۰ نفر رو بیاری و به هر کدوم ۲۰ صفحه بدی، کار خیلی سریعتر تموم میشه. HPC دقیقاً همین کار رو با دادهها انجام میده.
🖥️ نقش انویدیا و GPUها کجاست؟
خوب، اینجا داستان جالب میشه… قدیما همه فکر میکردن HPC فقط با CPUهای خیلی قدرتمند ساخته میشه. اما با اومدن هوش مصنوعی، بازی عوض شد. GPUها (همون کارت گرافیکهایی که برای گیمینگ هم استفاده میشن) چون هزاران هسته کوچک دارن، توی انجام محاسبات ریاضی همزمان، از CPUها خیلی جلوترن. الان دیگه اکثر کلاسترهای بزرگ دنیا، ترکیبی از CPUهای قوی و GPUهای وحشتناک قدرتمند انویدیا هستن تا بتونن مدلهای عظیم مثل GPT رو آموزش بدن.
خلاصه ماجرا اینه:
HPC یعنی ترکیب سختافزار خفن، شبکههای فوقسریع و نرمافزارهای مدیریت کلاستر، فقط برای اینکه محدودیتهای محاسباتی رو جابهجا کنیم.
#سامان #مفاهیم
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
High-Performance Computing
اگه بخوام خیلی ساده بگم، HPC یعنی وقتی یه مسئله اونقدر سنگین و پیچیده هست که یه کامپیوتر معمولی (حتی اگه خیلی قوی باشه) میخواد هفتهها روش وقت بذاره، ما میریم سراغ دنیای HPC تا اون کار رو در چند ساعت یا حتی دقیقه انجام بدیم.
⚙️ حالا چطوری کار میکنه؟
توی سیستمهای معمولی، ما با یه CPU و یه مقدار رم سر و کله میزنیم. اما توی HPC، ما با یه “کلاستر” طرفیم. یعنی صدها یا حتی هزاران سرور رو به هم وصل میکنیم تا مثل یه موجود واحد، با هم محاسبات رو انجام بدن.
فرق اصلی توی “موازیسازی” (Parallelism) هست. فرض کنید میخوای یه کتاب ۱۰۰۰ صفحهای رو ترجمه کنی؛ اگه یه نفر باشه، خیلی طول میکشه. اما اگه ۱۰۰ نفر رو بیاری و به هر کدوم ۲۰ صفحه بدی، کار خیلی سریعتر تموم میشه. HPC دقیقاً همین کار رو با دادهها انجام میده.
🖥️ نقش انویدیا و GPUها کجاست؟
خوب، اینجا داستان جالب میشه… قدیما همه فکر میکردن HPC فقط با CPUهای خیلی قدرتمند ساخته میشه. اما با اومدن هوش مصنوعی، بازی عوض شد. GPUها (همون کارت گرافیکهایی که برای گیمینگ هم استفاده میشن) چون هزاران هسته کوچک دارن، توی انجام محاسبات ریاضی همزمان، از CPUها خیلی جلوترن. الان دیگه اکثر کلاسترهای بزرگ دنیا، ترکیبی از CPUهای قوی و GPUهای وحشتناک قدرتمند انویدیا هستن تا بتونن مدلهای عظیم مثل GPT رو آموزش بدن.
خلاصه ماجرا اینه:
HPC یعنی ترکیب سختافزار خفن، شبکههای فوقسریع و نرمافزارهای مدیریت کلاستر، فقط برای اینکه محدودیتهای محاسباتی رو جابهجا کنیم.
#سامان #مفاهیم
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
DevSource
Photo
میدونستید یک هنری داریم به اسم ASCII Art ؟
🎨 یه بار که داشتیم روی یه پروژهی محیط ترمینال (CLI) کار میکردیم، میخواستم یه ظاهر باحالتر بهش بدم که وقتی کاربر برنامه رو باز میکنه، یه خوشآمدگویی شیک ببینه… راستش اونجا بود که با دنیای جذاب ASCII Art روبرو شدم.
🖼️ اگه تا حالا توی ترمینال یا لاگهای سیستم، دیدید که با استفاده از کاراکترهای ساده مثل / \ | _ یه شکل یا یه کلمه بزرگ ساخته شده، همون ASCII Art هست.
🤔 حالا شاید بپرسید این کاراکترهای بیروح چیکار میکنن؟ اصلاً چرا وسط این همه گرافیک و تصویر باکیفیت، هنوز سراغ این چیزها میریم؟
خوب، داستان اینه که توی دنیای زیرساخت و ابزارهای مهندسی، ما همیشه با محیطهای بدون گرافیک (Headless) سر و کار داریم. مثلاً وقتی دارید با SSH به یه سرور وصل میشید یا دارید لاگهای یه کانتینر رو توی داکر میبینید، شما هیچ مانیتور یا محیط گرافیکی ندارید. اینجاست که ASCII Art میتونه:
۱. هویت ببخشه: یه لوگوی باحال از پروژهتون توی شروع برنامه، حس خیلی بهتری به کاربر میده.
۲. خوانایی رو بالا ببره: میتونید با استفاده از این هنر، بخشهای مختلف خروجی یا جداول رو از هم متمایز کنید.
۳. شخصیسازی: محیط خشک و بیروح ترمینال رو برای خودتون یا تیمتون خاص کنید.
🛠️ حالا چطوری این کار رو انجام میدیم؟
اصلاً لازم نیست بشینید ساعتها با کیبورد کاراکتر بچینید! کلی ابزار و کتابخانه هست که این کار رو براتون انجام میده.
مثلاً اگه بخواید توی پایتون یه متن رو سریع به استایل ASCII تبدیل کنید، کتابخانهی pyfiglet معجزه میکنه. فقط یه خط کد مینویسید و تمام! یا اگه دنبال ابزارهای آنلاین هستید، سایتهایی مثل asciiart.eu کلی مدل مختلف رو دم دستتون گذاشتن.
خلاصه اینکه، ASCII Art یه راه ساده و خیلی باحال برای اضافه کردن شخصیت به کدهایی هست که توی محیطهای متنی اجرا میشن.
#سامان #مفاهیم
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
🎨 یه بار که داشتیم روی یه پروژهی محیط ترمینال (CLI) کار میکردیم، میخواستم یه ظاهر باحالتر بهش بدم که وقتی کاربر برنامه رو باز میکنه، یه خوشآمدگویی شیک ببینه… راستش اونجا بود که با دنیای جذاب ASCII Art روبرو شدم.
🖼️ اگه تا حالا توی ترمینال یا لاگهای سیستم، دیدید که با استفاده از کاراکترهای ساده مثل / \ | _ یه شکل یا یه کلمه بزرگ ساخته شده، همون ASCII Art هست.
🤔 حالا شاید بپرسید این کاراکترهای بیروح چیکار میکنن؟ اصلاً چرا وسط این همه گرافیک و تصویر باکیفیت، هنوز سراغ این چیزها میریم؟
خوب، داستان اینه که توی دنیای زیرساخت و ابزارهای مهندسی، ما همیشه با محیطهای بدون گرافیک (Headless) سر و کار داریم. مثلاً وقتی دارید با SSH به یه سرور وصل میشید یا دارید لاگهای یه کانتینر رو توی داکر میبینید، شما هیچ مانیتور یا محیط گرافیکی ندارید. اینجاست که ASCII Art میتونه:
۱. هویت ببخشه: یه لوگوی باحال از پروژهتون توی شروع برنامه، حس خیلی بهتری به کاربر میده.
۲. خوانایی رو بالا ببره: میتونید با استفاده از این هنر، بخشهای مختلف خروجی یا جداول رو از هم متمایز کنید.
۳. شخصیسازی: محیط خشک و بیروح ترمینال رو برای خودتون یا تیمتون خاص کنید.
🛠️ حالا چطوری این کار رو انجام میدیم؟
اصلاً لازم نیست بشینید ساعتها با کیبورد کاراکتر بچینید! کلی ابزار و کتابخانه هست که این کار رو براتون انجام میده.
مثلاً اگه بخواید توی پایتون یه متن رو سریع به استایل ASCII تبدیل کنید، کتابخانهی pyfiglet معجزه میکنه. فقط یه خط کد مینویسید و تمام! یا اگه دنبال ابزارهای آنلاین هستید، سایتهایی مثل asciiart.eu کلی مدل مختلف رو دم دستتون گذاشتن.
خلاصه اینکه، ASCII Art یه راه ساده و خیلی باحال برای اضافه کردن شخصیت به کدهایی هست که توی محیطهای متنی اجرا میشن.
#سامان #مفاهیم
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
اگر برای مصاحبه Node.js آماده میشید، این لیست سوالات رو از دست ندید.
بیش از ۱۰۰ سوال Node.js از مباحث پایه تا موضوعات مهمی مثل Event Loop، Async/Await، Streams، Error Handling، Worker Threads و Performance داخل این مجموعه جمعآوری شده.
البته انتظار نداشته باشید با خوندن این لیست برای مصاحبه Senior آماده بشید، اما برای مرور مفاهیم، پیدا کردن نقاط ضعف و آمادگی قبل از مصاحبه یکی از منابع خوبیه که میتونه کمکتون کنه.
لینک: http://gist.github.com/paulfranco/9f88a2879b7b7d88de5d1921aef2093b
#نود_جی_اس #NodeJS #مصاحبه_فنی #بک_اند #جاوااسکریپت #علی
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
بیش از ۱۰۰ سوال Node.js از مباحث پایه تا موضوعات مهمی مثل Event Loop، Async/Await، Streams، Error Handling، Worker Threads و Performance داخل این مجموعه جمعآوری شده.
البته انتظار نداشته باشید با خوندن این لیست برای مصاحبه Senior آماده بشید، اما برای مرور مفاهیم، پیدا کردن نقاط ضعف و آمادگی قبل از مصاحبه یکی از منابع خوبیه که میتونه کمکتون کنه.
لینک: http://gist.github.com/paulfranco/9f88a2879b7b7d88de5d1921aef2093b
#نود_جی_اس #NodeJS #مصاحبه_فنی #بک_اند #جاوااسکریپت #علی
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
Gist
NodeJS Interview Questions.md
GitHub Gist: instantly share code, notes, and snippets.
❤2
🚀 بازم سلام!
میخوام در مورد یه چیزی صحبت کنم که شاید اسمش رو کمتر شنیده باشین ولی اگه با دنیای برنامهنویسی وب سروکار داشته باشین، خیلی به دردتون میخوره: *Asynchronous Local Storage (ASL)*.
قبل از اینکه بریم سراغ ASL، بذارین یه خاطره تعریف کنم…
🐳 یه وقتایی نیازه یه سری اطلاعات رو سمت کاربر (روی مرورگرش) ذخیره کنیم. اولش ممکنه بریم سراغ همون روشهای قدیمی، مثلاً
یعنی چی؟ یعنی وقتی میخوایم یه اطلاعاتی رو ذخیره کنیم یا بخونیم، کل نخ اصلی (main thread) مرورگر رو قفل میکنه تا این عملیات تموم بشه. فکر کنین کاربر داره یه کاری انجام میده، یه دکمه رو میزنه که یه اطلاعاتی رو ذخیره کنه، و ناگهان صفحه یهلحظه هنگ میکنه! اصلاً تجربه خوبی نیست، مخصوصاً اگه حجم اطلاعات زیاد باشه یا سرعت دیسک کاربر پایین باشه.
اینجا دقیقاً مشکل کجاست؟ 🤔
این قضیه بلوکه کردن نخ اصلی، باعث میشه رابط کاربری (UI) کند بشه و کاربر حس کنه برنامه کند و بیجواب شده. مخصوصاً توی اپلیکیشنهای تکصفحهای (SPA) که همه چی باید روان و سریع اتفاق بیفته، این موضوع واقعاً آزاردهندهست.
حالا چیکار کنیم؟ راه حل چیه؟
اینجاست که *Asynchronous Local Storage (ASL)* وارد میشه! 😎
ASL یه راهکار مدرنتر برای ذخیرهسازی اطلاعات سمت کاربره که از APIهای ناهمزمان (asynchronous) استفاده میکنه. یعنی چی؟ یعنی وقتی شما یه دستوری برای ذخیره یا خوندن اطلاعات میدین، ASL این کار رو در پسزمینه انجام میده و جلوی نخ اصلی رو نمیگیره. وقتی عملیات تموم شد، از طریق Promise یا Callback به شما خبر میده.
این دقیقا شبیه اینه که یه دستیار داری که کارهای وقتگیر رو انجام میده و شما همزمان میتونی به کارهای دیگه برسی.
یه مثال واقعی بزنم:
فرض کنید یه اپلیکیشن مدیریت وظایف (To-Do List) دارین که لیست کارها رو توی مرورگر ذخیره میکنه. اگه از
ASL معمولاً بر پایه IndexedDB کار میکنه که یه پایگاه داده NoSQL قدرتمند درون مرورگره. این یعنی شما میتونین حجم زیادی از دادههای ساختاریافته رو هم ذخیره کنین.
خلاصه ماجرا اینه که اگه دنبال یه راه مطمئن، سریع و بدون ایجاد اختلال برای ذخیرهسازی اطلاعات سمت کاربر هستین، ASL گزینه خیلی خوبیه. مخصوصاً برای اپلیکیشنهای پیچیدهتر و سنگینتر، این تفاوت رو حس خواهید کرد.
#سامان #مفاهیم
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
میخوام در مورد یه چیزی صحبت کنم که شاید اسمش رو کمتر شنیده باشین ولی اگه با دنیای برنامهنویسی وب سروکار داشته باشین، خیلی به دردتون میخوره: *Asynchronous Local Storage (ASL)*.
قبل از اینکه بریم سراغ ASL، بذارین یه خاطره تعریف کنم…
🐳 یه وقتایی نیازه یه سری اطلاعات رو سمت کاربر (روی مرورگرش) ذخیره کنیم. اولش ممکنه بریم سراغ همون روشهای قدیمی، مثلاً
localStorage جاوااسکریپت. در این روش همه چی خوبه تا اینکه متوجه میشیم این localStorage یه مشکل اساسی داره: *همزمان (synchronous) کار میکنه.*یعنی چی؟ یعنی وقتی میخوایم یه اطلاعاتی رو ذخیره کنیم یا بخونیم، کل نخ اصلی (main thread) مرورگر رو قفل میکنه تا این عملیات تموم بشه. فکر کنین کاربر داره یه کاری انجام میده، یه دکمه رو میزنه که یه اطلاعاتی رو ذخیره کنه، و ناگهان صفحه یهلحظه هنگ میکنه! اصلاً تجربه خوبی نیست، مخصوصاً اگه حجم اطلاعات زیاد باشه یا سرعت دیسک کاربر پایین باشه.
اینجا دقیقاً مشکل کجاست؟ 🤔
این قضیه بلوکه کردن نخ اصلی، باعث میشه رابط کاربری (UI) کند بشه و کاربر حس کنه برنامه کند و بیجواب شده. مخصوصاً توی اپلیکیشنهای تکصفحهای (SPA) که همه چی باید روان و سریع اتفاق بیفته، این موضوع واقعاً آزاردهندهست.
حالا چیکار کنیم؟ راه حل چیه؟
اینجاست که *Asynchronous Local Storage (ASL)* وارد میشه! 😎
ASL یه راهکار مدرنتر برای ذخیرهسازی اطلاعات سمت کاربره که از APIهای ناهمزمان (asynchronous) استفاده میکنه. یعنی چی؟ یعنی وقتی شما یه دستوری برای ذخیره یا خوندن اطلاعات میدین، ASL این کار رو در پسزمینه انجام میده و جلوی نخ اصلی رو نمیگیره. وقتی عملیات تموم شد، از طریق Promise یا Callback به شما خبر میده.
این دقیقا شبیه اینه که یه دستیار داری که کارهای وقتگیر رو انجام میده و شما همزمان میتونی به کارهای دیگه برسی.
یه مثال واقعی بزنم:
فرض کنید یه اپلیکیشن مدیریت وظایف (To-Do List) دارین که لیست کارها رو توی مرورگر ذخیره میکنه. اگه از
localStorage استفاده کنین، وقتی کاربر یه کار جدید اضافه میکنه و لیست طولانی میشه، ممکنه یه لحظه صفحه قفل کنه. اما با ASL، این عملیات ذخیرهسازی بدون اینکه کاربر متوجه بشه انجام میشه و برنامه همچنان روان باقی میمونه.ASL معمولاً بر پایه IndexedDB کار میکنه که یه پایگاه داده NoSQL قدرتمند درون مرورگره. این یعنی شما میتونین حجم زیادی از دادههای ساختاریافته رو هم ذخیره کنین.
خلاصه ماجرا اینه که اگه دنبال یه راه مطمئن، سریع و بدون ایجاد اختلال برای ذخیرهسازی اطلاعات سمت کاربر هستین، ASL گزینه خیلی خوبیه. مخصوصاً برای اپلیکیشنهای پیچیدهتر و سنگینتر، این تفاوت رو حس خواهید کرد.
#سامان #مفاهیم
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
❤3
مخاطبین محترم کانال و گروه DevSource
میت آنلاین بذارم باهاتون؟
در مورد چه موضوعاتی دوست دارید صحبت کنیم و انتقال دانش داشته باشیم؟
یک میت دو ساعته
حتما توی کامنت ها نظرتونو بگید🚀
میت آنلاین بذارم باهاتون؟
در مورد چه موضوعاتی دوست دارید صحبت کنیم و انتقال دانش داشته باشیم؟
یک میت دو ساعته
حتما توی کامنت ها نظرتونو بگید🚀
❤6
یک کتاب جمع و جور و کاربردی برای مبانی زبان طراحی سیستم ( Design system )
توسعه دهنده های فرانت اند بهتره که تسلط خوبی به مبانی دیزاین سیستم ها داشته باشند
احتمالا شنیدید که در اغلب فیلم ها٬ یه وقتایی وسط صحنه٬ بازیگرا با توجه به تجربه ای که دارن کارهای خلاقانه و فی البداهه انجام میدن
این موضوع در توسعه ی برنامه ها هم صدق میکنه٬ مخصوصا در فرانت اند. اگر یه وقتایی خواستید به عنوان توسعه دهنده ی فرانت اند خلاقیت به خرج بدید و فیچر جدیدی خارج از برنامه به رابط کاربری اضافه کنید٬ حتما باید استاندارد های طراحی رو بدونید تا یکپارچگی زبان طراحی سیستم از دست نره
منابع ذیل میتونه برای همین مواقع بهتون کمک کنه:
https://ebooks.karbust.me/Technology/UI%20Design%20Principles%20-%20Michael%20Filipiuk.pdf
https://designcode.io/ui-design-handbook
Reaction 👎👍 و Share
#سامان #مفاهیم
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
توسعه دهنده های فرانت اند بهتره که تسلط خوبی به مبانی دیزاین سیستم ها داشته باشند
احتمالا شنیدید که در اغلب فیلم ها٬ یه وقتایی وسط صحنه٬ بازیگرا با توجه به تجربه ای که دارن کارهای خلاقانه و فی البداهه انجام میدن
این موضوع در توسعه ی برنامه ها هم صدق میکنه٬ مخصوصا در فرانت اند. اگر یه وقتایی خواستید به عنوان توسعه دهنده ی فرانت اند خلاقیت به خرج بدید و فیچر جدیدی خارج از برنامه به رابط کاربری اضافه کنید٬ حتما باید استاندارد های طراحی رو بدونید تا یکپارچگی زبان طراحی سیستم از دست نره
منابع ذیل میتونه برای همین مواقع بهتون کمک کنه:
https://ebooks.karbust.me/Technology/UI%20Design%20Principles%20-%20Michael%20Filipiuk.pdf
https://designcode.io/ui-design-handbook
Reaction 👎👍 و Share
#سامان #مفاهیم
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 @devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
❤3
اعداد حیاتی که هر برنامهنویس باید بداند (Latency Numbers)
شاید برایتان سوال شده باشد که چرا گاهی اوقات یک سیستم با وجود سرورهای قدرتمند، همچنان کند عمل میکند؟
پاسخ اغلب در “تأخیر” (Latency) نهفته است. درک مقیاس زمانی عملیات کامپیوتری، تفاوت بین یک برنامهنویس معمولی و یک مهندس ارشد است.
دکتر دین (Dr. Jeff Dean) از گوگل جدولی از زمانبندی عملیاتهای پایهای کامپیوتر ارائه کرده که با وجود گذشت سالها، هنوز هم «انجیل» درک کارایی سیستمهاست. اگرچه سختافزارها سریعتر شدهاند، اما تفاوت مقیاس زمانی (مثلاً تفاوت بین حافظه کش و شبکه) هنوز هم به همان نسبت تکاندهنده است.
💡 سه درس کلیدی از این اعداد:
۱. حافظه از دیسک بسیار سریعتر است: تفاوت بین خواندن از رم و خواندن از دیسک مثل تفاوت یک چشم به هم زدن و چندین دقیقه زمان است.
۲. شبکه گرانقیمتترین عملیات است: هر بار که درخواستی به شبکه میفرستید، چندین مرتبه بزرگتر از عملیاتهای داخل CPU هزینه زمانی میپردازید.
۳. بهینهسازی را از گلوگاهها شروع کنید: تا زمانی که دیتابیس یا شبکه شما کند است، بهینهسازی کدهای ریاضی CPU تفاوت محسوسی در تجربه کاربری ایجاد نمیکند.
شاید برایتان سوال شده باشد که چرا گاهی اوقات یک سیستم با وجود سرورهای قدرتمند، همچنان کند عمل میکند؟
پاسخ اغلب در “تأخیر” (Latency) نهفته است. درک مقیاس زمانی عملیات کامپیوتری، تفاوت بین یک برنامهنویس معمولی و یک مهندس ارشد است.
دکتر دین (Dr. Jeff Dean) از گوگل جدولی از زمانبندی عملیاتهای پایهای کامپیوتر ارائه کرده که با وجود گذشت سالها، هنوز هم «انجیل» درک کارایی سیستمهاست. اگرچه سختافزارها سریعتر شدهاند، اما تفاوت مقیاس زمانی (مثلاً تفاوت بین حافظه کش و شبکه) هنوز هم به همان نسبت تکاندهنده است.
💡 سه درس کلیدی از این اعداد:
۱. حافظه از دیسک بسیار سریعتر است: تفاوت بین خواندن از رم و خواندن از دیسک مثل تفاوت یک چشم به هم زدن و چندین دقیقه زمان است.
۲. شبکه گرانقیمتترین عملیات است: هر بار که درخواستی به شبکه میفرستید، چندین مرتبه بزرگتر از عملیاتهای داخل CPU هزینه زمانی میپردازید.
۳. بهینهسازی را از گلوگاهها شروع کنید: تا زمانی که دیتابیس یا شبکه شما کند است، بهینهسازی کدهای ریاضی CPU تفاوت محسوسی در تجربه کاربری ایجاد نمیکند.
❤1
سال ها پیش هر بار که کاربر درخواست میفرستاد، سرویس احراز هویت باید توکن را بررسی میکرد، اطلاعات کاربر را از دیتابیس میخواند و مجوزهای دسترسی را محاسبه میکرد. وقتی تعداد درخواستها زیاد میشد، همین بخش به یکی از گلوگاههای اصلی سیستم تبدیل میشد.
اینجاست که Cache وارد بازی میشود.
اگر اطلاعاتی مثل Session، Claims، Role یا نتیجه اعتبارسنجی Token را برای مدت کوتاهی Cache کنید، بخش بزرگی از درخواستها دیگر نیازی به مراجعه به دیتابیس یا سرویس Identity ندارند. نتیجه کاملاً ملموس است:
✅ کاهش زمان پاسخگویی
✅ کاهش فشار روی دیتابیس
✅ افزایش توان پردازش سیستم
✅ تجربه کاربری بهتر
البته Cache در Authentication یک شمشیر دولبه است. اگر زمان انقضا (TTL) را درست انتخاب نکنید، ممکن است کاربری که دسترسیاش حذف شده، تا چند دقیقه همچنان بتواند از همان مجوزها استفاده کند.
به همین دلیل، طراحی Cache در Auth فقط برای افزایش سرعت نیست؛ باید بین Performance و Security تعادل برقرار کنید.
یک قانون ساده:
هر اطلاعاتی که امنیت بالایی دارد و ممکن است سریع تغییر کند، یا نباید Cache شود یا باید مدت نگهداری بسیار کوتاهی داشته باشد. یا در زمان ویرایش اطلاعات ، در Cache هم آپدیت شود.
سرعت مهم است، اما در سیستمهای احراز هویت، امنیت همیشه اولویت اول است.
#Authentication #Authorization #Cache #Redis #Performance #Security #Backend #رادمان
🚀 Telegram: @devsourcech
🍂 Bale: @devsource
اینجاست که Cache وارد بازی میشود.
اگر اطلاعاتی مثل Session، Claims، Role یا نتیجه اعتبارسنجی Token را برای مدت کوتاهی Cache کنید، بخش بزرگی از درخواستها دیگر نیازی به مراجعه به دیتابیس یا سرویس Identity ندارند. نتیجه کاملاً ملموس است:
✅ کاهش زمان پاسخگویی
✅ کاهش فشار روی دیتابیس
✅ افزایش توان پردازش سیستم
✅ تجربه کاربری بهتر
البته Cache در Authentication یک شمشیر دولبه است. اگر زمان انقضا (TTL) را درست انتخاب نکنید، ممکن است کاربری که دسترسیاش حذف شده، تا چند دقیقه همچنان بتواند از همان مجوزها استفاده کند.
به همین دلیل، طراحی Cache در Auth فقط برای افزایش سرعت نیست؛ باید بین Performance و Security تعادل برقرار کنید.
یک قانون ساده:
هر اطلاعاتی که امنیت بالایی دارد و ممکن است سریع تغییر کند، یا نباید Cache شود یا باید مدت نگهداری بسیار کوتاهی داشته باشد. یا در زمان ویرایش اطلاعات ، در Cache هم آپدیت شود.
سرعت مهم است، اما در سیستمهای احراز هویت، امنیت همیشه اولویت اول است.
#Authentication #Authorization #Cache #Redis #Performance #Security #Backend #رادمان
🚀 Telegram: @devsourcech
🍂 Bale: @devsource
❤4
Media is too big
VIEW IN TELEGRAM
🤖 OpenAi and Hugging Face
برای اولین بار، OpenAI تأیید کرد که یک عامل هوش مصنوعی در حین تست امنیتی از محیط آزمایشی خارج شد و به زیرساخت Hugging Face نفوذ کرد.🔥
داخل ویدئو بیشتر توضیح داده شده توسط جادی عزیز♥️
#abolfazl #ai #OpenAi #HuggingFace
🚀 Telegram: @devsourcech
🍂 Bale: @devsource
برای اولین بار، OpenAI تأیید کرد که یک عامل هوش مصنوعی در حین تست امنیتی از محیط آزمایشی خارج شد و به زیرساخت Hugging Face نفوذ کرد.🔥
داخل ویدئو بیشتر توضیح داده شده توسط جادی عزیز♥️
#abolfazl #ai #OpenAi #HuggingFace
🚀 Telegram: @devsourcech
🍂 Bale: @devsource
🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
در مورد Race condition خوب توضیح میده ☘️
منبع
ممنون از هادی عزیز برای ارسال این پست✌️
#abolfazl #race_condition #database
🚀 Telegram: @devsourcech
🍂 Bale: @devsource
منبع
ممنون از هادی عزیز برای ارسال این پست✌️
#abolfazl #race_condition #database
🚀 Telegram: @devsourcech
🍂 Bale: @devsource
👍2
بعد از مدت ها سلام 😍
یه چیز جالب بگم؟
🐳 خیلیها جداولشون رو طوری مینویسن که همیشه فیلد
تا حالا فکر کردید اگه به جای عدد از
خوب اولین چیزی که باید بگم اینه که
⚠️ چند دلیل مهم که معمولاً باعث میشه
- میتونی ID رو سمت اپلیکیشن، سرویس، یا حتی کلاینت بسازی
- برای سیستمهای توزیعشده، shard شده، یا چند دیتابیسی خیلی راحتتره
- موقع merge کردن دیتا از چند منبع، تداخل ID نداری
- شماره ردیفها رو لو نمیدی و حدس زدن رکوردها برای هکر ها که میخوان با استفاده از URL دیتا رو استخراج کنند سختتر میشه
- برای ساخت داده قبل از ذخیرهسازی، وابستگیات به دیتابیس کمتر میشه
حالا یه سؤال پیش میاد… پس چرا همهجا
اینجاست که باید واقعبین باشی.
برای همین توی بعضی دیتابیسها و سناریوها،
🚀 یه مثال واقعی: فرض کنید یه فروشگاه آنلاین دارید که سفارشهاش از وبسایت، اپ موبایل، و یه سرویس بکاند جدا ساخته میشن. اگر همهجا
خلاصه ماجرا اینه:
اگر سیستمات سادهست و فقط یه دیتابیس مرکزی داری،
اگر داری سمت معماری توزیعشده، چند سرویس، sync، merge، یا تولید ID مستقل میری،
#سامان
#db
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 https://t.me/devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
یه چیز جالب بگم؟
🐳 خیلیها جداولشون رو طوری مینویسن که همیشه فیلد
id از نوع عدد و به صورت AUTO_INCREMENT باشه.تا حالا فکر کردید اگه به جای عدد از
UUID توی فیلدهای primary استفاده کنید، چه مزیتهایی به دست میارید؟خوب اولین چیزی که باید بگم اینه که
AUTO_INCREMENT فقط وقتی راحت و تمیزه که یه سیستم خصوصی و دم دستی داشته باشی. همین که بخوای از چند جا رکورد بسازی، دیتا رو مرج کنی، یا حتی آفلاین ID تولید کنی، داستان عوض میشه.UUID اینجا کمک میکنه چون ID رو مستقل از دیتابیس میسازی… بدون اینکه منتظر شماره بعدی بمونی.⚠️ چند دلیل مهم که معمولاً باعث میشه
UUID انتخاب بهتری باشه:- میتونی ID رو سمت اپلیکیشن، سرویس، یا حتی کلاینت بسازی
- برای سیستمهای توزیعشده، shard شده، یا چند دیتابیسی خیلی راحتتره
- موقع merge کردن دیتا از چند منبع، تداخل ID نداری
- شماره ردیفها رو لو نمیدی و حدس زدن رکوردها برای هکر ها که میخوان با استفاده از URL دیتا رو استخراج کنند سختتر میشه
- برای ساخت داده قبل از ذخیرهسازی، وابستگیات به دیتابیس کمتر میشه
حالا یه سؤال پیش میاد… پس چرا همهجا
UUID نمیزنیم؟اینجاست که باید واقعبین باشی.
UUID توی جدولهای بزرگ میتونه روی index فشار بیاره، مخصوصاً اگه نسخههای تصادفی مثل UUIDv4 استفاده کنی، چون درجها پراکنده میشن و page split و fragmentation بیشتر میشه. برای همین توی بعضی دیتابیسها و سناریوها،
AUTO_INCREMENT هنوز برای یه دیتابیس تکنویسنده، سادهتر و بهینهتره. حتی الان هم خیلی وقتها برای سیستمهای ساده، همون AUTO_INCREMENT بهترین انتخابه.🚀 یه مثال واقعی: فرض کنید یه فروشگاه آنلاین دارید که سفارشهاش از وبسایت، اپ موبایل، و یه سرویس بکاند جدا ساخته میشن. اگر همهجا
AUTO_INCREMENT داشته باشی، هماهنگ کردن شمارهها و merge کردن دیتا دردسر میشه. ولی با UUID هر سرویس همون لحظه ID خودش رو میسازه و بعداً بدون اصطکاک ذخیرهاش میکنی.خلاصه ماجرا اینه:
اگر سیستمات سادهست و فقط یه دیتابیس مرکزی داری،
AUTO_INCREMENT هنوز انتخاب خوبیه. اگر داری سمت معماری توزیعشده، چند سرویس، sync، merge، یا تولید ID مستقل میری،
UUID انتخاب منطقیتریه.#سامان
#db
⚠️ آدرس کانال در تلگرام(حتما عضو بشید)
🚀 https://t.me/devsourcech
✅ در بله
🔹 @devsource
سایت مستندات برنامه نویسی:
🥇 https://devsource.ir
👍4❤1
عجب وضعیه 😂
کپشن: وایب کدینگ باعث شده اگه داخل گیتهاب OPENAI_API_KEY رو سرچ کنید، هزاران کلید رایگان به دست بیارید .
منبع
#abolfazl #ai
✅ Telegram: @devsourcech
⚠️ Bale: @devsource
کپشن: وایب کدینگ باعث شده اگه داخل گیتهاب OPENAI_API_KEY رو سرچ کنید، هزاران کلید رایگان به دست بیارید .
منبع
#abolfazl #ai
✅ Telegram: @devsourcech
⚠️ Bale: @devsource
یه چیزی که اخیراً توی Google AI Studio دیدم واقعاً جالب بود 😳
🧐 فرض کنید دارید یک ویدیو آموزشی، یک جلسه آنلاین یا حتی یک صفحه وب به زبان دیگهای میبینید؛ به جای اینکه متن رو کپی کنید، زیرنویس پیدا کنید یا دنبال ترجمه بگردید، خود مرورگر میتونه همون لحظه صدای صفحه رو بگیره و براتون ترجمه کنه 🤯
ادامه 👇👇
linkedin
ممنون میشم از این پست در لینکدین هم دیدن کنید🌹
سایت:
https://aistudio.google.com/live
#abolfazl #ai #google #live_translate
✅ Telegram: @devsourcech
⚠️ Bale: @devsource
🧐 فرض کنید دارید یک ویدیو آموزشی، یک جلسه آنلاین یا حتی یک صفحه وب به زبان دیگهای میبینید؛ به جای اینکه متن رو کپی کنید، زیرنویس پیدا کنید یا دنبال ترجمه بگردید، خود مرورگر میتونه همون لحظه صدای صفحه رو بگیره و براتون ترجمه کنه 🤯
ادامه 👇👇
ممنون میشم از این پست در لینکدین هم دیدن کنید🌹
سایت:
https://aistudio.google.com/live
#abolfazl #ai #google #live_translate
✅ Telegram: @devsourcech
⚠️ Bale: @devsource
سلام سلام
خیلیها پروژه رو میبرن تو پروداکشن، بعد از بازخورد های اولیه شروع میکنن به رفع باگها و کندیها٬ چون محصول آرام آرام کاربران رو جذب میکنه …
این روش برای خیلی از محصولها جواب میده٬ تاکید میکنم ( برای خیییلی از محصولات جواب میده )
قطعا خیلی هاتون این چیزایی رو که در ادامه به صورت خلاصه مینویسم رو کاملا میدونید٬ اما برای جوون ترا و یادآوری خودم مینویسم:
اگر خدای چالش در خونتونو زد و یه پروژه ای دستتون افتاد که از روز اول معرفی خواست بره زیر دست تعداد زیادی کاربر چی؟
اگه از روز اول بخوایم خیالمون از پرفرمنس و پایداری یه همچین پروژه ای راحتتر باشه، باید قبل از پروداکشن به چی دقت کنیم؟
خلاصه ماجرا اینه که قبل از لانچ، باید هم بار واقعی رو شبیهسازی کنی، هم گلوگاهها رو زود پیدا کنی، هم سطح حمله رو پایین نگه داری.
🚀 اول از همه، دیتای تست باید واقعینما باشه
اگر دیتابیس فقط با ۵۰ تا رکورد تست بشه، خیلی از مشکلها خودشون رو نشون نمیدن.
پس باید از همون اول یه دیتای ماک حجیم بسازی؛ مثلاً چند میلیون رکورد شبیه داده واقعی.
این کار کمک میکنه کوئریهای سنگین، ایندکسهای ضعیف، و گزارشهای کند زودتر خودشون رو لو بدن.
مثلاً یه نرمافزار حسابداری رو تصور کن که فعلاً فقط با دادههای کم تست شده.
همهچیز خوبه… تا روزی که یه گزارش ماهانه روی چند میلیون تراکنش اجرا میکنی و میبینی کل سیستم میخوابه.
⚙️ بعدش باید فضای تست شبیه پروداکشن داشته باشی
یعنی فقط اپ بالا نباشه؛
نسخه سرویسها، تنظیمات، منابع، کش، صف، و حتی محدودیتها هم تا حد ممکن شبیه محیط واقعی باشن.
اینجا دقیقاً مشکل اینه که خیلی تیمها روی لپتاپ یا استیج سبک تست میکنن، بعد در محیط واقعی با فشار شبکه، latency، و تنظیمات مهندسی شده از عملکر سیستم غافلگیر میشن.
🛡 امنیت رو از اول ببین، نه بعد از حادثه
اگر پروژه حساسه، از همون اول باید به چیزهایی مثل penetration test، محدودسازی دسترسیها، و مانیتورینگ رفتار مشکوک فکر کنی.
یه هانیپات هم میتونه برای بعضی سناریوها مفید باشه؛ نه بهعنوان بخش اصلی سیستم، بلکه بهعنوان یه تلهی کنترلشده و جدا از مسیر اصلی که رفتار مهاجم رو ثبت کنه و ضعفها رو زودتر نشون بده.
فقط باید کاملاً ایزوله، مانیتوردار، و بدون دیتای واقعی باشه.
🔍 گزارشهای سنگین رو از دیتای لحظهای نساز
خیلی از سیستمها این اشتباه رو میکنن که گزارشگیری سنگین رو مستقیم روی دیتای transactional میچسبونن.
نتیجه؟
هم نوشتن داده کند میشه، هم خواندن.
پس باید از همون اول به جداسازی فکر کنی؛ مثلاً با CQRS، یا حداقل با read model جدا، snapshot، یا pipeline گزارشگیری مستقل.
📦 کش و rate limit رو جدی بگیر
اگر endpointها قراره زیاد خونده بشن، کش میتونه فشار رو خیلی کم کنه.
اما کش بدون invalidation درست، خودش یه دردسر جدید میشه.
از اون طرف rate limit هم فقط برای امنیت نیست؛ برای اینه که یه کلاینت بدرفتار یا یه job اشتباه کل سیستم رو زمین نزنه.
🧩 خلاصه اینکه قبل از پروداکشن همه ی شما و خودم را به چک کردن این موارد دعوت میکنم😅
✅ دیتای ماک حجیم برای تست کوئریها
✅ محیط تست نزدیک به پروداکشن
✅ پنتست و بازبینی امنیتی
✅ هانیپات فقط در سناریوهای حساس و ایزوله
✅ جلوگیری از گزارشگیری سنگین روی دیتای لحظهای
✅ فکر کردن به CQRS یا read/write separation
✅ کش درست و قابل کنترل
✅ rate limit برای محافظت از سرویس
✅ محاسبه ی منابع مورد نیاز در سرور٬ مخصوصا IOPS مناسب برای هارد
✅ بکاپ و DisAster recovery
✅ HA
✅ افزونگی منابع
✅ لودبالانس
✅ WAF
✅ SLA contract
✅ Release Life cycle
✅ ScaleAbility
خلاصه، اگر از اول این چیزها رو ببینی، خیلی کمتر مجبور میشی بعداً با آتشنشانی محصول رو سر پا نگه داری 🫣…
اگر سوال یا تجربهای درباره این موضوع دارید، به آیدی خصوصی من @yiiman یا گروه پیام بدید؛ حتماً جواب میدیم.
#سامان
✅ Telegram: @devsourcech
⚠️ Bale: @devsource
خیلیها پروژه رو میبرن تو پروداکشن، بعد از بازخورد های اولیه شروع میکنن به رفع باگها و کندیها٬ چون محصول آرام آرام کاربران رو جذب میکنه …
این روش برای خیلی از محصولها جواب میده٬ تاکید میکنم ( برای خیییلی از محصولات جواب میده )
قطعا خیلی هاتون این چیزایی رو که در ادامه به صورت خلاصه مینویسم رو کاملا میدونید٬ اما برای جوون ترا و یادآوری خودم مینویسم:
اگر خدای چالش در خونتونو زد و یه پروژه ای دستتون افتاد که از روز اول معرفی خواست بره زیر دست تعداد زیادی کاربر چی؟
اگه از روز اول بخوایم خیالمون از پرفرمنس و پایداری یه همچین پروژه ای راحتتر باشه، باید قبل از پروداکشن به چی دقت کنیم؟
خلاصه ماجرا اینه که قبل از لانچ، باید هم بار واقعی رو شبیهسازی کنی، هم گلوگاهها رو زود پیدا کنی، هم سطح حمله رو پایین نگه داری.
🚀 اول از همه، دیتای تست باید واقعینما باشه
اگر دیتابیس فقط با ۵۰ تا رکورد تست بشه، خیلی از مشکلها خودشون رو نشون نمیدن.
پس باید از همون اول یه دیتای ماک حجیم بسازی؛ مثلاً چند میلیون رکورد شبیه داده واقعی.
این کار کمک میکنه کوئریهای سنگین، ایندکسهای ضعیف، و گزارشهای کند زودتر خودشون رو لو بدن.
مثلاً یه نرمافزار حسابداری رو تصور کن که فعلاً فقط با دادههای کم تست شده.
همهچیز خوبه… تا روزی که یه گزارش ماهانه روی چند میلیون تراکنش اجرا میکنی و میبینی کل سیستم میخوابه.
⚙️ بعدش باید فضای تست شبیه پروداکشن داشته باشی
یعنی فقط اپ بالا نباشه؛
نسخه سرویسها، تنظیمات، منابع، کش، صف، و حتی محدودیتها هم تا حد ممکن شبیه محیط واقعی باشن.
اینجا دقیقاً مشکل اینه که خیلی تیمها روی لپتاپ یا استیج سبک تست میکنن، بعد در محیط واقعی با فشار شبکه، latency، و تنظیمات مهندسی شده از عملکر سیستم غافلگیر میشن.
🛡 امنیت رو از اول ببین، نه بعد از حادثه
اگر پروژه حساسه، از همون اول باید به چیزهایی مثل penetration test، محدودسازی دسترسیها، و مانیتورینگ رفتار مشکوک فکر کنی.
یه هانیپات هم میتونه برای بعضی سناریوها مفید باشه؛ نه بهعنوان بخش اصلی سیستم، بلکه بهعنوان یه تلهی کنترلشده و جدا از مسیر اصلی که رفتار مهاجم رو ثبت کنه و ضعفها رو زودتر نشون بده.
فقط باید کاملاً ایزوله، مانیتوردار، و بدون دیتای واقعی باشه.
🔍 گزارشهای سنگین رو از دیتای لحظهای نساز
خیلی از سیستمها این اشتباه رو میکنن که گزارشگیری سنگین رو مستقیم روی دیتای transactional میچسبونن.
نتیجه؟
هم نوشتن داده کند میشه، هم خواندن.
پس باید از همون اول به جداسازی فکر کنی؛ مثلاً با CQRS، یا حداقل با read model جدا، snapshot، یا pipeline گزارشگیری مستقل.
📦 کش و rate limit رو جدی بگیر
اگر endpointها قراره زیاد خونده بشن، کش میتونه فشار رو خیلی کم کنه.
اما کش بدون invalidation درست، خودش یه دردسر جدید میشه.
از اون طرف rate limit هم فقط برای امنیت نیست؛ برای اینه که یه کلاینت بدرفتار یا یه job اشتباه کل سیستم رو زمین نزنه.
🧩 خلاصه اینکه قبل از پروداکشن همه ی شما و خودم را به چک کردن این موارد دعوت میکنم😅
✅ دیتای ماک حجیم برای تست کوئریها
✅ محیط تست نزدیک به پروداکشن
✅ پنتست و بازبینی امنیتی
✅ هانیپات فقط در سناریوهای حساس و ایزوله
✅ جلوگیری از گزارشگیری سنگین روی دیتای لحظهای
✅ فکر کردن به CQRS یا read/write separation
✅ کش درست و قابل کنترل
✅ rate limit برای محافظت از سرویس
✅ محاسبه ی منابع مورد نیاز در سرور٬ مخصوصا IOPS مناسب برای هارد
✅ بکاپ و DisAster recovery
✅ HA
✅ افزونگی منابع
✅ لودبالانس
✅ WAF
✅ SLA contract
✅ Release Life cycle
✅ ScaleAbility
خلاصه، اگر از اول این چیزها رو ببینی، خیلی کمتر مجبور میشی بعداً با آتشنشانی محصول رو سر پا نگه داری 🫣…
اگر سوال یا تجربهای درباره این موضوع دارید، به آیدی خصوصی من @yiiman یا گروه پیام بدید؛ حتماً جواب میدیم.
#سامان
✅ Telegram: @devsourcech
⚠️ Bale: @devsource
❤1