MẬT DANH: ZERO — Sổ tay sống còn của lính mới (Lỗi thường gặp · Git · Debug · Dự án đầu tay) | HÀN NGỮ KOOKMIN
Tủ sách
MẬT DANH: ZERO · Sổ tay sống còn của lính mới
📕 Đặt sách 1 / 1
Đọc miễn phí · Sổ tay

Sổ tay // giữa hai trận đánh

SỔ TAY SỐNG CÒNCỦA LÍNH MỚI
Lỗi thường gặp · Git · Debug · Dự án đầu tay

Những điều tiền bối ghi lại cho ZERO, để cô không lạc lối.
신입 생존 노트

Chạm nửa phải màn hình để lật trang ›

Giữa những đêm trắng, tiền bối đưa cho ZERO một cuốn sổ cũ. "Đây là những gì anh ước có người nói với anh hồi mới vào nghề," anh nói. "Đọc đi. Nó sẽ cứu em nhiều lần đấy."

5 lỗi người mới nào cũng mắc (và cách thoát)

Lỗi 1 · Quên đóng thẻ / đóng ngoặc

Thiếu một dấu </div> hay một dấu } là cả trang vỡ. Cách thoát: dùng trình soạn code (VS Code) — nó tự tô màu và báo chỗ thiếu. Mỗi khi mở một dấu, gõ luôn dấu đóng rồi mới viết vào giữa.

Lỗi 2 · Sai một chữ trong tên

getElementById mà gõ thành getElementByID là hỏng. Máy tính không "đoán ý" — nó cần đúng từng ký tự. Cách thoát: copy tên thay vì gõ tay; đọc kỹ thông báo lỗi, nó thường chỉ thẳng dòng sai.

Lỗi 3 · Sợ thông báo lỗi (error)

Người mới thấy chữ đỏ là hoảng. Nhưng lỗi là bạn, không phải kẻ thù — nó cho bạn biết chính xác chỗ cần sửa. Cách thoát: đọc dòng đầu của lỗi, copy nó lên Google. 99% trường hợp đã có người gặp và giải đáp.

Lỗi 4 · Code chạy được nhưng không hiểu vì sao

Copy code trên mạng về dán, nó chạy, nhưng bạn không hiểu. Nguy hiểm — vì khi hỏng bạn không biết sửa. Cách thoát: nhớ lời tiền bối — "đừng học thuộc, hãy hiểu." Đọc từng dòng, tự hỏi "dòng này làm gì?"

Lỗi 5 · So sánh mình với người giỏi rồi nản

Thấy người ta code "vèo vèo" mà mình lọ mọ, dễ tự ti. Nhưng họ cũng từng là bạn. Cách thoát: chỉ so sánh mình hôm nay với mình hôm qua. Tiến một chút mỗi ngày là đủ.

◎ Quy tắc vàng khi bí

Đọc lỗi → tìm trên Google (kèm chữ tiếng Anh trong lỗi) → thử lại → vẫn bí thì hỏi người khác, kèm theo: "mình đã thử gì, lỗi ra sao." Đừng ngồi im chịu trận quá 30 phút.

Cách tự học hiệu quả khi không có thầy bên cạnh

Thói quenVì sao hiệu quả
Học bằng cách LÀMĐọc 10 trang không bằng tự gõ 1 ví dụ. Kiến thức chỉ thật khi qua tay bạn.
Làm dự án nhỏ thậtLàm trang giới thiệu bản thân, trang đếm số… có mục tiêu thật mới nhớ lâu.
Dạy lại người khácGiải thích cho người khác là cách kiểm tra mình đã hiểu thật chưa.
Ghi chú bằng lời của mìnhĐừng chép nguyên — viết lại theo cách bạn hiểu, như ZERO viết nhật ký.
Nghỉ đúng lúcBí quá thì đứng dậy. Não giải bài trong lúc bạn nghỉ — đó là sự thật khoa học.

Bộ công cụ tối thiểu của lập trình viên

Công cụĐể làm gìGhi chú
VS CodeTrình soạn code (viết HTML/CSS/JS)Miễn phí, phổ biến nhất
Trình duyệt (Chrome)Xem kết quả + công cụ kiểm tra (F12)Bấm F12 để "soi" trang bất kỳ
GoogleTra lỗi, tìm cách làmKỹ năng quan trọng bậc nhất
Git / GitHubLưu & chia sẻ codeHọc sau khi vững cơ bản
🔍 Bí mật ít ai nói

