# iCreativ > Simple but cutting edge mindset ## Posts - [DDoS là gì? Cách ứng phó với DDoS trên server Linux bằng iptables](https://hainh.me/iptables-ung-pho-ddos-tren-linux.html): Bài viết hướng dẫn sử dụng iptables trên server cài HĐH nhân Linux phần nào ứng phó trước các cuộc tấn công DDoS. - [Lịch âm dương (Lunisolar) phiên bản CLI bằng ngôn ngữ C](https://hainh.me/lich-am-duong-lunisolar-cli.html): Chương trình dựa trên Thuật toán tính lịch Âm Dương đề xuất bởi Hồ Ngọc Đức. - [Tạo file danh sách video PLS từ thư mục](https://hainh.me/tao-file-danh-sach-video-pls-tu-thu-muc.html): Tìm kiếm và tạo danh sách phát video dưới định dạng PLS, có thể dùng với phần mềm Kodi và các Media Player khác. - [Script giải nén nhiều định dạng trên Linux](https://hainh.me/script-giai-nen-file-format.html): Có rất nhiều định dạng file nén, và trên Linux thật đáng ngạc nhiên là cũng có ngần đó lệnh để xử lý những format đó. - [Script tạo code màu sắc trên Bash console](https://hainh.me/script-sinh-ma-mau-sac-console.html): Màn hình console thật nhàm chán nếu không có màu sắc. Tuy nhiên để hiển thị được màu sắc đòi hỏi tôi phải nhớ một mớ ký tự escape lộn xộn rắc rối. - [Dùng Eclipse để phát triển phần mềm Android dù đã ngừng hỗ trợ](https://hainh.me/dung-eclipse-adt-ngung-ho-tro.html): Cùng với sự ra đời của Android SDK Tools Revision 25.3.0, các công cụ phát triển phần mềm Android trên Eclipse IDE đã bị loại bỏ trong hành trình thay thế bằng Android Studio. - [Reboot Wi-Fi router Buffalo AirStation WZR-HP-G301NH (JP)](https://hainh.me/khoi-dong-lai-reboot-wi-fi-router-buffalo-airstation-jp.html): Đoạn mã nguồn shellscript khởi động lại Wi-Fi router Buffalo AirStation model WZR-HP-G301NH từ máy trạm. - [Hướng dẫn tạo local mirror mã nguồn AOSP (Android Open Source Project)](https://hainh.me/local-mirror-android-aosp.html): Sau đây là hướng dẫn tạo một local mirror cho Android AOSP để lưu trữ và phát triển trên server nội bộ. - [Cách dùng thiết bị Bluetooth trên cả Windows và Linux dual boot mà không cần pair lại](https://hainh.me/bluetooth-windows-linux-dual-boot-khong-can-pair-lai.html): Hướng dẫn đồng bộ Bluetooth key để chuột, bàn phím, tai nghe hoặc loa không dây dùng được trên cả Windows và Linux dual boot mà không cần pair lại. - [Bài 2: U-Boot là gì trong embedded Linux và vì sao nó quyết định boot chain](https://hainh.me/u-boot-la-gi-embedded-linux.html): U-Boot là bootloader trung tâm trong embedded Linux, nơi kernel, DTB, bootargs, nguồn boot và nhiều quyết định recovery được xác định trước khi kernel chạy. - [Boot chain trong embedded Linux: từ Boot ROM tới userspace](https://hainh.me/boot-chain-trong-embedded-linux-tu-boot-rom-toi-userspace.html): Boot chain trong embedded Linux là chuỗi khởi động từ Boot ROM tới userspace. Bài viết giải thích từng stage làm gì, vì sao hệ thống phải đi qua nhiều tầng và vì sao debug boot phức tạp hơn MCU. - [Secure boot trên microcontroller là gì, khác trusted boot ở đâu?](https://hainh.me/secure-boot-tren-microcontroller-la-gi.html): Secure boot trên microcontroller không chỉ là verify chữ ký trước khi boot. Nó là policy cưỡng chế dựa trên root of trust, boot state, anti-rollback và recovery path. - [Bài 11: Debug bootloader trên microcontroller](https://hainh.me/debug-bootloader-tren-microcontroller.html): Tìm hiểu cách debug bootloader trên microcontroller theo hướng thực dụng, từ reset source, image validation, metadata, flash memory tới bước jump sang application image. - [Bài 10: Các đặc tính của flash ảnh hưởng trực tiếp tới bootloader trên microcontroller](https://hainh.me/cac-dac-tinh-cua-flash-anh-huong-truc-tiep-toi-bootloader-tren-microcontroller.html): Tìm hiểu các đặc tính của flash ảnh hưởng trực tiếp tới bootloader trên microcontroller, từ erase trước program, page/sector size, bank boundary, execute-while-write tới wear, tear và metadata placement. - [Bài 9: Nén firmware khi update qua bootloader trên microcontroller](https://hainh.me/nen-firmware-khi-update-qua-bootloader-tren-microcontroller.html): Tìm hiểu khi nào nên nén firmware khi update qua bootloader trên microcontroller, các thuật toán như LZSS, LZ4, heatshrink, LZMA và những trade-off về RAM, fail-safe, security. - [Bài 8: Bảo mật firmware update trong bootloader trên microcontroller](https://hainh.me/bao-mat-firmware-update-trong-bootloader-tren-microcontroller.html): Secure update trên MCU không dừng ở CRC hay checksum. Bài này phân tích threat model, trust anchor, anti-rollback và mức bảo vệ tối thiểu đủ thực dụng cho bootloader trong sản phẩm thật. - [Bài 7: Thiết kế firmware update fail-safe trên microcontroller](https://hainh.me/thiet-ke-firmware-update-fail-safe-tren-microcontroller.html): Tìm hiểu cách thiết kế firmware update fail-safe trên microcontroller, từ staging, A/B image, rollback, boot thử, metadata tới cách xử lý mất điện giữa chừng. - [Bài 6: Firmware update qua bootloader trên microcontroller](https://hainh.me/firmware-update-qua-bootloader-tren-microcontroller.html): Firmware update qua bootloader không chỉ là chọn UART, CAN hay USB. Bài này đi vào image state, verify, rollback và cách chọn kiến trúc update phù hợp với sản phẩm MCU thực tế. - [Bài 5: Jump từ bootloader sang application trên microcontroller](https://hainh.me/jump-tu-bootloader-sang-application-tren-microcontroller.html): Jump từ bootloader sang application không chỉ là gọi một địa chỉ. Bài viết phân tích vector table, MSP, reset handler, VTOR, trạng thái ngắt và cách chọn direct jump hoặc reset an toàn hơn. - [Bài 4: Thiết kế flash layout cho bootloader trên microcontroller](https://hainh.me/thiet-ke-flash-layout-cho-bootloader-tren-microcontroller.html): Phân tích cách bố trí flash cho bootloader MCU: single image, staging, A/B, vùng trạng thái, dữ liệu thiết bị và cách giữ đường phục hồi khi cập nhật lỗi. - [Bài 3: Cách bootloader trên microcontroller hoạt động](https://hainh.me/cach-bootloader-tren-microcontroller-hoat-dong.html): Tìm hiểu cách bootloader trên microcontroller hoạt động, từ flash layout, kiểm tra image, jump to application cho tới các pattern thực tế như boot manager, flash loader và flash driver chạy trong RAM. - [Bài 2: Vòng đời khởi động trên microcontroller, từ reset đến application](https://hainh.me/vong-doi-khoi-dong-cua-mot-he-thong-embedded-tu-reset-den-application.html): Vòng đời khởi động trên microcontroller từ reset, startup code và bootloader đến lúc application nhận quyền điều khiển, cùng vai trò của từng giai đoạn. - [Bài 1: Bootloader là gì, vì sao gần như hệ thống nào cũng cần?](https://hainh.me/bootloader-la-gi-vi-sao-he-thong-nao-cung-can.html): Bootloader là gì, vì sao nó xuất hiện từ PC tới embedded software, embedded Linux và automotive, và nó khác gì với startup code, firmware hay OS loader. - [Top các alias thường sử dụng trong Linux shell](https://hainh.me/top-cac-alias-thuong-su-dung-trong-linux-shell.html): Xem nhanh thông tin về bộ nhớ RAM và CPU. - [Cài đặt python (portable) trên Windows](https://hainh.me/cai-dat-python-portable-tren-windows.html): Tìm đến mục tải bản cài đặt Python cho Windows tại Python Releases for Windows. - [Ikigai là gì? Làm sao để tìm ra Ikigai cho bản thân](https://hainh.me/ikigai-la-gi.html): Hồi còn làm việc ở Nhật Bản, tôi được các sếp truyền bá về IKIGAI, nôm na là "lý do tồn tại". - [Sign kernel module cho secure boot trong Debian Linux](https://hainh.me/sign-kernel-module-secure-boot-debian-linux.html): Nếu hệ thống của bạn đang hỗ trợ EFI Secure Boot thì dù cho bạn cài đặt các kernel module bằng apt thì vẫn cần phải "sign" chúng để có thể sử dụng. - [AUTOSAR là gì? Có tầm quan trọng ra sao trong ngành công nghiệp ô tô?](https://hainh.me/autosar-la-gi.html): AUTOSAR hiện nay là một chủ đề hot khi thế giới chứng kiến sự phát triển vũ bão của ngành công nghiệp ô tô. - [Functional Domain, Domain/Gateway Controller trong Automotive là gì?](https://hainh.me/automotive-functional-domain-gateway-controller.html): Thiết bị điều khiển toàn bộ chức năng của một Functional Domain này gọi là Domain Controller. - [Cài đặt Android Emulator không cần Android Studio](https://hainh.me/cai-dat-android-emulator-khong-android-studio.html): Thông thường cách đơn giản để sử dụng Android Emulator là cài đặt Android Studio và tạo thiết bị từ đó. - [Cài đặt MonaServer làm video streaming server lên Debian Linux](https://hainh.me/cai-dat-monaserver-len-debian-linux.html): MonaServer là một media server rất nhẹ, hỗ trợ nhiều giao thức streaming và media container chỉ trong một ứng dụng và có thể tùy chỉnh bằng LUA script. - [Puppeteer là gì - Vài kinh nghiệm với Puppeteer](https://hainh.me/puppeteer-kinh-nghiem-dev.html): Chia sẻ một vài kinh nghiệm có được khi tôi phát triển Web Automation App bằng Puppeteer. - [Hướng dẫn cài đặt nhiều phiên bản PHP trên XAMPP](https://hainh.me/cai-dat-nhieu-php-tren-xampp.html): Tôi có nhu cầu sử dụng nhiều phiên bản PHP trên XAMPP cùng lúc do có những dự án phải kết nối đến những dịch vụ dùng phiên bản PHP rất cũ. - [Sửa lỗi No Internet Access trên Windows 10 dù vẫn vào Internet bình thường](https://hainh.me/sua-loi-no-internet-access-tren-windows.html): Nguyên nhân và hướng sửa lỗi No Internet Access dù vẫn có thể truy cập các Website bằng trình duyệt bình thường. - [Các chỉ số đo lường quảng cáo trong Digital Marketing, chỉ số nào quan trọng?](https://hainh.me/chi-so-do-luong-trong-digital-marketing.html): Lợi thế của Digital Marketing so với các hình thức truyền thông khác đó là khả năng đo lường hiệu quả chiến dịch một cách tự động mà không cần thực hiện survey với đối tượng tham gia. - [Cải thiện hiệu suất của Raspberry Pi - Tăng tốc độ, giảm tiêu thụ điện năng](https://hainh.me/cai-thien-hieu-suat-cua-raspberry-pi-tang-toc-do-giam-tieu-thu-dien-nang.html): Dù Raspberry Pi sử dụng nguồn điện 5V như các smart phone, ta cũng phải cung cấp đủ công suất cho nó, nếu không hiệu năng sẽ bị ảnh hưởng rất nhiều chưa kể làm thiết bị mau hỏng. - [Tự động xóa file tạm, giải phóng bộ nhớ trên Windows](https://hainh.me/xoa-file-tam-giai-phong-bo-nho-windows.html): Hết dung lượng ổ cứng? Dưới đây là một số cách để chúng ta kiếm lại một chút dung lượng từ việc xóa những file không cần thiết trên Windows một cách tự động. - [Xử trí khi website WordPress bị dính malware](https://hainh.me/xu-tri-wordpress-dinh-malware.html): WordPress là một Open source CMS phổ biến bậc nhất trên thế giới, vì vậy không lạ là có rất nhiều các thể loại malware hướng đến nền tảng này. - [Gọi file BAT (Batch File) không hiện cửa sổ command prompt window](https://hainh.me/goi-batch-file-khong-hien-command-prompt.html): Trước tôi hay dùng Task Scheduler để gọi các Batch file, tuy nhiên khi đó cửa sổ command prompt hiện ra rất khó chịu. - [Bảo mật trình duyệt Chromium với Ephemeral Mode](https://hainh.me/chromium-ephemeral-mode.html): Ephemeral Mode trên trình duyệt nền tảng Chromium sẽ xóa toàn bộ Profile trên máy local mỗi khi đóng trình duyệt. - [Đổi số thành chữ online chuẩn kế toán](https://hainh.me/doi-so-thanh-chu-chuan-ke-toan.html): Công cụ dưới đây giúp bạn đổi số thành chữ tiếng Việt theo chuẩn kế toán, đọc được cả những số vô cùng lớn. - [Cài đặt Synergy FULL trên Raspberry Pi OS / Debian Linux](https://hainh.me/cai-dat-synergy-tren-raspberry-pi-os.html): Hướng dẫn cài đặt Synergy - phần mềm chia sẻ chuột và bán phím giữa các máy tính lên Raspberry Pi. - [Các tham số hữu ích của trình duyệt Chromium](https://hainh.me/tham-so-trinh-duyet-chromium.html): Các tham số này tương thích với các trình duyệt lõi Chromium như Google Chrome, Microsoft Edge hay Opera. - [Đổ lỗi chỉ là lý lẽ bao biện cho sự bất lực](https://hainh.me/do-loi-chi-la-ly-le-bao-bien-cho-su-bat-luc.html): Nếu từng trải nghiệm ở vị trí Quản lý bạn mới hiểu thực tế là mình trên đe dưới búa. - [Điều khiển máy tính Debian Linux bằng Remote Desktop từ Windows](https://hainh.me/debian-linux-windows-remote-desktop.html): Hướng dẫn cài đặt và cấu hình Remote Desktop Protocol dùng xRDP trên máy tính cài HĐH Linux Debian. - [Blockchain là gì?](https://hainh.me/blockchain-la-gi.html): Blockchain bao hàm một cấu trúc dữ liệu, một hình thức cơ sở dữ liệu phân tán, một thuật toán bảo vệ dữ liệu với cơ chế phân quyền & đồng thuận và quan trọng hơn chính là ứng dụng của dữ liệu đó trong đời sống. - [7 phương châm xử thế, điều đã thay đổi tư duy và cuộc đời tôi](https://hainh.me/7-phuong-cham-xu-the-dieu-da-thay-doi-tu-duy-va-cuoc-doi-toi.html): Điều có ảnh hưởng lớn nhất trong suy nghĩ & quan điểm của tôi đó là 7 phương châm xử thế của ngài Konosuke Matsushita. - [Tasker thông báo các sự kiện Âm Dương Lịch](https://hainh.me/tasker-thong-bao-cac-su-kien-am-duong-lich.html): Tôi dùng Tasker trên Android để kiểm tra các sự kiện theo ngày Âm Lịch (và cả Dương lịch) và thực hiện một hoạt động (Action) tương ứng. - [Regular Expression (RegEx) cho các ký tự tiếng Nhật](https://hainh.me/regular-expression-regex-cho-cac-ky-tu-tieng-nhat.html): Tiếng Nhật là ngôn ngữ rắc rối thậm chí với chính người Nhật. - [Thực thi dòng lệnh trên server và hiển thị realtime bằng PHP](https://hainh.me/hien-thi-realtime-command-php.html): Bài viết hướng dẫn cách thực thi dòng lệnh trên server bằng PHP nhưng hiển thị realtime đầu ra trên trình duyệt. - [Sử dụng Server-sent events (SSE) kết nối gửi dữ liệu từ server đến client](https://hainh.me/server-sent-events-sse-gui-data-tu-server-den-client.html): Bài viết về Server-sent event (SSE), là một kỹ thuật trong HTML5 tạo ra kết nối chuyển dữ liệu một chiều từ server đến client. - [Khởi động lại (reboot) modem cáp quang FPT](https://hainh.me/reboot-modem-cap-quang-wifi-fpt.html): Tự động khởi động lại modem cáp quang + Wi-Fi tôi được "tặng" khi đăng ký gói cáp quang FPT. - [Cài đặt certbot trên Cygwin](https://hainh.me/cai-dat-certbot-tren-cygwin.html): Bài viết hướng dẫn cài đặt certbot hỗ trợ tạo chứng chỉ SSL của dịch vụ miễn phí Let's Encrypt trên môi trường Cygwin. - [Cài đặt nhiều phiên bản PHP trên cùng một server Debian](https://hainh.me/debian-9-cai-dat-nhieu-phien-ban-php.html): Hướng dẫn cài đặt nhiều phiên bản PHP ngoài phiên bản mặc định trên máy tính cài HĐH Linux Debian. - [Phần 6: Xử lý sự kiện Zalo API Webhook bằng PHP](https://hainh.me/zalo-api-php-webhook-callback-official-account.html): Bài viết dưới đây xây dựng một bộ khung cho Webhook và Callback để nhận các sự kiện của Official Account đã liên kết với ứng dụng. - [[Zalo API+PHP+JS] Tạo giao diện trung gian để gọi Zalo API từ trình duyệt (deprecated 2020)](https://hainh.me/zalo-apiphpjs-tao-giao-dien-trung-gian-de-goi-zalo-api-tu-trinh-duyet-deprecated-2020.html): Khi có được Access Token là chúng ta đã có thể sử dụng Zalo API. - [Phần 5: Tạo giao diện trung gian PHP để gọi Zalo API từ trình duyệt (JS)](https://hainh.me/zalo-api-php-goi-zalo-api-tu-trinh-duyet.html): Khi có được Access Token là chúng ta đã có thể sử dụng Zalo API. - [[Zalo API+PHP] Lấy access token với Zalo Login v3 (không còn hiệu lực)](https://hainh.me/zalo-api-php-lay-access-token-oauth-v3.html): Sau quá trình tạo và cấu hình ứng dụng, để có thể gọi các API của Zalo thì trước hết ứng dụng của bạn cần phải được Zalo cấp một cái "chìa khóa" đó là Access Token. - [Phần 4: Lấy Zalo API access token bằng PHP](https://hainh.me/zalo-api-php-lay-access-token.html): Bài viết hướng dẫn lấy Zalo API access token bằng PHP. - [[Zalo API+PHP] Thiết kế Web Service để tương tác với Zalo](https://hainh.me/zalo-api-php-thiet-ke-webservice.html): Bài viết sau trình bày về ý tưởng thiết kế một Web Service trung gian giữa Client và Zalo viết bằng PHP. - [Phần 2: Các loại Zalo API](https://hainh.me/zalo-api-php-cac-loai-zalo-api.html): Tính đến thời điểm này có 5 loại ứng dụng Zalo tương ứng với những API khác nhau. Bài viết này sẽ trình bày sơ lược về những ứng dụng này. - [Phần 1: Tạo và cấu hình ứng dụng Zalo API](https://hainh.me/zalo-api-php-tao-va-cau-hinh-ung-dung.html): Bài viết này khởi đầu chuỗi bài viết về sử dụng Zalo API để phát triển ứng dụng tương tác với người dùng qua Zalo. - [USP là gì? Tìm USP thế nào?](https://hainh.me/usp-la-gi-tim-the-nao.html): USP nói nôm na là cái khách hàng cần mà mình có, đối thủ không có, khiến cho Thương hiệu/Công ty "nổi bật" giữa đám đông, khiến khách hàng quyết định sử dụng giải pháp của chúng ta. - [Tìm các "lý do mua hàng" để kiến tạo lợi thế trong kinh doanh](https://hainh.me/cac-ly-do-mua-hang.html): Trong Marketing, điều quan trọng nhất đó là bạn chỉ ra được cho khách hàng tiềm năng của mình những "lý do" để họ thay đổi nhận thức và quyết định mua hàng của mình. - [Hướng dẫn cách tải hình ảnh đẹp, chi phí thấp](https://hainh.me/tai-anh-dep-chi-phi-thap.html): Làm content thì hình ảnh là thứ quan trọng có khi bậc nhất bởi đó là Reason To Attention. - [Cách map tài khoản OneDrive thành ổ đĩa mạng (Network drive)](https://hainh.me/map-onedrive-thanh-network-drive.html): Thay vì sử dụng không gian trên ổ cứng thì tôi sử dụng OneDrive như một network drive. - [Sửa lỗi "Integrity constraint violation" sau khi thêm bớt column trong table của SQLite database](https://hainh.me/sua-loi-integrity-constraint-violation-sau-khi-them-bot-column-trong-table-cua-sqlite-database.html): Trong quá trình phát triển tôi hay thường phải "ALTER" để thêm bớt column trong table của SQLite database và thi thoảng điều đó gây tai họa đó là gặp phải lỗi "Integrity constraint violation" mỗi khi cố gắng INSERT thêm một hàng vào table. - [Thêm async và defer vào các script trên WordPress](https://hainh.me/async-defer-wordpress-scripts.html): Bài viết sau hướng dẫn thêm thuộc tính async hoặc defer vào các script của WordPress, hỗ trợ tải trang hiệu quả hơn. - [Tạo icon lá cờ (Country Flag Emoji) từ Country Code (Alpha-2 code)](https://hainh.me/country-flag-emoji-country-code.html): Nguyên tắc hiển thị ký tự cờ các nước trên trình duyệt (country flag emoji) là sự lắp ghép của 02 emoji (UTF-8) của 2 ký tự ASCII trong country code. - [Map ổ đĩa từ xa qua giao thức SSH trên Windows](https://hainh.me/map-o-dia-tu-xa-qua-giao-thuc-ssh-tren-windows.html): Tôi có các máy chủ có thể kết nối qua giao thức SSH, làm sao để map thư mục trên đó thành ổ đĩa trên Windows? Đây là giải pháp. - [Cài đặt và sử dụng Facebook Pixel nâng cao](https://hainh.me/cai-dat-facebook-pixel-nang-cao.html): Bài viết này của tôi là một bài tương đối chuyên sâu về bản chất của Facebook Pixel dưới góc nhìn của một lập trình viên. - [Quản lý tài khoản đăng nhập qua .htpasswd bằng PHP](https://hainh.me/quan-ly-tai-khoan-htpasswd-bang-php.html): Bài viết hướng dẫn tạo, cập nhật và kiểm tra tài khoản quản lý trong file .htpasswd bằng PHP. - [Cài đặt NGINX làm reverse proxy cho Apache trên Debian](https://hainh.me/nginx-lam-reverse-proxy-cho-apache.html): Tận hưởng sự kết hợp sức mạnh của hai Web server engine nổi tiếng là Apache và Nginx. - [Cài đặt LAMP (Linux, Apache, MySQL, PHP) trên Debian Linux](https://hainh.me/cai-dat-lamp-tren-debian-linux.html): LAMP là một nhóm các phần mềm nguồn mở để xây dựng nên máy chủ Linux Web Hosting. - [Dùng NGINX làm reverse proxy cho các dịch vụ web](https://hainh.me/nginx-reverse-proxy.html): Dùng NGINX làm Reverse Proxy cho các dịch vụ web giúp hiệu quả trong việc cải thiện hiệu năng, sự ổn định và bảo mật của dịch vụ. - [Mở rộng các hàm query cho SQLite với PDO](https://hainh.me/mo-rong-cac-ham-query-pdo-sqlite.html): Lệnh query của SQLite không được mạnh mẽ như của MySQL do thiếu rất nhiều hàm xử lý. - [Xử lý các sự kiện của Contact Form 7](https://hainh.me/xu-ly-cac-su-kien-cua-contact-form-7.html): Contact Form 7 được sử dụng phổ biến trên nền tảng WordPress. Sau đây là cách dùng và ứng dụng xử lý các sự kiện liên quan đến form này. - [Cài đặt WordPress trên LAMP với chỉ một dòng lệnh](https://hainh.me/cai-dat-wordpress-lamp-mot-dong-lenh.html): Để cài đặt WordPress với tên miền mới trên VPS/Cloud server khá là nhiều thao tác mất thời gian. - [Fire and forget HTTP POST request trong PHP](https://hainh.me/fire-and-forget-post-request-trong-php.html): Hướng dẫn gửi một POST request bằng PHP mà không đợi phản hồi (fire and forget). - [Submit HTML Form không tải lại trang với AJAX](https://hainh.me/submit-html-form-khong-tai-lai-trang-voi-jquery-ajax.html): Bài viết này hướng dẫn cách submit form mà không tải lại trang tạo ra trải nghiệm liền mạch, đặc biệt là với các Web App. - [Tạo HTML Form chứa object và array](https://hainh.me/html-form-data-object-array.html): Bài viết sau hướng dẫn tạo HTML Form truyền dữ liệu có cấu trúc (object và array) lên server và được chuyển tự động thành format tương ứng ở PHP. - [Khởi tạo hệ điều hành Debian Linux](https://hainh.me/khoi-tao-debian-linux.html): Đây là những cài đặt ban đầu cho Linux Mint LMDE trên PC của tôi. - [Sử dụng REST API của Vtiger CRM bằng JavaScript](https://hainh.me/su-dung-vtiger-crm-rest-api-javascript.html): Vtiger CRM là một trong những hệ thống CRM ưa thích của tôi. - [Cài đặt SSH server trên Debian Linux](https://hainh.me/cai-dat-ssh-server-tren-debian-linux.html): Hướng dẫn cài đặt SSH server với các tính năng bảo mật cần thiết. - [Hướng dẫn cài đặt Vtiger CRM](https://hainh.me/huong-dan-cai-dat-vtiger-crm-debian.html): Hướng dẫn cài đặt Vtiger CRM lên VPS/Cloud Server cài đặt Debian Linux. Yêu cầu phía server phải cài đặt PHP 5.4 ÷ 5.6 do Vtiger CRM vẫn chưa hỗ trợ PHP 7. - [Tạo chứng chỉ SSL hợp lệ cho XAMPP trên localhost](https://hainh.me/tao-chung-chi-ssl-cho-xampp.html): Chứng chỉ SSL mặc định của XAMPP không đủ hợp lệ và trình duyệt như Microsoft Edge không công nhận do thiếu các thông tin cần thiết như Subject Alternative Name. - [Forward HTTP request đến một Web Service khác bằng PHP](https://hainh.me/forward-http-request-den-web-service-khac-php.html): Đôi khi tôi buộc phải thiết kế theo hướng tạo một Web Service trung gian (A) giữa Client và một Web Service khác (gọi là B). - [Tự động cài đặt WordPress với wp-cli](https://hainh.me/cai-dat-wordpress-voi-wp-cli.html): Hướng dẫn sau giúp bạn cài đặt WordPress chỉ bằng một dòng lệnh với wp-cli. - [Cài đặt suEXEC để gọi lệnh CGI dưới quyền một user trên Debian 9](https://hainh.me/cai-dat-apache-suexec-cgi-debian.html): Hướng dẫn cài đặt và cấu hình SuEXEC, cho phép gọi lệnh CGI dưới quyền một user bất kỳ trong hệ thống. - [Cài đặt hỗ trợ CGI trên Apache 2](https://hainh.me/su-dung-cgi-tren-apache2.html): Hướng dẫn dưới đây giúp thiết lập CGI (Common Gateway Interface) trên Apache2 để xây dựng các ứng dụng web động bằng bất kỳ ngôn ngữ nào. - [CGI trong lập trình web là gì? Cách dùng như thế nào?](https://hainh.me/cgi-la-gi-dung-nhu-the-nao.html): CGI (Common Gateway Interface) là cách mở rộng chức năng của Web Server giúp tạo ra những nội dung động. - [Quản lý và lựa chọn phiên bản Java Development Kit (JDK)](https://hainh.me/lua-chon-java-development-kit-jdk.html): Dự án của tôi có nhu cầu test trên nhiều phiên bản Java Development Kit khác nhau. - [Tạo mã QR code với PHP và qrencode](https://hainh.me/tao-qr-code-bang-php-qrencode.html): Bài viết dưới đây hướng dẫn tạo mã QR (QR code) rất đơn giản bằng PHP trên Debian Linux server. - [Thiết lập GRUB ghi nhớ OS được dùng trước đó](https://hainh.me/grub-nho-os-dung-truoc-do.html): Thật may mắn là GRUB lại có option này. Ghi nhớ OS được dùng trước đó. - [Tải tất cả các phần mềm trên trang web của NirSoft](https://hainh.me/tai-cac-phan-mem-nirsoft-voi-nightmarejs.html): Hướng dẫn tự động tìm và tải về các phần mềm của NirSoft. - [Danh sách bài viết liên quan trong WordPress](https://hainh.me/danh-sach-bai-viet-lien-quan-wordpress.html): Bài viết hướng dẫn tìm danh sách những bài viết (post) liên quan đến bài viết hiện tại theo các mục tiêu khác nhau. - [Sử dụng Facebook JavaScript SDK với async/await](https://hainh.me/facebook-javascript-sdk-async-await.html): Bài viết sau tạo một wrapper để sử dụng Facebook API theo phong cách JavaScript ES7 dùng async/await, giúp mã nguồn ứng dụng Facebook trở nên gọn gàng hơn. - [Cài đặt Node.js trên Debian/Ubuntu](https://hainh.me/cai-dat-nodejs-debian-ubuntu.html): Hướng dẫn cài đặt Node.js trên hệ điều hành Linux, cụ thể ở đây là Ubuntu/Debian. - [Cập nhật Cygwin từ dòng lệnh](https://hainh.me/cap-nhat-cygwin-tu-dong-lenh.html): Việc cập nhật Cygwin thường gắn liền với giao diện cài đặt cùng với việc phải thường xuyên cập nhật bộ cài từ địa chỉ cygwin.com. - [Xử lý query string bằng JavaScript](https://hainh.me/xu-ly-query-string-bang-javascript.html): Đoạn code snippet sau sử dụng JavaScript để đọc các parameter truyền vào query string trên URL. - [Gửi thông tin cuộc gọi realtime từ máy chủ Asterisk đến client CRM](https://hainh.me/gui-thong-tin-cuoc-goi-realtime-tu-may-chu-asterisk-den-client-crm.html): Một giải pháp liên kết với tổng đài Asterisk để thông báo cho CRM mỗi khi có cuộc gọi đến/đi realtime, sử dụng Socket.io. - [[Vtiger CRM] Khắc phục một số lỗi khi dùng REST API](https://hainh.me/loi-sai-tham-so-convertlead-api-vtiger-crm.html): Không rõ bản Enterprise thế nào chứ bản Open source của vTiger CRM vô cùng là buggy. - [Tìm vị trí từ khóa SEO trên Google](https://hainh.me/vi-tri-tu-khoa-seo-google.html): Công cụ sau giúp xác định vị trí của các từ khóa tương ứng với danh sách các domain trên Google. Khá hữu dụng trong công cuộc làm SEO. - [Load máy ảo VirtualBox (headless) khi khởi động hệ thống](https://hainh.me/load-may-ao-headless-virtualbox-startup.html): Chương trình sau tự động load một máy ảo VirtualBox khi hệ thống startup ở trạng thái Headless (Không hiển thị giao diện). - [Các cách tạo chứng chỉ SSL miễn phí với dịch vụ Let's Encrypt](https://hainh.me/cach-tao-chung-chi-ssl-lets-encrypt.html): Bài viết hướng dẫn tạo chứng chỉ SSL miễn phí với dịch vụ Let's Encrypt bằng nhiều cách tiếp cận khác nhau. - [Sửa lỗi permission denied khi tạo file trong Cygwin](https://hainh.me/sua-loi-sai-permission-khi-tao-file-trong-cygwin.html): Sau khi cài Cygwin, vì lý do nào đó Windows ACL gây ra lỗi về phân quyền này khiến ta không thể thay đổi quyền (permission) của các file bằng chmod. - [Cho phép tài khoản MySQL truy cập từ xa](https://hainh.me/truy-cap-mysql-tu-xa.html): Cho phép một user truy cập database của MySQL/MariaDB từ bên ngoài server. - [Cấu hình firewall bảo vệ server Debian phong cách whitelist](https://hainh.me/whitelist-firewall-iptables-shell-script.html): Shell script giúp đơn giản hóa tác vụ dựng tường lửa bằng iptables theo phong cách whitelist. ## Pages - [About](https://hainh.me/about-2): Hi there! My name is Hong HAI. - [Giới thiệu](https://hainh.me/about-me): Sở thích của tôi là tạo ra những thứ đẹp đẽ, cân đối. Ngoài ra tôi cũng thích "tự động hóa" những công việc thường ngày. - [Điều khoản bảo mật](https://hainh.me/dieu-khoan-bao-mat): iCreativ hiểu rằng sự riêng tư và bảo mật thông tin cá nhân rất quan trọng đối với người dùng, vì vậy iCreativ cam kết nổ lực tối đa bảo vệ sự riêng tư của độc giả. [comment]: # (Generated by Hostinger Tools Plugin)