星期三, 12月 27, 2006

擠壓你的檔案系統

/***********************************
大肥警告!
Big Fat Warning!

這篇文章裡提到的技術可能讓您的資料爆炸,請斟酌使用!
The techniques introduced in this article may blow your data, use them at your own risk!
***********************************/

最近總覺得硬碟很慢... 應該說,作一些需要磁碟 I/O 的動作的時候,感覺硬碟一直嘎啦嘎啦的上氣不接下氣。所以有了這樣的想法:

  1. 現在 CPU 速度呈指數成長
  2. 磁碟傳輸速度呈線性成長(大部分的瓶頸在磁頭讀寫動作)

既然如此,何不適當的要求 CPU 作多一點計算,減少磁碟 I/O 呢?於是就想到要壓縮檔案系統。

可是... 要怎麼壓縮呢?可以從兩個地方著手:

  1. Loop Device Level:使用如 cloopcompFUSEd 等辦法,在 regular filesystem 的 regular file 上再多加一層間接層來壓縮。
  2. Block Device Level:在 Device Driver 加上一層間接層來壓縮,例如使用 dm-cryptcryptsetup-luks
  3. Filesystem Level:讓 Filesystem Driver 來負責處理壓縮,例如使用 jffs2、ext2compr 或 Reiser4experimental cryptcompress plugin

我的想法是,我是要來增進磁碟效能的,所以不應該搞一大堆間接層來拖慢系統速度,所以 cloop 那種東西就根本不考慮了。後來又想從 Block Device Level 來做的,可是 dm-crypt 與 cryptsetup-luks 非常悲慘,還真的只能作 CRYPTographic,沒辦法做 COMPRESSion。我嘗試用 cryptsetup -c lzf luksFormat 來建立 lzf compressed block device,可是殘念的失敗了 XD~

於是,只好讓 Filesystem 來壓啦!可是 jffs2 的間接更多,必須先有個 loopfile map 到 mtd(Memory Technology Device)上,再 mount mtdblock 來用。處理起來速度比沒壓縮的 ext3 還慢,所以... 還是算了吧!而 ext2compr 這個東西實在太老了,只有在 google 搜尋的時候隱約發現他的蹤跡,可是真的想要找 howto 的時候卻什麼也找不到。所以... 這個也算了吧 = =

最後的救星是 Reiser4 的 Cryptcompress plugin,也是要 patch kernel source,也要升級 reiser4progs。

安裝的方法比想像中簡單的多。首先,你需要一個支援 Reiser4 與 cryptcomress 的 kernel,再來就是支援 cryptcompress 的 {mkfs,fsck,debugfs,measurefs}.reiser4。讓我們從 kernel 開始:

// 如果您已經有裝 app-portage/layman,可以省略這個步驟:
# emerge app-portage/layman
// 如果您已經有加入該 custom-kernels overlay,可以省略這個步驟:
# layman -a custom-kernels
// 最後,這是支援 reiser4 與 cryptcompress 的 kernel:
# emerge sys-kernel/beyond-sources

然後,在 make *config 的時候,把 reiser4 support 打開(廢話!),編譯您的新 kernel,然後用它開機。

再來是 userspace tools - 新版的 reiser4progs。這個我沒有找到任何 overlay 裡面有(其實它也還沒有正式 release),所以先貼在這吧!

# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-fs/reiser4progs/reiser4progs-1.0.5.ebuild,v 1.5 2006/08/20 21:23:43 vapier Exp $

inherit toolchain-funcs

MY_P=${PN}-${PV/_p/-}
DESCRIPTION="reiser4progs: mkfs, fsck, etc..."
HOMEPAGE="http://www.namesys.com/v4/v4.html"
#SRC_URI="ftp://ftp.namesys.com/pub/reiser4progs/${MY_P}.tar.gz"
SRC_URI="ftp://ftp.namesys.com/pub/tmp/cryptcompress/2.6.19-rc4-mm1/${MY_P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
#KEYWORDS="amd64 ppc ppc64 -sparc x86"
KEYWORDS="~amd64"
IUSE="static debug readline"

DEPEND=">=sys-libs/libaal-1.0.5
       readline? ( sys-libs/readline )"

S=${WORKDIR}/${MY_P}

src_unpack() {
    unpack ${A}
    cd "${S}"
    # bundled libtool sucks, so rebuild autotools #74817
    aclocal && libtoolize -c -f && autoconf && automake || die "autotools failed"
    cat <<-EOF > run-ldconfig
        #!/bin/sh
        true
    EOF
}

src_compile() {
    econf \
        $(use_enable static full-static) \
        $(use_enable static mkfs-static) \
        $(use_enable static fsck-static) \
        $(use_enable static debugfs-static) \
        $(use_enable static measurefs-static) \
        $(use_enable static cpfs-static) \
        $(use_enable static resizefs-static) \
        $(use_enable debug) \
        $(use_with readline) \
        --enable-libminimal \
        --sbindir=/sbin \
        || die "configure failed"
    emake || die "make failed"
}

src_install() {
    make DESTDIR="${D}" install || die
    dodoc AUTHORS BUGS CREDITS ChangeLog NEWS README THANKS TODO
    #resizefs binary doesnt exist in this release
    rm -f "${D}"/usr/share/man/man8/resizefs*

    # move shared libs to /
    dodir /$(get_libdir)
    mv "${D}"/usr/$(get_libdir)/lib*.so* "${D}"/$(get_libdir)/ || die
    gen_usr_ldscript libreiser4-minimal.so libreiser4.so librepair.so
}

把這個檔案放到 /usr/local/portage/sys-fs/reiser4progs/reiser4progs-1.0.6.ebuild,然後...

# cd /usr/local/portage/sys-fs/reiser4progs
# ebuild reiser4progs-1.0.6.ebuild digest
# emerge reiser4progs -va

編完以後,就可以來作新的分割區了!別忘了將各參數改成您的設定。

// 先將檔案備份起來
# cd /
# tar cp /path/to/mounted_dir > /path/to/backup_file.tar
// 卸載檔案系統
# umount /dev/hdXY
// 建立檔案系統(使用 lzo 壓縮演算法)
# mkfs.reiser4 -o create=ccreg40 /dev/hdXY
// 建立檔案系統(使用 gzip 壓縮演算法,較耗費 CPU)
# mkfs.reiser4 -o create=ccreg40,compress=gzip1 /dev/hdXY
// 掛載檔案系統
# mount /dev/hdXY
// 還原備份檔
# cd /
# tar xf /path/to/backup_file.tar
# sync

在 umount 之前可以先 df 紀錄用掉的空間,跟改用 cryptcompress 以後比較看看。我的狀況是 855M 變成 524M,省了 331M 的空間。

星期日, 11月 12, 2006

用 webSnarp 在網頁上顯示小預覽圖

webSnarp 2.0 是個提供網頁預覽圖服務的網站,詳情請上該網站去了解... 底下有提供一些小玩具,可以在網頁上加上一些特殊功能,讓滑鼠經過連結的時候跳出該連結的預覽圖。

但是我試圖將它套用在 Blogger 上的時候,若是想在以前的文章上也套用該功能,就必須去修改之前的所有文章。想當然我沒那麼勤勞,所以就把其中 Link Preview V2 提供的 JavaScript 改了一下,放在這裡,有需要的人可以去下載來用。

不過有一點需要注意,因為是寫來套用在 Blogger Beta 上的舊文章的,所以我讓他掃描所有的網址,並依照一定的規則排除要跳出預覽圖的網址。詳情請見 websnapr.js 內的「excludeDomains」與「excludeExtensions」兩個變數。

這是適合 Blogger beta 的版本,請不要套用在其他地方。安裝的步驟如下:

  1. 這裡 下載 websnapr.tar.bz2
  2. 修改「websnarp.js」中的「myBaseURI」變數至您的網頁空間
  3. 將所有檔案放到自己網頁空間下,記得要放在同一個資料夾裡!
  4. 去 Blogger 範本中修改 html 的地方,找到 <title> 標籤,在底下插入: <style media='screen' type='text/css'>@import "[您的網頁空間]/websnapr.css";</style>
    <script src='[您的網頁空間]/websnapr.js' type='text/javascript'/>
最後,顯示出來的效果就像這樣

星期日, 10月 29, 2006

COSCUP 2006~~

