トップ «前の日記(2012-12-09) 最新 次の日記(2012-12-11)» 編集

Route 477



2012-12-10

[ruby][mac] MacRubyでアプリ作ってみた

ニコニコのコメントファイルを表示するだけのアプリを作った。

Retina MBP (13inch) に乗り換えてから、にこぷれの動画再生がカクカクすることがあって困っている。 仕方ないのでflvはVLCで再生して、コメントは別の方法で読むことにしたというわけ。

コメントは単純なXMLなので、Nokogiriで適当にパースすればテキストに変換できる。

# coding: utf-8
require 'nokogiri'

xml = Nokogiri::XML(ARGF.read)

start_time = if (thread = xml.at("thread"))
               Time.at(thread[:server_time].to_i)
             else
               first_chat = xml.at("chat")
               raise "chat not found" unless first_chat
               Time.at(first_chat[:date].to_i)
             end

xml.search("chat").each do |chat|
  bsp = false
  number = chat[:no]
  date = Time.at(chat[:date].to_i)
  time = date - start_time
  min = time / 60
  sec = time % 60

  text = chat.text
  if text =~ %r{\A/press show .* (.*?) @ (.*)}
    bsp = true
    text = "<#{$2}> #{$1}"
  end

  printf "%02d:%02d %s%s\n", min, sec, (bsp ? "" : " "), text
end

これをlvで見るのでもいいのだが、なんとなく単独のウィンドウで表示したくなって、MacRubyを使ってみることにした。

MacRubyについては、以下を上から順にやればだいたい雰囲気がわかる。

ファイルの読み込みAPIなどはRubyがそのまま使えるため、そんなに新しいことを覚えなくていいのがありがたい。 Nokogiriなどgemも使えるようだが、XCode上で使ってみたらなぜかNokogiri::XML("")がCレベルのエラーになったので、とりあえず正規表現に逃げてしまった。

今までだったらSinatra+ブラウザとかで実装してたと思うけど、ものによってはMacRuby使ったほうが簡単そう。

[javascript] Ember.jsで遊んでみた

Ember.jsはいわゆるJavaScript MVCフレームワークの一つ。 Ember.jsはその中でもわりとヘビーウェイト・高機能なやつで、モデル間やモデル・ビュー間でデータの依存関係を指定して、片方が変化したら従属する方に勝手に変更が反映されるような機構が備わっている。

という話を聞いて最初に思いついたのが、太陽・地球・月が回転するというデモ。月の位置は地球の位置に依存していて、地球が動いたら月も自動的に移動する、というやつ。 で出来たのがこちら。

img

リポジトリにはファイルがたくさんあるが、ほとんどはstarter kitに入っているもので、編集したのは app.jsindex.htmlだけ。

描画はRaphaelJSを使っている。こういう小さいものを作る時にとても便利なライブラリだ。

ページのホスティングはgithub pagesを使っている。 今回のようにgithub pagesがメインのときは、「git push origin master」せずに「git push origin gh-pages」だけすることで、gh-pagesブランチのみにすると分かりやすくていい。

Ember.jsについては、Ember.js Advent Calendar 2012がとても参考になる。