JP」に行ってきました。...いや昼からでしたが。思ったよりいろいろなジャンルの話があって楽しく聞いていました。あと、最後のじゃんけん大会で、オライリーのアナライジング・マルウェアのTシャツをゲットしてしまいました。ありがとうございました。以下、メモほぼそのまま。faultgdbMessagePackMessagePackJSONに似たデータフォーマット。詳細を見るHaskellを実際に使っている人の話を聞くと、関数型言語というより強い型付け言語であるのが重要であるらしいこと、そして関数型言語であるという性質が強い型付け言語であることに結び付いてその上に築かれているらしいことを感じるようになった。...いや、書いてて自分でも意味わかんないけど。本書はそのような性質のとおり、まず型の話から入り、それを元に関数→リスト→再帰→高階関数と章が進む。次にいきなりパーサーを作ってから、それをIOの説明につなげている。説明の筋道が自然でわかりやすい。Haskellのすべてをカバーしているわけではないけど。ほかの言語との比較がないことも特徴で、Haskellらしい例を中心にすっきりと解説している。「Haskellでは難しいことを易しく書けるが、易しいことが難しい」と言われるように、Haskell的に難しいことを省いているのかもしれないけど。あと、ていねいに訳注がついていて、読んでいてあれっと思うような部分をきっちりフォローしているのも印象的だった。詳細を見るAndroidアプリネタ多し。特集2が「Androidアプリをコピペだけで作る」と題して、付属のDVD-ROMに入ったプログラムをビルドして動かしてみよう、という入門記事。なにげにNFCに対応してたり。関連してAndroidアプリ開発入門「イラストで分かるAndroidアプリ作り」が新連載で、開発環境の用意の話。「HTML5でつくるAndroidアプリ」も連載第2回で、video要素、audio要素、canvas要素の実例。第1特集がLinuxでUstream放送として、ブラウザでやる場合と、WebCamStudioでやる場合、WebCamStudio+ffmpegでやる場合を紹介。第3特集はWineで、いろいろなアプリで試した結果などが紹介されている。特選フリーソフトのコーナーでは、みんな大好きCalibreを紹介してた。Linuxの紹介記事。連載では、CentOS6が出てないけど「CentOS6を先取り」はUpstartとDovecotねたで、特にDovecotに力が入ってた。「ディストリビュータになろう」は、DebianやUbuntuで使われている.debパッケージの作り方。「ゼロから作る組み込みLinux機器」は、Gyazoの公開ソースによる画像サーバーをPC等で立ててLeopardBoardから写真を送る話。tftpブートやNFSルートで開発を進める方法も。「最新サーバーアプリ活用法」で毎回VPS/IaaSをレポートしてるのを面白く読んでたら、次号では格安VPS特集が載るらしい。|Rubyで“.”演算子を置き換えてみるRuby上で自分で演算子を変更できるようにして、“.”のかわりに“->”を使えるようにするとどうなるかと思いました。そのために、Perlにあるソースフィルタの簡易版みたいな機能を試しに追加してみます。注意:これは実用性のない単なるジョーク改造です。p136のruby.cにこんな(↓)パッチを当てビルドしてみます。そのうえでこんな(↓)filter.rbを作ってカレントディレクトリに置きます。フィルタをKernel.source_filterとして定義しています。Kernel.source_filterは、ソースをStringとして受け取って、加工したStringとして返します。'.')endで、こんな(↓)hoge.rbを書いてカレントディレクトリに置いてみます。iendfilter.rbを-rで読み込んだうえで、hoge.rbを実行してみます。hoge.rb579...ルー語的なキモさ。続いて、カッコの開きと閉じを逆にしてみます。filter.2.rbを書きます。')(][}{')endそれ用にfuga.rbを書きます。fuga.rb6...ないわー。|IPv4とIPv6とで表示の違うWebサーバーを作るwww.kame.netでは、IPv6でアクセスしたときだけ亀が踊るようになっています。同じようなことを、手元で簡単に試してみます。Server(以下Apache)で試した内容ですが、ほかのOSやHTTPサーバーでもやることは同じはずです。IPv6の準備いまどきのOS(Linux、BSD、Mac、Windows)ならデフォルトでIPv6に対応していると思います。IPv6のネットワークやアドレスを準備するほうが大変なので、ここではローカルホスト内で試します。IPアドレスベースの仮想ホストを設定するIPv4とIPv6をIPアドレスベースの仮想ホストで分けます。10.10でapache2をインストールすると、/etc/apache2/sites-availableディレクトリができて、仮想ホストごとに1ファイルずつ設定を置くようになっています。そこで、標準のdefaultファイルをコピーして、ipv6-localというファイルを作ります(この名前に意味はありません)。ipv6-localこのipv6-localファイルを開いて、仮想ホストのIPアドレスを設定します。[::1]:80>"::1"はIPv6のループバックアドレスです。]で囲んで指定します。設定した仮想ホストipv6-localを有効にします。ipv6-localIPv4とIPv6とで簡単に表示を変えるこのままだとIPv4とIPv6とで同じ内容が表示されます。DocumentRootを別にすれば内容が別になりますが、それではそれぞれのコンテンツを用意しなくてはなりません。IPv4とIPv6とで、まったく別ではなく、一部だけ違う表示にしてみます。仮想ホストの設定を編集します。/var/www/>"の指定の中に、以下の2行を追加します。index.htmindex.htmlより優先するindex.html6を追加し、.html6をtext/htmlとしてクライアントに返す設定です。試しにデフォルトのindex.htmlを元に、少しだけ書き変えたindex.html6を作ります。IPv6!</h1>ちなみにこれは、10年ぐらい前にwww.kame.netの踊る亀の仕組みとして講演で聞いた方法です。今も同じ方法を使っているかどうかはわかりませんが。10.10ではIPv6のルーティングを設定していないと、ApacheがIPv6アドレスの設定を無効にするようです。そのため、そのままApacheの再起動などをしても、設定エラーになります。説明はこのへん(↓)。address”が、OS自体を再起動すると、なぜかApacheのIPv6アドレス設定が有効になってくれる、という挙動になっていました。バッドノウハウですね。アクセスしてみるというわけで、Ubuntuを再起動したらローカルのWebブラウザでアクセスしてみます。IPv4の"127.0.0.1"でアクセスした場合。IPv6の"::1"でアクセスした場合。