Perl

Time::Piece(Time::Seconds)のONE_MONTHでうっかりやってしまった

「2011-10-01 00:00:00」の一ヶ月前のTime::Pieceオブジェクトを取得したいというような場合に「$t -= ONE_MONTH」みたいなコードを書いたら意図しない結果になってしまった。詳しくはhttp://blog.clouder.jp/archives/000409.htmlに書いてある通り。以下は…

AnyEventサンプルその6

AnyEvent::JSONRPC::Liteから要点を抜き出す。サーバ内部のcondvarをrecvしている箇所。 サーバ側 use strict; use warnings; use AnyEvent; use AnyEvent::Handle; use AnyEvent::Socket; use Data::Dumper; tcp_server '127.0.0.1', 8888, sub { my ($fh) …

AnyEventサンプルその5

AnyEvent::Handleの扱いに苦労した。 ioやtimerのヲチャー変数のようにundefでも行けた。参照カウントが残っているとどうもよくないのかしらね。AnyEvent::JSONRPC::Liteでもweaken $handleとやっている部分がどうも今ひとつ理解できずにいたのだが、大事だ…

AnyEventサンプルその4

いろいろと書き方がある?ので苦労する。$handle->destroyするということはソケット接続を切るということでもあるので、どの時点できるのかをきちんと通信を頭の中に思い浮かべないといけない。 サーバ側 use strict; use warnings; use AnyEvent; use AnyEv…

AnyEventサンプルその3

AnyEvent::HandleやAnyEvent::Socketを使う。今回はtelnetを使わないでtcp_connectを使ってみた。 サーバ側がエコーバックする時に改行文字を入れないとデッドロックしてしまう部分ではまった。line形式のデータのやり取りでは改行が必須なのかな。 サーバ側…

AnyEventのサンプルその2

AnyEvent::Handleを使って対話するサーバを書く サーバを立ち上げてtelnetでアクセスすると名前を聞かれるので答える。次に年齢まで聞いてくるので答えます。それで対話が終了しサーバの方から接続を切ってきます。味噌はIO監視の中でさらに監視をしていると…

AnyEventのサンプル

最近何も書いていなかったのでAnyEventの復習でお茶を濁す。 AnyEvent::Introにも載っているサンプル。 普通に標準入力からの入力を待ち受けるスクリプトとどう違うの?というような疑問を持ってしまうサンプル。 use strict; use warnings; use AnyEvent; u…

AnyEvent::JSONRPC::Liteを使う。

JSONRPCサーバを立ててクライアントからのリクエストを非同期で返したいという課題 サーバのスクリプトは以下の通り。 use strict; use warnings; use AnyEvent::JSONRPC::Lite; use Data::Dumper; my $cv = AE::cv; my $server = AnyEvent::JSONRPC::Lite::…

AnyEvent::Handleのドキュメントを日本語訳に。

キューの理解とか、イベントループの理解とかまだまだ浅いのが日本語にも出てしまっているかもしれませんが、一助となれば幸いです。誤訳はあると思うので、元のサイトも確認してネ。文書の整形はこれからしていきます。 http://search.cpan.org/~mlehmann/A…

ある期間の日数を求める

Date::CalcモジュールのDelta_Days関数を使う。 普通の感覚なら2010年は1/1〜12/31のことで、365日あるものと思う。 プログラムでは都合上最後にインクリメントしないといけない。 use strict; use warnings; use Date::Calc qw/Delta_Days/; my @from = qw/…

HTTPヘッダの取得

LWPとHTTP::Requestを使う use strict; use warnings; use LWP; use Data::Dumper; my $ua = LWP::UserAgent->new; my $req = HTTP::Request->new(HEAD => 'http://www.care-service.jp'); my $header = $ua->request($req); #print Dumper $header; print $…

HTTP::Requestを使う

コマンドラインからWEBアクセスをしたい。Basic認証のかかったページのデータを取得したいという時のサンプル use strict; use warnings; use HTTP::Request::Common; use LWP::UserAgent; my $name = "YOURNAME"; my $pass = "YOURPASS"; my $ua = LWP::Use…

モジュールを作る人と使う人

本屋をうろついていたらこういった本を発見。 役に立つモジュールを作って公開したいという気持ちは多々あるが、とりあえずは「モジュールを使う人」をもっと深く掘り下げなければならない。。さすが!と言わせる Plagger徹底攻略術posted with amazlet at 09…

これはいい本

Web Client Programming With Perl (A Nutshell handbook)posted with amazlet at 09.10.15Clinton Wong Oreilly & Associates Inc 売り上げランキング: 484519Amazon.co.jp で詳細を見る

packとunpackまわり

perlpacktut - pack と unpack のチュートリアル(日本語)

用語の定義

言葉の意味がイマイチ曖昧でしたが、書いてありました。 文字(キャラクタ:いわゆる「字体」のこと?) 文字は多少定義しやすいものです。文字はフォーマットに欠いている記号の抽象的な説明です。UnicodeにはLATIN SMALL LETTER A (a, a, a など) と呼ばれ…

DBI

DBIモジュールを使ってインサートクエリを発行する

アルファベットのコードポイント、コード表

文字 10進数 16進数 文字 10進数 16進数 文字 10進数 16進数 a 97 61 b 98 62 c 99 63 d 100 64 e 101 65 f 102 66 g 103 67 h 104 68 i 105 69 j 106 6a k 107 6b l 108 6c m 109 6d n 110 6e o 111 6f p 112 70 q 113 71 r 114 72 s 115 73 t 116 74 u 117…

文字コード関連

perldocまわりを読む アルファベットを10進数と16進数に変換する。 用語の定義 packとunpack

Perl文字コード関連のメモ

「まるごとPerl」に書いてある「まるごとEncode」から開始 Perlは内部的な文字コードをUTF-8で処理している ASCIIと上位互換なのはUTF-8(自分で具体的に説明して、と言われるとワカリマセン) UTF-8では1文字につき3オクテット(バイト) utf8プラグマとbetesプ…

JSONモジュールでdieした場合でも処理を止めない。

例外処理の使い方とかイマイチ理解していなかったけど、やっぱり大事ということに気づいた。 #!/usr/bin/env perl use strict; use warnings; use JSON; use Data::Dumper; my $json = <<'EOT'; { "foo" : [0,1,2], "bar" : [3,4,5] }, EOT my $obj = ''; ev…

Facade

use strict; use warnings; { package Database; use strict; use warnings; sub new {die;} sub select_username_from_db_where_mailaddr_equal { my ($class, $mailaddr) = @_; if($mailaddr eq 'admin@hoge.com'){ return "Watasi wa kanrinin"; } else {…

Visitor

再帰の部分で苦しむ。シーケンス図を描くことで(本にも載っている)掴みやすくはなる。ShallowCopyとは何なのかDeepCopyとは何なのかとかが少し理解できていないと苦しい。なぜShallowCopyなのかもしくはDeepCopyなのかが分っていれば楽なのだろうけれどそれ…

Decorator

理解の足らない部分が見えてきたけれど、兎に角23パターン全部やってみる。 use strict; use warnings; { package Display; use strict; use warnings; sub getColumns {die;} sub getRows {die;} sub getRowText {die;} sub show { my ($self, ) = @_; for(…

シュワルツ変換

mapやgrepがいまいち使いこなせていなかったけれど少しわかった気がする。 use strict; use warnings; my $date = [ ["2009-02-23", "a"], ["2009-02-23", "b"], ["2009-02-21", "c"], ["2009-02-24", "d"], ["2009-02-23", "e"], ]; ######################…

Compositeパターン

やはり再帰に苦手意識がある。以前schemeを少しかじってみたのが救いで、そこいらをやりこめば苦手意識も消えるだろうと思っている。 use strict; use warnings; { package Entry; use strict; use warnings; sub add {} sub printList {die;} sub toString …

Strategy

久々のエントリ。もう一つは時間の都合で移し変えず、同じstrategyで勝負しています。 use strict; use warnings; { package Hand; use strict; use warnings; my $GUU = 0; my $CHO = 1; my $PAA = 2; my $hand = [ Hand->new($GUU), Hand->new($CHO), Hand…

ジャンケンのアルゴリズム

Strategyパターンを練習していて出てきたジャンケンアルゴリズム。。いまさらながらプログラミングっていうのはこういったアルゴリズムを生み出すことを言うんだなと。まだまだ修行が足りません。 use strict; use warnings; { package Hand; use strict; us…

Bridgeパターン

use strict; use warnings; { package Display; use strict; use warnings; sub new { my ($class, $impl, ) = @_; my $self = { impl => $impl, }; return bless $self, $class; } sub open { $_[0]->{impl}->rawOpen(); } sub print { $_[0]->{impl}->rawP…

Builderパターン

use strict; use warnings; { package Director; use strict; use warnings; sub new { my ($class, $builder) = @_; my $self = { builder => $builder, }; return bless $self, $class; } sub construct { my $self = shift; $self->{builder}->makeTitle(…