2021年12月21日 星期二

Using nvidia-smi to get GPU current temperature

nvidia-smi 是 NVIDIA 內建的 command line tool,
可以取得 Driver 版本、GPU溫度、耗電瓦數、GPU使用記憶體等數據
還有那些程式在使用 GPU
若要只抓溫度可以用
nvidia-smi -q -d TEMPERATURE | findstr /C:"GPU Current"
        GPU Current Temp : 63 C

2021年12月9日 星期四

Upgrade PHP from 7.x to 8.x (remi repo)

rpm -qa | grep ^php | xargs rpm -e
dnf -y module reset php:remi-7.4
dnf -y module install php:remi-8.1
dnf -y install php-common php-pecl-zip php-mysqlnd php-mbstring php-opcache php-process php-pdo php-cli php-pecl-mcrypt php-fpm

2021年12月4日 星期六

Copy small file trick between terminal A and B

有時兩個 Terminal 之間無法直接連線或透過第三方交換檔案,甚至無網路的的話,可以透過此技巧交換檔案

檔案是 foo.zip
在 Terminal A 把檔案壓縮再 base64 編碼
gzip -c foo.zip | base64

把 base64 code 貼到 Terminal B 的一個檔 foo.b64,然後再 base64 decode,解壓後輸出
base64 -d foo.b64 | gunzip > foo.zip

適合比較小的檔案,base 64 編碼沒有超過一頁,較好複製

2021年12月3日 星期五

CentOS 8 install haproxy 2.x

CentOS 8 預設的 haproxy 版本是 1.8,滿舊的了,本文撰寫的時間已經有 2.6-dev
enable NFV repo 之後,可以裝 2.2 的版本,其實也沒有很新

dnf -y install centos-release-nfv-extras
dnf -y install haproxy

ref. Network Functions Virtualization (NFV) SIG

2021年11月27日 星期六

Goolge Opinion Rewards

Google 意見回饋獎勵
是一個填問券賺 Google Play 回饋金的 APP,
問券問題都不多,有的甚至只有一題,基本的回饋是 4 元台幣,有的問券會回饋比較多
其問券是不定期出現的,一星期也許只有一兩則

AndroidiOS 都有這個 APP

2021年11月12日 星期五

Migrate to Rocky Linux

CentOS 8 的支援只到 2021 年底,該是轉換到 Rocky Linux 或 AlmaLinux 的時機
個人是選擇轉到 Rocky Linux
Rocky Linux 有提供轉移工具能無痛轉移,但版本需為 8.4

How to Migrate to Rocky Linux from CentOS Stream, CentOS, Alma Linux, RHEL, or Oracle Linux

就三行指令
curl https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky.sh
chmod +x migrate2rocky.sh
./migrate2rocky.sh -r

執行需要一些時間,過程中它把系統所有套件都重新安裝(Reinstall),
我的一台 VM 大概花了 20 分鐘,轉完會提示重開機,還滿順利的,沒有遇到什麼問題。


2021年11月9日 星期二

HAR to cURL

Convert HAR (HTTP Archive) to cURL command
這個工具可以把瀏覽器開發者具存下的 HAR 檔案轉換成 curl 指令


Rsyslog discards rest

& stop
舊式寫法 & ~

表示忽略剩下的 Rule,不繼續走,沒加的話會把 rsyslog.conf 的 Rule 走完
要把某一類的 Log 獨立出來,在 /etc/rsyslog.d 建立 conf,conf 裡面最後寫 & stop,沒加的話預設的 messages 也會出現

例如: /etc/rsyslog.d/haproxy.conf

local2.* /var/log/haproxy.log
& stop

ref. https://www.rsyslog.com/doc/master/configuration/converting_to_new_format.html

2021年11月5日 星期五

Setup static IP with nmcli

nmcli con mod ens192 ipv4.addresses 192.168.1.10/24
nmcli con mod ens192 ipv4.gateway 192.168.1.254
nmcli con mod ens192 ipv4.dns 1.1.1.1,8.8.8.8
nmcli con mod ens192 ipv4.method manual
systemctl restart NetworkManager.service

2021年10月23日 星期六

HEIC to JPG convert tool

heif-convert 轉換工具包含在 libheif 套件內,要先裝 RPM fusion repo

rpm -ivh https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm # for CentOS8
or
rpm -ivh https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm # for CentOS7

yum -y install libheif

USAGE: heif-convert [-q quality 0..100] <filename> <output>

例如: heif-convert p0001.heif p0001.jpg
不帶 -q 參數,預設是 90

