「初めてのPerl 第6版」が発売されました

Updated:

「初めてのPerl 第6版」が7月25日に発売となりました。

初めてのPerl 第6版

(「初めてのPerl第6版」をアマゾンで購入する)

「初めてのPerl」(原題: "Learning Perl")はその表紙の絵から「リャマ本」とも呼ばれ,Perlの入門書の定番として、長年にわたって親しまれてきました。前のエディション(第5版)はPerl 5.10に対応していましたが、第6版はPerl 5.14対応となっています。

内容は5.14に対応しただけではなく、それ以外の部分もかなり加筆されています。特に、いわゆる「モダン」な書き方も紹介しています。

  • 3引数のopen
  • ファイルハンドルをmy変数で扱う
  • autodie


また第6版では、Unicodeについての説明が追加されています。本文中の該当する箇所でUnicodeについて説明するとともに、付録C「Unicode入門」にUnicodeの扱い方がまとめられています。

Perlを学びたい人は、書店でぜひお手にとって中身をご覧いただければ幸いです。

章レベルでの目次は次の通りです。(詳細な目次は、オライリージャパンの書籍紹介ページをご覧ください。)

はじめに
1章 Perl入門
2章 スカラーデータ
3章 リストと配列
4章 サブルーチン
5章 入出力
6章 ハッシュ
7章 正規表現の世界
8章 正規表現によるマッチ
9章 正規表現によるテキスト処理
10章 さまざまな制御構造
11章 Perlモジュール
12章 ファイルテスト
13章 ディレクトリ操作
14章 文字列処理とソート
15章 スマートマッチとgiven-when
16章 プロセス管理
17章 上級テクニック

付録A 練習問題の解答
付録B リャマを越えて
付録C Unicode入門

UbuntuのUnityで、メニューをアプリケーションウィンドウに表示させる

Updated:

UbuntuのUnityインターフェースでは、アプリケーションのメニューが、グロー
バルメニューバーに表示されます。(ちょうどMacintoshのような感じです。)

これはこれで、慣れてしまえば便利なのでしょうが、メニューを各アプリケー
ションのウィンドウに表示させたい、という根強いニーズがあるようです。

私の場合、WindowsマシンのVMWare Player上で、Ubuntuを実行しています。通
常は、VMWareの「Unityモード」(ややこしいのですが)を使って、Windowsのデ
スクトップ上にLinuxアプリのウィンドウを個別に表示させています。この際に、
アプリケーションのウィンドウにメニューを表示させる必要があります。

VMWare Playerのリリースノートを見ると「既知の問題」として、このことが記
載されていました。対処法としては「UbuntuのAPPMENU(グローバルメニュー)を
disableすると、アプリケーションウィンドウにメニューが表示されるようにな
るぞよ」と書いてありました。

というわけで、前置きがとても長くなってしまいましたが、グローバルメニュー
を禁止して、アプリケーションのウィンドウにメニューを表示させる方法を調
べをみました。

以下のページにUnityのグローバルメニューを禁止する方法が説明されていまし
た。

Disable The AppMenu (Global Menu) In Ubuntu

詳しくはこれを読んでいただくこととして、大きく2つの方法があります。

1つは、「環境変数UBUNTU_MENUPROXYに0をセットして、アプリケーションを起
動する」という方法です。アプリケーションは、この環境変数を見て、メニュー
をどこに表示するかを決めているようです。(というか、不評であることを想定
して、このような隠し機能を用意しているのでしょう:-)

もう1つは、グローバルメニューの処理を行なうパッケージを抜いてしまうとい
う方法です。

$ sudo apt-get remove appmenu-gtk appmenu-gtk3 appmenu-qt indicator-appmenu

環境変数UBUNTU_MENUPROXYを設定する方法をとることにしました。ファイル
/etc/X11/Xsession.d/81ubuntumenuproxyにexport UBUNTU_MENUPROXY=0
と書いておけば、すべてのアプリケーションで、メニューがアプリケーション
ウィンドウに表示されます。

sudo su
echo "export UBUNTU_MENUPROXY=0" > /etc/X11/Xsession.d/81ubuntumenuproxy

これで、(VMWare Playerの)Unityモードで、Windowsデスクトップに、Linuxの
ウィンドウを表示する際にも、ちゃんとアプリケーションのメニューが表示さ
れるになりました。めでたしめでたし。

「初めてのPerl 第6版」が7月25日に発売されます

Updated:

7月25日に「初めてのPerl 第6版」が発売になります。

昨日,オライリージャパン様から見本が届きました。

初めてのPerl 第6版

「初めてのPerl 第6版」はその表紙の絵から「リャマ本」とも呼ばれ,Perlの入門書の定番として親しまれてきました。

今回出版となる第6版は,Perl 5.14に対応しています。オライリージャパンのページでは,目次が公開されていますので,ご覧ください。

またアマゾンでも予約受け付け中です。

Ubuntu 10.10から12.04LTSにアップグレードしました

Updated:

デスクトップマシンとノートPCでは、Windows上で、仮想マシンとしてUbuntuを
動かしています。仮想化ソフトとしてVMWare Playerを使い、その上でゲスト
OSとしてUbuntu Linuxを動かしています。

これまでは、Ubuntu 10.10というかなり古いバージョンを使っていましたが、
先日、さくらVPS上のサーバをUbuntu 12.04LTSにアップグレードしたので、そ
れに合わせて、デスクトップとノートPCのUbuntuも、12.04LTSにアップグレー
ドしました。

