2013年12月19日 星期四

使用httrack備份無名小站的心得

首先,無名的首頁上會有數個連結
  • 相簿
  • 網誌
  • 留言
  • 名片
  • 好友
  • 影音
這些連結都複製下來,放到web addresses(URL),如:
http://.........
http://.........

然後在下面的set options...按鍵按一下,在scan rules標籤的文字方塊中指定額外的參數,這個地方可以輸入httrack的命令列參數,例如:

+*/*abcde*/*
-%l "zh-tw"

第一個參數可指定只抓路徑名有abcde字串的連結,第二個參數指定抓取繁中網頁,這個用法可參考以下連結的說明:

http://forum.httrack.com/readmsg/1919/1916/index.html

http://www.httrack.com/html/fcguide.html

有位香港的網友有類似的使用心得,參見 http://blog.terewong.com/archives/11773

很殘念的是,相簿的部分,沒有很適當的備分,尤其是照片檔,我想很大的一個原因是動態網址的處理問題。有空的話可能要研究一下 crawler4j 或是 urlgrep 看要怎樣做更適當的處理。

2013年12月1日 星期日

預裝了win8的機器如何安裝ubuntu?

為將入手的筆電查了一下資料,發現以下連結有解決方案

EFI/GPT上的Windows – Linux双系统

另外系統的轉程可參考:

DIY-如何升級筆電SSD與轉移作業系統至SSD

2013年9月21日 星期六

Installing Emacs on Win7/8/10 for dummies

20200411更新:新版(26.X)安裝請參考 在 win10 上,平行於現有 emacs 環境,安裝 spacemacs , 在 win10 上,平行於現有 emacs 環境,安裝 spacemacs (2) 

1. 抓 emacs , 網址 http://ftp.gnu.org/gnu/emacs/windows/

2. 解壓到合適的目錄

