タグ: Perl

「YAPC::Fukuoka 2017 HAKATA」に参加してきた

Perlを中心としたITカンファレンス『YAPC::Fukuoka 2017 HAKATA』に参加してきました。

会場は博多駅近くのLINE福岡。わたしはLINEを使ったことがない(セキュリティ上の懸念から「LINE使用禁止」なんて現場も多いですし…)ので馴染みはありませんが、こんなマスコットがお出迎えしてくれるユニークなオフィス。

「YAPC::Fukuoka 2017 HAKATA」に参加してきた

トークセッションは直接Perlに絡んだ話しから、そうでもないものまでバラエティに富んだ内容で思わず聞き入ってしまうものばかり。仕事の都合で午後は途中で抜けざるを得ませんでしたが、出来れば最後まで聞いていたかったですね。

[Perl] Proxy経由でHTTPS通信を行う

随分前の話しになりますが、PerlからProxy経由でHTTP/HTTPSなページへアクセスする必要が生じたので以下のようなスクリプトを組んでいたのですが、実行環境のActivePerlを数年ぶりにアップデートして最新の5.20系に変えたところ動かなくなってしまいました。


use strict;
use utf8;
use LWP::UserAgent;
use URI::URL;

use constant
{
    HTTP_PROXY  => 'http://111.222.333.444:8080',
    HTTPS_PROXY => 'http://111.222.333.444:8080',
};

if (HTTPS_PROXY) {
    $ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = 'Net::SSL';
    $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
    $ENV{HTTPS_PROXY} = HTTPS_PROXY;
}

my $ua = LWP::UserAgent->new;
$ua->proxy('http', HTTP_PROXY) if (HTTP_PROXY);

my $url = new URI::URL('https://example.com/');

my $response = $ua->get($url);
if ($response->is_success) {
    print $response->content;
}

「コンピュータに perl516.dll がないため、プログラムを開始できません。」云々のダイアログが表示されてしまい、エラーハンドリングでも拾いきれないので慌てて調べたところLWPまわりでSSLに絡む実装が変わったことが原因の模様。

[Perl] Perlからツイッターにつぶやく (Twitter API v1.1対応)

訳あってPerlからツイッターにつぶやきをPOSTする必要が生じ、大昔に書いたサンプルコードを引っ張り出して動かしてみたもののエラーでうまく動かない…。

調べてみたところ最近Twitter API v1.1なるものが導入されていてエンドポイントや認証方式が変わった模様。軽く仕様を眺めてみたところ一から実装するのは骨が折れそうだったので、ググッてみたところCPANで公開されている「Net::Twitter::Lite」モジュールに含まれる「Net::Twitter::Lite::WithAPIv1_1」は使えそうだったので試してみるとあっさり動いてくれました。

「さくらのレンタルサーバ」のディスク容量アップに伴うサーバアップグレード

昨夏に発表されていた「さくらのレンタルサーバ」のディスク容量アップに伴うサーバメンテナンスがわたしの契約しているスタンダードプランのサーバでもようやく実施されました。

コントロールパネルで確認出来るサーバ情報はメンテナンスの前と後とで次のように変化。

メンテナンス前
OSバージョンFreeBSD 8.1-RELEASE-p12 amd64
CPUWestmere E56xx/L56xx/X56xx (Nehalem-C)
メモリー容量5GB
ApacheバージョンApache/2.2.25
メンテナンス後
OSバージョンFreeBSD 9.1-RELEASE-p12 amd64
CPUIntel Xeon E312xx (Sandy Bridge)
メモリー容量18GB
ApacheバージョンApache/2.2.25

[Perl] PerlとJavaScriptの間でRSA暗号化と復号を行う

暇を見つけては社内で使うちょっとしたWebアプリケーションの開発を進めているのですが、その中でクライアント(JavaScript)-サーバ(Perl)間での暗号化・復号を行う仕組みが必要となったため公開鍵暗号方式のRSAによる実装にトライしてみました。

やりたいことの流れはこんな感じ。

  1. サーバ(Perl)側でRSA鍵(秘密鍵・公開鍵)を生成
  2. 公開鍵をクライアント(JavaScript)に渡す
  3. クライアント(JavaScript)側で公開鍵を用いて暗号化
  4. 暗号化された文字列をサーバ(Perl)に返す
  5. サーバ(Perl)側で秘密鍵を用いて復号

色々なモジュールを試してみたのですが、RSAといっても種類が色々あるようで(?)組み合わせによっては元の文字列を上手く復元出来ないケースもあり難儀しましたが、最終的にJavaScript側で「JSEncrypt」、Perl側は「Crypt::OpenSSL::RSA」を利用することで上手く行きました。

『秀丸スーパーライセンスパック』を購入

秀丸スーパーライセンスパック [ダウンロード]システム開発従事者をはじめ多くのユーザーに利用されており、私も10年近く愛用していてる定番のテキストエディタ『秀丸エディタ』。最近は仕事でゴリゴリにコーディングする機会は減りましたが、個人的に受ける案件や趣味でCやPerl、HTMLなどに触れることが多いわたしにとっては欠かせない存在でこれからも愛用し続けていくことでしょう。

そんな秀丸エディタは税込4,200円のシェアウェア。これまでは会社が一括購入して供与されたライセンスの下に使用していたのですが、これだとライセンスは会社の資産なので会社を辞めたり会社が潰れたりしたら使えなくなるぞ…ということでいつなにがあってもいいよう個人でライセンス購入することに。いゃ、別に今のところ会社を辞めるつもりはありませんし、潰れそうなほど会社が傾いているわけでもないんですけどね。(苦笑)