アップグレードの際に、いろいろとハマったので、作業内容をメモしておこう
と思います。

これまでに使っていたのは次の組み合わせでした。

VMWare Player 3.1.6
Ubuntu Linux 10.10

1. VMWare Player 4.0.4にUbuntu 12.04LTSを新規インストールしてみる(失敗)

まず最初に、VMWare Playerを最新バージョンの4.0.4にアップグレードしてか
ら、Ubuntu 12.04LTSを新規インストールしてみました。

Ubuntu 12.04LTSはまったく問題なくサクっとインストールできました。

しかし、VMWare Player 4系列には、Unityモード(これはVMWareの機能で、
Windowsのデスクトップ上に、Linuxのウィンドウを表示するというもの)で、ウィ
ンドウを最小化してから再表示させると、勝手にリサイズされてしまい、幅が
数十ピクセル、縦が画面の高さになる、というバグがあり、最新版の4.0.4でも
直っていないことが判明しました。

このバグは、VMWareのサポートフォームにも報告されているのですが、未対応
のままのようです。

VMware Communities: Terminal size changes in VMWare Player 4 Unity mode

私は、(VMWare Playerの)Unityモードを主に使っているので、これでは使い物
になりません。ですから、VMWare Playerの4.0.4はあきらめて、3.1.6に戻すこ
とにしました。

2. VMWare Player 3.1.6にUbuntu 12.04LTSを新規インストールしてみる(失敗)

VMWare Player 3.1.6で、Ubuntu 12.04LTSを新規インストールしてみたところ、
うまくインストールできませんでした。おそらくX-windowの設定でひっかかる
らしく、インストール作業が途中で止まってしまいます。その状態で、リブー
トすると、コンソールモードで止まってしまってX-windowが起動されません。

3. VMWare Player 3.1.6で、Ubuntu 10.10から12.04LTSに順次アップグレードする(成功)

最後の手段として、VMWare Player 3.1.6のままで、現状の10.10を12.04LTSへ
とアップグレードすることにしました。

実際には、10.10から11.04、11.04から11.10、11.10から12.04LTSと3回に分け
てのアップグレードが必要となりました。デスクトップ版のUbuntuでは、アッ
プデートマネージャからGUIベースでアップグレードを実行できるので簡単です。

実際には、途中でときどきダイアログが表示されるので、まったく自動という
わけではありません。例えば、/etc以下のファイル設定をいじっていたりする
と、いちいち「上書きする? それとも前の設定を残す?」と聞かれたりします。

結構時間がかかりましたが(1回のアップグレードで1時間はくらい)、何とか
Ubuntu 12.04LTSにアップグレードすることに成功しました。実は、X-window回
りで、一部妙な動きをするところがあるのですが、実用上は問題ないので、良
しとしました。

これまでに使っていたUbuntu 10.10は、2010年10月にリリースされて、今年の
4月までサポートされていました。しかし、サポートされているとはいえ、ソフ
トウェアがバージョンアップされるわけではないのですね。例えば、10.10では
Emacsはバージョン23.1.1なのに対して、12.04LTSでは23.3.1になっています。

というわけで、サーバ(さくらVPS)とOSのバージョンが一致して、Emacsも新し
くなったので、作業がしやすくなりました。めでたしめでたし。

YAPC::Asia 2011に参加してきました

Updated:

10/13~10/15に東京工業大学で開催されたYAPC::Asiaに参加してきました。

YAPC::Asiaのサイトで動画とスライドが公開されています。また,技術評論社のサイトにレポートがあります。

3つのトラックでさまざまなトークがあり,聴きたいトークが重なっていて,どちらに参加しようか迷うことも多かったです。内容が充実していたための贅沢な悩みなのですが。

個人的には一番興味深かったのは,Pumpking(開発に関する意志決定者)のJesse Vincentさんによる「Perl 5.16 and beyond」でした。(動画とスライドがYAPCのサイトにあります)

これは,題名の通り,Perl 5.16以降のPerl 5のついての話です。

  • 5.16以降では,バージョンアップの際に,できるだけ既存のコードがそのまま動くようにする。具体的には,例えば「use v5.16」のようにバージョンが指定されていれば,そのバージョンのPerl 5の振る舞いを(可能な限り)再現するようになる。
  • 現在のPerl本体は大きくなり過ぎているので,スリム化を行なう。組み込み関数のうち,Perlのコアでないもの(例えば,SysV IPC関数,ソケットIO関数など)はモジュールに追い出す。コアモジュールも見直しを行なう(コアモジュールから外されたモジュールは,CPANに置かれる)。
  • あらゆるところでPerl 5が動くようにしていく。JVM,JavaScript,.NET上でもPerl 5が動くようにする。


北海道から参加された現役高校生のakiymさんのトークでは,小学生のときに,「Perlのプログラムを書くぞお」と意気込んで,「プログラミングPerl」を買ったけど,歯が立たなかった,というエピソードを聞いて,少し申し訳ない気持ちになりました。

10/14の懇親会では,Hachiouji.pmの方に,「多摩といっても広いので,たまには東寄りの吉祥寺でも開いてくださいよー」などと,無理なお願いをしてしまいました。聞き流してください。

また,ゆるPerl,Nagoya.pm, Sendai.pm,Niigata.pmの方々とも,お話をさせていただきました。

YAPC::Asiaは熱気溢れるイベントでした。大いに刺激を受け,「がんばらなければなあ」と気合いが入りました。

スタッフのみなさま,スピーカーのみなさま,本当にありがとうございました。