Perl

さくらレンタルサーバーで動くWebアプリをArkを使って作ってみた

root権限なく、daemontoolsやmemcachedなどを使用せず、さくらレンタルサーバー スタンダードプランで標準的に使えるPerl CGIとMySQLだけを利用して動かせるWebアプリをArkで作ってみました。 http://sugyan.sakura.ne.jp/ リポジトリはgithubに Twitter OAu…

第6回 yokohama.pm & Perl Casual でライブコーディングに挑戦してみた

ネイバージャパン株式会社様のオサレなカフェにて開催されたYokohama.pm #6に参加してきました。 Yokohama.pm #6 x Perl Casual #3 を開催します - Yokohama Perl Mongers Perl Casual枠ということでゆーすけべーさんと一緒にWeb APIをカジュアルに使ってみ…

flymakeのsyntax-checkが異常終了しても無視するようにする

App::Optionsでrequired引数チェックをしているスクリプトでflymakeが Configuration error has occurred while running (perl -wc hoge_flymake.pl). Flymake will be switched OFF とエラーを吐いてしまい、一度そのバッファを閉じてまた開くと今度はemacs…

さくらのレンタルサーバーでArk+CGIのTwitterアプリを作る練習

せっかくさくらのレンタルサーバーを借りてみてるのにあんまりマトモに使ってなくてもったいなく、 全裸bot的な何かを作ろうと思っていたのだけどmecabのインストールがうまく出来ずずっと放置していて、 でもふと調べてみたらなんかできそうだったのでやっ…

exec-pathにshellのPATHを追加する