COSCUP 2006 晃了一圈回來,感覺功力增進了不少!不同於那個偽.OSS 社群本次的議程採雙軌制,一邊以技術議程為主,另一邊則是從 User && Promotor 的角度切入。會外還附點心、午餐、跟晚餐,最重要的是「這些統統都是免費的」!!!話雖如此,由於這次的主辦單位透露經費還是赤字,所以我丟了 TWD$100 進捐款箱...(是... 我知道很少... 我知道我吃了很多點心、喝了很多飲料、還拿了個便當......)

想當然爾,我聽的當然全都是技術議程啦!(程式設計之神來演講,去聽什麼 Open Source 數位生活還是Open Source 最佳實踐的,實在太浪費了!)我聽的是「中文輸入工作坊」、「羽量級桌面」、與「Web-Oriented Architecture」三項,議題內容就不再贅述,只提一下自己覺得有趣的東西好了~

首先一開始介紹的輸入法技術,真是救了我一條命 @@ 我的畢業專題是 OSS 的手寫輸入法(目前有一點點 code 可以從 svn checkout),而今天的議程有提到許多數學模型與相關演算法,給了我個大方向!其中提到目前中文分詞技術的進展,講了許多技術性的議題,非常有意思。

接下來的羽量級桌面,jserv 與 pcman 發表了一堆好玩的東西,包括如何從根本的設計上改善桌面效能,還有 FreeDesktop.org 這個邪惡組織公佈的黑心標準有多可惡怎樣讓效能好不起來。

然後是 Web-Oriented Architecture,介紹了目前很紅(比 Britney Spears 還要紅上好幾倍)的 Web 2.0。先前有在構思一個線上翻譯網站,其技術實現的部份,就很想朝 Web 2.0 與 AJAX 的方向走。而為了縮短開發時間,應該會使用某些既有的 Framework,如 Ruby on RailsCakePHP 等。雖然目前已經申請了專案網頁,但是目前還沒有開始動手作。想想,應該也是時候開始了,就在期中考週有空的時候 來作吧!

另外... 必須對 jserv 的筆記型電腦表達哀悼之意,它被 PingYeh 踢到地上以後,就不會開機了...

總覺得,來這裡聽一天演講,學到的東西比去學校聽黃國安陳金鈴劉啟東陳宏達這些爛教授上課 自己在家猛 k 文件 得到的東西多的多!

星期五, 10月 06, 2006

愛因斯坦他老師

今天上通識課(中國經籍與說話藝術)的時候,老師跟我們講了個愛因斯坦的故事...

大家都知道愛因斯坦小時候是個不討老師喜愛的學生吧?有一次上勞作課的時候,老師要求每個同學作一張小板凳當作業。當愛因斯坦交出他所作的板凳給老師的時候,老師對他說:「我想,在這個世界上,大概找不出比這張板凳更爛的作品了。」

但是「不,」愛因斯坦說道,「老師你錯了!」。接著,他從旁邊拿出另外兩張板凳,「這張是我第一次做的,這張是第二次做的。」

說完這個故事,老師要求我們在一張紙上寫下一句話的啟發,並交上來當成一次課堂成績。於是我寫下了...

  • 當老師的不要太機車。

就交過去了......

哎呀... 真糟糕... 不知道會不會被當 = =

星期二, 9月 19, 2006

你會上網買新台幣 $236,600,000 的東西嗎?

知名網路公司 PCHome 在網路上賣遊艇耶!

有誰會在網路上買一台價值超過兩億三千萬的遊艇呢?即使買了,要怎麼付錢呢?如果刷卡,有什麼卡一個月可以刷六百五十萬(36 期 0 利率)的嗎?如果有,我還真想知道 XD~~

照 PCHome 標錯價格的機率,等他少標個幾個零就可以趕快去下標了。

星期六, 9月 16, 2006

圖書館排擠我,不准我推薦書~

我們學校圖書館有個立意甚好的服務,叫做「線上圖書薦購系統」。可是這個立意甚好的服務,被這個兩光的網頁設計公司(好啦,我不知道這個是外包給外面的廠商,還是「外包」給我們學校資管系的...)一搞,變得亂七八糟...

怎麼說是亂七八糟呢?因為...

  1. 縮排亂七八糟,想 trace 還要先整理一次。
  2. 檔頭趾高氣昂的說自己是 XHTML,可是卻用了一堆 HTML 的 tag(如 center、font... 等等)。(不能因為是 Transitional 就這樣惡搞吧?)
  3. 使用 VBScript 作為 User 端的驗證,搞得只有用 IE 的使用者有辦法推薦...

我只是百無聊之中想看一下 ARM(The Annotated C++ Reference Manual),所以想說去圖書館找找,卻找不到這本書,想讓他們下次買個幾本放著生菇。不能推薦實在不方便,於是寫了封信給圖書館...(個人資料部份消音)

Subject: 圖書薦購系統能不能不要使用 VBScript 作驗證?

辛勞的圖書館採編組工作人員您們好,

能不能不要用 VBScript 作用戶端資料驗證?因為敝人並非使用微軟作業系統,沒有 Internet Explorer。如果有需要,我可以寫好有相同功能的 JavaScript 讓您替換就好。

因為此 VBScript 驗證碼的緣故,造成敝人在推薦書籍時的不便,所以懇請您們換用其他方法。

諸多感謝!
**同學,您好!

先謝謝你的來信建議!

圖書薦購系統開發之初,由於上線時間急迫,確實僅能以大多數用者作業環境為優先考量,以求立竿見影之效。在本館戮力於提供更便利、多元、精緻的服務過程中,"人力" 問題則是我們經常感到捉襟見肘之處;若你真願意義務性提供協助,我們則熱誠的歡迎,一起來嘗試並努力,以期能縮短過程、增進時效。

後續就有請你主動與本館資訊組**小姐聯繫
(分機:****, mail address :   *****@cyut.edu.tw)。

謝謝您!!

圖書館採編組 敬上

基本上,我實在看不出什麼原因會導致上線時間急迫就必須採用 ASP+VBScript。說實在 Server 端用什麼系統跟 Client 端一點關係也沒有,反正 Server 就那麼一台(一群?),關起門來愛怎麼搞都沒差。不過丟出來給 Client 的東西,難道不值得多考慮一下嗎?還是因為「上線時間急迫,所以省去評估的時間,直接下去 Coding」?

我一直以為,「網路服務」應該要以「能服務越多客戶越好」為目標。採取開放規格開發出來的東西,總是能比較簡單的符合各式客戶的需求。無論如何,支援 JavaScript 的瀏覽器再怎樣也比支援 VBScript 的多吧?

好啦,可能廠商要賺錢,賣 MS 的東西賺比較多,所以最後搞出來這個亂七八糟的系統吧 = =

測試編譯器功力的九九乘法表原始碼

最近迷上 template meta-programming,所以百無聊之中(相對於百忙之中...)寫了個入門等級的小程式。類似功能的程式應該很多程式設計師還沒出茅廬的時候就都寫過了吧!

為什麼說是測試「編譯器」的功力呢?因為這個程式用到了一些高階的 template 功能,並不是所有 compiler 都支援。如果您手上的編譯器是 VC6 的話,請去 Program Files 底下把它拖曳進資源桶,然後改用 dev-c++(它使用 GCC 3.4.2)。使用 GCC 4.1.1(我是用這個編譯、測試的)是完全沒有問題的 :)

本來想稍微講解,可是想想又覺得沒什麼好說的,畢竟只是無聊的小作業 = = 如果有什麼問題,歡迎留言、MSN、Email、電話討論。以下附上程式碼!


/*
 * Meta-programming Infrastructure
 */

struct NullType { };

template <typename Head, typename Tail>
struct Typelist { };

/**
 * meta-(data structure) to store "X x Y = Z"
 */

template <unsigned int X, unsigned int Y>
struct ChartNode
{
    enum { first = X, second = Y, product = X * Y };
};

/**
 * Chart Maker...
 *
 * @param X, Y: current X and Y
 * @param XN, YN: max X and Y
 */

template <unsigned int X, unsigned int Y, unsigned int XN, unsigned int YN>
struct makeChart
{
    typedef Typelist< ChartNode<X, Y>, typename makeChart<X+1, Y, XN, YN>::Result > Result;
};

template <unsigned int Y, unsigned int XN, unsigned int YN>
struct makeChart<XN, Y, XN, YN>
{
    typedef Typelist< ChartNode<XN, Y>,
        Typelist< NullType, typename makeChart<1, Y+1, XN, YN>::Result > > Result;
};

