2009年6月30日 星期二

BRITA驚魂記…

 

晚上把DVD拿去還後

一時衝動就殺到大潤發去了

在路上差一點撞到一台機車

不是我不小心

我看前面的機車

打左轉方向燈

並且已經減速了

心想從右邊超車好了

於是加油門…

就在加油加壓的一瞬間

那台機車右轉…

油門放 前後剎車全壓…

不用說也知道剌耳的剎車聲…

前面的那位女騎士還轉頭白了我一眼…

囧…

一身冷汗的到了大潤發

敢在休息前買到它了

先拍一張

明天晚上再來慢慢拆

IMG_0033

P.S.我有手殘嗎?為什麼盒子拍起來不是矩形的?怎麼歪歪的咧?誰來救救我…

 

IMG_0040

開箱嚕…

IMG_0042

拿出來

IMG_0049

防滑設計

IMG_0051

蓋子…

IMG_0056

看一下他的肚肚

IMG_0057

2包濾心,據說2個月要換1個。

IMG_0058

安裝好裝完水…

IMG_0060

不會用像機,只會亂按快門。

2009年6月29日 星期一

送行者.禮儀師之樂章

4a360aabb1a78

請您輕閉雙眼 讓我送 您走完最後一程。

原本在東京交響樂團擔任大提琴手的大悟(本木雅弘飾演),因樂團突然解散而放棄演奏家之路。失業的大悟於是和妻子美香(廣末涼子飾演)回到故鄉山形縣,在報紙上看到「旅途協助工作」的徵職廣告而前往應徵,意外當場獲得錄用。詳問之後,大悟才知對方徵的是禮儀師!禁不住社長(山崎努飾演)半強迫半利誘說服,他不情願地開始這份工作。初時大悟十分恐懼排斥,還得應付親友的誤解、週遭的鄙夷,讓他數度興起辭職念頭。但在親身經歷一場場送行儀式後,他漸漸瞭解到禮儀師妝扮往生者「走上來生旅途」的重要意義,終能自信地投入工作,並重獲眾人尊敬。也因看盡死別的不捨與悲傷,大悟下定決心面對失落已久的親情。在死生交界處,最美的送行帶來最深的體悟。

引用自:

http://departures.pixnet.net/blog/trackback/bf3bca86c6/22906467

 

這部分是我上個星期五晚上租的

結果一直躺在我的包包裡面

陪我回了一趟老家

又回到新竹

我還是沒看

今天過期1天了

要多罰30元

我早有心裡準備掉眼淚了

死亡是一直被大家所避諱的

我們從小就是這樣被教導的

可是為什麼大家常常會覺得是髒的呢?

不是髒的

是令人痛心欲絕的

不知道為什麼

生活周遭的資訊讓對

葬儀社、禮儀師…等職業

都沒有好感

不過看了這部影片後

讓我有180度的改觀

如果在這最痛苦的時期

可以有專業的人士

來撫慰在生者痛苦的心靈

真的是很好

 

還有男女主角之間的感情戲

在男主角工作完

拖著疲倦的身體

回到家一開門時

發現離家的妻子回家了

那種心情

 

我想以後我也可以換個心情

下班回家後

可以充滿期待的打開門

2009年6月27日 星期六

設計魂

為自己的設計師之道定下信條:
1.如果這個作品要被沿用100年。
2.有時候簡單也是一種設計。
--待續--

2009年6月25日 星期四

還好安全帽的鏡片是黑色的

我們都是愛逞強的人
不到最後一刻
都不肯讓自己掉眼淚
都故意用大笑掩飾自己的情緒

你這兩天不是睡的很好
我也偷偷的流過眼淚
因為我知道明天就不是這樣子了

一年又十個月前
你兩手空空的來新竹
開始找房子
開始找工作

找房子和工作也都不算很順利
但是,一切也都這樣過來了

租的地方遭過小偷也讓你損失不少

