目前日期文章:200702 (17)

瀏覽方式: 標題列表 簡短摘要
話說新年到一家人該是和樂過年的時候,不過呢,吃完飯後閒閒沒事幹之際,大家喝茶嗑牙、談天說地之際,我跟我的父親卻因為對法的看法不同而吵起來了。

先說我父親的背景,他是調查局的公務員退休,對於法律的見解很是道地,他認為人就該奉公守法,社會才會安定。

如果我沒看過李宗吾和吳思兩位前輩的著作的話,我應該會同意他的論調,不過很抱歉,雖然兩位前輩的學說有點偏,但還是比我父親所想的:守法是國民的義務,這個觀點的解釋力來的強多了。

HACGIS 發表在 痞客邦 PIXNET 留言(10) 人氣()

這一篇主要是針對 函數設計準則 (2) 所作的修訂,為了讓看的人了解變化的過程,我選擇另開一篇來寫。
在過年前其實已經有定見了,不過前幾天跟我的父親吵了一架,心情不是很好,所以遲了幾天才寫,吵架的原因我會另開一篇說明。

首先是函數的特性,從單一處理到批次處理時,針對失敗與中斷的作法,如果要強調「無縫」的特性,其行為特徵應該改成這樣:

HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()

恩,經過漫長的等待,微軟終於正式 Release 新版的 Virtual PC 2007 了。
這一版依然是免費下載的,可以到 VPC 的官網去下載

HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()

我想對於一些用語不精確,造成誤解與討論上的困難,應該是給出一些定義的時候了。
底下是我用對設計階段的意圖所下的定義:
  • 成功:可由函數名稱看出其執行時的意圖,於流程上預期得出之處理。
  • 失敗:與成功相對,於流程上非預期得出之處理。
  • 錯誤:觸及程式語言中無法自理的條件,使得執行程式必須終止之處理。
  • 例外:觸及區域流程上無法自理的條件,但可能借程式語言更正之處理。
很簡略的給出了這幾個定義,或許並不嚴謹,但可以很清楚的看出這四個詞彙的分別。
我認為,資料結構、演算法、重構、設計模式等等,都圍繞在關於「成功」這部份的處理,其他的部份論及較少。
我對於例外處理的態度和這篇相同,除非必要,我盡量不使用例外處理。

HACGIS 發表在 痞客邦 PIXNET 留言(3) 人氣()

對啦,我是知道新版的 PHP 5.2.1 Release 了,不過我個人是暫時不會去更新有關自行編譯的相關文章。
我只提幾個使用上要注意的地方:
  • 目前可以在 PECL4WIN 下到比較新的 DLL 來用。
  • Suhosin Patch 有對應 PHP 5.2.1 的版本可用。
  • Xcache 已有新版對應,雖然有人說拿對應 PHP 5.2.0 版的可以用,不過我自己試的結果是不行。
    • 原因大概知道出在哪,因為我用 CGI 模式執行 PHP,所以掛不上去;如果用 Apache Handler 模式執行的話,就可以用。
    • 前天才把訊息送到 XCache 的論壇上,馬上就有新版出現,真快!(不過有沒有人可以告訴我,dev 和 trunk 這兩個版本有什麼差異?)

HACGIS 發表在 痞客邦 PIXNET 留言(2) 人氣()

石頭在回應這一系列中提到調用者與被調用者的不同觀點,以及四種函數的分別。
我在寫這一系列時其實都想過了,但我著重的部份不是「可不可以」而是「應不應該」,有許多地方我還在調整,但因為部落格可以很快取得不同的迴響,所以我決定先發表再說,文章的內容日後可以再進行整理與修改。

借用石頭的調用者與被調用者的觀點,這篇文章來提一下調用者的部份,先來看個例子:

