Jun 18

WordPress 3.0 在十幾分鐘前 release 了,官方的文章 提供了這段影片作介紹:

2.9.2 升級可直接把下載下來的壓縮檔直接覆蓋原本的目錄,再透過瀏覽器執行升級程式( wp-admin/upgrade.php )。

因為 WordPress 3.0 的預設佈景主題換了,所以沒改過預設佈景主題的人記得開管理後台檢查一下。

WordPress 3.0 的壓縮檔裡面沒有這些檔案與目錄(注意: wp-content/themes/classic 與 wp-content/themes/default 列在其中),想讓目錄乾淨一點的可以清掉:

  • wp-admin/categories.php
  • wp-admin/edit-category-form.php
  • wp-admin/edit-page-form.php
  • wp-admin/edit-pages.php
  • wp-admin/images/browse-happy.gif
  • wp-admin/images/fav-top.png
  • wp-admin/images/screen-options-left.gif
  • wp-admin/images/wp-logo-vs.gif
  • wp-admin/images/wp-logo.gif
  • wp-admin/import
  • wp-admin/js/wp-gears.dev.js
  • wp-admin/js/wp-gears.js
  • wp-admin/options-misc.php
  • wp-admin/page-new.php
  • wp-admin/page.php
  • wp-admin/rtl.css
  • wp-admin/rtl.dev.css
  • wp-admin/update-links.php
  • wp-admin/wp-admin.css
  • wp-admin/wp-admin.dev.css
  • wp-content/themes/classic
  • wp-content/themes/default
  • wp-includes/js/codepress
  • wp-includes/js/jquery/interface.js
  • wp-includes/js/scriptaculous/prototype.js
  • wp-includes/js/tinymce/wp-tinymce.js

Technorati Tags: ,

(Visited 1562 times)
Apr 16

FreeBSD ports tree 的 lang/php5 升級到 5.3.2, www/eaccelerator 也升級到 0.9.6。
但是... 目前,FreeBSD ports tree 的 www/pecl-APC 依然是 3.0.19,無法在 PHP 5.3 運作;為了讓它正常運作,jnlin送過 PR(我沒有先查詢,也送了一個 :oops: )。

其實 eAccelerator 0.9.6 在 2010 年 2 月初就已經釋出了,可是,從 changelog 看來,很多不錯的功能被砍掉(反璞歸真?):

Changes in this version:

* Support for PHP 5.3.
* The encoder is removed
* The user cache functions are removed
* The session handler is removed
* The minimal PHP version supported is now 5.1
* Some internal refactoring to clean up the code
* Fixed some bugs (and probably added some)

這麼看來,2008 年的這篇文章的參考價值就低了些...
為了滿足我自己的好奇心,就把 APC 3.1.3p1 裝起來測試看看。

系統/硬體:

  • CPU: Intel(R) Pentium(R) 4 CPU 3.00GHz
  • Memory: 6G(DDR2 800 MHz, Dual-Channel)
  • FreeBSD 8.0-RELEASE-p2 amd64
  • Apache HTTPD 2.2.14
  • PHP 5.3.2

設定:

  • eAccelerator 0.9.6:
    eaccelerator.shm_size="128"
    eaccelerator.cache_dir="/tmp/eaccelerator"
    eaccelerator.enable="1"
    eaccelerator.optimizer="1"
    eaccelerator.debug="0"
    eaccelerator.log_file="/var/log/eaccelerator.log"
    eaccelerator.name_space = ""
    eaccelerator.check_mtime="1"
    eaccelerator.filter=""
    eaccelerator.shm_max="0"
    eaccelerator.shm_ttl="0"
    eaccelerator.shm_prune_period="0"
    eaccelerator.shm_only="0"
    eaccelerator.compress="1"
    eaccelerator.compress_level="9"
    eaccelerator.keys="shm_and_disk"
  • APC 3.1.3p1:
    apc.enabled=1
    apc.shm_segments=1
    apc.shm_size=128
    apc.ttl=7200
    apc.user_ttl=7200
    apc.num_files_hint=1024
    apc.mmap_file_mask=/tmp/apc.cache
    apc.enable_cli=1

測試結果(ab -c5 -n500):

Pure PHP eAccelerator APC
WordPress 2.9.2 3.00 req./sec.
332.834 ms/req.
7.61 req./sec.
131.487 ms/req.
8.87 req./sec.
112.750 ms/req.
MediaWiki 1.15.3 1.81 req./sec.
552.822 ms/req.
2.75 req./sec.
363.124 ms/req.
5.93 req./sec.
168.580 ms/req.
Gallery 2.3.1 3.51 req./sec.
284.979 ms/req.
7.91 req./sec.
126.421 ms/req.
7.38 req./sec.
135.506 ms/req.

依照結果看來,APC 3.1.3p1 的確略勝 eAccelerator 0.9.6。 8)
可惜的是.. Xcache 目前的最新版本(1.3.0)沒辦法在 PHP 5.3 跑...

