Mojolicious::LiteのスクリプトをCGIで動かす

以下のスクリプトをtest.plという名前で保存します。

#!/usr/pkg/bin/perl

use lib '../lib';
use Mojolicious::Lite;

get '/' => 'index';

get '/info' => sub {
    my $self = shift;
    $self->render(text => 'info page.');
};

shagadelic('cgi');

__DATA__

@@ index.html.eplite
<html>
    <head><title>Test</title></head>
    <body>Mojolicious::Lite test.</body>
</html>

WebサーバがApacheの場合、CGIとして起動する際には

http://localhost/~hiramatsu/test.pl

では「get '/'」がマッチせず「File not found.」が表示されます。

http://localhost/~hiramatsu/test.pl/

と最後にスラッシュ(/)を付加すると「get '/'」が呼び出されます。infoは

http://localhost/~hiramatsu/test.pl/info

でも大丈夫。

ブラウザ検出とOpera

10 is the oneの話が面白いです。

WebアプリケーションではJavaScriptを使ったりサーバ側のプログラムで、WebブラウザのUser-Agentを見て動作を切り替える場合があります。

この前Opera バージョン10 のアルファ版がリリースされましたが、User-Agent中のバージョン番号に1桁の数字しか想定していないものがあり、Opera/10.00を解析しようとすると「Operaのバージョン1」として扱ってしまうものがあるそうです。

コメント欄で少し議論がありましたが

・16進数の「A」とかローマ数字の「X」は?
確かに1桁だけど、「6以上」のようなWebアプリ側のチェックをパスできない
Opera/9.99 [10.00]のようにするのは?
こういうハックに依存してしまうと、いつか Opera/9.99 [10.00][really 11.00][actually 12.00][OK_I_lied_it's 13.00] みたいなUser-Agentが必要になってしまう

ということで、やっぱり10にしたいらしい。

最近見てる videopodcast

CSS-Tricksのvideo screencast(http://css-tricks.com/videos/)

CSSの書き方の説明やWebサービスの紹介等、Webデザイナー向けのトピックが色々です。内容は本当に「色々」なので、必要と思われるところを適当に拾って見て下さい。

WiredのGadget Lab(http://www.wired.com/video/gadgets)

Wired.comの編集者がデジタルカメラ・ノートPC・携帯電話など新しいガジェットを紹介します。T-MobileのG1は、Androidは良いんだけどハードウェアはあまり好きじゃないそうです。

Mac Automation Made Simple(http://www.peachpit.com/podcasts/channel.aspx?c=75c14580-d158-4574-9949-ea733af77766)

Automatorの解説。私はAutomatorをあまり使ってないのですが、活用のヒントが見つかればと思って聞いています。

HTML5で導入予定のvideo要素について

HTML4ではimg要素で画像ファイル(pngやjpg)を埋め込むことができますが、これと同じように動画(movやmp4)をHTMLに埋め込めるようになります。


動画を表現する要素をHTMLが直接サポートすることで動画を調節するパラメータをHTML中に書いたりJavaScriptから操作できるようになるため、HTML4までで使われていた「objectタグ、またはembedタグとプラグイン」という方法に比べてWebアプリケーションでの動画の扱いが便利になるはずです。

videoを使ったサンプルとか

Firefox
http://builder.japan.zdnet.com/sp/firefox-3-for-developer-2008/story/0,3800087566,20379994,00.htm
Safari
http://webkit.org/blog/140/html5-media-support/
Opera
http://dev.opera.com/articles/view/a-call-for-video-on-the-web-opera-vid/

あと http://homepage.mac.com/jgoamakf/d.hatena.ne.jp/20081026/index.htmlニコニコ動画風にコメントを流せる動画プレーヤーを作ろうとして、途中で力尽きたのを置いておきます。いろいろ調べているうちに疲れてしまった。

  • Safari 3.1, Mac OS X 10.5.5でしか動きません(もう少し経てばvideoが使えるFirefoxOperaも出て来るはずですが)。
  • 再生位置を調節するバーは、停止中のときしか使えません
  • コメントを表示するのはbodyのonloadではなく、videoのonloadイベントで行なっています。videoの読み込みが終わらないと動画の長さが分からないようです。
  • 「読み込み中」表示は作ってないのですが、とにかく待ってみて下さい。

DropboxとEmacs

Dropbox上のテキストファイルをEmacsで直接編集してしまうと

  1. バックアップファイル(ファイル名の最後に~が付いたもの)
  2. 自動保存ファイル(ファイル名の前後に#が付いたもの)

Dropboxに作られてしまうので、これを避ける設定を探してみました。Mac OS XCarbon Emacsで確認しています。

Dropbox」がパスに入っているファイルにはバックアップを作らない

(setq backup-enable-predicate
      (lambda (name)
	(not (string-match "Dropbox"
			   name))))
 

Dropbox」フォルダ以下のファイルの自動保存は、/tmp/jgoamakf/以下に作る。

(setq auto-save-file-name-transforms '((".*/Dropbox/.*" "/tmp/jgoamakf/\\1" t)))