顯示具有 雜記 標籤的文章。 顯示所有文章
顯示具有 雜記 標籤的文章。 顯示所有文章

2011年4月23日 星期六

整批檔案格式轉換

習慣將喜愛的音樂光碟做一份備份
之前使用nero燒錄程式所做的備份
預設是存成nrg格式。

自從2010年家中的電腦因Windows版權問題
改成免費而且已經穩定好用的Ubuntu系統
沒有辦法直接掛載*.nrg格式映像檔
日積月累的數位檔案也已經"氾濫成災"

花了點時間
集中整理放在同一顆硬碟上
希望格式也都是統一的ISO格式
2~3百個光碟映像檔當然不可能適合手動轉換
簡單方法如下

# Linux下,將目錄內所有 *.nrg轉成 *.iso檔
# 使用 nrg2iso 指令
use strict;

my @nrg = glob "*.nrg";

for my $nrg (@nrg) {

    # 需要將副檔名 .iso 改成 .nrg 
    my $iso = $nrg;
       $iso =~ s/\.nrg$/\.iso/;

    # 印出 nrg2iso 的輸出
    print `nrg2iso "$nrg" "$iso"`;

}

2011年4月2日 星期六

寫程式的能力

寫程式的能力跟讀寫一樣,每個人多少都要會一點。

我所說的寫程式,不是正經八百的coding,
而是「指揮電腦」的能力。

電腦的運算與記憶能力(甚至體力)都比我們強
但就像常見的工具(如螺絲起子)一樣
它是我們可以運用的工具之一
我們來決定,螺絲是要鎖上還是卸下,
工具本身不負責思考或下決策。

電腦比一般傳統的工具靈活
也是一大堆工具的結合
特別是網際網路的快速發展
經由對外連線,可以取得的資訊與整合的服務,
都超過我們的想像,而且演變的速度越來越快,
如果能夠經由程式的技巧來整合這些資源
電腦能夠發揮更多的用途,
我們也會因而間接或直接的受益。

大致上,程式可以提供我們三種型式的方便:
大量處理、自動化、代理人

《大量處理》

GUI桌面程式的風行降低了使用電腦的障礙,
直覺而又漂亮的操作介面,
取代了指令模式的不親切,
讓個人電腦大量普及,是很好的設計。
然而GUI有一個問題就是,
它必須由人來操作,
由人來解讀螢幕上面的訊息,
沒有操作者,他就不會動,
只會靜靜等待著滑鼠被點一下
才進行下一個步驟。

想想看,假如你有成千或者上萬首歌曲放在電腦裡面,
有一天你想要整理分類,
或者只是複製到另外一台更大容量的外接式硬碟,
這時也許你想區分歌手或者作曲家,
把相同屬性的檔案放在相同的目錄,
也許發現同一首曲目曾出現於不同位置,
想順便移除重複的檔案,.....
諸如此類的「整理」工作。

處理數百個檔案並不是大(困難)問題,
但是數千個,可能得花上個幾天的時間,
就算有耐心的做一次,那下次呢?

如果把處理分類的規則寫成程式,
讓程式代勞,有效率的完成這些重複、規則性的選取、複製與貼上的程序,
這是日常生活裡大量處理的應用。

工作上也有類似的需求,
大量重複耗時的工作經常存在,
寫程式,能幫你解決這類問題。

《自動化》

有些事情需要在特定的時間或條件下才需要(能)去作,
或者一段期間內,每隔一定時間得去執行的事,
如果沒有寫程式來輔助,你只能持續地等待與檢查,事必躬親。
像這類可以排程去處理的事情,
透過程式來進行,不需要你人親自在現場,
也能夠自我啟動執行,自我偵錯,自我紀錄,自我儲存,
甚至將執行結果往外通知的方式,這就是自動化。

《代理人》

代理人的例子蠻常見,
但一般人多習以為常,不會特別去注意到。

就拿我們上網訂購高鐵票這件事為例,
高鐵的線上訂購網站就是高鐵公司的櫃台代理人,
反之,當年台鐵火車票過年期間,一票難求的時候,
也曾有人將購票程序寫成程式,
在半夜以代理人身份代替本尊連上網路訂票。
兩方面的代理人一來一往,就像真人互動一般,毫不含糊。
仔細想想,真的有趣極了。

寫程式,先要選擇自己合用的程式語言,
(合用,是說用起來順手,符合自己思考方式的)
而在經過這一、二十年來的開放原始碼運動發展之後,
如今簡單、好用、穩定、成熟的程式語言比比皆是。

運用工具一直是靈長類的的強項,
選擇、學習一個順手的程式語言,
磨練、培養自己寫程式的能力,
是今日我們必備的基礎能力之一了。

2010年10月31日 星期日

孤陋寡聞

Ruby Version Manager (RVM)是一套讓使用者可以在同一個作業系統下,安裝以及切換使用多個版本的Ruby程式語言的工具。

誰會需要安裝多個版本? 是開發人員。軟體工具更新速度越來越快,除了早期版本開發的應用系統需要維護外,也需要能夠針對新版本進行安裝與學習測試,所以這樣的切換工具就應運而生。

不意外的,Perl也有類似的工具:App::perlbrew

安裝RVM的文件裡有這樣的指令
bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
比較奇怪的是 <( .....  ) 是啥?!! 用Linux也有一段時間了,倒是沒看過這個指令?!