template <unsigned int XN, unsigned int YN>
struct makeChart<XN, YN, XN, YN>
{
    typedef Typelist< ChartNode<XN, YN>, NullType > Result;
};

/**
 * Algorithm to write a ChartNodeList to an Ostream
 */
template <typename TList>
struct toOstream;

template <typename X, typename XS>
struct toOstream< Typelist<X, XS> > : toOstream< XS >
{
    template <typename OST, typename DELIM>
    OST & operator() (OST & dest, DELIM delim1, DELIM delim2)
    {
        dest << X::first << "x" << X::second << "=" << X::product << delim1;
        return toOstream<XS>::operator()(dest, delim1, delim2);
    }
};

template <typename XS>
struct toOstream< Typelist<NullType, XS> > : toOstream< XS >
{
    template <typename OST, typename DELIM>
    OST & operator() (OST & dest, DELIM delim1, DELIM delim2)
    {
        dest << delim2;
        return toOstream<XS>::operator()(dest, delim1, delim2);
    }
};

template <>
struct toOstream<NullType>
{
    template <typename OST, typename DELIM>
    OST & operator() (OST & dest, DELIM, DELIM delim2)
    {
        dest << delim2;
        return dest;
    }
};

/*
 * Main Program...
 */
#include <iostream>
#include <iterator>
using namespace std;

int main()
{
    enum { x = 9, y = 9 };
    cout << "make a Chart from [(1x1=1) .. (" << x << "x" << y << "=" << x*y << ")]:" << endl;

    typedef makeChart<1, 1, x, y>::Result ChartList;
    toOstream<ChartList> generator;
    generator(cout, ", ", "\n");

    return 0;
}

整個演算法包裝成一系列的 template objects,最後再丟給 toOstream<> 這個唯一有被具現化的 template object,其他程式碼全部都在編譯時期被展開了!帶入 x = 9, y = 9 的結果:

$ ./ninenine
make a Chart from [(1x1=1) .. (9x9=81)]:
1x1=1, 2x1=2, 3x1=3, 4x1=4, 5x1=5, 6x1=6, 7x1=7, 8x1=8, 9x1=9,
1x2=2, 2x2=4, 3x2=6, 4x2=8, 5x2=10, 6x2=12, 7x2=14, 8x2=16, 9x2=18,
1x3=3, 2x3=6, 3x3=9, 4x3=12, 5x3=15, 6x3=18, 7x3=21, 8x3=24, 9x3=27,
1x4=4, 2x4=8, 3x4=12, 4x4=16, 5x4=20, 6x4=24, 7x4=28, 8x4=32, 9x4=36,
1x5=5, 2x5=10, 3x5=15, 4x5=20, 5x5=25, 6x5=30, 7x5=35, 8x5=40, 9x5=45,
1x6=6, 2x6=12, 3x6=18, 4x6=24, 5x6=30, 6x6=36, 7x6=42, 8x6=48, 9x6=54,
1x7=7, 2x7=14, 3x7=21, 4x7=28, 5x7=35, 6x7=42, 7x7=49, 8x7=56, 9x7=63,
1x8=8, 2x8=16, 3x8=24, 4x8=32, 5x8=40, 6x8=48, 7x8=56, 8x8=64, 9x8=72,
1x9=9, 2x9=18, 3x9=27, 4x9=36, 5x9=45, 6x9=54, 7x9=63, 8x9=72, 9x9=81,

令人驚豔的囉唆... @@

星期日, 8月 20, 2006

這東西只要 USD $18,500!

之前提到過,使用 Quantum-Optimized CPU 的 Super Notebook,一台只要 $18,500!

規格好像有點變化...

  • 中央處理器:AtomChip® Quantum® II @ 6.8GHz
  • 主記憶體:AtomChip® Quantum-Optical 非揮發性記憶體 1TB
  • 螢幕: 12.1" WXGA (1280x800, 16:10) TFT 背光 LCD 顯示器
  • 顯示晶片:整合式圖形控制器 [ 支援 AtomChip® DVM(動態顯示記憶體)]
  • 輔助儲存媒體:AtomChip® Quantum Storage 2TB
  • 光碟機:DVD Super Multi
  • 網路介面:802.11 無線網路 [ Intel® PRO/Wireless 2100/2200GB/2915ABG ]、藍牙、GPS、LAN、Modem
  • 連線介面:IEEE1394A x 1、USB 2.0 x 3、SVGA-out、立體聲耳機孔
  • 插槽:PCMCIA x 1、四合一讀卡機 [ SDIO、SD、MS Pro、MS ]
  • 其他週邊:內建 1.3 百萬像素相機、立體聲喇叭、麥克風
  • 輸入介面:多媒體鍵盤 [ E-Mail、Internet、Capture、WLAN 按鍵 ]、內建 4 方向捲動按鈕的 Synaptics 觸控版
  • 大小:(寬)320.0 x (長)242.0 x (高)22.0mm/28.0mm (前/後)
  • 重量:約 4.18lb (1900g)
  • 作業系統:Windows XP 或 Linux

不知道什麼時候開始出貨...

星期日, 8月 13, 2006

線上翻譯網站

不,你錯了!我並不是要介紹什麼類似 AltaVista - Babel Fish Translation 的線上翻譯網站,而只是在這裡貼上一點個人想法與計畫。我可能會在不久以後的將來動手實做軟體的部份,不過資料可能就得靠大家幫忙一起輸入。

想做的東西,是可以讓有意幫忙翻譯 Linux 軟體的使用者直接在線上翻譯軟體的介面網站。這個網站跟一般認領軟體的 .pot、回家翻譯好、再上傳給翻譯協調者的作法不一樣,而是讓你直接在網站上翻譯軟體!作法有點類似 WindizUpdate 的翻譯方法,他隨機列出網頁上的一句英文讓使用者翻譯,收集了許多使用者的回饋以後,由演算法決定最適當的翻譯。

我想做的東西也有點類似這樣!也許您今天閒的發慌,想作些本地化(Localization)的工作。於是,來到了這個線上翻譯網站。或是,您是專程為了翻譯某個軟體,或是發現某個軟體的翻譯有不完全、翻譯錯誤的部份想要幫忙修改。首先您可能會看到個這樣的畫面...

歡迎您的到來,在這裡您可以讓世界更美好云云...

  • 我想翻譯特定軟體
    經由搜尋、清單... 等功能,直接進入該軟體的翻譯區。
  • 沒有特定的目標
    由系統隨機選取需要翻譯的軟體,讓使用者翻譯。

選定了想翻譯的軟體(隨便舉一個簡單的範例,例如 gcalctool 好了!),網頁上會列出目前翻譯的狀態與累計的翻譯。您可以直接選擇使用已經有的翻譯,也可以加入新的翻譯。若是不想翻譯,可以在前面的核取方塊設定。

全選
原文 翻譯
......
Set numeric base to binary (base 2)
......
Set display type to engineering format
......

翻好之後,使用者就暫時沒事了,輪到翻譯協調者啦!翻譯協調者可以從下載系統產生的 .po,將它回饋給更上游的軟體設計團隊。

此篇文章只描述 Use Case,系統內部的資料格式、介面呈現等還需要另外設計,如何從上游取得需要翻譯的資料也必須另外考慮(是直接從 cvs/svn/git checkout、還是由翻譯協調者手動輸入、還是有其他作法?),如何與上游協調更是想都沒想到。不過... 算是先起個頭!

星期六, 8月 12, 2006

愁緒...

這似乎是一篇很老的文章,個人覺得(從文學的角度分析)寫的很好,情節緊湊並押韻、也用了許多修辭學的技巧。原作者不可考,不過似乎一開始是貼在巴哈 Kuso 版。Google 搜尋只找到兩個來源,為避免他就這樣銷聲匿跡,還是轉貼一下!

國中生老趙,穿著制服... 白上衣藍短褲。在他家到學校這段路的中間點有一間廟,每天老趙就從家裡出發,走過台北吵雜的街道,目送穿著淺黃制服的女高中生上公車,經過那座不知名不曉得拜什麼神的廟,買過校門口的美而美早餐後到達學校。

某天,老趙下午放學,美而美已經不賣早餐了。老趙有感時光之匆匆啊!想要在年輕的臉龐之上,試圖流露出成熟深沉的笑容。

