メメメモモ

プログラミング、筋トレ、ゲーム、etc

2010-04-01から1ヶ月間の記事一覧

Plack::Middleware::SessionのSYNOPSISで引っかかった件

http://search.cpan.org/~miyagawa/Plack-Middleware-Session-0.11/lib/Plack/Middleware/Session.pm SYNOPSISには下記のようなコードが紹介されています。 use Plack::Builder; my $app = sub { my $env = shift; my $session = $env->{'psgix.session'}; r…

utf8の扱い

下記のプログラムをutf8で書いてみます。 use strict; use warnings; my $str = 'テスト'; print length $str, "\n"; # 9 実行すると「9」が出力されます。length関数は「テスト」をバイトとして扱うので、 返す結果は「3文字」ではなく「9バイト」になる…

Acme::Lisp

http://search.cpan.org/~ambs/Acme-Lisp-0.03/lib/Acme/Lisp.pm 下記のようにLispの計算を評価してくれます。 use strict; use warnings; use Acme::Lisp; # 引き算 my $lisp_code = [ qw(- 1 2 3 4) ]; print eval_lisp($lisp_code) ,"\n"; # 再帰的なリス…

ユークリッドの互除法

ユークリッドの互除法をperlで書いてみました。 use strict; use warnings; { gcd(160,48); } sub gcd { my ($x, $y) = @_; my $c; while ($x > 0 && $y > 0) { if ($y > $x) { $c = $x; $x = $y; $y = $c; } print "$x, $y\n"; $c = $y; $x = $x - $y; $y =…

クイックソート

クイックソートを行なうプログラムをperlで書きました。 use strict; use warnings; { my @a = qw/3 2 0 5 8 3 4 1 3 2/; print join(',',@a) . "\n"; print "===================\n"; print join(',',sort(@a)) . "\n"; } sub pivot { my ($ar, $i, $j) = @…

ACME

CPANにAcmeという名前空間があることを知りました。 ACMEには、ネタ的なプログラムがあって、とても面白いです。 面白いだけじゃなくて、ソースコードを読むと、とても勉強にもなります。 いくつか紹介してみたいと思います。 Acme::Sneeze http://search.cp…

単純な画像掲示板

MENTAの練習で、単純な画像掲示板を作成しました。 MENTAの解凍とリネーム 下記の手順で解凍して、ディレクトリ名を変更します。 $ tar xvzf MENTA-0.15.tar.gz $ mv MENTA-0.15 simple_image_bbs $ cd simple_image_bbs プラグインの作成 各コントローラで…

簡単な掲示板

MENTAの練習で簡単な掲示板を作成しました。 MENTAの解凍とリネーム 下記の手順で解凍して、ディレクトリ名を変更します。 $ tar xvzf MENTA-0.15.tar.gz $ mv MENTA-0.15 simple_bbs $ cd simple_bbs MySQLのセットアップ 下記のテーブルを作成しました。 C…

マージソート

perlのsort関数はマージソートを使っているということなので、 勉強のため、perlでマージソートするプログラムを書きました。 use strict; use warnings; { my @a = (8,4,3,9,7,6,5,2,1); print join(',',@a), "\n"; print "===================\n"; print j…