2007年10月22日 星期一

Ubuntu 7.10 released!

終於,在10/18傍晚,Ubuntu 7.10正式發佈了!大概在快一個月前有裝過測試版,當時就覺得很不錯,但是因為還有不少bug,不小心弄出問題,所以又裝回7.04。所以這次的release,讓我是又期待又怕受傷害。因為不知道那些問題是否都解決了。
後來,就先拿家裏的desktop來作實驗,用線上升級來安裝,安裝過程一切還算順利;而使用上,大致上也沒啥大問題,執行的效率也相當的好。不過有一點比較不一樣的,原本在7.04有lowlatency的kernel,到7.10卻沒有了,但是多了一個rt(realtime)的kernel?!而7.10已有內建Compiz-fusion了,而且版本還蠻新的,使用上也沒太大的問題(不過有些plugin的預設值跟之前不太一樣就是),整體上來說,還算滿意,所以在20號下午也透過DVD把notebook的7.04也升級了,不過DVD升級的速度好像也是很慢。目前已經確認的問題:
  1. 原本修改/etc/init.d/rc裡的CONCURRENCY=shell來加快開機速度,這方法目前在7.10會出問題,不管在我的desktop or notebook pc都已確認
  2. ATI的fglrx driver無法在新的kernel上進行暫停與休眠,這是已經被確認的bug,目前大概只能等ATI的新driver,不然就是等kernel更新了
  3. amsn如果是透過「作業階段」在開機登入時啟動的話,字型的大小會有問題(可能會大一號或是小一號),但是重開amsn就ok
  4. Swiftfox會不穩(至少我在desktop跟notebook都碰到了)
  5. 7.10在「位置」選單有新增幾個捷徑,不過這些捷徑的建立與讀取似乎有點怪怪的:如果你用繁體中文,系統會自動用中文當目錄名稱,但是切換到不同語系時,可以轉換;但是就是無法只變換捷徑名稱,而不變換目錄名稱。而且,如果目錄被刪除後重建,捷徑就可能會無法重新出現
除了升級到7.10之外,前一陣子又看到一些有關file system的說法,所以又把file system換成JFS了。目前感覺用JFS似乎有比XFS快一點點,不過似乎有時候會有點點頓的情況發生,不過JFS的cpu usage有比XFS少,而且GRUB可以支援JFS,所以不用另外切一個ext3給/boot。不過目前似乎沒看到JFS的defrager,不過可能暫時還不需要吧. (XFS在做大量的讀寫之後,他的fragment factor會變得很大,那時候就可能需要作online defrag了;難怪之前用XFS時有越來越慢的感覺)

Sun Tech Day - Java 2007參加心得

2007.10.19台灣昇陽公司在台北國際會議中心舉辦了今年的Java大會。原本在8月份的時候想說今年是不是停辦了,因為往年都是在7~8月份的時候辦,沒想到今年卻是拖到了10月中。今年的規模變小了,往年都是2天的議程,今年變成只有一天,不過費用也變便宜XD。另外今年的贊助廠商也變少許多,不過另一個好處是今年不像前兩年,有半強迫逛攤位的活動。今年的議題主要當然是Java(廢話!),不過另一個主題應該是Solaris吧!除了在大會一開始的演講裡有不少對Solaris的推薦與吹捧,在當天的議程裡也有安排了兩場跟Solaris有關的,只是因為我個人目前還不需要去熟悉與了解Solaris,所以沒去~~。
老實說,今年的題目有些是不錯,但是講師的表現卻不是很理想。今年似乎大部分的場次都是由中國過來的Sun的講師主講居多?!然而,這些講師的表現,說實在的,只能說是「差強人意」,當天看到的幾個他們做的Demo,居然沒幾個是在沒出錯的情況下完成的...唉...。至於有關主題的心得,有去參與了JDK發展情況的那場,大致上對未來的JDK 7有更多一點的了解,算是還蠻期待的吧;而最讓我驚艷的,莫過於JavaFX那場了,雖然說講師並沒有講到太多有用的東西,但是那些Demo的效果實在是太驚人了!對JavaFX開始有更多的興趣與期待了!另一個覺得還不錯的,就是JavaME與Mobile Ajax、SVG的結合應用,感覺也是讓人耳目一新。
說真的,今年我並沒有去參與server-side相關的,除了最後一場有關SOA、BPEL。因為今年server-side上面的技術發展似乎沒有啥太大的改變。反倒是client-side上面的UI與互動性這方面的技術的進展,令人感到興奮!個人認為,JavaFX的出現讓原本在client-side比較貧弱的Java重新露出一線曙光,也許真的可以讓Sun也有機會與Adobe、M$一較高下也說不定。不過,就怕Sun自己又亂玩,把它搞砸了。現在心理想的,就是希望找個時間好好玩一下JavaFX~

