Perl

#perlcasual に参加してLTしてきた

PerlCasual #06に、参加してきました。なにげに5年前の第1回のときから参加しているし縁のあるイベント。@yusukebe氏に感謝! 8月のYAPC::Asiaでは何も話せなかったけど、自分の開発環境についてアウトプットすることが全然なかったなーと思って、せっかくLT…

はてなブログAtomPub APIをOAuth認証経由で叩く

はてなブログAtomPub - Hatena Developer Center を使ってはてなブログの情報を取得したり投稿したりしてみる。 OAuth認証 はてなブログAtomPub を利用するために、クライアントは OAuth 認証、WSSE認証、Basic認証のいずれかを行う必要があります。 http://…

64通りのkamipoを出力する

発端 @Kamipo2014-04-22 21:06:52 via Twitter for Mac to @kamipo @sugyan2014-04-22 21:06:57 via YoruFukurou to @sugyan @KAMIPO2014-04-22 21:10:34 via Twitter for Mac to @kamipo @kamipO2014-04-22 21:10:59 via Twitter for Mac to @kamipo @kamIp…

helm-perldoc 0.04 での設定

helm-perldocを使ってインストール済みモジュールのドキュメントを参照する(carton対応も) - すぎゃーんメモ の続き。 id:syohexさんに諸々と取り入れていただき、carton環境への対応も簡単になりました。 (add-hook 'cperl-mode-hook 'helm-perldoc:carton-…

helm-perldocを使ってインストール済みモジュールのドキュメントを参照する(carton対応も)

インストール済みのモジュールたちから、perldocを引くためのリストを作る - すぎゃーんメモ を書いた後 id:syohexさんと相談させていただいた結果、きれいにモジュール一覧を取得する方法を確立していただき。 インストール済みのモジュール一覧を得る方法 …

インストール済みのモジュールたちから、perldocを引くためのリストを作る

helm-perldoc を使ってみたりしていて気付いたのだけど、Perlでインストールされているモジュールたちからperldocでドキュメント引くためのリストを作るのってけっこう難しい。。 シェルコマンドで @INC以下にある*.pmファイル、もしくは*.podファイルから生…

Time::Pieceでadd_monthsするときは月末の扱いに気をつける

現在のTime::Pieceの最新版は、1.27。 翌月は何月か、というのを得るのに #!/usr/bin/env perl use strict; use warnings; use Time::Piece; my $t = localtime; print $t->add_months(1)->mon, "\n"; というコードを書いていて、1月31日に実行したら3が返っ…

YAPC::Asia 2013 を終えて

YAPC::Asia Tokyo 2013 2009年の初参加以来の、5回目の参加となるYAPC::Asia。昨年は2日目で別の場所に迷いこんでしまったりしたけど、今年は全日程参加することができました。 特に発表することもなく、ただただトークを聴きにいってTwitterで実況したり感…

#perlcasual で再びライブコーディングさせていただいた

PerlCasual #05 : ATNDにて、@yusukebeさんに声をかけていただき、再びライブコーディングをさせていただいた。 前回やらせていただいたのは2年半以上前なのか… 第6回 yokohama.pm & Perl Casual でライブコーディングに挑戦してみた - すぎゃーんメモ 前回…

Carton環境でのflymakeとperl-completion

cartonを使って<PROJECT ROOT>/local以下にモジュールを入れて、それを使う前提で書いているファイルを編集していると、普通にperl -wcしても依存モジュールを見つけられなくてerrorになってしまうので、flymakeが思うように動いてくれない。 ので、Project::Libsを使ってf</project>…

SQL::Translator::DiffでDBスキーマに追従させる方法

#5「GitDDLまじイノベーティブ」 tech.kayac.com Advent Calendar 2012 | tech.kayac.com - KAYAC engineers' blog が便利そうだなーと思って。 でもGitと絡めなくても、Webアプリにおいて「現在の環境で使用するデータベース」と「有るべきスキーマの状態を…

perlbrewを利用したプロジェクトごとのPerl環境管理

整理するためのメモ。 よくある問題: プロジェクトごとの依存モジュールの管理 全環境共通でインストールするとモジュールのバージョンが分けられない local::libやcartonを使ってプロジェクト専用のインストール領域を作るのが良い しかし実行するPerlのバ…

#isucon2 のお手伝いをしました

昨年は参加者として出場して楽しませていただいた、ISUCON。 #isucon で優勝したチームのメンバーとして参加してた - すぎゃーんメモ 今年は奇しくも開催側の会社に転職したということで、参加者としてではなく運営側としてお題作りなど裏側に関わっての参加…

Perlしか分からなくてもNode.jsでHTTPサーバが書ける!

なんてこった…CPANモジュールをnode.jsで動かしてしまうライブラリ「node-perl」 - tokuhirom's blog GitHub - tokuhirom/node-perl: Node perl wrapper というすごいモジュールが出ているので、npmでコレをインストールします。 「Perl使いだからPlack/PSGI…

数十行の簡単なスクリプトでWebコンテンツの更新を検知し通知する

以前にも似たようなのは書いたのだけど。 某アイドルグループに、ついに待望のファンクラブが作られた。もちろんすぐに入会しました。 そこではその子たちのマネージャーさんが不定期に日記を更新してくれるのだけど、残念なことにRSSとかも無いし、自分でロ…

Test::Flattenでsubtestの初っ端で死ぬときのエラーが出力されない (追記あり)

@xaicronさんのTest::Flattenを使ってみている。 use Test::More; use Test::Flatten; subtest 'hoge' => sub { ok 1, 'fuga'; piyo(); }; done_testing; という、subtest内で死んでしまうようなテストの場合、proveを実行すると $ prove -v t/01_hoge.t .. …

AES復号化ベンチマーク

AES暗号を復号化する必要があってググってみたところ、以下の記事を発見。 狐の王国 perlによるAESベンチ さすがに6年も前の記事だし、自分でもちゃんとベンチマークは取ってみよう、と思って調べてみた。 Crypt::Rijndael - Crypt::CBC compliant Rijndael …

特殊なエスケープシーケンスを含む場合のJSONエンコード

JSON::Syckを使ったDumpでちょっとハマったのだけど、コレを使ってJSONエンコードを行うと、エスケープシーケンスがそのまま(?)出てしまって、微妙なかんじになる。 $ perl -MJSON::Syck=Dump -E 'say Dump({ hoge => "fu\x{1b}ga" })' {"hoge":"fu\ega"}多…

CP932など特殊な文字を含むHTMLをスクレイピングする

Shift_JISで書かれたHTML、例えば下記のような文書をスクレイピングする場合。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>title</title> </head> <body> <div id="contents"> <div>1.ほげ</div> <div>2.ふが</div> <div>3.ぴよ</div> </div> </body> </html> Content-Typeは下記のように返されるとする。…

Template Toolkitでwantarrayなものを使おうとしてハマった件

wantarrayで返り値を切り替えるようなものをTemplate Toolkitで使おうとしてハマった件。 ハマった例 #!/usr/bin/env perl package Hoge; sub new { my ($class, $arg) = @_; bless +{ data => +[] }, $class; } sub fuga { my ($self) = @_; return wantarr…

DayOne.appのファイルを整理する

DayOne.appを使いこなすために作ったもの、やっていること - すぎゃーんメモ以降もコレの通りにDayOne.appを使い続けているのだけど、投稿するたびに$HOME/Dropbox/Journal.dayone/entries/ディレクトリ下に新しくファイルが作られていき、ファイル数がかな…

Text::Xslate::Syntax::Kolonのテンプレート編集用モード

templateファイルの編集に適したモード設定とは。xslate-mode.elみたいなのってないんでしたっけ2012-03-29 10:45:26 via Twitter for Mac @sugyan Kolonシンタックスであれば,kolon-mode がありますね. URL2012-03-29 10:49:11 via YoruFukurou to @sugya…

WebService::Simple::Parser::JSONがUTF-8エンコードされたJSONで文字化けてハマった

簡単な例として {"name":"ほげ"} とUTF-8エンコードされている日本語を含むJSONを返すAPIがあったとして、WebService::Simpleからそれを取得して値を表示しようとしたとき。 #!/usr/bin/env perl use strict; use warnings; use Amon2::Lite; use WebService…

DayOne.appを使いこなすために作ったもの、やっていること

ゆーすけべー日記の記事あたりから周りでDayOneを使うヒトが増えて、自分も気になって使ってみた。 Day One | A simple and elegant journal for iPhone, iPad, and Mac. 基本的には「独りTwitter」なので、適当に短文を放りこんで蓄積していくもの。自分が…

Crypt::SSLeayがLANGの関係でインストールできないとき

あるLinux環境でCrypt::SSLeayをインストールしようとするとテストが通らない。 $ cpanm -v Crypt::SSLeay ... t/00-basic.t .... ok t/01-connect.t .. 1/8 # Failed test 'Net::SSL->new' # at t/01-connect.t line 28. # Connect failed: connect: 接続を…

特定のキーワードをim.kayac.comに通知するZNCモジュール書いた

IRCで自分の名前が呼ばれたときとかにiPhoneに通知してくれるようなやつ、いわゆるhilight2im的なもの。を、ZNCのモジュールとして作った。IRC Bouncer上で動かしておけば、weechatなどのクライアントからの接続が無い状態でも通知してくれるので便利。 リポ…

IRCの通知をirssiプラグインでGrowlかim.kayac.comに送る

自分はIRCクライアントとしてirssiを使っていて、これをさくらVPSで動かしてるサーバ上でTerminal multiprexer(screenとかtmuxとか)を使って繋ぎっぱなしにしておいて、この上でIRCを使うようにしている。 Irssi で、このirssiはPerlスクリプトでプラグイン…

Flymake時にPERL5LIBを通すシンプルな方法

2012-02-28: 少し追記しました今どきの(?)flymakeは賢くてflymake-perl-initとか自分で書かなくてもflymake-modeを有効にするだけでほとんどの設定を勝手にやってくれて便利。 flymake話まだひっぱりますよ - taiyoh独言 なので、Perlのflymakeの設定は (de…

Kamakura Perl Mongers テクニカルトーク #2 に行ってきた

少し日が経ってしまいましたが。 Kamakura Perl Mongers テクニカルトーク #2 - Kamakura Perl Mongers Kamakura Perl Mongers テクニカルトーク#2 : ATND 会場はこちらの記事で紹介された村式株式会社さんの古民家オフィス"ふくすけ"。和風で本当に素敵な古…

GNTPとRemoteForwardを使ってGrowl 1.3にリモートマシンから通知する

今更ながらMac OS X Lionを使い始めていて(マウススクロールが逆になったのはあまり問題なく慣れた)、そういえば10.7向けのGrowl 1.3以降ではGNTPがサポートされているから以前にチャレンジしようとして失敗したリモートマシンからの通知も簡単にできるよう…