2007 年的最後一日~

今天 (12/31)是 2007 年的最後一日,其實也沒安排什麼活動,只想要晚上可以好好地待在家裡,看個電視影集等,大概也會熬夜一下,度過跨年夜。早上是與 Ringle 一同至「統一資訊」與盧經理 Meeting,一同聊聊一些合作的方案。盧經理真的很健談,人相當 Smart,不是那種典型 IT 人的那種型,但相當的有大局觀,是我甚為欽佩的專案主管。中午他還請我們一同到隔壁的義大利餐館用餐,那家餐廳其實三不五時我也常去,東西還蠻好吃的,也挺精緻。

下午約 2:30 回到家,本想說睡個午覺,不過看看桌面上放的一張「威尼斯游泳池」招待券,今天可是最後一天期限了,再不用可是浪費掉了 NT$280。喔,其實身體有些些的不舒服,再加上好冷好冷,實在是不太想去。後來想想,還是咬著牙去游泳吧,暑假游過一次 (見「我在陽明山天籟溫泉會館」),今天才就游過那麼一次,常常都決定要游泳健身,但總是沒有作,好歹 2007 年的最後一天,總該去一次吧,起碼今年有很好的 Ending… ;D

大概下午 4:30 過去「威尼斯」,暖身一下就下去游囉。我也只會蛙泳,一趟 25 公尺,我來回共遊了 20 餘趟,中間還跳出來去高溫烤箱給烤一烤身體,再跳回水裏繼續游。本想也去泡個溫泉 SPA 的湯池,但擠滿人,算了,游完後又再過去高溫烤箱。你會發現到,今天的烤箱一點都不會高溫,是好溫暖喔,要是濕著身體在外面走,呼,那可真的是夠冰冷。待在游泳池約 1 個小時左右,真的不錯,我下定決心了,明年 2008 年開始,每個星期一定要游泳 1~2 次,運動健身,才能保持身體健康與清醒的頭腦。

晚上呢,我家那隻小的,說要去肉洋表弟他們在新店的新家,在那山上要圍爐吃著火鍋,然後眺望著 101 大樓,看其發放煙火,迎接新的一年;我與我老婆、蓁妮,則是到南勢角捷運站一號出口附近的「街角咖啡」,分別點鱈魚球、奶油雞、海鮮焗飯等,還特例讓蓁妮點個摩卡咖啡,還有老闆娘最近的新手藝:超美味的香蕉派,真的是相當好吃呢。

嗯,游完泳還真有些累,看來是沒辦法熬夜過年了,等會也想要去睡個溫暖的晚覺了。 這裡也同時恭祝各位朋友們新年快樂囉!!

[系統安全] 讓 b2evolution 的密碼保護更安全一些

我一直對 php-based 的密碼防護有蠻大的顧慮,將連線帳號密碼以明碼的方式寫入 php 設定檔中,感覺實在甚不安全。剛好在升級 xoops 系統時,爬文看到此篇:「把管理者帳號和密碼從Mainfile.php中移出來」 。想說應該同樣的方式也適用在 b2evolution 的系統下!

原理其實很簡單,b2 的帳號密碼是放在 \conf\_basic_config.php 中,不要把帳號密碼放在這裡,而是改成:

$db_config = array(
	'user'          => $db_user,     // your MySQL username
	'password'      => $db_passwd,     // ...and password
	'name'          => $db_name,  // the name of the database
	'host'          => 'localhost',    // MySQL Server (typically 'localhost')
);

而帳號密碼抽離出來,另存成一個檔案,就名為 b2evolution-auth.php ,放在 securedata 目錄下 (目錄與檔案名稱均可自訂) :

$db_user   = "username";   //database username here
$db_passwd = "password";  //database password here
$db_name   = "b2evolution";    //your database name here

而在原來的 _basic_config.php 內容中,在第一行加入如下:

include ("/home/hsdctw/securedata/b2evolution-auth.php");

該檔案存放的位置就是重點了。可不是存在 b2evolution 的子目錄下,而是應該儲存在你的 home 目錄,或者是在虛擬主機給你的根目錄下。例如以我的為例,就是放在 /home/securedata 下。如此除非 Hacker 有登入虛擬主機系統的權利,否則是無法從 web 下讀取到該檔案的內容,自然這也就形成密碼保護的目的了。

[系統升級] b2evolution from 1.10.2 to 1.10.3

