TopDev
Sort by
3 results
HIGHLIGHT COMPANY

COMPANY INFORMATION

job-imageBlue Dragon CommunicationsConnecting You to the Future
Thành phố Hồ Chí Minh, Thành phố Hồ Chí Minh, Thành phố Hồ Chí Minh 25-99
job-imageCông ty TNHH Điểm sáng công nghệ InvestideaBring ideas to life
Thành phố Hà Nội, Thành phố Hà Nội, Oversea 25-99
job-imageONE Tech Stop Vietnam Company LimitedAs ONE We Can
Thành phố Đà Nẵng 25-99

RELATED POSTS

Marketplace Illustration
PM2 là gì? Trình quản lý các ứng dụng viết bằng NodeJS

Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề Khi mới tiếp xúc với Node.js và cũng là lần đầu học cách sử dụng Linux, nodemon là một thư viện mà tôi thường hay sử dụng để phát triển ứng dụng, vì chỉ cần lưu mã thì ngay lập tức nó sẽ "nạp" lại mã mới mà không cần phải "kill" đi bật lại ứng dụng một cách thủ công nữa, tính năng này ngày nay còn được gọi là "hot reload". Sau bước phát triển là bước triển khai. Trong lúc thực hành chạy ứng dụng ở trên máy chủ, loay hoay mãi không biết làm sao để chạy được nó. Nếu dùng cách thông thường là gõ "node index.js" hoặc thậm chí dùng cả nodemon thì cứ mỗi khi thoát khỏi terminal, thoát khỏi máy chủ, thì ứng dụng cũng "bay màu" theo mất. Tôi hiểu rằng ứng dụng sẽ bị thoát nếu như khô [...]

Marketplace Illustration
Triển khai Saga Pattern trong microservices với NodeJS và Choreography-Based Saga

Bài viết được sự cho phép của tác giả Duy Phan Mình sẽ sử dụng lại ví dụ Booking Service Online trong phần trước đó Ở đây mình sẽ tạo ra các isolated service, đồng thời thiết kế để chúng giao tiếp với nhau thông qua một Message Queue. Ở đây mình chọn RabbitMQ làm Message Queue. 1. Triển khai BookingService // booking-service.ts import express from 'express' import amqp from 'amqplib' const app = express() const PORT = 3001 app.use(express.json()) let channel: amqp.Channel const paymentQueue = 'payment_queue' app.post('/booking', async (req, res) => { const { userId, eventId, numberOfSeats } = req.body // Pre-step 1: Validate booking request // Pre-step 2: Save booking request to application database const booking = { userId, eventId, numberOfSeats, bookingReservedSuccessfully: true, } /** * Step 1: Send Booking Request to PaymentService */ if (booking.bookingReservedSuccessfully) { await sendMessageToQueue(paymentQueue, { booking }) } res.json({ message: 'Booking request sent successfully' }) }) async function connectQueue(queue: string) { const connection = await amqp.connect('amqp://localhost') channel = await connection.createChannel() await channel.assertQueue(queue) } async function sendMessageToQueue(queue: string, message: unknown) { await channel.sendToQueue(queue, Buffer.from(JSON.stringify(message))) } app.listen(PORT, async () => { console.log(`BookingService is running on http://localhost:${PORT}`) await connectQueue(paymentQueue) }) BookingService xử lý các yêu cầu HTTP POST để tạo booking mới. BookingService cố gắng đặt trước một chỗ và nếu thành công, nó sẽ gửi mộ [...]

Marketplace Illustration
Top 10 framework NodeJS tốt nhất cho developer 2024

Node.js là một công cụ không thể thiếu đối với lập trình viên nhờ khả năng xử lý bất đồng bộ mạnh mẽ và hiệu suất cao. Tuy nhiên, để tối ưu hóa quá trình phát triển và xây dựng các ứng dụng mạnh mẽ, việc lựa chọn framework phù hợp là vô cùng quan trọng. Bài viết này sẽ giới thiệu và phân tích top 10 framework NodeJS đang được ưa chuộng nhất, giúp các lập trình viên có cái nhìn tổng quan và lựa chọn công cụ phù hợp nhất cho dự án của mình. Vì sao framework NodeJS được nhiều người lựa chọn? Framework Nodejs được nhiều lập trình viên lựa chọn nhờ hiệu suất cao và khả năng mở rộng tuyệt vời. Sử dụng mô hình bất đồng bộ và event-driven architecture, Node.js tối ưu hóa việc xử lý nhiều yêu cầu cùng lúc, giúp tăng cường hiệu năng. Một lợi thế lớn khác là Node. [...]

