2016/01/10

Raspberry Pi 2 Model B を買ってみたとか

ファイル同期ソフト BitTorrent Sync を Raspberry Pi 2 Model B に導入した話。


これまで、Linux の設定ファイルは Dropbox、開発中のプログラムは Copy でファイルを同期・管理してきました。

しかし、Copy で mercurial のバージョン管理をすると、mercurial の一部ファイルが同期しない問題が発生。Dropbox も容量がいっぱいのため、何か別のファイル同期システムがないかと探していたところ、BitTorrent Sync に出会いました。

BitTorrent Sync は、Dropbox や Copy 同様にファイル同期サービスですが、特徴的なのは P2P 技術*1で同期していて、容量がデバイスの上限まで利用できる点でしょうか。あと、Windows や Mac、Linux 用のソフトウェアだけでなく、Android や iPhone、ARM 用のソフトウェアもダウンロードできるのも魅力的です (様々なデバイスで利用できる)。
P2P の利点はDropbox などの多くのユーザが利用するサーバを介する同期では、サーバがボトルネックになることがありますが、P2P はデバイス同士を直接接続するため、比較的高速に同期することができます。また、容量がデバイスに依存するので、1TB など大容量の同期も可能になります。

ただ、欠点は BitTorrent Sync が起動しているデバイス同士でしか同期できないこと。つまり、片方の電源が落ちてたり、ソフトウェアが起動していないと同期できないということです。

そこで、BitTorrent Sync でファイルを同期するため、サーバを導入します。まぁ、サーバと言っても、要はどこかに常時起動の PC やらデバイスがあればいいわけです。また、個人や小規模でしか利用しないのであれば、Dropbox のようなサーバのボトルネックはないですしね。
最初は使わなくなったネットブック Lenovo IdeaPad S10-2 をそのサーバにしようと思ったのですが、物置から出してスイッチを入れても起動せずお陀仏。やっぱりある程度使ってないと、駄目になるんですかねぇ。

なので、巷で話題になっている Raspberry をサーバにしてみました。5千円程度で購入でき、サイズはキャッシュカードサイズというのが決め手です。

ちなみに、これが初 Raspberry。少しワクテカします。

