Upgrade to PHP 5.2.1 升級摘要

趁著調整系統設定之時,順便更新 PHP 的版本到 5.2.1,這次的更新主要在穩定度和安全性上面做改進,ChangeLog 裡有提到 “FastCGI speed optimized build of PHP for Windows made available for downloading”,而更新之後執行速度確實快了些,可以從控制台的速度偵測得知。

幾個主要安全性加強及修正:

Security Enhancements and Fixes in PHP 5.2.1:

● Fixed possible safe_mode & open_basedir bypasses inside the session extension.
● Prevent search engines from indexing the phpinfo() page.
● Fixed a number of input processing bugs inside the filter extension.
● Fixed unserialize() abuse on 64 bit systems with certain input strings.
● Fixed possible overflows and stack corruptions in the session extension.
● Fixed an underflow inside the internal sapi_header_op() function.
● Fixed allocation bugs caused by attempts to allocate negative values in some code paths.
● Fixed possible stack overflows inside zip, imap & sqlite extensions.
● Fixed several possible buffer overflows inside the stream filters.
● Fixed non-validated resource destruction inside the shmop extension.
● Fixed a possible overflow in the str_replace() function.
● Fixed possible clobbering of super-globals in several code paths.
● Fixed a possible information disclosure inside the wddx extension.
● Fixed a possible string format vulnerability in *print() functions on 64 bit systems.
● Fixed a possible buffer overflow inside mail() and ibase_{delete,add,modify}_user() functions.
● Fixed a string format vulnerability inside the odbc_result_all() function.
● Memory limit is now enabled by default.
● Added internal heap protection.
● Extended filter extension support for $_SERVER in CGI and apache2 SAPIs.

The key improvements of PHP 5.2.1 include:

● Several performance improvements in the engine, streams API and some Windows specific optimizations.
● PDO_MySQL now uses buffered queries by default and emulates prepared statements to bypass limitations of MySQL’s prepared statement API.
● Many improvements and enhancements to the filter and zip extensions.
● Memory limit is now always enabled, this includes Windows builds, with a default limit of 128 megabytes.
● Added several performance optimizations using faster Win32 APIs (this change means that PHP no longer supports Windows 98).
● FastCGI speed optimized build of PHP for Windows made available for downloading.
● Over 180 bug fixes.

有滿多是與 Windows 系統相關的效能改善。

Google 搜尋結果數量預視

標題拉了一大串,自己也搞不懂在講什麼… @@” 反正看圖便知,不然連去 Google 台灣首頁試了就曉得,
Google Search
昨天搜尋的時候還沒有,應該是今天凌晨用好的,還算不錯的功能,也是用 Ajax 實現的吧~

不過去 Google 各個服務試了一下,目前好像只有 Google 台灣有這個功能,還真稀奇~

PHP with FastCGI on IIS 6.0 啟用安裝記錄

關於 FastCGI 的原理可以找 Google 大神。由於目前 Server 是跑 CGI 模式,而且硬體配備是舊電腦淘汰下來的,非常陽春,一旦 php 頁面一多,可以明顯感覺它是拚了老命在撐,最近實在受不了了,查詢一下,在 IIS 上面大部份都是用 Robust and High Performance PHP with IIS: Using FastCGI 的安裝方式,依樣畫葫蘆的結果是…失敗 =.=”,會出現「“Server Error, unable to connect to fastcgi server”」的訊息,或者是直接不給連,真是不甘心啊~

再次向 Google 求助後,終於找到這篇:Installing PHP with the FastCGI technical preview,心想說給 M$ 一次機會好了,結果裝完之後,明顯感覺…好很多,速度飛快不說,安裝步驟還非常簡單,一次就搞定啦~

記錄一下自己 IIS 6 的安裝步驟(php 已先安裝完成且能夠正常運行):
Continue reading “PHP with FastCGI on IIS 6.0 啟用安裝記錄”

Blog 也有性別?

想知道你的 blog 夠 man 或是夠 lady 嗎?有興趣就上 Yodao 有道 – 博客男女試試看吧~把自己的網址貼上然後按提交,等個幾秒鐘結果就出來啦~

這是該網站的系統簡介:

“博客男女”其实是通过机器后台,读取博客日志中的文本内容,分析语言,与系统的内部模型进行比对,找出男女倾向系数。所以提交测试的博客必须是能够公开匿名访问的,也必须带有RSS feed,才能准确抓去和分析相关信息。由于博客文本内容的变更,测试结果随着时间也可能会发生变化。人有千差万别,系统的模型描述能力却是有限的,因此有可能出错。通过博客来进行性别测试,只是一个闲暇之余供君莞尔的小游戏。

