用 RVM 安裝 Ruby 1.9.3

為了跑 heroku 才剛裝完 1.9.2,就看到 TwitterGoogle Plus 有人說 1.9.3-p0 出了:「[ANN] Ruby 1.9.3-p0 is out」。

首先先用 rvm get head 更新,然後用 rvm list known 應該就可以看到 1.9.3-p0 了,接下來用 rvm use --default 1.9.3 將預設值換成 1.9.3,然後 gem install heroku 把 gem 裝起來...

Mixpanel 從 AWS 搬到 Softlayer

Mixpanel Engineering 上提到 MixpanelAWS 搬到 SoftLayer:「Why We Moved Off The Cloud」。

去年差不多的時間,Mixpanel 從 Rackspace Cloud 搬到 AWS:「We’re moving. Goodbye Rackspace.」。

每次換的原因都很簡單,就是成長時會遇到問題,然後本來至這家必須用 hack 去堆解法,總是會有一天堆到沒辦法解,或是堆到有人受不了。然後就換到更彈性的方案。

因為 Mixpanel 去年遇到 Rackspace Cloud 的儲存空間限制 (620GB 限制),以及需要更彈性的機器種類 (有些服務需要記憶體,像是 cache server,而有些則是偏向 CPU,像是 web server,有些則是兩者都需要,像是 database server),所以從 Rackspace 搬到 AWS。

用了一年的 AWS,接下來今年遇到 performance 問題 (尤其是 I/O performance),所以決定從 AWS 搬出來換成 SoftLayer 的 dedicated hosting service。因為可以客製磁碟的種類與數量。

至於這兩次搬遷所提到的其他原因看起來只是附帶順便提出來,應該不是主要的問題。

接下來。如果 Mixpanel 變得更大的話應該是 colocation 吧。dedicated hosting 可以提供機器以及基本的網路服務,如果要比較特殊的設備 (Load Balancer、VPN、Firewall、NAS、SAN、whatever...),遇到沒有提供加值服務的就得改轉成 colocation 自己採購 server 了...

PHP 5.3 的 anonymous function

在看到 PHPConf Taiwan 2011 的議程介紹後,看到有人在推薦 Slim Framework,一連上去就看到包含 anonymous function 的 sample code:

<?php
require 'Slim/Slim.php';
$app = new Slim();
$app->get('/hello/:name', function ($name) {
    echo "Hello, $name!";
});
$app->run();
?>

然後回頭去翻 PHP 的說明:「Anonymous functions」,發現是從 PHP 5.3 開始支援。

於是在 JavaScript 上常用到的技巧就也可以在 PHP 上用了:(不影響到全域變數與函數空間的方式)

// JavaScript
(function(){
    // ...
})();

// PHP
call_user_func(function(){
    // ...
});

接下來是繼續測試 Slim Framework 了,看起來算是一個不錯的小東西... 之後拿來配合 Heroku 這類的 PasS 快速開發應該會很好用 :o

Heroku 上跑 PHP 的心得與感想...

Heroku 不愧是 PaaS 中的領先品牌,deploy 的操作及穩定性都相當好,加上 Heroku 每個 project 都有 1 free dyno 可以使用,對於 prototyping 其實相當棒...

關於要怎麼在 Heroku 上跑 PHP,可以參考 xdite 寫的「Create PHP application on Heroku without Facebook account」這篇文章。

有幾個要抱怨的:

  • PHP 是用 Apache HTTP Server 跑的,所以可以用 .htaccess 寫 rewrite rule,不過 Options -Indexes 居然會 500 (因為 AllowOverride 沒開給使用者用),這個設定看起來沒有什麼 issue,應該是 Heroku 還在摸索這塊...
  • 沒有 ImageMagick,只有 GD,而 GD 居然沒支援 JPEG,這是要讓人怎麼用...
  • phpinfo() 看到支援的 module 有點少...

這些問題其實還蠻大的,不過,應該有機會改善... 應該... 應該...

把 GitHub 上的 private repository 搬到 BitBucket 上...

既然 latency 都差不多 (兩個 site 從台灣過去都要 200ms),git push 速度感覺起來也差不多,找不到理由要付錢給 GitHub,加上 private repository 裡面也沒什麼特別的東西,剛剛就都改丟到 BitBucket 上面,然後把 GitHub 的付費機制 cancel 掉...

步驟很簡單,在 BitBucket 上開好 private repository,然後把 .git/config 裡面的 origin 換掉後重新 git push -v origin master 就好了。

參考:

INN 裡 mailpost 需要修正的部份...

上個禮拜把 Group.NCTU.edu.tw 遠端升級到 7.4-RELEASE (從 6.4-STABLE),但有人寫信反應,從 Ptt 透過信件貼到板上會失敗,找不到之前 patch 的重點,只好從頭開始一個一個解,總算是解決了:

  • 當信件內沒有 Date header 時,mailpost 會送出錯誤的 Date 欄位。目前的解法是直接不送 Date 欄位。
  • 當同一封信件寄到不同信箱時 Message-ID 會相同,不能直接帶入 newsgroup 中。目前的解法是無視信件內的 Message-ID,自己生一個。

現在這樣應該是正常了...

Ubuntu 下 Google Chrome 看韓文的問題

簡單來說,不要在 Ubuntu 下使用 Google Chrome + 文泉驛看韓文。

開始用 Ubuntu 11.04 當桌機的主力就一直這樣,看韓文版維基百科會出現這樣:

這幾天放假把筆電的 Ubuntu 升級到 11.10 最新版,發現問題還是一樣,重灌 11.10 beta2 後也還是一樣。因為新灌的機器所以就亂搞一通,意外發現切到英文語系後就正常,於是試著找原因,發現是 /etc/fonts/conf.d 下的 69-language-selector-zh-tw.conf 設定造成的。於是對裡面設定值 trial-and-error 後發現是 sans-serif 用了文泉驛,於是韓文就爆炸了...

這是拿掉後正常的樣子:

花了點時間總算能看懂一些 fontconfig 的設定...

維基百科全面支援 HTTPS (SSL)

維基百科在官方的 Blog 上宣佈,所有的服務都支援 HTTPS (SSL):「Native HTTPS support enabled for all Wikimedia Foundation wikis」,也就是說,像是「https://zh.wikipedia.org/wiki/Wikipedia:首页」這樣的網址都支援了。

除了 *.wikipedia.org 以外,*.wikimedia.org 也支援了,於是包括像是 upload.wikimedia.org 也都可以使用 HTTPS:(圖片取自 File:Minori-Chihara-Animelo-Summer-Live-2011-08-27-21-41.jpg)

當然,還是有一些 script 寫死用 http,接下來應該都會被修正...