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