<?xml version="1.0" encoding="UTF-8" ?>
<rss
    version="2.0"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:webfeeds="http://webfeeds.org/rss/1.0"
    xmlns:media="http://search.yahoo.com/mrss/"
    >
    <channel>
        <title>Android-architecture Tag - Viblo</title>
        <link>https://viblo.asia/rss</link>
        <description><![CDATA[Free service for technical knowledge sharing]]></description>
        <atom:link href="https://viblo.asia/rss/tags/android-architecture.rss" rel="self"></atom:link>
                <copyright>Sun* Inc.</copyright>
                                                <webfeeds:logo>https://viblo.asia/logo_full.svg</webfeeds:logo>
        <image>
            <url>https://viblo.asia/logo_full.svg</url>
            <title>Android-architecture Tag - Viblo</title>
            <link>https://viblo.asia/rss</link>
        </image>
                                <language>vi-vn</language>
        <lastBuildDate>2026-08-14T08:01:55+07:00</lastBuildDate>
                <item>
            <title><![CDATA[Thiết kế Database (Database Design) cho hệ thống Activity Log quy mô lớn: Tối ưu lưu trữ và hiệu năng truy vấn]]></title>
                        <link>https://viblo.asia/p/thiet-ke-database-database-design-cho-he-thong-activity-log-quy-mo-lon-toi-uu-luu-tru-va-hieu-nang-truy-van-ZjJYW6lzVOE</link>
            <guid isPermaLink="true">https://viblo.asia/p/thiet-ke-database-database-design-cho-he-thong-activity-log-quy-mo-lon-toi-uu-luu-tru-va-hieu-nang-truy-van-ZjJYW6lzVOE</guid>
            <description><![CDATA[Chào anh em!

Ở bài viết trước, chúng ta đã tìm hiểu về package spatie/laravel-activitylog — "hộp đen" giúp ghi nhận lịch sử hoạt động cực kỳ tiện lợi...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-08-03 16:20:48</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Nghịch lý Laravel: Tại sao các hệ thống &quot;khủng&quot; lại quay lưng với Migration?]]></title>
                        <link>https://viblo.asia/p/nghich-ly-laravel-tai-sao-cac-he-thong-khung-lai-quay-lung-voi-migration-1j4lQzYGJwl</link>
            <guid isPermaLink="true">https://viblo.asia/p/nghich-ly-laravel-tai-sao-cac-he-thong-khung-lai-quay-lung-voi-migration-1j4lQzYGJwl</guid>
            <description><![CDATA[Chào anh em Viblo, lại là mình đây!

Bất cứ ai khi mới bước chân vào thế giới của Laravel đều được dạy về Migrations. Nó được ví như "Git dành cho cơ ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-17 12:46:09</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Đừng bắt &quot;siêu xe&quot; đi chở gạch: Cái giá đắt khi lạm dụng Redis cho lưu trữ dài hạn]]></title>
                        <link>https://viblo.asia/p/dung-bat-sieu-xe-di-cho-gach-cai-gia-dat-khi-lam-dung-redis-cho-luu-tru-dai-han-ym400PDK491</link>
            <guid isPermaLink="true">https://viblo.asia/p/dung-bat-sieu-xe-di-cho-gach-cai-gia-dat-khi-lam-dung-redis-cho-luu-tru-dai-han-ym400PDK491</guid>
            <description><![CDATA[Chào anh em trên Viblo!

Nhắc đến Redis, anh em backend chúng ta thường nghĩ ngay đến một "vị thần tốc độ". Với khả năng đọc/ghi tính bằng micro-giây,...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-15 11:07:28</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series Cloud Database Supabase #1: Kiến trúc &quot;Backend-in-a-Box&quot; và Triết lý Database-First]]></title>
                        <link>https://viblo.asia/p/series-cloud-database-supabase-1-kien-truc-backend-in-a-box-va-triet-ly-database-first-K9Vy8vlOLQR</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-cloud-database-supabase-1-kien-truc-backend-in-a-box-va-triet-ly-database-first-K9Vy8vlOLQR</guid>
            <description><![CDATA[1. Supabase không phải là "Phép màu", nó là PostgreSQL

Sai lầm lớn nhất của các Dev là coi Supabase là một "Magic Box" nơi dữ liệu tự động xuất hiện....]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-20 17:28:15</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series Jenkins #2: Đưa bác quản gia về nhà &amp; Giải mã bí ẩn Master - Node]]></title>
                        <link>https://viblo.asia/p/series-jenkins-2-dua-bac-quan-gia-ve-nha-giai-ma-bi-an-master-node-pPLkNpZ6JRZ</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-jenkins-2-dua-bac-quan-gia-ve-nha-giai-ma-bi-an-master-node-pPLkNpZ6JRZ</guid>
            <description><![CDATA[Chào anh em đã quay lại với series "Từ Zero đến Hero với Jenkins". Ở Bài 1, chúng ta đã hiểu tại sao phải dùng Jenkins để thoát khỏi cảnh "deploy tay"...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-03 22:29:32</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series Chinh phục Vercel | Bài 5: Phối hợp &quot;Tam giác vàng&quot; (Bitbucket + Vault + Vercel)]]></title>
                        <link>https://viblo.asia/p/series-chinh-phuc-vercel-bai-5-phoi-hop-tam-giac-vang-bitbucket-vault-vercel-gdJzvBMvJz5</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-chinh-phuc-vercel-bai-5-phoi-hop-tam-giac-vang-bitbucket-vault-vercel-gdJzvBMvJz5</guid>
            <description><![CDATA[Tại sao phải làm series 5 bài này?

* Bitbucket: Nơi chứa bộ não (Source Code).
* Vault: Nơi cất giữ chìa khóa vạn năng (Secrets).
* Vercel: Nơi thực ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-11 18:24:23</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series Chinh phục Heroku | Bài 4: Worker Dyno &amp; Redis - Giải phóng Web API với Background Jobs]]></title>
                        <link>https://viblo.asia/p/series-chinh-phuc-heroku-bai-4-worker-dyno-redis-giai-phong-web-api-voi-background-jobs-R5JRQg1Q4Gv</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-chinh-phuc-heroku-bai-4-worker-dyno-redis-giai-phong-web-api-voi-background-jobs-R5JRQg1Q4Gv</guid>
            <description><![CDATA[Sự khác biệt giữa Web Dyno và Worker Dyno

* Web Dyno: Được Heroku cấp cho một cổng (Port) để lắng nghe các request HTTP từ bên ngoài (Internet).
* Wo...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-03 09:20:56</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series Kiến trúc MVC Cơ bản | Bài 1: MVC là gì? Giải ngố mô hình &quot;quốc dân&quot; của Web Development]]></title>
                        <link>https://viblo.asia/p/series-kien-truc-mvc-co-ban-bai-1-mvc-la-gi-giai-ngo-mo-hinh-quoc-dan-cua-web-development-bA468QPlLKv</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-kien-truc-mvc-co-ban-bai-1-mvc-la-gi-giai-ngo-mo-hinh-quoc-dan-cua-web-development-bA468QPlLKv</guid>
            <description><![CDATA[Chào anh em, nếu anh em vừa bước chân vào thế giới lập trình Web và chọn các framework như Laravel (PHP), Spring Boot (Java) hay Ruby on Rails, chắc c...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-07 09:16:25</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series Thiết kế Kiến trúc Modules Thủ công | Bài 3: Nghệ thuật Giao tiếp chéo - Giữ code lỏng lẻo (Loose Coupling)]]></title>
                        <link>https://viblo.asia/p/series-thiet-ke-kien-truc-modules-thu-cong-bai-3-nghe-thuat-giao-tiep-cheo-giu-code-long-leo-loose-coupling-ZjJYWdq0VOE</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-thiet-ke-kien-truc-modules-thu-cong-bai-3-nghe-thuat-giao-tiep-cheo-giu-code-long-leo-loose-coupling-ZjJYWdq0VOE</guid>
            <description><![CDATA[Chào anh em! Khởi tạo Module bằng lệnh custom ở Bài 2 thì dễ, nhưng làm sao để các Module này "nói chuyện" được với nhau mới là thước đo đẳng cấp của ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-10 10:06:33</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series Thiết kế Kiến trúc Modules Thủ công | Bài 2: Quy hoạch &quot;Vùng đất&quot; Module và Chế tạo lệnh Sinh code tự động]]></title>
                        <link>https://viblo.asia/p/series-thiet-ke-kien-truc-modules-thu-cong-bai-2-quy-hoach-vung-dat-module-va-che-tao-lenh-sinh-code-tu-dong-1XVOWz5PVMz</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-thiet-ke-kien-truc-modules-thu-cong-bai-2-quy-hoach-vung-dat-module-va-che-tao-lenh-sinh-code-tu-dong-1XVOWz5PVMz</guid>
            <description><![CDATA[Chào anh em! Ở Bài 1, chúng ta đã hiểu được "ma thuật" đằng sau kiến trúc module thủ công: chỉ cần cấu hình psr-4 trong composer.json, viết một file S...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-10 10:06:21</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series Thiết kế Kiến trúc Modules Thủ công | Bài 1: Trở về nguyên bản - Tự build Modules bằng Core Laravel]]></title>
                        <link>https://viblo.asia/p/series-thiet-ke-kien-truc-modules-thu-cong-bai-1-tro-ve-nguyen-ban-tu-build-modules-bang-core-laravel-ZjJYWdv6VOE</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-thiet-ke-kien-truc-modules-thu-cong-bai-1-tro-ve-nguyen-ban-tu-build-modules-bang-core-laravel-ZjJYWdv6VOE</guid>
            <description><![CDATA[Chào anh em! Khi nhắc đến việc chia project Laravel thành các Modules (User, Order, Payment...), 90% anh em developer sẽ nghĩ ngay đến việc gõ lệnh co...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-10 10:06:09</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Cache Key là gì? Tuyệt chiêu đặt tên giúp tôi thoát khỏi những đêm trắng &quot;xóa Cache thủ công&quot;.]]></title>
                        <link>https://viblo.asia/p/cache-key-la-gi-tuyet-chieu-dat-ten-giup-toi-thoat-khoi-nhung-dem-trang-xoa-cache-thu-cong-QyJKzkxw4Me</link>
            <guid isPermaLink="true">https://viblo.asia/p/cache-key-la-gi-tuyet-chieu-dat-ten-giup-toi-thoat-khoi-nhung-dem-trang-xoa-cache-thu-cong-QyJKzkxw4Me</guid>
            <description><![CDATA[Chào anh em đồng đạo! Lại là mình với những câu chuyện "ăn hành" sau 5 năm nằm gai nếm mật cùng những dòng code.

Hôm nay, mình muốn lôi ra ánh sáng m...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-01 13:09:07</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Phân quyền tầng View: Giữa &quot;Bảo mật&quot; và &quot;Trải nghiệm người dùng&quot; (UX), bạn đang làm đúng hay sai?]]></title>
                        <link>https://viblo.asia/p/phan-quyen-tang-view-giua-bao-mat-va-trai-nghiem-nguoi-dung-ux-ban-dang-lam-dung-hay-sai-2vJPdn18JeK</link>
            <guid isPermaLink="true">https://viblo.asia/p/phan-quyen-tang-view-giua-bao-mat-va-trai-nghiem-nguoi-dung-ux-ban-dang-lam-dung-hay-sai-2vJPdn18JeK</guid>
            <description><![CDATA[Chào anh em! Vẫn là series những câu chuyện "bóc phốt" bản thân sau hơn 5 năm đi code dạo.

Nếu anh em làm Frontend, chắc chắn công việc hàng ngày khô...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-06-30 22:31:53</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Ác mộng Cannot redeclare class: Đừng biến source code của bạn thành bãi rác tiền tố (prefix) nữa!]]></title>
                        <link>https://viblo.asia/p/ac-mong-cannot-redeclare-class-dung-bien-source-code-cua-ban-thanh-bai-rac-tien-to-prefix-nua-ZjJYWdpbVOE</link>
            <guid isPermaLink="true">https://viblo.asia/p/ac-mong-cannot-redeclare-class-dung-bien-source-code-cua-ban-thanh-bai-rac-tien-to-prefix-nua-ZjJYWdpbVOE</guid>
            <description><![CDATA[Chào anh em thiện lành! Đi code dạo nhiều năm, chắc hẳn anh em nào cũng từng trải qua cái cảnh "vò đầu bứt tai" khi nghĩ tên cho biến, cho class. Ngườ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-08 02:30:11</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Phân quyền hệ thống: Cú lừa mang tên cột role và sự thức tỉnh với User - Role - Permission.]]></title>
                        <link>https://viblo.asia/p/phan-quyen-he-thong-cu-lua-mang-ten-cot-role-va-su-thuc-tinh-voi-user-role-permission-1QLxnNWp4Aw</link>
            <guid isPermaLink="true">https://viblo.asia/p/phan-quyen-he-thong-cu-lua-mang-ten-cot-role-va-su-thuc-tinh-voi-user-role-permission-1QLxnNWp4Aw</guid>
            <description><![CDATA[Chào anh em! Trong chuỗi bài trước, chúng ta đã bàn về cách xử lý phân quyền trên Frontend (View-level Authz) và tối ưu form. Hôm nay, mình xin phép r...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-11 21:30:29</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Đừng new vô tội vạ nữa! Cách Service Provider thay đổi tư duy thiết kế hệ thống của tôi.]]></title>
                        <link>https://viblo.asia/p/dung-new-vo-toi-va-nua-cach-service-provider-thay-doi-tu-duy-thiet-ke-he-thong-cua-toi-gjLN06rd432</link>
            <guid isPermaLink="true">https://viblo.asia/p/dung-new-vo-toi-va-nua-cach-service-provider-thay-doi-tu-duy-thiet-ke-he-thong-cua-toi-gjLN06rd432</guid>
            <description><![CDATA[Chào anh em, lại là mình đây!

Dạo gần đây, có một bạn junior trong team review code với mình và thắc mắc: "Anh ơi, sao framework này chỗ nào cũng thấ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-12 21:30:42</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series Cấu trúc Modules trong Laravel | Bài 4: Nâng tầm kiến trúc - Tích hợp Message Broker (Kafka/RabbitMQ) và bài toán Dữ liệu mồ côi]]></title>
                        <link>https://viblo.asia/p/series-cau-truc-modules-trong-laravel-bai-4-nang-tam-kien-truc-tich-hop-message-broker-kafkarabbitmq-va-bai-toan-du-lieu-mo-coi-PoL7eB614vk</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-cau-truc-modules-trong-laravel-bai-4-nang-tam-kien-truc-tich-hop-message-broker-kafkarabbitmq-va-bai-toan-du-lieu-mo-coi-PoL7eB614vk</guid>
            <description><![CDATA[Chào anh em, tiếp nối Bài 3, chúng ta đã biết cách tách rời Module Order và Module Payment bằng Event-Driven. Khi khách mua vé thành công, một Event n...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-08 22:56:44</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series Cấu trúc Modules trong Laravel | Bài 3: Nghệ thuật giao tiếp giữa các Modules - Không để code &quot;dính chùm&quot;]]></title>
                        <link>https://viblo.asia/p/series-cau-truc-modules-trong-laravel-bai-3-nghe-thuat-giao-tiep-giua-cac-modules-khong-de-code-dinh-chum-13VM9Ak5VY7</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-cau-truc-modules-trong-laravel-bai-3-nghe-thuat-giao-tiep-giua-cac-modules-khong-de-code-dinh-chum-13VM9Ak5VY7</guid>
            <description><![CDATA[Chào anh em, ở Bài 2 chúng ta đã dùng nwidart/laravel-modules để phân lô bán nền, chia project thành các Modules độc lập như Order, Payment, Inventory...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-08 22:54:47</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series Cấu trúc Modules trong Laravel | Bài 1: Khi MVC truyền thống &quot;hụt hơi&quot; trước dự án lớn]]></title>
                        <link>https://viblo.asia/p/series-cau-truc-modules-trong-laravel-bai-1-khi-mvc-truyen-thong-hut-hoi-truoc-du-an-lon-oKLnqp7aJQO</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-cau-truc-modules-trong-laravel-bai-1-khi-mvc-truyen-thong-hut-hoi-truoc-du-an-lon-oKLnqp7aJQO</guid>
            <description><![CDATA[Chào anh em, nếu bạn đang code Laravel, chắc hẳn bạn đã quá quen thuộc với cấu trúc thư mục mặc định: app/Http/Controllers, app/Models, app/Services.....]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-07-08 22:54:00</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[series Bee-Queue Bài 1: Bee-Queue Là Gì? Quái Kiệt Tốc Độ Trong Thế Giới Job Queue Node.js]]></title>
                        <link>https://viblo.asia/p/series-bee-queue-bai-1-bee-queue-la-gi-quai-kiet-toc-do-trong-the-gioi-job-queue-nodejs-kY4gDlzZJAe</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-bee-queue-bai-1-bee-queue-la-gi-quai-kiet-toc-do-trong-the-gioi-job-queue-nodejs-kY4gDlzZJAe</guid>
            <description><![CDATA[Hãy tưởng tượng bạn đang xây dựng một tính năng mà khi người dùng bấm nút "Đặt hàng thành công", hệ thống của bạn phải thực hiện một chuỗi tác vụ: tạo...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-06-30 19:32:15</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Series VS Code Bài 1: Giải Mã VS Code - Tại Sao Một &quot;Text Editor&quot; Lại Bá Chủ Thế Giới Lập Trình?]]></title>
                        <link>https://viblo.asia/p/series-vs-code-bai-1-giai-ma-vs-code-tai-sao-mot-text-editor-lai-ba-chu-the-gioi-lap-trinh-PoL7eBpj4vk</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-vs-code-bai-1-giai-ma-vs-code-tai-sao-mot-text-editor-lai-ba-chu-the-gioi-lap-trinh-PoL7eBpj4vk</guid>
            <description><![CDATA[Trong thế giới của các chiến binh gõ code, cuộc chiến về công cụ (Editor/IDE) chưa bao giờ hạ nhiệt. Chúng ta từng có thời kỳ hoàng kim của Sublime Te...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-06-29 13:05:28</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series Die-To-Redeliver] Phần 1: Tư duy &quot;Thà chết chứ không giấu lỗi&quot; (Crash-Only Software)]]></title>
                        <link>https://viblo.asia/p/series-die-to-redeliver-phan-1-tu-duy-tha-chet-chu-khong-giau-loi-crash-only-software-gdJzvGMkJz5</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-die-to-redeliver-phan-1-tu-duy-tha-chet-chu-khong-giau-loi-crash-only-software-gdJzvGMkJz5</guid>
            <description><![CDATA[Chào anh em,

Trong suốt những năm tháng làm nghề và review code, mình nhận thấy có một thói quen rất phổ biến mà hầu như anh em dev nào (kể cả mình n...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-30 18:08:04</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Sếp yêu cầu Export 1 triệu dòng Excel: Cẩm nang sinh tồn từ Backend đến Frontend để Server không &quot;đột tử&quot;]]></title>
                        <link>https://viblo.asia/p/sep-yeu-cau-export-1-trieu-dong-excel-cam-nang-sinh-ton-tu-backend-den-frontend-de-server-khong-dot-tu-2vJPdWyqJeK</link>
            <guid isPermaLink="true">https://viblo.asia/p/sep-yeu-cau-export-1-trieu-dong-excel-cam-nang-sinh-ton-tu-backend-den-frontend-de-server-khong-dot-tu-2vJPdWyqJeK</guid>
            <description><![CDATA[Chào anh em cộng đồng Viblo!

Chắc hẳn anh em làm web ai cũng từng nhận một task thế này: "Em làm cho anh cái nút Xuất Excel danh sách đơn hàng tháng ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-15 17:42:44</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Giải mã RdKafka: &quot;Trùm cuối&quot; ẩn mình giúp PHP giao tiếp với Kafka siêu tốc]]></title>
                        <link>https://viblo.asia/p/giai-ma-rdkafka-trum-cuoi-an-minh-giup-php-giao-tiep-voi-kafka-sieu-toc-ZjJYWZEXVOE</link>
            <guid isPermaLink="true">https://viblo.asia/p/giai-ma-rdkafka-trum-cuoi-an-minh-giup-php-giao-tiep-voi-kafka-sieu-toc-ZjJYWZEXVOE</guid>
            <description><![CDATA[Chào anh em cộng đồng Viblo!

Nếu anh em làm Kafka với PHP hoặc Laravel, chắc chắn anh em đã từng phải chạy cái lệnh này trên server hoặc trong Docker...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-15 12:01:10</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Đừng để Redis &quot;bốc khói&quot;: Tuyệt chiêu chống Spike Enqueue với Bulk Dispatch và Master-Worker Pattern]]></title>
                        <link>https://viblo.asia/p/dung-de-redis-boc-khoi-tuyet-chieu-chong-spike-enqueue-voi-bulk-dispatch-va-master-worker-pattern-gjLN0MOd432</link>
            <guid isPermaLink="true">https://viblo.asia/p/dung-de-redis-boc-khoi-tuyet-chieu-chong-spike-enqueue-voi-bulk-dispatch-va-master-worker-pattern-gjLN0MOd432</guid>
            <description><![CDATA[Chào anh em cộng đồng Viblo!

Hãy tưởng tượng một kịch bản thế này: Hệ thống của bạn chuẩn bị chạy chương trình Sale lúc 00:00 đêm. Sếp yêu cầu đúng 0...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-14 17:34:19</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[&quot;Trái tim&quot; của mọi hệ thống Backend: Giải phẫu Nginx, Reverse Proxy và nguyên lý Event-Driven]]></title>
                        <link>https://viblo.asia/p/trai-tim-cua-moi-he-thong-backend-giai-phau-nginx-reverse-proxy-va-nguyen-ly-event-driven-AY4qQdxw4Pw</link>
            <guid isPermaLink="true">https://viblo.asia/p/trai-tim-cua-moi-he-thong-backend-giai-phau-nginx-reverse-proxy-va-nguyen-ly-event-driven-AY4qQdxw4Pw</guid>
            <description><![CDATA[Chào anh em cộng đồng Viblo!

Ở bài viết trước về PHP-FPM, mình có ví von Nginx giống như một "Anh lễ tân" đứng đón khách, còn PHP-FPM là "Nhà bếp". L...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-13 11:59:56</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[C++ OOP Thực Chiến] Bài 41: Các kiểu kế thừa - Khám phá &quot;gia phả&quot; của hệ thống Class]]></title>
                        <link>https://viblo.asia/p/c-oop-thuc-chien-bai-41-cac-kieu-ke-thua-kham-pha-gia-pha-cua-he-thong-class-ZjJYWZXMVOE</link>
            <guid isPermaLink="true">https://viblo.asia/p/c-oop-thuc-chien-bai-41-cac-kieu-ke-thua-kham-pha-gia-pha-cua-he-thong-class-ZjJYWZXMVOE</guid>
            <description><![CDATA[Chào anh em! Từ đầu chương Kế thừa đến giờ, chúng ta thường xuyên làm việc với cấu trúc 1 Lớp Cha đẻ ra 1 Lớp Con. Nhưng thế giới phần mềm rộng lớn hơ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-06-03 15:25:36</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Bỏ ngay thói quen &quot;If-Else&quot; lồng nhau: Tuyệt chiêu Guard Clause cứu rỗi những dòng code &quot;mì tôm&quot;]]></title>
                        <link>https://viblo.asia/p/bo-ngay-thoi-quen-if-else-long-nhau-tuyet-chieu-guard-clause-cuu-roi-nhung-dong-code-mi-tom-AWVpXgPaV05</link>
            <guid isPermaLink="true">https://viblo.asia/p/bo-ngay-thoi-quen-if-else-long-nhau-tuyet-chieu-guard-clause-cuu-roi-nhung-dong-code-mi-tom-AWVpXgPaV05</guid>
            <description><![CDATA[Chào anh em cộng đồng Viblo!

Nhớ lại thời chúng ta còn mài đũng quần trên ghế nhà trường, môn Lập trình hướng đối tượng (OOP) với C++ hay Java luôn l...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-12 21:25:28</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Abstract Class là gì? Đừng nhầm lẫn nó với Interface nữa!]]></title>
                        <link>https://viblo.asia/p/abstract-class-la-gi-dung-nham-lan-no-voi-interface-nua-AoJe8zyD41j</link>
            <guid isPermaLink="true">https://viblo.asia/p/abstract-class-la-gi-dung-nham-lan-no-voi-interface-nua-AoJe8zyD41j</guid>
            <description><![CDATA[Chào anh em cộng đồng Viblo!

Nhớ lại thời chúng ta còn mài đũng quần trên ghế nhà trường, môn Lập trình hướng đối tượng (OOP) với C++ hay Java luôn l...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-12 15:47:32</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Đừng để code ngập ngụa trong IF-ELSE: Giải cứu Backend với Strategy Pattern]]></title>
                        <link>https://viblo.asia/p/dung-de-code-ngap-ngua-trong-if-else-giai-cuu-backend-voi-strategy-pattern-18J2ej2q4YK</link>
            <guid isPermaLink="true">https://viblo.asia/p/dung-de-code-ngap-ngua-trong-if-else-giai-cuu-backend-voi-strategy-pattern-18J2ej2q4YK</guid>
            <description><![CDATA[Chào anh em đồng âm Viblo!

Hôm nay chúng ta sẽ bàn về một chủ đề muôn thuở trong thiết kế phần mềm. Bạn đã bao giờ nhìn vào một function dài 500 dòng...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-10 08:50:52</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[C++ OOP Thực Chiến] Bài 35: Đặc tính cơ bản của kế thừa đơn - Sự truyền ngôi của các Class!]]></title>
                        <link>https://viblo.asia/p/c-oop-thuc-chien-bai-35-dac-tinh-co-ban-cua-ke-thua-don-su-truyen-ngoi-cua-cac-class-ymJXDQ15Jkq</link>
            <guid isPermaLink="true">https://viblo.asia/p/c-oop-thuc-chien-bai-35-dac-tinh-co-ban-cua-ke-thua-don-su-truyen-ngoi-cua-cac-class-ymJXDQ15Jkq</guid>
            <description><![CDATA[Chào anh em! Hãy tưởng tượng bạn đang viết phần mềm quản lý nhân sự cho một công ty IT.
Ban đầu, bạn tạo một Class NhanVien với các thuộc tính cơ bản:...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-10 11:19:25</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Đừng nhầm lẫn giữa &quot;Toy Project&quot; và &quot;Hệ thống Enterprise&quot; - Giải mã xương sống của doanh nghiệp lớn]]></title>
                        <link>https://viblo.asia/p/dung-nham-lan-giua-toy-project-va-he-thong-enterprise-giai-ma-xuong-song-cua-doanh-nghiep-lon-13VM9DvGVY7</link>
            <guid isPermaLink="true">https://viblo.asia/p/dung-nham-lan-giua-toy-project-va-he-thong-enterprise-giai-ma-xuong-song-cua-doanh-nghiep-lon-13VM9DvGVY7</guid>
            <description><![CDATA[Rất nhiều anh em dev trẻ khi làm xong một cái web bán hàng bằng Laravel hay React, thấy nó chạy mượt mà trên server là bắt đầu ảo tưởng sức mạnh, nghĩ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-29 11:44:42</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[C++ OOP Thực Chiến] Bài 27: Toán tử số đối (Non-member function) - Góc nhìn từ bên ngoài pháo đài]]></title>
                        <link>https://viblo.asia/p/c-oop-thuc-chien-bai-27-toan-tu-so-doi-non-member-function-goc-nhin-tu-ben-ngoai-phao-dai-bA468B5GLKv</link>
            <guid isPermaLink="true">https://viblo.asia/p/c-oop-thuc-chien-bai-27-toan-tu-so-doi-non-member-function-goc-nhin-tu-ben-ngoai-phao-dai-bA468B5GLKv</guid>
            <description><![CDATA[Chào anh em! Ở [Bài 25], chúng ta đã nạp chồng toán tử số đối (Unary Minus -) bằng cách viết hàm trực tiếp vào bên trong Class. Lợi thế là chúng ta ch...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-22 16:30:53</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[C++ OOP Thực Chiến] Bài 24: Giới thiệu Nạp chồng toán tử (Operator Overloading) - Phép thuật thao túng C++]]></title>
                        <link>https://viblo.asia/p/c-oop-thuc-chien-bai-24-gioi-thieu-nap-chong-toan-tu-operator-overloading-phep-thuat-thao-tung-c-XP4WE2NoL7G</link>
            <guid isPermaLink="true">https://viblo.asia/p/c-oop-thuc-chien-bai-24-gioi-thieu-nap-chong-toan-tu-operator-overloading-phep-thuat-thao-tung-c-XP4WE2NoL7G</guid>
            <description><![CDATA[Chào anh em! Ở [Bài 23], chúng ta đã giải quyết bài toán cộng phân số bằng cách gọi hàm:
PhanSo tong = ToanHoc::cong(ps1, ps2);

Tuy nhiên, đối với mộ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-22 07:34:23</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[C++ OOP Thực Chiến] Bài 23: Lớp bạn (Friend Class) - Khi một người bạn được giao &quot;chìa khóa nhà&quot;]]></title>
                        <link>https://viblo.asia/p/c-oop-thuc-chien-bai-23-lop-ban-friend-class-khi-mot-nguoi-ban-duoc-giao-chia-khoa-nha-ZoJjeGl74Y7</link>
            <guid isPermaLink="true">https://viblo.asia/p/c-oop-thuc-chien-bai-23-lop-ban-friend-class-khi-mot-nguoi-ban-duoc-giao-chia-khoa-nha-ZoJjeGl74Y7</guid>
            <description><![CDATA[Chào anh em! Ở [Bài 22], chúng ta đã biết cách "mở cửa hậu" cho một hàm tự do bằng từ khóa friend.

Nhưng hãy tưởng tượng, bạn đang viết một hệ thống ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-21 22:15:41</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[C++ OOP Thực Chiến] Bài 9: Định nghĩa phương thức bằng cách chia file - Giải mã &quot;lời nguyền&quot; Include chéo]]></title>
                        <link>https://viblo.asia/p/c-oop-thuc-chien-bai-9-dinh-nghia-phuong-thuc-bang-cach-chia-file-giai-ma-loi-nguyen-include-cheo-kY4gDY8RJAe</link>
            <guid isPermaLink="true">https://viblo.asia/p/c-oop-thuc-chien-bai-9-dinh-nghia-phuong-thuc-bang-cach-chia-file-giai-ma-loi-nguyen-include-cheo-kY4gDY8RJAe</guid>
            <description><![CDATA[Chào anh em! Trong các bài trước, chúng ta đã thống nhất quy tắc Vàng của một Kỹ sư C++: File Header (.h) là Menu (khai báo), File Source (.cpp) là Nh...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-19 09:31:52</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[C++ OOP Thực Chiến] Bài 7: Khai báo Class chuẩn dự án - Tạm biệt &quot;nồi lẩu&quot; main.cpp!]]></title>
                        <link>https://viblo.asia/p/c-oop-thuc-chien-bai-7-khai-bao-class-chuan-du-an-tam-biet-noi-lau-maincpp-RlL5eQl8LbB</link>
            <guid isPermaLink="true">https://viblo.asia/p/c-oop-thuc-chien-bai-7-khai-bao-class-chuan-du-an-tam-biet-noi-lau-maincpp-RlL5eQl8LbB</guid>
            <description><![CDATA[Chào anh em! Nếu anh em đã đi cùng mình qua 6 bài trước và nắm vững 4 trụ cột của OOP, thì xin chúc mừng, anh em đã có tư duy của một Kỹ sư phần mềm.
...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-19 07:55:49</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Giải Phẫu In-Memory Database: Tại Sao RAM Lại Đánh Bại Mọi Ổ Cứng SSD?]]></title>
                        <link>https://viblo.asia/p/giai-phau-in-memory-database-tai-sao-ram-lai-danh-bai-moi-o-cung-ssd-XP4WEoyrL7G</link>
            <guid isPermaLink="true">https://viblo.asia/p/giai-phau-in-memory-database-tai-sao-ram-lai-danh-bai-moi-o-cung-ssd-XP4WEoyrL7G</guid>
            <description><![CDATA[Ở bài trước, chúng ta đã lột tả sự lợi hại của phần "Data Structure" (Cấu trúc dữ liệu như List, Set, Hash). Hôm nay, chúng ta sẽ đào sâu vào phần đầu...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-16 09:36:25</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Tạo Server Node.js Đầu Tiên: Vượt Qua &quot;Hello World&quot; Để Chạm Tới Chuẩn Production]]></title>
                        <link>https://viblo.asia/p/tao-server-nodejs-dau-tien-vuot-qua-hello-world-de-cham-toi-chuan-production-y0VGwGZzVPA</link>
            <guid isPermaLink="true">https://viblo.asia/p/tao-server-nodejs-dau-tien-vuot-qua-hello-world-de-cham-toi-chuan-production-y0VGwGZzVPA</guid>
            <description><![CDATA[Bất kỳ ai học Node.js cũng bắt đầu bằng bài toán "Tạo Server". Chỉ tốn đúng 5 dòng code và 10 giây để in ra chữ "Hello World". Nhưng mang 5 dòng code ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-14 23:18:06</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Imperative CLI: Tư Duy &quot;Cầm Tay Chỉ Việc&quot; &amp; Sự Tiến Hóa Lên Declarative]]></title>
                        <link>https://viblo.asia/p/imperative-cli-tu-duy-cam-tay-chi-viec-su-tien-hoa-len-declarative-XP4WEo7qL7G</link>
            <guid isPermaLink="true">https://viblo.asia/p/imperative-cli-tu-duy-cam-tay-chi-viec-su-tien-hoa-len-declarative-XP4WEo7qL7G</guid>
            <description><![CDATA[Hồi mới tập tành làm DevOps kiêm Backend, mình từng viết một cái shell script (bash) cực kỳ tâm huyết để tự động hóa việc deploy con app Node.js lên s...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-14 17:22:08</pubDate>
                                                                                                        </item>
            </channel>
</rss>
