血光之災2007

這並不是某部電影的名字,而是算命的結果。為甚麼加上 2007?因為人要體認到無常,隨時都可能會有血光之災的發生。
記得是四月還五月的時候,岳母與他的四千金一起去台中某個以祭拜濟公為主的神壇,去請教濟公一些事情。
岳母很好心的幫我問了今年的運勢,結果是可能會有血光之災。根據濟公表示,找三太子幫忙,應該可以化解。
於是老婆回來之後,就告訴我後半年要特別小心。
最近,還記掛著這件事情的岳母,就到台北某座以祭拜三太子為主的神壇,去請教三太子,三太子也告知了同樣的結果。
既然兩位神明都這麼說了,於是岳母就要了我的貼身衣物,幫我祭解。祭解以後,三太子還說,要在初一、十五到大廟裡去拜拜。
所以岳母就跟我老婆講,我老婆再跟我講。
雖然我自己是不太喜歡算命,不過既然人家都已經算了,而且也這麼說了,那麼,最好就是要凡事小心,免得出事。然後,還要記得初一、十五要去附近的大廟:太平宮拜拜。

在 Windows 下 build php 的方法

幾個月前嘗試著要自己重新 build PHP

其實方法都可以在原始碼解開以後的 README.WIN32-BUILD-SYSTEM 裡面找到。這裡只是算是一些小補充而已。
不過,我最後的結果是失敗,好像還缺了些東西,後來也沒有繼續試,這邊還是先記錄下來,有機會繼續嘗試。

  1. 下載官方提供的原始碼壓縮檔。
  2. 解開,請先看過 README.WIN32-BUILD-SYSTEM 一遍,這會是很好的指引。
  3. 安裝以下東西:
    • Visual Studio 6 或 Visual Studio 2003
    • Platform SDK
    • 官方提供的 win32build.zip
    • 其他必要的 library(自己參考說明吧)
  4. 打開 Command Prompt,切換到解壓以後的目錄下。輸入 buildconf 並按下 enter。
  5. 解開 win32build.zip。
  6. 設定環境變數:
    set lib=win32build_unzipped_directory\lib
    set include=win32build_unzipped_directory\include
    set path=%path%;win32build_unzipped_directory\bin
    

    接著再執行 C:\Program Files\Microsoft Platform SDK\setenv.cmd。

    "C:\Program Files\Microsoft Platform SDK\setenv.cmd" /2000

    "C:\Program Files\Microsoft Platform SDK\setenv.cmd" /xp32
    
  7. 進行設定,這會產生 Makefile。
    cscript /nologo configure.js --disable-ipv6 --disable-fastcgi --enable-cli-win32 --disable-calendar --disable-filter --disable-ftp --disable-zlib --without-wddx --without-xml --disable-xmlreader --disable-xmlwriter --without-dom --without-simplexml --without-gd --without-t1lib --disable-ctype --without-iconv --disable-bcmath --disable-com-dotnet --disable-json
  8. 執行 nmake,應該就會大功告成。

突破習慣領域、開創新思維

公司內部開的課程,講師是郭騰尹,他是實踐家知識管理集團副董事長兼習慣領域推廣中心正式講師,以下是講義以及一些筆記,不過筆記居少啦。
人是透過互動來完成他自己的習慣,主要影響習慣的因素:

  • 環境(地):塑造性格、培養能力。反思:如何建構好環境?
  • 時代背景(天)

一個人的思想與格局成正比

  • 重複為學習之母
  • 沒有夕陽工業,只有夕陽觀念 (行銷創造消費習慣、新的生活型態)
  • 創造力最大的殺手,是人們滿於現狀、自我設限。
  • 習慣很好,讓我們熟能生巧、有效率、省時間、也保護我們。習慣很麻煩,讓我們保守、不願創新與改革、有盲點、缺乏觀察。(創新來自反省自我的習慣;檢討失敗為成功之母)
  • 潛在領域與實際領域的運用:潛在領域就是腦海思維的總和,實際領域則是當下的思維、當下想到的、當下作的選擇。潛在領域要大,實際領域要靈活反應。反思:如何找到夠大的潛在領域?多見聞,才能識廣。冷靜的分析,才能靈活運用潛在領域下的其他念頭。

