はちゅにっき

こっちのブログはまったり更新

Perl

GrowthForecast のバックエンドに PostgreSQL を使う

デフォルトで SQLite が利用できるし、たぶん得する人はいないと思うけれど、いろいろな理由で PostgreSQL しか選択肢がなかったので、PostgreSQL でも動くようにちょっと手を加えてみました。 といっても、CREATE TABLE しているところを PostgreSQL に対応…

2段階認証を実装したい

ちょっとした理由から Google などで使われている 2段階認証を実装してみることに。 Google の 2段階認証の場合はワンタイムパスワードを生成に、以下のスマホアプリを利用することができますので、今回はこのアプリに相乗りする形での実装を目指しました。 …

Perl の定数畳み込み

当然だけれど、定数の畳み込みが発生するのは constant モジュールを利用して宣言した場合のみですね。

64bit unsigned int を pack したい

ただし 32bit 環境で。

GitHub の Markdown Rendering API を Perl で手軽に利用したい

と思ったので、昔つくった Text::Markdown::GFM::Lite というのをちょっと手直ししてみると同時に Minilla を使ってみました。 Text-Markdown-GFM-Lite https://github.com/hatyuki/p5-Text-Markdown-GFM-Lite

Perl でプロセスの待ち合わせをする

たとえば以下のようなプログラムを書いて #!/usr/bin/env perl use strict; use warnings; use feature qw/ say /; use Parallel::ForkManager; use Time::HiRes ( ); my $process = 10; my $pm = Parallel::ForkManager->new($process); for (1..$process) …

placehold.it みたいなやつを作った

Web サイトのレイアウトを考えるときに、placehold.it や placehold.jp とかを使うと こうやって HTML を書くだけで、手軽に指定したサイズの画像が手に入ってすごく便利。 だけど、頻繁にアクセスが必要な場合や、社内のネットワークから出れない、出たくな…

Perl と JavaScript 間で RSA 暗号を使いたい

サンプルが見つからないってことは、普通はやらないことをやろうとしているんだと思う。 ということで、以下のようなことをしてみたかったので、試してみました。 Client (JavaScript) 側で RSA 鍵 (秘密鍵・公開鍵) を生成 公開鍵を Server (Perl) に POST …

HTML5 の canvas をさわってみた

仕事をしている時、ちょっと QR コードが欲しくなったけれど、手軽に生成できるサイトが見つけられなかったので、HTML5 の練習も含めて作ってみることにしました。 作ったのはこんな感じ。 Zebra http://qr.magicalhat.jp/ github https://github.com/hatyuk…

jperl と jcode.pl から卒業する

何をいまさらな話題ですが、文字コードが EUC-JP が主流だった時代に作られた jperl と jcode.pl に依存しているレガシーなシステムをモダンな Perl に書き換える場合には、Encode に加えて Encode::EUCJPMS を使うと簡単でした。 というメモ。 Encode-EUCJP…

WebSocket を使って Amon2 でチャットプログラムを書いてみる

ずいぶん前ですが Amon2 が WebSocket に対応したということで、今更感のあるチャットプログラムを書いてみることに。 今更とは言いつつも社内では IRC を使うことができないので、ちょっとしたメッセージがやりとりできるものを作ってみようかなと思い、そ…

Net::SSLeay がインストールできないときは

OS って 1回セットアップすると、あまり触らなくなるから、すぐ忘れちゃうんだよね。。。 cpanm などで Net::SSLeay をインストールしようとして "openssl/err.h" がないよ!と怒られたとき*1は # aptitude install libssl-dev *1:SSLeay.xs:153:25: fatal e…

GrowthForecast つかってみた

なんかすごくグラフを作成したい要件があったので、id:kazeburo さんが開発している GrowthForecast をつかってみました。 GrowthForecast https://github.com/kazeburo/GrowthForecast いつも通りメモだよん。 GrowthForecast を Clone する App::gh *1 を…

Apache Killer をかいてみる

すっごい久しぶりに日記を書こうかと。 Apache Killer が騒がれてから、ずいぶん時間も経ったのでちょっと前のネタを投稿。 「うちのサーバも Apache Killer に対処しなきゃね。」 と騒いでいた頃に、検証用のために Apache Killer をダウンロードしてみたん…

FurlX::Coro を使ってみたかった

節電対応で休日が日・月になった hatyuki です。ということで、明日がおやすみ!「DB から引っ張ってきた 5,000 件くらいの URL が、全部 HTTP Status Code 200 を返してくるか調べたいんだけど。」 という、なさそうでやっぱない依頼をうけたのでささっと書…

perlbrew 環境下で Alien::SVN をインストールする

どうしても Perl *1 から Subversion を操作する必要があったので、どうやら一般的なモジュールのようなので、以下のモジュールを使ってみることに。 Alien-SVN http://search.cpan.org/~mschwern/Alien-SVN/ と思ったら perlbrew 環境下ではすんなり cpanm …