「哎唷喂呀!」難道是這個年紀不適合這樣的表情,突然一陣腹痛如絞、冷汗直流。國中生老趙此時若是回到學校上廁所,難保不在同學與可愛的宜靜面前丟了顏面。只好,他只好忍著痛往前走,同學們一一從後頭超車。漸漸的,老趙落後了,回家的路好遙遠、好漫長!

這時,中間點的那座廟出現了!此時,老趙感覺到腹痛如絞、冷汗直流。重要的是呼之欲出的那陣軟黃已經蠢蠢欲動,頗有千軍萬馬之勢。不曉得是急中生智還是學校老師有教,國中生老趙想「廟裡有廁所!」不管了!什麼都不管了!老趙忍住,忍住那些不該此時此地出現的東西,加速向前... 走去!來不及看看廟裡供奉的什麼神,來不及向香火舖示意,來不及心存敬意,直奔廟後的廁所。

廁所有兩間,老趙打開一間,裡面有前人的遺跡。想必是遺跡的威力太過強大,老趙開門才剛剛看見,幾欲被那遺跡的味道之強大的威力震倒,震倒前管理直腸的那幾條肌肉還突然鬆開了一下!好樣兒的老趙,不虧是強者。在那東西將出未出之際,猛然一蹲,在感受到地心引力的招喚之前,再次縮緊那幾條肌肉,就這麼硬生生的由外而內接住了那坨,呼之欲出的、萬頭鑽洞的、有如猛虎出閘的東西。這下來不及高興,老趙心想禁不起再一次了。好樣兒的老趙拿的起放的下,馬上關上門,拉開隔壁那間!

..............................

拉不動?再試,還是拉不動。莫非......?

老趙敲門...

「叩?」

「叩!」

「叩叩??」

「叩叩!!」

「叩叩叩!?!?」

「五郎啦!但基勒啦!」

說時遲,來不及,還來不及但基勒!老趙放了個屁,一切,一切都白費了。從肛門、從內褲、由大腿內側到小腿、到白襪、到過年買的球鞋,就這樣緩緩流到廟後的水泥地上。塵歸塵,土歸土,化作春泥(?)更護花。

國中生老趙呆了,就這麼杵在那兒,就這麼杵著。右手還在不死心的敲著門,但是目光已經沒有焦距。嘴巴微張,腦中閃過一幕幕畫面,同時不斷蒐詢他十幾年有記憶以來的所有經驗法則,想要試圖解決此時此刻的問題。

沒有用,人腦當機,剩下的是機械式的敲門。張開的嘴,還有遲遲找不到焦距的眼。一切都好安靜... 霎時,門開了!

「嘎哩共五郎,哩洗謀聽丟洗喔 ?」

「......」

「............. 哩挫賽喔?」

出來的那人,說完就走了...

老趙不走!他不能走!不能只是走!突然,他放棄一切的跑回家,不顧一切的向前跑去,不管在身後飛揚的是塵土還是什麼,不顧一切的朝家裡跑去。在空中,彷彿看見由大腿內側到小腿間,在空中的一絲絲黃色的線... 飛揚,如老趙十來歲的青春,那麼自由、那麼奔放!但是就在那條線就在剛落地那一剎那,卻是一記記忘記聲響的雨點。無奈、委屈、還有濃的化不開的... 愁緒。

「這就是青春嗎?」

才回到家的老趙,來開門後吃驚又憤怒的母親,在門口就把老趙給脫個精光,把全身的衣褲都丟到垃圾桶裡,試圖忘記這一切。可是,母親卻忘了,那個站在門口,仍在當機狀態下的老趙。夕陽西下,倦鳥歸巢時,仍有一隻年輕的雛鳥,一面映著夕陽,一面無聲的把影子扔在門上。

老趙傻傻的站在屋前,公車剛過,黃制服的女孩才下公車。出現在她眼前的,便是這一幕。蒼白而略顯孱弱的少年,孤獨又悲傷的站在迎接她回家的夕陽下。還有,不管是女孩還是老趙這一生的不能忘記的,那股濃的化不開的... 稠 Shit...

................................

星期五, 8月 11, 2006

灌票

這次的「2006 自由軟體傑出應用推廣選拔大賽」似乎有點... 呃~不說了,因為已經被罵得很慘了。

只是這次的灌票,讓我想起在我國中(還是高中)的時候(超過五年以前)曾經發生的一件趣事...

Orz 分隔線 Orz 分隔線 Orz 分隔線 Orz 分隔線 Orz 分隔線 Orz

某音樂製作公司(因為年代久遠,我已經忘記是哪個公司了...)在網站上舉辦了票選活動,票選的內容大致如下:

今年暑假,您最希望我們能邀請哪位國外藝人來台灣?

  • 阿豆仔藝人甲 - 123 票
  • 阿豆仔藝人乙 - 234 票
  • 阿豆仔藝人丙 - 456 票
  • 阿豆仔藝人丁 - 345 票
(實際要邀請哪些藝人我忘記了,票數也是胡謅的,不過很確定是暑假!)

我的某個同學非常喜歡... ㄟ... 當作是目前得票最少的藝人甲好了,於是就 IM 我,叫我幫他投票。

舉手之勞嘛!當然就幫他投一下啦!

結果左鍵點點點的,發現他可以重複投票,於是我就用 php 寫了個灌票的小程式。當時還很得意的跟同學拍胸脯保證,有了我的灌票程式,藝人甲一定有機會高票當選!

好啦~放著電腦出去看電視... 過一陣子回來...

今年暑假,您最希望我們能邀請哪位國外藝人來台灣?

  • 阿豆仔藝人甲 - 56789 票
  • 阿豆仔藝人乙 - XXX 票
  • 阿豆仔藝人丙 - 67890 票
  • 阿豆仔藝人丁 - XXX 票

「吶尼!?怎麼藝人丙的票也增加的那麼恐怖?難不成有人也跟我一樣在灌票嗎!?」奇怪,把灌票程式先關掉看看。

今年暑假,您最希望我們能邀請哪位國外藝人來台灣?

  • 阿豆仔藝人甲 - 56890 票
  • 阿豆仔藝人乙 - XXX 票
  • 阿豆仔藝人丙 - 67912 票
  • 阿豆仔藝人丁 - XXX 票

「... 怎麼我灌他也灌,我不灌他就不灌了?」不相信,再把灌票開起來...

今年暑假,您最希望我們能邀請哪位國外藝人來台灣?

  • 阿豆仔藝人甲 - 123456 票
  • 阿豆仔藝人乙 - XXX 票
  • 阿豆仔藝人丙 - 134567 票
  • 阿豆仔藝人丁 - XXX 票

後來,我發現不管怎樣,藝人丙的得票一定比藝人甲多出 10%。聰明的您一定知道是怎麼一回事了吧?

「繼續灌吧」,我這麼想著「反正等下吃完晚飯回來,網站的人應該就會發現了吧。」結果果然如我所料,吃完飯再回來,那個投票的活動就從此消失了。

Orz 分隔線 Orz 分隔線 Orz 分隔線 Orz 分隔線 Orz 分隔線 Orz

沒有任何影射任何其他活動的意思,只是突然想起這件很久以前的往事...

星期六, 7月 15, 2006

教育是魚還是釣竿?

上星期六因為我媽的關係,我參加了「九五暫行綱要新課程配套暨九十八學年度大學指考加考公民與社會座談會」(好長的名字 =.=+)。會中有許多家長、老師、教育部的官員、記者等人到場,學生倒是沒幾個。根據他們討論的認知,大家對考試的概念似乎還停留在「讓學生背書,記比較多的人贏!」。我反而有不同的看法。

我們都知道,科舉這種制度,是唐朝就流傳下來,已經用了幾千年的東西。在唐宋那時候,可謂「熟讀唐詩三百首,不會作詩也會吟」。所以要求學生背東背西,反正以前有的東西全部背下來就是了!到了今天,社會也用這種制度分辨「有出息的好學生」與「沒出息的壞學生」。但是大家都忽略了一點 -「唐詩三百首」到頭來也就那麼「三百首」。在二十一世紀的今天,每個月出版的報章雜誌加起來,恐怕都超過過去幾千年那些唐詩、宋詞、元曲、小說... 哩哩叩叩阿里不達加起來要多。這麼龐大的資訊,要叫學生全部記起來,到了考試測試你記得百分之幾,實在是很無聊也很不公平的作法。

