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

2015/09/18

Gnuplot で Å を出す方法とか

gnuplot で「Å」を出す方法という訳で、ググると「encoding を iso_8859_1」にするというサイトが上位に上がっていますが、最近は UTF-8 という素晴らしい文字コードがあるので、それを使うと幸せになれたりします。
テキストエディタ作成したファイルを読み込ませてグラフを表示するとか…。

やり方は、「set encoding utf8」を実行してから、ラベルやタイトルで「Å」の入った文字列を入力するだけ。

ちなみに、Ubuntu や LinuxMint で、Å を ibus を使わずに入力するには、
Ctrl+Shift+u → 00c5 → Space
で入力できます。
他のアプリケーションでもこの入力が使えます。もちろん、LibreOffice でも…。

ちなみにちなみに、00c5 はコードポイントと呼ばれる数字で、これを変えると他の文字も入力できます。コードポイントについては、以下のサイトで検索するといいかも。

gnuplot 5.0.1 のインストール方法とか

gnuplot も 5.0.1 となり、使い勝手が良くなりました。
これまでの設定と互換性がない部分もありますが、デフォルトの線の色が原色でなくなったことで見やすくなったり、破線を細かく設定できたりします。詳しくは他のページで紹介されているので、そちらにお任せするとします。

さて、gnuplot の最近版を追いかけるとなると、PPA からではなく、自分でコンパイルしなければなりません。
Ubuntu 14.04 LTS や LinuxMint 17 (あるいはアップグレードした 17.x) だと、何も考えずに ./configure と make、checkinstall (make install) で解決なのですが、最新版の LinuxMint 17.2 (クリーンインストール) でつっかえたので、備忘録として書いておきます。
  1. gnuplot 5.0.1 をダウンロード
  2. ダウンロードした gnuplot-5.0.1.tar.gz を展開
    $ tar axvf gnuplot-5.0.1.tar.gz
  3. 必要なパッケージのインストール
    $ sudo apt-get install [下のパッケージ]
    • wxgtkウィンドウに出力する場合
      • libwxgtk2.8-dev
        libwxgtk3.0-dev というライブラリも存在しますが、gnuplot では正常にコンパイルできないバグ(?) があるようです。今回私が手こずったのはこのせい。
        make で「wxterminal/wxt_gui.o: シンボル 'XInitThreads' への未定義参照です (wxterminal/wxt_gui.o: undefined reference to symbol 'XInitThreads')」というエラーが出る場合はこの問題に引っかかっています。
        また、このライブラリがなくてもコンパイルはできますが、wxgtk ウィンドウに出力できなくなります (wxt ターミナルが使えなくなる)
        Gnuplot - Dev - CVS build fails on Ubuntu 14.04 i386
        gnuplot / Bugs / #1401 changes needed in order to support wxWidgets 3.0
      • liblua5.1-0-dev
      • libgd-dev
      • libcairo2-dev
      • libglib2.0-dev
      • libpango1.0-dev
    • Qt ウィンドウに出力する場合は上記に加え、以下のパッケージのインストールが必要です
      • qt5-default
        configure 時に「No package 'Qt5Core' found」「No package 'Qt5Gui' found」「No package 'Qt5Network' found」「No package 'Qt5PrintSupport' found」と出るのはこれがインストールされていないせい。
        Ubuntu 14.04 Qt5 development libraries? - Ask Ubuntu
      • qttools5-dev-tools
      • libqt5svg5-dev
        configure 時に「No package 'Qt5Svg' found」と出るのはこれがインストールされていないせい。
  4. configure の実行
    $ cd gnuplot-5.0.1
    $ ./configure [オプション]
    オプションには --with-readline=builtin (補完機能を付加) や --with-qt (qt ウィンドウに出力) などがあります。詳しくは ./configure --help を実行すると指定できるオプションが出力されます。
  5. make の実行
    $ make
    ※ 「-j [CPU数]」 を付け加えると、並列でコンパイルするのでコンパイル作業がいくらか捗ります。
  6. インストール
    $ sudo checkinstall
    ※一度、deb パッケージ変換してからインストールするので、アンインストールが楽になります。
    or
    $ sudo make install
これで完了するはず


