anti-pattern là gì

 

Trong công nghệ và lập trình, Anti-pattern (mẫu phản diện) là những giải pháp bề ngoài có vẻ hiệu quả để giải quyết một vấn đề phổ biến, nhưng thực tế lại mang đến nhiều tác hại và hậu quả tiêu cực về lâu dài. [1, 2]
Khác biệt giữa Design Pattern và Anti-pattern
  • Design Pattern: Là các giải pháp tối ưu đã được đúc kết bởi các chuyên gia để giải quyết những vấn đề thường gặp, giúp code dễ bảo trì và mở rộng. [1, 2]
  • Anti-pattern: Ngược lại, đây là những "cách làm sai nhưng phổ biến". Đôi khi người ta áp dụng chúng do thiếu kinh nghiệm, hoặc sử dụng một giải pháp tốt nhưng đặt sai ngữ cảnh. [1, 2]
Các Anti-pattern thường gặp
  1. God Object (Đối tượng "Thượng đế"): Một lớp (class) hoặc module ôm đồm quá nhiều chức năng, quản lý mọi dữ liệu và nghiệp vụ của hệ thống. Điều này khiến code cực kỳ khó hiểu, khó test và sửa lỗi.
  2. Spaghetti Code: Cấu trúc code rối rắm, thiếu tổ chức, các đoạn xử lý nhảy lung tung (thường lạm dụng lệnh goto hoặc các khối lệnh lồng nhau quá sâu), làm giảm hiệu năng hệ thống. [1]
  3. Hardcoding: Cố định các giá trị (như đường dẫn API, mật khẩu, cổng kết nối) trực tiếp vào source code thay vì đặt trong file cấu hình (config), gây khó khăn khi cần thay đổi môi trường.
  4. Premature Optimization (Tối ưu hóa quá sớm): Cố gắng viết code siêu phức tạp để tối ưu hóa hiệu năng ngay từ đầu dù chưa cần thiết, dẫn đến code khó đọc và lãng phí thời gian.
Để nhận biết và tránh các Anti-pattern này, bạn có thể tham khảo thêm các phân tích chuyên sâu từ Viblo hoặc blog Tôi Đi Code Dạo.

MySQL datetime with mode: 'date' will now store dates in UTC strings and retrieve data in UTC

 https://orm.drizzle.team/docs/latest-releases/drizzle-orm-v0286

Note: MySQL datetime with mode: 'date' will now store dates in UTC strings and retrieve data in UTC as well to align with MySQL behavior for datetime. If you need a different behavior and want to handle datetime mapping in a different way, please use mode: 'string' or Custom Types implementation

AH00035 permission denied

 sudo chmod 751 /home/ubuntu

sudo chown -R ubuntu:www-data /home/ubuntu/genealogy-giapha
sudo chmod -R 750 /home/ubuntu/genealogy-giapha

ui-ux-pro-max-skill

 https://github.com/nextlevelbuilder/ui-ux-pro-max-skill

Using CLI (Recommended)

# Install CLI globally
npm install -g uipro-cli

# Go to your project
cd /path/to/your/project

# Install for your AI assistant
uipro init --ai claude      # Claude Code
uipro init --ai cursor      # Cursor
uipro init --ai windsurf    # Windsurf
uipro init --ai antigravity # Antigravity
uipro init --ai copilot     # GitHub Copilot
uipro init --ai kiro        # Kiro
uipro init --ai codex       # Codex CLI
uipro init --ai qoder       # Qoder
uipro init --ai roocode     # Roo Code
uipro init --ai gemini      # Gemini CLI
uipro init --ai trae        # Trae
uipro init --ai opencode    # OpenCode
uipro init --ai continue    # Continue
uipro init --ai codebuddy   # CodeBuddy
uipro init --ai droid       # Droid (Factory)
uipro init --ai all         # All assistants

Other CLI Commands

uipro versions              # List available versions
uipro update                # Update to latest version
uipro init --offline        # Skip GitHub download, use bundled assets

xóa toàn bộ commit

 

Cách chuẩn & đơn giản nhất (Khuyến nghị)

Mục tiêu

  • Xóa toàn bộ commit history

  • Giữ nguyên code hiện tại

  • main chỉ còn 1 commit duy nhất: init


Bước 1: Tạo branch mới không có lịch sử

git checkout --orphan new-main

--orphan = tạo branch không có commit cha


Bước 2: Add toàn bộ code hiện tại

git add . git commit -m "init"

👉 Đây sẽ là commit duy nhất trong repo


Bước 3: Xóa branch main cũ & đổi tên

git branch -D main git branch -m main

Bước 4: Force push lên GitHub

git push origin main --force

Kết quả sau cùng

  • git logchỉ 1 commit

  • Không ai xem được commit cũ

  • .env / secret cũ trong history → biến mất hoàn toàn

⚠️ Ngoại lệ: nếu ai đó đã clone repo trước đó, họ vẫn giữ bản local

anti-pattern là gì

  Trong công nghệ và lập trình, Anti-pattern (mẫu phản diện) là những giải pháp bề ngoài có vẻ hiệu quả để giải quyết một vấn đề phổ biến, ...