再一次把我的 Blog 系統給升級到最新的穩定版。我使用的系統為 b2evolution,好像國內的用戶不多? 記錄一下升級步驟:

  1. 備份資料庫 (MySql) 與 html 目錄檔案。
  2. 解壓縮所下載回來的最新版本 (目前為 1.10.3 『Key West』 11/01/2007)。
  3. 把所有原來目錄的檔案全砍掉! (是的,這是官方建議的升級方式)
  4. 上傳解壓縮後所有的目錄檔案。
  5. 執行 http://yoursite.com/yourblogsfolder/install
    此步驟會問你連結資料庫的設定以更新資料庫,若沒有變動照預設即可,它會變更設定到 /conf/_basic_config.php 。
  6. 再來就是把原來所備份檔案中,自己曾客製化過的檔案,一個一個給 copy 覆蓋過去。這裡強烈建議使用 WinMerge 工具來作比對。

最後一個步驟是最麻煩的,不過我發現到使用 WinMerge 後,其實也還好,比對的工作花我不到一個小時,而含整個升級程序,我大概花兩個小時左右就完成升級了。

※ 官方升級步驟文件: Upgrade from an older version

抓美股歷史資料的好幫手—免費的 YGQD

大家都知道從 Yahoo FinanceGoogle Finance 可以看到美股、台股等的大盤走勢,也可以在其提供的網頁上作一些簡單的技術分析等。不過我是打算自行寫一些大盤的趨勢分析程式,例如 『臨界轉折值『、』混沌指標『、』均線(含扣抵值)』 …等。簡單的說就是希望能想要怎麼分析就愛怎麼分析,但前提就是要先能取得分析的資料,而且能免費的更是好。

透過 Google 遍尋取得資料的工具,還真讓我找到了一個免費抓取 Yahoo or Google Finance 歷史資料的工具程式: Yahoo & Google Quotes Downloader

Yahoo & Google Quotes Downloader

下載回來安裝完成後,預設內附的 symbols.txt 內容並不完整,你可以自行編輯或透過內建的一個小工具, sympreprocpr.exe,在命令列模式下執行:

sympreprocpr -o c:\symbols.txt -q

就會從 nasdaq.com 下載所有的 Symbols 資訊。不過我是嫌下載回來的 Symbols 太多了,我其實只想要 Dow, Nasdaq, S&P 500 等大盤資料即可,所以自行以純文字編輯器編輯 symbols.txt:

^DJI ^IXIC ^GSPC

沒錯,就是這麼簡單! 寫入的 Symbol 代號之間空一格即可。不過,我是不知道,到底國際是否有通用的 Symbols 標準? 我在 Yahoo Finance 看到的是 Dow(^DJI), Nasdaq(^IXIC), S&P500(^GSPC),從 nasdaq.com 下載回來的 symbols 資料卻無這些代號?

可以選擇下載是日線(Daily)、週線(Weekly)或月線(Monthly)的資料,也可以設定抓取資料的時間間隔。像我抓 Down 美股的日線資料,設定從今年的 1/1 到 12/24 止,下載的時間不到三秒鐘就完成了,真是快!只要是在 Yahoo or Google Finance 上的 Symbol 都可以抓得到,所以包括台股、台指期等,都可以抓得到,沒有問題的。

下載回來的資料為 csv 格式,要作簡單分析的話,使用 Excel 就可以直接讀取了。不過我是打算要 Import 至 Sqlite 的資料庫,再從我的分析程式抓取 Sqlite 內的資料來作分析,這可又是另外一段故事囉...

SOA (Service Oriented Architecture) 探討

問題思考

Bill Gates 曾於 1999 年在「數位神經系統」一書中提出 DNA (Distributed Network Architecture) 架構,那麼,又與現今當紅 SOA (Service-Oriented Architecture)架構有何異同?

理念相同

 o 業務驅動 IT 技術,科技支援商業。
 o 企業間的協同合作,提供即時精確的服務。
簡言之,即為以服務為導向 (service-oriented) 的架構規劃與整合,讓 IT 與 企業合為一體。

作法不同

 o DNA 走自家的 COM/COM+ 分散式技術,是屬於 “緊密式耦合 (tight-coupling)” 的連結方式;SOA 則走 Web-Service 的寬鬆連結方式 (loose-coupling)。
 o DNA 偏以自家產品 (MS Solution)為中心的整合方式;SOA 則為異質平台的整合方式,依循標準的 HTTP/SOAP, XML 的整合方式。

