GyaanSetu JavaScript

Hệ sinh thái JavaScript và TypeScript.

100 articlesDeep, practical knowledge

Promise.withResolvers của Node 22 giúp cắt giảm một nửa vòng lặp công cụ Claude

Bằng cách thay thế mẫu `new Promise` cồng kềnh bằng một lời gọi `Promise.withResolvers()` duy nhất, các nhà phát triển có thể chuyển các hàm resolve/reject đến bất kỳ phần nào của hệ thống, giúp loại bỏ việc quên resolve, các cảnh báo double-reject và tình trạng lồng nhau quá sâu—điều này đặc biệt có giá trị trong các môi trường serverless Lambda.

JavaScript · 4 min read

TLS Fingerprinting khiến các trình thu thập dữ liệu Playwright lãng phí tài nguyên điện toán đám mây, làm tăng chi phí

Các máy chủ băm (hash) gói tin TLS ClientHello thô thành dấu vân tay JA3/JA4; bất kỳ sự sai lệch nào so với User-Agent hoặc các thiết lập HTTP/2 đã khai báo đều sẽ khiến yêu cầu bị đánh dấu là do script thực hiện. Cách khắc phục đáng tin cậy duy nhất là đảm bảo mọi lớp của yêu cầu đều mô tả nhất quán thông tin của cùng một trình duyệt.

JavaScript · 4 min read

Pocket-35B của VIDRAFT chạy được trên mọi CPU laptop, đạt mốc 1 triệu lượt tải xuống

Các trọng số định dạng GGUF của Pocket-35B có thể tải trực tiếp vào llama.cpp hoặc Ollama, cho phép các đội ngũ không có ngân sách đầu tư GPU vẫn có thể khởi chạy mô hình 35 tỷ tham số trên một chiếc laptop thông thường—miễn là đáp ứng được yêu cầu về RAM ở mức vừa phải.

JavaScript · 3 min read

Tại sao trình phát HTML5 tùy chỉnh của bạn bị lỗi khi Cast – 4 "cạm bẫy" tiềm ẩn

Khi thực hiện Cast, việc phát video sẽ được chuyển giao cho firmware của TV, do đó các token phải có thời hạn dài hơn phiên làm việc, tiêu đề CORS phải bao gồm origin của TV, và URL luồng không được là dạng blob. Hướng dẫn này sẽ chỉ cách chuyển sang sử dụng URL manifest và cách xác thực kết nối.

JavaScript · 3 min read

Cách lockfile dạng văn bản của Bun giảm thiểu rủi ro chuỗi cung ứng nhờ cho phép quét chính sách trong CI

Lockfile mặc định mới trong Bun v1.2 là bun.lock dưới dạng văn bản thuần túy, thay thế cho định dạng bun.lockb không thể đọc trực tiếp. Thay đổi này cho phép người kiểm duyệt theo dõi chính xác các thay đổi phiên bản, thực hiện kiểm tra chính sách trong CI và truy vết các mã độc được chèn vào bằng các công cụ git tiêu chuẩn.

JavaScript · 1 min read

Mã độc JSCeal đánh cắp mã thông báo OAuth của Chrome, vô hiệu hóa MFA của Google đối với các nhà giao dịch tiền điện tử

Payload JSCeal chỉ chạy trên RAM giúp trích xuất cookie, mật khẩu đã lưu và mã thông báo OAuth từ các trình duyệt Chromium, sau đó thực hiện tấn công phát lại phiên (session replay) để vượt qua yêu cầu xác thực hai yếu tố của Google, cho phép kẻ tấn công chiếm đoạt tài sản từ Binance, Bybit, Ledger và nhiều nền tảng khác.

JavaScript · 2 min read

Chỉ có 2 trong số 13 phạm vi Semver hoạt động giống nhau giữa npm, Cargo, Composer và pip

