MySQL UDF (User-defined function) 與 memcached

以往 + 的作法是由 application 端「拉」資料後再塞到 memcached 上,這會產生幾個問題:

  • 資料不同步:MySQL 上的資料更新了,但 memcached 裡的 cache 因為還沒過期而尚未更新。
  • 第一次的 Race Condition:同時有很多 client 向 memcached 要一份目前還不存在的 cache,這時候這些 client 都會跑到 MySQL 要資料再放一份到 memcached 上。

這兩個問題都有在 MySQL UDF + memcached 出來之前都有解法:前者可以在更新 MySQL 時順便更新 memcached 裡的資料;後者可以靠 memcached lock 的技巧避免突然有大量 Query 造成後端 MySQL 負荷過重。這兩個方法需要 application (client) 配合,不是很完美,但在實際應用上還算堪用。(一個很簡單的場景:如果公司內同時使用 ,那麼就必須維護這兩個 library)

除了 client 自己推資料到 memcached 上,也有人研究,當 MySQL 上的資料更新時,由 MySQL server 自動到 memcached 上更新資料,也就是把資料「推」到 memcached 上的方法。資料更新時的觸發動作可以用 做到,而寫入到 memcached 的部份透過強者的 處理:

btw, 也用 libmemcache 寫過類似的東西: 這篇的下方 (「MySQL and memcached」的部份)

從 Twitter 換到 Jaiku

因為 爛太久了,所以搬到被 買下的 ... (關於 Jaiku 可以參考這篇:)

另外,Jaiku 目前正搬移到自家的 上,如果 Twitter 再不趕快修好就沒機會了:

Update:才剛搬過去就看到這個... XD

Google App Engine 的收費,以及功能的加強

的訪談中跟 的 Product Manager 談到收費的金額:

Update 正式的新聞稿也可以在網站上看到了:

頻寬的費用與 差不多,儲存空間的部份跟 比起來也差不多,CPU 暫時沒有想到要怎麼比較。

除了收費的事情之外,文章裡有提到會多兩組功能,一組是對圖片的處理:目前不清楚 Google 是不是自己有另外開發,不過在自己建置的環境裡常用 處理。另外一組功能是 cache,讓你可以把算好的資料存起來重複使用。

再來是大家一直都很希望 Google App Engine 可以支援 以外的語言,不過照文章裡的說法,目前暫時沒有計畫。

以後應該有 Blog software 會 porting 到 Google App Engine 的環境上,以這種用多少算多少的方式,之後可以考慮把整個站搬到上面?

Google 提供 Javascript Library Hosting

公告了他們將會 hosting 幾個常用的 javascript library 讓人使用:

最簡單的方法就是把本來的程式碼:

<script type="text/javascript" src="http://static.example.com/jquery-1.2.6.min.js"></script>

改成 Google 提供的位置:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>

剛剛先把 所使用的 都更新改用 Google 提供的 hosting。

document.evaluate()

最近在翻一些 script 的時候翻到 上可以使用 ,才發現之前用 做這種小事情很不划算...

在 Firefox 上可以透過 document.evaluate() 條件式找出符合的元素。利用這個功能取代本來用 jQuery $('.className') 還蠻容易的,等有力氣的時候來改寫 album expander... :p

Unbound

是一個 DNS resolver (接受 recursive query 的 DNS server),最近出了 1.0.0 版,在 上被提出來:

首先是軟體授權條款,Unbound 與 都是 open source project,BIND 是 ,Unbound 是 ,兩種授權都很簡短,而且也很清楚。

設定上,BIND 需要設定才能處理 recursive query,雖然很簡單 (設定 allow-recursive 這個參數),但相較於 Unbound 預設值就會動 (unbound.conf.sample 直接拿來用) 就有點不太爽 :p

穩定度的部份,在 Slashdot 上的文章有人提到用 BIND 當 resolver 不太穩定,這點我自己用偶而也會遇到 (對 recursive query 沒有回應)。趁 Unbound 1.0.0 有人推薦的時候決定拿幾台純 resolver 的伺服器試看看...

上安裝的時候有看到 的選項可以選,不是很確定他拿 Libevent 做什麼用途。

目前裝起來後用起來都還蠻正常的,觀察一陣子看看。

Git 與 Subversion 的結合

同上篇文章,因為 連不上,所以只好寫成 Blog 胡言亂語...

昨天 講了「」,在台下聽的時候順便試 git-svn (或 git svn) 的操作,發現效能比 好許多,而我想要的功能在 上面也都有了,那麼... 也沒什麼好說了,先把手上幾個工作目錄換成 Git :p

回到家把雜事處理完後 (主要是玩 ?),打開 消化一整天沒讀的 feed,發現 也發了一篇「」跟 jserv 的主題還蠻有關係的。

雖然 使用 ,但仍然可以透過 Git 操作,操作的方式在 的文章裡寫的很清楚了。如果對於 Git 不熟的人,我建議先看「」這篇中文的 blog 文章,裡面的例子直接照做就會動。

今天上班的時候再測試看看 performance,把 1.5.2 整包塞進去會花多久 :p

YouTomb:被 YouTube 下架的影片

,是 所架設的服務,蒐集 上因為版權侵權而被下架的影片。

看完這個網站做的事情後,第一個反應式「這個名字取的真機車」,第二個反應是「這不會被 幹掉嗎」。但翻了一下,發現網站的 source code 有以 釋出,擺明就是「如果我們被抄了,其他人趕快拿 source code 去 clone 一個」XD

在狀態頁還有相當完整的統計,會指出哪些版權擁有團體下架的最多... 第一名居然是 TV TOKYO Corporation,我本來以為會是美國公司...

PS:會寫在 Blog 上的原因是因為 爛掉了,不然我只打算丟幾句話在 twitter 上的... :/

Zend Framework 1.5.2

1.5.2 正式釋出了,由於 是 1.5 才納入,所以 1.5 有很多 bug 是在修正 Zend_Form。

像是「」中提到的 setRequired() 問題在「」被解掉了。

1.5.2 修正的問題,以及改善的地方,可以在「」這頁看到。

這幾天發現沒有 Zend_Form_Element_File,查了一些討論發現發展團隊似乎要等 Zend_Upload 的架構先出現才要實做 Zend_Form_Element_File,看起來這幾個月內是沒這東西了,先自己寫一個會動的版本... @_@