読者です 読者をやめる 読者になる 読者になる

はちゅにっき

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

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 でしか動…

Perl Which perl

弾さんのセッション。 さすがは弾さんってこともあって、超満員でした。 Modern Perl Perl 4 (PHP) は忘れましょう。さすがにまだ使っている人はいないですね。 Perl 5.6 は Encode サポートがないのであまりオススメできない。 それでもメンテナンスはまだ…

OpenGL Programming with Perl

Perl は 3D プログラミングの夢をみるか 3D グラフィックスモジュールはあるの? CPAN にある。 Perl から OpenGL を利用するためのモジュール POGL OpenGL クロスプラットフォームな3DグラフィックスAPI対象OS: Mac OS X Leopard でしか確認してないないcpa…

Concurrent DB Access with Perl

tokuhirom さんのセッション。 これまた大人気のセッションでした。 RDBMS に並行にアクセスしたい。 Webアプリケーションでは、DB へクエリを投げて整形して〜 ということが多い。 何回かクエリを投げる場合、直列の場合は各クエリでブロッキングするのでレ…

endeworks での WebApp の作り方

エンド ワークス ではなくて エン「デ」ワークスです。 ENgineer DEsign works エンジニア募集中です。 事前に 特別なことをやっているわけではない。 あぁ、標準サイズなんだなぁと実感してもらえれば幸いです。 endeworks での開発 開発サーバは特に用意し…

FormValidator::LazyWay で検証ルールをまとめよう

vkgtaro さんのセッション。 講演者がいない!?というハプニングもありましたが、無事にスタート。 lazy-people 面白そうですね。 lazy-people のプロジェクト lazy は遅延 って意味ではなくて 怠けられる って意味 Form Validateor は CPAN にもたくさん上…

スケールするウェブアプリケーションを20分で作る方法

Q4M の開発者でもある kazuho さんのセッション。 RDB の Sharding について。 Sharding するときに問題になるのは非正規化。 Twitter とかで発言があった場合に、全員のとこに発言があったことを書き込む必要がある。 既存手法 eventual consistency 複数の…

LT まとめ

yusukebe さんが LT 全部に共通するすばらしいお言葉をおっしゃっていたので、それを借りて。 LT 全部総括してまとめ Yes, we can.

『Ficia』インフラと Perl にまつわるエトセトラ

Apache 運用についてのノウハウ。 まとめる側の集中力に問題がでてきた。。。 前提 Linux 2.6.29.x Apacche 2.2X mod_perl 2.0.4 ありがたいお言葉 推測するな。計測すべし。 ざっくり調べる ps top fork は書き込みがあるまで親プロセスと同じページなので…

Simple OR Mapper DBIx::Skinny

なんてゆーか PHP に移植してみたい。 むりそうだけど。 PHP って、これ!っていった ORM が本当にない。。。よね? DBIx::Class DBIC 重い DBIC の SQL って微妙 DBIC パフォーマンスを考慮した SQL を投げてくれるわけじゃない 複雑な Perl のデータ構造か…

優しいモダンな WAF の作り方

Angelos ネタ。 以前 WAF を作ったときにすごくお世話になったソースコード。 モダンな WAF の要素 Plagger のような拡張性 WSGI のようなサーバ抽象化 テスタビリティ Rails のようなフルスタック ユーザビリティ 最小構成要素 Engine -> Dispatcher -> Com…

CPAN Packager による RPM / Deb の自動生成

メモメモ。 依存関係などを解決しつつ自動で rpm / deb をつくるツール。 モジュールのインストールに1日かかっちゃったよ! cpan でいれてたら違うバージョンではいっちゃったよ! を解消したい。 既存ツールの問題点 既存ツールは依存関係を完全には解決し…

Event programing fun with AnyEvent and Coro

AnyEvent 面白そう。 というわけで、聞き入っていた。 # ってゆーいいわけ。 EventLoop なモジュールはたくさんある。 でも API はどれも違う。書き方が違い過ぎて、ある EventLoop なプログラムを、他の EventLoop へ移植できない。POE::Compornent には 25…

modern Catalyst

hide-k さんのモダン Catalyst 講座。 すごく漏れている場所が多いと思います。 # メモが追いつかなかった。。。 モダンな Catalyst use Moose; extends 'Catalyst' __PACKAGE__->config( ); __PACKAGE__->setup( qw/ ロードするプラグインとか / ); Catalys…

Perlハッカーのための遊べるPostgreSQL

メモメモ PostgreSQL の変遷 PostgreSQL 8.3 で性能が大きくアップ HOT という機能 などなど地道にVerUpしてきている PostgreSQL 8.4 SQL 再帰SQLのサポート 8.2以前との互換性について改善 暗黙のキャストに対する改善 移植性の改善 大規模対応 パーティシ…

「モダン Perl 入門」の入門

とりあえずメモ程度にー。 School Guardian をモダン Perl でつくったよ。 モチベーション Catalyst 5.8 CataMoose でつくる 特に API 化に力をいれる その中の悩みや葛藤について説明していきます 使いたかった技術 CataMoose API Web::Scraper TheSchwartz…

おまけ

Acme 大全 2009 買っちゃった。

YAPC::Asia 2009 にいってきました

スライドをコピペするんじゃなく、きちんと書きたいなぁ。 と思ったけれどやっぱりムリでした。ごめんなさい。 参加したのに、メモがないのは完全にスライド丸コピになりそうだったものや、メモが取りにくい内容だったものです。 # スライドがすごく分かりや…

ソースで拾った CPAN モジュールを local::lib を使ってインストールする

前の記事のおまけ。 DateTime はすごく重いらしいので、それを回避するため DateTimeX::Lite というモジュールを利用させていただきました。 詳しくは↓ DateTimeX-Lite http://mt.endeworks.jp/d-6/2009/02/datetime-xlite.html CPAN はこっち↓ DateTimeX-Li…

Perl でハードディスクの温度を定期的に Twitter にポストする

ちょっと Twitter での aoshiman さんの発言 が気になったので、Blog を見てみることに。 自宅サーバは極端に熱のこもる場所に設置してあるわけではないので、廃熱に関してはそこそこ大丈夫だと思っているのだけど、それでもハードディスクとかの温度は心配…

FindBin::libs をつかってみる

use FindBin; use lib "$FindBin::Bin/lib"; が use FindBin::libs; とかけます。べんり! 詳しくは CPAN で! FindBin-libs http://search.cpan.org/~lembark/FindBin-libs-1.41/lib/FindBin/libs.pm