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

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

2017-03-07
Dynamic Linking Position-independent Code(PIC)

Dynamic linking 遇到的問題

Dynamic linking 想解決的一大問題是 memory 浪費。直覺想法是如果能讓不同 process 都會使用到的 library 在 memory 只有一份就能節省空間。對不同 process 來說 library 的內容必須是相同的才能共用。library 主要是 instruction 以及 data (executable file 都是這樣辣),data 不可能在 process 間共用,因為每個 process 都需要它自己的 data,不然會互相干擾(好像有古代系統是共用的…),因此能共用的主要是 instruction。

2017-03-05
Dynamic Linking Basic

Static Linking 的問題

static link 拆分了可執行檔,讓不同人或組織可以開發自己的 module,最後再 link 成執行檔。隨著系統變複雜,OS 裡有多個 process 在執行,當多個 process 以 static linking 連結相同的 library 時,例如擁有 printf() 的 standard library,memory 會有多份類似的 library 程式碼,造成浪費。

2017-03-05
Linux Desktop 1 Install Nvidia driver

裝 Linux 桌面系統來用用,為了避免以後可能重灌還要重找一次,記下些安裝過程。

2017-02-22
軟體擴充性

這個人又來胡言亂語了,不是什麼正經筆記

2017-02-21
Cargo project basic

Cargo basic

Cargo 是 Rust 的 build & package management system,通常會用 Cargo 管理 Rust project。安裝 Rust 會一起裝 Cargo。

2017-02-19
Explicit Runtime Linking

explicit runtime linking 讓程式可以在執行過程中控制 load 及 unload 模組。這種方式讓載入模組變得更靈活,可以在程式需要時才載入某個模組,載入什麼模組也可以依執行狀況決定。因為不需要在一開始載入所有模組,所以可以減少啟動時間跟記憶體用量。另外,因為可以在執行期才載入,也就能在不關閉程式的情況下新增、刪除及更新模組。

2017-02-05
解決執行 Servo 只有白畫面問題

build 好 servo 之後執行 ./mach run -d tests/html/about-mozilla.html 視窗只出現白白的畫面。這怎麼看都不正常啊……ˊ(´;ω;`)

2017-02-01
Unit test 小感想

前陣子的小感想,邊 implement 邊測試的時候可以直接把用來測試的 code 寫成 unit test,既然都要寫一點小程式去測試,何不直接寫成之後可以繼續自動化使用的 test?

2016-12-24
Design Pattern Overview

Design Pattern 提供某個情境下針對某問題的某種解決方法。這些解法通常是前人整理出來、經過驗證的。

2016-12-20
MVC (Model-View-Controller)

大名鼎鼎的 MVC(Model-View-Controller)是一種 compound pattern,要說是個架構也行,這篇主要用 design pattern 的角度去看 MVC。

2016-12-11
Proxy Pattern

讓某個物件有個替身,藉以控制外界對物件的接觸。就是個經紀人的概念。(欸)

2016-11-20
State Pattern

將狀態封裝成獨立的類別,並把動作 delegate 到目前的狀態,讓物件隨著內在的狀態改變而改變行為。

2016-11-14
Design Principle

好萊塢守則

低階 component 可以掛到高階 component 上,但是由高階 component 決定何時 call 低階 component,低階 component 不該 call 高階 component。

2016-11-01
C++ STL container interator

trace 聽說比較好讀的 LLVM libcxx。寫法是 template 所以 implementation 都在 header file 裡,這裡以 list 為例。