May 11, 2009

Google Code Hostingを物置にする

Blogger単体では基本的に外部ファイルを持てません。どういうことかというとページにJavaScriptやスタイルシートを追加したい場合、テンプレートにべた書きするか、外部のホスティングサービスにファイルを置いて参照するかしなくてはならないということです。

Ogawa::Buzz: レンタルサーバを「捨てる技術」で書いたようにTracサイトをGoogle Code Hostingに移行したので、ついでにこうしたブログ関係のファイルもsubversionリポジトリに置いてGoogleにホスティングしてもらうことにしました。もちろん、パスワードが含まれたPHPプログラムなどを間違って置かないように。

http://ogawa.googlecode.com/svn/blog/

ここで問題になるのは、ファイルのMIME-Typeです。デフォルトではテキストファイルはおそらく全部text/plainになってしまうため、大抵のブラウザはHTMLファイルをレンダリングせずにそのまま表示しようとします。また、FirefoxのようにスタイルシートのMIME-Typeを検査するブラウザではCSSファイルを読み込んでくれないはずです。この振る舞いはコードリポジトリの公開には向いていますが、Webコンテンツ(の一部)の配信という目的には合致しません。

ですが、そこはsubversion。ワーキングコピーのディレクトリでこんな感じに実行してやれば済むだろうと思ってやってみると、OKでした。

$ svn pset svn:mime-type text/html `find . -name '*.html' -print`
$ svn pset svn:mime-type text/css `find . -name '*.css' -print`
$ svn pset svn:mime-type application/javascript `find . -name '*.js' -print`
$ svn ci
...

試しにヘッダを見てみると、ちゃんとETagやLast-Modifiedも付いてきていい感じですね。

$ HEAD http://ogawa.googlecode.com/svn/blog/stylesheet.css
200 OK
Connection: close
Date: Mon, 11 May 2009 08:34:28 GMT
Accept-Ranges: bytes
ETag: "645//blog/stylesheet.css"
Server: Apache
Content-Length: 967
Content-Type: text/css
Last-Modified: Mon, 11 May 2009 08:11:20 GMT
Client-Date: Mon, 11 May 2009 08:34:29 GMT
Client-Peer: 72.14.203.82:80
Client-Response-Num: 1

どうせsubversionなので、~/.subversion/configに下のように追加しておけば、新しくファイルを追加したときにsvn:mime-typeを自動的に設定してくれるようになるはず(試してない)。

[miscellany]
enable-auto-props = yes

[auto-props]
*.html = svn:mime-type=text/html
*.css = svn:mime-type=text/css
*.js = svn:mime-type=application/javascript

もちろんこういう使い方はGoogleの意図したところではないのでしょうが…。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com