jQuery 1.7 版,並計畫瘦身 jQuery...

jQuery 1.7 前幾天丟出來了,可以看到很多對 event 操作的改善,包括效能與功能 (新增了 .on().off()):「jQuery 1.7 Released」。

另外今天又看到瘦身計畫:「Building a Slimmer jQuery」,希望把一些「應該要拿掉」或是「應該要被修正」的問題處理掉... 所以在 jQuery 1.7 標為 Deprecation,預定在下個主版本就會處理掉這些問題。

目前 (對我家) 最主要的影響應該是 .live() 會被拔掉,以及之前有使用 .attr('value') 取 current value (要 current value 應該用 .val() 取得)。

看起來是往好的方面進行...

用 Nexmo 送簡訊

Twitter被丟了訊息,這類訊息通常就是看看而已... 但是連上去看了以後發現價錢相當便宜:「Nexmo - Pricing」,台灣的簡訊是每則 EUR$0.011,相當於 NTD$0.45...

Perl 寫了程式測,測了兩次都很快收到,大約五秒鐘內吧。不過發現中文還是有問題:(這是「中文測試」四個字)

丟回去給丟我 Twitter 的人了,不知道會不會解...

Update:是我程式的問題 (少了指定 type=unicode),不是對方的 API 有問題:

來把一些東西丟上去玩看看...

擋掉 Google Plus,加快 Google Reader 速度...

Google Reader 這次改版另外一個為人詬病的問題是「變卡」,主要原因是 Google Plus

第一個想到的解決是利用 Adblock Plus,將 http://www.google.com/reader/* 以及 https://www.google.com/reader/* 連到 https://plusone.google.com/* 的連線需求都都擋下來。但看了 Adblock Plus 的文件,不知道要怎麼設定...

後來想到的解法是自己寫 Google Chrome Extension,主要是很久沒寫都忘光了,剛好找個實際會用到的功能來寫... 主要是用到 chrome.tabschrome.experimental.webRequest 兩組 API 組合。其中後面這組 API 必須用 about:flags 打開權限才能使用。

成品在這:「google-reader-faster」,由於用到 Google Chrome 的 Experimental API 所以無法上傳到 Web Store,所以暫時先用 dev mode 把 extension 讀進來用。之後要來再研究看看 Adblock Plus 是怎麼做到的...

把 Google Plus 擋掉後用鍵盤快速鍵操作順很多 XD

在 iOS5 上面使用 mCool...

拿到 iPhone 4S 後到中華電信辦了 Micro-SIM,但 iPhone 沒辦法直接吃 mCool 方案上網 (APN 為 emome,APN Proxy 10.1.1.1:8080),得另外想辦法設定。

原來在 iPhone 4 的方法也可以在 4S (iOS5) 上面用,也就是「mCool專用iPhone設定檔 (不需JB)」這篇所提到的方法,裡面有一個 .zip 檔,解開後讓 iPhone 的 Safari 開裡面的檔案就可以了。我把檔案放在:「mCool.mobileconfig」。

記得要打電話請中華電信把 APN 為 internet 的連線權限關掉,這樣才不會收到奇怪的帳單。

Google Reader 改版,以及「自力救濟」的方法...

Google Reader 這次一改版後,在網路上可以看到一堆人抱怨到翻...

用「google reader site:userscripts.org」,然後設限 24 小時內更新的網頁,果然找到不少人試著用 Greasemonkey 寫了對應的 CSS 修改。目前看起來有兩個還不錯:

這兩個 script 在 Google Chrome 上沒問題 (沒測過 Firefox,所以不確定 Firefox 是否正常),安裝後 reload 看起來好不少...

工具類的網站還是要把空間留給資訊用,留白反而讓人不方便...

用 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