2007年9月27日 星期四

Install nVidia VGA card driver in Ubuntu

自己之前在自己的notebook上安裝過數次Ubuntu,從6.06~7.04,所以深知ATI的顯示晶片在Linux上的支援度並不理想。之前就有聽說nVidia的卡就要好的多,所以這次利用空的HDD在我的desktop上安裝Ubuntu 7.04,不過似乎跟我想像的不太一樣,也是碰到不少麻煩。最後發現, 安裝nVidia顯示卡driver有兩大方式:
  1. 安裝套件庫內的driver:
    1. 這是最簡單的方式,可以使用synaptic或是在console視窗內使用apt-get來安裝。一般而言,最新的顯示卡是安裝nvidia-glx-new或是nvidia-glx;較舊的則是nvidia-glx-legacy。詳情可以參考:HOWTO: Latest NVIDIA drivers - Method 1
  2. 手動安裝官方driver: 套件庫裡的drvier雖然比較好安裝,但是由於版本比較舊,所以比較可能有問題,對於最新的顯示晶片(Geforce 7xxx,8xxx系列)的支援也可能比較不夠。個人在參考過HOWTO: Latest NVIDIA drivers - Method 2Installing NVIDIA Linux graphics drivers on recent distributions (FC, Ubuntu, etc)之後,大概發現只要完成幾個步驟就可以很輕鬆的安裝完成:
    1. 將需要的相關套件更新到最新版:
      sudo apt-get install linux-headers-generic build-essential gcc xserver-xorg-dev pkg-config
      ,其中linux-headers請根據安裝的kernel種類來安裝,如lowlatency的kernel就必須安裝linux-headers-lowlatency
    2. 移除目前安裝的nVidia driver:
    3. 修改/etc/default/linux-restricted-modules-common,確定有以下內容:
      DISABLED_MODULES="nv nvidia_new"
    4. 刪除以下檔案
      1. /etc/init.d/nvidia-glx
      2. /etc/init.d/nvidia-kernel
      3. /lib/linux-restricted-modules/.nvidia_new_installed
    5. sudo /etc/init.d/gdm stop
      按下Ctrl+Alt+F1切換到console mode,然後登入後輸入
    6. 以sudo執行下載的nVidia官方driver安裝檔,所有的選擇都選擇Accept或是Yes,除了要求連線下載符合目前kernel的預先編譯好的driver。(若是只是更新driver,則最後的修改xorg.conf檔的部份也可以選擇No)
    7. 完成安裝後,可以輸入
      sudo /etc/init.d/gdm start
      來重新啟動X-Window,或是重開機。若是安裝成功,則會看到X-Window的登入畫面。
    8. 進入X-Window之後,在console視窗輸入
      sudo gedit /usr/share/applications/NVIDIA-Settings.desktop
      ,然後填入以下內容之後存檔:
      [Desktop Entry]
      Name=NVIDIA Settings
      Comment=NVIDIA X Server Settings
      Exec=nvidia-settings
      Icon=
      StartupNotify=true
      Terminal=false
      Type=Application
      Categories=Application;System;
      ,然後就可以在「應用程式->系統」中找到nVidia的X server設定程式了(若是更新driver,則不需重複進行此步驟)
    9. 啟動nVidia X server設定程式,然後設定自己需要的設定
基本上需要注意的事項也是不少,不過整體來說還不算太難安裝,有一點必須注意的是,在安裝driver之前一定要關閉gdm,否則也會導致安裝失敗。
另外,有幾個常用的option可以設定在xorg.conf的Device or Screen區段內:
  1. Option "NoLogo" "true" ---- 關閉進入X-Window時顯示的nVidia logo畫面
  2. Option "AddARGBGLXVisuals" "true" ---- 避免在使用Compiz-fusion or Beryl時有視窗邊框消失的問題
  3. Option "Coolbits" "1" ---- 啟動超頻選項
更詳盡的Option設定,可以參閱nVidia官網上的資料

基本上,Nvidia對於Linux的支援真的是比ATI好太多了!透過AIGLX來跑Compiz-fusion的感覺就是不一樣,不但效率很好,也比較不吃resource。據說ATI也在開發支援AIGLX的driver,只是會是怎樣....很難想像啊...

2007年9月17日 星期一

動態產生form欄位