早速、最新版の Raspberry Pi2 Model B + メタルケース + ヒートシンクを Amazon (Raspberry Pi2 Model B 本体+ケ-ス+ヒートシンク+USBケーブル 4点セット (極薄アルミケース(ブラック)) でポチりました。あと、Raspberry は電源や内蔵ストレージなどが一切ついてないので、それも購入しました。
で、届いたのがこれ。
パッケージ外装。シンプルなデザインで、小さいですね。シャープペンの4/5くらい?

中身。パッケージ外装よりもさらに小さい Raspberry が出てきました。サイズはシャープペンの 2/3 くらい?

ケースなども入れるとこんな感じ。

まず、microSD (内蔵ストレージ) に OS をインストールします。
自分は、Ubuntu 派ですので、今回は Ubuntu server をインストールします。イメージファイルの入手とインストール方法はこちら (ARM/RaspberryPi - Ubuntu Wiki)
簡単に言うと、イメージファイルを dd コマンドでイメージファイル内のパーティションを丸ごとコピーする感じですね。ただし、イメージファイルはパーティションサイズが最小になっているので、dd コマンドでコピーしたら、その microSD を gparted などで開いて、ext4 でフォーマットされたパーティションを microSD の最大サイズまで拡張されることをオススメします。

インストールが完了したら、組み立てます。
とは言っても、そんなに難しくないんですけどね。
内蔵ストレージの microSD を基盤の裏側に挿します。microSD はケースに入れた後も脱着できるので、これを最初にする必要はないのですが…。

ヒートシンク (写真左) を Raspberry 上のCPU や LAN コントローラにグリスを塗ってから装着させます (写真右の銀色の波々パーツ✕2)。

ケースに Raspberry を載せて、四隅を付属の銀色のねじで固定します。

ケースのカバーを上からかぶせて、側面 (USB コネクタや microSD 差込口がある面) の計 4 箇所を付属の黒い小さいねじで固定します。

ケース完成図

HDD ケースに HDD を入れて、Raspberry の USB ポートに挿します。
ちなみに、バスパワー (USB ケーブルから電源を供給するタイプ) の外付け HDD (あるいは HDD ケース) だと、Raspberry から供給される電源不足で通常では起動できない (設定ファイルで USB からの供給電流を設定する必要がある) ので、セルフパワー (USB ケーブルの他に、コンセントにつなぐ電源があるタイプ) が無難です。
バスパワーでやる場合は、microSD を別 PC で開いて、こちら (Raspberry Pi の USB ポートに 1200mA の電力供給 | Raspberry Pi) のページの通りにします。

そして、電源開封。
Raspberry とモニターを HDMI で接続した上で、100 均の USB 電源ケーブルでつなぎます (ケーブルをつないだ瞬間に電源が入ります)。
HDMI については、VGA 変換ケーブルを介しているとそのままでは画面に映らないため、設定が必要です (microSD を別 PC で開いて、こちら (Raspberry PiをVGAモニターに接続して画面出力したときのメモ - Qiita) のページの通りにします。)。

うまく、起動できたら、こんな感じに Ubuntu のサーバのコンソールが表示されます。

あとは、コンソールから openssh-server を入れると、以後ネットワーク上からアクセスでき、HDMI を外して運用することができます。

最後に、Bittorrent Sync のインストールは、 公式ページから Linux ARM 版をダウンロード (他のバージョンだと動きません)。展開した後、実行するだけです (参考サイト: Tutorial – How to set up BitTorrent Sync on a Linux server to create a Dropbox-like syncing solution | Nickology.com)。

これで、2TB のスペースのファイル同期ができたー。
mercurial でのバージョン管理も問題ないようです。


*1 P2P と聞くと、ファイル共有ソフト Winny などで悪いイメージがあるかもしれませんが、P2P 自体は通信方式、通信技術のことなので、P2P を利用したソフトが問題であって、これ自体は悪くはないんですよね (市販薬を大量に飲んで死人が出たからと言って市販薬すべてが悪いというわけではなく、使い方の問題ということ)。

2015/11/30

vim で Esc キーを押すと fcitx を OFF にするとか

メインで使っているエディタが Sublime Text な無銘闇人です。

そんなことはさておき、サーバや PC の設定を端末エミュレータで操作している時に、テキストファイルを軽く修正することなんてよくあります。さすがに毎回、Sublime Text を開くのは仰々しくて (既に別のプログラムのソースでタブがいっぱいの時とかは起動が重いし)、そんな時は結局 vim で編集してたりします。

そして、時々、後々のためと思って、何のディレクトリかの説明を README.txt なんてファイルに残したりするのですが、vim で日本語を入力すると、以下の手順を踏むことになるわけです。
  1. i で vim のインサートモードに切り替え
  2. 全角半角キーを押して、Fcitx の mozc を ON にして日本語入力モードに切り替え
  3. 日本語で説明を入力
  4. 全角半角キーを押して、Fcitx の mozc を OFF にして英数字入力モードに切り替え
  5. Esc キーを押して vim のノーマルモードに切り替え
4 と 5 はどちらからやってもいいのですが、時々 4 の操作を忘れたままノーマルモードに入って、保存しようとすると、全角で「:wq」となってコマンドを受け付けてくれないのですよね。そもそも、ノーマルモードで日本語を打つことはほとんどないので、4 と 5 が同時に終わってくれれば助かるのです。

で、私がしようとしていることは、もう大抵のギークな人たちがたどり着いているので、検索するだけで解決策を紹介するページがわんさか出てきます。インターネットバンザイ!

代表的なのは 3 つでしょうか。

私のオススメは「Linux の IM (InputMethod) の Fcitx を gVim で快適に使うプラグイン - 地獄の猫日記」で紹介されているプラグインを使う方法。
NeoBundle というプラグイン管理マネージャを導入すれば楽々です。NeoBundle の導入については「NeoBundleによるVimプラグイン管理とおすすめプラグイン - Catcher in the tech」で。

2015/11/08

image-manipulator の更新とか

Linux ディストリビューションのファイルマネージャ (Nautilus や Nemo) で、まとめて画像を変換するスクリプト「Image Manipulator」の Ver. 1.2 を公開しました。

ダウンロードはこちらから。

導入方法や使い方は過去記事を見てください。

Changelog は以下の通り。
  • ファイル名にスペースを含む画像に対応
  • 出力設定を作業ごとに尋ねるように設定 (v1.1 ではスクリプトにデフォルトの挙動を記述していた)
  • トリミング用スクリプト (Trimming) を追加

Trimming の使い方
  1. トリミングしたいファイルを選択
  2. 右クリックメニューから「スクリプト」→「image-manipulator」→「Trimming」をクリック
  3. 余白サイズを設定
    • 画像の例だと、縦と横に、画像の 10 % の余白をそれぞれ挿入します。
    • ピクセル単位でも設定できます。
    • imagemagick の convert や mogrify の -border オプションに当たります。
    • キャンセルボタンをクリックすると、終了します。
  4. 余白の色を設定
    • 余白の色をカラーピッカーや、カラーコードで指定します。
    • imagemagick の convert や mogrify の -bordercolor オプションに当たります。
    • キャンセルボタンを押すと、透過色 (none) が指定されます。
  5. 出力するファイルを末尾に _trim を付けて別名で保存するか、上書きするかを選択
    • キャンセルボタンを押すと、終了します。

Protein Data Bank ファイルの vim 用 syntax ファイルを作ったよとか

仕事で分子情報を扱っている無銘闇人です。

さて、今回は誰の役に立つか分かりませんが、タイトルの通り、Protein Data Bank 形式 (*.pdb) の syntax をハイライトする vim ファイルを作ったので公開しました。
ダウンロードはこちらから。

2015/09/28

VMD を起動できない問題を解決する方法とか

前にも解決したけど、分子モデリングプログラム Visual molecular dynamics (通称: VMD) で再インストールした際にまた躓いて、面倒だったので、その備忘録。


インストール後、端末などから実行しようとすると、rlwrap 絡みのエラーで実行できない(バージョン 1.9、1.9.1、1.9.2 で発生するっぽい)。
実行するとこんな感じ↓
$ vmd
rlwrap: No match.

調べた所、VMD を再インストールするとか、rlwrap をインストールするとかどうしようもないことが書かれているサイトもあったけど、最終的にVMD のメーリングリスト「VMD-L Mailing List」に解決方法が載っていた。

/usr/local/bin/vmd にある以下のソースを見つける (detect あたりで検索するとヒットする)
# detect if we have rlwrap available to have commandline editing                  
set vmdprefixcmd=""
if (("${ARCH}" == "LINUX") || ("${ARCH}" == "LINUXAMD64")) then
  set rlwrap=`which rlwrap`
  if ( -x "$rlwrap" ) then
    if ( -f ${MASTERVMDDIR}/vmd_completion.dat ) then 
      set vmdprefixcmd="rlwrap -C vmd -c -b(){}[],&^%#;|\\ -f ${MASTERVMDDIR}/vmd
    else 
      set vmdprefixcmd="rlwrap -C vmd -c -b(){}[],&^%#;|\\ "
    endif
  endif
endif
それを以下のように行頭に「#」を付けてコメントアウトする。
# detect if we have rlwrap available to have commandline editing                  
set vmdprefixcmd=""
if (("${ARCH}" == "LINUX") || ("${ARCH}" == "LINUXAMD64")) then
  set rlwrap=`which rlwrap`
#  if ( -x "$rlwrap" ) then
#    if ( -f ${MASTERVMDDIR}/vmd_completion.dat ) then 
#      set vmdprefixcmd="rlwrap -C vmd -c -b(){}[],&^%#;|\\ -f ${MASTERVMDDIR}/vmd
#    else 
#      set vmdprefixcmd="rlwrap -C vmd -c -b(){}[],&^%#;|\\ "
#    endif
#  endif
endif
すると、すんなり動く。
ちなみに、/usr/local/bin/vmd は管理者権限でしか編集できない。


余談だが、Ubuntu や LinuxMint での VMD のインストール方法は以下のとおり。
  1. VMD - Visual Molecular Dynamics」の「Download VMD」から自分のアーキテクチャに合ったファイルをダウンロード (今回は Linux_64 OpenGL, CUDA を選択)
  2. ダウンロードしたファイルを展開
    $ tar axvf vmd-1.9.2.bin.LINUXAMD64.opengl.tar.gz
  3. configure でアーキテクチャを指定
    $ cd vmd-1.9.2
    $ ./configure LINUXAMD64
  4. インストール
    $ cd src
    $ sudo checkinstall

この場合だとアンインストールは以下のコマンドで OK。
$ sudo dpkg --purge vmd