Chuyển tới nội dung chính

3 bài viết được gắn thẻ "JavaScript"

JavaScript và Node.js — hàm tiện ích, tài nguyên học và các vấn đề gặp khi chạy trong container.

Xem tất cả thẻ

ONNX Runtime chết trên Alpine: lỗi ld-linux-x86-64.so.2 và vì sao libc6-compat không cứu được

· 16 phút để đọc
Nguyễn Huỳnh Minh Tiến
Fullstack Developer @ Utop.io
Tóm tắt

onnxruntime-node phát hành binary dựng sẵn cho glibc, và libonnxruntime.so.1 khai báo DT_NEEDED trỏ thẳng vào ld-linux-x86-64.so.2 — chính là bộ nạp động của glibc. Alpine dùng musl, nơi file đó không tồn tại, nên dlopen hỏng ngay ở bước nạp thư viện. Cài libc6-compat hay gcompat không sửa được: chúng cấp file loader nên qua được lỗi thứ nhất, rồi chết ở lỗi thứ hai là __vsnprintf_chk: symbol not found. Cách xử lý thực tế là đổi base image sang node:22-bookworm-slim, trả thêm khoảng 89 MB image để đổi lấy một thứ chạy được.

21 giờ 30, tôi thêm Dockerfile cho ClubDay — một web app sự kiện có trò vẽ hình được chấm điểm bằng model ONNX chạy ngay trên máy chủ. Base image chọn theo phản xạ: node:22-alpine, vì nhẹ.

Chọn base image là bước đầu tiên của Docker và deployment, và cũng là bước dễ chọn sai nhất — như bên dưới.

Image build sạch. Container lên. docker ps xanh. Rồi đến lúc server nạp model thì mọi thứ đổ, với một dòng lỗi không nhắc gì tới ONNX:

Error loading shared library ld-linux-x86-64.so.2: No such file or directory
(needed by /app/node_modules/onnxruntime-node/bin/napi-v6/linux/x64/libonnxruntime.so.1)

21 giờ 44 tôi đổi một dòng trong Dockerfile và mọi thứ chạy. Nhưng mười bốn phút ở giữa đáng được viết ra, vì dòng lỗi đó nói về một file mà bạn chưa bao giờ cài, chưa bao giờ khai trong package.json, và trên máy dev thì nó vẫn luôn ở đó.

Những hàm JavaScript hữu ích

· 3 phút để đọc
Nguyễn Huỳnh Minh Tiến
Fullstack Developer @ Utop.io
Tóm tắt

Bài viết giới thiệu các hàm tiện ích JavaScript hữu ích được sử dụng trong các dự án thực tế, bao gồm các hàm xử lý object như GetValuesByKey, FlattenObject, FlattenObjectWithKey. Mỗi hàm được trình bày kèm code examples, test cases và use cases cụ thể. Các hàm này giúp developers xử lý dữ liệu phức tạp một cách hiệu quả và tái sử dụng code trong các dự án JavaScript/TypeScript.

Ngày nay, JavaScript là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới. Nó được sử dụng bởi nhiều công ty như Google, Facebook, Microsoft, v.v. để xây dựng các ứng dụng web. JavaScript là một ngôn ngữ rất mạnh mẽ có thể được sử dụng để xây dựng các ứng dụng web phức tạp. Nó cũng là một ngôn ngữ rất linh hoạt có thể được sử dụng để xây dựng các ứng dụng web đơn giản.

Trong bài viết này, tôi sẽ liệt kê một số hàm tiện ích JavaScript hữu ích nhất mà tôi đã sử dụng trong các dự án của mình.

Các trang web tốt nhất để học JavaScript

· 5 phút để đọc
Nguyễn Huỳnh Minh Tiến
Fullstack Developer @ Utop.io
Tóm tắt

Bài viết giới thiệu các trang web tốt nhất để học JavaScript, bao gồm MDN Web Docs (tài liệu chính thức), freeCodeCamp (khóa học miễn phí), JavaScript.info (hướng dẫn chi tiết), và nhiều nguồn học tập khác. Mỗi trang web được mô tả về nội dung, phương pháp học và lý do nên sử dụng, giúp người học JavaScript từ cơ bản đến nâng cao tìm được nguồn tài liệu phù hợp với trình độ và mục tiêu của mình.

Javascript là một ngôn ngữ lập trình web đa nền tảng, kịch bản, hướng đối tượng. Javascript được nhúng vào HTML để tạo ra các trang web động và tương tác. Nó có thể được sử dụng cho nhiều mục đích khác nhau, từ frontend cho đến backend, từ game cho đến ứng dụng web phức tạp.

Trong bài viết này, tôi sẽ giới thiệu với bạn một số trang web tốt nhất để học JavaScript. Tôi sẽ giới thiệu về các trang web này và cung cấp cho bạn một số lý do tại sao bạn nên sử dụng chúng để học JavaScript.