Marketplace Illustration
Khi nào nên sử dụng cluster trong Node.js – đa luồng trong Node.js

Bài viết được sự cho phép của tác giả Sơn Dương Từ trước tới nay, các bạn được học về Node.js đều được bảo là Node.js chỉ xử lý đơn luồng. Tức là tại một thời điểm, chỉ có một Thread được thực hiện. Nói đơn giản cho dễ hiểu: bạn có CPU 8 nhân, 16 threads. Giờ bạn muốn duyệt một 1 triệu records để tìm phần tử lớn nhất. Với node.js, sẽ chỉ có 1 thread của CPU là thực hiện công việc duyệt tìm vì mặc định Node.js là single-thread. 1 thread chạy cắm đầu, 7 threads kia ngồi cười khúc khích. Nhưng với Java, công việc được chia đều ra cho các threads, nên tốc độ sẽ xử lý trong bài toán ví dụ này sẽ nhanh hơn. Đến đây, mình tin là bạn sẽ bật ra thắc mắc: Vậy không có cách nào để Node.js thực hiện đa luồng à? Thế mạnh của Node.js là cơ chế none-blocking I/O, giúp ứng dụng có tốc độ rất nhanh. Tuy nhiê [...]

Marketplace Illustration
Logging ứng dụng viết bằng node.js qua 3 cấp độ

Vấn đề Là một developer chúng ta biết mỗi một đoạn mã được thêm vào thì lại tăng nguy cơ sinh ra lỗi. Có khi mất cả tháng làm một tính năng mới chạy ngon lành trên môi trường development thế nhưng khi lên môi trường production thì lại lỗi!? Những lúc như thế thay vì vò đầu bứt tai đoán xem mình đã làm gì sai thì hãy nhanh chóng vào xem log của hệ thống. Log có thể là của máy chủ, của công cụ Devops hay chính là những dòng log được thêm trong mã. Nói như thế để chúng ta hình dung ra được tầm quan trọng của log, nếu không có log chúng ta sẽ chẳng biết điều gì đang xảy ra nếu chẳng may gặp sự cố. Mà log không phải thích là log đâu, có phải log càng nhiều càng tốt? Log phải có hệ thống, có tổ chức và mang lại một giá trị tương xứng nào đó. Bài viết ngày hô [...]

Marketplace Illustration
Tự học Node.js thì bắt đầu từ đâu? Học Node.js có khó không?

Vấn đề Node.js hiện nay đang là một nền tảng thực sự hấp dẫn chính vì thế ngày càng có nhiều người theo học nó. Thống kê của Stackoverflow cho thấy năm 2021 Javascript (JS) dẫn đầu trong bảng xếp hạng công nghệ phổ biến trên nền tảng của họ và Node.js đứng ở vị trí thứ 6 xếp sau Java. Điều này cho thấy sức nóng của Javascript cũng như Node.js chưa hề dừng lại. Nhiều công ty tuyển dụng Node, nhiều sản phẩm hay công cụ bằng Node ra đời cũng cho thấy mức độ quan tâm rất lớn của các nhà tuyển dụng đối với nó. Một công nghệ khi càng phổ biến, cộng đồng càng lớn thì độ phủ sóng cũng như mức độ tin cậy sẽ càng cao. Nếu là một lập trình viên FE và làm việc với JS là một lợi thế rất lớn để chuyển qua vị trí lập trình Node. Bởi suy cho cùng Node là môi [...]

Marketplace Illustration
Tìm hiểu Buffers trong Node.js, cách sử dụng Buffers

Bài viết được sự cho phép của tác giả Tống Xuân Hoài Buffer là gì? Buffer là một vùng bộ nhớ, nó đại diện cho một đoạn bộ nhớ có kích thước cố định (không thể thay đổi) được phân bổ ở bên ngoài V8 JavaScript Engine. Bạn có thể coi Buffer giống như một mảng các số nguyên, mỗi số đại diện cho một byte dữ liệu. Nó được triển khai bởi class Buffer. Tại sao chúng ta cần Buffer? Buffer được giới thiệu để giúp các nhà phát triển xử lý dữ liệu nhị phân, trong một hệ sinh thái mà theo truyền thống chỉ xử lý các chuỗi thay vì xử lý nhị phân. Buffer được liên kết sâu sắc với streams. Khi một quá trình streams nhận dữ liệu nhanh hơn mức nó có thể xử lý, nó sẽ đưa dữ liệu vào buffer. Hình dung đơn giản về buffer là khi bạn đang xem video trên YouTube và sẽ có 2 đường màu đỏ và màu trắng. Khi đường màu trắng dài hơn tức là [...]

