WWW::Mechanize(LWP::UserAgent)でHTTPリクエストの前後に処理をはさみたい

WWW::Mechanizeを使うとリダイレクト処理とかよしなにやってくれて便利。
しかし、うまくクエリパラメータが渡されてないとかになってくると、やっぱり間の状況もしっかり見たくなる。

つまり、curl -Lv URL みたいに、リダイレクトを含めたリクエストログを出したかった。

my $m = WWW::Mechanize->new();

$m->add_handler("request_send", sub {
  my $req = shift;
  say "--- REQ -----------------------------------------------";
  say $req->as_string;
  undef; # 自前でHTTP::Responseを返すと実際のリクエストが飛ばなくなる。なのでundefを返しておく。
});

$m->add_handler("response_done" => sub {
  my $res = shift;
  say "--- RES -----------------------------------------------";
  say $res->message;
  say $res->headers->as_string;
  undef;
});

$m->get('http://wwwwwwwwwwwwwwwwwwwwww')


LWP::UserAgentはhandlerをいくつか持ってるので、その処理に合わせてコールバックを設定することができる。
これを利用して、リクエストの前後に処理を仕込むことができる。


・・・2016年らしからぬ記事を書いてる気がする。

contenteditableの領域に項番を出したいけど編集できないようにしたい

contenteditableにしておいてお前は何を言ってるんだと思われるかもしれないけど、同じことしようとすると絶対こう思うから。まじで。

https://gist.github.com/ryozi-tn/5496e56e9141a5559f5b

(ol|ul)とliで頑張るか、CSSでdomのattributeを参照して表示するかの2択かなーと思います。後者は項番に限らず任意の文字列を動的に出せるのが良い点かも。

JavaScriptで頑張って制御を入れてもいいんだけど、自分は辛かったのでやりたくなかったです。

contenteditableを(input|textarea)みたいなものだと思ってしまうと闇が待ってるぞ・・・

全く関係ないメモ

  • CSSで使える":before"にかかる要素のことを疑似要素(Pseudo-Elements)と呼ぶんだって。

他にも言えることだけども検索するとき、css selector beforeみたいなよくある単語だとノイズが多すぎるので、pseudo-elementとかより具体的なものを加えてさらに絞ると良い。



また使い捨てタグを作ってしまった・・・

仕事辛い

まだ作業途中だけど、仕事で必要になったので書いてる。
Wordpressの記事を作るとき、ある程度決まったフォーマット上を与えて特定の箇所だけ、自由にかけたりするようなものがほしくて、それを結構な数用意しないといけない。(現状は4つだが・・・)

jQueryのゴリ押しで出来なくもないんだけど、ちょっとした改修が面倒だと嫌だし、他のデータをもとにして動的に画面が作られる部分も多い。例えばタイトルを変えるとパンくずの末端にあるタイトル部分も変わるとか。
それに、特定の項目は可変長で増えるので、そのテンプレートをどこかで保持しないといけない。jQuery一本でやるとなると、JavaScriptに持たせるかしないといけない。(WebComponentsはまだ未来の技術みたいだ。)

続きを読む