新竹的天氣你也很不喜歡
天氣很冷的下雨天
你為了下班趕快回家和我一起吃飯
凍的手又紅又痛
只要見到我
你還是很開心的笑開了

每天差不多下班的時間你都會打電話給我
問我到家了沒
今天有沒有特別想吃什麼
要出去吃
還是要你順便買

晚上你總是喜歡窩在那用電腦
就算很不方便使用
你也從來沒有抱怨過

夜深時
我們還會一起到
就近的炸攤或便利商店買宵夜
一起很高趣的挑選著商品
結帳的時候
你會先把雙手拿滿
好讓我拿完發票
我們就可以馬上走
然後很高趣的一起吃宵夜

還有你下班回來時
特別喜歡把機車停在我的機車旁邊

這樣子的日子
一年十個月的時間
過去了

以後我騎車出門時
也不需要再轉身把腳踏板踢出來了

晚餐要吃什麼都要自己想
雙人座的餐廳對面也都是空空的
你最愛去吃的義大利麵館
不是你來找我
我想我也不敢去吃了吧

夜深時
也沒有人陪我去買宵夜了

這一年多的日子裡
你在新竹幾乎沒存到什麼錢
我真的也很心疼
雖然你說你真的擁有很多了
我還是很捨不得

你坐的是晚上十點二十八分的車
離開車站的我上了機車
我真的好怕回家
我不知道等一下
我要怎麼面對我的房間

一邊騎車
一邊流眼淚
還好安全帽的鏡片是黑色的

2009年6月19日 星期五

設計師

建築師

攝影師

產品設計師

廣告設計師

一直到程式設計師

這些工作都可以說是設計師

常常我會說自己是程式設計師

可是最近我靜下來仔細的思考

原來設計師是一個很偉大的稱號

想想自己寫出來的程式

裡面真的有"設計感"嗎?

裡面有精心設計的成分嗎?

裡面有足以打動人心的力量嗎?

我是不是有愧對這個稱號呢?

設計師該有什麼樣的態度與思維呢?

開始找尋…

2009年6月18日 星期四

C# 4.0 初體驗Parallel.For

今天突然想到 VS2010和.Net 4.0都Beta了 馬上來用試一下平行運算的功能據說平行運算是.Net 4.0的重點之一 雖然這個功能早在.Net 3.5就領教過了不過在.Net 3.5這算是附加的功能但是在.Net 4.0在是Framework的基本功能
static void Main(string[] args) 
{
List list = new List();
int result = 0;
Parallel.For(1, 11, i =>
{
System.Console.WriteLine("I'm " + i);
System.Console.WriteLine("I'm in thread " + Thread.CurrentThread.ManagedThreadId);
list.Add(T(i));
result += T(i);
Thread.Sleep(2000);
});
Console.WriteLine(list.Sum());
Console.WriteLine(result);
Console.ReadLine();
}
static int T(int input)
{
int result = 1;
for (int i = 1; i <= input; i++)
{
result *= i;
}
return result;
}
輸出的結果為:
I'm 1
I'm 2
I'm in thread 4
I'm in thread 1
I'm 6
I'm in thread 3
I'm 7
I'm in thread 5
I'm 3
I'm in thread 1
I'm 8
I'm in thread 3
I'm 10
I'm in thread 6
I'm 5
I'm in thread 4
I'm 4
I'm in thread 1
I'm 9
I'm in thread 3
4037913
4037913
從thread的id我們可以看出他一共開了5個thread來從處理。
而且list與result這兩個物件的thread safe他都幫我們做掉了
平行運算就是這麼簡單

Thinking about DataRow & DataReader

程式寫了這麼久了

通常我們都是使用

DataRow[string columnName]

DataReader[string columnName]

在取值

DataRow[int columnIndex]

DataReader[int columnIndex]

這個看起來一點都不好用的東西到底是在作啥的?

我想那些大師本應該有他的理由吧!

研究的過程就略過了

結論就是 基本上DataRow裡面只有放object[] Items

