<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hi You, I am Tade</title>
	<atom:link href="https://hoangthuc.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://hoangthuc.com/</link>
	<description></description>
	<lastBuildDate>Sat, 07 Dec 2024 14:46:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://hoangthuc.com/wp-content/uploads/2024/02/logoTH-2-150x150.png</url>
	<title>Hi You, I am Tade</title>
	<link>https://hoangthuc.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cách gỡ bỏ Postman hoàn toàn trên macOS</title>
		<link>https://hoangthuc.com/cach-go-bo-postman-hoan-toan-tren-macos/</link>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Sat, 07 Dec 2024 14:45:49 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Thủ thuật máy tính]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=962</guid>

					<description><![CDATA[<p>Để gỡ bỏ Postman trên macOS, bạn có thể làm theo các bước sau: 1. Xóa ứng dụng Postman 2. Xóa tệp cấu hình và dữ liệu Postman lưu các tệp cấu hình trong thư mục Library. Để xóa các tệp này: 3. Làm sạch thùng rác 4. Kiểm tra lại Nếu bạn đã thực [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/cach-go-bo-postman-hoan-toan-tren-macos/">Cách gỡ bỏ Postman hoàn toàn trên macOS</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Để gỡ bỏ <strong>Postman</strong> trên macOS, bạn có thể làm theo các bước sau:</p>



<h4 class="wp-block-heading">1. <strong>Xóa ứng dụng Postman</strong></h4>



<ul class="wp-block-list">
<li>Mở <strong>Finder</strong>.</li>



<li>Chuyển đến thư mục <strong>Applications</strong>.</li>



<li>Kéo ứng dụng <strong>Postman</strong> vào <strong>Trash (Thùng rác)</strong>.</li>
</ul>



<h4 class="wp-block-heading">2. <strong>Xóa tệp cấu hình và dữ liệu</strong></h4>



<p>Postman lưu các tệp cấu hình trong thư mục <strong>Library</strong>. Để xóa các tệp này:</p>



<ol class="wp-block-list">
<li>Mở Finder và nhấn <strong>Cmd + Shift + G</strong> để mở hộp thoại <strong>Go to Folder</strong>.</li>



<li>Nhập các đường dẫn sau và xóa các tệp hoặc thư mục liên quan đến Postman:
<ul class="wp-block-list">
<li><strong>~/Library/Application Support/Postman</strong></li>



<li><strong>~/Library/Caches/com.postmanlabs.mac</strong></li>



<li><strong>~/Library/Preferences/com.postmanlabs.mac.plist</strong></li>



<li><strong>~/Library/Saved Application State/com.postmanlabs.mac.savedState</strong></li>
</ul>
</li>



<li>Kiểm tra trong <strong>~/Library/Logs/</strong> nếu có thư mục nào liên quan đến Postman và xóa nó.</li>
</ol>



<h4 class="wp-block-heading">3. <strong>Làm sạch thùng rác</strong></h4>



<ul class="wp-block-list">
<li>Sau khi xóa tất cả tệp và thư mục liên quan, bạn có thể dọn sạch thùng rác bằng cách nhấn chuột phải vào biểu tượng <strong>Trash</strong> và chọn <strong>Empty Trash</strong>.</li>
</ul>



<h4 class="wp-block-heading">4. <strong>Kiểm tra lại</strong></h4>



<ul class="wp-block-list">
<li>Mở Finder và tìm kiếm từ khóa &#8220;Postman&#8221; để đảm bảo không còn file nào liên quan.</li>
</ul>



<p>Nếu bạn đã thực hiện đúng các bước trên, Postman sẽ được gỡ bỏ hoàn toàn khỏi máy Mac của bạn.</p>



<p></p>
<p>The post <a href="https://hoangthuc.com/cach-go-bo-postman-hoan-toan-tren-macos/">Cách gỡ bỏ Postman hoàn toàn trên macOS</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cài đặt nodejs với NVM trên AWS Ubuntu 22.4</title>
		<link>https://hoangthuc.com/cai-dat-nodejs-voi-nvm-tren-aws-ubuntu-22-4/</link>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Mon, 04 Nov 2024 00:46:51 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=952</guid>

					<description><![CDATA[<p>Để cài đặt Node.js với NVM (Node Version Manager) trên AWS Ubuntu 22.04, bạn có thể làm theo các bước sau: 1. Cài đặt NVM Mở terminal của server và chạy lệnh sau để tải và cài đặt NVM: Lệnh này sẽ tải về script cài đặt NVM từ GitHub và chạy nó. 2. Tải [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/cai-dat-nodejs-voi-nvm-tren-aws-ubuntu-22-4/">Cài đặt nodejs với NVM trên AWS Ubuntu 22.4</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Để cài đặt Node.js với NVM (Node Version Manager) trên AWS Ubuntu 22.04, bạn có thể làm theo các bước sau:</p>



<h3 class="wp-block-heading"><strong>1. Cài đặt NVM</strong></h3>



<p>Mở terminal của server và chạy lệnh sau để tải và cài đặt NVM:</p>



<p><pre class="brush: bash; title: ; notranslate">curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash</pre></p>



<p>Lệnh này sẽ tải về script cài đặt NVM từ GitHub và chạy nó.</p>



<h3 class="wp-block-heading"><strong>2. Tải lại shell hoặc khởi động lại terminal</strong></h3>



<p>Sau khi cài đặt NVM, bạn cần tải lại shell của mình để NVM hoạt động:</p>



<p><pre class="brush: bash; title: ; notranslate">source ~/.bashrc</pre></p>



<p>Hoặc thoát và mở lại terminal.</p>



<h3 class="wp-block-heading"><strong>3. Kiểm tra cài đặt NVM</strong></h3>



<p>Để kiểm tra xem NVM đã được cài đặt thành công chưa, chạy lệnh:</p>



<p><pre class="brush: bash; title: ; notranslate">nvm --version</pre></p>



<p>Nếu bạn thấy phiên bản của NVM, tức là NVM đã cài đặt thành công.</p>



<h3 class="wp-block-heading"><strong>4. Cài đặt Node.js</strong></h3>



<p>Dùng NVM để cài đặt phiên bản Node.js mà bạn cần. Ví dụ, để cài đặt Node.js phiên bản 20, chạy lệnh:</p>



<p><pre class="brush: bash; title: ; notranslate">nvm install 20</pre></p>



<p>NVM sẽ tự động tải và cài đặt phiên bản Node.js 20.</p>



<h3 class="wp-block-heading"><strong>5. Đặt Node.js phiên bản mặc định</strong></h3>



<p>Nếu bạn muốn đặt Node.js phiên bản 20 làm mặc định, chạy:</p>



<p><pre class="brush: bash; title: ; notranslate">nvm alias default 20</pre></p>



<p>Bây giờ, mỗi lần bạn mở terminal mới, NVM sẽ tự động sử dụng Node.js phiên bản 20.</p>



<h3 class="wp-block-heading"><strong>6. Kiểm tra phiên bản Node.js và NPM</strong></h3>



<p>Sau khi cài đặt, bạn có thể kiểm tra phiên bản Node.js và NPM bằng các lệnh:</p>



<p><pre class="brush: bash; title: ; notranslate">node -v 
npm -v</pre></p>



<p>Lúc này, Node.js đã được cài đặt trên server AWS Ubuntu 22.04 của bạn thông qua NVM, và bạn có thể bắt đầu sử dụng.</p>



<p></p>
<p>The post <a href="https://hoangthuc.com/cai-dat-nodejs-voi-nvm-tren-aws-ubuntu-22-4/">Cài đặt nodejs với NVM trên AWS Ubuntu 22.4</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GnuTLS recv error (-110): The TLS connection was non-properly terminated khi cố gắng truy cập repository Git</title>
		<link>https://hoangthuc.com/gnutls-recv-error-110-the-tls-connection-was-non-properly-terminated-khi-co-gang-truy-cap-repository-git/</link>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Sun, 03 Nov 2024 13:33:56 +0000</pubDate>
				<category><![CDATA[Amazons]]></category>
		<category><![CDATA[Devops]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Vps]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=923</guid>

					<description><![CDATA[<p>Thử các phương pháp trên và xem liệu vấn đề có được giải quyết không nhé 1. Thay Đổi Giao Thức Giao Tiếp của Git Thay vì sử dụng HTTPS, bạn có thể thử sử dụng SSH để truy cập repository. Trước tiên, bạn cần cấu hình SSH cho GitHub: git remote set-url origin git@github.com:*****/****.git [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/gnutls-recv-error-110-the-tls-connection-was-non-properly-terminated-khi-co-gang-truy-cap-repository-git/">GnuTLS recv error (-110): The TLS connection was non-properly terminated khi cố gắng truy cập repository Git</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Thử các phương pháp trên và xem liệu vấn đề có được giải quyết không nhé</p>



<h3 class="wp-block-heading"><strong>1. Thay Đổi Giao Thức Giao Tiếp của Git</strong></h3>



<p>Thay vì sử dụng HTTPS, bạn có thể thử sử dụng SSH để truy cập repository. Trước tiên, bạn cần cấu hình SSH cho GitHub:<br><br><pre class="brush: bash; title: ; notranslate">git remote set-url origin git@github.com:*****/****.git</pre></p>



<h3 class="wp-block-heading"><strong>2. Cập Nhật Git</strong></h3>



<p>Đảm bảo rằng bạn đang sử dụng phiên bản Git mới nhất. Cập nhật Git lên phiên bản mới có thể giúp giải quyết các vấn đề liên quan đến TLS:<br><pre class="brush: bash; title: ; notranslate">sudo apt update
sudo apt install git</pre></p>



<h3 class="wp-block-heading"><strong>3. Cấu Hình TLS cho Git</strong></h3>



<p>Bạn có thể thử thay đổi cách Git xử lý TLS bằng cách chạy lệnh sau:<br><br><pre class="brush: bash; title: ; notranslate">git config --global http.sslVerify false</pre></p>



<p>Tuy nhiên, lưu ý rằng việc tắt xác thực SSL có thể không an toàn và không được khuyến nghị cho môi trường sản xuất.</p>



<h3 class="wp-block-heading"><strong>5. Kiểm Tra Tường Lửa và Cài Đặt Mạng</strong></h3>



<p>Nếu bạn đang sử dụng một firewall hoặc có cấu hình mạng cụ thể, hãy chắc chắn rằng cổng 443 (cổng cho HTTPS) không bị chặn.</p>



<h3 class="wp-block-heading"><strong>6. Kiểm Tra Lỗi Trên Server</strong></h3>



<p>Đôi khi, lỗi có thể xảy ra do vấn đề tạm thời trên server của GitHub. Hãy kiểm tra trang<a href="https://www.githubstatus.com/"> status.github.com</a> để xác nhận rằng không có sự cố nào đang xảy ra.</p>



<h3 class="wp-block-heading">7. <strong>Chuyển sang Sử dụng HTTP2 cho Git</strong></h3>



<p>Nếu vấn đề vẫn tồn tại, thử cấu hình Git để dùng HTTP/2 thay vì HTTP/1.1:</p>



<p><pre class="brush: bash; title: ; notranslate">git config --global http.version HTTP/2</pre></p>



<h3 class="wp-block-heading"><strong>8. Sử Dụng HTTP Thay vì HTTPS</strong></h3>



<p>Nếu vẫn gặp vấn đề, bạn có thể thử sử dụng HTTP thay vì HTTPS. Tuy nhiên, điều này không an toàn và không được khuyến nghị cho môi trường sản xuất:</p>



<p><pre class="brush: bash; title: ; notranslate">git remote set-url origin http://github.com/***/***.git</pre></p>



<p></p>
<p>The post <a href="https://hoangthuc.com/gnutls-recv-error-110-the-tls-connection-was-non-properly-terminated-khi-co-gang-truy-cap-repository-git/">GnuTLS recv error (-110): The TLS connection was non-properly terminated khi cố gắng truy cập repository Git</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Một vài lưu ý khi deploy ứng dụng ở amazon trung quốc</title>
		<link>https://hoangthuc.com/mot-vai-luu-y-khi-deploy-ung-dung-o-amazon-trung-quoc/</link>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Sun, 03 Nov 2024 08:16:01 +0000</pubDate>
				<category><![CDATA[Amazons]]></category>
		<category><![CDATA[Devops]]></category>
		<category><![CDATA[Vps]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=919</guid>

					<description><![CDATA[<p>1. Chọn Đúng Khu Vực (Region) 2. Đăng Ký ICP License 3. Tối Ưu Kết Nối 4. Tuân Thủ Các Quy Định về Bảo Mật và Quyền Riêng Tư 5. Tối Ưu Chi Phí 6. Hỗ Trợ và Tư vấn Địa Phương 7. Sử dụng Mirror của NPM tại Trung Quốc Bạn có thể sử [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/mot-vai-luu-y-khi-deploy-ung-dung-o-amazon-trung-quoc/">Một vài lưu ý khi deploy ứng dụng ở amazon trung quốc</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading"><strong>1. Chọn Đúng Khu Vực (Region)</strong></h3>



<ul class="wp-block-list">
<li>Amazon Web Services (AWS) có hai khu vực tại Trung Quốc: Bắc Kinh (cn-north-1) và Ningxia (cn-northwest-1).</li>



<li>Các dịch vụ và tài nguyên ở Trung Quốc tách biệt khỏi các khu vực toàn cầu, vì vậy hãy chắc chắn bạn đang sử dụng khu vực thích hợp với nhu cầu của mình.</li>
</ul>



<h3 class="wp-block-heading"><strong>2. Đăng Ký ICP License</strong></h3>



<ul class="wp-block-list">
<li>Chính phủ Trung Quốc yêu cầu tất cả các website hoạt động trong nước phải có giấy phép ICP (Internet Content Provider).</li>



<li>Việc đăng ký ICP License mất thời gian và có thể phức tạp, vì vậy hãy bắt đầu sớm và đảm bảo rằng bạn đã hoàn tất quy trình này trước khi public website.</li>
</ul>



<h3 class="wp-block-heading"><strong>3. Tối Ưu Kết Nối</strong></h3>



<ul class="wp-block-list">
<li>Ở Trung Quốc, tốc độ mạng quốc tế có thể bị ảnh hưởng do kiểm duyệt và tường lửa. Do đó, việc lựa chọn đúng các dịch vụ mạng và CDN nội địa, như <strong>CDN của Alibaba Cloud</strong> hoặc <strong>Tencent Cloud</strong>, sẽ giúp cải thiện hiệu suất đáng kể.</li>



<li>Nếu cần kết nối với các dịch vụ AWS toàn cầu, hãy xem xét sử dụng <strong>Direct Connect</strong> hoặc <strong>VPN</strong> để cải thiện độ ổn định và giảm độ trễ.</li>
</ul>



<h3 class="wp-block-heading"><strong>4. Tuân Thủ Các Quy Định về Bảo Mật và Quyền Riêng Tư</strong></h3>



<ul class="wp-block-list">
<li>Trung Quốc có những quy định nghiêm ngặt về bảo mật và quyền riêng tư, bao gồm Luật An ninh mạng và Luật Bảo vệ Dữ liệu Cá nhân (PIPL).</li>



<li>Đảm bảo rằng bạn đang xử lý và lưu trữ dữ liệu người dùng đúng theo các quy định này để tránh vi phạm pháp lý.</li>
</ul>



<h3 class="wp-block-heading"><strong>5. Tối Ưu Chi Phí</strong></h3>



<ul class="wp-block-list">
<li>Chi phí dịch vụ AWS tại Trung Quốc có thể khác so với các khu vực khác. Để tối ưu chi phí, bạn nên tận dụng các tính năng như <strong>Reserved Instances</strong>, <strong>Savings Plans</strong>, và theo dõi tài nguyên sử dụng với <strong>AWS Cost Explorer</strong>.</li>
</ul>



<h3 class="wp-block-heading"><strong>6. Hỗ Trợ và Tư vấn Địa Phương</strong></h3>



<ul class="wp-block-list">
<li>Việc làm việc với một đối tác AWS địa phương tại Trung Quốc có thể giúp bạn xử lý dễ dàng hơn về mặt giấy phép, quy định và tối ưu hóa hạ tầng.</li>
</ul>



<h3 class="wp-block-heading"><strong>7. Sử dụng Mirror của NPM tại Trung Quốc</strong></h3>



<p>Bạn có thể sử dụng mirror của npm tại Trung Quốc để tải gói nhanh hơn. Mirror phổ biến là <strong>Taobao NPM Registry</strong>. Để cài đặt npm từ mirror này, bạn có thể dùng lệnh sau:<br><pre class="brush: bash; title: ; notranslate">npm install --registry=https://registry.npmmirror.com</pre></p>



<p>Hoặc bạn có thể đặt registry mặc định:<br><pre class="brush: bash; title: ; notranslate">npm config set registry https://registry.npmmirror.com</pre></p>



<p>Điều này sẽ giúp giảm thời gian tải gói xuống đáng kể do máy chủ mirror này nằm ở Trung Quốc.</p>



<h3 class="wp-block-heading"><strong>8. Sử Dụng Yarn Thay Thế cho NPM</strong></h3>



<p><strong>Yarn</strong> có thể xử lý cache hiệu quả và đôi khi có tốc độ cài đặt nhanh hơn npm. Để sử dụng Yarn, bạn cần cài đặt Yarn và chuyển các lệnh npm install sang yarn install:<br>
<pre class="brush: bash; title: ; notranslate">npm install -g yarn 
yarn install</pre></p>



<p>Bạn cũng có thể sử dụng Yarn với mirror tương tự như Taobao để tăng tốc độ.</p>



<h3 class="wp-block-heading"><strong>9. Sử dụng Cache cho npm</strong></h3>



<p>Nếu bạn triển khai nhiều lần, hãy tận dụng cache npm để không phải tải lại toàn bộ các gói. Ví dụ:<br><pre class="brush: bash; title: ; notranslate">npm install --prefer-offline --no-audit</pre></p>



<p><strong>&#8211;prefer-offline</strong> sẽ kiểm tra cache trước khi cố tải từ registry.</p>



<h3 class="wp-block-heading"><strong>10. Sử Dụng Docker với Cache Layers</strong></h3>



<p>Nếu bạn dùng Docker, hãy cài đặt các gói và cache chúng trong các layer riêng biệt để tối ưu thời gian build khi chỉ có thay đổi nhỏ trong mã nguồn.</p>



<h3 class="wp-block-heading"><strong>11. Kiểm Tra Tường Lửa và Proxy</strong></h3>



<p>Đảm bảo rằng kết nối đến npm registry không bị chặn bởi tường lửa hoặc proxy của mạng. Nếu có, hãy xem xét thiết lập proxy hoặc liên hệ với quản trị mạng để mở các cổng cần thiết.</p>



<h3 class="wp-block-heading"><strong>11.Sử dụng setcap để cấp quyền đặc biệt cho Node.js</strong></h3>



<p>Bạn có thể cấu hình để Node.js có quyền sử dụng cổng thấp (như cổng 443) mà không cần chạy dưới quyền root:</p>



<p><pre class="brush: bash; title: ; notranslate">sudo setcap 'cap_net_bind_service=+ep' $(which node)</pre></p>



<p>Lệnh này sẽ cấp quyền cho Node.js để lắng nghe trên cổng 443. Tuy nhiên, hãy lưu ý rằng việc này có thể ảnh hưởng đến bảo mật, vì vậy chỉ thực hiện khi bạn hiểu rõ rủi ro.</p>



<p></p>
<p>The post <a href="https://hoangthuc.com/mot-vai-luu-y-khi-deploy-ung-dung-o-amazon-trung-quoc/">Một vài lưu ý khi deploy ứng dụng ở amazon trung quốc</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cách Kiểm Tra Tốc Độ VPS Khỏe Hay Yếu</title>
		<link>https://hoangthuc.com/cach-kiem-tra-toc-do-vps-khoe-hay-yeu/</link>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Wed, 20 Mar 2024 02:23:06 +0000</pubDate>
				<category><![CDATA[Vps]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=914</guid>

					<description><![CDATA[<p>Bạn đang không biết cách &#8220;kiểm tra tốc độ VPS&#8221; mình đang sử dụng, và tốc độ VPS đó có tương xứng với số tiền Bạn bỏ ra để mua hay không? Nếu Bạn vẫn chưa biết cách test speed vps, thì bài viết này sẽ giúp Bạn có cái nhìn tổng quan hơn. Cấu hình [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/cach-kiem-tra-toc-do-vps-khoe-hay-yeu/">Cách Kiểm Tra Tốc Độ VPS Khỏe Hay Yếu</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Bạn đang không biết cách &#8220;<strong>kiểm tra tốc độ VPS</strong>&#8221; mình đang sử dụng, và tốc độ VPS đó có tương xứng với số tiền Bạn bỏ ra để mua hay không? Nếu Bạn vẫn chưa biết cách<strong> test speed vps</strong>, thì bài viết này sẽ giúp Bạn có cái nhìn tổng quan hơn. Cấu hình máy chủ ảo mạnh sẽ giúp website / ứng dụng của Bạn nhanh hơn, chống được các đợt tấn công DDoS tốt hơn.</p>



<h3 class="wp-block-heading"><strong>I. Trước hết, chúng ta cần tìm hiểu các yếu tố cấu thành nên 1 VPS!</strong></h3>



<p>VPS viết tắt bởi Virtual private server &#8211; Máy chủ riêng ảo. Với công nghệ cũ, VPS được tạo ra qua quá trình ảo hóa từ 1 server vật lý (Không phải Cloud &#8211; các đơn vị quảng cáo Raid 10 là sử dụng công nghệ cũ, không phải Cloud) </p>



<p>Với công nghệ mới &#8211; Công nghệ điện toán đám mây thực thụ (true Cloud) với hệ thống server đồ sộ và khỏe mạnh, hệ thống lưu trữ Storage tập trung, VPS được xây dựng trên nền tảng Cloud không còn gọi là VPS, mà thường được gọi là VM (Virtual Machines). </p>



<p>Máy chủ ảo hay máy chủ vật lý, thì các thành phần cơ bản cũng giống như Laptop của Chúng ta. Và 1 VPS có cấu hình mạnh cần có sức mạnh cân đối giữa các thành phần dưới đây.</p>



<h3 class="wp-block-heading"><strong>II. Kiểm tra tốc độ VPS! Trước tiên phải kể đến ổ cứng</strong></h3>



<p>Lý do ổ cứng được đưa vào tiêu chí đánh giá đầu tiên trước khi<strong>&nbsp;test speed vps</strong>&nbsp;là vì ổ cứng là thành phần hay bị nghẽn cổ chai nhất. Hiện tại, rất ít nhà cung cấp&nbsp;<strong>dịch vụ VPS</strong>&nbsp;tại Việt Nam sử dụng ổ SSD thực thụ. Và HDD (thậm chí là HDD SATA) chính là nguyên nhân gây ra việc VPS chậm như rùa, thậm chí chỉ với vài traffic cũng làm VPS treo. Để thấy được tầm quan trọng, hãy so sánh việc Bạn đang sử dụng HDD và nâng cấp Laptop lên SSD! Tốc độ nhanh đáng kinh ngạc&nbsp;&amp; Ram, CPU cũng load thấp hơn với cùng mức sử dụng.</p>



<p>Vậy&nbsp;VPS có hiển thị ổ cứng đang sử dụng là SSD, HDD hay không? &#8211; Câu trả lời là KHÔNG! Nhưng ta có thể kiểm tra bằng câu lệnh (dành cho VPS linux), thông qua con số, chúng ta có thể đánh giá VPS đó sử dụng loại ổ cứng gì. Có rất nhiều&nbsp;script để test, ở đây mình giới thiệu Script của Anh Luân Trần&nbsp;hocvps.com&nbsp;như sau.</p>



<p><code>curl -Lso- tocdo.net/share | bash</code></p>



<ul class="wp-block-list">
<li>Hãy chú ý thông số &#8220;<strong>dd Test</strong>&#8221; &#8220;<strong>Fio Test</strong>&#8221;&nbsp;</li>



<li>Qua kinh nghiệm sử dụng của mình, thì VPS có&nbsp;<strong>dd Test</strong>&nbsp;từ 300MB/s trở lên là được. Và thông số&nbsp;<strong>Fio Test</strong>&nbsp;phải từ 10k&nbsp;đối với&nbsp;<strong>Read IOPS</strong>&nbsp;(đọc), Thông số&nbsp;<strong>Write IOPS</strong>&nbsp;phải từ 5k trở lên.&nbsp;</li>



<li>Nếu Bạn chưa mua VPS, hãy hỏi nơi Bạn đang chuẩn bị mua về các&nbsp;<strong>thông số IOPS Read và Write</strong>&nbsp;nhé.</li>
</ul>



<p><strong>VPS chịu được nhiều traffic hay không</strong>&nbsp;phụ thuộc đến 80-90%&nbsp;vào tốc độ xử lý của Database, mà Database nhanh hay không lại&nbsp;<strong>phụ thuộc vào ổ cứng</strong>&nbsp;là chính!&nbsp;</p>



<p>Sự khác biệt hiệu năng VPS đến 90% là do ổ cứng. Vì vậy nếu Bạn đang mua &#8220;SSD VPS&#8221; mà được cung cấp 1 &#8220;HDD VPS&#8221; thì hãy thắc mắc ngay với nhà cung cấp nhé. Nếu họ &#8220;cam kết đó là SSD, thì hãy yêu cầu nhà cung cấp đó trả lời bằng văn bản&#8221;, Họ sẽ nhìn nhận vấn đề ở cấp độ khác ngay!</p>



<h3 class="wp-block-heading"><strong>III. Test VPS không thể bỏ qua Loại CPU sử dụng trên VPS</strong></h3>



<p>CPU là bộ vi xử lý trung tâm, Sức mạnh của CPU thể hiện ở nhiều yếu tố. Càng mới, càng loại CPU đời cao càng tốt. Loại phổ biến và tốt là E5-2600 V3, V4. CPU Vật lý có số Core càng nhiều càng tốt (trên 20 Core / 1CPU vật lý), số GHz càng cao càng tốt (trên 2.4GHz), quan trọng hơn là thông số &#8220;Cache&#8221; của CPU. Loại CPU tốt có&nbsp;Cache từ 30MB trở lên.</p>



<p>VPS cùng số Core thì CPU đời cao luôn có hiệu năng tốt hơn CPU đời thấp (chênh lệch về hiệu năng khoảng 10-30%)</p>



<p>Bạn có thể tra cứu, so sánh hiệu năng của CPU vật lý tại trang&nbsp;https://ark.intel.com&nbsp;</p>



<h3 class="wp-block-heading"><strong>IV. Thành phần không thể thiếu là RAM &#8211; số GB Ram trên VPS càng nhiều càng tốt</strong></h3>



<p>RAM là bộ nhớ đệm, nó có tốc độ xử lý cực nhanh và &#8220;cache&#8221; lại các thành phần thường xuyên sử dụng. Đây cũng chính là yếu tố then chốt cho việc &#8220;<strong>Cài đặt và tối ưu VPS</strong>&#8220;.&nbsp;</p>



<p>RAM cũng có nhiều &#8220;đời&#8221; khác nhau, chênh lệch tốc độ xử lý các đời RAM Khác nhau khoảng 10-20%.</p>



<h3 class="wp-block-heading">V. Lưu ý khi kiểm tra tốc độ mạng VPS (Bandwidth), đừng nhầm với &#8220;<em><strong>Data transfer</strong></em>&#8221; nhé</h3>



<ul class="wp-block-list">
<li>Với 1 VPS sử dụng bình thường, tốc độ mạng không cần quá cao đâu, thực tế nếu&nbsp;<strong>kiểm tra băng thông của vps&nbsp;</strong>ở mức sử dụng khoảng vài Mbps đến vài chục Mbps.</li>



<li>Nếu các website của Bạn sử dụng trên VPS có traffic dưới 10k/1 ngày, thì tốc độ mạng trung bình không sử dụng hết 20Mbps đâu. Với trên 50k traffic/ngày, Bạn sẽ cần đến tốc độ từ 100Mbps trở lên.</li>



<li>Bạn cần chú ý đến 2 thông số: Trên 50Mbps và ỔN ĐỊNH. Rất nhiều đơn vị cung cấp VPS thả nổi băng thông, không giới hạn. Điều này chỉ có lợi khi Bạn muốn chiếm dụng băng thông lớn.</li>



<li>Còn bình thường, Bạn có thể chịu hậu quẩ của việc &#8220;VPS khác chiếm dụng băng thông&#8221;. Tức là 1 VPS &#8220;cùi cùi&#8221; có thể gây nghẽn băng thông của cả hệ thống. Tin chắc rằng Bạn không muốn gặp tình trạng này đâu.</li>



<li>Hãy test random ở vài thời điểm trong ngày, là Bạn có thể đánh giá được độ ổn định của băng thông.</li>



<li>Tất nhiên, nếu Bạn sử dụng website có RẤT NHIỀU ảnh hoặc video thì cũng nên chú ý đến thông số này. Hoặc traffic cục bộ trên 1 thời điểm thì Bạn cũng cần thông số này lớn 1 chút.</li>



<li>Một lưu ý nhỏ là tocdo.net sử dụng&nbsp;<em><strong>MBps.</strong></em>&nbsp;Bạn cần x8 để quy đổi ra thông số tốc độ mạng thường sử dụng&nbsp;<em><strong>Mbps</strong></em>.</li>
</ul>



<h3 class="wp-block-heading"><strong>VI. VPS sử dụng Công nghệ ảo hóa, Công nghệ điện toán đám mây có gì khác?</strong></h3>



<p>Hiện nay có rất nhiều công nghệ ảo hóa được sử dụng, phải kể đến&nbsp;KVM, VMWare, OpenVZ, XEN&#8230;&nbsp;Trong đó KVM được đánh giá tốt nhất, sau đó là VMWare. OpenVZ, XEN được đánh giá là không nên sử dụng.&nbsp;</p>



<p>Công nghệ Điện toán đám mây (Cloud Computing) dẫn đầu hiện nay chính là OpenStack. Nếu VPS Bạn đang sử dụng không phải là &#8220;Cloud thật&#8221; và lại sử dụng OpenVZ thì thực sự là điều đáng lo ngại.</p>



<h3 class="wp-block-heading"><strong>VII. Thông tin bổ sung khi đánh giá tốc độ VPS</strong></h3>



<p>Nếu nhà cung cấp quảng cáo là &#8220;Raid 10&#8221; hãy cần trọng với nó. Vì Raid 10 có thể khiến Bạn mất hoàn toàn dữ liệu khi Máy chủ hư hại phần cứng. Và tất nhiên, điều này không xảy ra khi bạn sử dụng VPS tại HostingViet. Vì phần &#8220;lưu trữ&#8221; là cả 1 HỆ THỐNG Storage chuyên dụng. Giảm rủi ro phần cứng xuống gần như = 0.Yếu tố khác ngoài &#8220;tốc độ&#8221; là mức độ tiện dụng! Bạn phải chủ động được hoàn toàn!</p>



<ul class="wp-block-list">
<li>Từ việc khởi tạo, cài đặt hệ điều hành cho VPS. Với nền tảng Cloud, VPS được khởi tạo siêu tốc chỉ với vài chục giây.&nbsp;</li>



<li>Các chức năng Tắt (shutdown), reboot (khởi động lại), boot (khởi động VPS) có tiện dụng không. có thể quản lý VPS qua màn hình VNC hay không?</li>



<li>Bạn có được chủ động Rebuild lại Hệ điều hành hay không? Có sẵn các IMAGE phổ biến hay không?</li>



<li>1 Hệ thống Cloud VPS hoàn hảo phải có đủ các thành phần trên.&nbsp;</li>
</ul>



<h3 class="wp-block-heading"><strong>VIII. Vậy không nên đăng ký VPS nếu thấy các &#8220;dấu hiệu&#8221; nào?</strong></h3>



<p>&#8211; Đầu tiên phải kể đến việc&nbsp;<strong>IOPS Read và Write không cao&nbsp;</strong>=&gt; Bạn sẽ không được sử dụng ổ SSD như quảng cáo đâu!</p>



<p>&#8211; Ảo hóa OpenVZ cũng nên tránh, vì VPS của Bạn sẽ bị ảnh hưởng nếu 1 VPS nào đó trên hệ thống bị DDoS hoặc tiêu tốn nhiều tài nguyên. Tức là thông số Ram, CPU, IOPS của VPS của Bạn sẽ bị chiếm dụng tài nguyên. VPS chập chờn chính nhờ sự vạ lây từ công nghệ Ảo hóa OpenVZ. 1 điều thú vị là Ảo hóa OpenVZ không cài được hệ điều hành Windows.</p>



<p>&#8211; VPS không sử dụng nền tảng Cloud thực thụ: Dấu hiệu ở đây là VPS không có giao diện quản trị (Shutdown, restart, start (boot), Reinstall). Nhà cung cấp dịch vụ chỉ giao thông tin SSH / Remotedesktop.<br>Và tất nhiên, việc reset password VPS cũng phải nhờ đến bên cung cấp dịch vụ, thậm chí nếu kỹ thuật yếu, thì không reset được password login VPS!</p>



<p>&#8211; Nhà cung cấp quảng cáo &#8220;RAID 10&#8221; chứng tỏ dữ liệu chỉ được lưu cục bộ trên 1 Server vật lý đơn thuần, không được lưu trên các hệ thống lưu trữ chuyên dụng tập trung. Điều này có nghĩa là Dữ liệu của Bạn có thể không cánh mà bay bất cứ lúc nào. Nếu Bạn chưa bị mất data bao giờ thì chưa thấu hiểu được cảm giác &#8220;dữ liệu&#8221; không thể cứu vãn được đau khổ như thế nào đâu!</p>



<p>Nguồn tham khảo <strong>HostingViet</strong></p>
<p>The post <a href="https://hoangthuc.com/cach-kiem-tra-toc-do-vps-khoe-hay-yeu/">Cách Kiểm Tra Tốc Độ VPS Khỏe Hay Yếu</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>HTTP status code là gì? Danh sách đầy đủ HTTP status code</title>
		<link>https://hoangthuc.com/http-status-code-la-gi-danh-sach-day-du-http-status-code/</link>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Tue, 07 Nov 2023 02:11:27 +0000</pubDate>
				<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=878</guid>

					<description><![CDATA[<p>Dù có là 1 lập trình viên web hay không, chắc hẳn bạn cũng đã bắt gặp HTTP status code (mã trạng thái HTTP) ít nhất 1 hay nhiều lần rồi đúng không nào? 200, 404, 500… đều là những HTTP status code phổ biến. Thậm chí các truyện vui hay ảnh chế meme về [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/http-status-code-la-gi-danh-sach-day-du-http-status-code/">HTTP status code là gì? Danh sách đầy đủ HTTP status code</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Dù có là 1 lập trình viên web hay không, chắc hẳn bạn cũng đã bắt gặp HTTP status code (mã trạng thái HTTP) ít nhất 1 hay nhiều lần rồi đúng không nào?</p>



<p>200, 404, 500… đều là những HTTP status code phổ biến. Thậm chí các truyện vui hay ảnh chế meme về 404 cũng khá nổi tiếng và đầy rẫy trên mạng Internet mà hầu hết bất kỳ ai cũng có thể hiểu được.</p>



<p>Vậy thì có bao giờ bạn thắc mắc HTTP status code là gì và ý nghĩa các con số của chúng hay chưa? Hôm nay chúng ta sẽ nói tổng quát 1 chút về HTTP status code và ý nghĩa nằm ẩn sau các con số đó nhé!</p>



<h2 class="wp-block-heading" id="http-status-code-ma-trang-thai-http-la-gi">HTTP Status Code – Mã trạng thái HTTP là gì?</h2>



<p>Khi được nhận và phiên dịch 1 yêu cầu HTTP từ phía client, HTTP status code sẽ được máy chủ cung cấp để đáp ứng yêu cầu đó của họ. Nó bao gồm code từ IETF Request for Comments (RFC), các thông số kỹ thuật khác và 1 số code bổ sung được sử dụng trong 1 số ứng dụng phổ biến của giao thức HTTP.</p>



<p>Chữ số đầu tiên của HTTP status code chỉ định 1 trong 5 loại phản hồi quy chuẩn. Các cụm tin nhắn được hiển thị chỉ mang tính tượng trưng, nhưng cũng có thể cung cấp bất kỳ thông tin bổ sung nào để chúng ta có thể đọc được. Trừ khi có những chỉ định khác, HTTP status code được xem như 1 phần của quy chuẩn HTTP/1.1 (RFC 7231).</p>



<p>Cơ Quan Cấp Số Được Ấn Định Trên Internet (tức IANA hay The Internet Assigned Numbers Authority) chính là nơi duy trì sổ đăng ký chính thức của các HTTP status code.</p>



<h2 class="wp-block-heading" id="hang-muc-cac-http-status-code">Hạng mục các HTTP status code</h2>



<p>Tất cả các HTTP status code phản hồi được chia ra thành 5 hạng mục riêng biệt và là các số nguyên có 3 chữ số. Chữ số đầu được dùng để xác định loại phản hồi, trong khi 2 chữ số cuối thì không có bất kỳ vai trò phân loại nào. HTTP status code sẽ cho ta biết liệu 1 yêu cầu HTTP cụ thể đã được hoàn thành thành công hay chưa.</p>



<p>Các ứng dụng hiểu HTTP status code không cần phải biết hết tất cả code, tức là dù code không xác định cũng có cụm từ để chỉ lý do không xác định. Cụm từ này không cho phía client nhiều thông tin nhưng các ứng dụng HTTP đó phải hiểu được nó thuộc 1 trong 5&nbsp; hạng mục riêng biệt. 5 hạng mục đó bao gồm:</p>



<p>–&nbsp;<strong>1xx (100 – 199): Information responses / Phản hồi thông tin</strong>&nbsp;– Yêu cầu đã được chấp nhận và quá trình xử lý yêu cầu của bạn đang được tiếp tục.</p>



<p>–&nbsp;<strong>2xx (200 – 299): Successful responses / Phản hồi thành công</strong>&nbsp;– Yêu cầu của bạn đã được máy chủ tiếp nhận, hiểu và xử lý thành công.</p>



<p>–&nbsp;<strong>3xx (300 – 399): Redirects / Điều hướng</strong>&nbsp;– Phía client cần thực hiện hành động bổ sung để hoàn tất yêu cầu.</p>



<p>–&nbsp;<strong>4xx (400 – 499): Client errors / Lỗi phía client</strong>&nbsp;– Yêu cầu không thể hoàn tất hoặc yêu cầu chứa cú pháp không chính xác. 4xx sẽ hiện ra khi có lỗi từ phía client do không đưa ra yêu cầu hợp lệ.</p>



<p>–&nbsp;<strong>5xx (500 – 599): Server errors / Lỗi phía máy chủ</strong>&nbsp;– Máy chủ không thể hoàn thành yêu cầu được cho là hợp lệ. Khi 5xx xảy ra, bạn chỉ có thể đợi để bên hệ thống máy chủ xử lý xong.</p>



<h2 class="wp-block-heading" id="danh-sach-day-du-cac-http-status-code-code-cum-tu-chi-ly-do">Danh sách đầy đủ các HTTP status code (code + cụm từ chỉ lý do):</h2>



<h3 class="wp-block-heading" id="1-information-responses-phan-hoi-thong-tin">1. Information responses / Phản hồi thông tin:</h3>



<p>–&nbsp;<em>100 Continue:</em>&nbsp;Phản hồi tạm thời này cho biết rằng mọi thứ tới hiện tại vẫn ổn và phía client nên tiếp tục yêu cầu hay bỏ qua phản hồi nếu yêu cầu đã hoàn tất.</p>



<p>–&nbsp;<em>101 Switching Protocol:</em>&nbsp;Code này được gửi để phản hồi header yêu cầu Upgrade từ phía client và cho biết giao thức máy chủ đang chuyển sang.</p>



<p>–&nbsp;<em>102 Processing (<a href="http://www.webdav.org/">WebDAV</a>):</em>&nbsp;Code này cho biết rằng máy chủ đã nhận và đang xử lý yêu cầu, nhưng phản hồi vẫn chưa có hiệu lực.</p>



<p>–&nbsp;<em>103 Early Hints:</em>&nbsp;Được sử dụng để trả về một số tiêu đề phản hồi trước message HTTP cuối cùng.</p>



<h3 class="wp-block-heading" id="2-successful-responses-phan-hoi-thanh-cong">2. Successful responses / Phản hồi thành công:</h3>



<p>–&nbsp;<em>200 OK:</em>&nbsp;Yêu cầu đã thành công. Ý nghĩa của thành công còn phụ thuộc vào phương thức HTTP là gì:</p>



<p><em>GET:</em>&nbsp;Tài nguyên đã được tìm nạp và được truyền trong nội dung thông điệp.<br><em>HEAD:</em>&nbsp;Các header thực thể nằm trong nội dung thông điệp.<br><em>PUT hoặc POST:</em>&nbsp;Tài nguyên mô tả kết quả của hành động được truyền trong nội dung thông điệp.<br><em>TRACE:</em>&nbsp;Nội dung thông điệp chứa thông báo yêu cầu khi máy chủ nhận được.</p>



<p>–&nbsp;<em>201 Created:</em>&nbsp;Yêu cầu đã thành công và kết quả là một tài nguyên mới đã được tạo. Đây thường là phản hồi được gửi sau các yêu cầu POST hoặc một số yêu cầu PUT.</p>



<p>–&nbsp;<em>202 Accepted:</em>&nbsp;Yêu cầu đã được nhận nhưng chưa được thực hiện. Yêu cầu này là non-committal, vì không có cách nào trong HTTP để gửi sau đó một phản hồi không đồng bộ cho biết kết quả của yêu cầu. Nó dành cho các trường hợp trong đó 1 quá trình / máy chủ khác xử lý yêu cầu hoặc để xử lý hàng loạt.</p>



<p>–&nbsp;<em>203 Non-Authoritative Information:</em>&nbsp;Code phản hồi này có nghĩa là siêu thông tin được trả về không hoàn toàn giống với thông tin có sẵn từ máy chủ gốc, nhưng được thu thập từ phần copy local hay của bên phía thứ 3. Code này chủ yếu được sử dụng để phản chiếu hoặc sao lưu tài nguyên khác. Ngoại trừ trường hợp cụ thể đó, thông thường phản hồi “200 OK” được ưu tiên cho trạng thái này.</p>



<p>–&nbsp;<em>204 No Content:</em>&nbsp;Không có nội dung để gửi cho yêu cầu này, nhưng các header có thể hữu dụng. User-agent có thể cập nhật các header đã lưu trong bộ nhớ cache cho tài nguyên này bằng các header mới.</p>



<p>–&nbsp;<em>205 Reset Content:</em>&nbsp;Cho user-agent biết để reset document đã gửi yêu cầu này.</p>



<p>–&nbsp;<em>206 Partial Content:</em>&nbsp;Code phản hồi này được dùng khi Range header được gửi từ client để yêu cầu chỉ 1 phần của nguồn tài nguyên.</p>



<p>–&nbsp;<em>207 Multi-Status (<a href="http://www.webdav.org/">WebDAV</a>):</em>&nbsp;Truyền tải thông tin về nhiều nguồn tài nguyên, đối với các trường hợp mà nhiều status code có thể đều thích hợp.</p>



<p>–&nbsp;<em>208 Already Reported (<a href="http://www.webdav.org/">WebDAV</a>):</em>&nbsp;Được sử dụng trong 1 phần tử phản hồi&nbsp;<code>&lt;dav:propstat&gt;</code>&nbsp;để tránh liệt kê nhiều lần các thành viên nội tại của nhiều liên kết vào cùng 1 tập hợp.</p>



<p>–&nbsp;<em>226 IM Used (<a href="https://tools.ietf.org/html/rfc3229">HTTP Delta encoding</a>):</em>&nbsp;Máy chủ đã hoàn thành yêu cầu&nbsp;<em>GET</em>&nbsp;cho nguồn tài nguyên và phản hồi là sự trình bày kết quả của 1 hoặc nhiều thao tác instance được áp dụng cho instance hiện tại.</p>



<h3 class="wp-block-heading" id="3-redirects-dieu-huong">3. Redirects / Điều hướng:</h3>



<p>–&nbsp;<em>300 Multiple Choice:</em>&nbsp;Yêu cầu có thể có nhiều hơn 1 phản hồi khả dụng. User-agent hay user nên chọn 1 trong số đó. (Không có cách chuẩn hóa nào để chọn 1 trong các phản hồi, nhưng HTML liên kết đến các khả năng được khuyến nghị để user có thể chọn.)</p>



<p>–&nbsp;<em>301 Moved Permanently:</em>&nbsp;URL của tài nguyên được yêu cầu đã được thay đổi vĩnh viễn. URL mới được đưa ra trong phần phản hồi.</p>



<p>–&nbsp;<em>302 Found:</em>&nbsp;Code phản hồi này có nghĩa là URI của tài nguyên được yêu cầu đã được thay đổi tạm thời. Những thay đổi khác trong URI có thể được thực hiện trong tương lai. Do đó, chính URI này sẽ được client sử dụng trong các yêu cầu trong tương lai.</p>



<p>–&nbsp;<em>303 See Other:</em>&nbsp;Máy chủ gửi phản hồi này để điều hướng client lấy nguồn tài nguyên tại 1 URI khác với 1 yêu cầu GET.</p>



<p>–&nbsp;<em>304 Not Modified:</em>&nbsp;Code này được sử dụng cho mục đích caching. Nó cho client biết rằng phản hồi chưa được điều chỉnh, nên client có thể tiếp tục sử dụng cùng phiên bản phản hồi trong bộ nhớ cache.</p>



<p>–&nbsp;<em>305 Use Proxy:</em>&nbsp;Được xác định trong phiên bản trước của HTTP specification để chỉ ra rằng phản hồi được yêu cầu phải được truy cập bằng proxy. Nó được yêu cầu do quan ngại về phần bảo mật liên quan đến cấu hình trong băng tần của proxy.</p>



<p>–&nbsp;<em>306 unused:</em>&nbsp;Mã phản hồi này không còn được sử dụng nữa, nó được bảo lưu và chỉ được sử dụng trong phiên bản trước của HTTP/1.1 specification.</p>



<p>–&nbsp;<em>307 Temporary Redirect:</em>&nbsp;Máy chủ gửi phản hồi này để điều hướng client tới lấy tài nguyên được yêu cầu tại 1 URI khác với cùng 1 phương thức đã được sử dụng trong yêu cầu trước đó. Code này có cùng ý nghĩa như code phản hồi HTTP 302 Found, ngoại trừ việc user-agent không được thay đổi phương thức HTTP sử dụng: nếu POST được dùng trong yêu cầu đầu tiên, POST phải được sử dụng trong yêu cầu thứ hai.</p>



<p>–&nbsp;<em>308 Permanent Redirect:</em>&nbsp;Điều này có nghĩa là tài nguyên hiện được đặt cố định tại 1 URI khác, được chỉ định bởi header Location: HTTP Response. Code này có cùng ý nghĩa như code phản hồi HTTP&nbsp;<em>301 Moved Permanently</em>, ngoại trừ việc user-agent không được thay đổi phương thức HTTP sử dụng: nếu&nbsp;<em>POST</em>&nbsp;được dùng trong yêu cầu đầu tiên,&nbsp;<em>POST</em>&nbsp;phải được sử dụng trong yêu cầu thứ hai.</p>



<h3 class="wp-block-heading" id="4-client-errors-loi-phia-client">4. Client errors / Lỗi phía client:</h3>



<p>–&nbsp;<em>400 Bad Request:</em>&nbsp;Máy chủ không thể hiểu yêu cầu do cú pháp không hợp lệ.</p>



<p>–&nbsp;<em>401 Unauthorized:</em>&nbsp;Cho dù quy chuẩn HTTP chỉ định “unauthorized” (không có thẩm quyền), nhưng nó có nghĩa phản hồi này là “unauthenticated” (chưa được xác thực). Có nghĩa là, client phải các tự xác thực chính mình để nhận được phản hồi đã yêu cầu.</p>



<p>–&nbsp;<em>402 Payment Required:</em>&nbsp;Code phản hồi này được dành cho những lần sử dụng trong tương lai. Mục đích ban đầu của việc tạo mã này là sử dụng nó cho các hệ thống thanh toán kỹ thuật số, tuy nhiên status code này rất hiếm khi được sử dụng và không tồn tại quy ước tiêu chuẩn nào.</p>



<p>– <em>403 Forbidden:</em> Client không có quyền truy cập vào phần nội dung, nghĩa là nó không được phép, vì vậy máy chủ từ chối cung cấp tài nguyên được yêu cầu. Không giống như 401, danh tính của client đã được máy chủ nhận biết.</p>



<p>– <em>404 Not Found:</em></p>



<p>–&nbsp;<em>405 Method Not Allowed:</em>&nbsp;Phương thức yêu cầu được máy chủ nhận biết nhưng đã bị vô hiệu hóa và không thể sử dụng được. Ví dụ: 1 API có thể cấm XÓA 1 nguồn tài nguyên. 2 phương thức bắt buộc, GET và HEAD, không bao giờ được vô hiệu hóa và không được trả về code lỗi này.</p>



<p>–&nbsp;<em>406 Not Acceptable:</em>&nbsp;Phản hồi này được gửi khi máy chủ web, sau khi thực hiện server-driven content negotiation, không tìm thấy bất kỳ nội dung nào phù hợp với các tiêu chí do user-agent đưa ra.</p>



<p>–&nbsp;<em>407 Proxy Authentication Required:</em>&nbsp;Code này tương tự như 401 nhưng việc xác thực là cần thiết để được thực hiện bởi proxy.</p>



<p>–&nbsp;<em>408 Request Timeout:</em>&nbsp;Phản hồi này được gửi trên 1 kết nối idle bởi 1 số máy chủ, ngay cả khi không có bất kỳ yêu cầu nào trước đó của client. Có nghĩa là máy chủ muốn tắt kết nối không sử dụng này. Phản hồi này được sử dụng nhiều hơn vì 1 số trình duyệt như Chrome, Firefox 27+ hoặc IE9, sử dụng cơ chế&nbsp; tiền kết nối HTTP để tăng tốc độ lướt web. Cũng lưu ý rằng 1 số máy chủ chỉ tắt kết nối luôn mà không hề gửi thông báo này.</p>



<p>–&nbsp;<em>409 Conflict:</em>&nbsp;Phản hồi này được gửi khi 1 yêu cầu xung đột với trạng thái hiện tại của máy chủ.</p>



<p>–&nbsp;<em>410 Gone:</em>&nbsp;Phản hồi này được gửi khi nội dung được yêu cầu đã bị xóa vĩnh viễn khỏi máy chủ, không có địa chỉ chuyển tiếp. Client phải xóa bộ nhớ cache và liên kết của mình tới nguồn tài nguyên. HTTP spectication dự định status code này được sử dụng cho “các dịch vụ khuyến mại, có thời hạn”. Các API không nên bắt buộc phải chỉ ra các tài nguyên đã bị xóa bằng status code này.</p>



<p>–&nbsp;<em>411 Length Required:</em>&nbsp;Máy chủ đã từ chối yêu cầu vì trường header Content-Lenghth không được xác định và máy chủ thì yêu cầu chuyện đó.</p>



<p>–&nbsp;<em>412 Precondition Failed:</em>&nbsp;Client đã chỉ ra các điều kiện tiên quyết trong các header của nó mà máy chủ không đáp ứng được.</p>



<p>–&nbsp;<em>413 Payload Too Large:</em>&nbsp;Thực thể yêu cầu lớn hơn giới hạn do máy chủ xác định, máy chủ có thể đóng kết nối hoặc trả về trường header Retry-After.</p>



<p>–&nbsp;<em>414 URI Too Long:</em>&nbsp;URI được yêu cầu bởi client dài hơn mức máy chủ muốn thông dịch.</p>



<p>–&nbsp;<em>415 Unsupported Media Type:</em>&nbsp;Định dạng phương tiện của dữ liệu được yêu cầu không được máy chủ hỗ trợ, do đó máy chủ đang từ chối yêu cầu.</p>



<p>–&nbsp;<em>416 Range Not Satisfiable:</em>&nbsp;Client yêu cầu một phần của tập tin nhưng máy chủ không thể cung cấp nó. Trước đây được gọi là “Requested Range Not Satisfiable”.</p>



<p>–&nbsp;<em>417 Expectation Failed:</em>&nbsp;Máy chủ không thể đáp ứng các yêu cầu của trường Expect trong header.</p>



<h3 class="wp-block-heading" id="5-server-errors-loi-phia-may-chu">5. Server errors / Lỗi phía máy chủ:</h3>



<p>–&nbsp;<em>500 Internal Server Error:</em>&nbsp;Một thông báo chung, được đưa ra khi máy chủ gặp phải một trường hợp bất ngờ, message cụ thể không phù hợp.</p>



<p>–&nbsp;<em>501 Not Implemented:</em>&nbsp;Máy chủ không công nhận các phương thức yêu cầu hoặc không có khả năng xử lý nó.</p>



<p>–&nbsp;<em>502 Bad Gateway:</em>&nbsp;Máy chủ đã hoạt động như một gateway hoặc proxy và nhận được một phản hồi không hợp lệ từ máy chủ nguồn.</p>



<p>–&nbsp;<em>503 Service Unavailable:</em>&nbsp;Máy chủ hiện tại không có sẵn (hiện đang quá tải hoặc bị down để bảo trì). Đây chỉ là trạng thái tạm thời.</p>



<p>–&nbsp;<em>504 Gateway Timeout:</em>&nbsp;Máy chủ đã hoạt động như một gateway hoặc proxy và không nhận được một phản hồi từ máy chủ nguồn.</p>



<p>–&nbsp;<em>505 HTTP Version Not Supported:</em>&nbsp;Máy chủ không hỗ trợ phiên bản “giao thức HTTP”.</p>



<p><strong>Danh sách được tổng hợp và tham khảo từ&nbsp;<a href="https://www.wikipedia.org/">Wikipedia</a>&nbsp;&amp;&nbsp;<a href="https://www.mozilla.org/vi/">Mozilla</a>.</strong></p>
<p>The post <a href="https://hoangthuc.com/http-status-code-la-gi-danh-sach-day-du-http-status-code/">HTTP status code là gì? Danh sách đầy đủ HTTP status code</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The ACME server can not issue a certificate for email with IP address</title>
		<link>https://hoangthuc.com/the-acme-server-can-not-issue-a-certificate-for-email-with-ip-address/</link>
					<comments>https://hoangthuc.com/the-acme-server-can-not-issue-a-certificate-for-email-with-ip-address/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Mon, 11 Oct 2021 13:00:57 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=812</guid>

					<description><![CDATA[<p>> 2021/10/11 19:10:10 [INFO] acme: Registering account for admin@X.X.X.X> 2021/10/11 19:10:11 Could not complete registration> acme: error: 400 :: POST :: https://acme-v02.api.letsencrypt.org/acme/new-acct 5 :: urn:ietf:params:acme:error:invalidEmail :: Error creating new account :: contact email “admin@X.X.X.X” has invalid domain : The ACME server can not issue a certificate for an IP address, url:> Certificate generation failed. I was research and [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/the-acme-server-can-not-issue-a-certificate-for-email-with-ip-address/">The ACME server can not issue a certificate for email with IP address</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><em>> 2021/10/11 19:10:10 [INFO] acme: Registering account for admin@X.X.X.X</em><br><em>> 2021/10/11 19:10:11 Could not complete registration</em><br><em>> acme: error: 400 :: POST :: https://acme-v02.api.letsencrypt.org/acme/new-acct 5 :: urn:ietf:params:acme:error:invalidEmail :: Error creating new account :: contact email “admin@X.X.X.X” has invalid domain : The ACME server can not issue a certificate for an IP address, url:</em><br><em>> Certificate generation failed.</em></p>



<p>I was research and see a solution. You can edit in path</p>



<p>/usr/local/directadmin/data/users/admin/user.conf</p>



<p>Edit infomation email then run cmd</p>



<p>service directadmin restart</p>



<p>I was success. Comment if you same me :))</p>
<p>The post <a href="https://hoangthuc.com/the-acme-server-can-not-issue-a-certificate-for-email-with-ip-address/">The ACME server can not issue a certificate for email with IP address</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/the-acme-server-can-not-issue-a-certificate-for-email-with-ip-address/feed/</wfw:commentRss>
			<slash:comments>50</slash:comments>
		
		
			</item>
		<item>
		<title>Dữ liệu JSON trong MySQL</title>
		<link>https://hoangthuc.com/du-lieu-json-trong-mysql/</link>
					<comments>https://hoangthuc.com/du-lieu-json-trong-mysql/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Tue, 12 Jan 2021 09:41:28 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Lập trình]]></category>
		<category><![CDATA[MYSQL]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=719</guid>

					<description><![CDATA[<p>Bắt đầu từ Mysql 5.7.8, Mysql hỗ trợ kiểu dữ liệu JSON được xác định nghĩa bởi RFC 7159 , cho phép truy cập vào dữ liệu trong các tài liệu JSON (Javascript Notation Object). Các điểm lợi của việc lưu dữ liệu vào cột dạng JSON: Tự động xác thực các dữ liệu dạng JSON Tối [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/du-lieu-json-trong-mysql/">Dữ liệu JSON trong MySQL</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="color: #000000;">Bắt đầu từ Mysql 5.7.8, Mysql hỗ trợ kiểu dữ liệu <strong>JSON</strong> được xác định nghĩa bởi <a style="color: #000000;" href="https://tools.ietf.org/html/rfc7159">RFC 7159</a> , cho phép truy cập vào dữ liệu trong các tài liệu <strong>JSON</strong> (Javascript Notation Object).</span><br />
<span style="color: #000000;">Các điểm lợi của việc lưu dữ liệu vào cột dạng <strong>JSON</strong>:</span></p>
<ul>
<li><span style="color: #000000;">Tự động xác thực các dữ liệu dạng JSON</span></li>
<li><span style="color: #000000;">Tối ưu hoá định dạng lưu trữ</span></li>
<li><span style="color: #000000;">Các hàm trong <strong>SQL</strong> hỗ trợ việc thao tác với dữ liệu cột <strong>JSON</strong> như tạo mới, quản lý hay tìm kiếm</span></li>
<li><span style="color: #000000;">Chuẩn hoá, hợp nhất dữ liệu JSON.</span></li>
</ul>
<h2><strong><span style="color: #000000;">Tạo Dữ Liệu JSON</span></strong></h2>
<p><span style="color: #000000;">Dữ liệu dạng <strong>JSON</strong> có 2 dạng phổ biến là Mảng <strong>JSON(Array Json)</strong> và Đối tượng <strong>JSON(Object Json)</strong>. Mảng Json chứa các giá trị được phân tách với nhau bởi dấu , và được đặt bên trong [ và ] :</span></p>
<pre><pre class="brush: sql; title: ; notranslate">&#x5B;&quot;abc&quot;, 10, null, true, false]</pre>
<p><span style="color: #000000;">Đối tượng Json chứa tập hợp các cặp khoá &#8211; giá trị (key &#8211; value) được phân tách với nhau cũng bởi dấu , và được đặt bên trong { và }:</span></p>
<pre><pre class="brush: xml; title: ; notranslate">{&quot;k1&quot;: &quot;value&quot;, &quot;k2&quot;: 10}</pre>
<p><span style="color: #000000;">Tuy nhiên với nhiều trường hợp phức tạp, dữ liệu <strong>JSON</strong> còn có dạng lồng nhau (Nesting):</span></p>
<pre><pre class="brush: xml; title: ; notranslate">&#x5B;99, {&quot;id&quot;: &quot;HK500&quot;, &quot;cost&quot;: 75.99}, &#x5B;&quot;hot&quot;, &quot;cold&quot;]]
{&quot;k1&quot;: &quot;value&quot;, &quot;k2&quot;: &#x5B;10, 20]}</pre>
<p><span style="color: #000000;">trong mảng <strong>JSON</strong> chứ đối tượng <strong>JSON</strong> và ngược lại.</span></p>
<p><span style="color: #000000;">Thay vì tự đặt ra đối tượng JSON, bạn cũng có thể sử dụng <strong>JSON_OBJECT</strong> chức năng tích hợp.</span></p>
<p><span style="color: #000000;">Các <strong>JSON_OBJECT</strong> chức năng chấp nhận một danh sách các cặp khóa / giá trị theo hình thức <strong>JSON_OBJECT(key1, value1, key2, value2, &#8230; key(n), value(n)) </strong>và trả về một đối tượng JSON.</span></p>
<pre><pre class="brush: sql; title: ; notranslate">/* Let's sell some mobilephones */

INSERT INTO `e_store`.`products`( `name` , `brand_id` , `category_id` , `attributes` )

VALUES( 'Desire' , '2' , '2' ,

JSON_OBJECT( &quot;network&quot; , JSON_ARRAY(&quot;GSM&quot; , &quot;CDMA&quot; , &quot;HSPA&quot; , &quot;EVDO&quot;) ,

&quot;body&quot; ,

&quot;5.11 x 2.59 x 0.46 inches&quot; ,

&quot;weight&quot; ,

&quot;143 grams&quot; ,

&quot;sim&quot; ,

&quot;Micro-SIM&quot; ) );

</pre>
<p><span style="color: #000000;">Một chức năng khác mà chúng ta có thể sử dụng để tạo các đối tượng JSON là <strong>JSON_MERGE</strong> hàm.</span></p>
<p><span style="color: #000000;">Các <strong>JSON_MERGE</strong> chức năng có nhiều đối tượng JSON và tạo ra một, tổng hợp đối tượng duy nhất.</span></p>
<pre><pre class="brush: xml; title: ; notranslate">INSERT INTO `e_store`.`products`( `name` , `brand_id` , `category_id` , `attributes` )

VALUES( 'Explorer' , '3' , '3' ,

JSON_MERGE(

'{&quot;sensor_type&quot;: &quot;CMOS&quot;}' ,

'{&quot;processor&quot;: &quot;Digic DV III&quot;}' ,

'{&quot;scanning_system&quot;: &quot;progressive&quot;}' ,

'{&quot;mount_type&quot;: &quot;PL&quot;}' ,

'{&quot;monitor_type&quot;: &quot;LCD&quot;}'

) );</pre>
<h2><strong><span style="color: #000000;">Thao Tác với Dữ Liệu Cột JSON</span></strong></h2>
<ul>
<li><span style="color: #000000;">Hãy tưởng tượng khi bạn muốn lấy một giá trị nào đó trong một cột dữ liệu <strong>JSON</strong>(ở đây lấy giá trị name):</span></li>
</ul>
<pre><pre class="brush: php; title: ; notranslate"> SELECT JSON_EXTRACT('{&quot;id&quot;: 14, &quot;name&quot;: &quot;Aztalan&quot;}', '$.name');
+---------------------------------------------------------+
| JSON_EXTRACT('{&quot;id&quot;: 14, &quot;name&quot;: &quot;Aztalan&quot;}', '$.name') |
+---------------------------------------------------------+
| &quot;Aztalan&quot;                                               |
+---------------------------------------------------------+
</pre>
<p><span style="color: #000000;">Ở đây <strong>Mysql</strong> cung cấp hàm <strong>JSON_EXTRACT</strong>() giúp trả về dữ liệu từ một tài liệu JSON. Dữ liệu được trả về dựa theo đường dẫn cung cấp, trong ví dụ trên chúng ta thấy đường dẫn ở đây là $.name.</span><br />
<span style="color: #000000;">Tìm hiểu sâu hơn về đường dẫn này nhé: $ là kí tự thể hiện tài liệu JSON đang được xét đến , name chính là tên khoá ta muốn lấy. Tuy nhiên với các dạng dữ liệu <strong>JSON</strong> thì đường dẫn lại khác nhau.</span><br />
<span style="color: #000000;">Với dạng Mảng <strong>JSON </strong>thì đường dẫn có dạng $[n] còn với Đối tượng <strong>JSON </strong>là $.key, n là vị trí giá trị chúng ta muốn lấy trong mảng và key là tên khoá của giá trị chúng ta muốn lấy.</span></p>
<pre><pre class="brush: php; title: ; notranslate"> SELECT JSON_EXTRACT('&#x5B;&quot;abc&quot;, 14, &quot;Aztalan&quot;]', '$&#x5B;0]');
+---------------------------------------------------------+
| JSON_EXTRACT('&#x5B;&quot;abc&quot;, 14, &quot;Aztalan&quot;]', '$&#x5B;0]')          |
+---------------------------------------------------------+
| &quot;abc&quot;                                                   |
+---------------------------------------------------------+
</pre>
<p><span style="color: #000000;">Tuy nhiên với trường hợp dữ liệu dạng lồng nhau thì đường dẫn của chúng ta không đơn giản như vậy. Cùng xem ví dụ sau nhé:</span></p>
<pre><pre class="brush: xml; title: ; notranslate">&#x5B;3, {&quot;a&quot;: &#x5B;5, 6], &quot;b&quot;: 10}, &#x5B;99, 100]]</pre>
<p><span style="color: #000000;">Đây là một mảng <strong>JSON</strong> vậy nếu chúng ta muốn lấy giá trị 3 trong mảng thì đường dẫn sẽ là $[0] (trong một array vị trí đầu tiên sẽ bắt đầu là 0), nhưng nếu chọn lấy giá trị thứ 2 ta sẽ có một đối tượng <strong>JSON </strong>{&#8220;a&#8221;: [5, 6], &#8220;b&#8221;: 10} vậy nếu bài toán đặt ra là muốn lấy giá trị của khoá b trong đối tượng <strong>JSON</strong> này thì ta phải có đường dẫn như nào?. Để lấy giá trị của khoá b ta sẽ có đường dẫn là $[1].b. Với tuỳ trường hợp dạng dữ liệu <strong>JSON</strong> ta sẽ có đường dẫn là $[n].key với dạng mảng lồng object <strong>JSON</strong> và $.key[n] mới dạng object lồng mảng <strong>JSON</strong>.</span></p>
<ul>
<li><span style="color: #000000;">Một số hàm phổ biến được Mysql hỗ trợ như <strong>JSON_SET, JSON_INSERT, JSON_REPLACE hay JSON_REMOVE.</strong></span></li>
</ul>
<pre><pre class="brush: php; title: ; notranslate"> SET @j = '&#x5B;&quot;a&quot;, {&quot;b&quot;: &#x5B;true, false]}, &#x5B;10, 20]]';</pre>
<p><span style="color: #000000;"><strong>JSON_SET</strong> () thay thế các giá trị cho các đường dẫn tồn tại và thêm các giá trị cho các đường dẫn không tồn tại:</span></p>
<pre><pre class="brush: php; title: ; notranslate"> SELECT JSON_SET(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2);
+--------------------------------------------+
| JSON_SET(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2) |
+--------------------------------------------+
| &#x5B;&quot;a&quot;, {&quot;b&quot;: &#x5B;1, false]}, &#x5B;10, 20, 2]]      |
+--------------------------------------------+</pre>
<p><span style="color: #000000;"><strong>JSON_INSERT</strong> () thêm các giá trị mới nhưng không thay thế các giá trị hiện có:</span></p>
<pre><pre class="brush: php; title: ; notranslate"> SELECT JSON_INSERT(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2);
+-----------------------------------------------+
| JSON_INSERT(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2) |
+-----------------------------------------------+
| &#x5B;&quot;a&quot;, {&quot;b&quot;: &#x5B;true, false]}, &#x5B;10, 20, 2]]      |
+-----------------------------------------------+</pre>
<p><span style="color: #000000;"><strong>JSON_REPLACE</strong> () thay thế các giá trị hiện có và bỏ qua các giá trị mới:</span></p>
<pre><pre class="brush: php; title: ; notranslate"> SELECT JSON_REPLACE(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2);
+------------------------------------------------+
| JSON_REPLACE(@j, '$&#x5B;1].b&#x5B;0]', 1, '$&#x5B;2]&#x5B;2]', 2) |
+------------------------------------------------+
| &#x5B;&quot;a&quot;, {&quot;b&quot;: &#x5B;1, false]}, &#x5B;10, 20]]             |
+------------------------------------------------+</pre>
<p><span style="color: #000000;"><strong>JSON_REMOVE</strong> () lấy một tài liệu <strong>JSON</strong> và một hoặc nhiều đường dẫn chỉ định các giá trị sẽ bị xóa khỏi tài liệu. Giá trị trả về là tài liệu gốc trừ đi các giá trị được chọn bởi các đường dẫn tồn tại trong tài liệu:</span></p>
<pre><pre class="brush: php; title: ; notranslate">SELECT JSON_REMOVE(@j, '$&#x5B;2]', '$&#x5B;1].b&#x5B;1]', '$&#x5B;1].b&#x5B;1]');
+---------------------------------------------------+
| JSON_REMOVE(@j, '$&#x5B;2]', '$&#x5B;1].b&#x5B;1]', '$&#x5B;1].b&#x5B;1]') |
+---------------------------------------------------+
| &#x5B;&quot;a&quot;, {&quot;b&quot;: &#x5B;true]}]                              |
+---------------------------------------------------+</pre>
<p>The post <a href="https://hoangthuc.com/du-lieu-json-trong-mysql/">Dữ liệu JSON trong MySQL</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/du-lieu-json-trong-mysql/feed/</wfw:commentRss>
			<slash:comments>48</slash:comments>
		
		
			</item>
		<item>
		<title>Chuyển thư mục public sang public_html trong Laravel khi deploy</title>
		<link>https://hoangthuc.com/chuyen-thu-muc-public-sang-public_html-trong-laravel-khi-deploy/</link>
					<comments>https://hoangthuc.com/chuyen-thu-muc-public-sang-public_html-trong-laravel-khi-deploy/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Fri, 04 Dec 2020 11:29:53 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Php]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=694</guid>

					<description><![CDATA[<p>Hi All, mình viết bài viết này vì mình cũng gặp tình trạng tương tự khi deploy lên host và nó báo sai đường dẫn khá nhiều trong source của mình.  Mình đăng bài này để lưu lại sau này khỏi quên. :)))  Đầu tiên thư mục mặc định nó sẽ có dạng và chúng [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/chuyen-thu-muc-public-sang-public_html-trong-laravel-khi-deploy/">Chuyển thư mục public sang public_html trong Laravel khi deploy</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="font-family: helvetica, arial, sans-serif;">Hi All, mình viết bài viết này vì mình cũng gặp tình trạng tương tự khi deploy lên host và nó báo sai đường dẫn khá nhiều trong source của mình. </span></p>
<p><span style="font-family: helvetica, arial, sans-serif;">Mình đăng bài này để lưu lại sau này khỏi quên. :))) </span></p>
<p><span style="font-family: helvetica, arial, sans-serif;">Đầu tiên thư mục mặc định nó sẽ có dạng và chúng ta cần chuyển nó thành public_html rồi đẩy lên host. 1 số host như cpanel bạn cầu hình luôn cái đường dẫn luôn cho nhanh nhé.</span></p>
<p><span style="font-family: helvetica, arial, sans-serif;"><img fetchpriority="high" decoding="async" class="size-full wp-image-695 aligncenter" src="https://hoangthuc.com/wp-content/uploads/2020/12/2020-12-04_182003.jpg" alt="" width="841" height="303" srcset="https://hoangthuc.com/wp-content/uploads/2020/12/2020-12-04_182003.jpg 841w, https://hoangthuc.com/wp-content/uploads/2020/12/2020-12-04_182003-300x108.jpg 300w" sizes="(max-width: 841px) 100vw, 841px" /></span></p>
<p><span style="font-family: helvetica, arial, sans-serif;">Sẽ có 4 chỗ mấy bạn cần chỉnh sửa.</span></p>
<pre> </pre>
<pre> </pre>


<h5>./server.php</h5>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
if ($uri !== '/' &amp;&amp; file_exists(__DIR__.'public'.$uri)) { return false; } require_once __DIR__.'/public/index.php';
</pre></div>


<h5>./app/Providers/AppServiceProvider.php</h5>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
public function register() { $this-&gt;app-&gt;bind(&#039;path.public&#039;, function() { return base_path().&#039;/public_html&#039;; }); }
</pre></div>


<h5><strong>./config/filesystems.php</strong></h5>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&#039;public&#039; =&gt; &#x5B;
  &#039;driver&#039; =&gt; &#039;local&#039;,
  &#039;root&#039; =&gt; storage_path(&#039;app/public&#039;),
  &#039;url&#039; =&gt; env(&#039;APP_URL&#039;).&#039;/storage&#039;,
  &#039;visibility&#039; =&gt;&#039;public&#039;,
],
</pre></div>


<h5><span style="font-family: helvetica, arial, sans-serif;">./webpack.mix.js</span></h5>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
mix.config.publicPath='public_html'; mix.js('resources/assets/js/app.js', 'public_html/js') .sass('resources/assets/sass/app.scss', 'public_html/css');
</pre></div>


<h5>./htaccess for directadmin </h5>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&amp;lt;IfModule mod_rewrite.c&gt;
    &amp;lt;IfModule mod_negotiation.c&gt;
        Options -MultiViews -Indexes
    &amp;lt;/IfModule&gt;
  RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 &#x5B;L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php &#x5B;L]
&amp;lt;/IfModule&gt;
</pre></div>




<pre class="wp-block-preformatted"><strong>Done nhe!</strong></pre>



<p>Nguồn : Developer How To.&nbsp;</p>
<p>The post <a href="https://hoangthuc.com/chuyen-thu-muc-public-sang-public_html-trong-laravel-khi-deploy/">Chuyển thư mục public sang public_html trong Laravel khi deploy</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/chuyen-thu-muc-public-sang-public_html-trong-laravel-khi-deploy/feed/</wfw:commentRss>
			<slash:comments>49</slash:comments>
		
		
			</item>
		<item>
		<title>Fix “Requested icu-uc 50.1 but version of icu-uc is” trên DirectAdmin</title>
		<link>https://hoangthuc.com/fix-requested-icu-uc-50-1-but-version-of-icu-uc-is-tren-directadmin/</link>
					<comments>https://hoangthuc.com/fix-requested-icu-uc-50-1-but-version-of-icu-uc-is-tren-directadmin/#comments</comments>
		
		<dc:creator><![CDATA[Hoàng Thức]]></dc:creator>
		<pubDate>Sun, 22 Nov 2020 10:06:15 +0000</pubDate>
				<category><![CDATA[DirectAdmin]]></category>
		<category><![CDATA[Vps]]></category>
		<guid isPermaLink="false">https://hoangthuc.com/?p=687</guid>

					<description><![CDATA[<p>Ai đang bị như hình thì bơi vào nhe. Trong quá trình sử dụng DirectAdmin nói chung hoặc các web control panel khác nói riêng, đôi lúc chung ta sẽ gặp rất nhiều vấn đề. Và trong hôm nay mình đang muốn cài PHP 7.4 cho VPS DirectAdmin của mình thì gặp lỗi sau: &#160; [&#8230;]</p>
<p>The post <a href="https://hoangthuc.com/fix-requested-icu-uc-50-1-but-version-of-icu-uc-is-tren-directadmin/">Fix “Requested icu-uc 50.1 but version of icu-uc is” trên DirectAdmin</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="font-family: tahoma, arial, helvetica, sans-serif;">Ai đang bị như hình thì bơi vào nhe. Trong quá trình sử dụng DirectAdmin nói chung hoặc các web control panel khác nói riêng, đôi lúc chung ta sẽ gặp rất nhiều vấn đề. Và trong hôm nay mình đang muốn cài PHP 7.4 cho VPS DirectAdmin của mình thì gặp lỗi sau:</span></p>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;"><a href="https://hoangthuc.com/wp-content/uploads/2020/11/Screen-Shot-2020-09-09-at-3.48.05-PM-1024x446-1.png"><img decoding="async" class="aligncenter wp-image-688 size-full" src="https://hoangthuc.com/wp-content/uploads/2020/11/Screen-Shot-2020-09-09-at-3.48.05-PM-1024x446-1.png" alt="" width="1024" height="446" srcset="https://hoangthuc.com/wp-content/uploads/2020/11/Screen-Shot-2020-09-09-at-3.48.05-PM-1024x446-1.png 1024w, https://hoangthuc.com/wp-content/uploads/2020/11/Screen-Shot-2020-09-09-at-3.48.05-PM-1024x446-1-300x131.png 300w, https://hoangthuc.com/wp-content/uploads/2020/11/Screen-Shot-2020-09-09-at-3.48.05-PM-1024x446-1-900x392.png 900w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></span></p>
<p>&nbsp;</p>
<p id="ftoc-heading-1" class="ftwp-heading"><strong><span style="font-family: tahoma, arial, helvetica, sans-serif;">Nguyên nhân</span></strong></p>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;">Nguyên nhân dẫn đến việc bạn không cài được PHP 7.4 là do phiên bản <code><strong>icu-uc</strong></code> của bạn quá thấp, không đạt mức phiên bản khuyến nghị là 58.1. Cách khắc phục duy nhất là phải nâng cấp <strong><code>icu-uc</code> </strong>lên là xong.</span></p>
<p><strong><span style="font-family: tahoma, arial, helvetica, sans-serif;">Fix lỗi nào</span></strong></p>
<p id="ftoc-heading-3" class="ftwp-heading"><span style="font-family: tahoma, arial, helvetica, sans-serif;">Bước 1: SSH vào hệ thống DirectAdmin của bạn.</span></p>
<p id="ftoc-heading-4" class="ftwp-heading"><span style="font-family: tahoma, arial, helvetica, sans-serif;">Bước 2: Kiểm tra phiên bản <strong>CustomBuild</strong> đang được sử dụng</span></p>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;">Trong trường hợp phiên bản <strong>CustomBuild</strong> của bạn thấp hơn <strong>2.0</strong> thì bạn cần nâng cấp CustomBuild <strong>1.x</strong> lên <strong>2.0</strong></span></p>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;">Cách kiễm tra:</span></p>
<pre class="brush: php; title: ; notranslate">./build version</pre>
<p id="ftoc-heading-5" class="ftwp-heading"><span style="font-family: tahoma, arial, helvetica, sans-serif;">Bước 3: Thực hiện các lệnh nâng cấp phiên bản <code>icu-uc</code> với CustomBuild 2.0</span></p>
<pre class="brush: php; title: ; notranslate">
cd /usr/local/directadmin/custombuild
./build update
./build icu
</pre>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;">Giải thích các lệnh trên:</span></p>
<ul>
<li><span style="font-family: tahoma, arial, helvetica, sans-serif;">Lệnh 1: Di chuyển đến thư mục <code>custombuild</code>.</span></li>
<li><span style="font-family: tahoma, arial, helvetica, sans-serif;">Lệnh 2: Cập nhật lại custombuild script.</span></li>
<li><span style="font-family: tahoma, arial, helvetica, sans-serif;">Lệnh 3: Cài đặt phiên bản <code>icu-uc</code> mới nhất.</span></li>
</ul>
<p id="ftoc-heading-6" class="ftwp-heading"><span style="font-family: tahoma, arial, helvetica, sans-serif;">Bước 4: Kiểm tra phiên bản <code>icu-uc</code> đã được cài đặt (cung hong cần lắm nhưng cứ làm cho biết)</span></p>
<p><span style="font-family: tahoma, arial, helvetica, sans-serif;">Chúc các bạn thực hiện thành công.</span></p>
<p>The post <a href="https://hoangthuc.com/fix-requested-icu-uc-50-1-but-version-of-icu-uc-is-tren-directadmin/">Fix “Requested icu-uc 50.1 but version of icu-uc is” trên DirectAdmin</a> appeared first on <a href="https://hoangthuc.com">Hi You, I am Tade</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hoangthuc.com/fix-requested-icu-uc-50-1-but-version-of-icu-uc-is-tren-directadmin/feed/</wfw:commentRss>
			<slash:comments>50</slash:comments>
		
		
			</item>
	</channel>
</rss>
