Bài đăng

Cài đặt PHP 7.2 trên CentOS 7/RHEL 7

Khi cài đặt PHP trên CentOS 7/RHEL 7 sẽ mặc định cài PHP 5.4. Nếu muốn cài đặt PHP 7.2 thì cần làm theo các bước bên dưới 1. Cài đặt EPEL repo sudo yum install -y epel-release 2. Cài đặt Remi repo cho PHP sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm 3. Cài đặt package yum-utils sudo yum install -y yum-utils 4. Enable Remi repo sudo yum-config-manager --enable remi-php72 5. Chạy yum update sudo yum -y update 6. Cài đặt PHP 7.2 và các package thường xuyên sử dụng (có thể thêm / bớt tùy ý) sudo yum install -y php72 php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache php-cli 7. Kiểm tra phiên bản của PHP sau khi cài đặt php -v Cửa sổ dòng lệnh hiển thị như bên dưới là cài đặt thành công PHP 7.2.34 (cli) (built: Aug 25 2021 15:37:58) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies Bên dưới là tất cả các lện

Cách gọi API trên Android/iOS khi code server với JHipster

Có thể do các API tạo bằng JHipster để dùng trên môi trường web, nên sinh ra cookie là XSRF-TOKEN. Mỗi khi gửi request lên API thì Header có kèm thêm field X-XSRF-TOKEN, value của field này được lấy từ cookie XSRF-TOKEN. JHipster đã làm sẵn cho ta các bước này. Ngoài ra, API còn sử dụng thêm session JSESSIONID để verify request. Nhưng khi gọi API trên Android/iOS, ta phải tự làm các bước giống như trên. Gọi 1 API bất kỳ để sinh ra cookie XSRF-TOKEN. Ta cần lấy tất cả cookie từ response header, lưu lại để dùng cho các request sau. Khi tạo request mới, thì gán các cookie đã lưu vào request header. Ngoài ra, ta cần tìm cookie XSRF-TOKEN, lấy value gán cho field X-XSRF-TOKEN ở request header. Khi có response ở bước 2, ta lặp lại bước 1. Khi lưu và lấy cookie cần lưu theo domain để tránh trùng cookie do API sinh ra với cookie do website khác sinh ra. Ví dụ thực tế trên iOS: JHipster sinh ra session JSESSIONID, ta lưu cookie vào NSHTTPCookieStorage và không theo domain. (1) Mở 1

Học làm thơ cho ngày đặc biệt

Hừm, hôm nay là ngày đặc biệt đây. Ai được sinh vào ngày này thì cứ xác định 4 năm mới sinh nhật nhé 😂. Hôm nay cũng là ngày cuối tháng 2, tháng ẩm ương. Sương, nồm ẩm ướt đẫm tâm hồn khô khan. Lan man ngồi ngẫm cả ngàn ý thơ. Giỏi việc nước đảm việc nhà. Nộp lương đầy đủ mua quà thường xuyên. Sai quá sai, ahaha! 8 ngày nữa là ngày 8/3, cho chị em lên ngôi tí.

Người thầy bất đắc dĩ

Mình những tưởng từ bỏ mái trường sư phạm thì sẽ không còn cơ hội làm thầy. Ấy vậy mà 20/11 năm nay, mình ngỡ ngàng và hạnh phúc biết bao khi được tặng quà tri ân nhân ngày Nhà giáo NTQ. Mình đến với nghề giáo âu cũng là cái duyên cái số. Mình nộp đại hồ sơ vào trường chỉ để trốn nghĩa vụ quân sự. Trong đầu đinh ninh rằng không đỗ đâu, "sư phạm mà, điểm cao lắm", thế mà lại có giấy báo đỗ. Sau bao ngày lần chần, mình đã nhập học. Ngày nhập học, giỏ xe chở đầy giáo trình, chở làm màu thôi, học hành gì. Mình chia tay mái trường sau 1 năm gắn bó. Ngày nghỉ, mình khóc như mưa. Năm đó Hà Nội lụt lịch sử 😆 Mình đi học IT các bạn ạ. Trong đầu mình chẳng hình dung IT là học gì? Thậm chí máy tính mình còn chưa biết mở, vài tháng đầu toàn nhờ bạn bè bật hộ. Hừm, thế mà giờ mình đã làm cốt đờ được nhiều năm, mài mòn dăm cái quần ở NTQ rồi. Thiết nghĩ công ty may lớn như NTQ thì phải cấp quần cho anh em mài thoải mái chứ nhỉ ❤️ Ở NTQ, phong trào học tập sôi nổi lắm các bạn ạ.

[SSH] Sửa lỗi "error: Bind to port xxx on 0.0.0.0 failed: Permission denied." trên CentOS 7

Nếu bạn đang configure port cho SSH, sau đó restart lại sshd mà gặp báo lỗi kiểu như thế này Job for ssh.service failed because the control process exited with error code. See "systemctl status ssh.service" and "journalctl -xe" for details. Thì hãy chạy lệnh journalctl -xe để xem báo lỗi cụ thể là gì nhé. Giả sử ta đang configure port number là 9999, lúc này báo lỗi sẽ có dạng Dec 04 22:25:16 localhost sshd[25003]: error: Bind to port 9999 on 0.0.0.0 failed: Permission denied. Dec 04 22:25:16 localhost sshd[25003]: error: Bind to port 9999 on :: failed: Permission denied. Dec 04 22:25:16 localhost sshd[25003]: fatal: Cannot bind any address. Dec 04 22:25:16 localhost systemd[1]: sshd.service: main process exited, code=exited, status=255/n/a Dec 04 22:25:16 localhost systemd[1]: Failed to start OpenSSH server daemon. -- Subject: Unit sshd.service has failed -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -

[TIL] Sửa lỗi SSH key "bad permissions"

Bình thường chúng ta sinh ra SSH key bằng lệnh ssh-keygen thì sẽ không gặp lỗi như bên dưới @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0755 for '/Users/quydo/.ssh/github_rsa' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "/Users/quydo/.ssh/github_rsa": bad permissions git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. Lỗi này là do ssh-agent kiểm tra thấy permission của file key đang là 0755, user khác có thể đọc và execute file key. Để khác phục thì ta cần đổi lại permission của file key dùng lệnh chmod chmod 0600 /Users/quydo/.ssh/github_rsa Sau đó ta có thể connect dùng SSH key bình thường. Edited: lỗi này sẽ

[TIL] Cài Composer trên Mac OS X

Một số cách để cài Composer trên Mac OS X Cách 1: sử dụng Homebrew Trên Mac OS X có trình quản lý các gói (package) mà OS X còn thiếu, gọi là Homebrew . Để cài Composer sử dụng Homebrew chỉ cần chạy 1 lệnh đơn giản: brew install composer Homebrew sẽ tải Composer về thư mục /usr/local/Cellar/. Sau đó ta có thể test kết quả: composer --version Cách 2: Dùng dòng lệnh Trên trang huớng dẫn của Composer có cung cấp sẵn cho chúng ta đoạn code PHP để tải trình cài đặt Composer, trình cài đặt cũng là 1 đoạn code PHP thuần. Ví dụ đoạn code để tải: php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-se