Mình nghĩ là về chỗ setTimeOut bạn nên giải thích thêm về cơ chế event loop, vì nếu lỡ như có bạn nào không biết về event loop thì sẽ có thể dẫn đến hiểu nhầm hoặc đơn giản là sử dụng nhưng không biết vì sao hàm setTimeOut lại chạy sau
@NPThao À à hiểu rồi. 🤣 khác đấy...
Khi e lưu đoạn code vào một file và chạy file đó, có một sự khác biệt trong cách Node.js xử lý Event Loop so với việc thực thi trực tiếp trên terminal.
Khi e chạy file JavaScript thông qua Node.js, quá trình xử lý sẽ diễn ra theo từng bước như sau:
Đọc và biên dịch toàn bộ nội dung của file JavaScript.
Thực thi các dòng code trong file JavaScript theo thứ tự từ trên xuống dưới.
Vì quá trình đọc và biên dịch file xảy ra trước khi bắt đầu thực thi, Node.js sẽ biết trước cách các hàm và các hàm callback được gọi trong đoạn code và sẽ xác định được thứ tự chính xác của chúng. Do đó, trong trường hợp này, thứ tự thực thi của các hàm setTimeout, setImmediate và process.nextTick sẽ được đảm bảo theo cách e định nghĩa trong đoạn code.
Tuy nhiên, khi thực thi trực tiếp trên terminal, Node.js không biết trước toàn bộ đoạn code và các hàm callback được gọi. Thay vào đó, nó thực thi lệnh trong đoạn code theo từng bước và quyết định thứ tự thực thi dựa trên các điều kiện tại thời điểm đó. Điều này dẫn đến việc thứ tự thực thi của các hàm setTimeout, setImmediate và process.nextTick không được đảm bảo trong trường hợp này.
Tóm lại, khi chạy file JavaScript thông qua Node.js, việc biên dịch trước đảm bảo Node.js có thông tin đầy đủ về các hàm và các hàm callback trong file, từ đó đảm bảo thứ tự thực thi của các hàm bất đồng bộ. Trong khi đó, khi thực thi trực tiếp trên terminal, Node.js chỉ thực thi dòng code một cách tuần tự và không biết trước toàn bộ các hàm và các hàm callback trong đoạn code, dẫn đến việc không đảm bảo thứ tự thực thi của các hàm bất đồng bộ.
chào bạn, rất vui khi nhận được câu hỏi của bạn. Đối với những site đã có dữ liệu sẵn rồi, nếu bạn không phải coder thì mình khuyên bạn nên sử dụng thêm 1 service trung gian giữa website và kho lưu trữ của bạn, điển hình là CDN. Đa phần các dịch vụ CDN cũng đã tích hợp sẵn tính năng sẵn tính năng chuyển đổi ảnh JPG/PNG sang WEBP giúp bạn luôn.
Cá nhân mình không thích cách viết của vuex, vừa dài dòng mà cũng không sạch đẹp hơn bao nhiêu. Hãy đổi sang pinia để thoát khỏi this của js. Ngoài ra, nếu dự án nhỏ mình cũng không cần dùng thư viện quản lý trạng thái, inject/provide là quá đủ
@Clarence161095 à em có test lại rồi, nếu em save code lại vào file và dùng lệnh node test.js thì thấy giống như trong bài, nhưng lúc đầu em mở terminal lên gõ node rồi paste code vào enter thì nó ra "immadiate" trước anh ạ, không biết tại sao có khác biệt này ạ
Tuy nhiên đấy là chỉ thử run thôi chức thực sự thì về bản chất nó là js nên node cũng ko ảnh hưởng. Node nó chỉ là runtime env thôi. Tuy nhiên đoạn code của bạn có phải giống như vậy không?
THẢO LUẬN
@Clarence161095 vâng, em cảm ơn anh ạ 😁😁😁
@cuongpm When I start test, the script will launch new chrome, not the chrome on local which include metamask.
How can I use Metamask which was already installed?
Cảm ơn bạn nhé 😅 mình sẽ sửa lại nó trong tương lại.
Làm sao để tải mô hình lên vậy bạn?
Tải mô hình lên bằng cách nào vậy ạ?
Mình nghĩ là về chỗ setTimeOut bạn nên giải thích thêm về cơ chế event loop, vì nếu lỡ như có bạn nào không biết về event loop thì sẽ có thể dẫn đến hiểu nhầm hoặc đơn giản là sử dụng nhưng không biết vì sao hàm setTimeOut lại chạy sau
Mình có thắc mắc nếu dùng graph có gây ra vấn đề bảo mật gì không ? Khi mà client có thể trọc thẳng vào db mà ko qua 1 tầng validate nào
@NPThao À à hiểu rồi. 🤣 khác đấy... Khi e lưu đoạn code vào một file và chạy file đó, có một sự khác biệt trong cách Node.js xử lý Event Loop so với việc thực thi trực tiếp trên terminal.
Khi e chạy file JavaScript thông qua Node.js, quá trình xử lý sẽ diễn ra theo từng bước như sau:
Đọc và biên dịch toàn bộ nội dung của file JavaScript.
Thực thi các dòng code trong file JavaScript theo thứ tự từ trên xuống dưới.
Vì quá trình đọc và biên dịch file xảy ra trước khi bắt đầu thực thi, Node.js sẽ biết trước cách các hàm và các hàm callback được gọi trong đoạn code và sẽ xác định được thứ tự chính xác của chúng. Do đó, trong trường hợp này, thứ tự thực thi của các hàm setTimeout, setImmediate và process.nextTick sẽ được đảm bảo theo cách e định nghĩa trong đoạn code.
Tuy nhiên, khi thực thi trực tiếp trên terminal, Node.js không biết trước toàn bộ đoạn code và các hàm callback được gọi. Thay vào đó, nó thực thi lệnh trong đoạn code theo từng bước và quyết định thứ tự thực thi dựa trên các điều kiện tại thời điểm đó. Điều này dẫn đến việc thứ tự thực thi của các hàm setTimeout, setImmediate và process.nextTick không được đảm bảo trong trường hợp này.
Tóm lại, khi chạy file JavaScript thông qua Node.js, việc biên dịch trước đảm bảo Node.js có thông tin đầy đủ về các hàm và các hàm callback trong file, từ đó đảm bảo thứ tự thực thi của các hàm bất đồng bộ. Trong khi đó, khi thực thi trực tiếp trên terminal, Node.js chỉ thực thi dòng code một cách tuần tự và không biết trước toàn bộ các hàm và các hàm callback trong đoạn code, dẫn đến việc không đảm bảo thứ tự thực thi của các hàm bất đồng bộ.
chào bạn, rất vui khi nhận được câu hỏi của bạn. Đối với những site đã có dữ liệu sẵn rồi, nếu bạn không phải coder thì mình khuyên bạn nên sử dụng thêm 1 service trung gian giữa website và kho lưu trữ của bạn, điển hình là CDN. Đa phần các dịch vụ CDN cũng đã tích hợp sẵn tính năng sẵn tính năng chuyển đổi ảnh JPG/PNG sang WEBP giúp bạn luôn.
Chào anh, cho em hỏi là khi mình áp dụng mô hình lasso regression mà cho ra R2 score âm thì có ý nghĩa là gì ạ?
Hình mất hết trơn. Upload loại hình lên server của viblo.asia đi bạn ơi
Cá nhân mình không thích cách viết của vuex, vừa dài dòng mà cũng không sạch đẹp hơn bao nhiêu. Hãy đổi sang pinia để thoát khỏi this của js. Ngoài ra, nếu dự án nhỏ mình cũng không cần dùng thư viện quản lý trạng thái, inject/provide là quá đủ
@Clarence161095 à em có test lại rồi, nếu em save code lại vào file và dùng lệnh
node test.jsthì thấy giống như trong bài, nhưng lúc đầu em mở terminal lên gõnoderồi paste code vào enter thì nó ra "immadiate" trước anh ạ, không biết tại sao có khác biệt này ạChắc ko phải vì node 18 đâu, mình mới run con tren con container node 18 thì thấy kết quả bt 😁
Tuy nhiên đấy là chỉ thử run thôi chức thực sự thì về bản chất nó là js nên node cũng ko ảnh hưởng. Node nó chỉ là runtime env thôi. Tuy nhiên đoạn code của bạn có phải giống như vậy không?
Em chạy thử đoạn code bằng node18 thì thấy là nó sẽ chạy
immediatetrướctimeoutanh ạ. Không biết là có phải do node18 có cập nhật hay không anhchị có bán phần mềm này không ạ
Bạn sử dụng thêm 2 dòng này trong file config route thử xem.
Import Router from 'vue-router'; Vue.use(Router);Thêm trong file mainVue.use(router)https://topnoibat.com/ thêm link này nữa bác nhé
Anh giải thích rất hay và dễ hiểu. Em cảm ơn anh!!
tks