現在是資訊爆炸的時代,任何人在隨時隨地都可能產生新資訊。而傳佈資訊與儲存資料的媒體也夠發達,能有效將資料存下來,並在需要的時候在幾乎任何地方存取。這時候,只顧著讓人類重複其他一些非人類科技產品就能達到的功能,實在很無聊也無意義。就像最近在讀者文摘(註)上看到一個新竹縣新埔鎮的白痴,背了包括學校、郵局、戶政事務所、自來水廠、監理所、電信局等各機構電話一樣(居然還有更白痴的送匾額給他,真是瘋了!金氏世界紀錄如果有「白痴」這項,他們一定是第一名!)。

我認為目前的教育,不應只侷限於「從一大堆資料中,挑一些符合各階段(國小、國中、高中、大學)學習過程的資訊出來,編成課本教學生,然後考他們記得多少」這樣的辦法,而是應該教導學生「如何從一大堆資料中,挑出需要的東西」,也就是「資訊檢索」的方法,適當建立團隊合作分工協調的概念,並且不要再考選擇題了

考試當然還是評斷學生學習成果的標準,只是考試的辦法應該有所改變:

  • 取消選擇題這種猜猜都會對的測驗方法,或是降低選擇題配分所佔比例,並採取倒扣機制。
  • 增加簡答與申論題的比重,並增加讓考生表達自己看法的機會。
  • 採 Open Book 制度,讓考生可以從資料中擷取所需資訊來回答問題。而參考的資料由考生自己準備。
  • 讓考生有與他人合作的機會,提供一至兩題申論題是要由小組討論回答的。而分組則由考生自己決定。

這裡針對以上辦法說明:

  • 選擇題全部由單選改成複選,可以選零個、一個、或多個選項,並增加「以上皆非」來判斷「已作答」與「未作答」的題目。選項可以採加權記分法,例如某題有四個選項,第一個選項 5 分,第二個 3 分,其他 0 分這樣。
  • 針對簡答與申論題可能產生的標準不公,可以讓多個老師批改一部分考卷,然後將批改後的結果與樣本輸入電腦,建立類神經網路批改剩下的部份。讓二十個老師批改同一份考卷,每個老師有五分的權重。而批改的老師由電腦隨機選擇,有可能台北的老師改到高雄的考卷,台中的老師改到花蓮的考卷這樣。
  • Open Book 則符合 國父「立足點平等」精神,讓學生自己準備要參考的資料,沒準備資料就來考試... 考試ㄟ~叫你準備不準備,考不好死死算了!
  • 共同申論題由學生自己選擇合作的隊友。沒朋友找不到隊友的自己去死,在二十一世紀的今天人際關係處理不好,不是想辦法自己把所有事情作掉,就是自己去死。而某些能力較強的將題目回答得很漂亮也沒關係,這個社會本來就是能者多勞。共同回答題目的成績將與單獨回答的成績作比較,若「共同回的很好,單獨卻答的很爛」,就表示可能是隊友回答的,則這題的分數要打折。又若「單獨答的很好,共同卻回的很爛」,那... 你活該嘛,誰叫你不好好回答?共同回答的考試要與單獨回答的分開,避免考生修改答案。

以上概念還在草稿階段,可能還有很多弊端,不過應該不會有什麼「絕對無法修正的重大缺陷」。我覺得可行度應該有 70% 以上,只是可能那些八股的老人家不能接受。所以,若你不能接受,不是我的辦法不好,而是因為你太八股,瞭解了嗎?

註、讀者文摘二零零六年六月,第十一頁「活人電話簿」

星期一, 5月 29, 2006

接軌國際標準 台灣 OSS 慢半拍

新聞一則:「CPRO 資傳網--接軌國際標準 台灣OSS慢半拍

同樣,全文引用:

接軌國際標準 台灣OSS慢半拍

面臨執行單位未定、預算有限,人才無著落窘境。

2006-5-29/ 侯俊宇/ 撰文

在今年的 Linux 台灣計畫(Linux Taiwan Project)中,四大工作重心之一為「一項共通標準規範」,希冀建立Linux台灣的文件維護機制,以及示範應用系統測試驗證規範,以求奠定自由軟體未來產業的發展基礎。為求不落於國際社群以外,民間業者也提出與國際標準組織的接軌的聲浪,然而,儘管政策要求,卻面臨實際執行單位未定、預算有限,人才亦無著落的窘境,業者搖頭說,「要談參與國際標準組織,台灣還是慢半拍。」

在此次Linux Taiwan計畫中,分別列出一項共通標準規範、二個技術研發中心、三類重點應用領域,及四組示範應用服務體系等四項計畫重心,而列在首位的就是「一項共通標準」,其他亦有相關規劃在「國際社群能量」上,針對國際標準組織訂定兩岸中文共通平台規格,加強國際標準宇社群接軌的技術交流。然而,儘管口號喊的響,實際的作為卻不被業界人士所認同。

「先看預算就好了,位居未來台灣開原碼軟體( OSS ) 基礎核心的平台標準,一年只有新台幣1,000萬,要怎麼做事?」相關人士指出,儘管多次政策指導台灣OSS應走向與國際接軌、或是從既有硬體優勢發展出更多加值產品與服務,才能帶來商機,不過在基礎平台未能獲得共識之前,業者間仍然各行其是。誰也不服誰的情況,就是未來面臨產品的互不相容,或是需要額外的整合工夫。

再看執行單位,每天汲汲營營在開創商機的開原碼民間業者,早已透露出對創立標準興趣缺缺的態勢。而Linux促進會等組織,也透露出希望由政府單位擬定,主導標準走向的意願。然而,相關人士透露,儘管今年Linux Taiwan計畫明定與國際標準接軌為計畫成果之一,卻未見到實際的執行單位接手。

「如果單以標準議題來看,似乎應該是中央標準局的業務範圍,但是如果從研發角度來看,中研院與國科會似乎能夠扮演的更好,而事實上,若是資策會能夠培養更多人才,態度更為中立,也不失為可以加強與國際自由軟體社群連結的一大組織。」

不過,業者也說,儘管可以運作的組織不少,實際上已經開始動作的卻仍闕如,「目前為止,我們並未看到台灣OSS社群與國際組織的接洽,不管是官方或是非官方的接觸都不頻繁,也是我們最為憂心的地方。」

Linux促進會副會長劉龍龍這麼說,「我們一直試圖尋找,『台灣OSS社群為國際社群做了什麼?』的答案,不過可惜的是我們尚未見到。」劉龍龍說,在缺乏積極接洽,彼此連結又有限的情況之下,台灣OSS與國際間的接軌仍屬緩慢。

稍早時在Linux Taiwan計畫中,提及一項共通標準規範分別在共通規範及文件維護機制上投入700萬元,示範應用系統測試驗證機制投入300萬元;而國際社群能量上,也希望參與如OSDL、LSB、OASIS與ODF Alliance等相關組織,亦預期加強兩岸中文共通平台規格的建立,預計經費亦約1,000萬元。

而在缺乏雙方互動的前提之下,國內OSS業者要談產品的連結、平台標準的建立,都有一定難度。究竟OSS在台灣是能夠乘勢而起或是難以抬頭,仍看主事者的智慧。

胡說八道些「台灣 OSS 社群都沒做事」就想跟政府要錢?一千兩百萬還不如分給真的有在 contribute 的 developer.

為避免某些官員連 Google 都懶得上,放兩句話就有人幫他整理好資料可以拿去交報告,所以在這裡不列出有參與國際專案,並有貢獻的 contributers。

星期五, 5月 26, 2006

Atomic Copy

今天檢查 dmesg 的時候,赫然發現裡面有 Suspend2 的 Debugging info:

[   36.450825] Suspend2 debugging info:
[   36.450828] - SUSPEND core   : 2.2.5
[   36.450830] - Kernel Version : 2.6.16-suspend2-r6-palatis
[   36.450832] - Compiler vers. : 3.4
[   36.450833] - Attempt number : 1
[   36.450834] - Parameters     : 0 32 0 1 0 0
[   36.450835] - Overall expected compression percentage: 0.
[   36.450836] - Compressor lzf enabled.
[   36.450837]   Compressed 1001496576 bytes into 493573087 (50 percent compression).
[   36.450838] - Swapwriter active.
[   36.450839]   Swap available for image: 250817 pages.
[   36.450841] - I/O speed: Write 50 MB/s, Read 48 MB/s.

