<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>HuyDQ&#39;s Blog</title>
    <link>https://robinhuy.github.io/</link>
    <description>Recent content on HuyDQ&#39;s Blog</description>
    <image>
      <url>https://robinhuy.github.io/icons/dragon-thumbnail.png</url>
      <link>https://robinhuy.github.io/icons/dragon-thumbnail.png</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Tue, 22 Oct 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://robinhuy.github.io/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Luyện JavaScript bằng cách viết script auto cho game</title>
      <link>https://robinhuy.github.io/blog/luyen-javascript-bang-cach-viet-tool-auto/</link>
      <pubDate>Tue, 22 Oct 2024 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/luyen-javascript-bang-cach-viet-tool-auto/</guid>
      <description>Thay vì các tutorial với các ví dụ basic nhàm chán, nay mình sẽ chuyển sang hướng dẫn lập trình bằng một cái thú vị hơn, đó là viết script auto cho game.
Game mà dùng JavaScript thì dễ nhất tất nhiên là dạng web base rồi. Mình sẽ hướng dẫn với game này (tranh thủ kiếm ref trá hình 😂): https://t.me/seed_coin_bot/app?startapp=1369475670.
Game này là một mini app trên Telegram nên chỉ cần có tài khoản Telegram là chơi được, không cần cài cắm thêm gì cả (đỡ lo bị hack).</description>
    </item>
    
    <item>
      <title>Chia sẻ kinh nghiệm làm dự án startup</title>
      <link>https://robinhuy.github.io/blog/chia-se-kinh-nghiem-lam-du-an-startup/</link>
      <pubDate>Thu, 30 May 2024 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/chia-se-kinh-nghiem-lam-du-an-startup/</guid>
      <description>Bài viết chia sẻ một số kinh nghiệm về làm dự án start up công nghệ với vai trò là một lập trình viên (Dev). Còn nếu bạn muốn xem chia sẻ kinh nghiệm về làm các dự án maintain cho lập trình viên thì xem ở đây nhé.
Về đặc điểm chung thì các dự án startup thường là:
 Các dự án mới, nhiều khi ý tưởng chưa rõ ràng, requirement chưa đầy đủ.</description>
    </item>
    
    <item>
      <title>Chia sẻ kinh nghiệm làm dự án maintain</title>
      <link>https://robinhuy.github.io/blog/chia-se-kinh-nghiem-lam-du-an-maintain/</link>
      <pubDate>Sun, 26 May 2024 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/chia-se-kinh-nghiem-lam-du-an-maintain/</guid>
      <description>Đã là lập trình viên thì chắc bạn sẽ không thể tránh khỏi phải làm các dự án maintain (bảo trì dự án, fix bug, &amp;hellip;), chỉ là sớm hay muộn 😅
Thực tế thì mình hay làm sản phẩm mới hơn, kinh nghiệm làm dự án maintain cũng không nhiều. Nhưng trong quá trình làm các dự án kiểu này mình cũng có đúc kết được một vài kinh nghiệm, liệt kê ra đây để cho anh chị em nào mới join các dự án dạng này đỡ bỡ ngỡ.</description>
    </item>
    
    <item>
      <title>Xử lý bất đồng bộ trong JavaScript Phần 2</title>
      <link>https://robinhuy.github.io/blog/xu-ly-bat-dong-bo-trong-javascript-phan-2/</link>
      <pubDate>Thu, 09 May 2024 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/xu-ly-bat-dong-bo-trong-javascript-phan-2/</guid>
      <description>Tiếp tục với Xử lý bất đồng bộ trong JavaScript Phần 1.
Phần này mình sẽ chuyển qua demo với Promise, Async await, &amp;hellip; cho nó quen thuộc.
Lý thuyết Lý thuyết thì các bạn có thể tra cứu tại đây Promises, async/await.
Hoặc tiện hơn thì các bạn có thể hỏi ChatGPT:
Ví dụ Thay vì dùng các ví dụ như của ChatGPT, thì mình sẽ vẫn sử dụng các ví dụ như ở phần trước, chỉ thay Callback bằng Promise và Async/await.</description>
    </item>
    
    <item>
      <title>Xử lý bất đồng bộ trong JavaScript Phần 1</title>
      <link>https://robinhuy.github.io/blog/xu-ly-bat-dong-bo-trong-javascript-phan-1/</link>
      <pubDate>Sun, 25 Feb 2024 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/xu-ly-bat-dong-bo-trong-javascript-phan-1/</guid>
      <description>Lập trình bất đồng bộ (asynchronous programming) là một trong những vấn đề cơ bản trong JavaScript, nhưng không phải ai cũng hiểu cặn kẽ, đa số chỉ làm theo thói quen. Mình đã làm một số dự án maintain và thấy rất nhiều lỗi khi xử lý bất đồng bộ khiến cho chương trình bị chạy chậm hoặc bị sai logic. Lúc mới phát triển dự án thì sẽ chưa thấy ảnh hưởng gì nhưng sau khi dữ liệu đủ lớn thì sẽ gây giật, lag hoặc một số bug tiềm ẩn.</description>
    </item>
    
    <item>
      <title>Kinh nghiệm du lịch tự túc Huế 2023</title>
      <link>https://robinhuy.github.io/blog/kinh-nghiem-du-lich-tu-tuc-hue-2023/</link>
      <pubDate>Fri, 07 Jul 2023 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/kinh-nghiem-du-lich-tu-tuc-hue-2023/</guid>
      <description>Để đúng với tinh thần là một blog cá nhân, không phải blog chuyên về công nghệ (lập trình), hôm nay mình sẽ chia sẻ với các bạn một số kinh nghiệm cá nhân khi đi du lịch tự túc tại Huế (mình thích đi tự túc để chủ động hơn và không bị chạy xô quá).
Di chuyển Đến Huế các bạn có thể đi máy bay, xe khách hoặc tàu hỏa.</description>
    </item>
    
    <item>
      <title>Một số trang web cho phép tạo ảnh bằng cách gõ text</title>
      <link>https://robinhuy.github.io/blog/mot-so-trang-web-cho-phep-tao-anh-bang-cach-go-text/</link>
      <pubDate>Sun, 26 Feb 2023 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/mot-so-trang-web-cho-phep-tao-anh-bang-cach-go-text/</guid>
      <description>Hiện có rất nhiều website và ứng dụng di động cho phép những người thường (không phải designer hay họa sĩ) cũng có thể vẽ ra những bức tranh đẹp, sử dụng được cho mục đích cá nhân (và cả thương mại). Để vẽ tranh lúc này chỉ cần có ý tưởng và biết Tiếng Anh để mô tả chính xác ý tưởng của mình.
Tham khảo bài viết này để nâng trình Tiếng Anh của mình nhé.</description>
    </item>
    
    <item>
      <title>Ref và Reactive trong Vue 3</title>
      <link>https://robinhuy.github.io/blog/ref-va-reactive-trong-vue-3/</link>
      <pubDate>Sat, 04 Feb 2023 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/ref-va-reactive-trong-vue-3/</guid>
      <description>Trong Vue 3 có hai Reactivity API mà dễ làm newbie gây nhầm lẫn khi sử dụng đó là ref và reactive. Bài viết này mình sẽ hướng dẫn cách sử dụng 2 API trên, kèm một số so sánh với Vue 2 cho những ai mới chuyển từ Vue 2 lên Vue 3.
