Lập trình 22/09/2026 6 phút

RE2 và Go regexp: cỗ máy đánh đổi tính năng để không bao giờ nổ

RE2 (Go, Rust, Google) chạy tuyến tính bằng cách mô phỏng mọi trạng thái cùng lúc thay vì thử-và-quay-lui. Bài này đo thật: cùng mẫu độc (a+)+b, RE2 xử lý 20 triệu ký tự trong 443ms với ns/ký tự hằng số ~22 — trong khi python treo ở 28 ký tự. Cái giá: RE2 từ chối lookahead, lookbehind và backreference, mỗi cái báo một lỗi khác nhau. Khi nào nên chọn nó.

Lập trình Go 22/09/2026 6 phút

Nén trong Go: compress/gzip, chọn mức, và nén luồng không nạp hết vào RAM

Go có nén tích hợp trong thư viện chuẩn: compress/gzip, flate, zlib. Bài này đo thật: gzip BestSpeed nén 10MB trong 19ms, BestCompression trong 437ms (nhỏ hơn chưa tới 0.5%). Và cách nén theo luồng bằng io.Copy qua gzip.Writer để nén file 10GB với bộ nhớ vài chục KB. Kèm cái bẫy quên Close() làm hỏng dữ liệu, và cách tái dùng Writer bằng sync.Pool.

Lập trình 22/09/2026 6 phút

Interceptor trong gRPC: middleware bọc mọi RPC cho log, đo thời gian, auth tập trung

Cần log, đo thời gian, và xác thực cho mọi RPC — nhưng không muốn lặp code ở từng handler. Interceptor là lời giải: một lớp bọc quanh mọi call. Bài này chạy thật một chain hai interceptor: logging đo thời gian mỗi call (Fast 1µs, Slow 46ms), và auth chặn /Secure khi thiếu token (trả Unauthenticated, handler không chạy) nhưng cho qua khi token đúng. Viết một lần, áp cho toàn hệ.

Lập trình 22/09/2026 7 phút

Bốn loại metric Prometheus: counter, gauge, histogram, summary — và khi nào dùng cái nào

Counter, gauge, histogram, summary nghe na ná nhau nhưng trả lời bốn câu hỏi khác hẳn. Bài này instrument một Go app với cả bốn, bắn 150 request thật rồi đọc thẳng output /metrics: counter dừng ở 150, gauge vọt lên 51 lúc tải rồi về 0, histogram chia bucket cộng dồn, summary tự tính quantile phía client. Kèm bẫy chọn sai loại khiến số liệu thành vô dụng.

Lập trình 22/09/2026 6 phút

PromQL cho ra hồn: rate, increase và sum by — biến counter thô thành câu trả lời

Counter của Prometheus chỉ là con số cộng dồn vô nghĩa khi đọc trực tiếp — http_requests_total=1055 chẳng nói lên gì. Sức mạnh nằm ở PromQL. Bài này dựng một app với counter gắn nhãn path/status, bắn tải đều rồi chạy query thật trên obs-prom: rate() ra đúng 10/5/2 req/s, increase ra đúng 600 trong 1 phút, sum by gộp theo nhãn, và một dòng tính tỉ lệ lỗi 4.4%.

Lập trình 22/09/2026 7 phút

RED method: ba tín hiệu đủ để biết service có khoẻ không — và vì sao phải tách theo route

Service của bạn khoẻ không? RED method trả lời bằng đúng ba tín hiệu: Rate, Errors, Duration. Bài này dựng thật một dashboard RED từ một Go service hai route, rồi cho thấy cú lừa chí mạng: tỉ lệ lỗi tổng hợp 3.9% trông chấp nhận được, nhưng tách theo route lộ ra /checkout đang lỗi 9.3% — đúng route tiền bạc. Chỉ hai metric, ba câu PromQL.