Subscribed unsubscribe Subscribe Subscribe

目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

URL文字列のエンコード

今日1番のはまりどころだった。 use URI::Escape; my $escaped_uri = uri_escape($raw_string); my $unescaped_uri = uri_unescape($encoded_string);

Dancerを試してみた 4

今回は設定に関してです。ここまで分かれば簡単なアプリケーションは作れるかな。後はデプロイに関しても調べなきゃいけないとは思うのですが、外部公開とかしない限りは組み込みスタンドアロンサーバで十分なのでしばらく放置します。テストに関しては時間…

Dancerを試してみた 3

ほとんどPODに書いてあるような内容です。ほぼ備忘録です。 ルートパスのワイルドカードマッチ ルートパスにはワイルドカード'*'を含むことができます。それぞれのワイルドカードに一致した内容はsplatを通して取得することができます。下記の例の場合、最初…

Catalystメモ

自分用Catalystの備忘録です。いつものごとく他の人には役に立ちそうにないです。 インストール Perl5.8のActivePerlレポジトリにしかパッケージが無いっぽいです。少なくとも5.10.1には無かったです。 ppm install Catalyst::Devel スケルトン作成 ※Perl\bi…

File I/Oとか

備忘録です。Perlベストプラクティスを読んで、ちょっと実験。前の会社のコードは基本方針全部破っていたなあとかふと思った。PerlのFile I/Oに関する基本方針 ファイルハンドルに裸のワードを使用しない 3項のopenを使用する open,closeエラー時は例外を発…

テスト駆動開発入門を Perlで写経してみた。 12

ついに加法 やったこと Bankクラスの仮実装 plusメソッドの追加 RubyとPythonでやったときはExpressionインタフェースを作ったのですが、今回今のところインタフェースが必要とは思えないので、作ってません。 lib/Money.pm package Money; use strict; use …

テスト駆動開発入門をPerlで写経してみた。 11

諸悪の根源 やったこと DollarクラスおよびFrancクラスの削除 冗長なテストの見直し 不要なコードを削除したのですっきりしました。 lib/Money.pm package Money; use strict; use warnings; use Carp; use version; our $VERSION = qv('0.0.3'); use overlo…

テスト駆動開発入門を Perlで写経してみた。 10

興味深い時 (times) やったこと times()メソッドをMoneyクラスに移動 等値性の評価をクラスではなく、通貨で行うようにした。 サブクラスはコンストラクタだけなので次回以降、取り除いていきます。 lib/Money.pm package Money; use strict; use warnings; …

テスト駆動開発入門を Perlで写経してみた。9

生きている時(times) DollarクラスとFrancクラスのコンストラクタを共通化 通貨単位を返すcurrency()メソッドの実装 times()メソッド内でのファクトリメソッドの使用 DollarクラスとFrancクラスでスーパークラスのコンストラクタを呼んでいますが、この処理…

テスト駆動開発入門をPerlで写経してみた。 8

オブジェクトの生成 今回は、クライアントコード側でDollarクラスやFrancクラスの内部実装を意識させないためにファクトリメソッドを定義しました。Moneyクラスのfranc()メソッドおよびdollar()メソッドがそれに当たります。原書ではMoneyクラスを抽象メソッ…

テスト駆動開発入門を Perlで写経してみた。7

りんごとみかん FrancオブジェクトとDollarオブジェクトを比較した際に単位が同じでも等値と判断されないように修正します。今回は、refを使用してクラス名を取得し、通貨を判定するようにしています。 lib/Money.pm package Money; use strict; use warning…

テスト駆動開発入門をPerlで写経してみた。 6

再度、すべてに対する等価性 今回やったこと DollarクラスおよびFrancクラスの基底クラスMoneyを作成 equals()メソッドおよび関連メソッドを基底クラスに移動 クラス間の重複を取り除いたので大分すっきりしました。あとはコンストラクタとtimesメソッドの重…

テスト駆動開発入門をPerlで写経してみた。 5

