月別アーカイブ: 2015年2月

Emacs24でScala開発

2016/04/06追記: sbtやensimeのバージョンが上がっています。最新のドキュメントに当たって下さい。

明日こそはツーリングに出掛けようと考えていたところ、先週に続いて明日もあいにくの雨の予報です。ということで今回のブログも仕事ネタです。

Java VM上で動作する関数型言語として人気のあるScalaをEmacs24の上で快適に開発すべく、ensimeを導入してみました。と軽く書いてみましたが、ウェブの情報が微妙に古かったりして結構面倒でした。備忘も兼ねてざっくり整理しておきます。

基本的にはensimeのQuick Start Guideの通りにインストールすればOKです。ここでは最新のPlay Framework 2.3.8 (Typesafe Activator 1.3.2)でプロジェクトは作成済みとします。キーポイントは、sbt 0.13.7を使うよう明示することです。

  1. package-installでemacsにensimeをインストール
  2. ~/.sbt/0.13/plugins/plugins.sbtにプラグインのエントリ追加
    addSbtPlugin("org.ensime" % "ensime-sbt" % "0.1.5")
  3. プロジェクトルート/project/build.propertiesのsbtのバージョンを変更
  4. sbt.version=0.13.7
  5. プロジェクトのactivator起動
  6. gen-ensimeを実行し、.ensimeファイルを生成 (時間が掛かります)
  7. sbt-0.13.7をインストール
  8. emacsでプロジェクトルート(以下にある任意のファイル/フォルダ)を開く
  9. emacsで M-x ensime 、4で生成したファイルを指定
  10. しばらく待つとensime起動
  11. Happy Hacking!

続きを読む

Raspberry Pi 2用のケース

先日、仕事でRaspberry Pi 2 (以下、RasPi2)を使うことがあり、外寸はRaspberry Pi B+と同じと聞いていたのでRSのB+ケースにRasPi2を入れてみたところ、どうもmicroSDカードに変な力が加わってしまったらしく、RasPi2がカーネルパニックを起こして起動できなくなりました。

この時は、RasPi2のmicroSDスロットの穴を切り開いて接点をピンセットで持ち上げ直して接触を改善することで治ったのですが、精神衛生上よろしくありません。そこで、Amazonで無加工でRasPi2にも使えるB+用のケースを購入しました。

GPIOのところが開きっぱなしになるのとカメラモジュールを固定できないのが気になりますが、それ以外は文句なしです。価格がもうちょっと安ければ完璧なのですが、贅沢は申しません。おすすめです。

Raspberry Pi 2でPlanex GW-450D その2

先の記事の手順で一応はWiFiを5GHzで利用できるようになりましたが、釈然としません。ということで、クロス環境を用意してみました。

詳細な手順はこちらのサイトに整理されているので再掲しません。私はVMWare上のDebian Wheezy 64bit環境に構築したのですが、カーネルのビルドは15分程度で済みました。注意点として、

  • toolsのgcc等を実行できない (コマンドを実行してもcommand not foundになる) 場合は libc6-i386 をインストール
  • libz.so.1がnot foundというエラーが出る場合はlib32z1をインストール
  • linaroのコンパイラはlibc6-2.14依存っぽいので素のWheezyでは使えないかも

の三点が挙げられます。また、特にカーネルオプションを変更しないのであれば、make menuconfigでなくoldconfigでもよいかも知れません(この場合はncurses-devが不要)。

もう一点、先の記事にも書きましたが、5GHzでも利用できるようにするにはRT2870STA.datのWirelessModeの値を5に変更する必要があります。これが9のままだと2.4GHzしか利用できません。

Raspberry Pi 2でPlanex GW-450D

Raspberry Pi 2 (以下RasPi2)を5GHzのWiFiに接続させる必要があったため、AmazonでPlanexのGW-450Dの簡易パッケージ版であるFFP-450Dを購入し、RasPi2で動作させてみました。

Planex自身がRasPi対応を謳っており、実際、ドライバの導入方法まで公開していたので安心して購入したのですが、いやはや、世の中そんなに甘くありません。rpi-updateでRasPi2のファームを最新に更新したのが原因か分かりませんが、この手順通りに作業すると最後のinsmodで Invalid module format のエラーが発生します。

軽く調べてみた感じでは、内部的なカーネルのバージョンが 3.18.7+-v7 だったり 3.18-7-v7+ だったりで、どうもカーネルのバージョンとinsmodしようとしたドライバ(モジュール)のバージョンが違うと判断されてしまうようです。

で、結局、カーネルのビルドからし直しました。この時はクロス環境を用意できなかったため、RasPi2の上でコンパイルしたのですが、4時間以上掛かりました。一応以下にざっくりとした手順を整理してみましたが、microSDの寿命も縮めるし、正直お勧めできません。

  1. GCCのバージョンを4.8に上げる (jessieから)
  2. GCCのデフォルトのバージョンを4.8に設定
  3. Linuxのソースコードを取得
  4. .config作成
  5. カーネルとモジュールのコンパイル、インストール、reboot
  6. ドライバのソースを編集
  7. ドライバをコンパイル
  8. /etc/wpa_supplicant/wpa_supplicant.confの編集
  9. /etc/Wireless/RT2870STA.datのWirelessModeを9から5に変更
  10. insmod
  11. ifup ra0

Raspberry Pi用に用意されているクロス環境を整えて、マシンパワーのある環境でクロスビルドした方がよいです。実際、私の開発PCで試したところ、4時間以上掛かったビルドが15分程度で完了しました。

Parallella Desktop

今回はバイクの話ではありません。っつーか、通勤でGROMにはほぼ毎日乗ってますけど、CB1300SFの方は1ヶ月ほどご無沙汰しちゃってます。今週末も来週末も仕事だし、もうしばらくは無理っぽいです。

閑話休題。個人でも購入できるスーパーコンピュータという触れ込みのParallellaを入手しました。USB, HDMI, GPIOのあるDesktop版です。Parallella Fan!の記事を参考にケーブル等の機材を集め、さっそくセットアップしてみました。

基本的には公式サイトのGET STARTED (Quick Start Guide)の通りに進めれば問題ありません。引っ掛かったのは.img.gzを解凍したらmy_backup.imgという変なファイル名になったことぐらいです。

  1. バイナリファイルをDL, 必要に応じてunzip, rename
  2. Win32 Disk Imagerでイメージファイルをmicro SDカードに焼く
  3. ファイルをmicro SDカードにコピー
  4. ヒートシンクを取り付け
  5. LANケーブル、micro SDカード、micro HDMIケーブル、micro USB-USB変換ケーブルを接続
  6. キーボード接続
  7. 電源コード接続→電源ON

で、あっさりとUbuntuが起動しました。が、ここでキーボードが認識されないという問題が。B+になる前の初代Raspberry Piでも同じような問題が発生しましたが、おそらくキーボードでなくUSBハブとして認識されたのでしょう。セルフパワーのUSBハブを別途用意する必要がありそうです。ただ、外部サイトの情報として、HHKBは認識された報告があるんですよね。

キーボードからの入力を受け付けないので、sshで入ります。DHCPサーバのリース状況を調べてIPアドレスを確認し、デフォルトのlinaroユーザでログイン、sudo shutdown -h nowでシャットダウンしましたが、Debianと違ってUbuntuだと "System halt" 表示で止まって電源までは落ちないんですね。一つ勉強になりました。

で、実際のところ、起動してXを立ち上げてshutdownしただけなのですが、ヒートシンクは長くは触り続けられない程度に熱くなっていました。小型の静音ファンか何かを用意した方が精神衛生上よさそうです。