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

普段使い用のPHPを5.5.6にバージョンアップ

私が自分でPHPのコードを書くのは、WordPressのちょっとしたカスタマイズなどを除けば、コマンドライン用途がほとんどです。簡単なツールを作ったり、メタプログラミングのために他の言語の前処理に使うといった使い方になります。そんな事情なので、あまり最新版を追いかける必要もなく、これまでは少し古めの5.4.11を使っていました。

たまたまPHPに関して調べ物をする機会があり、最新版も(当然予想していたことですが)かなりバージョンが上がっていることに気づきましたので、この機会にバージョンアップすることにしました。といっても、バグフィックスを除けば、バージョンアップの恩恵といえばfinallyが使えるようになったぐらいで、他は気づくような変化はなさそうです。

PHPのクラスにはデストラクタがあるので、あえてfinallyを使う必要もないのですが、PHPのクラスは遅く、できればクラス無しで書きたいという動機もわからないでもありません。であれば、finallyがあるのも悪くないかとは思います。

あと、ジェネレータももしかしたら使うかもしれません。ジェネレータというとわかりにくいのですが、イテレータを作るためのyield文のことで、C#でおなじみのやつです。

こんな感じで、今後はPHP 5.5.xを前提とした使い方にシフトしていくことになるでしょう。

Cygwin64を試してみました。

長い間Cygwinをアップデートしていなかったので、そろそろアップデートしたいと常々思っていました。ただ、現在開発中のプログラムがあるので、アップデートすることでそれらが動かなくなったり挙動が変わると嫌なため、二の足を踏んでいたのです。

久々にCygwinのサイトを訪問してみると、以前はsetup.exeが1種類しかなかったのに、32ビット版と64ビット版の両方が公開されているではないですか! 今回は、64ビット版Cygwinを試したときに感じたことを思いつくまま書き留めることにします。

やや恐る恐るではありましたが、64ビット版のほうをダウンロードしてインストールしてみることにしました。すると、32ビット版と区別するためにC:\Cygwin64にインストールされるようになっていました(もちろん、インストール先のディレクトリは変更可能です)。

何とかなるだろうと進めると…

続きを読む

BeagleBone Blackの最新版はA5CではなくA6なんですね

ついさっき知ったのですが、BeagleBone Blackの最新版はA5CではなくA6のようです。

システムリファレンスマニュアルの改定履歴を見る限りでは、今年の5月にはすでにA6になっていたようです。リビジョンの切り替えの関係もあって現在売り切れが多発しているのではないかと思います。

最新版をすぐに入手したいのであれば、Digi-Keyあたりで注文するのが一番間違いがなさそうです。

 

 

BeagleBone Blackが入手難

元々の生産数または輸入数が少なかったのか、人気が高まったからなのか分かりませんが、最近はBeagleBone Blackが売り切れ続きで入手が難しくなっています。

ちょっと前までは、アマゾンはじめ、秋月電子通商、スイッチサイエンス、テックシェアなどの通販サイトで、値段のばらつきはありますが容易に入手できたのですが、これらのサイトは現在ことごとく売り切れになっています。かろうじてRSオンラインからなら入手ができるようです。

近々大量に入荷されることを期待していますが、そのときにはもしかするとバージョンが上がっているかもしれませんね。

本音をいえば、この類いのマイコンボードは、国産でよいものができてくれるのが一番うれしいのですが、何とかならないものですかねえ。ストロベリーリナックスさんなんか、その名前からしても…

常駐案件増加、技術者不足の傾向

今日はクローバーフィールドの経営会議でした。ご存じの方もいると思いますが、私は以前同社の代表取締役をやっていたことがあります。現在は、(本業である)きじねこの業務に注力するため、クローバーフィールドの代表は降りていますが、執行役員の立場で経営には関わっています。

経営会議に顔を出していると、業界の動向というのもある程度見えてきます。以前は常駐の仕事はやっていませんでしたので直接関係がない話題だったのですが、現在はそれなりに密接な関わりが出てきています。

現在の業界動向としては、常駐案件はかなり多いようです。相対的に技術者不足が悩みのタネになっています。案件が多いといっても、リーマンショック以降、一度下がった単価が元に戻ることはなく、業界を離れてしまった人材も少なくありません。新しくフリーになりたいという技術者もそう多くないのでしょう。

もちろん、そんな状況にあっても、ある程度単価が高く、技術的にもやりがいのある仕事はあるにはあります。そうした仕事をお願いできる有能な技術者に対して、余裕を持って早めに打診しようとしても、「今は別の現場にいるので空いていません」「本決まりになってから」といわれるのが常で、結局ギリギリになってからでないと話が進まないわけです。

こうした場当たり的な対応ばかりではいけないと思うのですが、各技術者の事情もわかりますし、なかなか難しいところではあります。

 

レイテ島に「いせ」となれば、どうしても連想する戦艦伊勢

台風30号被害への救助活動として、海上自衛隊の護衛艦「いせ」がフィリピンに派遣されることになったようです。

フィリピン救援に海自最大艦「いせ」など3隻、1000人規模派遣

 小野寺五典防衛相は13日、フィリピンの台風被害への国際緊急援助活動で、海上自衛隊最大のヘリコプター搭載護衛艦「いせ」など3隻をはじめ、約1000人を派遣する方向で調整していることを明らかにした。国際緊急援助活動としては過去最大規模となる見通し。

 ほかに輸送艦「おおすみ」、補給艦「とわだ」、CH47輸送ヘリ3機、C130輸送機などの派遣を準備している。おおすみは沖縄周辺海域で予定していた離島防衛訓練への参加を急遽(きゅうきょ)、中止して準備に入った。

