Thursday, June 20, 2019

Triệt để về kiến trúc hệ thống thẻ suica

0

Nếu ở Nhật ít lâu chắc ai cũng sẽ quen với một cái thẻ chip nhỏ, dùng để ra vào ga tàu, đi xe bus, hay mua đồ ở các cây bán nước hoặc cửa hàng tiện lợi.

Điểm đặc trưng của cái thẻ này là nó hoạt động rất nhanh, bạn chỉ cần đưa nó đến gần đầu đọc thẻ, rồi chỉ trong một tiếng bíp giao dịch mà bạn cần đã hoàn tất. Không những vậy nó hoạt động rất ổn định. Không biết bạn đã thấy suica bị lỗi bao giờ chưa, chứ mình thì chưa bao giờ thấy nó không phản hồi.

Sơ qua về tải của hệ thống này bạn có thể tính sơ sơ mỗi buổi sáng riêng ở Tokyo số người sử dụng tàu điện cũng lên đến ngót chục triệu, mỗi người đập thẻ vào ga, đập thẻ ra khỏi ga ở những ga tàu khác nhau, nhưng một điểm chung là suica tính tiền vẫn đúng và nhanh. Nếu bạn là một người làm kỹ thuật giống mình thì có lẽ bạn cũng đã có lúc thắc mắc vì sao nó làm được như vậy?

Vậy trong bài viết này mình sẽ cùng tìm hiểu về hệ thống này nhé.

Tăng hiệu năng của WebAssembly với trình dịch stream

0

Người ta gọi WebAssembly là kẻ thay đổi cuộc chơi vì nó giúp thực thi code trên trình duyệt nhanh hơn. Một số chức năng đó đã sẵn sàng ngay hôm nay , và một số sẽ sẵn sàng trong tương lai gần.

Một trong các tính năng đó là biên dịch theo stream, trình duyệt sẽ biên dịch code ngay khi nó vẫn đang được download. Cho đến hiện tại nó vẫn là tính năng có thể thực hiện trong tương lai. Nhưng với FireFox 58, nó đã chính thức cập bến trình duyệt.

Series Hoạt hình về WebAssembly

0

WebAssembly có hiệu năng rất tốt, có thể bạn đã nghe qua về nó. Nhưng cụ thể điều gì khiến hiệu năng của WebAssembly tốt như vậy?

Trong series này hãy cùng tìm hiểu vì sao WebAssembly lại nhanh.

Nhưng, WebAssembly là gì đã?

WebAssembly là một cách khác để viết thực thi code trên trình duyệt. Thế nên khi ai đó nói WebAssembly thực thi nhanh, họ đang so sánh nó với Javascript.

Cũng cần nhấn mạnh rằng đây không phải là tình huống lựa chọn một trong hai, bạn một là lựa chọn WebAssembly hoặc Javascript, không phải như vậy. Trên thực thế lập trình viên được kì vọng sẽ sử dụng cả WebAssembly  và Javascript khi phát triển ứng dụng.

Nhưng nó sẽ rất có ích nếu bạn so sánh cách hai ngôn ngữ này thực thi, từ đó bạn có thể hiểu được tiềm năng mà WebAssembly có.

WebAssembly hiện tại và tương lai

0

Ở thời điểm 28/02/2017 tất cả 4 trình duyệt chính đạt được thống nhất về phiên bản MVP của WebAssembly. Giúp các trình duyệt có thể release phiên bản ổn định đầu tiên của WebAssembly.

Bộ core này không bao gồm đầy đủ tính năng mà nhóm phát triển đã lên kế hoạch, nhưng nó đủ để WebAssembly có thể hoạt động nhanh và ổn định.

Nhờ đó lập tình viên đã có thể code web bằng WebAssembly. Với những phiên bản cũ của trình duyệt, lập trình viên có thể sử dụng file asm.js thay thế. Vì asm.js bản chất là một tập nhỏ của Javascript, bất kì JS engine nào cũng có thể chạy nó. Với Emscripten, bạn có thể lựa chọn biên dịch ra asm.js hoặc WebAssembly.

Kể cả với phiên bản đầu tiên, WebAssembly cũng chứng minh là nó có thể chạy nhanh. Nhưng nó còn có thể nhanh hơn trong tương lai gần, thông qua một vài chỉnh sửa và cập nhật tính năng mới.

