2013年3月24日 星期日

移除Ubuntu的舊核心檔、調校

http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?post_id=266752#forumpost266752

網路上有些作法沒有完全移除相關檔,這個連結的作法比較保險

有空的話可以再做些調校

http://wiki.ubuntu-tw.org/index.php?title=Ubuntu_%E9%80%B2%E9%9A%8E%E5%84%AA%E5%8C%96%E5%92%8C%E8%AA%BF%E6%A0%A1

20141101更新:請參考 http://jmiiv.blogspot.tw/2013/02/ubuntu-boot.html , 使用 purge 指令;最後移除 /usr/src 下對應的原始碼,linux-headers-3.XXX帶頭的,該網頁這個部分敘述有誤。

2013年3月15日 星期五

perl中處理 big5及utf8的轉換

http://www.dotblogs.com.tw/gary/archive/2012/11/06/80541.aspx

這個網頁整理了一些程式碼,幫自己備忘一下

其實最主要的問題是,你要從什麼編碼轉到什麼編碼。經常我們不知道手上的資料編碼是什麼,如果瞎猜,其實就這幾種編碼(big5, utf8),最後一定會轉得成。怕的是自以為知道編碼是什麼,而沒有親手下去驗證,這樣經常會繞很大一圈…

2013年3月3日 星期日

一行破(perl one liner)將中文化為駱駝文(CamelCase)

perl  -MLingua::Han::PinYin -e 'print join "", map(ucfirst, Lingua::Han::PinYin->new()->han2pinyin("一行破(perl one liner)將中文化為駱駝文(CamelCase)")) ;'

執行結果︰YiXingPo(PERL ONE LINER)JiangZhongWenHuaWeiLuoTuoWen(CamelCase)

有感於很多環境對中文還是不太友善,還是暫時用英文混過去吧…

同場加映︰將url encode的字串decode

perl  -MURI::Escape -e 'print  uri_unescape(uri_unescape($ARGV[0]));' "%25E8%2580%2583%25E8%25A9%25A6%25E6%2587%2589%25E8%2580%2583%25E9%25A0%2588%25E7%259F%25A5"

執行結果︰(自己試試看吧)

2013年3月2日 星期六

emacs "org mode"與perl協同作業

寫了一些emacs的插件,感覺上lisp除錯實在滿陽春的,某些與 regular expression 相關的作業,還是交給 perl 來作比較快速。很幸運的在網上找到三個 module可以剖析org mode

Wubot

http://search.cpan.org/~vvu/App-Wubot-0.5.0/docs/Tasks.pod

這是一個很大的計劃,作者想要進行 "被動式的自動化" , 參 http://search.cpan.org/~vvu/App-Wubot-0.5.0/lib/App/Wubot.pm

剖析org檔是一個副產品,據作者說他也將改寫程式,直接利用下面要提到的 org parser

Org Parser


http://search.cpan.org/~sharyanto/Org-Parser-0.30/
http://search.cpan.org/~sharyanto/Org-Parser-0.30/lib/Org/Parser.pm

這個modle的完成度目前看來已經很高了,搭配上perl本身強大的資料結構,可以很輕易地完成對 emacs lisp 很不好完成的功能

舉個例子,可以針對具有某個 tag / property 的節點,對其子節點的property進行統計,以決定資源的配置

App OrgUtils


http://search.cpan.org/dist/App-OrgUtils/lib/App/ListOrgTodos.pm

上文的作者寫的一些demo

"偶格"模式 -- 用純文字格式化偶的生活(2)

* Adding New Tasks Quickly with Org Capture
capture模式就有點像便利貼一樣,可以暫存一些資料,日後再歸檔。
作者檢討他的工作流程,發覺還是簡化模版比較有效率。可用的脫逸字元列表在 http://orgmode.org/manual/Template-expansion.html#Template-expansion 。不過此處與 clocking 及讀信程式 gnus 關聯很深,請酙酌服用…
Capture-Refile-Archive 是一種工作流程,但是不是最理想的狀態。這應該是處理被打斷工作時,或要處理打斷進行中工作的一個手段。如果很進入狀態的時候,應該是直接在某個org 節點上工作,資料應該都集中在該節點輸入就可以了

* Refiling Tasks
capture 收集材料,其實就對應到 GTD 的collect。
由於之前作者在設定 org-agenda-files 時包含了一個目錄,其中有capture所使用的notes.org檔,因此他不需要特別打開這個檔,只要進入agenda view就可以看到收集的資料,並進行refile。
我在 emacs中視窗的分割、配置、切換、捲動 一文中,提到過 auto complete 的代用品 ido / icycles / anything ,作者在此使用的是 ido ,在emacs 24中已經內建。
在確定範圍的工作其實就不太需要這個動作。

