2014-07-20

善用Chrome英文工具,搶救菜英文

善用 Google Chrome 瀏覽器提供的小工具,解決你英文閱讀的困擾;讓菜英文,不再是你學習新知的絆腳石。


2014-07-19

《信任》沈雁


作詞:王家麟 作曲:洪小喬

陰雨裡 陰雨裡 我信任晴天
黑夜裡 黑夜裡 我信任明天
雪地冰天的季節 我期待春天

晴天裡 晴天裡 望不見一片雲
光明裡 光明裡 有多少理想
人心不古的世界 我信任 只有你

2014-07-16

「洋蔥筆記本」讓你找到原初的感動



文采不夠好?無法寫出感人,讓人掉淚的文字嗎?

來、來、來、來、來..........

趕快來用這款 Onion Note

別懷疑,我沒打錯,你也沒看錯,就是「洋蔥筆記本」!     U_U

洋蔥筆記本裡面,真的有洋蔥。筆記本內的每一頁,都塗有厚度達 0.024mm ,可催淚的「烯丙基化合物」(allyl propyl compounds),書寫時,筆與紙的磨擦,會令塗在紙上的微粒子不斷散發出來,因此寫越多,淚也催的更多。

即便你在筆記本寫下:「布丁要放在冰箱裡冷藏」,這麼無聊的記事,同樣也能讓人「淚流滿面」,不能自己!    U_U"

2014-07-12

7月11日遊行天宮

週五的午後,來到了行天宮。

看到人來人往,眾多的人羣,心裡著實訝異!此刻,不是所謂的上班時間嗎?怎麼還是有這麼多的人聚集此處?

信步胡逛,不自覺來到了近大殿旁側的長廊,因為天熱,覺得有點渴,於是就在石階坐了下來,飲水。

從這裡望去,看見想要收驚的人們,排著長長的人龍,一個接著一個,好多好多啊!

再往前看向大殿的正前方,許多的人們在那裡或拈香,或雙手合十,祈禱著。

更有好幾個人,長跪在地,口裡一直唸唸有詞,許久不間斷;其中,有一男子的祈禱頗為懇切,合十的雙掌好像很用力,拜著、拜著,身子一直不停往前傾;最後,整個人俯伏在地,點頭如搗蒜般。

不知這朋友,現在是什麼樣的狀況?又是為了什麼,祈求要如此迫切?

心中滿是疑問號,正不停冒出的時候,沒想到,原先跪在男子後頭的一位女性,也是同樣伏身,一直不停在磕頭......

為何人間總有這麼多的折磨與苦難?人們總要如此,在紅塵俗世間,不停地掙扎?眼前的這情景,看著、看著,心想好難受;感覺好想哭。

每當我不自覺地歎氣之時,我兒子總是告訴我:「不要歎氣,要趕快找到你的『快樂基地』」。
不認識的朋友啊!祝福你,希望你的困難能儘快移轉;心靈更能早日離苦得樂......


2014-05-22

在 Visual Studio 2013 使用 Git 做程式碼的版本控管

自 Microsoft Office 2013 全力支援 Office Online 之後,昨夜,自近日專案合作的夥伴那裡聽說,現在就連開發軟體專用的 Visual Studio 2013 ,也是支援雲端的 Visual Studio Online 產品!! @..@

Visual Studio Online 最讓我感動的地方,有兩個:(1)它把 TFS 也雲端化了,以前安裝 TFS Server 搞死人的安裝及設定工作,軟體開發者完全可以不用搭理了。只要專心在你的「軟體技術」領域裡即可;不必再向以往一樣,軟體工師也要兼當「系統工程師」,讓你的 Focus 沒完沒了。 ==“

(2)雖然原先的 TFS 已內建「版本控管(Version Control)」的功能;可是沒想到現在的 Visual Studio Online 及 Visual Studio 2013 ,竟也支援非出自 Microsoft 本家的 Git 。 Y *^^* Y

在 Visual Studio 2013 測試一下,自 BitBucket 網站提供的 Git 雲端服務,下載原始程式碼,如下網址所示,成功! ^^y














2014-05-20

Java 注入相依的妙用


軟體專家告訴哦棉,好的程式設計,要寫成「耦合鬆綁(decouple)」,這樣,每個程式單元,才能隨時利用,任意組合。

But.................   How?!

這裡,有一個例子。假設,我們需要開發一個「腳踏車出租管理系統」,供腳踏車店做出租服務。

第一個想開發的功能是:「在螢幕列出店裡所有的腳踏車」。

對於這個功能,我們可以這樣做。

先開發一個: Bike(腳踏車)的 Entity 類別,其程式碼如下。

Bike 類別 

再開發一個:RentABike (租台腳踏車)的類別,用來管理腳踏車出租店的租借業務。在此類別先實作了 2 個方法(method),(1)getBikes:取得店裡所有的腳踏車;(2)getBike :依「序號」取得某一台特定的腳踏車,其程式碼如下。

RentABike 類別 

為了在螢幕上顯示店裡所有的腳踏車,我們又多開發了一個:「CommandLineView」類別,其程式碼如下。

CommandLineView 類別

