網友 WanCW 在 JavaScript的中介編程與反射能力示範 一文中回應 文章中的 foreach() 並未產生新的程式或是修改現有的程式,好像不太能算是 metaprogramming?
並非如此,其實 foreach 在中介編程(metaprogramming)的領域是經典樣式。只是我上文的例子太精簡,以至於看不出它的威力。嗯,如果不來個複雜點的程式碼,確實不容易看出 foreach 到底可以幫我們省下多少程式碼。我就來個複雜點的示範吧。
基於某些原因,我這幾天嘗試分別以 JavaScript, PHP, Ruby (排名按字母順序) 實現同一個簡單的功能,這個功能用了簡單的反射與中介編程技巧。
主要目的是看這些語言在動態型別、中介編程、迭代與反射語法方面的表現。
最後,我會用 Java 語言來實現這個需求,「展現Java語言的特點」。
這篇構想中的文章,愈寫愈長。我想了想,還是按程式語言拆成幾篇,先把要示範的源碼與說明發佈上來。
這是第一篇發佈的,內容是 JavaScript 的實作,示範了兩個基本的中介編程技巧: foreach 和 accessor。
大家好,我又來談 REST 了。雖然我早已在過去的實務工作中採用 RESTful 概念,但似乎在國內大多數人眼中, RESTful 還是個陌生的內容。因為我新任職的公司,才剛在專案中採用 RESTful 工作,還要大家去 survey 一下。也就在這過程中,我才發覺大伙兒對 RESTful 的認知還有不少偏差。最主要的一點還是把過去的 REST 作法混進來了。忽略了 RESTful 字尾的 -ful 所代表的意義。
雖然我一年多前在 REST and RESTful web service 就提過 RESTful 的內容了,不過當時主要放在 REST 和 RESTful 的差異上,假設讀者已經很熟悉 Web 架構與設計模式了。在當時的文章最後,附上的範例程式也僅僅是示範如何把舊的 REST 程式重構支援 RESTful 。沒有示範 RESTful 到底如何與客戶端互動。這篇文章就是在填這個坑。
我用 VirtualBox 安裝 Ubuntu 作為 Guest OS 時,使用客端額外功能 (Guest Additionals) 碰到了一些狀況,留個解決方法的筆記。
軟體版本:
-
Host OS: Ubuntu 9.04
-
VirtualBox 2.14 OSE - 我安裝的是 Ubuntu 9.04 內建的開源碼版本。
-
Guest OS: Ubuntu 9.04
另外,我透過 VirtualBox 使用介面的 [裝置] => [安裝額外功能] 下載客端額外功能的 ISO 檔時總是失敗。
我建議用支援續傳的下載軟體,例如 wget 或 flashget ,直接到 VirtualBox 官方網站下載。
下載網址是: http://download.virtualbox.org/virtualbox/ 。
按 VirtualBox 的版本,到符合的目錄下找 VBoxGuestAdditions_?.?.?.iso ,例如我用的是 2.14 版,那就找
VBoxGuestAdditions_2.1.4.iso。
目錄下也有使用手冊(UserManual.pdf),有興趣多了解的可順便下載。
幾年前,談到 SOA 架構必然伴隨著 ESB 。然而這兩年來,我們雖然依然在談 SOA ,但 SOA 身邊伴著的角色卻已悄悄換成了 Web 2.0 、Mashups 。儘管 ESB 還沒走下舞台,但已經不在舞台中心了。
在 SOA 的舞台上,ESB走向邊緣,而 Mashups 走向中心,顯示了 SOA 正在輕量化的趨勢。
OpenID 是一種去中心化的身份認證系統,建置簡便,甚至不需要一個帳號管理中心伺服器。
在 OpenID 中的使用案例中,參與者分成三種,即:
- End-user - 最終使用者,即服務的一般用戶,每一個用戶都使用一個 URL 來代表
自己。
- Identity provider - 身份提供者。身份登錄與驗證的服務提供者。
- Relying party - 委託者,向 Identity provider 請求驗證身份的參與者。
通常是其他的服務提供者。
關於 Google MapReduce, Apache Hadoop 分散式文件系統的簡述。
MapReduce 的概念源自於並行運算的領域中很普遍的資料處理策略。
Map 在 MapReduce 中的詞性是一個動詞,取其 “劃分地圖“之義。
它的內涵是將一整塊資料儘可能按照不相關聯的地方劃分成好幾片。就好像是在一張大地圖中劃分區域分界線般,故稱此動作為 Map。
被 Map 成好幾片的資料,分別被儲存在不同的 host 中。當使用者需要處理該份資料時,
再將運算程序再複製到那些 host 上,開始處理那些資料。最後將散佈在不同 host 上
的程序所運算的結果化簡歸納成使用者要的最終結果,就是 Reduce。
將 MapReduce 結合分散式文件系統後,就是 Google 得以高效率處理網頁文件搜尋的核心系統。
全文
基於雲端運算的服務內容,常以 Web Service 的方式供應。Single Sign-on 則是為了
節省使用者在不同的 Web 服務之間重複進行帳號登入動作的時間。
隨著網路普及,文學作品上漸漸出現一股「網路小說」的潮流,大多數作者是大陸那邊的,而且有七、八成的內容是現代人的主角穿越時空回到古代中國或是異世界。這種作品就稱穿越小說。瞧,維基還有條目說明咧,牛B啊。
我失業很閒,無聊之餘看了一堆穿越小說,在那些穿越到古代中國的網路小說中,我看到三件跟中華語文有關的問題:
- 主角不識繁體字
- 主角不慣閱讀豎排文書
- 大家都會說官話
自由遭襲現象絕對是廿一世紀人類社會最嚴重的大問題。一般人無法容忍有人闖進住宅,在他們的書桌前東翻西找,卻可以默默忍受政府及一些機構在網路上截取他們的私人資料。
歐洲新一代自由主義者,聯合報,民國98年9月7日A16
日前參加國內某大學與資策會合辦的「雲端運算(Cloud computing)培訓班」。雲端運算和網格運算的共同點在於,文件與運算程序都散佈在網路上的許多端點中。為了進行資料運算,人們需要將自己的文件傳送到網路端點上。既然我們必須將文件上傳到網路端點上,那麼我就要考慮到隱私權的問題。隱私權問題若以資訊管理的用語,則是資訊安全問題。
莫拉克颱風過去一週了,救災報導接連不斷。在新聞報導中,我只看到某某新聞記者奮勇挺進災區傳回的新聞,但是沒看到災害應變中心發佈的災情整合資訊。我不禁懷疑,或許報社編輯部中彙整的災區資訊也比災害應變中心完整。
服兵役期間,我是無線電通信兵。在當年受訓時,曾多次聽聞教官述說當年九二一地震後,民間通訊幾乎中斷,只剩下軍方的無線電報務、話務系統還能用。透過軍方的無線電通訊網,將災情傳出,藉以調度救災工作的事。基於此一背景,我特別關注了此次救災行動中,軍方無線電通訊網路的事。然而,一週過去了,似乎沒見到類似的通訊網路出現。國軍弟兄挺進了,在某某處發現受困災民,回報消息、留下乾糧後繼續挺進。之後,就沒有後續消息了。受困災民只能被動地等待,而無法主動聯絡外界。因此缺食物卻送來屍袋,急著脫困卻無人聞問之事屢屢傳出。我每次都想,若是國軍弟兄在挺進過程中,留下一具無線電通訊設備給等待中的災民,或許整個狀況就會完全改觀了。
我對資訊的傳遞與彙整動作很敏感。在這次災情造成的通訊斷絕狀況中,我感覺到人們似乎遺忘如何彙整資訊了。在這個點對點通訊方式泛濫的時代,人們都習慣於直接撥打手機和對方聯絡事情。但是當手機基地台失去作用後,大伙就成了無頭蒼蠅了。特別是救災官員更是如此。有人 callin 電視台、有人貼上網路、有人到處發簡訊,馬路消息滿天飛,謠言誤傳也不少。但就是不見政府災害應變中心做出任何災情資訊彙整的動作。缺乏有效正確的災情資訊,奢談救災資源指揮調度。
我個人並不要求一個大有為的萬能政府。但至少,災害應變中心要能發揮統一彙整各地災情資訊的功能吧。看看今天的災害應變中心,比報社編輯部還不如。媒體批評政府官員看電視新聞救災,真是一點也沒錯。
昨天去某家進駐高雄軟體園區的公司應徵工作,沒想到來面試的幹部一見面就問我還記不記得他。我一看還真有點印象。他又提了個人名後,我才想到他是我大學網路策進會社團朋友的同學,當年在學校中有過數面之緣。
面談結束後,我剛走出會議室,竟又到有人喊我 "Rock!",這是我在大學時代混網路的 ID。我又嚇一跳。不會吧,又有人認識我。回頭一看,嗯,是個有印象的熟面孔。一問之下才想起他是我大學網路策進會社團的學弟。沒想到在一間辦公室中,竟碰到2個近十年不見的人,高雄有沒有這麼小啊?
那學弟問我是不是也在這工作,我答說我只是來面試。我一邊說「有機會一起工作」,一邊心裡想著「大概沒啥機會。大公司規距多,我這種非科班出身的人,履歷大概到人事單位就被刷下了」。話說回來,十年不見,他們的面孔都比當年成熟了,我一瞬間也認不出來。倒是他們一見我就認出我是誰,難道我十年前的面孔就是這麼「臭老」嗎?唉。
在 libmapi 中,主要的封包結構是 mapi_object_t。使用 mapi_object_init() 建構內容。
主要的函數回傳值是 enum MAPISTATUS,並以 MAPI_E_SUCCESS 表示成功執行。
通常在呼叫 libmapi API 後使用 if (retval != MAPI_E_SUCCESS) return false; 判斷程式流程。
就設計架構而言, libmapi 運作時會管理記憶體資源。使用 MAPIFreeBuffer(), mapi_object_release() 便可釋放閒置的記憶體空間。
但就我實測結果顯示,它目前存有 memory lack 問題。以擷取連絡人清單為例,在擁有 256MB 實際記憶體與 384MB Swap 空間的 GNU/Linux 系統上,
大約在擷取200筆訊息後,就會因為記憶體不足而被系統中止程序。
openchangeclient -p rock --fetch-items=contact
這是目前使用 libmapi 開發大型客戶軟體時必須注意之處。其他Bug可以參考 Openchange開發工具補遺。
日前有一項工作,需要從 Microsoft Exchange Server 中轉出行事曆、連絡人等等資料。我嘗試使用 Openchage 這套工具來處理。它透過 Exchange 預設的 SMB 封包協定交換資訊。應用軟體開發人員可使用其 libmapi 函數庫設計一般用戶程式。
OpenChange aims to provide a portable Open Source implementation of Microsoft Exchange Server and Exchange protocols.
Openchange
不過 Openchange 仍未臻成熟,在使用前必須修正不少地方。本文說明 header 檔路徑修正、常數定義修正與中日韓語系修正的內容。
Tags: developerWorks
今天(11月5日)去台北參加 2008 IBM developerWorks 開發者大會。今年的專題是 RSDC (Rational Software Development Conference),還創造了一個 R-Heros 戰隊。分別是 架構神人、析哈天后、時空司令、克隆女王、霸葛殺手、版管將軍,他們的顏色分別是藍、橙、灰、橘、青、綠。嗯,真難記,應該要跟日本動畫多學學... 呃,我扯到哪去了。總之呢,今天的議程也算是最新的 Rational 開發工具的說明會吧。
2006的專題是 EssUP 、2007的專題是 Jazz (Jazz project),今年的專題 RSDC。其實今年 RSDC 的內容,有很大一部份是圍繞著與 Jazz platform 相關的 Rational Team Concert。只是去年偏向說明 Jazz platform 的概念,而今年則是以 Rational Team Concert, Rational Software Delivery Platform 等軟體具體地介紹開發者如何在日常工作中使用這些工具。此外, SOA 也一直是近年來開發者大會中必不可少的內容。除此之外,我個人比較關注還有 B3 議程《加速研發: 開放源碼軟體與 IBM Rational》和 B4 議程《跨地協作開發實戰手冊》。
Tags: 金本位制 貨幣銀行
根據最近一年來的金融危機可知,未來五年內的學術市場,經濟學者將大量投入在貨幣金融理論之中。要寫論文,就要往這裡鑽才有搞頭。
但個人在閒聊過程中,卻查覺到有人認為這方面由衍生性金融商品所造成的金融危機,沒有可用的理論文獻。我不認同這種看法。事實上,衍生性金融商品並非今日才有的,衍生性金融商品的相關文獻甚至可以上推到一百年前,也就是在貨幣制度從金本位制度轉向紙幣本位制度(信用本位制度)的時期。「衍生性金融商品」有一個古老的詞彙,其名為「信用創造」。
王永慶病逝的消息,佔據昨日(九十七年十月十七日)各大報頭版新聞。我訂的聯合聯當然也不例外。
按我看報的習慣,必先依序翻開各版先看標題。首先,聯合報頭版標題《經營之神 病逝美國》。翻開A2版,標題寫著《總統帶頭血拼 忍痛換新鞋》。繼續翻閱,A5版標題是《座車跟他18年 理髮只剪不洗》。一頭說「愛台灣來消費」,另一頭卻說著「涓滴珍惜」。看著這幾個標題,我心中突然湧現一股不協調感。這股不協調感的起因,與我們目前景氣低迷的生活現況有關。在當前狀況下,我們應當鼓勵消費,還是鼓勵儉約?
在 VirtualBox 配置的虛擬機器上安裝 Linux 系統 (即 linux 作為 guest),並設定 host 主機的目錄做為 Shared folder (共用資料夾)。常見問題。
- 掛載方式與指令
- 失敗狀況: no such device
- 失敗狀況: Protocol error
本文記錄內容,時間跨度從 VirtualBox 2 到 6 版。從 Ubuntu 9 到 Debian 10 。有些狀況是舊版才有,新版修正了。
Tags: 貨幣銀行
聯合報九十七年十月十日A15版有篇讀者投書曰《冰島破產 台灣有以學之 ~ 小國,不適合過度開放的經濟》。不過看完內容後,我認為副標不正確。我看到的是冰島危機肇因於政府操作擴張政策失利。
一般提到「開放經濟」時,指的是從計劃經濟體制轉向自由經濟體制的過程。至於「過度開放的經濟」之意,我猜測投書人是指經濟政策的自由化程度過高。然而觀其文中所舉之事,我看到的是政府持續地操作擴張政策。這並非自由經濟支持者所稱的自由經濟,而「擴張政策」亦不等於「開放政策」。
今天在網路論壇上閒逛時,看到一則關於 Google翻譯工具 的真實笑話。Google翻譯工具在翻譯「我想扁你」這句話時,會得到「I think you Chen Shui-bian」這句非常貼近流行的結果。有圖有真相。
我想到 Google 說它的翻譯技術是採用統計方法,我又想到一些關於語言發展的事,不禁讓我贊嘆地道「原來流行語是人類不經意地的統計後創造出來的」。