* Custom agenda views
所謂的 block agenda 的建立,主要是利用 tags 來做為過濾條件。
在特定的project 上按下 "P" 可以進行 narrowing,將資訊限定在該project之下,要配合narrow-to-org-project函式,這裏作者沒有點出來。總之要整個套用他的設定,才能達到文中的效果。
而隨著作者採行 GTD 風格的時間管理,todo標籤的重要性由文中可見是愈來愈低了。

* Time Clocking
* Time reporting and tracking

* Tags
標籤的最大用處是用來作為過濾條件、作為 GTD 中的 context 。作者討論了互斥標籤、GTD、檔案層級標籤的關係,
不過我認為,規劃良好的樹狀結構,可以減少標籤的使用機會到最低程度。

* Handling Notes
* Handling Phone Calls

* GTD stuff
GTD中的"每週回顧"及停頓計劃的對策

* Archiving
* Publishing and Exporting
* Reminders

* Productivity Tools
這個內容太多了,下回再談

* Things I Don't Use (Anymore)
* Using Git for Automatic History, Backups, and Synchronization

系列文章:

"偶格"模式 -- 用純文字格式化偶的生活(1)

"偶格"模式 -- 用純文字格式化偶的生活(1)

原文出自 http://doc.norang.ca/org-mode.html#CustomAgendaViews ,作者是 Bernt Hansen

Org Mode - Organize Your Life In Plain Text!的隨興中譯,原文寫得很有層次,但屬進階文章

因為是隨興,所以不是逐字翻譯,也不保證其正確性,請小心服用


* How To Use This Document
* License
* Change History - What's new
這個部分小小的demo了一下literate programming的用法,不過要export後才看得到結果

* Getting Started
** Getting org-mode with Git

** Org-Mode Setup
安裝與設定步驟,但emacs 24開始使用elpa來管理package,這個部分乍看之下不是很必要;但 global-set-key 是必需要手動設定沒錯

** Organizing Your Life Into Org Files
這裏作者第一次提到task/project的字眼, 但是他本人的定義非常單純,在後文"Project Task States"中, 他說沒有子任務的任務就是任務(task),有子任務的任務就是計劃(project/logical grouping),這其實就是說,任務和計劃本質上是相同的,只是依複雜程度而給了不同的名字而已。他建議為大型計劃設立單獨的檔案,甚至用目錄來組織整個計劃。我其實有點擔心在org中建立的樹狀結構分佈到不同檔案或目錄時是否能保持?除了各主題命名的檔案外,固定存在的檔案有 todo.org 和 refile.org 兩個。

** Agenda Setup
作者取消了加入/移出 org-agenda-files 列表的快速鍵,我覺得很好。agenda 在 org mode 的角色是對關注中的、具有時程資料的檔案集合、資訊篩選的機制,這個集合肯定不是經常處理變動的狀態,因此手動決定這個集合很符合實務精神。 根據官方文件,列表中不以.org結尾的資料即被視為目錄,其下的所有 .org 都會被納入 agenda ,因此的確無使用 C-c [ 和 C-c ] 的必要

** Org File Structure
作者的分類,僅供參考

** Key bindings
僅供參考

* Tasks and States
計劃用 TODO/NEXT/DONE, 文件用 FIXME/FIXED
作者畫了一個 FSM 來描述 task 的狀態,這個畫圖工具後面還會交代。主要狀態就是 TODO/NEXT/DONE ,其它狀態都是輔助性質居多
project的定義,我覺得整理一下作者的說法,應該是"有subtask的task,且狀態為todo" 這樣比較週延;subtask應該全部繼承todo的狀態吧我覺得,不需要另行指定了。 只有subtask 但狀態不是 todo 的話,或許它只是一個用來進行grouping 的節點而已,末必是個project。
這裏也點出了 stuck project 的定義,就是沒有 subtask 的狀態是 next 的。反正不管任何時候,一定要生出個 next 狀態的 subtask 就是了。至於什麼時候去做,做的頻率又是什麼,我覺得也很重要。這裏沒交代就是了。

emacs autoload的工作機制

http://www.gnu.org/software/emacs/manual/html_node/elisp/Autoload.html

預設情況下我們會使用 load-library 來載入函式庫,但是當載入的檔案太多,速度會很慢

因此出現了隨需載入的機制 autoload ,只要告訴它函數的所在位置,即可隨需載入

主要形式有兩種;一種是直接呼叫autoload 告知函式所在位置,一種是在函式庫每個函式前加上特定格式的註解 ‘;;;###autoload’ ,然後呼叫 update-file-autoloads 為該檔產生 loaddefs.el ,此檔收集了###autoload 註解並轉換為對應的 autoload 函式呼叫。 update-directory-autoloads 更可以直接將目錄中所有的 ###autoload 註解收集起來。

emacs可見路徑中的loaddefs.el都會被讀取並執行。