Việc kiểm tra 13 biểu thức phạm vi với 19 số phiên bản cho thấy chỉ có 17 kết quả trùng khớp, mà hầu hết là các trường hợp bị từ chối. Các ký hiệu caret, tilde và dot-x được mỗi trình quản lý gói diễn giải khác nhau, dẫn đến những sự không tương thích đầy bất ngờ.

JavaScript · 2 min read

Công cụ Model Puller của Ollama cho phép kẻ tấn công không cần xác thực chiếm đoạt Cloud Metadata thông qua SSRF

Lỗ hổng SSRF vẫn tồn tại trong Ollama 0.33.2 do trình tải mô hình tensor sử dụng một HTTP client riêng biệt, bỏ qua cơ chế bảo vệ chuyển hướng đã được thêm vào cho CVE-2026-5530, cho phép kẻ tấn công chuyển hướng các yêu cầu tải về tới bất kỳ địa chỉ nào có thể truy cập được.

JavaScript · 3 min read

Rò rỉ khóa Stripe cho phép thực hiện các giao dịch gian lận và đánh cắp dữ liệu khách hàng tại 669 nhà cung cấp

Các khóa bị lộ cho phép kẻ tấn công tạo các giao dịch thanh toán, truy xuất hóa đơn và thu thập dữ liệu cá nhân, gây ra nguy cơ hoàn tiền (chargeback), bị phạt và tổn hại thương hiệu. Các biện pháp xử lý ngay lập tức bao gồm chặn các tệp dotfiles, thay đổi toàn bộ khóa và chuyển các thông tin bảo mật vào kho lưu trữ (vault).

JavaScript · 4 min read

TypeScript 7 cắt giảm 40% độ trễ kiểm tra kiểu nhờ binary Rust mới

Công cụ được viết bằng Rust này chạy trong một tiến trình riêng biệt, giúp tách biệt việc phân tích kiểu khỏi luồng giao diện người dùng (UI thread) và bổ sung cơ chế lưu trữ đệm (caching) thông minh hơn, chỉ kiểm tra lại các tệp đã thay đổi để mang lại tốc độ build lũy tiến nhanh hơn.

JavaScript · 2 min read

Chế độ Vapor của Vue 3.6 loại bỏ Virtual DOM, tăng cường hiệu suất trò chơi

Chế độ Vapor sắp ra mắt của Vue 3.6 biên dịch các single-file component thành các lệnh gọi DOM trực tiếp, loại bỏ bước so sánh (diff) virtual-DOM. Trong các trò chơi benchmark có tần suất vẽ lại hàng chục lần mỗi giây, thay đổi này giúp giảm thời gian render và thu nhỏ kích thước bundle, dù các giao diện người dùng có tần suất thấp sẽ thấy ít sự cải thiện.

JavaScript · 4 min read

Claude chính thức phát hành bốn công cụ tác nhân (GA), loại bỏ các tiêu đề bản Beta dành cho doanh nghiệp

Khi các tiêu đề yêu cầu dành riêng cho bản beta được loại bỏ, các doanh nghiệp cuối cùng đã có thể vượt qua các rào cản về pháp lý và bảo mật. Chế độ xử lý hàng loạt mới cho công cụ sử dụng máy tính cũng hứa hẹn giảm độ trễ và mức tiêu thụ token, dù mức tiết kiệm thực tế vẫn cần được xác minh thêm.

JavaScript · 3 min read

Next.js 16.3 giúp Turbopack ổn định hơn, giảm thời gian build từ 2-5 lần cho các ứng dụng quy mô trung bình

Bản phát hành này cũng mang đến tính năng Partial Prerendering sẵn sàng cho môi trường production giúp giảm 40-60% thời gian tương tác (Time to Interactive), hỗ trợ TypeScript chặt chẽ hơn cho Server Actions và middleware dựa trên Rust, nhưng yêu cầu Node 20+ và có thể gây lỗi cho các plugin Webpack hiện có.

JavaScript · 3 min read