Ref Ví dụ đơn giản khi thay đổi một reactive state bằng Vue 2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  &amp;lt;script&amp;gt; export default {  data() {  return {  count: 0,  };  },   methods: {  increaseCount() {  this.</description>
    </item>
    
    <item>
      <title>Hướng dẫn tạo tài khoản và sử dụng ChatGPT chỉ với 1 cốc trà đá</title>
      <link>https://robinhuy.github.io/blog/huong-dan-tao-tai-khoan-va-su-dung-chatgpt-chi-voi-1-coc-tra-da/</link>
      <pubDate>Wed, 01 Feb 2023 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/huong-dan-tao-tai-khoan-va-su-dung-chatgpt-chi-voi-1-coc-tra-da/</guid>
      <description>Dạo này ChatGPT đang rất hot, được thần thành hóa lên quá khiến nhiều người lo sợ nó sẽ &amp;ldquo;cướp&amp;rdquo; mất công việc của mình. Vậy ChatGPT cụ thể là gì, dùng như nào?
  ChatGPT thập niên 90 😂   Bài viết này mình sẽ hướng dẫn các bạn tự tạo tài khoản cho riêng mình và trải nghiệm thử ChatGPT, một công cụ khá hữu ích nếu bạn sử dụng đúng cách.</description>
    </item>
    
    <item>
      <title>Chia sẻ cách học Tiếng Anh cho người nghèo</title>
      <link>https://robinhuy.github.io/blog/chia-se-cach-hoc-tieng-anh-cho-nguoi-ngheo/</link>
      <pubDate>Wed, 11 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/chia-se-cach-hoc-tieng-anh-cho-nguoi-ngheo/</guid>
      <description>Nếu bạn có điều kiện tài chính thì nên kiếm nguồn tài liệu hoặc khóa học nào mất phí nhưng chất lượng để có thể thông thạo Tiếng Anh càng nhanh càng tốt. Giỏi Tiếng Anh sẽ mang lại cho bạn rất nhiều lợi ích so với chi phí bỏ ra.
Ok, trước khi đọc tiếp, bạn thử bỏ ra 5 phút suy nghĩ để trả lời câu hỏi sau:</description>
    </item>
    
    <item>
      <title>Cách tự thay dây đàn Guitar Acoustic tại nhà từ a-Z, ai cũng làm được</title>
      <link>https://robinhuy.github.io/blog/cach-tu-thay-day-dan-guitar-acoustic-tai-nha-tu-a-z-ai-cung-lam-duoc/</link>
      <pubDate>Sat, 24 Dec 2022 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/cach-tu-thay-day-dan-guitar-acoustic-tai-nha-tu-a-z-ai-cung-lam-duoc/</guid>
      <description>Với những ai mới học chơi đàn (Guitar Acoustic) thì có cần học cách tự thay dây không? Dây đàn đứt thì làm thế nào?
Theo ý kiến của mình thì không cần học cách tự thay dây, mang đàn ra tiệm chọn dây rồi người ta thay luôn cho mình là xong.
Thế thì mình viết bài này để làm gì? Để cho những người lười như mình, lười mang đàn ra tiệm (nếu như tiệm ở xa), hoặc chỉ đơn giản là để biết, thêm 1 kỹ năng thì cũng không thiệt đúng không?</description>
    </item>
    
    <item>
      <title>Debug bằng console.log theo cách PRO hơn</title>
      <link>https://robinhuy.github.io/blog/debug-bang-console-log-theo-cach-pro-hon/</link>
      <pubDate>Tue, 20 Sep 2022 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/debug-bang-console-log-theo-cach-pro-hon/</guid>
      <description>Khi code các dự án bằng JavaScript (hoặc NodeJS) thì có nhiều tool để debug, nhưng mình vẫn hay debug theo kiểu nông dân đó là dùng console.log. Những ai có cùng sở thích như vậy thì có thể tham khảo bài viết này để có thể log một cách pro hơn
Có nhiều loại log ngoài console.log Console là một object, và nó có nhiều phương thức khác nhau. Trong đó .</description>
    </item>
    
    <item>
      <title>Tạo App Launcher icon cho React Native app (Android &#43; iOS)</title>
      <link>https://robinhuy.github.io/blog/tao-app-launcher-icon-cho-react-native-app-android-ios/</link>
      <pubDate>Mon, 08 Aug 2022 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/tao-app-launcher-icon-cho-react-native-app-android-ios/</guid>
      <description>Trước khi đẩy app lên Store, chúng ta sẽ cần tạo App Launcher Icon (icon của ứng dụng trên máy của người dùng). App code bằng React Native sẽ có thể đẩy lên cả Google Play (Android) và App Store (iOS), do đó mình sẽ hướng dẫn cách tạo App Launcher Icon cho cả 2 hệ hiều hành trên.
Để tạo bộ icon cho các thiết bị với kích thước khác nhau (dùng cho cả trên store) thì chúng ta cần chuẩn bị sẵn 1 icon gốc với kích thước 1024x1024 pixels.</description>
    </item>
    
    <item>
      <title>Cách tạo một trang blog cá nhân miễn phí dành cho dev</title>
      <link>https://robinhuy.github.io/blog/cach-tao-mot-trang-blog-ca-nhan-mien-phi-danh-cho-dev/</link>
      <pubDate>Wed, 01 Jun 2022 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/cach-tao-mot-trang-blog-ca-nhan-mien-phi-danh-cho-dev/</guid>
      <description>Vào một ngày đẹp trời, bỗng dưng mình nảy ra ý định làm một trang blog cá nhân thay vì viết Blog trên các nền tảng có sẵn như viblo.asia, techmaster.vn, &amp;hellip; Tất nhiên các bài viết mới vẫn sẽ đăng lên các nền tảng này để kiếm người đọc chứ blog này ma nó đọc 😅).
Ý tưởng có rồi, nhưng thực hiện như nào, sử dụng công nghệ nào, chi phí như nào?</description>
    </item>
    
    <item>
      <title>Tạo hiệu ứng transition cho React App với React Transition Group</title>
      <link>https://robinhuy.github.io/blog/tao-hieu-ung-transition-cho-react-app-voi-react-transition-group/</link>
      <pubDate>Tue, 14 Dec 2021 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/tao-hieu-ung-transition-cho-react-app-voi-react-transition-group/</guid>
      <description>Để cho các App React hoạt động mượt mà hơn, đẹp hơn, trải nghiệm người dùng tốt hơn, &amp;hellip; thì nên có thêm các hiệu ứng animation, transition.
Bài viết này mình sẽ hướng dẫn các bạn sử dụng thư viện React Transition Group để tạo hiệu ứng transition một cách nhanh chóng.
Để cho tiện thì mình sẽ demo code trên stackblitz.com. Trong ví dụ sẽ sử dụng cả React Router v6 để cấu hình multiple page, và có hiệu ứng transition giữa các page.</description>
    </item>
    
    <item>
      <title>Hướng dẫn sử dụng RTK Query trong Redux Toolkit</title>
      <link>https://robinhuy.github.io/blog/huong-dan-su-dung-rtk-query-trong-redux-toolkit/</link>
      <pubDate>Wed, 13 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/huong-dan-su-dung-rtk-query-trong-redux-toolkit/</guid>
      <description>RTK Query là một addon trong bộ thư viện Redux Toolkit. Nó giúp chúng ta thực hiện data fetching một cách đơn giản hơn thay vì sử dụng createAsyncThunk để thực hiện async action. Chú ý RTK Query là dùng để query (kết nối API), chứ không phải dùng để code async trong Redux thay cho createAsyncThunk.
Nếu bạn chưa từng sử dụng Redux Toolkit thì có thể xem bài hướng dẫn này trước: Hướng dẫn sử dụng React Router và Redux Toolkit.</description>
    </item>
    
    <item>
      <title>Hướng dẫn sử dụng createAsyncThunk trong Redux Toolkit</title>
      <link>https://robinhuy.github.io/blog/huong-dan-su-dung-createasyncthunk-trong-redux-toolkit/</link>
      <pubDate>Tue, 12 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/huong-dan-su-dung-createasyncthunk-trong-redux-toolkit/</guid>
      <description>Nếu bạn chưa từng sử dụng Redux Toolkit thì có thể xem bài hướng dẫn này trước: Hướng dẫn sử dụng React Router và Redux Toolkit.
Bài viết này mình sẽ hướng dẫn cách thực hiện các async logic (xử lý bất đồng bộ) trong Redux Toolkit, cụ thể là sử dụng createAsyncThunk để kết nối với API login.
Ví dụ demo chúng ta có thể lấy luôn từ ví dụ trước rồi cải tiến thêm: https://stackblitz.</description>
    </item>
    
    <item>
      <title>Tái sử dụng code cho nhiều project với Git Submodules</title>
      <link>https://robinhuy.github.io/blog/tai-su-dung-code-cho-nhieu-project-voi-git-submodules/</link>
      <pubDate>Sun, 18 Jul 2021 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/tai-su-dung-code-cho-nhieu-project-voi-git-submodules/</guid>
      <description>Trong một project sẽ có những đoạn code có thể tái sử dụng ở nhiều nơi, thường đặt ở trong các thư mục đại loại như: helper, utils, &amp;hellip; Vậy nếu những đoạn code đó lại được tái sử dụng ở nhiều project thì sao?
Có nhiều phương pháp áp dụng như: Git Submodules, Monorepos, Bit, &amp;hellip; hay tạo hẳn thư viện riêng và đẩy lên cloud.
Trong bài viết này mình sẽ hướng dẫn các bạn cách sử dụng Git Submodules cho việc tái sử dụng code.</description>
    </item>
    
    <item>
      <title>Tối ưu static website với Webpack</title>
      <link>https://robinhuy.github.io/blog/toi-uu-static-page-voi-webpack/</link>
      <pubDate>Sat, 19 Jun 2021 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/toi-uu-static-page-voi-webpack/</guid>
      <description>Nếu bạn là một Web Frontend Developer thì chắc sẽ không xa lạ gì với Webpack, một công cụ bundle code mạnh mẽ. Webpack thường được tích hợp sẵn trong các thư viện như React, Angular, Vue, … và có nhiều người thậm chí còn không biết đến sự tồn tại cũng như tác dụng của nó 😅
Bài viết này mình sẽ hướng dẫn các bạn cách tối ưu một static website (web tĩnh chỉ gồm HTML CSS JS) bằng Webpack.</description>
    </item>
    
    <item>
      <title>Các cách tạo web tĩnh với Github</title>
      <link>https://robinhuy.github.io/blog/cac-cach-tao-web-tinh-voi-github/</link>
      <pubDate>Sun, 30 May 2021 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/cac-cach-tao-web-tinh-voi-github/</guid>
      <description>Bạn có 1 trang web tĩnh (static web chỉ gồm HTML CSS JS) và muốn đẩy lên mạng để chia sẻ cho người khác mà không mất phí? Hãy tận dụng Github - nền tảng lưu trữ, quản lý và chia sẻ mã nguồn mở hàng đầu hiện nay.
Ngoài việc lưu trữ và quản lý mã nguồn, Github còn cung cấp một dịch vụ cho phép hosting static web là Github Pages.</description>
    </item>
    
    <item>
      <title>Các cách đẩy code lên Github</title>
      <link>https://robinhuy.github.io/blog/cac-cach-day-code-len-github/</link>
      <pubDate>Sat, 29 May 2021 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/cac-cach-day-code-len-github/</guid>
      <description>Github là một dịch vụ cung cấp kho lưu trữ (repository) mã nguồn Git trên nền tảng Web.
Chúng ta đẩy code lên trên Github để quản lý và chia sẻ code dễ dàng hơn, giúp làm việc nhóm một cách hiệu quả.
 Ngoài ra đẩy code lên Github còn giúp chúng ta tạo ra các static page một cách nhanh chóng và miễn phí, tham khảo bài viết này Các cách tạo web tĩnh với Github.</description>
    </item>
    
    <item>
      <title>Hướng dẫn sử dụng React Router và Redux Toolkit</title>
      <link>https://robinhuy.github.io/blog/huong-dan-su-dung-react-router-va-redux-toolkit/</link>
      <pubDate>Thu, 29 Apr 2021 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/huong-dan-su-dung-react-router-va-redux-toolkit/</guid>
      <description>Với những người mới học React thì Redux thực sự là một cơn ác mộng. Cũng giống như bạn đang code jQuery quen và chuyển sang React, đang chỉnh sửa DOM trực tiếp lại phải chuyển qua dùng state, …
Vậy để làm quen với Redux một cách nhanh nhất, chúng ta sẽ thử làm 1 ứng dụng đơn giản như sau:
 Một website có 2 trang: Dashboard và Login.</description>
    </item>
    
    <item>
      <title>Sử dụng useState() Hook trong React như nào cho đúng?</title>
      <link>https://robinhuy.github.io/blog/su-dung-usestate-hook-trong-react-nhu-nao-cho-dung/</link>
      <pubDate>Mon, 22 Feb 2021 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/su-dung-usestate-hook-trong-react-nhu-nao-cho-dung/</guid>
      <description>Để quản lý State trong React Function Component, chúng ta dùng Hook useState().
Hàm useState trả về 1 mảng 2 phần tử, phần tử đầu tiên là để khởi tạo state, phần tử thứ 2 là hàm để cập nhật state. Tham số truyền vào hàm useState là giá trị khởi tạo của state. Ví dụ:
Khai báo State Phải khai báo useState ở top level của một Function Component (hoặc một custom Hook), không khai báo ở trong một scope nào khác như vòng lặp, điều kiện, hay function con.</description>
    </item>
    
    <item>
      <title>Kiến thức Javascript cơ bản cần phải biết trước khi học React Native / ReactJS</title>
      <link>https://robinhuy.github.io/blog/kien-thuc-javascript-co-ban-can-phai-biet-truoc-khi-hoc-react-native-reactjs/</link>
      <pubDate>Wed, 20 Jan 2021 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/kien-thuc-javascript-co-ban-can-phai-biet-truoc-khi-hoc-react-native-reactjs/</guid>
      <description>ReactJS là một Javascript framework rất phổ biến với giới lập trình Web Frontend hiện nay, số lượng tuyển dụng lập trình viên ReactJS cũng rất lớn. Do đó nhiều người mới học Web Frontend sau khi học xong một chút HTML CSS JS là muốn nhảy vào lập trình ReactJS ngay. Điều này dẫn đến hệ lụy là các bạn sẽ bị hổng kiến thức cơ bản, hoặc khi học ReactJS sẽ rất chật vật vì không hiểu cú pháp, không hiểu bản chất, &amp;hellip;</description>
    </item>
    
    <item>
      <title>Thiết lập môi trường lập trình React Native</title>
      <link>https://robinhuy.github.io/blog/thiet-lap-moi-truong-lap-trinh-react-native/</link>
      <pubDate>Fri, 18 Dec 2020 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/thiet-lap-moi-truong-lap-trinh-react-native/</guid>
      <description>Nếu bạn dùng Mac Bước 1: Cài đặt chung Cài Node và Watchman dùng Homebrew
1 2  brew install node brew install watchman   Riêng với Node có thể cài trực tiếp bằng cách tải bộ cài tại đây https://nodejs.org/en (cài bản LTS) hoặc sử dụng nvm nếu bạn muốn sử dụng node với các phiên bản khác nhau.
Cài Java Development Kit dùng Homebrew
1  brew install --cask adoptopenjdk/openjdk/adoptopenjdk8   Hoặc có thể tải bộ cài tại đây https://www.</description>
    </item>
    
    <item>
      <title>Thủ thuật chèn ảnh trên Github</title>
      <link>https://robinhuy.github.io/blog/thu-thuat-chen-anh-tren-github/</link>
      <pubDate>Sat, 18 Jul 2020 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/thu-thuat-chen-anh-tren-github/</guid>
      <description>Một mã nguồn tốt là mã nguồn có tài liệu hướng dẫn đầy đủ, dễ hiểu, giúp cho người đọc có thể dễ dàng theo dõi và sử dụng.
 Với các mã nguồn trên Github (hoặc các nền tảng tương tự) thì tài liệu hướng dẫn được viết luôn trong file README.md nằm ở ngay thư mục gốc của project. File này được viết bằng cú pháp markdown, chứ không dùng Rich text editor nên cũng sẽ có 1 số hạn chế nhất định.</description>
    </item>
    
    <item>
      <title>Những lỗi cơ bản trong lập trình mà developer nên tránh</title>
      <link>https://robinhuy.github.io/blog/nhung-loi-co-ban-trong-lap-trinh-ma-developer-nen-tranh/</link>
      <pubDate>Fri, 10 Jan 2020 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/nhung-loi-co-ban-trong-lap-trinh-ma-developer-nen-tranh/</guid>
      <description>Không lập trình viên nào code mà không có bug. Tuy nhiên có rất nhiều lỗi cơ bản chúng ta nên tránh để tạo ra ít bug hơn, code sạch và trong sáng hơn, dễ bảo trì hơn, đỡ bị ăn chửi hơn, …
1. Xử lý quá nhiều thứ trong một function Theo nguyên tắc Single Responsibility, một function chỉ nên thực hiện một và chỉ một nhiệm vụ duy nhất.</description>
    </item>
    
    <item>
      <title>Đẩy code Create React App lên Internet miễn phí</title>
      <link>https://robinhuy.github.io/blog/day-code-create-react-app-len-internet-mien-phi/</link>
      <pubDate>Tue, 17 Dec 2019 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/day-code-create-react-app-len-internet-mien-phi/</guid>
      <description>Sau khi code xong 1 ứng dụng bằng Create React App, chúng ta có thể đẩy sản phẩm lên Internet theo 1 trong 3 cách miễn phí sau chỉ với 3 bước (còn nhiều cách khác nhưng tác giả lười viết 😅):
1. Github Pages Giả sử bạn đã có tài khoản trên github là robinhuy, và có 1 repository chứa source code ứng dụng tạo bởi Create React App là react-app.</description>
    </item>
    
    <item>
      <title>Làm sao để thiết kế Form tốt hơn?</title>
      <link>https://robinhuy.github.io/blog/lam-sao-de-thiet-ke-form-tot-hon/</link>
      <pubDate>Thu, 12 Dec 2019 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/lam-sao-de-thiet-ke-form-tot-hon/</guid>
      <description>Bài viết được dịch từ uxdesign.cc, có lược bớt và chỉnh sửa theo sở thích của người dịch 😜
Những lỗi thiết kế form và cách tối ưu Form là một thành phần rất quan trọng trên website. Bài viết này sẽ chỉ ra những điều nên và không nên khi thiết kế Form. Chú ý đây chỉ là đề xuất chứ không phải nguyên lý nên sẽ có ngoại lệ.</description>
    </item>
    
    <item>
      <title>Truyền dữ liệu giữa React Components</title>
      <link>https://robinhuy.github.io/blog/truyen-du-lieu-giua-react-components/</link>
      <pubDate>Wed, 27 Nov 2019 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/truyen-du-lieu-giua-react-components/</guid>
      <description>Bài viết được biên dịch và tóm tắt lại từ https://towardsdatascience.com, code demo được chuyển sang dùng Hooks.
Xử lý dữ liệu trong React có thể hơi khó khăn một chút, nhưng cũng không quá phức tạp. Tôi đã tổng kết lại 3 cách để truyền dữ liệu giữa các Component trong React:
 Từ Parent (Component cha) đến Child (Component con) sử dụng Props. Từ Child đến Parent sử dụng Callbacks.</description>
    </item>
    
    <item>
      <title>Tạo 1 REST API phục vụ cho mục đích học tập trong 30 giây</title>
      <link>https://robinhuy.github.io/blog/tao-1-rest-api-phuc-vu-cho-muc-dich-hoc-tap-trong-30-giay/</link>
      <pubDate>Tue, 29 Oct 2019 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/tao-1-rest-api-phuc-vu-cho-muc-dich-hoc-tap-trong-30-giay/</guid>
      <description>Video demo: https://youtu.be/O6Agt4cLbfo.
Dựng Server local Yêu cầu máy tính đã cài và chạy được Git + NodeJS.
Các bước thực hiện:
  Clone repository sau (hoặc fork về nếu muốn quản lý source code, nhớ star để ủng hộ tác giả): https://github.com/robinhuy/fake-rest-api-nodejs.git
1   git clone https://github.com/robinhuy/fake-rest-api-nodejs.git     Cài đặt dependencies
1 2   cd fake-rest-api-nodejs  npm install     Chạy server</description>
    </item>
    
    <item>
      <title>Code web tĩnh dễ hơn với Pug</title>
      <link>https://robinhuy.github.io/blog/code-web-tinh-de-hon-voi-pug/</link>
      <pubDate>Wed, 04 Sep 2019 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/code-web-tinh-de-hon-voi-pug/</guid>
      <description>Note: Pug ở đây là 1 View Template Engine (chứ không phải tên 1 loại chó), có thể dùng ở cả phía Server lẫn Client. Trong bài viết này sẽ hướng dẫn sử dụng Pug phía client cho Frontend Dev.
Tạo khung project Sau khi đã thiết kế xong giao diện website, chúng ta sẽ bắt đầu xây dựng khung project. Ví dụ cấu trúc thông thường của 1 project web tĩnh:</description>
    </item>
    
    <item>
      <title>Tạo website WordPress miễn phí trên Heroku</title>
      <link>https://robinhuy.github.io/blog/tao-website-wordpress-mien-phi-tren-heroku/</link>
      <pubDate>Mon, 12 Aug 2019 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/tao-website-wordpress-mien-phi-tren-heroku/</guid>
      <description>Thông thường 1 trang web viết bằng WordPress có thể đẩy lên Internet qua Free Hosting, Share Hosting, VPS, &amp;hellip; Với những ai mới học mà muốn tiết kiệm chi phí thì thường dùng Free Hosting, nhưng Free Hosting thường là host nước ngoài, có rất nhiều hạn chế và hay bị lỗi. Trong bài viết này mình sẽ hướng dẫn các bạn tạo một website WordPress miễn phí trên Heroku và chức năng có thể sử dụng gần như thuê 1 con VPS vậy 😎.</description>
    </item>
    
    <item>
      <title>Cơ bản về bảo mật Web</title>
      <link>https://robinhuy.github.io/blog/co-ban-ve-bao-mat-web/</link>
      <pubDate>Thu, 09 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/co-ban-ve-bao-mat-web/</guid>
      <description>Có rất nhiều lý do để học về bảo mật web như:
 Bạn lo lắng về việc để lộ thông tin cá nhân trên mạng. Bạn quan tâm đến tính bảo mật cho website hoặc ứng dụng của mình. Bạn là lập trình viên và đang đi xin việc, bạn muốn chuẩn bị sẵn cho trường hợp nhà tuyển dụng hỏi về các vấn đề bảo mật web.  &amp;hellip; và nhiều lý do khác nữa.</description>
    </item>
    
    <item>
      <title>Quản lý Dependencies trong Go bằng Govendor</title>
      <link>https://robinhuy.github.io/blog/quan-ly-dependencies-trong-go-bang-govendor/</link>
      <pubDate>Mon, 22 Oct 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/quan-ly-dependencies-trong-go-bang-govendor/</guid>
      <description>Để quản lý Dependencies (packages) trong Go chúng ta có thể dùng nhiều tool hỗ trợ. Về bản chất thì chúng tương tự nhau nhưng cũng có nhưng ưu nhược điểm riêng, ví dụ một số tool mình đã từng sử dụng như Dep hoặc Glide (tham khảo bài viết Quản lý package trong Go).
Hiện mình đang sử dụng một tool khác là Govendor, và theo ý kiến cá nhân thì mình thấy tool này dễ sử dụng hơn, và cách cấu hình cũng như hoạt động của nó khá giống với npm trên NodeJS.</description>
    </item>
    
    <item>
      <title>Starbucks không sử dụng Two-Phase Commit</title>
      <link>https://robinhuy.github.io/blog/starbucks-khong-su-dung-two-phase-commit/</link>
      <pubDate>Sat, 20 Oct 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/starbucks-khong-su-dung-two-phase-commit/</guid>
      <description>Tôi vừa trở về sau một chuyến du lịch 2 tuần đến Nhật Bản.
Một trong những hình ảnh quen thuộc ở đây đó là số lượng lớn các cửa hàng cà phê Starbucks, đặc biệt là quanh khu vực Shinjuku và Roppongi. Trong khi chờ đợi một tách ca cao nóng, tôi đã nghĩ về cách thức mà Starbucks phục vụ khách hàng.
Starbucks cũng như hầu hết các công ty khác thì đều muốn tối đa số lượng khách hàng có thể phục vụ.</description>
    </item>
    
    <item>
      <title>Eventual Consistency và Strong Consistency trong hệ thống Cơ sở dữ liệu phân tán</title>
      <link>https://robinhuy.github.io/blog/eventual-consistency-va-strong-consistency-trong-he-thong-co-so-du-lieu-phan-tan/</link>
      <pubDate>Fri, 12 Oct 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/eventual-consistency-va-strong-consistency-trong-he-thong-co-so-du-lieu-phan-tan/</guid>
      <description>Một Database Transaction, theo như định nghĩa sẽ phải thỏa mãn các tính chất sau: Atomic, Consistency, Isolation và Durable (hay thường được gọi là ACID). Bài viết này sẽ tập trung vào tính chất Consistency (tính nhất quán), và so sánh giữa Eventual Consistency với Strong Consistency trong hệ thống Distributed Databases qua các ví dụ đời thường.
Lý thuyết Distributed Database (hệ thống cơ sở dữ liệu phân tán): Là hệ thống Cơ sở dữ liệu (CSDL) mà có thể được phân tải, lưu trữ ở nhiều nơi.</description>
    </item>
    
    <item>
      <title>Những quan niệm sai lầm về CQRS</title>
      <link>https://robinhuy.github.io/blog/nhung-quan-niem-sai-lam-ve-cqrs/</link>
      <pubDate>Thu, 11 Oct 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/nhung-quan-niem-sai-lam-ve-cqrs/</guid>
      <description>Bài viết được dịch (có chỉnh sửa) từ cuốn Patterns Principles and Practices of Domain Driven Design của Scott Millett và Nick Tune, dành cho những ai đã và đang cần tìm hiểu về CQRS (Command Query Responsibility Segregation). Trong bài viết có sử dụng nhiều thuật ngữ chuyên ngành, mình sẽ dẫn link đến các tài liệu Tiếng Anh tương ứng chứ không dịch (không biết dịch như nào hoặc dịch ra nghe rất củ chuối 😬).</description>
    </item>
    
    <item>
      <title>Cookies và vấn đề bảo mật</title>
      <link>https://robinhuy.github.io/blog/cookies-va-van-de-bao-mat/</link>
      <pubDate>Sat, 15 Sep 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/cookies-va-van-de-bao-mat/</guid>
      <description>Chắc hẳn các lập trình viên, đặc biệt là các Backend developer, sẽ không còn xa lạ với Cookie (thường đi kèm với Session). Tuy nhiên nhiều người có thể chưa thực sự hiểu rõ vì nó thường hay được giới thiệu kèm với một ngôn ngữ lập trình phía Backend (ví dụ như PHP, NodeJS, &amp;hellip;) và sử dụng các các thư viện để thao tác. Bài viết này sẽ giới thiệu rõ ràng hơn về Cookie cả phía Backend lẫn Frontend và một số vấn đề bảo mật liên quan đến Cookie để các web developer thận trọng hơn khi sử dụng.</description>
    </item>
    
    <item>
      <title>Validate dữ liệu trong Go sử dụng Govalidator</title>
      <link>https://robinhuy.github.io/blog/validate-du-lieu-trong-go-su-dung-govalidator/</link>
      <pubDate>Fri, 18 May 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/validate-du-lieu-trong-go-su-dung-govalidator/</guid>
      <description>Trong các ứng dụng cho phép người dùng nhập dữ liệu thì đều cần phải có validate để bảo mật và đảm bảo ứng dụng chạy đúng.
Golang có một số thư viện open source hỗ trợ chúng ta làm việc này một cách nhanh chóng, ví dụ như govalidator.
Cài đặt Cài govalidator qua package manager hoặc đơn giản là dùng go get:
1  go get github.com/asaskevich/govalidator   Import vào trong project:</description>
    </item>
    
    <item>
      <title>Golang embedded type - Kế thừa trong Go</title>
      <link>https://robinhuy.github.io/blog/golang-embedded-type-ke-thua-trong-go/</link>
      <pubDate>Wed, 16 May 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/golang-embedded-type-ke-thua-trong-go/</guid>
      <description>Go không phải một ngôn ngữ hướng đối tượng (OOP). Tuy nhiên chúng ta có thể áp dụng một số ưu điểm của hướng đối tượng vào trong Go.
Chúng ta có Struct (tương tự Class), Interface và Method. Để sử dụng thuộc tính &amp;ldquo;kế thừa&amp;rdquo; trong Go ta sẽ dùng embedded type.
Embedded Type là khai báo một type nằm trong một type khác nhưng không khai báo tên, trường mà không khai báo tên còn được gọi là embedded field.</description>
    </item>
    
    <item>
      <title>Quản lý package trong Go</title>
      <link>https://robinhuy.github.io/blog/quan-ly-package-trong-go/</link>
      <pubDate>Fri, 30 Mar 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/quan-ly-package-trong-go/</guid>
      <description>Để sử dụng 1 package trong Go ta dùng lệnh import:
  Với local package (các package nằm trong project) thì ta có thể sử dụng đường dẫn tương đối.
  Với external package (các package bên ngoài project) thì ta sẽ phải cài đặt vào trong $GOPATH (đây là một biến môi trường để thiết lập nơi cài package).
  Để cài đặt package thì chúng ta có thể dùng các cách sau:</description>
    </item>
    
    <item>
      <title>Học Go cấp tốc Phần 5:  Methods và Interfaces</title>
      <link>https://robinhuy.github.io/blog/hoc-go-cap-toc-phan-5-methods-va-interfaces/</link>
      <pubDate>Wed, 21 Mar 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/hoc-go-cap-toc-phan-5-methods-va-interfaces/</guid>
      <description>Các phần trước:
Phần 1: Packages, variables và functions.
Phần 2: Điều khiển luồng với if, else, switch và defer.
Phần 3: Arrays và Slices.
Phần 4: Structs và Maps.
Methods Trong Go không có class, chúng ta có thể dùng struct thay cho class như ở phần trước. Tuy nhiên trong struct mới chỉ có thuộc tính chứ chưa có phương thức. Để ứng dụng được phương thức (method) như các ngôn ngữ hướng đối tượng khác ta sẽ cần khai báo function kèm theo một tham số đặc biệt gọi là receiver argument.</description>
    </item>
    
    <item>
      <title>Học Go cấp tốc Phần 4:  Structs và Maps</title>
      <link>https://robinhuy.github.io/blog/hoc-go-cap-toc-phan-4-structs-va-maps/</link>
      <pubDate>Tue, 20 Mar 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/hoc-go-cap-toc-phan-4-structs-va-maps/</guid>
      <description>Các phần trước:
Phần 1: Packages, variables và functions.
Phần 2: Điều khiển luồng với if, else, switch và defer.
Phần 3: Arrays và Slices.
Structs Tương tự C, một struct trong Go là tập hợp các trường (field) do người dùng tự định nghĩa. Mỗi trường có thể có kiểu dữ liệu khác nhau, thậm chí có thể là một struct. Trong Go không có class như các ngôn ngữ hướng đối tượng, do đó chúng ta có thể dùng struct thay cho class.</description>
    </item>
    
    <item>
      <title>Học Go cấp tốc Phần 3:  Arrays và Slices</title>
      <link>https://robinhuy.github.io/blog/hoc-go-cap-toc-phan-3-arrays-va-slices/</link>
      <pubDate>Mon, 19 Mar 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/hoc-go-cap-toc-phan-3-arrays-va-slices/</guid>
      <description>Các phần trước:
Phần 1: Packages, variables và functions.
Phần 2: Điều khiển luồng với if, else, switch và defer.
Arrays Array (mảng) trong Go tương tự các ngôn ngữ khác, tuy nhiên nó có kích thước cố định (fixed size) và các phần tử bên trong phải cùng loại dữ liệu. Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  // Khởi tạo một mảng gồm 2 string var a [2]string  // Gán giá trị cho các phần tử trong mảng a[0] = &amp;#34;Hello&amp;#34; a[1] = &amp;#34;World&amp;#34;  // In kết quả ra console fmt.</description>
    </item>
    
    <item>
      <title>Học Go cấp tốc Phần 2:  Điều khiển luồng với if, else, switch và defer</title>
      <link>https://robinhuy.github.io/blog/hoc-go-cap-toc-phan-2-dieu-khien-luong-voi-if-else-switch-va-defer/</link>
      <pubDate>Sun, 18 Mar 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/hoc-go-cap-toc-phan-2-dieu-khien-luong-voi-if-else-switch-va-defer/</guid>
      <description>Phần trước: Học Go cấp tốc Phần 1: Packages, variables và functions.
Phần tiếp theo chúng ta sẽ cùng tìm hiểu cách điều khiển luồng (flow control) trong Go.
Vòng lặp Trong Go chỉ có 1 kiểu vòng lặp là sử dụng for. Cách dùng tương tự các ngôn ngữ khác nhưng phần khai báo biến, điều kiện lặp, &amp;hellip; không cần đặt trong cặp ngoặc tròn:
1 2 3 4 5 6  // Tính tổng các số từ 0 - 9 sum := 0 for i := 0; i &amp;lt; 10; i++ {  sum += i } fmt.</description>
    </item>
    
    <item>
      <title>Học Go cấp tốc Phần 1: Packages, variables và functions</title>
      <link>https://robinhuy.github.io/blog/hoc-go-cap-toc-phan-1-packages-variables-va-functions/</link>
      <pubDate>Sat, 17 Mar 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/hoc-go-cap-toc-phan-1-packages-variables-va-functions/</guid>
      <description>Go(hay thường được gọi là Golang) là một ngôn ngữ lập trình mã nguồn mở được tạo ở Google vào năm 2009 bởi Robert Griesemer, Rob Pike, và Ken Thompson. Nó được ra đời nhằm mục đích phát triển các trang web nhanh hơn, dễ dàng hơn và đáp ứng được yêu cầu truy cập lớn. Về lịch sử ra đời cũng như giới thiệu chi tiết hơn các bạn có thể xem ở wikipedia 😅</description>
    </item>
    
    <item>
      <title>Thêm mới và bảo mật API trong Kong API Gateway</title>
      <link>https://robinhuy.github.io/blog/them-moi-va-bao-mat-api-trong-kong-api-gateway/</link>
      <pubDate>Mon, 05 Mar 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/them-moi-va-bao-mat-api-trong-kong-api-gateway/</guid>
      <description>Kong cung cấp một RESTful Admin API cho phép chúng ta thực hiện việc cấu hình và quản lý các API. Mặc định Admin API sẽ lắng nghe ở cổng 8001 và cổng 8444 cho giao thức https. Chú ý API này chỉ dùng trong nội bộ, không public ra ngoài, vì nó cho phép quản lý toàn bộ hệ thống API gateway của Kong.
Để dễ hình dung, bài viết này sẽ hướng dẫn tạo mới các API và bảo mật cơ bản bằng plugins sử dụng Konga (GUI cho Admin API).</description>
    </item>
    
    <item>
      <title>Tùy chỉnh Visual Studio Code khi lập trình ASP.NET Core</title>
      <link>https://robinhuy.github.io/blog/tuy-chinh-visual-studio-code-khi-lap-trinh-aspnet-core/</link>
      <pubDate>Sat, 13 Jan 2018 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/tuy-chinh-visual-studio-code-khi-lap-trinh-aspnet-core/</guid>
      <description>ASP.NET Core là một open-source web framework mới của Microsoft. Nó cho phép phát triển và chạy ứng dụng web đa nền tảng. Giờ đây bạn có thể lập trình .NET trên cả Linux và MacOS.
 Để lập trình chúng ta có thể sử dụng Visual Studio (trên Windows) hoặc Visual Studio for Mac (trên Mac). Ngoài ra chúng ta cũng có thể dùng Visual Studio Code (VS Code) để lập trình trên cả Windows, MacOS và Linux.</description>
    </item>
    
    <item>
      <title>Sử dụng cơ sở dữ liệu Oracle với Entity Framework</title>
      <link>https://robinhuy.github.io/blog/su-dung-co-so-du-lieu-oracle-voi-entity-framework/</link>
      <pubDate>Mon, 11 Dec 2017 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/su-dung-co-so-du-lieu-oracle-voi-entity-framework/</guid>
      <description>Thông thường khi làm dự án với Entity Framework, chúng ta hay dùng cơ sở dữ liệu (CSDL) MS SQL Server. Tuy nhiên tùy theo yêu cầu công việc, bạn có thể sẽ phải làm việc với các cơ sở dữ liệu khác. Bài viết này mình sẽ chia sẻ 1 số kinh nghiệm của bản thân khi phải làm việc với CSDL Oracle (cụ thể là Oracle phiên bản 11g).</description>
    </item>
    
    <item>
      <title>Cài đặt chứng chỉ SSL của Namecheap với Nginx</title>
      <link>https://robinhuy.github.io/blog/cai-dat-chung-chi-ssl-cua-namecheap-voi-nginx/</link>
      <pubDate>Fri, 28 Apr 2017 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/cai-dat-chung-chi-ssl-cua-namecheap-voi-nginx/</guid>
      <description>Bài trước mình đã hướng dẫn cách tạo chứng chỉ SSL miễn phí với Let&amp;rsquo;s Encrypt. Tiếp theo mình sẽ hướng dẫn các bạn cách tạo chứng chỉ SSL qua dịch vụ của Namecheap (mất phí nhé 😂)
Đăng ký dịch vụ của Namecheap
Đầu tiên chúng ta sẽ cần đăng ký tài khoản tại Namecheap và chọn 1 loại chứng chỉ phù hợp https://www.namecheap.com/security/ssl-certificates.aspx.
Sau khi đã thanh toán, truy cập vào Dashboard để active dịch vụ</description>
    </item>
    
    <item>
      <title>Chứng chỉ SSL miễn phí với Let&#39;s Encrypt</title>
      <link>https://robinhuy.github.io/blog/chung-chi-ssl-mien-phi-voi-lets-encrypt/</link>
      <pubDate>Fri, 14 Apr 2017 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/chung-chi-ssl-mien-phi-voi-lets-encrypt/</guid>
      <description>Hiện nay hầu hết các trang web đều đã hỗ trợ SSL (Secure Socket Layer). Nó mã hóa dữ liệu truyền đi giữa máy chủ web và trình duyệt và làm tăng tính bảo mật cho website. Ngoài ra, việc sử dụng SSL certificate (chứng chỉ SSL) là cần thiết bởi hiện tại Google đã ưu tiên xếp hạng website dựa theo giao thức https (HTTP + SSL), những website mà chỉ sử dụng giao thức http sẽ bị coi là &amp;ldquo;unsafe&amp;rdquo; (không an toàn).</description>
    </item>
    
    <item>
      <title>Cài đặt Gitlab bằng Docker</title>
      <link>https://robinhuy.github.io/blog/cai-dat-gitlab-bang-docker/</link>
      <pubDate>Fri, 09 Dec 2016 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/cai-dat-gitlab-bang-docker/</guid>
      <description>Ở bài trước mình có hướng dẫn cài đặt Gitlab trên Private Server, tuy nhiên cách cài này là cài trực tiếp lên server, có thể sẽ xung đột với các gói phần mềm có sẵn như: Redis, Nginx, &amp;hellip; Do đó bài này chúng ta sẽ thử cài Gitlab qua Docker - một công nghệ đang rất hot trong thời điểm hiện tại.
Việc đầu tiên chúng ta phải làm đó là cài đặt Docker, các bạn tham khảo tại đây, hướng dẫn này rất chi tiết rồi mình sẽ không nhắc lại nữa.</description>
    </item>
    
    <item>
      <title>Hướng dẫn cài đặt Gitlab trên Private Server</title>
      <link>https://robinhuy.github.io/blog/huong-dan-cai-dat-gitlab-tren-private-server/</link>
      <pubDate>Tue, 18 Oct 2016 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/huong-dan-cai-dat-gitlab-tren-private-server/</guid>
      <description>Gitlab là một công cụ để quản lý source code rất nổi tiếng hiện nay. Nó cho phép chúng ta tạo và quản lý các Git source repository tương tự nhu trên Github, tuy nhiên nó cho phép chúng ta tạo không giới hạn các private repository và nhiều chức năng thú vị khác như: code reviews, issue tracking, activity feeds, wikis, &amp;hellip;
Chúng ta có thể sử dụng gitlab bằng cách truy cập trang https://gitlab.</description>
    </item>
    
    <item>
      <title>Khoảng trắng bí ẩn bên dưới thẻ Img</title>
      <link>https://robinhuy.github.io/blog/khoang-trang-bi-an-ben-duoi-the-img/</link>
      <pubDate>Sat, 10 Oct 2015 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/khoang-trang-bi-an-ben-duoi-the-img/</guid>
      <description>Khi sử dụng thẻ img để chèn ảnh vào trang web, có 1 hiện tượng khá thú vị mà không phải ai cũng biết hoặc để ý đến. Đó là nếu bọc thẻ img bởi 1 thẻ div (hoặc bất kỳ 1 thẻ nào khác) thì sẽ xuất hiện 1 khoảng trắng nhỏ ở bên dưới ảnh.
Nếu chúng ta thiết lập padding cho thẻ div thì do khoảng trắng này mà khoảng cách phần bên dưới vẫn lớn hơn phần bên trên.</description>
    </item>
    
    <item>
      <title>29 câu lệnh Linux bạn nên biết - Phần 2</title>
      <link>https://robinhuy.github.io/blog/29-cau-lenh-linux-ban-nen-biet-phan-2/</link>
      <pubDate>Sat, 15 Aug 2015 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/29-cau-lenh-linux-ban-nen-biet-phan-2/</guid>
      <description>&amp;hellip; tiếp theo 29 câu lệnh Linux bạn nên biết phần 1
17. help &amp;ndash;help xem thông tin trợ giúp và các tùy chỉnh của câu lệnh.
Có thể viết tắt là -h
18. whatis – What is this command whatis hiển thị mô tả về câu lệnh.
19. man – Manual man ​ hiển thị trang hướng dẫn cho câu lệnh.
20. exit exit ​ thoát khỏi phiên làm việc.</description>
    </item>
    
    <item>
      <title>29 câu lệnh Linux bạn nên biết - Phần 1</title>
      <link>https://robinhuy.github.io/blog/29-cau-lenh-linux-ban-nen-biet-phan-1/</link>
      <pubDate>Thu, 13 Aug 2015 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/blog/29-cau-lenh-linux-ban-nen-biet-phan-1/</guid>
      <description>Các bản phân phối Linux đều có hỗ trợ giao diện người dùng để tương tác với máy tính. Tuy nhiên trong một số trường hợp sử dụng giao diện command line để điều khiển máy tính sẽ nhanh hơn và đơn giản hơn.
Trong giao diện command line, các câu lệnh (command) dùng để ra chỉ thị cho máy tính thực hiện một tác vụ nào đó. Bạn có thể sử dụng câu lệnh để tắt máy tính, xem danh sách các file trong thư mục, sao chép file, di chuyển và xóa file, &amp;hellip;</description>
    </item>
    
    <item>
      <title>About</title>
      <link>https://robinhuy.github.io/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/about/</guid>
      <description>Hi there 👋
Cảm ơn bạn đã ghé thăm blog của mình, một blog về công nghệ (chủ yếu là lập trình), nhưng cũng có thể có nhiều bài viết linh tinh nhảm nhí tùy tâm trạng.
Hy vọng các bài viết ở đây sẽ giúp phần nào cho công việc của các bạn (nếu bạn là lập trình viên), hoặc ít nhất nó cũng giúp bạn giải trí sau những giờ làm việc căng thẳng 😎.</description>
    </item>
    
    <item>
      <title>Application Privacy Statement</title>
      <link>https://robinhuy.github.io/master-mind-x-application-privacy-statement/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/master-mind-x-application-privacy-statement/</guid>
      <description>This privacy statement (“Privacy Statement”) applies to the treatment of personally identifiable information submitted by, or otherwise obtained from, you in connection with the associated application (“Application”). The Application is provided by Master Mind X (and may be provided by Master Mind X on behalf of a huydq.dev licensor or partner (“Application Partner”). By using or otherwise accessing the Application, you acknowledge that you accept the practices and policies outlined in this Privacy Statement.</description>
    </item>
    
    <item>
      <title>Privacy Policy</title>
      <link>https://robinhuy.github.io/privacy-policy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/privacy-policy/</guid>
      <description>This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.
We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy.
Interpretation and Definitions Interpretation The words of which the initial letter is capitalized have meanings defined under the following conditions.</description>
    </item>
    
    <item>
      <title>Projects</title>
      <link>https://robinhuy.github.io/projects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/projects/</guid>
      <description>Tổng hợp các Pet project &amp;amp; Open source project mình code trong lúc rảnh rỗi</description>
    </item>
    
    
    <item>
      <title>Slides</title>
      <link>https://robinhuy.github.io/slides/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/slides/</guid>
      <description>Tổng hợp các kiến thức mình học được bằng Slide dưới dạng PDF</description>
    </item>
    
    <item>
      <title>Support</title>
      <link>https://robinhuy.github.io/support/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://robinhuy.github.io/support/</guid>
      <description>Nếu bạn cảm thấy blog có ích, có thể ủng hộ mình phí duy trì website bằng cách mua hàng qua link ủng hộ (không mất thêm bất kỳ chi phí gì và vẫn áp dụng được toàn bộ chương trình giảm giá). Sản phẩm đã được dùng thử và ưu tiên shop ở Hà Nội.
Sách  Sách - Đọc hiểu kết quả xét nghiệm máu (MedInsights) (Shopee)  Đồ gia dụng  Bấm móng tay có móc khóa (Shopee) Chiếu bạc cách nhiệt ngủ văn phòng loại dày 3,5mm (Shopee) Dây nhảy thể thao, lõi thép cao cấp tự động đếm số, tích hợp đo calo (Shopee) Khăn Mặt Khô Dùng Một Lần Animerry (Shopee) Ly cốc giữ nhiệt coffee S6 lõi Inox, có khắc tên theo yêu cầu (Shopee) Lọ nước vệ sinh kính mắt chuyên dụng (Shopee) Xịt Thơm Quần Áo Dky - Lưu Hương Lâu, Chống Muỗi Đốt (Shopee) Xịt vệ sinh khử trùng mũ/nón bảo hiểm DERPU (Shopee) Set 36 miếng dán hỗ trợ giảm mụn vô hình Sevich (Shopee)  Thời trang - Thể thao  Áo khoác dù nam có nón hàn quốc AK23 (xanh đen, Đen) (Shopee) Áo len nữ giữ nhiệt dài tay cổ cao (Lazada) Mũ tai bèo chống nắng dành cho cả nam và nữ (Lazada) Găng tay cảm ứng ngón trỏ điện thoại Naturehike dành cho cả nam và nữ (Shopee) Quần bơi nam lửng cao cấp, 2 lớp chính hãng HAIZID kiểu dáng Sport co giãn 4 chiều chống thấm tốt, nhanh khô (Shopee) Kính bơi cận thị chống sương mù, độ nét cao chính hãng Lining (Shopee) Đồng hồ Xiaomi Mi Band 5, Miband 4C - Nguyên seal BH 1 năm (Shopee) Kìm bóp tập cơ tay 5-60KG, găng tay tập thể thao (Shopee)  Du lịch  Ô Dù Mini để túi siêu gọn, chống tia UV (Shopee) Gậy tự sướng chụp ảnh Bluetooth Xiaomi Tripod 3 chân XMZPG01YM (Lazada) Ổ cắm điện đa năng du lịch Universal Travel Adapter nhiều đầu (Shopee) Khăn lau kính Nano, chống bám hơi nước, chống mờ sương, chống nhờn (Shopee)  - - - - -</description>
    </item>
    
  </channel>
</rss>
