GyaanSetu WebDev

Frontend, backend và DevOps cho web hiện đại.

230 articlesDeep, practical knowledge

Lỗi Soft 404 trong Next.js làm cạn kiệt ngân sách thu thập dữ liệu và gây ra các hình phạt SEO

Google Search Console đánh dấu các trang trả về mã 200 OK nhưng không có nội dung là lỗi soft 404. Trong Next.js, việc sử dụng định tuyến động mà không kiểm tra dữ liệu kỹ lưỡng khiến tình trạng này xảy ra phổ biến, gây lãng phí ngân sách thu thập dữ liệu, làm giảm thứ hạng và khiến tỷ lệ thoát trang tăng vọt.

WebDev · 3 min read

useSyncExternalStore của React 18 loại bỏ hiện tượng "tearing" từ external state

Hook mới này thực hiện việc đọc snapshot ngay trong quá trình render, đảm bảo mọi component đều nhìn thấy cùng một giá trị ngay cả khi bộ render đồng thời (concurrent renderer) của React tạm dừng hoặc thực hiện lại các lần render, giúp loại bỏ hoàn toàn hiện tượng "tearing" về mặt hiển thị vốn là vấn đề của pattern useEffect trước đây.

WebDev · 3 min read

Các nhà in phải triển khai GS1 Digital Link trước ngày 19 tháng 7 năm 2026 nếu không muốn mất quyền tiếp cận thị trường EU

Quy định Ecodesign mới coi bao bì in ấn là một điểm cuối kỹ thuật số, yêu cầu các mã QR phải có khả năng phân giải thông qua GS1 Digital Link. Nếu không có bộ phân giải hoạt động, sản phẩm sẽ không thể thông quan, gây đình trệ quá trình tự động hóa kho bãi hoặc không đáp ứng được các nghĩa vụ báo cáo tái chế.

WebDev · 3 min read

Migration PostgreSQL vô tình tạo trùng lặp hàm, làm sập API production

Một lập trình viên đã thêm một tham số tùy chọn khi sử dụng lệnh CREATE OR REPLACE FUNCTION, nhưng PostgreSQL đã tạo ra một hàm nạp chồng (overload) mới thay vì ghi đè. Việc định nghĩa trùng lặp này đã gây ra lỗi “function is not unique”, dẫn đến phản hồi 400 từ API đang hoạt động.

WebDev · 3 min read

Thúc đẩy SEO: Next.js 14 cung cấp HTML được render hoàn toàn, giảm thiểu đáng kể độ trễ khi thu thập dữ liệu

Trong một thử nghiệm nhanh trên blog cá nhân, việc chuyển việc lấy dữ liệu vào Server Component đã giúp giảm kích thước bundle JavaScript khoảng 60% và giảm thời gian hiển thị đầu tiên (first-paint time) xuống dưới 200 ms, cung cấp HTML tức thì cho cả người dùng và các trình thu thập dữ liệu.

WebDev · 3 min read

Web Locks API ngăn chặn tình trạng năm tab cùng lúc gửi yêu cầu làm mới gây quá tải máy chủ xác thực

Bằng cách bao bọc Axios 401 interceptor trong một yêu cầu navigator.locks, chỉ duy nhất một tab thực hiện làm mới qua mạng, trong khi các tab còn lại sẽ đọc JWT mới từ localStorage, giúp loại bỏ hiệu ứng dây chuyền từ các cuộc tấn công lặp lại (replay-attack) gây đăng xuất người dùng.

WebDev · 4 min read

Founder Lab phát hiện Điểm Ý định AI biến động 2 điểm dù cửa hàng Shopify không có thay đổi nào

Việc quét cùng một cửa hàng Shopify của Founder Lab sáu lần cho thấy xếp hạng tổng thể vẫn duy trì ở mức 78, nhưng điểm phụ về ý định do AI điều khiển lại dao động từ 4 đến 6, chứng minh rằng những thay đổi nhỏ về điểm số có thể chỉ là nhiễu thống kê.

WebDev · 4 min read

Một bệnh nhân nhấn vào nút có nhãn “Ngắt kết nối dữ liệu của tôi.” Ứng dụng web hiển thị một dấu tích xanh cùng thông báo xác nhận đầy vui vẻ.

Một bệnh nhân nhấn vào nút có nhãn “Ngắt kết nối dữ liệu của tôi.” Ứng dụng web hiển thị một dấu tích xanh cùng thông báo xác nhận đầy vui vẻ. Đâu đó trong một hàng đợi chạy ngầm, một tiến trình xử lý bắt đầu hoạt động…

WebDev · 6 min read

Hầu hết những người bắt đầu học Python qua các bài hướng dẫn đầu tiên đều muốn nhảy ngay vào phần biến, vòng lặp và xây dựng một thứ gì đó hữu hình

Đa số những người bắt đầu học Python qua các bài hướng dẫn đầu tiên đều muốn nhảy ngay vào phần biến, vòng lặp và xây dựng một thứ gì đó hữu hình. Sự thôi thúc đó là điều dễ hiểu. Nhưng nếu bạn dừng lại một chút để hiểu...

WebDev · 6 min read

Các nhà phát triển, người làm tự do và các nhóm nhỏ xử lý các tệp PDF nhạy cảm mỗi ngày. Hóa đơn, báo cáo khách hàng và hợp đồng đều cần

Các nhà phát triển, người làm tự do và các nhóm nhỏ xử lý các tệp PDF nhạy cảm mỗi ngày. Hóa đơn, báo cáo khách hàng và hợp đồng đều cần được bảo mật trước khi gửi qua email hoặc lưu trữ trên các ổ đĩa dùng chung. Điều tuyệt vời là...

WebDev · 5 min read

Hầu hết các lập trình viên đều đã triển khai một tính năng trông có vẻ hoàn hảo trên trình duyệt và cho rằng công việc khó khăn đã kết thúc. Tôi đã

Hầu hết các lập trình viên đều đã triển khai một tính năng trông có vẻ hoàn hảo trên trình duyệt và cho rằng công việc khó khăn đã kết thúc. Tôi đã mắc chính xác sai lầm đó khi đang xây dựng blog ẩm thực bằng Django của mình. Điều đó...

WebDev · 5 min read

Các lập trình viên luôn thích những thành quả nhanh chóng. Khi ticket ghi là "thêm chế độ tối", con đường ít trở ngại nhất có vẻ rất hiển nhiên: viết , w

Các lập trình viên luôn thích những thành quả nhanh chóng. Khi ticket ghi là "thêm chế độ tối", con đường ít trở ngại nhất có vẻ rất hiển nhiên: viết , viết , và chuyển đổi qua lại giữa chúng. Cảm giác thật gọn gàng. Nó được triển khai nhanh chóng...

WebDev · 6 min read