2012/05/27

md5 & raw binary format

直接看 code 吧:
$str = "hello world";

$m1 = md5($str);
$m2 = md5($str, true);
$m3 = pack("H*", $m1);
$tm = unpack("H*", $m2);
$m4 = $tm[1];

echo $m1 . PHP_EOL;  // 5eb63bbbe01eeed093cb22bb8f5acdc3
echo $m2 . PHP_EOL;  // ^?;???Г?"??Z??
echo $m3 . PHP_EOL;  // ^?;???Г?"??Z??
echo $m4 . PHP_EOL;  // 5eb63bbbe01eeed093cb22bb8f5acdc3

// $m1 == $m4
// $m2 == $m3

Git Hosting: GitHub vs BitBucket

GitHub 和 BitBucket 共有特點
  • unlimited public repositories: 公開的 repositories 沒有數量限制。
  • unlimited public collaborators: 公開的 collaborators 沒有數量限制。
  • wiki
  • issue
GitHub 特點
  • 依據 private repositories 數量作為收費基準。免費版不提供 private repositories,付費版最少每月 $7 美金可以有 5 個 private repositories。
  • 提供企業解決方案,可擁有專屬的 GitHub server(當然,是虛擬主機,不是實體主機)。
  • 使用人數多。
BitBucket 特點
  • unlimited private repositories: 私有的 repositories 沒有使用限制。
  • 依據 private repositories 的 user 數量作為收費基準。免費版可以有 5 個 users,付費版每月 $10 美金可以有 10 個 users。
小結
  • 以成本考量,如果需要 private repositories,BitBucket 是比較好的選擇。
  • 若是開源專案,放在 GitHub 上可以有較多的 follower。
  • 企業使用可考慮 GitHub Enterprise 方案,畢竟有一臺專屬的 GitHub server 安全性會比較高。
收費說明頁面

2012/05/16

s3cmd 的 RequestTimeTooSkewed 錯誤訊息

server 上存取 s3 的 script 突然掛了,除錯時發現執行 s3cmd 會出現以下錯誤訊息:
> s3cmd ls s3://mybucket/foo/lalala/
ERROR: S3 error: 403 (RequestTimeTooSkewed): The difference between the request time and the current time is too large.
爬了一下文,發現原因是出在 server 的時間跑掉了,有網友說容錯時間差約在 15 分鐘內。這台 server 時間慢了快半小時,難怪會有問題。用 ntpdate 校正一下時間就 ok 了。

2012/05/01

[Titanium Mobile] 取得 iOS 下的檔案大小

直接用 Titanium.Filesystem.File 的 size 屬性就可以了。
var file = Ti.Filesystem.File(Titanium.Filesystem.applicationDataDirectory, 'test.png');
Ti.API.info('file size is ' + file.size);