程式設計,最讓我著迷的是那種從無到有的那種「純粹」。我用這目前所擁有的所有知識與經驗,賦予了這個孩子為人所不能的優點,同時也賦予了一些不可為的缺憾,但我卻可以在我靈光乍現的時刻,將缺憾從程式的生命中抽離,這種種「純粹」,是一種程式設計師自身生命的體現。
程式設計的過程,就因為有了這種可全然由人掌控的「純粹」,才能撫慰了人生旅程無常無定的不完美。程式設計如此,文字創作如此,音樂藝術等創作亦是如此。或者我們可以直接這樣說,程式設計即為藝術。
更精確來說,程式設計是一種文字創作的體現,即使大家都擁有著相同的詞彙可以使用,但在不同的語法結構之下,就有著不同的生命。而雖然「重用」是程式設計很重要的課題,但以大多數狀況來看「重用」的理由,卻往往是以「不會寫」為出發點,這就像是申論題可以用各種方面去闡釋自己的回答,但卻提不出自己的主張一般。
The River with Turbidness
濁流 - ... 世人皆濁,何不淈其泥而揚其波?眾人皆醉,何不餔其糟而歠其醨?«楚辭 漁夫»
2010年8月11日 星期三
2010年8月10日 星期二
新鏡入手試拍 Canon EF 17-40mm F4L
於
上午8:54
張貼者:
The River with Tubidness
最近處於一種自我封閉的狀態,有一種誰也安慰不了我,而我也不想關心任何人的心情。甚至不時會有種創造力被扼殺的感覺。於是我將注意力轉移到攝影上頭,希望能夠從意外的照片中獲得些許安慰。
身為一個不常出門的人,遇到了美麗的景致沒有記錄下來,下次可能就是幾年後了。於是心一橫,咬著牙購入了人生第一顆L鏡, EF 17-40mm F4L,希望能藉著鏡頭的加持,有更多的機率留下特殊的回憶。
以上都是為了麻痺自己敗家罪惡感的廢話。
8/1購入了這隻鏡頭,而恰好最近台灣受到低氣壓籠罩,台北天空的能見度還不錯,而且天空的雲層也非常有個性,所以一週以來主要都以天空為主體來拍攝,搭配L鏡的超廣角,所呈現出來的影像很討喜。
上頭這張照片是8/6下班之後,在信義路上,從大安站漫步往101方向時,最接近世貿中心的天橋拍的,應該是受到路燈影響了白平衡,因此天空呈現著一種灰藍的狀態,而且信義路是一條又直又長的路,這樣拍攝呈現出來的街景,相當不同於我們對台北街道扭曲狹窄又看不見天空的刻板印象。
2010年5月30日 星期日
[MySQL] Using XML to simulate field changeable data
於
清晨6:31
張貼者:
The River with Tubidness
資料欄位的不確定性一向是資料庫設計時的痛,但也是在評估架構大小時極為有趣的部份。雖然軟體界的先驅,孜孜不倦地要求著我們一定要先做好需求分析,之後再進行架構設計與程式的實作,然而我們永遠都避免不了程式上線後,使用者提出新增或調整輸入內容的需求,而且更糟的是,使用者甚至願意捧著一大筆錢請你實踐這個功能,讓你老闆無法為公司拒絕這樣誘人的條件。
或者試想這樣的情況,你現在正在設計一個API提供使用者上傳資料,雖然第一版API提供了一種型態三個變數用以上傳,但是經過半個月之後,你發現必須要開發第二版API,多新增一個型態含四個變數做處理,而原本的變數,因為前端UI功能增加,必須多增添兩個變數以滿足要求。
一般說來,最直觀的作法,就是將第一版API對應的資料表新增兩個欄位供新功能使用,而過去的所有已輸入資料通通設定為null;而第二版API則另開一個新資料表做儲存,幾乎等於重新開發一個API專屬另一個型態來使用。
但隨著需求的擴增,你的資料表開得越來越多,若開發時只設計一個API入口,那後端程式就必須相對的去維護多個資料庫,又若資料庫程式很先進的使用了O/R Mapping進行實作,那你就會看到堆有著相似性目的,卻只是組成不同的資料庫物件在你的程式裡頭。
為了處理這樣的窘境,我們可以將這類的狀況統整成一個單一資料表,將之間差異的型態以及變數,以XML進行儲存,把ROW×COL的資料表格式,成為不確定COL大小的模式。
建構的資料表範例如下:
或者試想這樣的情況,你現在正在設計一個API提供使用者上傳資料,雖然第一版API提供了一種型態三個變數用以上傳,但是經過半個月之後,你發現必須要開發第二版API,多新增一個型態含四個變數做處理,而原本的變數,因為前端UI功能增加,必須多增添兩個變數以滿足要求。
一般說來,最直觀的作法,就是將第一版API對應的資料表新增兩個欄位供新功能使用,而過去的所有已輸入資料通通設定為null;而第二版API則另開一個新資料表做儲存,幾乎等於重新開發一個API專屬另一個型態來使用。
但隨著需求的擴增,你的資料表開得越來越多,若開發時只設計一個API入口,那後端程式就必須相對的去維護多個資料庫,又若資料庫程式很先進的使用了O/R Mapping進行實作,那你就會看到堆有著相似性目的,卻只是組成不同的資料庫物件在你的程式裡頭。
為了處理這樣的窘境,我們可以將這類的狀況統整成一個單一資料表,將之間差異的型態以及變數,以XML進行儲存,把ROW×COL的資料表格式,成為不確定COL大小的模式。
建構的資料表範例如下:
-- ----------------------------
-- Table structure for `sample`
-- ----------------------------
CREATE TABLE `sample` (
`alias` int(10) unsigned NOT NULL auto_increment COMMENT '主鍵',
`type` varchar(255) NOT NULL default '' COMMENT '資料分類',
`xml` text NOT NULL COMMENT '動態XML資料',
PRIMARY KEY (`alias`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of `sample`
-- ----------------------------
INSERT INTO VALUES ( '1', 'HT', '<bio><sys>140</sys><dias>100</dias></bio>' ) , ( '2', 'GLU', '<bio><glu>100</glu></bio>' ) , ( '3', 'HT', '<bio><sys>139</sys><dias>85</dias></bio>' ) ;
2010年5月22日 星期六
[食記] 寶來屋印度料理(Cafe India) 本店
於
清晨7:09
張貼者:
The River with Tubidness
週三難得開啟了MSN,在上頭看看朋友們的狀況,突然看到有個朋友的狀態說了辦公室有一名穿著火辣熱褲的同事,引起了辦公室關注,而且有圖有真相!於是我在色慾薰心的狀態下,提出了用食物交換照片的條件,恰好上週日吃了美食街的寶來屋印度料理有了不錯的回憶,於是就決定晚上下班後去本店看看。
基於上次沒圖沒真相的食記誠意不夠的緣故,而本店就在家附近不遠,於是我先回家拿了相機,順便打了電話給店家訂位,詢問當我們抵達時會不會有位子;當電話接通,另一端傳來印度腔超級重的中文,很明顯的我知道了我沒有打錯電話。而對方在詢問了我們人數以及時間後,也就很順利地完成訂位的動作。
當我們踏進了本店大門,老實說我楞住了!因為裡頭一個客人也沒有啊!事後想來頗有趣,因為在電話裡的聲音,很有禮貌且從容,還要確認人數以及時間,怎麼也沒想到今天晚上店裡沒有半個人啊!
迎接我們的是坐在門旁櫃檯的老闆。沒錯,是老闆耶!高高壯壯,肚子大大,一看就知道是印度人的臉,笑起來有些靦腆,很親切的感覺。由於店裡沒有人,所以整間店的位置任我們選,而為了方便拍照,我們就選了一個燈光OK,靠近廚房、buffet、出餐區,以及櫃檯的一張桌子。
基於上次沒圖沒真相的食記誠意不夠的緣故,而本店就在家附近不遠,於是我先回家拿了相機,順便打了電話給店家訂位,詢問當我們抵達時會不會有位子;當電話接通,另一端傳來印度腔超級重的中文,很明顯的我知道了我沒有打錯電話。而對方在詢問了我們人數以及時間後,也就很順利地完成訂位的動作。
當我們踏進了本店大門,老實說我楞住了!因為裡頭一個客人也沒有啊!事後想來頗有趣,因為在電話裡的聲音,很有禮貌且從容,還要確認人數以及時間,怎麼也沒想到今天晚上店裡沒有半個人啊!
迎接我們的是坐在門旁櫃檯的老闆。沒錯,是老闆耶!高高壯壯,肚子大大,一看就知道是印度人的臉,笑起來有些靦腆,很親切的感覺。由於店裡沒有人,所以整間店的位置任我們選,而為了方便拍照,我們就選了一個燈光OK,靠近廚房、buffet、出餐區,以及櫃檯的一張桌子。
2010年5月18日 星期二
[食記] 寶來屋印度料理
於
上午8:54
張貼者:
The River with Tubidness
在我心目中,百貨公司美食街的攤子,總是「沒得選」或是「懶得選」的最後選項。但這家「寶來屋印度料理」,兩個印度人操著濃厚印度腔顧著的攤子,著實影響了我日後對於咖哩的定義。
週日白天宅再家裡頭啥事也沒做,所以傍晚騎著車在石牌天母閒晃,胃袋在中午被母親塞得飽飽的,騎經商城,每間店家在此時都引不起我的食慾,最後我把車子騎進了天母三越,打算在三樓的春水堂隨便吃些東西裹腹,配上一杯茶,悠閒看完一直提不起勁看完的1Q84,奈何到了店門口,看著那沒有誠意的菜單,我又退卻了。
正在茫然時,旁邊印度腔的吆喝聲引起了我的注意,之前都在看電影前在美食街另外一頭吃「賽門鄧普拉」,從來沒注意到這頭有著一攤印度料理店,好奇之下我走向了櫃檯,櫃檯的那位印度伙計努力地用著印度腔的中文向我推薦,奈何他的印度腔實在太重,我索性看著菜單上的內容做選擇。
端詳了一會,原來這家店的料理分為套餐與單品兩種,照常理來說,套餐應該較單品稍貴才是,然而菜單上的套餐價格不到200,單品卻要200多元,很顯然的,在套餐與單品之間,必然有著食物主體上份量的差距。
週日白天宅再家裡頭啥事也沒做,所以傍晚騎著車在石牌天母閒晃,胃袋在中午被母親塞得飽飽的,騎經商城,每間店家在此時都引不起我的食慾,最後我把車子騎進了天母三越,打算在三樓的春水堂隨便吃些東西裹腹,配上一杯茶,悠閒看完一直提不起勁看完的1Q84,奈何到了店門口,看著那沒有誠意的菜單,我又退卻了。
正在茫然時,旁邊印度腔的吆喝聲引起了我的注意,之前都在看電影前在美食街另外一頭吃「賽門鄧普拉」,從來沒注意到這頭有著一攤印度料理店,好奇之下我走向了櫃檯,櫃檯的那位印度伙計努力地用著印度腔的中文向我推薦,奈何他的印度腔實在太重,我索性看著菜單上的內容做選擇。
端詳了一會,原來這家店的料理分為套餐與單品兩種,照常理來說,套餐應該較單品稍貴才是,然而菜單上的套餐價格不到200,單品卻要200多元,很顯然的,在套餐與單品之間,必然有著食物主體上份量的差距。
2010年5月8日 星期六
2010年4月27日 星期二
久違了,記錄一下近日工作狀況
於
上午9:00
張貼者:
The River with Tubidness
許久沒有更新網誌了,原本年前計畫結束後,打算休整整一個月長假的自己,在接到HR的一通電話前往面試的一週後,還是放棄休假計畫就職了。而我也在四月中完成了試用期,正式成為公司員工。
之所以決定這份工作的原因,主要是可以繼續將過去五年來遠距照護領域的經驗應用在商業應用面(雖然目前大部分服務仍是免費提供)。
不同於過去主要目的在於研究結果,目前工作所開發的內容,可以更直接的暴露在一般人面前而被使用,這相對於過去受限於硬體限制,無法盡情提供全網頁服務的我來說,突然之間有了發揮的舞台。所需要考慮的問題,幾乎只有能拿出多少東西來服務希望接受遠距照護的病患。
在工作開發的過程中,我學習到了之前未曾接觸過的Portal WEB開發。在有工作進度作為動力,以及公司主管同事開發經驗的加持下,很快的便熟悉了Portlet的開發模式。Protal與過去WEB開發相異,但又有許多地方相似,一個月過去也逐漸摸索出自己一套對於Portlet的快速開發SOP,減少不必要的枝微末節,專注於結構與功能的開發。
就目前工作狀況來說,除了上班路途遠一些,台北捷運淡水、板南、文湖三條線,每條都得搭上一程,捷運空氣太糟容易造成呼吸道感染之外,其他一切都過得去。只祈禱自己能早些習慣上班時間那些空氣污濁的捷運車廂,別再咳就好了。
之所以決定這份工作的原因,主要是可以繼續將過去五年來遠距照護領域的經驗應用在商業應用面(雖然目前大部分服務仍是免費提供)。
不同於過去主要目的在於研究結果,目前工作所開發的內容,可以更直接的暴露在一般人面前而被使用,這相對於過去受限於硬體限制,無法盡情提供全網頁服務的我來說,突然之間有了發揮的舞台。所需要考慮的問題,幾乎只有能拿出多少東西來服務希望接受遠距照護的病患。
在工作開發的過程中,我學習到了之前未曾接觸過的Portal WEB開發。在有工作進度作為動力,以及公司主管同事開發經驗的加持下,很快的便熟悉了Portlet的開發模式。Protal與過去WEB開發相異,但又有許多地方相似,一個月過去也逐漸摸索出自己一套對於Portlet的快速開發SOP,減少不必要的枝微末節,專注於結構與功能的開發。
就目前工作狀況來說,除了上班路途遠一些,台北捷運淡水、板南、文湖三條線,每條都得搭上一程,捷運空氣太糟容易造成呼吸道感染之外,其他一切都過得去。只祈禱自己能早些習慣上班時間那些空氣污濁的捷運車廂,別再咳就好了。
訂閱:
文章 (Atom)