Use Unicode UTF-8 for worldwide language support

Windows NT can date back to 1993, at that time Unicode was still a new thing to the industry. Microsoft had decided to use UCS-2 (pre-W2K) and UTF-16 LE (since W2K) for supporting Unicode and introduced a separated set of Windows APIs (-W APIs) for 2-byte wide char, while keeping the (-A APIs) for Windows… Read More »

Failed to access WSL files using \\wsl$\

If you can’t access your WSL files using “\\wsl$\<distro>” in Explorer or Visual Studio Code like me, try to add back “P9NP” in “PROVIDERORDER” under 2 registry keys “HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\NetworkProvider\HwOrder” and “Order”. This is a known issue opened in 2019 https://github.com/microsoft/WSL/issues/4027

Upgrade Debian GNU/Linux from Buster to Bullseye

There’s no planned release date for Debian 11 yet, but Debian is well-known for its stability, and Debian 11 entered the final release stage, so no harm to try it especially for personal use. To a certain extent Debian GNU/Linux is a rolling release distribution, you can just edit the APT source to get the… Read More »

基於 libuv 的 uvloop 令 Python 3.5+ 的 asyncio 更快

Python 3 已推出一段長時間,文章落筆時最新為 3.7,其間 Python 3 都變了不少,3.6 起基本上已無誘因繼續用 2.7。 PEP 529 — Change Windows filesystem encoding to UTF-8 Windows NT 時用了 UTF-16 支援 Unicode,令 Windows APIs 有一套 9x 帶落 ASCII 的 *A functions (),另一套 UTF16LE 的 *W Functions。Python 3.6 就同 POSIX APIs 睇齊,用 UTF-8,即同 Linux 上一樣,解決好多 cross-platform 檔案存取問題。 PEP 3156 — Asynchronous IO Support Rebooted:… Read More »

Stable Chromium Binary

想用 Chrome 但又怕 Google,咁可以用 Chromium,但 Chromium 官方只提供 source code 又或是最新 unstable 的 nightly build,想要最新 Chrome 對應的 Chromium stable 版本除左 get your hand dirty 自己 build 外,仲有以下方法。 1. 首先去 Chrome Releases Stable Updates 找出最新 Chrome 版本。通常你會見到以下句子: The Chrome team is delighted to announce the promotion of Chrome 69 to the stable channel for Windows, Mac and… Read More »

Internet Explorer 11 is the new Internet Explorer 6

Internet Explorer 11 is definitely the new Internet Explorer 6. It can’t even run the simple JavaScript as below. (() => “hello world!”)(); 由於 Windows 7 不死,而 Windows 7 上最新只能用 IE 11,沒有 IE 12 也沒有 Edge,IE 11 已變成新 IE 6。很多新標準 IE 11 都未能支援,就連 ES6 的 arrow function 都正確運行,變相令 develops 使用新技術時有所顧忌。

Ubuntu 版本的命名

Ubuntu 18.04 LTS Bionic Beaver 推出了。想借這個機會分享一下 Ubuntu 版本命名的方式。 每個 Linux 分發版 (distribution) 的名命都有其特式,例如 Debian 就以 Toy Story 的角色命名。 Ubuntu 的版本數字是年年.月月,如 18.04 是 2018 年 4 月推出。 LTS 是長期支援版本,LTS 通常隔年推出,變相 LTS 通常是雙數。 版本名稱則有點特別,會是兩個第一個字母相同的英文字。第一個是形容詞,第二個則是頻危或傳說中的動物。由 Ubuntu 6 開始,跟 Android 一樣,按字母次序排列,讓人單看名稱就知道哪個較新。Ubuntu 17 時,17.04 Zesty Zapus、17.10 Artful Aardvark 已由 Z 回到 A 了。

SQL Server 2017 on Linux

Microsoft SQL Server on Linux on March, 2016. I was installed it as a toy and was impressed by the easy installation, just add a repository, then yum/apt-get install and that it! Now, SQL Server 2017 on Linux became official GA. Restore the backup dump from Windows using SQL Management Studio, and changed the connection… Read More »