function 載入:模組集($模組集, $中斷 = true){

HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()

話說我個人對函數的設計比類別的設計來的有興趣的多,函數的設計有許多地方是有準則可以遵循的,我希望在我的程式設計生涯中,能找出這些準則。

這篇主要在探討在函數中,執行「中斷」的一些設計準則。
所謂的「中斷」,是一種條件,這種條件使函數執行失敗時跳脫程式既定的「循序流程」,亦可能引發錯誤而使程式停止。

HACGIS 發表在 痞客邦 PIXNET 留言(5) 人氣()

  • Feb 11 Sun 2007 13:26
  • 讀書

古人說:「三日不讀書,便覺面目可憎。」
實際上,我已有個把個月沒在讀書了,雖說目前口袋理沒有多餘的閒錢,但也不至於落到李宗吾所說的:「有錢買書,無錢買米。」的地步。
所以我還是花了錢買本書看看,換一下新觀念。


HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()

話說昨天下午我的錢包掉了,雖然裡面的錢不多,但是有些證件掉了很麻煩。
就在我去警局備案時,有熱心的人撿到送回來了。
雖然我沒見到這位先生的面,我還是很感謝你把我遺失的東西送回來,謝謝你!


HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()

昨天下了 PHP6-dev 來試試看,剛剛裝上去,測試了幾種檔案讀寫狀況,其實在 php.ini 中需要設定的只有底下兩行:
  • unicode.semantics = on
  • unicode.filesystem_encoding = BIG5
第一行 unicode.semantics = on 表示要啟動 Unicode 相關的功能。
第二行 unicode.filesystem_encoding = BIG5 表示指定檔案系統的編碼,這裡我使用 BIG5 是遷就 Windows 系統,如果是在 Linux / FreeBSD 上,應該可以設成 UTF-8。
有個地方要注意:
  • 除了中文,其他的編碼文字不能出現在檔案名稱中,否則會無法操作檔案。
  • 檔案名稱的部份雖然可以用中文,但是寫入檔案時的資料如果含有其他國家的文字,會跑出 Notice ,可以在 fwrite 前加上 @ 來抑制。
  • 載入 PHP 的方式若是用 Apache Handler,在某些常數名稱上會出現錯誤,建議使用 CGI 模式載入 PHP。

HACGIS 發表在 痞客邦 PIXNET 留言(2) 人氣()

今天看雜誌的介紹,有提到一個叫 VirtualBox 的虛擬機器,剛剛下載回來安裝,速度上不比 MS 的 VPC 差,覺得很滿意。
不過他的 ShareFolder 設定方法比較麻煩,所以我紀錄在這邊:
  1. 先把一個虛擬機器 Run 起來,裝完作業系統(XP)後 Shutdown。
  2. 開一個 DOS 視窗,切換目錄到 VirtualBox 的安裝目錄(C:\Program\InnoTek VirtualBox)。
  3. 執行 VBoxManage sharedfolder add "VM name" -name "sharename" -hostpath "C:\test"
    • VM name 指的是虛擬機器的名稱
    • sharename 指的是在虛擬機器中的 ShareFolder 名稱
    • C:\test 指的是 Host 裡面的路徑名稱
  4. 或是你也可以直接修改設定檔,你可以看一下 VirtualBox 的 File 選單中的 Global Settings 裡面的 Machines 的目錄,在該目錄底下你可以找到相關的 VM name 的目錄,在該 VM name 的目錄下,有個 xml 檔案,打開來編輯,加入:
    •       <SharedFolders>
              <SharedFolder hostPath="C:\test" name="sharename"/>
            </SharedFolders>

HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()

上次石頭談了一些有關樣板系統的事情,這次我來介紹我喜歡用的兩套樣板系統:

第一套是 TBS(TinyButStrong),俗稱小強。這套我最早是看到 Neo 的這篇介紹知道的。
這套的優點就是小而快,不過缺點就是要整版輸出,很難用拼版的作法(要繞個彎)。

HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()

看到石頭那邊的介紹:博客男女測試,我也去博客男女做了一下測試,感覺還蠻準的
不過評語和石頭一樣,該不會同一百分比的評語是相同的吧?

結果如下:
失落的技術
100.0%男性倾向,0.0%女性倾向
   
评点:您的文风冷静而镇定,言语间展现出强悍的思辨能力与恢宏的胸襟,一个男子汉的阳刚形象跃然纸上。
yodao | 博客男女

HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()

剛剛把 Blogger 開通了,那邊準備放一些雜七雜八的收集品。
兩邊各有優劣,我覺得 PIXNET 這裡的編輯器比較好用,而 Blogger 那邊的版面設定比較優。
我還是會以這邊為主,Blogger 那邊是不定時在更新。

HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()

眾所周知,李嗣涔教授關於特異功能的研究,常被學術界的人抨擊。
依我個人看來,這次鎖論文事件,有點「賭氣」的成份在。
在石頭那邊,鎖不鎖學術論文之我見,我用研究道德的觀點做了一些評論,這次我想用一些比較世俗的、權謀的觀點來談這件事。

首先我要提的事情是,學術界其實很黑暗,沒有一般人想像的那麼崇高。

HACGIS 發表在 痞客邦 PIXNET 留言(4) 人氣()

這幾天生病在家修養,沒有在搞東搞西,讓自己沈澱一下。
思考後發現,目前研究如何在 Windows 下編譯 PHP 模組的部份可以暫時告一段落了。
理由是我發現作這件事情對我的目標並沒有實質的效益,我的目標是開發程式,不是產生開發環境,而有關一開始提到的記憶體使用的函數,可以用其他方式達成,我也實做出來了,因此接下去應以程式開發為主了。

HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()

iconv 和 gettext 這兩個 Extensions 必須一起編譯,所以就一同介紹。
要注意的是,目前沒辦法拿最新的版本來編譯,我測試過可以成功的版本號碼如下:
  • iconv:libiconv-1.9.2.tar.gz
  • gettext:gettext-0.14.6.tar.gz
在下載源碼時請務必注意版本號碼,下面介紹編譯步驟:
  1. 源碼可從每個 GNU FTP Mirror 取得:FTP 列表。
  2. 下載後解開至 D:\Work\test\iconv、D:\Work\test\gettext
  3. 切換目錄至 D:\Work\test\iconv,執行:
    • nmake -f Makefile.msvc NO_NLS=1 MFLAGS=-MT
    • nmake -f Makefile.msvc NO_NLS=1 MFLAGS=-MT install
    • nmake -f Makefile.msvc NO_NLS=1 MFLAGS=-MT distclean
  4. 切換目錄至 D:\Work\test\gettext,執行:
    • nmake -f Makefile.msvc MFLAGS=-MT
    • nmake -f Makefile.msvc MFLAGS=-MT install
  5. 切換目錄至 D:\Work\test\iconv,執行:
    • nmake -f Makefile.msvc MFLAGS=-MT
    • nmake -f Makefile.msvc MFLAGS=-MT install
  6. 現在可以從 C:\usr 中找到編譯所需的檔案:
    • 複製 C:\usr\include 中的 iconv.h 和 libintl.h 至 D:\Work\win32build\include 中
    • 複製 C:\usr\lib 中的 iconv.lib 至 D:\Work\win32build\lib 中
    • 複製 C:\usr\lib 中的 intl.lib 至 D:\Work\win32build\lib 中,並更名為 libintl.lib
  7. 修改 PHP 源碼中的 ext\iconv\config.w32,將第7行:
    • if (/*CHECK_LIB("iconv.lib", "iconv", PHP_ICONV) &&*/
    • 改為
    • if (CHECK_LIB("iconv.lib", "iconv", PHP_ICONV) &&
  8. 修改 php_conf.bat 加上參數 --with-iconv 和 --with-gettext
  9. 重新編譯 PHP,執行:php_make.bat
  10. 編譯完成後安裝請執行:php_make.bat install
  11. iconv 可以動態連結也可以靜態連結,可以單獨載入(可使用 --without-gettext)
  12. gettext 只能靜態連結,且必須與 iconv 一同載入(不可使用 --without-iconv)
  13. 建議將兩者都使用靜態連結

HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()

找更多相關文章與討論