SOA 的四大特質

 o 簡單
 o 異質
 o 彈性
 o 寬鬆連結

  • 不同的平台之間 (.NET, J2EE, PHP/Ruby … 等),均可以透過 HTTP/SOAP 協定傳遞 XML 資料 (純文字的格式)。
  • 利用 WSDL (Web-service description language) 描述 Web服務 的公佈介面 (interfaces)。這是一個基於 XML格式的標準,以描述如何與 Web服務 通訊和使用的服務。
  • 因為是寬鬆連結,最好不要期待 Web-service 可以處理交易機制的協調處理,取用一次,完成所需的服務即可。
  • Web-service 的本質就是屬於 “state-less (無狀態)” 的機制,若是應用在 UI 與 Middleware 的系統連結上 (如 .NET Form 透過 web-service 連結 J2EE),需注意用戶端與伺服端的狀態保存與維護。

SOA 的挑戰

 o 如何作整體性的架構規劃?
 o 如何快速部署 (deploy) Web-service based 的應用程式?
 o 如何讓設計比較有彈性,以快速應付外界的需求?

整體性的架構規劃

 o 可以利用 UML 使用案例圖 (use case diagram)呈現整體架構設計。
 o Use Case 本來就是以需求服務為導向的設計,與 SOA 的標的一致,故用其作為架構設計的呈現,最為適合。
 o 每一個由 web-service 所揭露的服務 (service),會對應至一到多個使用案例 (use case)。

快速部署 WebService

 o 這是屬於系統廠商的責任,包括 MS, IBM (WebSphere), BEA (Weblogic), TiBCO 等,均能提供快速部署 Web Service 的應用程式。
 o 先進的工具還能支援:
  o 資料物件與 XML 的格式轉換
   o Java Bean to XML (反之亦然)。
   o DataSet to XML (反之亦然)。
  o Support XML Schema 的設計與定義。

彈性的設計

 o 這是屬於 Developer 的責任。
 o 這是軟體設計最為嚴謹且為最大挑戰的領域。
 o “應變” 是軟體設計者應有的態度。
 o 可先以 “分層結構 (後述)” 作為系統開發的 “cook book”,先瞭解與熟悉 “委派(delegate)” 的設計手法。

【投機交易】消息影響價格,還是價格影響消息?

這論點是我在「期貨交易策略」一書,作者 Stanley Kroll,也是期貨界的投機大師 認為 價格會影響消息,而非僅是消息影響價格。嘿,這真是太有趣的觀點了。

關於本書,寫得也是相當的好,但我卻感覺與書名不符,當初我買本書是以為會談及交易的操略,包括資金控管、加減碼與進出場等策略規劃等,但卻沒有,仍然比較偏向是談心法、紀律等。 (是否有網友們可以推薦有真正談及交易策略的書籍啊?)

Stanley 與一位長期研究可可豆的經濟分析師合作寫一份消息與價格走勢關係的報告,Stanley 提出了一個理論說:「價格創造消息,而不是消息影響價格。」喔,這位同事簡直是快要抓狂,幾近咆哮的說,「大家都知道價格會跟著消息跑,其它不用說了!」呼,Stranley 他說可是很願意拿出一筆錢與該位經濟學家打賭,來挑戰這個好像是「大家都知道」的常識。還說,這可是他生平賭得最爽快安心的一次了。:>>

怎麼賭呢? 當時可可豆期貨是處於相當強勁的多頭趨勢。當第一次大幅回檔後,Stanley 指出,將來一定會有下面兩個消息之一出來:

  1. 有個生產國突然「發現」能夠出口的可可豆比早先宣布(當然這是上次大漲的原因)的要多。
  2. 費城或紐約某個可可豆倉庫裡意外發現數量龐大,一袋一袋的可可豆。

這一次的結果是「費城倉庫裡面發現到東西」,Stanley 得一分!

當投機客多頭大舉平倉之後,市場又恢復上揚走勢。許多原來作空的人搶著回補,並趕快在最近的回檔處作多。接著投資大眾見到長達一週猛烈的漲勢。當那一週快結束的時候,Stanley 通知合夥人,上漲的原因會是下列兩者原因之一:

  1. 非洲某個種植地區意外出現所謂的黑莢病。
  2. 美國東岸倉庫裡的可可豆突然遭到蟲害。

結果這一次是蟲害惹禍。Stanley 贏得了賭注!!

套一句我們對這些分析師是總是會拿各種理由來解釋大盤為何會上漲或下跌原因的成語就是:「事後諸葛亮」啦。 ;D