[Java]可変長引数とオーバーロード その1

お互いに排他的ではない複数の条件がある場合、従来から用いられてきた方法としては複数のビットフラグを用いる方法がある。

enum.c
#include 

enum Color {
    Color_Red   = 1,
    Color_Green = 2,
    Color_Blue  = 4,
};

int main(void) {
    int yellow = Color_Red | Color_Green;
    printf("yellow : %d\n", yellow);

    int white = Color_Red | Color_Green | Color_Blue;
    printf("white : %d\n", white);
}

[unix]sleepとusleep

Linuxから他のunixにシェルスクリプトを持っていって、動かないなんてことはたまにある。

例えば、usleepコマンドを使っているスクリプトをBSD系のunixに持っていくとusleepがなくて、動かなかったりする。
Linuxでもモノによってはusleepが初めからは入っていないかもだけど。
# そもそもシェルスクリプトで秒未満の待機なんてするデザインが悪い。ってのはとりあえず置いといて。。。

じゃあ、usleepコマンドがない状態でどうしよっかって考えたんだけど、マニュアルを確認して気づいてしまった。

http://www.freebsd.org/cgi/man.cgi?sleep(1)
BSDではパラメータはstrtodが受け付ける小数でもOKということになっている。
$ uname
Darwin
$ time sleep 0.5

real  0m0.510s
user  0m0.002s
sys   0m0.003s

確かに待機時間が0.5秒になっている。この仕様であれば、usleepコマンドは必要ないかなってのも分からなくはない。

https://linuxjm.osdn.jp/html/gnumaniak/man1/sleep.1.html
Linuxのsleepは最小単位は秒になっている。

https://linuxjm.osdn.jp/html/GNU_coreutils/man1/sleep.1.html
GNU_coreutilsのマニュアルだと、小数の指定もできるよ、ってことになっている。

確かにLinuxでも、小数が指定できるようになっている。
$ uname
Linux
$ time sleep 0.5

real  0m0.503s
user  0m0.002s
sys   0m0.001s

でもsleepコマンドで小数が指定できるのはあくまで拡張仕様であって、移植性を考えると難しいところですね。。。

[シェルスクリプト]シェルスクリプトで関数を使い分ける

シェルスクリプトはインタプリタで1行ごとに順に解釈されていくから、関数を実行する前にその関数の定義が登場しなければいけない。
それはいいんだけど、本当に "実行する前に" ということがどういうことか、ちゃんと分かってなかった。

以下のようにfunc1からfunc2を呼び出しているとしよう。

#!/bin/sh
func1 () {
  echo 'func1'
  func2
}

func2 () {
  echo 'func2'
}

func1

[SQL]SQLでHello, world?

SQLでHello, world.って言ったら、すぐに思いつくのはこんな感じだろうか。

SELECT 'Hello, world.';

いくつかのDBMSではこれでうまくいく。
でも、OracleだとFROM句がないとおこられちゃうよね。