星期六, 6月 14, 2008

好用的Vim Taglist

以前用慣了C++ Builder,現在使用Vim已成了日常必用的編輯器,但還是很希望能有類似Project manager的界面。
前幾天在 Vim.org 上找到這個 Taglist script 感覺還不錯。

在 Ubuntu 下的安裝方式如下:
  1. # sudo apt-get install ctags <-- 一定要先裝好 ctags package, taglist is depend on it.
  2. # cd /usr/share/vim/vim71
  3. # sudo unzip taglist_45.zip
  4. # sudo vim
    :!cd doc
    :!helptag . <-- 此為重新做 help 裡面所有用來導覽的標籤

星期三, 4月 18, 2007

FreeBSD 更新 port tree 問題("missing key: categories: Cannot read the portsdb")

  前幾天為了到 Server 上做某些修正作業,想到 portupgrade 可能有點舊,乾脆升級 portupgrade 後再順便做一次 portupgrade -Fuv vim-lite 卻發現一直無法成功 upgrade,訊息如下:

myserver# portupgrade -Fuv vim-lite
---> Session started at: Wed, 18 Mar 2007 16:08:55 +0800
[missing key: categories] [Updating the portsdb in /usr/ports ... - 16648 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........
7000.........8000.........9000.........10000.........11000.........12000.........13000
.........14000.........15000.........16000........... done]
missing key: categories: Cannot read the portsdb!
database file error

  第一個想到的問題是 /var/db/pkg/pkgdb.db 是不是掛了,但砍了再重建還是一樣;第二個想到的是 /usr/ports/INDEX*.db,結果還是沒有解決問題。最後沒辦法了,把 UPDATING 翻來看看,眼睛停在這裡許久:

20070102:
AFFECTS: users of sysutils/portupgrade
AUTHOR: sem@FreeBSD.org

If you have a problem with upgrading the tools from version 2.2.1 and less,
remove the package with pkg_delete portupgrade\* command and reinstall it
from scratch. Remove /usr/ports/INDEX*.db and run portsdb -u.

  這時才恍然大悟,很久沒看 UPDATING 果然會出狀況,於是依序進行下例 Shell script,我的 package database 才活了過來,簡直是痛哭流涕。

# pkg_delete portupgrade\*
# rm /usr/ports/INDEX*.db
# cd /usr/ports/ports-mgmt/portupgrade
# make install clean
# portsdb -u

星期五, 4月 13, 2007

Vim 巨集應用 Part.1 for C++

  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <ctime>

  寫程式時常常會遇到以上這樣重覆著 #inclu.... #inclu... 的輸入動作,這是非常無聊的一件事。我們來看看如何利用 Vim 強悍的巨集錄製功能來改善這類的輸入動作。
  首先,把一定得自己動手打字的部份先完成,利用 i 進入 insert-mode,bla bla ....,完成後 <esc>回到 normal-mode:
  1. iostream
  2. vector
  3. algorithm
  4. ctime
  使用 :1 <enter> 移到第一列,按下 qa 啟動巨集錄製功能(會將錄製內容存放在 a 暫存),分別輸入 I#include <<esc>A><esc>j ,然後輸入 q 結束錄製。完成後您的程式碼應該長這樣:
  1. #include <iostream>
  2. vector
  3. algorithm
  4. ctime
  接下來要怎麼把剛剛的動作應用在下面的三列上呢?我們現在的游標應該是停在第二列,請按下 3@a ,您的程式碼應該會被修改為這樣:
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <ctime>
  感受到 Vim 的 power 嗎?這只不過是冰山一角而已,它還有很多的功能等著我們將它變成日常的習慣,就如 Bram Moolenaar 所說的:make it a habit

星期三, 4月 11, 2007

習慣有 Vim

  某一天的上午,照往常的在公司開啟電腦工作,打開工作必用的 Lotus Notes client,例行性的開始處理公務 Mail,也在桌面上下載了幾個 .txt 檔,也很直覺的『點兩下』以M$的記事本打開編輯。
  就在這個時後發生一件令人驚訝的事,記事本不聽話了,按了方向鍵後,不但沒有移到應該到位的位置,反而出現 "jjjjjAbrown",這時的大鳥才驚覺『已習慣用 Vim 』這件事實。老實說,Vim 真的改變了大鳥在文字編輯器上的操作習慣,用 Vim 寫程式或文字檔已是一種生活樂趣。
  在 Vim 的官方網站有這樣的一份 演講稿,所推行的就是『習慣用 Vim』,就如同演講內容,只要能突破編輯上最耗時間的關鍵,就會把 Typing 的效率提升到一定的水準,而不是把時間浪費在重覆性且乏味的編修工事上。

星期五, 1月 12, 2007

CVSNT 在FreeBSD 下設定 administrators

CVSNT 本來給自己用都好好的,但昨天要放給 members 時,發現自己沒辦法改 user password,Server 回應 Only administrator 才可以改,查了老半天才發現自己的認證是使用 OS 本身的 auth,原來要將CVSROOT/config 中的 SystemAuth=no,然後在CVSROOT下建立一個 admin 的檔案,把自己加入後,即可使用 cvsnt passwd。

星期三, 6月 14, 2006

Lotus Notes Formula 惱人的問題

最近在寫 Formula 時發現 @round 不太聽話,後來去扒 IBM 官方的文件才知道,R5.x、R6.x 都會有四捨五入的問題。

如果要做整數的四捨五入,要寫成 @round(@round(var;0.00001);1)

原因呢? 本人猜測,因為在公式數字運算的過程中會改變 var 的精確度,為了確保在 @round 之前的精確度和我們想像的一樣,所以先取一次 0.00001 的捨入值,再取一次整數的四捨五入。

Ex: 取小數點一位,則公式寫法為 @round(@round(var;0.00001);0.1)

ref. Formula @Round and LotusScript round do not work as expected or reliably in all cases FROM IBM

星期日, 6月 11, 2006

Google Spreadsheet 試用心得



前幾天,看到各大網站報導 Google 大神要挑戰 M$ 的 Excel,做了一套 Web SpreadSheet,於是手癢的去 Google labs 扒扒看,果然,有 SpreadSheet 這個 Project,二話不說,快去 Sign In....

但,令人沮喪的是,要等邀請回函後才能使用 Orz

今天起床後,懶洋洋的打開 GMail,赫然發現 Spreadsheet 的邀請寄來了....:P

嗯~不失所望,Google 不愧為 AJAX 的應用元老,貼一張 Screenshot 給大家瞧瞧

基礎的東西大多有了,如: Sorting, Formula, Merge cell, Ctrl-D 也有作用...
雖然目前沒什麼想法可以提供給 Google 老大,還是很期待它愈做愈好