ラベル perl の投稿を表示しています。 すべての投稿を表示
ラベル perl の投稿を表示しています。 すべての投稿を表示

2012/12/24

Bad arg length for Socket::pack_sockaddr_in - tcp socket communication by Perl

http://www.perlmonks.org/?node_id=642313

Perl を久々に触っていて、TCP 通信のコードを書こうと思った。ただ、自分がHACKしようと思っているソフトウェアはモダンなライブラリを使っておらず、低レベルなAPIを使っていたのでそれに合わせることにした。

そこで書いたのが以下のコードである。


このコードを実行すると「Bad arg length for Socket::pack_sockaddr_in, length is 14, should be 4 at invalid_tcp_code.pl line 15.」というエラーになる。なんでやねんと数十分悩み、よくよく pack_sockaddr_in関数のドキュメント を読んでみると、以下のようになっていた。第2引数には inet_aton 関数の戻り値を渡せとある。

Takes two arguments, a port number and an opaque string (as returned by inet_aton(), or a v-string).

要するにドキュメントはよく読みましょうね、、ってことで。。
動くコードの全体は以下の通りである。www.google.com に HTTP通信するコードだ。エラー処理は省略しているので注意。


2010/10/20

[PATCH] Auto/FetchTitle.pm default configuration changes

http://coderepos.org/share/changeset/38602

IRCで http URL が貼られたときにタイトルを自動表示するという処理はよく行われていて、IRCプロキシ tiarra にもそのためのプラグインが実装されている。だがそのいくつかのパラメータが今風じゃないなと思ったのでpatchを当ててコミットした。

- タイムアウト値のデフォルトを3秒から10秒にした
- 取得するHTMLのバイト数を最大4Kから64Kにして、その値を recv_limit として設定可能にした。全部 amazon.co.jp が悪い

ひとつめの変更は、リダイレクトを行うサイトも珍しくないので、3秒では貼られるサイトによってはタイムアウトが頻発するために行った。ふたつめの recv_limit の変更については、回線が細い人にとっては過剰な変更であろう。だからこの値は変更できるようにしておいた。

2010/01/01

Default answer 'yes' in CPAN?

http://d.hatena.ne.jp/Craftworks/20090415/1239762931

Perl のCPANモジュールをインストールするときに非常にうざいと感じるのが、依存モジュールをインストールする場合に以下のように聞かれる場合があることだ

---- Unsatisfied dependencies detected during ----
---- MIYAGAWA/XML-Atom-0.37.tar.gz ----
XML::LibXML [requires]
XML::XPath [requires]
Shall I follow them and prepend them to the queue
of modules we are processing right now? [yes]

これにデフォルトで 'yes' と答える方法がはじめのリンクでは複数紹介されているが、PERL_AUTOINSTALL='--defaultdeps' は効かなかったので、結局 yesコマンドを使っている。Perl Wizardの方々はこうしてらっしゃるのかしらん(´ー`; )

[ Update January 2nd 20:21:33 JST by m ]

sudo perl -MCPAN -e shell
CPAN> o conf prerequisites_policy follow
CPAN> o conf commit

tokuhirom さめの教えに従って上記を実行したら自動で入ったす!
これからはこうしておこう(`ー´)

2008/08/09

perl-mongers.org

http://perl-mongers.org/2008/08/catalystcontrolleratompub.html

Perl な世界に殴り込みを掛けてきました(ぶ

・・・という冗談はともかく、書いてみると、纏めることと説明することの難しさを実感した。雑誌の記事を執筆した感覚に似ている。そう、動作確認しながら、資料を確認しながら丁寧に書く感じ。アレ。

俺が技術的なまとまったことをアウトプットしようとすると、どうしてもこういう感じになってしまう。過剰に力が入ってしまうのだ。その点、気軽にアウトプットできている皆さんが羨ましかったりする。

----

Catalystのほんの一端しか触れていないわけだけれども、こうして自分の言葉にすることは意味があることだと思う。自分がわかっていることとそうでないことの境が明確になるわけだし、ネ(*´〜`)

2008/07/16

Catalyst::Manual::Tutorial

諸々の理由で Perl の MVC Framework である Catalyst を使うことになった。飯は C, C++, PHP で食べているけれども、Perlも嫌いではない。rss2imap のメンテナとかしてたわけだし、ね。

irc.lazy-people.org の方々に貴重な suggest や雑談をしてもらったお陰で、とりあえず環境はできた (Special Thanks to tomyhero)。 PHP なフレームワークのようにソースをざーっと追って動きを把握するとかは流石にできないので、ざーーっとマニュアルを読んでいる。

$ perl -MCPAN -e 'install Catalyst::Manual'
$ perldoc Catalyst::Manual::Tutorial

----

ところで、「Catalyst::Manual::Tutorial for PHP Users」というエントリを PHP 使いが perl-mongers.org に書いて殴り込むという案はどうか?(わら

# 石が1000個くらい飛んで来そうだよねwwww