Marketplace Illustration
So sánh Golang và NodeJS: Nên chọn nền tảng nào cho dự án của bạn?

Hiện nay anh em Dev có rất nhiều sự lựa chọn ngôn ngữ lập trình để phát triển Web, 2 trong số đó là NodeJS và Golang. Cùng được giới thiệu vào năm 2009, một thời gian dài trước đây, NodeJS luôn tỏ ra vượt trội về thị phần hơn so với Golang. Tuy nhiên những năm gần đây, với sự thay đổi về công nghệ thì Golang đang cho thấy nhiều ưu điểm hơn nhất là về hiệu năng. Bài viết này chúng ta cùng nhau so sánh Golang và NodeJS xem đâu sẽ là lựa chọn của bạn cho dự án Web sắp tới nhé. Golang là gì? Golang, còn được gọi là Go, là ngôn ngữ lập trình mã nguồn mở được phát triển bởi Google. Go là một ngôn ngữ strongy typed (kiểu mạnh) và có cú pháp giống với ngôn ngữ lập trình C, tập trung vào sự đơn giản và dễ đọc. Được thiết kế với sự đơn giản, hiệu quả và đáng tin cậy giúp nó trở thành [...]

Marketplace Illustration
Child process trong Node.js là gì? - Khi nào cần sử dụng fork và spawn?

Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề Có một lời khuyên mà chắc hẳn ai làm việc với Node.js đều phải thuộc lòng đó là "đừng bao giờ chặn vòng lặp sự kiện". Chặn ở đây có nghĩa là không để cho Event Loop được thực thi chức năng vốn có của nó. Node.js chỉ có một luồng để xử lý mã JavaScript, nếu một công việc chiếm tương đối thời gian để xử lý thì nó sẽ gây ra một cuộc tắc nghẽn nghiêm trọng trong luồng chính. Hay nói cách khác, tất cả cuộc gọi API có thể sẽ không bao giờ được phản hồi cho đến khi công việc đó xong. Biết được vấn đề, tất nhiên Node.js phải cung cấp cho chúng ta một số cách để giải quyết. Thay vì gọi những hàm đồng bộ thì hãy chuyển qua gọi hàm bất đồng bộ, ví dụ như cùng là đọc file nhưng readFile sẽ được khuyên dùng hơn readFileSync  [...]

Marketplace Illustration
Kỹ thuật debug ứng dụng viết bằng Node.js hiệu quả

Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề Debug là một trong những kỹ năng không thể thiếu của một developer. Trong bất kỳ vị trí nào, ngôn ngữ gì… mà có liên quan đến viết mã thì không thể không biết debug. Bởi mỗi dòng code được thêm vào, nguy cơ tạo ra lỗi càng tăng. Debug giúp cho chúng ta tiến hành tìm ra nguyên nhân của lỗi, hay chí ít là kiểm tra xem liệu chương trình có đang hoạt động đúng như ta mong muốn. Với mỗi nền tảng hay ngôn ngữ có các cách debug khác nhau, tùy thuộc vào khả năng chăm chút của nhà phát triển mà nó đi từ dễ dàng đến khó. Trong Node, có nhiều cách để developer tiến hành gỡ lỗi. Một trong những cách đó là "console.log every where". Vậy ngoài console.log ra thì còn cách nào debug ứng dụng viết bằng Javascript/Node.js nữa hay không? Console. [...]

Marketplace Illustration
Một số cách để viết mã dễ đọc hơn trong JavaScript/Node.js

Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề Điều mà tôi tin rằng rất nhiều lập trình viên mong muốn tiến tới là việc viết mã sao cho dễ đọc dễ hiểu. Bằng chứng là có rất nhiều Design Pattern được đưa ra để hướng dẫn mọi người giải quyết vấn đề theo cách mà nhiều người vẫn làm. Nhưng đó chưa phải là tất cả, việc viết mã hoàn chỉnh thì lại phụ thuộc vào từng lập trình viên. Chúng ta có nhiều công cụ hỗ trợ soạn thảo mã nguồn theo nhiều cách. Như định dạng, màu sắc, giao diện hiển thị, công cụ hỗ trợ gỡ lỗi… thoải mái lựa chọn theo sở thích hoặc cùng làm việc nhóm. Bên cạnh đó, vẫn có những quy tắc được đặt ra để các thành viên tham gia phát triển phải tuân theo. Tạm bỏ qua vấn đề định dạng (format), ngày hôm nay [...]

