資料管理趨勢,檔案一如資料表,資料表一如檔案

打從人們開始使用電腦管理資料時,數位資料就一直有著兩種不同的儲存系統,一為檔案系統 (file system) ,二為資料庫系統 (database system) 。過去想使用這兩種儲存系統中的資料,也要使用兩種不同的工具軟體。例如一份儲存在檔案系統中的試算表 (spreadsheet) ,要用檔案管理員移除、複製、搬移,用 Louts-123, MS-Excel 編輯內容;而一份儲存在資料庫系統中的資料表 (table) ,則要用資料庫管理工具移除、複製、搬移,用專屬的前端系統軟體,如aa會計系統、bb進銷存系統編輯內容。即便試算表中的資料內容與資料表中的資料內容完全相同,兩種儲存系統的架構,硬是把人們使用資料的方式切成兩套不同的使用途徑。

本月自由軟體兩大事, 1. Free and Open Source Java; 2. Microsoft 和 Novell 策略結盟

自由軟體界 (Free Software) 在本月 (2006/11) 發生了兩件大事,一件是好消息,另一件是壞消息。

先聽聽壞消息吧,壞消息是 Novell 在11月2日宣布和 Microsoft 達成策略結盟,雙方允諾交流資訊,加強雙方平台的軟體互通性。好消息是 Sun Microsystems 在11月15日宣布開放 Java 開發工具的源碼,並以 GPLv2 釋出。

慎到「定分說」肯定財產權的作用,但也可以毀了財產權的發展

戰國中期的法家學者慎到所提出的「定分」說,據信是中國最早談及私有財產權的學說。其曰「一兔走百人追之;積兔於市過而不顧。非不欲兔,分定不可爭也。」

我個人對定分說的看法是,其肯定財產權的作用,但也可以進一步毀了財產權的發展。使物有所分而民不爭,是財產權的作用。但如何定分,亦即財產權是如何發展的呢?從此處便可看出道、法為何分兩家。

Let results of preg_match be an associative array

在 Regular Expression (REGEX) 的語法中,有一種方式可以讓我們將 subpatterns 的內容存放在一個數值索引陣列,而以 $1, $2, $3, ... (或 \1, \2, \3, ...) 的敘述方式取用。雖然這已經很方便了,但仍然有缺點,就是比對結果不易理解,時日一久,很容易忘記 $1, $2,... 各是代表什麼意思。所以 PHP 在 4.3.3 版之後增加了一個新語法,可以指派名稱給 subpattern ,這個語法格式是: (?P<name>pattern) 。如此一來就可以將 subpatterns 的內容存放在一個關聯陣列 (associative array) 中,可以鍵值取用,提高程式可讀性。

為什麼程序員不用版本控制工具?

自從我到某資訊軟體公司做過一陣子程式工程師後 (過去式) ,我就一直在感慨為何國內的多數程序員不用版本控制工具 (Version control system) 。這個問題不久前得到了解答。

Web Service 基本心法

每一個網頁 (web page) 都是一個 service object ,都是隱性的函數物件 (function object) ,可以直接呼叫 (GET) 。網頁中的每一個表單 (form) 都代表了此 service object 的公開行為 (public method) ,每個表單的內容都是 service object 之公開 行為的反射 (reflection) ,可以查知其參數,也可以調用 (POST) 。

暫且忘了 WSDL, REST ,那都是招式。所謂無招勝有招,掌握上述心法,就能把每一個網頁都視為既有的服務 (Web Service) ,無(PAge)不(GEt),無方(FOrm)不破(POst) ... 暫時想不到有趣的諧音字。

JSON in PHP - PHP 5.2 正式納入 JSON extension

自 PHP 5.2 起,正式納入 JSON extension 。函數名稱跟 php-json 一樣是 json_decode()/json_encode() 。稍微要注意 json_decode() 多加了一個選擇性的參數。 PHP 官方的 json_decode() 對於 Object of JSON 的回傳型態是個體 (object) 而不是陣列 (associative array) ,但可以指定第二個參數為 true 以回傳陣列。這個差異是基於 JavaScript 和 PHP 的語法不同。對 JavaScript 而言, obj.member 和 obj['member'] 是等義的,兩者都是個體成員存取操作。對 PHP 而言, $obj->member 和 $obj['member'] 卻是不等義的,前者是個體成員存取操作,後者則是陣列索引子操作。

Programming with Subversion Quickstart - 安裝 Subversion 服務

Subversion (簡稱 SVN) 是繼 CVS 之後新興的版本控制工具 (version control system) 。對於版本控制工具的諸多概念與名詞,我並不打算說明,因為《Version Control with Subversion》已經說得很仔細。以我個人的經驗,任何接觸過版本控制工具的 programmer ,都會上癮,深陷其中、不可自拔。誇張地形容, Programmer 可以沒有 IDE 工具,但不能沒有版本控制工具。

