یک خلاصهی دقیق و کاربردی از مقالهی
«How to design Google Drive / Dropbox (a cloud file storage service)» نوشتهی
ا Pankaj Tanwar ارائه شده است؛ این مقاله در بلاگ Pankaj Tanwar منتشر شده و روی طراحی یک سرویس ذخیرهسازی ابری با قابلیت upload، sync و versioning متمرکز است
🎯 چشمانداز کلی سیستم
سیستم باید به کاربران اجازه دهد فایلها را آپلود، دانلود، ویرایش و حذف کنند، با هماهنگی بین تمامی دستگاههای کاربر و پشتیبانی از نسخهگذاری فایلها (history/versioning).
در عین حال، باید high availability، scalability و durability را در سطح بالا تضمین کند و خواص ACID مانند atomicity و consistency را حفظ نماید
🔧 معماری سطح بالا
سه مولفه اصلی سیستم:
Object storage (cloud/block storage) برای نگهداری واقعی فایلها یا chunkها.
Block server برای مدیریت upload/download و بهینهسازی انتقال دیتا.
Metadata database برای نگهداری اطلاعات فایل مانند path، hash، version و...
Synchronization server برای هماهنگی بین دستگاهها و انتشار تغییرات
⚙️ طراحی کلاینت و انتقال فایل
فایلها به شکل chunks منتقل میشوند، نه بهصورت کامل:
مزایا: کاهش مصرف پهنایباند، retry هوشمند، آپدیت چکشده با hash و مدیریت نسخه بهتر.
نامگذاری chunkها معمولاً بر مبنای hash محتوا صورت میگیرد.
این استراتژی باعث تسهیل upload، کاهش latency و امکان موازیسازی (concurrency) میشود
🧠 مدیریت metadata و partitioning
پارتیشنبندی دیتابیس برای metadata:
روشهایی مثل تقسیم بر اساس حرف اول filepath یا hash از fileID.
ترکیب consistent hashing برای جلوگیری از عدم توازن پارتیشنها.
انتخاب بین RDBMS یا NoSQL:
RDBMS مثل MySQL برای تضمین ACID.
NoSQL مانند Cassandra/DynamoDB برای مقیاسپذیری بهتر (در صورت دستیسازی consistency برنامهگونه)
🔄 سرویس همگامسازی (Synchronization Service)
وظیفه هماهنگسازی تغییرات بین دستگاههای مختلف:
بررسی تغییر با hash (مثلاً SHA‑256) برای تشخیص تغییر chunk.
استفاده از message queue (مثل Kafka یا RabbitMQ) برای انتشار بروزرسانیها به تمامی دستگاههای مرتبط در قالب پیامها.
اجتناب از ارسال دوباره chunkهای تکراری و امکان deduplication.
سرویس بهینه برای مصرف حداقل پهنایباند و کاهش تاخیر طراحی میشود
📦 لایههای کلیدی اضافی سیستم
Caching:
کش بخش chunk روی Memcached یا Redis برای بهبود performance و کاهش latency.
سیاست LRU و caching metadata نیز کاربردی است.
Load Balancer:
استفاده از الگوریتمهایی مثل round robin یا load-aware routing برای توزیع مناسب فرمانها و درخواستها بین سرورها
«How to design Google Drive / Dropbox (a cloud file storage service)» نوشتهی
ا Pankaj Tanwar ارائه شده است؛ این مقاله در بلاگ Pankaj Tanwar منتشر شده و روی طراحی یک سرویس ذخیرهسازی ابری با قابلیت upload، sync و versioning متمرکز است
🎯 چشمانداز کلی سیستم
سیستم باید به کاربران اجازه دهد فایلها را آپلود، دانلود، ویرایش و حذف کنند، با هماهنگی بین تمامی دستگاههای کاربر و پشتیبانی از نسخهگذاری فایلها (history/versioning).
در عین حال، باید high availability، scalability و durability را در سطح بالا تضمین کند و خواص ACID مانند atomicity و consistency را حفظ نماید
🔧 معماری سطح بالا
سه مولفه اصلی سیستم:
Object storage (cloud/block storage) برای نگهداری واقعی فایلها یا chunkها.
Block server برای مدیریت upload/download و بهینهسازی انتقال دیتا.
Metadata database برای نگهداری اطلاعات فایل مانند path، hash، version و...
Synchronization server برای هماهنگی بین دستگاهها و انتشار تغییرات
⚙️ طراحی کلاینت و انتقال فایل
فایلها به شکل chunks منتقل میشوند، نه بهصورت کامل:
مزایا: کاهش مصرف پهنایباند، retry هوشمند، آپدیت چکشده با hash و مدیریت نسخه بهتر.
نامگذاری chunkها معمولاً بر مبنای hash محتوا صورت میگیرد.
این استراتژی باعث تسهیل upload، کاهش latency و امکان موازیسازی (concurrency) میشود
🧠 مدیریت metadata و partitioning
پارتیشنبندی دیتابیس برای metadata:
روشهایی مثل تقسیم بر اساس حرف اول filepath یا hash از fileID.
ترکیب consistent hashing برای جلوگیری از عدم توازن پارتیشنها.
انتخاب بین RDBMS یا NoSQL:
RDBMS مثل MySQL برای تضمین ACID.
NoSQL مانند Cassandra/DynamoDB برای مقیاسپذیری بهتر (در صورت دستیسازی consistency برنامهگونه)
🔄 سرویس همگامسازی (Synchronization Service)
وظیفه هماهنگسازی تغییرات بین دستگاههای مختلف:
بررسی تغییر با hash (مثلاً SHA‑256) برای تشخیص تغییر chunk.
استفاده از message queue (مثل Kafka یا RabbitMQ) برای انتشار بروزرسانیها به تمامی دستگاههای مرتبط در قالب پیامها.
اجتناب از ارسال دوباره chunkهای تکراری و امکان deduplication.
سرویس بهینه برای مصرف حداقل پهنایباند و کاهش تاخیر طراحی میشود
📦 لایههای کلیدی اضافی سیستم
Caching:
کش بخش chunk روی Memcached یا Redis برای بهبود performance و کاهش latency.
سیاست LRU و caching metadata نیز کاربردی است.
Load Balancer:
استفاده از الگوریتمهایی مثل round robin یا load-aware routing برای توزیع مناسب فرمانها و درخواستها بین سرورها
🙏1
این سایت کار باحالی میکنه. کافیه یه ایده داشته باشی، براش توضیح میدی، کمکت میکنه که چطور محصول رو بسازی یا این ایده رو به درآمد برسونی. من چک کردم بدی نبود. ارزش داره خودتون چک کنید.
https://nas.io
<Saman Faegh/>
https://nas.io
<Saman Faegh/>
😈3
اگه یه چیزی مثل curl برای gRPC میخواین میتونین از این استفاده کنین:
https://github.com/fullstorydev/grpcurl
<بلک استیت />
https://github.com/fullstorydev/grpcurl
<بلک استیت />
GitHub
GitHub - fullstorydev/grpcurl: Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers
Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers - fullstorydev/grpcurl
🙏1
اگه طرفدار و کاربر editorهای ترمینالی مثل vim و مشتقاتش هستید پیشنهاد میکنم حتما Helix رو امتحان کنید.
با Rust توسعه داده شده و learning curve خیلی راحت تری داره.
همیشه لیست hotkeyهای مد نظرتون جلوی چشمتونه و لازم نیست همه چیز رو حفظ کنید یا اونقدر تمرین کنید که ملکه ذهنتون بشه.
دو هفته ای میشه که محیط اصلی توسعه خودم هست و بشدت ازش راضیم.
مزیت اصلی ش نسبت به vim همینه که در یه زمان خیلی محدود میتونید روش مسلط بشید و به عنوان محیط اصلی توسعه ازش استفاده کنید.
ترکیب zellij با helix یه محیط خیلی حرفه ای و customize شده توسعه رو میتونه بهتون بده.
اگه تجربه تون با vim شکست خورده مثل من، با helix یه تلاش مجدد کنید شاید این بار موفقیت آمیز باشه...
https://helix-editor.com
<Hossein Nazari/>
با Rust توسعه داده شده و learning curve خیلی راحت تری داره.
همیشه لیست hotkeyهای مد نظرتون جلوی چشمتونه و لازم نیست همه چیز رو حفظ کنید یا اونقدر تمرین کنید که ملکه ذهنتون بشه.
دو هفته ای میشه که محیط اصلی توسعه خودم هست و بشدت ازش راضیم.
مزیت اصلی ش نسبت به vim همینه که در یه زمان خیلی محدود میتونید روش مسلط بشید و به عنوان محیط اصلی توسعه ازش استفاده کنید.
ترکیب zellij با helix یه محیط خیلی حرفه ای و customize شده توسعه رو میتونه بهتون بده.
اگه تجربه تون با vim شکست خورده مثل من، با helix یه تلاش مجدد کنید شاید این بار موفقیت آمیز باشه...
https://helix-editor.com
<Hossein Nazari/>
Helix-Editor
Helix
A post-modern modal text editor.
🤝2
Forwarded from DevOps Labdon
هشدار فوری: باگ خطرناک WinRAR دوباره فعال شد – همین حالا آپدیت کنید!
▪️یک آسیبپذیری جدید با شناسه CVE-2025-8088 در WinRAR کشف شده که این بار هکرها از آن برای پخش بدافزار RomCom استفاده میکنن. نکته ترسناک اینجاست که این حمله حتی روی ویندوزهایی که WinRAR نصب ندارند هم قابل اجراست!
▪️هکرها از طریق ایمیلهای فیشینگ و فایلهای RAR آلوده، مسیر استخراج فایل رو دستکاری کرده و کدهای مخرب رو اجرا میکنن. این بدافزار میتونه اطلاعات حساس شما رو سرقت کرد
▪️یک آسیبپذیری جدید با شناسه CVE-2025-8088 در WinRAR کشف شده که این بار هکرها از آن برای پخش بدافزار RomCom استفاده میکنن. نکته ترسناک اینجاست که این حمله حتی روی ویندوزهایی که WinRAR نصب ندارند هم قابل اجراست!
▪️هکرها از طریق ایمیلهای فیشینگ و فایلهای RAR آلوده، مسیر استخراج فایل رو دستکاری کرده و کدهای مخرب رو اجرا میکنن. این بدافزار میتونه اطلاعات حساس شما رو سرقت کرد
❤1
Forwarded from Linux Labdon
لینوس توروالدز: کد مهندس گوگل «آشغال محض» بود!
▪️همه فکر میکنن مهندسای گوگل در قله کیفیت هستن، اما خالق لینوکس یه شوک اساسی داد! لینوس توروالدز بدون هیچ تعارف، کد یکی از برنامهنویسای گوگل رو «به درد نخور» خطاب کرد و اون رو با خاک یکسان کرد.
▪️ماجرا از یه Pull Request مربوط به پشتیبانی RISC-V در لینوکس 6.17 شروع شد. پالمر دابلت از تیم اندروید، تغییرات رو فرستاد، ولی:
1. کیفیت کدنویسی افتضاح!
2. ارسال دیرهنگام در «پنجره ادغام»!
▪️همه فکر میکنن مهندسای گوگل در قله کیفیت هستن، اما خالق لینوکس یه شوک اساسی داد! لینوس توروالدز بدون هیچ تعارف، کد یکی از برنامهنویسای گوگل رو «به درد نخور» خطاب کرد و اون رو با خاک یکسان کرد.
▪️ماجرا از یه Pull Request مربوط به پشتیبانی RISC-V در لینوکس 6.17 شروع شد. پالمر دابلت از تیم اندروید، تغییرات رو فرستاد، ولی:
1. کیفیت کدنویسی افتضاح!
2. ارسال دیرهنگام در «پنجره ادغام»!
Forwarded from Bardia & Erfan
🎯 آمادگی کامل IELTS با تدریس خصوصی و آنلاین
👑به دنبال نمره بالا در آیلتس هستی؟
🟢با استاد Mansourian، مدرس با تجربه مهارتهای
🩵Speaking
🩵Writing
🩵Reading
🩵Listening
رو به بهترین شکل تقویت کن.
📌 کلاسها به صورت آنلاین، خصوصی و روزانه برگزار میشه.
📈 پیشرفت سریع + برنامهریزی دقیق برای رسیدن به هدفت.
💬 همین الان فالو کن و مسیر موفقیتت رو شروع کن!
👇پیج استاد توی انستاگرام 👇
https://www.instagram.com/english_razi_ielts
👑به دنبال نمره بالا در آیلتس هستی؟
🟢با استاد Mansourian، مدرس با تجربه مهارتهای
🩵Speaking
🩵Writing
🩵Reading
🩵Listening
رو به بهترین شکل تقویت کن.
📌 کلاسها به صورت آنلاین، خصوصی و روزانه برگزار میشه.
📈 پیشرفت سریع + برنامهریزی دقیق برای رسیدن به هدفت.
💬 همین الان فالو کن و مسیر موفقیتت رو شروع کن!
👇پیج استاد توی انستاگرام 👇
https://www.instagram.com/english_razi_ielts
👍1
پایان استقلال گیتهاب؛ مایکروسافت همهچیز را میبلعد!
▪️گیتهاب، بزرگترین مخزن کد جهان و خانه میلیونها توسعهدهنده، بعد از استعفای مدیرعاملش دیگه مستقل نیست! مایکروسافت رسماً این پلتفرم محبوب رو قورت داد و انداختش وسط تیم Core AI خودش.
▪️«توماس دومکه» مدیرعامل گیتهاب گفت تا آخر امسال میره دنبال استارتاپ جدیدش، اما درست بعد از اعلام رفتنش، خبر اومد که گیتهاب از این به بعد بخشی از پروژههای AI مایکروسافته؛ یعنی همه راهها مستقیم میره سمت GitHub Copilot...
+ اما برنامهنویس ها نگرانن همون بلایی که سر اسکایپ اومد سر گیتهاب هم بیاد!
▪️گیتهاب، بزرگترین مخزن کد جهان و خانه میلیونها توسعهدهنده، بعد از استعفای مدیرعاملش دیگه مستقل نیست! مایکروسافت رسماً این پلتفرم محبوب رو قورت داد و انداختش وسط تیم Core AI خودش.
▪️«توماس دومکه» مدیرعامل گیتهاب گفت تا آخر امسال میره دنبال استارتاپ جدیدش، اما درست بعد از اعلام رفتنش، خبر اومد که گیتهاب از این به بعد بخشی از پروژههای AI مایکروسافته؛ یعنی همه راهها مستقیم میره سمت GitHub Copilot...
+ اما برنامهنویس ها نگرانن همون بلایی که سر اسکایپ اومد سر گیتهاب هم بیاد!
❤1🔥1🎉1💅1
YAML is known to be nobody's friend and almost everyone's enemy. Try this to see if it's your friend or foe!
یه تست باحال که میتونین بفهمین چقدر فایلهای YAML رو میشناسین و چقدر نه :)
#YAML #Quiz #Test #Config
https://www.ohyaml.wtf
یه تست باحال که میتونین بفهمین چقدر فایلهای YAML رو میشناسین و چقدر نه :)
#YAML #Quiz #Test #Config
https://www.ohyaml.wtf
این API های رایگان قطعا توی پروژه هات بدردت میخورن
از این 10 api رایگان میتونیم به آسانی در پروژه هامون استفاده کنیم و پروژه های تمرینی مون رو میتونیم تبدیل به پروژه داینامیک با دیتا های واقعی کنیم
1 - Open Trivia Database
این api سوالات دانستی رو در دسته بندی های مختلف بهمون میده که در برنامه های کوییز و امتحانی میتونه استفاده بشه
2 - Bored Api
این api فعالیت های تصادفی و شانسی برای انجام وقت هایی که بی حوصله هستیم پیشنهاد میده که برای استفاده در برنامه های پیشنهادی , تعریفی , جرعت و حقیقت برای پیشنهاد کار های جرعت عالیه
3 - Universities
این api اطلاعات درباره دانشگاه های سرتاسر جهان داره که برای برنامه های اطلاعات و توضیح درباره دانشگاه ها و آموزشی عالیه
4 - Fun Translations Api
این api متن هارو به زبان های فانتزی و فان ترجمه میکنه که برای برنامه های سرگرمی عالیه
5 - IPGeoLocation Api
این api داده های مکان یابی بر اساس آدرس ip ارائه میده
6 - MealDB
این api یک دیتابیس از وعده های غذایی و دستور پخت و پز بهمون میده که برای برنامه های آموزشی غذایی ایده آل هست
7 - Numbers Api
این api اطلاعات تصادفی دباره اعداد بهمون میده , چه تاریخی و چه ریاضیات
8 - Currency Exchange Rates
این api داده های تبدیل ارز به صورت بلادرنگ بهمون میده که برای برنامه های مرتبط با امور مالی و بازار های جهانی عالی هستش
9 - Open Library Api
این api دسترسی به داده های وسیعی از کتاب ها و نویسندگان رو بهمون میده که برای استفاده در برنامه های کتاب , مطالعه میتونه مورد استفاده قرار بگیره
10 - Random User
این api دیتا های اشخاص تصادفی بهمون میده مثل (اسم , پروفایل و ....)
از این 10 api رایگان میتونیم به آسانی در پروژه هامون استفاده کنیم و پروژه های تمرینی مون رو میتونیم تبدیل به پروژه داینامیک با دیتا های واقعی کنیم
1 - Open Trivia Database
این api سوالات دانستی رو در دسته بندی های مختلف بهمون میده که در برنامه های کوییز و امتحانی میتونه استفاده بشه
2 - Bored Api
این api فعالیت های تصادفی و شانسی برای انجام وقت هایی که بی حوصله هستیم پیشنهاد میده که برای استفاده در برنامه های پیشنهادی , تعریفی , جرعت و حقیقت برای پیشنهاد کار های جرعت عالیه
3 - Universities
این api اطلاعات درباره دانشگاه های سرتاسر جهان داره که برای برنامه های اطلاعات و توضیح درباره دانشگاه ها و آموزشی عالیه
4 - Fun Translations Api
این api متن هارو به زبان های فانتزی و فان ترجمه میکنه که برای برنامه های سرگرمی عالیه
5 - IPGeoLocation Api
این api داده های مکان یابی بر اساس آدرس ip ارائه میده
6 - MealDB
این api یک دیتابیس از وعده های غذایی و دستور پخت و پز بهمون میده که برای برنامه های آموزشی غذایی ایده آل هست
7 - Numbers Api
این api اطلاعات تصادفی دباره اعداد بهمون میده , چه تاریخی و چه ریاضیات
8 - Currency Exchange Rates
این api داده های تبدیل ارز به صورت بلادرنگ بهمون میده که برای برنامه های مرتبط با امور مالی و بازار های جهانی عالی هستش
9 - Open Library Api
این api دسترسی به داده های وسیعی از کتاب ها و نویسندگان رو بهمون میده که برای استفاده در برنامه های کتاب , مطالعه میتونه مورد استفاده قرار بگیره
10 - Random User
این api دیتا های اشخاص تصادفی بهمون میده مثل (اسم , پروفایل و ....)
❤1👀1
بنظرم اینکه خودتون درک کنید تکنولوژی هایی که باهاشون کار میکنید چطور در زیرلایه کار میکنن دید از بالای خوبی به ادم توی کار میده؛ توی این ریپو برای زبان های متخلف ساخت مرحله به مرحله تکنولوژی هایی مثل git, docker, redis, torent , http و sql هست.
https://github.com/codecrafters-io/build-your-own-x?tab=readme-ov-file
<Moj./>
https://github.com/codecrafters-io/build-your-own-x?tab=readme-ov-file
<Moj./>
Forwarded from Bardia & Erfan
🤨 دارک مود؛ ناجی چشمها یا یه توهم مدرن...؟!
خیلیا فکر میکنن دارک مود برای چشم سالمتره، اما تحقیقات علمی چی میگن؟ بررسی مطالعات جدید نشون میده که دارک مود هم مزایا داره، هم معایب!
مزایای علمی دارک مود :
▪️کاهش نور آبی : نور آبی زیاد، ریتم خواب رو مختل میکنه، و دارک مود میتونه به خواب بهتر کمک کنه.
▪️کاهش مصرف باتری : روی نمایشگرهای OLED، رنگهای تیره مصرف انرژی کمتری دارن.
▪️کاهش خیرگی در محیطهای کمنور : وقتی نور اطراف کم باشه، دارک مود فشار کمتری به چشم وارد میکنه.
معایب علمی دارک مود :
▪️کاهش خوانایی متن در روز: چشم انسان به خوندن متن تیره روی پسزمینه روشن عادت داره، و دارک مود توی نور زیاد باعث خستگی چشم میشه.
▪️برخی تحقیقات نشون میدن که چشم توی حالت دارک مود بیشتر مجبور به تطبیق و تمرکز میشه، که میتونه خستگی ایجاد کنه.
▪️برخلاف تصور عموم، تغییر تم به تنهایی تأثیر زیادی روی کاهش خشکی و خستگی چشم نداره، بلکه میزان پلک زدن و استراحت دادن به چشم مهمتره.
خیلیا فکر میکنن دارک مود برای چشم سالمتره، اما تحقیقات علمی چی میگن؟ بررسی مطالعات جدید نشون میده که دارک مود هم مزایا داره، هم معایب!
مزایای علمی دارک مود :
▪️کاهش نور آبی : نور آبی زیاد، ریتم خواب رو مختل میکنه، و دارک مود میتونه به خواب بهتر کمک کنه.
▪️کاهش مصرف باتری : روی نمایشگرهای OLED، رنگهای تیره مصرف انرژی کمتری دارن.
▪️کاهش خیرگی در محیطهای کمنور : وقتی نور اطراف کم باشه، دارک مود فشار کمتری به چشم وارد میکنه.
معایب علمی دارک مود :
▪️کاهش خوانایی متن در روز: چشم انسان به خوندن متن تیره روی پسزمینه روشن عادت داره، و دارک مود توی نور زیاد باعث خستگی چشم میشه.
▪️برخی تحقیقات نشون میدن که چشم توی حالت دارک مود بیشتر مجبور به تطبیق و تمرکز میشه، که میتونه خستگی ایجاد کنه.
▪️برخلاف تصور عموم، تغییر تم به تنهایی تأثیر زیادی روی کاهش خشکی و خستگی چشم نداره، بلکه میزان پلک زدن و استراحت دادن به چشم مهمتره.
❤2👍1
میخوای با چالش های مختلف برنامه نویسی آشنا بشی و اونارو حل کنی؟!
اگه دنبال حل کردن چالش های مختلف و دست و پنجه نرم کردن با مشکلات برنامه نویسی هستین و دوست دارین سرگرم شین این وبسایت برای شماست.
علاوه بر اینکه اکثر زبان های برنامه نویسی رو پوشش میده بازی ها و چالش های مختلف زیادی هم داره و علاوه بر اینها یک IDE قدرتمند برای برنامه نویسی رو در اختیارمون گذاشته
https://www.codingame.com
اگه دنبال حل کردن چالش های مختلف و دست و پنجه نرم کردن با مشکلات برنامه نویسی هستین و دوست دارین سرگرم شین این وبسایت برای شماست.
علاوه بر اینکه اکثر زبان های برنامه نویسی رو پوشش میده بازی ها و چالش های مختلف زیادی هم داره و علاوه بر اینها یک IDE قدرتمند برای برنامه نویسی رو در اختیارمون گذاشته
https://www.codingame.com
CodinGame
Coding Games and Programming Challenges to Code Better
CodinGame is a challenge-based training platform for programmers where you can play with the hottest programming topics. Solve games, code AI bots, learn from your peers, have fun.
❤1
Forwarded from Gopher Academy
کدوم هوش مصنوعی رو انتخاب می کنید واسه کارهای برنامه نویسی؟
Anonymous Poll
48%
GPT
12%
Grok
42%
Claude
17%
other
چند وقت پیش مسئولیت Refactor بخشی از یک پروژه بزرگ Next.js بهم سپرده شد. بخشی از این کار، شناسایی و حذف کدها و فایلهای بلااستفاده (Dead Code) بود کاری که توی پروژههای بزرگ معمولاً سخت، زمانبر و پرریسکه.
برای سادهتر کردن این مسیر، به ابزار knip رسیدم. ابزار قدرتمندی که فایلها، فانکشن ها و حتی dependencyهای بلااستفاده رو شناسایی میکنه.
در عمل، knip تونست بخش زیادی از dead code ها رو شناسایی کنه، اما دو نکتهی جالب و مهم برام داشت:
- اولی مربوط به component tree بود.
یکسری کامپوننتها بهعنوان dead code تشخیص داده شده بودن، در حالی که وقتی سرچ میکردم، میدیدم یه جای دیگه دارن استفاده میشن. اما وقتی کامپوننت parent رو بررسی کردم، فهمیدم اون خودش هیچجا استفاده نشده و این باعث شده بود که child رو هم dead code بدونه. این عمق تحلیل وابستگی، برام قابل توجه بود.
- دومی تشخیص ناقص بعضی dependencyها بود.
برای مثال، tailwindcss و یکی از پلاگینهاش که در فایل CSS ایمپورت شده بودن، بهعنوان unused معرفی شدن. همینطور بعضی پلاگینهای ESLint هم به اشتباه در لیست قرار گرفته بودن. این یعنی خروجی ابزار، هرچقدر هم دقیق باشه، همچنان نیاز به بررسی انسانی داره.
این تجربه باعث شد ابزارهای تحلیل ایستا (static analysis) رو جدیتر ببینم؛ نه فقط برای حذف کد، بلکه برای درک بهتر ساختار پروژه.
https://github.com/webpro-nl/knip
@ <Mohammad Nazari/>
برای سادهتر کردن این مسیر، به ابزار knip رسیدم. ابزار قدرتمندی که فایلها، فانکشن ها و حتی dependencyهای بلااستفاده رو شناسایی میکنه.
در عمل، knip تونست بخش زیادی از dead code ها رو شناسایی کنه، اما دو نکتهی جالب و مهم برام داشت:
- اولی مربوط به component tree بود.
یکسری کامپوننتها بهعنوان dead code تشخیص داده شده بودن، در حالی که وقتی سرچ میکردم، میدیدم یه جای دیگه دارن استفاده میشن. اما وقتی کامپوننت parent رو بررسی کردم، فهمیدم اون خودش هیچجا استفاده نشده و این باعث شده بود که child رو هم dead code بدونه. این عمق تحلیل وابستگی، برام قابل توجه بود.
- دومی تشخیص ناقص بعضی dependencyها بود.
برای مثال، tailwindcss و یکی از پلاگینهاش که در فایل CSS ایمپورت شده بودن، بهعنوان unused معرفی شدن. همینطور بعضی پلاگینهای ESLint هم به اشتباه در لیست قرار گرفته بودن. این یعنی خروجی ابزار، هرچقدر هم دقیق باشه، همچنان نیاز به بررسی انسانی داره.
این تجربه باعث شد ابزارهای تحلیل ایستا (static analysis) رو جدیتر ببینم؛ نه فقط برای حذف کد، بلکه برای درک بهتر ساختار پروژه.
https://github.com/webpro-nl/knip
@ <Mohammad Nazari/>
GitHub
GitHub - webpro-nl/knip: ✂️ Find unused files, dependencies and exports in your JavaScript and TypeScript projects. Knip it before…
✂️ Find unused files, dependencies and exports in your JavaScript and TypeScript projects. Knip it before you ship it! - webpro-nl/knip
❤2
## 🟢 Entry-Level (0-2 سال)
تمرکز اصلی: Technical Fundamentals
چی ازت انتظار دارن:
- اAlgorithm و Data Structure بدونی
- کد تمیز و خوانا بنویسی
- اBug fixing و debugging
- اCode review ها رو implement کنی
- استفاده از tools مثل Git، IDE ها
مصاحبه چجوریه:
-ا LeetCode problems
- ا"Reverse این linked list رو"
-ا "Big O این کد چیه؟"
- اLive coding sessions
- شاخص اصلی: Problem-solving ability
مثال کار روزانه:
- اFeature کوچیک پیاده کنی
- اTest بنویسی
-ا Documentation update کنی
- اSenior ها کارت رو review کنن
---
## 🟡 Senior-Level (3-7 سال)
تمرکز اصلی: End-to-End Ownership
چی ازت انتظار دارن:
- اIdeation: از business requirement تا technical solution
-ا Design: System architecture و database design
- اImplementation: کدنویسی + mentoring junior ها
-ا Testing: Unit test, integration test، A/B testing
-ا Deployment: CI/CD، monitoring، scaling
- اMaintenance: Performance optimization، bug triage
مصاحبه چجوریه:
- اSystem Design: "Instagram رو چجوری design میکنی؟"
- اBehavioral: "یه conflict تو تیم چجوری حل کردی؟"
- اTrade-offs: "SQL vs NoSQL کی استفاده میکنی؟"
- کمتر coding، بیشتر architecture
مثال کار روزانه:
- اProduct Manager با تو صحبت میکنه
-ا Technical specs مینویسی
- اJunior developer ها رو guide میکنی
- اPerformance metrics رو track میکنی
- اProduction issues حل میکنی
---
## 🔴 Principal-Level (7+ سال)
تمرکز اصلی: Leadership & Strategy
چی ازت انتظار دارن:
- اTechnical Strategy: Technology roadmap برای کل company
- اTeam Leadership: Multiple team ها رو coordinate کنی
- اMentorship: Senior engineer ها رو train کنی
- اCross-functional: Product، Business، Engineering alignment
- اInnovation: New technologies و best practices معرفی کنی
- اHiring: Technical interview ها و team building
مصاحبه چجوریه:
- ا"Company ما scale کنه چه tech stack پیشنهاد میدی؟"
- "چجوری team culture بسازی؟"
- "یه technical debt چجوری prioritize میکنی؟"
- ا"Conflict بین دو team رو چجوری حل میکنی؟"
- کدنویسی اصلاً نیست!
مثال کار روزانه:
- اC-level executives رو advise میکنی
-ا Technical RFC ها رو approve میکنی
- اTeam retrospective ها رو facilitate میکنی
- اIndustry conferences میری
-ا Company hiring strategy تعیین میکنی
نکته مهم: هر سطح مهارتهای سطح قبلی رو هم باید داشته باشه، فقط تمرکز عوض میشه!
تمرکز اصلی: Technical Fundamentals
چی ازت انتظار دارن:
- اAlgorithm و Data Structure بدونی
- کد تمیز و خوانا بنویسی
- اBug fixing و debugging
- اCode review ها رو implement کنی
- استفاده از tools مثل Git، IDE ها
مصاحبه چجوریه:
-ا LeetCode problems
- ا"Reverse این linked list رو"
-ا "Big O این کد چیه؟"
- اLive coding sessions
- شاخص اصلی: Problem-solving ability
مثال کار روزانه:
- اFeature کوچیک پیاده کنی
- اTest بنویسی
-ا Documentation update کنی
- اSenior ها کارت رو review کنن
---
## 🟡 Senior-Level (3-7 سال)
تمرکز اصلی: End-to-End Ownership
چی ازت انتظار دارن:
- اIdeation: از business requirement تا technical solution
-ا Design: System architecture و database design
- اImplementation: کدنویسی + mentoring junior ها
-ا Testing: Unit test, integration test، A/B testing
-ا Deployment: CI/CD، monitoring، scaling
- اMaintenance: Performance optimization، bug triage
مصاحبه چجوریه:
- اSystem Design: "Instagram رو چجوری design میکنی؟"
- اBehavioral: "یه conflict تو تیم چجوری حل کردی؟"
- اTrade-offs: "SQL vs NoSQL کی استفاده میکنی؟"
- کمتر coding، بیشتر architecture
مثال کار روزانه:
- اProduct Manager با تو صحبت میکنه
-ا Technical specs مینویسی
- اJunior developer ها رو guide میکنی
- اPerformance metrics رو track میکنی
- اProduction issues حل میکنی
---
## 🔴 Principal-Level (7+ سال)
تمرکز اصلی: Leadership & Strategy
چی ازت انتظار دارن:
- اTechnical Strategy: Technology roadmap برای کل company
- اTeam Leadership: Multiple team ها رو coordinate کنی
- اMentorship: Senior engineer ها رو train کنی
- اCross-functional: Product، Business، Engineering alignment
- اInnovation: New technologies و best practices معرفی کنی
- اHiring: Technical interview ها و team building
مصاحبه چجوریه:
- ا"Company ما scale کنه چه tech stack پیشنهاد میدی؟"
- "چجوری team culture بسازی؟"
- "یه technical debt چجوری prioritize میکنی؟"
- ا"Conflict بین دو team رو چجوری حل میکنی؟"
- کدنویسی اصلاً نیست!
مثال کار روزانه:
- اC-level executives رو advise میکنی
-ا Technical RFC ها رو approve میکنی
- اTeam retrospective ها رو facilitate میکنی
- اIndustry conferences میری
-ا Company hiring strategy تعیین میکنی
نکته مهم: هر سطح مهارتهای سطح قبلی رو هم باید داشته باشه، فقط تمرکز عوض میشه!
❤2