今日の朝夢見たけど書くのを忘れた。唯一覚えているのは肩ぐらいまでの髪の長さの女の子がでてきたことぐらい。キラキラ。

空がかなり晴れていて、そんなに寒さを感じなかった。マフラーがほしいと思った。ねむい。

  1. トップ
  2. life
  3. 夢あるいは
  1. トップ
  2. self
  3. 夢あるいは

PHP の簡略化 PI (<? .. ?>) は好きじゃない。ターゲットが示されてないのがなんか気になるし、XML 宣言実行しようとするのがウザすぎ。それと ASP 方式 (<% .. %>) は問題外。

XML の Processing instruction の仕様を引用する。

Processing Instructions
[16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
[17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))

XMLPI においてターゲットは必須。よってないとキモい。

そんなわけで [ruby-core:04266] ってのは <?erb .. ?> とかにするほうがいいんだけど、それだと目的のタイプのし易さが結局アレになるのでそもそもだめじゃんみたいな。

何が言いたいんですがあたしは。

  1. トップ
  2. prog
  3. PHP の簡略化あるいは

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

YAML を使うことにした。当初 XML を使うつもりだったけどマップするのがめんどいので保留。obj.to_yaml だけなのは簡単でいい。あんまり文法は好きじゃないんだけど……

  1. トップ
  2. ruby
  3. chokan の設定
  1. トップ
  2. prog
  3. chokan の設定
  1. トップ
  2. script
  3. chokan の設定

生徒に動物が混ざっている。でも違和感は特にない。誰も気にしない。動物たちはもともと人間であった。彼らは望んで動物になった。何故だかは知らない。人間の頃の写真を見た。今はライオンの人が印象に残っている。持ち物検査か何かがあるらしくライオンは途中でどっかにいった。ライオンはあまり成績はよろしくない。でも他の生徒からは割りとすかれている存在だった。俺はその教室の中にいつのまにかいる。本校舎から教室が分離してある。

場面が変わって雪山。スキーをつけずに滑り降りる。(ファンスキーをもっとちっちゃくしたら靴サイズになっちゃったよ。みたいな勢い) スノーボーダーが危ない。

  1. トップ
  2. self
  3. 夢、動物の学校

elsif もそうだけど for - in も嫌いだ。読む順番がアレなんだよなぁ。素直に each でいいじゃないみたいな。ついでに each と同じだと考えてるとハマる。スコープがスタックされない (この表現が正しいかは知らない)

  1. トップ
  2. prog
  3. Ruby for-in

一番重要なのは雰囲気で、それが実際にありえるかどうかは大した問題じゃない。とはいえ最低限のリアリティは必要。まぁ結局場合によるけれど……

さて、ニ段落目を書いては消し、書いては消し、結局うまく文章化できなかった。こういうのが多いな。

  1. トップ
  2. life
  3. ソレっぽさ
  1. トップ
  2. thinking
  3. ソレっぽさ

IRC BOT を作り直し。RICE 使うことにする。

プラグインのロード方法を変えた。新しい無名のモジュールを作ってその中で実行してクラスのインスタンスを得るようにする。そうすれば空間が汚れないし GC 的にも嬉しいっぽい。たぶん。

    def load(klass_name)
filename = klass2file(klass_name)
mod = Module.new
mod.module_eval(File.open("#{dir}/#{filename}") {|f| f.read}, filename)
c = nil
begin
c = mod.const_get(klass_name)
rescue NameError
raise ClassNotFoundError.new("#{dir}/#{filename} must include #{klass_name} class")
end
# @klass (new に渡した上位クラス) を継承していなかったらエラー
if c < @klass
@plugins[klass_name] = {
:instance => c.new,
:loaded   => Time.now,
}
else
raise NotInheritAbstractClassError.new("The class #{klass_name} must inherit #{@klass}")
end
klass_name
end

Abstract っていうのはなんか違う気がする。

  1. トップ
  2. prog
  3. chokan 再実装
  1. トップ
  2. ruby
  3. chokan 再実装
  1. トップ
  2. irc
  3. chokan 再実装

CSS 切り替えスクリプトみたいなのを使って、ページ内にドロップダウンとかつけているサイトは結構あるけど、スタイルを変えるごとにそのドロップダウンがどっか別に場所に移動したりするのはなんかアレだなって思う……見失って元に戻すのまで若干混乱する。

  1. トップ
  2. web
  3. CSS 切り替えのユーザビリティ
  1. トップ
  2. script
  3. CSS 切り替えのユーザビリティ
  1. トップ
  2. css
  3. CSS 切り替えのユーザビリティ

バナナ: cache.rb

なんかやっぱソースが汚いけどとりあえず置いとく。

ちなみにうちは以下のような構成

  1. img/
    1. cache/
      1. .htaccess
      2. cache.rb
      3. http%3a%2f%2f...
      4. ...

.htaccess でアクセス制限&DirectoryIndex cache.rb 設定みたいな。アクセス制限よりスクリプトでパーミッション設定してもいい気もする。

  1. トップ
  2. web
  3. バナーをキャッスのソース
  1. トップ
  2. prog
  3. バナーをキャッスのソース

三学期特別授業なるものを実はとっていたりしたり。というのも一応試験直前に勉強脳に切り替え、リハビリするためなんだけど実際どうなのよ、とかいうのをもう既に遅刻な時間 (振込みとか郵便局とかごちゃごちゃやってた) にやっているわけでやっぱ意味気もする。

勉強脳、とかいたけれど、ここでの勉強は即ち読んで字のごとくいられる学 (ただしここで勉学を勉強と読み替えると軽く再帰的になって混乱する。Ruby でいうなら alias を使ってメソッドを宣言したのごとく前のメソッドは前のメソッドのまま的な) なわけで以下略。

さて着替えしよう。

やっぱこの時期はセンター対策だった。なんか現国は運だ。うん。運がよければ満点いける。

  1. トップ
  2. life
  3. 三学期特別授業
  1. トップ
  2. school
  3. 三学期特別授業

森の中の家。たぶん三階建て。地下に台所。一階は操作室。いたるところに中身が空っぽな自動販売機。好奇心旺盛な女の子。謎の男。どうやってでるか。

  1. トップ
  2. self
  3. 夢、森の中

アナログな文字を機械処理する書類が激しく苦手だ。機械の読み取り精度がどれほどかわかっていないので、書くのにひどく神経を使う。最初からデジタルデータを送るようにすればいいのに。入試の出願書の話ですけど、まぁミスがあってはいけないものだから、いくらか多めに可能性を考慮するわけですけど、ステップが多い。普通に自分の脳みそがイカれててわけわからない場所に書いたりだとか、実際この字の濃さ・書体で読み取れるかだとか、数値として記入する部分で間違いを犯していないかとか。機械処理させるなら書くところも機械にやらせればいいのに。あと、紙面の都合上入力できる文字に制限があるのがアレだよなぁ。10文字以上の名前の人は余計不安になるじゃないか。根拠のない仮定はするな (プログラミング基礎 セクション 5.3. でっちあげ。) っていうやつに似てる。

個人情報なんかはなんかもっと簡単に処理できないのかなぁ。住民基本台帳とか……セキュアな問題がアレそう。

理想的には個人識別用のコードと受験科目とかそういうのだけ入力してポチっておしゃ OK とか。替え玉が増えそうだけどなー。

  1. トップ
  2. life
  3. アホみたいに僕は笑ってた
  1. トップ
  2. technology
  3. アホみたいに僕は笑ってた