所以讓你呼叫DataRow[string columnName]時

會他呼叫DataRow.Table.Colunms.IndexOf(string columnName)這個方法

取得columnIndex後,才知道要回傳Items裡面的那一個值。

所以在loop、大量資料的操作下。

我們可以儘量利用caching column index。

然後呼叫

DataRow[int columnIndex]

DataReader[int columnIndex]

個人粗糙測試下

使用index大概比使用column name 快了一倍。

2009年6月17日 星期三

赤子之心=單純+勇氣

人年紀越大

就真的越有智慧嗎?

可是為什麼接受新事物的能力卻越來越低了?

面對一個新的事物

為什麼要先找出一堆不需要去學習它、接受它的理由。

除非它們被一一擊破

然後還有要人提出一堆你非學不可的理由

然後才肯去學習

這代表你沒有學錯東西,沒有浪費時間?

 

記得小時候

對所有新奇不懂的事物

小朋友總是好奇的想去學習

想去嘗試

從來也不會先問

學這個有什麼好處?

學這個以後有什麼用?

對於好奇的新事物

就算要睡覺了

也要帶到床上去好好把玩一下

隔天早上會一大早就起床繼續研究

 

如果你不願意你可以找出千百個藉口

如果你願意只要相信就夠了

單純+勇氣才會有力量

也許這就是赤子之心

人會變老,心不能變老就是這個意思吧

知識工作者?還是苦工?

1.把貨物從貨車上搬下來

2.進行分類後

3.放到儲位上

V.S.

1.把資料從機台收集出來

2.進行資料處理後

3.塞到指定的資料表

 

一個是工人用勞力進行。

一個是…

1.照著之前怎麼撈資料的方法撈。

2.然後用一些if和for loop作一些判斷

3.然後照著之前怎麼塞資料到DB的方法塞資料

 

在寫出這些程式碼的過程中,到底有沒有在思考?

還是就像一個工人一樣,付出勞力在敲程式碼?

這真的稱的上是知識工作者嗎?

或者只是程式工人?

 

我一直很喜歡一個例子

一個手機系統的設計師,接到一個需求

就是希望手機裡的電話簿字型要大一點

可是這個設計師並沒有像工人一樣照做

因為使用者常常會在開車的時候使用手機

在撥號時希望可以讓字型大一點

以便用最快的時間找到電話號碼

使用者一開始的需求,只是想減少搜尋的時間。

到最後卻發展出2個解決方案

而且是目前手機基本的功能

1.單鍵撥號:就是預先設定每個數字鍵對應到的號碼。要撥號時只要按住一個數字鍵3秒,就會自動撥出。

2.聲控撥號:解釋略…。

我想這才是所謂的知識工作者吧!

一個是利用手機上原本就有的資源。

另一個是引進新的技術

知識工作者也是會因為所掌握的技術多寡

而提出大不同的解決方案

2009年6月12日 星期五

Linq to Oracle Survey

1.DBLinq

優點:

1.不用錢的。

2.支援.Net 3.5

缺點:

1.無法支援In的語法。

網址:

http://code2code.net/DB_Linq/

2.Linq to Oracle

優點:

1.不用錢。

缺點:

1.不支援.Net 3.5

網址:

http://www.codeplex.com/LinqToOracle

3.dotConnect for Oracle

優點:

1.支援.Net 3.5。

2.支援In語法。

缺點:

1.要錢。

網址:

http://www.devart.com/dotconnect/oracle/

2009年6月11日 星期四

征服者

pathfinder

http://www.pathfinderdvd.com/

一部看起來很像阿波卡獵逃的動作片,很少有片子讓我看完沒什麼心得的。

只有一股熱血~~~吼~~~~~~~~~~~~~~~~~~~~~~~

