classics.

2010/07/12 Monflickr

日記

GPS_169

商店街では金曜、土曜と七夕夜店が開催されていて、金曜はお誘いいただいたので店をちょっと回ったりした。あまり買わなかったけど。初対面の割には話したような気がするので、相手が一人ならさほど人見知りひどくなくなってきたのではないか。

土曜はのんびり読書でもしようかと思ってたらfubさんがいきなり京都に向かいだし、バッテリーを求めている感じだったので、Macと接続するケーブルを無くして以来あまり使えていないHyperMacを持って、何かしらおごってもらいに家を出た。

4時過ぎに京都駅に行ったらfubさんは求心力を存分に発揮できずに一人でよくわからないお祭り観たいのを眺めていて、お茶か酒のようなものを所望していた。京都駅付近は電波が遮断されるのを恐れ、PORTAを避けようとしたら、でかい電気屋の上の会には飲食店があるの法則を思い出し、ビックカメラに行ってみた。そうしたらビックカメラは飲食店を含むのに失敗していたらしく、せっかく歩いて店まで来たのでマッサージチェアで休むhackをキメてみました。全然混んではいなかったけど、15分コース終わったらどけとか書いてあったので、複数の店員が暇を持て余して周囲をうろうろしていることもあり、15分で出た。

gebetも来ないので、仕方なくPORTAに降りたら電波は問題なく、飲み屋ライクなところに入って雑談をしていた。客席にコンセントがあったので当然使っていいはずだけれど、空いてる隣の席のところだったので一応店員に聞いたら使っちゃいけないとか主張された。そのうちgebetも来て、hotode909も来て揺れていた。そんな感じで平和的に飲んだり。

IMAG0038

8時頃には後に瑛太(似)さん(a.k.a id:antipop)も来たので四条烏丸あたりに繰り出し、放浪しながら満席の店をいくつか経由しつつイタリアンな感じの店で飲食を再開。瑛太さんはパジャマっぽい出で立ちで、そのせいか途中若干寝ていた。後ほどmotemenさんやkotorikoさんが呼び出されて店に。motemenさんは蓄光塗料っぽい初音ミクが描かれたシャツを着ていたけれど蓄光しないらしい。kotorikoさんはいろいろといつもどおりでした。

11時過ぎには店を出て、先斗町の方の店に。fubさんは眠りに落ち、さほど平和的ではない会話がなされてました。そんな感じで2時頃に解散となった。fubさんは朝まで飲むのは諦めてホテルに入り込むことができたようだった。

日曜日はのんびりしていた。雨降ったりしてそこそこ不快でしたね。飲むヨーグルトを500ml飲む以外に特に有意義なことはやっていない。

2010/07/07 Wedflickr

User Streamsのreplies=allはやばい

追記(2014/11/20)

仕様変更された様子
http://oquno.com/log/eid3105.html

追記(2010/08/02)

今確認してみたら、protectedな人からのreplyは流れてこないようになってました。
追記終わり。

Twitter APIの話です。

昨晩User Streamsの修正が入って、デフォルトだとhome_timelineと同じような内容になり、オプションでパラメータを渡せば今は亡きshow all @設定と同じような内容になるかを選べるようになったかに思えました。がしかしそうでもないので今のところの挙動をまとめて、確認してないけど、replies=allをつけないとhome_timelineと同じstatusが流れてくるという前提で、replies=allをつけるとどうなるのかハイパー図解してみます。

前提


赤いのが自分で、大きめの輪に入ってるのがfollowing、外が関係ない人。わかりやすいですね。

followingからfollowしてない人へのreplyが流れてくる

show all @ オプションと同じですね。要するにfollowしてる人のstatus updateが全部流れてくると。

上図での緑の線で表されるreplyが見えるということです。

followしてない人からfollowingへのreplyが流れてくる


上図での緑の線で表されるreplyが見えるということです。ちなみに、今の仕様だと自分がfollowしてないprotected(鍵付き非公開)な人からのreplyも流れてきます。要するにfollowing全員へのreplyが全部流れてくる。
これが新仕様ですね。User Streamsで取得できるfavoritesもprotectedな人のstatus流れてきますけど。

