🏋 Top Posts

👉 Triển khai Notes App trong javascript kèm theo source code

Triển khai Notes App trong javascript kèm theo source code

👉 Load a javascript file dynamically

Trong quá trình làm việc, bạn có trường hợp phải add một file javascript như những thống kê của facebook, goole hay "Adding pixel tracking to a link". Bạn phải làm như thế nào? Hãy tham khảo qua bài viết này, và nếu nó hay thì hãy lưu lại cho lần tới.

👉 [Series es6 vs react] - Làm rõ về es6 và react native! Phần 1.

Trước tiên khi bạn đến với React Native thì bạn là: + Mới học về javascript? + Đã quá quen thuộc với javascript và thường xuyên sử dụng các tính năng ES6 / ES2015. Vậy thì có thể bài này đã lấy đi chút ít thời gian lãng phí của bạn và bạn có thể bỏ qua bài viết này. Có nhiều cú pháp có thể có vẻ kỳ lạ, khó hiểu hoặc đôi khi bạn không biết những gì cần tìm. Cho nên mình đã tham khảo và đã liệt kê một danh sách ngắn gọn các tính năng ES6 + phổ biến nhất mà mình thấy trong các ứng dụng và hướng dẫn của React Native. Có thể các liệt kê không hoàn toàn hoàn hảo nhưng mình nghĩ nó sẽ ít nhất giúp các bạn khi bắt đầu với React.

🏋 New Posts

👉 Series: 10 kịch bản đầu tiên về tối ưu hoá hiệu suất với vị trí Backend (Phần 1 - 10 Sessions)

Trong khi làm việc hay phỏng vấn thì chúng ta sẽ bắt gặp những câu hỏi như, bạn đã tối ưu hệ thống của bạn bao giờ chưa? Nếu có thì tối ưu ở cấp độ (ngôn ngữ hay tham gia stack hệ thống) nào? Và làm như thế nào? Thì đây là câu trả lời cho những bạn gặp trường hợp này.

👉 Tôi sử dụng Redis để lưu thông tin Cart( giỏ hàng) nhưng String hay Hash thì tốt hơn? Tình huống như sau...

Thông thường các lập trình viên sử dụng Redis để lưu thông tin giỏ hàng của khách hàng. Không có gì bàn cãi ở đây, vì giỏ hàng theo thống kê của hệ thống luôn có tỷ lệ truy cập xác xuất luôn cao, vì vậy tránh tình trạng query vào điểm cuối của dữ liệu thì dùng redis sẽ cung cấp và đáp ứng như cầu này. Nhưng việc lưu trữ nó như thế nào cho đúng? Chúng ta ta sẽ xem kịch bản sau đây.

👉 Phân tích chuyên sâu về chức năng Upload Large File: Đến lượt Backend nhờ vả ANH EM FrontEnd

Khi upload một File chúng tôi nhận thấy với 100Mb thì mất 5 giây, rất nhanh sau đó commit và đưa vào version Prod. Nhưng một sự việc đã xảy ra đó là khách hàng VIP muốn upload File có dung lượng 1Gb. Như vậy theo logic thì 5 * 10 = 50 seconds mới có thể upload được File. Sự phàn nàn là điều chính xác

👉 Phân tích chuyên sâu về chức năng đăng nhập: Quy trình thiết kế dữ liệu, xác minh bảo mật và phòng chống MA CÔ | CỰU CHIẾN BINH ĐI QUA GIÔNG BÃO CÔNG NGHỆ

