sang.id.vn
RSS FeedXin chào, mình là Sang (ngosangns). Mình thích mày mò và xây dựng những công cụ nhỏ giúp tiết kiệm thời gian và làm việc/học tập dễ dàng hơn.
Tất cả bài viết
-
Khi z-index trong CSS bị bỏ qua
Vì sao z-index rất cao vẫn không nổi lên đúng như bạn nghĩ: stacking context, top layer, clipping, transform, overflow và vài cái bẫy HTML/CSS/JS thường gặp.
-
Big Bang vs. Kinh tế chia sẻ — Một phép so sánh bất ngờ hoàn hảo
Nếu vũ trụ và kinh tế chia sẻ cùng tiến hóa theo một kịch bản thì sao? Từ hỗn loạn đến trật tự, từ hạt cơ bản đến nền tảng số — sự tương đồng đáng kinh ngạc.
-
Bẫy float và fixed positioning trong contenteditable
Những lỗi khó phát hiện khi dùng float và fixed positioning trong contenteditable, kèm cách khắc phục thực tế.
-
Contenteditable lồng nhau: Dùng Shadow DOM để chuyển editing host
Vấn đề khi lồng contenteditable trong block-based editor, và cách dùng Shadow DOM để tách editing host cho từng block.
-
Khi nào bạn thực sự cần capture: true trong addEventListener
Không chỉ lý thuyết — đây là tình huống thực tế mà capture: true là giải pháp đúng duy nhất trong JavaScript.
-
Cách mình tối ưu tính năng tự động xếp lịch
Hành trình tối ưu từ 7 triệu tổ hợp ngốn 2GB RAM xuống mức chấp nhận được — bằng bitmask, backtracking và Web Worker.
-
Ghi chú NGINX — Những thứ mình hay dùng lại
Tổng hợp mẹo NGINX mình hay dùng đi dùng lại: rewrite, proxy, load balancing, rate limiting, geo-blocking, và dynamic upstream.
-
Config MySQL để full-text search tiếng Việt chuẩn chỉnh
Tại sao search tiếng Việt trong MySQL ra kết quả lung tung, và cách sửa chỉ với vài dòng config.
-
Bật strict datatype trong PHP
Tại sao bạn nên dùng declare(strict_types=1) trong PHP, và cách nó giúp bắt bug sớm hơn.
-
Trình bày báo cáo tốt nghiệp trên Word — Phần 3: Mẹo và phím tắt
Các cài đặt nâng cao, phím tắt hữu ích và những mẹo nhỏ giúp viết báo cáo Word nhanh hơn.
-
Trình bày báo cáo tốt nghiệp trên Word — Phần 2: Mục lục và đánh số trang
Tạo mục lục tự động, mục lục hình ảnh, chia section và đánh số trang — các thủ thuật nâng cao cho báo cáo Word.
-
Trình bày báo cáo tốt nghiệp trên Word — Phần 1: Cài đặt cơ bản
Chuyển đơn vị, setup margin, paragraph, heading, tab stop — những thứ cần làm đầu tiên khi mở file Word mới.
-
Tự động deploy JavaScript lên hosting bằng GitHub Workflow
Từ SSH đơn giản đến caching và build trên CI — hành trình viết workflow deploy cho project JavaScript thực tế.
-
Chuyển tiếp request từ path sang port cụ thể bằng .htaccess
Cách dùng mod_rewrite và mod_proxy trong Apache để forward request từ path sang port nội bộ — kèm ví dụ cho nhiều app.
-
Behavioral Design Pattern — Giải thích dễ hiểu với TypeScript
Tổng hợp 9 Behavioral Design Pattern trong TypeScript: Chain of Responsibility, Command, Mediator, Memento, Observer, Strategy, Visitor, State, Repository.
-
Creational Design Pattern — Giải thích dễ hiểu với TypeScript
Tổng hợp 8 Creational Design Pattern trong TypeScript: Singleton, Factory, Factory Method, Abstract Factory, Builder, Object Pool, Prototype, Dependency Injection.
-
Tổng quan Design Pattern — Khởi đầu series
Series tổng hợp 26 design pattern phổ biến với ví dụ TypeScript — từ Creational, Structural đến Behavioral.
-
Structural Design Pattern — Giải thích dễ hiểu với TypeScript
Tổng hợp 9 Structural Design Pattern trong TypeScript: Adapter, Bridge, Composite, Decorator, Facade, Proxy, Flyweight, Delegation, EAV.