VeXeRe Engineering

VeXeRe Engineering VeXeRers are constant learners, we always strive for perfection with latest technology best practice

Tìm hiểu best practices trước khi làm bất cứ điều gì là một trong những cách học nhanh và ít tốn kém nhất do chúng ta kh...
28/02/2022

Tìm hiểu best practices trước khi làm bất cứ điều gì là một trong những cách học nhanh và ít tốn kém nhất do chúng ta không phải học lại những bài học mà người khác đã phải mất nhiều thứ để học.

Bạn có đang viết test cho code của mình? Đâu là những best practices để có code test dễ đọc, dễ maintain và đáng tin? Các bạn có thể tham khảo những nguyên tắc dưới đây, đúng cho hầu hết ngôn ngữ nhưng có ví dụ thực tế cho javascript nhé

https://github.com/mawrkus/js-unit-testing-guide

Bạn nào muốn tìm hiểu sâu hơn thì có thể tham khảo link này, có cả link khoá học bên trong https://github.com/goldbergyoni/javascript-testing-best-practices

📗🌐 🚢 Comprehensive and exhaustive JavaScript & Node.js testing best practices (February 2022) - GitHub - goldbergyoni/javascript-testing-best-practices: 📗🌐 🚢 Comprehensive and exhaustive JavaSc...

Bạn có đang dùng react native cho ứng dụng mobile của mình? Năm 2022 sẽ là một năm thay đổi lớn với React Native, Bridge...
24/02/2022

Bạn có đang dùng react native cho ứng dụng mobile của mình? Năm 2022 sẽ là một năm thay đổi lớn với React Native, Bridge sẽ không còn nữa thay bằng hệ thống JSI, Fabric, Turbo Modules và Code Gen. Hi vọng sẽ mang lại nhiều thay đổi lớn về Performance cho Android, chi tiết tại link

https://medium.com/coox-tech/deep-dive-into-react-natives-new-architecture-fb67ae615ccd

The React Native team has announced that the new architecture will be rolled out in 2022. Checkout their full blog here.

       Chuyện gì xảy ra đằng sau việc quẹt thẻ credit card để thanh toán? Luồng hoạt động của các bên tham gia vào quá t...
13/12/2021



Chuyện gì xảy ra đằng sau việc quẹt thẻ credit card để thanh toán? Luồng hoạt động của các bên tham gia vào quá trình thanh
toán, từ frontend đến backend, đến payment gateway như thế nào và các bài học trong quá trình thiết kế payment gateway tại VeXeRe được Lợi Nguyễn - TA của VeXeRe trình bày tại buổi Techtalk Grokking hôm thứ 7 vừa rồi, các bạn có thể xem lại ở đây https://youtu.be/s-gyb5OIh8A?t=1124

Các bạn nào quan tâm sâu hơn về cách thiết kế payment gateway service như thế nào để vừa đảm bảo an toàn, linh hoạt, scalable, dễ dàng tích hợp với bất cứ cổng thanh toán nào thì để lại comment bên dưới nhé.

   Có bạn nào dùng thử strapi chưa? Đây là một headless CMS hỗ trợ tuỳ biến cao và có sẵn giao diện để quản lý content r...
07/12/2021


Có bạn nào dùng thử strapi chưa? Đây là một headless CMS hỗ trợ tuỳ biến cao và có sẵn giao diện để quản lý content rất tiện lợi. Dùng strapi nghĩa là bạn chỉ cần tập trung vào những gì quan trọng nhất cho dự án của mình, những phần còn lại để strapi lo, vd như
- authentication, social login
- rest api và graphql, hỗ trợ query linh động
- file uploading, image management
- hooks, webhooks
- content management (vd giao diện để duyệt bài viết đã có sẵn)
- performance / caching

Nay strapi v4 chính thức ra mắt với
- Giao diện quản trị nội dung hiện đại và thân thiện hơn
- Dễ dàng tạo plugin hơn
- Query tối ưu hơn, chỉ lấy đúng dữ liệu cần thiết
- Tách biệt content api và admin api, thuận tiện trong việc truy xuất content hơn