Technorati Tags: , , , , ,

(Visited 3128 times)
Mar 07

這是前陣子在寫 Plurk Bot 時發現的問題。

因為 FeedBurner 已經被 Google 買下了。
所以,FeedBurner 會以「http://feedproxy.google.com/.....」這種 URL 進行 HTTP 重新導向,使瀏覽器連結到「http://原始URL/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A......」這種頁面。

若是部落客用 FeedBurner 把放在 Xuite 上面的部落格 RSS/Atom feed 燒起來,而訂閱者透過 feedproxy.google.com 連結到文章頁面時,得到 HTTP 400 Error 的頁面(只有第一次被重新導向時,是正常的)。

會得到 HTTP 400 Error 頁面的原因是...
經過第一次的瀏覽後,瀏覽器的 cookie 被塞入兩個值,而 Xuite 無法正確解析瀏覽器的 cookie。

目前使用者自行排除問題的方式是拒絕 Xuite 存取瀏覽器的 cookie。

Technorati Tags: , , ,

(Visited 3493 times)
Feb 02

這幾天,我的噗浪河道上,除了 Apple iPad 之外,也出現了一些關於 CNNIC 根憑證的噗。
基於中國大陸政府的黑暗與邪惡,以及中國網路界的「和諧」作風,我決定把 CNNIC 的根憑證移除掉,順便把移除方法貼出來。

  • IE(Internet Explorer):
    Remove CNNIC root certificate from IE
  • Firefox(聽說 3.6 有。因為我在用的附加元件尚未完全相容,所以我還在用 3.5.7):
    Remove CNNIC root certificate from Firefox

2010/02/02 23:37 UPDATE
另有 MacOS 與 Linux 的移除教學文,有需要的請參考以下連結:

Technorati Tags: , , , ,

(Visited 7570 times)
Jan 07

Javascript 提供了 For ... In ... ,我用的還蠻高興的(雖然我很少撰寫 Javascript)。
今天遇到某種特殊需求,我才發現這個迴圈語法並非萬能。

從 array 裡隨機挑出不重複的值有兩種情況,一種很單純,For ... In ... 迴圈可以處理的很好:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x;

while(fruits.length > 0) {
	var r = Math.floor( Math.random() * fruits.length );
	var n = fruits[r];
	document.write("Choosen[" + r + "]: " + n + "<br />");
	document.write("Array: " + fruits + "<br />");

	for(x in fruits) {
		if (fruits[x] == n) {
			fruits.splice(x, 1);
		}
	}
}

若是 array 裡面已經存在重複的值,而且 array 的資料的來源不方便控制(例如是 HTML 裡面的 li 物件),For ... In ... 這種方便的迴圈語法就必須放棄,改用傳統的 for 迴圈:

var fruits = ["Banana", "Banana", "Orange", "Orange", "Banana", "Apple", "Apple", "Orange", "Mango"];
var i=0;

while(fruits.length > 0) {
	var r = Math.floor( Math.random() * fruits.length );
	var n = fruits[r];
	document.write("Choosen[" + r + "]: " + n + "<br />");
	document.write("Array: " + fruits + "<br />");

	for(i=0; i<fruits.length; i++) {
		if (fruits[i] == n) {
			fruits.splice(i, 1);
			i--;
		}
	}
}

Technorati Tags: , , ,

(Visited 6423 times)
Jul 18

這兩天在處理 RoundCube 的郵件中文夾檔問題。
原本覺得情況很詭異,因為 Firefox 都很正常,可是 IE 有這兩種狀況:

  • 直接以左鍵點選,中文檔名的附帶夾檔無法下載。
  • 以滑鼠中鍵(開新的 Tab),就正常了。

坦白說,RoundCube 的程式架構實在很難摸,所以追了蠻久的..

我幫忙追問題的 RoundCube 版本是 0.1-STABLE 。
最後追到的解法是去修改 program/steps/mail/get.inc , diff -u 生出來的檔案內容是這樣:

