Soạn just-in-time
Giáo trình từng phiên
Mỗi phiên một tài liệu, soạn ngay trước buổi học chứ không soạn trước cả khoá — vì nội dung phiên sau phụ thuộc vào chỗ phiên trước dừng lại.
Đã soạn
- P1 · Phase 0 Dựng VM lab & serial console
libvirt/virt-install, cloud image + cloud-init, serial console cho thấy kernel log từ dòng đầu. Kèm cơ chế NoCloud datasource, ring buffer vs console, và bẫy AppArmor.
Các phiên còn lại chưa soạn. Nội dung dự kiến của từng phiên nằm ở kế hoạch 40 phiên.
Một phiên gồm những gì
Mỗi phiên theo cùng một khung, để không phải đọc lại cấu trúc mỗi lần mở:
| Phần | Vai trò |
|---|---|
| Trước khi bấm giờ | Điều kiện đầu vào, kiểm bằng lệnh. Hỏng một cái là hỏng cả phiên. |
| Kiến thức cơ sở | Cơ chế bên dưới, có sơ đồ khi cơ chế đáng vẽ. Đọc trước khi gõ. |
| Block A / B / C | Việc cần làm, có timebox, mỗi block một tiêu chí nghiệm thu riêng. |
| Bẫy | Quirk của đúng phần này — version, default của distro, thông báo lỗi gây hiểu nhầm. |
| Definition of Done | Ranh giới "xong phiên", thay cho cảm giác. |
| Câu hỏi kiểm tra | Trả lời không nhìn tài liệu. Đáp án gợi ý gập lại. |
| Nguồn & đọc thêm | Phân loại: đọc trong phiên / tra khi cần / để dành phiên sau. |
Mục tiêu phải falsifiable: "hiểu về serial console" không phải mục tiêu;
"reboot VM trong virsh console và thấy kernel log từ dòng Linux version"
thì có — làm được hoặc không, không có vùng xám.
Về khối lệnh gập lại
Chuỗi lệnh đầy đủ có, nhưng nằm sau khối Hiện lệnh đầy đủ gập lại. Mở nó sau khi đã tự ghép lệnh từ man page, hoặc khi kẹt quá 5 phút. Mở ngay từ đầu thì phiên biến thành copy-paste, và tuần sau sẽ không nhớ gì.
Ranh giới của quy ước này: lệnh vận hành và cấu hình thì gập lại được — cài gói, bật service, dựng VM, đọc log. Chúng là phương tiện, không phải bài tập, và tra lại chúng ở man page tốn thời gian mà không dạy thêm gì sau lần thứ hai.
Code phải tự viết thì không — không có lời giải, kể cả sau spoiler. Chương trình mini-container ở Phase 4 hay bài phân tích hiệu năng ở Phase 6 là sản phẩm của phiên; đưa sẵn đáp án là phá đúng thứ đang học. Ở đó chỉ có gợi ý hướng, tên hàm, và câu hỏi cần tự trả lời trước khi code.
Sắp tới
Phiên kế tiếp được soạn khi phiên hiện tại kết thúc, vì chỗ dừng lại của buổi trước là đầu vào của buổi sau. Soạn xa hơn hai phiên là công sức bỏ đi: lab luôn tràn ở chỗ không đoán trước được, và nội dung soạn sẵn sẽ không khớp.
Phase 0 gồm P1–P2. Từ P3 trở đi là Phase 1 — process, file descriptor, signal — tầng nền mà mọi thứ về sau quy về.