همیشه روی کپی
در فصل ۰.۹ زمین بازی ساختی و همین قاعده را گفتیم. حالا دلیلش را دقیقتر میدانی، چون M3 و M4 را خواندهای:
- ایجنت واقعاً به فایلها دسترسی دارد (فصل ۳.۲) — همان چیزی که قدرتش است.
- خروجیاش هر بار کمی فرق میکند (فصل ۱.۱.۵).
- و سه حالت شکستش بیصدا است (فصل ۴.۴) — یعنی ممکن است نفهمی چیزی خراب شده.
این سه با هم یک نتیجه میدهند: احتمال اینکه چیزی غلط عوض شود، صفر نیست — و احتمال اینکه بیصدا باشد هم صفر نیست. پس کپی، بیمهی ارزانی است.
و «کار جدی» فقط کار بزرگ نیست. هر بار که ایجنت قرار است چیزی را عوض کند — نه فقط بخواند — قاعده اعمال میشود.
بکآپ قبل از هر کار جدی
کپی و بکآپ یکی نیستند، و تفاوتشان ارزش دانستن دارد:
- کپی — یک نسخهی دوم که رویش کار میکنی. برای یادگیری و آزمایش کافی است.
- بکآپ — نسخهای که جای دیگری است و اگر این دیسک خراب شد هم هست.
پس کپی روی همان دیسک، بکآپ نیست. برای کارِ این دوره کافی است، ولی برای دادهی واقعی کارت نه.
سه سطح، به ترتیب هزینه:
- کپی در همان پوشه — ده ثانیه. برای هر کار روی فایل.
- کپی در جای دیگر (دیسک دیگر، فضای ابری) — برای دادهای که اگر برود دردناک است.
- نسخهبندی — که تاریخچه نگه میدارد، نه فقط یک نسخه. فصل بعدی.
و یک عادت که وقت زیادی نجات میدهد: اسم کپی را با تاریخ بگذار.
فروش-۱۴۰۵-پشتیبان-۰۵۰۴ بهتر از فروش کپی است، چون
سه هفته بعد میدانی کدام کدام است.
undo واقعی چیست و چه چیزی undo نیست
این بخش مهم است چون تصور غلطش گران تمام میشود.
بهخاطر بسپار Ctrl+Z مالِ برنامهای است که در آن هستی، نه مالِ دیسک. اگر برنامهی دیگری — از جمله ایجنت — فایلی را روی دیسک عوض کند، Ctrl+Z در ویرایشگر تو آن را برنمیگرداند. آن دو دنیای جدا هستند.
چه چیزی undo نیست:
- Ctrl+Z — فقط تغییراتِ خودت در همان برنامه، و فقط تا وقتی بازش نگه داشتهای.
- «بستن بدون ذخیره» — اگر برنامهی دیگری روی دیسک نوشته، نبستنِ تو چیزی را عوض نمیکند.
- تاریخچهی خودِ ابزار — گفتوگو را برمیگرداند، نه فایلها را.
چه چیزی undo هست: یک نسخهی قبلی که روی دیسک وجود دارد. یعنی کپی، بکآپ، یا نسخهبندی. همین سه.
سه کار برگشتناپذیر
همهی تغییرها یکجور نیستند. این سه از بقیه خطرناکترند:
- حذف. واضحترین. و بخش بعدی میگوید چرا سطل زباله نجاتت نمیدهد.
- بازنویسی. ظریفترین و خطرناکترین. فایل همان فایل است — اسمش، تاریخش، جایش — فقط داخلش عوض شده. هیچ سطل زبالهای درگیر نمیشود، چون چیزی حذف نشده.
- تغییر نام گروهی. چون یک خطا در بیست فایل تکرار میشود، و برگرداندنش یعنی باید بدانی هر کدام قبلاً چه اسمی داشت — که معمولاً نمیدانی.
و همین است که در فصل ۳.۳.۶ گفتیم این سه هیچوقت نباید خودکار تأیید شوند. حالا دلیلش را میدانی: پنجرهی اجازه برای این سه، تنها فرصتِ توقف است.
در مقابل، اینها کمخطرند: ساختن فایل تازه · خواندن · و نوشتن در پوشهای که فقط خروجی میگیرد.
سطل زباله دوست تو نیست
سه دلیل که نمیشود رویش حساب کرد:
- بازنویسی از آن رد نمیشود. این مهمترین است. اگر محتوای فایل عوض شود، هیچچیز وارد سطل زباله نمیشود — چیزی حذف نشده.
- حذف با دستور، معمولاً از آن رد نمیشود. فایلی که با یک دستور در terminal پاک شود، مستقیم میرود. سطل زباله قابلیتِ رابط گرافیکی است، نه قاعدهی سیستم.
- و خودش هم موقتی است — بعد از مدتی خالی میشود، و یک «خالیکردن» عادی هم آخرین شبکهی نجاتت را میبرد.
پس مدل ذهنی درست: سطل زباله برای اشتباههای خودت با موس است، نه برای کارهایی که یک برنامه انجام میدهد.
تمرین (فکری)
برای این سه کار بگو قبلش چه محافظتی لازم است — و برای هرکدام جواب بده: کدامیک از سه کار برگشتناپذیر درگیر است؟ و اگر غلط انجام شود، چطور برش میگردانی؟
- «از پوشهی قراردادها یک فهرست خلاصه بساز.»
- «در همهی فایلهای این پوشه، نام شرکت قدیم را با نام جدید عوض کن.»
- «فایلهای تکراری این پوشه را پیدا کن و پاکشان کن.»
پاسخنامه — سه جواب
۱ — کمخطرترین. فقط میخواند و یک فایل تازه میسازد. هیچیک از سه کار برگشتناپذیر درگیر نیست. محافظت لازم: هیچ، جز اینکه مطمئن شوم فایل خروجی روی چیز موجودی نمینویسد. برگرداندن: خروجی را پاک میکنم، تمام.
۲ — بازنویسی + تغییر گروهی. دو تا از سه تا، با هم. خطرناکترینِ این سه است، هرچند بیخطرترین به نظر میرسد. محافظت: کپی کل پوشه، و اول بخواهم فهرست کند قرار است در کدام فایلها چه چیزی عوض شود — قبل از اینکه چیزی عوض شود. برگرداندن: از همان کپی. سطل زباله هیچ کمکی نمیکند چون چیزی حذف نمیشود.
۳ — حذف. محافظت: کپی، و مهمتر — بهجای پاککردن، بگویم منتقل کند به یک پوشهی «تکراریها». آنوقت اگر تشخیصش غلط بود، فایلها هستند. برگرداندن: از آن پوشه.
چرا این جواب خوب است: مورد ۲ را درست خطرناکترین شناخته — و راهحل مورد ۳ (انتقال بهجای حذف) یک کارِ برگشتناپذیر را به یک کارِ برگشتپذیر تبدیل کرده، که بهترین شکل محافظت است.