今夜もLab.に独り

蛙飛び込むVimの音

cdの履歴保存(ディレクトリスタック)

ArchWikiのZshページにディレクトリスタックの項目があった。

Zsh - ArchWiki

これが結構便利なんだけれど,シェルを複数開いていると機能しない。

そして俺は普段からターミナルのタブを大量に開いているのでこのままじゃ使えない。ので改変した。

やったこと

ArchWikiの記述をベースにしつつ, シェルを開く毎に個別のディレクトリスタックファイルを作成できるように,.zshrcへ以下を加筆。

DIRSTACKFILE="$HOME/.cache/zsh/dirs/`\date +%d%M%N`"
if [[ -f $DIRSTACKFILE ]] && [[ $#dirstack -eq 0 ]]; then
  dirstack=( ${(f)"$(< $DIRSTACKFILE)":} )
  [[ -d $dirstack[1] ]] && cd $dirstack[1]
fi
chpwd() {
  print -l $PWD ${(u)dirstack} >$DIRSTACKFILE
}

DIRSTACKSIZE=20

setopt autopushd pushdsilent pushdtohome
setopt pushdignoredups
setopt pushdminus

DIRSTACKFILEに時刻の情報を付けて,重複を回避しただけ。

自分の環境だとdateコマンドにはエイリアスを設定しているので,1行目は\dateにした。 %d%M%N日付分ミリ秒を出力させる。

DIRSTACKSIZEは何となく20にした。

できたこと

すごーい!いくらでもシェルを開けるんだね!

便利なところ

あちこちcdしていじっている時に

$ cd -

と打ってから<tab>とかすると幸せになれる。かも。 詳しくはArchWiki参照。

Vimperatorのタブが開かない

何の気なしにFirefoxを閉じて開いたら,tabやhintが軒並み動作しなくなってしまったので困っていたところ,どうやらFirefoxのバージョン更新に伴うアドオンの互換性の問題があったらしい。

github.com

開発版はとりあえず動くようになってるから,必要ならセルフビルドしてね! ってなってるけれど,やったことないからすぐにはできないなぁ。。。

Vimperatorが使えないとこの上なく不便であることを実感した。(特にタブ検索とか)

VirtualBoxがCOMオブジェクトを作成できなくて死ぬ

後輩のマシンのトラブルシューティング記録。

症状

VirtualBoxを起動すると,

VirtualBox COMオブジェクトの作成に失敗しました。
アプリケーションを終了します。

という風に重大なエラーとやらを吐いて事切れる。

検分

以前にホスト側の起動ボリューム(つまりはCドライブ)が容量超過で書き込めなくなり, その後に発症した模様。

以下の全て(組み合わせ含む)を試したが,状況は変らず。

  • OSの再起動
  • コントロールパネル->プログラムと機能からVirtualBoxのアンインストール
  • Webから調達した産地直送採れたてのインストーラによるVirtualBoxインストール

決定打

メモいろいろ: VirtualBoxで重大なエラー

上のサイトに同様の症状について記載があったため,適宜レファレンスしつつホスト側OSで以下を実行。

  1. ホームディレクトリ下の.VirtualBoxへ移動
  2. VirtualBox.xmlを削除
  3. VirtualBox.xml-prevVirtualBox.xmlにリネーム

贅沢な名だねぇ,今日からお前の名前は(ry

その後VirtualBoxを起動してみると,すんなりマネージャ画面が表示されたので問題解決。

VirtualBoxをアンインストールした後でも,.VirtualBoxはしっかり残っていたので上記操作は可能。というか残ってたからこんな症状が出るのでは?

まとめ

要するに,仮想マシンの構成情報が書かれたxmlファイルが何故か空になってしまったので,自動生成されている(っぽい)バックアップを使ったというお話。

理屈はともかく,容量超過で書き込みに失敗するとこのような症状が出るらしい。

起動ボリュームの容量には気を付けましょう。

キーボードレイアウトの修正

ArchLinuxのキーボードレイアウトがなぜかUSからJPに変わってしまったので修正したメモ。

結論

Xの設定が変わっていた。

やったこと

折に触れてArchWikiを見ながら下の3つを検証。

  1. システムロケール
  2. IBus
  3. X

システムロケール

$ localectl status

で設定を確認。 システムロケールはus,VCもus。Xもus。特に不審な所無し。次。

IBus

何かこういうときってIMが悪さしているようなイメージがあったので適当にゴチャゴチャと調べた結果, そもそもキーボードレイアウトを指定するような項目が見当らなかったのでスルー。次。

X

$ setxkbmap -print -verbose 10

で色々と出てくる。そしてその中に

  layout :       JP

を発見。こいつか。。。でもシステムロケールを見たときはusだったのになぜ???

ともかく,

$ setxkbmap -layout us

で設定を変更したら解決した。やったー。

上記をシェルの設定ファイルに書き込んでとりあえず作業終了。

テキストシリーズ土木工学6 線形代数

某が激推ししていたので気になっていた本を図書館で借りて流し読み。

これはすごく丁寧。とっつきやすさに重点を置いているけど,しっかり数学の知識が付きそう。(今は予備知識があるからサクサク読めてる部分は当然あるけど)

学部のときにこれ読みたかったな。。。

Manjaro Linux 15.12 on VirtualBox

半年以上下書きに眠っていたので年が暮れるまえに供養。

参考にしたもの

前提条件

VirtualBox導入済み

ManjaroのISOイメージDL・サムチェック済み

やったこと

ホストOS: Windows10 Pro

ゲストOS: Manjaro Linux Xfce 15.12 64bit

VirtualBoxで構築。

ついでにいろいろと設定。

手順

ゲストOS用のパーティションを切る。

パーティショニング - ArchWikiを参照。

必須なものだけ用意することにして, /boot``/``/var``/home用の場所を確保した。

元になる仮想ディスクファイルは①SSD上②HDD上の2つを用意。

SSD(静的-20GB)

/bootを300MB,残りを/に割り当て。

②HDD(動的-200GB)

/varに20GB,残りを/homeに割り当て。

以上の操作をgparted等で行った。

なお,後の作業で混乱しないように, 例えば/boot用のパーティションにはマシン名_bootといったように, パーティション毎にわかりやすいラベルを付けた。

Torque導入

海外遠征中にがっつり計算をまわせるようにジョブスケジューラを急ぎ足で導入。

環境はいつものubuntu 14.04 LTSで。

とりあえずたくさん投げておいたジョブを順繰りに消化してくれれば良いので, ジョブ管理サーバがそのまま8ノードのクラスタとして動くような構成。

参考URL

TORQUEの導入・設定:tech.ckme.co.jp

他もググった気がする

ステップ1

apt-getで拾ってくる。

$ sudo apt-get update
$ sudo apt-get upgrade

$ sudo apt-get install torque-server   # これがサーバ用パッケージ

$ sudo apt-get install torque-client   # これと
$ sudo apt-get install torque-mom      # これがノード用らしいけどclientはserverについてきたような...

拾ってくると自動で動き出すので,設定の都合上,

$ sudo service torque-server stop
$ sudo service torque-scheduler stop
$ sudo service torque-mom stop

で止めておいた。止めなくてもよいのかも。

2017-03-23 追記 サービスを止めずにステップ2でサーバ名を変更してステップ3へ進むと,qmgrのコマンド実行時に詰む模様。 おそらくtorque-momが起動する時に/etc/torque/server_nameのデフォルトを読んでいるので,こちらが設定した新しいサーバ名と食い違うのが原因か。

ともかく,上記サービスは停止させておくに越したことはない。

ステップ2

サーバ/ノード設定を行う。

/etc/torqueなるディレクトリができていて,その中に nodesserver_nameというファイルがあるのでそれを確認する。 できてなかったら多分つくればよい。

$ cat nodes
サーバ名 np=xx   # 自分のマシンのホスト名とノード数xxがあっていなければ直す

$ cat server_name
torqueserver     # torqueserverの部分をnodesのサーバ名と同じにする

編集にはsudoが必要だったかもしれない。

ステップ3

キュー(ジョブを投げる窓口)の設定を行う。

2017-03-23 追記 このタイミングでtorque-serverを起動しておかないと、qmgrが文句を言う。

使うのはqmgrというコマンド。 基本sudoを付けて使っていく。

例としてtest01なるキューを作る。

$ sudo qmgr
Max open servers: xxx
Qmgr: create queue test01
Qmgr: exit

$

これでキューが作られる。 qmgr実行中はプロンプトがQmgrになるので注意。

しかしこれだけだとほとんど意味がないので,

Qmgr: set 適用先 設定変数 = 値

みたいな感じでコンフィグを行う。 適用先はserverが全体設定,queue test01でtest01キューにのみ設定,といった具合に書く。

詳しくはmanとか参考URLで確認してつかぁさい。

設定した項目の一覧は

$ qmgr -c "p s"

とすると一覧で出てくるので,リダイレクトすればテキストファイル等に保存しておける。

2015-07-06 修正 何故か-c-sになっていたので訂正。

qmgr実行中にp sと打っても同じだが,リダイレクトはできないのであまり意味がないような。

逆に,リダイレクトしたテキストファイルを使って

$ qmgr < torqueconfig03

のように一括設定をすることも可能。

ステップ4

動作確認。

ステップ1の終わりで止めていたので,

$ sudo service torque-server start
$ sudo service torque-scheduler start
$ sudo service torque-mom start

で復活させる。

2017-03-23 追記 ステップ3で既にtorque-serverを起動した場合は最初の1行を無視。

qstat -qあたりでキューの状態を確認したら,

$ echo 'sleep 30' | qsub

等でお試しジョブを投げて確認。

うまく投げられなかった場合,サーバ名やキュー名が正しいかチェックしていくときっと問題点が見つかる。はず。

ステップ5

ブン回す。

とりあえずジョブ35個投げられたので,これで心置きなく海外遠征できそうです。めでたし。