2016年10月22日土曜日

bash on ubuntu on Windows とMintty/wsltty

bash on ubuntu on Windows を日本語環境( ja_JP.UTF-8 ) で使いたいなら、Mintty/wsltty を使うと幸せかも知れません。という話。

Big Sky :: Bash on Ubuntu on Windows の最高の端末環境を教えてやるからちょっと来い。
http://mattn.kaoriya.net/software/bow/20160824234928.htm

で紹介されている内容が、今は
wsltty: https://github.com/mintty/wsltty
インストーラーを使うだけでほぼ出来上がりますので、導入がぐっと楽になっています。
動作比較はこんな感じ。



左下が Mintty/wsltty をインストールし、 Bash on UoW in Mintty を実行してvimを起動した場合。
右上は標準の端末からvimを起動した場合。どちらもVLゴシックをフォントに指定しています。
w3mでgoogleを見た場合と合わせてみると、Minttyのほうが日本語表示の崩れが少ないことが分かります。素晴らしい。



端末上で開いているemacsに、Windowsの日本語入力機能を用いて日本語を入力することもできます。テキストのコピペも出来そう?



さらに、sixel にも対応しているので、こんな表示も出来ますね。

( sixel については、『Sixel Graphicsを活用したアプリケーションの御紹介』


gnuplot 5.0.5 を ./configure --with-bitmap-terminals で make すると、terminal として sixel を選択出来るようになります。描画範囲の背景は白で塗りつぶさないようなので、端末背景は白ないし明るい色にしないと綺麗に見えないのがネックでしょうか。暗い背景だと線やラベルが見えません。



terminalに sixel がない場合は、libsixel 内にある img2sixel を用いて、png画像などを sixel で出力してやればよいでしょう。右側がその例なのですが、outputにコマンドを指定して、フィルタとして使う場合、 gnuplot が終了しないと標準出力に書き出されたsixel画像が表示されませんので、ちょっと不便かも知れません。

libsixel は、ubuntu 14.04LTS (trusty) ではパッケージ化されていないので、自力導入する必要があるのがやや面倒ですね。

sixel 対応は、Windows側でXサーバプログラムを用意するなど、いろいろ面倒な bash on UoW にとって、古くて新しい解決方法になってくれそうな気がします。

それにしても bash on Ubuntu on Windows, trusty のサポート期限が2019年までなので当分これでいくと思うんですが、次はどうするつもりなんだろう。 systemd 対応が立ちはだかってる気がするんだけど、なんとかするのかな。

2016年7月1日金曜日

dvipdfmx で作成した pdf に印刷制限等をかけるとファイルが壊れる?

Windows 環境で LaTeX を扱っているのですが、 dvipdfmx で作成した pdf ファイルに、Adobe Acrobat Pro DCで権限パスワードを付与し、印刷制限をかけて保存すると、そのpdfファイルを Acrobat で開くことが出来なくなる。google docsやsumatra pdf readerなら開くことが出来る。……という謎めいたトラブルに見舞われました。

権限パスワードを付与して印刷、コピー、編集の制限をかける方法はこちら。
https://helpx.adobe.com/jp/acrobat/using/securing-pdfs-passwords.html

理由は分かりませんが、解決方法としては、
『dvipdfmxで作成したpdfファイルをAdobe Acrobat Pro DCで開き、その他の形式で保存→最適化されたPDFで別名保存してから、そのファイルを開き直して制限をかける』ということで落ち着きました。

dvipdfmxで作成したpdfファイルを直接Acrobat で操作しないほうがいい、ということなのでしょうか。不思議ですね。例によって細かい追究はしていません。

dvipdfmx の機能で直接制限つきのpdfを作ろうとしたのですが、
This is dvipdfmx Version 20160307 by the DVIPDFMx project team,
modified for TeX Live,
an extended version of dvipdfm-0.13.2c developed by Mark A. Wicks.
このバージョン(w32tex)ではうまくいかなかった……残念。

2016年4月18日月曜日

google chrome canary Windows 64bit がうまく動かない?

google chrome canary  (Windows 10 64bit) をインストールしていたのですが、何時からか正しく起動しなくなりました。現在のバージョンは 52.0.2711.0 です。

起動はするんですがスタートページが表示出来ず、メニューから設定や他のページなどを選んでも表示されません。一度削除し、クリーンインストールしても状況は変わらず。

クリーンインストールして通常起動、正しく表示されないので右上×を押してブラウザを終了。そのあと --diagnostics をつけて起動すると……

[FAIL] Thumbnails database
       Cannot open DB. Possibly corrupted

これか?  と思ってプロファイルディレクトリ
C:\Users\win10user\AppData\Local\Google\Chrome SxS\User Data\Default
の中を見てみたら、 Thumbnails がファイルじゃなくてディレクトリになってる!?

Thumbnails ディレクトリを削除し、もう一度 --diagnostics をつけて起動すると

[PASS] Thumbnails database
       File not found (but that is OK)

あ、いいんだこれ……

でもこの状態で --diagnostics を外し、改めて起動すると、やっぱり画面が正しく表示されません。

ブラウザを終わらせて--diagnostics をつけて起動すると、やはり同じ Thumbnails database でFAIL が出るという。 

とりあえずおかしいところだけメモ。理由を調べる時間はない…


追記:
2~3日後に更新されて直りました。そして数ヶ月後、また同じようにおかしくなり、数日後に更新されて直りました。さすがcanary……

バグを回避して最小限の機能で起動し、オンライン更新して再起動をかける、というのが大事ですね。

2016年3月31日木曜日

Jigdo mini が 64bit Windows 10で動かない件

回答はここに書いてあるんですが

Download this archive and extract it in the jigdo-bin folder :
https://code.google.com/p/golangide/downloads/detail?name=msys-1.0.zip&

  http://atterer.org/jigdo/debian-jigdo-mini-howto#comment-3983

golangide自体がもう移動しているうえにファイルがどうも見つからないので……

https://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/

から最新のファイルを拾うのがよいと思います。具体的には

https://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.18-1/

から msysCORE-1.0.18-1-msys-1.0.18-bin.tar.lzma をダウンロードして展開すると、binフォルダの下にお目当ての msys-1.0.dll がありますので、これを jigdo-bin の下に入れて置換してやるとよいでしょう。

2016年3月4日金曜日

MATLABで関数の積をplotする

MATLABで乗算を使うときは、* と .* の違いに充分注意しよう、特に 1変数関数を作るときに気をつけよう、という話。 

MATLABではforループを使わず、x軸として取り得る値を予め行列(ベクトル)化し、これを関数に与えてplotする、 というやり方をするわけですが、たとえば0以上1未満までをN点でplotしたい、なんてときは…

>> N=2^10; ts=1/N;
>> t=0:ts:1-ts;

(0から始まっているので、範囲の終わりで ts をひとつ引いておくとサンプル数や周期性の辻褄が合うよね、ってやつです。)

>> plot(sin(2*pi*10*t));

出来る。10Hzの正弦波を 0から1までplotしたものです。

>> plot(sin(2*pi*10*t)+sin(2*pi*20*t));

これも出来る。10Hzの正弦波と20Hzの正弦波を足しあわせた波形を0から1まで plot したものです。

じゃあ正弦波を掛け合わせた波形を plot するには? と思って + を * にすると…
>> plot(sin(2*pi*10*t)*sin(2*pi*20*t));
エラー:  * 
内部行列の次元は一致しなければなりません。

最初の2つ(特に加算)はうまく出来てるのに、何故*はうまくいかないんだろう……?
f(t) = sin(2*pi*10*t)*sin(2*pi*20*t);

実は、そもそも t が (1x1024) の行列なので、 初項の sin(2*pi*10*t) の結果が既に (1x1024) の行列になってるんです。 で、二項目の  sin(2*pi*20*t) もまた (1x1024) の行列になるものですから、 (1x1024)の行列 × (1x1024)の行列、を計算しようとしてエラーになるんですね。さすがMATLAB……

1変数関数をプロットするとき、すなわち y=f(t) を計算しようとしているときに想定している t はスカラー値なんですから、 行列が渡ってきたら行列の要素ごとに計算することにしておいたほうがいい、ということになります。

というわけで意図した通りになる書き方は、

f(t) = sin(2*pi*10.*t).*sin(2*pi*20.*t);

こうじゃよ、というお話でした。sin(2*pi*10*t)など単項の関数がそのままplot出来てしまえるだけに混乱しますね。


関数にパラメーターを与えるときも、そのパラメーターがスカラー値ならば同じような書き方をしておいたほうがいいようです。 例えばこんな感じ。もっと簡単な書き方はないものか…
function main

fs=2^10; ts=1/fs;
t=0:ts:1-ts;

plot(t,sinxsin(t, 2, 4));
hold on
plot(t,sin(2*pi*2.*t));
plot(t,sin(2*pi*4.*t));
hold off

end

function [ y ] = sinxsin( x, f1, f2 )
% sinxsin  return sin(2*pi*f1*x)*sin(2*pi*f1*x)
%   

y = sin(2*pi.*f1.*x).*sin(2*pi.*f2.*x);

end

調べ物メモ

LSI MegaRAID と LSI SAS/SATA HBA の2種類がある、と。
ところでHBAって何?   ここで聞く? Host Bus Adapter ホストバスアダプタの略です。 マザーボードでもSATAポートがついていますが、SATAやSASポートを拡張カードで増設するのがHBAです。 HBAにRAID機能を持たせるとRAIDカードです。 細かいことは調べてね。
http://oliospec.ldblog.jp/archives/29669279.html 

ということはRAID機能をボード側に任せてしまいたい場合はMegaRAID、 FreeBSD zfs や FreeNAS, Linuxでも LVM を使ったりする場合はHBAでいいのかなと思います。 
zfsについては
ZFSの提供するデータ保護機能の恩恵を受けるには, RAIDコントローラはシンプルにHBA(ITまたはJBODモード)で使うことを薦めています (RAIDカードによってはすべてのディスクを単一のRAID 0としてセットアップする必要があります)。
http://gihyo.jp/admin/serial/01/bsd-yomoyama/0007 

ということですんで、HBAでいいんですね。余ったお金でメモリをより多く積むのがzfs流なのかも知れません。
Linux LVMも同じような観点で検討が必要だと思いますので、ハードウェアRAIDの上でLVMを使うのか、 HBAでHDDをマネジメントしやすくしたうえでLVMを構築するのかは、判断が要るところなのでしょう。

公式ページ(HBA)
http://www.avagotech.com/products/server-storage/host-bus-adapters/

LSI SAS 9207系 (PCI Express 3.0) IOコントローラーはLSISAS2308
LSI SAS 9207-8i など
http://www.ask-corp.jp/products/avago/hba/lsi-sas-9207.html
http://www.arms-corp.co.jp/lsi9207
http://kakaku.com/item/K0000391485/

LSI SAS 92xx系 (PCI Express 2.0) IOコントローラーはLSISAS2004/2008/2116
SAS 9211-4i HBA など
http://www.ask-corp.jp/products/avago/hba/lsi-sas-9200.html
http://www.arms-corp.co.jp/lsi9211
http://kakaku.com/item/K0000148624/
http://kakaku.com/item/K0000148622/


MegaRAIDで内部4ポートのものだけ列挙しても結構な数がありまして…
公式ページ(MegaRAID) http://www.avagotech.com/products/server-storage/raid-controllers/

12Gb/sクラス (ドキュメントに UEFIに関する記述あり)
PCI Express 3.0x8
MegaRAID SAS 9361-4i, LSISAS3108 Dual-Core, キャッシュ1GB
MegaRAID SAS 9341-4i, LSISAS3008

6Gb/sクラス
PCI Express 3.0x8
MegaRAID SAS 9271-4i, LSISAS2208 Dual-Core, キャッシュ1GB

PCI Express 2.0x8
MegaRAID SAS 9266-4i, LSISAS2208 Dual-Core, キャッシュ1GB
MegaRAID SAS 9260-4i, LSISAS2108, キャッシュ512MB
MegaRAID SAS 9240-4i, LSISAS2008
3ware SAS 9750-4i, LSISAS2108, キャッシュ512MB 

多いなあ…… コントローラーチップとキャッシュメモリの有無と容量、PCI Express の違いで選ぶ感じでしょうか。 RAID1でいいなら9240, もうちょっとしっかり作りたいならそれ以上、予算次第? そして3ware SAS 9750-4i と MegaRAID SAS 9260-4i の違いは何なのか。ソフトウェアか。

※3ware SAS のほうは EFIに対応しないようです。
http://www.arms-corp.co.jp/products/2013-06-19-02-47-41/lsisupport/96-3ware-sas-9750-efi-boot

FreeBSDの LSI 系ドライバが多かったので、リストアップしておきましょう。

mpt -- LSI Fusion-MPT SCSI/Fibre Channel driver
mps -- LSI Fusion-MPT 2 Serial Attached SCSI driver
mpr -- LSI Fusion-MPT 3 IT/IR 12Gb/s Serial Attached SCSI/SATA driver
mrsas -- LSI MegaRAID 6Gb/s and 12Gb/s SAS+SATA RAID controller driver

上に挙げたHBAボードはすべて mps(4) で使えるようですね。MegaRAIDだと mrsas(4) で使えるようです。
mrsasはボードがちゃんと列挙されてるのに、mpsのほうはボード列挙されてないんだなあ…

Adaptecのほうまでは手が回らなかったので、最初のほうで紹介した記事を参考に。

VMware ESXi ではどうしたらいいのかなと思ってちょっと検索してみると、
A hardware RAID card that is listed on the VMware HCL is the only viable solution for running an ESXi host with local storage.
https://www.packetmischief.ca/2011/03/20/choosing-a-raid-card-for-esxi/

だ、そうです。なるほど。少なくとも9260、それ以上(キャッシュメモリ有り)でしょうか。高いんだよなあ……(´・ω・`)


と、ここまで書いておいて最初に読んだ記事に
最近のマザーボードは昔からあるBIOSではなく、uEFIになっています。 これが曲者で、従来のインターフェイスカードだと対応できないのです。 (中略) たとえば HighPoint Pocket 27xxシリーズ、6xxシリーズ LSI SAS 9211シリーズ等は対応していません。 HBAを認識しなかったりします。
http://oliospec.ldblog.jp/archives/29669279.html
ってちゃんと書いてあって。

そしてLSI HBA 9207/9211 の最新BIOS(P20)にはバグがあるのでダウングレードすべきなのだそうです。
https://community.nexenta.com/thread/1053
http://qiita.com/syoyo/items/4e39dd6bd0d4efa41d97
えっ…ひどくない?

……じゃあHBAならAdaptecのほうがいいのかい!? と思ってFreeBSDのマニュアルを漁ると…… aacraid(4)曰く。
the aacraid_linux.ko and linux.ko modules are loaded, the Linux-compatible ioctl(2) interface for the management device will be enabled and will allow Linux-based manage‐ ment applications to control the card.
Linuxコンパチ!!
BUGS The controller is not actually paused on suspend/resume.
ドウイウコトナノ?


10.1 までに対応するドライバは、ちゃんとメーカーが提供しているみたいなんですが……
AACRAID 32- and 64-bit Driver Build 41018 for FreeBSD 9.3, 10.1