發表文章

目前顯示的是 2007的文章

庭院

庭院在我這個土生土長的高雄人眼裡, 是有錢人才有的居住格式, 不過老家有一塊田地, 分配的宿舍有一塊小小的庭院, 原本是雜草叢生, 現在草被我拔光了, 坐在草地上慢慢的拔草, 對以前的我而言,是何等的浪費時間啊!

縱走在稜線之間

工程, 利用有限的資源完成一件事, 精準是必要的, 如同縱走在稜線之間

蜘蛛不是昆蟲

宿舍蜘蛛很多, 昨天借有關蜘蛛的書,才知道蜘蛛不是昆蟲, 而我最害怕的稱為揦枒,學名叫高腳蜘蛛,會幫忙吃蟑螂。 目前正在好好研究家裡的大蜘蛛叫什麼名字。 在宿舍裡,我用殺蟲劑殺死了一隻大蜘蛛, 另外一隻躲在馬桶邊緣, 我用水把它給沖下去。

慢活

考取公職後,分發至花蓮,古稱洄瀾的地方, 讀書計劃在生命中所佔的 quota 值大幅降低。 從讀書計劃中解放出來的時間, 讓我開始有機會去體驗生活, 因為時間沒那麼趕了。 分配的宿舍有一塊小小的庭院, 原本是雜草叢生, 現在草被我拔光了, 坐在草地上慢慢的拔草, 對以前的我而言,是何等的浪費時間啊! 不過現在開始有機會把時間放在生活上面。 像是仔細的研究如何把衣服洗好, 怎麼擺設房間的家具。 除了一堆技術名詞, 我的生活也開始走進了, 油漆、洗衣機、黑網(放在屋頂用來吸熱的), 連吃飯都變了, 開始慢慢的享受飯的味道。 逐漸變得比較有耐心去思考生活上的事情。

證明的本質

漣光波動,六月夏夜的高雄愛河如一條即將躍起的鯉魚。 我牽著愛人的小手,緩步於河堤上。 「你愛我嗎」 她噘著紅潤的脣問我。 「愛啊!」 我毫不遲疑的回答她。 「我不相信,說個理由!」 她脣嘟得更圓了! 「世界如此之大,但我的眼裡只有妳!」 我依舊未思考太久。 「這句話我更不相信,證明給我看!」 她越來越像任性的小女孩。 我拿下眼鏡,靜靜的望著她。 一會,她好奇地問: 「怎麼了?」 我笑了笑,回答她: 「我近視 800 度,所以現在我只看得清楚妳一個人。」 她拿走我的眼鏡,俯身抱著我,把頭鑽進我的懷裡。 那晚,沒載眼鏡的我與她繞行了整個愛河。 我成功的完成一項證明。 不是數學考試的證明題,不是貸款時的財力證明,不是政客為其政策牛肉口無遮攔的背書。因為以上的證明我總是提不出來。 但那晚我的愛人相信我愛她。 我說服她了,所以我成功的完成一項證明。 但是如何說服愛人、選民、銀行行員這都不是本文的主題,因為那沒有一定的法則可尋。在本文,我們的對象為科學家,只要證明符合某些條件,便能夠讓科學家接受。 亞里斯多德曾寫出以下的三段式論證: 「人都會死」 「蘇格拉底是人」 「蘇格拉底會死」 它的名字來自於其論證形式可分為三段,第一段稱為「大前題」,第二段稱為「小前題」,第三段稱為「結論」。每段之間的關係滿足以下的條件: 大前題必須能「週延」的包含小前題。 這個論證的重要性在於,證明的有效性是根據論證的形式,而不是論證的脈絡。簡單的說,如果我們要判斷一個人是否所言屬實,並非看他的外表、平時為人或是妳跟他之間的情感關係,而是在於他說的話是不是符合三段式論證的形式。別看它只是普普通通的三段,卻可統治了歐洲近千年的證明程序,甚至有段時期,法庭要求所有證詞要能轉成這種形式,才能證明為真。再來,雖然三段式論證在現今看來是過於簡單的論證形式,但仍為許多工程或科學的論證基礎,如下述: 是否曾想過現今塑膠水桶的模型是如何設計的?回到塑膠工業發展早期,在某間力求上游的塑化公司研發部會議室裡,工程師正開會設計一種新的塑膠水桶,其目標是以最少的材料來製造出符合顧客需求的水桶。 李民生提出意見: 「球體是表面積最小,而容量最大的立體形狀,所以最省材料,我建議以球體設計為佳。」 但歐嘉偉說: 「但是球體其與平面的切面最小,所以不能固定,我認為是以正方體為佳。」 經過了一長串的討論後,工程部決定以球體為主,但其底部

科舉、黃巢、公職

