Monthly Archives: February 2011

Twitterでユーザの距離を測るツールを作った

最近プログラミングしたい気分真っ盛りなので、Twitterでフォローしている・されているユーザの距離を測るツールを作りました。

User Distance
http://distance.hirotaka.org/

過去2ヶ月程度にやりとりしたTweetを解析して、ユーザとフォローしている・されているユーザの距離を測定します。距離なのだけど、数字が大きい方が関係性が高いです。(数学苦手でうまくモデル化できてません。Follow, Mentionとかの数を集計して、重みをつけたスコアを対数取っているだけの適当モデルです・・。どなたか数学得意な人お知恵を貸していただけると助かります)

裏でクローリングしているので、使い始めだと直近数時間のTweetしか解析できないので、精度が悪いかもしれません。クロールされるのを待ってください・・。

実は似たような事をするAPIが有料であるのだけど、クエリー制限とかあったので作ってしまえと作ってしまいました。

Twitter Strong Links – Infochimps API
http://api.infochimps.com/describe/soc/net/tw/strong_links

ちなみにInfochimpsの結果はそれなりに精度高め。だけどちょっとあれ?っていう結果もあるからまぁ同じくらいかなと個人的には勝手に納得してる。

あとデザインとか全くできない・・・。(やる気もない説)

[続・続] DoCoMo + FaceTime

Carrier Bundleの編集が大変だというコメントをいただきましたので、debパッケージおよびCydiaのレポジトリを作成いたしました。

debパッケージの挙動およびその結果生じる損害などは一切保証いたしません。あくまでも実験目的でお使いください。また下のパッケージはすべてiOS 4.2.1にのみ対応しております。その他のバージョンでは動作いたしません。

レポジトリは http://nunnun.jp/repos/ です。

mopera.netおよび128k APNに関しては動作は一応確認しましたが、日本通信のSIMは持っていない為確認ができません。
またAPNをいじる場合、carrier.plistをいずれにしても編集する必要があります。 

[続] DoCoMo + FaceTime

PwnageTool 4.2がリリースされたので、DoCoMo+FaceTimeの具体的な手順を書いてみる。
Windowsでもできると思いますが、この手順はMac OS Xで行うことを想定しています。 

前回同様Jailbreakをするとサポートを受けられなくなる可能性があり、私はいかなる場合でも責任は負いかねます。[追記11.3.9]また国際SMSが送信されドコモから高額な請求がなされる危険性があり、そういった場合でも一切責任は負いかねます。

Jailbreak

方法はググってください。

必要なソフトをインストール

iOS 4以降(確か)はCarrier Bundleにはsignatureがついており、signatureが正しくない場合はCommCenterが正しく動作しません。それらを回避する為のパッチが出ており、4.2.1に対応したものが下記URLからダウンロードできます。

CommCenter Patch by wortel (4ALL4) Update (4.0 up to 4.2.1)

CommCenterのPatchはCydiaのrepositoryでもインストールできます。
cydia.iphonemod.com.brに含まれております。

またDoCoMo SIMの為に設定を変えるのでDoCoMo向けのCarrier Bundleをインストールすることにします。NTTdocomo Carrier bundleってやつです。

さらにこのNTTdocomo Carrier bundleは4.2.1で動かない為、ファイルを移動させる必要があったり後で内容を書き換えたりする必要があるので、OpenSSHもインストールします。くれぐれもrootパスワードをMobile Terminalなどで変更してから実施してください。一瞬でウィルスにやられます。

設定

インストールが終わったら、実際に使えるようにします。 

まずNTTdocomo Carrier bundleを正しい位置に移動します。SSHでiPhoneに接続し、docomo_jp.bundleおよび44010をiPhoneディレクトリに移動させます。

Pegasus:~ root# cd /System/Library/Carrier\ Bundles/
Pegasus:/System/Library/Carrier Bundles root# ls -al
total 8
drwxr-xr-x   4 root   wheel   170 Feb 18 00:33 .
drwxr-xr-x  37 root   wheel  1258 Feb 17 00:13 ..
lrwxr-xr-x   1 mobile staff    16 Feb 18 00:33 44010 -> docomo_jp.bundle
drwxr-xr-x   4 mobile staff   340 Feb 18 00:33 docomo_jp.bundle
drwxr-xr-x 176 root   wheel 15470 Feb 17 01:23 iPhone
Pegasus:/System/Library/Carrier Bundles root# mv 44010 iPhone/
Pegasus:/System/Library/Carrier Bundles root# mv docomo_jp.bundle iPhone/

ここで再起動してください。おそらくNTTdocomo Carrier Bundleが正しく動作してdocomoの画像ロゴになるはずです。(もしかしたらうごかないかも。動かなくても平気なはずです)

そうしたら、/System/Library/Carrier Bundles/iPhone/docomo_jp.bundle/carrier.plistをMac OS Xにコピーします。TransmitとかのSFTP対応クライアントを利用すると便利です。

コピーが完了したら、それをProperty List Editor(ダブルクリックして起動しない場合はXcodeをインストールしてください)で開いて名前をつけて保存でXML Property Listとして保存し、テキストエディタで編集します。

保存したcarrier.plistの329行目付近

	<key>signature</key>