以下是我的結果:
Continue reading “Blog 也有性別?”

華麗一族(華麗なる一族)

過年到日本玩的時候,在旅館看電視不經意轉到一齣由木村拓哉主演的日劇,由於不懂日語,只能看著畫面想像劇情,後來回台灣才知道原來這齣日劇可是在日本創下高收視率的大作:華麗なる一族,目前已在緯來日本台播映。

此劇改編自「白い巨塔」作者山崎豊子的小說,於1974年也曾改編為電影電視劇,與白色巨塔一樣都是電影電視多次改編的作品。

時空背景設定在戰後20年,日本經濟高度發展的年代,內容描述關西旺族:萬俵財團的家族血淚史與政商界鬥爭醜聞,這故事讓我聯想到王又曾,呵,不知哪家電視台有興趣把王又曾的故事拍成戲劇呢?看了幾集,對其中幾位演技派男優印象深刻,尤其飾演萬俵財團大家長-萬俵大介的北大路欣也的演技,完全把內心深沈、嫉妒、憤怒各方面複雜心情表現得淋漓盡致。上網找一下他的相關資訊,才發現原來他也在1974年電影版出現過,當時是演「一之瀬四々彦」,即現在成宮寛貴的角色。
Continue reading “華麗一族(華麗なる一族)”

框架—Framework

框架往往會引導你的想法,讓你失去創意;框架也往往會箝制你的作法,讓你失去彈性。

我這一陣子在研究.NET 3.0的WPF(Windows Presentation Framework)框架,去年年底學習Flex/Apollo框架,幾年前使用Windows Forms框架和ASP.NET框架。上個世紀末我專注在Java Swing框架,更早以前還使用過C++的MFC框架和OWL框架。這些都是應用框架(Application Framework)。一般來說,現在的主流應用框架都是「物件導向」加「事件驅動」的,具有類別繼承階層(Class Hierarchy)、事件模型(Event Model)和Layout機制。

為什麼開發軟體時,我們需要應用框架?因為框架讓我們開發軟體更容易。只要你依循框架的開發方式,你就可以比較快、比較容易、比較保險地開發出軟體。甚至搭配該框架的視覺設計工具、程式碼產生器、雙向同步工具,軟體的開發時程可以進一步縮短。

另外,使用框架有兩個缺點:框架往往會引導你的想法,讓你失去創意;框架也往往會箝制你的作法,讓你失去彈性。使用同一個應用框架所產生出來的程式,往往會長得很類似。例如在MFC框架的時代,幾乎有一大半的程式都是MDI(Multi-Document Interface,多重文件介面)程式,都長得差不多,操作方式也都一樣。當框架說「不行」,不允許你這麼做,你很可能得乖乖放棄原有的想法。

你可能願意為了方便而放棄創意和彈性。「長得差不多、操作方式雷同,基本上也是好事呀!」你這麼認為。在速食、工業化的時代,像你這樣的想法很普遍。

框架何止軟體,人生不也充滿了框架。符合這些框架,成為人們努力的目標。婚姻、房子、車子、權力、地位、事業、財富、健康…這些都是人生框架中的類別(Class)與介面(Interface),等待我們去繼承(Inherit)、去實踐(Implement)。如果你選擇不使用人生框架,你等於為你的人生選擇另一條比較辛苦的路。

有了框架,就會有樣板。MFC時代最著名的程式樣板就是Scribble程式(繪圖程式);電視上也充斥著「成功人生」的諸多樣板。程式員被套上框架,從程式樣板學習;一般人被套上框架,向人生樣板看齊。

在「成功人生」的樣板中,先生是高收入的醫師,妻子是美麗的社交名媛,家住在臺北天母高級社區,育有一子一女,女兒正在國外讀哈佛,兒子就讀建中。夫妻兩經常聯袂參加慈善活動。

在「奮發向上」的人生樣板中,生長在三級貧戶的環境的他,卻認真求學,奮發向上,從小到大包辦了所有的第一名,後來當上總統。(儘管後來卻把國家的政治經濟外交全都搞砸了!)

有時候,樣板將我們狠狠地比下來,讓我們無地自容,對我們的心理造成很殘酷的傷害。當你一個人在深夜11點離開公司,開車回家時,你會忽然想到「為什麼我的兒子成天在網咖鬼混、老婆和我形同陌路?為什麼動用私人飛機和香港女星一同出遊的不是我?…唉!」

學生有學生的框架(上課前預習,上課後複習,有問題必求甚解);上班族有上班族的框架(為公司賣命,一步一步往上爬);女人有女人的框架(世界上沒有醜女人,只有懶女人);男人有男人的框架(維持強者的形象,不輕易流淚)…我們都活在框架之中,用崇拜與嫉妒的眼神看著樣板。

