LWP::UserAgentでクライアント証明書を指定する

こないだハマったのでメモ。

クライアント証明書がによる認証を行うサーバにLWP::UserAgentでアクセスしたかったのだが、パット調べてもわからなかった。結局perldocをちゃんと読めって言う話なんだけど・・・

まずCPANを見る

「cert」とかでページ内検索するとssl_optsというメソッドを発見。
ここに載ってるオプションは三つで

  • verify_hostname
  • SSL_ca_file
  • SSL_ca_path

どれもクライアント証明書指定のためのオプションではない。
ネットでけっこうな時間調べていても見つからない。。

その前にもっとちゃんと読むべき

LWP::UserAgentのperldoc(というか上のCPAN)を見返したら、

Other options can be set and are processed directly by the SSL Socket implementation in use.

他のオプションは使ってるSSL実装をみてね、って。

うん。

なるほど書いてあった。

  • SSL_cert_file

このオプションでクライアント証明書を指定するらしい。

このときは以下の感じでアクセスできた。

my $ua = LWP::UserAgent->new;

$ua->ssl_opts(
    verify_hostname => 0,
    SSL_cert_file => 'certs/client-cert.pem',
    SSL_key_file  => 'certs/client-key.pem',
);

my $res = $ua->get($uri);

こんな感じ。ドキュメントはちゃんとよく読みませう。。

perlわかんない

以下の場合にエラーになるのなんででしょうか

#!/usr/bin/env perl
use strict;
use warnings;

my $a = [1];   # $a は arrayref
$a->[0] = 999; # ok.

sub hoge {
    return \@_;
}

my $b = hoge(1); # $b も arrayref
$b->[0] = 999; # Modification of a read-only value attempted <- なぜ?

$aも$bもarrayrefです。
$aは代入可能ですが、$bは「定数を変更するな」といわれて代入不可能になります。
どういうことか、と思って調べていたら、以下のようなエントリを発見


perlでは関数引数は基本的に参照渡し」


な、なんだってー
参照渡しということは

sub fuga {
    $_[0] = 999;
}

fuga(1); # Modification of a read-only value attempted

なるほどエラーになりました
参照渡しであるならば上のは納得です

1 = 999;

がエラーになるのと同じと考えられます。
じゃ、関数内部の@_は何者なのだろう?普通の配列のように扱えているけど、
配列とは別物ということなのでしょうか(少なくとも挙動は違う)


ちゃんとperlsubを読んでみよう。。。

株式会社はてなに入社しました!

株式会社はてなに入社しました!

3月で前職を退職して、4月から株式会社はてなで働く事になりました。
金曜日に初期研修を終えて一息つくことができたので今回の転職について少しまとめようかとおもいます。

きっかけ

あ、ありのまま起こったことを話すぜ「俺は、はてブホッテントリを毎日眺めていたら、いつのまにかはてなスタッフになっていた」何を言っているのか(ry

f:id:hatz48:20120423023751j:plain

前職はいわゆるSIerで、社内の開発支援を行う部署に所属していました。大学の修士課程でソフトウェア工学を学んでいたこともあり、ソフトウェア開発を効率化する仕事に意義は感じていたのですが、もっと多くの人を楽しませるサービス開発をしたいという気持ちから、(勝手ながら)転職を考えるようになりました。


転職するのはそれなりにエネルギーを使いますし、どうせなら自分が面白いと思うサービスの開発がしたいと思っていました。そんなおりに(たぶん2011年の夏頃)はてながWebエンジニアの積極採用を行っていることを知り*1それなら受けてみようと思ったのがきっかけです。新卒と違って落ちてもショックを受けるだけで済むのでダメ元でした。
ただ、正直なところ採用してもらえるとは思っていなかったので、内定したあとの退職->引っ越し->入社->研修という流れはとても大変でした。ポルナレフじゃないですが、気がついたら京都にいた、という感じです。

はてなという会社

はてなという会社について何か書こうとも思うのですが、はてなの職場環境についてはかなり情報がオープンになっているので今更書くこともないかなーとか思います。
インターンの方のエントリとかが雰囲気が伝わりやすいんじゃないかと。

とりあえず美味しいオフィスランチとフリードリンク、無限うまい棒のおかげで太りそうです。なんとかしてください。

SIerからWeb業界への転職

きっかけのところで既に理由とか書いてしまいましたが、SIerからWeb業界に転職したことについてもう少し詳しく書こうと思います。


・・・と思ったのですが、眠くなってしまったのでまた別のエントリで書くことにします。

今感じていること

はてなに入って二週間ほどが経ち、自分の力不足をひしひしと感じています。
まわりが自分よりできる人ばかりという状況は、辛くもありますが同時にとても恵まれた環境だと思います。かなり焦りがあるのですが、まずは自分のできることから着実に、力をつけていきたいと思います。

はてなのサービスをより良くしていけるようがんばりますので、これからよろしくお願いします。f:id:hatz48:20120423024423j:plain

*1:今もやってる