はい、One Page Appsの@su_askaです。
今日はちゃんとPerlの話をしようと思います。
DropboxというとクライアントOSにインストールして使用するイメージが強いですが、自分のサーバー上でも利用したい場合もあります。
Linux用のパッケージもあるので全部同期して構わなければそれをインストールする方法もあるのですが、デーモンまで上げるのはちょっと大袈裟だなーというシチュエーションもありますよね!
例えば...
そんな時はdropbox-api-commandの出番です!(迫真
https://github.com/s-aska/dropbox-api-command
インストールの仕方や細かい使用方法は上記URLを参照下さい。
linuxライクな
API単体の操作はcurlでも可能ですがrsyncっぽい処理を自作するのはなかなか面倒です!
delete ( -d ), dry run ( -n ), verbose ( -v ) に作り手のこだわりを感じますね!!
> dropbox-api sync dropbox:/product/checker/src /tmp/product -dnv remote_base: /product/chrome-extentions/checker/src local_base: /private/tmp/product ** download ** skip background.html download /private/tmp/product/external.png download /private/tmp/product/icon-32.png download /private/tmp/product/icon-128.png skip icon.gif skip jquery-1.4.2.min.js skip main.js skip manifest.json skip options.html skip popup.html skip reset.css ** delete ** skip background.html remove background.html.tmp skip icon.gif skip jquery-1.4.2.min.js skip main.js skip manifest.json skip options.html skip popup.html skip reset.css
意外とこの手のプロダクトはgithubに置きっ放しで作者以外使い方がわからなかったりオプションの説明が抜けていたりするものも少なくないのですが、このプロダクトはすべてのコマンド・オプション・実行結果のサンプルをREADMEに張っていますし、helpサブコマンドから各コマンドの使用方法を参照することができます。
Dropbox API v1.0 対応の WebService::Dropbox をご利用下さい。
https://metacpan.org/module/WebService::Dropbox
すべてのREST APIに対応するメソッドがあり対応する名前がそのまま、日本語のエスケープ処理等気にせずdecodeされたutf8文字列でファイル名を投げれるので凄くストレスフリーですね!
明日は Werlのダメ人間 さんです。お楽しみに!
plackup -e "sub { use Data::Dumper;warn Dumper(@_);[200, [], ['ok']] }"
plackup -e "sub { [404, ['X-XRDS-Location', 'http://www.example.jp/xrds'], ['404']] }"
plackup -MDocLife::Pod -e 'DocLife::Pod->new( root => "./lib" )->to_app'
gistに上げてAPIをブラウザでアクセスしてCtrl-F
https://api.github.com/users/s-aska/gists (s-askaの所はあなたのIDにしてね!)
description埋めてないとこれでも探せないZe☆
Amon2::Setup::Flavor::MobileJP ! ※詳しくはamon2トラック参照
Amon2::Setup::Flavor::MobileJP !! ※大 (ry
Plack::MiddlewareでSession使う必要があり、
HTTP::SessionからURIに埋めるヤツを複写して使っていたのですが、
今はcpanに上げています。
Plack::Session::State::URI使うとcookieダメな子も安心!
※CookieいけるときはCookieで的な事まではしてないです、ごめんよみんな
enable 'Plack::Middleware::Session', %{ $config->{Session} }, state => Plack::Session::State::URI->new( session_id_name => 'sss', );
jsonの値MySQLに突っ込みたい時に xxx_json 的なカラムは自動en/decodeする的なコード
よくある_onをDateTimeにする奴とかと一緒な感じですね。 (詳しくはtengトラック参照)
やり方は色々あります、以下はあくまでサンプルという事でお願いします。
sub db { my $c = shift; unless ( defined $c->{db} ) { my $conf = $c->config->{DBI} or die "missing configuration for 'DB'"; my $dbh = DBI->connect(@$conf); my $schema = Teng::Schema::Loader->load( namespace => 'MyApp::DB', dbh => $dbh ); for my $table (values %{ $schema->tables }) { for my $column (grep /_json$/, @{ $table->columns }) { $table->add_inflator($column, sub { $_[0] ? decode_json(shift) : {} }); $table->add_deflator($column, sub { encode_json(shift) }); } } $c->{db} = MyApp::DB->new( dbh => $dbh, schema => $schema ); } return $c->{db}; }
このエントリーを見てくれた人の中には
「実は私まだPerl Mongerじゃ...」という方もいるかも知れません(居ないよ!!)
なので色々紹介してみましょう!!
みんなもどんどん書いてみよう!
今更感満載ですがこれが全部揃わないことにはperlの開発は始まりません!!
アプリ書く時にほぼ毎回全部使う奴ですね!!!
#perl-casual@freenode.netや各地PM、最近はTwitterもあるので気軽にやり取りできるようになりました。
まずはビールからという人はPMに顔を出すのが一番手っ取り早いと懐います、あとMySQL Casualとかいいと思います、私は泥酔して@myfinderさんにご迷惑を(ry
あとはPerl話沢山聴きたい時はYAPCですが年に一回でチケットが売り切れ続出なので早目にチェックするといいと思います、トークするとチケット無料です、やったね!(ry
1記事書かせて頂いた記念に自分の成果物を晒したいと思います!
来年もいっぱいなにか作ってると思います!!