Macでsayコマンド使おうとしてハマった
zsh + oh-my-zshの環境でsayコマンドを使おうとしたら、こうなりました。
$ say -v Alex 'Hi'
say:1: bad option: -v
$ grep -r 'say' .oh-my-zsh/*
(中略)
.oh-my-zsh/plugins/perl/perl.plugin.zsh:# say - append a newline to 'print'
.oh-my-zsh/plugins/perl/perl.plugin.zsh:say() {
.oh-my-zsh/themes/humza.zsh-theme: # should it say b, kb, Mb, or Gb
$ vim .oh-my-zsh/plugins/perl/perl.plugin.zsh
(60行目あたり)
# say - append a newline to 'print'
say() {
print "$1\n"
}
こいつか! perlプラグインを外してもよかったのですが、直接コメントアウトして、ようやく本来のsayコマンドを使えるようになりました。
CMakeを使ってOpenCVを楽にセットアップする方法 (for Visual Studio 2010)
Visual StudioでOpenCVのプロジェクトを作るときに、いちいちインクルードディレクトリやライブラリを指定するのが面倒です。
CMakeを使って一度下準備をすれば、これらの設定を飛ばして楽にOpenCVプロジェクトを作成することが出来ます。
ここでは画像を表示するサンプルファイルを使って、CMakeで設定済みVisual Studioソリューションを生成する手順を紹介します。
手順
1. CMakeを使ってOpenCVをビルドする
まず、CMake公式サイトからCMakeをダウンロードし、インストールします。
次に、OpenCV公式サイトからOpenCVをダウンロードしてきて、CMakeを使いビルドします。
ビルドの手順は、下記のサイトに従って下さい。
Windows に OpenCV バージョン 2.4.5 をインストール
2. dllのディレクトリにパスを通す
環境変数PATHに下記のdllディレクトリを追加します。(ビルドした環境やバージョンによって微妙に違うかもしれないので、自分で確認して下さい。)
- C:\opencv\opencv\build\x64\vc10\bin (Visual Studio 2010 64bitの場合)
コントロールパネルのシステムから環境変数を開いてもいいのですが、個人的には Rapid Environment Editor をお勧めします。これを使うと、環境変数の編集が楽に出来ます。
3. CMakeLists.txtを書く
好きな場所にソースコードを置くディレクトリを作ります(例えばC:\myapp\SampleCMakeOpenCV
など)。
ここに、テキストエディタで下記のファイルを作成し、CMakeLists.txt
と名付けます(ファイル名の綴りを要確認)。
# 下記の2つは自分の環境に合わせて書き換える
SET(OpenCV_DIR "C:/opencv/opencv/build") # OpenCVConfig.cmake があるディレクトリ
INCLUDE_DIRECTORIES("C:/opencv/opencv/build/include") # 上記ディレクトリの下のincludeディレクトリ
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT( SampleCMakeOpenCV )
FIND_PACKAGE( OpenCV REQUIRED )
ADD_EXECUTABLE( MyProject main.cpp )
TARGET_LINK_LIBRARIES( MyProject ${OpenCV_LIBS})
次に、 ここ からmain.cpp
をダウンロードして同じディレクトリに配置します。(自分でソースを書く場合にも、適当なC++ファイルを用意する必要があります。)
上記のmain.cpp
は適当なサンプル画像を必要とするので、ここからダウンロードして配置します。
4. CMakeを実行する
WindowsメニューのすべてのプログラムからCMakeを探し、「CMake (cmake-gui)」を実行します。
「Where is the source code」「Where to build the binaries」に同じもの(この例だとC:\myapp\SampleCMakeOpenCV
)を入れます。バイナリの場所はお好みで指定しても構いません。
次に「Configure」を押します。Visual Studioの種類を聞かれたら、今回はVisual Studio 2010の64bit版なので「Visual Studio 10 64bit」を指定します。
エラーが出なければ「Generate」を押します。これで、同じディレクトリにソリューションファイル(SampleCMakeOpenCV.sln
)ができているはずです。
5. Visual Studio 2010で実行する
ソリューションファイル(SampleCMakeOpenCV.sln
)をダブルクリックします。
ソリューションの規定のスタートアッププロジェクトが「ALL_BUILD」になっていると思うので、プロジェクトMyProjectを右クリックして、「スタートアッププロジェクトに指定」をクリックします。
最後に、ビルドして実行します。上手くいけば、Lennaの絵が表示されるはず。
結局、何がうれしいのか?
最初は普通にプロジェクトを設定するのと同じぐらい面倒ですが、一度CMakeLists.txtを作ってしまえば、これを使い回しできます。
つまり、次回から新しいOpenCVプロジェクトを作成する際に、楽ができます。
OpenCV以外のライブラリでもCMakeの機能を使えば似たような手順で設定ができるので、ライブラリが増えれば増えるほどCMakeの恩恵が大きくなります。
ぜひ楽をするためにCMakeを使ってみてはいかがでしょうか。
アイデア:日本の事務書類に見られる複雑な表組みをLispのS式で書く
日本の事務書類に見られる複雑な表組みを、論理的な構造を保ちつつテキストファイルで書きたい。 (参考:奥村 晴彦:「ネ申 Excel」問題 [PDF])
そう考えていたとき、LispのS式で書くことを思いついた。
このアイデアのポイントは、下記である:
- 表組みを罫線で区切るのではなく、(左側に置く)ラベルと(右側に置く)コンテンツの2つで構成される「ブロック」として考える
- プログラマの方には、keyとvalueに例えた方が分かりやすいかもしれない。
- 1つの表組みは、垂直に並んだブロック(行ブロック)の集合である
- 1つの行ブロックには、複数のブロック(列ブロック)を水平に並べることができる
- ラベルとコンテンツを、S式を使って
("ラベル" "コンテンツ")
の形で書く
これを、Lisp Tableと呼ぼう。
例
これだけでは分かりにくいので、例として、手元にある文書のうち表組み部分をLispで書きおこしてみた。 すると、これぐらいの複雑さであれば素直にS式で書けることが分かった。
見本
Lisp Tableによる表現
;; Lisp Table
(("フリガナ" "")
("氏 名" "")
("所 属" "")
("職名・学年" ""))
(("申請者の区分\n(いずれかに○)" "教職員 大学院学生等 学部学生等 事務所職員 業 者 その他")
(("学内内線番号" "") ("車 種\n(いずれかに○)" "四 輪 二 輪"))
(("車両番号" "") ("申 請 期 間\n※ 和 暦" " 年 月 から\n 年 月末まで"))
("現 住 所" "〒 - \n")
(("自動車等を利用したときの自宅からの距離" " km") ("公共交通機関を利用した場合の所要時間" " 時間 分"))
(("申請理由" "") (("確認者氏名" "印")))
("通勤手当受給者欄" "□ 通勤届を自動車等(四輪車・原付を含む二輪車)で提出済み(予定)\n(該当する場合、□にチェックを入れてください)"))
(("入構・駐車整理料金" "")
("許可番号" "")
("駐車場所" ""))
将来について
まず、詳細な仕様については全然詰めてないので、決める必要がある。
この記法をHTMLのTableかLaTeXのtabular環境に直せたら、実用的になるかもしれない。 できれば、Pandocに流してWord文書とかExcel文書に直せるようになったら最高。
時間ができたら自分で実装したいが、誰か実装してくれるとうれしい。 その際、Haskellで実装してくれると、Pandocに組み込むときに楽なのでさらに嬉しい。
Point Grey flea3 (USB3.0) カメラをLinuxで動かす
研究でPoint Grey flea3のUSB3.0を使おうとしていて、Windowsでは動くのですが、Linuxでは全く動かなくて困っていました。
調べてみると、libdc1394-22というライブラリを使えば、Windows以外でもPoint Greyカメラが動くようです。
参考サイト:
しかし、flea3のUSB3.0カメラはlibdc1394の最新の安定版(v2.2.1)でも対応していません。開発版ではどうやら対応しているようなので、それをインストールしてみます。
インストール手順
1. 開発版のソースをcloneする
gitを使って以下を実行しソースをcloneする。
git clone git://libdc1394.git.sourceforge.net/gitroot/libdc1394/libdc1394/
2. 必要なライブラリをインストールする
sudo aptitude install autotools autoconf pkg-config libtool libsdl
apt-getな人はお好みで。 何か漏れているかもしれないけど、確かこれぐらいあったはず。
3. autoconfでconfigureスクリプトを作る
cd libdc1394/libdc1394
libtoolize -c
aclocal;autoheader; automake -a -c; autoconf
4. インストール
./configure
make
sudo make install
5. flycapture2をインストール
公式サイトから最新版のflycapture2をダウンロードする。以下のサイトのDownloadsから(要会員登録・無料)。
パッケージをダウンロードする。
tar zxvf flycapture2-2.5.3.4-amd64-pkg.tgz
cd flycapture2-2.5.3.4-amd64
sudo sh install_flycapture.sh
6. flycapture2を動かす
FlyCap2ではないので注意。
flycap
これでとりあえず動くようになりました!
あとは、正しいフレームレートで動作させるために、細かいセッティングを変える必要がありそうです・・・。
追記(13.11.19 17:09):ファームウェアを更新する
flea3のUSB3.0カメラを正しいフレームレートで動作させるには、ファームウェアを更新する必要があったようです。
先ほどのPoint Grey公式サイトからファームウェアのzipファイルをダウンロードしてきます。
このとき、Flea3 U3 1.41.3.0 Firmware
とFlea3 USB3 2.6.3.0 Firmware
を両方ダウンロードし、unzipします。
ファームウェアのアップデート用GUIを起動します。
sudo updatorgui
Operations
のFirmware Update File
でファイルを選択するのですが、以下の順番でファイルを開き、Updateを押してください(重要):
- Flea3 U3 1.41.3.0 Firmwareのez2ファイル
- Flea3 USB3 2.6.3.0 Firmwareのez2ファイル
これでシステムを再起動したら、見事に最高のフレームレートで取れるようになりました。
ただし、flycapをもう一度起動するとなぜかエラーになるのですが、これは未解決です・・・。
Python on Mac: Matplotlibのバグについて
Matplotlibを使おうとして、pipでインストールしたところ、 import時にフリーズする事象に遭遇しました。
前提
- Homebrew
- Python 2.7.5 (Homebrewでインストール)
- pip
問題
pip install matplotlib
ipython
>>> import matplotlib # ここでフリーズ
吐き出されたメッセージを見たところ、import matplotlib.font_manager
でフリーズしていたようでした。
調べたところ、 matplotlib 1.4.x にバグがあるようでした。
解決策
上記リンクによると、以下により開発版のMatplotlibをインストールすればよいようです。
pip install git+https://github.com/matplotlib/matplotlib.git#egg=matplotlib-dev
私の環境では、これによってimportできるようになりました。
以上、自分用メモでした。
Python on Mac: scikits.audiolab のインストール
Pythonでscikits.audiolabのインストールに少し手間取ったのでメモ。
※ エラーに遭遇したものをまとめたので体験した時系列的には逆ですが、 実際のインストールはこの順序でOKだと思います。
前提
- OS: Mac OSX 10.9 Mavericks
- Python: 2.7.5
以下は先にインストールしておく。
- Homebrew
- pip (Python)
libffi をビルドする
これをしないと、次にPySoundFileのインストール時にffi.hが無いと怒られる。 (Homebrewだけではだめ。ソースからビルドする必要がある。)
適当なディレクトリに移動する。
git clone git://github.com/atgreen/libffi.git
./configure
make
make check
make install
libsndfile と PySoundFile のインストール
先に本体のライブラリ(libsndfile)をインストールしてから、Pythonラッパ(PySoundFile)をインストールする。
brew install libsndfile
pip install PySoundFile
scikits.audiolab のインストール
pip install scikits.audiolab
以上です。
Mac OS X 10.9 Mavericks: Canon レーザプリンタが動かなかった件(IP接続)
うちの研究室ではCanonのレーザプリンタにIPで接続するのですが、 Mavericksにアップデートしてから一切プリントアウトできずに困り果てていました。
今回、解決策が分かったので記録しておきます。
環境
- OS: Mac OS X 10.9 Mavericks
- プリンタ: Canon LBP-7700C
- ドライバ: Canon LIPSLX Printer Driver version 10.2.0 ( Mac OS X 10.5 ~ 10.9:Intel)
- ネットワーク: 研究室内LAN (192.168.x.x の形式)
対処
1) 下記に従ってドライバをインストールし、プリンタを削除する(登録はしない!)
キヤノン:Q&A検索|【オフィス向け複合機】Mavericksへアップデート後、印刷ができない場合の対処方法
2) Network printing issues in Mac OS X...: Apple Support Communities のRoyの意見に従い、次の手順で追加する。
- システム環境設定の「プリントとスキャン」を開く
- 「+」をクリックし、「IP」タブを開く
- IPアドレスを入力
- 【重要】プロトコルを「Line Printer Daemon - LPD」にする(IPPにしない!)
- 名前、場所などを適当に入れる
- 【重要】 プリンタを追加する際、「プリンタソフトウエア」のリストに
同名製品が複数表示されることがあるので、以下の例のように「(JP)」が付いていない、
製品名のみの項目を選択する。
- ○: Canon LBP4500 ←こちらを選択!
- ×: Canon LBP4500 LIPSLX (JP)
- 登録できたら、テストプリントしてみる。
以上です。LPDにするのは盲点だった・・・orz