Lập trình viên giỏi không phải người nhớ hết mọi thứ — mà là người biết tìm câu trả lời nhanh. Họ Google liên tục, mỗi ngày. Không biết không phải là dốt; không chịu tìm mới là vấn đề.

Một số máy cho phép bạn quay ngược thời gian của chính mình. Mỗi điểm sáng là một khoảnh khắc được lưu lại — bất cứ lúc nào, bạn cũng có thể trở về.

S4 Tax → Cty → Cá nhân → Thời gian

Một tiếng thét vang lên từ góc phòng. Một lập trình viên vừa phát hiện nửa ngày công sức của mình biến mất — đồng nghiệp lưu đè lên file mà không biết. ZERO chứng kiến, lạnh sống lưng: nếu là mình thì sao?

Tiền bối

"Đó là cơn ác mộng lớn nhất của lập trình viên — mất hết công sức vì lỡ tay, hoặc nhiều người giẫm chân nhau. Nhưng có một thứ khiến điều đó không bao giờ xảy ra nữa. Tên nó là Git — một cỗ máy thời gian cho code."

Bốn câu lệnh Git bạn sẽ dùng 95% thời gian

LệnhLàm gì
git addChọn những file muốn lưu vào "ảnh chụp" tiếp theo
git commitChụp một "ảnh" của code, kèm lời ghi chú
git pushĐẩy các ảnh chụp lên GitHub (lưu trên mạng)
git pullTải về thay đổi mới nhất từ GitHub
terminal — quy trình lưu việc
# 1. Chọn tất cả file đã thay đổi
git add .

# 2. Chụp ảnh, ghi chú rõ mình làm gì
git commit -m "Thêm trang giới thiệu bản thân"

# 3. Đẩy lên GitHub để lưu an toàn
git push
💬 Lời ghi chú commit rất quan trọng

Viết rõ ràng "đã làm gì" — như "Sửa lỗi nút đăng nhập" thay vì "abc" hay "sửa tí". Ba tháng sau nhìn lại, chính bạn sẽ cảm ơn mình. Đồng đội cũng vậy.

Vì sao cần "nhánh" (branch)?

Bạn nhớ sơ đồ branch ở Chương 7 chứ? Đây là lý do thực tế: khi muốn thử một tính năng mới mà không làm hỏng bản đang chạy tốt, bạn tạo một nhánh riêng. Thử thoải mái. Hỏng cũng không sao — bản chính vẫn nguyên vẹn. Khi ưng ý, mới gộp (merge) vào.

⊞ Tình huống thật

ZERO muốn thử đổi toàn bộ màu trang sang tông tối. Nếu sửa thẳng vào bản chính mà khách không thích, cô phải sửa ngược lại mệt mỏi. Thay vào đó cô tạo nhánh "thu-mau-toi", thử trên đó. Khách thích → merge vào. Khách không thích → bỏ nhánh, bản chính chẳng hề hấn gì. Đó là sự an toàn mà Git mang lại.

✓ Kiểm tra nhanh

1. git commit dùng để làm gì?
Chụp một "ảnh" của code tại thời điểm đó, kèm lời ghi chú, để sau này quay lại được.

2. Vì sao nên tạo nhánh (branch) khi thử tính năng mới?
Để thử nghiệm an toàn mà không ảnh hưởng bản chính đang chạy tốt.

3. git push và git pull khác nhau ra sao?
push = đẩy code của mình LÊN GitHub; pull = tải thay đổi mới VỀ máy mình.

▣ Nhiệm vụ Git — lưu dự án đầu tiên lên GitHub

☐ Tạo tài khoản GitHub miễn phí (nếu chưa có)
☐ Cài Git, tạo một repository cho trang "Về tôi"
☐ Thực hành: add → commit (ghi chú rõ) → push
☐ Xem code của mình hiện lên trên github.com — sản phẩm đầu tiên được lưu trữ công khai!

⚿ Không có trên Google · ghi chép từ người đi trước

Git — nỗi ám ảnh đầu tiên của mọi fresher

merge conflict (xung đột khi gộp code) không phải lỗi — nó là chuyện thường ngày. Bình tĩnh đọc, chọn giữ phần nào.

✕ Đừng bao giờ git push --force lên nhánh chung nếu chưa hiểu rõ — có thể xóa code của cả team.

