jim yeh on 三月 23rd, 2015

內湖「漂流木」風波,柯文哲怒拔分局長,他提到了【指鹿為馬】的故事,說他不相信內湖山上的那批木材不是漂流木,因為他不是秦二世。內湖山上那批木材是不是漂流木我不知道,但柯文哲說指責分局長指鹿為馬,說他不是秦二世,所以要把內湖分局長換下來,同人覺得這指鹿為馬的故事實在是引喻失當呀。

既然柯文哲說他不是秦二世,那麼我們先從了解秦二世胡亥是怎麼樣的一個人開始吧。同人前一陣子才閱讀過《秦始王:一場歷史的思辨之旅》,書中提到秦二世胡亥是以殺治天下的一位皇帝。

Read the rest of this entry »



     
jim yeh on 三月 17th, 2015

慈濟基金會昨天(3 月 16 日)在花蓮慈濟靜思堂舉行記者會,正式宣布「內湖園區開發案」撤案,不再申請變更地目,讓連日來爭議不斷議題終於落幕。慈濟基金會表示,慈濟內湖園區將進行撤案轉向「土地復育」方向進行。

花蓮慈濟基金會人文志業副總執行長王端正宣布,慈濟內湖園區案即日起撤案,同時將擴大董、監事會組織,進行組織變革。

另外針對慈濟基金會財務部分,掌管財務的副總執行長林碧玉說,從20日起,所有捐款會員,在符合個資法前提下,不論捐款大小,都可用會員編號在網路上查詢個人捐款;從25日起,過去受衛福部監督的收支狀況,將分階段公開財務收支狀況,包含專案、四大志業基金會收支公布。[1]

同人根據記者會召開的時間與地點起盤(2015/3/16 3:30 PM 花蓮市),時盤命宮在寶瓶,顯示檢討、自省、改革的基本態度;當然另一方面也可以代表遭受眾人排擠的現象,寶瓶座本身就意味事件和環境關懷的議題有關。 Read the rest of this entry »



附註  
  1. 中時電子報:內湖園區開發案 慈濟宣布撤案[]
     
jim yeh on 二月 24th, 2015

在廣播新春特別節目聽到主持人和賴佩霞談話,主持人提到 2014 的食安問題顯示去年真是虛假的一年;賴佩霞則提到「所以我們的台北市長柯文哲,直率的言行顯示他很真,在這個時代是相當難得的」。聽到賴佩霞這樣美化柯文哲口不擇言的行為,讓同人覺得很疑惑,想不到知名身心靈老師看事情也如此表相,也許只是為了迎合大眾世俗的口味,而忽略口不擇言並非真實。 Read the rest of this entry »



     
jim yeh on 二月 17th, 2015

民進黨主席蔡英文 2/15 正式宣布投入黨內總統初選,早上十一點由小英基金會執行長張振亞陪同前往黨中央登記參選。同人依她完成登記參選時間製作了宣布參選的占星時盤,從時盤我看到蔡英文參選可能會碰到的問題,主要還是論述空洞及兩岸關係的嚴峻挑戰。

蔡英文提到政治應該要開創一個真正屬於人民的時代,「我不是陳水扁,不是馬英九,我是蔡英文」,她要奮戰不懈,建立透明、清廉、參與、包容、權責分明、主權鞏固的新政治。其實從時盤上來看,火金會在十一宮雙魚座,十一宮代表選舉之事,火星合乎奮戰不懈的象徵,金星代表參與,雙魚座則代表包容,但蔡英文能不能建立透明和清廉的新政治,從星象的呈象我倒是認為她很難做到。 Read the rest of this entry »



     
jim yeh on 二月 4th, 2015

台北市長柯文哲日前接受美國雜誌《外交政策》(Foreign Policy)採訪,提到「殖民進步論」一說引起軒然大波。他事後先解釋他的意思是經殖民的國家先接受西方文明,接受西方文明洗禮愈久,文明的程度與深度就愈高,媒體卻誤解為「殖民愈久,文明程度愈高」,但昨在媒體追問之下,坦言論述時沒有把話說清楚,「我講錯了。」

《外交政策》則在網站公布片段的錄音內容,證實柯確實表示,「被殖民越久,果然越高級,蠻丟臉的。」,1 分 17 秒的訪談錄音稿如下:

柯文哲:我後來想亞洲的歷史,4個華人地區,日本,不是,台灣、新加坡、香港跟中國,我發現「被殖民越久,果然越高級,蠻丟臉的」。

