2006年7月30日 星期日

7月30

0

幾日

細細思量

思念

是否言喻

過去字跡

隱晦,如幽谷中的紅花

靜靜...

也許能開滿一片


花朵

綻放沒有痕跡

見到時

以如斯嬌艷

彷彿天生如此

心底的思念

如此...也不見開始

不著痕跡的已綻放如斯


花香

挑弄著嗅覺

令人眷戀

賦予無形的感覺

像白雲依戀著藍天

Read more

2006年7月22日 星期六

linux下java 1.5中文設定

0

1.
首先在java目錄下的jre/lib/fonts下建立fallback目錄
例如

$sudo mkdir /usr/lib/jdk1.5.0_05/jre/lib/fonts/fallback
2.
然後在fallback目錄下放置中文字體的檔案或連結
$sudo ln -s /usr/share/fonts/truetype/arphic/uming.ttf
/usr/lib/jdk1.5.0_05/jre/lib/fonts/fallback/
3.
進入fallback目錄中建立fonts.scale檔案
$cd /usr/lib/jdk1.5.0_05/jre/lib/fonts/fallback/
$sudo mkfontscale
4
最後將fonts/fallback/fonts.scale檔的內容貼到fonts/fonts.dir
兩個檔案的第一行數字加總到fonts.dir內

測試的話可以ControlCenter試試,若叫出來是中文的那麼應該就可以了


$/usr/lib/jdk1.5.0_05/bin/ControlPanel

Read more

tcl/tk 8.5a4 and amsn

0

首先先安裝編譯需要的相關套件,make及gcc就不說了

$sudo apt-get install libxft-dev

接下來編譯tcl及tk

  1. 首先先至tcl/tk官方站下載8.5a4套件下來並解開
    $tar zxvf tcl8.5a4-src.tar.gz
    $tar zxvf tk8.5a4-src.tar.gz
  2. 接著先編譯tcl
    $cd tcl8.5a4/unix
    $CFLAGS=-Os ./configure --prefix=/opt --enable-gcc --disable-threads --disable-shared
    $make clean; make; sudo make install
    $cd ../..

    其中第二個指令中--prefix是指定安裝位置,我們將裝在/opt下
  3. 然後編譯tk
    $cd tk8.5a4/unix
    $CFLAGS="-Os -DTK_USE_INPUT_METHODS" ./configure --prefix=/opt --enable-gcc --disable-threads --disable-shared --enable-xft --disable-symbols
    $make clean; make ;sudo make install

    其中CFLAGS裡面TK_USE_INPUT_METHODS是開啟tk的XIM,一般來說應該configure會自動設定,但經過測試得自己帶上參數
  4. 最後修改/usr/bin中的link即可
    $sudo ln -fs /opt/bin/wish8.5 /usr/bin/wish
    $sudo ln -fs /opt/bin/tclsh8.5 /usr/bin/tclsh

接著編譯amsn

  1. 先至amsn官方站下載套件並解開
    $tar zxvf amsn-0.96RC1.tar.gz 或者 $tar jxvf amsn-0.96RC1.tar.bz2
  2. 編譯amsn
    $cd amsn-0.96RC1
    $./configure --prefix=/opt
    $make clean; make; make install
  3. 安裝完後就大功告成了,可直接執行/opt/bin/amsn或者在視窗選單中新增amsn程式

Read more

奇怪的io scheduler行為

0

以前使用2.6.12核心時我習慣使用deadline為scheduler,改為dapper後,kernel為2.6.15,前幾天才想到io scheduler沒有更改,遂將他改為deadline... 接著...傻眼..2.6.15下怎改用deadline反而kubuntu有變慢的感覺,理論上已有刻板印象會變快結果反而覺得慢了,這絕對不正常,測試另一台kubuntu結果比較不明顯,但是也稍頓...結果我把scheduler都改為cfq

吼~~視窗反應變快是一回事,打開還沒看完的小說...130k-140k的html檔,因為是簡體,開起來都是亂碼,以前更改字碼為gbk時都得等上一段時間,現在居然馬上出來了...怪怪...這好像有點誇張,最近並沒有對系統有做什麼調整,頂多就是關了konqueror下的ipv6...那對local file應該沒影響吧...

抱著疑惑的情緒享受變快的kubuntu

P.S. 將web server的scheduler由預設的anticipatory改為cfq,blog的速度也變快了...

P.S.2. 真三國無雙四PC版不能打...!!!ㄜ,不是,是要說要修改scheduler的話可以改/boot/grub/menu.lst 應有一行如下
kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/hda3 ro quiet splash

可新增elevator=cfq,變為
kernel /boot/vmlinuz-2.6.15-26-386 root=/dev/hda3 ro quiet splash elevator=cfq

若要以後修改核心都會帶上這個參數,可在其中一行kopt=root=/dev/hda3 ro,一樣在後邊加上elevator=cfq即可