現地では医療や輸送、防疫などの支援活動を想定。先に現地入りした先遣隊要員がフィリピン政府と調整を進めている。

護衛艦「いせ」というと、ヘリコプターを多数搭載できるパッと見は空母にしか見えない「ひゅうが護衛艦」です。この「いせ」、そして「ひゅうが」というのが、旧帝国海軍の戦艦「伊勢」そして戦艦「日向」を連想したものだということは、容易に察しがつきます。

昭和19年のレイテ沖海戦では、戦艦「伊勢」「日向」は小沢治三郎中将率いる第3簡単に所属していました。第3艦隊は、「瑞鶴」および「翔鶴」の正規空母が所属していましたが艦載機が枯渇していたため実質的な囮になるという悲壮な戦いだった聞いています。

戦艦「伊勢」および「日向」は、艦載機を多数搭載できるように後部甲板を改装しており、「航空戦艦」と呼ばれることもあるわけですが、当然まともな艦載機などなかったことでしょう。

「瑞鶴」「翔鶴」をはじめ、多数の艦船が撃沈された第3艦隊にあって、戦艦「伊勢」と「日向」は生き残りました。

このたび、同名の護衛艦「いせ」がレイテ島に向かうとなれば、どうしてもレイテ沖海戦を連想せずにはおれないのです。

CygwinのX Windowをxterm以外から使う。

私はちょっとしたGUIを作るときは今でもTcl/Tkをよく使っています。今回はそのことに関する備忘録です。

CygwinでもTcl/Tkが使えるのですが、以前は「Cygwin版」ではなくMinGWを使って(正確にいうと-mno-cygwinオプションを付けて)コンパイルしたものでした。ところが、最近のものは「Cygwin版」になったようで、X Window上で動作します。

CygwinのX Windowは、XWin Serverを起動してからxterm上で操作するのが基本ですが、EclipseやQt Creatorのような統合開発環境から呼び出そうとするとなかなかうまくいきません。

この問題について、しばらくまともに調べることもせずに放置していたのですが、最近ひょんなことから対応方法を見つけました。

そんなに難しいことではなく、環境変数DISPLAYに 127.0.0.1:0.0 を設定するだけでよかったのです。

export DISPLAY=127.0.0.1:0.0

これであれば、統合開発環境からでも難なく設定することができます。

Windows 8.1に署名のないデバイスドライバをインストールする。

ArduinoとかBeagleBone Blackとか、いろいろマイコンボードを使っていて、一番最初にぶつかる関門はデバイスドライバのインストールです。MacとかLinuxとかWindows XPとかならそう問題はないのかもしれませんが、Windows 8やWindows 8.1だとちょっと大変です。

というのも、Windows 8やWindows 8.1では、署名のないデバイスドライバをインストールすることは原則としてできなくなっているからです。これを回避するにはテストモードで起動する必要があるのですが、そのやり方がなかなかわかりにくかったりします。

最近ではWindows 8に関する情報は、少しネット検索すれば比較的簡単に見つかるようになりました。しかし、Windows 8.1の場合はなかなか見つからなかったりします。

続きを読む

JavaでトレースログのON/OFFをコンパイル時に切り替える。

JavaでAndroidのプログラミングに関わるようになってしばらく経ちますが、そろそろトレースログのON/OFFを上手く切り替える方法が欲しくなってくるものです。ベテランのAndroidプログラマーの方に聞いたところ、if文の条件式に定数(static finalで宣言したboolean型のフィールド)を指定することでON/OFFを切り替えるのが普通だといいます。

その方法は、私なりに以下のように解釈しました。

static final boolean ENABLE_LOGS = true;

if (ENABLE_LOGS) Log.v(“tag”, “message”);

見た目はともかく、これならログを無効にしたときには、実行時のコストが完全になくなりそうです。ただ、ON/OFFを切り替えるにはソースファイルをその都度修正する必要があり、これはいただけません。

続きを読む

AndroidのOpenGL ESでビットマップが真っ黒になる。

現在、AndroidでOpenGL ESを使って描画処理を書いているのですが、深刻な問題に直面していて原因がつかめずにいます。

GLSurfaceViewクラスのonDrawFrameで、Bitmapを作ってCanvasで描画し、それをテクスチャにロードしてポリゴンに貼っているのですが、しばらくするとビットマップが真っ黒になってしまい、まともに表示されなくなります。画面全体が真っ黒になるのではなく、新しく作ったビットマップが真っ黒になるようです。

最初、テクスチャの枯渇を疑ったのですが、不要になったテクスチャは都度削除していますので、高々数百程度しかテクスチャは同時に使っていません。それに、仮にテクスチャが枯渇したのであれば、地のポリゴンの色がそのまま現れるはずですが、必ず真っ黒になるのです。

ビットマップリソースの枯渇も疑いました。この現象に陥ると、自分が作ったアプリだけでなく、システムのアイコンまで真っ黒になることがあるからです。Bitmapはテクスチャをロードしたあとに都度recycleしていますが、実際にリソースが解放されるのはGCのタイミングのようなので、これが原因の可能性はある程度考えられます。

Androidのバージョンは3.1および3.2なのですが、どうもはっきり「これだ!」という原因がつかめません。一応、ビットマップの生成回数を減らすために、極力同じものを使い回すようにして対策しました。ただ、それだと問題が顕在化するまでの時間を引き延ばしただけで、状況次第では再発する危険性が残っています。

ビットマップのGCの問題であれば、時間を引き延ばすだけでも十分な効果が見込める可能性はあります。ただ、はっきりそうだとわからないのが気持ち悪いところです。