はてなブログはじめました
色々と機能が整ってるらしいので、乗り換え候補として始めてみました。PCからの編集は わかりやすいなーと思いつつも、iPhoneからみるとどうだろうと確かめてみたところ、
このようにサイズ最適化はされていないようなので、これからだなーと思いました。
dotcloudでNet::Facebook::Oauth2を使ったさいにハマりやすいかもしれないところ
最近流行のFacebook上で、お手軽にFacebookアプリをつくるために便利なModule Net::Facebook::Oauth2というやつがあります。
お手軽に使えるものを更にお手軽にdeployしたくて延々とdotcloudを弄っていたのですが、httpsがだめということでaccess_tokenがとれない。万が一ということもあって、Crypt::SSLeayとNet::SSLeay、IO::Socket::SSLをも導入してみたけど、コレでもダメ。
dotcloudさんもFacebookの前に敗れ去るのかなーとか思いつつ、dotcloud上にinstallしたNet/Facebook/Oauth2.pmをちょっと弄ってみたところ、69行目あたりの$responseをdumpした結果に
LWP will support https URLs if the LWP::Protocol::https module is installed.
ってでてた。通常のdotcloud logs xxxxではこれが吐き出されてなかったから、気がつかなくてハマりっぱなしだった。
LWP::Protocol::https を追加して無事認証終了。
YAPC::Asia 2011をへて
とかタイトルつけたけど、中身はあんまりYAPC関係ないかもしれません。
非公式後夜祭 in 大和路にて、いつものように他の参加者と話さずに只管食って終わりそうになって、「これじゃいかんよね」とさいきろんさんの隣にお邪魔して、iPhone4S弄っておりました。話すキッカケがなかったので…って、これじゃ意味がありません。
丁度隣席に弊社エンジニアの@karupaneruraが来て、LTやTALKについて色々とトークが盛り上がり始めたので、ここぞとばかりに色々とぶっちゃけ質問してました。斜め前にいるのが@nipotanさんだということに全然気がついてなかったのですが、まぁ大した事じゃない。
Q.LTってなんか外すと寒くなったりするーされたりして怖そう
A.外したりスルーされたりしても、5分程度ですむから大丈夫
Q.でもLTってトークネタむずかしくね?
A.初めての人が慣れるには良い場所。嫁自慢とかふるさと自慢でもなんでもいい。
Q.TALKに質問ってしにくいんですが
A.質問はどんどんすべき。質問がずれてる場合、講演してる人がそもそもイケテないトークの場合あるから気にしない。
Q.TALKの質問時間って数秒、あるいは数十秒でちょーみじかいんですが
A.TALKの時間ギリギリぴったりに、講演してる人がスライド作ってるのが原因。
自己紹介ばっかりで時間取られるっていうのは、そもそも自身の認知度が低いことを考慮して認知度を上げようと意識してる証拠であるとは思います。人に認知してもらう場合、予め名刺とか首から下げる名刺入れにTwitterアイコン印刷して差し込んでおけばいいらしいです。
しょーもない質問に応えてくれた、@tokuhirom @nipotan @TAKESAKO @miyagawa さんら諸氏の方々、ありがとうございました。
YAPC::Asia 2011 のまともなレポートは、他の参加者の人達が書くであろう素晴らしいエントリーをみてください てへぺろ☆(・ω<)
git pushでdeployな生活をつくる方法
時間が時間なので、さくっと。
gitでpushするとdeploy、というgitでソースコードなど管理してる場合にはかなりお手軽な反映方法なんだけど、その方法が綺麗にまとまってなかった。試行錯誤しつつようやく出来上がったのでメモとして残しておく。
作業した環境は、さくらVPS上のdebian。debianの導入周りとかはやってる人もおおいので割愛。
gitユーザをつくる
adduser --disabled-password git
su - git
リモートのgitリポジトリをつくる
mkdir ~/repos cd ~/repos mkdir Hoge.git cd Hoge.git git init --bare vim hook/post-receive #次の一文を足す (cd /home/git/www/Hoge; git --git-dir=.git pull) chmod +x ~/repos/Hoge.git/hooks/post-receive
deploy先をつくる
cd ~/ mkdir www/ cd www git clone ~/repos/Hoge.git
dotcloudでmixiアプリをつくる
さくらスタンダードプラン上にTengをいれるほうほう
Amon2ついでにTengいれようとしたら、sqlがどうもsyntax error起こしているようで入らない。sqlite3がそもそもさくらに入っていなかったので、それが原因かと思っていれてはみた。
wget http://www.sqlite.org/sqlite-amalgamation-3.7.2.tar.gz tar xvfz sqlite-amalgamation-3.7.2.tar.gz cd sqlite-amalgamation-3.7.2 ./configure --prefix=$HOME/local make make install
が、それでも無理だった。念押しで初期状態で入ってるDBD::SQLiteをcpanmで入れてみたけどそれでもダメ。SQL::Makerのバージョンも最新で特に問題はなさげ。こうなるとローカルではすんなり入ったTengをいじらねばなるまいかと、仕方なく、
cpanm --look Teng
で、あっさりと問題は解決。
- lib/Teng.pm
sub _insert { my ($self, $table_name, $args, $prefix) = @_; - $prefix ||= 'INSERT'; + $prefix ||= 'INSERT INTO'; my $table = $self->schema->get_table($table_name);
- lib/Teng/Plugin/Replace.pm
sub replace { my ($self, $table_name, $args) = @_; my $table = $self->schema->get_table($table_name); for my $col (keys %{$args}) { $args->{$col} = $table->call_deflate($col, $args->{$col}); } - my ($sql, @binds) = $self->sql_builder->insert( $table_name, $args, { prefix => 'REPLACE' } ); + my ($sql, @binds) = $self->sql_builder->insert( $table_name, $args, { prefix => 'REPLACE INTO' } ); $self->_execute($sql, \@binds, $table_name);$
insertのほうはprefix渡さなければ大丈夫なんだけど、replaceはそうもいかない。にしてもなぜコケるのかがわからない。やはりsqliteのバージョン問題なのかな。
Amon2をさくらスタンダードプラン上に設置する
ちょろちょろと作業しつつ、なかなか動かないので面倒で放置してたけど、気合いれて動かしてみた。予めローカルで作成しておき、ひと通りできたところで転送という形。
ローカル編
cpanm --mirror http://orepan.64p.org/ Amon2
amon2-setup.pl Hello
さくらスタンダードプラン故の宿命で、とりあえずextlibを掘って、そこに依存モジュール突っ込む。installdeps使ってみたけど、うまく入らなかったので只管errorlogとにらめっこ。
plackup -r app.psgi mkdir extlib cpanm --force -l ./extlib/ Foo::Bar
ひと通りファイルが入ったところで、app.cgi作成。もちろんこれも一筋縄ではうごかないので、とりあえず動くまで入れる。
#!/usr/bin/perl use lib qw(./extlib/lib/perl5); use strict; use warnings; use utf8; use Plack::Loader; use Plack::Util; use Path::Class qw(dir); my $psgi_path = dir("home", "bar"); my $app = Plack::Util::load_psgi('/'.$psgi_path.'/app.psgi'); Plack::Loader->load('CGI', port => 5000 )->run($app);
URLにこだわりたかったので、htaccessも追加。
RewriteEngine On RewriteCond %{REQUEST_URI} !^/app.cgi RewriteRule ^app.cgi - [L] RewriteRule ^(.*)$ app.cgi/$1 [QSA]
そしてHelloディレクトリ丸ごとさくらにあげる。
さくら編
とりあえず、ローカルでやったように、動くまで確認する。
cd ~/www/Hello/ cpanm --force -l ./extlib/ Foo::Bar
さくらスタンダードプランは、当日のエラーログをみるためには管理画面へアクセスしなければならないという面倒仕様なので、ブラウザとにらめっこしながらコンソール叩く。