Ark + DBIx::Skinny + Text::Xslate (+Tiffany) で NoPaste 的な何か

というわけで、だいぶ前につくってみたものですが、恥ずかしながらアップロードしてみたり。 いろんな機能を使うために、いろいろと遠回りしてたりもします。 Ark-Paste http://github.com/magicalhat/p5-ark-paste Catalyst + DBIC (+ Template-Toolkit) に…

Shibuya.pm #14 にいってきました

今回のテーマは「IPAとJPAは違う団体です」ということで、IPA と JPA の両者が参加。 ということで、いつも通りてきとうなまとめ。 Perl 6 Language Update (dankogai さん) 大まかには Perl6 も Perl5 もあんまり変わらないよ 構文とかだいぶ違うようにみえ…

Xslate に入門しつつ Tiffany とか Ark とか

最近はもっぱら PHP を書いている magicalhat です。 それでもやっぱり Perl が好き。というわけで、id:gfx さんの新作 Xslate という新しいテンプレートエンジンが登場したとか、それがすごく速いとか、そんなウワサを耳にしたので入門してみることに。 つ…

PerlCasual#02 へいってきました

Twitter では訳あって hatyuki に改名した magicalhat です。 懲りずにまた遠方から参加させていただきましたので、超簡単にメモ。 てゆーか殴り書きれべるだけど。 オープニング Perl いいよね。CPAN いいよね。 Author のキャラクタを垣間見れるのがいい A…

DBIx::Skinny で update_or_create

ができたらいいなー。 と思ったので、作ってみました。 DBIx-Skinny-Mixin-UpdateOrCreate http://github.com/magicalhat/p5-dbix-skinny-update_or_create DBIx::Class だと、利用することも多いので Skinny でもあれば便利かな?と思ってみたり。 オマケと…

DBIx::Skinny::Iterator の値だって JSON で出力したい!

ほぼ↓のつづき。 DBIx-Skinny-Row の値を JSON で出力したい! http://d.hatena.ne.jp/magicalhat/20100118/1263745674 今度は Iterator クラスを奪ってみました。 結局同じようなやり方でごり押ししました。。。これで以下のようにかくだけで、JSON データ…

ReadLine で CPAN を便利に

otsune さんに ☆ をつけられるたびに泣きそうな magicalhat です。 小さなことですが、大きな励みだったりします。 ありがとうございます><って、なんか気づいたら1月なんですけど。 今年も底辺からがんばっていきたいと思います。よろしくおねがいします…

DBIx::Skinny::Row の値を JSON で出力したい!

から始まった、Row クラスをちょっと変わった方法で拡張するお話。 すごく特異なケースだと思いますが。。。 JSON に書き出すときに、できれば Row クラスから直接 my $itr = $model->search('table_name1'); while (my $row = $itr->next) { my $json = $ro…

DBIx::Skinny::SQL を PHP に移植してみました

まず最初に id:nekokak さん、ごめんなさい。 「DBIx::Skinny を使ってみました」 という日記を書くよりも先に「うわー。こんなモジュールが PHP でも使えたらステキだなぁ」と思ったので、勢いで、しかも勝手に (一部だけですが) 移植してみました。 ごめん…

MouseX::App::Cmd があったらいいな。と思った

そもそも「Casual Perler」のさらにその手前にいる気がしている magicalhat です。今回の記事は 「CUI アプリケーションを作るときには、App::Cmd というフレームワーク (?) をよく使っています。」 というお話と 「MouseX::App::Cmd が欲しかったので挑戦…

あぁ勘違い

Mouse (0.3? - 0.40) を使っていて 「Moose でできるし、できるんじゃないかなぁ?」 と思ってやってみたけれど、できなかったことを忘れないように書いておこぅ。 なんか、他にもいろいろあった (あるだろう) けれど、随時書き足せたらいいなー。 あ、あと…

Perl で Excel を Parse する

Perl で Excel を Parse するときのお約束といえば Spreadsheet-ParseExcel http://search.cpan.org/~jmcnamara/Spreadsheet-ParseExcel-0.54/lib/Spreadsheet/ParseExcel.pm ですよね! というわけで、今回の話題は Perl で Excel を Parse する方法につい…

Asynchronous Programming for (A)synchronous Communication

mala さんのセッション。 今話題の AnyEvent + Coro というだけあって、これまた大盛況でした。はやすぎて & はいれべるすぎて めもしきれなかった。ノンブロッキングにプログラミングしましょう。 ブロッキングする場所があるとそこでブロッキングしてしま…

Remedie: Building a desktop app using Perl, SQLite and jQuery

miyagawa さんによる Remedie セッション。 別の部屋で行われていた naoya さんのセッションも気になったー。 ローカルで動くソフトを作りたい 何を使って書く? 候補はたくさんある VC / C++ / C#。 マルチプラットフォームで動く wxWidgets。 Mac でしか動…