にしても、LinuxMint 17.2 にクリーンインストールしたのは、何も検証せずに、gnome3 の staging なんていうテスト PPA をぶち込んだのが原因…。gnome3 は根幹を司るパッケージが多いため、マウスがカクカクしたり、ダイアログがいつもと違ったりとひどい目にあいました。いつも作業している環境をクリーンインストール状態から簡単に再構築するシェルスクリプトがあったので助かりましたが、ウイルスやアドウェアの脅威が少ない Linux であっても、PPA の導入は気をつけなければならないなという教訓的な出来事でした。

2015/06/13

AutoPagerの代替アドオン「Google Auto Next Page」の紹介とか

今回はFirefoxのAutoPagerについて。

Googleの検索画面や掲示板サイト、ギャラリーサイトなどを見ていると、よく「次へ」とか「2、3、4、…」なんていう複数のページのナビゲーションリンクがあったりしますが、Autopagerは定義されているサイトであれば、ただページの下に行くだけで次のページを自動で展開してくれるという便利なアドオンです。

無銘闇人もGoogle検索で御用達のこのアドオン。
しかし、近年のFirefoxのリリースサイクルにアドオン開発者が追いつかなくなったのか何なのかメンテナンスされていない様子…。そして、ついにアドオンが機能しなくなりました。

その打開策として、様々なサイトで紹介されているのが、「AutoPager fixed」です。

しかし、多くの方がうまくいくのに、それがうまくできないことに定評のある無銘闇人は、今回もうまくいきませんでした。
確かにページの自動展開機能は動いているようですが、場合によってはGoogleの検索画面やブログサイトが右の写真のように残念な白ページ展開に…。

100%の再現手順はありませんが、日本語で、全角スペースを入れると出てくるような気がします。

それで、これを解決すべく、色々、別のアドオンを探してみますが、FirefoxではAutoPagerほど細かい設定ができない(全てのサイトを展開してしまう) 「AutoPagerize」かAutoPagerの2択なのか、あまり有益な情報は得られず…。

その中でも同様の機能を有するChromeのアドオンとして紹介されていたのが、「Google Auto Next Page」です。もちろん、Firefox版(Google Auto Next Page :: Add-ons for Firefox)もありました。

検索結果はこんな感じ(右画像)で、白ページ展開も今の所ないです。

対象サイトはGoogle検索に絞られてしまいますが、私のようにGoogle検索でAutoPagerのような機能を使いたい人にはオススメのアドオンです。

2015/05/26

Nexus9 を Android 5.1.1 にアップデートするとか

他の人が普通にできるのに、それがなぜかうまくいかない無銘闇人です。

最近、ブログを更新してなかったわけですが、久々に技術的なネタを見つけたので、備忘録的な意味合いでの更新です。

今回は Nexus9 の Android 5.1.1 アップデートについて。
以下、経緯ですが、経緯とかはどうでもいいって人はスキップ ↓

=====
昨年の11月末に Nexus9 (Wifi 版) を購入したわけですが、どうもこの端末、無銘闇人と実に相性が悪いみたいです…。メモリリーク起こして、重くなったり、起動画面ループになったり、端末の上部が熱くなったり、キーボードフォリオが早々にご臨終したり…。(最後のは関係ないか)

で、今回、躓いたのが Android 5.1.1 へのアップデート。
通知領域にアップデートができますとなったので、早速アップデートを実行しましたが、途中で画面中央に「エラーです」の一言のみ表示して再起動。

メモリリークが解決すると噂されていただけに、期待を早々に裏切られました。orz。そもそも、「エラーです」って表示で、ユーザにどうしろと言いたいのかと開発者に小一時間問い詰めたいくらいです。せめて、エラー内容でも表示すればいいのに…。

その後、何度か繰り返しましたが失敗が続いたので、PCからの操作に踏み切りました。

が、リカバリーモードの sideload でのアップデート失敗。しかも、中途半端にアップデートが適用されたがために、初期化された Nexus9 には「unfortunately, NFC service has stopped」などのエラーメッセージの嵐で、ブートローダ以外は操作できず…。

