一樁因為版本升級引發的慘案

Minecraft升上1.9板已經有一段時間了,因為1.9版加入了戰鬥功能,玩家能在左手跟右手上放置不同的物品,也因此造成了一些悲劇。
故事是這樣子的,之前寫的Minecraft plugin fastbuild ,放置方塊時可以大量放置的功能

...

使用GAE python自幹Facebook Bot

話說最近各種Bot 的傳聞,又看到有人弄了一個建在Flask 上面的Facebook Bot , 強者我同學qcl 也弄了傳說中的libGirlfriendFramework,就想來弄一個回應產生器,以下是大概的開發流程:

...

在X86機器上debug ARM 執行檔

以後有可能會用到,寫這篇純粹做個記錄。

故事是這樣子的,最近閒來無事研究一下傳說中 jserv 大神的amacc,有些地方實在看不出程式執行至此時一些變數的值為何,這時我們就要用gdb 了
不過amacc 是用 arm-linux-gnueabihf-gcc 編出來的arm 執行檔,我們host gdb 是X86 在執行時就會報錯:可執行檔格式錯誤
如果用arm-linux-gnueabihf-gdb 呢:它會寫 Don’t know how to run.

...

Modern C

書名 Modern C
作者 Gustedt, Jens
出版商 Manning
出版日 2019-12-17
ISBN 9781617295812
...

退伍感言

原文寫於大兵日記最後一頁,寫作角度其實不全然是當兵,比較像是在部隊的退伍感言,本來應該是退伍當日要PO 的,不過你知道的……懶嘛日記要先打好再來打退伍感言

...

 May 1, 2016 |    LifeRecord  |    army  | 1045 字  |  YodaLee

淺談rust option type

強者我同學qcl 做了一系列的簽名檔,大體的概念就是用女友狂炸執行緒,以下是C++ version:

int main(int argc, char *argv[]) {
    QCL *qcl = new QCL();
    Girl *gf = qcl->findGirlfriend();
    printf("%s\n", gf→name());
    return 0;
}
qcl@QCLS:~$ g++ qcl.cc
qcl@QCLS:~$ ./a.out
Segmentation fault
...

 April 21, 2016 |    rust  |    rust  | 1258 字  |  YodaLee

Minecraft 可堆疊式物品儲存系統

Minecraft 因為遊戲時間一久,玩家通常會累積大量物品,另外如果利用生怪磚建造農場,或者之前出現過的巨大化農場 ,大量物品儲存系統算是相當重要。

...

使用 Rust 實作 regular expression tester

其實這個功能很早以前就已經完成了,將正規表示式對轉換成Non-Deterministic Automata(NFA) ,來 match 字串,
先前的實作有一些問題,因為再建 NFA的時候,狀態是使用整數來表示。

在轉換成NFA時,正規表示式的 Concatenate, Choose, Repeat 需要將兩個NFA 結合成一個,因為由 Empty 或 Literal 直接建NFA時, 編號一定是從 0 開始,兩個都包含狀態 0 的狀態機,直接結合起來絕對不會是對的,需要讓兩邊的狀態都不一樣才行。
當然也不可能用亂數來作為狀態,畢竟以亂數作為狀態,連一個NFA裡面有哪些狀態都不知道,結合時根本就無法檢查是否有衝突。

...

Rust 中實作型別運算子重載

最近在實作computation books第九章,用到很多Rust運算子重載的部分。
運算子重載嘛,可以對自己定義的struct 或是enum 使用運算子,這樣就能寫出 Vec3 + Vec3 這樣比較漂亮的寫法,不用 Vec3.add(Vec3),

...

Rust 遞迴結構 recursive structure

之前實作Computation book的範例程式碼,一直卡關的第2章原始碼解析的部分,最近突然有了大幅的進展 (因為在網路上找到一個別人寫好的相關原始碼),讓我突然頓悟rust 相關的設計,這裡解釋一些常用的技巧。

...