✕ Commit message kiểu "fix", "update", "abc" sẽ bị nhắc nhở. Hãy viết rõ: "Sửa lỗi nút đăng nhập không bấm được".

✕ Luôn pull code mới nhất trước khi bắt đầu làm — tránh xung đột không đáng có.

Vì sao quan trọng: Git là kỹ năng mà mọi công ty yêu cầu nhưng không trường nào dạy kỹ. Thành thạo Git, bạn đã hơn rất nhiều người mới.

# nox-dev
ZERO · 11:02

Anh ơi em bị merge conflict rồi, hoảng quá 😨

Senior · 11:04

Bình tĩnh, chuyện thường thôi. Mở file ra, Git đánh dấu phần xung đột. Em chọn giữ phần đúng rồi commit lại.

ZERO · 11:09

À em hiểu rồi! Hóa ra không đáng sợ như em tưởng. Cảm ơn anh.

✦ Trợ thủ AI · dùng đúng cách

💬 "Tôi đang bị merge conflict ở file này. Giải thích từng bước cách giải quyết an toàn cho người mới."

💬 "Liệt kê 10 lệnh Git quan trọng nhất cho người đi làm, kèm ví dụ khi nào dùng."

💡 Thông báo lỗi là bạn, không phải kẻ thù

Nó thường chỉ rõ: lỗi ở file nào, dòng số mấy, và loại lỗi gì. Đừng lướt qua nó trong hoảng loạn — hãy đọc chậm. 90% câu trả lời nằm ngay trong dòng lỗi đầu tiên.

Quy trình gỡ lỗi 5 bước

BướcLàm gì
1. Đọc lỗiĐọc kỹ dòng lỗi: file nào, dòng nào, lỗi gì
2. Khoanh vùngLỗi nằm ở đâu? Thu hẹp dần khu vực nghi ngờ
3. Kiểm tra giả thuyết"Mình nghĩ do X" — thử thay đổi để xác nhận
4. Tra cứuCopy lỗi lên Google nếu chưa rõ — luôn có người gặp trước
5. Sửa & kiểm lạiSửa, chạy lại, đảm bảo không sinh lỗi mới

console.log — chiếc đèn pin của lập trình viên

console.log() · 콘솔 로그

Lệnh in giá trị ra "console" (bảng điều khiển, mở bằng F12 trong trình duyệt). Khi không hiểu vì sao code sai, bạn rải console.log ở nhiều chỗ để xem giá trị thật là gì — như soi đèn pin vào bóng tối.

debug.js
let tong = 0;
for (let i = 1; i <= 5; i++) {
  tong = tong + i;
  console.log("Vòng " + i + ", tổng = " + tong);
}
// Console hiện: Vòng 1 tổng=1, Vòng 2 tổng=3…
// giúp bạn thấy code chạy đúng không
☼ Mẹo "chia đôi để tìm"

Khi không biết lỗi ở đâu trong một đoạn dài, đặt console.log ở giữa. Nếu nó in đúng → lỗi ở nửa sau. Nếu sai → lỗi ở nửa trước. Lặp lại, bạn thu hẹp vùng lỗi rất nhanh — như trò chơi đoán số.

Ba loại lỗi thường gặp

Loại lỗiLà gìVí dụ
Syntax (cú pháp)Viết sai quy tắc ngôn ngữThiếu dấu ; hoặc }
Runtime (khi chạy)Code đúng cú pháp nhưng lỗi lúc chạyGọi hàm chưa tồn tại
LogicChạy được nhưng kết quả saiTính sai công thức
💡 Lỗi logic khó nhất

Vì máy không báo gì — code vẫn chạy, chỉ là kết quả sai. Đây là lúc console.log phát huy sức mạnh: in ra từng bước để xem chỗ nào giá trị bắt đầu sai.

✓ Kiểm tra nhanh

1. Khi thấy thông báo lỗi, việc đầu tiên nên làm là gì?
Đọc kỹ — nó chỉ rõ file nào, dòng nào, lỗi gì. Đừng hoảng, đừng đoán mò.

2. console.log() dùng để làm gì?
In giá trị ra console để kiểm tra code đang chạy đúng không, giá trị thật là gì.

3. Lỗi logic khác lỗi cú pháp ra sao?
Lỗi cú pháp khiến code không chạy; lỗi logic vẫn chạy nhưng cho kết quả sai — khó phát hiện hơn.

✎ NHẬT KÝ CỦA ZERO — NGÀY THỨ BA

