嗡嗡嗡~
2014-04-05
Clone 已有 Octopress blog

Octopress 的後端就是自己的電腦,有多台電腦時需要在其他電腦再建立 Octopress 的撰寫環境,並且拿 Github 上面的 repos 下來繼續寫。

2014-04-05
搬筆記到 Octopress

用想放空的假期把寫在 Dokuwiki 上的筆記搬到 Octopress 來。原本因為可以自己任意編排,加上寫給自己看的筆記是用 Dokuwiki,就繼續沿用 Dokuwiki。漸漸發現要找資料的時候都直接用搜尋功能,沒怎麼在用原本的分類頁。越來越覺得那樣編排可能沒有必要,似乎有搜尋跟標籤就可以了。

2014-04-05
Dokuwiki Tips

清除特定頁面 cache

在該頁面網址後面加上

2014-04-05
Eclipse Theme

Eclipse 編輯區預設背景是白色的,對於用慣 vim、console 這種底都黑黑的我來說實在是有點不舒服,理所當然的就要來找找 theme。

2014-04-05
Git + github in Linux

用 github 可以做到類似遠端備份的功能,類似 svn 的中央 server(但不一樣)。每個 client 在本地端都有完整的 git repository,在 local 就可以做 commit 等操作,而非一定要連到 github。

2014-04-05
C++ Interface inheritance and Implement inheritance

繼承分為 interface 繼承與 implement 繼承。interface 繼承僅繼承 interface,implementation 部分則由繼承者決定。implement 繼承則連同實作一同繼承。

2014-04-05
C++ 應避免在 constructor 及 destructor 中 call virtual function

應避免在 constructor 跟 destructor 中 call virtual function,否則容易造成跟預期不符的行為(誤以為可以 call 到 derived class 的 virtual function)。

2014-04-05
C++ const member function

不能修改 class non-static member data 也不能 call 其他非 const member function 的 member function。

2014-04-05
Read-Write Lock

Read-Write lock 分成用於 read 跟 write 兩種 lock。使用 read lock 表示只會對 resource 做 read-only 的 access,使用 write lock 表示會修改 resource。

2014-04-05
Linux Process Exit Status

Process Termination

Linux 中 process 結束時系統會回收該 process 使用的大部分 resource,僅留下結束資訊供它的 parent 取得。parent 回收 child process、取得這些資訊後,剩餘的 resource 才會被釋放。如果 parent 沒有回收結束的 child process,child 會變殭屍(zombie),即執行結束了但沒有把 resource 釋放乾淨,會佔用 PID 及一些記憶體空間放 exit status。

parent process 透過 call wait() 回收 child process 並取得 child process 的 exit status。

process 結束分成正常結束(terminate normally)跟不正常結束(terminate abnormally or crash)。

以系統的角度來看,process call exit() 或從 main() return 算 terminate normally。(實際上從 main() return 後就會 call exit() 系列 function。)process crash、被 signal 結束或其他狀況算 terminate abnormally。

以程式或 programmer 的角度來看,exit() 的參數為非 0 通常代表有些檢查沒有通過,程式無法繼續完成工作才會在中間 call exit()。這個狀況是「程式正常結束,但沒有完成該有的運作」,屬於程式執行邏輯上的錯誤,跟 crash 不同。

Process Exit Status

Linux 中以 exit status code 表示 process 結束時的狀態(它怎麼結束的)。

System

系統 exit status code 的範圍為 0 至 255。若程式設置超過 255 的 code,會以 mod 256 作為 exit code。

有些 code 已保留給系統使用、有固定意義。一般不建議 programmer 再對這些 code 定義其他意義。系統已保留的 exit code 為:0、1、2、126 ~ 165、255。

C/C++ program

在 C/C++ program 中 exit() 的參數值是在 process 正常結束下,讓 programmer 得知「程式階層上」的 exit status,跟系統所使用的 exit status code 相關但不相等

2014-04-05
PHPUnit

PHP 的 Unit Test Framework。

2014-04-05
Pthread Condition Variable

man page 對 condition variable 的說明:

2014-04-04
Pthread Mutex

mutex 用來保護多個 thread 共享(shared)的資料,避免 concurrent modification 造成問題。

2014-04-04
C++ Virtual Destructor

為有「多型」性質(即有 virtual function)的 base class 宣告 virtual destructor。

2014-04-04
C++ Type Casting

Old-style cast

C 風格的舊式轉型,在 C++ 裡不建議使用。