結合民族、史詩、冒險、動作元素的英雄故事,背景在哥倫布發現新大陸前,印地安原住民抵禦維京人的傳奇故事
在哥倫布發現新大陸以前,海盜維京人就先發現了這片土地,他們上岸後遭到美洲印地安原住民的抵抗,倉皇中一名維京人的後代留在美洲大陸,印地安人將他取名為「Ghost」,並將他當成自己的孩子撫養長大。成年的Ghost面對北歐海盜再度來襲, 他的選擇是.....?

2009年6月9日 星期二

25黑龍1+3

20點開組

打到23點44分

25個人滅了14次…

WoWScrnShot_060809_235149

WoWScrnShot_060809_235222

2009年6月8日 星期一

海獅+兔耳=?

WoWScrnShot_060809_033452

答案是:魔術方塊

一償宿願

終於…

拿到了…

真不知道要說些什麼

一切盡在不言中…

WoWScrnShot_060809_013410

2009年6月4日 星期四

The Story of Stuff

http://www.storyofstuff.com/international/
生產一件商品所投入的資源,在商品賣出後的6個月。有99%都消失了。
每天努力的工作,回家看到電視。接受到的廣告就是在告訴自己:"自己太遜了",所以要快去消費。
還有很多令我震驚的事實都在裡面

這個故事有點長,大概20分鐘。
不過請你耐下心來
聽聽一些你從來沒有想過的問題
思考一下

2009年6月3日 星期三

TransactionScope 使用交易範圍實作隱含交易

可以利用這個方法 很簡單的作到Transaction。且可以跨db作Transaction。
實在是很方便

static public int CreateTransactionScope(
string connectString1, string connectString2,
string commandText1, string commandText2)
{
// Initialize the return value to zero and create a StringWriter to display results.
int returnValue = 0;
System.IO.StringWriter writer = new System.IO.StringWriter();

// Create the TransactionScope to execute the commands, guaranteeing
// that both commands can commit or roll back as a single unit of work.
using (TransactionScope scope = new TransactionScope())
{
using (SqlConnection connection1 = new SqlConnection(connectString1))
{
try
{
// Opening the connection automatically enlists it in the
// TransactionScope as a lightweight transaction.
connection1.Open();

// Create the SqlCommand object and execute the first command.
SqlCommand command1 = new SqlCommand(commandText1, connection1);
returnValue = command1.ExecuteNonQuery();
writer.WriteLine("Rows to be affected by command1: {0}", returnValue);

// If you get here, this means that command1 succeeded. By nesting
// the using block for connection2 inside that of connection1, you
// conserve server and network resources as connection2 is opened
// only when there is a chance that the transaction can commit.
using (SqlConnection connection2 = new SqlConnection(connectString2))
try
{
// The transaction is escalated to a full distributed
// transaction when connection2 is opened.
connection2.Open();

// Execute the second command in the second database.
returnValue = 0;
SqlCommand command2 = new SqlCommand(commandText2, connection2);
returnValue = command2.ExecuteNonQuery();
writer.WriteLine("Rows to be affected by command2: {0}", returnValue);
}
catch (Exception ex)
{
// Display information that command2 failed.
writer.WriteLine("returnValue for command2: {0}", returnValue);
writer.WriteLine("Exception Message2: {0}", ex.Message);
}
}
catch (Exception ex)
{
// Display information that command1 failed.
writer.WriteLine("returnValue for command1: {0}", returnValue);
writer.WriteLine("Exception Message1: {0}", ex.Message);
}
}

// The Complete method commits the transaction. If an exception has been thrown,
// Complete is not called and the transaction is rolled back.
scope.Complete();
}

// The returnValue is greater than 0 if the transaction committed.
if (returnValue > 0)
{
writer.WriteLine("Transaction was committed.");
}
else
{
// You could write additional business logic here, for example, you can notify the caller
// by throwing a TransactionAbortedException, or logging the failure.
writer.WriteLine("Transaction rolled back.");
}

// Display messages.
Console.WriteLine(writer.ToString());

return returnValue;
}


參考:http://msdn.microsoft.com/zh-tw/library/ms172152(VS.80).aspx