Blog

解決 Linux Mint 19 中 Firefox 顯示點陣字體時出現短豎線的問題

免責聲明:以下僅供參考,本文作者不為使用者執行以下內容之後果負擔任何責任。
感謝 zhangboyang-id 提供 patch。

最近更新到 Linux Mint 19(Ubuntu 18.04 的衍生版本),發現到顯示點陣字形的時候,字之間會有|豎線,查了一下,中國那邊的論壇傳出了災情(火狐中國相關討論Ubuntu-cn 相關討論)。雖然有人在 Launchpad 提交了 bug 的 patch,但好像 Ubuntu 還沒有接受更新。唯一的 workaround 就是用 apt source 把原碼抓下來自己改,然後再重新編譯成 package 覆蓋系統的新版本。

在 Linux 將 PDF 彩色轉成黑白

(最近更新:2019-03-10,修正指令的錯誤)

免責聲明:以下僅供參考,本文作者不為使用者執行以下內容之後果負擔任何責任。

最近因為下載過著作權保護的愛爾蘭語相關著作古籍,這些書籍是黑白印刷的,但是因為紙張泛黃,和黑白相比,並太不適宜閱讀,轉成灰階對比度較低,更難閱讀。若是列印供紙本閱讀的話,當然希望能夠用黑白列印就好了。所以就有如標體所述,將這種彩色 PDF 轉成黑白的需求。

偵測 Linux 筆記型電腦電量 ê 程式

(上尾更新 tī:2019-11-11)

實在 tsih-tsài 袂牢電腦無通知直接斷電 ê 情形,tshiau 過 ê 足 tsē 資料 mā 無法度解決。

姑不而將,家己寫一个 shell script。

必要 ê 套件:

  • upower
  • zenity
  • sh

將 hit 个 shell script khǹg 好,chmod u+x system-autodetect-battery-and-hibernate.sh。

Koh 用 crontab -e 指令,加每 x 分鐘執行這个程式 ê routine。以「每 3 分鐘執行囥佇 /opt/ ê system-autodetect-battery-and-hibernate.sh」做例:

0-59/3 * * * * export DISPLAY=:0 && /opt/system-autodetect-battery-and-hibernate.sh

向望 tse 有效。

論本土語言小學的成立

(原著於2019-09上旬,內文部份經過修改。)

當前台灣語言使用,不分各個族群,有朝向使用官話(即華語或國語) 的趨勢,其他語言日漸式微。為保護台灣本土語言的存續,除現今基本教育推動語言教育外,也制定《國家語言發展法》,試圖保障其持續發展。

LLVM IR ê 考查

結構 struct

C:

#include <stdio.h>

/* 定義 struct */
struct a_struct{
int a; // i32
double b;
};

int main(void){
struct a_struct a;
return 0;
}

LLVM IR:


; ModuleID = 'a.c'
%struct.a_struct = type { i32, double } ; 生 struct

; Function Attrs: nounwind uwtable
define i32 @main() #0 {
%1 = alloca i32, align 4
%a = alloca %struct.a_struct, align 8
store i32 0, i32* %1, align 4
ret i32 0
}

改自王垠的 r2 直譯器——添加惰性求值和遞迴函數

(最近更新:2019-07-22)

王垠可說是中國程式語言界的網路名人。雖然有些人不喜歡他對事物的觀點或是看法,或是他展現出的價值觀,但是有些觀點卻還是很有趣的。比如他之前寫的怎樣寫一個解釋器,利用動態擴展的環境列表還有閉包的概念,將一個程式語言基本的功能簡潔的實踐出來(當然也要歸功於 Scheme 的語法)——閉包、調用變數、運算、儲存變數、環境的調整、函數調用等等,都很有趣。

遞迴下降分析器的簡介

以下內容僅為非資訊專業者所寫的心得,不保證內容正確性。
(最近更新:2019-07-22)

語法樹

就算沒有學過編譯器的人我想很多都知道,編譯器是把一種語言的程式翻譯成另一種語言者的工具。在轉成其他語言之前,需要將這個語言轉換成一棵樹狀結構 (抽象語法樹,abstract syntax tree),來分析被編譯的程式內容是什麼。大概就像我們在翻譯一門語言的內容前,可以先將它轉換成語法樹。

安裝 Racket-llvm

(上新更新佇:2019-09-26)

  • Clone git repo
    git clone git@github.com:bubba/racket-llvm.git
  • 包做 .zip:
    raco pkg create --binary racket-llvm
  • 安裝:
    raco pkg install racket-llvm.zip
  • raco pkg show
    看安裝 ê 結果,親像:
    Installation-wide:
    Package Checksum Source
    ....
    User-specific for installation "6.3":
    Package Checksum Source
    racket-llvm 52ebbb73... file /tmp/a/racket-llvm.zip