バッチファイルから別のバッチファイルを起動する方法
Windowsでバッチファイルから別のバッチファイルを起動する方法として、startとcallがあります。動作の違いは、
startで起動すると、別のプロセスで起動して、終了を待ちません
callで起動すると、同一のプロセスで起動して、終了を待ちます
となります。次の処理を待ちたい時は、callで起動することになりますが、同一プロセスのため、呼び出された側でsetした変数が呼び出し側に引き継がれてしまいます。Linuxでいうところのsource
に相当する動作となります。
異なるプロセスで起動しつつ終了を待つ(Linuxでいうところの./hoo.sh
という起動方法)をするには、
start/b/wait cmd /c foo.bat
とやると良いようです。
/b
は同じウインドウで開くオプションです。
/wait
はバッチファイルの終了を待ちます。
cmd /c
をつけないと、ダブルクリックでバッチファイルを起動した時に、呼び出し側の処理が終了したときにコンソールが閉じません。
ちなみに、Windowsのコマンドプロンプトでは、コマンド名とオプションの間のスペースは不要なため、start/b/wait
と記述することができます。ただし、cmd /c
のところはスペースを入れないとなぜか正しく動きません。
Windowsにおけるバッチファイルの起動方法をまとめると次のようになります。
Windows | Linuxで相当する動作 | プロセス | 終了待ち | ウインドウ |
---|---|---|---|---|
call foo.bat | source bar.sh | 同一 | 待つ | 同一 |
start foo.bat | - | 異なる | 待たない | 別 |
start/b cmd /c foo.bat | ./bar.sh & | 異なる | 待たない | 同一 |
start/b/wait cmd /c foo.bat | ./bar.sh | 異なる | 待つ | 同一 |
Vimで変数の値を挿入
vimの変数の値を貼り付ける(バッファに挿入する)には以下のようにする。
insertモードの場合
ctrl+r=&guifont
normalモードの場合
:put=&guifont
:put
のうしろにスペースを入れないのがコツ。
gnuplotでLua tikz出力モード時のオプション
以前に,gnuplotできれいな図を出力する方法を紹介した.
これは,gnuplotからLaTeXコードを出力し,それをpdflatexで処理すると,埋め込み数式がlatexで処理され,きれいなvector画像が手に入るものである.
このLua tikz出力モードにはいくつかのオプションがあり,これをうまく使う必要がある場合がある.
latexのプリアンブルを設定
preamble
の後に任意のプリアンブルコマンドを打つ.
特に数式を埋め込む場合は,以下のように'\usepackage{amsmath}'
は必須.
set term tikz color standalone size 4cm,3cm preamble '\usepackage{amsmath}'
gparrows
set arrow 1 from 0,0 to 1,1
などとして,グラフに矢印を描く場合,tikzモードだと,tikzで用意された矢印を用いるので,gnuplotの矢印と異なってしまう.例えば白抜き矢印を描くset arrow empty
などは使えない.この場合は,set term tikz gparrows
などとしておく.
set term tikz color standalone size 4cm,3cm gparrows
詳しくは 91.38.1 Lua tikz を参照.
【Mathematica】下付きnotationの変数を使う方法
通常Mathematicaでは,変数名に下付きの文字を使うことができない.たとえば,以下のようにa_x
という変数に一時的に1を代入して式を評価するようなことはできない.
Block[{Subscript[a, x] = 1}, (Subscript[a, x] + 1)^2]
これは,a_x
がシンボルではなく,オブジェクトとして定義されている.つまりa_x
は
Subscript[a,x]
という命令の略記になっている.
どうしても変数名にa_x
を使いたい場合は,Notation
パッケージを読み込んで,Symbolize
すればよい.
Needs["Notation`"] Symbolize[Subscript[a,x]]
Notation
を読み込むとパレットが表示されて,そこからSymbolize
を入力すると黄色い枠が出てくるので,その中に記述するらしい.
【Mathematica】PlotでPlotTheme->"Scientific"オプション使用時の色データ
mathematicaのPlotで色指定用のメモ.
ColorData[108, "ColorList"]
こうすると,PlotTheme->"Scientific"指定したときの色が出せる:
Scientificのデザインを使いたいが,色は手動で割り当てたい場合は,
Plot[ {Sin[x],Cos[x]}, PlotTheme->"Scientific", PlotStyle->{ColorData[108,2],ColorData[108,1]} ]
という感じに色を指定すれば良い.
ちなみに,ColorDataは1から113まであり,
Table[ {n, ColorData[n, "ColorList"] } , {n, 1, 113} ] // MatrixForm
みたいにすると,全色一覧を得られる.他のテーマのカラーも探すと良いかも.
C言語でディスク(HDD)の残り容量を測定してプログラムを自動停止する方法
数値計算でファイルにデータを大量に書き出すと,いっぱいになってマシンがフリーズすることがある. そこで,ディスクの残り容量を取得して,指定MB以下で自動停止させるサブルーチンを作成してみた.
ヘッダーファイル:
// // checkDiskSize.h // ディスクの容量をチェックして,空き容量が少ないときは終了させるルーチン. // // Created by 8ttyan on 2016/01/31. // // #ifndef ____checkDiskSize__ #define ____checkDiskSize__ #include <stdio.h> #include <stdlib.h> #include <string.h> double checkDiskSize(int); // checkDiskSize(空容量が何MB以下で停止させるかを指定); // 戻り値は空き容量の割合(0.0-1.0) #endif /* defined(____checkDiskSize__) */
プログラムファイル:
// // checkDiskSize.c // // // Created by 8ttyan on 2016/01/31. // // #include "checkDiskSize.h" double checkDiskSize(int threthold) { FILE *pipe; // パイプ用ストリーム char results[1024]; // コマンドの実行結果 int vacant; // 空き容量をMBで char command[1024]="/bin/df -m | /usr/bin/awk '{if($9 == \"/\"){print $4}}'"; // コマンド文字列作成.MB単位で残り容量を得る if((pipe = popen(command, "r")) == NULL) { // コマンド実行 pclose(pipe); // パイプを閉じる return -1.0; } while (fgets(results, 1024, pipe) != NULL); // 実行結果取得 pclose(pipe); // パイプを閉じる sscanf(results, "%d\n", &vacant); // 文字列を数値に変換 if (vacant < threthold) { // 指定容量を下回った場合 printf("checkDiskSize() : Less disk capacity! ディスク容量が足りません!\n"); // 標準出力に表示 fflush(stdout); // フラッシュする exit(EXIT_FAILURE); // プログラムを終了する } return vacant; }
メインファイル内での使用例:
#include <stdio.h> #include "checkDiskSize.h" int main() { printf("現在のディスク空きは%f%%です.\n", checkDiskSize(1024)*100); // 空き容量が1024MBを下回る場合にはプログラム終了.下回らない場合には,空き容量の全体に占める割合を表示 return 0; }
何度もファイルを書き出すプログラムの場合,このような処理をファイル書き出しのたびに行うと,ディスクがパンパンになるのを防ぐ事が出来る.
LaTeXで数式にアンダーラインを引いて下にコメントを書く方法
アンダーラインを引くunderlineと,数式の下に文章を書くundersetを組み合わせる.
\begin{align} \underset{コメント}{\underline{abc}} \end{align}