Đi tới nội dung

Huỳnh Tiến Dĩ / DiCodeWeb

Code, hệ thống và những người xây dựng chúng.

Mình làm sản phẩm web và ghi lại những gì học được trên đường đi — ghi chép, bài giải thích và hướng dẫn về frontend, thiết kế hệ thống, công cụ và hành trình trưởng thành của một kỹ sư.

Huỳnh Tiến Dĩ
Huỳnh Tiến DĩSoftware Engineer · TP. Hồ Chí Minh
Nhịp viết theo thángHệ thống & kiến trúcFrontend & giao diệnHiệu năngCông cụ & quy trìnhHọc hỏi & sự nghiệp
  1. 2 bài · thg 1 2025
    '25
  2. 2 bài · thg 2 2025
  3. 2 bài · thg 3 2025
  4. 2 bài · thg 4 2025
  5. 2 bài · thg 5 2025
  6. 1 bài · thg 6 2025
  7. 2 bài · thg 7 2025
  8. 2 bài · thg 8 2025
  9. 2 bài · thg 9 2025
  10. 2 bài · thg 10 2025
  11. 2 bài · thg 11 2025
  12. 2 bài · thg 12 2025
  13. 1 bài · thg 1 2026
    '26
  14. 2 bài · thg 2 2026
  15. 2 bài · thg 3 2026
  16. 2 bài · thg 4 2026
  17. 2 bài · thg 5 2026
  18. 1 bài · thg 6 2026
  19. 2 bài · thg 7 2026
  20. 2 bài · thg 8 2026
  21. 2 bài · thg 9 2026
  22. 2 bài · thg 10 2026

Mới viết, mới chia sẻ

Những bài viết và ghi chép gần đây nhất.

Xem tất cả

Model Context Protocol thực chiến: xây MCP server production bằng TypeScript

MCP không phải phép màu, chỉ là một giao thức JSON-RPC được thiết kế tốt. Bài này giải thích host, client, server, các primitive và transport theo spec 2026-07-28, rồi dựng một server TypeScript chỉ đọc cho dữ liệu đơn hàng: thiết kế tool, phân trang, test bằng Inspector, OAuth cho remote server và những lỗ hổng bảo mật cần chặn.

Công cụ & quy trình20 phút

Đọc theo chuỗi

Bài viết xếp theo thứ tự, đi từ nền tảng đến production.

Xem tất cả
014 phần · 93 phút đọc

Hệ thống & kiến trúc

AI engineering cho web developer

Từ UI chat streaming, RAG trả lời đúng, MCP server cho agent đến bảo mật ứng dụng LLM — những gì một web developer cần để đưa tính năng AI lên production.

Đã đọc 0/4
  1. 1Xây dựng UI chat AI streaming mà vẫn mượt: SSE, ReadableStream, markdown tăng dần và nút Stop
  2. 2RAG trả lời đúng trong thực tế: chunking, hybrid search với pgvector, reranking và đánh giá
  3. 3Model Context Protocol thực chiến: xây MCP server production bằng TypeScript
  4. +1 phần nữa
Xem chuỗi
045 phần · 52 phút đọc

Frontend & giao diện

CSS và nền tảng web hiện đại

Một mô hình tư duy cho layout, container queries, design token, rồi để Popover API, anchor positioning và thẻ dialog native gánh bớt JavaScript.

Đã đọc 0/5
  1. 1Một mô hình tư duy cho CSS layout: từ normal flow đến flexbox và grid
  2. 2Container queries và responsive hiện đại: component tự biết mình rộng bao nhiêu
  3. 3Design token và theming với CSS custom properties: từ màu thô đến dark mode
  4. +2 phần nữa
Xem chuỗi
023 phần · 72 phút đọc

Hệ thống & kiến trúc

NestJS trong production

Một modular monolith NestJS đi từ request lifecycle và ranh giới module, qua background job không mất việc, đến xác thực bằng passkey và session đúng cách.

Đã đọc 0/3
  1. 1NestJS trong production: request lifecycle, dependency injection và ranh giới module cho một modular monolith
  2. 2Background job đáng tin cậy trong NestJS với BullMQ: retry, idempotency và transactional outbox
  3. 3Xác thực trong NestJS cho đúng: passkey, session hay JWT, và refresh token rotation
Xem chuỗi

Lộ trình học

Các lộ trình có thứ tự từ nền tảng đến production — frontend và backend.

Xem tất cả
01React

Frontend · Frontend Developer

React Roadmap

Lộ trình React đầy đủ hơn cho frontend hiện đại: bắt đầu từ JavaScript/TypeScript, mental model và component fundamentals, sau đó đi sâu vào state architecture, data fetching, performance, testing, bridge sang Next.js và kết thúc bằng interview prep.

14 chặng124 trọng tâm65 bài thực hành

Xem lộ trình
02NestJS

Backend · Backend Developer

NestJS Roadmap

Backend track để xây API, authentication, database workflows, services, queues và production-ready architecture theo progression từ core NestJS tới advanced backend patterns.

11 chặng66 trọng tâm20 bài thực hành

Xem lộ trình

Hướng dẫn

Các hướng dẫn chi tiết, đi từng chương cho những công cụ bạn dùng hằng ngày.

