YAPC::Asia 2011 用タイムテーブル(モバイル用)作った
去年の反省(?)から、タイムテーブルはよく確認しておいたほうが良さそうだったので作っておいた。
http://linknode.net/yapcasia-timetable-2011/
項目を(タップ|クリック)で詳細が見られるようになっております。
マンガとキャッシュとスワイプとManga Swipe
404 Blog Not Found:perl+javascript - なんちゃってマンガロイドをみてなかなか面白いなぁと思ったけれど、やっぱりAjaxだとキャッシュ(ページの先読み)が効かないのでページをめくるときにラグがあってなんだかイマイチ操作性悪いなぁと思ったのでスワイプで見られるようにManga Swipe作ってみた。
もっと作りこめば面白いこと出来そう。
工夫してみたことろ
ページ先読み
ページ先読み(の代替手段)として、display:none;な画像を事前にダウンロードさせる形式。
一度読み込みが完了すればリクエストは発生しないのでページめくりがスムーズにできる。
雑感
やっぱりモバイル用にコマ割りしてないとセリフが小さくて読みにくい。この問題は個人ではどうしようもなくて、オリジナルがそれに合わせた形でないとお手上げ状態。
キャッシュに関しては通信量との兼ね合いで、画像を少なめにしてページを大量に用意するような方法であれば、しおり替わりにもできるし長編でも読破できそうな印象。
Test::Continuous(autoprove)をサーバにインストールするには
Test::Continuous(autoprove)とは
ファイルを監視して、変更があった場合に自動でテストを走らせる autoprove というコマンドラインツールを含む便利なモジュール
インストール
cpanm の --interactive オプションを使って Log::Dispatch::DesktopNotification をインストールしないようにする
$ cpanm Test::Continuous --interactive ... [Graphical notifications] - Log::Dispatch::DesktopNotification ...missing. ==> Auto-install the 1 optional module(s) from CPAN? [y] n
SSHFSが便利なのでメモっておく
随分前から使っているSSHFSがなかなか便利。
SSHFSとは
SSHFSはリモート(サーバ)のディレクトリをマウントしてひとつのボリュームとして扱えるようにするファイルシステムのことで、サーバ側ではsshdさえ設定してあればクライアントのセットアップだけで使えるようになる。
基本的にはDropboxからキャッシュ機能を引いたものと同じと考えても問題ないでしょう。Dropboxに見られると嫌な書類をおいておくのは気持ち悪い*1 / *2&容量面でMP3を置くのが躊躇われるので、そこそこ使い道はありそう。
セットアップ
サーバ側はSSHの設定さえしてあれば何もする必要はない(必要に応じてディレクトリを作っておくくらい)なので、クライアント側をセットアップ。
Linuxの場合は
sudo apt-get install sshfs sshfs host:/path/to/dir path/to/mount/point
だけ。
以下MacOSXの場合を紹介。
インストール
この2つをインストール。名前が酷似していてややこしいので取り違えないように注意。
macfuseがないと接続できないので必ずインストールしておく。
git push + さくらのレンタルサーバーで github pages ライクにデプロイする方法
static なサイトを作るにあたっては、「コミット + scp などでファイルを一気に転送」を繰り返すことがよくある方法だと思う。 github pages のように、 git push のみでできると楽なのでこの環境を構築してみた。
さくらレンタルサーバー以外でも使える方法なのでそこそこ応用が効きそう。
サーバに git 環境を構築する
% cd $HOME % mkdir tmp; cd tmp; % wget http://kernel.org/pub/software/scm/git/git-1.7.6.tar.gz % tar xvf git-1.7.6.tar.gz % cd git-1.7.6 % ./configure --prefix=$HOME/local % gmake % gmake install % vi $HOME/.profile
PATH に $HOME/local/bin を追加し、$HOME/.profile を読みなおす
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$HOME/bin:$HOME/local/bin; export PATH
bare repository を準備する
% cd $HOME % mkdir -p repos/www % cd repos/www % git init --bare
ローカルに戻って編集作業
$ git clone user@user.sakura.ne.jp:/home/user/repos/www $ cd www $ touch index.html $ git add . $ git commit -m 'initial commit' $ git push origin master
これで push された内容が反映されている。次回の push からは `git push` のみで反映させることができる。
簡単!
SQL文をテストする
書いたSQLのシンタックスチェックを自動化する
スキーマを書くときにはSQLを書くわけですが、作る過程では変更後のシンタックスが正しいか確認するのが意外と手間だったりします。
カンマ付け忘れや typo は自動でチェックしたいですね。
そんな時は Test::mysqld を使うと手軽に CREATE TABLE 文の文法チェックをテストに含めておけるので、
下記のようなテストを準備しておくとよさそうです。
t/sql/01_create_table.t
use strict; use warnings; use Test::mysqld; use Test::More; use DBI; # debian installs mysqld into /usr/sbin $ENV{PATH} = $ENV{PATH} . ':/usr/sbin'; my $mysqld = Test::mysqld->new( my_cnf => { 'skip-networking' => '' } ) or plan skip_all => $Test::mysqld::errstr; my $dbh = DBI->connect( $mysqld->dsn ); for my $file (glob "schema/*") { my @sqls = (sub { open my $fh, "<", $file or die $!; grep { not /^\s?$/ } split /;/, do{ local $/; <$fh> }; })->(); for my $sql (@sqls) { note $sql; ok $dbh->do($sql), 'CREATE TABLE'; } } done_testing;
App::cpanmigrate
前回エントリーに
App::cpanmigrate - migrate installed modules to new environment - metacpan.org
として出しました。
まだbashしか対応していませんが、他の環境用の pull request いただければ merge で対応します。
「え、シェルスクリプトなの?」
実行される本体はシェルスクリプトを exec (正確には bash -c)しているだけ(参考:How can I use bash syntax in Perl's system()? - Stack Overflow)ですが、
とのこと。
http://search.cpan.org/dist/Text-CSV-UniqueColumns/lib/Text/CSV/UniqueColumns.pm
たしかにコレは…!