カテゴリー別アーカイブ: 技術情報

GCC 4.7がボーダーか?

以前のGCCでは、C++でも複合リテラルを使えていました。

たとえばこんな風にです。

std::puts((char[]) { 'a', 'b', 'c', '\0' });

ところが、今日たまたま同様のコードを試してみたところ、コンパイルエラーになるではありませんか? 試したバージョンは4.8.1でした。疑問に思ったので、古いバージョンでも試してみました。4.4や4.6では確かにコンパイルできます。

続きを読む

期待外れだったArduino for Visual Studio and Atmel Studio

Arduinoの標準IDEは非常にあっさりしていて、本当に最低限の機能しか備わっていません。すなわち、ソースコードを編集して、ビルドして、ボードに書き込んで、実行する、ただそれだけです。気の利いた機能は一切ありません。

このように書くと、リファクタリング機能がないとか、プロファイラが使えないとか、モデリングツールが使えないとか、そういうことを想像されるかもしれません。もちろん、そんな高度な機能は一切ありません。デバッガすら使えないのですから。

続きを読む

C + Tcl/TkでHello, World!

Tcl/TkはCやC++のプログラムにちょっとしたGUIを付けるのに便利です。Tcl/Tkはスクリプト言語であって、ライブラリとして使えることを知らない人も多いようですので、今回はCからTcl/Tkを呼び出してHello, World!をウィンドウで表示するプログラムを紹介することにします。

CからTcl/Tkを使うには、当然のことですが、Tcl/Tkがインストールされていなければなりません。Windowsであれば、Cygwinなら標準パッケージに含まれていますので、setup時にTcl/Tkを一緒にインストールすればOKです。なお、Cygwinの場合はX Wndow Serverを起動しておく必要があります。MinGWでも、Tcl/TkがMinGW本体と同じところからダウンロードできるはずですので、それをインストールしましょう。Visual C++を使うのであれば、Active Tclをダウンロードしてください。

Linuxであれば、はじめからインストールされている場合もありますし、なければapt-getやyumなどでインストールしましょう。Macの場合はMac Portsを使えばよいでしょう。もちろん、LinuxでもMacでも、ソースからコンパイルしてインストールすることもできます。

続きを読む

改めて感じるTcl/Tkの素晴らしさ

Tcl/Tkというと、何とも古臭いもののように感じる方も少なくないことでしょう。あるいは、「何それ?」ということで、聞いたこともない方もいるかもしれません。

Tcl/Tkというのは、スクリプト言語であるTcl (= Tool Command Language) と、そのライブラリである Tk (= Tool Kit) をあわせた呼び方です。TkはGUIツールキットとして非常によくできており、Tcl以外からも使えるようにさまざまな言語にバインディングされています。たとえば、Perl/Tk、Ruby/Tk、PHP/Tk、Tkinter (Pythonへのバインディング)などがあります。

かなり古くからあるものですので、古臭く感じるのはある意味仕方がありません。とはいえ、Tclが生まれたのは1988年、Tkが生まれたのは1990年代に入ってからです。CのANSI規格が制定されたのが1989年、Javaが登場したのが1990年代前半ですから、とんでもなく古いわけではありません。

続きを読む

いまさらながら、Windows XPを購入

世間では、まもなくマイクロソフト社のサポートが切れるWindows XPからWindows 7以降のOSに乗り換えようとしているわけですが、私の場合はこの時期にあえてWindows XP Professional SP3を購入しました。

といっても、通常のパッケージ版はもう売っていませんので、中古メモリとの抱き合わせで売られているOEM版です。この時期に入手することを考えると、1万円を切っているとはいえ、やや高い感は否めませんが、必要なのでしかたがありません。

続きを読む

普段使い用の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オンラインからなら入手ができるようです。

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

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

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

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