創新思維的有效方法

  1. 虛心學習,學習力即競爭力。
    1. 要有誠心、謙卑,要放下身段。
    2. 處處留心皆學問。
    3. 模仿是最有效的學習。
  2. 升高察思
    1. 站在高的位置,或以長遠的時間點來思考問題。
    2. 尋找更高一層的意義。
  3. 事物的聯想
    1. 想像力比知識更為重要。
    2. 有關係,找關係;沒關係,強迫發生關係。
  4. 改變參數
    1. 找到看得到的參數以及看不到的參數。
    2. 分解、組合、替換
  5. 腦力激盪
    1. 三個臭皮匠勝過一個諸葛亮
    2. 注意發散與收斂的過程
  6. 改變環境
    1. 搬家、移民、輪調、退伍、旅行
    2. 讀不同的書、走不同的路、問不同的人
  7. 以退為進
    1. 事緩則圓,退一步海闊天空
    2. 暫時離開問題(或壓力)
  8. 靜坐禱告
    1. 萬物靜觀皆自得
    2. 每天給自己20分鐘,讓自己的思緒澄靜。

額外紀錄:

  • 上等人談思想、中等人談事情、下等人談是非。
  • 豐沛的情感是創造力和行動力的來源。如何培養?可以閱讀文學、加強人文素養、看戲劇、繪畫、聽音樂。
  • 創意是生活的態度
  • 善問不如善答。

來不及講到的部份:曼陀羅心智的運用。

如何使用 Mono.GetOptions?

Mono.GetOptions 是做什麼的?問的好。
如果你曾經在 Linux 下開發過 console 應用程式,相信你對於getopt這個 library 應該不陌生才對。
Mono.GetOptions 就是一個類似 getopt 的組件。

這裡主要是介紹怎麼使用,下面就列出步驟:

  1. 安裝Mono
  2. 在 AssemblyInfo.cs 裡面加入:
    //填入簡單的用法說明,顯示 help 時會用到
    [assembly: Mono.UsageComplement("[-t:param] [-o] [-h] [-v] [-u]")]
    //填入關於這程式的說明,也是顯示 help 時會用到
    [assembly: Mono.About("A sample about how to use Mono.GetOptions")]
    //作者
    [assembly: Mono.Author("your_name")]
    //有錯誤時可以通報誰,可填可不填
    [assembly: Mono.ReportBugsTo("your_name@your_domain.com")]
    //更詳細的說明,可填可不填
    [assembly: Mono.AdditionalInfo("This is a sample about how to use Mono.GetOptions.  It's only a small program.  If you want to know more about Mono.GetOptions, you can hack Mono.GetOptions source code.")]
    //是屬於哪個套件,可填可不填
    [assembly: Mono.IsPartOfPackage("Samples")]
    

    然後在原來的地方應該會有這些:

    [assembly: AssemblyTitle("Mono.GetOptions Sample")]
    [assembly: AssemblyProduct("getoptions_sample")]
    [assembly: AssemblyCopyright("your_name or your_organization")]
    [assembly: AssemblyVersion("1.0.*")]
    

    請記得都填入。

  3. 引用 Mono.GetOptions 組件,用SharpDevelop的話,可以很方便的選 Add mono reference。
  4. 記得 using Mono.GetOptions。
    using Mono.GetOptions;
  5. 新增一個類別,繼承 Options。
    using System.Collections.Generic;
    class ProgramOptions : Options
    {
    private string _outputFolder = "output";
    public string OutputFolder
    {
    get { return _outputFolder; }
    set { _outputFolder = value; }
    }
    private List _templateFolders;
    // 表示最多容許兩個,參數可以用 -t 或是 --template
    // 用法大致是 -t:test 或 --template:test
    [Option(2, "Template folder, default is 'default'", 't', "template")]
    public WhatToDoNext DoTemplate( string s )
    {
    //Console.WriteLine( "template={0}", s );
    _templateFolders.Add( s );
    return WhatToDoNext.GoAhead;
    }
    // 預設只容許一個,參數是 -o 或 --output
    [Option("Output folder, default is 'output'", 'o', "output")]
    public WhatToDoNext DoOutput( string s )
    {
    //Console.WriteLine( "output={0}", s );
    _outputFolder = s;
    return WhatToDoNext.GoAhead;
    }
    public ProgramOptions()
    {
    // 表示同時接受 Linux / Windows 的命令列常態用法
    this.ParsingMode = OptionsParsingMode.Both;
    _templateFolders = new List();
    }
    }
    
  6. 在 Main 裡面使用剛剛新增的類別:
    ProgramOptions options = new ProgramOptions();
    options.ProcessArgs(args);
    foreach( string s in options.TemplateFolders )
    Console.WriteLine( "Template folder = {0}", s );
    Console.WriteLine( "Output folder = {0}", options.OutputFolder );
    

    就這麼簡單。

  7. Build 以後,你可以在命令列模式或是 linux 的 console 模式下試試看了~這邊我假設你編譯出來的目的檔是 your_program:
    $your_program -h
    $your_program --help
    $your_program --template:t1 --template:t2 --output:o1
    $your_program -t:t1 -t:t2 -o:o1
    $your_program -u
    $your_program -V
    $your_program --version
    

