vagrantでubuntuの起動が異常に遅い

vagrant upのときにsshが成功するのがやたら遅いので直してみました
遅くなったのはVagrantfileで固定IPを振ってからだと思います

vagrant は 1.6.5
ubuntu/trusty64のBoxを使っています

まずVagrantFileを修正してGUIモードで確認してみます

$ vim Vagrantfile

 config.vm.provider "virtualbox" do |vb|
    vb.gui = true
end

$ vagrant reload

cloud-init-nonet waiting 120 seconds for a network device

と出て2分もまって、エラーになってる
起動したら

$ vagrant ssh
$ vi /etc/network/interfaces

auto lo
iface lo inet loopback

+ auto eth0
+ iface eth0 inet dhcp

- source /etc/network/interfaces.d/*.cfg
+ # source /etc/network/interfaces.d/*.cfg

( + : 追加行、 – : 削除行)

/etc/network/interfaces.d/eth0.cfg
にdhcpが指定してあるんですが、うまくひけないっぽい

cloud-initのバグらしいです
結構、はまりました

UbuntuのbashがCtrl+sで固まらないようにする

Ubuntuのbashで作業していて
Ctrl+s
を押してしまうと画面がかたまります

戻るには
Ctrl+q
を押せば戻れるのですが不便です

$ stty -a
をみると

stop = ^S;

とstopにCtrl + sが割り当たっているからなので

$ stty stop undef
としてしまえば無効になります

常に無効にしたかったら

~/.bashrc
に
stty stop undef
を書き込んでしまえばいいです

jQueryUIのautocompleteにcomboboxをつけて空白も選べるようにする

jQueryUIのautocompleteにcomboboxをつけて使っていたのですが、空白表示も選ばせたくちょっと手を加えました

コードは、
http://jqueryui.com/autocomplete/#combobox
の view source をクリックすれば見れます
htmlで保存するだけで使えるのですが

107行目を

if ( this.value && ( !request.term || matcher.test(text) ) )

if ( !request.term || matcher.test(text) )

に変更
これで、valueがない空白ものもリストに含まれます
これだと Select one… という文字が表示されるので

171行目を

<option value="">Select one...</option>

<option value="">&#27;</option>

にかえます
画面に表示されないHTMLエンティティならなんでもいいと思います

これで空白が表示されるようになります

参考) http://stackoverflow.com/questions/25523636/jquery-ui-combo-box-empty-value-rendering

javascriptの正規表現まわりのメソッドを整理

javascriptの正規表現まわりのメソッドを整理してみました

Regexp

  • test -> マッチしたら true or false を返す
  • exec -> マッチした結果が返る

String

  • search -> マッチしたらマッチしたインデックスを返す
  • match -> マッチした結果が返る

実行した結果がこちら

var re = /am/;
var str = 'sample string';

console.log( re.test(str) );
// true
console.log( re.exec(str) );
// ["am", index: 1, input: "sample string"]

console.log( str.search(re) );
// 1
console.log( str.match(re) );
// ["am", index: 1, input: "sample string"]

パターンマッチ演算子のgをつけてみます(globalのg)
g をつけると繰り返しマッチさせます

var re = /am/g;
var str = 'sample string sample';

console.log( re.test(str) );
// true
console.log( re.exec(str) );
// ["am", index: 15, input: "sample string sample"]

console.log( str.search(re) );
// 1
console.log( str.match(re) );
// ["am", "am"]

re.exec の index が最後のマッチの index が返ってきて、
str.matchがマッチした分が配列で返ってきています