Vọc ngay xem có hay thật không nhé 😆

The Big 4, the Fantastic 4... How about Strapi v4? Meet a brand new version of Strapi: a more powerful CMS coming wrapped in a new dazzling design. Have a look at what's new!

   Dev 10 năm kinh nghiệm có xịn hơn dev 1 năm không? Có nếu bạn thường xuyên đọc lại code của mình, code của người khác...
29/11/2021



Dev 10 năm kinh nghiệm có xịn hơn dev 1 năm không? Có nếu bạn thường xuyên đọc lại code của mình, code của người khác, tái cấu trúc, optimize theo best practices. Dưới đây là top các nguyên tắc tóm gọn từ cuốn sách gối đầu giường cho dev Clean code và ví dụ áp dụng cho javascript rất thực tiễn

Clean code means you are not just writing code that works, but rather code that can be easily read, reused, and refactored by others…

   Có bạn dev nào từng thấy khó chịu khi gọi API dùng jsonwebtoken cho authentication cứ phải kiểm tra xem token đã hết ...
23/11/2021



Có bạn dev nào từng thấy khó chịu khi gọi API dùng jsonwebtoken cho authentication cứ phải kiểm tra xem token đã hết hạn chưa, hết hạn rồi thì phải đi gọi refresh token để lấy lại token mới không. Nhìn có vẻ thừa thãi tốn công, không có logic này thì đời đẹp hơn biết bao nhiêu?

Bài viết sau phân tích pros and cons của việc có và không có refresh token, khi nào thì nên dùng cách nào. Có thể tóm gọn lại một ý quan trọng nhất là cơ chế refresh token cho phép có một checkpoint mà ở đó chúng ta có thể kiểm tra logic kỹ hơn, ví dụ như các quy tắc bảo mật, phân quyền có thay đổi gì với user này hay chưa, token này còn valid hay ko hay user đã revoke rồi, ... Vì lâu lâu mới gọi refresh một lần nên chúng ta có thể handle nhiều logic khác nhau mà không lo lắng nhiều về ảnh hưởng lên performance của API. Đổi lại nếu không có cơ chế refresh token, bắt buộc ở mỗi lần gọi API chúng ta phải kiểm tra kỹ hơn token đang được cung cấp có còn hợp lệ để thực hiện API này hay không, việc này có thể thực hiện từ đơn giản như đọc cache đến truy cập db, nhưng dù là gì đi nữa cũng đều ảnh hưởng lên API performance đặc biệt là với các API có tần suất gọi rất nhiều.

Còn điều gì hay chưa được nhắc đến không? Các bạn có thể chia sẻ thêm trong comment nhé.

When your service issues access tokens, you'll need to make some decisions as to how long you want the tokens to last. Unfortunately there is no blanket

     "Explain like I am five" nghĩa là giải thích theo cách đơn giản nhất để một đứa trẻ lên 5 vẫn có thể hiểu được.Các ...
17/11/2021



"Explain like I am five" nghĩa là giải thích theo cách đơn giản nhất để một đứa trẻ lên 5 vẫn có thể hiểu được.

Các bạn làm frontend / reactjs có thể tham khảo link sau để hiểu hơn về các thuật ngữ thông dụng nhé.

tl;dr This thread contains plain English and explain-like-I'm-five definitions of the terms and concepts used throughout other discussions. Scroll to comments to find (or add) a term and explan...

     Các bạn dev có nghĩ thói quen tối ưu hoá mọi thứ mình làm là thói quen rất quan trọng để phát triển bản thân không,...
15/11/2021



Các bạn dev có nghĩ thói quen tối ưu hoá mọi thứ mình làm là thói quen rất quan trọng để phát triển bản thân không, vừa chứng tỏ mình là người trưởng thành không bao giờ chối bỏ trách nhiệm :))

Code review, code refactoring, debugging ... là những cách rất quan trọng để vừa nâng tầm chất lượng các đoạn code trước đó của mình và của team, vừa có thể học và rút ra những bài học xương máu cho những công việc tiếp theo. Cứ tiến mãi về phía trước vẫn sẽ rất tốt, nhưng nếu đi mà không nhớ những đoạn đường chông g*i mình đã qua thì sẽ phí phạm vì có thể mình phải đi lại chính đoạn đường ấy.