getopt有興趣的話,可以參考getopt
這是對岸同志寫的介紹,很簡短:

  • Mono项目提供的一个控制台程序辅助包GetOptions – 自由、创新、研究、探索…… – 博客园
  • 這篇也是 Tutorial,寫的很好:The PumaCode.org Blog :: GetOpt style command line processing in C# with Mono.GetOptions

    如何在 CentOS 安裝 mod_proxy_html

    1. 先到官方網站下載源碼,或是利用 subversion 直接 checkout 最新的 code。這裡直接 checkout 最新的 3.0:
      #svn co http://apache.webthing.com/svn/apache/filters/proxy_html/ mod_proxy_html
    2. 安裝必要的開發套件:
      #yum install httpd-devel libxml2-devel
    3. 進行安裝:
      #apxs -I /usr/include/libxml2 -c -i mod_proxy_html.c
    4. 在 httpd.conf 裡面加上
      LoadFile /usr/lib/libxml2.so
      LoadModule proxy_html_module modules/mod_proxy_html.so
    5. 重新啟動 httpd 之後,就大功告成。(當然還是要參考官方文件,自己加上必要的設定啦。)

    參考資料:

    備註:曾幾何時,我居然也看懂希臘文了~ =_="

    如何在 CentOS 4/4.5 裡安裝 mono

    這裡,我假設你用 yum 來管理你的套件。

    1. 下載 mono.repo 然後放到 /etc/yum.repos.d/ (以 root 身份)
    2. #yum update
    3. #yum install mono-complete xsp mod_mono
    4. 完成啦!

    很簡單,對吧~
    如果你用 Fedora Core 3/4/5 或者是 RHEL 4,你可以參考Mono 下載頁面
    安裝的方法跟上面所說得非常地類似。

    吹冷氣

    結婚快五年啦~搬到自己買的房子也已經兩年多了,終於,在今年四月裝了冷氣。
    習慣吹冷氣的人大概很難想像我跟我老婆可以在酷熱的夏天裡在沒冷氣的房子裡過日子吧(而且還過了四年!)~
    這不是重點,我想說的是,自己真的沒有那個命去吹冷氣睡大頭覺。
    每次晚上蓋棉被吹冷氣,隔天總是頭痛、精神不振~感覺上沒睡好。
    唉~看來晚上吹冷氣睡覺也是需要時間去適應的啊~

    詐騙電話

    星期六一天,就接到兩通詐騙電話,一通是冒充監理站,一通則是冒充中華電信。
    他們共通的特徵就是語音電話之後,會告訴你按下0,即可直接與監理站或中華電信人員通話。
    監理站那通是這樣子的…
    他告知我有罰單未繳納,而這張單子是在高速公路上開的,我當然是極力爭辯說我沒有車子~(這時我開始覺得怪怪的,因為那女人的口音不對)
    於是他說,可能是有人冒用我身份去領牌,請我跟交通大隊備案,接著幫我轉給交通大隊。
    轉給交通大隊之後,跟他講了半天,要開始備案了,這時我說,”可以留下電話號碼,我再回撥回去嗎?”
    掛斷查證以後,我確定電話沒錯(用104),接著打過去,轉總機,再轉到備案單位,最後警察跟我說…”你應該打反詐騙專線 165..因為,那是詐騙電話…”
    真是好家在,不過我的名字跟電話號碼還是被騙去了…嗚嗚~
    有了第一次的經驗,下午接到中華電信的語音電話之後,當下就先掛斷,再打中華電信的服務專線 123 去查。
    果然沒錯,的確是詐騙電話。
    詐騙電話的手法真的是日新月異,稍稍一不注意就可能會被騙,大家要小心啊~