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 »

淺談 Node.js 的 callback 及 JavaScript object reference 的特性

Node.js 是用 Chrome V8 JavaScript engine 發展而成。V8 快的原因在於應用了 JIT 以及把 JavaScript 先 compile 成 C++ 再執行。而 Node.js 快的原因除了因使用了 V8 外,就是其著名的 event-driven / callback 機制。Node.js 把 time consuming 的 tasks 例如 disk IO、DB access、network requests 等,包裝成 callback。CPU 不會等回應就繼續執行。 初學者會覺得好困擾,個 program 不知何解有時能正確返回結果,有時就不能。原因在於 callback 及跟 JavaScript object 的 reference 特性有關。 能正確返回結果的原因是 CPU 剛巧被其他 task 阻一阻,以致幸運地等到了 callback,而 object reference… Read More »

從 Python 3.6 的 PEP 529 看 Windows APIs

談談 Python 3.6 中的 PEP 529 Windows 版的 Python 去到 3.6 才改用 UTF-16 APIs,在此之前一直使用 ANSI APIs。 這個要從 Windows 的歷史講起。Windows 9x 系列 (95 – Me),原生並不支援 Unicode (在 2001 年 Microsoft 推出了 Microsoft Layer for Unicode 令 9x 支援 Unicode,但 2001 年已推出了 Windows XP)。在 9x,它是使用 multibyte code page 來支援非 ANSI (英文) 字元。 與此同時,差不多並行推出的 Windows NT 系列 (NT… Read More »

再談 UTF-8

Unicode 自 2.0 到現在 6.0 都是 21 bits 編碼。UTF 就是實作把這個最大為 21 bits 的數字儲存。常見的 UTF 有 UTF-8、UTF-16 及 UTF-32。今次要再講講 UTF-8。 UTF-8 之所以流行是因為它跟 ASCII 兼容,”a” 字在 ASCII 及 UTF-8 時都是 0x61,但在 UTF-16 時卻是 0x00 0x61,當中 0x00 用 ASCII 解讀時會觸發 null-terminated。且儲存英文及數字只需使用 1 byte,比 UTF-16 節省一倍。雖然儲存中文字時,UTF-8 會比 UTF-16 用多較多空間,不過除非是全中文文章,否則中英混雜時,例如 HTML,用 UTF-8 一般會較有儲存大小上的好處。 UTF-8 能兼容 ASCII 之餘又能儲存大於 128 編碼的袐密在於可變位數,詳情可參看 淺談… Read More »

C++ string stack overflow

收到一個 Win32 C++ program,發覺 input 大 file 時,執行途中會掛掉。查看 source code 後估計好大機會是因為 stack overflow。 改左幾句,把 wstring 改做 wchar_t 及改埋相關的 functions 便解決了 stack overflow 問題。原因是「新」C++ STL 是會把短 string 放 stack,長 string 才放 heap,咁做是為左 performance 考量,要知道 stack 快過 heap 好多。但超大量短 string 就會做成 stack overflow。結果修改後,便能正常運行。 點解用 wchar_t 唔用 char,是因為要處理中文,char 要用 UTF-8 編號才可放非英文字元。在近乎全中文下,UTF-8 比 UTF-16 不但運算慢,也需要更多存儲空間。 下一步就是把 program 移植到 Linux,寫左個… Read More »