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

Repository pattern trong Go: tách tầng dữ liệu bằng interface, và khi nào nó thành lớp thừa

Repository pattern giấu chi tiết lưu trữ sau một interface, để logic nghiệp vụ không phụ thuộc CSDL cụ thể. Đo thật trong Go 1.23: repo dịch lỗi lưu trữ thành lỗi domain để errors.Is dùng ở tầng trên, service test được bằng fake, và nêu thẳng chỗ repository giấu mất tối ưu CSDL.

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

Pipe và file descriptor: ba luồng của Unix, và bẫy thứ tự 2>&1

Pipe và chuyển hướng là nền của dòng lệnh Unix, nhưng nhiều người dùng mà không hiểu ba luồng stdin/stdout/stderr tách nhau thế nào — dẫn tới bẫy kinh điển: cmd 2>&1 > file lại KHÔNG gộp được lỗi vào file. Bài mở đầu sê-ri Unix đo thật bằng bash: tách stdout/stderr, và vì sao thứ tự của > và 2>&1 quyết định kết quả.