� یکی از پروژههایی که اخیراً توسط یکی از دوستانم ( @Omid_jav ) ساخته شده، میتونه برای یادگیری مفاهیم مسیریابی توی گرافها مفیده:
🎯 Pathfinding Algorithm Visualizer
اگه تا حالا برات سوال بوده الگوریتمهایی مثل Dijkstra یا A* چطور مسیرها رو پیدا میکنن، این ابزار کمک میکنه روندشون رو بهصورت بصری ببینی.
👀 روی یه گرید ساده، میتونی نقطهی شروع و پایان رو مشخص کنی و ببینی الگوریتم مرحلهبهمرحله چطور عمل میکنه.
🧠 برای آشنایی با الگوریتمها، گرافها و ساختار دادهها، تجربهی خوبی میتونه باشه. یه جور تمرین تعاملی که مفاهیم رو ملموستر میکنه.
📌 دموی پروژه:
https://pathfinderalgorithm.netlify.app
💻 سورسکد:
https://github.com/OmidJavaherii/Path-finder-Algorithm
🎯 Pathfinding Algorithm Visualizer
اگه تا حالا برات سوال بوده الگوریتمهایی مثل Dijkstra یا A* چطور مسیرها رو پیدا میکنن، این ابزار کمک میکنه روندشون رو بهصورت بصری ببینی.
👀 روی یه گرید ساده، میتونی نقطهی شروع و پایان رو مشخص کنی و ببینی الگوریتم مرحلهبهمرحله چطور عمل میکنه.
🧠 برای آشنایی با الگوریتمها، گرافها و ساختار دادهها، تجربهی خوبی میتونه باشه. یه جور تمرین تعاملی که مفاهیم رو ملموستر میکنه.
📌 دموی پروژه:
https://pathfinderalgorithm.netlify.app
💻 سورسکد:
https://github.com/OmidJavaherii/Path-finder-Algorithm
🔥5💯2
Forwarded from IRCF | اینترنت آزاد برای همه
گزارشهای مختلف از اختلال در اینترنت ثابت و همراه، کندی سرعت اینترنت یا قطع دسترسی به برخیاز فیلترشکنها حکایت دارند.
🔍 ircf.space
@ircfspace
🔍 ircf.space
@ircfspace
🍌2
Forwarded from IRCF | اینترنت آزاد برای همه
نسخه ۵.۶ از #فیلترشکن بگذر در دسترس عموم قرار گرفت.
درنظر گرفتن کانفیگهای رندوم برای شرایط سخت دسترسی به #اینترنت در کشورهایی نظیر #ایران و چین، و پشتیبانی از #اندروید ۱۳، ۱۴ و ۱۵، تغییرات نسخه جدید اینبرنامه اپنسورس هستند.
👉 github.com/Begzar/BegzarApp/releases/latest
🔍 ircf.space/software
@ircfspace
درنظر گرفتن کانفیگهای رندوم برای شرایط سخت دسترسی به #اینترنت در کشورهایی نظیر #ایران و چین، و پشتیبانی از #اندروید ۱۳، ۱۴ و ۱۵، تغییرات نسخه جدید اینبرنامه اپنسورس هستند.
👉 github.com/Begzar/BegzarApp/releases/latest
🔍 ircf.space/software
@ircfspace
🔥2
Forwarded from mosTafa Arshadi
تو روزای جنگ، حرف زدن از پیشرفت مسخره بود. ولی الان اگه پیشرفت نکنی و به خود قبلیت برنگردی، تنها بازنده واقعی این جنگ، تویی.
جنگی درونی، که هر روز توش شکست میخوری و حتی نمیفهمی چرا.
دنیای بعد از بحران، جای سریع تریه.
کسی صبر نمیکنه که تو به حالت عادی برگردی. پس یا خودتو بنداز وسط بازی، یا از همین حالا حذف شدی.
@hamidreza01
جنگی درونی، که هر روز توش شکست میخوری و حتی نمیفهمی چرا.
دنیای بعد از بحران، جای سریع تریه.
کسی صبر نمیکنه که تو به حالت عادی برگردی. پس یا خودتو بنداز وسط بازی، یا از همین حالا حذف شدی.
@hamidreza01
🔥10
Forwarded from DevTwitter | توییت برنامه نویسی
نسخه 7 ویت (Vite) منتشر شد و چیزی که جالب بود اینه که مستندات به زبان فارسی رسماً اضافه شده:
https://fa.vite.dev
جزییات بیشتر:
https://vite.dev/blog/announcing-vite7.html
- دم بچههای پر تلاش جامعهٔ فارسیزبان گرم
@DevTwitter | <Ali Nazari/>
https://fa.vite.dev
جزییات بیشتر:
https://vite.dev/blog/announcing-vite7.html
- دم بچههای پر تلاش جامعهٔ فارسیزبان گرم
@DevTwitter | <Ali Nazari/>
⚡6🍓1
بعد از یک هفته پر از استرس، نگرانی، و صدای اخبار سنگینی که قلبهامون رو فشار داد...
امروز، یه خبر کوچیک اما دلگرمکننده رسید.
✨ انتخاب شدن به عنوان یکی از ۱۰ نفر برتر در حوزهی Front-end در ADPList، تو این روزهای سخت، شاید یه تلنگر کوچیک بود برای خودم؛ یادآور اینکه حتی وقتی همهچیز تار به نظر میرسه، هنوز میشه یک قدم به جلو برداشت.
شاید موفقیت در چنین شرایطی پررنگ نباشه، ولی برای من نشونهای بود از تابآوری… از اینکه امید رو باید هرچند کمرنگ، زنده نگه داشت.
اگه تو هم این روزها احساس سردرگمی، فشار یا ناامیدی میکنی، بدون که تنها
نیستی.
برای منتورشیپ، مشورت یا حتی یه دلگپ ساده، خوشحال میشم صدات رو بشنوم.
🖤 به امید روزهای روشنتر…
امروز، یه خبر کوچیک اما دلگرمکننده رسید.
✨ انتخاب شدن به عنوان یکی از ۱۰ نفر برتر در حوزهی Front-end در ADPList، تو این روزهای سخت، شاید یه تلنگر کوچیک بود برای خودم؛ یادآور اینکه حتی وقتی همهچیز تار به نظر میرسه، هنوز میشه یک قدم به جلو برداشت.
شاید موفقیت در چنین شرایطی پررنگ نباشه، ولی برای من نشونهای بود از تابآوری… از اینکه امید رو باید هرچند کمرنگ، زنده نگه داشت.
اگه تو هم این روزها احساس سردرگمی، فشار یا ناامیدی میکنی، بدون که تنها
نیستی.
برای منتورشیپ، مشورت یا حتی یه دلگپ ساده، خوشحال میشم صدات رو بشنوم.
🖤 به امید روزهای روشنتر…
🔥23🍾4💯1🍓1
Forwarded from Tech Stuff
آشنایی با SystemJS و importmap در جاوااسکریپت
توی این ویدیو درباره این صحبت کردم که SystemJS چیه و چطوری میتونه به ما کمک کنه که ماژولهای جاوااسکریپتی رو توی مرورگر لود کنیم. با ایمپورت داینامیک شروع میکنیم، بعد میریم سراغ importmap و پروژه رو با SystemJS تغییر میدیم. SystemJS اینجا بهکار میاد چون حتی وقتی مرورگر از importmap پشتیبانی نکنه هم ماژولها رو لود میکنه و با همه مرورگرهای مدرن سازگاره. تفاوت بین UMD و ESM رو بررسی میکنیم و در آخر babel رو به پروژه اضافه میکنیم.
ویدئو یوتوب:
https://www.youtube.com/watch?v=jPcTelWAO8Q&list=PL1bBcWODwsLMYe8Gor4PDwT5U5CK_S36x
@techstuff100
توی این ویدیو درباره این صحبت کردم که SystemJS چیه و چطوری میتونه به ما کمک کنه که ماژولهای جاوااسکریپتی رو توی مرورگر لود کنیم. با ایمپورت داینامیک شروع میکنیم، بعد میریم سراغ importmap و پروژه رو با SystemJS تغییر میدیم. SystemJS اینجا بهکار میاد چون حتی وقتی مرورگر از importmap پشتیبانی نکنه هم ماژولها رو لود میکنه و با همه مرورگرهای مدرن سازگاره. تفاوت بین UMD و ESM رو بررسی میکنیم و در آخر babel رو به پروژه اضافه میکنیم.
ویدئو یوتوب:
https://www.youtube.com/watch?v=jPcTelWAO8Q&list=PL1bBcWODwsLMYe8Gor4PDwT5U5CK_S36x
@techstuff100
🔥6🍾2
Project-PM-for-non-project-managers.pdf
1.6 MB
یه مقاله خیلی مفید با عنوان
«مدیریت پروژه برای غیر مدیر پروژه ها»
که خیلی مفید و کاربردی موضوعاتی رو توضیح میده که میتونه خیلی مفید باشه.
خوندنش رو پیشنهاد میکنم🍻
«مدیریت پروژه برای غیر مدیر پروژه ها»
که خیلی مفید و کاربردی موضوعاتی رو توضیح میده که میتونه خیلی مفید باشه.
خوندنش رو پیشنهاد میکنم🍻
🔥7⚡1
Media is too big
VIEW IN TELEGRAM
🍒Productivity as a Developer
freeCodeCamp بهتازگی یک دوره آموزشی رایگان در یوتیوب منتشر کرده که به مهارتهای نرم و توسعه فردی برای برنامهنویسها میپردازه. این دوره توسط Fatos Morina طراحی شده و تمرکز اون بر افزایش بهرهوری، مدیریت زمان، تمرکز و بهبود روابط کاریه.
برخی از مباحث مطرحشده در دوره:
درک مفاهیم پایهای بهرهوری و مسئولیتپذیری
هدفگذاری مؤثر و حفظ انگیزه
مدیریت استرس و سندروم ایمپاستر
تکنیکهای مدیریت زمان و غلبه بر اهمالکاری
تمرکز، انرژی، خواب و سبک زندگی
یادگیری مداوم و توسعه روابط حرفهای
این دوره میتونه به کسانی که به دنبال رشد فردی در کنار رشد فنی هستن کمک کنه تا عملکرد بهتری در مسیر شغلی خودشون داشته باشن.
freeCodeCamp بهتازگی یک دوره آموزشی رایگان در یوتیوب منتشر کرده که به مهارتهای نرم و توسعه فردی برای برنامهنویسها میپردازه. این دوره توسط Fatos Morina طراحی شده و تمرکز اون بر افزایش بهرهوری، مدیریت زمان، تمرکز و بهبود روابط کاریه.
برخی از مباحث مطرحشده در دوره:
درک مفاهیم پایهای بهرهوری و مسئولیتپذیری
هدفگذاری مؤثر و حفظ انگیزه
مدیریت استرس و سندروم ایمپاستر
تکنیکهای مدیریت زمان و غلبه بر اهمالکاری
تمرکز، انرژی، خواب و سبک زندگی
یادگیری مداوم و توسعه روابط حرفهای
این دوره میتونه به کسانی که به دنبال رشد فردی در کنار رشد فنی هستن کمک کنه تا عملکرد بهتری در مسیر شغلی خودشون داشته باشن.
🔥11
امروز داشتم پنل ADPList رو مرور میکردم که چشمم افتاد به یه بنر جالب:
Introducing our new FAANG AI job resumé tool
یه ابزار هوشمنده برای بررسی و بازبینی رزومه، مخصوص موقعیتهای شغلی شرکتهای FAANG.
کاملاً رایگانه و فیدبکهای کاربردی و دقیقی میده.
پیشنهاد میکنم حتماً امتحانش کنید!
crackedresume.com
Introducing our new FAANG AI job resumé tool
یه ابزار هوشمنده برای بررسی و بازبینی رزومه، مخصوص موقعیتهای شغلی شرکتهای FAANG.
کاملاً رایگانه و فیدبکهای کاربردی و دقیقی میده.
پیشنهاد میکنم حتماً امتحانش کنید!
crackedresume.com
🔥5💯2
Forwarded from Armin Shaikhy
هوش مصنوعی داره جای مارو میگیره؟
واقعاً قراره آینده برنامهنویسی این شکلی باشه؟ یا هنوز جا برای ما هست؟
قراره یه دور همی داشته باشیم و با هم درباره این موضوع حرف بزنیم:
هوش مصنوعی دقیقاً داره با شغل ما چیکار میکنه؟ قراره چه مهارتهایی به درد بخوره؟ و اصلاً این نقشهای جدید مثل Prompt Engineer از کجا دراومدن؟
✅ گپ و گفت مهمونها
✅ بحث و پیشبینی با جمع
اگر این سوالا ذهنتو مشغول کرده یا صرفاً کنجکاوی بدونی آیندهمون چیه، خوشحال میشیم تو جلسه ببینیمت.
📅 جزییات و لینک 👇
adplist.org/session/survival-and-success-devs-in-an-ai-driven-era
واقعاً قراره آینده برنامهنویسی این شکلی باشه؟ یا هنوز جا برای ما هست؟
قراره یه دور همی داشته باشیم و با هم درباره این موضوع حرف بزنیم:
هوش مصنوعی دقیقاً داره با شغل ما چیکار میکنه؟ قراره چه مهارتهایی به درد بخوره؟ و اصلاً این نقشهای جدید مثل Prompt Engineer از کجا دراومدن؟
✅ گپ و گفت مهمونها
✅ بحث و پیشبینی با جمع
اگر این سوالا ذهنتو مشغول کرده یا صرفاً کنجکاوی بدونی آیندهمون چیه، خوشحال میشیم تو جلسه ببینیمت.
📅 جزییات و لینک 👇
adplist.org/session/survival-and-success-devs-in-an-ai-driven-era
🔥6
این روزها همه جا صحبت از اینه که ابزارهای هوش مصنوعی مثل ChatGPT و Copilot کار برنامهنویسهای فرانتاند رو میگیرن. اما این مقالهی تحلیلی از InfoWorld دیدگاه متفاوتی داره:
فرانتاند توسعهدهندهها هنوز هم نقش مهمی دارن، فقط باید خودشون رو با شرایط جدید وفق بدن.
نکات کلیدی مقاله:
هوش مصنوعی کدنویسی رو راحتتر کرده، اما هنوز نمیتونه جایگزین تجربه، خلاقیت و حل مسئلهی انسانی بشه.
آیندهی فرانتاند بیشتر روی طراحی تجربهی کاربر، معماری، و یکپارچهسازی تمرکز خواهد داشت.
توسعهدهندههایی که AI رو به عنوان یک ابزار کمکی یاد بگیرن، سرعت و کیفیت کارشون چند برابر میشه.
مفهوم جدید "Designgineer" در حال شکلگیریه: ترکیب طراح و مهندس، با کمک ابزارهای AI
https://www.infoworld.com/article/4025376/why-front-end-development-will-persist.html
فرانتاند توسعهدهندهها هنوز هم نقش مهمی دارن، فقط باید خودشون رو با شرایط جدید وفق بدن.
نکات کلیدی مقاله:
هوش مصنوعی کدنویسی رو راحتتر کرده، اما هنوز نمیتونه جایگزین تجربه، خلاقیت و حل مسئلهی انسانی بشه.
آیندهی فرانتاند بیشتر روی طراحی تجربهی کاربر، معماری، و یکپارچهسازی تمرکز خواهد داشت.
توسعهدهندههایی که AI رو به عنوان یک ابزار کمکی یاد بگیرن، سرعت و کیفیت کارشون چند برابر میشه.
مفهوم جدید "Designgineer" در حال شکلگیریه: ترکیب طراح و مهندس، با کمک ابزارهای AI
https://www.infoworld.com/article/4025376/why-front-end-development-will-persist.html
🔥8💯1
Forwarded from DevTwitter | توییت برنامه نویسی
ترد (Thread) تو فرانت یعنی چی؟
ترد (Thread) یعنی یه خط یا مسیر اجرای کد توی برنامه یا مرورگر.
تصور کن برنامه یا مرورگر مثل یه آشپزخونه بزرگه:
- هر ترد مثل یه سرآشپز یا کارمند توی آشپزخونهست که یه کار مشخصو انجام میده.
- وقتی یه ترد مشغول یه کار سنگین میشه، فقط همون مسیر (یا سرآشپز) تحت تأثیر قرار میگیره، نه همه چیز.
چندین نوع ترد داریم که خوبه باهاشون اشنا باشیم و بدونیم از هرکدوم باید برای چه کاری استفاده کنیم:
1- ترد اصلی (Main Thread)
- که مسئول همه چیزای اصلی صفحه است: DOM، CSS، رندر و eventها
- هر چیزی که با کاربر در تعامله، اینجا اجرا میشه
2- ترد وب وورکر (Web Worker)
- کارهای سنگین و طولانی مثل پردازش دادههای بزرگ رو با این ترد انجام میدن
- مستقیم نمیتونه با DOM کار میکنه و فقط با پیام با main thread حرف میزنه
3- ترد سرویس وورکر (Service Worker)
- مخصوص PWA: کش، fetch، push notification
- مستقل از main thread و UI رو قفل نمیکنه
برای اینکه کار با main thread خوب و روان باشه، مهمه که کارای سنگین و طولانی رو مستقیم توش نذاریم. همه چیزای مربوط به DOM، رندر و تعامل با کاربر باید سریع اجرا بشه تا صفحه لگ نزنه. کارای پردازشی بزرگ رو بهتره به Web Worker بسپاریم و فقط نتیجه رو برگردونیم. همینطور از تکنیکهایی مثل debounce و throttle برای کنترل eventها استفاده کنیم تا main thread شلوغ نشه. وقتی این نکات رو رعایت کنیم، UIامون همیشه روون و بدون لگ میمونه
@DevTwitter | <Reihaneh SadatShokouhi/>
ترد (Thread) یعنی یه خط یا مسیر اجرای کد توی برنامه یا مرورگر.
تصور کن برنامه یا مرورگر مثل یه آشپزخونه بزرگه:
- هر ترد مثل یه سرآشپز یا کارمند توی آشپزخونهست که یه کار مشخصو انجام میده.
- وقتی یه ترد مشغول یه کار سنگین میشه، فقط همون مسیر (یا سرآشپز) تحت تأثیر قرار میگیره، نه همه چیز.
چندین نوع ترد داریم که خوبه باهاشون اشنا باشیم و بدونیم از هرکدوم باید برای چه کاری استفاده کنیم:
1- ترد اصلی (Main Thread)
- که مسئول همه چیزای اصلی صفحه است: DOM، CSS، رندر و eventها
- هر چیزی که با کاربر در تعامله، اینجا اجرا میشه
2- ترد وب وورکر (Web Worker)
- کارهای سنگین و طولانی مثل پردازش دادههای بزرگ رو با این ترد انجام میدن
- مستقیم نمیتونه با DOM کار میکنه و فقط با پیام با main thread حرف میزنه
3- ترد سرویس وورکر (Service Worker)
- مخصوص PWA: کش، fetch، push notification
- مستقل از main thread و UI رو قفل نمیکنه
برای اینکه کار با main thread خوب و روان باشه، مهمه که کارای سنگین و طولانی رو مستقیم توش نذاریم. همه چیزای مربوط به DOM، رندر و تعامل با کاربر باید سریع اجرا بشه تا صفحه لگ نزنه. کارای پردازشی بزرگ رو بهتره به Web Worker بسپاریم و فقط نتیجه رو برگردونیم. همینطور از تکنیکهایی مثل debounce و throttle برای کنترل eventها استفاده کنیم تا main thread شلوغ نشه. وقتی این نکات رو رعایت کنیم، UIامون همیشه روون و بدون لگ میمونه
@DevTwitter | <Reihaneh SadatShokouhi/>
🔥6⚡1💯1
Forwarded from DevTwitter | توییت برنامه نویسی
قبلا سایت ایرنیک لیست دامنه هایی که تازه آزاد شده بود رو تو سایتش میذاشت اما خیلی وقته که لیستشو نمیذاره
بجاش میتونید از سایت زیر لیست دامنه های تازه آزاد شده رو ببینید
http://free-domains.ir
پ.ن: اگه دنبال ایده برای اسم دامنه هستید میتونه کاربردی باشه
@DevTwitter | <ixAbolfazl/>
بجاش میتونید از سایت زیر لیست دامنه های تازه آزاد شده رو ببینید
http://free-domains.ir
پ.ن: اگه دنبال ایده برای اسم دامنه هستید میتونه کاربردی باشه
@DevTwitter | <ixAbolfazl/>
🔥4🎉1
Forwarded from Dev Feed
امروز، سازمان امنیت سایبری Aikido Security اعلام کرده که حساب maintainer شناختهشدهای به نام qix- در اثر یک حمله فیشینگ به دست مهاجمان افتاده است. مهاجمان موفق شدند ۱۸ بستهی محبوب npm مانند chalk، debug و ansi-styles را دستکاری کنند. این بستهها در مجموع بیش از دو میلیارد بار دانلود هفتگی دارند
NPM) مخفف Node Package Manager هست.
این ابزار یکی از اصلیترین بخشهای اکوسیستم Node.js به حساب میاد.
(وقتی شک داریم سیستم یا پروژه ممکنه آلوده باشه)
تراکنش مالی/کریپتو نزنیم
چون بدافزار میتونه آدرس گیرنده رو عوض کنه.
سیستم آلوده رو روشن یا آنلاین نکنیم
روشن کردن = اجرای کد مخرب (post-install noscripts).
آنلاین شدن = اتصال به C2 server و لو رفتن دادهها.
بهروزرسانی خودکار بدون بررسی نزنیم
ممکنه آخرین نسخهی یک پکیج مخرب باشه.
از ریجستریهای غیررسمی یا پکیجهای ناشناخته نصب نکنیم
مخصوصاً بستههایی با اسم شبیه
ایمیل یا پیامهای مشکوک رو باز نکنیم
خیلی از این حملات با فیشینگ شروع میشن (مثل ایمیل جعلی npm).
پسوردهای قدیمی رو دوباره استفاده نکنیم چون اگه لو رفته باشه، مهاجم راحت وارد حساب میشه.
________________________________________________________________________
اپهای دسکتاپ (Slack, Discord, VS Code …) رو از سورس رسمی بگیر
نه از سایتهای ناشناس یا لینک تلگرام!
تراکنشهای کریپتو رو دوبار چک کن
قبل از تأیید، آدرس مقصد رو دستی مقایسه کن.
کیفپول سختافزاری (Hardware Wallet) استفاده کن
ولی تراکنش هارو با دقت بررسی کن
سیستم رو بهروز نگه دار ولی با تأخیر
بذار چند ساعت یا یک روز از انتشار آپدیت بگذره، تا اگه مخرب بود خبرش دربیاد.
موقع شک → سیستم رو روشن نکن یا کلا قطع اینترنت
تا بدافزار نتونه به C2 Server وصل بشهم Node.js به حساب میاد.
مدیریت اکانت
FA (Two-Factor Auth)۲ روی حساب npm و GitHub فعال کن (الزامی هم شده).
پسوردها رو با مدیر پسورد (مثل Bitwarden یا 1Password) نگه دار، نه مرورگر.
از کلید امنیتی سختافزاری برای ورود استفاده کن، مخصوصاً اگر maintainer هستی.
مدیریت Dependency
از package-lock.json یا yarn.lock استفاده کن → مطمئن میشه همیشه همون نسخه نصب میشه.
به جای ^1.2.3 بنویس 1.2.3 تا آپدیت ناخواسته نیاد.(خلاصه نسخه ی شناور نصب نکن)
محیط امن
npm install رو توی VM یا Docker تست کن قبل از اینکه بیاری توی سیستم اصلی.
اگر پکیج ناشناس هست → سورس کدشو بررسی کن مخصوصاً پوشهی noscripts یا postinstall.
Buildها رو روی CI/CD امن (مثلاً GitHub Actions با secrets محدود) انجام بده.
برای پروژههای حساس از سیستم جداگانه یا VM اختصاصی استفاده کن.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
وقتی حرف از طراحی دیتابیسها یا معماری سیستمهای توزیعشده میشه، اسم CAP theorem همیشه وسطه.
این قضیه میگه شما نمیتونید همزمان هر سه ویژگی رو با هم داشته باشید:
Consistency (سازگاری): همه نودها همون لحظه یک دادهی واحد رو ببینن.
Availability (دسترسپذیری): همیشه از سیستم پاسخ بگیری، حتی اگر کامل نباشه.
Partition Tolerance (تحمل شکست شبکه): وقتی ارتباط بین نودها قطع بشه، سیستم همچنان کار کنه.
نکته کلیدی اینجاست که در عمل همیشه باید بین این سه مورد تریدآف داشته باشید.
مثالها خیلی روشنه:
دیتابیسهای سنتی مثل SQL معمولاً روی Consistency + Availability تمرکز دارن.
دیتابیسهای NoSQL مثل Cassandra بیشتر سمت Availability + Partition tolerance میرن.
پس آینده بهجای فرار از محدودیت CAP، در یاد گرفتن هنر انتخاب درسته. هر پروژه باید بفهمه کدوم ضلع براش حیاتیتره.
این قضیه میگه شما نمیتونید همزمان هر سه ویژگی رو با هم داشته باشید:
Consistency (سازگاری): همه نودها همون لحظه یک دادهی واحد رو ببینن.
Availability (دسترسپذیری): همیشه از سیستم پاسخ بگیری، حتی اگر کامل نباشه.
Partition Tolerance (تحمل شکست شبکه): وقتی ارتباط بین نودها قطع بشه، سیستم همچنان کار کنه.
نکته کلیدی اینجاست که در عمل همیشه باید بین این سه مورد تریدآف داشته باشید.
مثالها خیلی روشنه:
دیتابیسهای سنتی مثل SQL معمولاً روی Consistency + Availability تمرکز دارن.
دیتابیسهای NoSQL مثل Cassandra بیشتر سمت Availability + Partition tolerance میرن.
پس آینده بهجای فرار از محدودیت CAP، در یاد گرفتن هنر انتخاب درسته. هر پروژه باید بفهمه کدوم ضلع براش حیاتیتره.
🔥2
Armin codes
وقتی حرف از طراحی دیتابیسها یا معماری سیستمهای توزیعشده میشه، اسم CAP theorem همیشه وسطه. این قضیه میگه شما نمیتونید همزمان هر سه ویژگی رو با هم داشته باشید: Consistency (سازگاری): همه نودها همون لحظه یک دادهی واحد رو ببینن. Availability (دسترسپذیری):…
مثلا:
بانکداری آنلاین (CP – قربانی Availability):
وقتی پول جابهجا میکنی، مهمترین چیز سازگاریه.
حتی اگه چند ثانیه سیستم در دسترس نباشه، اشکالی نداره؛ ولی نمیتونه یه بار نشون بده حسابت خالیه و چند لحظه بعد پر.
شبکههای اجتماعی (AP – قربانی Consistency):
مثلا توی اینستاگرام ممکنه وقتی پست میذاری، دوستت همون لحظه نبینه یا لایکها با تأخیر بشمارن.
اینجا Availability مهمتره؛ چون کاربر انتظار داره همیشه بتونه چیزی رو ببینه یا بذاره، حتی اگر کمی ناسازگاری وجود داشته باشه.
سیستمهای رزرو آنلاین (CA – قربانی Partition Tolerance):
مثلا رزرو بلیط هواپیما یا هتل: سیستم نمیتونه یه صندلی رو همزمان به دو نفر بفروشه.
اما اگر ارتباط بین دیتاسنترها قطع بشه، سیستم رزرو ممکنه برای مدتی در دسترس نباشه.
بانکداری آنلاین (CP – قربانی Availability):
وقتی پول جابهجا میکنی، مهمترین چیز سازگاریه.
حتی اگه چند ثانیه سیستم در دسترس نباشه، اشکالی نداره؛ ولی نمیتونه یه بار نشون بده حسابت خالیه و چند لحظه بعد پر.
شبکههای اجتماعی (AP – قربانی Consistency):
مثلا توی اینستاگرام ممکنه وقتی پست میذاری، دوستت همون لحظه نبینه یا لایکها با تأخیر بشمارن.
اینجا Availability مهمتره؛ چون کاربر انتظار داره همیشه بتونه چیزی رو ببینه یا بذاره، حتی اگر کمی ناسازگاری وجود داشته باشه.
سیستمهای رزرو آنلاین (CA – قربانی Partition Tolerance):
مثلا رزرو بلیط هواپیما یا هتل: سیستم نمیتونه یه صندلی رو همزمان به دو نفر بفروشه.
اما اگر ارتباط بین دیتاسنترها قطع بشه، سیستم رزرو ممکنه برای مدتی در دسترس نباشه.
🔥3🍾1
Forwarded from DevTwitter | توییت برنامه نویسی
روز بدقولها، شب بیدارها، ساخته شده با قلب و قهوه، phpهای مرده، پایتونهای کند، باگهای لحظهی دمو، ددلاینهای رد شده، سورپرازهای جاوااسکریپت، اینو یه ساعته با ai نوشتم، استکاورفلوی تنها...
روز کیبوردهای خسته، wheelهای خراب موس، دورههای نیمهکاره مونده، کارفرما هنوز پولمو نداده، یه بازی 4K نوشتم یک بایت حجمشه، زبان هرمز و آقای هاشمی، Go کارهایی که دنیا رو قشنگ میکنن، دات نت کارای سن و سال دار، استرس لحظهی لانچ، هک با css تو صداسیما، اشتباهی پوش کردم، 403، کارآموز بدون حقوق، شان اجتماعی بالا و حقوق پایین، ده تا کار همزمان توی شرکت، تحریمه، فیلتره، کشه، از سروره، از بکه، از فرانته، چرخ رو دوباره ساختم، تا چهار صبح بیدار بودم تهش فهمیدم یه سمیکالن نذاشتم، کارکردنهای تو سفر و روز تعطیل، نارضایتی دائمی کارفرما و ...
این روز مخصوص ماست؛ ما که با خطاها زندگی میکنیم، با دیباگ رشد میکنیم و با یک "It works!" حال دنیامون خوب میشه.
روز برنامهنویس مبارک :))
@DevTwitter
روز کیبوردهای خسته، wheelهای خراب موس، دورههای نیمهکاره مونده، کارفرما هنوز پولمو نداده، یه بازی 4K نوشتم یک بایت حجمشه، زبان هرمز و آقای هاشمی، Go کارهایی که دنیا رو قشنگ میکنن، دات نت کارای سن و سال دار، استرس لحظهی لانچ، هک با css تو صداسیما، اشتباهی پوش کردم، 403، کارآموز بدون حقوق، شان اجتماعی بالا و حقوق پایین، ده تا کار همزمان توی شرکت، تحریمه، فیلتره، کشه، از سروره، از بکه، از فرانته، چرخ رو دوباره ساختم، تا چهار صبح بیدار بودم تهش فهمیدم یه سمیکالن نذاشتم، کارکردنهای تو سفر و روز تعطیل، نارضایتی دائمی کارفرما و ...
این روز مخصوص ماست؛ ما که با خطاها زندگی میکنیم، با دیباگ رشد میکنیم و با یک "It works!" حال دنیامون خوب میشه.
روز برنامهنویس مبارک :))
@DevTwitter
🍾12🔥4🍓1