Markdownに変更
はてな記法を使っていましたが、Markdownで書いてみることにしました。
見出しをどこからはじめるかで、ちょっと悩んだのですが、はてな記法だと記事内はh3から始まるようなのであわせることに。ブログタイトルがh1、記事タイトルがh2と考えれば、妥当なのかなぁと思っています。
他のブログツールを触る機会があって、記法をどうしようか?と思ったのが発端です。
新しい記法を覚えるのを面倒に思っていたのですが、調べてみるとかなりシンプルで、比較的汎用性が高く(Markdownに対応するプラグインが結構見つかる)、テキストそのものも読みやすく整うのがツボにきました(若干、拡張構文の取り扱いが悩ましいですが)。
expressコマンドが見つからない
Node.jsのexpressを使おうと思ったら、expressパッケージからコマンドがなくなっていた。環境は以下。
- Node v0.10.26
- express 4.0.0
expressの公式を確認したところ、どうもコマンドはパッケージが変わったらしい。
以下で手に入る。
$ npm install -g express-generator
Ⅰ、2年前の記事でダメか〜と思ってたけど、結構最近だった。
About
Google Analyticsの利用について
本ブログはGoogle Analyticsを利用してアクセスログの収集及び解析を行っています。収集にはcookieを使用します。データは匿名で収集され、個人を特定できるデータは含みません。収集したデータは本ブログの利用状況の把握のために使用します。
収集したデータは、Google及びその100%子会社が、Googleのプライバシー・ポリシーにしたがって、保持し解析します。詳細に関しては下記を参照してください。
apt-cygの調整 その2
Cygwinのバージョンは以下。
- 1.7.25 (32-bit)
Cygwinでgitをビルドしようとしたけど、なんかうまくいかんなぁ...と思ったら、m4のインストールで失敗してました。
$ apt-cyg install m4 ... ... `m4-1.4.17-1.tar.xz' へ保存完了 [273968/273968] Unpacking... bunzip2: (stdin) is not a bzip2 file. tar: これは tar アーカイブではないようです tar: 前のエラーにより失敗ステータスで終了します ... Package m4 installed
当初、原因が分からずsetup.exeからのインストールで解決したんですが、よくみると、xzファイルの取り扱いで失敗しています。
最後に「installed」とでたり、再度インストールしようとすると「already installed」になっていたりと、紛らわしいですが、インストールはされていません。
これも、apt-cygの対応不足みたいで、以下のページにいろいろとまとまっています。
それと、公式もgithubに移ったようですが対応はされて無いみたいです...
派生品が(いろいろと)出ているようなので、適宜拾ってくればよさそうです。
といいつつ、手直ししてみる
上記のWikiを見る限り、完全な状態にするのは手に余るのですが、解凍部分の修正だけでもできないかなぁと試したのが以下。
360行目(GitHub版とGoogle Code版は該当行数が異なる)からファイルの解凍が始まっているので、xzファイルの対応を追加します。
細かく理解せずに書いているので使用はお勧めしませんが、まあ、動いているようです。
echo "Unpacking..." case "$file" in *\.xz) cat $file | xz -dv | tar > "/etc/setup/$pkg.lst" xvf - -C / ;; *) cat $file | bunzip2 | tar > "/etc/setup/$pkg.lst" xvf - -C / ;; esac
書いといてなんですが、以後のメンテの問題もあるので、GitHubからメンテされてそうなForkを選んだほうがよいです。
apt-cygの調整
Cygwinのバージョンは以下。
- Cygwin 1.7.25
久々にapt-cyg触ったらエラーになってました。
$ apt-cyg update ... ... http://ftp.yz.yamagata-u.ac.jp/pub/cygwin/setup.bz2 ... HTTP による接続要求を送信しました、応答を待っています... 404 Not Found ... Error updating setup.ini, reverting
で、実際ミラーサイトに行ってみると、.../cygwin/x86と.../cygwin/x86_64という構成になっており、URLが変わったご様子。なので、URLを調整して再度トライ。
$ apt-cyg -m http://ftp.yz.yamagata-u.ac.jp/pub/cygwin/x86 update ... Updated setup.ini
で、updateは成功するんだけど、今度はinstallがうまくいかない。
$ apt-cyg install git ... ... http://ftp.yz.yamagata-u.ac.jp/pub/cygwin/x86/x86/release/git/git-1.7.9-1.tar.bz2 ... md5sum: git-1.7.9-1.tar.bz2: No such file or directory ...
URLを見ると、.../x86/x86となっており、あっちをたれてば..という状態に。cygwinの構成が変更されて、それにapt-cygが対応できてない感じ。
apt-cygは特に更新されて無いので、自前で。98行目にsetup.bz2、105行目にsetup.iniをwgetする部分があるので、使用しているcygwinにあわせて、適宜書き換え。
$ vi /bin/apt-cyg ... wget -N $mirror/x86/setup.bz2 # 98行目 ... wget -N $mirror/x86/setup.ini # 105行目 ...
x86などはスクリプト内で追加するようにしたので、ミラーのURLを調整して、再度トライ。
$ apt-cyg -m http://ftp.yz.yamagata-u.ac.jp/pub/cygwin update ... Updated setup.ini
アップデートに成功して、
$ apt-cyg install git ... Package git installed
インストールにも成功します*1。
*1:2013-11-16追記:xzファイルへの対応も必要なようです(apt-cygの調整 その2)
BoostをRaspberry Pi向けにクロスビルドする
BoostをRaspberry Pi向けにクロスビルドします。
- Boost 1.54.0
- Raspbian (Hard Float)
クロスコンパイラの準備
クロスコンパイルの環境を整えます。
参考
ARM用なら引数次第で何とでもなるやろ~と軽い気持ちでapt-getでGCCを入れたところ、どうあがいてもARM v6(Raspberry PiのCPU)向けビルドができず、さらに、よくわからずに入れたらSoft Float版で使えず(中途半端に動いたけど)といろいろあったので、おとなしく推奨されているツールを入れます。
$ cd ~/local/opt $ git clone git://github.com/raspberrypi/tools.git
Soft Float版、Hard Float版のほかに、LinaroのHard Float版も入ってる感じです。
$ ls tools/arm-bcm2708/ arm-bcm2708hardfp-linux-gnueabi arm-bcm2708-linux-gnueabi gcc-linaro-arm-linux-gnueabihf-raspbian
使うツールセットのbinに対して、パスを通しておきます。
$ export PATH=$PATH:/home/ayataka/local/opt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/
クロスビルド
ソースコードをDL & 解凍して、booststrapを実行。
$ cd boost_1_54_0/ $ ./bootstrap.sh
このままだと単にビルドするだけなので、user-config.jamを書き換えます。適当に開いてコンパイラの設定を追記します。g++の名前は使うもので異なるので、PATHを通したものを記述します。
$ vi ./tools/build/v2/user-config.jam using gcc : arm : arm-linux-gnueabihf-g++ ;
あとはb2を用いてビルドします。インストールパスはお好みで。
$ ./b2 install -j2 --prefix=$HOME/raspi/local
おまけ
readelfでバイナリを確認できます。覚えておくと何かと便利です。
$ readelf -A libboost_atomic.so.1.54.0 Attribute Section: aeabi File Attributes Tag_CPU_name: "6" Tag_CPU_arch: v6 Tag_ARM_ISA_use: Yes Tag_THUMB_ISA_use: Thumb-1 Tag_FP_arch: VFPv2 Tag_ABI_PCS_wchar_t: 4 Tag_ABI_FP_denormal: Needed Tag_ABI_FP_exceptions: Needed Tag_ABI_FP_number_model: IEEE 754 Tag_ABI_align_needed: 8-byte Tag_ABI_align_preserved: 8-byte, except leaf SP Tag_ABI_enum_size: int Tag_ABI_HardFP_use: SP and DP Tag_ABI_VFP_args: VFP registers Tag_ABI_optimization_goals: Aggressive Speed Tag_CPU_unaligned_access: v6 Tag_DIV_use: Not allowed
Qt CreatorからRemote Device上で実行するときにrootで動かす
作成中のプログラムを、Qt CreatorからRaspberry Pi上のrootユーザーで実行する方法がすぐに思いつかなかったのですが、何のことはなく、Deviceの設定でログインするユーザーをrootにすればできることでした。
rootパスワードの設定
とりあえずRaspberry Piでrootのパスワードを設定します。
$ sudo passwd root Enter new UNIX password: Retype new UNIX password:
rootアカウント用Deviceの作成
常にrootというのもアレなので、root用にDeviceを作成。
使い分けるのに、root用のKitも用意しておきます。
このKitを使うことで、プログラムの転送と実行がrootで行われます。