"Hôm nay mình ngồi ba tiếng với một con bug. Ba tiếng! Mình đã định bỏ cuộc ít nhất năm lần. Nhưng mình nhớ tiền bối nói: 'chia đôi để tìm'. Mình rải console.log khắp nơi, và cuối cùng… thủ phạm chỉ là một dấu bằng. Mình viết = thay vì ==. Một ký tự. Ba tiếng đồng hồ vì một ký tự. Vậy mà khi sửa được, mình muốn hét lên vì sung sướng. Có lẽ đây là lý do người ta nghiện nghề này."

Sổ tay // bắt tay làm thật

Dự án đầu tay: trang hồ sơ của bạn

Lý thuyết là bản đồ. Dự án là con đường thật bạn đi.

🛠️ Phần thực hành — tùy chọn

Đây là dự án tự tay code từ đầu đến cuối. Nếu bạn theo hướng cầu nối, phiên dịch hay sales IT, có thể đọc lướt để biết một dự án thật trông thế nào, rồi đi tiếp. Người muốn trở thành lập trình viên thì nên làm kỹ chương này.

Tiền bối

"Đủ lý thuyết rồi," anh nói, đẩy bàn phím về phía ZERO. "Giờ làm một thứ của riêng em. Một trang giới thiệu bản thân — bằng cả ba vũ khí em đã học. Đừng sợ xấu. Trang đầu tiên ai cũng xấu. Quan trọng là nó của em."

Mục tiêu: ghép HTML (khung) + CSS (đẹp) + JavaScript (tương tác) thành một trang thật. Làm theo từng bước, bạn sẽ có sản phẩm đầu tiên để khoe.

Bước 1 — Dựng khung bằng HTML

vetoi.html
<!DOCTYPE html>
<html>
<head>
  <title>Về tôi</title>
</head>
<body>
  <h1 id="ten">Xin chào, tôi là Linh</h1>
  <p>Tôi đang học lập trình web.</p>
  <button onclick="chao()">Bấm để chào</button>
</body>
</html>

Bước 2 — Tô điểm bằng CSS

Thêm vào trong <head>, ngay dưới thẻ <title>:

trong thẻ <style>
<style>
  body { font-family: sans-serif; text-align: center;
       background: #faf7f0; padding: 40px; }
  h1 { color: #0e7c66; }
  button { background: #0e7c66; color: white;
       border: none; padding: 12px 24px;
       border-radius: 8px; cursor: pointer; }
</style>

Bước 3 — Thổi sự sống bằng JavaScript

Thêm vào trước thẻ </body>:

trong thẻ <script>
<script>
  function chao() {
    document.getElementById("ten").innerText
      = "Rất vui được gặp bạn! 🎉";
  }
</script>
◎ Bạn vừa làm xong một trang web thật!

Lưu file, mở bằng trình duyệt, bấm nút — tiêu đề đổi chữ. Đây là lúc cả ba vũ khí hợp lực: HTML dựng khung, CSS làm đẹp, JS tạo phản ứng. Hãy thử đổi màu, đổi chữ, thêm ảnh của bạn vào.

Thử thách nâng cấp (khi đã quen)

Nâng cấpGợi ý
Thêm ảnh đại diệnDùng thẻ <img src="anh.jpg">
Thêm danh sách sở thíchDùng <ul><li>
Thêm liên kết FacebookDùng <a href="…">
Nút đổi màu nềnJS: document.body.style.background = "…"
Bộ đếm số lần bấmDùng một biến, mỗi lần bấm thì +1
✓ Tổng ôn — ba vũ khí

1. Phần nào dựng khung trang?
HTML — các thẻ tạo ra cấu trúc, nội dung.

2. Phần nào làm trang đẹp lên?
CSS — màu, cỡ chữ, khoảng cách, bo góc…

3. Phần nào khiến nút bấm có phản ứng?
JavaScript — hàm chao() chạy khi onclick được kích hoạt.

▣ Nhiệm vụ lớn — trang "Về tôi" của riêng bạn

☐ Gõ lại cả 3 bước ở trên thành một file vetoi.html hoàn chỉnh
☐ Thay tên, màu, lời giới thiệu thành của chính bạn
☐ Chọn ít nhất 1 thử thách nâng cấp để làm thêm
☐ Gửi cho một người bạn xem — đó là sản phẩm đầu tiên của bạn!

Còn nội dung — cuộn xuống