沒想到這台 nb 的硬碟(Model=TOSHIBA MK6025GAS, FwRev=KA200A, SerialNo=Z4PN3916S)居然可以跑出 50MB/48MB 的成績... 而且寫入還比讀取快!?

傻眼中...

(也許 suspend2 才是最好的純磁碟效能測試軟體?)

星期日, 5月 14, 2006

生命的鬥士?還是分數的鬥士?

今天在 FreeNode IRC 的 #dot 看到 chiashin 貼了「與時間競賽的人 - 俊翰的故事」出來。的確,乍看起來的確很感人,可是仔細想想... 這不過是另一個填鴨式教育造成的悲劇表揚劇...

分成三個部份來看 - 他媽媽、本身困苦的生理狀況、世人認知的成就。的確我佩服他媽媽不放棄自己小孩的偉大精神,這是本劇中唯一一點讓我打從心底 100% 佩服的地方。這種犧牲奉獻的愛真正可歌可泣。

從生理狀況的角度切入,如果你一生下來就是某個樣子(例如少一條腿、多一隻手、或其他「與別人不同的地方」),這有什麼好值得自怨自艾的?如果你天生就是 A 罩杯或老二只有 5 公分(的確啦,這兩個「缺陷?」不會對你造成生命威脅)或是同性戀,除了接受「這就是我」以外還能怎麼辦?每個人本來就應該接受自己的全部,不管是(世人認定的)優點還是缺點,因為他們沒有好壞,只是一個「現象」。

至於我最厭惡也最看不起的,就是貫穿全劇的「成績優異」。如果今天主角是去搶銀行(不管有沒有搶到),我也還是會很佩服他(跟他媽媽,當然!)。重點是他「克服困難,造成某些成就」的精神,而不是「成績很好就是優秀的人」。而且真的要說他成績好嗎...??「要是我國小到大學都被媽媽盯著上課,下課回家也沒有任何休閒活動(想看漫畫、小說,可是媽媽不買、想看電視媽媽不准... etc)、哪裡也去不了(也不能去網咖、不能跟同學逛街、不能做什麼運動... etc),吃了飯就念兩小時的書,我也可以每次都考第一名。」

這樣一想,也許他自己(還有許多看到這個故事的人)認為他成就非凡是由於自己不畏艱難的上進心。可是,我覺得這是這個「高分導向社會」造就出來的悲慘學生罷了。也許,如果他小時候父母沒有一直灌輸「萬般皆下品,唯有讀書高」的觀念,他今天會成為一個作曲家、程式設計師、作家、發明家、思想家... 等,比律師、法官、會計師有趣些的優秀精英。

星期二, 4月 25, 2006

測試點兮廿二行,編譯錯誤兮信息:長長長兮、過份長兮、姬兮兮

沒想到我過了一年才看到這篇...

的而且確,自認為一個程式設計師,很多時候還是需要些 Orz Programming 與 XD Programming...!!!

星期六, 4月 22, 2006

星期六, 4月 08, 2006

金耳?木耳?

Eason's Blog 看到的,測看看你是金耳還是木耳!

Interactive Listening Test

我的分數是...

附帶一提,音效卡是 Gigabyte 7VAXP 內建的 Realtek AC97,喇叭是 JS 的 J9915,音量 Master 在 50%,PCM 100%,喇叭上 Volumn 約轉到 9:30 的位置,Treble 跟 Bass 都在 12:00 位置,3D 那個殘害聲音的按鈕當然是沒按下去。

盡信新聞不如無新聞

嗯... 不是因為它說 Linux 壞話我才跳出來,是因為這起新聞「IThome - 愚人節駭客惡搞Linux網站」(相關的還有「中時電子報:一至四日 入侵比例佔全球七成 攻擊台灣 國際駭客發動網路戰」等)實在太扯了。

根據中華民國著作權法第九條,新聞著作可以全文引用。為了避免這些新聞網站怕丟臉撤下原 post,所以這裡把中時的報導貼過來(因為它比較短...)。

2006.04.06  中國時報
一至四日 入侵比例佔全球七成 攻擊台灣 國際駭客發動網路戰
趙國明/台北報導

台灣的電腦資訊能力世界聞名,卻被國際電腦駭客組織列為主要侵入攻擊目標。調查局日前發現,國內共有近二百個網站遭到自稱un-root的國際駭客組織入侵,並置換網站首頁,受害單位包括政府部門、民間企業及學校,台灣已被國際駭客組織列為全球主要的攻擊入侵目標之一。

調查局指出,自四月一日至四月四日,陸續發現國內網站遭到自稱un-root的國際駭客組織入侵,並置換網站首頁,受害單位包括政府部門、民間企業、大學院校、國中小學,初步研判應是駭客為了證明自己的駭客功力,所進行的炫耀式攻擊。

調查局電腦犯罪偵辦科目前除針對尚未恢復的網站進行通知,並針對遭入侵網站進行清查過濾及分析比對,以進一步瞭解攻擊發生的原因與駭客入侵之目的,是否有重要政府機密資料或企業機密遭竊。

近二百個網站遭攻擊

調查局經分析後發現,此次受攻擊的網站遍佈全世界,共約有三百多個網站遭受攻擊,台灣部分則近二百個網站,接近七成,顯然台灣已經成為亞洲地區,甚至於是全世界主要的被攻擊國家,其中九五%的電腦設備是以Linux系統為主。

過去一般使用者的電腦作業系統多是安裝微軟視窗(Windows)平台,但隨著開放原始碼的興起,企業基於預算的考量,免費的Linux逐漸成為市場的主流,但是因為Linux的維護與防毒能力大多是靠有志之士自動自發的維護,品質難以與微軟視窗作業系統匹敵,也自然成為駭客攻擊的對象。去年以前,Linux遭受攻擊的比率還低於兩成,現在因為使用逐漸普及,導致攻擊的頻率逐漸升高,目前已接近四成。

防駭危機感亟待加強

調查局在處理類似案件時,曾與某重要的資訊安全A級單位(資訊安全要求最高的等級)聯繫,通知可能因為網站權限設定有問題,導致任何人都可以在網站上放入任何的檔案,該單位卻質疑表示權限本來就是開放的,不以為意,令調查局對國內資訊防駭觀念的淡薄,深感憂心。

網頁遭駭客置換的情況最易被發現,據現有網頁遭攻擊情形分析,台灣地區每月約有五百至一千個網站遭駭客置換成功,但潛在性的犯罪黑數更難發現,尤其是被植入木馬的狀況恐怕更為嚴重,這種入侵方式從外觀上很難發現,此類入侵事件,可能遠遠超過置換網頁模式的數十倍。

而根據 chihchun 的調查,其中許多東西都是胡扯亂寫的。

其中提到,台灣地區有兩百餘網站被入侵(接近七成)一事,根本就是胡扯。一般人以為「網址不同 = 不同伺服主機」就算了,寫資訊新聞的人不知道就該抓去重修電腦網路。不同 dn 是可以指向相同一個 ip 的。如 palatis.blogspot.com 與 freesamael.blogspot.com。在 4/1 ~ 4/4 被攻擊的兩百個台灣網站,其實只是兩百個不同的 dn,實際上只有 17 台機器。

再者,文中也提到被攻擊的機器中有 95% 是 Linux 機器........ 他們是眼睛瞎了看不到統計資料中那堆 Win 2003 嗎!?好啦,如果只算台灣區 + 兩百個網站被入侵來算,的確是 95%。可是這只能推斷出兩點 - (1) 台灣的公司為了省錢大部分都用 Linux,可是卻沒請網管(或是請到等於沒請的網管)。(2) 台灣的網管普遍 Linux 訓練不足。

不過政府機關的資安控制也很扯,之前總統府網站也曾經被入侵,宣佈 4/1 愚人節為國定假日放假一天。後來查出是一名高中生做的,而當時的總統府網站跑的是 Windows 2000。政府的作法是最後把總統府網站丟給中研院管理。

星期日, 3月 19, 2006

強迫自己開始用 vim...

Linux 用快三年了,VIMEMacs 卻都還不是很熟。因為... Gentoo 預設的 EDITOR 是 nano 嘛!Orz...(為什麼用大寫?「echo $EDITOR」就知道了!XD~~)

決定先從 Vi IMproved 開始,所以把 /etc/rc.conf 中的 EDITOR 改成了 /usr/bin/vim。