Xem tất cả
  1. 01Các cổng kiểm soát bảo mậtBảo mật4 chương
  2. 02Giới thiệu về PackerCơ sở hạ tầng dưới dạng mã6 chương
  3. 03Giới thiệu về AWSAWS10 chương
  4. 04Giới thiệu về PythonPython10 chương
  5. 05Giới thiệu về DockerDocker10 chương
  6. 06Giới thiệu về KubernetesKubernetes10 chương

Công cụ

Tiện ích chạy trên trình duyệt cho công việc dev hằng ngày.

Xem tất cả

Chủ đề

Năm lăng kính cho mọi thứ trên blog này.

11 bài

Hệ thống & kiến trúc

State, luồng dữ liệu và những ranh giới giữ cho ứng dụng gọn gàng khi lớn dần.

  • Bảo mật ứng dụng LLM và agent: prompt injection, excessive agency và OWASP Top 10 cho LLM
  • Xác thực trong NestJS cho đúng: passkey, session hay JWT, và refresh token rotation
  • Background job đáng tin cậy trong NestJS với BullMQ: retry, idempotency và transactional outbox
  • NestJS trong production: request lifecycle, dependency injection và ranh giới module cho một modular monolith
10 bài

Frontend & giao diện

Component, design system và nghề làm giao diện khiến người dùng thấy dễ chịu.

  • Ưu tiên nền tảng: Popover API, CSS anchor positioning và View Transitions thay được khá nhiều JavaScript UI
  • Xây dựng UI chat AI streaming mà vẫn mượt: SSE, ReadableStream, markdown tăng dần và nút Stop
8 bài

Hiệu năng

Bundle, rendering và đo lường những gì thật sự khiến ứng dụng nhanh.

  • Core Web Vitals: hiểu đúng LCP, INP, CLS và cách tối ưu
  • Event loop, microtask và rendering: vì sao giao diện của bạn bị đơ
8 bài

Công cụ & quy trình

Runtime, monorepo và những công cụ giữ vòng phản hồi luôn ngắn.

  • Model Context Protocol thực chiến: xây MCP server production bằng TypeScript
  • Tấn công chuỗi cung ứng npm sau Shai-Hulud: điều gì đã thay đổi và cách gia cố một monorepo JavaScript
4 bài

Học hỏi & sự nghiệp

Ghi chép về việc học, viết và trưởng thành như một kỹ sư.

  • Ghi chép như một kỹ sư
  • Ước lượng công việc frontend một cách trung thực

Cách tôi tư duy về phát triển phần mềm

Công cụ thay đổi. Framework tiến hóa. Nhưng các nguyên tắc đằng sau một hệ thống tốt luôn được giữ nguyên.

Những nguyên lý định hướng mọi bài viết trên blog — không chạy theo xu hướng, mà là những lối tư duy bền vững theo thời gian.

  1. 01Hiệu suất

    Hiệu suất là một Tính năng

    Tốc độ không phải là tối ưu hóa — nó là một phần của sản phẩm. Hệ thống chậm tạo ra ma sát, và ma sát sẽ giết chết trải nghiệm người dùng. Từng lớp đều quan trọng.

  2. 02Kiến trúc

    Tư duy Hệ thống, Không phải Giao diện

    Ứng dụng không phải là các trang tĩnh. Chúng là hệ thống với trạng thái, luồng dữ liệu và các ràng buộc. Nếu chỉ nhìn vào UI, ứng dụng của bạn sẽ gãy khi mở rộng.

  3. 03Chất lượng Code

    Sự rõ ràng vượt trên Sự thông minh

    Code tốt không phải là code thông minh nhất — mà là code người khác có thể hiểu nhanh nhất. Khả năng bảo trì luôn chiến thắng những thủ thuật phức tạp.

  4. 04Khả năng mở rộng

    Xây dựng cho sự Thay đổi

    Yêu cầu sẽ luôn thay đổi. Hệ thống tồn tại được là những hệ thống được thiết kế để thích ứng, không phải những hệ thống cố định cứng nhắc.

  5. 05Thực chiến

    Môi trường thật (Production) là Chân lý

    Những gì chạy được ở máy cá nhân (local) không quan trọng. Sự hiểu biết thực sự đến từ môi trường production — nơi có các trường hợp ngoại lệ, lỗi và các sự cố bất ngờ.

  6. 06Sự đơn giản

    Sự Đơn giản Chiến thắng dài hạn

    Sự phức tạp sẽ tích tụ theo thời gian. Các hệ thống đơn giản luôn dễ dàng hơn trong việc sửa lỗi, mở rộng và phát triển. Đơn giản là một quyết định thiết kế.

Toàn bộ kho

Mỗi bài viết là một ô. Rê chuột hoặc focus để xem nhanh, lọc theo chủ đề để thu hẹp.

Xem tất cả
Huỳnh Tiến Dĩ

Về tác giả

Huỳnh Tiến Dĩ

Chào bạn, mình là Dĩ — kỹ sư phần mềm ở TP. Hồ Chí Minh, chủ yếu làm việc với React, Next.js và những hệ thống phía sau chúng. Blog này là nơi mình chậm lại để viết về cách mọi thứ thật sự vận hành ở production: những đánh đổi, những sai lầm và những pattern đáng giữ lại.

Tìm hiểu thêm về mình