منطق ایجنت‌ها › M7 — زیرساخت، پلن و هزینه
۷.۱ پایدار مرجع ~۲۵ دقیقه

واژه‌های سیستمی که مدام می‌شنوی

قبل از این فصل: فصل ۰.۸

در یک نگاه

این ماژول جنسش فرق دارد تا اینجا هر ماژول یک کار به تو یاد می‌داد. این یکی سواد می‌دهد. لازم نیست چیزی از این ماژول را انجام بدهی — لازم است وقتی ایجنت یا یک مستند این کلمه‌ها را گفت، گم نشوی. پس اگر جایی حس کردی «این را که به کار نمی‌برم»، درست حس کرده‌ای؛ همان کافی است.
۷.۱.۱

لینوکس در یک نگاه

لینوکس یک سیستم‌عامل است، مثل ویندوز و مک — یعنی همان چیزی که کامپیوتر را می‌گرداند. سه چیز که کافی است بدانی:

و یک نکته‌ی عملی برای تو: اگر روی ویندوزی و مستندی دستور لینوکسی داد، معادل ویندوزی‌اش را از ایجنت بپرس — این یکی از تمیزترین کاربردهای فصل ۴.۳.۲ است.

۷.۱.۲

terminal کمی جدی‌تر

در فصل ۰.۸ ترمینال را باز کردی و کار کردی. حالا سه مفهومی که آن‌جا لازم نبود و اینجا به کارت می‌آید:

به‌خاطر بسپار «هیچ خروجی‌ای نداد» در ترمینال معمولاً یعنی موفق بود. این برعکسِ انتظار آدم است. ابزارهای این دنیا سنتی دارند: وقتی کار درست پیش برود ساکت‌اند، و فقط وقتی حرف می‌زنند که مشکلی باشد. پس سکوت، خبر خوب است.

۷.۱.۳

فایل، مسیر، دسترسی

مسیر آدرس یک فایل است، و دو شکل دارد — همان تفکیکی که فصل ۳.۲.۳ از دید کاربردی گفت:

و دو علامتِ پرتکرار: . یعنی «همین پوشه» و .. یعنی «پوشه‌ی بالاتر». پس ../data یعنی «یک پله بالا برو، بعد داخل data». و ~ یعنی پوشه‌ی خانگی خودت.

دسترسی (permission — و دقت کن که این با پنجره‌ی اجازه‌ی فصل ۳.۳ فرق دارد؛ آن مربوط به ایجنت است، این مربوط به سیستم‌عامل) یعنی سیستم‌عامل برای هر فایل ثبت کرده چه کسی چه کاری می‌تواند بکند:

و همین‌جا یک هشدار عملی که به M5 وصل می‌شود: هر جا sudo دیدی، آن دستور می‌تواند هر چیزی را عوض کند — یعنی محافظت‌های معمولِ سیستم‌عامل جلویش را نمی‌گیرند. این دقیقاً همان جایی است که فصل ۳.۳.۲ گفت قبل از «بله» بخوان.

۷.۱.۴

فرآیند و سرویس: چیزی که همیشه روشن است

دو کلمه که تفاوتشان کل فصل ۷.۴ را قابل فهم می‌کند:

و این تفاوت، جوابِ سؤالی است که خیلی‌ها دارند: «اتوماسیونم را نوشتم، چرا وقتی لپ‌تاپم را می‌بندم کار نمی‌کند؟» چون یک فرآیند ساخته‌ای، نه یک سرویس. و تبدیلِ اولی به دومی همان چیزی است که در فصل ۷.۴ اسمش deploy است.

یک کلمه‌ی مرتبط هم که زیاد می‌شنوی: پورت. یک شماره است که می‌گوید روی یک ماشین، کدام برنامه به کدام درِ ورودی گوش می‌دهد. وقتی می‌بینی localhost:3000، یعنی «روی همین کامپیوتر، برنامه‌ای که به درِ ۳۰۰۰ گوش می‌دهد».

نکته‌ی طلایی وقتی ایجنت کلمه‌ای گفت که نفهمیدی، همان‌جا بپرس «این یعنی چه، در حدِ یک جمله؟» — و کار را متوقف نکن. این ارزان‌ترین راه یادگیریِ این واژه‌هاست، چون در بستری یاد می‌گیری که واقعاً به کارت آمده، نه از یک فهرست.
ضدالگو حفظ‌کردن این واژه‌ها از یک فهرست، قبل از اینکه به کارت بیایند. تا وقتی واژه‌ای را در کار واقعی ندیده‌ای، تعریفش در ذهنت نمی‌ماند و فقط حس کاذبِ یادگیری می‌دهد. این فصل مرجع است — وقتی گیر کردی برگرد اینجا، نه اینکه حفظش کنی.

تمرین (فکری)

این چهار واژه را با زبان خودت توضیح بده — هر کدام یک جمله، بدون نگاه‌کردن به متن بالا:

  1. مسیر نسبی چه فرقی با مطلق دارد؟
  2. sudo چه کاری می‌کند و چرا باید حواست باشد؟
  3. فرآیند و سرویس چه فرقی دارند؟
  4. پورت چیست؟

بعد جواب‌هایت را به ایجنت بده و بگو «کدام‌یک از این‌ها دقیق نیست؟»

پاسخنامه — چهار جمله، و آن یکی که همه اشتباه می‌گویند

۱. مسیر مطلق از ریشه شروع می‌شود و همه‌جا یک معنا دارد؛ مسیر نسبی از جایی که ایستاده‌ای شروع می‌شود، پس معنایش عوض می‌شود.

۲. دستور را با اختیار کاربر ریشه اجرا می‌کند، یعنی محدودیت‌های دسترسی جلویش را نمی‌گیرند — پس می‌تواند چیزهایی را عوض کند که معمولاً محافظت‌شده‌اند.

۳. فرآیند به ترمینالی که از آن شروع شده وابسته است و با بستنش می‌میرد؛ سرویس مستقل است و اگر بمیرد خودش دوباره روشن می‌شود.

۴. شماره‌ای که مشخص می‌کند روی یک ماشین، کدام برنامه به کدام درِ ورودی گوش می‌دهد.

و آن یکی که همه اشتباه می‌گویند: شماره‌ی ۳. جواب رایج این است که «سرویس بزرگ‌تر است» یا «سرویس مهم‌تر است» — که هیچ‌کدام نیست. تفاوت در وابستگی است، نه در اندازه یا اهمیت. یک اسکریپت سه‌خطی هم می‌تواند سرویس باشد. و اگر این را دقیق نفهمی، فصل ۷.۴ گنگ می‌ماند، چون کلِ deploy یعنی همین تبدیل.

ذخیره شد