handlename's blog

コード片など

perl

emacs でシェルの環境変数を全部読み込む

emacs 24.4.50.1 zsh 5.0.2 perl 5.18.1 emacs で普段使っているシェルの環境変数を引き継ぎたい。 exec-path-from-shell を使うのがいいらしいが、 使いたい環境変数が増えるたびに el ファイルに追加していくのはめんどくさい。 ちょっと古いやり方かもし…

YAPC::Asia Tokyo 2013に参加してきた

参加するのは今回で4回め。 今回はスピーカーとしての参加だった トークのページ 40分枠なのに30分ではなす内容は終わってしまったけど、質問をたくさんもらえたので命拾いした 自分が所属しているプロジェクトのこと(=自分が直接関わった物以外も含まれる)…

直前の発言を置換する IRC bot

タイポして投稿した時に handlename: 毛根な時間 handlename: s/毛根/もうこん/ みたいな感じで発言を訂正することがある。 Skype だと実際に自分の発言が修正されるので、IRC でもやってみた。 過去の発言を修正することはできないので、修正版の発言を再投…

IRC に issue 番号に反応する bot がいると捗る

IRC bot のはなし。 #123 みたいな文字列に反応して、 github の issue のタイトル github の issue の URL を返してくれる bot をつくったら思いの外便利だった。 #!/usr/bin/env perl use strict; use warnings; use utf8; use AnyEvent::IRC::Client; use…

マージ済みのブランチをまとめて削除する便利スクリプト書いた

git 1.8.1.1 perl 5.16.2 マージ済みのブランチを消したい。 リモートリポジトリにあるのもいっしょに消したい。 というのを叶えるために簡単なスクリプトを書いた。perl。 https://github.com/handlename/bin/blob/master/delete-merged-branches ドライラ…

大量のJSONをデコードする場合

全てつなげて一つのJSONにしたほうが速くなるんじゃないかと思ったんだけどそんなことなかった。 #!/usr/bin/env perl use strict; use warnings; use Benchmark qw/timethese cmpthese/; use JSON::XS; my @jsons = map { encode_json({ hoge => 'huga' }) …

Warn::Colorful というモジュールを書いた

printf デバッグをするとき、perl の場合 warn を多用する。 warn はメッセージといっしょに呼び出し元のファイル名/行番号も表示してくれるので 出力元の特定が簡単、なんだけど、 ファイル名/行番号表示に埋もれて肝心の値が見にくいことがあるので、 値 …

xslate-modeとtt-mode

練習でText::XslateとTemplate::Toolkitのテンプレート用マイナーモードを書いてみた。 https://github.com/handlename/xslate-mode https://github.com/handlename/tt-mode とりあえずタグの挿入とハイライトだけ。 名前が違うだけで同じ事しか書いていない…

perlで複数リストのintersect(積集合)をとる

こんなかんじ?先頭で空のリストはスルーするようにしてるけど別にいらないかもしれない。 最後にgrepしてる部分で == の条件をなくすと和集合になりますね。

Test::mysqldを永続化しつつメモリ上で動かす

Test::mysqld を別ウィンドウで立ち上げたら開発時の prove が快適過ぎる件 - Craftworks Tech Blog - Branch OSX で tmpfs 的なことをする方法 - unknownplace.org OSX で tmpfs 的なことを試してみる - すぎゃーんメモ を参考に、Test::mysqldを使い回しつ…

Ark::Plugin::Session::State::URIは携帯以外で無効になる

Arkのプラグイン、Session::State::URI。 ark-perl/lib/Ark/Plugin/Session/State/URI.pm at master · typester/ark-perl · GitHubSession IDをURIにのっけて管理するためのものだけど、これはPC(携帯以外)でアクセスすると勝手に無効になるので注意。60〜…

Teng で on_connect_do したい場合

Tengをnewするときには、接続に必要な情報のほかに、オプションをいくつか渡すことができる。で、そのオプションの中に on_connect_do というのがあって、その名のとおり、データベースに接続した際に実行するSQLを指定することができる。on_connect_do の処…

perltidyをPerl Best Practiceに即した形式にしてくれるパラメータ

perltidy、便利ですね。なにも考えなくても(見た目が)きれいなコードになおしてくれます。で、最近読んでるPerlベストプラクティスに、こんな設定例が書いてありました。 perltidy -q -l=78 # Max line width is 78 cols -i=4 # indent level is 4 cols -c…

sjisのファイルを直接grepしたかったから練習がてらperlで書いてみた

自分の要望として sjisのファイルをコマンドラインからgrepしたい 複数ファイルにまたがってgrepしたい 検索結果にファイル名と行番号を表示したい catでつないでnkf -wってすればできるけど、どのファイルかわからなくなる 練習のつもりでperlで書いてみた…

base64エンコードされた画像をデコードしてファイルに保存する

MIME::Base64 を使用。 perl v5.12.1 use MIME::Base64; my $image_base64 = '<base64エンコードした画像'>; # base64形式からデコード my $image_bin = decode_base64($image_base64); # ファイルを開く open $fh, '+>', '/path/to/file' or die "Cannot open : $!"; # ファイルをバイ</base64エンコードした画像'>…

Perlの配列とハッシュと参照

さんざんこんがらがったのでメモ。 ()と[]と{}と\の使い方。 配列 my @var = ( 1, 2, 3 ); print @var[1]; # => 2 配列の参照 # 参照なのでスカラーで受ける my $var = [ 1, 2, 3 ]; # 参照なのでアローで読み出す print $var->[1]; # => 2 これはこの書き方…

Test::mysqldのインストールに詰まったら

cpanmでTest::mysqldのインストールをするときに詰まったのでメモ。 mysqldその他がみつからない macportsで入れたmysqlを使っていたが、これだとcpanmからTest::mysqldをインストールするときに(というかテストをするときに)必要なものがいろいろと見つけ…

cpanmでarkをインストールするまで

まっさらな状態からcpanmでarkをインストールするまでの手順。本当になにも入っていない状態から入れたので、これだけやれば充分なはず。※ぼくはまともにperlを触ったことありません。なのでまっさらなのです :-p ※バージョンはこれを書いている時点のもの。…

Ark Advent Calendar : 2日目

2日目。今回もコードは書かないみたいです。 ユーザー 今回はJobeetが何をするかの確認ですね。 4つのユーザーについてのストーリーを確認していきます。 Jobeet は4種類のユーザーを持ちます: 理者(admin) Web サイトを所有し魔法の力を持つ ユーザー(user)…

Ark Advent Calendar : 1日目

Ark Advent Calender 2009なるものがあったのでやってみた。 とりあえす1日目。 初日はプログラム書かないらしい。 Arkのインストールとプロジェクトの設置あたりをやるんでしょう。きっと。 ちなみにうちの環境は Mac OS 10.6.2。 PHPはちょこちょこ書くの…