HEIC 目前支援度還很少,除了 Apple 手機,瀏覽器都尚未支援,
Windows 可以看,但要先裝「HEVC 視訊延伸模組」,還要錢,NT$33,這個模組看 Netflix 的 HDR 影片也是需要它。

2021年10月15日 星期五

Adsense API v2

Adsense API v1.4 只能用到 2021-10-12,需要 migrate 到 v2 版本

以下是用 PHP

需先安裝 google-api-php-client library
composer require google/apiclient:^2.11
再使用以下 Code,把 $account 設自己的帳號就行了,
不過 metrics TOTAL_EARNINGS 似乎有問題,都會取到 0

2021年10月9日 星期六

Bypass Windows 11 TPMCheck and SecureBootCheck

電腦不符合 Windows 11 需求,也可以安裝 Windows 11

安裝流程第一個畫面按 Shift-F10 開啟 CMD
下指令
reg add HKLM\System\Setup\LabConfig /v "BypassTPMCheck" /t REG_DWORD /d 1 /f
reg add HKLM\System\Setup\LabConfig /v "BypassSecureBootCheck" /t REG_DWORD /d 1 /f

後續就跟一般安裝一樣

TPMCheck 及 SecureBootCheck 是在選擇要安裝 Windows 版本之後,
若已看到此電腦無法執行 Windows 11,也可以按上一頁,再進行上面的 reg 動作

順便一提,Windows 11 仍是可以使用離線帳戶的
登入選項 / 離線帳戶


2021年10月7日 星期四

Rsyslog to PHP

以 PHP 為例,把 syslog 的資料即時 pipe 給程式分析

/etc/rsyslog.conf 加入
module(load="omprog")
*.* action(type="omprog" binary="/usr/local/bin/syslog-parser.php")

syslog-parser.php 內容

#!/usr/bin/php
<?php
while ($line=trim(fgets(STDIN))) {
  file_put_contents("/tmp/syslog-parser.log",$line."\n",FILE_APPEND);
}
?>

不要忘了 chmod +x syslog-parser.php,它需要有執行權限
本範例中的 $line 就是 syslog 會傳進來的每一行
當然這個方法不限於 PHP,可以讀取 STDIN 的程式都可以

2021年9月7日 星期二

Protect static files with Apache mod_xsendfile

網頁中的 Static files,若要經過驗證才能存取,
以 PHP 為例,
第一種做法是將檔案放在 DocumentRoot 以外的目錄,程式先檢查驗證,然後再用 readfile 讀檔吐出去
第二種做法是本文要介紹的 mod_xsendfile,一樣是將檔案放在 DocumentRoot 以外的目錄,
然後再送出 Header X-SENDFILE 告訴 Web Server 檔案在那,由 Web Server 直接存取。
若是檔案很大的話,第一種做法會耗用很多記憶體,第二種做法就省記憶體,跟 Static files 沒什麼兩樣

安裝 mod_xsendfile
yum -y install mod_xsendfile

httpd.conf 加入兩個參數
XSendFile On
XSendFilePath /data
XSendFilePath 是設定可以 X-SENDFILE 指向的白名單,可以設定多筆

應用範例:
DocumentRoot /var/www/html
Data folder /var/www/html/data
X-SENDFILE data folder /xsendfile

在 data 目錄建立 .htaccess,目的是將 data 下任何 URL 都先經過 index.php 檢查權限,再放行(X-SENDFILE)
.htaccess 內容
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L]

index.php 內容
<?php
if (authCheck()) {
$filename= basename($_SERVER['REQUEST_URI']);
header('X-SENDFILE: /xsendfile/'.$filename);
header('Content-Type: '.mime_content_type('/xsendfile/'.$filename));
exit;

}
?>
<h1>Permission denied</h1>

註: nginx 也有類似的模組,叫 X-Accel

ref. mod_xsendfile 官網

2021年9月4日 星期六

openfortivpn

openfortivpnFortiClient VPN 相容,若不想用官方的 Client 可以試試
只是它是命令列模式,沒有 GUI

使用很簡單
openfortivpn vpn-gateway:8443 -u username
然後會提示輸入 Password
若憑證是自簽的,需加 --trusted-cert 參數,後面接憑證的 SHA256 (沒加此參數撥不上時會有提示)


Android 11+ Wireless ADB

Android 11 開始支援的無線偵錯,滿方便的,電腦跟手機需在同一個子網路下
系統 / 開發人員選項 / 無線偵錯 / 使用配對碼配對裝置

以上圖的情況
cd %LOCALAPPDATA%\Android\Sdk\platform-tools
adb pair 192.168.0.5:38549 370573
就完成配對,若 Android Studio 仍沒有看到這個裝置,再手動下指令
adb connect 192.168.0.5:34961