Nhìn vào thì tôi đoán rằng ai cũng rõ vì sao lại sử dụng đúng không? Nó cho chúng ta biết? Thằng nào vào nhà mình, đi bằng cửa nào? đi bằng phương tiện gì? Lúc mấy giờ và để lại dấu vân tay hay không? Điều đó rất tốt cho quá trình lấy dữ liệu để cung cấp cho police điều tra phá án rằng: `Thằng nào vào nhà mình thăm dò, mà không phải là hợp pháp?

👉 Cung cấp câu hỏi phỏng vấn: Bạn đọc tuyển dụng của Bank này, bạn thấy muốn vượt qua thì phải làm gì đúng không?

Bạn đã đọc và thấy đúng không? Chính xác là những nhà tuyển dụng họ rất quan tâm đến việc triển khai nhiều `transaction` cùng một lúc. Vì vậy trọng tâm là bạn muốn apply vào vị trí đó thì nếu như có kịch bản đó xảy ra thì bạn sẽ làm gì?

👉 4 Mức Độ Cô Lập Theo Chuẩn SQL (và MySQL hỗ trợ tất cả!) | CỰU CHIẾN BINH ĐI QUA GIÔNG BÃO CÔNG NGHỆ

Để đơn giản cho việc hiểu về MVCC thì có một kịch bản như sau, cùng một thời điểm thì sẽ xảy ra hiện tượng gì? User X đang xem giá và số lượng sản phẩm Z còn hay không trên hệ thống YYYY, User Y đang order sản phẩm Z và giảm số lượng tồn kho trên hệ thông YYYY...

👉 [JAVA - Excel] Tăng hiệu suất x lần import/export với cách truyền thống: CỰU CHIẾN BINH ĐI QUA GIÔNG BÃO CÔNG NGHỆ

OK xem như đã nắm được kịch bản với 1.000.000 rows và khoảng 50M. Bắt tay vào. NHIỆM VỤ CHÍNH đó là chúng ta phải cải thiện từ `2 phút theo cách thông thường, chúng ta phải giảm xuống 10 seconds`, sau đó sẽ cải thiện tiếp theo cho từng version.

👉 [Kafka - RabbitMQ] Message Queue: CỰU CHIẾN BINH ĐI QUA GIÔNG BÃO CÔNG NGHỆ

Lúc đầu hệ thống triển khai chấm công trên `10.000 công nhân`. Hiện tại API đã cung cấp cho nhiều dịch vụ khác đến lấy dữ liệu của trung tâm. Tôi có thể tóm tắt như sau và hy vọng bạn sẽ hiểu được bản chất của MQ cụ thể là Kafka, RabbitMQ.

👉 API timeline: RPC vs GRPC - Tản mạn ngày xa xưa

RPC vs GRPC: Mặc dù hơi thô nhưng nó đúng là vậy, muốn hiểu về nguyên lý bom ba càng thì hay hỏi các CỰU CHIẾN BINH là có thể hiểu rõ nhất, có đúng không?

👉 [Chuyện cuối tuần #16] - 100% là ai cũng có thể trở thành LẬP TRÌNH VIÊN. Kẻ yếu hay phàn nàn về môi trường...

Kẻ yếu phàn nàn về môi trường, kẻ mạnh tự thay đổi bản thân. Nó đơn giản tới mức hầu như tôi không thể nào áp dụng đúng 100%.

👉 Phỏng vấn GO Backend: Nếu MySQL gặp sự cố trong khi thực hiện transaction, điều gì sẽ xảy ra khi nó được khôi phục (restored)?

Phỏng vấn GO Backend: Hôm nay quả là một ngày thật tuyệt, tôi đã nhận được một câu trả lời từ một anh chàng và có thể nói rằng với câu phỏng vấn "Nếu MySQL gặp sự cố trong khi thực hiện transaction" thì anh ấy đã làm tốt hơn tôi rất nhiều.

👉 MySQL: Tình tờ TEAM đi mua sắm là lụm được bí kíp Table lưu trữ và truy vấn nhanh với hàng trăm triệu dữ liệu

Điều cần làm lúc này là gì? Hôm nay chúng ta sẽ tham khảo một thủ thuật của những người đi trước, họ không có nguồn lực, không có chi phí cao như ngày nay. Nhưng đổi lại họ đã tìm cách vượt qua điều này như thế nào, chúng ta cùng xem xét.

👉 [Chuyện cuối tuần #15] - Sau 6 năm tôi từ bỏ GraphQL, cuộc cãi vã nảy lửa..

Với GraphQL. Tôi cảm thấy đã đủ mệt mỏi với những làn danh giới giữa FE và BE. Việc tự build linh kiện máy tính, bắt buộc bạn phải là người chuyên nghiệp về khía cạnh đó. Hãy trở thành người chơi GAME xuất sắc, thay vì trở thành người mua máy tính chuyên nghiệp, nếu làm tốt bạn là con người tuyệt vời.

👉 [Chuyện cuối tuần #14] - 2025 năm nay chúng tôi sẽ tốt nghiệp và tôi đã sẵn sàng.

Có bạn comment rằng, `lớp chúng tôi 70% không xin được việc làm`. Uhm, tôi nghĩ rằng còn lại 30% là có nghĩa rằng sẽ có việc làm NHƯNG đi đúng ngành thì chắc 20% còn lại 10% là sẽ chọn không đúng NGÀNH.

👉 Hệ thống ĐỒNG THỜI CAO là phải đạt bao nhiêu? QPS = 1.000.000 req/second đúng không?

Hôm nay tôi và các đại ca bàn luận về `high concurrency` và nhân tiện trong bài viết này tôi cũng nói thêm về một số trường hợp xử lý khi bạn bị mặc kẹt trong vấn đề này, thông qua một số biện pháp của một số anh em backend

👉 Cải thiện hiệu suất SELECT COUNT(*) từ 4,2s xuống 0.002s với 13 triệu dữ liệu có đánh đổi gì không?

Tôi có hai table mỗi table có 13 triệu records. Và vẫn là câu lệnh SELECT COUNT(*) nhưng một table mất 4.2s và một table mất 0.002s... Vì sao? Chúng ta sẽ đi tìm hiểu

👉 Với 13 triệu dữ liệu và 4Gb chúng tôi cải thiện tìm kiếm từ 6s còn 1s trong MYSQL không sử dụng ElasticSearch

Đây là một kịch bản có thật được thực hiện lại với một table `(products)` trong MySQL có 13 triệu dữ liệu. Và có 3 tính huống tìm kiếm. Và mỗi tình huống có 3 cách, trong đó có 2 cách sử dụng toán tử `LIKE = '%keySearch%'` và `LIKE = 'keySearch%'`. Như sau:

👉 40 tuổi của ngành lập trình viên tôi chấp nhận buông bỏ...

Tôi biết tôi đang ở đâu và hơn 15 năm kinh nghiệm trong lĩnh vực lập trình dường như không mang lại lợi thế gì khi bạn chấp nhận trong ngành nghề này.

👉 Source Go JAVA API: vetautet - Tích hợp master, slave, sentinel và local cache cải thiện performance API (Link đính kèm)

Dự án vetautet giải quyết bài toán cải thiện hiệu suất READ API, WRITE API, Data consistency, Distributed Transactions, Distributed data... Ngoài java, go còn có nestjs và nodejs...

👉 Thu hồi JWT - Cách hiệu quả vô hiệu hoá devices (iPad, iMac) khi iPhone thay đổi password!

CV quá tốt, như vậy thì hệ thống xxxx.com bạn triển khai cho phép một user login trên được nhiều thiết bị phải không?

👉 JWT Skills: Kịch bản tốt nhất ở đây là gì? Khi JWT khi User logout trên iPhone mà iPad, iMac vẫn hoạt động

Ngoài ra một kịch bản khác nữa được đưa ra ngoài chuyện Logout. Khi logout thì token này đã có trong `tokenBlackList` vì vậy khi một ai đó vô tình lấy lại token này để sử dụng or token này bị rò rỉ (leak) và thời gian token này chưa hết hạn...

👉 #07: OpenSource ShareScreen Go và Nodejs Low latency / High resolution

Mục này sẽ cung cấp hai `OpenSource` về web app ShareScreen được phát triển bởi Go và Nodejs với nhiều tính năng được cải thiện về hình ảnh, độ trễ...

👉 DDD - Project: vetautet - Điều gì khiến bạn lo lắng khi đi phỏng vấn với vị trí Senior? Khấu trừ hàng tồn kho?

Đầu tiên, đừng vội vồ vập, vì chúng ta là những người đã kinh qua không gì phải vội. Hãy nhấn mạnh với họ rằng, công ty bạn đang trừ hàng tồn kho ở giai đoạn nào?

👉 Ở vị trí Front-End gần 2 năm và giờ đây tôi ở vị trí Full-Stack tiệm cận Backend nay tôi muốn chia sẻ lộ trình...

Nhưng nói thêm rằng, nếu từ FE muốn chuyển qua `Back-End(BE)` thì Nest.js không đủ để làm chuyện đó. Vì sao? Tôi có thể kết luận như thế này..

👉 Nestjs, JAVA vì sao chúng ta phải cần IoC (Inverse of Control)

Nếu bạn xuất thấn từ JAVA`, GO và Nestjs thì có lẽ cụm từ `IoC` sẽ xuất hiện tấn suất rất nhiều trong dự án và trong các lần phỏng vấn đúng không?

