MonkeyTips

Những mẹo lập trình ngắn gọn, đã kiểm chứng — kèm code chạy được, sơ đồ và thử thách.
Phần lớn nội dung, kỹ thuật và bước hướng dẫn của các tip được phát triển với sự hỗ trợ của AI.
shape
shape
shape
shape
shape
shape
shape
shape

DevOps Trung bình

Exponential Backoff với Jitter: Retry Đúng Cách

Vì sao exponential backoff thuần túy gây ra retry storm, và jitter ngẫu nhiên giúp trải đều tải ra sao, kèm cách triển khai full-jitter retry bằng PHP và Python.

PHP 8.4 Python 3.12
Sơ đồ Thử thách
6 phút đọc · 24 Đọc tip
DevOps Khó

Consistent Hashing: Phân Bổ Tải Không Cần Xáo Trộn Toàn Bộ

Consistent hashing giúp phân bổ key qua các node ra sao để khi thêm hoặc xóa node chỉ cần xáo trộn một phần nhỏ keyspace, kèm cách triển khai virtual node bằng PHP và Python.

PHP 8.4 Python 3.12
Sơ đồ Thử thách
5 phút đọc · 144 Đọc tip
PHP Trung bình

LRU Cache - Chế Cache O(1) Bằng Doubly Linked List Và Hash Map

Cách thiết kế LRU cache hỗ trợ get và put trong O(1) bằng cách kết hợp hash map với doubly linked list, kèm code PHP chạy được và một thử thách thực hành.

PHP 8.4
Sơ đồ Thử thách
6 phút đọc · 123 Đọc tip
Laravel Trung bình

Idempotency Key: Chặn Charge Trùng Trong Hệ Thống Phân Tán

Vì sao idempotency key quan trọng với API thanh toán, cách triển khai an toàn với database-backed store, với mấy lỗi thường gặp kiểu race condition với đụng key.

PHP 8.4
Sơ đồ
6 phút đọc · 217 Đọc tip
Database Khó

Deadlock Trong Database: Phát Hiện, Chẩn Đoán Với Phòng Tránh

Database dùng wait-for graph để phát hiện deadlock ra sao, vì sao nó xảy ra, với mấy kỹ thuật thực tế để phòng tránh trong hệ thống concurrency cao.

Postgresql 13+
Sơ đồ
8 phút đọc · 235 Đọc tip
Database Khó

Distributed Locking Với Redis: Hiểu Thuật Toán Redlock

Đào sâu vô thuật toán Redlock để lock phân tán an toàn qua nhiều node Redis - mấy kiểu lỗi thường gặp, chuyện lệch đồng hồ, với cách vá bằng fencing token.

Redis 7.x
Sơ đồ
10 phút đọc · 403 Đọc tip
DevOps Trung bình

Git Interactive Rebase: Dọn Lại Lịch Sử Commit Trước Khi Mở PR

Học cách xài git rebase -i để gộp, sắp lại thứ tự với sửa message commit, giúp pull request của mình kể một câu chuyện gọn gàng, dễ review.

Git 2.40+
Sơ đồ
7 phút đọc · 365 Đọc tip
Database Trung bình

Chiến Lược Cache Redis: Cache-Aside Với Write-Through, Chọn Sao Cho Đúng

So sánh cache-aside với write-through khi xài Redis - trade-off về consistency, cách đặt TTL, với khi nào nên chọn cái nào.

Redis 7.x
Sơ đồ
7 phút đọc · 296 Đọc tip
JavaScript Trung bình

TypeScript Utility Types: Pick, Omit Với Partial Xài Sao Cho Đúng

Đừng copy-paste interface cho từng biến thể nhỏ nhỏ nữa. Pick, Omit với Partial giúp mình dẫn xuất type mới từ một nguồn duy nhất - đây là lúc nào nên xài cái nào.

TypeScript 5.x
Sơ đồ
4 phút đọc · 354 Đọc tip
Bảo Mật Trung bình

Rate Limiting API - Token Bucket Hay Sliding Window

Fixed window để client burst gấp đôi ngay ranh giới. Xem token bucket với sliding window hoạt động thiệt sự ra sao, kèm cách làm với Redis và mấy cái bẫy hay dính khi lên production.

Redis 6.x+ Node 18.x+
Sơ đồ
3 phút đọc · 365 Đọc tip
Next.js Trung bình

Next.js App Router - Server Components vs Client Components, Xài Sao Cho Chuẩn

Server Component chỉ chạy trên server; Client Component mới hydrate ở trình duyệt. Coi Next.js App Router render hai loại này ra sao, và khi nào mới thiệt sự cần 'use client'.

Next 14.x - 15.x React 18.x - 19.x
Sơ đồ
5 phút đọc · 1,196 Đọc tip
JavaScript Trung bình

Debounce vs Throttle Trong JavaScript - Xài Cái Nào Cho Đúng

Scroll, resize, and keystroke events fire dozens of times a second. Learn how debounce and throttle rate-limit them — and which one to reach for.

JavaScript ES6+
Sơ đồ
4 phút đọc · 1,110 Đọc tip
Database Trung bình

Database Index - Biến Full Scan Thành Tra Cứu Tức Thì

Coi vì sao query hổng có index phải quét từng dòng, index biến nó thành tra cứu lẹ làng cỡ nào, và cách đọc EXPLAIN để phân biệt.

SQL ANSI / MySQL 8+
Sơ đồ
3 phút đọc · 1,905 Đọc tip
PHP Dễ

Chống SQL Injection Trong PHP - Đừng Để Dính Bẫy

Học mấy kỹ thuật quan trọng để bảo vệ ứng dụng PHP khỏi mấy đòn SQL injection.

PHP 8.0+
Sơ đồ
2 phút đọc · 1,093 Đọc tip
DevOps Trung bình

Docker Multi-Stage Build - Giảm Size Image Ngọt Xớt

Giảm size Docker image xuống ngọt xớt bằng multi-stage build, học liền tay nè.

Docker 20.10+
Sơ đồ
2 phút đọc · 2,255 Đọc tip
PHP Trung bình

PHP 8.4 Property Hooks - Xài Sao Cho Ngon

Khám phá property hooks - tính năng mới toanh của PHP 8.4 giúp gắn logic vào property gọn gàng, đỡ mất công viết magic method.

PHP 8.4
2 phút đọc · 1,406 Đọc tip
Laravel Trung bình

Tối Ưu Truy Vấn Laravel Với Eager Loading

Tìm hiểu cách tối ưu truy vấn database trong Laravel bằng eager loading để tránh vấn đề N+1 query.

Laravel 11.x PHP 8.2+
Sơ đồ
3 phút đọc · 1,734 Đọc tip
JavaScript Dễ

Async/Await Trong JavaScript - Xài Cho Đúng Bài

Nắm vững async/await trong JavaScript qua mấy best practice này, tránh dính mấy lỗi hay gặp.

JavaScript ES2017+
Sơ đồ
2 phút đọc · 2,273 Đọc tip