十二月 25, 2009

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» 我是個愚蠢的傢伙 --- NetBeans 用了快一年,才想到「自動補齊」是種選項


年初時,把我的常用編輯器 vim 改成 NetBeans + jvi 的工具以應付多專案、多檔案及多版本比對的混亂模式。

這混亂模式不是 vim 檔案編輯模式的錯,而是混亂工作流程造成的。如果只在一個資料夾、幾個簡單文件要編輯,我還是會用 vim 處理的。

在使用 NetBeans + jvi 的過程中,有一個現象一直困惱著我,那就是 NetBeans 會偵測我打入的字,並作文法檢查及自動完成函式名稱,這『自動化』的行為,理論上,應該會讓編輯者比較方便才是,但因為我用的是 jvi plugin ,所以我已習慣另一種自動補齊行為: Ctrl+p ,而且我往往不需要 NetBeans 幫我在打『點』時作自動補齊,因為我不需從 N 個函式名稱、屬性中挑出想要的,而是先輸入前幾個字,然後再用 Ctrl+p 來補齊。

這個自動化模式讓我寫程式碼的速度受到限制,但用久了也就習慣了,畢竟寫程式碼的瓶頸並不是文字輸入速度,而是思考速度。

今天我莫名其妙地想到,這個「自動補齊應該是一種選項」才是呀! NetBeans 怎麼會預設立場認為全天下的程式設計師都喜歡這個行為,一定不只有我是因為使用 jvi plugin 才不愛用 NetBeans 內建的自動補齊,也有別人就是不喜歡「自動補齊」才對呀!

於是,我翻了一下 Options ,在 [Editor] 中的 [Code Completion] 發現關閉這個行為的選項。天呀! 我用了快一年,才想到這件事。

「IDE必備自動補齊」的先入為主想法,讓我莫名其妙地忍受這個小問題將近一年。

六月 2, 2009

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» colorful source code in Latex(written in reStructed Text)

之前提到使用 Vim 的 plugin VST 來撰寫可自動轉換 latex 格式的簡單結構文章。VST 相當容易使用,不過在轉換程式碼到 pdf 格式時,它無法使用類似 2html 的技巧來讓程式碼變色。

所以我參考了 Listings Package 的語法,稍為修改了 VST 的程式碼(其實只是加上幾個宣告而已)。

 1 diff -r 56c0141f8add Configure/vim/plugin/vst-x.vim
 2 --- a/Configure/vim/plugin/vst-x.vim    Tue Jun 02 00:12:23 2009 +0800
 3 +++ b/Configure/vim/plugin/vst-x.vim    Tue Jun 02 00:14:07 2009 +0800
 4 @@ -4541,6 +4541,18 @@
 5                         \.'\usepackage{longtable}'."\n"
 6                         \.'\usepackage{tabularx}'."\n"
 7                         \.'\usepackage{amsmath}'."\n"
 8 +            \.'\usepackage{color}'."\n"
 9 +            \.'\usepackage{listings}'."\n"
10 +            \.'\definecolor{Brown}{cmyk}{0,0.81,1,0.60}'."\n"
11 +            \.'\definecolor{OliveGreen}{cmyk}{0.64,0,0.95,0.40}'."\n"
12 +            \.'\definecolor{CadetBlue}{cmyk}{0.62,0.57,0.23,0}'."\n"
13 +            \.'\lstloadlanguages{Python,PHP,Ruby,Bash,Perl}'."\n"
14 +            \.'\lstset{language=Python,frame=ltrb,framesep=5pt,basicstyle=\normalsize,'."\n"
15 +            \.' keywordstyle=\ttfamily\color{OliveGreen},'."\n"
16 +            \.' identifierstyle=\ttfamily\color{CadetBlue}\bfseries,'."\n"
17 +            \.' commentstyle=\color{Brown},numbers=left,backgroundcolor=\color{white},'."\n"
18 +            \.' stringstyle=\ttfamily,escapeinside=``,identifierstyle=}'."\n"
19 +            \."\n"
20                         \.countrysettings."\n"
21                         \.'\renewcommand\CJKglue{\hskip -0.3pt plus 0.08\baselineskip}'."\n"
22                         \.'\linespread{1.382}'."\n"

這樣就可以在 vim 中撰寫如下語法,來讓程式碼在 pdf 中變色了:

.. raw:: latex

\begin{lstlisting}
import sys
print sys.getdefaultencoding()
sys.path.append(".")
sys.path.append("/home/hoamon/`桌面`")
from hashlib import md5
from random import random
for i in xrange(10): print md5(str(i+random())).hexdigest()
def whatever(x): print x + 3
whatever(10) # 13
#`中文要作跳脫,使用符號為[數字鍵1]左邊的那一個 \\``
\end{lstlisting}

.. raw:: latex

\lstinputlisting{xxx.py}


下圖就是成果啦:

沒有網頁格式的那樣多采多姿,但聊勝於無呀!

五月 17, 2009

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» reStructured Text + CJK Latex: footnote 破壞文句階層問題

之前考博士班時,曾把自己的履歷用 Latex 寫出來。但是這太麻煩了。文章結構不難,但要多打很多我記不起來的標準語句,雖然可用 vim 樣版解決,但寫 latex 版的文章機會實在是太少了,除了履歷、期刊論文外,一些 blog 文章、計劃書、說明檔都是用類 wiki 的語法寫下來的。所以會少了很多時間記住 latex 語法。