3. 執行 bin/addpm.exe 以建立捷徑 (新版已非必要動作,參 https://www.gnu.org/software/emacs/manual/html_node/emacs/MS_002dWindows-Registry.html )

4. (多機器共用工作環境設定,若不需要可跳過。)若有安裝 dropbox ,並有已寫好的 .emacs 檔,則在 C:\Users\[username]\AppData\Roaming 目錄中建立指向該檔的link 。此指令必需在具有系統管理員權限的cmd視窗中執行,[username]請替換為使用者的id。例如:

cd C:\Users\[username]\AppData\Roaming
mklink .emacs C:\Users\[username]\Dropbox\emacs\.emacs

5. 複製特殊字型(等寬的在表格較好看),如monaco、文泉驛,到字型目錄 C:\Windows\Fonts

6. 參"win10 上安裝 emacs 25.3 新增套件的注意事項" ,下載此檔 : http://ftp.gnu.org/gnu/emacs/windows/emacs-25-x86_64-deps.zip  並解壓縮到安裝主程式的目錄如 C:\Program Files\emacs-24.3\bin 。執行條列 lib 的指令後可知取得的檔案仍然必需視情況重新命名,才能被正確執行;沒提到的 zlib1.dll 也必需複製!!。

7. 接下來可以利用elpa,指令為 M-x package-list-packages 。某些 package 寫得不太優雅,當舊版沒有移除就安裝新版會有很嚴重的問題,因此建議更新時先移除舊版。


2013年9月20日 星期五

win7中利用perl將srt字幕檔延遲任意秒數

perl -p -i.bak -e "$k=16;s/((\d\d):(\d\d):(\d\d))/@{[sprintf \"%02d\",int(($4+60*$3+3600*$2+$k) \/ 3600)]}:@{[sprintf \"%02d\",int((($4+60*$3+3600*$2+$k) % 3600 \/ 60) )]}:@{[sprintf \"%02d\",($4+60*$3+3600*$2+$k) % 60]}/g;" "srt.srt"

其中$k=16指定要延遲的秒數為16秒,srt.srt是所要修改的字幕檔。這個i.bak參數是因應win7的限制,詳見 http://stackoverflow.com/questions/2616865/why-do-i-have-to-specify-the-i-switch-with-a-backup-extension-when-using-active


2013年9月3日 星期二

firefox之遠端除錯方式

之前提過mozrepl,可參考

https://github.com/bard/mozrepl/wiki

https://github.com/bard/mozrepl/wiki/Tutorial

它與emacs間的合作,可參考

https://github.com/bard/mozrepl/wiki/Emacs-integration

有段影片顯示了實際上的作業方式

但要如何載入jquery到網頁中呢?請看

http://stackoverflow.com/questions/6716388/how-to-inject-the-code-into-the-page-using-mozrepl

p.s.: 相對而言,google chrome使用jss來代替mozrepl的角色

2013年8月30日 星期五

抗拒有害影響十步驟from路西法效應

摘自 http://athoughtofpsychology.blogspot.tw/2013/07/11.html

 "我"
1.「我犯錯了!」:當機立斷對自己與他人承認自己的錯誤。
2.「我會很警覺。」:保持用心、警覺及批判性思考。
3.「我會負責任。」:為自己的決定和行動負責,不盲目服從權威。
4.「我會堅持自己的獨特性。」:不要讓別人把你放到類別,例如種族、性別中,堅持自己的個體性。



"群體"
5.「我會尊敬公正的權威人士,反抗不義者。」:分辨真正擁有專業、智慧並值得尊重的權威。
6.「我希望被群體接受,但也珍視我的獨立性。」:判斷什麼時候可以服從群體,什麼時候應該拒絕。

"價值"
7.「我會對架構化資訊維持警覺心。」:架構化的訊息例如標語、口號傳遞著某種意識型態,使我們沒有意識到自己正在受影響。
8.「我會平衡我的時間觀。」:當過去與未來結合,將能抑制現在的暴行,從而削弱情境的力量。
9.「我不會為了安全感的幻覺而犧牲個人或公民自由。」:拒絕當局的操弄,要我們交出部分自由以保證毫髮無傷。
10.「我會反對不公正的系統。」:與有相似想法的人合作,將個人的抵抗能力結合起來,就可能造成改變。

2013年8月25日 星期日

以javascript開發app的好處,及可能的應用

多年以前就有人說過,瀏覽器有一天會成為作業系統,而程式不再是下載後安裝、執行這樣的流程。隨著google docs的出現和成熟,感覺上這一天也慢慢的到來。

用javascript的好處,以目前風行的unobtrusive javascript概念來說,就是把html/css/javascript三者分離,感覺上有點像所謂的model-view-controller(MVC)分離的設計理念,而這些元素是分散在不同檔案裏的,相當程度上就像開發一個執行檔的專案中各組成原始碼一樣,可以容許分工、版本管理。另一方面來說,瀏覽器本身就已經是一個動態的執行環境,讓網頁在除錯和改寫上有高度的彈性,不需要整個執行檔重新編譯,可以立即inject或modify程式碼,配合上瀏覽器本身的開發者工具,可以立即繼續測試,這實在是有效率到一整個恐怖的境界。當然這些執行期的修改要記得寫回主要的html檔,不然就白改了XD而再搭配上所謂的cobrowsing工具,專案成員可以同時進行功能驗證、測試,同時開發、修改程式的各個部分,這個模式想必會是下一代開發工具的典範。

而在瀏覽網頁時,在開發者工具中可以即時進行改寫或查詢(web query),不需要再對頁面的原始html碼進行parsing;我12年前剛使用ie的webbrowser元件就發現這個可能的用法,不過當時使用ie5感覺還是很不穩定,利用delphi去呼叫又多了一層不確定因素。今天能很簡單的利用javascript及各瀏覽器提供的REPL工具(Run-Evaluate-Print Loop)去做到當初費盡心機又不穩定的自動化,真是令人讚嘆。

未來在網頁上做標註並進行分享會更加的容易,而pdf的協作顯然也可以朝這個方向來進行。標註的意義就是jquery的中心哲學,選擇什麼元素,做什麼動作。所以只要在網頁載入完成後injcet jquery,下達jquery指令,就可以進行標註。真是空前的簡單

2013年8月21日 星期三

以網頁模擬iOS app的方式

HOWTO: Native iPhone/iPad apps in JavaScript

js近來的進展神速,大家都是有目共睹的。此文提出以網頁模擬iOS app的方式,不但在開發流程上加快許多,真有必要時仍可包裝成app上架到app store去賣。 (但就如作者所言,why bother?)

2013年8月18日 星期日

希臘羅馬神話

圖書館中常見的兩本是譯自Edith Hamilton-Mythology及Gustav Schwab-Ssagen des Klassischen Altertums。

根據美國的雅虎知識家,建議的參考書版本有四,上面是其中兩個。顯然前者是大學常用的參考書,後者比較傾向口語化,而且較為詳盡。我個人比較喜歡後者,但是字體有點太小了…

2013年8月17日 星期六

ubuntu / win7 雙啟動系統,重灌 win7後如何在啟動選項加入ubuntu

這要參考一下這篇 http://www.jb4.net/archives/67.html

可以借鏡的地方是,使用以下指令備份mbr,注意~/backup這目錄要先建
sudo dd if=/dev/sda of=~/backup/mbr.img bs=512 count=1

win7我的作法有點不一樣,是使用 winusb 製作了安裝碟來重灌,因為我有兩台要灌

灌完用easybcd建個開機選項,還原 nst_linux.mbr ,這才有辦法再進 ubuntu

如果要還原到可以用 grub 開機,要執行以下指令

sudo dd if=~/backup/mbr.img of=/dev/sda bs=446 count=1

2013年8月16日 星期五

美國神學家尼布爾(Reinhold Niebuhr)

他有一篇有名的祈禱文

“God grant me the serenity to accept the things I cannot change, Courage to change the things I can change, And wisdom to know the difference.”

“上帝賜予我平靜去接受我不能改變,勇氣去改變我能改變的事情,和智慧來分辨兩者的不同。”

維基中說明他的罪觀,我覺得可以澄清許多人長久以來的疑慮。

對"信望愛"的詮釋也很值得玩味:

"由於值得做的事不可能在有生之年達成,我們必須懷抱「希望」;由於真、善、美在歷史情境當下未必能產生意義,我們必須擁抱「信仰」;由於我們所從事的高尚事業不可能獨立完成,我們必須擁抱「愛心」。"

2013年8月15日 星期四

cobrowsing : 如何遙控 firefox 及 google chrome 瀏覽器

ff有一個很有名的 greasemonkey 擴充元件 ,功能是對載入的網頁進行一些前置/後續的處理。這個操作是在本機上針對個別頁面的,那麼擴大來說,有沒有可能在遠端去遙控一個瀏覽器/頁面呢?或是根本上複製一個頁面的內容和動作,就有點像多人同時瀏覽並操作一個網頁呢(aka cobrowsing)?之前用過 citrix 或 webex 的解決方案,感覺上都是複製了整個畫面,因此傳輸量非常大,動作非常不連貫。如果不是利用ff本身作為server的話(最好不要,安全性考量),那麼可能就要寫一個類似 web server 的東西,它在很大的成分上只是複製一個網頁給其它人 ,所以不需要很fancy,簡單的用perl寫一個,或利用最近很紅的 node.js 或許就可以。

ff有一個 remote control 擴充套件,基本上就是一個陽春的遙控,它把 mozrepl 的某些功能寫死了,並且可能預建了某件指令。

目前市面上有許多商業化的產品,如 KANA , 不過看來並不是主力產品;livelook 號稱2008年就開發了此項技術; 2012年10月start-up的小公司 firefly ,知名度較高;奇妙的是,2012年有人申請了專利,與以上各方都無關XD。 開源的專案有針對chrome的 cobrowse 在2013年4月發表,據作者所言不會再更新; 針對ff的 cobrowse 竟然 2006年就發表了,但是至今沒有再更新 ;也是針對ff 的 Channel.me 於2011年發佈 。由於ff的市佔本來就不高,因此針對ff的開源專案目前看來使用者都滿少的。顯然這個東西必西要做到跨平台的程度才有競爭力。

根據 Enabling Co-browsing Service across Different Browsers and Devices 文中的描述,由於安全性及各瀏覽器故意設下的障礙,要跨所有品牌的瀏覽器作業,目前仍不可行。退一步在同品牌下的瀏覽器,或使用特定的元件,則比較有可能取得一致的使用體驗。 socialcobs 就是這樣的一個ff元件,它除了提供cobrowsing的功能,還能對網頁作評價、標註、討論等等。

2013年8月14日 星期三

各瀏覽器之遠端除錯方式

各個主流瀏覽器現今都內建了功能相當先進的除錯器,有時令人不禁懷疑visual studio等龐然大物存在的必要性XD 。以下簡介一下它們經由socket進行行程外除錯的方式,其重要性在於提供與其它Editor(eg. Emacs)協同工作的管道。

Google Chrome / Chromium


emacs常用的工具稱作kitejsSlime是另一種選擇。其通訊協定使用json格式的訊息。ubuntu中以額外參數啟動:

chromium-browser --remote-debugging-port=9222

Chrome本身提供了chrome.* APIs ,按下Ctrl Shift J可帶出內建的 console把玩一下;不過處理tabs的api 可能因為安全性等等的考量而末開放,比較專業的做法是寫個extension並獲取權限;直接在瀏覽器中打開 http://localhost:9222 看看,一開始它就呈現了所有tab作為進入點

Mozilla Firefox


除了使用mozrepl,jsSlime似乎有滿陽春的支援XD

mozrepl使用的其實是xul所呈現的物件模型,按下Ctrl Shift K在ff本身的debugger先把玩一下gBrowser可以對遠端除錯的工作有更好的了解,一些常見的用法可參考以下連結

firefox火狐浏览器扩展开发代码片段收集

2013年8月8日 星期四

取得Google Drive圖片外連網址(適用Google文件)

http://www.jinnsblog.com/2013/02/how-to-get-google-drive-image-hotlink.html

簡單來說,在"共享"所取得的連結是不能拿來放在google文件/試算表中的,必需要以上文中的方式修改連結才可。否則所得到的連結不久後就會失效…

https://support.google.com/drive/answer/87037?hl=en

特別描述了在google試算表中插入圖片的步驟

2013年7月8日 星期一

ubuntu上開源文件檢視器evince的make手記(2)

不到半年的時間,官網上的建置方式又有所微調了,多了一步

sudo apt-get install yelp-tools gperf ragel dbus-1 cmake libcroco3-dev

其中dbus-1這個模組在ubuntu上沒有,所以我先跳過;接下來 jhbuildrc-evince 這個檔案也有變動,要重抓


wget http://people.gnome.org/~gpoo/build/evince/jhbuildrc-evince

如果你之前抓過,這次抓下來的檔案會被命名成 jhbuildrc-evince.0 ,用 rm 指令還它真面目,然後依慣例下建置命令

jhbuild -f jhbuildrc-evince

2013年7月4日 星期四

tetris battle之T轉研究(二)

分解一下開場流程,參考 http://apa0318.net63.net/ST_stacking-Opening.html

三種排法的共同點是 IOZ都在最底
開場一開場二開場三
1. 用在 TLSJ 先出的狀況
2. S(優先放→開場2)J出現的話都先hold住
3. T不要放在先疊S之後
開場1有時候SJO會在疊完T之後 L一直不出
就該轉為這種開場法
用在 SJTL 先出的狀況
(不可能hold住TL→先開場1)

配合關掉炸彈,我目前可以很穩定的消40~60行,但有瓶頸…

下回要研究一下留四,參 http://forum.gamer.com.tw/C.php?page=1&bsn=19950&snA=705

2013年6月30日 星期日

emacs如何redo

C-g C-_

不太好記的按鍵組合…

參 http://stackoverflow.com/questions/3527142/how-do-you-redo-changes-after-undo-with-emacs

2013年6月11日 星期二

emacs如何刪除所有空白行

M-x flush-lines RET ^$ RET

參考以下連結的說明 

http://www.masteringemacs.org/articles/2011/03/16/removing-blank-lines-buffer/

2013年6月6日 星期四

org mode中以gnuplot為表格製圖

先看個範例

安裝步驟參 http://orgmode.org/worg/org-tutorials/org-plot.html

1. 安裝gnuplot。不過在ubuntu安裝gnuplot要下

sudo apt-get install gnuplot-x11
(參 http://askubuntu.com/questions/217867/just-installed-ubuntu-12-10-and-gnuplot-wxt-terminal-doesnt-work)

安裝完記得確認是否正確安裝,參考 http://user.frdm.info/ckhung/b/ma/gnuplot.php 測試一下

2. emacs中用elpa裝 gnuplot-mode 。參 https://github.com/bruceravel/gnuplot-mode

3. 可以處理的表格目前只能以列來表示一組資料,轉置指令為 org-table-transpose-table-at-point

4. 有missing data時記得用 ? 填入,否則畫出來的圖會有問題

2013年5月16日 星期四

perl使用regular expression來match中文數字的寫法

中文的一,從emacs上按C-u C-x =可查得以下資料

file code: #xE4 #xB8 #x80 (encoded by coding system utf-8-dos)

character: 一 (displayed as 一) (codepoint 19968, #o47000, #x4e00)

以下假設資料檔abc為utf8格式儲存。最基本的寫法是

perl -ne 'print if m/^一、/'  abc

使用utf8碼亦可

perl -ne 'print if m/^\xe4\xb8\x80、/'  abc

以下寫法則錯誤,因為[]這個寫法會取第一個byte,所以會match到其它字

perl -ne 'print if m/^[一]、/'  abc

由於中文字的大寫數字當初制定unicode時沒有連號,事實上也不能用[0-9]這種寫法…

以下是目前看來可以work的寫法

perl -ne 'print if m/^(一|二|三|四|五|六|七|八|九|十)+、/'  abc

要match任意中文字,必需要使用 '-Mopen qw/:std :utf8/' 選項,它最大的功用在於將所讀入的utf8編碼字串自動轉為unicode,不需要手動呼叫decode('utf8',$string),例如

perl '-Mopen qw/:std :utf8/' -ne 'print if /\p{Han}/'  abc
perl '-Mopen qw/:std :utf8/' -ne 'print if /[\x{4e00}-\x{9fcc}]/' abc

這兩種寫法的效果是一樣的,而//當中放中文字時顯然固定會被當作utf8去match,因此以下寫法錯誤

perl -ne 'print if m/^一、/'  abc

perl '-Mopen qw/:std :utf8/' '-MEncode' -ne '$test=decode("utf8","一");print if m/$test/'  abc

理想上我也希望能混用中文及萬用字元於常規表示法,不過目前看來是無解了…


2013年5月14日 星期二

嘸蝦米的日文輸入

https://sites.google.com/site/freelearnwang/jp/jp-in-met-1/wuxiami-riwenshurufa

這其中長音  比較特別,是 ee, 或 ee.

2013年5月9日 星期四

Emacs中特殊字元的顯示及輸入

http://ergoemacs.org/emacs/keystroke_rep.html

像是由word的doc檔轉來的,裏面會出現很多^K,這是當使用者使用了自動編號功能,在換行時按了C-enter所致。還有word中換行是\r\n,在emacs中只使用\n,因此多出來的\r會以^M這樣的形式出現在每一行末;有時Emacs左下角若為U(DOS)模式時可認出文件由windows所生成,自然會轉換為正確的顯示方式,但有時認不出來,或換行符號有多種組合存在同一文件中,那麼也會認不出來。

至於這些特殊字元的輸入,則以像C-q C-J這樣的按鍵組合來輸入\n(即^J)這個0xA字元於buffer當中

2013年5月6日 星期一

perl one liner開utf8檔的寫法

一開始是因為要試regular expression在match 單一中文字時,竟然無法成功。眼看 http://stackoverflow.com/questions/12312310/how-to-match-chinese-characters-in-perl?lq=1 上寫得斬釘截鐵,我開始懷疑起自己來了…

結果寫了個.pl檔試試,一開始也失敗,但是開始發現,問題似乎是因為沒有以utf8格式開檔,後來找到 http://zenoga.tumblr.com/post/40094864918/unicode-aware-perl-one-liners 才解決了這個問題。看起來沒什麼,不過可花了我半個早上啊…

以下這行就是結果,可以拿來斷中文句子

perl '-Mopen qw/:std :utf8/' -ne 'while(m/(\p{Han}+)/g){print "$1\n";}'   test.simp.utf8

據說詞頻的統計要用到 pat-tree / suffix tree / trie,估狗了一下覺得只有 http://search.cpan.org/~avif/Tree-Trie-1.9/Trie.pm 適合中文詞頻統計之用。有個現成的斷詞模組叫mmseg, 用法如下

perl '-Mopen qw/:utf8/' '-MLingua::ZH::MMSEG' -Mutf8 -ne 'print join "\n", mmseg'  jian.txt

下一步就是要把結果丟給AI::Categorizer或AI::Classifier來看看結果如何…

20170208更新:
windows 平台上指令請改為
perl "-Mopen qw/:utf8/" -MLingua::ZH::MMSEG -Mutf8 -ne "print join \"\n\", mmseg"  XXX

ubuntu上以規則式(stanford-segmenter)及統計式方法進行斷詞

規則式(stanford-segmenter)

先到 http://nlp.stanford.edu/software/segmenter.shtml 抓個新版的 ,目前是stanford-segmenter-2013-04-04

解壓後進入 stanford-segmenter-2013-04-04 目錄,執行個範例程式

./segment.sh ctb test.simp.utf8 UTF-8 0

若是要對正體中文文檔斷字,需用類似iconv的程式作轉換,例如以utf-8格式儲存的繁體文檔fan.txt要斷字的話,執行以下指令:

 iconv -c -f utf-8 -t big5 fan.txt | iconv -c -f big5 -t gb2312 | iconv -f gb2312 -t utf8

試用結果感覺,對於科學詞彙較多的文檔,似乎斷得有點不好,而且有類似的句子斷出來的結果卻明顯不同的情況。

統計式


http://ckipsvr.iis.sinica.edu.tw/ 中有對中文的類統計方式斷詞步驟的說明,可分為:

  1. 初步斷詞
  2. 未知詞偵測
  3. 中國人名擷取
  4. 歐美譯名擷取
  5. 複合詞擷取
  6. bottom-up merging algorithm
  7. 重新斷詞
我覺得可以歸納這些步驟為一個迭代的迴圈,斷詞後把結果依詞庫分為已知和未知,已知的部分當然就不需要處理,但是需要微調,該小組是分為中外人名及複合詞;未知的部分則嘗試依前後順序結合為新詞(是否就是pat-tree呢? 參 http://newweb.management.ntu.edu.tw/chinese/im/theses/r93/R91725013.pdf‎ )

改寫的步驟為:

while (未知詞比重<閥值 && 迭代次數<閥值) {
    標示已知詞(可能有多個解)
    產生候選詞,加入詞庫,調整權重
}




2013年5月5日 星期日

emacs中undo後再redo

http://stackoverflow.com/questions/3527142/how-do-you-redo-changes-after-undo-with-emacs

在windows系統中,undo/redo通常是C-z/C-y,但在emacs中,裝了CUA只還給你undo,redo還是要記下這個按鍵組合:C-g C-u ,還滿拗口(手?)的,原文是 undo the undo

可以用elpa來裝undo-tree來試試另一種操作法,用undo-tree-visulize可以看到編輯的歷史

2013年5月4日 星期六

emacs遇到desktop file appears to be in use by PID XXX的解決方式

http://stackoverflow.com/questions/14005526/emacs-startup-warning

上面說的是治標的方式

回過頭來說,會遇這個問題表示你使用了類似 http://www.emacswiki.org/DeskTop 中所說的設定

在此同時,一般人不會去設定 desktop-path 變數。但是按一下 C-h v desktop-path 好好檢查吧…

如果它出現了不想要的路徑,或是經常發生當掉的情況,最好根據 http://www.emacswiki.org/DeskTop 中 Minimal Setup 所展示的設定 desktop-path 及相關變數

而有多個桌面或機器共同設定的情況,這個 desktop-path 當然是不能共用的,不然互相lock會很麻煩的

2013年5月3日 星期五

Ubuntu 13.04上主要prolog compiler

  1. swi-prolog - ISO/Edinburgh-style Prolog interpreter
  2. yap - High-performance Prolog System
  3. gprolog - GNU Prolog compiler
按照風行度似乎是這樣排的

perl中相當於sql的衍生欄位用法

http://www.perlhowto.com/sort_ordering_by_multiple_columns

有時查詢需要利用衍生欄位進行排序,使用map這個指令的確非常好用

不過這是很有名的黑魔法,請見 http://docstore.mik.ua/orelly/perl/cookbook/ch04_16.htm

還有個很有迫力的稱號,叫做"史瓦茲變換"…(害我想到柯西不等式TT)

2013年5月2日 星期四

Siri技術解析(II)

http://wesnerm.blogs.com/net_undocumented/2011/10/siri-technology.html

此文指出了幾篇參考文獻,感覺滿可信的。據他所言,後台所用的語法解析模型比較是基於統計而非精確文法。顯然由google translate之類的現存技術,的確是這樣沒錯。

http://search.cpan.org/~dougw/AI-Prolog-0.741/lib/AI/Prolog.pm

以perl來實作的prolog

http://search.cpan.org/~salva/Language-Prolog-Yaswi-0.21/Yaswi.pm

perl當作介面來呼叫swi prolog,真想看看能產生什麼樣的火花

2013年4月29日 星期一

Wavii介紹


[舊聞]Facebook 版的 Google 新聞?新一代個人新聞頻道「Wavii」beta 版公開測試



自然語言處理仍然是internet新創事業的熱點之一,這個Wavii講白了,就是利用你的fb的歷史記錄,找出你對新聞內容的偏好,給你個人化的新聞。它也是和Summly一樣有摘要的功能沒錯,但是我想它的精確度也不是賣點。這幾天它也和Summly一樣用3000萬美元賣掉了,買主是google。或許不久以後就可以看到它出現在google+裏面?


张庆祥医生 - 关于生活,财富,成功及幸福的几点思考 (中文字幕)

http://www.youtube.com/watch?v=umLkfADe17s

A very meaningful speech by Late Dr Richard Teo, R.I.P.

张庆祥医生 - 关于生活,财富,成功及幸福的几点思考 (中文字幕)

http://www.heavenaddress.com/Dr-Richard-Teo-Keng-Siang/424153/379719/content

演說的原文,在治療兩年後,張醫師也已經於2012年十月辭世。不過我相信他的自省不會太晚,肯定有幫助到他自己以及許多曾經迷失的羔羊。像這樣的見證,必能在互聯網上繼續發光發熱,影響無數的人們。

p.s.像 http://www.heavenaddress.com/ 這樣的網站真的滿有意義的,可以讓我們有機會看到一些人在面對生命終點時的肺腑之言。

2013年4月28日 星期日

Ubuntu升級13.04結果叫不出輸入法,索性安裝fcitx輸入法

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

參考上述連結,步驟歸納如下:

  1. 在軟體中心或更新管理員中加入: deb http://ppa.launchpad.net/fcitx-team/nightly/ubuntu ringtail [註:最後的 ringtail 是依版本而定,如果是12.10就改為 quantal main]
  2. 到軟體中心安裝fcitx,安裝完先不要關
  3. 按"更多資訊"按鈕,頁面下方勾 im-config 並套用
  4. 若系統設定中的"語言支援"消失了,到軟體中心安裝"語言支援",提示移除 im-switch 時按確定
  5. 下載boshiamy table(嘸蝦米字碼表);打開軟體中心後,點-系統-項目(非常重要),搜索tablefcitx關鍵字,你會看見一堆fcitx的字碼表(如:canjie倉頡、zhengma鄭碼、boshiamy嘸蝦米、等等)就下載來用吧!
  6. 更新完,預設啟動為 Ctrl+Space
    開啟輸入法後,在輸入法視窗上按滑鼠右鍵,即可見設定選單。
原連結中還有些設定的部分可以參考。這個安裝方式的嘸蝦米,候選字的順序比較合一般人的胃口,與WINDOWS上的是一致的。

2014/2/15更新:

  1. 命令列安裝方式請參考 http://cwwang2.blogspot.tw/2013/10/ubuntu-linux-1304-fcitx.html
  2. 安裝英文版ubuntu 13.10,繁體中文環境支援(language support)的lc_ctype是香港的(!!),若需在gtk的程式輸入中文,必需將對應的環境變數設定為:
export LC_CTYPE=zh_HK.utf-8

2014/3/1更新:

完整的設定請參考 http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?post_id=246872
撰寫者對整個設定說明得非常清楚。另外gnome中(如emacs)無法輸入中文時,環境變數設定locale,參考
http://www.davidpai.tw/ubuntu/2011/ubuntu-set-locale/

2013年4月25日 星期四

org-mode升級到8.0以上,一些行為的改變及對策

  1. org-store-link 會存檔名/文字而非以前的 id。解決之道是去改 org-id-link-to-org-use-id 的設定
  2. org-format-latex-options 可以調整預覽latex的屬性,如縮放比例
  3. ...

2013年4月24日 星期三

org mode匯出中文pdf的問題解決方式

更新:最新的 emacs 24.4 及預設的 org 基本上只需要指定 xeCJK 的部分即可。
  1. 確定org mode版本,M-x org-version看一下,本文解法要8.0以上。若要更新版本,請往前翻兩、三篇文看一下程序,不要用elpa,更新不了的,最好用git
  2. 利用apt-get安裝texlive-xetex及texlive-lang-cjk
  3. 指定 xeCJK:
    文件開頭加上這幾行;副作用是,在preview latex時會有問題,記得關掉設定,重開檔案
    # -*- coding: utf-8; -*-
    # Latex设置
    #+LaTeX_HEADER: \usepackage{xeCJK} 
    #+LATEX_HEADER: \setCJKmainfont{WenQuanYi Zen Hei}
    #+LATEX_HEADER: \setCJKsansfont{WenQuanYi Zen Hei}
    #+LATEX_HEADER: \setCJKmonofont{WenQuanYi Zen Hei}
  4. 設定Org Export Pdf這個group,Value Menu選3 runs of xelatex並Save
  5. 設定檔中加入這幾行,當然要org載入以後;方法請往前兩篇
    (add-hook 'org-mode-hook
              (lambda ()
                (setq org-latex-default-packages-alist
                      (delete '("AUTO" "inputenc" t) org-latex-default-packages-alist))
                ))
    (setq-default TeX-master nil)
  6. 參考連結︰http://johnnyzls.blogspot.tw/2013/01/org-modebeamer-cjk.html
    但 org-export-latex-default-packages-alist 在 org mode v8 己改名為 org-latex-default-packages-alist
  7. org-latex-image-default-width 這個customization option改為空字串,否則每個圖都變成與頁面同寬,令人髮指…org-latex-image-default-option 視情況改scale=2到4之間

2013年4月23日 星期二

使用perl one liner進行檔案搜尋取代的流程(SOP)

1. 第一步是找出要取代的標的,利用 perl -ne 'print if m/pattern/' filename 確認
2. 要做什麼樣的改寫?利用 perl -ne 'print if s/pattern/pattern2/' filename 確認
3. 試試看結果.利用 perl -pe 's/pattern/pattern2/' filename 確認
4. 加入i參數以進行更動. perl -pi -e 's/pattern/pattern2/' filename

ps.取代部要使用函數呼叫的話,參考 http://www.perlmonks.org/?node_id=638259 ,簡言之就是使用/e選項或 @{[...]}結構

例如,將srt字幕檔延遲5秒


perl -p -i.bak -e "s/((\d\d):(\d\d):(\d\d))/@{[sprintf('%02d',int(($4+60*$3+3600*$2+5) \/ 3600))]}:@{[sprintf('%02d',int((($4+60*$3+3600*$2+5) % 3600 \/ 60) ))]}:@{[sprintf \"%02d\",($4+60*$3+3600*$2+5) % 60]}/g;" srt.srt

2013年4月22日 星期一

org mode中內嵌圖片在buffer顯示時的大小設定 (& org mode的更新問題)

參考 http://comments.gmane.org/gmane.emacs.orgmode/59504

You can now (from git master) use `org-image-actual-width'.

(setq org-image-actual-width 300)
  => always resize inline images to 300 pixels

(setq org-image-actual-width '(400))
  => if there is a #+ATTR.*: width="200", resize to 200,
     otherwise resize to 400

(setq org-image-actual-width nil)
  => if there is a #+ATTR.*: width="200", resize to 200,
     otherwise don't resize

(setq org-image-actual-width t)
  => Never resize and use original width (the default)

亦可參考 http://orgmode.org/worg/doc.html#org-image-actual-width

根據文件所言,要更新org到版本8以上。

org mode的更新問題

現在雖有elpa很方便,但是更新前後還是記得抄一下org-version的版本號再次確定。
如果在.emacs之類的設定中有第三方元件寫得不好,可能會在org被elpa載入前呼叫到舊版的org,而直接載入;解決之道,請把這個載入函式放到安全的地方,例如:


(eval-after-load "org"
  '(progn
                  (load-library....................

另外,如果曾經byte-compile過這些 *.el 的話,更改過任何部分都一定要再byte-compile過,雖然程式啟動時會抱怨檔案的日期不對,但程式不會自動幫你compile,而且直接載入舊的版本。很多時候debug不出原因時,要想想這個目題是不是有可能存在…

org mode在export時的問題

如果玩到這一步時,請乖乖的使用git (http://orgmode.org/manual/Installation.html) 來安裝,並移除舊版或改掉它的目錄名讓它無法被載入。詳情似乎是elpa在emacs上設計的問題,contributors吵到都快發火了(^^)

更新時下達指令為
git remote update
參 http://stackoverflow.com/questions/6150188/how-to-update-a-git-clone-mirror

2013年4月19日 星期五

將word檔轉換為其它格式

http://de.wikipedia.org/wiki/Wikipedia:Textverarbeitung/Word2Wiki

這個vba程式直接把doc檔轉到wiki,並且儘可能的轉換其中非文字的資料,非常有參考價值

http://www.windowsdevcenter.com/pub/a/windows/2005/03/22/word_macros.html

如要由perl/python呼叫vba,參考上面這個連結的寫法

p.s.1.轉換後在emacs當中如果出現了很多行末的^M符號,表示你寫的print不太好,儘量指定vbLF如:

print #FILE, "abcdef" & vbLF;

而不要寫成 print #FILE, "abcdef"

預設的情況它會幫你加上vbCRLF,造成困擾,參考以下連結

http://stackoverflow.com/questions/9444887/avoid-extra-carriage-return-in-print-statement-with-visual-basic

http://ergoemacs.org/emacs/emacs_line_ending_char.html

p.s.2.轉出來的圖檔如果黑黑一片,表示沒有設背景,因為doc檔預設背景是白色,所以要做些預處理

p.s.3.轉出來的檔是bmp格式,如果要批次轉為其它格式,如png,請參考以下連結,抓setup回來,在預設安裝目錄 C:\Program Files\GnuWin32\bin 中的bmp2png.exe就很好用,以bmp2png *.bmp這樣執行,非常方便

http://gnuwin32.sourceforge.net/packages/pngutils.htm

p.s.4.轉圖形的部分另可參考 http://blog.163.com/caoyujiao@yeah/blog/static/137465247201303075527195/

列出一些inlineshape的type常數

? wdInlineShapeEmbeddedOLEObject
 1 ,方程式之類的
? wdInlineShapeHorizontalLine
 6
? wdInlineShapeLinkedOLEObject
 2
? wdInlineShapeLinkedPicture
 4
? wdInlineShapeLinkedPictureHorizontalLine
 8 這好像也是圖形
? wdInlineShapeOLEControlObject
 5
? wdInlineShapeOWSAnchor
 11
? wdInlineShapePicture
 3 常見於圖形
? wdInlineShapePictureBullet
 9
? wdInlineShapePictureHorizontalLine
 7 這好像也是圖形
? wdInlineShapeScriptAnchor
 10

2013年4月18日 星期四

emacs當掉後的檔案復原

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

再啟動程式後,鍵入

M-x recover-session

依據時間選譯對應的 .saves-* 檔,請特別注意,之後不是按enter錄,是打 C-c C-c

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都會被讀取並執行。

2013年2月28日 星期四

[轉]10个你可能不知道的ubuntu快捷键



1.前一个后一个工作区的切换
如果你经常使用工作区,那你就可以用Ctrl + Alt +上/下方向键很容易地进行切换。左箭头切换到上一个工作区,右箭头切换到下一个工作区。如果你安装了Compiz,可以用Super + E快捷键显示所有的工作区
2,把当前窗口移到另一个工作区

快捷键Shift+ Ctrl + Alt +左/右方向键让你很容易把当前窗口移到指定的工作区。这个快捷键和上面的快捷键很好配合。如果你工作时常常打开很多窗口,但又不想看到桌面和任务栏挤满程序,你可以用这个快捷键把程序移到另一个工作区,这样你的桌面就整洁多了
3,显示桌面

Ctrl + Alt + D快捷键让你很快地最小化所有窗口,看到桌面。当所有窗口都最小化后,你再按这个快捷键就可以恢复窗口原来的状态
4.鼠标右击的键盘快捷键

在大多数程序里,你可以右击显示快捷菜单。其实键盘上 Shift + F10也能达到一样的效果
5,重启会话以从崩溃中恢复

ubuntu很少会完全崩溃。但如果它真的崩溃了,你可以按下Ctrl + Alt + Backspace来重启会话,恢复的可能达90%
6.快速锁定屏幕

如果你需要离开电脑一会儿,可以按下Ctrl + Alt + L很快地锁定屏幕,以防有人使用

7.反向切换窗口

Alt + Tab是切换窗口的快捷键。如果你再按下SHIft,你就可以反向切换窗口。这个快捷键很有用,当你Alt + Tab按得太快,错过了你想要切换的窗口,按一下shift就可以返回之前的窗口了
8,用方向键移动窗口

Alt+F7会激活移动窗口功能,用方向键(上,下,左,右)就可以移到窗口了。
9. 显示隐藏的文件

大多数情况下,你不需要在你的“家“目录中看到那些隐藏文件,但如果你有这个需要,你可以在Nautilus(ubuntu的文件管理器)下按Ctrl + H来显示隐藏文件
10.不用右击鼠标就能显示文件属性

想要查看文件/文件夹的一般做法是右击选择属性。现在你可以按下 Alt + Enter就能显示属性窗口了
当然,这些只是冰山一角。如果你想要知道更多快捷键,不只是ubuntu还包括Gmail, Google Search, Firefox以及其他软件,请访问Cheat Sheets页面。那里有9个pdf文档让你下载。


使用 Emacs 進行 Perl 開發

在 cperl mode中,如果能做到 code navigation的話,或至少能直接打開 module 的原始碼的話,會是很好的。

http://www.emacswiki.org/emacs/CPerlMode

這裏說使用ffap可以達到這個功能,試用後的確可以。

重點是,這個地方引用perl的方法寫得很好,兩人都對這個功能提出了解答,都用到 shell-command-to-string,寫得很優雅;

第一個作者對ffap的了解很深入,以及在lisp中處理文字、串列的方式非常熟悉

第二個作者將找不到檔案時的情況用nil往外傳,處理得很漂亮,並將大部分的處理在perl中完成,因此整體看來可讀性較高

2013年2月25日 星期一

emacs中視窗的分割、配置、切換、捲動(2)

https://github.com/kiwanami/emacs-window-manager

感覺上日本人用 emacs 也用得滿出神入化的

http://sawfish.wikia.com/wiki/Subwm

這是把 emacs 當做 window manager 來著的,徹底擺脫 mouse...

2013年2月23日 星期六

win32/ubuntu平台上執行測試並將結果存成圖片(使用perl)

Win32 guitest


http://stackoverflow.com/questions/11219755/how-can-i-make-sure-i-take-the-screenshot-of-a-specific-window-using-perls-imag

主要用的是guitest和imager兩個套件。 win32-guitest 的最新版 http://search.cpan.org/~karasik/Win32-GuiTest-1.60/

ubuntu: libx11-guitest-perl


http://search.cpan.org/~pecastro/X11-GUITest-0.27/GUITest.pm

ubuntu等系統有類似win32 guitest的套件叫 libx11-guitest-perl ,在 http://sourceforge.net/projects/x11guitest/;不過使用的人好像不多…也對,linux平台上,軟體的source都公開了,直接從source做測試不就好了…

桌面快照


http://search.cpan.org/~tonyc/Imager-Screenshot/Screenshot.pm

這就要用cpanplus來安裝了,模組名為 Imager::Screenshot

範例


http://blog.alternation.net/automatic-thumbnails-of-web-sites

寫得不錯,不過我比較想看到一些處理 timeout和mouse click的例子

http://www.ibm.com/developerworks/cn/opensource/os-thinkpad/

這篇就寫得真的很好

2013年2月15日 星期五

在emacs上用gnus收信、讀新聞群組的~/.authinfo設定


machine foo.bar.com login your_username password your_pass

_________________________________________________ 

參 
http://www.emacswiki.org/emacs/GnusTutorial
http://ann77.emacser.com/Emacs/EmacsEmail.html
http://www.lirui.name/upload/144.Emacs+Gnus.pdf ==>寫得很好,附圖 
http://floss.zoomquiet.org/data/20101130102435/index.html 
http://hi.baidu.com/corelchen/item/618b00a3ed9ab4d95af19113 
http://www.ibm.com/developerworks/cn/linux/l-cn-emacsgnus/index.html
http://navyliu.blog.edu.cn/2008/163965.html

在emacs上用gnus收信、讀新聞群組的~/.gnus.el設定

參 http://whereofwecannotspeak.wordpress.com/2009/07/15/getting-gnus-to-read-mail-over-imap/

http://srlog.blogspot.com/2012/04/yahoo-mail-free-imap.html
_________________________________________________
(setq user-mail-address "user@yahoo.com.tw")

(setq user-full-name "name")

;; GMANE is about the only free news server I've seen.
;; I set it to my primary server so I can read a few Free software mailing lists.
(setq gnus-select-method
     '(nntp "news.gmane.org"))
;; Mostly, though, I just want to read my mail.
;; This setup uses a standard SSL-based connection to read the mail for the accounts I have through
;; UC Berkeley:
(setq gnus-secondary-select-methods
      '((nnimap "yahoo mail" ; primary email
        (nnimap-address "imap.mail.yahoo.com")
        (nnimap-server-port 993)
        (nnimap-authenticator login)
        (nnimap-expunge-on-close 'never)
        (nnimap-stream ssl))
;     (nnimap "ocf" ; secondary account
;         (nnimap-address "mail.ocf.berkeley.edu")
;         (nnimap-server-port 993)
;         (nnimap-authenticator login)
;         (nnimap-expunge-on-close 'never)
;         (nnimap-stream ssl))
)
)

使用WWW-Mechanize-Firefox取得sciencedirect頁面資訊

use WWW::Mechanize::Firefox;
use Data::Dumper;
use Test::More;
local $Data::Dumper::Terse = 1;
my $mech = WWW::Mechanize::Firefox->new(
    tab => qr/^ScienceDirect/,
);
diag $_->{tagName} .":". $_->{id}#.":". $_->{class}#.":". $_->{class} #. "\n"
    for $mech->document->__xpath('/html/BODY/div');
print "_____export bib / save pdf\n";
diag $_->{tagName} .":". $_->{id} .":". $_->{innerHTML}
    for $mech->document->__xpath('/html/BODY/div[@id="page-area"]/div[@id="articleToolbar"]/div[@id="articleNav"]/ul/li[position()=2 or position()=3]');
print "_____bib _____\n";
diag $_->{tagName} .":". $_->{id} .":". $_->{innerHTML}
    for $mech->document->__xpath('/html/BODY/div[@id="page-area"]/div[@id="rightPane"]/div[@id="rightInner"]/div[@id="ui-accordion-rightInner-panel-0"]/div/dl/*');
print "_____html article_____\n";
diag $_->{tagName} .":". $_->{id}
    for $mech->document->__xpath('/html/BODY/div[@id="page-area"]/div[@id="centerPane"]/div[@id="centerInner"]/*');

2013年2月14日 星期四

知識管理、書目管理、文件管理、論文撰寫工具

一般人知道的多半是endnote,免費的加上mendeley,網頁的加上zotero。這篇文章 作者非常詳細地比較了自己的需求及市場上的解決方案,文中再提到 reftex + emacs 的話,就有四種軟體了。

全文查找

http://tul.blog.ntu.edu.tw/archives/1677
http://tul.blog.ntu.edu.tw/archives/4549

目前有全文查找功能者只有 endnote ,但是也不是全都找得到

書目匯入

http://tul.blog.ntu.edu.tw/archives/5344#more-5344

what's missing?

以下這些功能目前還不存在,但我覺得用emacs + perl來手工打造是比較有機會實作出來的

參考資料書目匯入、全文查找/下載

由於各家資料庫、線上期刊廠商目前的格式不一,因此程式本身宣稱的全文查找實際上都有無法整合的問題。其實說穿了就是利用腳本自動進行登入(非必要,但要能處理多個資料來源的合併)、查詢、分析、下載這樣的動作。

這就是 WWW-Mechanize-Firefox可以使得上力的地方了。我剛在安裝時被它的測試嚇了一跳,一堆錯誤,還好最後還是安裝完成了。滿高興終於有perl guru發現這個需求,而且火熱地開發中…

而另一方面 mozrepl + emacs 則可以用來做為除錯及資料檢視之用。mozrepl這個架構有個好處,就是把firefox當成是一個server,所以同時可以有多個client與它進行通訊。我們可以一邊撰寫程式,一邊除錯。當然firefox 內建的firebug應該也是滿不錯用的就是了。

知識地圖繪製

雖說IF factor是邪惡的,但不能否認很多人還是在看它…如果能把這些文獻間的關係用圖的形式表現出來,那麼就有辦法看到IF以外的層面。


2013年2月13日 星期三

emacs中控制firefox

2009年以後,似乎是因為安全性或跨平台的原因,把gtk上的dbus這條路廢人化了

現在留下來比較為人所知的是Mozrepl這個套件 https://github.com/bard/mozrepl/wiki

安裝完後記得重啟firefox

https://github.com/bard/mozrepl/wiki/Emacs-integration

加上moz.el的話可以在打開javascript buffer後開始與firefox對話,記得要在表單中啟動

工具 > MozRepl > Start


官方的教學


https://github.com/bard/mozrepl/wiki/Starting-the-REPL 用emacs的話可以跳過
https://github.com/bard/mozrepl/wiki/Tutorial


講perl嘛A通


http://search.cpan.org/~corion/WWW-Mechanize-Firefox-0.71/lib/Firefox/Application.pm
http://search.cpan.org/~corion/WWW-Mechanize-Firefox-0.71/
http://search.cpan.org/~corion/MozRepl-RemoteObject-0.34/
http://search.cpan.org/~corion/MozRepl-RemoteObject-0.34/lib/MozRepl/RemoteObject.pm 其中提到的iceweasel可以直接用firefox代換。

感想︰


這種作法滿符合unix/linux的作風,就是把ipc的問題當成是client/server的問題來解決。由目前mozrepl的啟動方法可以知道,這是一個視窗佔用一個port來作為server的架構,因此在操作上最好有心理準備,它所能提供的自動化僅及 於同一個視窗;當有彈出視窗出現時,就無法控制,必需要在該視窗中再指定一個不同的port並啟動,並另外建立新的client去跟它連線,才能進行控制。(待確認)


很遺憾的是,moz.el沒有什麼文件,Mozrepl也沒有什麼文件。其實這只是提供一個存取firefox的物件結構的窗口,所有的語法都是javascript,所以要了解javascript對dom的存取觀念。的確在firefox裏也可以直接進行這些操作,但是所產生的資訊要如何整合到現有的資訊/知識管理系統呢? 如果採用org mode的話,那麼與其在firefox中進行操作,還不如在emacs中進行操作;這也就是必需使用mozrepl 的原因。

雖然mozrepl沒什麼文件,但是cpan上的MozRepl-RemoteObject有

ubuntu上與biomed informatics有關的套件

blast2 - Basic Local Alignment Search Tool
libbio-asn1-entrezgene-perl - parser for NCBI Entrez Gene and NCBI Sequence records
libncbi6 - NCBI libraries for biology applications
libncbi6-dbg - NCBI libraries for biology applications (debugging symbols)
libncbi6-dev - NCBI libraries for biology applications (development files)
librg-blast-parser-perl - very fast NCBI BLAST parser - binding for Perl
librostlab-blast-doc - very fast C++ library for parsing the output of NCBI BLAST programs
librostlab-blast0 - very fast C++ library for parsing the output of NCBI BLAST programs
librostlab-blast0-dev - very fast C++ library for parsing the output of NCBI BLAST programs
libvibrant6-dev - NCBI libraries for graphic biology applications (development files)
libvibrant6a - NCBI libraries for graphic biology applications
libvibrant6a-dbg - NCBI libraries for graphic biology applications (unstripped)
libzerg-perl - fast perl module for parsing the output of NCBI BLAST programs
libzerg0 - C library for parsing the output of NCBI BLAST programs
libzerg0-dbg - debugging symbols for libzerg
libzerg0-dev - C library for parsing the output of NCBI BLAST programs
ncbi-blast+ - next generation suite of BLAST sequence search tools
ncbi-blast+-legacy - NCBI Blast legacy call script
ncbi-data - Platform-independent data for the NCBI toolkit
ncbi-epcr - Tool to test a DNA sequence for the presence of sequence tagged sites
ncbi-rrna-data - large rRNA BLAST databases distributed with the NCBI toolkit
ncbi-tools-bin - NCBI libraries for biology applications (text-based utilities)
ncbi-tools-x11 - NCBI libraries for biology applications (X-based utilities)
wise - comparison of biopolymers, commonly DNA and protein sequences

一系列ncbi相關的套件

sra-toolkit - utilities for the NCBI Sequence Read Archive
sra-toolkit-libs-dev - Development files for the NCBI SRA Toolkit's libraries
sra-toolkit-libs0 - Libraries for the SRA Toolkit

http://www.ncbi.nlm.nih.gov/books/NBK56560/ 在各定序平台間做格式轉換,並可上傳至 http://www.ncbi.nlm.nih.gov/Traces/sra/ 資料庫

grinder - Versatile omics shotgun and amplicon sequencing read simulator

http://sourceforge.net/projects/biogrinder/ 經常更新, perl based
Grinder is particularly useful for simulating clinical or environmental microbial communities and complements the use of in vitro mock communities.
maq - maps short fixed-length polymorphic DNA sequence reads to reference sequences

http://maq.sourceforge.net/ 很久沒更新了

picard-tools - Command line tools to manipulate SAM and BAM files

http://picard.sourceforge.net/ 經常更新, java based

qiime - Quantitative Insights Into Microbial Ecology
qiime-doc - Quantitative Insights Into Microbial Ecology (tutorial)

http://qiime.org/ 經常更新, python based,唯一在github上託管的專案

QIIME is an open source software package for comparison and analysis of microbial communities, primarily based on high-throughput amplicon sequencing data (such as SSU rRNA) generated on a variety of platforms, but also supporting analysis of other types of data (such as shotgun metagenomic data).
 以上這些套件很多都強調是分析微生物群落之用,查了一下才發現近幾年新興一個Metagenomics學門︰

 http://en.wikipedia.org/wiki/Metagenomics

http://yourgene.pixnet.net/blog/post/66235325-metagenomics

http://b2322858.blogspot.tw/2011/03/metagenomemetagenomics.html

http://bbs.antpedia.com/thread-162274-1-1.html

看來在2012年下半年,發了不少paper在這方面的樣子

除了醫學上的用途之外,最近有想用細菌直接製造石油的想法出現︰

http://www.worldjournal.com/view/full_news/21688272/article-%E5%BB%96%E4%BF%8A%E6%99%BA%E7%8D%B2%E9%81%B8%E5%9C%8B%E5%AE%B6%E5%B7%A5%E7%A8%8B%E5%AD%B8%E9%99%A2%E9%99%A2%E5%A3%AB?instance=hof

解決emacs中org table中英混雜時無法對齊的問題(2)

之前對這個問題只解決了一半。最近發現有人好像解決了

http://baohaojun.github.com/perfect-emacs-chinese-font.html

這個方法必需以 C-u C-x = 所得到的中文字型名稱做為參數,否則無效

(setq face-font-rescale-alist '(("文泉驛等寬微米黑" . 1.2)))

縮放後只有在某些特定大小的字型才能對齊,目前實驗結果是設置英文字為20點
這是在縮放以後還能維持比例的唯一可能的方法

http://www.gnu.org/software/emacs/manual/html_node/elisp/Font-Selection.html

用到的是face-font-rescale-alist,其說明如下︰

— Variable: face-font-rescale-alist

This variable specifies scaling for certain faces. Its value should be a list of elements of the form
          (fontname-regexp . scale-factor)
If fontname-regexp matches the font name that is about to be used, this says to choose a larger similar font according to the factor scale-factor. You would use this feature to normalize the font size if certain fonts are bigger or smaller than their nominal heights and widths would suggest.
http://zh.read2log.net/t/anago/mac/1328699139/

這說的也是類似的做法,不過是用add-to-list,且字型名稱也可以放regular expression

http://www.chinese-groups.com/thread/188/Re-oeusb.html

這篇解釋得很清楚,文末提到的bug我似乎沒遇到…


http://stackoverflow.com/questions/1606957/emacs-with-smaller-font-size-text-doesnt-align?rq=1

column view也要維持比例的話,還要做一下這個動作

2013年2月12日 星期二

臉書的Friend List Manager

http://dtinth.github.com/friendlist/

用coffeescript寫的,有原碼所以可以安心使用

用途嘛…不解釋

Facebook 隱私設定-3(不是朋友也能"訂閱"及五個例外規則)

這篇看過以後,不論是留言或發言,我都只發在社團裏…原因這篇說得很清楚,我列出重點︰

記住五個個可能的例外規則……
 
1.       1.如果你留言在某人的塗鴉牆上,那麼你無法控制它的隱私設定。留言的能見度跟原始留言的限制是一樣的。而他的設定可能會比較寬鬆,比方說,「朋友的朋友」。
 
2.      2. 如果你有設定可以看的使用者,目的是讓特定的某些朋友不能看到它,不要認為這限制已經完善了。如果之後有人留言,並且標籤某個不在原本設定可以看的Facebook使用者時,那麼那個使用者就可以看到原本的留言跟整個討論串了。所以還是要小心你所發表的內容。
 
3.       3.如果你留言或是回應公開活動邀請或公開的網頁;那麼你無法控制留言的隱私設定。你只能在留言發表後,在你的動態時報上隱藏它。
 
4.      4. 如果你留言在一個朋友的塗鴉牆上,而他的隱私設定是「朋友的朋友」,那麼任何在你「被限制的對象」名單上的朋友也都可以看到這個留言因為他們是你的[朋友]
 
5.       5.這意味著,任何你發布給「所有人」或「朋友的朋友」(無論是你自己的設定或是留言對象)的留言,都會顯示在你不一定知道、被限制或是已經移除好友的人的即時動態邊欄上 如果這個[共同的朋友]是你的[老闆],可能就會發生以下文章的案例:
什麼是Facebook Fired?不要在任何地方批評給你薪水的人 包含社交網路 (多則真實案例分享)

2013年2月11日 星期一

基本的 DBus 偵錯技巧

基本的 DBus 偵錯技巧


寫得很好…我覺得dbus就是gtk上的COM/CORBA…裏面提到的d-feet在ubuntu上可以用apt-get安裝

CallGraphviz – call graph visualzer based on csope, graphviz and xdot


同作者的軟體工程小工具,真是太有才啦~~

解压chm后由hhc生成html索引页面

Local val ashttp://blog.csdn.net/delphinew/article/details/4509576

真是太好了,本來想自己寫一個的說…

不過有些處理還是可以再調整一下,我調整過的版如下


使用 Emacs 进行 Perl 编程

http://ergoemacs.org/emacs/emacs_perl_vs_cperl_mode.html

兩種模式,perl-mode 和 cperl-mode的比較@李殺網

結果當然一面倒的傾向 cperl mode,所以文末介紹如何將它設為預設模式

http://cpansearch.perl.org/src/YEWENBIN/Emacs-PDE-0.2.16/lisp/doc/QuickStart.html

簡體中文版教學,講的就是cperl mode,我推薦“代碼瀏覽”一節及"语法检查和运行"一節

在cperl mode中要執行run功能的話,要先安裝 mode-compile;這個設計有點不好,因為安裝cperl時似乎沒有訊息提醒或dependency check,不像cpan或apt-get

http://cpansearch.perl.org/src/YEWENBIN/Emacs-PDE-0.2.16/lisp/doc/QuickStartEn.html

英文版

http://search.cpan.org/~yewenbin/

前文同一作者在cpan上的網頁

https://bamanzi-misc.googlecode.com/svn-history/r685/trunk/_emacs.d/init.d/60-prog-basic.el

使用mode compile的話,有些key binding可以設一下;裏面還有一些其它的資訊可以參考

ubuntu上利用emacs的gdb來為gtk+程式debug

http://www.youtube.com/watch?v=vHOzMOzzxDA

這段影片可以給我們一點概念,伴隨著有特殊口音的解說;雖然沒有分割視窗,但己經滿有說明力的了。其實要重頭說明debug還滿不容易的,如果先前有visual studio或eclipse的開發經驗的話,就會滿容易了解gdb的概念

http://emacser.com/emacs-gdb.htm

寫得不錯,整理一下步驟,針對一些地方做個補充

  1. make︰有些gtk的專案己經有特殊的configure參數可以使用,以evince而言的話可以參考 https://live.gnome.org/Evince/Debugging
  2. gdb︰M-x gdb了以後,上方表單會多出一個gud,裏面有許多選項可以操作,是不愛背指令的人的最愛。下file指令載入執行檔,要注意載入的位置;很多情況下就是因為以為的執行檔位置其實不對,而浪費了不少時間;edit指令可以找到函數的位置,但前提是make時參數要正確,否則一樣會浪費不少時間
  3. break & run
  4. watch
  5. IO
  6. binding︰作者有把f5拿回來,這對visual studio使用者是不是很熟悉啊…我是覺得debug 的思路比較重要,速度倒在其次了
不過有些奇怪的地方是,有時下指令後會頓很久,要動一下滑鼠或點個選單之類的才會繼續動作…

2013年2月10日 星期日

emacs 23+的bookmark plus (bookmark+) 學習筆記

http://www.emacswiki.org/BookmarkPlus

別以為看過這篇就算高手了,很多秘技藏在原碼裏啊…(嘖嘖稱奇)

bookmark-set `C-x r m', `C-x p c m'


這不就最基本款的嗎?是的,不過它幕後記載了不少東西,使得某些功能更為強大了,例如它會記得這個buffer上次bookmark的名字;嚴格來說它有辦法撈出最近一次的bookmark,所以當它問你這次要給bookmark什麼名字時,按下 `C-M-u' 就直接幫你打出這個名字來,文件上說真的就像實體的書籤一樣,我們通常洗手間都會擺一本連著看很容易睡著的小說,這裏面是一定要夾一個書籤的不是嗎?它就是用來記得上次看到那兒的…

預設在問你要給什麼名字的時候,提示的是這個buffer中曾經設置過的所有bookmark名字;我通常會在文章中copy一段有代表性的文字,在它提示要輸入名字時按下 C-y ,省去打字的功夫。

與org mode及org-bookmark.el結合,在開發程式時做文件以跳轉到原始碼,或是為你不能check out只能clone/rebase的原始碼做注解


文件寫一寫要對照原始碼時,總要回去看一下原碼,如果結合org mode在裏面加link,就可以跳轉到原始碼,這不是太好了嗎?就是有這麼好的事,安裝org-bookmark.el後,bookmark就可以成為link的一員以進行跳轉。當然要先按個 C-x r l 把bookmark list先帶出來。

結合dired記得整個buffer內容


dired就有點像文字版本的檔案管理員,把emacs當ide時可以把它放在左上角。在這個major mode中,bookmark+會把整個dired的配置都記得,把它拿來當成專案檔的話是滿不錯的…

http://www.cnblogs.com/heshizhu/archive/2012/05/19/2508768.html
http://blog.csdn.net/cxmanzhao/article/details/5685016
http://lifegoo.pluskid.org/wiki/EnhanceDired.html
http://ann77.emacser.com/Emacs/EmacsDiredExt.html

dired的說明

bmkp-make-desktop-record 記得桌面配置 C-x p K


當桌面割得亂七八糟時,你會需要它的…

2013年2月9日 星期六

org文件發布為網站的選項

http://rritw.com/a/JAVAbiancheng/JAVAzonghe/20130120/293995.html

這篇分析得不錯,等我那天有時間來維護自己的 blog 的時候再來好好實踐一番…XD

http://renard.github.com/o-blog/

上文提到的 o-blog ,真的很美觀啊…有時間的話一定要好好學一下…

說真的,http://orgmode.org/ 它本身就作得滿不錯,這麼大一個站據說才14mb而己…

有時間的話一定要好好學一下…

emacs 24中的lisp程式碼導航(code navigation)--Slime-style navigation for Emacs Lisp

https://github.com/purcell/elisp-slime-nav

看來是預裝的,沒什說明,只有跟你說快速鍵盤是 M-, 及 M-.

等一下,這己經很不得了了~~人家純粹c語言都還要搭配 ctags 或 cscope ,你們自家的 emacs lisp 就是要搞黑箱就是了??

然後這又是傳說中的牛人 Steve Purcell 的大作…

emacs中視窗的分割、配置、切換、捲動

分割及配置在上篇說到shell的部分己經談過,接下來要說的是切換。這裏說的切換有兩層含意,一層是輸入焦點轉移到那個視窗(other-window),一個是具有輸入焦點的視窗中,要看到那個buffer的內容(iswitchb)。

other-window 及替代方案


傳統上這個指令綁在 C-x o 按鍵組合上,但是沒有對應的回卷機制。(好吧其實是有回捲的,但是這種本來就己經很複雜的組合,把它弄得更複雜,我們是不太會記得住的…參 http://stackoverflow.com/questions/143072/in-emacs-what-is-the-opposite-function-of-other-window-c-x-o )

http://www.emacswiki.org/emacs/SwitchingBuffers

If you use Icicles, then, in Icicle mode, ‘C-u C-x o’ gives you a multi-command that lets you choose a window (or a frame) by its buffer name (with numeric suffix to distinguish multiple windows for the same buffer). You can also cycle among windows whose buffers match a given pattern. If you also use library crosshairs.el, then it’s easier to see which window is selected as you cycle.
http://www.emacswiki.org/emacs/WindowNavigation
http://www.emacswiki.org/emacs/WindMove ==> 我偏好這個方法,跟之前提過的winner mode應該可以解決8成以上的問題了

iswitchb 及替代方案


傳統上這個指令綁在 C-x b 按鍵組合上,但是沒有對應的回卷機制,而且與一般win平台上的 C- / C-S- 組合不同,速度也慢了一點,因為多按了一次。

http://emacs-fu.blogspot.tw/2009/02/switching-buffers.html

作者的建議是 ido / icycles / anything ,它自己則寫了一個 C- 的代用品在 http://emacs-fu.blogspot.tw/2008/12/cycling-through-your-buffers-with-ctrl.html

http://www.emacswiki.org/emacs/SwitchingBuffers
http://www.emacswiki.org/cgi-bin/wiki/ControlTABbufferCycling =>這其實是想模仿win的M-的效果

Anything


http://www.emacswiki.org/Anything
http://metasandwich.com/2010/07/30/what-can-i-get-for-10-dolla-anything-el/

scroll-other-window 捲動(其它視窗)


這個意思是說,輸入焦點在視窗a,但是可以下命令讓視窗b的內容捲動。這個動作實在是時方便了,如果沒有這種動作,那麼就必需要把輸入焦點移到另外一個視窗,捲動它,再把輸入焦點移回來。傳統上這個指令綁在 C-M-v / C-M-S-v 按鍵組合上

emacs中不使用ide的開發方式

這篇文章我曾經說過,emacs不太需要(成為)一個ide。但是它還是需要做一個ide能做的事吧?是的,這裏就要解釋一下這個概念。昨天我用4個終端機視窗維護一個dbus專案(項目?),眼睛差點沒掉出來了,剛好今天有時間來重整一下整個開發流程。一個比較像樣的ide經常會把畫面切成4個子窗,左上顯示專案的成員或所在的目錄,左下顯示目前檔案的函數或物件,右上顯示目前編輯中的檔案,下方則有訊息視窗。工具列則有一些按鈕提供快速啟動某些命令的方式,如編譯、除錯等, 對應到快速鍵通常是F5、F9等。(我對gdb還沒摸熟,所以先跳過這段。) emacs的準ide解決方案cedet或著說是ecb在處理視窗上的方式是固定的,可以看看 http://ecb.sourceforge.net/docs/The-other-window.html

昨天開的終端機視窗有4個,一個是dbus 的被呼叫端gtk程式啟動用,因為要即時觀察它的log,必需用terminal啟動並提供適當的參數;一個是 dbus 的呼叫端的python腳本啟動用,一樣因為要即時觀察它的log,必需用terminal啟動並提供適當的參數;一個是編譯gtk程式要開的視窗,單光的下達make; make install;第四個留著下達一般指令,git的管理等等;當然還開著一個emacs作程式的修改,一個firefox上網查資料。以gnome目前的桌面管理來說,這樣的配置簡直就是災難一場,我曾經一度想把傳說中的cedet裝上去了,不過後來還是忍住。

解決方案是配合shell mode,請參考以下文章︰

Learning emacs part 4: buffers, windows, and frames « Blasphemous Bits: 視窗切換原理

EmacsWiki: Winner Mode: 視窗組態的回復

當 Shell 遇見 Emacs -- 大話 Emacs Shell Mode 另外教了些shell的技巧

當 Shell 遇見 Emacs -- 大話 Emacs Shell Mode,第 2 部分 這比較不重要

大話 Emacs Shell Mode 第 3 部分 視窗的旋轉,或者應該說是buffer的旋轉…非常高段的技巧

EmacsWiki: David Young: 上三篇文章作者在emacswiki的主頁,將rotate(旋轉window)及roll(旋轉buffer)作了區分


版面-Emacs编辑器(Emacs) 主题:[原创]让窗格旋转起来附圖非常有說明力,看起來就跟商品化的ide一樣

其實看完第一篇其實你就己經知道怎麼在emacs裏面切出四個視窗來了,以下分開發與測試兩種組態來看。

開發期


左上放著主目錄視窗,可以進行make或git;左下放cscope;右上放程式原碼,右下放另一個程式原碼或文件。

測試期


左上放著主目錄視窗,可以進行make或git;左下放gdb(測試中);右上放程式a的終端機,右下放另一個程式的終端機。

artist mode


http://www.cinsk.org/emacs/emacs-artist.html

http://emacser.com/artist-mode.htm

我猜ptt上有些ascii arts是這樣子畫出來的…真的很有才…


圖片來源 https://nsaunders.files.wordpress.com/2009/11/emacs23_rails.png

2013年2月8日 星期五

gtk中的錯誤訊息

在要執行的gtk程式前加上 G_MESSAGES_DEBUG=all 可以打開訊息,在終端機中可見

http://stackoverflow.com/questions/13790559/showing-gtk-debug-log-messages

這篇說的就是這件事

http://developer.gnome.org/glib/2.30/glib-Message-Logging.html

可用的函式與巨集列表

emacs中bookmark plus (bookmark+)的使用

http://www.emacswiki.org/BookmarkPlus

要把這一大篇看完,實在需要耐心…假設用elpa裝好了(實際上有問題,與org mode的情況類似,與elpa整合不好,還是另外抓下來放著吧…然後依 http://stackoverflow.com/questions/1217180/how-do-i-byte-compile-everything-in-my-emacs-d-directory 上的方法編譯整個目錄中的檔案),原則上按鍵組合與原先bookmark是相同的

新增bookmark


http://lists.gnu.org/archive/html/help-gnu-emacs/2011-01/msg00769.html

這篇解釋得很清楚,除了原有的bookmark按鍵 C-x r m,還可以用bookmark plus引入的新按鍵,如 C-x p c m (或C-x p m)

檢視bookmark list


http://www.emacswiki.org/BookmarkPlus#toc39

‘C-x p e’ or ‘C-x r l’ (command ‘bookmark-bmenu-list’)


編輯bookmark list


http://www.emacswiki.org/BookmarkPlus#toc23

與org mode整合--安裝org-bookmark.el


原則上可以,但是目前要先開了*Bookmark List*這個buffer以後, [[bookmark:...][...]] 這個形式的連結才會正確跳轉。 但是用這個功能來標注原始碼等純文字檔,實在是方便…不過我想org-bookmark.el裏面的bookmark-jump要改成bookmark-jump-other-window比較方便…

2013年2月7日 星期四

gtk中的事件處理--以evince為例

gtk的中文文件真的不多,而且很多己經過時,所以英文還是要練好一點…

在ev-view.c當中,宣告了 ev_view_button_press_event , 這個函數類似於在 win 平台上的 RAD 工具中的所謂“事件處理函式", 它會接收到一個型態為 GdkEventButton * 的參數,這裏面包含了事件的詳情。 此函數必需以某個方式讓事件處理迴圈知道, 程式中是以類別的virtual method table 中的 button_press_event 來存放。以Delphi/VCL的術語來說,widget就是VCL的control或window;在class的階層上,所有class都是由GObjectClass所衍生,類比於VCL的TObject,而所有視窗元件都是由GtkWidgetClass所衍生,類比於VCL的TWindow/TControl。

當事件發生時,捕捉這個事件並加以處理的途徑有兩個,分別是物件層級和類別層級。類別層級的處理由類別的(虛擬)函數進行,有效範圍是該類別的所有物件,若未進行override,則交由父類別處理,層層往上。 通常會去override這個函數的情況,一是對該類別的行為有一個統一要求,二是該類別只有一個實例(如主視窗),三是未來有可能會以該類別為父類別而衍生出新類別。其它的情況,處理事件時,物件層級優先於類別層級,適用於例如對話盒中的按鈕被按下後要有不同的行為,以override的方式則必需對各個按鈕寫出各自的類別,而改寫onclick函數(這名字是假設的);以event handler的方式則只需為不同的按鈕指定不同的onclick事件處理函數(這名字是假設的),比較簡單,gtk中是以g_signal_connect來指定。

不過物件層級的事件傳遞有自己的一條路徑,這是由 parent / child 所串起的一顆樹。與此相關的概念是建構/解構元件的從屬關係;通常視窗元件都是由主視窗所建,是一個 owner / component 的關係,只有記憶體管理的議題存在,沒有訊息的傳遞關係。VCL的設計是,放在可以拖放到視窗上的元件時,設立了TComponent類別來對應,處理一些warehousing的問題。

回到事件處理上,物件層級的處理,走完所有parent widgets都沒有辦法解決時,才會走parent classes這條,不過它的處理通常不會很針對不同的case,而是比較一般的通則。目前看到的情況也是如此,只有主視窗,雖然VCL中一貫使用物件層級處理,但是畢竟多了一層不必要的indirection,因此在gtk中似乎都傾向以類別層級來override VMT以進行事件處理。

於ubuntu 12.10上安裝okular

單純的 apt 無法安裝, 看來又要找ppa了

http://www.ubuntuupdates.org/ppa/kubuntu-ppa_backports?dist=quantal

依此網頁指示執行以下命令

sudo add-apt-repository ppa:kubuntu-ppa/backports 
sudo apt-get update
sudo apt-get install okular

這個ppa我覺得可以先不要移除,真要移除的話,一樣的作法

cd /etc/apt/sources.list.d/

sudo rm kubuntu-ppa-backports-quantal.list 

ubuntu上為emacs安裝cscope以進行code navigation

emacs中的elpa有atags (gnu global) 及 etags (ctags for emacs?)可用,不過似乎不如cscope強大

安裝


apt中納入了這兩個cscope套件,安裝一下

sudo apt-get install cscope cscope-el

然後在.emacs或任何等效的檔案中加入

(require 'xcscope)

啟動emacs,打開任一欲檢視的原始碼檔案,如 .c 檔,按下
C-c s I,程式問要從那個目錄建立索引,通常是設我們放置專案的最上層目錄,

如果是jhbuild抓來的檔案,那通常在 ~/code/evince/checkout/

操作說明


http://cscope.cvs.sourceforge.net/viewvc/cscope/cscope/contrib/xcscope/xcscope.el?revision=1.14&view=markup

它的 * Keybindings: 一節詳述了可用的操作

http://www.eefocus.com/fhq1989312/blog/12-04/247349_9c349.html

我是看了這頁才知有apt可裝

小結


這類的 code navigation 解決方案,在正確性上其實遠不如 MSVS 或是 eclipse,不過對於 gtk 這類純c 的專案,速度是很快的 

2013年2月6日 星期三

设置Ubuntu 默认软件打开方式

http://ubuntugenius.wordpress.com/2012/06/18/ubuntu-fix-add-program-to-list-of-applications-in-open-with-when-right-clicking-files-in-nautilus/

http://www.mypaomian.com/%E8%AE%BE%E7%BD%AEubuntu-%E9%BB%98%E8%AE%A4%E8%BD%AF%E4%BB%B6%E6%89%93%E5%BC%80%E6%96%B9%E5%BC%8F/

以單純的自行 make 新版的 evince 為例,就去改 /usr/share/applications/evince.desktop 這個檔案。

sudo gedit /usr/share/applications/evince.desktop

找到 Exec= 帶頭的那行,把路徑指到我們make出來的版本

ubuntu上開源文件檢視器evince的make手記

老實說,有點懷念configure->make->make install的美好老舊時光…

不過還是捲起袖子來吧…

https://live.gnome.org/Evince/GettingEvince

“Building Evince and Poppler from Git in 5 easy steps”

那是他講的,實際上如果像我一樣  你會在第四步就卡關

patch 1


jhbuild是他引入的一個想要整合build process的(又)另一個機制

理想歸理想,但是bleeding edge總是會有問題,這次問題出在poppler

參 http://markmail.org/thread/jd7b4jeskjjb7be6

似乎 http://poppler.freedesktop.org/ 都說.22是穩定版本了,看來還是只好人工介入一下

根據 http://developer.gnome.org/jhbuild/stable/config-reference.html.en 所言,在 jhbuildrc-evince 加入以下這行︰

branches['poppler'] = (None, 'poppler-0.22.0')

patch 2


Requested 'gtk+-3.0 >= 3.7.5' but version of GTK+ is 3.6.0

看來ubuntu 12.10內建版本不夠新啊…

http://www.ubuntuupdates.org/package/gnome_shell/quantal/main/base/libgtk-3-0

有人提供了套件,不過要加入到apt的repository中,在shell中依序執行以下命令

sudo add-apt-repository ppa:gnome3-team/gnome3

sudo add-apt-repository ppa:ricotz/testing

sudo apt-get update

sudo apt-get install libgtk-3-0

裝完記得刪掉這些ppa,不然軟體更新時會哇哇叫的…目前只有手動方法,到 /etc/apt/sources.list.d/ 找到對應的list檔並刪除之

2013年1月30日 星期三

三種安裝org mode的方法及emacs小技巧

 

三種在ubuntu 12.04+emacs 23上安裝org mode的方法(emacs 24己預裝)


依據每個人對ubuntu及emacs的了解程度,安裝方法如下

方法1:從主站下載原始碼並編譯 。此法當然最update,但要會make。 參 http://orgmode.org/manual/Installation.html

方法2:(ubuntu專屬)使用apt-get安裝。此法最保險,不需要會make,但可能版本沒那麼新

方法3:使用 elpa 在emacs裏直接安裝。此法可能要了解emacs到一個程度之後才會用。記得參考這裏加上設定,安裝 org org-plus-contrib 其中一個package。
 (org-plus-contrib 在三大elpa主站均沒有提供)
ps. 根據了解,此安裝方式目前看來有點問題…

emacs小技巧

 

安裝starter-kit(需確定org mode己安裝完畢, emacs 24己預裝)


http://eschulte.me/emacs24-starter-kit/
https://github.com/technomancy/emacs-starter-kit

有點神奇的雙胞事件,google的排名和elpa的實際安裝檔來源不同,我暫且相信elpa。目前猜測,有人branch了原作,加入literate programming/org mode的元素後,原作不讓merge,且雙方各自自行開發,branch者立馬冏了,顧不得血統的問題,狂寫文件,結果在pagerank上硬是幹掉原作者。根據branch者的語氣,我猜他沒有去檢查org mode的安裝情況,並且逕自斷了backward compatibility...

贊曰︰還是用elpa比較省事。

Misc


http://lifegoo.pluskid.org/wiki/EmacsTip.html

一些小技巧,主要是C-h的說明、auto complete的快捷鍵、hippie-expand的介紹

http://slashusr.wordpress.com/2010/09/29/three-nifty-alternatives-to-the-m-tab-key-in-emacs-and-a-replacement/

M-通常己經被系統佔用了,此文介紹其它按鍵以達到相同功能

http://www.masteringemacs.org/articles/2011/02/08/mastering-key-bindings-emacs/

推廣來說,key bindings的管理也是一門學問啊…

2013年1月29日 星期二

Literate Programming 文學編程(LP)

第一次看到這個字眼是因為org mode中有一個org-babel,號稱是LP的實作

一般寫程式時,會有放注解的地方,或是產生一堆文件;

LP的思路完全相反,但也更符合人性︰寫文件,然後程式只是附帶的產物

當然也可能有些盲點,例如,會失去IDE中的許多便利,如auto complete等,這己經夠令人頭大了

而且程式中的語意,LP未必有對應的工具去表達,例如#include的含入檔

當直接對tangle的產出程式修改時,要把修改反映回LP文件中也是一件麻煩事

http://josephj.com/event/2012/frontend-beijing/%E6%96%87%E5%AD%B8%E7%B7%A8%E7%A8%8B.html

這個網頁介紹得相當的不錯,作者是從iOS的Leo來作介紹

http://angelonotes.blogspot.tw/2012/07/literate-programming-cweb.html

原汁原味的LP介紹,Knuth當年的cweb,可讀性有點…難怪org mode會取代它

http://kanru.info/blog/archives/2011/07/07/literate-programming/

這是另一個使用notangle的例子,比較有一點實用性

http://www.cnblogs.com/bamanzi/archive/2012/05/12/org-mode-so-powerful.html

這裏面有一段關於LP的介紹,及org babel在實作.emacs的LP時需要的設定

http://www.perlmonks.org/?node_id=735862

LP的爭議一直存在,主要是說,這麼詳盡的注解是否反而降低了生產力?

但是如果是用org mode來取代原版LP使用的文件系統TEX/LaTEX的話,能突顯當前關注的焦點所在,我認為很有用

不過更麻煩的一件事是,編譯時錯誤訊息回報的行號,在LP的原始文件對應到哪裏呢?debug時也會遇到相同的問題。這可能才是使LP發展停滯不前的主因…

http://www.jstatsoft.org/v46/i03/paper


以org mode中LP的應用為題發表的論文,我覺得沒有把org mode的優點發揮出來

http://www.sdragons.org/Software/Perl/LitPerl.html

這是比較實際的例子,用perl作為實作語言。附帶一提,該作者的網頁滿有可看性,例如perl的cheatsheet

WEB/CWEB/NOWEB/NUWEB


 http://www.cs.tufts.edu/~nr/noweb/nuweb.html

這篇文章中解釋了LP的起源和流變,而它本身也就是nuweb的原始檔,brilliant!!

2013年1月28日 星期一

Emacs套件試用︰ Starter Kit、minimap、 準IDE化設置

Starter Kit


用elpa一裝完,想用C-x C-f開檔時,赫然發現,提示檔名的功能整合進minibuffer裏面了
很好  很強大  怎麼不早說呢真是~~

不過這沒有包括在emacs 24的預裝套件中,或許這個風格的轉變有點太大了?

Starter Kit G-Client


這也滿不得了的,可以直接抓google上的文件…這樣很多自動化的工作都可以整合了

minimap

 http://www.emacswiki.org/emacs/MiniMap

原來是實作在sublime中的功能,視覺效果很不錯啊…

準IDE化設置


大致上流程是這樣的
  1. gdb系列
    1. 作者安裝:multi-gud(gud的改良版), multi-gdb-ui(gdb-ui的改良版)。可能已經沒有人在維護了,參 http://www.inet.net.nz/~nickrob/ 。套件作者也承認,emacs設計的理念是成為文字編輯器,對內嵌控制開發等小型c許言專案或許ok,但對大型專案的開發仍然應以eclipse CDT來進行。他也認為gdb-mi受到商業利益的考量影響,未來可能會停止開發
    2. emacs 24 (win7)預裝:gdb-mi, gud
    3. linux:gdb
  2. cedet + ecb(可能已經沒有人在維護了,因此也沒有預裝在emacs 24當中)
  3. auto complete + yasnippet
  4. refactoring工具,如ropexxxx系列
http://cn-popeye.iteye.com/blog/1163548

附圖中有一個是elisp的畫面,令我滿想試試的

http://www.cnblogs.com/karotte/archive/2012/06/06/2537670.html

附圖非常詳盡,感覺不照著試試看對不起作者啊…我猜 https://code.google.com/p/nextide/ 這個 NextIdE 套件就是他在維護的

http://stackoverflow.com/questions/5238245/elisp-programming-whats-the-best-setup

為什麼好像都沒有專為emacs lisp開發的ide呢?這篇文章分析得很好,大意是說,elisp適合開發小型專案,需要用到的東西都在emacs裏面了

emacs elpa--程式庫管理套件

安裝


之前在win7上裝的是emacs 24,所以elpa己經自帶了。如果沒有,像我另外一個安裝ubuntu 12.04的作業系統,自帶的是emacs 23,那就要安裝並在.emacs中加入適當的宣告來初始化,參 http://emacswiki.org/emacs/ELPA#toc5 。具體作法如下︰

方法1


http://tromey.com/elpa/install.html

http://ergoemacs.org/emacs/emacs23_install_elpa.html
在剛安裝完emacs就執行這步比較好,在下完package.el到~/.emacs.d/裏面以後,它會在.emacs後加上類似方法2中提到的那幾行以載入之
p.s. replace package.el according to http://stackoverflow.com/questions/7287947/adding-marmalade-as-package-source

方法2==> 推薦

  1. 下載package.el到emacs認得的目錄
  2. 改寫.emacs,加入以下幾行,然後重啟emacs
(require 'package)
(setq package-archives
            '(("gnu" . "http://elpa.gnu.org/packages/")
             ("marmalade" . "http://marmalade-repo.org/packages/")
             ("melpa" . "http://melpa.milkbox.net/packages/")))
(package-initialize)

使用


M-x list-packages 或 M-x package-list-packages

這有點向perl的 cpan看齊的意思,雖然來得有點晚,但是總比不來的好XD

使用方法參 http://ergoemacs.org/emacs/emacs_package_system.html

按C-h m可以得到說明,

基本上按i標記,按x安裝

實例︰starter-kit的安裝


用elpa來安裝之前提到過的  starter-kit 真是再便利也不過的了

為何要用emacs?


http://dywang.csie.cyut.edu.tw/moodle23/dywang/linux-wangyin/node13.html

我覺得這篇說得挺好。用我的話來說,IDE是讓你不知道細節也能做出個樣子出來,但是你要知道細節才能完成工作時,IDE會讓你不知道那個細節在哪裏。當你愈深入你的工作,你才會發現要處理更多的細節。不使用IDE會讓你一開始就必需處理很多細節,所以通常你不會直接這樣做。一般的作法都是用IDE(或抓個template)產生了骨架之後,從這個骨架開始修改。

2013年1月26日 星期六

org-mode中agenda view及export的使用

agenda


http://orgmode.org/manual/Agenda-files.html#Agenda-files

首先要將檔案加入agenda files列表,不然就不會顯示

agenda 可視為對數個檔案的匯整及查詢/呈現的方式,建議其它功能先了解後再使用,才知道自己在幹什麼

export

按下C-c C-e後即可選擇多種格式,不過文件的部分我傾向用odt,也就是按下大寫的O

其它格式其實都要環境設定有配合到位,一般人實在沒那個美國時間

而且ubuntu中預裝的LibreOffice可以馬上打開文件以檢查排版,以及匯出為其它格式,包括pdf

文件中有latex的話,要參考一下這個連結在文件開頭作個宣告

生產力工具︰workflowy、 番茄工作法、Zotero

workflowy--繼Mindmanager、evernote、remembermilk、TaskPaper後又一清單管理程式


(我還沒提到org mode呢XD)

官網在 https://workflowy.com/

從它提供的影片看來,它為使用觸控裝置的使用者提供了許多便利操作

說真的短時間內要追上org mode的功能是不太可能

但是在行動裝置上,我相信它會得到不錯的市佔,就它利用觸控的便利性而言

番茄工作法

 喔不會吧,gtd都還沒摸熟,又來一個…

雲端番茄工作法及我的實踐經驗
這位twhsi在gtd上也很有見地,發表了不少文章

http://baike.baidu.com/view/5259318.htm
http://wiki.mbalib.com/zh-tw/%E7%95%AA%E8%8C%84%E5%B7%A5%E4%BD%9C%E6%B3%95

非常嚴謹的敘述…

Zotero

書目管理軟體 - Zotero
Zotero書目管理軟體簡介

輕鬆記錄、有效管理、輕鬆應用你的研究書目資料

免費的文獻管理工具-zotero

2013年1月25日 星期五

emacs lisp/w3m/ediff的學習資源


  • elisp
    • http://www.gnu.org/software/emacs/manual/elisp.html
      • 官方手冊
    • http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/index.html
      • 我比較習慣看的格式,不過它應該是要表現為一樹狀結構才對…
      • 這本書 emacs 里有,按“C-h i”,輸入m,“Emacs Lisp Intro”就能看到
      • C-h i會進入info mode,使用textinfo格式的文件,有點像win平台的help
      • http://ergoemacs.org/emacs/emacs_adding_browser_keys.html
    • http://ergoemacs.org/emacs/elisp.html
      • 一位華人(?)寫的教程,排版不錯,但先後順序沒有很講究
    • ps.輸出重導,例如把stderr重導到stdout的作法︰
      • w3m -h 2>&1 |more
  • 文字形式的www瀏覽器, w3m
    • http://www.howtogeek.com/103574/how-to-browse-from-the-linux-terminal-with-w3m/
    • 可以整合到emacs裏
      • http://www.emacswiki.org/emacs/emacs-w3m#toc19
    • ubuntu 12的安裝
      • http://www.emacswiki.org/emacs/emacs-w3m#toc22
      • sudo apt-get install w3m-el-snapshot
    • 啟動︰執行w3m,例如M-x w3m
    • 說明文件
      • http://emacs-w3m.namazu.org/info/emacs-w3m.html
    • 簡單指令
      • g 到minibuffer輸入網址
      • G 同上,但開新頁籤
      • T 切換圖片顯示
      • B 回上頁
      • N 回下頁
      • R 重載頁面
      • c 顯示/複制本頁url到剪貼簿
      • u 顯示/複制所高亮連結之url到剪貼簿
    • 專有指令
      • ^ 往上一層
      • (spc) 後一頁,當游標位於視窗末
      • (del) 前一頁,當游標位於視窗首
    • 速查表,不過要注意,w3m在emacs裏面有些快速鍵或功能被拿掉了
      • http://wiki.titan2x.com/index.php?title=W3m_cheat_sheet
  • ediff
    • http://caobeixingqiu.is-programmer.com/posts/6783.html

2013年1月24日 星期四

emacs調校--cua mode及其它

  • cua mode
    • 在emacs中如果想繼續用win的風格的快捷鍵來複制、剪下、貼上,需要這個︰

      http://www.emacswiki.org/emacs/CuaMode
      • 當標記了一段文字時會啟動
      • C-z也回來了
      • shift+方向鍵選文字功能,也回來了
      • tab縮排,也回來了
    • 但是有副作用
      • 矩形區域因此受到影響,原"C-x r ..."指令改成"C-RET + 方向鍵"
      • 有標記區域時,原C-x可以用兩種方式間接呼叫
        • C-S-x
        • 很快按兩次C-x
      • C-v及C-c亦有同樣副作用
  • babel中對.emacs的支援
    • 詳解 http://orgmode.org/worg/org-contrib/babel/intro.html#sec-8-2-1
    • 簡明的說明 http://bamanzi3.blogspot.tw/2012/05/emacs-org-mode.html
    • 範例 https://github.com/eschulte/emacs24-starter-kit
  • 複製的內容無法貼到emacs以外的程式嗎?
    •  參 http://emacswiki.org/emacs/CopyAndPaste,加入以下設定
      (setq x-select-enable-clipboard t)
  • 偶然下發現emacs中寫R程式的說明
    http://www2.nsysu.edu.tw/politics/liu/teaching/dataAnalysis/week04_introEmacsAndR.R
    • 完整的文件列表在
      http://www2.nsysu.edu.tw/politics/liu/teaching/dataAnalysis/statistics961.htm
  • 一些額外的設定
    http://caobeixingqiu.is-programmer.com/posts/18700.html
  • emacs本身自帶的diff,叫ediff
    http://caobeixingqiu.is-programmer.com/posts/6783.html

2013年1月23日 星期三

org mode架構概觀--一個專案管理/GTD的觀點

參見 http://orgmode.org/manual/index.html#Top

以下為主要功能,共有9大項

匯出為其它格式
較進階的議題

2013年1月19日 星期六

將emacs的設定放在dropbox並跨平台的寫法

有幾個網頁可以參考
  1. https://sites.google.com/site/steveyegge2/my-dot-emacs-file
    這是比較簡明的版本,跨平台的關鍵字就是 system-type !! 可惜的是他所用的labels指令是屬於gclisp,預設的elisp是無法執行的)
    這樣連預設的.emacs都可以丟到dropbox linux中建立sybolic使用命令為cp -s,可參見 鳥哥 的這篇文章
    另外windows中也可以建立符號連結,指令名 mklink,http://www.windows7home.net/how-to-create-symbolic-link-in-windows-7/
  2. http://www.emacswiki.org/emacs/RobertAdesamConfig 這是詳細且完整的設定,裏面有不少對windows/cygwin整合的設定;而且更特別的是,裏面還有mac OS/darwin的設定 該作者還用到不少emacs特色,例如 latex 等等,這些沒設定過的話,在win7是一定run不起來的。不過在load-libray部分的寫法沒有第一個連結的彈性好;但是預設情況下也只有這個寫法能讓elisp認得…
  3. 多人環境同步:Windows下用mklink让dropbox同步任意文件夹技巧 http://rabbit52.com/2012/desktopos/windows-mklink-dropbox-syc-any-folder
  4. 這可以用來配合多人在windows平台共用dropbox及環境的技巧,在這個連結建立好後,加上HOME目錄(參考上一篇文章設定,以我而言是指向DROPBOX的父目錄,也就是C:\Users\XXX)下的.emacs符號連結,就可以在第二台以上的機器複製一樣的工作環境。比如說在第一台電腦上,某甲根據第一個網頁的說明在HOME目錄建立.emacs的符號連結,實體位置在某甲的dropbox下的a目錄;那麼,某乙在安裝好emacs及dropbox之後,某甲根據 https://www.dropbox.com/help/19/en 的描述分享資料夾,某乙收信打開該資料夾a,該資料夾內有.emacs等相關設定檔,某乙只要為在本機的HOME資料夾建立symlink連至該雲端檔,即可啟動emacs並得到一模一樣的環境
  5. 多人同步時有一個衍生的問題,那就是 custom-set-variables 被大量插入到.emacs檔中,這有可能包含不想被共用的資訊,例如org-agenda-files。此時可以利用 custom-file 來將這些額外的資訊寫到不被共用,但仍在dropbox目錄下的檔案。同時不同的平台也可能設定需要不同的檔,因為根據觀察, org-agenda-files 會寫入檔案的絕對目錄,而不是相對目錄。
  6. 因此需要另外為不同的需要撰寫不同的.emacs檔,給予不同的副檔名,利用環境或版本等變數來判斷要含入那一個檔案。