記者:嗯…市長

柯文哲:怎樣,妳是說不能講實話是不是?(笑)「被殖民不是什麼壞事」,妳看喔!新加坡殖民最久,所以新加坡比香港好,香港比台灣好,台灣比大陸好,這個文化、culture。

記者:你是覺得這個真的是好事嗎?

柯文哲:不是,這是 culture,我跟妳講,我去過越南,我也去過大陸,雖然越南人看起來很窮,但是,我跟妳講,看到紅燈要停,看到綠燈可以走,走路靠右邊,這個沒有花20年訓練不起來。雖然我去過越南1次,去過中國18次,雖然中國的GDP比越南高,但是我都可以覺得、但是妳要問我說culture,應該還是這樣。為什麼?看到紅燈要停,看到綠燈可以走,走路靠右,妳覺得很好笑,這個要花20年才可以訓練的出來。

其實新加坡不是被殖民最久的,同人查閱資料發現香港殖民的時間比新加坡還要長。不過我們姑且先不論這一點,在訪談內容中柯文哲說「被殖民不是什麼壞事」,似乎特別強調「文化」。這一段談話同人想到我最近看《被討厭的勇氣》這本書所談到的自卑情結,我發現柯文哲的殖民進化論反映內心的自卑情結Read the rest of this entry »



     
jim yeh on 一月 31st, 2015

語言整合查詢(LINQ)是非常有用的設計概念,它扭轉我們過去用指令式編程的習慣,轉而以宣告式編程的設計典範,讓程式碼變得簡潔,也提高設計的抽象能力。尤其是對於迴圈當中一再出現類似的條件判斷,卻苦於迴圈的特性讓我們沒有很好的策略來將變動的部分封裝起來,只能任由讓程式碼因應需求改變而日趨複雜,讓開發及維護程式愈來愈困難的時候。但如果我們能夠把指令式編程的開發慣例換成宣告式編程的思維模式,我們就會發現問題將變得很簡單。

如同 .NET Framework 支援 LINQ 的查詢語句可以抽換查詢的條件式(透過 where() 方法)和查詢結果的對應(透過 select()、groupBy()等方法),其實在 Java 1.6 我們也可以用相同的設計概念實作語言整合功能。本來同人一直認為實作它應該會很複雜,但實際動手後來發現,實作它比想像中的來的簡單,也只是運用延遲運算的觀念和一些設計樣式的手法就能夠很輕易的實現了。 Read the rest of this entry »



     
jim yeh on 九月 6th, 2014

在民主社會,人民評價選舉的候選人,這是很正常的。但有一種特別的論調,它是把什麼人出來競選,當做社會是否公義的象徵,就好像《動物農莊》裡的那群豬所說的:動物皆平等,但有些動物比其它動物更平等。

幾天前,同人在臉書看到有人說連勝文可以出來代表國民黨競選台北市長,是社會不公不義的象徵。但這個觀點是充滿了邏輯繆誤,因為假如它成立,那也就代表社會公義的象徵是連勝文不能出來競選台北市長。但這違反了平等自由主義的正義觀點,這才叫做真正的不公不義呢! Read the rest of this entry »



     
jim yeh on 六月 19th, 2014

最近在工作上重構過去別人開發的程式,它是系統目前正在運作的程式,但由於程式長達 3000 多行,維護和除錯都變得很困難。程式中因應業務邏輯的需要,用了許多 if 判斷及 for 迴圈的控制,使得程式變得很不容易閱讀。在這種情況下,同人使用了幾個招式,利用它們可以把一層層繁複的迴圈和條件判斷式剥開,把程式重構成能夠清楚表達功能 what 的意圖,有別於之前在 how 的層次中容易使人迷惑在繁複的實作細節。這幾個招式可以幫我們對系統輕易地分而治之,以下同人就分享幾個用來清楚表達程式意圖的重構招式。 Read the rest of this entry »



     
jim yeh on 五月 14th, 2014

很多人都知道系統開發的功能測試很重要,但有時候我們省略它並不是認為某個功能不需要測試,而是不知道該功能該如果測試。有時候問題的關鍵是卡在環境整合的複雜性,例如牽涉 web 的 session 或是資料庫存取的問題,就讓人很難隔離這些複雜情況。當然理論上我們可以運用 Mock 的技術來隔離它們,然而現實上,即使運用這些技術可能你可能還是無法解決無法測試的問題。這時候,你需要的通常不會是尋求其它更強大的技術,而是需要在編程核心思維上,做一些小改變,來改善功能的可測性。