最近開始寫報告及論文了,重新把 CJK Latex 安裝回我的 Ubuntu ,並回顧(複習)之前的 Latex 語法,覺得十分生疏。也就研究一下 Linux 上如何把 rST 格式轉 latex 的技術。還滿簡單的。我是結合 vim 來作轉換的動作。

但是在一個使用 footnote 的地方,無論我怎麼設定,它(rST)在轉 latex 時,就是會跑掉。

我的文句如下:

    在歷史的不透明性中,我們只能把垃圾資料送進模式(不一定正確)中,並得到垃圾預測 [#]_ 。

.. [#] 既然從歷史資料,我們無法歸納準則,從而避免錯誤,達到以古為鏡,可以知興替。
那麼整個歷史學科還有存在的必要性嗎? 這一點,是我這個歷史門外漢的疑點。

最後在第四部中,說明幾個如何面對「未來不可預測」的方法,
像是儘可能地嘗試,別擔心小失敗。

轉成 pdf 後,發現「最後在第四部中…」這一句也會變成 footnote 中的文句。

而如果使用:
    在歷史的不透明性中,我們只能把垃圾資料送進模式(不一定正確)中,並得到垃圾預測 [#]_ 。

.. [#] 既然從歷史資料,我們無法歸納準則,從而避免錯誤,達到以古為鏡,可以知興替。
那麼整個歷史學科還有存在的必要性嗎? 這一點,是我這個歷史門外漢的疑點。

最後在第四部中,說明幾個如何面對「未來不可預測」的方法,
像是儘可能地嘗試,別擔心小失敗。

則「最後在…」的文句其階層不同於「在歷史的不透…」。

最後,我終於找到解法了,就是把 footnote 解釋文句放置於該段落的最後段,如此一來,它就不會破壞文句階層了。其最後結果如下:
    在歷史的不透明性中,我們只能把垃圾資料送進模式(不一定正確)中,並得到垃圾預測 [#]_ 。

最後在第四部中,說明幾個如何面對「未來不可預測」的方法,
像是儘可能地嘗試,別擔心小失敗。

.. [#] 既然從歷史資料,我們無法歸納準則,從而避免錯誤,達到以古為鏡,可以知興替。
那麼整個歷史學科還有存在的必要性嗎? 這一點,是我這個歷史門外漢的疑點。


嗯~這個排版問題,我花了二個小時。可見我多麼要求排版品質

三月 3, 2009

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» 為什麼我用 Netbeans 作網頁程式開發平台

這都怪 NetBeansMercurial 整合的太好了。

原本我都是用 Gvim 來寫 Web-base 程式的,事實上,我的 Gvim 也調校的不錯,有 File Tab 、 Class/Function Navigator 、 Tab Complete ,而重要的是它還有 1G, G, yy, dd, cw, <ctrl>+f, <ctrl>+b, H, M, L...等。

不過,當我要比對修改後的程式時,單純只用 hg diff|colordiff|less 就顯得有點薄弱了。

而這時,我發現 NetBeans 編輯器可以整合 vi key-binding ,天呀! 這是多麼棒的一件事,之前我在試用 Eclipse 時,就覺得它的 vi key-binding 效果不是很好用,而且還要花錢買,讓我打消了轉換平台的欲望,但這個 NetBeans + vi 的功能就實實在在地滿足了我的需求。

更棒的是, NetBeans 整合版本控制的功能比 Eclipse 好。在 Eclipse 中,所謂的版本控制只不過是把我在 shell 裡用的指令,放進它的 menu 中而已。但 NetBeans 卻可以讓你在 Editor 中,實際看到程式差異並選擇回復。而在設定方面, Eclipse 的 menu/option/perspective 實在太多了, 常常讓我搞不懂,這玩意到底要到那去找。

令人驚奇的是 NetBeans 還結合了 jdbc 的功能讓我可以把它當作是 Mysql/PostgreSQL 客戶端介面使用。這也一併讓我省了設定 phpMyAdmin 的功夫。 NetBeans 真的作到了 One Stop Shopping 。

在安裝上, NetBeans 6.5 也比 Eclipse 3.X 來得簡單, Python, Mercurial 它已內建,我只去了 http://jvi.sourceforge.net/ 下載 vi plugin 。況且,之前我在安裝 Eclipse 時,有些機器會遇到裝不起來的情況,這也讓我頭痛呀~ 害我先將安裝成功好的 Eclise 打包起來,然後看誰需要,就整個給他。

只是使用 NetBeans 我得付出一個代價, NetBeans Editor 的反應略比 Gvim 慢一點,雖不致造成我的困惱,但就是感覺得到。我想這也是沒辦法地,因為 NetBeans/Eclipse 之類的 IDE 平台還得即時看你輸入的單字去找它相關的說明,以及檢驗文法是否錯誤。

二月 16, 2008

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» firefox add-ons: 「It's All Text!」

在網頁上留言,寫到一半時,電腦當了,你會不會覺得很 X 。

請使用 Firefox 擴充套件: It's All Text!

它讓你在編寫 <textarea> 輸入框時,可以另外叫出你偏愛的文字編輯器,然後在存檔時,它可以同步回原本的輸入框。

這麼作,有兩個好處:

  1. 是使用順手的編輯器寫文件,像我實在超喜歡用 VIM 的,我就可以在任何網站寫文章時,還是使用 VIM 。
  2. 是當你存檔時,它可以在你的個人電腦上存一個備份,這樣,就算你打字到一半,電腦當了,你所打的文字都還會在個人的硬碟裡。
下圖紅線所劃即是文章內容存在我電腦裡的位置。

biggo.com.tw

A Django site.