clang-cl crashed when building Chromium

The clang-cl crash is a known issue (crbug.com/780124) when building Chromium on Windows. The clang team has fixed it but not yet shipped. The bug only happens with precompiled headers so the workaround is to add this to gn args: enable_precompiled_headers = false —— 很久沒有 build 過 Windows 版的 Chromium 了。近來多用返 Windows,決定更新一下。 > ninja -C… Read More »

No more fishing email, Facebook supports OpenPGP!

Facebook supports OpenPGP! No more fishing email! Save your public key to Facebook and import Facebook’s Public Key to your email client. Then, you can verify if the email really sent from Facebook and the email content cannot be read by others! 再沒有釣魚、假 Facebook 電郵!Facebook 支援 OpenPGP,把你的公開金鑰加入 Facebook,再把 Facebook 的公開金鑰匯入你的電郵客戶端。從此,再沒有人可以扮 Facebook 電郵,且電郵在傳送過程是加密的!

DigitalOcean 公佈新價單 當中低價 VM 獲得免費升級

雲計算已被好多公司所採用,越來越來供應商加入應戰,得益的當然係消費者。主打簡單、便宜的 DigitalOcean 公佈了 2018 新價單,當中加入了 $15/mo 填補了 $10/mo – $20/mo 之間的空檔。最令人歡喜是低價 VM 獲得免費升級,記憶體多了一倍! 現在 $5/mo 已可擁有 1 core / 1G / 25GB cloud VM!舊有的 VM 可以先關機再 re-size 便可獲得升級。記得好好利用!

VMware ESXi SCSI controller

VMware ESXi SCSI controller 有以下選項: BusLogic LSI Logic Parallel LSI Logic SAS VMware Paravirtual 當中 BusLogic 最 legacy,但兼容度最好,而 VMware Paravirtual 效能最好。基本上,現在大路的 Linux kernel 都支援 VMware Paravirtual,module 名為 vmw_pvscsi。 如果個 Linux VM 是安裝時沒有選用 VMware Paravirtual,安裝後才改為 VMware Paravirtual,Linux 是無法在正當模式啟動。此情況同轉換了 Hypervisor 後一樣,要進入 rescue 模式才重新生成 initramfs。 進入 rescue 模式後, 想查看 vmw_pvscsi 的資訊,可打 modinfo vmw_pvscsi 想看看有沒有載入 vmw_pvscsi 可以用 lsmod lsmod… Read More »

Shrink an XFS partition

眾所周知,XFS 只可增大 (extend),不可縮細 (shrink)。 雖不可縮細,但其實可以用 write zero 方法,把空間寫 0,dump VM 可大大減少 disk image 的大小,所以其實影響不大。 write zero 有兩個方法,一是用 zerofree 另一是用 dd,zerofree 需要 remount 成 read-only 及 RHEL 系列沒有此 package,而 dd 雖慢但簡單 $ dd if=/dev/zero of=/tmp/zero bs=8M; rm /tmp/zero 如果真的想縮細 XFS 就唯有建立一隻新 disk,如 /dev/sdc,之後把 /dev/sdc1 mount 去 /mnt/sdc1,再用 xfsdump 和 xfsrestore $ sudo -s $ fdisk /dev/sdc… Read More »

Using Certbot to sign/renew the Let’s Encrypt certificate

早前寫了一篇 knowledge transfer 文章,講解如何從 Let’s Encrypt 簽 TLS cert,現在同大家分享一下。 Certbot is an official tool to renew/sign the cert issued from Let’s Encrypt. Installation of certbot was painful in the old days, so in the first release, I use its official Docker image to do the job. docker run -it –rm -p 443:443 -p 80:80 \… Read More »

VCRedist from VC++ 2008 installs temporary files in root directory