perlbrewを使っているのだけど、どうもflymakeでsyntax checkしようとすると"/usr/bin/perl -wc"を使われてしまっているらしく、モジュール読み込みでエラーがでてしまう。perlbrew用にshellの$PATHで追加しておくもの(デフォルトだと$HOME/perl5/perlbrew/b…

ハッシュの初期化の注意点

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $hashref = { hoge => 100, fuga => 200, piyo => 300, }; print Dumper $hashref; と、ハッシュ初期化時にkeyとvalueの組み合わせをまとめて指定することがあると思います。 $ perl hoge.p…

"cpanm -l"するとき"--no-uninst-shadows"で元々あるモジュールが消えないようにする

※追記しました! 最新版(1.0005以降)では起こりません とっても便利なcpanm。 "-l"オプションを使うと、local::libのように指定した任意のPATHにインストールできる。 けど気をつけないといけないことに、これをやると もともと入っていたモジュールが消えち…

Imagerのサポート形式を知らなかった

cpanm ImagerでインストールできてたからImagerってのが普通に使えるんだろう、と思っていたら Can't locate Imager/File/JPEGReader.pm in @INC ...みたいのが出てきていて何だこりゃ、と思ってググってみる。 http://e8y.net/mag/012-imager/ によると per…

Emacsで"*.t"ファイルに対してproveを実行する関数を書いてみた

unwind-protect: Emacs の中から prove *.tのときはmode-compileでperlじゃなくてproveを実行したい - (ひ)メモ のように設定すれば良いのだけど、せっかくなので少しくらいelisp分かるようになりたいし、ということでanything-projectのソースを参考にしつ…

特殊ファイルハンドル"_"

知らなかった。 404 Blog Not Found:perl - stat()、-X 演算子、そして _ ファイルハンドル 一つのファイルハンドルに対して複数回テスト演算子を呼ぶ場合は"_"で使い回せる、ということか。 $ ll total 16 drwxr-xr-x 2 sugyan staff 68 6 4 20:26 fuga -rw…

Crypt::DHをインストールするために

Net::OpenID::Consumerとか入れるためにCrypt::DHが要るのだけど、これが普通に入れようとするとテストが途中で止まってしまう。 [Perl] Net::OpenID::Consumerのインストール(Math::Pari利用) Kawanet Blog II/ウェブリブログ で、Math::BigInt::GMPがあ…

Twitterの新しいStreaming API「ChirpUserStreams」がすごすぎる件

最近発表されて、一部で話題を呼んでいるTwitterの新しいStreaming API「ChirpUserStreams」。 まだdeveloperへのpreviewリリースということでプロダクトに使うようなことはできないけど。 http://apiwiki.twitter.com/ChirpUserStreams 今までのStreaming A…

Plack::Loader::RestarterとPlack::Loader::Shotgun

よく知らないまま、はじめてplackupを使ってみていたのだけど、ちょっと困っていたので何気なく呟いてみたら… sugyan plackup -R が若干負荷が高くて膝の上にMacBook載せて作業するには熱くなりすぎる…! 2010/04/03(土) 15:38:34 miyagawa @sugyan try plac…

Socketとかがよくわからずハマったメモ

Test::TCPを使って何故かハマった http://d.hatena.ne.jp/tokuhirom/20080817/1218953905 を見つつ、試しに書いてみた #!/usr/bin/perl use strict; use warnings; use Test::TCP; use IO::Socket::INET; test_tcp( client => sub { my $port1 = shift; test…

AnyEventでechoサーバ

まだAnyEventのあたりの使い方とか挙動とかを把握しきれていない。 ちょっと練習にAnyEvent::SocketとAnyEvent::Handleで超シンプルなechoサーバを書いてみた #!/usr/bin/perl use strict; use warnings; use AnyEvent::Socket; use AnyEvent::Handle; my $c…

10種類の記号で書くPerlワンライナーの作り方

java-ja温泉にて、Pythonのワンライナーがキモいという話が出ていて、Perlだってこれくらいキモいの書けるよ!とアピールしてみた perl -e '""!~("(?{".("{^(?)!(?^{^^!){.^^~~?}{!~}^}^.(!~}!..^^!~}!~~.~^}"^"^}((~))~~^{.{^~?}^!^}(~{^)?()^)^!).^}!()){.…

Twitterのfollowerをlistに追加するワンライナー

140文字以内に収まるように頑張った結果 perl -MNet::Twitter -e'$t->add_list_member(sugyan,listname,$_)for@{($t=new Net::Twitter traits,[API::Lists,Legacy],netrc,1)->followers_ids}'add_list_member に渡す引数(上記では sugyan, listname)はハード…

proveコマンドの結果をTwitterにPOSTするプラグインの書き方

まったくそんな需要は無いと思うけど。 package Hoge; use strict; use warnings; use base 'TAP::Harness'; use Config::Pit; use Net::Twitter; sub load { my ($class, $p) = @_; my $prove = $p->{app_prove}; $prove->{harness_class} = $class; } sub …

DeNA Technology Seminar #1 に行ってきた

あっという間に募集定員に達してしまった大人気イベントに運良く枠内に入り、行ってきました。 DeNA Technology Seminar #1 : ATND 話聞きながらとっていたメモ。結局出来の悪い板書写しみたいになってしまった orz http://search.twitter.com/search?q=%23d…

proveコマンドの完了をGrowl通知するプラグインを書いてみた

Test::ContinuousでGrowlにtest完了通知させるようにしてみる - すぎゃーんメモで、testが終わるたびにGrowlで結果を教えてくれるのが便利だなーと思って、でもそれを使わない普通のproveコマンドの場合も結果を通知して欲しい!! ということで作ってみた。…

Yokohama.pm テクニカルトーク #5 に参加してきた

Yokohama.pm テクニカルトーク #5 を開催します(追記あり) - Yokohama Perl Mongers 前回に引き続き、参加させていただきました。 今回もid:hirataraさんが素晴らしい記事を書いてくださっています。ありがとうございます。 今日は Yokohama.pm #5 の日です …

Test::ContinuousでGrowlにtest完了通知させるようにしてみる

Catalyst::Testを使ってみたらtestを1回走らせるのも時間がかかって、いちいち結果出るまで眺めていたくないし、Growlで通知してもらうのがいいよなーと思って、例によってTwitterで聞いてみた。 sugyan prove終了したら結果をGrowl通知してくれる仕組みって…

Module::Buildでのインストール先の設定でハマった

local::lib切り替えのときに、モジュールの入ったディレクトリ丸ごと移動とかしていて、その後あるモジュール入れようとしてインストールしたのだけど何故か移動する前のところにインストールされてしまっていて、何でだと思ったら、どうやらModule::Buildが…

MySQLのSET型をDBIx::Classから使ってみる

sugyan 複数のチェックボックスからの入力を受けてDBに格納する場合って普通どういう風にするものなんだろう?各チェックボックスに対応するTINYINTカラムを作る?項目ごとにビット割り当ててINTでまとめる?MYSQLだとSETというのがあるみたいだけど 2010/03…

「local::libを切り替える」を試してみる

前回までのあらすじ ようやくlocal::lib童貞を捨てた - すぎゃーんメモから1.5ヶ月ほど経過。 やはりプロジェクト毎にモジュールのバージョンを揃えておきたくて、各プロジェクト用にモジュールをインストールしている。 アカウント作成して切り替え、という…

ようやくlocal::lib童貞を捨てた

今まで話題はよく目にしていて、なんとなく便利そうだなーとは思いつつも、手を出していなかった、local::lib。 ちょっとモジュールのバージョンとか揃えないと面倒な状況になり、ようやく手を出した。 基本的な使い方としてはとにかく Mac OS Xでもlocal::l…

JPerl Advent Calendar 2009に参加しました

転職後さっぱりはてダ更新を怠っていますが、これだけは書いてみたかったので書きました。 Acme::EyeDropsでアナタも記号プログラマー! - JPerl Advent Calendar 2009 完全に自己満足な内容ですが。でも本当にAcme::EyeDrops作った人はすごいなーと思います…

Perl Casual Talks#1 で発表します

Perl Casual Talks#1 スピーカー登録 : ATND http://perl-casual.org/2009/11/casual-talks1-1.html せっかくなので今つくっているTwitermのことを喋ってみようかと思います。 たぶん終了後すぐに出かけることになると思うのでフライング的に資料をうpしてお…

2つのアカウント両方をフォローしているユーザーを数えるワンライナー

@zerna_botと@zenra_bot2の、両方をフォローしているユーザーはどれくらいいるのかと、ふと気になったので久々にワンライナーを書いてみた。 現時点でのそれぞれのフォロワーは $ perl -MNet::Twitter -le 'print Net::Twitter->new->show_user("zenra_bot")…

全裸bot2はワンライナーでも動く

かもしれない。あんまり検証はしていない。 参考文献 Cronを使わずに動く「全裸bot2」を作った - すぎゃーんメモ Perlスクリプトをワンライナー化するモジュールAcme::OneLinerを作ってみた - すぎゃーんメモ