lastfm.rb 超微妙

ただの HTTP アクセスに過ぎない簡単さにも関わらず割とおもろいので、てけとーにコンソールから操作できるようにした。require できるようにアレしてアレしたけど、糞実装なのでなんとも……これからいろいろ考えよう。

単体で起動した場合は --user, --pass が必須。あとつかえるオプションは --help。 OptionParser の練習もしたかったから丁度良かった。入力待ちになったら help すれば使えるコマンドが出るはず。知らない。

勢いで RAA に登録した。lastfm

  1. トップ
  2. web
  3. LastFM Web Service
  1. トップ
  2. script
  3. LastFM Web Service
  1. トップ
  2. ruby
  3. LastFM Web Service

ジャケ かこいいなぁ……

しかし二枚連続でタワレコ初回限定なのはなんでだろう。というかなんで東芝 EMI から出さないんだろう。何かあったのか。VeryApeRecords とかいう怪しいアート専用レーベルらしきものから出すし……謎。

  1. トップ
  2. music
  3. LOST IN THE AIR

よく寝た。っていうか外は糞寒いし、控え室微妙に寒いし、試験会場暑いし……

自己採点してみると古文が0点だった。笑える。漢文は少しあたってたぜ?

まぁ現代文しか使わない学部だから関係ないです。ならマークするなよって感じだけど、やっぱ埋めてないと不安 (謎) なので。

河合塾速報のやつによると、平均点があがるだろうと思った英語は昨年よりさがってる。ありがたや。平均点超えそう? 国語は現代文以上の点数はないので比較できない。政治経済はほぼ平均点 (より下)。

明日学校で一斉自己採点&予備校にデータ提出だから、これから母集団が増えて変わるだろうけど、すんげー微妙。よくも悪くも平均人間って感じ。ウキー。

ついでに国語Ⅰのアレ (謎) でアレだと思う。アレのせいで微妙に不利なのか?

  1. トップ
  2. life
  3. センター試験を終えた。
  1. トップ
  2. self
  3. センター試験を終えた。

結局微塵も勉強しないで大学入試センターなわけだ。いくつか試験の心構え的なもの (古典は適当にマークするだけで考えないとか) は考えたけどぶっちゃけどうでもいい。

今日は英語のみだから特に糞不安ってことはないし、むしろテンションハイになっているわけだけど、長文で運が悪いとその後に続く試験 (二日目・一般) がたぶんアレになるのでそれなりの覚悟が必要な気もする。一番気にかかるのはぶっちゃけ試験場なんだけどね。まくら違うと寝れない (嘘) ですから!

勉強しないとサッパリできない科目、つまり政治経済が一番不安要素満載なんですよ。怖い怖い。

昨日なにやってたって chokan 実装やってたよ。本屋行ってアレな雑誌読んだよ。謎だ。

俺が今ある種異様なテンションなのは、ここ三年求めていた向うから強制的にやってくる刺激が、今あるからだと思う。センター試験はいくつかのイベントの始まりにすぎない。いい方に傾くか悪いほうに傾くかはまさしく神のみぞ知るところだから結局どうでもいい。いずれにしても、これから自分がどうなっていくのが楽しみでニヤける。

自己採点したらめっさ低いよ。やべー。

や、平均っぽい?ぶっちゃけどれぐらいが平均なのかわからn

どっちにしろセンター利用私大は無理くさい。一般は願書とりよせた大学全部うけることになりそうだ。

  1. トップ
  2. life
  3. センター試験まであと0日

実験的に Rena を使ってみたかったので、よろしそうなプログラムを考える。

IRC BOT に何か FOAF アレこれできるような機能をつけてみたかった (意味があるかは考えない) ので、とりあえず URI に反応して、それが FOAF だったら foaf:nick と foaf:name をとってくるようにしてみた。

URI (http:) が PRIV されたら HEAD でアクセスして、ステータスコードと Content-Type を確認。`text/xml', `application/xml', `application/rdf+xml', `text/ntriples' であれば Rena にロードさせる。

ロードしたら rdf:about="" なリソースを探し、それが foaf:PersonalProfileDocument であれば foaf:primaryTopic のさすリソースの foaf:nick と foaf:name をてけとーに取得して IRC に NOTICE

Rena は結構遅いので、RDF パース中は chokan が他の処理しないかもしれない。

作るにあたって Using Rena to Process RDF in Ruby が役に立った。

よく考えると open-uri に Accept ヘッダを加えるのは無理 (もしくはめんどう) なので、最初から GET して、response.body を StringIO にして Rena に投げることにする。こうしないとネゴシエーション効いてる場合ダメになる。

メイン部分のコード。

# uri は読み込んだ RDF の URI の URI クラスのインスタンス
# res は HTTP#get の値
model = Rena::MemModel.new
model.load(StringIO.new(res.body),{
:content_type => Regexp.last_match[0],
:base => uri.to_s
})
resource = model[uri.to_s] # 相対 URI は絶対 URI に変換されている。
if resource &&
resource.get_property(RDF + "type").uri == URI.parse(FOAF + "PersonalProfileDocument")
mes = "foaf:PersonalProfileDocument"
foaf = resource.get_property(FOAF + "primaryTopic")
nick = foaf.get_property_values(FOAF + "nick")
name = foaf.get_property_values(FOAF + "name")
# string_array は rdf:Alt とかも全部ひっくるめて単一の文字列の配列にする
mes += " [nick:#{string_array(nick).join(", ")}]" unless nick.empty?
mes += " [name:#{string_array(name).join(", ")}]" unless name.empty?
subject << notice(channel, mes.to_jis)
else
puts "Not FOAF"
end
  1. トップ
  2. rdf
  3. chokan & FOAF
  1. トップ
  2. sw
  3. chokan & FOAF
  1. トップ
  2. irc
  3. chokan & FOAF