嗡嗡嗡~
2017-11-19
Prefix Scan

prefix scan 是計算一個數值 vector 所有的部份和,每個結果 element 是原始 vector 對應位置之前數值的和,包含自己的稱為 inclusive prefix scan,不包含稱為 exclusive prefix scan。例如 [3, 5, 4, 10, 8] 的 inclusive prefix scan 是 [3, 8, 12, 22, 30],exclusive 是 [0, 3, 8, 12, 22]

2017-10-30
The Clean Coder

Bob 大叔的書之一《The Clean Coder》,算是《Clean Code》的續集吧。

2017-09-23
Performance of Concurrency

用 concurrency 就是為了更快,為了比 sequential 程式快,不然搞得那麼複雜幹嘛呢。

2017-09-21
驗證 Concurrent Algorithm

設計 concurrent algorithm 後當然要確認正確性。在《Principles of Concurrent and Distributed Programming》中 Ben-Ari 定義了為驗證 concurrent algorithm 各種特性的抽象結構(concurrency abstraction),可分為以下四個部份:

2017-08-31
Concurrency and Parallelism

Concurrency vs Parallelism

concurrency 是如何拆分程式成多個獨立的工作,讓這些工作可以一起「正在進行(in progress)」但不一定要「同時執行」。「正在進行」是多個工作可以輪流到 CPU(或者 core)上執行,雖然不是同時執行但這些工作都是正在進行中的。而 parallelism 則是多個工作「同時執行」,也就是實際上必須要有多個 core 能同時執行工作。

2017-08-27
Reactor pattern

這篇 paper

2017-07-22
Reentrancy and Thread-safety

常常聽到看到 reentrancy 但老是跟 thread-safety 搞得不是太清楚。

2017-07-09
Design Models for Concurrent Algorithems

這篇是設計 concurrent algorithem 的理論概念,沒什麼例子。

2017-05-21
Linux Desktop 3 Software Mapping

來個 Windows 跟 Linux 日常(?)軟體對照表。

2017-04-15
Open Street Map API

記錄開放街圖 Open Street Map(OSM) API 的基本使用跟文件。

2017-04-14
Use Shared Library in Linux

執行檔如何尋找 shared library

ELF 將依賴的 shared library 存在 .dynamic section 的 DT_NEED 欄位。

2017-04-03
Shared Library Versioning

相容性問題

使用 library 其中一個目標是不需要重新 compile 就能方便的升級程式的部份功能或者修正 bug。理想上,升級 library 只需要用新的檔案取代舊的。但是事情沒那麼美好,舊程式不見得能正常使用新 library,新舊程式間會有相容性問題。

2017-03-18
Dynamic Linking Relocation

Load process 在 dynamic linking 的差別是 load 完執行檔後 OS 會先看 ELF 的 .interp section 知道要 load 哪個 dynamic linker,OS load dynamic linker 並將控制權先交給它,在 linux 下是 /lib/x86_64-linux-gnu/ld-2.19.so(很明顯也是個 shared library)。

2017-03-16
Linux Desktop 2 中文環境

用 Linux 桌面最麻煩的地方之一是中文介面。我已經放棄設語系為中文,畢竟 terminal 各種 message 顯示中文實在很奇怪,但還是需要輸入法跟能看一點的字型啊啊啊啊啊……

2017-03-11
工程師碎碎念 1

想不到標題只好亂寫。跟這篇有點相關,但講點別的。