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

Tổng 1783 bài
DevOps 02/09/2026 9 phút

Tôi đoán hàm này ăn 70% CPU — chính tay tôi viết nó — hai phép đo nói 90,7% và 98,3%; và py-spy đo được điều đó gần như miễn phí

Lấy mẫu hồ sơ ngoài tiến trình ở 99 Hz gần như không tốn gì (−0,8%), nên bật được suốt ngày ở production; còn cProfile làm chương trình chậm gấp 2,06 lần và tự tạo sự cố hiệu năng. Nhưng bài học lớn nhất là con số tôi đoán sai về mã của chính mình — thời gian chạy không tỷ lệ với số dòng.

Bảo mật 02/09/2026 9 phút

Tham số hoá chặn sạch SQL injection — trừ đúng một chỗ, và ở đó tôi trích trọn khoá bí mật 18 ký tự chỉ bằng thứ tự sắp xếp

Tham số hoá là cách chặn SQL injection duy nhất thật sự đủ — nhưng chỉ ở vị trí giá trị. Có một chỗ nó không đặt vào được: tên cột trong ORDER BY. Tôi đo ở đó và đọc trọn một khoá bí mật không route nào hiển thị, một bit mỗi request, 144 request cho cả chuỗi.

DevOps 02/09/2026 10 phút

Mỗi pod trong Kubernetes thêm đúng 187 chuỗi chỉ số — kể cả pod không làm gì; và ba pod sống một phút để lại 4.580 chuỗi vĩnh viễn

Bản thân cụm Kubernetes cũng là một nguồn phát chỉ số, và nó phát ngay cả khi bạn chưa triển khai gì. Tôi đo: 187 chuỗi/pod tuyến tính hoàn hảo, kể cả pod pause chẳng làm gì. Và một bất ngờ — xoá sạch một namespace để lại 4.580 chuỗi control plane không bao giờ co lại (nhưng nó bão hoà).

DevOps 02/09/2026 9 phút

Giảm mẫu bằng trung bình để tiết kiệm đĩa đã xoá 84% chiều cao đỉnh của tôi — 939 ms còn 150 ms, và không gì trên màn hình cho biết

Prometheus nén một mẫu còn 2,16 byte, và giãn chu kỳ thu thập tiết kiệm gần tuyến tính. Nhưng giảm mẫu bằng trung bình là phép biến đổi KHÔNG đảo ngược được: một đợt chậm 939 ms bị san còn 150 ms, biểu đồ vẫn có đường, chỉ là đỉnh biến mất và không ai biết. Cách giữ đỉnh mà vẫn tiết kiệm.

Bảo mật 02/09/2026 9 phút

Một trang lỗi debug quên tắt rò 14.276 ký tự: đường dẫn, số dòng, biến cục bộ — và tên bảng SQL biến kẻ dò mù thành nhắm trúng

Thông báo lỗi sinh ra để giúp lập trình viên — và khi hiện cho người dùng, nó giúp luôn kẻ tấn công. Tôi đo lượng thông tin rò ở chế độ debug so với production: gấp ~700 lần, và một lỗi SQL nguyên văn phơi cả tên bảng lẫn câu truy vấn. Bài học: thông báo chung ra ngoài, log chi tiết vào trong.

Mạng 02/09/2026 9 phút

Vì sao gói đầu tiên tới một máy hàng xóm luôn chậm hơn — và một IP không ai giữ khiến kết nối 'treo' thay vì báo lỗi

Trước khi gửi khung đầu tiên tới một máy cùng mạng con, máy phải dịch IP sang MAC bằng một vòng ARP tốn ~190 micro giây — hỏi to, đáp riêng, rồi cache. Trả một lần cho mỗi hàng xóm. Đo thật bằng tcpdump, kèm vì sao ping một IP trống lại kẹt ở INCOMPLETE.