除此之外,還在 /etc/bash/bashrc 加了一行...

alias nano='printf "LEARN vim!\n"'

很暴力而且骯髒的作法...

附上 vimrc...

set nu
set exrc
set nohlsearch

map #2 :wq^M
map! #2 ^[:wq^M
map #3 :q!^M
map! #2 ^[:q!^M

au VimLeave *.sh !chmod +x %^M

給不會用 VIM 的人... 要輸入 ^[^M,不是直接打 ^ 跟 [ 或 M,而是必須按下 Ctrl-v 再按 Esc 或 Enter。

星期四, 3月 16, 2006

網站邪惡度測試

由於參加 ICTC Linux 講師訓練班(第一期 XD~~),有個作業是要寫個個人網站,所以... 就寫吧!

網址是:http://main.advice.com.tw/~palatis/

無聊之下又跑去測了一下邪惡度...

This site is certified 1% EVIL by the GematriculatorThis site is certified 99% GOOD by the Gematriculator

哇哇哇哇哇!!!!!

星期五, 3月 10, 2006

C# && Glade# && Mono

這學期的資料庫系統,老師要求使用 VB.Net。撇開「不太會寫」先不談,Linux 上「根本沒有」VB.Net 的可行(usable)方案!所以... 雖然不太會用 GTK、不太懂 Glade、更不會寫 C#。但還是硬著頭皮啃了下來。

首先安裝 .Net Environment,很自然的選了 Mono Project,因為他是 Only Solution(Wine 不算的話 XD~~)。順手裝了 IDE - MonoDevelopGlade

# emerge mono monodevelop glade

MonoDevelop 還在發展階段,雖然尚嫌陽春,不過算堪用了。Mono 的 Online Documentation 做的雖然不怎樣,不過大部分的東西還是查的到(有許多 Entries 還是 Undocumented...)。

我的作業是這個,好啦!我知道很無聊,因為我自己也這麼覺得... 當成複雜一點的 HelloWorld 摟!

丟臉的是,弄 Mono、Glade、C# 等一堆東西,花了我 5、6 個小時才做出來(而且自己還不是很滿意...)。

不滿意的地方...(按照不爽度排序)

  1. C#!!!!!!!!!!!!
  2. 不知道老師會不會讓我用 C# + Gtk# + Glade# 交作業 = =
  3. 中間那堆「if (Convert.ToDouble(EntryHwTimes.Text) >= 1) total += Convert.ToDouble(EntryHw1.Text);」
  4. 不知道怎樣過濾 KeyPress event,讓 Entry 只能輸入數字(跟 BackSpace)。也不會用 KeySnoop... QQ
  5. 不知道 Windows 上到底能不能編... = =

火星文++

之前大學學測一篇火星文的考題被罵的臭頭(小站還有幫他弄個修訂版),沒想到今天又看到另我哭笑不得的東西...

這是我們學校某教授的個人網頁。看來他不但懶得寫網站(原始碼裡有「<meta name="GENERATOR" content="Microsoft FrontPage 4.0">」字樣),還懶得把中文打好。

為什麼會跑去找他網頁呢?因為這學期的資料庫系統他要求使用 VB.NET。但是我的 Linux 沒有 VB.NET 可以跑,於是裝了 Mono,想用 GTK# 來交作業。但是不知道老師收不收這個環境的東西(也許他不會用?),想寫信請他裝起來編我交的程式。沒想到居然讓我看到這麼個鬼東西,真是太出乎意料了 XD~~

還不知道他會不會同意咧...

星期三, 3月 08, 2006

[轉載] 卡奴什麼都不必負責!?

我在網路上逛來逛去,還是找不到原作者。如果有人知道來源,請告訴我。如果您就是原作,又不希望我散佈此篇文章,也請告訴我,我將馬上把它拿掉。謝謝!

卡奴自己又負了什麼責任?

十四歲的外甥女兒回家說 :「我們班同學都覺得當卡奴沒什麼不好,可以買很多名牌,然後上電視哭一哭說不定就不用還錢了,反正大家都在幫卡奴想辦法。」聽聽,這是下一代卡奴說的話。 當各立委、民意代表、理財專家一面倒地幫卡奴出聲時,可曾想過奉公守法市井小民的心情?卡奴的負面教育還要繼續下去嗎?

筆者的月薪六萬五千元,每個月在貸款、生活費中量入為出,從來不敢欠過信用卡公司一塊錢。我們每個週末到大賣場都盡量挑特價促銷品,百貨公司沒有打折絕不敢買,工作近十年連一個名牌包包都沒有買過,我並不是沒有慾望,而是在我的能力範圍內很辛苦地克制自己。

反觀在電視新聞中泣訴的卡奴楊小姐,臉上掛著上萬元的古馳鏡框、手上拎著比我一個月薪水還高貴的 LV提包,口口聲聲她活不下去、看不到明天,要求銀行寬貸、政策救命。

憑什麼?我們的心中只有一句,憑什麼? 妳又願意付出什麼來得到這些救援?是獻身公益?還是義務勞動?社會幫了卡奴,卡奴們要付出什麼來換?

社會上有很多經濟弱勢者,像失業的單親父母、繳不起營養午餐錢的偏遠地區兒童,他們都得不到社會資源的妥善照顧,筆者不明白這些卡奴憑什麼在享受奢華生活以後,竟以厚顏要求社會資源協助?

當他們佔用大量媒體曝光、煩擾許多財經專家出面研商時,正是變相在消費高昂的社會成本,但 卡奴們自身又付出了什麼代價?

卡奴原本就是相對沒有責任感的一群人,如今他們在享受不屬於自己的繁華富貴以後,反過來可憐兮兮地要求銀行、政府為其善後,依然不需為自己的行為負責任,未來難道不會出現更多的卡奴嗎?

我們的義務教育中對於理財、稅法等生活教育極度貧乏,很多大學生連基礎的財務知識都不具備,再加上社會風氣盡是向錢看,也難怪年輕不懂事的卡奴越來越多,一出社會就累積了完全無力償還的巨額債務。

既然卡奴風暴已經形成,國、高中學校正應該藉此機會,教導學生基本理財知識和正確的理財觀念,除了救卡奴救經濟,更重要的是提早預防下一代的小小卡奴繼續出現。

星期五, 3月 03, 2006

2006 年中區春季電腦展一元愛心參觀券

我收到學校寄給我一封 email,標題是「Fw: 2006中區春季電腦展ㄧ元愛心參觀券數量有限,索完為止!」。點進去看看...

其中提到「看展一元,所得將捐贈台中生命線協會」。所以...

  1. 他發給我們學校 500 張,最多也不過募到新台幣 $500。
  2. 如果全中區算 30 所學校、每個學校都發 500 張,他也不過募到 $15000。

我的看法是...

  1. 要募款幹麼不弄 $10、$20,應該還是很多人搶,可是就可以募到 10 倍、20 倍的錢。
  2. 台中生命線真不值錢...
  3. 教育部宣導「增強國文素養,避免使用火星文、注音文」的活動似乎不太成功,標題跟內文中都用了注音文 XD~~

前面比後面快!

由於 64bit 的機器會使用比較多記憶體(Pointer、Data Type 佔用的記憶體都比 32bit 機器來的多些),所以我的小筆電總是會吃到 swap。今天無聊的時候上網逛了一圈,發現這篇文章中提到「Putting your swap partitions near the beginning of your drive may give you some acceptable improvement.」(將置換分割區放在磁碟的前端將增進一些磁碟效能),差異可以高達 3mb/s!可是... 那裡才是磁碟的前端呢?

於是... 做了以下測試:

# hdparm -tT /dev/hda9

/dev/hda9:
 Timing cached reads:   2608 MB in  2.00 seconds = 1302.24 MB/sec
 Timing buffered disk reads:   58 MB in  3.02 seconds =  19.23 MB/sec
# hdparm -tT /dev/hda1

/dev/hda1:
 Timing cached reads:   2592 MB in  2.00 seconds = 1294.26 MB/sec
 Timing buffered disk reads:   74 MB in  3.04 seconds =  24.36 MB/sec

看來... 我的磁碟前端是數字較小的分區。剛好,我把 swap 放在 hda3!

# hdparm -tT /dev/hda3

/dev/hda3:
 Timing cached reads:   2592 MB in  2.00 seconds = 1295.55 MB/sec
 Timing buffered disk reads:   74 MB in  3.05 seconds =  24.30 MB/sec

不過,/ 放在 hda2 似乎有點浪費,畢竟它是很少用到的分區。算了!才 500mb...

結論... 下次配置磁碟分區時,應該把 / 拿到最後去,中間分給 LVM 才對。

星期二, 1月 24, 2006

火星文

原文...

一、語文修正(佔 9 分)

語文的使用需要注意場合、對象的分別, 不同的場合、不同的對象, 都有它不同的語文表達方式。例如上台演講和平日死黨之間說話便大不相同, 而寫作文章和口語敘述也絕不應該完全沒有差別。

下面是一篇題為「運氣」的中學生作文, 即使暫不考慮文字的優美與否,其中除了以下說明文字的範例之外,尚有九處應予修正――或使用了不當的俗語、口語、外來語, 或犯了語法上的錯誤, 或是受媒體、網路流行用語誤導,或以圖案代替文字, 請加以挑出, 並依序標號( 1、2、3… … 9) 改正之。

【說明】例如文中「3Q得Orz」即為不當用法, 3Q意指thank you」, Orz則藉三字母表示「跪拜在地」之狀。改正之方式如下:3Q得Orz → 感謝得五體投地

今天我們班的運氣實在有夠衰,開朝會時被學務主任點名, 說我們班秩序不良而且教室環境髒亂。我們班導師氣到不行,回到班上嚴辭訓斥大家一頓,問我們究竟安什麼心? 林大同立刻舉手發言說, 我們一定會好好做反省的動作。衛生股長漲紅著臉幾乎快 ::>_<:: 了, 他拜託大家每天確實打掃,他一定3Q得Orz。王明問班上的星座達人到底我們班為何如此時運不,接二連三被挨罵受罰。更慘的是, 班上的蒸飯箱莫名其妙又壞了,害得全班只好吃冷便當。偶氣ㄉ 要死, 媽媽昨天為我準備的便當, 本來粉不錯吃滴, 卻變成難以下嚥的冷飯。想不到今天這麼倒楣,昨天真不該聽信風紀股長的話, 到學校理髮部去理一顆一百塊的頭, 今天還不是一樣諸事不順!

真正的火星文版...

尖天5ㄇ搬ㄉ運氣實在有夠衰,開朝會十倍學物主任點名,說我ㄇ搬秩序ㄅ涼而且教室環境髒亂,5ㄇ搬導師\_/到抓狂,回到班上言詞訓斥ㄌ大家一頓,問5ㄇ究竟安什麼新?林大同立刻舉手發言說,5ㄇ一定惠好好做反省的動作。衛生股長*>_<*幾乎快::>_<::ㄌ,ㄊ_nO大家每天確實打掃,ㄊ一定3Q的Orz。王名問班上的星座達人到底為何我們搬如此時運不濟,接二聯三倍挨罵受罰。更慘ㄉ是,班上ㄉ蒸飯箱莫名其妙又壞了,害ㄉ全班只好吃冷便當。偶ㄑㄉ要死,ㄇㄇ昨天為偶準備ㄉ便當,本來粉ㄅ錯吃低,卻變成難以下研ㄉ冷飯。想不到今天這ㄇ倒楣,昨天真ㄅ該聽信封技股長ㄉ話,到學校理髮部去理一顆一百塊ㄉ頭,今天還ㄅ是一樣豬是ㄅ順!

如果覺得其他地方有待加強,歡迎提出討論...

星期日, 1月 22, 2006

三隻小豬快跑!(3D 加速)

之前提到過,換了 X.org 7.0 以後,這台電腦喪失了 render 3D 能力...

今天做例行更新的時候,發現 ati-drivers 有了 8.21.7 版。

於是,熊熊給他更新下去以後,現在...

$ X -version

X Window System Version 7.0.0
Release Date: 21 December 2005
X Protocol Version 11, Revision 0, Release 7.0
Build Operating System:Linux 2.6.14-gentoo-r4-palatis x86_64
Current Operating System: Linux Nichelle 2.6.14-gentoo-r4-palatis #2 PREEMPT Thu Dec 15 15:24:19 CST 2005 x86_64
Build Date: 13 January 2006
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Module Loader present
$ glxinfo | grep rendering
direct rendering: Yes
$ glxgears
6685 frames in 5.0 seconds = 1336.886 FPS
6792 frames in 5.0 seconds = 1358.380 FPS
6852 frames in 5.0 seconds = 1370.342 FPS
6853 frames in 5.0 seconds = 1370.418 FPS
$

星期日, 1月 15, 2006

無法精確的說最大支援多少

我外公的電腦不知道出了什麼問題,昨天吵著要重灌(視窗千禧版)。可是那個東西太舊了,我找不到光碟... 於是,就想說幫他灌視窗經驗版好了。可是似乎因為 ABIT BE6 這片主機板上 HighPoint HPT366 IDE 控制器似乎跟不知道什麼東西衝到了,只要那兩顆 IBM Deskstar 60G 接上,視窗經驗就怎樣也進不去(卡在開機那條光棒)。

於是,想說更新一下 BIOS,來到了 ABIT BE6 的 BIOS 下載網頁,沒想到居然看到這種字樣...

雖然已經是很久以前的東西了,不過還是每日一笑吧... :P

覺得看不懂或不好笑的,請檢討自己的幽默感。

性向測驗

剛剛在 Jserv 那邊看見的性向測驗,我的選項是...

兔、蛇、貓、獅、羊、牛、獵豹、貓

覺得還蠻準的,除了牛那個以外。

來玩玩吧!

星期五, 1月 13, 2006

難怪沒 3D 加速...

不知道為什麼,使用 Xorg 6.8 的時候,一直給我出:

Elf_RelocateEntry() Unsupported relocation type 10
Elf_RelocateEntry() Unsupported relocation type 10
Elf_RelocateEntry() Unsupported relocation type 10
...

於是,我只好更新到 Xorg 7.0。

但是,ATIpropertiary Linux Driver 卻不支援 Xorg 7.0。所以,想說用 mesa 的 software GLX Driver,可是卻遇到了這個情況...

(WW) RADEON(0): Enabling DRM support

        *** Direct rendering support is highly experimental for Radeon 9500
        *** and newer cards. The 3d mesa driver is not provided in this tree.
        *** A very experimental (and incomplete) version is available from Mesa CVS.
        *** Additional information can be found on http://r300.sourceforge.net
        *** This message has been last modified on 2005-08-07.

煩死啦~~ 降回 xorg 6.8.2 再試一次好了......

星期四, 1月 12, 2006

系統程式 part2

曠課補假事假公假病假總計扣分
200044.00

首先... 我覺得我一個月只去兩三次,這裡居然只記到兩次曠課跟四次病假(我去請的)...

學期成績平時-1平時_2期中考平時_3平時_4平時_5實作_1期末考
個人成績9000990100909564
全班最高95851009995100959564
全班平均6663634269726743 31
及格分數606060336060606024

然後... 期中考莫名其妙的考了 99 分(本來以為只有 7X 分),那是個美麗的意外... 讓我不解的是期末考,全班平均 31 可是及格分數卻只要 24 是怎麼回事??另外,上次那個組合語言作業,明明就做了一半,最後還是唬過去的,居然真的被唬住了,給了我 95 分...

曠課一堆,缺一堆平時考,居然期末成績有 90 分......

本週運勢

牡羊座:再坐在電腦前不準備期末考,你就要倒大霉了!
金牛座:再坐在電腦前不準備期末考,你就要倒大霉了!
雙子座:再坐在電腦前不準備期末考,你就要倒大霉了!
巨蟹座:再坐在電腦前不準備期末考,你就要倒大霉了!
獅子座:再坐在電腦前不準備期末考,你就要倒大霉了!
處女座:再坐在電腦前不準備期末考,你就要倒大霉了!
天秤座:再坐在電腦前不準備期末考,你就要倒大霉了!
天蠍座:再坐在電腦前不準備期末考,你就要倒大霉了!
射手座:再坐在電腦前不準備期末考,你就要倒大霉了!
魔羯座:再坐在電腦前不準備期末考,你就要倒大霉了!
水瓶座:再坐在電腦前不準備期末考,你就要倒大霉了!
雙魚座:再坐在電腦前不準備期末考,你就要倒大霉了!

雖然已經星期四了,不過還是貼一下。

ps. 我考完啦!