Vì sao WebAssembly lại nhanh

0

Trong bài viết trước, chúng ta đã biết rằng WebAssembly hay JavaScript không phải là lựa chọn một mất một còn. Sẽ không có quá nhiều lập trình viên phải viết toàn bộ code bằng WebAssembly.

Lập trình viên không cần thiết phải lựa chọn giữa WebAssembly hay Javascript cho ứng dụng của mình. Tuy nhiên họ vẫn được kì vọng sẽ thay thế một phần code Javascript trong trang web bằng WebAssembly.

Ví dụ, team phát triển react có thể nghĩ đến việc thay thế cây DOM ảo (aka the virtual DOM) bằng WebAssembly. Về phía sử dụng, người dùng React sẽ không phải thay đổi gì… ứng dụng sẽ chạy hoàn toàn giống như trước, trừ việc chúng sẽ nhận đầy đủ lợi ích của WebAssembly – chạy nhanh hơn.

Team React có thể làm như vậy vì WebAssembly thực thi nhanh hơn Javascript rất nhiều. Nhưng vì sao nó lại nhanh hơn?

Cách tạo và làm việc với WebAssembly modules

0

WebAssembly là cách khác để chạy chương trình trên webpage bên cạnh Javascript. Trước đây, nếu muốn lập trình để trình duyệt tương tác với các thành phần khác nhau trên trang web, lựa chọn duy nhất của lập trình viên là sử dụng Javascript

Vì vậy khi ai đó nói WebAssembly thực thi code nhanh, đối tượng so sánh của họ hiển nhiên là với Javascript. Tuy nhiên WebAssembly không nhắm đến việc thay thế hoàn toàn JavaScript.

Trên thực tế các lập trình viên được kì vọng là sẽ sử dụng cả 2 ngôn ngữ trong cùng một ứng dụng. Kể cả khi bạn không trực tiếp viết WebAssembly  bạn vẫn có thể hưởng lợi ích của nó.

Các modules WebAssembly sẽ định nghĩa hàm có thể được gọi từ JavaScript. Thế nên cũng như hiện giờ bạn download module như lodash qua npm và gọi hàm của nó thông qua một list API, trong tương lai bạn cũng sẽ có thể download modules WebAssembly theo cách tương tự.

Trong bài viết này hãy cùng tìm hiểu cách làm thế nào để tạo một modules WebAssembly , và cách sử dụng nó từ Javascript

Ngắn gọn về Assembly

0

Để hiểu về cách WebAssembly hoạt động, trước tiên bạn cần hiểu assembly là gì và làm thế nào chương trình dịch tạo ra nó

Trong  Bài viết về JIT, bạn đã biết việc giao tiếp với máy tính cũng giống như nói chuyện với người ngoài hành tinh.

A person holding a sign with source code on it, and an alien responding in binary

Hãy cũng xem xét kỹ hơn về cách não bộ của người ngoài hành tinh hoạt động – làm thế nào bộ não máy tính đọc và hiểu được nội dung mà nó đang giao tiếp.

Ngắn gọn về JIT(just-in-time) compilers

0

Khi mới bắt đầu JavaScript chạy khá chậm, nhưng sau đó tốc độ thực thi của nó đã được cải thiện đáng kể nhờ vào kĩ thuật gọi là JIT. Nhưng liệu bạn có biết JIT hoạt động như thế nào?

JavaScript Thực thi trong trình duyệt như thế nào?

Khi bạn – một lập trình viên thêm Javascript vào trang web của mình, Bạn có một mục tiêu và một vấn đề.

Mục tiêu: Bạn muốn chỉ dẫn máy tính thực hiện điều mà bạn muốn.

Vấn đề: Bạn và máy tính nói hai ngôn ngữ khác nhau.

Bạn sử dụng ngôn ngữ của con người, máy tính thì dùng ngôn ngữ máy. Cho dù bạn không đồng ý rằng Javascript hay bất kì ngôn ngữ bậc cao nào khác là ngôn ngữ của con người, nhưng bản chất thì nó vẫn đúng như vậy. Chúng được thiết kế cho nhận thức của con người chứ không phải dành cho máy tính.

Vậy nên việc mà  JavaScript engine phải làm là nhận đầu vào là ngôn ngữ của con người và chuyển nó thành một thứ gì đó máy tính có thể hiểu được.

Recent Posts