IM+

iPhone の app「IM+ Lite」を試してみた。と言っても、興味は「サーバに直接つなぐか否か?」だけ。結論は ×。残念ながら別のサーバを介して接続してた。

テスト環境
  1. MacBook Pro の共有で、
    • 共有する接続経路を「Ethernet」
    • 相手のコンピュータが使用するポートを「AirMac」
    にして、iPhone から Wi-Fi で MacBook Pro に接続する。
  2. その状態で en1 を Wireshark で監視する。
テスト結果
  1. IM+ を起動するとまず、igate1.shapeservices.net と sar2.shapeservices.net の名前を索く
  2. sar2 に http で接続し /regServer/registration を GET する
  3. igate1 に接続し(なぜか接続先ポート番号は 443 (HTTPS)なのに SSL は使ってない)、IMEI とか送ってる (符号化されてる風)
  4. すると igate1 がその次に接続する代理サーバの IPアドレス とポート番号を返してくる (「Rdr ip(x.x.x.x m) port(nnnn)」)
  5. もう一度 sar2 の /regServer/registration を GET する (多分、ここまでで IM+ 的セットアップが終了)
  6. 先に取得した代理サーバへ接続する (SSL 等は使っておらず、プロトコルも平文)
  7. 設定した接続情報が代理サーバへ送られる (サーバ名、ユーザ名、パスワード、SSL 使用の有無など。これも平文。符号化はされてる風。)
  8. (代理サーバがログイン後)buddy の情報が平文で送られてくる (SSL 使用の有無に関わらず)
というわけで、
  • パスワードが第三者(IM+ の運用者)のサーバへ送られる
  • SSL されてない
の2点から落第点。(テストに使ったサーバでのパスワードは変更しといた)

しかし、ユーザ名・パスワードを入力させる app は、その扱いがどうなってるか、もっと明記して欲しいものだ…。

Re: GNU diffの地味だけど便利な機能

http://0xcc.net/blog/archives/000208.html
を試してみた。side-by-side は確かに便利な時がある。
残念ながら --strip-trailing-cr は 2.7.3 からでした > http://bit.ly/FPllw
> diff --version
diff - GNU diffutils version 2.7
> cat a
0
1
2
3
a
b
c
> cat b
1
4
3
a
B
c
d
> diff -u a b
--- a Sat Feb 21 22:43:52 2009
+++ b Sat Feb 21 22:43:58 2009
@@ -1,7 +1,7 @@
-0
1
-2
+4
3
a
-b
+B
c
+d
> diff -W10 -y a b
0 <
1 1
2 | 4
3 3
a a
b | B
c c
> d
> diff --suppress-common-lines -W10 -y a b
0 <
2 | 4
b | B
> d
>

大規模サービスの運用事例 (抜粋)

http://blog.hacklife.net/archives/51788873.html の各リンク先をざーっと読んでみた。
(わりと古い情報も多い。05-08 の情報。)

YouTube (Apr 07)
  • キャッシュの有効利用
  • IO の徹底的な並列化の追求
    • 大きなディスク少し vs 小さなディスクたくさん
  • 独自レプリケーションシステム

livedoor
  • 1ラック60台@3kVA
  • ディスクレス
  • BGP4のTEには限界がある
  • multimaster DB
  • 「ここの負荷が上がるようならここを増強する」というポイントを意識しておくとスケールしやすい構成が組める
  • データ転送 <<<< その他の処理 (レンダリングとか)
  • 平均値はあてにならない (平均 0.2秒、MIN 0.1秒、MAX 240秒)
  • チューニングはクライアントサイドとサーバサイドの両輪
  • 10万件のデータのソート → ユーザが必要としてるのは先頭の10件

hatena
  • LVS + keepalived
  • CPU負荷のスケーリングは簡単、I/O負荷のスケーリングは難しい
  • 現在のコモディティ:8GB~16GB (as of Nov 08)
  • テキスト走査と転置インデックス

LiveJournal
  • run in parallel ?
  • common resource causing blocking
  • partition datase (can't join but never mind)
  • InnoDB: fast as hell
  • MogileFS

flickr
  • Unicode for all (really easy)
  • UTF-8 is 7-bit transparent
  • port exhaustion: 64,511 ports/120 sec port ~ 535 max concurrent connections per IP
  • Always RAID10 (w/ battery backup for write caching or no caching at all)
  • 15K drives >>> 10k drives

twitter
  • ユーザごとにデータを重複して持たせることが、この問題に対する解法のひとつだ。
  • データ更新のタイミングであらかじめ必要なデータを非同期に構築しておく (GREE)

eBay
  • Scale Out, Not Up
  • Virtualize Components
  • WindowsNT/IIS
  • J2EE
  • Impact of Latency
  • Partition Everything, Async Everywhere, Automate Everything, Remember Everything Fails

del.icio.us
  • SQL でスケーリングするのではなく、データを複数マシンに分散させる方法を考慮すべき

Pathtraq
  • 32GB-64GB per server is today's sweet spot (memory)
  • search in compression form

Gree
  • 複数のサービスでの機能連携は前提にしておいたほうがよかったなぁ
  • slow-logをみてEXPLAINしてみたり
  • 各ウェブサーバでちょっとずつソースコードが違う。衝撃。(笑)

mixi
  • 水平分割(機能)と垂直分割(ユーザID)
  • Partition map for level 2: Manager based and Algorithm based
  • マシンのメモリが4GBあるにも関わらず,割当を3GBとしているのは,これ以上の割当を行うとメモリがswapする恐れがあるためです。

っていうか、MySQL ばっかだな。

facebook by Adium

Adium で facebook chat がサポートされてた。けど、今他にオンラインの人がいないからどんな風に見えるのかよく分からない。

よつばと8

おもしろかった!ツボすぎる。
同期の子供とかリアルよつばとらしい。
うらやましい…。新刊待たなくていいんだもんな。

WDS (Windows Desktop Search)

WDS (Windows Desktop Search) で検索時に検索対象フォルダを指定する
には「フォルダ:フォルダ名 検索語句」とすればよい。
「フォルダ名」を含むフォルダ以下にあるファイルが検索対象になる。
なお、「フォルダ名:フォルダ名 検索語句」は意味が違うの
で注意。

Google Calculator

Google Calculator のメモ
1GB in MB : 1 gigabyte = 1024 megabytes
1GB in 1 day : N/A
1GB / 1 day : (1 gigabyte) / (1 day) = 12.1362963 kBps
1 GB / 1 day : (1 gigabyte) / (1 day) = 12.1362963 kBps
1 gb / 1 day : N/A
1gb / 1 day : N/A
1 GB / 1 Day : N/A
1 GB / 1 DAY : N/A
case sensitive なのがカワイイ。(まぁ、kbps と kBps が違うんだから当たり前かもしれないが)

駅探

到着駅の下を引っぱったら経由駅が指定できるようになった! (2ch
より)

iPhone板TIPS

初心者用 iPhone まとめ @wiki - iPhone板TIPS
http://www33.atwiki.jp/iphone/pages/27.html

Tips#13 全文引用を避けたい
→ SHIFT+DELで全文削除

Tips#14 3G経由時のYoutubeの再生画質をWi-Fi経由並みに上げたい
→ Truveo Vedeo Search

は知らなかった。