👉 Khấu trừ hàng tồn kho thì backend sẽ chọn cách nào trong 3 cách sau đây.

Nếu một lập trình viên backend hiểu về hệ thông bán hàng đồng thời CAO hoặc kiến ​​trúc đồng thời cao, bạn có thể thấy rằng khấu trừ hàng tồn kho trong Database này không hoàn hảo và nó có vấn đề ở đây.

👉 Đánh bại sự mông lung của ngành nghề Lập Trình Viên

Trường hợp thứ hai ví dụ muốn xử lý một data trong một `Array()` thì bạn cần phải nắm hai khái niệm chính đó là xử lý `for` với cấp độ bình thường, nhưng khi xử lý một `Array()` lớn thì `for` thôi là chưa đủ, mà thêm khái niệm `Stream()`...

👉 DDD - Project: vetautet.com: Redis Master/Slave: Từng Bước Để Đạt Hiệu Năng Cao (50,000 Orders/Giây)

Vì vậy hãy suy nghĩ nếu như Master bị hẻo thì ai sẽ là người ghi `Slave-01` hay `Slave-02` hoặc `Slave-0N`... Là ai? Công thức nào? Và setup thế nào?

👉 [Cuối tuần #13] - Chúng tôi phụ thuộc quá nhiều vào AI, để bây giờ không thể tự suy nghĩ mỗi ngày...

Vì sao tôi vẫn là một nông dân CODE. Với tôi, tôi sẽ cố gắng không phụ thuộc vào AI trừ khi tôi không còn suy nghĩ được vấn đề gì nữa...

👉 DDD - Project: vetautet.com: Kafka ở cấp độ doanh nghiệp, bài viết này là đủ hãy thêm vào CV của chúng ta.

Thật sự mà nói thời điểm đó khi tôi bắt đầu học về kafka thì lúc đó trên internet có khác ít những blog hay video để triển khai những khái niệm rất mơ hồ như `HW, LEO, LSO, LW` hoặc `ISR và AR là viết tắt của từ gì trong Kafka? Tỷ lệ ISR có nghĩa là gì?` rất khó tìm được đáp án.

👉 Nguyên tắc phân trang trong MySQL với limit X,Y? Vì sao X càng lớn thì timeResponse lại cao...

Chúng ta đều đồng ý rằng, trong MySQL dữ liệu càng nhiều thì query càng chậm. Thực tế như sau, khi sử dụng `limit X,Y` để truy vấn, giá trị `X` càng lớn thì tốc độ truy vấn càng chậm.

👉 [Chuyện cuối tuần #7] - Docker is damaged, kẹt xe làm buổi sáng mất hết năng lượng và nhân vật Anh CAO trong Upstream

Họ đã đưa ra những kiến thức chuẩn bị cho việc `ngồi ghế nóng` kiểu giống như đề mở vậy. Đó là `k8s`, `docker`, và quan trọng là `kafka`. Nhưng đột nhiên hãy xem hình ảnh tôi đang làm

👉 Kafka: Hướng dẫn phỏng vấn dưới góc nhìn của một DEV chuẩn bị layoff (phần 2)

Ngoài trời đang mưa rả rích, tiếng mưa rơi lộp độp trên của kính của văn phòng của một công ty lớn trong ngành sản xuất phần mềm. Trong phòng phỏng vấn, Senior - một kỹ sư dày dạn kinh nghiệm đang trao đổi với Intern - một ứng viên trẻ tiềm năng.

👉 Kafka: Hướng dẫn phỏng vấn dưới góc nhìn của một DEV chuẩn bị layoff.

Gần đây, hiện tại và sắp tới sau khi kỳ tết 2025 thì chuần bị là mùa cao điểm của việc nhảy việc, và nhiều anh em đã gửi các câu hỏi or đã hỏi tôi về các câu hỏi của các stacks ví dụ như phỏng vấn của NVIDIA..

👉 Lập trình đồng thời và Vật cực tất phản - Chuyện cuối tuần

Chuyện cuối tuần - Vật cực tất phản, hôm nay tôi muốn đề cập đến một khái niệm mà tôi đọc qua trong cuộc sống là đúng, nhưng trong lập trình cấp độ ngôn ngữ thì tôi thấy nó chưa đúng, nhưng lạ thay với cấp độ doanh nghiệp thì nó lại đúng. Khái niệm được đề cập như sau:

👉 DDD - Project: vetautet.com 07: Cơn ác mộng của việc tìm kiếm log và cuộc cách mạng trong DDD project

Đó là ngày đầu tiên của tôi sau khi được tăng chức khi có một bước tiến mới trong việc [Cải thiện hiệu suất API mới kỹ thuật mới trong DDD - Project] với tư cách một Junior tại một công ty công nghệ.

👉 Nếu Kafka mất tin nhắn hãy tập trung 3 giai đoạn này - Vũ khí backend năm tới

Làm thế nào để đảm bảo message không bị mất sau này chủ yếu được phân tích từ ba giai đoạn này, hãy chú ý nó một cách cẩn thận. Chỉ khi nào bạn thực sự sử dụng nó thì mới thấy 3 giai đoạn này là vô cùng quan trọng.

👉 Lập trình đồng thời #1: Nói về Thread vs Virtual Thread và ghé nhà hàng xóm Goroutine

Chỉ cần hiểu như thế này cho các round phỏng vấn như món tráng miệng đó là `Thread` rất nặng, nó tương ứng mới các thread của hệ điều hành. Vì vậy chắc chắn có limited.

👉 2025 tôi không phải có thêm kinh nghiệm và tôi có thêm nhiều Anh Em DEV hơn. Tạm biệt 2024

Tôi còn nhớ JavaEE lúc đó rất phổ biến vì các logic business được quản lý mới Struct, Spring, và không quên đó là Hibernate chịu trách nhiệm quản lý database, nhìn lại một hành trình giờ đây quá nhiều thay đổi với sự xuất hiện của SpringMVC nó đã làm lu mờ đi Struct...

👉 DDD - Project: vetautet.com 06: INTERN với sự khiêm tốn đến kỳ lạ lần này nó đã thực sự thành công lên Junior

Cậu intern mới vào công ty có 3 tháng mà có thể thấy hình như cậu ấy đã chạm vào được trái tim của ứng dụng, của anh em và quan trọng có lẽ danh phận Junior chỉ để nhằm hạn chế lương của cậu ta thôi sao... Tôi tự nhủ..