當你發現 C:\ 多了以下一堆垃圾,放心,可以把這檔案移除 (只限這些)。因這是一個已知的 bug install.exe install.res.1028.dll install.res.1031.dll install.res.1033.dll install.res.1036.dll install.res.1040.dll install.res.1041.dll install.res.1042.dll install.res.2052.dll install.res.3082.dll vcredist.bmp globdata.ini install.ini eula.1028.txt eula.1031.txt eula.1033.txt eula.1036.txt eula.1040.txt eula.1041.txt eula.1042.txt eula.2052.txt eula.3082.txt VC_RED.MSI VC_RED.cab

善用 POSIX 的 stdin 及 stdout

Linux / macOS 的 stdin、stdout 完全把 Windows 比下去。 例如,你可以邊 download 邊解壓: $ curl -L http://ftp.cuhk.edu.hk/pub/packages/apache.org/cassandra/3.10/apa che-cassandra-3.10-bin.tar.gz | gzip -dc | tar -x 註: -L => 跟著網站 redirect 如有 gzip -dc => unzip 去 stdout tar -x => untar 又例如,你想從另一部機的 Docker image 載入這部電腦: $ ssh remote-machine ‘docker save image-name:tag | gzip -c’ | gzip -dc |… Read More »

開啟 BitLocker AES 256 加密

Windows 8 或以上比 Windows 7 好的地方有很多,其中以往只有 Ultimate 才的 Hyper-V 及 BitLocker,在 Professional 版本已可擁有! BitLocker 預設是用 AES 128,個人覺得 AES 256 更安全,現在 CPU 已內置 AES 指令,256 比 128 不會慢得多少。 要開啟 BitLocker 的 AES 256 要在 “Local Group Policy Editor” 自行打開。用 “manage-bde -status” 可查看 BitLocker 的狀態。 自 Windows 10 version 1511 起,BitLocker 引進 XTS mode AES,XTS 比 CBC… Read More »

由 init 到 systemd

在電腦世界,雖要有一些程式來管理其他程式的「啟動」、「重啟」及「停止」。 在 Windows、Linux、Matrix 🙂 都有。Windows 叫這做 “Services”。開放的 Linux 就有數種程式來做這種事。比較常用的就有 init、upstart 及 systemd。 現在知名的發行版,如 Fedora、RHEL、Ubuntu、Debian 都已把 init 改為用 systemd。這個轉換早前引發開源界很大爭議,原因 systemd 有違 Unix Philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface Systemd 做太多野了,不單啟動或重啟一個程式這樣簡單。Systemd 不是純 text process。對一般 users… Read More »

愛上 Node.js 的理由 – JavaScript

愛上 Node.js,其 non-blocking event loop 是其一,更重要是 JavaScript 語言! Declare 一個 object var m = {}; 再在 array 上用 for each,把 name 加入 object names.forEach(function(val){ m[val.name] = 1; }); 最後一句便可抽出 unique name 再排埋序 Object.keys(m).sort(); 神奇的 JavaScript!有咩理由唔愛上 Node.js 而用累贅又食 RAM 的 Java。身為 OCP: Java SE 6 的我是學 JavaScript 先,起初是用來做一些唔特洗的網頁特效用,之後 AJAX 興起,就用來做 dynamic 客戶端網頁,到 Node.js,JavaScript 更可在 server 上運行,其執行快速是建基於… Read More »

用 gorush 來談談 Google Go

一直都好想寫一個 Push Notification 的 portal/server,來提供 HTTP RESTFul API 給需要 push notification 的 program。這樣可以集中處埋 push notification,各 program 不用重覆 push notification 的部份,不用 “reinventing the wheel”。 結果,我在 GitHub 這個大寶藏發現了個 grouch! gorush支援 iOS 及 Android 的 push notification,可以用 command line 快速測試,也可以用 server mode 長駐。它本身帶有 portal 及 stat API,用來查看 server 及 push 狀態,可謂一應俱全。它用 GO 寫成,這個是它的一大好處。何解?那就談談 GO。 GO 是 Google 的產品,它的歷史可以自行… Read More »