「フランク」に話す DollarクラスをコピペしてFrancクラスを追加しました。本来ならやっちゃいけない変更です。特筆すべきことはないです。 package Money; use strict; use warnings; use version; our $VERSION = qv('0.0.3'); 1; package Dollar; use stric…

テスト駆動開発入門をPerlで写経してみた。 4

今回はインスタンス変数を直接アクセスせずに比較できるように変更しています。ただ、インスタンス変数amountのプライベート化をどうすれば実現できる分からなかったので、運用回避という形をとっています。やろうと思えばアクセスできてしまいます。Perlの…

テスト駆動開発入門をPerlで写経してみた。 3

今回はequals()メソッドを定義してDollarオブジェクト同士の等値性を比較できるようにしています。あと、書き忘れていましたが1回目でis()のactualとexpectedが逆だったので合わせて修正しました。 lib/Money.pm package Money; use strict; use warnings; u…

テスト駆動開発入門をPerlで写経してみた。 2

今回は大した変更をしていません。 lib/Money.pm timesメソッドでDollarクラスを返すよう変更しました。 package Money; use strict; use warnings; use version; our $VERSION = qv('0.0.3'); 1; package Dollar; use strict; use warnings; sub new { my (…

テスト駆動開発入門をPerlで写経してみた。1

xUnitチックにテストが書けるTest::Classなるものがあることを技評の記事*1で知ったので、試してみました。 どうせ試してみるなら、『テスト駆動開発入門』の写経がいいかなと思いやってみました。Ruby、PythonはやったけどPerlは写経していなかったし、それ…

Dancerを試してみた 2

Dancerを試してみた 1 の続き、まだまだ基本事項。連休中は、山に籠もってPCが使えないのでとりあえずの内容を記述します。 HTTPリクエストのハンドリング /locationA に対するGETメソッドに応答するアクションを定義しています。 get '/locationA' => sub {…

Dancerを試してみた 1

PerlCasual#02の懇親会で教えてもらった軽量WEBアプリケーションフレームワーク Dancer(公式サイト: http://perldancer.org/)を試してみました。DancerってRubyのSinatraプロジェクトの移植として始まったみたいですね。Sinatra自体は使ったことないんでよく…

PerlからTwitter APIにアクセスしてみた。

とりあえず、PerlCasual#02を受けてのアウトプット第1弾。PerlCasual#02のライブコーディングに影響を受けてTwitter BOTを作るための前準備としてちょっとしたスクリプトとモジュールを書きました。基本構造はライブコーディングの例を参考にさせていただき…

PerlCasual#02に行ってきたよ。

一部セッションは、初心者向けじゃなかった気がする件について。それはさておき。 今まで自己流でやっていた部分が多かったので、今回基礎的な部分のテクニック等を聞けて勉強になりました。自分自身はCPANで詰まったことは無かったのですが、一般の人は結構…

MooseX::Getoptを使ってみた

Perlスクリプトをコマンドラインから実行する際、引数をパースしてくれる便利なモジュールがあるみたいなので試してみました。今回もしつこく、前回作ったメール送信クラスを使用してメールを送信するスクリプトを作成しました。 #!/usr/bin/env perl use st…

Mooseを使ってみた

Perlでもクラスを書きたいよねってことでMooseを調べてみました。オブジェクト指向の例題にある犬クラスとか猫クラスみたいなのじゃつまらないので、一昨日書いたEmail::SendのラッパークラスをMooseを使って書いてみました。Perldocっぽいものも一応書いて…

Perlでメール送信してみた。ついでにPythonも

ちょっと仕事でメールを送信するスクリプトを書かなきゃいけないみたいなので調べてみました。 Net::SMTP編 とりあえずググってみて、一番最初に見つけた方法がNet::SMTPを使う方法です。ちょっとSMTPサーバとやりとりしているあたりがくどい感じがします。 …

異動

カスタマーサポートから開発の仕事に異動しました。どうやらフロントエンドにPerlをバックエンドにPerlと(微妙に)C++を使ったwebシステムの開発につくようです。 PerlもC++もできれば避けたかったのですが、しかたないです。 人が足りてなさそうなC# + .net…