Google App Engine

幾天前就一直有消息, 打算要把 的服務拿出來給大家用。結果拿出來的餅比預期的更大,直接幫你 Hosting 整個服務:

Google App Engine 目前以 為語言 (更仔細的說,是以 為參考的標準,所以有用過 Django 的人會蠻熟悉的),後端則是以 與 BigTable 支撐整個系統。Hosting 的服務以 appspot.com 這個獨立域名避免 Cookie 與 XSS 安全性的問題,看起來是呼應 blogspot.com。

昨天一睡醒看到有一萬個人的註冊限制,就先丟進去註冊,出門到公司就發現已經申請到了。

另外,這個系統有一些限制:500MB storage、200M CPU cycle/day、10GB bandwidth/day,這個量對於自己玩看起來是沒什麼問題,等到收費後要看看價錢到底如何。

在開始玩之前,看看 可以知道 BigTable 可以做到的事情,其實還蠻有趣的,像是不支援「!=」... XD

Update:在「」這篇裡面有後台的畫面,可以看到相當多資訊!

參考:

ImageShack 的 BitTorrent 下載服務

這篇看到 開始提供 下載服務了。

看了一下介面,把 torrent 檔傳上去後就會開始抓,另外一個比較特別的功能是選擇下載的檔案 (在 Windows 上的 BitTorrent 軟體還蠻常見的功能)。開 同時抓可以看出用的是 1.10。目前服務在 beta,有兩個 15GB 的限制,一個是空間,一個是每個月的 HTTP 下載流量,在正式上線後可能會有修改。

丟了一個 torrent 上去測,下載到 ImageShack 的速度好像還蠻快的,不過我沒測完 :p

Zend_Json + Zend_Config + Zend_Db

如果使用 放設定檔,這「可能」是一個比較好的解法:

public function __construct()
{
    $j = file_get_contents(dirname(__FILE__) . '/db.json');
    $conf = Zend_Json::decode($j);
    $conf = new Zend_Config($conf['Db']);
    $this->rDb = Zend_Db::factory($conf->rDb);
    $this->wDb = Zend_Db::factory($conf->wDb);
}

參考:

升級到 WordPress 2.5 的注意事項

剛剛幫別人升級時注意到的,wp-config.php 裡有一段註解是要你設定 SECRET_KEY,看起來是為了當作 private secret 用:

// Change SECRET_KEY to a unique phrase.  You won't have to remember it later,
// so make it long and complicated.  You can visit https://www.grc.com/passwords.htm
// to get a phrase generated for you, or just make something up.

設完後會需要重新登入

Zend_Db 的例外處理

照 Manual 所列出來的功能, 似乎沒有提供 的功能,所以就得自己做了。

正常的作法是自己寫 SQL query 處理,但我想到的方法就是先 ->insert(),如果失敗再 ->update()。拆開來的這兩個動作會使得 多花不少 CPU resource,但我暫時不想自己寫 SQL Query (主要是因為嫌 escape 麻煩),先放個 XXX 等以後再 tune。

問題在 ->insert() 後如果遇到 Duplicate 會丟出 Exception,用 try-catch 的方法我不是很喜歡,但稍微翻過 Zend_Db 的 code,似乎沒辦法改成 return status,所以就只好用 try-catch 處理。這應該是跟底層的 有關,Zend_Db 只是在中間的介面。

如果還有遇到其他問題就繼續寫...

Zend_Db 的參數 (與 Zend_Config、Zend_Json)

::factory() 可以吃兩種語法,第一種是用兩個參數指定所有的資訊,像這樣:

$params = array('host' => 'localhost', 'username' => 'my_username', 'password' => 'my_password', 'dbname' => 'my_database');

$db = Zend_Db::factory('pdo_mysql', $params);

第二種是吃一個參數, (或者繼承他的 class):

$conf = Zend_Config_Ini('filename.ini');
$db = Zend_Db::factory($conf);

如果想把資料庫設定放在檔案裡,再用 Zend_Config 讀進來傳給 Zend_Db,目前官方有 兩種方法,不過這兩種方法我都不喜歡,用 找 "Zend_Config_Yaml",沒有什麼人在研究這個 (在是有看到一份,不過沒看到其他人用的心得)。

於是退而求其次,用 讀進來後用第一種方式傳進去。

PIXNET Album Expander

除了幫寫以外,也幫自己公司 () 寫 Album Expander,這樣我自己看圖片才方便 XD

這隻程式請配合 服用:

另外在 trace DOM 的時候有一些感想,照片的部份全部都是 ul + li,再用 CSS 做出來的,當初設計這個 Template 的人不賴啊 XD

Update:修正了兩個問題,第一個是 今天一直噴 502 而讀不到 ,所以只好用 code.jquery.com。第二個是修正相本 .thumgBox 與 .thumbImg span 裡設定 width/height 時會產生的 bug。

部落格觀察

都是小圖,看不清楚的可以點回 的頁面看到大圖。

我不曉得依照這個規則是怎麼算出比還要高分:(原出處:部落格觀察貼紙各式說明)

下面這張是依照「Page 總分」排序,彎彎在第九名,第七名是 Gene,第八名是 Wildcat,第十三名是 askareiko,剛好是部落格觀察的「GAW」,這個「排行榜」的公信力大家自己心中應該有數。

Zend Framework 的 Zend_Db

這個週末都在研究 的用法,然後套用到新的系統上。

的三個架構裡,Controller 透過 .htaccess 配合,效果還算可以。View 目前是用 ,不過會看情況改用 或是 ,基本上都沒什麼問題。

最大的問題在於 Model: 的功能看起來很多 (在說明文件的份量裡,算是相當厚的一個模組),但實際上有不少缺陷沒辦法光靠 Zend_Db 目前內附的模組解決,需要自己寫 Adapter 處理。在沒時間研究 Zend_Db 的 Adapter 怎麼寫的情況下,只能先把他當作非常小的 使用。

Zend_Db 主要的兩個問題是:Master-Slave 時讀寫必須分開,以及多台時 Failover 及 Load sharing 的處理。雖然這兩個問題都可以用 解決,但我不是很喜歡 MySQL Proxy 的解法,所以...

Anyway,目前該解決的都解決掉了,如果有遇到其他的模組不好用,我再寫文章抱怨好了... XD