具体的にどうなる?

例えば自分がreplies=allつけたUser Streamsクライアント使っていて、よくreplyされるような有名人(ex. @takapon_jp)なんかをfollowしてると、その人へのreplyが全部流れてきて滑稽な感じになります。また、followしてる知り合いへのreplyを監視したりするのが簡単になりますね。あとはprotectedでfollow許可してくれない人とよくreplyしてる人をfollowすればその人との会話が見えるとかそんな感じです。trackでも似たようなことはできるけど、簡単になりますね。あとはreplies=allつけて、replyしたりされたり系のbotをfollowしてるとフィルタするのがめんどいとかですかね。

2010/06/27 Sunflickr

いいにおいのするイベント6

GPS_162

とうめいロボさんが久しぶりにライブに出るというのでそれを目当てに心斎橋まで行ってきました。小さなクリスマス会以来で半年ぶりですね。ちょうど一年くらい前が遊色ブローチでしたね。

会場には大体時間通りに着いて、演奏が始まるまで中に入ってひっそりとモバイルインターネットなどをしてました。

IMAG0021

演奏の方は、とうめいロボさん以外は初見だったのですが、どれも違ったジャンル(?)でおもしろかったです。特にVampilliaはインパクトがすごかったですね。あの後にとうめいロボさんがやるという流れもすごい。河端一さんの演奏も印象深かった。

大体終わって、そろそろ電車も危ないかなということで帰る前に、とうめいロボさんに1年前にMacBook Airに書いて頂いたサインが薄くなってしまったのでまた書いて頂けないかと頼んでみたら、了承していただいて新しく書いてもらえました。ノートPCにサインをねだる輩はやはり珍しいのか、覚えていただいていたみたいでした。

before
IMAG0760

after
とうめいロボさんサイン上書き

そんな感じで、サインの上書きされたマシンで電車インターネットしながら帰宅しました。

2010/06/24 Thuflickr

Ruby+MongoDB+MeCabで全文検索

これに検索コマンドをつけたのでメモ。MeCabを選んだのは気分です。

User Streamsから取得する際にそのままのJSONをMongoDBに入れてたのを、MeCabかませた配列も入れるコードを追加(過去ログもバッチ処理した)。

if status['text']
    status['keywords'] = MeCab::Tagger.new("-Owakati").parse(status['text']).split(' ')
end

あとインデックスを張る

$ mongo
> use userstreams
> db.status.ensureIndex({keywords: 1})

検索する関数

def search(keyword)
    keywords = MeCab::Tagger.new("-Owakati").parse(keyword).split(' ')
    return $db['status'].find({'keywords'=>{'$all'=>keywords}},{:sort=>['id', 'descending'],:limit=>10})
end

いろいろ書いた気がしていたけどあまり書いてなかったですね。{'keywords'=>{'$all'=>keywords}} の部分がどうするのかよくわからず、はまった。あとバッチ処理が長かった。

これまでの検索用関数はこういう感じで正規表現で楽勝じゃんみたいなのにしてたけどクエリが重くて、タイムアウトエラー吐いたりしたので思い直したのでした。

