月別アーカイブ: 2013年10月

Windows 8.1にアップグレードしました。

日ごろ主に使っているPCをWindows 8からWindows 8.1にアップグレードしました。アップグレード事態はWindowsストアから簡単に行うことができます(時間はかかりますが…)。

パッと見は何が変わったのか全然分かりません。起動直後の背景が変わったぐらいでしょうか。ただ、よく見ると、チャームの項目が変わっていたりして、微妙な違いがあるようです。

よく話題に上っているスタートメニューについてはよくわかりません。というのも、私はClassic Start Menuを使っているのですが、アップグレード後もそのままClassic Start Menuが変わりなく使えていますので、何も変わっていないという印象しかないわけです。

使っているうちに違いは見えてくると思いますので、何かあればその都度レポートしていけたらと考えています。

 

PHPプログラマーが知らないPHPの用法

この話題はリニューアル前のサイトでも取り上げたことがあります。簡単にいうと、PHPを使ったソースコードの前処理を行おうということです。

「PHPプログラマーが知らない…」とは書きましたが、もちろん知っている方も少なくないとは思います。ですが、大多数のPHPプログラマーはHypertext Preprocessorの名が示すように、HTMLに埋め込んで使う用法しか知らないのではないでしょうか? おそらく、コマンドラインでPHPが使えること自体を知らない可能性さえあります。

PHPは通常、基本的にHTMLが書かれたソース中に、<?php ではじまり ?> で終わるタグを埋め込むことで使えるようになります。しかし、埋め込む相手はHTMLである必要はなく、CやJavaのソースに埋め込んでも何ら問題ありません。実際、期待通りに前処理を行ってくれます。

Javaのようにプリプロセッサがない言語の場合、PHPはかなり強力なツールになります。CやC++のような前処理ができる言語であっても、標準のプリプロセッサよりははるかに高度な機能を提供することができるのです。

具体例を挙げましょう。配列やコンテナの要素を静的に整列するといったことは、Cのプリプロセッサではごく限定的な状況をのぞいて実現することはまず無理でしょう。しかし、PHPを使えばいとも簡単に実現できてしまいます。

PHPを使えば、バイナリファイルを配列の初期化子として展開するような前処理を行うことさえできます。これは標準のCプリプロセッサでは不可能です。

ほかにも、Cのプロトタイプを解析してC#のためのDllImportを自動生成するとかいう荒技もできてしまいます(もちろん、PHPのコードはそれなりに複雑になりますので、がんばって実装する必要があります)。

このように多くのメリットを持つPHPによる前処理ですが、弱点がないわけではありません。一番大きな弱点は、インテリセンスのような入力補完機能の邪魔をするということでしょうか? EclipseでJavaを使うときなど、ツールがいろいろおせっかいを焼いてくれる環境の場合は、結構大きな制約につながるかもしれません。

PHPによる前処理を行うと、状況にもよるのですが、行番号がずれてしまい、エラーメッセージが読みにくくなるという問題もあります。

このようにPHPによる前処理は万能ではなく欠点もあります。ですので、すべてのソースファイルをPHPで前処理するのではなく、一部の本当に前処理が必要なソースだけPHPを通すというのが現実的な使い方かと思います。

BeagleBone Blackが届きました。

昨日のPaspberry Piに続き、アマゾンで注文していたBeagleBone Blackが届きました。

BeagleBone Black

写真はAdafruitのケースに入れたものです。

USBで接続するだけで(ドライバのインストールは必要ですが…)、簡単に使えるようになります。一部の領域はUSBメモリと同じように認識されますので、そこ経由であればファイルの交換も簡単に行えます。また、SSHで入ることもできますので、細かい設定はもちろん、GCCでプログラムをコンパイルすることも可能です。

Raspberry Piが届きました。

アマゾンで注文していたRaspberry Pi Type Bが届きました。

Raspberry Pi

最近話題のマイコンボードで、名刺程度のサイズですがLinuxが載っています。ビデオ出力もオーディオ出力もありますので、ディスプレイやキーボードなどをつなげれば、これだけでちょっとしたPCのような使い方をすることもできます。

適当に時間を見つけて遊んでみたいと思いますが、そんな時間が果たして取れるのかどうかが最大の問題です。明日は、同じようなマイコンボードのBeagleBone Blackが届く予定です。そつらも遊ぶ時間が取れるかどうかが疑問です。