分組統計的二種查詢敘述

使用 inner join 和 sum() 統計進貨數量。由於要進行分組合計,遂有兩種可行且結果相同的查詢敘述。但這兩種查詢敘述的 explain 和效能有所差異,視資料庫系統的查詢引擎而定。

"Principles of Economics" by Carl Menger is made available online.

"Principles of Economics" is made available online. 奧地利經濟學派奠基作,由 Carl Menger 所著之《經濟學原理》一書,現在可在 Mises.org 下載完整的英文譯本電子書 (PDF) 。請瀏覽「"Principles of Economics" by Carl Menger 」下載及其他事項。也請拜訪「奧地利經濟學派@Wikipedia」獲知更多關於奧地利經濟學派的歷史。現在在網路上可找到的資源,比過去要豐富多了,真是令人欣喜。

SQL99 中取代子查詢表格的功能 - CTE (Common Table Expression)

隨著 IBM DB2 v8,v9; Oracle9i release 2; 以及 Microsoft SQL Server 2005 相關文件出現,我注意到它們都有提供一個由 SQL:1999 (簡稱 SQL-99 或 SQL3) 所規範的 CTE (Common Table Expression) 查詢語法。 CTE 查詢語法簡化了以往「子查詢表格」的複雜語法與難讀敘述。不妨試著解讀《一個較複雜的表格聯結 (join) 範例》一文的範例,想看出裡面有四個子查詢表格確實不是件容易的事。

How to use the select(), an I/O Multiplexer

根據《Boost application performance using asynchronous I/O》一文所做的區分,在 POSIX 上的 I/O 處理模式可分為四種。該文所舉的 POSIX AIO API 是晚近較新的處理模式,是 POSIX.1b 基於 realtime system (即時系統、實時系統) 之需求而定的規範內容,其概念是事件驅動模式, AJAX 中的 XMLHttpRequest 調用方式就是這種模式。在 POSIX 傳統上的非同步 I/O 模式 (即 Asynchronous blocking I/O) ,則是使用 select() 來達成。本文將說明這種傳統模式的使用方式。

秀吉の辞世

功名が辻 第39回

點擊觀看原尺寸圖
つゆとをち
 つゆときえにし
   わかみかな
なにわの事も
  ゆめの又ゆめ

天保異聞妖奇士第二話,揭露山神獻祭的真相

天保異聞妖奇士第二話,以山神獻祭之迷信風俗,揭露迷信背後的真相。故事起自一對從日本東北地方 (陸奧南部藩,「南部」是藩主的姓氏) 流浪到江戶的母子,理由是因為當地饑荒,父親按照當地風俗將兒子帶到山上獻給山神卻又反悔,因而觸怒山神,不得不逃離當地。然而第二話揭開真相,事實完全不是那麼一回事。

Yunus 應該得到諾貝爾經濟學獎

Yunus should be awarded the Nobel Economic Sciences Prize

2006 諾貝爾和平獎 (Nobel Pirze) 頒給了一名經濟學家,他是孟加拉的 Muhammad Yunus 。"for their efforts to create economic and social development from below", The Nobel Peace Prize 2006。我個人認為,他也應該得到經濟學獎的肯定。

民國95年10月第2週週記

  1. 北韓當局九日透過官方「朝鮮中央通信社」宣示,已成功進行地下核子試爆,國際社會紛紛譴責。
  2. 十月十日中華民國國慶日,五十萬餘民眾自發性出席參與民間慶祝遊行活動,號稱「天下圍攻」。台北市台北車站與博愛特區週遭,終日人潮不斷。我有幸參與,活到三十歲,這是我渡過最有意義的一次國慶日。
  3. 官方國慶大典進行時,在野黨立委高喊反貪腐口號,與執政黨立委發生推擠扭打。民視報導「這在北京早就抓起來了」,我以為民視:一、暗喻對岸北京政府應該涉入台灣內政;二、亦或主張台灣應效法北京專政威權體制,強力打壓異議份子。不論如何,個人以為民視之主張萬不可行。

2006 年乙級電腦軟體設計技術士應考記

隔了一年後再次應考乙級電腦軟體設計技術士 C++ 職類,依然歃羽而歸,真是令我情何以堪。好在學科成績可以保留三年,明年再挑戰吧。雖然已經是第三年進行術科檢定了 (第一年我沒考) ,但考題內容似乎還不是很完善,監考老師在檢定中途陸續修訂了數次題目的內容,多少令應檢者有些困擾。