まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

Perl ベースのウェブフレームワークである Mojolicious というものが出ていることを知りました。昔は CGI といえば Perl だったよなあ・・・と懐かしい想いにふけりつつ、 CentOS (6) 環境に Perl と Mojolicious を導入して、使ってみます。
2016080501



Mojolicious は Perl のパッケージマネージャーである CPANM を使って導入します。その CPANM や Perl の比較的新しいバージョンを使おうとすると perlbrew 経由で導入するのが楽なので、まずは perlbrew を導入します:
# curl -L http://install.perlbrew.pl | bash
# echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bash_profile

シェルを起動しなおした後に、導入した perlbrew を使って Perl (以下の例では 5.20.2)をインストールします:
# perlbrew install perl-5.20.2

導入した Perl( 5.20.2 ) を有効にして、バージョンを確認します:
# perlbrew switch perl-5.20.2
# perl -v

This is perl 5, version 20, subversion 2 (v5.20.2) built for x86_64-linux
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2015, Larry Wall
  :
  :

目的の Perl がインストールできたことが確認できました。次に perlbrew を使って CPANM をインストールします:
# perlbrew install-cpanm

導入した CPANM を使って Mojolicious をインストールして、バージョン(と動作)を確認します:
# cpanm Mojolicious
# mojo version
CORE
  Perl        (v5.20.2, linux)
  Mojolicious (7.01, Doughnut)

OPTIONAL
  EV 4.0+                 (n/a)
  IO::Socket::Socks 0.64+ (n/a)
  IO::Socket::SSL 1.94+   (n/a)
  Net::DNS::Native 0.15+  (n/a)

This version is up to date, have fun!

ここまでの作業で Mojolicious がインストールできました。では以下の内容で Perl のウェブアプリを作ります(webapp.pl という名前で保存します):
use Mojolicious::Lite;

get '/' => sub {
  my $self = shift;

  $self->render(text => 'ハローワールド!');
};

app->start;

以下のコマンドで作成したアプリを起動します:
# morbo webapp.pl
Server available at http://127.0.0.1:3000

3000 番ポートで HTTP サーバーが起動している、というメッセージが表示されます。ウェブブラウザでこのサーバーの 3000 番ポートにアクセスして「ハローワールド!」が表示されることを確認します:

2016080502


動作も確認できました。


IBM Bluemix のイベント駆動型ランタイムである OpenWhisk 環境をコマンドラインから利用する際に必要な wsk をラズベリーパイに導入してみました。なお最初に SSL でログインするか、ターミナルを開くなどして、ラズベリーパイのコマンドライン操作ができる状態にしておく必要があります。


まずは Python のパッケージ管理ツールである pip を導入します:
$ sudo curl -kL https://bootstrap.pypa.io/get-pip.py | python

そして pip を使って wsk コマンドを導入します:
$ sudo pip install --upgrade https://new-console.ng.bluemix.net/openwhisk/cli/download

wsk コマンドの設定を行います。ここで実行するコマンドは OpenWhisk 画面の②で表示されているコマンドをコピー&ペーストする形で実行してください:

2016080401

$ wsk property set --apihost openwhisk.ng.bluemix.net --auth ********* --namespace "dotnsf@jp.ibm.com_dev"

導入した wsk コマンドが正しく動くことを確認します。以下のコマンドを入力して、青字のような結果が返ってくることを確認してください:
$ wsk action invoke /whisk.system/samples/echo -p message hello --blocking --result
{
    "message": "hello"
}

導入できました!これでまたラズパイ環境が捗ります。

nslookup コマンドは DNS の名前解決に使ったり、逆引きしてホスト名を調べたり、エリアスを調べたりする時に便利なコマンドです:
$ nslookup manholemap.juge.me
Server:         192.168.0.1
Address:        192.168.0.1#53

Non-authoritative answer:
manholemap.juge.me      canonical name = www.dot123.net.
Name:   www.dot123.net
Address: 27.84.196.37

↑このような感じで、普通に実行すると IPv4 での IP アドレスやエリアスといった情報を調べることができます。

では IPv6 での情報を調べるにはどうすればいいでしょうか? 実はこれも nslookup コマンドで調べることができます。

IPv6 での情報を調べるには、起動後に nslookup のオプションで type=AAAA を設定する必要があります:
$ nslookup
> set type=AAAA
> 


その後にホスト名を指定して検索すると、IPv6 での IP アドレス等の情報が(存在していれば、ですが)取得できます(青字はコメント):
$ nslookup
> set type=AAAA

> manholemap.juge.me
Server:         192.168.0.1
Address:        192.168.0.1#53

Non-authoritative answer:
manholemap.juge.me      canonical name = www.dot123.net.(IPv6 ではアドレスは見つからなかった)
  :
  :

> www.ocn.ne.jp
Server:         192.168.0.1
Address:        192.168.0.1#53

Non-authoritative answer:
www.ocn.ne.jp   has AAAA address 2001:c80:a105:4902::1:1(IPv6 での IP アドレス)
  :
  :

↑の例では "manholemap.juge.me" の IP アドレスを IPv6 で調べると見つかりませんでした。 一方、"www.ocn.ne.jp" の IP アドレスは IPv6 でも見つかりました。

さすが OCN 、、、 うちの安いプロバイダのとは違う(苦笑)。

 

このページのトップヘ