<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hai&#39;s Blog</title><link>https://dominhhai.github.io/vi/</link><description>Recent content on Hai&#39;s Blog</description><generator>Hugo -- gohugo.io</generator><language>vi</language><lastBuildDate>Thu, 04 Mar 2021 00:00:00 +0000</lastBuildDate><atom:link href="https://dominhhai.github.io/vi/index.xml" rel="self" type="application/rss+xml"/><item><title>[Gitlab] Đồng bộ giữa Gitlab và Github</title><link>https://dominhhai.github.io/vi/2021/03/sync-gitlab-github/</link><pubDate>Thu, 04 Mar 2021 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2021/03/sync-gitlab-github/</guid><description>Gần đây mới biết một tính năng rất thú vị trên Gitlab là cho phép đồng bộ mã nguồn với các repo ở các nền tảng khác nhau như Github, Bitbucket. Dựa vào tính năng này có thể giúp ta lưu trữ được mã nguồn cùng lúc ở nhiều nơi mà không tốn nhiều công. Việc lưu mã nguồn ở nhiều nơi có 1 lợi thế rất lớn là chẳng may nền tảng nào phát sinh vấn đề như anh Github thi thoảng lại die thì vẫn có thể chuyển ngay qua nền tảng khác để sử dụng.</description></item><item><title>[VSCode] Cấu hình Terminal Font cho ZSH</title><link>https://dominhhai.github.io/vi/2018/09/vscode-terminal-font/</link><pubDate>Tue, 18 Sep 2018 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2018/09/vscode-terminal-font/</guid><description>Lọ mọ chuyển từ Atom sang VSCode, ấn tượng đầu tiên khá là tốt ở mặt tốc độ nhưng vẫn chưa quen lắm với giao diện và phím tắt của VSCode. Chắc cái thích nhất hiện tại là icon hiển thị ở menu của VSCode với plugin Material Icon Theme. Cái đập vào mắt tiếp theo là giao diện dòng lệnh tích hợp sẵn của VSCode trông font chữ bị hỏng hết cả.</description></item><item><title>Không gia đình</title><link>https://dominhhai.github.io/vi/2018/08/sans-famille/</link><pubDate>Wed, 29 Aug 2018 12:11:35 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/08/sans-famille/</guid><description>Một câu chuyện cảm động và kết thúc có hậu về một cậu bé đầy nghị lực và giàu tình cảm. Thật không hổ danh là một tiểu thuyết kiệt tác tồn tại suốt cả trăm năm nay, các tình tiết trong suốt câu chuyện được thuật lại hết sức công phu và thuyết phục dưới cái ngòi bút tài tình của nhà văn nổi tiếng người Pháp - ông Hector Malot.</description></item><item><title>Reinforcement Learning: An Introduction. Chapter 5</title><link>https://dominhhai.github.io/vi/talk/rl-sutton-chap5/</link><pubDate>Fri, 24 Aug 2018 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/talk/rl-sutton-chap5/</guid><description>layout: true
class: center, middle Reinforcement Learning: An Introduction
Chapter 5: Monte Carlo Methods 26-08-2018
Do Minh Hai
@dominhhai layout: false class: left
Outline Introduction
Monte Carlo Prediction
Monte Carlo Control
On-Policy method
Off-policy method
Incremental Implementation for MC prediction
Off-policy MC Control
Discounting-aware Importance Sampling
Per-decision Importance Sampling Introduction Environment is incomplete
Learning from experience of interaction with environment</description></item><item><title>[ICML] Learning Longer-term Dependencies in RNNs with Auxiliary Losses</title><link>https://dominhhai.github.io/vi/talk/paper-longer-term-rnn/</link><pubDate>Sat, 18 Aug 2018 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/talk/paper-longer-term-rnn/</guid><description>layout: true
class: center, middle Learning Longer-term Dependencies in RNNs with Auxiliary Losses .red[.refer[ Trieu H.Trinh, Andrew M.Dai, Minh-Thang Luong, Quoc V.Le ]]
19-08-2018
Do Minh Hai
@dominhhai
.footnote[.refer[ Tokyo Paper Reading Fest
]] layout: false class: left
Outline Long-term Dependencies problem in RNNs
Methodology
Auxiliary Losses
Procedure
Exeperiments
Model
Results
Analysis Long-term Dependencies problem Long-term dependencies
BPTT tend to vanish or explode during training</description></item><item><title>[Talk] Slide về RNNs, LSTM, GRU</title><link>https://dominhhai.github.io/vi/2018/07/talk-rnn/</link><pubDate>Sun, 08 Jul 2018 10:20:14 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/07/talk-rnn/</guid><description>&lt;p&gt;Dưới đấy là slide giới thiệu về RNNs, LSTM, GRU tại &lt;a href=&#34;https://www.facebook.com/events/1772695682776739/&#34;&gt;Tokyo ML Event&lt;/a&gt; hôm chủ nhật 08/07/2018 vừa qua. Tiện đây, blog mình có thêm mục &lt;strong&gt;&lt;a href=&#34;https://dominhhai.github.io/vi/talk/&#34;&gt;Chém gió&lt;/a&gt;&lt;/strong&gt; lưu trữ lại các slide trình bày của mình tại các hội nhóm.&lt;/p&gt;</description></item><item><title>Recurrent Neural Networks</title><link>https://dominhhai.github.io/vi/talk/dl-rnn/</link><pubDate>Sat, 07 Jul 2018 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/talk/dl-rnn/</guid><description>layout: true
class: center, middle Recurrent Neural Networks 08-07-2018
Do Minh Hai
@dominhhai layout: false class: left
Outline Time Series problem
Recurrent Neural Networks - RNN
Lost Function
Backpropagation Through Time - BPPT
Vanishing and Exploding Gradient problem
Long Short-Term Memory - LSTM
Gated Reccurent Unit - GRU
Bidirectional RNNs
Deep RNNs Time Series problem Input: .red[variable-length] sequences of dependent input variables $$P(\mathbf{x}_t|\mathbf{x}_{t-1},&amp;hellip;,\mathbf{x}_1)$$</description></item><item><title>[Node.js] Không cần headless browser</title><link>https://dominhhai.github.io/vi/2018/06/scrape-nodejs/</link><pubDate>Thu, 07 Jun 2018 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2018/06/scrape-nodejs/</guid><description>Trước tiên khi nghĩ tới việc lấy dữ liệu từ các trang cần phải thao tác qua vài bước như submit form, chuyển trang nọ kia người ta thường nghĩ ngay tới việc sử dụng headless browser như Puppeteer, Selenium / WebDriver, hay PhantomJS.
Nhưng dở cái này mấy cái này nó sẽ khởi động nhân của trình duyệt như Chrome chẳng hạn để thực hiện việc truy cập và thao tác trang web nên cực kì nặng nề.</description></item><item><title>[Terminal] JSON trên dòng lệnh với JQ</title><link>https://dominhhai.github.io/vi/2018/05/jq-json-processing/</link><pubDate>Wed, 30 May 2018 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2018/05/jq-json-processing/</guid><description>&lt;p&gt;Mỗi lần lấy kết quả dạng JSON về trên dòng lệnh là 1 lần ức chế bởi các mục muốn xem thì cứ hiển thị dạng nửa vời. Nên trong đầu nảy ra là làm sao mà xem được toàn bộ kết quả ngay trên dòng lệnh. Đương nhiên là nếu thao tác như lọc kết quả, thống kế kết quả&amp;hellip; nữa thì tốt.&lt;/p&gt;</description></item><item><title>Giám đốc làm gì?</title><link>https://dominhhai.github.io/vi/2018/05/hito-ikasu/</link><pubDate>Tue, 29 May 2018 12:11:35 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/05/hito-ikasu/</guid><description>&lt;p&gt;Dịch được cái tiêu đề cuốn này quả không hề dễ dàng tẹo nào. Dịch nôm na ra là làm thế nào để anh em nhân viên làm việc tốt. Nhưng cũng chưa hẳn là như vậy. Cuốn này này tập trung vào việc giải đáp là chính. Với người hỏi là các học viên của lớp học Inamori-Juku và người đáp là bác Inamori.&lt;/p&gt;</description></item><item><title>[NN] Mạng quá khớp - Overfitting</title><link>https://dominhhai.github.io/vi/2018/05/nn-overfitting/</link><pubDate>Mon, 28 May 2018 10:20:14 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/05/nn-overfitting/</guid><description>&lt;p&gt;Cũng như các bài toán ML khác, mạng NN hoàn toàn có thể bị quá khớp nếu kích cỡ lớn quá mức cần thiết. Nên khi cài đặt mạng NN, người ta thường cài thêm các phương pháp như &lt;em&gt;chính quy hoá&lt;/em&gt;, &lt;em&gt;bỏ nút mạng&lt;/em&gt;&amp;hellip; nhằm giảm được vấn đề này.&lt;/p&gt;</description></item><item><title>[Vim] Cấu hình cơ bản trên CentOS</title><link>https://dominhhai.github.io/vi/2018/05/vim-config/</link><pubDate>Tue, 08 May 2018 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2018/05/vim-config/</guid><description>&lt;p&gt;&lt;code&gt;Vim&lt;/code&gt; là một trình soạn thảo mạnh mẽ nhưng cấu hình mặc định của nó làm cho mình có chán giác ngán ngẩm vô cùng. Mã nguồn chẳng highlight cũng chẳng hiện thị số dòng nhìn rất chi ức chế &amp;gt;.&amp;lt;&lt;/p&gt;</description></item><item><title>[NN] Về lan truyền ngược - Backpropagation</title><link>https://dominhhai.github.io/vi/2018/04/nn-bp/</link><pubDate>Fri, 27 Apr 2018 10:20:14 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/04/nn-bp/</guid><description>&lt;p&gt;Bài viết này được dịch lại từ &lt;a href=&#34;https://colah.github.io/posts/2015-08-Backprop/&#34;&gt;bài của anh Christopher Olah&lt;/a&gt; bởi anh ấy trình bày rất chi tiết và cực dễ hiểu nên mình không viết lại làm gì cho phí công nữa.
Nội dung của bài viết này không phải về chi tiết giải thuật lan truyền ngược mà viết về nguyên lý cơ bản của giải thuật này. Nếu bạn cần xem chi tiết giải thuật được thực hiện ra sao thì có thể đọc &lt;a href=&#34;https://dominhhai.github.io/vi/2018/04/nn-intro/#5-lan-truyền-ngược-và-đạo-hàm&#34;&gt;bài viết trước của tôi&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>[NN] Cài đặt mạng NN</title><link>https://dominhhai.github.io/vi/2018/04/nn-implement/</link><pubDate>Thu, 26 Apr 2018 10:20:14 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/04/nn-implement/</guid><description>&lt;p&gt;Bài viết này sẽ tập trung vào việc cài đặt mạng NN để nhận dạng số và đưa ra một số mẹo để thu được kết quả tốt khi làm việc với mạng NN. Nếu bạn chưa có cái nhìn tổng quan về mặt lý thuyết của mạng NN thì tôi nghĩ rằng bạn nên đọc &lt;a href=&#34;https://dominhhai.github.io/vi/2018/04/nn-intro/&#34;&gt;bài viết trước&lt;/a&gt; của tôi để có thể dễ dàng hiểu bài này hơn.&lt;/p&gt;</description></item><item><title>[Giải Tích] Tra cứu đạo hàm</title><link>https://dominhhai.github.io/vi/2018/04/list-derivs/</link><pubDate>Wed, 25 Apr 2018 16:31:37 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/04/list-derivs/</guid><description>Đây là bản tóm tắt một số đạo hàm cơ bản và tính chất đạo hàm nhằm mục đích tra cứu cho nhanh.
1. Đạo hàm thông dụng 1.1. Đa thức No. Đạo hàm No. Đạo hàm 1 $\dfrac{d}{dx}(c) = 0$ 4 $\dfrac{d}{dx}(x^n) = nx^{n-1}$ 2 $\dfrac{d}{dx}(x) = 1$ 5 $\dfrac{d}{dx}(cx^n) = cnx^{n-1}$ 3 $\dfrac{d}{dx}(cx) = c$ 1.</description></item><item><title>[Giải Tích] Softmax và đạo hàm</title><link>https://dominhhai.github.io/vi/2018/04/softmax-derivs/</link><pubDate>Wed, 25 Apr 2018 10:30:37 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/04/softmax-derivs/</guid><description>Softmax rất hay được ứng dụng trong các bài toán phân loại nhiều lớp nên việc tìm hiểu về nó giúp ta dễ dàng cài đặt thuật toán với hàm số này. Trước đây, tôi có đề cập đôi chút về hàm số này trong bài logistic regression cho việc tìm hàm lỗi với bài toán phân loại đa lớp, nếu bạn hứng thú thì có thể xem lại tại đây.</description></item><item><title>[Giải Tích] Đạo hàm với vec-tơ, ma trận, ten-xơ</title><link>https://dominhhai.github.io/vi/2018/04/matrix-derivs/</link><pubDate>Tue, 24 Apr 2018 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2018/04/matrix-derivs/</guid><description>Bài viết này sẽ giới thiệu cách lấy đạo hàm của vec-tơ, ma trận và ten-xơ (mảng nhiều chiều) và lấy đạo hàm theo vec-tơ, ma trận và ten-xơ.
1. Quy hoạch động Làm quá nhiều việc 1 lúc rất dễ dẫn tới sai lầm, chính vì vậy mà người ta cần phân tách vấn đề ra thành các bài toán con để giải quyết rồi gộp kết quả lại.</description></item><item><title>[NN] Mạng nơ-ron nhân tạo - Neural Networks</title><link>https://dominhhai.github.io/vi/2018/04/nn-intro/</link><pubDate>Mon, 23 Apr 2018 10:20:14 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/04/nn-intro/</guid><description>&lt;p&gt;Mạng nơ-ron nhân tạo (&lt;em&gt;Neural Network&lt;/em&gt; - &lt;strong&gt;NN&lt;/strong&gt;) là một mô hình lập trình rất đẹp lấy cảm hứng từ mạng nơ-ron thần kinh. Kết hợp với các kĩ thuật học sâu (&lt;em&gt;Deep Learning&lt;/em&gt; - &lt;strong&gt;DL&lt;/strong&gt;), NN đang trở thành một công cụ rất mạnh mẽ mang lại hiệu quả tốt nhất cho nhiều bài toán khó như nhận dạng ảnh, giọng nói hay xử lý ngôn ngữ tự nhiên.&lt;/p&gt;</description></item><item><title>[Git] Lấy mã nguồn theo tag</title><link>https://dominhhai.github.io/vi/2018/04/git-clone-tag/</link><pubDate>Tue, 17 Apr 2018 09:28:28 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/04/git-clone-tag/</guid><description>&lt;p&gt;Bài này nhằm mục đích note lại cách lấy mã nguồn theo tag với Git. Ví dụ ở đây tôi có dự án &lt;a href=&#34;https://github.com/dominhhai/koa-log4js/tags&#34;&gt;koa-log4js&lt;/a&gt; có được release với các tags:&lt;/p&gt;</description></item><item><title>[ML] Support Vector Machine - SVM</title><link>https://dominhhai.github.io/vi/2018/03/ml-svm/</link><pubDate>Thu, 22 Mar 2018 10:20:14 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/03/ml-svm/</guid><description>&lt;p&gt;Support Vector Machine - &lt;strong&gt;SVM&lt;/strong&gt; là một phương pháp học có giám sát trong các mô hình nhận dạng mẫu. Nó không chỉ hoạt động tốt với các dữ liệu được phân tách tuyến tính mà còn tốt với cả dữ liệu phân tách phi tuyến. Với nhiều bài toán, SVM mang lại kết quả tốt như mạng nơ-ron với hiệu quả sử dụng tài nguyên tốt hơn hẳn.&lt;/p&gt;</description></item><item><title>[Python] Cài đặt môi trường ảo</title><link>https://dominhhai.github.io/vi/2018/03/py-venv/</link><pubDate>Thu, 15 Mar 2018 09:28:28 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/03/py-venv/</guid><description>Khác với gói npm trong Node.js cho phép ta quản lý gói cho từng dự án một thì Python lại không có khả năng này. Việc này sẽ gây rắc rối nếu các dự án khác nhau yêu cầu các gói thư viện khác version nhau. Ngoài ra, đôi lúc ta cũng chẳng muốn cài các gói vào môi trường global làm gì cả mà chỉ muốn cài vào local sài xong là xoá đi luôn.</description></item><item><title>Kết Hôn</title><link>https://dominhhai.github.io/vi/2018/02/married/</link><pubDate>Tue, 27 Feb 2018 09:11:26 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/02/married/</guid><description>&lt;p&gt;Hôm nay tôi bước sang một mốc mới của cuộc đời: &lt;span class=&#34;highlight-text success&#34;&gt;Kết Hôn&lt;/span&gt;. Niềm vui cũng nhiều mà trăn trở cũng không ít. Nỗi lòng ấy thật khó mà diễn tả thành lời được.&lt;/p&gt;</description></item><item><title>Thủ tục xin visa đi Nhật</title><link>https://dominhhai.github.io/vi/2018/02/visa-japan/</link><pubDate>Mon, 19 Feb 2018 16:11:26 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/02/visa-japan/</guid><description>&lt;p&gt;Bài viết này tổng hợp kinh nghiệm của tác giả sau 2 lần xin visa đi Nhật cho gia đình. Trên trang trang chủ của đại sứ quán Nhật tại Việt Nam thông tin khá đầy đủ nhưng một số mục có thể chưa được rõ ràng cho lắm. Nên tôi quyết định viết lại ở đây. Hi vọng nó không chỉ giúp ích được cho tôi mà còn cho tất cả các bạn.&lt;/p&gt;</description></item><item><title>[Tối Ưu] Nhân tử Lagrange với bất đẳng thức</title><link>https://dominhhai.github.io/vi/2018/02/lagrange-multipliers-2/</link><pubDate>Tue, 13 Feb 2018 11:51:56 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/02/lagrange-multipliers-2/</guid><description>&lt;p&gt;Trong phần trước ta đã cùng bàn về phương pháp nhân tử Lagrange với điều kiện ràng buộc là các đẳng thức. Trong phần này ta sẽ cùng tổng quát hoá bài toán với điều kiện ràng buộc bao gồm cả các bất đẳng thức. Nhóm các điều kiện tổng quát như vậy có tên gọi là &lt;strong&gt;KKT&lt;/strong&gt; (&lt;em&gt;Karush–Kuhn–Tucker conditions&lt;/em&gt;).&lt;/p&gt;</description></item><item><title>[Tối Ưu] Nhân tử Lagrange với đẳng thức</title><link>https://dominhhai.github.io/vi/2018/02/lagrange-multipliers/</link><pubDate>Fri, 09 Feb 2018 11:51:56 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/02/lagrange-multipliers/</guid><description>&lt;p&gt;Phương pháp nhân tử Lagrange (&lt;em&gt;method of Lagrange multipliers&lt;/em&gt;) là một kỹ thuật cực kì hữu dụng để giải các bài toán tối ưu có ràng buộc. Trong chuỗi bài viết này tối sẽ chia làm 2 phần: (1) Ràng buộc là đẳng thức; (2) Ràng buộc là bất đẳng thức. Bài viết đầu tiên này tôi sẽ tập trung vào tối ưu có ràng buộc là đẳng thức.&lt;/p&gt;</description></item><item><title>Sức mạnh của thói quen</title><link>https://dominhhai.github.io/vi/2018/02/power-of-habit/</link><pubDate>Thu, 08 Feb 2018 12:11:35 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/02/power-of-habit/</guid><description>Cuốn sách mô tả sự ảnh hưởng của thói quen tới cuộc sống hằng ngày của chúng ta và sự hình thành của thói quen. Điểm đặc biệt ở đây là nó mô tả rất logic dựa theo các báo cáo, phân thích khoa học và minh chứng thực tế rất rõ ràng.
Tất nhiên thói quen ở đây bao gồm cả thói quen tốt và thói quen xấu.</description></item><item><title>[ML] Phân cụm K-Means (K-Means clustering)</title><link>https://dominhhai.github.io/vi/2018/02/ml-kmeans/</link><pubDate>Mon, 05 Feb 2018 16:20:14 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/02/ml-kmeans/</guid><description>&lt;p&gt;Với bài toán học phi giám sát, làm sao ta có thể sắp xếp dữ liệu vào các nhóm tương ứng? Bài viết này sẽ trình bày một phương pháp đơn giản để có thể thực hiện được việc này là phương pháp phân cụm K-Means.&lt;/p&gt;</description></item><item><title>[Atom] Tự động phát hiện và hiển thị mã hoá</title><link>https://dominhhai.github.io/vi/2018/01/atom-auto-encoding/</link><pubDate>Thu, 11 Jan 2018 09:28:28 +0900</pubDate><guid>https://dominhhai.github.io/vi/2018/01/atom-auto-encoding/</guid><description>&lt;p&gt;Bạn đã bao giờ mở 1 file ra bằng auto mà các chữ trong đó hiển thị như con giun con dế chưa? Những tình huồng như vậy có thể là do atom mặc định mở file với định dạng UTF-8, nhưng file của ta lại ở dạng khác như Shift-JIS chẳng hạn.&lt;/p&gt;</description></item><item><title>[ML] Hồi quy logistic (Logistic Regression)</title><link>https://dominhhai.github.io/vi/2017/12/ml-logistic-regression/</link><pubDate>Thu, 28 Dec 2017 11:19:53 +0900</pubDate><guid>https://dominhhai.github.io/vi/2017/12/ml-logistic-regression/</guid><description>&lt;p&gt;Trong các phần trước ta đã tìm hiểu về phương pháp hồi quy tuyến tính để dự đoán đầu ra liên tục, phần này ta sẽ tìm hiểu thêm một thuật toán nữa trong học có giám sát là &lt;strong&gt;hồi quy logistic&lt;/strong&gt; (&lt;em&gt;Logistic Regression&lt;/em&gt;) nhằm mục đính phân loại dữ liệu.&lt;/p&gt;</description></item><item><title>[ML] Cân bằng phương sai và độ lệch</title><link>https://dominhhai.github.io/vi/2017/12/20171226-ml-bias-variance-tradeoff/</link><pubDate>Tue, 26 Dec 2017 14:48:36 +0900</pubDate><guid>https://dominhhai.github.io/vi/2017/12/20171226-ml-bias-variance-tradeoff/</guid><description>&lt;p&gt;Bài này sẽ tập trung vào lý thuyết đằng sau các lỗi mô hình đã trình bày ở &lt;a href=&#34;https://dominhhai.github.io/vi/2017/12/ml-overfitting/&#34;&gt;bài viết trước&lt;/a&gt;. Việc hiểu lý thuyết này giúp ta có được cái nhìn toàn vẹn hơn về lỗi mô hình và cơ sở đánh giá lỗi.&lt;/p&gt;</description></item><item><title>[ML] Mô hình quá khớp (Overfitting)</title><link>https://dominhhai.github.io/vi/2017/12/ml-overfitting/</link><pubDate>Mon, 25 Dec 2017 08:45:04 +0900</pubDate><guid>https://dominhhai.github.io/vi/2017/12/ml-overfitting/</guid><description>&lt;p&gt;Lỗi ước lượng tham số có thể được chia thành 2 loại là &lt;strong&gt;khớp quá&lt;/strong&gt; (&lt;em&gt;over-fitting&lt;/em&gt;) và &lt;strong&gt;chưa khớp&lt;/strong&gt; (&lt;em&gt;under-fitting&lt;/em&gt;) với tập huấn luyện. Trong bài này sẽ nói về cách theo dõi và hạn chế các lỗi này ra sao. Trọng tâm của bài này sẽ tập trung chủ yếu vào kĩ thuật &lt;strong&gt;chính quy hoá&lt;/strong&gt; (&lt;em&gt;regularization&lt;/em&gt;) để giải quyết vấn đề khớp quá của tham số.&lt;/p&gt;</description></item><item><title>[ML] Tối ưu hàm lỗi với Gradient Descent</title><link>https://dominhhai.github.io/vi/2017/12/ml-gd/</link><pubDate>Fri, 22 Dec 2017 08:45:04 +0900</pubDate><guid>https://dominhhai.github.io/vi/2017/12/ml-gd/</guid><description>&lt;p&gt;Mặc dù sử dụng công thức chuẩn để tìm tham số là có thể thực hiện được, nhưng với tập dữ liệu lớn nhiều chiều trong thực tế thì với máy tính lại không thể thực hiện được do các ràng buộc của bộ nhớ cũng như khả năng tính toán. Chưa kể với nhiều bài toán việc giải được đạo hàm để tìm ra công thức chuẩn là rất khó khăn. Nên trong thực tế giải thuật thay thế là &lt;strong&gt;Gradient Descent&lt;/strong&gt; thường được sử dụng.&lt;/p&gt;</description></item><item><title>[ML] MLE của hồi quy tuyến tính</title><link>https://dominhhai.github.io/vi/2017/12/ml-linear-regression-mle/</link><pubDate>Thu, 21 Dec 2017 12:28:26 +0900</pubDate><guid>https://dominhhai.github.io/vi/2017/12/ml-linear-regression-mle/</guid><description>&lt;p&gt;Như bài viết trước đã đề cập tới phương pháp ước lượng tham số bằng công thức chuẩn cho thuật toán hồi quy tuyến tính $\hat\theta=(\Phi^{\intercal}\Phi)^{-1}\Phi^{\intercal}\mathbf{y}$ bằng cách lấy đạo hàm hàm lỗi (&lt;em&gt;mean squared error&lt;/em&gt;). Có thể bạn sẽ nghi ngờ về mức độ tin cậy thống kê của phương pháp ước lượng đó, nên bài viết này sẽ phân tích lý thuyết xác suất ước lượng bằng &lt;a href=&#34;https://dominhhai.github.io/vi/2017/10/sampling-parameters-estimation/#2-2-mle&#34;&gt;MLE (&lt;em&gt;Maximum Likelihood Esitmation&lt;/em&gt;)&lt;/a&gt; xem sao.&lt;/p&gt;</description></item><item><title>[ML] Hồi quy tuyến tính (Linear Regression)</title><link>https://dominhhai.github.io/vi/2017/12/ml-linear-regression/</link><pubDate>Tue, 19 Dec 2017 12:54:51 +0900</pubDate><guid>https://dominhhai.github.io/vi/2017/12/ml-linear-regression/</guid><description>&lt;p&gt;Học có giám sát (&lt;em&gt;Supervised Learning&lt;/em&gt;) được chia ra làm 2 dạng lớn là &lt;strong&gt;hồi quy&lt;/strong&gt; (&lt;em&gt;regression&lt;/em&gt;) và &lt;strong&gt;phân loại&lt;/strong&gt; (&lt;em&gt;classification&lt;/em&gt;) dựa trên tập dữ liệu mẫu - tập huấn luyện (&lt;em&gt;training data&lt;/em&gt;). Với bài đầu tiên này ta sẽ bắt đầu bằng bài toán hồi quy mà cụ thể là hồi quy tuyến tính (&lt;em&gt;linear regression&lt;/em&gt;).&lt;/p&gt;</description></item><item><title>Pattern Recognition and Machine Learning</title><link>https://dominhhai.github.io/vi/2017/12/ml-prml/</link><pubDate>Tue, 12 Dec 2017 16:36:56 +0900</pubDate><guid>https://dominhhai.github.io/vi/2017/12/ml-prml/</guid><description>&lt;p&gt;Được coi là sách giáo khoa cho những người làm học máy, cuốn sách này viết về các giải thuật và lý thuyết xây dựng các giải thuật nhận dạng mẫu và học máy. Tuy nhiên lúc mới đọc thì thấy khá khó nhằn nên tôi đã tìm hiểu độ khó các phần đề biết đường mà đọc.&lt;/p&gt;</description></item><item><title>[ML] Học máy là gì?</title><link>https://dominhhai.github.io/vi/2017/12/ml-intro/</link><pubDate>Fri, 08 Dec 2017 16:31:37 +0900</pubDate><guid>https://dominhhai.github.io/vi/2017/12/ml-intro/</guid><description>&lt;p&gt;Thời gian gần đây AI nổi lên mạnh mẽ xâm nhập vào rất nhiều lĩnh vực trong cuộc sống như tự động dịch thuật, nhận dạng giọng nói, điều khiển tự động, v.v. Nó giờ được coi là xu hướng công nghệ thế giới và nhiều người cho rằng đó là cuộc cách mạng công nghiệp lần thứ 4.&lt;/p&gt;</description></item><item><title>Điểm cốt lõi để thành công</title><link>https://dominhhai.github.io/vi/2017/11/seiko-no-yotei/</link><pubDate>Thu, 23 Nov 2017 12:11:35 +0900</pubDate><guid>https://dominhhai.github.io/vi/2017/11/seiko-no-yotei/</guid><description>Cuốn sách tổng hợp nội dung của một số buổi nói chuyện của ông Inamori Kazuo về kinh doanh, làm việc, nhân sinh. Vẫn phong cách quen thuộc về cách nhìn cuộc sống, cách suy nghĩ, cách hành động như trong các cuốn sách khác mà ông đã viết, nhưng trong cuốn này đặc biệt ở chỗ tổng hợp được nhiều nội dung khá cô động mà vẫn không thiếu sót nội dung.</description></item><item><title>Markdown $\KaTeX$ Live</title><link>https://dominhhai.github.io/vi/page/marked_katex/</link><pubDate>Mon, 20 Nov 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/page/marked_katex/</guid><description/></item><item><title>[.NET] Sài nhiều phiên bản Oracle khi thực thi</title><link>https://dominhhai.github.io/vi/2017/11/vbnet-oracle-version/</link><pubDate>Wed, 15 Nov 2017 10:24:34 +0900</pubDate><guid>https://dominhhai.github.io/vi/2017/11/vbnet-oracle-version/</guid><description>&lt;p&gt;Thông thường khi ta build ứng dụng thì phiên bản Oracle DB ở môi trường phát triển và môi trường thực thi là giống nhau nên không xảy ra vấn đề gì cả. Nhưng nếu ở môi trường phát triển và thực thi khác nhau thì sao?&lt;/p&gt;</description></item><item><title>Tạo sao lại thế?</title><link>https://dominhhai.github.io/vi/page/why/</link><pubDate>Fri, 10 Nov 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/page/why/</guid><description>Trang này tổng hợp các câu hỏi ngu mà mình vẫn thắc mắc trong cuộc sống thường ngày.
1. Sao trời lạnh lại hay đi tè? Khi trời lạnh các mạch máu có xu hướng co lại để không làm mất nhiệt cơ thể nên lượng nước trong cơ thể sẽ được lọc nhiều hơn và đẩy qua bàng quang nên tần suất đi tiểu sẽ nhiều hơn bình thường.</description></item><item><title>[Web] HTTP2 là gì?</title><link>https://dominhhai.github.io/vi/2017/11/what-is-http2/</link><pubDate>Wed, 08 Nov 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/11/what-is-http2/</guid><description>&lt;p&gt;Nhân tiện bản &lt;code&gt;Node v9x&lt;/code&gt; mới ra cho phép ta có thể sử dụng ngay API thử nghiệm &lt;code&gt;HTTP/2&lt;/code&gt; nên cũng tò mò tìm hiểu đôi chút xem kiến trúc, đặc điểm và cách sử dụng thế nào.
Sau 2 năm ra chính thức ra lò, phiên bản tiếp theo của &lt;code&gt;HTTP&lt;/code&gt; này dần được nhiều máy chủ Web lẫn trình duyệt hỗ trợ bởi tính vượt trội của nó so với phiên bản &lt;code&gt;HTTP/1.1&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>[Git] Mô tả về GIT của Linus Torvalds</title><link>https://dominhhai.github.io/vi/2017/11/about-git/</link><pubDate>Sat, 04 Nov 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/11/about-git/</guid><description>&lt;p&gt;Đây là mô tả về GIT mà chủ nhân của nó - ông Linus Torvalds đã viết khi công khai mã nguồn. Cụ thể bài này được copy lại từ &lt;a href=&#34;https://github.com/git/git/tree/e83c5163316f89bfbde7d9ab23ca2e25604af290&#34; target=&#34;_blank&#34;_ rel=&#34;noopener noreferrer&#34;&gt;Github&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>[Windows] Đổi tên file với .bat file</title><link>https://dominhhai.github.io/vi/2017/10/change-filename-bat/</link><pubDate>Mon, 30 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/change-filename-bat/</guid><description>Gần đây Gmail không cho phép gửi các file có đuôi là mã nguồn ngôn ngữ lập trình như .js, .vb chẳng hạn. Ngay cả việc đổi đuôi của các file nén cũng không có hiệu quả như trước, nên buộc phải tìm cách đổi toàn bộ đuôi 1 phát.
Bài viết này sẽ nói về cách thay đổi toàn bộ đuôi file bằng .bat file của Windows, tuy nhiên hoàn toàn có thể sử dụng để làm những chuyện khác với các file này như đổi tên chẳng hạn.</description></item><item><title>[RNN] Cài đặt GRU/LSTM</title><link>https://dominhhai.github.io/vi/2017/10/implement-gru-lstm/</link><pubDate>Mon, 23 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/implement-gru-lstm/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Bài giới thiệu RNN cuối cùng này được dịch lại từ trang &lt;a href=&#34;http://www.wildml.com/2015/10/recurrent-neural-network-tutorial-part-4-implementing-a-grulstm-rnn-with-python-and-theano/&#34; target=&#34;_blank&#34;_ rel=&#34;noopener noreferrer&#34;&gt;blog WILDML&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Trong phần này ta sẽ tìm hiểu về LSTM (Long Short-Term Memory) và GRU (Gated Recurrent Units).
LSTM lần đầu được giới thiệu vào năm 1997 bởi &lt;a href=&#34;https://github.com/dzitkowskik/StockPredictionRNN/blob/master/docs/Hochreiter97_lstm.pdf&#34; target=&#34;_blank&#34;_ rel=&#34;noopener noreferrer&#34;&gt;Sepp Hochreiter và Jürgen Schmidhuber&lt;/a&gt;.
Nó giờ hiện diện trên hầu hết các mô hình có sử dụng học sâu cho NPL.
Còn GRU mới được đề xuất vào năm 2014 là một phiên bản đơn giản hơn của LSTM nhưng vẫn giữ được các tính chất của LSTM.&lt;/p&gt;</description></item><item><title>[RNN] Tìm hiểu về giải thuật BPTT và vấn đề mất mát đạo hàm</title><link>https://dominhhai.github.io/vi/2017/10/understand-rnn-bptt/</link><pubDate>Sun, 22 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/understand-rnn-bptt/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Bài giới thiệu RNN thứ 3 này được dịch lại từ trang &lt;a href=&#34;http://www.wildml.com/2015/10/recurrent-neural-networks-tutorial-part-3-backpropagation-through-time-and-vanishing-gradients/&#34; target=&#34;_blank&#34;_ rel=&#34;noopener noreferrer&#34;&gt;blog WILDML&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Trong phần này tôi sẽ giới thiệu tổng quan về BPTT (Backpropagation Through Time) và giải thích sự khác biệt của nó so với các giải thuật lan truyền ngược truyền thống.
Sau đó ta sẽ cùng tìm hiểu vấn đề mất mát đạo hàm (vanishing gradient problem), nó dẫn ta tới việc phát triển của LSTM và GRU - 2 mô hình phổ biến và mạnh mẽ nhất hiện nay trong các bài toán NLP (và cả các lĩnh vực khác).&lt;/p&gt;</description></item><item><title>[RNN] Cài đặt RNN với Python và Theano</title><link>https://dominhhai.github.io/vi/2017/10/implement-rnn-with-python/</link><pubDate>Sat, 21 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/implement-rnn-with-python/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Bài giới thiệu RNN thứ 2 này được dịch lại từ trang &lt;a href=&#34;http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-2-implementing-a-language-model-rnn-with-python-numpy-and-theano/&#34; target=&#34;_blank&#34;_ rel=&#34;noopener noreferrer&#34;&gt;blog WILDML&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Trong phần này chúng ta sẽ cài đặt một mạng nơ-ron hồi quy từ đầu sử dụng Python
và tối ưu với &lt;a href=&#34;http://deeplearning.net/software/theano/&#34; target=&#34;_blank&#34;_ rel=&#34;noopener noreferrer&#34;&gt;Theano&lt;/a&gt; - một thư viện tính toán trên GPU.
Tôi sẽ chỉ đề cập các thành phần quan trọng để giúp bạn có thể hiểu được RNN,
còn toàn bộ mã nguồn bạn có thể xem trên &lt;a href=&#34;https://github.com/dennybritz/rnn-tutorial-rnnlm&#34; target=&#34;_blank&#34;_ rel=&#34;noopener noreferrer&#34;&gt;Github&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>[RNN] LSTM là gì?</title><link>https://dominhhai.github.io/vi/2017/10/what-is-lstm/</link><pubDate>Fri, 20 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/what-is-lstm/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Bài LSTM này được dịch lại từ trang &lt;a href=&#34;https://colah.github.io/posts/2015-08-Understanding-LSTMs/&#34; target=&#34;_blank&#34;_ rel=&#34;noopener noreferrer&#34;&gt;colah&amp;rsquo;s blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;LSTM là một mạng cải tiến của RNN nhằm giải quyết vấn đề nhớ các bước dài của RNN.
Có nhiều bài đã viết về LSTM, nhưng được đề cập tới nhiều và dễ hiểu nhất có lẽ là của anh
&lt;a href=&#34;https://github.com/colah/&#34; target=&#34;_blank&#34;_ rel=&#34;noopener noreferrer&#34;&gt;Christopher Olah&lt;/a&gt;.
Nên mình quyết định dịch lại cho bản thân có thể hiểu thêm và cho cả các bạn đang tìm hiểu.&lt;/p&gt;</description></item><item><title>[RNN] RNN là gì?</title><link>https://dominhhai.github.io/vi/2017/10/what-is-rnn/</link><pubDate>Thu, 19 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/what-is-rnn/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Bài giới thiệu RNN này được dịch lại từ trang &lt;a href=&#34;http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/&#34; target=&#34;_blank&#34;_ rel=&#34;noopener noreferrer&#34;&gt;blog WILDML&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mạng nơ-ron hồi quy (RNN - Recurrent Neural Network) là một thuật toán được chú ý rất nhiều trong thời gian gần đây bởi các kết quả tốt thu được trong lĩnh vực xử lý ngôn ngữ tự nhiên.&lt;/p&gt;</description></item><item><title>[Xác Suất] Đằng sau giải thuật phân loại</title><link>https://dominhhai.github.io/vi/2017/10/prob-4-ml/</link><pubDate>Sun, 15 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/prob-4-ml/</guid><description>&lt;p&gt;Cho tới thời điểm này chúng ta đã có 1 số khái niệm và phương pháp căn bản của xác suất thống kê. Vậy giờ chúng ta áp dụng nó thể nào cho các bài toán học máy?&lt;/p&gt;</description></item><item><title>[Xác Suất] Mẫu thống kê và ước lượng tham số</title><link>https://dominhhai.github.io/vi/2017/10/sampling-parameters-estimation/</link><pubDate>Sat, 14 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/sampling-parameters-estimation/</guid><description>&lt;p&gt;Trong các phần trước ta đã tìm hiểu cơ bản về xác suất và thống kê xác suất cũng như một số mô hình thống kê thông dụng, dựa vào đó ta tiếp tục lấn sang 1 phần quan trọng là thống kê và ước lượng các tham số cho các bài toán thực tế.&lt;/p&gt;</description></item><item><title>[Xác Suất] Một số phân phối phổ biến</title><link>https://dominhhai.github.io/vi/2017/10/prob-com-var/</link><pubDate>Fri, 13 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/prob-com-var/</guid><description>&lt;p&gt;Cho tới thời điểm này ta đã có các khái niệm quan trọng trong xác suất như sự kiện, biến ngẫu nhiên, phân phối xác suất và các đặc trưng của phân phối. Giờ là lúc ta đề cập tới một số phân phối xác suất phổ biến để có thể áp dụng vào thực tế khi quan sát các mô hình xác suất.&lt;/p&gt;</description></item><item><title>[Xác Suất] Hợp nhiều biến ngẫu nhiên</title><link>https://dominhhai.github.io/vi/2017/10/prob-rand-mulvar/</link><pubDate>Thu, 12 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/prob-rand-mulvar/</guid><description>&lt;p&gt;Trong thực tế ta thường xuyên phải làm việc với nhiều biến ngẫu nhiên cùng lúc chứ không đơn thuần là 1 biến như &lt;a href=&#34;https://dominhhai.github.io/vi/2017/10/prob-rand-var/&#34;&gt;bài viết trước&lt;/a&gt; nên khảo sát việc kết hợp các biến như vậy là rất cần thiết.&lt;/p&gt;</description></item><item><title>[Xác Suất] Biến ngẫu nhiên và phân phối xác suất</title><link>https://dominhhai.github.io/vi/2017/10/prob-rand-var/</link><pubDate>Wed, 11 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/prob-rand-var/</guid><description>&lt;p&gt;Trong &lt;a href=&#34;https://dominhhai.github.io/vi/2017/10/what-is-prob/&#34;&gt;phần trước&lt;/a&gt; ta đã có khái niệm rất cơ bản về phép thử, sự kiện, các tính chất của biến cố và cách tính xác suất của chúng. Trong phần này, ta sẽ tập trung vào các biến cố nhận giá trị ngẫu nhiên và mô hình phân phối xác suất của chúng.&lt;/p&gt;</description></item><item><title>[Xác Suất] Khái niệm cơ bản</title><link>https://dominhhai.github.io/vi/2017/10/what-is-prob/</link><pubDate>Tue, 10 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/what-is-prob/</guid><description>&lt;p&gt;Lý thuyết xác suất là công cụ cơ bản và là tiền đề cho học máy. Việc nắm được lý thuyết về xác suất là rất cần thiết để có thể dấn thân vào lĩnh vực này. Trong phần này, tôi sẽ viết lại các định nghĩa, lý thuyết cơ bản của xác suất thống kê.&lt;/p&gt;</description></item><item><title>Tập các kí hiệu toán học</title><link>https://dominhhai.github.io/vi/2017/10/math-notation/</link><pubDate>Thu, 05 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/math-notation/</guid><description>&lt;p&gt;Bài viết này tổng hợp lại các kí hiệu toán học được sử dụng trong blog. Về cơ bản, tôi sẽ cố gắng đồng bộ hết sức có thể các kí hiệu này với các kí hiệu thường được các nhà học máy và toán học sử dụng. Ở đây tôi không đề cập tới cách tính từng phép toán cụ thể vì tôi đã trình bày trong các chuỗi bài về &lt;a href=&#34;https://dominhhai.github.io/vi/categories/to%C3%A1n/&#34;&gt;Toán&lt;/a&gt; và &lt;a href=&#34;https://dominhhai.github.io/vi/categories/x%C3%A1c-su%E1%BA%A5t/&#34;&gt;Xác Suất&lt;/a&gt; rồi.&lt;/p&gt;</description></item><item><title>[Giải Tích] Đạo hàm của hàm nhiều biến số</title><link>https://dominhhai.github.io/vi/2017/10/multi-var-func/</link><pubDate>Sun, 01 Oct 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/10/multi-var-func/</guid><description>Hàm nhiều biến số có ứng dụng rất rộng rãi trong các bài toán học máy vì đa số các các thuộc tính của hiện tượng ta theo dõi không phải chỉ có 1 mà rất nhiều tham số. Các tham số này được liên kết với nhau một cách đặc biệt bởi các hàm số khác nhau để có thể đưa ra được các kết quả mong muốn. Nên việc tìm hiểu về hàm nhiều biến là rất cần thiết để có thể hiểu được các lý thuyết của học máy.</description></item><item><title>[Ma Trận] Các phép toán</title><link>https://dominhhai.github.io/vi/2017/09/matrix-op/</link><pubDate>Wed, 27 Sep 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/09/matrix-op/</guid><description>&lt;p&gt;Phần tiếp theo của &lt;a href=&#34;https://dominhhai.github.io/vi/categories/ma-tr%E1%BA%ADn/&#34;&gt;chuỗi chủ đề về ma trận&lt;/a&gt;
sẽ đề cập tới các phép toán của ma trận.
Song song với việc lý giải các phép toán, ta cũng sẽ học sử dụng thư viện &lt;a href=&#34;https://github.com/numpy/numpy&#34; target=&#34;_blank&#34;_ rel=&#34;noopener noreferrer&#34;&gt;Numpy&lt;/a&gt; để lập trình với ma trận.&lt;/p&gt;</description></item><item><title>[Ma Trận] Một số khái niệm cơ bản</title><link>https://dominhhai.github.io/vi/2017/09/what-is-matrix/</link><pubDate>Tue, 26 Sep 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/09/what-is-matrix/</guid><description>&lt;p&gt;Đại số tuyến tính là một công cụ cơ bản cần thiết cho việc tìm hiểu học máy.
Bài đầu tiên trong &lt;a href=&#34;https://dominhhai.github.io/vi/categories/ma-tr%E1%BA%ADn/&#34;&gt;chuỗi chủ đề này&lt;/a&gt;
sẽ tập trung vào định nghĩa một số khái niệm cơ bản trong đại số tuyến tính.
Lưu ý rằng các khái niệm tôi viết lại là dưới cái nhìn của người làm lập trình như tôi,
nên không chắc đảm bảo được tính chặt chẽ về mặt toán học.&lt;/p&gt;</description></item><item><title>[Make] Sử dụng trên Windows</title><link>https://dominhhai.github.io/vi/2017/09/gnu-make-windows/</link><pubDate>Wed, 20 Sep 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/09/gnu-make-windows/</guid><description>Makefile là một công cụ giúp ta có thể dễ dàng thực thi các các khối lệnh mà không cần nhờ tới ngôn ngữ lập trình. Mặc dù Make được sử dụng rất rộng rãi trên Unix, Linux hay MacOS, thì trên Windows chắc vẫn còn hiếm hoi. Trên Windows, ta thường file .bat để thực thi các khối lệnh, tuy nhiên các file này chỉ thực thi được trên môi trường Windows.</description></item><item><title>[SQL] Tạo lượng lớn dữ liệu test</title><link>https://dominhhai.github.io/vi/2017/09/sql-test-data/</link><pubDate>Wed, 20 Sep 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/09/sql-test-data/</guid><description>Ta thường xuyên cần một lượng vừa đủ các dữ liệu để test và dev trong quá trình phát triển hệ thống. Để làm việc này ta có thể viết code để migrate và seed dữ liệu. Tuy nhiên ta cũng có thể sử dụng chính lệnh SQL để tạo dữ liệu cực kì đơn giản.
Trước hết ta phân tách bài toán của ta thành 2 phần riêng biệt là:</description></item><item><title>Gatsby vĩ đại</title><link>https://dominhhai.github.io/vi/2017/09/gatsby-vi-dai/</link><pubDate>Mon, 18 Sep 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/09/gatsby-vi-dai/</guid><description>Cuốn tiểu thuyết đầu tiên mình đọc 🙂
1. Bối cảnh đọc Bỗng 1 ngày nhận ra tâm hồn khô cứng của bản thân. Thế rồi bỗng dưng muốn cho chút thay đổi nào đó. Bỗng dưng muốn trách xa những trang sách kĩ thuật với những công thức, dòng code nhảy múa. Muốn trốn vào đâu đó để cảm nhận lại cuộc sống.
Lúc ấy tự dưng trong đầu nghĩ tới chuyện đọc tiểu thuyết 🙂 Cùng lúc ấy 1 cô gái gửi tặng cho 1 cuốn.</description></item><item><title>Tôi tự học - Thu Giang Nguyễn Duy Cần</title><link>https://dominhhai.github.io/vi/2017/09/toi-tu-hoc-nguyen-duy-can/</link><pubDate>Mon, 18 Sep 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/09/toi-tu-hoc-nguyen-duy-can/</guid><description>Cuốn sách tuy mỏng nhưng rất đáng để đọc, để suy ngẫm về cách tác giả tự học. Nội dung bên trong thiên về hướng tự học thông qua đọc sách nhiều hơn. Trái với tưởng tượng ban đầu của mình, cuốn sách này đề cập khá rộng các vấn đề để có nền tảng văn hoá tốt, bao gồm từ định nghĩ thế nào là người có học, tới việc nên đọc sách gì, đọc thế nào, đánh giá các sự vật, hiện tượng ra sao, rồi cả tâm thế học, thời giờ học.</description></item><item><title>[Git] submodule - cùng lúc sài nhiều repo</title><link>https://dominhhai.github.io/vi/2017/09/git-submodule-multi-repo/</link><pubDate>Sun, 03 Sep 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/09/git-submodule-multi-repo/</guid><description>Đôi lúc ta cần phải sử dụng các repo khác như là một module của dự án hiện tại, nhưng ta lại muốn quản lý nó riêng biệt giống như việc sử dụng các trình quản lý gói như npm chẳng hạn. Lúc này ta có thể sài git submodule để quản lý các module từ các repo khác. Ví dụ, blog của mình được xây dựng với theme tranquilpeak và mình cần đưa theme này vào thư mục themes của dự án.</description></item><item><title>[Git] worktree - cùng lúc sài nhiều branch</title><link>https://dominhhai.github.io/vi/2017/09/git-worktree-multi-branchs/</link><pubDate>Sat, 02 Sep 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/09/git-worktree-multi-branchs/</guid><description>git worktree cho phép ta có thể sử dụng cùng lúc nhiều nhánh của repo trong cùng một thư mục dự án. Ví dụ, blog của mình được xây dựng với Hugo, trong thư mục blog của mình có thư mục public là thư mục chứa các file được dịch ra từ mã nguồn blog. Còn ở phía repo trên Github, mình có 2 branch là dev lưu mã nguồn và master lưu các file chạy.</description></item><item><title>A Mind For Numbers</title><link>https://dominhhai.github.io/vi/2017/08/a-mind-for-numbers/</link><pubDate>Wed, 30 Aug 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/08/a-mind-for-numbers/</guid><description>Dưới đây là tổng hợp một vài ý chính từ khóa học &amp;lsquo;Học cách học&amp;rsquo; - trích dẫn từ cuốn sách A Mind for Numbers: How to Excel in Math and Science (Even if You Flunked Algebra), của tác giả Barbara Oakley, xuất bản vào tháng 6, 2014.
10 cách học hiệu quả 1. Hồi tưởng Sau khi đọc xong một trang, hãy rời mắt ra chỗ khác và hồi tưởng lại các ý chính.</description></item><item><title>[Web] Cài đặt SSL miễn phí với Let&#39;s Encrypt</title><link>https://dominhhai.github.io/vi/2017/02/free-ssl-with-let-encrypt/</link><pubDate>Fri, 17 Feb 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/02/free-ssl-with-let-encrypt/</guid><description>Bài viết này hướng dẫn cài đặt Let&amp;rsquo;s Encrypt - một dịch vụ ngon-bổ-miễn phí cho việc HTTPS hóa máy chủ. Ở đây, mình sử dụng máy chủ CentOS 7 và Nginx để thực hiện, nhưng các bạn hoàn toàn có thể làm tương tự với các môi trường khác.
Để cài đặt được Let&#39;s Encrypt, ta cần có môi trường Python v2.7.x trở lên. Nên nếu máy của bạn chưa có thì cài đặt hoặc cập nhập bản mới đi nhé.</description></item><item><title>[Tor] Một cách cài đặt đơn giản trên MacOS</title><link>https://dominhhai.github.io/vi/2017/01/tor-on-mac/</link><pubDate>Tue, 10 Jan 2017 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2017/01/tor-on-mac/</guid><description>&lt;p&gt;Bài này sẽ nói về một cách cực kì đơn giản để cài đặt và sử dụng &lt;a href=&#34;https://www.torproject.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tor&lt;/a&gt; trên máy MacOS.
Tôi thử nghiệm trên Mac Sierra, nhưng về cơ bản có thể thực hiện được trên tất cả các phiên bản khác mà Tor có hỗ trợ một cách tương tự.&lt;/p&gt;</description></item><item><title>[JS] Async Queue kèm điều kiện</title><link>https://dominhhai.github.io/vi/2016/12/js-conditional-async-queue/</link><pubDate>Mon, 19 Dec 2016 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2016/12/js-conditional-async-queue/</guid><description>Có lẽ nhiều người đã từng sử dụng queue hoặc priority queue của async để thực thi danh sách các tác vụ 1 lần. Nhưng nếu để ý thì ta có thể nhận thấy thư viện này không hỗ trợ việc thiết lập điều kiện thực thi cho từng tác vụ riêng biệt, mà chỉ đơn giản là có tác vụ thì sẽ chạy. Điều này làm nảy sinh vấn đề là thiếu sự đồng bộ khi cần thực thi một loạt các tác vụ có liên quan nhau.</description></item><item><title>[Terminal] Cool Terminal - iTerm2</title><link>https://dominhhai.github.io/vi/2016/12/iterm2-cool-terminal/</link><pubDate>Thu, 15 Dec 2016 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2016/12/iterm2-cool-terminal/</guid><description>Bài viết này hướng dẫn cách cài đặt để sài iTerm2 &amp;ldquo;đẹp trai&amp;rdquo; thay cho Terminal &amp;ldquo;xấu xí&amp;rdquo; trên MacOS.
Lưu ý là cái này không sử dụng được trên Windows nhé. Nhưng chưa có Mac thì cứ đọc để có động lực mua Mac cũng hay :D
1. Cài đặt iTerm2 Cách nhẹ nhàng nhất là tải iTerm2 từ trang chủ về rồi kéo vào thư mục Application của máy.</description></item><item><title>[NodeFest] NodeFest Tokyo 2016</title><link>https://dominhhai.github.io/vi/2016/11/nodefest-tokyo-2016/</link><pubDate>Tue, 01 Nov 2016 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2016/11/nodefest-tokyo-2016/</guid><description>Mình vừa tham gia NodeFest Tokyo 2 ngày ở Shibuya-Tokyo. 2 ngày đó gặp lại được một số người quen, cũng như gặp được thêm nhiều cao thủ trong giới JS - Node.js mà trước đây mình mới chỉ biết qua Github. Thực sự là rất thú vị và thu được nhiều bài học, mình sẽ viết chi tiết về một số bài đáng chú ý sau, còn hôm nay mình sẽ tổng kết các slide lại ở đây để tiện theo dõi.</description></item><item><title>[JS] Async Await cực đơn giản</title><link>https://dominhhai.github.io/vi/2016/10/js-async-await-is-simple/</link><pubDate>Mon, 31 Oct 2016 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2016/10/js-async-await-is-simple/</guid><description>&lt;p&gt;Với các đặc tả JavaScript cũ, ta phải sử dụng các hàm phản hồi để xử lý các thao tác bất đồng bộ. Tuy nhiên việc này dẫn tới tình trạng &lt;a href=&#34;https://stackoverflow.com/questions/25098066/what-is-callback-hell-and-how-and-why-rx-solves-it&#34;&gt;callback hell&lt;/a&gt; khi ta có nhiều thao tác bất đồng bộ phải chờ nhau thực hiện. Call hell làm cho mã nguồn của ta rất rối và khó bảo trì.&lt;/p&gt;</description></item><item><title>[Terminal] Tạo Alias cho lệnh trên MacOS</title><link>https://dominhhai.github.io/vi/2016/06/alias-for-command-on-macos/</link><pubDate>Thu, 09 Jun 2016 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2016/06/alias-for-command-on-macos/</guid><description>&lt;p&gt;Để tạo được tên thay thế (alias) cho các lệnh trên Mac khá đơn giản. Ta chỉ cần thêm các lệnh alias vào file &lt;code&gt;.bash_profile&lt;/code&gt; tại thư mục &lt;code&gt;home&lt;/code&gt; là OK. Trường hợp máy chưa có file &lt;code&gt;.bash_profile&lt;/code&gt; thì ta có thể tạo mới file này là OK.&lt;/p&gt;</description></item><item><title>[Node.js] Triển khai dịch vụ Node.js trên Windows</title><link>https://dominhhai.github.io/vi/2016/04/deploy-nodejs-on-windows/</link><pubDate>Mon, 04 Apr 2016 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2016/04/deploy-nodejs-on-windows/</guid><description>&lt;p&gt;Để triển khai ứng dụng Node.js bằng Windows, ta có nhiều phương án như dưới đây:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sử dụng &lt;a href=&#34;https://github.com/foreverjs/forever&#34;&gt;forever&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sử dụng &lt;a href=&#34;https://github.com/tjanczuk/iisnode&#34;&gt;issnode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sử dụng &lt;a href=&#34;https://nssm.cc/&#34;&gt;NSSM&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cả 3 softwares trên đều có hướng dẫn rất chi tiết trên trang chủ tương ứng, nhưng ta nên chọn cái nào để triển khai ứng dụng? Trong bài này ta sẽ liệt kê 1 vài điểm mạnh yếu của chúng.&lt;/p&gt;</description></item><item><title>[Node.js] Copy Node OracleDB Module trên Windows</title><link>https://dominhhai.github.io/vi/2016/04/copy-node-oracledb-on-windows/</link><pubDate>Sun, 03 Apr 2016 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2016/04/copy-node-oracledb-on-windows/</guid><description>Trong bài Chạy Oracle DB trên Nodejs mình đã viết lại quá trình cài đặt node-oracle trên wins, thì bài này sẽ tập trung vào việc triển khai node-oracle khi deploy ứng dụng.
Việc cài đặt node-oracledb không đơn giản tẹo nào khi ta phải cài thằng Visual Studio mất tới 20 phút rồi. Nếu việc này mà lặp lại lần nữa khi muốn deploy hay dev trên một máy khác thì đúng là ác mộng.</description></item><item><title>[Node.js] Cài đặt Node OracleDB trên Windows</title><link>https://dominhhai.github.io/vi/2016/03/install-node-oracledb-on-windows/</link><pubDate>Mon, 28 Mar 2016 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2016/03/install-node-oracledb-on-windows/</guid><description>&lt;p&gt;Bài viết này nhằm mục tiêu lưu lại 1 ngày vất vả vật lộn với cái &lt;a href=&#34;https://github.com/oracle/node-oracledb&#34;&gt;node-oracledb&lt;/a&gt; trên con Windows Server 2008 của mình.&lt;/p&gt;</description></item><item><title>[Atom] Tự động hoàn thiện lệnh</title><link>https://dominhhai.github.io/vi/2016/03/atom-auto-complele/</link><pubDate>Sun, 27 Mar 2016 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2016/03/atom-auto-complele/</guid><description>Các trình soạn thảo mã lệnh hầu hết có tính năng auto-complete (tự động hoàn thiện lệnh) khi gõ. Nhờ có tính năng này mà chúng ta có thể gõ mã nhanh hơn và không cần phải nhớ hết làu làu các API của ngôn ngữ, thư viện nào đó. Hầu hết các API có tên rất dễ liên tưởng tới tính năng của nó nên chỉ cần nhìn là biết ngay nó dùng để làm gì.</description></item><item><title>[Node.js] Mã hoá mật khẩu với Bcrypt</title><link>https://dominhhai.github.io/vi/2016/02/nodejs-ecrypt-password-with-bcrypt/</link><pubDate>Tue, 02 Feb 2016 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2016/02/nodejs-ecrypt-password-with-bcrypt/</guid><description>&lt;p&gt;Mình không thực sự hiểu nhiều về các thuật toán, kĩ thuật mã hóa mật khẩu. Mình chỉ đọc qua một số phương pháp mã hóa và các lời bình về nó trên mạng và quyết định sử dụng &lt;a href=&#34;https://en.wikipedia.org/wiki/Bcrypt&#34;&gt;&lt;code&gt;bcrypt&lt;/code&gt;&lt;/a&gt;.
Đọc thì thấy rằng thuật toán này tuy có hơi chậm hơn các thuật toán khác như &lt;a href=&#34;https://en.wikipedia.org/wiki/MD5&#34;&gt;&lt;code&gt;MD5&lt;/code&gt;&lt;/a&gt;, nhưng đổi lại nó giải quyết được các vấn đề như hack từ điển&amp;hellip; của các thuật toán khác do có thể đối phó được với cấp độ tiến hóa của vi xử lý máy tính.&lt;/p&gt;</description></item><item><title>[Atom] Hiển thị mã Markdown với Atom</title><link>https://dominhhai.github.io/vi/2016/01/atom-markdown-preview/</link><pubDate>Sat, 02 Jan 2016 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2016/01/atom-markdown-preview/</guid><description>Đầu năm rảnh rỗi ngồi viết bậy lúc cho vui tay. Tiện chúc anh em bạn bè năm mới tràn đầy niềm vui và hạnh phúc, sớm thành các tay lập trình lão luyện thuộc top world class.
Xem trước một cách real-time hiển thị của mã Markdown trên Atom (phiên bản hiện tại là 1.x) cực kì dễ dàng. Chỉ cần mở tab đang soạn thảo mã Markdown của bạn và ấn tổ hợp phím CONTROL + SHIFT + M là có thể xem ngay mã Markdown trong khi đang soạn thảo.</description></item><item><title>[Git] GitFlow - một mô hình làm việc hiệu quả</title><link>https://dominhhai.github.io/vi/2015/11/gitflow-simple-effective-git-model/</link><pubDate>Sun, 01 Nov 2015 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2015/11/gitflow-simple-effective-git-model/</guid><description>&lt;p&gt;Gần đây mới được tiếp xúc với git-flow thấy cách làm việc hay quá, muốn chia sẻ lại đôi chút. Về cơ bản git-flow là một tập hợp các lệnh mở rộng cho git nhằm hỗ trợ cho quy trình làm việc hiệu quả hơn.&lt;/p&gt;</description></item><item><title>[Node.js] Cập nhập Nodejs và npm</title><link>https://dominhhai.github.io/vi/2015/10/upgrade-node-npm/</link><pubDate>Sun, 18 Oct 2015 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2015/10/upgrade-node-npm/</guid><description>&lt;p&gt;Thi thoảng lại có bạn hỏi làm sao cập nhập Nodejs và npm, nên làm bài ngắn gọn vài lệnh này để dành cho các bạn mới vào nghề Nodejs.&lt;/p&gt;</description></item><item><title>[PHP] Lỗi Cetificate của Curl trong PHP</title><link>https://dominhhai.github.io/vi/2015/06/php-curl-cetificate-error/</link><pubDate>Sun, 28 Jun 2015 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2015/06/php-curl-cetificate-error/</guid><description>&lt;p&gt;Chả là hôm rồi có sử dụng thư viện &lt;a href=&#34;http://php.net/manual/en/book.curl.php&#34;&gt;&lt;code&gt;curl&lt;/code&gt;&lt;/a&gt; của PHP để gọi dịch vụ Restful Service của bên thứ 3 từ server PHP của mình thì gặp chút rắc rối nên giờ viết lại cho khỏi quên.
Cụ thể là khi chạy lệnh curl của PHP ăn ngay cái lỗi &lt;em&gt;&amp;ldquo;SSL certificate problem: unable to get local issuer certificate&amp;rdquo;&lt;/em&gt; nên phải loay xoay xử lý tí.&lt;/p&gt;</description></item><item><title>[NodeSchool] NodeSchool Hanoi lần 2</title><link>https://dominhhai.github.io/vi/2015/06/nodeschool-hanoi-2/</link><pubDate>Sat, 20 Jun 2015 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2015/06/nodeschool-hanoi-2/</guid><description>&lt;p&gt;Ngày 20/6/2015, buổi workshop lần 2 của &lt;a href=&#34;http://nodeschool.io/hanoi/&#34;&gt;NodeSchool Hanoi&lt;/a&gt; đã diễn ra tốt đẹp với sự tham gia của gần 30 bạn tại công ty &lt;a href=&#34;http://codelovers.vn/&#34;&gt;CodeLovers Vietnam&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>[NodeSchool] NodeSchool Hanoi lần 1</title><link>https://dominhhai.github.io/vi/2015/05/nodeschool-hanoi-1/</link><pubDate>Mon, 11 May 2015 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2015/05/nodeschool-hanoi-1/</guid><description>&lt;p&gt;Ngày 9/5/2015, buổi workshop đầu tiên của &lt;a href=&#34;http://nodeschool.io/hanoi/&#34;&gt;NodeSchool Hanoi&lt;/a&gt; đã diễn ra tốt đẹp với sự tài trợ và ủng hộ nhiệt tình của &lt;a href=&#34;http://www.lapnghiep.co/&#34;&gt;công ty lapnghiep&lt;/a&gt; của anh @Logle. Tại buổi đầu tiên có 10 bạn tham gia, nhưng không vì thế mà không khí của buổi gặp mặt đầu tiên kém sôi động.&lt;/p&gt;</description></item><item><title>[JS] Apply, Call và Bind khác gì nhau?</title><link>https://dominhhai.github.io/vi/2015/03/js-how-apply-call-bind/</link><pubDate>Sat, 28 Mar 2015 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2015/03/js-how-apply-call-bind/</guid><description>&lt;p&gt;Như trong bài về &lt;a href=&#34;https://dominhhai.github.io/vi/2015/03/js-what-is-this/&#34;&gt;từ khóa &lt;code&gt;this&lt;/code&gt;&lt;/a&gt; đã đề cập tới ngữ cảnh thực thi với mối tương quan tới từ khóa &lt;code&gt;this&lt;/code&gt; và việc thay đổi được ngữ cảnh thực thi một cách trực tiếp bằng cách sử dụng &lt;code&gt;call&lt;/code&gt;, &lt;code&gt;apply&lt;/code&gt; và &lt;code&gt;bind&lt;/code&gt;, thì bài viết này sẽ làm rõ ràng hơn 3 phương thức này và sự khác nhau cũng như tính hữu dụng của nó.&lt;/p&gt;</description></item><item><title>[JS] Hiểu thế nào cho đúng về biến this</title><link>https://dominhhai.github.io/vi/2015/03/js-what-is-this/</link><pubDate>Sat, 21 Mar 2015 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2015/03/js-what-is-this/</guid><description>JavaScript (JS) là một ngôn ngữ lập trình khá linh hoạt và thú vị. Nhưng để có được điều đó nó cũng mang tới không ít phiền phức, dễ nhầm lẫn với những người không chuyên. Với những người mới sờ vào JS, họ thường nghĩ ngay chắc JS cũng lơ lớ như các ngôn ngữ lập trình khác như Java hay C#. Nhưng nhiều điểm ở JS lại khá khác với suy nghĩ ở các ngôn ngữ khác gây nên những hiểu lầm cho người mới vào nghề.</description></item><item><title>[JS] Bất ngờ nhỏ với mảng</title><link>https://dominhhai.github.io/vi/2015/03/js-work-with-array/</link><pubDate>Sat, 07 Mar 2015 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2015/03/js-work-with-array/</guid><description>Từng làm việc với một vài ngôn ngữ lập trình (Java, C, C++, C#, Objective-C, PHP), mỗi ngôn ngữ đều có cái hay riêng. Nhưng khi tiếp xúc với JavaScript (JS) lại tự dưng thấy yêu nó, yêu cái vẻ sexy và bất ngờ của nó. Ví như mảng trong JS rất đặc biệt và bất ngờ. Trong bài này sẽ viết lại một số điểm có thể là bất ngờ với một số người như mình.</description></item><item><title>[JS] Tản mạn dấu chấm phẩy</title><link>https://dominhhai.github.io/vi/2015/03/js-do-not-need-semicolon/</link><pubDate>Fri, 06 Mar 2015 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/2015/03/js-do-not-need-semicolon/</guid><description>&lt;p&gt;JavaScript cho phép chúng ta lược bỏ dấu kết thúc lệnh (dấu chấm phẩy). Nhưng trường hợp nào ta phải bắt buộc dùng dấu chấm phải, trường hợp nào thì không và có khi nào ta nên bỏ nó đi?
Trước mắt ta xem một chút bộ dịch JavaScript sẽ làm gì với các lệnh của ta.&lt;/p&gt;</description></item><item><title>About</title><link>https://dominhhai.github.io/vi/page/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dominhhai.github.io/vi/page/about/</guid><description>Tôi là Đỗ Minh Hải, hiện đang làm việc tại Nhật Bản.
Công việc của tôi tập trung vào phát triển các phần mềm doanh nghiệp, bao gồm cả các giải pháp thương mại điện tử, quản lý sản xuất.
Ngoài lập trình, tôi còn có sở thích đọc sách và chơi hoa-cây cảnh.</description></item></channel></rss>