cronでJAVAのプログラムが動かない。
なんでなんでと調べて1時間程度。理由判明。cron実行時の環境変数はとても貧困。だからシェルを別途作成して、
1環境変数設定
2実行
ってしてあげないといけない。
cronで起動されるプロセスでは、 PATH=/usr/bin:/bin HOME=/root LOGNAME=root SHELL=/bin/sh PWD=/root 程度しか環境変数が設定されません。 必要な環境変数は、起動されるプロセス内で定義するか、crontabファイル内に書く必要があります。この場合は、crontabファイルの先頭に、 PATH=... JAVAHOME=... CLASSPATH=... と書けばいいです。
(http://oshiete.nikkeibp.co.jp/kotaeru.php3?qid=2617009より抜粋)
CPUとGPUはまるで左脳と右脳だ。
時系列にシーケンシャルに考える左脳
並列に一括で処理する(感覚する)右脳
マルドゥック・スクランブルに影響されすぎ??www
いまさら浮動小数点の意味がわかった。
まず。
<?php print floor( (0.1 + 0.7) *10 ); ?>
の結果は7になります。
今更だけど、実数をプログラムで使うということ。
当たり前ながら、実数というのは桁が無限大です。そりゃそうだ、1/3が20桁で終了するわけありません。πもそうですよね。
それを馬鹿正直にプログラム内部で使おうとすると、変数の初期化だけでメモリがパンクします。つまりプログラム内部で実数を扱うことは不可能です。だったらどうするのか。十分小さい数値部分を誤差として近似表現をして、実数を扱います。
0.7は本当に0.7?
あくまで近似でしかない数値ですから、もしかしたら0.7の実情は0.6999999999...かもしれないし、0.70000000001かもしれません。つまり最初のプログラムは
0.699999+0.1000000=0.7.99999999 0.7.99999999*10=7.99999999 floor(7.99999999)=7
こんなことになっていたんですね。
まとめ
実数はプログラム上では信用しちゃだめ。ソフ開もってますが、所詮こんなもん。資格はあてにならない証拠ですね。
c#でアドレスを意識するとき
サンプルのソースをみていて、GCHandle.Allocというのが出てきて面食らいました。いったい何をやっているんだろう?そこで色々調べてびっくり。
C#ではGCなどの働きにより、アドレスは絶えず変動してる様なのです。これではポインタとっても仕方が無い。
そこでGCHandleを使います。と、引き続き調べて書こうとしましたが、
ぬるり。
VarPtr, StrPtr, ObjPtr関数の代わりになるものは? - .NET Tips (VB.NET,C#...)
より詳しく分り易くすべてかかれています。とっても参考になります。
まず、できればunsafeは避けたいものです。アセンブリごとunsafeになっちゃうし。
へぇ×5(古い)