Read more

70%完美比例

0

昨天下午心血來潮,忽然就想找個地方吃個下午茶,馬上想到之前網路上看到在南京東路上的巧克力飲品專賣店...決定了,就是它...接著當然就是找伴囉,出去享受美食我可不習慣一個人,不過很可惜小女孩不在線上,不過他也不見得會來就是了...

後來死黨小高說要請,當然就不用在猶豫啦,到小高那邊在騎著機車去,這小子最近瘸了腿子...不過店面稍小,我們在寧安街到北寧路那邊繞了兩圈才發現店在那...

由於咱們沒帶相機,所以一切只能以在下用文字敘述...寫完也差不多毀了,呵呵

一進入店門有個五層的巧克力噴泉,看來大概有1M吧,真想直接把手伸上去...不過應該會被店員海扁

店內蠻小的,只有入口處有個半圓沙發可以坐比較多人,最後變好像也有方桌吧,其他就大多就是兩人小座位

提供的東西...能當正餐的"大概"只有巧克力鍋吧...其他的都是下午茶類的小品囉,巧克力熱飲大概是6種,冷飲2種,冰沙比較多10種,其他的...沒注意,我是去吃巧克力的嘛!

我們結果點了個下午茶套餐180跟一個暖暖鍋180

下午茶套餐是一杯巧克力一塊蛋糕跟"一顆"巧克力,是的,一顆...而且他40塊台幣...因為我原本應該是160吧,不過我換成大杯的所以補差價,白巧克力、焦糖瑪其朵蛋糕、一顆包酒的巧克力(忘了名字...)

暖暖鍋,一壺鮮奶,一個蠟燭鍋,一盤巧克力,巧克力有四種口味可以選擇其一,自行調整加入朋友選的是70%黑巧克力(這位爺在路上還奇怪我不愛吃甜,怎會找他去吃巧克力,我跟他說黑巧克力是苦的,他還說如果是苦的要宰了我!!怎麼點了70%!!)

只能說這是我們第一次花了這麼多錢吃巧克力,白巧克力不錯,真的蠻香的,70%的黑巧克力塊味道也很香,跟always的很不一樣呢,雖然東西真的稍少,不過拿來當下午茶真的不錯,錢得多賺點就是了...其他還有好多種,我想每種都去吃吃看!

P.S. 最後偷人家的blog上的照片...跟我們當天點的東西差不多,作者若抗議,請告知,謝謝

P.S.2. 居然被笑說我們兩個男生去吃......

Read more

2006年7月5日 星期三

思考泛型設計的學習 2

0

上次說到在泛型庫上,目前就是介意必須提供整個源碼,而無法只提供共享庫,其主要原因來做個簡單的說明吧!先看以下程式碼
//file print.h
#include < iostream >

template < class T >
void print(T &data);

//file print.cpp
#include "print.h"
#include < iostream >

using namespace std;

template < class T >
void print(T &data)
{
cout << data << endl;
}

//file main.cpp
#include < string >
#include "print.h"

using namespace std;

int main()
{
string s("Hello" );
print(s);
}

在這邊,我們提供一個function templare,簡單的做個輸出,而.h檔裡面放置宣告,實做細節在.cpp檔中,而我們的主程式則是在main.cpp,在裡面宣告一個字串並初始為Hello,然後用print輸出他

接著我們試著編譯我們的程式
$g++ main.cpp print.cpp

不過卻會發生一個錯誤
/tmp/ccRlq0pc.o: In function `main':main.cpp: ( .text+0x54): undefined reference to `int print, std::allocator > >(std::basic_string, std::allocator >& )'
collect2: ld 回傳 1

有趣的是錯誤的來源,居然是發生在ld,也就是linking的時候,程式的生成過程基本上是 源碼--編譯器--> 中介碼--組譯器--> 二進位碼 --連結器--> 執行檔

在連結時期會將所有相關的code組合起來,包括你所使用的其他函式庫,或分散其他部份的源碼所產生的二進位碼,而問題的發生便是連結時,找不到你所使用的print的定義,也就是寫在print.cpp裡的內容,或者說找不到其具現化(實體化)的部份

可以在main.cpp中加入一行
#include "print.cpp"

或者將定義一併寫入print.h中,而後者被稱為置入式模型(inclusion model),如此linker便可依據源碼,具現化所有的物件,詳細討論可見C++ template一書第六章...

所以呢,如果真想只提供編譯後的共享連結庫,恐怕得在編譯器或連結器上採用不同的作法,不然就是以泛型庫做為基本組件,而在自己編寫的庫中都會被具現化,提供出來的則是包裝後的產品,不會在用到模板參數(template parameter)...不知道ACE裡面怎麼結合這些設計,再找時間來看看

Read more

 
Design by ThemeShift | Bloggerized by Lasantha - Free Blogger Templates | Best Web Hosting