Vietnam

    Nodejs.vn

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Groups
    • Search
    1. Home
    2. Vũ
    • Profile
    • Following 0
    • Followers 24
    • Topics 10
    • Posts 301
    • Best 68
    • Controversial 0
    • Groups 3

    Vũ

    @Vũ

    Global Moderator

    Giảng viên Online trên Edumall.vn
    Profile: about.me/vunb
    GitHub: github.com/vunb
    Twitter: twitter.com/nhubaovu
    Email: [email protected]

    Các khóa học

    • Trọn bộ kiến thức về AngularJS http://bit.ly/khoahoc_angularJS
    • Trọn bộ kiến thức về NodeJS http://bit.ly/khoahoc_nodejs

    Open source

    • Kites.js - Template-based Web Application Framework
    • Vntk - Vietnamese NLP Toolkit for Node
    • Rivebot - Rivebot (CE) is an open source with built-in chatbot management, customer ordering, customer care, and more.
    • Roomrtc - Enables quick development of webRTC
    • Roomrtc CE - RoomRTC (CE) is an open source end-to-end software development platform with built-in video conferencing, live streaming, desktop sharing, reports and presenting, and more.
    101
    Reputation
    2529
    Profile views
    301
    Posts
    24
    Followers
    0
    Following
    Joined Last Online
    Website about.me/vunb Location Hanoi

    Vũ Unfollow Follow
    Global Moderator Sailor Angel

    Best posts made by Vũ

    • RE: Vấn đề về event loop

      Mình xin bổ sung thêm 1 chút. Về mã nguồn CORE của nodejs thì bao gồm 2 thành phần chính javascript và C++.

      • Code C++ bao gồm các đoạn mã xử lý native hoặc wrap tới các thư viện bên ngoài và rất quan trọng như V8, libuv, openssl, zlib. Đây là các thành phần tạo nên kiến trúc của NodeJS. Các bạn xem hình bên dưới.
      • Code javascript bao gồm các tiện ích thuần js như util.js hoặc là các đoạn mã binding tới các mã nguồn C++ mà sẽ được thực thi ở bên trong V8 hoặc libuv khi chạy 1 ứng dụng node.

      Về kiến trúc và mô hình hoạt động của nodejs thì nó tuân theo cơ chế Non-blocking và kiến trúc event-loop. Các bạn có thể xem hình vẽ mô hình này để dễ hình dung hơn. Nhưng cơ bản kiến trúc này sẽ được thực thi qua các bước sau.

      1. Đoạn mã nguồn javascript bạn viết ra sẽ được thực thi tuần tự trong V8. Nếu có lời gọi không đồng bộ thì thực hiện bước 2, khác thì kết thúc.
      2. Lời gọi được xử lý bên trong OS hoặc thực thi các Web API. Lời gọi này được quản lý bởi libuv, mỗi 1 yêu cầu sẽ được đưa vào queue và thực thi lần lượt bên trong Threadpool khi pool này rảnh. Size mặc định libuv qui định là 4, các bạn có thể tham khảo thêm ở đây. Kết thúc bước này trả về kết quả đẩy vào 1 callback queue, và cứ nằm ở đó rồi chuyển sang bước 3.
      3. Event loop luôn kiểm tra 2 nơi là call stack và callback queue. Nếu callstack trống thì kiểm tra callback queue, khác rỗng thì đưa vào callstack xử lý.
      4. V8 xử lý (tuần tự) và kết thúc chương trình

      Mời các bác bổ sung thêm!

      Concurrency model and Event Loop

      posted in Hỏi Đáp
      Vũ
      Vũ
    • RE: fs.writeFile dùng utf-8 encoding nhưng không được

      Có 2 nguyên nhân có thể dẫn đến việc không hiển thị được định dạng UTF-8

      1. Bản thân chuỗi csv_content không phải là utf-8, trường hợp này bạn hãy kiểm tra content nguồn lấy về
      2. csv_content đã là utf-8 nhưng trình đọc không hiển thị đúng, trường hợp này bạn có thể kiểm tra bằng cách mở file kết quả với Notepad++

      Nếu bạn rơi vào trường hợp 2 có thể xử lý bằng cách cộng thêm kí tự BOM \uFEFF vào đầu chuỗi csv_content. Cụ thể như thế này:

      var fs = require("fs");
      
      fs.writeFile("test.csv", "\uFEFF" + csv_content, function cb(err) {
          console.log("ok");
      });
      

      Hi vọng đúng trường hợp của bạn 😃

      posted in Hỏi Đáp
      Vũ
      Vũ
    • RE: Get JWT token expiry date

      Giá trị exp của jwt trả về con số dưới dạng seconds, mà thằng moment nhận input là miliseconds. Nên bạn cần nhân thêm 1000 nữa để đổi về seconds. Tương tự khi khởi tạo 1 đối tượng new Date. Output của bạn nó sẽ ra như thế này.

      console.log(new Date(1468991677 * 1000))
      // Wed Jul 20 2016 12:14:37 GMT+0700 (SE Asia Standard Time)
      
      posted in Hỏi Đáp
      Vũ
      Vũ
    • Chia sẻ khóa học Angular 2 miễn phí trên Udemy

      Chào các bạn,

      Chia sẻ với các bạn mã coupon miễn phí khóa học Angular 2 trên Udemy, các bạn nhanh tay đăng ký không hết hạn nhé:

      Link: https://www.udemy.com/learn-angular-2-from-beginner-to-advanced/?couponCode=JERRYBANFIELD

      Khóa học nói về Angular 2 có thể hơi cũ so với phiên bản hiện tại, nhưng nó sẽ hướng dẫn cho các bạn mới tiếp cận một cách giải thích chi tiết và xây dựng khung ứng dụng hoàn chỉnh. Sau đó, bạn hoàn toàn có thể nâng cấp lên phiên bản 4 dễ dàng.

      Hi vọng khóa học sẽ giúp ích được cho một vài bạn !

      posted in AngularJS
      Vũ
      Vũ
    • RE: Search tiếng Việt - mongoose

      Bạn có thể sử dụng kỹ thuật tìm kiếm full-text search với lệnh $text. Ví dụ như này

      0_1482346470731_Full-text search.PNG

      Bạn chú ý tạo text index trước nhé!

      Cú pháp thực hiện với mongoose.

      MyModel.find({$text: {$search: searchString}})
             .skip(20)
             .limit(10)
             .exec(function(err, docs) { ... });
      

      Tham khảo: http://stackoverflow.com/a/28775709/1896897
      Hướng dẫn: https://docs.mongodb.com/v3.2/reference/operator/query/text/

      posted in Hỏi Đáp
      Vũ
      Vũ
    • RE: Dành cho các bạn muốn tìm hiểu về nodejs chạy trên nền tảng Php

      Xin chào,

      Mình cho rằng @Zono4ever là người mới tiếp cận nodejs và đang trong giai đoạn khám phá, tìm hiểu. Đây có thể là những ý tưởng mới và sáng tạo. Có thể sẽ lạ lẫm và ngớ ngẩn với một số bạn, những người đã quá quen với những cái bình thường và tin vào bản chất nó mãi như thế.

      Các bạn @tientoantai @domanhdat @Lê-Mạnh-Hùng @npm có thể là những tay dev cứng và chuyên nghiệp. Nhưng mình cảm thấy có gì không đúng ở đây ? Các bạn không hề gỡ rối hoặc trao đổi 1 cách tích cực để phản biện với chủ bài post. Điều này có thể dẫn đến những hậu quả tiêu cực, chẳng hạn như: Các thành viên khác hùa theo, thành viên mới không dám post bài vì biết chắc sẽ bị ăn gạch đá, post 1 lần rồi thôi.

      Vậy mong tất cả các bạn trong diễn đàn này có những trao đổi thiện cảm với nhau, phản biện tích cực để giải quyết được vấn đề của người post bài.

      Rất xin lỗi các bạn mà mình tag ở trên nếu những góp ý này của mình không được thiện cảm. Cũng rất mong các bạn ủng hộ quan điểm của mình và ủng hộ diễn đàn nodejs.vn để forum sẽ được tốt hơn. Ngày một đi lên !

      Cảm ơn các bạn đã đóng góp cho cộng đồng trong suốt thời gian qua.
      Trân trọng cảm ơn !

      posted in Chia sẻ
      Vũ
      Vũ
    • RE: [hỏi] Làm sao để insert nhiều thẻ tags vào database trong nodejs + mysql + express

      @Xu-Xu said in [hỏi] Làm sao để insert nhiều thẻ tags vào database trong nodejs + mysql + express:

      Bạn cần đọc hướng dẫn, xem video hoặc có người chỉ cho nhé. Chứ bảo chưa biết làm, hoặc cách thức như nào thì rất khó để hỗ trợ bạn.

      Như thiết kế của bạn sử dụng mysql, như trên chưa được tối ưu lắm, bạn đang thiết kế Post quan hệ 1-N với Tag. Với thiết kế như này chỉ việc dùng cậu lệnh insert đơn giản là xong.

      INSERT INTO table_name (column1, column2, column3, ...)
      VALUES (value1, value2, value3, ...);
      

      Khi làm việc với NodeJS

      var mysql = require('mysql');
      
      var con = mysql.createConnection({
        host: "localhost",
        user: "yourusername",
        password: "yourpassword",
        database: "mydb"
      });
      
      con.connect(function(err) {
        if (err) throw err;
        console.log("Connected!");
        var sql = "INSERT INTO customers (name, address) VALUES ?";
        var values = [
          ['John', 'Highway 71'],
          ['Peter', 'Lowstreet 4'],
          ['Amy', 'Apple st 652'],
          ['Hannah', 'Mountain 21'],
          ['Michael', 'Valley 345'],
          ['Sandy', 'Ocean blvd 2'],
          ['Betty', 'Green Grass 1'],
          ['Richard', 'Sky st 331'],
          ['Susan', 'One way 98'],
          ['Vicky', 'Yellow Garden 2'],
          ['Ben', 'Park Lane 38'],
          ['William', 'Central st 954'],
          ['Chuck', 'Main Road 989'],
          ['Viola', 'Sideway 1633']
        ];
        con.query(sql, [values], function (err, result) {
          if (err) throw err;
          console.log("Number of records inserted: " + result.affectedRows);
        });
      });
      

      Bạn tham khảo trước nhé:

      • https://www.w3schools.com/sql/sql_insert.asp
      • https://www.w3schools.com/nodejs/nodejs_mysql.asp
      posted in Hỏi Đáp
      Vũ
      Vũ
    • RE: Code chạy tuần tự các công việc trong mảng

      @Duc-Hoang Cách của bạn hay quá!

      Nhưng hình như thừa lệnh return trong ví dụ mẫu.

      // sử dụng reduce để tạo promise chain.
      var tasks = arrMovie.reduce((currentPromise, currentMovie) => currentPromise.then(() => cutVideo(currentMovie)), Promise.resolve());
      

      Nếu duỗi ra thì nó như này:

      arrMovie.reduce((currentPromise, currentMovie) => {
          return currentPromise.then(() => {
              return cutVideo(currentMovie)
          })
      }, Promise.resolve())
      
      posted in Hỏi Đáp
      Vũ
      Vũ
    • RE: Sql và foreach

      @Tú-Đc Ý tưởng có thể làm như thế này:

      var json = [1, 2, 3];
      var query = "SELECT * FROM user_info WHERE 1 = 2";
      var cond = json.reduce((con, e) => con + ` OR id = ${e}`, '');
      
      var fullQuery = query + cond;
      console.log(fullQuery);
      

      Demo: https://jsfiddle.net/vunb/xuj9x407/3/

      Câu hỏi là sao bạn không dùng IN mà dùng OR ?? Nếu chuyển sang dùng IN thì bạn có thể làm tương tự như trên nhé.

      posted in Hỏi Đáp
      Vũ
      Vũ
    • RE: Nodejs chính xác là cái gì vậy....?

      Bạn có thể hiểu Node.js là 1 nền tảng hay 1 môi trường được sử dụng để xây dựng các ứng dụng web, ứng dụng mạng, công cụ, thư viện, ...

      Nền tảng ở đây có nghĩa là tập hợp các công cụ, các framework, các thư viện, các khả năng và sử dụng ngôn ngữ lập trình gì để hỗ trợ bạn xây dựng (build) ứng dụng của bạn. Có thể coi nền tảng đồng nghĩa với môi trường phát triển và triển khai ứng dụng.

      Theo mình bạn chỉ tập trung vào các key concepts mà mình đã bôi đậm kia, nó giống câu truyện thầy bói xem voi thôi: Người đoán nó là cái chổi sể, người nói nó là cái cột đình, ... Nhưng nếu mô tả nó thành 1 câu thì bạn sẽ thấy ngay, nó đúng là con voi :))

      Upvote cho câu hỏi của bạn. Rất hay!

      posted in Hỏi Đáp
      Vũ
      Vũ

    Latest posts made by Vũ

    • RE: [Hỏi Ngu] Mình muốn làm siêu nhân Node.JS? Mình phải làm như thế nào?

      @NHI-Nguyen-Thi-Yen Spam? Bạn nên tạo một bài viết mới để giới thiệu về blog của mình thì tốt hơn nhé. Trường hợp, bài viết không có giá trị hoặc spam, mình sẽ xóa và block tài khoản.

      Cảm ơn bạn đã tham giá diễn đàn!

      posted in Node.JS
      Vũ
      Vũ
    • RE: Nhập môn lập trình căn bản về Javascript từ căn bản đến nâng cao (Phần II)

      @Dương-Nguyễn Đây là link tham chiếu nhanh cách sử dụng Markdown: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet

      posted in Tutorials
      Vũ
      Vũ
    • RE: Nhập môn lập trình căn bản về Javascript từ căn bản đến nâng cao (Phần II)

      @Dương-Nguyễn Đây là phần 2 chứ em nhỉ? 😃 có thêm ví dụ nữa thì tốt quá.

      Mà em học thêm cú pháp Markdown để viết bài trông đẹp hơn nhé.
      Ví dụ 1 đoạn code như này:

      /**
       * Autodiscover mode
       */
      require('@kites/core')
        .engine({
          loadConfig: true
        })
        .init()
        .then(app => {
          app.logger.info('Kites application started!');
        })
        .catch(err => {
          console.error('Kites start app error: ', err);
        });
      

      Trông sẽ đẹp hơn rất nhiều!

      posted in Tutorials
      Vũ
      Vũ
    • RE: Làm sao deploy Node.js trên Windows

      @Nguyễn-Loan Đây có bản dịch tiếng Việt, em xem và làm cẩn thận nhé

      • https://quantrimang.com/cai-dat-va-chay-nginx-server-tren-windows-10-166722
      • https://online119.blogspot.com/2018/01/huong-dan-cai-at-nginx-tren-windows.html
      posted in Hỏi Đáp
      Vũ
      Vũ
    • RE: Làm sao deploy Node.js trên Windows

      @Nguyễn-Loan Nên dùng nginx cho đơn giản nhé em.

      posted in Hỏi Đáp
      Vũ
      Vũ
    • RE: Làm sao deploy Node.js trên Windows

      @Nguyễn-Loan Nếu là vps thì đơn giản, còn hosting thì bạn phải tham khảo hướng dẫn của nhà cung cấp. Trường hợp không biết thì bạn phải nhờ họ hỗ trợ nhé

      posted in Hỏi Đáp
      Vũ
      Vũ
    • RE: source form editor, ai có mẫu như này hay tương tự không ạ

      @Trung-Lê said in source form editor, ai có mẫu như này hay tương tự không ạ:

      ai có source form cho edit như hình hay tương tự không ạ, cho em xin source học hỏi

      Bạn tìm hiểu tinyMCE xem nhé

      • Homepage: https://github.com/tinymce/tinymce
      • Document: https://www.tiny.cloud/docs/quick-start/
      posted in Hỏi Đáp
      Vũ
      Vũ
    • RE: Query DB đồng bộ với knexjs?

      @Duy-Ta bạn sử dụng Await/Async là được.

      Ví dụ:

      async insertDb() {
        for (var i=1; i<=1000; i++) {
          await knex('test').insert({number: i});
        }
      }
      
      // execute
      insertDb();
      
      posted in Hỏi Đáp
      Vũ
      Vũ
    • RE: Hỏi về cách implement Dependency Injection cho 1 ứng dụng express typescript

      @Tuấn-Anh119 bạn có thể sử dụng thư viện nổi tiếng InversifyJS.

      posted in ExpressJS/Conect.IO
      Vũ
      Vũ
    • Node 8 kết thúc giai đoạn bảo trì, sẽ không được cập nhật bản vá lỗi vào ngày 31/12/2019

      Tới đây, Node 8 sẽ kết thúc giai đoạn bảo trì (Maintenance) vào 31/12/2019, điều này có nghĩa là không có cập nhật bất cứ gì nữa cho phiên bản này, kể cả các bản vá liên quan tới bảo mật.

      Nếu bạn đang có ý định sử dụng node thì hãy cài luôn phiên bản 10 LTS hoặc 12 nhé.

      ed9fe05c-8210-428f-87c7-2f5f0d4cee6f-image.png

      Ngoài ra, một số bước sau đây cho các bạn muốn nâng cấp cho hệ thống production của mình theo checklist cơ bản này, để không xảy ra gián đoạn hay sự cố gì:

      • Code base có kết quả test coverage mức độ tốt.
      • Nâng cấp phiên bản Node tại môi trường local/development.
      • Chạy các lệnh tests
      • Đảm bảo các testcase, toàn bộ pass
      • Nếu kết quả test pass, nâng cấp Node version trên môi trường staging
      • Tất cả mọi thứ suôn sẻ, thì nâng cấp Node version trên môi trường production.

      Tham khảo:

      • Ref: https://blog.risingstack.com/update-nodejs-8-end-of-life-no-support
      posted in Hỏi Đáp
      Vũ
      Vũ