一般的寫法,我們會很自然地在 CommandLineView 這個類別裡,先用 RentABike 類別建立一個 rentABike 物件。

然後,再利用 rentABike 物件,呼叫方法 - getBikes() ,取出店裡所有的腳踏車。接著在 CommandLineView 類別中,利用迴圈,在螢幕列示出所有的腳踏車。

以上的作法,既簡單,又直覺。但....... 它沒有達到「耦合鬆綁」所要求的程式架構之美!因 CommandLineView 類別與 RentABike 類別,十指緊扣,關係密切啊! ^^"

那該怎麼辦咧?!

Spring 程式高手秘笈》這書,在 Page 1 ~ 9 處,教人如何利用 Interface ,進行「相依注入(Dependency Injection)」,讓 CommandLineView 類別,呼叫 getBikes() 方法的這檔事 ,不是寫死在 CommandLineView 類別中,而是由另一個類別,在 Run Time 時期,負責相依關係的相注入,使 CommandLineView 物件,能呼叫  getBikes() 這方法!

這麼神奇的事,是如何做到的?
  1. 原先 RentABike 類別,能提供其它類別使用的 method ,將它當成是 service ,全包進一個名為 RentABike 的 Interface 中。
  2. 另新增一個「service 類別」 ( ArrayListRentABike ) ,須實作 (implements) 上一個 RentABike Interface 。
  3. 要使用「service 類別」,呼叫其中 method 的這種類別,稱作:「client 類別」, 以此例子而言,就是 CommandLineView 類別,它在類別中,須有一個 property ,用來指向「 service 類別」所產生的物件。
  4. 建立一個類別,負責在 Run Time 時期,執行「相依注入」的工作,這種作法,一般被稱作為 assembler 或 container 機制。在這個例子中,由 RentABikeAssembler 類別擔綱。

此相依注入的作法,可用以下的「類別圖」,來說明各個類別之間的相互關係。

最後,各類別的程式碼,分述如下。

將 RentABike 類別改成 Interface


提供 method 的「Service 類別」:ArrayListRentABike.java


使用 method 的「Client 類別」:CommandLineView.java


注入相依的 Assembler 類別:RentABikeAssembler.java



Run Time 時期,由 RentABikeAssembler 類別,負責「注入相依關係」這檔事。

首先,建立一個「Client 物件」: CommandLineView 物件;然後,建立一個「Service 物件」:ArrayListRentABike。

接著令「Client 物件」- CommandLineView 的 property 指向「Service 件件」 - ArrayListRentABike。最後, CommandLineView 這個「Client 物件」,可以使用 「Service 物件」- ArrayListRentABike ,提供的 getBikes() 方法,取出店裡所有的腳踏車,丟給類別內的方法處理,顯示在螢幕上 。

透過以上「相依注入」的作法,可達成「耦合鬆綁(decouple)」的目標。軟體開發中所使用的各個類別,就能任意組合,隨時依自己的需要來變化及使用。


程式碼下載處: https://github.com/AlanJui/BPANDSVC

2013-12-28

升級到 Mac OS X 10.9 後讀卡機不能用了

每個月的月底,我需要向銀行繳交信用卡消費。繳款的方式,我習慣使用玉山銀行的 Web ATM ,透過網路來進行轉帳。

使用玉山銀行的 Web ATM ,需要這些工具:(1)MacBook Pro 電腦(作業系統 OS X  10.8);(2)讀卡機;(3)Chrome 瀏覽器。

接在 Mac 電腦的讀卡機(Smart Card Reader),是源自 Windows XP 時代,就擁有的。


在 11 月初,Apple 發佈新版的 Mac OS X 10.9 ,我將 Mac 電腦的作業系統,升級。

到了月底,我一如往常,再次使用 Web ATM 進行轉帳,但那次的轉帳,玉山銀行 Web ATM 的應用系統(網站),一直認定我的電腦並沒有安裝讀卡機。

原本以為,我那台服務多年的讀卡機,不耐歲月的催殘,終於壽終正寢,回歸天家了。因此,只好掏出銀兩,請購了以下這台新的讀卡機 GoodTec CR-508 。


會買這台讀卡機的原因,是因為看到包裝盒上印有「適用 MAC 10.6.4 以上版本」的規格說明。

可是......結果,還是被玉山銀行認定「沒有完成讀卡機安裝」,哇嘞.......  

照著玉山銀行,如下網址處的操作指引,執行安裝及檢驗程序,結果還是「失敗」。
https://netbank.esunbank.com.tw/webatm/Q&A_017.htm#02

實在不甘心,寫 e-mail 及打電話到 GoodTec 公司,尋求技術支援,想找出問題根源及可能的解決方法。

最後的答案,竟然是讀卡機驅動程式 PCSCD ,在  OS X 10.9 版本後,變成不認識 RealTec 晶片,以致作業系統無法認定讀卡機已安裝。(據那工程師的講法,台灣製造的讀卡機,都是用這款晶片)

每次作業系統升級都要經歷的痛,這次,最叫人@!#$%^&*#

趁著這次找問題導因的事件,順便整理出-「如何在 Mac 安裝讀卡機的操作程序」,如以下影片所示。這程序也適用於「玉山銀行 Web ATM」的安裝。