Bài viết mới nhất

Tổng 2300 bài
Công cụ 22/09/2026 5 phút

git submodule: repo lồng trong repo — vì sao nó ghim commit và hay gây rối

Submodule nhúng một kho Git vào kho khác nhưng không chép file — nó chỉ ghi một con trỏ tới đúng một commit của kho con. Điều này khiến build tái lập được nhưng cũng gây rối nếu không hiểu. Bài này đo thật: submodule là gitlink mode 160000, lib lên v2 mà app vẫn ghim v1, và cách cập nhật đúng — cùng ba cái bẫy kinh điển.

Công cụ 22/09/2026 5 phút

Git hooks: tự động kiểm tra trước commit/push — và vì sao hook không clone theo

Git có thể tự chạy script của bạn ở mỗi commit, mỗi push — chặn code lỗi, ép định dạng message, chạy test trước khi push. Bài này đo thật bằng git 2.39: pre-commit chặn commit chứa TODO, commit-msg bắt buộc mã ticket, và cái bẫy lớn nhất — hook nằm trong .git nên không clone theo, đồng đội không có.

Công cụ 22/09/2026 5 phút

Rebase tương tác: gộp, sửa, xóa commit — dọn lịch sử nhánh cho sạch

Nhánh tính năng thường đầy commit fix typo, wip, sua nua — mở PR với lịch sử đó thì reviewer khó đọc. git rebase -i cho bạn viết lại N commit gần nhất: squash/fixup gộp, reword sửa message, drop xóa, đổi thứ tự. Bài này đo thật bằng git 2.39, tự động hóa qua GIT_SEQUENCE_EDITOR: 5 commit lộn xộn gộp còn 2, nội dung nguyên vẹn.

Công cụ 22/09/2026 5 phút

git gc, fsck và bảo trì kho: dọn rác, nén, và vì sao reflog cứu object khỏi bị xóa

Thư mục .git tự phình rồi tự dọn. Bài cuối sê-ri Git đo thật: gc gom loose object thành packfile nén (9 object 36 KiB xuống 1.86 KiB), fsck báo object mồ côi, và điểm nhiều người hiểu sai — gc --prune=now KHÔNG xóa object mà reflog còn giữ; phải hết hạn reflog rồi gc mới xóa thật. Đây chính là lưới an toàn cứu commit tưởng đã mất.

Web 22/09/2026 5 phút

HTTP/3 và QUIC: vì sao web bỏ TCP sang UDP — và điều nó sửa mà HTTP/2 không

HTTP/2 multiplex nhiều luồng trên một kết nối TCP, nhưng mất một gói TCP là mọi luồng bị giữ lại (TCP head-of-line blocking). HTTP/3 chạy trên QUIC (UDP) để mỗi luồng độc lập ở tầng vận chuyển. Bài này đo thật: curl lab không có h3 (báo trung thực), site thật quảng cáo h3 qua Alt-Svc, và chi phí bắt tay TCP+TLS hai vòng mà QUIC gộp còn một.

Web 22/09/2026 7 phút

CORS không phải bảo mật server: hiểu cross-origin qua preflight và header thật

Nhiều người tưởng CORS bảo vệ server, hoặc cứ thấy lỗi CORS là tại backend chặn. Thực ra CORS là cơ chế của TRÌNH DUYỆT: same-origin policy chặn JS đọc chéo origin, còn server chủ động mở qua header Access-Control-Allow-*. Bài này dựng server thật chỉ cho một origin, đo preflight OPTIONS, và chứng minh origin lạ vẫn nhận 200 nhưng bị trình duyệt chặn.