到Google找答案,問題是Google不會去搜尋 <( 這樣的查詢字串,這又衍生另外一個問題,Google搜尋服務就在那裡,但不是每個人都有能力去搜尋!

不管如何,我還是找到答案了,這有個詞叫做「Process Subtitution」,簡單的解釋看這裡,詳細的解釋與範例看這裡
有點尷尬的是,這又再度衍生另外一個問題,Google搜尋服務就在那裡,你有能力去搜尋,但不是每個人都有能力去理解答案! 大多數的人可能都只具備傳送url連結的技能吧?

為了減少尷尬的機會,(多虧)Google搜尋又給了我們另一個救贖的可能,就是「沒事多看書,多看書沒事」,在搜尋的頁面看到了這個網誌文章《12 本免費的 Linux 優質好書》 而且慷慨地透過免費這神奇的字眼來驅使我們學習。

所以知識還是力量,網路找得到的只是資料與資訊以及通往知識道路的指標,理解的能力與知識的本身,永遠需要靠自己一點一滴的不斷累積,只是以前讓人知道自己無知的是朋友(子曰︰獨學而無友,則孤陋而寡聞),現在則是多了一個來源︰網際網路Internet(大陸叫互聯網)。

2010年7月12日 星期一

Perl學習之旅的回顧(之四)

從大學時代初次學習Pascal程式語言開始,以及後來陸續學習的Fortran、C、Basic、FORTH以及Perl都是屬於指令式程式設計 (Imperative programming),也就是一步一步告訴電腦如何執行我們所設計的程序。

到今天我還記得Pascal教科書上讓我印象深刻的那句話:「Algorithms + Data Structures = Programs」。非常古典的看法,它宣告著,有了演算法加上適當的資料結構,等於擁有了通往電腦魔法世界的鑰匙;在當時,這似乎是永恆的真理,畢竟,美國太空總署透過Fortran,神奇地把太空人送上了月球,不是嗎?

但一般程式語言所提供的資料結構是平凡、單調而且僵固的。Pascal的資料結構尤其讓我倒胃口,不但要事先宣告型態與大小,而且又有許多的語法限制,在產生神奇的魔法效果之前,得先經過編譯器(Compiler)黑森林的重重刁難之後,才能勉強執行,更困難的是,想要把現實世界的東西,塞進電腦世界的資料結構裡面,沒有添加一點想像力,耐心的迂迴前進是不容易辦到的。

Perl 的資料結構,基本上說來是蠻單純的,但神奇的是,透過Reference的使用,可以建構成相當複雜有用的資料結構,除了之前所提到的聖經內容,也可以是一個網頁內容的樹狀結構,或者,把一間公司所有網路設備的資料放入資料結構裡。使用過這樣強大又具彈性的資料處理能力,再參考以下範例,終於可以體會這句話的意思:Algorithms + Data Structures = Programs。
use strict;
use LWP::Simple;
use HTML::TreeBuilder;

my $html=get("http://www.apress.com");
my $tree=HTML::TreeBuilder->new;

$tree->parse($html);
$tree->eof;

my @pnodes=$tree->find_by_tag_name('meta');

foreach my $node (@pnodes) {
    print $node->as_HTML;
    print "\n";
}

$tree->delete;

變化是無止盡的,接下來「物件導向程式設計」概念,衝擊著習慣第三代程式語言的程式設計師們,然而Perl並沒有拋棄我們,程式設計的原理原則是不會變的,它只是不斷地融合再生,就像上面的範例,就是不折不扣的物件導向程式呢。

為什麼需要「物件導向程式設計」,我認為最重要的原因之一是,藉由抽象所帶來的單純化,讓程式碼容易撰寫(模組化)、容易維護及reuse。我們不需要知道,如何去剖析組成網頁的HTML內容,也不用知道剖析後的資料結構,只要知道如何透過物件的介面去使用就可以了。

Moose 是Perl的一個模組,它讓我們可以撰寫 Perl物件導向程式。我試著把之前所建立DBM::Deep裡的聖經資料,加上物件的介面,我們便可以提供一個間單的讀經介面。

# Bible.pm
package Bible;

use Moose;

use DBM::Deep;
use List::Util qw(max min);

# 透過變數$bible連結DBM::Deep檔
my $bible = DBM::Deep->new( "bible_ary.dmd" )->{bible};

#properties
has readbook   => (is => 'ro', isa => 'DBM::Deep', writer => 'set_readbook');
has opened     => (is => 'ro', isa => 'Str',       writer => 'set_opened');
has pointer    => (is => 'ro', isa => 'Int',       writer => 'set_pointer');

has nBooks     => (is => 'ro', isa => 'Int', default => $#{$bible});
has booklines  => (is => 'ro', isa => 'Int', default => 0, writer => 'set_booklines');

#methods
sub open {
    my $self = shift;
    my $book = shift || '創世紀';
 
    if ($self->findbook($book)) {
        print $self->opened, " opened\n";
    }
    else {
        print "$book not found!!\n";
    }
}

sub findbook {
# 由篇名尋找
    my $self   = shift;
    my $tofind = shift;

    for my $index ( 0 .. $self->nBooks )  {
        if (   $bible->[$index]{bookname}{chn} eq $tofind 
            or $bible->[$index]{bookname}{eng} eq $tofind ) {

            $self->set_readbook ( $bible->[$index]{words} );
            $self->set_opened   ( $tofind );
            $self->set_booklines( $#{$self->readbook} );
            $self->set_pointer  ( 0 );

            return 1;
        }
    }

    # mark no book opened 
    $self->set_booklines( 0 );
 
    return;
}

sub read {
    my $self  = shift;
    my $nline = shift || 10; # 一目十行 

    my $from;
    my $to;

    return unless $self->booklines;
 
    $nline = 10 if $nline < 0;
 
    for (0 .. $nline - 1) {
        $self->readline;
        $self->incre_pointer;
        last if $self->pointer == $self->booklines;
    }

}

sub incre_pointer {
    my $self = shift;
    $self->set_pointer( min( $self->pointer+1, $self->booklines ) );
}

sub readline {
# 顯示現在pointer所指向的那一行
    my $self = shift;
 
    printf "%-5s %s\n",
            $self->readbook->[$self->pointer]{index},
            $self->readbook->[$self->pointer]{word},;
}

sub lookup {
# 翻閱至特定章節。 例.chapter(3,2) 第三章第二節
    my ($self, $chap, $chap_sub) = @_;
 
    for my $line (0 .. $self->booklines) {
        my ($r_chap, $r_chap_sub) = split /:/, $self->readbook->[$line]{index};
        if ($r_chap >= $chap && $r_chap_sub >= $chap_sub) {
            $self->set_pointer($line);
            $self->readline;
            last;
        }
    }
    return;
}

1;


有了Bible這個物件之後,我們的程式就不需要知道DBM::Deep或者YAML裡聖經章節的資料結構,只要透過物件去使用就可以了(就算以後我把聖經放到雲端資料庫裡面也是一樣!)。

use Bible;

my $bible = new Bible;

$bible->open('馬太福音');
$bible->read();

$bible->lookup(2,5);
$bible->read();

物件導向不是萬靈丹,它是程序導向方式的演化,良好的抽象介面,讓內部的細節隱藏,以便因應日趨複雜的資訊系統。

"Easy things should be easy and hard things should be possible".

這幾年來,我從學習Perl中得到許多知識與樂趣,也由於資訊領域快速發展的特性,讓我可以經常的藉由Perl去探索新的事物。學習是無止盡的,如果學習過程能夠充滿了樂趣,我們會高興知道這個事實,並且樂在其中。

後記. 之所以會寫這幾篇Perl學習之旅的網誌,是因為前兩個星期,無意間知道這個模組Number::RecordLocator 所引起的。

2010年7月5日 星期一

Perl學習之旅的回顧(之三)

YAML檔透過縮排來表示資料間的相互結構關係,但每次要使用的時候,還是要透過LoadFile函式來剖析並載入記憶體才能夠使用。
所以會有使用前處理的overhead以及記憶體的限制,雖然對於幾萬筆(或10幾萬筆)的資料,這個問題還不算嚴重,但畢竟還是個限制。
另外還有一個問題,就是當我們要透過程式來更改YAML檔的內容時,就會有鎖定(Lock)的問題,因為實際上,這個YAML檔也可能被其他人(程式)所讀取。

以上所描述並不是YAML的問題,應該說是它的特性(與XML類似),所以YAML檔大部分用於設定參數檔(configuration file),由人去目視編輯內容(類似WIndows的INI設定檔,又比XML具可讀性),再由程式讀取使用。

但是有時候,我們就是需要處理幾十萬到幾百萬筆以上的資料,又要能讀能寫,記憶體又有限制的時候,到底該怎麼辦? 除了使用資料庫之外,Perl提供了一種方法:DBM::Deep

簡單的說,DBM::Deep是一個Perl位於CPAN上的模組,經由它所建立的純量變數,可以神奇將Perl的資料結構對應到磁碟上的一個檔案,可讀可寫,還有lock的功能,同時也提供Transaction的機制,最重要的是,不管資料量的大小,都不會有記憶體限制的問題(當然,我們不會用這個方法來處理幾GB以上的資料)。

舉個例來說,我們由YAML檔將整本聖經讀入之後,可以存成DBM::Deep的格式,之後,我們就可以將讀經的心得,寫入到DBM::Deep檔案內,讓心得跟聖經經文之間產生連結,如以下程式碼:

use strict;
use DBM::Deep;
use YAML qw /LoadFile DumpFile/;

my $db = DBM::Deep->new( "foo.db" );

# 將所有舊約內容讀入$bible純量變數內
my $bible = LoadFile('bible_old.yaml');

my $db = DBM::Deep->new( "bible.db" );
# 執行以下程式碼時, bible.db已存有所有舊約內容
$db->{bible_old} = $bible;

# 加入我對於箴言的心得, 就這樣!! 所有改變已經存於硬碟上了
$db->{bible_old}{'old-20'}{memo} = '我最喜歡的經文'; 

DBM::Deep的資料結構屬於 hierarchical階層式資料形式,透過節點(key)的方式往下尋找下一階層的節點,直到找到所需要的資料為止。






















但與一般階層式資料庫不同的是,DBM::Deep可以動態產生資料結構,而又能擁有資料的持續性(persistence),這種特性可以應用在不同程式之間的資料儲存,交換,這是一種簡易型,輕量級又極富彈性的資料庫。

Perl再一次拓展了我對於資料處理的知識與視野。

2010年6月30日 星期三

Perl學習之旅的回顧(之二)

要檢索文字,必須知道什麼是「常規表示式」(Regular Expression),這是我透過Perl認識的一樣奇特的知識。
也因為能夠在Perl程式中簡單隨意的使用常規表示式,所以很快的便摸熟了一些基本的用法,這種可以方便實驗(Edit & Run)的學習模式,提昇了吸收新東西的速度。

雖然之前已經能夠快速的讀入聖經文字檔,使用常規表示法來檢索聖經內容,但是我沒有辦法區分新約與舊約、列出特定連續章節、中英文對照等等,原因是,原始文字檔案只有文字本身而沒有結構!

YAML 」是另外一個奇特的東西。

簡單的說,YAML是human-readable的類XML,透過資料的縮排,來代表(imply,也符合人類視覺的直覺)資料間的從屬、順序、對應等關係。

我將原來的檔案整理成YAML檔結果就像下面這個樣子。
<<舊約>>












<<卷名>>














有了YAML文件後,如果要知道舊約有幾篇,新約又有幾篇,可以使用以下程式碼:
use strict;
use YAML qw /LoadFile DumpFile/;

# 將聖經目錄讀入$bindx純量變數內
my $bindx = LoadFile('bible_index.yaml');

my $nOld = grep { /old/ } keys %$bindx;
my $nNew = grep { /new/ } keys %$bindx;

printf "聖經裡面,舊約有%d篇,而新約有%d篇。\n", $nOld, $nNew; 
輸出結果:

聖經裡面,舊約有39篇,而新約有27篇。

如果要列出《箴言》內容,可以使用以下程式碼:
use strict;
use YAML qw /LoadFile DumpFile/;

# 將所有舊約內容讀入$bible純量變數內
my $bible = LoadFile('bible_old.yaml');
my $bindx = LoadFile('bible_index.yaml');

my $old_20 = $bible->{'old-20'};

printf "《%s》\n", 
$bindx->{'old-20'}{chn};

for my $index ( sort keys %{$old_20} ) {
    printf "%s %s\n", 
            $index, 
            $old_20->{$index}{word};
}
輸出結果:

《箴言》
001:001 以色列王大衛兒子所羅門的箴言.
001:002 要使人曉得智慧和訓誨.分辨通達的言語.
001:003 使人處事.領受智慧、仁義、公平、正直的訓誨.
001:004 使愚人靈明、使少年人有知識和謀略.
001:005 使智慧人聽見、增長學問、使聰明人得著智謀、
001:006 使人明白箴言和譬喻、懂得智慧人的言詞和謎語。
001:007 敬畏耶和華是知識的開端.愚妄人藐視智慧和訓誨。
......
......

透過YAML建立了Perl的內部資料結構之後,如果有需要轉成XML格式檔,也是相當直覺與容易的,如下。
use XML::Simple;
# 存成XML格式檔
open my $fh, '>', 'bible_old_20.xml' 
    or die "$!";
XMLout($old_20, OutputFile => $fh);

close $fh;
XML檔案內容:


<001:001 index="1:1" word="以色列王大衛兒子所羅門的箴言." />
<001:002 index="1:2" word="要使人曉得智慧和訓誨.分辨通達的言語." />
<001:003 index="1:3" word="使人處事.領受智慧、仁義、公平、正直的訓誨." />
<001:004 index="1:4" word="使愚人靈明、使少年人有知識和謀略." />
<001:005 index="1:5" word="使智慧人聽見、增長學問、使聰明人得著智謀、" />
<001:006 index="1:6" word="使人明白箴言和譬喻、懂得智慧人的言詞和謎語。" />
<001:007 index="1:7" word="敬畏耶和華是知識的開端.愚妄人藐視智慧和訓誨。" />
......
......

在學習Perl的過程中,我知道了YAML以及XML這兩種新的文字資料格式,雖然這兩種格式背後仍有許多細節、應用與注意事項,但經由這些小小的練習,讓我有了熟悉的感覺,建立起學習更多細節的信心,而不再是難以入門的鬱卒。(這是我曾經看了一本「XML入門」之後的感覺)

參考文章: XML Matters: YAML improves on XML

2010年6月28日 星期一

Perl學習之旅的回顧(之一)

自從2001年接觸Perl這個程式語言,許多方面的知識跟Perl產生了連結之後,好像會變得比較容易理解,對我而言,這是個感覺奇妙的學習之旅。

從一開始,Perl的資料結構:scalar純量、array陣列以及hash雜湊,簡化了程式的撰寫與資料處理的力量,經由這三類資料型態,可以處理大部分的問題。

Perl的處理速度以及記憶體管理也讓我對於資料處理有著深刻的印象。

舉個例子來說,我初學Perl的時候,由於已有其他程式語言的經驗,
所以看了一些語法之後,想要寫個程式來試試看,但又不想寫什麼迴圈九九乘法表之類的,
於是想到"聖經",聖經可以線上下載取得,中英文都有,內容文字量也夠多,
處理起來應該比較趨近於實務狀況。

實際下載後,文字檔大小約3.5MB(31,102行),摘錄部份內容如下:

Gen 1:1 起初 神創造天地。
Gen 1:2 地是空虛混沌.淵面黑暗. 神的靈運行在水面上。
Gen 1:3  神說、要有光、就有了光。
Gen 1:4  神看光是好的、就把光暗分開了。
Gen 1:5  神稱光為晝、稱暗為夜.有晚上、有早晨、這是頭一日。
Gen 1:6  神說、諸水之間要有空氣、將水分為上下。
Gen 1:7  神就造出空氣、將空氣以下的水、空氣以上的水分開了.事就這樣成了。
Gen 1:8  神稱空氣為天.有晚上、有早晨、是第二日。
Gen 1:9  神說、天下的水要聚在一處、使旱地露出來.事就這樣成了。
Gen 1:10  神稱旱地為地、稱水的聚處為海. 神看著是好的。

我就試著寫一個聖經全文檢索程式,而整個程式碼及執行結果讓我覺得很神奇,如此簡潔、如此快速,程式如下。
use strict;

open BB ,'<', 'hb5_utf8.txt'
    or die "$!";

# 將檔案內容全部置於陣列變數@bible)內
my @bible = ;
close BB;

while (1) {

    print "請輸入查詢文字(q=結束):";
    my $search = ;

    chomp $search;

    exit if $search =~ /q/i;

    for my $words (@bible) {
        print "$words" if $words =~ /$search/o;
    }

}


執行結果

perl bible_demo.pl

請輸入查詢文字(q=結束):憂傷

Gen 6:6 耶和華就後悔造人在地上、心中憂傷
1Sa 2:33 我必不從我壇前滅盡你家中的人.那未滅的必使你眼目乾癟、心中憂傷.你家中所生的人都必死在中年。
2Sa 12:18 到第七日、孩子死了。大衛的臣僕不敢告訴他孩子死了、因他們說、孩子還活著的時候、我們勸他、他尚且不肯聽我們的話、若告訴他孩子死了、豈不更加憂傷麼。
Psm 51:17  神所要的祭、就是憂傷的靈. 神阿、憂傷痛悔的心、你必不輕看。
Psm 69:29 但我是困苦憂傷的. 神阿、願你的救恩將我安置在高處。
Pro 17:22 喜樂的心、乃是良藥.憂傷的靈、使骨枯乾。
Pro 18:14 人有疾病、心能忍耐.心靈憂傷、誰能承當呢。
Ecc 1:18 因為多有智慧、就多有愁煩.加增知識的、就加增憂傷
Isa 16:7 因此、摩押人必為摩押哀號.人人都要哀號.你們摩押人要為吉珥哈列設的葡萄餅哀歎、極其憂傷
Isa 54:6 耶和華召你、如召被離棄心中憂傷的妻、就是幼年所娶被棄的妻.這是你 神所說的。

請輸入查詢文字(q=結束):

有了這麼一點小成果之後,我對於Unix世界充滿了信心,
自以為有了Perl的協助,自己將無所不能,
直到我發現自己苦心撰寫的程式,
其實在Shell底下,只要一行指令就可以做到一樣的結果時,
我有點傻了。

    grep 憂傷 hb5_utf8.txt

那時突然覺得資訊的世界不僅僅是DOS/Windows的世界,
這世界的範圍、力量,遠比我當時可以想像的大多了。

2010年3月19日 星期五

弟子規

弟子規

完整版的解說請參見此處
http://www.amtb.org.tw/pdf/dzgjs.pdf

總 敘

弟子規,聖人訓,首孝弟,次謹信,汎愛眾,而親仁,有餘力,則學文。

入 則 孝

父母呼,應勿緩。父母命,行勿懶。父母教, 須敬聽。父母責,須順承。冬則溫,夏則凊;晨則省,昏則定。出必告,反必面;居有常,業無變。事雖小,勿擅為;茍擅為,子道虧。物雖小,勿私藏;茍私藏, 親心傷。親所好,力為具,親所惡,謹為去;身有傷,貽親憂,德有傷,貽親羞。親愛我,孝何難;親憎我,孝方賢。親有過,諫使更;怡吾色,柔吾聲。諫不入, 悅復諫;號泣隨,撻無怨。親有疾,藥先嘗;晝夜侍,不離床。喪三年,常悲咽;居處變,酒肉絕。 喪盡禮,祭盡誠; 事死者,如事生。

出 則 弟

兄道友,弟道恭,兄弟睦,孝在中。財物輕,怨何生;言語忍,忿自泯。 或飲食,或坐走,長者先,幼者後。長呼人,即代叫;人不在,己即到。稱尊長,勿呼名;對尊長,勿見能。路遇長,疾趨揖,長無言,退恭立。騎下馬,乘下車, 過猶待,百步餘。長者立,幼勿坐;長者坐,命乃坐。尊長前,聲要低;低不聞,卻非宜。進必趨,退必遲;問起對,視勿移。事諸父,如事父;事諸兄,如事兄。



朝 起早,夜眠遲,老易至,惜此時。晨必盥,兼漱口,便溺回,輒淨手。冠必正,紐必結,襪與履,俱緊切。置冠服,有定位,勿亂頓,致污穢。衣貴潔,不貴華,上 循分,下稱家。對飲食,勿揀擇,食適可,勿過則。年方少,勿飲酒,飲酒醉,最為醜。步從容,立端正,揖深圓,拜恭敬。勿踐閾,勿跛倚,勿箕踞,勿搖髀。緩 揭簾,勿有聲;寬轉彎,勿觸棱。執虛器,如執盈;入虛室,如有人。事勿忙,忙多錯;勿畏難,勿輕略。鬥鬧場,絕勿近;邪僻事,絕勿問。將入門,問孰存,將 上堂,聲必揚。人問誰,對以名,吾與我,不分明。用人物,須明求,倘不問,即為偷。借人物,及時還,後有急,借不難。



凡 出言,信為先,詐與妄,奚可焉。話說多,不如少,惟其是,勿佞巧。奸巧語,穢污詞,市井氣,切戒之。見未真,勿輕言,知未的,勿輕傳。事非宜,勿輕諾,茍 輕諾,進退錯。凡道字,重且舒,勿急疾,勿模糊。彼說長,此說短,不關己,莫閒管。見人善,即思齊,縱去遠,以漸躋。見人惡,即內省,有則改,無加警。唯 德學,唯才藝,不如人,當自礪。若衣服,若飲食,不如人,勿生慼。聞過怒,聞譽樂,損友來,益友卻。聞譽恐,聞過欣,直諒士,漸相親。無心非,名為錯,有 心非,名為惡。過能改,歸於無,倘揜飾,增一辜。

汎 愛 眾

凡是人,皆須愛;天同覆,地同載。行高者,名自高;人所重, 非貌高。才大者,望自大;人所服,非言大。己有能,勿自私;人有能,勿輕訾。勿諂富,勿驕貧;勿厭故,勿喜新。人不閒,勿事攪;人不安,勿話擾。人有短, 切莫揭;人有私,切莫說。道人善,即是善,人知之,愈思勉。揚人惡,即是惡,疾之甚,禍且作。善相勸,德皆建;過不規,道兩虧。凡取與,貴分曉;與宜多, 取宜少。將加人,先問己;己不欲,即速已。恩欲報,怨欲忘;報怨短,報恩長。待婢僕,身貴端,雖貴端,慈而寬。勢服人,心不然,理服人,方無言。

親 仁

同是人,類不齊;流俗眾,仁者希。果仁者,人多畏;言不諱,色不媚。能親仁,無限好;德日進,過日少。不親仁,無限害;小人進,百事 壞。

餘力學文

不力行,但學文,長浮華,成何人。但力行,不學文,任己見,昧理真。讀書法,有三到,心眼口,信皆要。方讀 此,勿慕彼,此未終,彼勿起。寬為限,緊用功,工夫到,滯塞通。心有疑,隨札記,就人問,求確義。房室清,牆壁淨,几案潔,筆硯正。墨磨偏,心不端;字不 敬,心先病。列典籍,有定處;讀看畢,還原處。雖有急,卷束齊,有缺壞,就補之。非聖書,屏勿視,蔽聰明,壞心志。勿自暴,勿自棄,聖與賢,可馴致。

ps. 從1165期商周看到有「弟子規」這種東西,特別轉載內容,周刊內一大陸用語「真幹」,讓我在捷運上笑開了,相信今天將一整日快活愜意。

2009年11月10日 星期二

一個不熟的人-金士傑


昨天在電視上突然看到一個臉孔
一個看過但不討喜不熟悉的人
談起他所喜歡的一些情境與事物
他喜歡看事情慢慢的發展
無所謂好壞
只要慢慢的來
總是可以從中獲得一些領悟
領悟到什麼也許跟事情無關
而是經由緩慢過程的沉澱
期待時光能夠從容的醞釀

今天在網路上看到他的一篇
"最後一封情書"
雖然是幾年前的事了
讀起來仍是情真意切
這封信無聲的停留在許多人的網誌裡
如今也停留在我這裡。

親愛的葉雯,我是親愛的金寶。
很替你高興,終於解脫了。病痛、折磨、負擔、沈重的生命,終於拋開了。我雖然很難接受這個決定,但還是為你鼓掌,面對病痛,人真的好渺小,打不過。你獨自孤單的強忍了這麼多年,你的毅力,我只有佩服。

這幾天,你們一家人的表現也很棒,大家相互扶持,共度時艱。他們很體諒、很堅強的說:「葉雯不希望看到我們跌倒,葉雯只是累了,去休息了。」

尤其兩個女兒的表現,讓我驚訝,前一秒鐘還在傷感,後一秒接到事情,就能快速冷靜的反應回答,處理狀況,有條有理,每件事都不亂,她們真的擁有大人的成熟,我由衷的敬佩,這兩個孩子,你可以放心。
葉雯,你不在我們身邊的第二天早上,我起床,第一個念頭是這個世界不甜了。這麼多年,你給我最大的感受,就是甜、心甜、笑容也甜,連在KTV唱首悲傷的歌也甜甜的。

我太喜歡太想念你的笑聲,笑得像小孩子、像個小傻瓜,像天使。一個最善良、最純潔的靈魂,才會有這麼甜的歡笑。我真的感激從頭到尾,你我共同走過的每一步路,每一個記憶。我喜歡和你出國時一起看著火車窗外,一起在飯店的陽台上,邊喝點小酒,邊看湖賞雪。

我喜歡和你在一起,練習讀劇本台詞的感覺。我喜歡你聽我講完一大堆嚴肅的分析見解之後,突然賞我腦門一個脆巴掌‘ㄅㄧㄚ’!然後笑得人仰馬翻的。

我喜歡你那麼在乎我寫給你的情書,一張張一綑綑的收集在床頭,有時久久拿出來偷偷重讀,又偷偷哭起來。

我喜歡你看到馬路上紅燈剛亮,就像個小賊一樣的一馬衝過街,我嘲笑你出息不大、惡習難改,你呢,笑得蹲在地上還笑不停。太多太多可愛的畫面。

記憶是可怕的。但換個角度,記憶也是最可貴的最美好的。它們會陪你陪著我,以及我們每一個至親好友,到永遠。

有一次你說:ㄟ!這麼多好玩的事情,來不及都記下來,忘了怎麼辦?我說:如果你會忘掉,別怕,我會替你記得。你說:那就好。既然那就好,那麼我就好好提醒你一個事。

有兩個50多歲,剛剛開始戀愛的中年男女。女的說:下輩子投胎作人,我一定來找你。中年男人的回答記得嗎?他很得意,但又裝得很酷的說:很好!但下次請稍微早一點來找我。然後,那個女的,笑了很久,很久,很久。

葉雯 平安!喜樂!愛你。

千言萬語 

2009年9月29日 星期二

大湖公園半日遊記
















今天請了假,刻意搭乘文湖線去看看風景,目的地是大湖公園,喜歡這樣隨性的安排。

從復興站坐到展覽館站,途中經過機場站時,因為突然看到機場的飛機而欣喜了一下,沒想到有這樣的風景,由於不趕時間,上班時間人也少,整個車廂空蕩蕩,冷氣舒適地吹著,心情輕鬆的坐著。

人,如果沒病沒痛的,沒煩沒惱的,自由自在的,自然會有一種幸福的感覺。

坐到終點站,換到反方向的班次,一樣是坐在第一節車廂,前方一覽無遺的天空展開著,沒多久大湖公園就到了,出了捷運閘門,就看到一大片窗戶,剛好面對著綠綠的草皮以及都市難得一見的湖面,這個景,令人心曠神怡。忽然發現外面下起毛毛雨,只好在站內稍作停留,站內有個百元理髮店,生意還不錯,幾個顧客閒坐等待著,其中還有個作家苦苓。

雨勢不大,便撐著傘往外走了,一出站沒多久,就看到幾隻白鷺鷥,錯落的遊客漫步行走,還有幾位釣客與寫生的人;沿著湖邊走著,蜿延曲折,有點趣味。

大湖其實不大,環繞一圈目視看來可行,於是便繞了一圈,外環靠馬路那段,由於間或有公車與卡車經過,被迫吸著排放的廢氣,走起來並不舒服,下次可以免了。

秋天,是秋收的季節,也是幸福滿溢的季節。

2009年9月18日 星期五

幸福,從小地方開始,別強求太多。
















當靜下來的時候,總是有某篇文章、某段旋律、某個人物、某個畫面,
就這樣牽動著思緒,混雜著過往的記憶片斷、當下的週遭時空。

幸福,從小地方開始,惜福感恩,別強求太多,細細地品嚐人生的好味道.... 。

2009年8月20日 星期四

電影:心中的小星星













昨天把一些困擾我多日的程式(主要)問題解決後,看了兩部電影,
先是(別再提了的)「恐怖迎腥會」,
另外一部就是這片(原本一點也不期待的)「心中的小星星」。

會覺得這部好看的原因大概是劇中的小男孩吧,
小男孩長相一點也不俊秀也說不上可愛,
倒是有點怪咖的古怪精靈,
像是蟲一樣的扭來扭去,
一下子就讓我想起了一個人 ......

故事如預期般的展開,大部份劇情是快樂而陽光,
老師是制式印象中的單向授業解惑者,
學校重視的也是現代社會競爭下的智育範疇如英數理化等等,
強調是閱讀書寫與記憶,而不是感性觀察與適性發展
父母習慣性的擔心自己小孩的競爭表現,
小孩被環境(同學、父母、老師)灌輸只能贏不能輸的價值觀,
許多事情變成壓力的源頭,
而不是屬於個人獨特的回憶(無論是快樂、刺激、痛苦、成長...)
(其實,說起來我也是這樣的父母)
當小孩(或大人也是)表現不如人的時候
只有挫折與罪惡感,原本有趣的事情也變得令人沮喪了。

所幸,有位同樣有類似成長過程的美術代課老師,
就像太陽一般的融化開啟小男孩已冰封自縮的心房

當小男孩利用野外的材料自製了一艘能夠自力前進的小船
正暗示了他已找到了自己的方向與動力
知道如何運用上天賦予他獨特的天賦來成長茁壯

最後
美術老師透過一場全校師生畫畫比賽
給了小男孩一個公平的競技場
讓世界了解他的不平凡
也透過老師所畫的男孩的畫像
表現出小男孩精彩瑰麗的內心世界
自此
如蛹一般的蛻變開始了
一切變得如此的不一樣......

其實
我們每個人或多或少都是劇中的小男孩
在成長的過程中都有屬於自己的眼中世界
只是我們不知如何去描述表達我們所看到的
逐漸地被制式(穩定?)的社會規範所拘束
以為人生便(只?)是如此
逐漸看不到自己的獨特內心世界

閱讀能啟發我們改變想法
透過別人的故事也能夠影響我們
希望看過這部片子的人
能夠因此改變
用更寬容的、更具啟發角度的眼光
來看待、對待我們這一生所遇到的人
包括 我們自己。

2009年8月12日 星期三

人生苦短,實在應該選擇活得舒坦些才是














這次莫拉克颱風帶來的風災水災實在是嚴重
報導中許多人受到影響,受到損失
有許多人在能力範圍內施出援手
不管是打電話、發簡訊、架網站、推文發噗,部落格文章串起連結等等
就是做得到的,心意上願意做的,發揮自然的人性毫不猶豫的、不求回報的去做了

但還是偶爾看到一些情緒性的發文、謾罵、指責的文章或推文,
指責他人沒有能力、沒有心意、
沒有在第一時間做好搶救計畫毫無效率,
沒有在平日做好訓練保養維護等工作....

但.... 誰有權利就這樣指責別人呢?
如果事情必須由我們來負責、來處理,我們真能夠做的很好?
真的能夠在平時便盡心盡力,做好防患未然的工作?
真能夠不畏權勢,發揮道德良知,為維護多數人利益,
而有勇氣做出並捍衛(可能會)損害少數人利益的決策?

天然災害已經發生了
在盡力救助減少傷亡之後
對於事後檢討應確實而且公開
屬於天災的部份應心存敬畏,不該重建的部份就應保留現況,保留自然的環境
至於人禍的部份應予適度懲處,建立平時維護複查機制,
地方政策應避免私人利益或民粹掛帥,應該兼顧環境保護與地方繁榮發展
但因為這部份我們實在不是專家也不夠專業
能提供意見的實在有限

指責是最沒有意義的負面能量
我之前也很愛指責別人(現在或多或少還是)
但人總該隨著年齡增加而增長些智慧
記得前些天看到兩句話:
"記住該記住的 忘記該忘記的 改變能改變的 接受不能改變的"
"日出東海落西山 愁也一天 喜也一天 遇事不鑽牛角尖 人也舒坦 心也舒坦~"

人生苦短,實在應該選擇活得舒坦些才是。

2009年7月24日 星期五

一首歌 "相遇"






(圖 在聖經中與神相遇)







相遇
作詞:姬秀愚/作曲:李泰祥/主唱:許景淳、李知聊(李泰祥)

雖然相遇的時候
已經非常的遲了
你已四十七 我已二十三
但卻正是時候
如果早了 你是別人的
如果晚了 我是別人的
就是在這個時候相遇
你才能是我的 我才會是你的
雖然你已四十七 雖然我已二十三
但卻正是時候
你虛擲二十三年的光陰
等我長大走進你生命裡
我苦守二十三的歲月裡
等你到來教我如何去愛
我好比那火柴 跟著你劃出神奇的火花
在我最美麗的時刻 讓你遇見我
讓我們結一段塵緣 為了這樣的悸動
我甘心傾灑今生的淚珠
我甘心守候 今世的瀟湘
-----------------------------

這是以前有段時間常聽的一首歌
前些時候偶然在網路上看到歌詞
就把內容收藏起來

仔細地把
歌詞看一遍
由於學識不足
不了解"今世的
瀟湘"這句話的典故

不過想想
要不是已經四十七了
就不會有"遲"的感覺
就不會有這樣的悸動
就不會覺得想要去珍惜

仔細看第二遍
又覺得這首詞的的佔有意念太強

除了男女情愛之外
任何一種相遇應該是種偶然
是不可多得的緣分
應該小心的呵護細細地領受
就算只是短暫的相遇
也是值得在心中珍藏與回味的事
實在不必在乎是否能夠擁有

其實之前我聽歌從不看歌詞的
也不管是誰作曲或作詞的
這些資訊實在不重要
聽來悅耳的,有機會有時間就多聆聽
看來順眼的,就要把握住當下看幾眼

誰知道明天會怎麼樣呢?
(特別是 如果你已經開始有點顛倒的時候)

2009年7月21日 星期二

顛倒


最近有點怪怪的現象
就是寫字、說話、思考等會有點顛倒不連貫
今天簽名時竟然把名字顛倒寫了
幸虧姓還沒寫錯

講話也是
本來是很本能的說話
竟然詞句也會顛倒
比如 "浴室地板有點滑" 說成 "浴板地室有點滑"
(還是比不上"六孤龜兒院" 好笑)

不曉得以後會不會更嚴重些
嚴重到可以開始選總統

2009年7月20日 星期一

雜記














自從7/3~7/7去了趟日本北海道後,緊接著又回了趟南部,雖然發生了一些值得記錄的,
但都因事忙而沒能在第一時間記下來,覺得有點可惜,特別是北海道夏天令人心曠神怡的氣候


但我想這些事情,會一直留在我的記憶之中吧。

這兩週來也看了幾部影片,比較印象深刻的是「橫山家之味」,跟此次旅遊的印象結合起來,對於日本的感覺更好了。(也許明年過年可以選擇到東京?)

我有個奇怪的習慣,當碰到美好的事物或是覺得可以珍藏的東西,我會讓自己的感官遲鈍些,不在乎的看著、聽著、感受著,這樣當我下次遇見或欣賞時,就可以更深入、再次地感受到那種美好的悸動,對於這部電影也是一樣的感覺。

簡單的故事述說著平凡的生活,人與人之間微妙關係的演變,內藏於心中的快樂與痛苦,現實與期望差距的無奈等等,都一直在日常之間發生過往。有些事真的是過了就過了,不需要放在心底的。

若能雲淡風輕,人也會快樂許多吧。

2009年6月25日 星期四

到底自己是怎樣的一個人?

我是個思想單純的人

我習慣依靠直覺來反應或行動
而不是碰到事情時會詳細規劃再按部就班進行
通常是七分有把握就做了
(有時還會期待來點意外狀況,以便可以隨機應變、驚險過關之類的不成熟心理)

我的直覺大致說來還算準確
但是當事情發生的太突然
通常就是腦袋一片空白
不知道要說什麼
如果一定要發言表示意見
通常會講話速度很快
稀里嘩啦的說一些想法
當下不知道自己再說些什麼
但之後回頭想想,整理一下思緒
也會有一些脈絡可循

所以我是屬於那種
不用強迫自己使用大腦思考的人

天生可以在吃喝玩樂的同時
潛意識整理四面八方而來的訊息
經由平時閱讀心得以及所知所聞
自然而然地會有方向與見地
不知不覺中自在滿意的過著

我是個思想單純快樂的人

2009年6月6日 星期六

貝多芬4&7交響曲


今天因為要補端午節彈性上班的緣故
雖然是周六,還是要上班,但時間也過得蠻快的
吃完便當後,看了一些資料,
漸漸陽光不再那麼刺眼,接著天色就變柔和了
下班後到了PAL,隨興借了這片DVD
由於金革的DVD一向品質都很棒
所以很快的就完成了挑選與借閱的手續

曲目時間不長
飯後就(看)聽了一遍
發現我對這個曲目還真不熟(4號7號都一樣不熟!)
雖然貝多芬九大交響曲全集我早已有一套CD
但還是習慣聽較有名的No.6田園及No.9合唱


金革的影片品質真的很優,賞心悅目,音樂又好聽
是個舒服恬適的週六晚