在wicket中,幾乎所有的web元件都要有對應的html element+wicket id,因此要做到動態產生form內的欄位幾乎沒辦法。不過,最近同事在研究最新版的jtrac的source code,發現透過ListView + Fragment + BoundCompoundPropertyModel就可以做到:
  • ListView主要是用來作為動態新增項目layout的部份,因為它可以根據所給予的model或是List內的內容來產生應該要有的項目。
  • Fragment主要是用來簡化設計,因為原本Fragment就是一種不需要獨立的html template file的一種特殊Panel,所以可以運用來呈現每個ListItem裡的欄位
  • BoundCompoundPropertyModel主要是用來將POJO跟wicket component之間的綁定,採取更彈性的方式來實現。
事實上,應該不是只有以上3種東西的結合才做的出來,只是目前這三種東西的結合是比較容易的作法。主要的關鍵應該是在於如何在runtime的時候,才去產生form欄位的html與必要的code,這通常是需要像是ListView或是Loop這類可以重複產生item的元件。而雖然可以產生重複的item,但是item的內容還必須不一樣,所以才會需要Fragment(這邊也可以用Panel來達成,只是用Panel就會比較麻煩)。有了不同的item之後,另一個問題就是元件與實際data model之間的連結關係,使用BoundCompoundPropertyModel是可以用比較彈性的方式去做到,但是用其他的Model應該也可以,只是可能會比較困難。

有一點需要注意的是:由於是透過ListView來產生item,所以當發生validate error時而回到form時,ListView是會重新再產生新的item,而新的item會去讀取model內的值。但是,由於validation失敗,所以model是不會被更新,所以所有的item都會回到一開始的值,而不是之前輸入的值,這對於很大的form來說是會對user造成困擾的。所幸,可以透過ListViewsetReuseItem(true)來避免重新產生新的item,而是沿用先前產生的,所以就可以保留validation之前的輸入值。

P.S: 雖然說理論上不一定要用ListView,但是由於所知只有ListView才有setReuseItems(),所以若是使用Loop或是其他非ListView的subclasses的元件,可能要自己想辦法處理重複產生新item的問題。

2007年9月15日 星期六

Google Desktop Search for Linux

Google desktop在Windows一直是蠻有名的軟體,而在前一陣子,他也終於推出for Linux的版本了。除了可以透過連到google的網頁去安裝以外,也支援apt的安裝方式,以下是安裝的步驟:
  1. 開啟console視窗並輸入# sudo wget http://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -來匯入憑證
  2. 然後打開Synaptic,進到[設定]->[套件庫]->[Third party software],加入 deb http://dl.google.com/linux/deb/ stable non-free
  3. 然後按下重新載入,然後就可以用搜尋找到Google desktop了
不過,有點可惜的是這個版本只有提供search的功能,沒有像Windows版那樣有很多豐富的小軟體可以使用

2007年9月13日 星期四

Ubuntu字型設定

原則上是參考中文 fontconfig 設定檔裡的設定,但是由於這裡面的設定有些部份不是很喜歡,所以又自行修改了某些地方:
  1. 有關所有字型的AA、hinting、autohint:
    <match target="font">
    <edit name="antialias" mode="assign">
    <bool>true</bool>
    </edit>
    <edit name="hinting" mode="assign">
    <bool>true</bool>
    </edit>
    <edit name="autohint" mode="assign">
    <bool>false</bool>
    </edit>
    </match>
  2. 關閉英文小字AA:
    <test name="pixelsize" compare="less">
    <double>8</double>
    </test>
  3. 關閉中文字體小字AA:
    <test name="pixelsize" compare="less_eq">
    <double>16</double>
    </test>

切換Touchpad開關

NB的Touchpad預設是一直開啟的,這對於喜歡使用滑鼠的我來說其實是種困擾。從google上找了一些資料之後,可以透過一些方式來做到類似Windows下的切換:
  1. 首先在/etc/X11/xorg.conf中找到以下區段:
    Section "InputDevice"
    Identifier "Synaptics Touchpad"
    然後在該區段裡面加上
    Option "SHMConfig" "on"
    ,之後重啟xwindow
  2. 可以在console視窗輸入
    synclient TouchpadOff=1
    就可以關閉touchpad,
    synclient TouchpadOff=0
    則是開啟;或是執行
    /etc/acpi/asus-touchpad.sh
    ,系統會自動切換開啟狀態
  3. 可在Compiz-fusion中設定熱鍵呼叫asus-touchpad.sh,效果更佳
P.S: 目前此作法沒辦法透過插拔滑鼠來切換touchpad的開關