6月 30

ipod touchのOSをiPhone 3.0 OSに変更しましたので、色々と変更点や変更後にやっておいた方がいいことなどをまとめてチェックしてみました。

新機能について

新機能対応ゲーム

しておいた方がいいこと

3.0化にあたっては残念ながらデメリットもあります。
新しいアイコンが増えたかわりに、リピートとシャッフルのアイコンが消えているのです。つまり同種のPodcastをシャッフル再生したり、Podcastが終わったら、次のPodcastを再生できないのですます(Podcastが曲としてカウントされなくなりました)。あらかじめプレイリストを作って対処する事になりそうです。

11月 11

なかなかうまくいかずすっかりシリーズものになってしまいました。その1その2はこちら。

さて、前回各種ツールをインストールしたくてもインストーラーに出てこないという話を書いておりましたが、DNSを変更し、きれいに再起動してから実行したところ正常にアクセス、インストールできました。

でも、せっかくなので、思いついたアイデアの方で進めて見ます。

RSSを取得して、URIの一覧を標準出力に出力するRubyスクリプト

まずはRSSを取得~URIの一覧出力部分です。Rubyが好きなのでどうせ素敵なライブラリがあるだろうと調べてみたらすぐに素敵なサンプルが見つかりました。

かなり簡単にRSSが扱えますね。素敵です。以下はとりあえずURIを抜き出して出力するようにだけしたものです。

require 'open-uri'
require 'rss/1.0'
 
filename = 'http://r.hatena.ne.jp/ebibibi/%E6%97%A5%E6%9C%AC%E8%AA%9E/rss'
 
rss = open(filename) {|file|
  RSS::Parser.parse(file)
}
 
rss.items.each{|item|
  puts item.link
}

この調子ならindexページを作成するのも簡単ですね。後日考えてみることにします。

RSSからURIを抜き出しwgetで取得するShellスクリプト

上記のRubyスクリプトの出力をwgetに渡して、WebページをローカルにダウンロードさせるShellスクリプトを、簡単に。私は文字だけ読めればいいので、オプションはシンプルにしました。好みによってはリンクをたどって再帰的に取得させるとよいと思います。

#!/bin/sh
cd /var/mobile/Media/Downloads
ruby geturi.rb | wget -i - -N -np
exit

これを実行することで、きちんと目的のHTMLファイルをローカルに作成してくれるようになりました。

lighttpd用の設定ファイル

あとは、ビューワとしてローカル上でWebサーバーを動かします。lighttpdを選びました。

/etc/lighttpd.conf

server.modules = ( 
        "mod_access",
        "mod_alias",
 )
server.document-root = "/var/mobile/Sites/"
index-file.names = (
    "index.html", "index.htm",
)
mimetype.assign = (
    ".pdf" => "application/pdf",
    ".sig" => "application/pgp-signature",
    ".spl" => "application/futuresplash",
    ".class" => "application/octet-stream",
    ".ps" => "application/postscript",
    ".torrent" => "application/x-bittorrent",
    ".dvi" => "application/x-dvi",
    ".gz" => "application/x-gzip",
    ".pac" => "application/x-ns-proxy-autoconfig",
    ".swf" => "application/x-shockwave-flash",
    ".tar.gz" => "application/x-tgz",
    ".tgz" => "application/x-tgz",
    ".tar" => "application/x-tar",
    ".zip" => "application/zip",
    ".mp3" => "audio/mpeg",
    ".m3u" => "audio/x-mpegurl",
    ".wma" => "audio/x-ms-wma",
    ".wax" => "audio/x-ms-wax",
    ".ogg" => "application/ogg",
    ".wav" => "audio/x-wav",
    ".gif" => "image/gif",
    ".jpg" => "image/jpeg",
    ".jpeg" => "image/jpeg",
    ".png" => "image/png",
    ".xbm" => "image/x-xbitmap",
    ".xpm" => "image/x-xpixmap",
    ".xwd" => "image/x-xwindowdump",
    ".css" => "text/css",
    ".html" => "text/html",
    ".htm" => "text/html",
    ".js" => "text/javascript",
    ".asc" => "text/plain",
    ".c" => "text/plain",
    ".cpp" => "text/plain",
    ".log" => "text/plain",
    ".conf" => "text/plain",
    ".text" => "text/plain",
    ".txt" => "text/plain",
    ".dtd" => "text/xml",
    ".xml" => "text/xml",
    ".mpeg" => "video/mpeg",
    ".mpg" => "video/mpeg",
    ".mov" => "video/quicktime",
    ".qt" => "video/quicktime",
    ".avi" => "video/x-msvideo",
    ".asf" => "video/x-ms-asf",
    ".asx" => "video/x-ms-asf",
    ".wmv" => "video/x-ms-wmv",
    ".bz2" => "application/x-bzip",
    ".tbz" => "application/x-bzip-compressed-tar",
    ".tar.bz2" => "application/x-bzip-compressed-tar"
)
server.port = 80
server.username = "nobody"
server.groupname = "nobody"
server.dir-listing = "enable"

lighthttpd自動起動用の設定ファイル

/Library/LaunchDaemons/net.lighttpd.lightppd.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
 
<dict>
    <key>Label</key>
    <string>net.lighttpd.lightppd</string>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/lighttpd</string>
        <string>-f</string>
        <string>/etc/lighttpd.conf</string>
    </array>
</dict>
</plist>

と、こんな感じにしたのですが、自動起動してくれないし、ページにアクセスしようとすると、403 – Forbiddenで怒られてしまうという現象がでてかなり悩みました。

自動実行に関してはとりあえずあとで調べることにして以下のコマンドで実行してその場をしのぎました(要調査)。(※ipod touchの設定ファイルの正しい置き場所がわからないのが現状です。とりあえず/etc以下に置いてます。(要調査))

/usr/sbin/lighttpd -f /etc/lighttpd.conf

403に関しては結局lighttpdの実行権限に問題があったようです。動作させるユーザー、グループの指定の部分をコメントアウトするとうまく動くようになりました。ここは何か明示的にユーザー、グループを作成して、それを指定するのかいいのかもしれません。www-dataなんて感じに作ろうか・・・。(要調査)

こんな感じで何とかWebの巡回とオフライン閲覧は実現できました。が、自動巡回にさせたいし、オフラインにダウンロードしたファイルの世代交代もしたいです。日時、あるいは数あたりで制限を設けたいし・・・・。まだまだやりたいことがあるので、引き続き試していこうと思います。