<data>AAAAAAAAAAAAAAAAAAAAAAAAAAA=</data>

の<data>~</data>を以下のように書き換えます。

	<data>thisisafakesignaturethisisafakesignature</data>

そして356行目付近の

</dict>
</plist>

前に

	<key>PhoneNumberRegistrationGatewayAddress</key>
<string>+447860015000</string>
<key>RegistrationOptInRequired</key>
<true/>

を付け足して保存します。その後それをiPhoneの/System/Library/Carrier Bundles/iPhone/docomo_jp.bundle/carrier.plistに戻した後再起動をします。

これでDoCoMo回線でFaceTimeが利用可能となるはずです。

不明点などありましたらコメントください。

暇だったのでTwitterボットをつくってみた

まじ糞なエントリーですみません。暇だった+後輩に要請されたはずなのでTwitterのボットを作ってみました。

いいこぼっと : http://iiko.hirotaka.org/

Twitterで定期的にいいこいいこしてくれるボットです。今は定期的にいいこいいこするしか機能ないですが気が向いたら機能を実装する予定。糞すぎるボットなのに10人ぐらいに使ってもらえてます。

ちゃんちゃん。

iPhone 4 + NTT DoCoMoの回線でFaceTime

NTT DoCoMo回線を使ってFaceTimeする方法

昨今日本通信とかでドコモの回線でiPhoneを使っている人が多いと思いますが、FaceTimeはサポートされておらずせっかくの正面カメラが利用価値がなくて残念な人は多いと思います。いろいろ試した結果、FaceTimeをドコモ回線でアクティベーションして利用することに成功しましたので、その方法を書きたいと思います。

追記: 現在以下の方法を用いなくともドコモ回線でFacetimeならびにiMessageのActivationが可能になっています。

注意: この方法はJailbreakされた状態でのみ可能であり、この方法を試した結果故障した場合でも私は責任を負いかねます。自己責任にてお試しください。またJailbreakの仕方なども私にお問い合わせいただいてもお答えできません。

なぜ動かなかったのか+動く原理

まずなぜFaceTimeがドコモ回線で使用できないのか。これはFaceTimeの仕様とドコモの国際SMS対応に依存します。FaceTimeはFaceTime – The iPhone Wikiに書いてあるとおり、新しいSIMを挿した時に電話番号をAppleのサーバに登録する為に+44 7786 205094へSMSを送信し、Appleのサーバに正しくSMSが届くことでアクティベーションが行われます。

この際国際SMSを送信するのですが、ドコモ回線から+44 7786 205094へのSMSが届かない為、アクティベーションが行えません。

このアクティベーション番号は実はキャリアによっては国際SMSを送らずにすむよう、たとえばAT&Tでは28818773などといった自キャリア内の特殊番号を利用しているところがあります。こうした番号は通常はキャリア内からしか送信できないように制限がかかっている為使えません。しかし/System/Library/Carrier Bundles/iPhoneに格納されている各キャリアの登録番号の中には特殊番号以外を利用しているキャリアも存在するため、その番号のうちドコモ回線からSMSが送信可能な番号を利用することでFaceTimeをアクティベーションすることができます。

使い方

ドコモ回線からSMSが送信可能な番号を探したところ、vivo_br.bundleに格納された+447860015000という番号はドコモ回線からSMSを送信することが可能であることがわかりました。後はそれをFaceTimeのアクティベーション番号に設定すれば完了です。

これはいくつか方法がありますが、簡単な方法としてはCydiaで入手できるNTT DoCoMo Bundleをインストールした後docomo_jp.bundlecarrier.plistに以下の行を加えれば完了です。

<key>PhoneNumberRegistrationGatewayAddress</key>
<string>+447860015000</string>

後はUnknown.bundleのPhoneNumberRegistrationGatewayAddressを変更するなどです。

OS Xの外付けディスクのマウントポイントを指定する

忘れないようにする為の備忘録的な記事

家にはすでにNASがあるんだけど、家に4台!もあるMacのTimeMachineがNASのディスクI/Oを食いまくって他のサービスに支障が出てきたので、TimeMachineをNASから分離して管理することにした。

というわけで、Mac mini Serverに何かストレージをつないでそこにバックアップしようと計画。Mac mini ServerにFirewire経由でつなぐ外付けハードディスクを買った。

買ったのは、
WDのMy Book Studio Edition II
RAID1/0対応でファンレスで静かっていういい子。

帰ってきてMac miniにつないで、マウントさせたんだけどデフォルトのマウントポイントは /Volumes いいっちゃいいけど、もし同じボリューム名をもつドライブ挿したらマウントポイントが変わってしまう可能性があったので、マウントポイントを指定してマウントさせることにした。

まずはDiskのUUIDを取得する必要があるので、Terminal開いて以下のコマンド。

$ diskutil info /Volumes/external

externalはボリューム名。そうするとぞろぞろっと結果が出てくるのだけど、その中にVolume UUIDっていう項目がある。それがUUID。

そうしたら、/etc/fstab を編集する。

perseus:~ hiro$ cat /etc/fstab
UUID=DC59F6C5-5FC4-3686-A213-E567935DFF56 /u/external hfs rw

fstabの書き方は調べてください。これで毎回同じ場所にマウントされるようになった。