windows のバッチファイル内でのforの変数名で%%を2つ使う件

バッチファイル内で for文を使う場合、変数名には%%とパーセントを2つつける。

for %%a in (*.gz) do echo %%a

しかし、これをコマンドプロンプトで直接打つと、以下のようにエラーとなる。

%%a の使い方が誤っています。

コマンドプロンプトで直接打つ場合はパーセントを一つにする。

for %a in (*.gz) do echo %a

よく分からんが、バッチファイルの場合は%をエスケープする必要があるということ?%一つだと無視される?

expect の使い方メモ(expect eofとか)

expect でコマンドを実行させ、そのコマンドの完了を待って続けて別なコマンドを実行させる場合は"expect eof"を入れるとよい。

# spawn したコマンドが完了してから別なコマンドをspawnする場合は expect eof を挟む。

expect -c "
spawn scp hoge@fuga.com:/home/hoge/somefile .
expect eof

spawn scp hoge@fuga.com:/home/hoge/otherfile .
expect eof
"

# expectコマンドの次にshellとかのコマンドを打つ場合も expect eofする。
# でないと、spawnしたコマンドの完了を待たずに次に行ってしまう。
echo "scp completed."

このような使い方ではなくて、例えば「expectでssh等のコマンドを自動実行し、ログインできたら処理をユーザに戻す」といった場合は、プロンプト文字をexpectして exit するか、spawn した後に interact すればよいっぽい。

expect -c "
spawn ssh hoge@fuga.com
expect \"password:\"
send \"passwd\"

expect \"$\"
exit
"

もしくは

expect -c "
spawn ssh hoge@fuga.com
expect \"password:\"
send \"passwd\"

interact
"

Microsoft Query のエラーメッセージがドイヒーな件

ExcelMicrosoft Query でSQL書いてデータを取り込もうとしたら、

「パラメータが少なすぎます。 2 を指定して下さい。」

とかいうエラーが出て「???」てなった。
よくよくクエリを見てみると、WHERE句でカラム名のつづりを間違っていた…

もうちょっとエラーメッセージどうにかならんのかね…

VPNつながらないと思ったらWiFiルータの設定が原因だった

Shrew Soft の VPN Client というソフトを使っているのだが、
"negotiation timout occurred"
というエラーが出て接続できない。

PC側でいろいろやってもダメなので、ルータが原因かと思い、WiFiルータの設定で「セキュリティ」というメニューを見てみると「PPTPパススルー」と「IPSecパススルー」それぞれについて有効か無効かの設定があった。今回の接続ではIPSecを使っているようだったので、IPSecパススルーを有効にすると無事繋がった。

複利計算(CAGR)

「72の法則」「114の法則」というのがある。(「なに?」「いいよ!」で覚えると覚えやすそう。) 但し、利率が小さい場合にしか使えない。利率が大きいと誤差が大きくなる。

3分LifeHacking:複利計算を“暗算”で行う - ITmedia エンタープライズ

利率がデカいとどうなるか、30%と50%で試算してみた。

30.00% 50.00%
3年後 2.2 倍 3.4 倍
5年後 3.7 倍 7.6 倍
10年後 13.8 倍 57.7 倍

軍隊の編制

軍隊の編制 - Wikipedia およそ
班、組: ピザ1枚 分隊(squad): ピザ2枚
小隊: 数十人
中隊: 数十〜数百人
大隊: 数百〜千人
旅団: 数千人 師団: 1〜2万人

一つ下の単位を2~6まとめたのが一つ上の単位らしい。
(2~6個分隊で1個小隊、とか)