--- program/steps/mail/get.inc.orig     2008-07-18 02:01:46.000000000 +0800
+++ program/steps/mail/get.inc  2008-07-18 15:45:37.000000000 +0800
@@ -106,9 +106,19 @@
       }
     else
       {
-      header(sprintf("Content-Disposition: %s; filename="%s";",
+       $HTTP_USER_AGENT = $_SERVER["HTTP_USER_AGENT"];
+
+       if (strstr($HTTP_USER_AGENT, "compatible; MSIE ") !== false &&
+            strstr($HTTP_USER_AGENT, "Opera") === false) {
+             header(sprintf("Content-Disposition: %s; filename="%s";",
+                     $_GET["_download"] ? "attachment" : "inline",
+                     $part->filename ? rawurlencode(abbreviate_string($part->filename, 55)) :
+                                       rawurlencode("roundcube.$ctype_secondary")));
+       } else {
+             header(sprintf("Content-Disposition: %s; filename="%s";",
                      $_GET["_download"] ? "attachment" : "inline",
                      $part->filename ? abbreviate_string($part->filename, 55) : "roundcube.$ctype_secondary"));
+       }

       // turn off output buffering and print part content
       $IMAP->get_message_part($MESSAGE["UID"], $part->mime_id, $part, true);

關鍵就在... 給 IE 吃的話,要先用 rawurlencode() 處理一遍。 XD

Technorati Tags: ,

(Visited 9626 times)
Jul 12

忘記從什麼時候開始(好像是我的 Firefox 升級成 3.0 ? :roll: ),Google Reader 常常變成這種畫面:
Google Reader Error
感覺像是被踢出來了一樣... =_=b

而且,登入時要看運氣,有時得登入個 2~3 次...

相同的瀏覽器(Firefox)視窗,不同標籤頁的 Gmail 都沒事,就 Google Reader 有問題。
真詭異啊~ :-?

Technorati Tags: , ,

(Visited 8326 times)
Apr 09

上週一,有幸出席露天拍賣營運長,葉奇鑫先生的演講。
演講內容非常豐富與生動。

而我在演講後,私下跟他提及網拍隱私的問題,這點是許多人疏忽掉的部份。
講白話一點,就是目前的網拍的使用者評價頁,可以看到這個人買過什麼、賣過什麼。
如果商品標題中包含了一些詳細的說明,大家可以從相關資訊頁面得知那個人的特殊癖好,罩杯^H^H體型大小。

他在演講中提到,露天拍賣每週都有個新功能上線。
所以,他當場回覆說,露天會在這週解決這方面的問題。
剛才搜索了一下, 4/7 晚上九點已有網友在網路上提到這個功能了
系統功能頁面在此

看看 Y 拍啥時跟進吧! :cool:

Technorati Tags: ,

(Visited 7150 times)
Dec 05

剛剛在看 MMDays 時,赫然發現他們的文章標題下面有個簡煩轉換的 javascript link。

研究了一下他們的網頁原始碼之後,動手移植到我這邊玩玩看。 :oops:
在我這裡,連結被我放在右邊 sidebar 的上頭。

在這邊分享一下移植方式(假設使用的這個 javascript 的網址是 http://blog.tw),順便作個紀錄。
移植的步驟大致如下:

  1. 抓取 javascript,在 MMDays 那邊的連結是 http://mmdays.com/wp-content/themes/mistylook/scripts/tw_cn.js ,我這邊的連結是 http://www.joehorn.idv.tw/tw_cn.js(可以用 fetch、wget 抓)。
  2. 將抓到的 javascript 放在你想放的網頁目錄(接下來的說明是假設放在網頁根目錄下)。
  3. 在網頁的 與 之間放入這串 HTML code:
    <script language="javascript" src="http://blog.tw/tw_cn.js" type="text/javascript"></script>
  4. 在你想放置轉換連結的地方加入這串 HTML code(當然啦,呈現方式可以自己改,「<a id=...>」這個部份別動到就好):
    将网页转换为<a id="translateLink"><font color="blue">简体</font></a>
  5. 在網頁末端的 </body> 上面加入這些 HTML code:
    <script type="text/javascript">
    var defaultEncoding = 1;
    var translateDelay = 0;
    var cookieDomain = "http://blog.tw/";
    var msgToTraditionalChinese = "繁體";
    var msgToSimplifiedChinese = "简体";
    var translateButtonId = "translateLink";
    translateInitilization();
    </script>

注意:HTML code 裡面的「http://blog.tw」記得換成自己的網址啊!

我不是很清楚這樣有沒有侵犯到 MMDays 的權益,而且我在他們的部落格上面也找不到他們的 E-Mail 位址。 :-?
如果本文有冒犯之處,歡迎大家留言回應,或是寄信跟我說,我會儘快把這篇文章封進水泥桶,丟到高雄港... orz

當然啦,有用到的人記得感謝 MMDays (或是原作者)哦。

Technorati Tags: , , ,

(Visited 3563 times)
Nov 10

這幾天接了一個 PHP 的系統要作,為了防止 Spambot,必須加入視覺驗證碼。

在眾多視覺驗證碼的 solution 中,我第一個想到的就是 reCAPTCHA

不過,根據以前用過的經驗,reCAPTCHA 還沒有多國語言支援的能力。

我看了一下他們給的 PHP library 跟 使用說明頁
很遺憾... 目前還是沒有支援多國語言。
reCAPTCHA 的 Forum 則是找到 這個討論串

雖然會擔心收到抱怨,不過依照目前的情況看來,只能先硬著頭皮上,然後靜待佳音了。
回覆 那個討論串 的文章催促一下,進度會不會比較快呀? XD

Technorati Tags: , ,

(Visited 1830 times)