Forwarded from محتوای آزاد سهراب (Sohrab)
دیشب گفتن که بگم چطور کار میکنه که اونو الان توضیحاتش رو مینویسم.
سیستمعامل بلادرنگ مثل یک جور مغز فوقمنظم برای سختافزاره. فرقش با سیستمعاملهای معمولی اینه که همه چیز براش حول محور زمان و اولویت میچرخه. یعنی مهم نیست چند تا کار داره انجام میده، همیشه میدونه کدوم کار مهمتره و باید دقیقاً الان انجام بشه.
تو یه RTOS، برنامهها بهجای اینکه مثل یه صف طولانی پشت سر هم اجرا بشن، به شکل تسک (Task) یا ترد (Thread) جدا جدا تعریف میشن. هر تسک یه اولویت خاص داره. مثلاً اگه داری با یه ربات کار میکنی، تسک مربوط به کنترل موتور باید خیلی سریعتر از تسک نمایش چراغ LED اجرا بشه. سیستمعامل بلادرنگ اینو میفهمه و به کمک یه چیز به اسم Scheduler (زمانبند) همیشه تصمیم میگیره الان نوبت کدوم تسکه.
زمانبند تو RTOS با سیستمعاملهای معمولی خیلی فرق داره. تو سیستمهایی مثل لینوکس یا ویندوز، scheduler ممکنه بگه «انشالله از شنبه». ولی سیستمعامل بلادرنگ کار امروز رو به فردا نمیسپاره :))))
از نظر RTOS همه چیز باید دقیق و قابل پیشبینی باشه. مثلاً میدونه این تسک باید هر ۱۰ میلیثانیه یه بار اجرا بشه، و دقیقاً همونقدر هم اجراش میکنه، نه یه میلیثانیه زودتر، نه دیرتر.
این دقت با چیزی به اسم تایمر سیستم (System Timer) تأمین میشه. این تایمر مثل یه ضربان قلب، هر چند میکروثانیه یه بار تیک میزنه و به زمانبند میگه وقتشه چک کنی ببین نوبت کیه. اگه تسک جدیدی با اولویت بالاتر آماده باشه، سیستم تسک فعلی رو قطع میکنه و اون یکی رو فوری اجرا میکنه. به این میگن Preemption، یعنی پیشدستی کردن در اجرا. این کار باعث میشه تسکهای مهم هیچوقت منتظر نمونن و بلافاصله اجرا بشن.
یه RTOS همیشه یه سری تسک با وضعیتهای مشخص داره. بعضی تسکها در حال اجرا هستن (Running)، بعضیها منتظر یه رویداد یا دستورن (Waiting)، بعضیها هم خوابیدن تا یه تایمر تموم بشه (Sleeping). سیستم این وضعیتها رو با سرعت خیلی بالا مدیریت میکنه تا هیچ تاخیری پیش نیاد. هر لحظه میدونه کدوم تسک آمادهست، کدوم منتظره، و کدوم باید الان اجرا بشه.
یه بخش خیلی مهم دیگه تو RTOS، وقفهها (Interrupts) هستن. وقتی یه سختافزار مثل یه سنسور یا پورت سریال یه سیگنال میفرسته، RTOS اون سیگنال رو نادیده نمیگیره یا نمیذاره در نوبت بمونه. بلافاصله میره سراغش، چون ممکنه اون اتفاق حیاتی باشه. برای همین تو RTOS، مدیریت وقفهها فوقالعاده دقیق و با اولویت بالا انجام میشه. حتی ممکنه یه وقفه، یه تسک در حال اجرا رو قطع کنه و خودش رو اجرا کنه، بعد دوباره برگرده به همون تسک قبلی.
توی یه RTOS همه چیز بر پایهی قطعیت و پیشبینیپذیری ساخته شده. زمان اجرای هر تسک معلومه، اولویتها ثابته، وقفهها سریع جواب داده میشن و هیچ چیز تصادفی نیست. به همین خاطر میتونی مطمئن باشی که وقتی گفتی "موتور رو بعد از ۵ میلیثانیه خاموش کن"، دقیقاً بعد از همون ۵ میلیثانیه خاموش میشه، نه بیشتر، نه کمتر. این دقت همون چیزیه که RTOS رو برای سیستمهای بحرانی مثل هواپیما، دستگاههای پزشکی، خودروها، و رباتها ضروری میکنه.
@SohrabContents
سیستمعامل بلادرنگ مثل یک جور مغز فوقمنظم برای سختافزاره. فرقش با سیستمعاملهای معمولی اینه که همه چیز براش حول محور زمان و اولویت میچرخه. یعنی مهم نیست چند تا کار داره انجام میده، همیشه میدونه کدوم کار مهمتره و باید دقیقاً الان انجام بشه.
تو یه RTOS، برنامهها بهجای اینکه مثل یه صف طولانی پشت سر هم اجرا بشن، به شکل تسک (Task) یا ترد (Thread) جدا جدا تعریف میشن. هر تسک یه اولویت خاص داره. مثلاً اگه داری با یه ربات کار میکنی، تسک مربوط به کنترل موتور باید خیلی سریعتر از تسک نمایش چراغ LED اجرا بشه. سیستمعامل بلادرنگ اینو میفهمه و به کمک یه چیز به اسم Scheduler (زمانبند) همیشه تصمیم میگیره الان نوبت کدوم تسکه.
زمانبند تو RTOS با سیستمعاملهای معمولی خیلی فرق داره. تو سیستمهایی مثل لینوکس یا ویندوز، scheduler ممکنه بگه «انشالله از شنبه». ولی سیستمعامل بلادرنگ کار امروز رو به فردا نمیسپاره :))))
از نظر RTOS همه چیز باید دقیق و قابل پیشبینی باشه. مثلاً میدونه این تسک باید هر ۱۰ میلیثانیه یه بار اجرا بشه، و دقیقاً همونقدر هم اجراش میکنه، نه یه میلیثانیه زودتر، نه دیرتر.
این دقت با چیزی به اسم تایمر سیستم (System Timer) تأمین میشه. این تایمر مثل یه ضربان قلب، هر چند میکروثانیه یه بار تیک میزنه و به زمانبند میگه وقتشه چک کنی ببین نوبت کیه. اگه تسک جدیدی با اولویت بالاتر آماده باشه، سیستم تسک فعلی رو قطع میکنه و اون یکی رو فوری اجرا میکنه. به این میگن Preemption، یعنی پیشدستی کردن در اجرا. این کار باعث میشه تسکهای مهم هیچوقت منتظر نمونن و بلافاصله اجرا بشن.
یه RTOS همیشه یه سری تسک با وضعیتهای مشخص داره. بعضی تسکها در حال اجرا هستن (Running)، بعضیها منتظر یه رویداد یا دستورن (Waiting)، بعضیها هم خوابیدن تا یه تایمر تموم بشه (Sleeping). سیستم این وضعیتها رو با سرعت خیلی بالا مدیریت میکنه تا هیچ تاخیری پیش نیاد. هر لحظه میدونه کدوم تسک آمادهست، کدوم منتظره، و کدوم باید الان اجرا بشه.
یه بخش خیلی مهم دیگه تو RTOS، وقفهها (Interrupts) هستن. وقتی یه سختافزار مثل یه سنسور یا پورت سریال یه سیگنال میفرسته، RTOS اون سیگنال رو نادیده نمیگیره یا نمیذاره در نوبت بمونه. بلافاصله میره سراغش، چون ممکنه اون اتفاق حیاتی باشه. برای همین تو RTOS، مدیریت وقفهها فوقالعاده دقیق و با اولویت بالا انجام میشه. حتی ممکنه یه وقفه، یه تسک در حال اجرا رو قطع کنه و خودش رو اجرا کنه، بعد دوباره برگرده به همون تسک قبلی.
توی یه RTOS همه چیز بر پایهی قطعیت و پیشبینیپذیری ساخته شده. زمان اجرای هر تسک معلومه، اولویتها ثابته، وقفهها سریع جواب داده میشن و هیچ چیز تصادفی نیست. به همین خاطر میتونی مطمئن باشی که وقتی گفتی "موتور رو بعد از ۵ میلیثانیه خاموش کن"، دقیقاً بعد از همون ۵ میلیثانیه خاموش میشه، نه بیشتر، نه کمتر. این دقت همون چیزیه که RTOS رو برای سیستمهای بحرانی مثل هواپیما، دستگاههای پزشکی، خودروها، و رباتها ضروری میکنه.
@SohrabContents
❤3
Forwarded from Pavel Durov (Paul Du Rove)
I’m turning 41, but I don’t feel like celebrating.
Our generation is running out of time to save the free Internet built for us by our fathers.
What was once the promise of the free exchange of information is being turned into the ultimate tool of control.
Once-free countries are introducing dystopian measures such as digital IDs (UK), online age checks (Australia), and mass scanning of private messages (EU).
Germany is persecuting anyone who dares to criticize officials on the Internet. The UK is imprisoning thousands for their tweets. France is criminally investigating tech leaders who defend freedom and privacy.
A dark, dystopian world is approaching fast — while we’re asleep. Our generation risks going down in history as the last one that had freedoms — and allowed them to be taken away.
We’ve been fed a lie.
We’ve been made to believe that the greatest fight of our generation is to destroy everything our forefathers left us: tradition, privacy, sovereignty, the free market, and free speech.
By betraying the legacy of our ancestors, we’ve set ourselves on a path toward self-destruction — moral, intellectual, economic, and ultimately biological.
So no, I’m not going to celebrate today. I’m running out of time. We are running out of time.
Our generation is running out of time to save the free Internet built for us by our fathers.
What was once the promise of the free exchange of information is being turned into the ultimate tool of control.
Once-free countries are introducing dystopian measures such as digital IDs (UK), online age checks (Australia), and mass scanning of private messages (EU).
Germany is persecuting anyone who dares to criticize officials on the Internet. The UK is imprisoning thousands for their tweets. France is criminally investigating tech leaders who defend freedom and privacy.
A dark, dystopian world is approaching fast — while we’re asleep. Our generation risks going down in history as the last one that had freedoms — and allowed them to be taken away.
We’ve been fed a lie.
We’ve been made to believe that the greatest fight of our generation is to destroy everything our forefathers left us: tradition, privacy, sovereignty, the free market, and free speech.
By betraying the legacy of our ancestors, we’ve set ourselves on a path toward self-destruction — moral, intellectual, economic, and ultimately biological.
So no, I’m not going to celebrate today. I’m running out of time. We are running out of time.
Pavel Durov
I’m turning 41, but I don’t feel like celebrating. Our generation is running out of time to save the free Internet built for us by our fathers. What was once the promise of the free exchange of information is being turned into the ultimate tool of control.…
پاول دورف :
من در آستانه ۴۱ سالگی هستم، اما احساس نمیکنم که باید جشن بگیرم.
نسل ما در حال از دست دادن زمان برای نجات اینترنت آزادی است که پدرانمان برای ما ساختند.
آنچه زمانی وعدهی تبادل آزاد اطلاعات بود، اکنون در حال تبدیل شدن به ابزار نهاییِ کنترل است.
کشورهایی که زمانی آزاد بودند، در حال معرفی اقدامات ویرانشهریای مانند شناسههای دیجیتال (در بریتانیا)، بررسی سن آنلاین (در استرالیا)، و اسکن گستردهی پیامهای خصوصی (در اتحادیهی اروپا) هستند.
آلمان هر کسی را که جرأت کند در اینترنت از مقامات انتقاد کند، تحت تعقیب قرار میدهد. بریتانیا هزاران نفر را به خاطر توییتهایشان زندانی میکند. فرانسه در حال تحقیق کیفری از رهبران فناوری است که از آزادی و حریم خصوصی دفاع میکنند.
یک دنیای تاریک و ویرانشهری با سرعت در حال نزدیک شدن است — در حالی که ما در خوابیم. نسل ما در خطر آن است که در تاریخ به عنوان آخرین نسلی ثبت شود که آزادی داشت — و اجازه داد آن را از او بگیرند.
به ما دروغ گفته شده است.
به ما القا کردهاند که بزرگترین نبرد نسل ما، نابود کردن هر آن چیزی است که نیاکانمان برای ما به جا گذاشتند: سنت، حریم خصوصی، حاکمیت، بازار آزاد، و آزادی بیان.
با خیانت به میراث نیاکانمان، خود را در مسیری به سوی خودتخریبی قرار دادهایم — از نظر اخلاقی، فکری، اقتصادی، و در نهایت زیستی.
پس نه، من امروز جشن نخواهم گرفت.
زمان من در حال پایان یافتن است.
زمان ما در حال پایان یافتن است.
من در آستانه ۴۱ سالگی هستم، اما احساس نمیکنم که باید جشن بگیرم.
نسل ما در حال از دست دادن زمان برای نجات اینترنت آزادی است که پدرانمان برای ما ساختند.
آنچه زمانی وعدهی تبادل آزاد اطلاعات بود، اکنون در حال تبدیل شدن به ابزار نهاییِ کنترل است.
کشورهایی که زمانی آزاد بودند، در حال معرفی اقدامات ویرانشهریای مانند شناسههای دیجیتال (در بریتانیا)، بررسی سن آنلاین (در استرالیا)، و اسکن گستردهی پیامهای خصوصی (در اتحادیهی اروپا) هستند.
آلمان هر کسی را که جرأت کند در اینترنت از مقامات انتقاد کند، تحت تعقیب قرار میدهد. بریتانیا هزاران نفر را به خاطر توییتهایشان زندانی میکند. فرانسه در حال تحقیق کیفری از رهبران فناوری است که از آزادی و حریم خصوصی دفاع میکنند.
یک دنیای تاریک و ویرانشهری با سرعت در حال نزدیک شدن است — در حالی که ما در خوابیم. نسل ما در خطر آن است که در تاریخ به عنوان آخرین نسلی ثبت شود که آزادی داشت — و اجازه داد آن را از او بگیرند.
به ما دروغ گفته شده است.
به ما القا کردهاند که بزرگترین نبرد نسل ما، نابود کردن هر آن چیزی است که نیاکانمان برای ما به جا گذاشتند: سنت، حریم خصوصی، حاکمیت، بازار آزاد، و آزادی بیان.
با خیانت به میراث نیاکانمان، خود را در مسیری به سوی خودتخریبی قرار دادهایم — از نظر اخلاقی، فکری، اقتصادی، و در نهایت زیستی.
پس نه، من امروز جشن نخواهم گرفت.
زمان من در حال پایان یافتن است.
زمان ما در حال پایان یافتن است.
❤3
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
تا حالا فکر کردین استراتژی redis برای پاک کردن کلیدهای cache که ttl اونها اکسپایر شده چیه؟
در واقع redis دو تا استراتژی داره که از ترکیب این دو برای مدیریت این موضوع استفاده میکنه.
1️- استراتژی اول که بهش میگن lazy expiration ساده ترینشه اینه که وقتی درخواستی برای گرفتن یه کلید اومد اول چک میکنه اون کلید اکسپایر شده یا نه اگه آره اون رو همونجا پاک میکنه و نال برمیگردونه.
2- خب اگه یه کلید برای مدتها صدا زده نشه چی؟ اینجاست که میرسیم به استراتژی دوم یعنی active expiration و به این شکله که میاد مثلا هر 100 میلی ثانیه توی لوپ یه batch که شامل مثلا 20 کلید تصادفی هست رو بررسی میکنه و اونایی که اکسپایر شدن رو پاک میکنه. اگه توی اون لوپ بیشتر از 25 درصد کلیدها پاک بشن اون رو زباله تشخیص میده و حدس میزنه کلیدهای بیشتری هم اکسپایر شدن پس یه batch دیگه اجرا میکنه و در نهایت لوپ تموم میشه تا دوباره لوپ بعدی.
برای همین برخلاف تصور، کلیدهای cache بالافاصله با اتمام ttl حذف نمیشن و ممکنه برای مدتی توی حافظه سرور باقی بمونن مخصوصا اگه حجم کلیدها بالا باشه.
پ.ن: چک کردن تعداد کلیدها در هر لوپ و تعداد اجرای لوپ در ثانیه توی کانفیگ redis قابل تنظیمه، ولی نکته ای که هست هر چی تعداد رو بالاتر ببرین کلیدها سریعتر حذف میشن اما cpu بیشتری درگیر میشه.
@DevTwitter | <Farshad Tofighi/>
در واقع redis دو تا استراتژی داره که از ترکیب این دو برای مدیریت این موضوع استفاده میکنه.
1️- استراتژی اول که بهش میگن lazy expiration ساده ترینشه اینه که وقتی درخواستی برای گرفتن یه کلید اومد اول چک میکنه اون کلید اکسپایر شده یا نه اگه آره اون رو همونجا پاک میکنه و نال برمیگردونه.
2- خب اگه یه کلید برای مدتها صدا زده نشه چی؟ اینجاست که میرسیم به استراتژی دوم یعنی active expiration و به این شکله که میاد مثلا هر 100 میلی ثانیه توی لوپ یه batch که شامل مثلا 20 کلید تصادفی هست رو بررسی میکنه و اونایی که اکسپایر شدن رو پاک میکنه. اگه توی اون لوپ بیشتر از 25 درصد کلیدها پاک بشن اون رو زباله تشخیص میده و حدس میزنه کلیدهای بیشتری هم اکسپایر شدن پس یه batch دیگه اجرا میکنه و در نهایت لوپ تموم میشه تا دوباره لوپ بعدی.
برای همین برخلاف تصور، کلیدهای cache بالافاصله با اتمام ttl حذف نمیشن و ممکنه برای مدتی توی حافظه سرور باقی بمونن مخصوصا اگه حجم کلیدها بالا باشه.
پ.ن: چک کردن تعداد کلیدها در هر لوپ و تعداد اجرای لوپ در ثانیه توی کانفیگ redis قابل تنظیمه، ولی نکته ای که هست هر چی تعداد رو بالاتر ببرین کلیدها سریعتر حذف میشن اما cpu بیشتری درگیر میشه.
@DevTwitter | <Farshad Tofighi/>
ای جان :)
ایشون ناراحته و میگه 2 ماهه داریم سعی میکنیم برنامه نویس استخدام کنیم هیچکدومشون برنامه نویس نیستند.
هر تسکی میدیم با AI میزنن و بعدش ازشون میخوایم کد رو توضیح بدن و یا دیباگ کنن ، با کله میخورن زمین.
و در آخر تمنا میکنه که اگر دیباگ کردن بلد نیستید به خودتون برچسب برنامه نویس بودن رو نزنید وقت ما رو هم نگیرید.
ایشون ناراحته و میگه 2 ماهه داریم سعی میکنیم برنامه نویس استخدام کنیم هیچکدومشون برنامه نویس نیستند.
هر تسکی میدیم با AI میزنن و بعدش ازشون میخوایم کد رو توضیح بدن و یا دیباگ کنن ، با کله میخورن زمین.
و در آخر تمنا میکنه که اگر دیباگ کردن بلد نیستید به خودتون برچسب برنامه نویس بودن رو نزنید وقت ما رو هم نگیرید.
Dev Fuel
ایشون هم میگه تقریبا هر کسی که میشناسم شغلش را از طریق یک دوست یا از طریق یک رئیس/کارمند سابقش پیدا کرده. و بیشتر مشاغل خوب به هر حال آگهی نمیشوند و به واسطه ارتباطات نیرو رو جذب میکنند.
خلاصه که این موارد فقط مرتبط با ایران نمیشه و در همه جای دنیا صدق میکنه.
و مثل همیشه همونطور که همه ما میدونیم داشتن شبکه ای از ارتباطات باعث میشه به شغل مورد نظر خود برسیم.
اگر مدت هاست که تلاش میکنید کار پیدا کنید ولی میبینید نمیشه ، مشکل دقیقا مهارت شما نیست.
سعی رو بر ساخت شبکه ای از ارتباطات بذارید ، کار خودش پیدا میشه.( انشالله )
منطقی هم هست دیگه. شما خودت یه جا نیرو نیاز باشه اول زنگ میزنی به اون رفقایی که میشناسی.در نهایت اگه پیدا نشد ، (که به احتمال بسیار زیاد میشه) میری آگهی ثبت میکنی.
حالا بیخیال این حرف های تکراری که تو همه جا هست. بریم یک چیز جدید یاد بگیریم 👇
و مثل همیشه همونطور که همه ما میدونیم داشتن شبکه ای از ارتباطات باعث میشه به شغل مورد نظر خود برسیم.
اگر مدت هاست که تلاش میکنید کار پیدا کنید ولی میبینید نمیشه ، مشکل دقیقا مهارت شما نیست.
سعی رو بر ساخت شبکه ای از ارتباطات بذارید ، کار خودش پیدا میشه.( انشالله )
منطقی هم هست دیگه. شما خودت یه جا نیرو نیاز باشه اول زنگ میزنی به اون رفقایی که میشناسی.در نهایت اگه پیدا نشد ، (که به احتمال بسیار زیاد میشه) میری آگهی ثبت میکنی.
حالا بیخیال این حرف های تکراری که تو همه جا هست. بریم یک چیز جدید یاد بگیریم 👇
🔥 اجرای دستورات سرور از دل Node.js
زمانی که توی پروژههای Node.js کار میکنید، حتماً(حالا نه حتماً ولی شاید) پیش اومده(یا شاید پیش بیاد) که بخواید یه دستور ترمینال (Shell) رو از داخل کدتون اجرا کنید. مثلاً یه اسکریپت پایتون رو ران کنید، با
درسته که با
اینجاست که میتونیم از یک ابزار قدرتمندتر به نام
فرض کنید میخوایم دستور ping google.com رو اجرا کنیم و خروجی رو همون لحظه ببینیم.
#server #nodejs
زمانی که توی پروژههای Node.js کار میکنید، حتماً(حالا نه حتماً ولی شاید) پیش اومده(یا شاید پیش بیاد) که بخواید یه دستور ترمینال (Shell) رو از داخل کدتون اجرا کنید. مثلاً یه اسکریپت پایتون رو ران کنید، با
ffmpeg یه ویدیو رو پردازش کنید یا حتی وضعیت یه سرویس رو چک کنید.درسته که با
exec میتونیم اینکار رو کنیم ،اما exec یه مشکلی که داره باید صبر کنیم تا دستور کامل تموم بشه.که ما اعصابش رو نداریم.اینجاست که میتونیم از یک ابزار قدرتمندتر به نام
spawn از ماژول داخلی child_process بهره مند بشیم!
spawn به جای منتظر موندن، یه فرآیند جدید ایجاد میکنه و به شما اجازه میده خروجی (و حتی خطاها) رو به صورت زنده و لحظه ای دریافت کنید.فرض کنید میخوایم دستور ping google.com رو اجرا کنیم و خروجی رو همون لحظه ببینیم.
import { spawn } from 'child_process';
// دستور اصلی 'ping' و آرگومانش 'google.com'
const process = spawn('ping', ['google.com']);
// 1. گوش دادن به خروجی موفقیتآمیز (stdout)
// این قسمت با هر خط جدیدی که در خروجی چاپ بشه، اجرا میشه
process.stdout.on('data', (data) => {
console.log(`[LOG]: ${data}`);
});
// 2. گوش دادن به خروجی خطا (stderr)
process.stderr.on('data', (data) => {
console.error(`[ERROR]: ${data}`);
});
// 3. وقتی فرآیند کاملاً تموم شد
process.on('close', (code) => {
console.log(`✅ فرآیند با کد خروجی ${code} بسته شد.`);
});#server #nodejs
❤2👍1
نکنه دامنه هم مافیا داره؟
یعنی هر اسمی که به ذهنم رسید زدم ، هر اسمی. ولی از قبل گرفته شده بود!
مگه داریم!
یعنی هر اسمی که به ذهنم رسید زدم ، هر اسمی. ولی از قبل گرفته شده بود!
مگه داریم!
آیا میدانستید زبان جاوا در اصل قرار بود Oak باشه (بلوط)، ولی این دامنه گرفته شده بود!
تیم توسعه توی انتخاب دنبال اسم ساده، کوتاه و باحال بودن.
یکی از اعضا قهوهی «Java Coffee» روی میزش بود و گفت جاوا! شد همین.
تیم توسعه توی انتخاب دنبال اسم ساده، کوتاه و باحال بودن.
یکی از اعضا قهوهی «Java Coffee» روی میزش بود و گفت جاوا! شد همین.
❤2
Dev Fuel
آیا میدانستید زبان جاوا در اصل قرار بود Oak باشه (بلوط)، ولی این دامنه گرفته شده بود! تیم توسعه توی انتخاب دنبال اسم ساده، کوتاه و باحال بودن. یکی از اعضا قهوهی «Java Coffee» روی میزش بود و گفت جاوا! شد همین.
منم روی میزم رو کلی گشتم ولی چیزی پیدا نکردم که دامنه اش آزاد باشه.
شما روی میزتون چیزی دارید که دامنه اش آزاد باشه؟
شما روی میزتون چیزی دارید که دامنه اش آزاد باشه؟
چطوری از هیچی، رسیدم به طراحی اوبر؟
یه حقیقت تلخ:
یه روزایی بود هرچی مطلب درباره System Design میدیدم، رد میکردم.
با خودم میگفتم: اینا مال سینیورهاست، مال من نیست.
ولی وقتی تو یه مصاحبه گفتن «یه اوبر طراحی کن!»
خشک شدم…
در حد REST API حرف زدم و دیتابیس MySQL
بعدش سکوت…
نه از مقیاسپذیری سر در میآوردم، نه از صف، نه حتی لوکیشن لحظهای.
از اون روز تصمیم گرفتم این قضیه هیچوقت دوباره تکرار نشه.
چیکار کردم؟
1️⃣ قبول کردم هیچی نمیدونم و طبیعیه
سیستم دیزاین یه مبحث نیست، یه دنیاس:
• چجوری دیتا میچرخه
• سرویسها چطور با هم حرف میزنن
• چطور سیستم زیر فشار نمیپره
یکمیکم جلو رفتم، نه دنبال کاملگرایی.
2️⃣ کل موضوع رو تیکهتیکه یاد گرفتم
از مفاهیم پایه مثل DNS و CDN
تا دیتابیسها، شاردینگ
تا کش و لود بالانسر
تا معماریها مثل میکروسرویس و Event-driven
هرکدومشون یه چراغ روشن کردن تو ذهنم
3️⃣ دیدم آدمها چطور فکر میکنن، نه فقط چی میگن
مصاحبههای ماک دیدم
اشتباه میکردن، برمیگشتن، توضیح میدادن
اونجا بود فهمیدم سیستم دیزاین یعنی:
• سوال درست بپرس
• trade-off توضیح بده
• نه جواب حفظی
4️⃣ کشیدم روی کاغذ
طراحی یعنی تصویر، نه حفظ کردن.
یه فلو ساده:
Client → Load Balancer → App → DB
همهچی یهو معنی پیدا کرد.
5️⃣ با مسائل واقعی تمرین کردم
واتساپ، اینستاگرام، یوتیوب
نیازمندیها، دیتابیس، اسکال، خرابیها
هفتهای یه پروژه
نه دنبال جواب درست
دنبال دلیل پشت انتخابها
6️⃣ تو کار واقعی هم استفاده کردم
صف آوردیم، سرویسها جدا کردیم
سیستم قابلاعتمادتر شد
اونجا فهمیدم اینا فقط برای مصاحبه نیست، برای زندگی حرفهایه!
7️⃣ به بقیه یاد دادم
هرچی سادهتر توضیح بدی
یعنی واقعا فهمیدی.
حرف آخرم:
سیستم دیزاین جادو نیست.
لازم نیست ۱۰ سال سابقه داشته باشی.
فقط باید شروع کنی:
• از پایهها
• از مثالهای واقعی
• هفتهای یکبار تمرین
• پشت هر انتخاب دلیل داشته باش
سه ماه فقط روزی نیم ساعت وقت بذاری
خودت تعجب میکنی از پیشرفتت
سیستم دیزاین یعنی طرز فکر
نه تعداد نمودارهایی که حفظی.
از «وقتی URL رو میزنیم چی میشه؟» شروع کن
تا طراحی اینستاگرام
قدمبهقدم
سیستمبهسیستم
قویتر میشی 💪
https://medium.com/@himanshusingour7/how-i-learned-system-design-d7444d454367
یه حقیقت تلخ:
یه روزایی بود هرچی مطلب درباره System Design میدیدم، رد میکردم.
با خودم میگفتم: اینا مال سینیورهاست، مال من نیست.
ولی وقتی تو یه مصاحبه گفتن «یه اوبر طراحی کن!»
خشک شدم…
در حد REST API حرف زدم و دیتابیس MySQL
بعدش سکوت…
نه از مقیاسپذیری سر در میآوردم، نه از صف، نه حتی لوکیشن لحظهای.
از اون روز تصمیم گرفتم این قضیه هیچوقت دوباره تکرار نشه.
چیکار کردم؟
1️⃣ قبول کردم هیچی نمیدونم و طبیعیه
سیستم دیزاین یه مبحث نیست، یه دنیاس:
• چجوری دیتا میچرخه
• سرویسها چطور با هم حرف میزنن
• چطور سیستم زیر فشار نمیپره
یکمیکم جلو رفتم، نه دنبال کاملگرایی.
2️⃣ کل موضوع رو تیکهتیکه یاد گرفتم
از مفاهیم پایه مثل DNS و CDN
تا دیتابیسها، شاردینگ
تا کش و لود بالانسر
تا معماریها مثل میکروسرویس و Event-driven
هرکدومشون یه چراغ روشن کردن تو ذهنم
3️⃣ دیدم آدمها چطور فکر میکنن، نه فقط چی میگن
مصاحبههای ماک دیدم
اشتباه میکردن، برمیگشتن، توضیح میدادن
اونجا بود فهمیدم سیستم دیزاین یعنی:
• سوال درست بپرس
• trade-off توضیح بده
• نه جواب حفظی
4️⃣ کشیدم روی کاغذ
طراحی یعنی تصویر، نه حفظ کردن.
یه فلو ساده:
Client → Load Balancer → App → DB
همهچی یهو معنی پیدا کرد.
5️⃣ با مسائل واقعی تمرین کردم
واتساپ، اینستاگرام، یوتیوب
نیازمندیها، دیتابیس، اسکال، خرابیها
هفتهای یه پروژه
نه دنبال جواب درست
دنبال دلیل پشت انتخابها
6️⃣ تو کار واقعی هم استفاده کردم
صف آوردیم، سرویسها جدا کردیم
سیستم قابلاعتمادتر شد
اونجا فهمیدم اینا فقط برای مصاحبه نیست، برای زندگی حرفهایه!
7️⃣ به بقیه یاد دادم
هرچی سادهتر توضیح بدی
یعنی واقعا فهمیدی.
حرف آخرم:
سیستم دیزاین جادو نیست.
لازم نیست ۱۰ سال سابقه داشته باشی.
فقط باید شروع کنی:
• از پایهها
• از مثالهای واقعی
• هفتهای یکبار تمرین
• پشت هر انتخاب دلیل داشته باش
سه ماه فقط روزی نیم ساعت وقت بذاری
خودت تعجب میکنی از پیشرفتت
سیستم دیزاین یعنی طرز فکر
نه تعداد نمودارهایی که حفظی.
از «وقتی URL رو میزنیم چی میشه؟» شروع کن
تا طراحی اینستاگرام
قدمبهقدم
سیستمبهسیستم
قویتر میشی 💪
https://medium.com/@himanshusingour7/how-i-learned-system-design-d7444d454367
❤7
Dev Fuel
به عنوان یه برنامه نویس ( خصوصا بک اند ) نیازه که راجع به سیستم دیزاین بدونید. پیشنهاد میکنم اگه خیلی آشنایی ندارید و یا تازه کار هستید (حتی اگه تازه کار هم نباشید خیلی به درد میخوره) این دوره رو ببینید دید خیلی خوبی بهتون میده. من خودم دارم این دوره رو…
در رابطه با پست قبلی
این دوره میتونه شروع خیلی خوبی باشه👌
این دوره میتونه شروع خیلی خوبی باشه👌