最近同人就碰到一個實例,讓我體會到以泛函編程(FP)典範增進功能的可測性。其實,以前遠在美國的 Perter Ho 就曾向包括同人在內的幾位點空間的朋友,分享過相同的觀念,而同人則是藉由最近的實例而對這樣的觀念有更深刻的體驗。
Read the rest of this entry »



     
jim yeh on 四月 22nd, 2014

從〈查詢的宣告式語意〉提到的實作中,我們可以發現有關資料搜尋的一種設計抽象概念,可以用相同的模式應用在不同的資料結構上,例如從 XML 文件中搜尋特定的資料節點。同人曾經用過宣告式語意實作轉換期貨交易 Span 檔案,將 XML 資料格式轉換成某種特定格式的資料檔案,像下面這段程式碼所示,程式碼的寫法比傳統的命令式語意寫法更為精簡而直覺。

xml::XmlDocument xmlDoc(spanFile, "ISO-8859-1");

std::list<span::EnvMessage> envMsgs =
	xml::XmlTransform<span::EnvMessage>(xmlDoc.find(
	"/spanFile"))(span::WriteEnv());

std::list<span::CurMessage> curMsgs =
	xml::XmlTransform<span::CurMessage>(xmlDoc.find(
	"/spanFile/definitions/currencyDef"))(span::WriteCur());

std::list<span::ChrMessage> chrMsgs =
	xml::XmlTransform<span::ChrMessage>(xmlDoc.find(
	"/spanFile/pointInTime/clearingOrg/curConv"))(
	span::WriteChr());

std::list<span::SccMessage> sccMsgs =
	xml::XmlTransform<span::SccMessage>(xmlDoc.find(
	"/spanFile/definitions/acctTypeDef"))(span::WriteScc());

std::list<span::PbrMessage> pbrMsgs =
	xml::XmlTransform<span::PbrMessage>(xmlDoc.find(
	"/spanFile/pointInTime/clearingOrg/pbRateDef"))(
	span::WritePbr());

std::list<span::FutMessage> futMsgs =
	xml::XmlTransform<span::FutMessage>(xmlDoc.find(
	"/spanFile/pointInTime/clearingOrg/exchange/futPf/fut"))(
	span::WriteFut());

std::list<span::OptMessage> optMsg1s =
	xml::XmlTransform<span::OptMessage>(xmlDoc.find(
	"/spanFile/pointInTime/clearingOrg/exchange/"
	"oopPf/series/opt"))(
	span::WriteOpt("oopPf"));

std::list<span::OptMessage> optMsg2s =
	xml::XmlTransform<span::OptMessage>(xmlDoc.find(
	"/spanFile/pointInTime/clearingOrg/exchange/"
	"oofPf/series/opt"))(
	span::WriteOpt("oofPf"));

std::list<span::CcdMessage> ccdMsgs =
	xml::XmlTransform<span::CcdMessage>(xmlDoc.find(
	"/spanFile/pointInTime/clearingOrg/ccDef"))(
	span::WriteCcd());

std::list<span::SdjMessage> sdjMsgs =
	xml::XmlTransform<span::SdjMessage>(xmlDoc.find(
	"/spanFile/pointInTime/clearingOrg/ccDef/adjRate"))(
	span::WriteSdj());

std::list<span::PflMessage> pflMsgs =
	xml::XmlTransform<span::PflMessage>(xmlDoc.find(
	"/spanFile/pointInTime/clearingOrg/ccDef/pfLink"))(
	span::WritePfl());

std::list<span::ItsMessage> itsMsgs =
	xml::XmlTransform<span::ItsMessage>(xmlDoc.find(
	"/spanFile/pointInTime/clearingOrg/interSpreads/dSpread"))(
	span::WriteIts());

writeMsgLines(envMsgs);
writeMsgLines(curMsgs);
writeMsgLines(chrMsgs);
writeMsgLines(sccMsgs);
writeMsgLines(pbrMsgs);
writeMsgLines(futMsgs);
writeMsgLines(optMsg1s);
writeMsgLines(optMsg2s);
writeMsgLines(ccdMsgs);
writeMsgLines(sdjMsgs);
writeMsgLines(pflMsgs);
writeMsgLines(itsMsgs);

上面這段程式碼明白地表達 XML 格式轉換的意圖 Read the rest of this entry »