圖片
《不第後賦菊》 待到秋來九月八,我花開後百花殺; 衝天香陣透長安,滿城盡帶黃金甲! 這是黃巢應科舉考試不第時,所寫下的詩, 之後黃巢組織農民對政府展開大反動, 撼動了整個大唐。 許多學者研究,若黃巢考上科舉, 或許歷史就不一樣了。 公職無論在什麼時代, 似乎都是地位崇高,且福利很好的工作, 同時也是統治者酬庸有功人員的工具。 一個朝代的開始, 政權剛建立, 政治不穩定下, 官位倒是比人多, 且官位的福利也不好, 等政權穩定後,僧多粥少, 就像現在公職越來越少。 老實說,當我知道自已考取公職時, 先是一陣驚喜,但隨之而來的是突然心裡變空了, 遠至南投在受基礎訓練時,許多同學早已安排下一次考試, 去取得高考資格免除特考的約束, 或著期向薪水更好的缺前進,像是司法官等等, 而我卻覺得夠了,不必了。 我不想一生當中都為了考試而活。 不過腦中不斷的浮起一個想法, 當我未考取時,我現在會作什麼呢?

載入 gems 的函式庫

require 'rubygems' require 'rjb' 如上,先載入 rubygems 的函式庫後, 再載入包裝成 gems 的函式庫便可

記錄所有例外訊息

發生例外時,若只會碰出請「發生系統錯誤,請聯絡資訊室」,對資訊室人員而言,他完全不曉得發生什麼例外,所以記錄所有例外訊息,對修改程式助益甚大。 建議加入以下源碼: catch(Throwable e){ String msg = "XXX程序未完成:"+e.getMessage(); log.error(msg); throw new RuntimeException(msg, e); }

檔案衝突管理

SVN 衝突合併檔格式 Top piece of bread Mayonnaise Lettuce Tomato Provolone <<<<<<< .mine Salami Mortadella Prosciutto ======= Sauerkraut Grilled Chicken >>>>>>> .r2 Creole Mustard Bottom piece of bread 如上例 <<<<<<< .mine Salami Mortadella Prosciutto ======= 是本地檔案多出來的差異 ======= Sauerkraut Grilled Chicken >>>>>>> .r2 是線上版本 .r2 多出來的差異 手動解決版本衝突 svn resolved CFILE

版本庫管理

建立版本庫(Repository) 架設 Subversion Server 需要首先要建立一個版本庫(Repository),可以比擬為資料庫的資料檔,如: svnadmin create E:\svndemo\repository 就會在目錄 E:\svndemo\repository下建立一個版本庫。 設定用户和權限 設定認證檔 password-db,修改 E:\svndemo\repository\conf\svnserve.conf: # [general] # password-db = passwd 改為 [general] password-db = passwd 設定認證帳戶-修改同目錄的passwd文件,去掉下面三行的 comment: # [users] # harry = harryssecret # sally = sallyssecret 改成: [users] harry = harryssecret sally = sallyssecret 安裝成 Windows Service 要在 windows 上架 SVN 請安裝以下軟體: svn windows service wrapper 範例: #安裝一個 SVNService 儲存庫在 c:\svnrepo SVNService -install -d -r c:\svnrepo 標準 port: 3690 轉移版本庫 先匯出原來的版本庫至 dumpfile c:\svnlook youngest myrepos 26 c:\svnadmin dump myrepos > dumpfile 再建立一新版本庫 newrepos c:\md newrepos c:\svnadmin create newrepos 匯入 dumpfile c:\svnadmin load newrepos < style="font-weight: bold;">通知使用者轉移 svn 的 URL c:\svn switch --relocate file:///tmp/repos file:///tmp/newlocation . c:\svn update

日期字串互轉

日期字串互轉對資料操作很重要 INFORMIX to_date(strdate, strformat) to_char(date, strformat)

建構 MINUS 等效式

像 Informix 這種不支援 MINUS 運算子的,建構 MINUS 等效式就很重要。 MINUS 運算子第一個運算元的運算式稱為 主查詢 , 第二個運算元的運算式稱為 副查詢 。 select first_name, second_name from doctor MINUS select first_name, second_name from doctor where dept = "surgery" 上式是找出不是外科部的同名同姓醫生。 如上式,select * from doctor 為主查詢, select * from doctor where id == 3 為副查詢。 一般有兩種建構法, 第一是將副查詢的 WHERE 條件作反向式: select * from fred WHERE id != 3; 第二種將副查詢改成投射 rowid 的查詢,令其為 R 並對主查詢加入 rowid NOT IN 副查詢的條件式: select * from doctor WHERE rowid NOT IN (select rowid from fred where id = 3);

JavaScript 實務:使用 JsUnit 作單元測試

JsUnit javascript 的 Unit Test 工具。

利用 PreparedStatement 批次查詢

平常 Statement 及 PreparedStatement 的executeUpdate()的方法只能執行一個SQL敘述, 如果有很多SQL要執行的話,就得用 addBatch() 及 executeBatch() 。 ex1. String strqry="insert into test (col1,col2) values (?,?)"; PreparedStatement pstmt = con.prepareStatement(strqry); pstmt.setString(1,"test1"); pstmt.setString(2, "123"); pstmt.addBatch(); pstmt.setString(1,"test2"); pstmt.setString(2, "456"); pstmt.addBatch(); pstmt.executeBatch(); ex2: Statement stmt=con.createStatement(); stmt.addBatch("insert into test (col1,col2) values ('test1','123')"); stmt.addBatch("update test set col2='789' where col1='test4'"); stmt.executeBatch();