就連古代人也逃脫不了框架。子曰:「吾十有五而志於學,三十而立,四十而不惑,五十而知天命,六十而耳順,七十而從心所欲不踰矩。」如果你是古代人,而且你「三十未立,四十而迷惑」的話,可就不妙了。

依循框架,我們可以擁有比較「正常」的人生,但是在框架枷鎖中的生活,真是我們想要的嗎?有多少人敢跳脫框架,活出自我?

或許,當臺灣和中國不再惡鬥、升學主義不再是主流、在便利商店打工的40多歲中年男子不再被視為loser、每個家庭訂有自己的團圓日(不用擠在除夕或聖誕節)、同性戀人在街頭擁吻不再被路人指指點點、莉莉小鄭(女方比男方大超過30歲)的感情得到社會的祝福、不婚族與頂客族不再被投以異樣的眼光…那個時候,才表示我們大多數的人都跳出了人生的框架,才表示我們都被解放了。

或許到那個時候,我們才會發現,只有將框架解構,我們的心靈才能真正演化,進入2.0版;只有將樣板拋棄,我們才能活得快樂,釋放壓力。

但這似乎遙不可及,所以我還是翻開WPF框架的書籍繼續閱讀、寄出浮誇的履歷想要出人頭地、勤於上健身房維持自己的外表、過年期間人擠人只為了吃除夕一餐…。

儘管我已經丟棄一些框架,但我還是保有大部分的框架,而這些框架偶而會把我壓得喘不過氣,特別是在夜闌人靜的時候。

此文作者為蔡學鏞,原文在 iThome 刊登,與大家分享。

UTF-8 與 MySQL 的亂碼問題

由於在 phpMyAdmin 上檢視文章時,中文都變亂碼,即使將 MySQL 的 character set 全部改為 UTF-8 也依舊無效,上 Google 找了許久,終於找到這篇:惱人的 mysql 4.1 之後的連線編碼問題有較為完整的解法,最後就是在 my.ini 中的 [mysqld] 底下加入:
init-connect='SET NAMES utf8'
即可。

若是虛擬主機或免費空間則無法用以上方法修改,可以執行 SQL QUERY 來代替。
1. SHOW VARIABLES LIKE 'character%';
  顯示目前資料庫使用的語系設定
2. SHOW VARIABLES LIKE 'collation%';
  顯示目前資料庫使用的 collation 設定
3. ALTER DATABASE `資料庫名稱` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  變更該資料庫的語系及 collation 設定

執行第 3 步驟之後,可以再執行第 1、2 步驟檢查是否設定成功,其中 character_set_server 和 collation_server 就不用管它,因為這是 hosting 設定,一般是沒有權限修改的。

2007 Masters Champion

2007 Masters Champion

強森(左)爆冷奪得名人賽冠軍,由去年冠軍米克森協助套上綠夾克。

【聯合晚報/記者李一中/綜合報導】 2007.04.09 03:31 pm

美國名人賽今天殺出程咬金,名不見經傳的31歲美國選手強森(Zach Johnson)在第4輪揮出低於標準3桿的69桿,以4天289桿披上代表冠軍榮譽的綠夾克,獲得冠軍獎金130.5萬美元。「高球天王」老虎伍茲以291桿和另兩位選手並列第2名。

這項比賽今年邁入第71屆,在過去16年的冠軍都來前3天的領先組,從沒拿過大滿貫賽冠軍的強森,在前3天只揮出220桿,無法置身在領先組,但最後一輪他異軍突起,並以高於標準1桿的289桿奪冠,也追平名人賽的最高奪冠桿數(之前有兩屆也是以289桿奪冠)。

打完前3天暫居第2的伍茲,今天安排在領先組出發,前10洞只抓下1鳥,吞下3柏忌,表現不如預期,第13洞雖然射下老鷹,但後5洞沒再傳出佳績,最後打出平標準的72桿,總計4天以291桿和兩位南非名將古森、薩巴提尼並列亞軍。

31歲的強森從1998年成為職業選手後,只拿過2004年南方貝爾精英賽冠軍,至於其他重要賽事連邊都沾不到,沒想到竟然在復活節這一天登上運動生涯最巔峰。虔誠基督徒的他說:「今天我打的特別鎮定,冥冥之中好像有人在眷顧我。」

這個名人賽冠軍對強森來說,真的可以用神奇來形容。他之前只參加兩次名人賽,前年在前兩輪就被淘汰,去年也只名列第32,今年竟然擊敗伍茲、古森、米克森等世界級名將。他感恩地說:「我感覺到耶穌的存在,在這個日子奪冠,太有意義了。」

Continue reading “2007 Masters Champion”