Marketplace Illustration
NodeJS Developer là gì? Trở thành lập trình viên NodeJS có khó không?

NodeJS là một nền tảng được viết bằng JavaScript đang phổ biến hiện nay, vì thế vị trí lập trình viên NodeJS đang có nhu cầu tuyển dụng cao cùng mức đãi ngộ hấp dẫn mà nhiều công ty đang tìm kiếm. Bài viết hôm nay chúng ta cùng nhau tìm hiểu NodeJS Developer là gì và cần học gì để trở thành một lập trình viên NodeJS nhé. NodeJS là gì? Trước tiên hãy cùng tìm hiểu về NodeJS và lý do tại sao nó đang được ưa chuộng sử dụng hiện nay nhé. NodeJS là một nền tảng (platform) được xây dựng dựa trên V8 JavaScript Engine (một engine mã nguồn mở phát triển bởi Google). Lợi thế của NodeJS là nó có thể hoạt động trên nhiều nền tảng khác nhau từ Windows, Linux hay OS X; sử dụng JavaScript là một ngôn ngữ lập trình dễ học và có thể viết code được cho cả phía client và server.  NodeJS sử dụng luồng đơn (Single Thread) hay non-blocking I/O để thực [...]

Marketplace Illustration
Corepack là gì và tác dụng của nó trong Node.js

Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề npm là trình quản lý gói được tích hợp vào bộ cài Node.js đã từ rất lâu. Hầu hết chúng ta đều sử dụng npm để tải về các gói có trên npm registry, hoặc mỗi khi cần cài đặt lại toàn bộ các gói phụ thuộc sử dụng trong dự án. npm có những cơ chế bảo mật cao như quyền truy cập vào các gói riêng tư (private), cơ chế xác thực và xác minh hai lớp… Tiện lợi là thế nhưng npm cũng có một số hạn chế như tốc độ cài đặt gói chậm, tạo ra node_modules có dung lượng tương đương với hố đen vũ trụ… kèm theo một bộ cấu hình phức tạp. Chính vì thế nhiều trình quản lý gói khác ra đời nhằm khắc phục những điểm yếu đó, đơn cử như Yarn hoặc pnpm. Trong khi yarn nổi tiếng với tốc độ cài đặt [...]

Marketplace Illustration
5 điều gây rò rỉ bộ nhớ (memory leak) trong Node.js và cách khắc phục

Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề Rò rỉ bộ nhớ là hiện tượng ứng dụng không thể giải phóng bộ nhớ không cần dùng đến nữa trong quá trình hoạt động. Có thể ban đầu ứng dụng chạy rất mượt mà nhưng sau một thời gian lại trở nên chậm chạm, thậm chí giật lác khiến chúng bị "crash" và thứ bạn nhìn thấy lúc này rất có thể là thông báo JavaScript heap out of memory ở đâu đó trong console. V8 trong Node.js được cung cấp mặc định 4GB cho dữ liệu cấp phát động hay còn gọi là Heap. Giới hạn này có thể tăng thêm nhưng đổi lại là hiệu năng của ứng dụng sẽ giảm sút. Các kiểu dữ liệu tham chiếu như Object, Function, Array sẽ được lưu trữ trong Heap. Chính vì thế nếu như quá nhiều đối tượng kể trên được cấp phát trong thời gian chạy (runtime) của ứng dụng sẽ gây ra [...]

Marketplace Illustration
Điều gì khiến Bun.sh trở nên đáng gờm với Node.js

Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề Node.js nổi tiếng với vai trò là môi trường chạy mã Javascript trên máy chủ. Nhắc đến Node không thể không nhắc đến V8 Engine cho khả năng xử lý JS mạnh mẽ, cộng với sức mạnh của C++ vốn là ngôn ngữ tạo nên nó. Node.js được cung cấp miễn phí, dễ dàng cài đặt và triển khai. Cộng đồng dùng Node rất đông cũng góp phần tạo nên sự nổi tiếng và tin tưởng. Tuy nhiên gần đây một cái tên khác nổi lên như một hiện tượng "đe doạ" đến Node.js chính là Bun.sh. Vậy thì Bun.sh là gì và tại sao lại khiến Node.js phải dè chừng thì mời các bạn hãy đọc tiếp bài viết dưới đây. Bun.sh là gì? Trước tiên phải nói rằng Bun.sh cũng chính là môi trường chạy mã Javascript tương tự như Node.js. [...]