ref. Android Debug Bridge (adb)

2021年9月3日 星期五

Increase or Decrease DNS TTL

BIND
可以用 max-cache-ttl 參數來縮短 TTL,但是無法增加

dnsmasq
可以用 max-cache-ttl 參數來縮短 TTL
可以用 min-cache-ttl 參數來加大 TTL,上限是 3600
若需要超過 3600 的數值,必需自行修改 src/config.h 裡的 #define TTL_FLOOR_LIMIT 數值,再重新編譯

2021年8月29日 星期日

Rclone empty Google Drive trash

Rclone 清空 Google Drive 垃圾桶

指令 rclone cleanup remote:

NOTICE: Google drive root '': Note that emptying the trash happens in the background and can take some time.

指令下完,會出現此提示,在背景作業,檔案多的話,需要一些時間,數百 G 的資料清理完可能會超過一小時,請耐心等待

2021年8月21日 星期六

2021年8月10日 星期二

Blockchain domains

foreverdomains.io

區塊鏈域名是使用區塊鏈 NFT (Non-Fungible Token) 建講的域名,特點是去中心化,只要一次性費用,免年費,也不會過期。
當然,它跟現有 ICANN 控制的中心化 root NS 是不互通的,要訪問區塊鏈域名的網站,還要加掛 Fingertip 程式才行

短期來看,區塊鏈域名的收藏價值可能大於實用價值。
長期來看,因 NFT 本身具唯一性,不可被竄改的特性,也許可以應用在抗封鎖、防止域名劫持上面。

2021年8月4日 星期三

Download file from free domain blocked by browsers

有遇到使用 Free domain 的站,Freenom 這五個 .cf .ga .gq .ml .tk
下載檔案瀏覽器會有安全性提示

Chrome: 一般使用者不常下載 xxx.zip,代表這個檔案可能不安全。ref. Google Chrome 封鎖下載內容

Firefox: 這個檔案不是常見的可下載檔案。
這個檔案不是常見的可下載檔案,開啟的話可能會不安全,這個檔案裡可能含有病毒,或會對您的程式與設定做出未預期的變更。
您可以搜尋其他下載來源,或稍後再試。

同一個站只要換個域名就正常了,很明顯就是針對 Free domain 的網址。
Free domain 網址常被濫用,建立惡意網站,被認定為惡意也是可以預期的。
所以免費域名開發、測試可以,正式使用還是要避免。

2021年7月28日 星期三

External IPv6 addresses for Google Cloud VM instances is now available

GCP 的 VM (Compute Engine) 終於支援 IPv6 Public IP 了

目前只支援以下地區
asia-east1
asia-south1
europe-west2
us-west2

有台灣區,參考 configure-ipv6-address 進行設定,似乎只能使用 gcloud 指令,無法經由 Web 設定

網路要先啟用 IPv6
gcloud compute networks subnets update network_name --stack-type=IPV4_IPV6 --ipv6-access-type=EXTERNAL --region=asia-east1

再啟用機器的 IPv6
gcloud compute instances network-interfaces update instance_name --ipv6-network-tier=PREMIUM --stack-type=IPV4_IPV6 --zone=asia-east1-c

機器就可以拿到一個 /128 的 IPv6 IP
但是設定文件提到有一些限制,目前無法用 IPv6 IP 連 Google 的 API 或服務,
所以 ping6 google.com 是不通的,會出現 Destination unreachable: No route
ping 其他地方例如 ping6 www.microsoft.com 是可以通的,
真窘,連自家反而不通
另外找不到地方可以設定 IPv6 的 Firewall,感覺還沒做得很完整,因為預設 INPUT 是 Block,就暫時無法用 IPv6 提供服務

Online UI Design Tool

https://www.figma.com/

https://www.invisionapp.com/

前者比較紅,Alexa 全球排名 698


2021年7月27日 星期二

VMware Horizon Client and Bluetooth

發現偶爾 Windows 10 電腦設定裡的藍牙開關會消失,導致藍牙無法連線

 

經過一段時間才發現是 VMware Horizon Client 所造成,當 USB 裝置裡面的藍牙有被開啟,藍牙就會映射到 VDI,關掉就好了

 

 

DNS negative cache

在查詢一個域名時,若當資料不存在,會出現 NXDOMAIN DNS 也會 cache 這個查不到的結果,其預設的 TTL 跟 DNS 及 Zone 的 SOA TTL 有關 例如 BIND 的 max-ncache-ttl 預設是 10800 秒 當 SOA 中的 TTL 小於 ...