TGViewer
انجمن علمی برنامه نویسی دانشگاه شهید‌ رجایی انجمن علمی برنامه نویسی دانشگاه شهید‌ رجایی @sru_cmp_dev · 525 subscribers
Post #345 553
وقتی یک پکیج ۱۱ خطی، دنیای وب را لرزاند!

نتایج نظرسنجی بالا رو دیدید؟ 👀
حالا بریم سراغ یکی از کابوس‌های تاریخ برنامه‌نویسی تا ببینیم چرا جواب این نظرسنجی گاهی حیاتی میشه...

📅 مارس ۲۰۱۶ | دنیای JavaScript و npm
همه چیز روتین بود. تیم‌های توسعه در سراسر دنیا مشغول Merge کردن تغییرات بودند تا نسخه جدید پروژه‌هایشان را منتشر کنند.
دکمه Build زده شد... اما ناگهان:
❌ Build Failed
ارورها بی‌معنی به نظر می‌رسیدند. کد پروژه هیچ مشکلی نداشت، اما یک وابستگی کوچک در لاگ‌ها به چشم می‌خورد که غیبش زده بود:
📦
left-pad

کل کدی که دنیای وب به آن وابسته بود، فقط همین ۱۱ خط بود:
JavaScript
module.exports = leftPad;

function leftPad (str, len, ch) {
  str = String(str);
  var i = -1;
  if (!ch && ch !== 0) ch = ' ';
  len = len - str.length;
  while (++i < len) {
    str = ch + str;
  }
  return str;
}

تمام کارش این بود که چند کاراکتر (مثل صفر یا فاصله) به سمت چپ یک متن اضافه کند:
leftPad("42", 5, "0") ➔ 
"00042"

نه هوش مصنوعی بود، نه الگوریتم پیچیده. اما همین ۱۱ خط کد ساده، به صورت ناخواسته و زنجیره‌ای (Indirect Dependency) توی دل ابزارهای غولی مثل React و Babel جا خوش کرده بود.

💣 ماجرا از کجا شروع شد؟
توسعه‌دهنده‌ی پکیج (Azer Koçulu) سر اسم یک پکیج دیگر با یک شرکت به اختلاف حقوقی خورد. وقتی npm حق را به آن شرکت داد، او در اعتراض به این تصمیم، تمام ۲۵۰ پکیج خود را از npm پاک (Unpublish) کرد!
و ناگهان...
🚨 فاجعه رخ داد!
سیستم‌های CI/CD، سرورهای بزرگ و پروژه‌های هزاران شرکت و تیم برنامه‌نویسی در سراسر جهان از کار افتادند. اصل داستان فقط کشیده شدن یک پکیج ۱۱ خطی از وسط زنجیره‌ی وابستگی‌ها بود!

🤯 پایان عجیب داستان
ابعاد بحران آن‌قدر گسترده شد که تیم npm برای اولین بار در تاریخ، قوانین خودش را زیر پا گذاشت و پکیج حذف‌شده را به صورت دستی بازیابی کرد تا اینترنت دوباره به حالت عادی برگردد.
قابلیتی که هر برنامه‌نویس مبتدی می‌توانست در چند خط بنویسد، کل دنیا را معطل کرده بود.

💬 حالا با دیدن این داستان، دوباره به نظرسنجی بالا نگاه کنید:
برای یک کار ۱۰ خطی و ساده، هنوز هم 📦 پکیج آماده رو ترجیح میدید یا 💻 خودتون می‌نویسید؟

نظرتون رو  همراه با دلیل در کامنت‌ها بنویسید 👇


📚 واژه‌نامه (برای درک بهتر اصطلاحات):
📦 npm (Node Package Manager):
مخزن آنلاین و ابزار مدیریت پکیج‌ها برای زبان JavaScript که برنامه‌نویسان کدها و کتابخانه‌های آماده را در آن با هم به اشتراک می‌گذارند.

🔗 Dependency :
وقتی یک پروژه برای اجرا شدن به کدهای یک کتابخانه یا پکیج دیگر نیاز داشته باشد، می‌گویند به آن پکیج وابستگی دارد.

🔄 Indirect Dependency :
یعنی پروژه‌ی شما مستقیماً یک پکیج را دانلود نکرده، اما یکی از کتابخانه‌هایی که استفاده می‌کنید خودش به آن پکیج متکی است.

⚙️ CI/CD:
سیستم‌های تست و انتشار خودکار کد؛ کارهایی مثل بررسی تست‌ها و ساخت خروجی نهایی پروژه را بدون دخالت انسان انجام می‌دهند.

#TechTime
#TechTimeCodeAutopsy

💻انجمن علمی برنامه‌نویسی
🔗 @sru_cmp_dev
  • 😨 3
  • ❤ 2
More from @sru_cmp_dev
  1. Sep 30, 2026🔻#خبر | باتوجه به استقبال و درخواست مکرر دانشجویان محترم، انجمن علمی برنامه نویسی به لیست…
  2. Sep 15, 2026🧩 انجمن های علمی دانشگاه تربیت دبیر شهید رجائی 🔺 انجمن علمی از نگاه دانشجو ها انجمن علمی…
  3. Sep 13, 2026🗳 #اطلاعیه | آغاز فرآیند انتخابات شورای مرکزی انجمن های علمی دانشجویی دانشگاه تربیت دبیر…
  4. Sep 13, 2026💻 روز برنامه‌نویس مبارک؛ به ما که بیشتر از چیزی که فکر می‌کنیم، از کد زدن یاد گرفتیم. احت…
  5. Sep 13, 2026🚀 خب، ترم‌چین دقیقاً چه کار می‌کنه؟ 📥 درس‌هات رو وارد کن گزارش ۲۱۲ گلستان رو به ترم‌چین…
  6. Sep 13, 2026🎓 به ترم‌چین خوش اومدی! سلام به همهٔ بچه‌های دانشگاه شهید رجایی 👋 انتخاب واحد خودش به ان…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →