[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ネットワークが十分な速度が出ているか否かの評価指標は二つある、という話があったのでメモ。
使っている通信方法による一度に送れる量。これが小さいと一度に送れる量が小さくなる。ただし、一度に送る量が少ないなら問題にはならない。
道路に似ている。1車線でも交通量が少ないのであれば遅くはならない。しかし、交通量が多いのであれば車線数を増やさないとさばききれない。
調べるには iperf というツールが便利。
ping を送って返ってくるのにかかる時間。中継機器が増えたり、性能が低かったりすると遅くなる。
道路であれば信号機の数が増えると目的地まで時間がかかるのと同じか。
7か月になった子がはいずりをするようになりました。はいずり?ずりばい?どちらでもいい。
行動範囲が一気に広がったせいか、集中力が一気に落ちました。ミルクを飲ませるにも一苦労。きょろきょろしています。これは行ける世界が広がり、世界が全部違って見えるのかしら。魔法の鍵を手に入れた直後のドラクエに似るのではないかと、そう思ったのでした。
# shutdown -y -g0 -i5
ちなみに、Solaris のシャットダウン方法が分からないという話になってわちゃわちゃして「こうやればいいのよ」という話になったのだが。
その場の雑談で「Solaris って今もサポートされているのかな」という話が出てきてちょっとビビった。最終更新は2015年10月で、1年半ごとにバージョンアップがあるようである。
会社でいろいろあって調べないといけなかったのでまとめ。
Small Computer System Interface の略。すかじー、と読むらしい。規格の名前。SCSI ケーブルという専用のケーブルがあったりする。
SCSI 用コマンドを送受信することで離れたところにあるハードディスクや CD ドライブを読み書きしたりできる。便利。
が、専用ケーブルがいるとかそういった事情であまり使いたくない……
Internet Small Computer System Interface の略。あいすかじーと読むようだ。LAN ケーブルで SCSI コマンドをやりとりする。ケーブルの追加が要らない。ただ、LAN ケーブルの速度に左右されるので最近までは非現実的だったようだ。
iSCSI Extentions for RDMA の略。iSCSI を RDMA でやる、というだけのもの。
RDMA は Remote Direct Memory Access の略。他のノードのメモリに直接書き込みを行う、というもの。オーバヘッドがないので速い。
OpenStack の CINDER を触っていて iSCSI を使うか ISER を使うか選択せよという場面に出会ったから。それぞれが何なのかよくわからないまま選ぶのは怖かったのであった。
歯抜けの実装方法が分からないという人がちょっと多いので解説記事。
歯抜けとは、番号が振られた0個以上のリストがある際に、次に追加するアイテムにどんな番号を付けるべきか決定するルールである。例えば、1番から開始するリストがあったとする。
次のようなリストがある
この場合、次に追加するべきアイテムは Item-4 である。
次のようなリストがある
この場合、次に追加するべきアイテムは Item-2 である。
次のようなリストがある
この場合、次に追加するべきアイテムは Item-1 である。
次のようなリストがある
この場合、次に追加するべきアイテムは Item-1 である。
新しいフォルダ(n)の歯抜けを作る。
function generateNextTitle(list) {
// アイテム名が形式に合致するか確認する。
// 番号を取得するために (\d+) している。
// 前後に余計なものが付いていないことを確認するために先頭に ^ 末尾に $ を付加
var regexp = /^新しいフォルダ((\d+))$/;
// 既存の番号を格納するための空配列
var titleNumbers = [];
list.forEach(function(v, i) {
if(regexp.test(v)) {
titleNumbers.push(Number(regexp.exec(v)[1]));
}
});
titleNumbers = titleNumbers.sort();
// 小さい順に並べ、歯抜けがあったら抜けた数字を適用
for(var i = 0; i < titleNumbers.length; i++) {
if(i + 1 !== titleNumbers[i]) {
return "新しいフォルダ(" + (i+1) + ")";
}
}
// 歯抜けが無かったら最大の数字 +1 を適用
return "新しいフォルダ(" + (titleNumbers.length+1) + ")";
}
console.log(generateNextTitle(["新しいフォルダ(1)", "新しいフォルダ(2)", "新しいフォルダ(3)"]));
console.log(generateNextTitle(["新しいフォルダ(1)", "新しいフォルダ(4)", "新しいフォルダ(3)"]));
console.log(generateNextTitle(["_新しいフォルダ(1)_", "_新しいフォルダ(1)", "新しいフォルダ(2)", "新しいフォルダ(3)"]));