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中完成,因此整體看來可讀性較高
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...
感覺上日本人用 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))
)
)
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"]/*');
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/4549
目前有全文查找功能者只有 endnote ,但是也不是全都找得到
這就是 WWW-Mechanize-Firefox可以使得上力的地方了。我剛在安裝時被它的測試嚇了一跳,一堆錯誤,還好最後還是安裝完成了。滿高興終於有perl guru發現這個需求,而且火熱地開發中…
而另一方面 mozrepl + emacs 則可以用來做為除錯及資料檢視之用。mozrepl這個架構有個好處,就是把firefox當成是一個server,所以同時可以有多個client與它進行通訊。我們可以一邊撰寫程式,一邊除錯。當然firefox 內建的firebug應該也是滿不錯用的就是了。
全文查找
http://tul.blog.ntu.edu.tw/archives/1677http://tul.blog.ntu.edu.tw/archives/4549
目前有全文查找功能者只有 endnote ,但是也不是全都找得到
書目匯入
http://tul.blog.ntu.edu.tw/archives/5344#more-5344what'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
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有
現在留下來比較為人所知的是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的問題來解決。
很遺憾的是,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
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上託管的專案
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
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 = 所得到的中文字型名稱做為參數,否則無效
縮放後只有在某些特定大小的字型才能對齊,目前實驗結果是設置英文字為20點
這是在縮放以後還能維持比例的唯一可能的方法
http://www.gnu.org/software/emacs/manual/html_node/elisp/Font-Selection.html
用到的是face-font-rescale-alist,其說明如下︰
這說的也是類似的做法,不過是用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也要維持比例的話,還要做一下這個動作
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-alisthttp://zh.read2log.net/t/anago/mac/1328699139/
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.
這說的也是類似的做法,不過是用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寫的,有原碼所以可以安心使用
用途嘛…不解釋
記住五個個可能的例外規則……
用coffeescript寫的,有原碼所以可以安心使用
用途嘛…不解釋
Facebook 隱私設定-3(不是朋友也能"訂閱"及五個例外規則)
這篇看過以後,不論是留言或發言,我都只發在社團裏…原因這篇說得很清楚,我列出重點︰記住五個個可能的例外規則……
1. 1.如果你留言在某人的塗鴉牆上,那麼你無法控制它的隱私設定。留言的能見度跟原始留言的限制是一樣的。而他的設定可能會比較寬鬆,比方說,「朋友的朋友」。
2. 2. 如果你有設定可以看的使用者,目的是讓特定的某些朋友不能看到它,不要認為這限制已經完善了。如果之後有人留言,並且標籤某個不在原本設定可以看的Facebook使用者時,那麼那個使用者就可以看到原本的留言跟整個討論串了。所以還是要小心你所發表的內容。
3. 3.如果你留言或是回應公開活動邀請或公開的網頁;那麼你無法控制留言的隱私設定。你只能在留言發表後,在你的動態時報上隱藏它。
4. 4. 如果你留言在一個朋友的塗鴉牆上,而他的隱私設定是「朋友的朋友」,那麼任何在你「被限制的對象」名單上的朋友也都可以看到這個留言,因為他們是你的[朋友]。
5. 5.這意味著,任何你發布給「所有人」或「朋友的朋友」(無論是你自己的設定或是留言對象)的留言,都會顯示在你不一定知道、被限制或是已經移除好友的人的即時動態邊欄上。 如果這個[共同的朋友]是你的[老闆],可能就會發生以下文章的案例:
什麼是Facebook Fired?不要在任何地方批評給你薪水的人 包含社交網路 (多則真實案例分享)
什麼是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可以設一下;裏面還有一些其它的資訊可以參考
兩種模式,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
寫得不錯,整理一下步驟,針對一些地方做個補充
這段影片可以給我們一點概念,伴隨著有特殊口音的解說;雖然沒有分割視窗,但己經滿有說明力的了。其實要重頭說明debug還滿不容易的,如果先前有visual studio或eclipse的開發經驗的話,就會滿容易了解gdb的概念
http://emacser.com/emacs-gdb.htm
寫得不錯,整理一下步驟,針對一些地方做個補充
- make︰有些gtk的專案己經有特殊的configure參數可以使用,以evince而言的話可以參考 https://live.gnome.org/Evince/Debugging
- gdb︰M-x gdb了以後,上方表單會多出一個gud,裏面有許多選項可以操作,是不愛背指令的人的最愛。下file指令載入執行檔,要注意載入的位置;很多情況下就是因為以為的執行檔位置其實不對,而浪費了不少時間;edit指令可以找到函數的位置,但前提是make時參數要正確,否則一樣會浪費不少時間
- break & run
- watch
- IO
- binding︰作者有把f5拿回來,這對visual studio使用者是不是很熟悉啊…我是覺得debug 的思路比較重要,速度倒在其次了
2013年2月10日 星期日
emacs 23+的bookmark plus (bookmark+) 學習筆記
http://www.emacswiki.org/BookmarkPlus
別以為看過這篇就算高手了,很多秘技藏在原碼裏啊…(嘖嘖稱奇)
這不就最基本款的嗎?是的,不過它幕後記載了不少東西,使得某些功能更為強大了,例如它會記得這個buffer上次bookmark的名字;嚴格來說它有辦法撈出最近一次的bookmark,所以當它問你這次要給bookmark什麼名字時,按下 `C-M-u' 就直接幫你打出這個名字來,文件上說真的就像實體的書籤一樣,我們通常洗手間都會擺一本連著看很容易睡著的小說,這裏面是一定要夾一個書籤的不是嗎?它就是用來記得上次看到那兒的…
預設在問你要給什麼名字的時候,提示的是這個buffer中曾經設置過的所有bookmark名字;我通常會在文章中copy一段有代表性的文字,在它提示要輸入名字時按下 C-y ,省去打字的功夫。
文件寫一寫要對照原始碼時,總要回去看一下原碼,如果結合org mode在裏面加link,就可以跳轉到原始碼,這不是太好了嗎?就是有這麼好的事,安裝org-bookmark.el後,bookmark就可以成為link的一員以進行跳轉。當然要先按個 C-x r l 把bookmark list先帶出來。
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的說明
當桌面割得亂七八糟時,你會需要它的…
別以為看過這篇就算高手了,很多秘技藏在原碼裏啊…(嘖嘖稱奇)
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而己…
有時間的話一定要好好學一下…
這篇分析得不錯,等我那天有時間來維護自己的 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 的大作…
看來是預裝的,沒什說明,只有跟你說快速鍵盤是 M-, 及 M-.
等一下,這己經很不得了了~~人家純粹c語言都還要搭配 ctags 或 cscope ,你們自家的 emacs lisp 就是要搞黑箱就是了??
然後這又是傳說中的牛人 Steve Purcell 的大作…
emacs中視窗的分割、配置、切換、捲動
分割及配置在上篇說到shell的部分己經談過,接下來要說的是切換。這裏說的切換有兩層含意,一層是輸入焦點轉移到那個視窗(other-window),一個是具有輸入焦點的視窗中,要看到那個buffer的內容(iswitchb)。
傳統上這個指令綁在 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
http://www.emacswiki.org/emacs/WindMove ==> 我偏好這個方法,跟之前提過的winner mode應該可以解決8成以上的問題了
傳統上這個指令綁在 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-的效果
http://www.emacswiki.org/Anything
http://metasandwich.com/2010/07/30/what-can-i-get-for-10-dolla-anything-el/
這個意思是說,輸入焦點在視窗a,但是可以下命令讓視窗b的內容捲動。這個動作實在是時方便了,如果沒有這種動作,那麼就必需要把輸入焦點移到另外一個視窗,捲動它,再把輸入焦點移回來。傳統上這個指令綁在 C-M-v / C-M-S-v 按鍵組合上
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/WindowNavigationhttp://www.emacswiki.org/emacs/WindMove ==> 我偏好這個方法,跟之前提過的winner mode應該可以解決8成以上的問題了
iswitchb 及替代方案
傳統上這個指令綁在 C-x b 按鍵組合上,但是沒有對應的回卷機制,而且與一般win平台上的 C-
http://emacs-fu.blogspot.tw/2009/02/switching-buffers.html
作者的建議是 ido / icycles / anything ,它自己則寫了一個 C-
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的終端機,右下放另一個程式的終端機。
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
昨天開的終端機視窗有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
可用的函式與巨集列表
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是相同的
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)
http://www.emacswiki.org/BookmarkPlus#toc39
http://www.emacswiki.org/BookmarkPlus#toc23
原則上可以,但是目前要先開了*Bookmark List*這個buffer以後, [[bookmark:...][...]] 這個形式的連結才會正確跳轉。 但是用這個功能來標注原始碼等純文字檔,實在是方便…不過我想org-bookmark.el裏面的bookmark-jump要改成bookmark-jump-other-window比較方便…
要把這一大篇看完,實在需要耐心…假設用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以進行事件處理。
在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
依此網頁指示執行以下命令
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 的專案,速度是很快的
安裝
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出來的版本
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”
那是他講的,實際上如果像我一樣 你會在第四步就卡關
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')
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檔並刪除之
不過還是捲起袖子來吧…
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檔並刪除之
訂閱:
文章 (Atom)