def search(keyword)
    return $db['status'].find({'text'=>/#{keyword}/},{:sort=>['id', 'descending'],:limit=>10})
end

2010/06/19 Satflickr

カオス*ラウンジ 2010 in関西

20100619082639
京都駅
IMAG0065
JR
GPS_103
大阪
GPS_108
破滅予定地
GPS_109
ミラーボール

破滅準備
GPS_117
ランチタイム
IMAG0067
トンカツ定食
IMAG0068
食べた

カオスプロクシなど

GPS_122
ジャンク補充
GPS_124
京都へ
GPS_127
五条ついた
GPS_131
かおすら!
GPS_134
暑いのでストリートコンピューティング
GPS_138
夕食へ

そして帰宅しました。

2010/06/04 Friflickr

京野菜フェア


京てまりまるごとサラダ 250円, originally uploaded by oquno.

6月のカンフォーラは京野菜フェアをやっているので、以前食べて気に入った京てまりまるごとサラダなんかをキメてみました。

下にツナマヨネーズ的なものがあって、なかなか合います。シャレオツ気取りな割には学食なので250円とお手頃価格なのもいいですね。

2010/05/31 Monflickr

出町柳の蕎麦屋


GPS_047, originally uploaded by oquno.

学生プライスでもなく、量もちょっと物足りないという噂だったので少し敬遠していて、でも結構味はいいというので一度は行ってみようと思っていた蕎麦屋さんが閉店してました。

19年もつづいていた店らしく、残念ですね。

2010/05/17 Monflickr

MacBook Air SSD化など

先日書いた通り、MacBook Airがぶっこわれて、さっさとSSDなどを取り寄せて、HDD→SSDとLeopard→Snow Leopardの移行をしました。

手順は MacBook Air(第2世代)のHDDをSSDに交換する手順(その1) | 景観デザインを目指せ を参考に、自分の場合はHDDがぶっ壊れてるのでバックアップは取らずにとりあえずHDDをSSDに付け替えて、MacBook Air SuperDriveにSnow LeopardのDVDを入れてそこからブートしてクリーンインストールです。その後RunCoreのSSDについてきたUSBドライブ化キットみたいのにHDDを入れて、MacBook Airにつないだら、そこまで壊れてはいなかったみたいで、そこそこサルベージできました。HDDはそのままだとWindowsとかにつないでも読めないっぽいので、Macからそれなりの形式でフォーマットしてやると不良セクタはあるものの一応使えるようになりました。

MacBook Air SuperDriveあるしついでにBoot CampでUbuntu 10.04でも入れようと思ったのですが、なんかうまくいかない上にUSBポートが認識しなくなったりする(PMUリセットしないと戻らない)ので、夢は途絶えました。腹いせにWindows 7でも入れたいところですが、もう資金に余裕はないので断念。

で、SDD化してみて速いのかという点ですが、ベンチマーク取ってみるとそれなりの性能のようだけど、体感としてはあまりよくわからないです。まあ合うHDDがないからSSDにしただけなんだけども。

2010/05/13 Thuflickr

MacBook Airぶっこわれた

セーフブート

なんか固まったり復活したりを繰り返してイラッとしたので強制終了して起動しようとしたら全然進まなくなり、PRAM・NVRAMをリセットしても変わらず、なんかHDDがいかれたっぽい感じになってしまいました。修理に出すにも心斎橋まで行くのも面倒くさいし金はかかるし、いっそHDD換装&Snow Leopardにアップグレードしようかと。しかしいわゆる二代目MacBook AirのHDD・SSD換装例がこのSSDしかないので、泣く泣く払うかというところです。その他にもMacBook Air Super Driveとかも調達しなければならないのがめんどいですね。

2010/04/26 Monflickr

TwitterのDMのデフォルトテキストを指定する方法

TwitterでDirect Message(DM)を送るのに、「Dしました」とかいう人がいるのですが、それはDirect Message送信用のAPIがあるのにDコマンド(d {screen_name} {message})をstatuses updateのAPIに投げる残念なTwitterクライアントが多いせいだということが独自調査の結果判明しています。nudgeみたいにコマンドが効かなくなることもあり得るし、編集してコマンドを間違えてしまうこともあるのであまり賢い手段じゃないですね。

それはそれとして、Twitterではhomeのテキストエリアに入るデフォルトのテキストをGETのstatusパラメータで指定できる( 例: http://twitter.com/?status=@oquno hi )のはよく知られていることです。じゃあDirect Messages作成時のテキストエリアに入るデフォルトのテキストも指定できるんじゃないかと思って、できるのを先日見つけて快挙かと思ったのですが反響がほぼなかったのでブログに書いておきます。

簡単に書くと、Direct Messages 送信用の URLが http://twitter.com/direct_messages/create/{screen_name} なので、例えば@oqunoにhelloと送りたい場合は、GETのtextパラメータを足して http://twitter.com/direct_messages/create/oquno?text=hello とやると、
how to set default text for direct messages
こんなかんじになってあとは送信するだけ状態にできます。イベントの参加確認とかに使うといいんじゃないですかね。自分は使わないと思うけど。