fastboot からのインストールも、system.img をインストールする段階で「data length is too long」のエラーでアップデートできず。その解決方法も掲示板でイメージファイルが壊れているとか、fastboot のバージョンが古いとか全然役に立たない情報ばかりで、もう散々です…。

でも、何とか回避策を見つけたので、紹介したいと思います。
=====

以下、私と同じエラー (flash-all.sh をやって、"data length is too long") が出る人用の回避手順です。環境はもちろん、LinuxMint (おそらく、Ubuntu でも可。読み替えれば Windows でも可です)。

ここでやっているのは結局、OS データの新規インストール (ROM焼き) となりますので、バックアップを取ってから試して下さい。なお、自己責任でお願いします。
  1. Nexus9 側の作業
    1. OEMロックの解除 (この段階で初期化されます)
      →「Nexus 9のBootloaderアンロック方法 | Gadgen(ガジェン)」を参考に解除
    2. 上記のサイトの最後の写真のような状態にしておく
      ※「Devide State - UNLOCKED」や「FASTBOOT USB」と表示されている状態
    3. USBケーブルでPCに繋ぐ
  2. PC側の作業
    1. fastboot のインストール
      端末 (terminal) を開いて以下を実行
      $ sudo apt-get install android-tools-fastboot
      あるいは、「[TOOL] [LINUX/MAC] Nexus Tools 2.6 (Featured… | Development Tools | XDA Forums」の #1 の bash ... のコードをコピペして端末で実行
    2. Factory Images for Nexus Devices - Nexus Files for Developers — Google Developers」から自分の Nexus9 に合った Factory Image をダウンロード
      私は Nexus9 (Wifi 版) なので、「"volantis" for Nexus 9 (Wi-Fi)」の「5.1.1 (LMY47X)」の「LINK」からダウンロードしました。866.1 MBくらいあるので、時間がかかります。
    3. 端末 (terminal) を開き、ダウンロードしたディレクトリに移動
      $ cd ~/Downloads
      ※「~/Downloads」の所が、ダウンロードしたディレクトリになります。
    4. 端末 (terminal) から md5sum を実行して、ファイルがおかしくないかチェックします。
      $ md5sum volantis-lmy47x-factory-3efdc8d4.tgz
      a63624b4b42caf1d8327c4e19d7005e5  volantis-lmy47x-factory-3efdc8d4.tgz
      「a636...」 に当たる部分がファクトリーイメージのサイトにある自分がダウンロードしたイメージの「MD5 Checksum」のコードと同じだと OK です。
    5. 多くのサイトでは、ここで flash-all.sh (Windows では flash-all.bat) を実行とありますが、そのまま実行すると、「data length is too long」と出て、アップデートできない場合があります (私がそうでした)。おそらく、flash-all.sh の最後の行の「fastboot 〜 update 〜」でこけているので、fastboot が .zip をうまく読み込めてないのではないでしょうか? なので、地道にインストールしていきます。 まずは、flash-all.sh の最初の部分を実行
      $ fastboot flash bootloader bootloader-flounder-3.44.1.0123.img
      $ fastboot reboot-bootloader
    6. コケる原因である image-○○○.zip を展開します。(○○○はイメージファイルによって異なります)
      $ unzip image-○○○.zip
    7. 展開したディレクトリ image-○○○に入ります。
      $ cd image-○○○ 
    8. 中に .img ファイルがあるので、順番に Nexus9 に書き込んでいきます。
      $ fastboot flash boot boot.img
      $ fastboot flash cache cache.img
      $ fastboot flash recovery recovery.img
      $ fastboot flash system system.img
      $ fastboot flash vendor vendor.img
      ※2015/12/25 上の recovery の部分に不足がありましたので、修正しました

      あるいは、まとめて for 文でもできちゃいますね。
      $ for i in *.img; do
      > fastboot flash ${i%.img} $i
      > done
      ※ 「>」は入力しません。 
    9. 全ての書き込みで「OKAY 〜」と表示されていたら問題なく作業が完了しているので、以下のコマンドを実行して、Nexus9 を再起動
      $ fastboot reboot
      問題がある場合は、再度、上記操作の見直しをする。
これで、Nexus9 には Android 5.1.1のセットアップ画面が表示されているはずです。

参考サイト