C Macro 似乎只剩下讓 programmer 少打些字的功能

看到《C 的 marco》中例舉的 C Macro ,讓我有憶起舊日時光的感觸。當初覺得 Macro (in Assembly and C) 很有趣,但和最近興起的動態語言比起來, Macro 似乎只剩下讓 programmer 少打些字的功能。再者, Macro 的內容沒什麼規範,換個 C compiler 可能就不能用了。雖然我也是 gcc 使用者的,但這類特殊功能我想還是能免則免。

在符合 ANSI C99 規範的 C compiler 之中,用 inline function 可保有 Macro 的優點,而沒有 Macro 的缺點。An Inline Function is As Fast As a Macro。Also see: Explain Inline Function in C (GCC compiler)。所以現在大多用 inline function 而不用 macro 了。

電子商務不只是上網賣東西而已

公司一直想在網路購物上創造利潤,擴大營業額。然而公司內部一直沒有賦予網路購物業務清晰的角色定位,再者公司高層一心只想看到「營業額」,始終沒有正視「電子商務」的功能與重要性。

C++ library 的發展困境

晨星Workshop 提到:

C++現在最缺乏的就是 library的支援,因為相對於Java及一些script language,C++的lib相對的難以開發,需要考慮到的層面太廣了,像是記憶體管控、型別轉換,以及不同平台的實作,造成lib開發的不易

學習 PHP5 語言動態性的入門文章

從 PHP4 到 PHP5 , PHP 不只改善了個體 (object) 的成員保護程度,也引入了 PHP 稱為「magic methods」的特殊行為。 Magic methods 提昇了 PHP 的動態性,活用 magic methods 可以大幅減少程式碼中類似的重覆行為,並為 programmer 帶來更開放與直觀的程式撰寫彈性。

奇怪的題目:消費者願意付多少代價阻止政府實施管制?

今天,我妹妹拿著一道今年高普考的考古題問我為什麼答案是 70 ,然而那題目還真是考倒我了。題目內容如下:

假設檳榔的需求函數是 Q=50-5P , Q 與 P 分別代表檳榔的數量與價格。目前檳榔的價格是 2 。假設政府擬限制檳榔的生產,一旦檳榔的供給減少,價格將上漲至 4 ,則檳榔消費者願意付多少代價,阻止政府實施管制?

一個供貨廠商,看興奇與 PCHome 的網購龍頭之爭

今天在逛部落格時,無意中看到一個熟悉的字眼,那就是「興奇科技」。「興奇科技」是「Yahoo!奇摩購物中心」的平台業者。「Yahoo!奇摩購物通」則是另外一間,別弄混了。這字眼之所以引我注意,則是工作業務有相關。

箴、知其不可奈何而安之若命

知其不可奈何而安之若命 《莊子.人間世》

這話可分兩半來看,前半是「知其不可奈何」,後半是「安之若命」。知「人力時而有窮、天地間有客觀不可改變之限制」易;坦然接受,泰然處之則難。做到前半段簡單,但要做到後半段很難。許多人只做到「認」命,而做不到「安」命。願承認人生不可重來者,才會積極地面對當下,無悔地接受結果。

Rendering images with title and box

我個人喜歡簡單、敏捷。因此當我在網頁文章中放置圖像 (image) 時,我希望透過 JavaScript 改變圖像的呈現方式,加上一個標題以及外框。標題自動從圖像的 'alt' 屬性中取得,當然啦,順便加上順序編號看起來就更正式了。

老子編注:通行本三十章、以道佐人主者不欲以兵強於天下

校編內容

以道佐人主者不欲以兵強於天下,善者果而已,不以取強,果而不伐,果而不驕,果而不矜,是謂果而不強,其事好長。

通行本

以道佐人主者,不以兵強天下。其事好還,師之所處,荊棘生焉;大軍之後,必有凶年。善者果而已,不敢以取強。果而勿矜,果而勿伐,果而勿驕。果而不得已,果而勿強。物壯則老,是謂不道,不道早已。

編注事項

此章據《簡本》訂之,又《簡本》作「以[彳人亍]佐人主者」(此字為「人」字夾在「行」字中,今無此字。《帛本》、《通行本》皆用「道」字。)。另《通行本》與《帛本》其字義皆多於《簡本》,我以為僅具解釋之用,學者多認為係後人注釋衍入,故刪去。「物壯則老」以後之字義,與前文不匹配,刪去。(民國94年8月9日修訂)

箴、long live the Individualism.

The Individualism is dead, long live the Individualism.

於網上搜尋自由主義、個人主義之文獻時,看到的字句。很貼切地說明個人主義一詞的現況。現在一般人對於「個人主義」一詞的理解,已和原義相去甚遠。

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

打從人們開始使用電腦管理資料時,數位資料就一直有著兩種不同的儲存系統,一為檔案系統 (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) ... 暫時想不到有趣的諧音字。