Có những bạn dev hàng chục năm mà sợi dây kinh nghiệm rút hoài không hết, và những bạn dev chỉ mới vài năm mà đã nếm mật nằm g*i và nhanh chóng trở thành thánh code, sự khác biệt là nằm ở thói quen ấy.

   Github có rất nhiều repo tổng hợp những tinh tuý gồm cả thư viện, tools và bài viết hay quanh một chủ đề nào đó, gọi ...
10/11/2021


Github có rất nhiều repo tổng hợp những tinh tuý gồm cả thư viện, tools và bài viết hay quanh một chủ đề nào đó, gọi là awesome list. Bạn có thể tìm kiếm bất cứ chủ đề nào kèm từ khoá awesome đều sẽ ra github repo tương ứng.

Bạn nào chưa thử thì vào thử vọc list về microservices bên dưới, cover rất nhiều tools và frameworks và cả concept về microservices rất hay để vọc và học nhé.

A curated list of Microservice Architecture related principles and technologies. - GitHub - mfornos/awesome-microservices: A curated list of Microservice Architecture related principles and technol...

   Bạn đang dùng thư viện gì để xử lý ngày tháng trong dự án nodejs của mình?Nếu bạn thường dùng momentjs thì hãy thử da...
09/11/2021



Bạn đang dùng thư viện gì để xử lý ngày tháng trong dự án nodejs của mình?

Nếu bạn thường dùng momentjs thì hãy thử date-fns hay dayjs xem thế nào nhé.

Với date-fns thì có những ưu điểm sau:

1/ Hỗ trợ TypeScript
2/ Tree-shaking: Chỉ build theo các function đã dùng, kô bundle cả lib
3/ Chỉ dùng Date của JS
4/ Immutable: Luôn trả về instance mới
5/ Functional programming
6/ Nhẹ hơn ~ 2 lần, nhanh hơn ~ 2 lần moment.js

Bài viết sau cung cấp benchmark chi tiết các giải pháp
https://github.com/you-dont-need/You-Dont-Need-Momentjs

   Hầu như tất cả dự án lúc initiate đều bắt đầu với lựa chọn mặc định cho Id column là auto increment. Trong khi đây là...
04/11/2021


Hầu như tất cả dự án lúc initiate đều bắt đầu với lựa chọn mặc định cho Id column là auto increment. Trong khi đây là lựa chọn dễ và tiêu chuẩn để bạn bắt đầu nhưng bạn có lựa chọn tốt hơn nhiều đặc biệt là khi db phình to ra và bạn bắt đầu cần sharding, rồi migration... Dùng UUID - Universally Unique IDentifier được dịch nghĩa là ID duy nhất toàn cầu, vì tính duy nhất của nó không chỉ là trong nội bộ 1 database mà đảm bảo là duy nhất và không trùng với chuỗi UUID nào đã từng tạo ra trước đó.

Bài viết sau đây là một trong những bài viết rất đầy đủ và chi tiết phân tích tại sao Auto Increment Id không tốt và các cách dùng UUID để thay thế.

https://www.clever-cloud.com/blog/engineering/2015/05/20/why-auto-increment-is-a-terrible-idea/

Ngoài ra, các kỹ sư ở Instagram cũng có một cách làm riêng của họ để đánh ID unique across databases, bài viết sau phân tích một số giải pháp để tạo UUID và cách tiếp cận tại Instagram cũng rất hay để các bạn tham khảo thêm https://medium0.com/m/global-identity?redirectUrl=https%3A%2F%2Finstagram-engineering.com%2Fsharding-ids-at-instagram-1cf5a71e5a5c

With more than 25 photos and 90 likes every second, we store a lot of data here at Instagram. To make sure all of our important data fits…

Address

222 Điện Biên Phủ/
Quận 3
700000

Alerts

Be the first to know and let us send you an email when VeXeRe Engineering posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Share