srand()の引数は10桁まで?
Perlでsrand()を使って乱数シードを与えて固定の乱数を得たい時に、11桁以上を渡すと乱数が固定されてしまう。
どうやら制限(上限?)があるようだ。
調べた結果 4294967294 までは乱数が取得出来るっぽい。+1の4294967295以上になると固定値になってしまう。
2011-01-13追記
どうやら32bitの制限のようですね。
32ビットに格納できる整数の範囲は、0 から 4,294,967,295 である。
Perlでsrand()を使って乱数シードを与えて固定の乱数を得たい時に、11桁以上を渡すと乱数が固定されてしまう。
どうやら制限(上限?)があるようだ。
調べた結果 4294967294 までは乱数が取得出来るっぽい。+1の4294967295以上になると固定値になってしまう。
どうやら32bitの制限のようですね。
32ビットに格納できる整数の範囲は、0 から 4,294,967,295 である。
変数…例えば、$name に値を代入する。
$name='abc';
この変数の内容を表示するには単純に
print $name;
とすればよいわけですが、この変数名 'name' を別の変数に格納して表示するには以下の様にする事も出来ます。
$name='abc';
$hensu='name';
print ${$hensu};
実行結果
abc
利用方法としては配列などに変数名を格納しておいて、splitした各変数を表示する時に使えるかな?
@hensu = ('id','name','tel');
$data='1,Taro,03-111-2222';
($id,$name,$tel) = split(/,/,$data);
foreach $h(@hensu){ print ${$h};}
当然こんな方法を使わなくても出来るのですが、利用方法を思いつかなかったので;
何かの時に使えるかもしれないのでメモ。
以前調べた事があるディレクトリ配下に作成出来るファイル数の制限。これは、linux上でディレクトリ内に作成できる最大ファイル数は1万から1.5万だが実際は5000個くらいでやめておいたほうが にあるように5000程度にした方が無難と言うことは知っていた。
しかし、ディレクトリ数は制限無いと勝手に思っていたのでふと調べる事にした。
調べてみるとこちらにも制限があるようだ。Linux で作成できるディレクトリ数上限 によると
Linuxで一般的に使われるファイルシステムは ext3 ですが、このext3ファイルシステム
でひとつのディレクトリの下に並べることができるディレクトリの上限は、32000 です。
(ディレクトリを変更しないでmkdirを何回までできるかってことです。)
「/usr/include/linux/ext3_fs.h 」に、「#define EXT3_LINK_MAX 32000」の定義がありここが元となっています。
とある。centOSのファイルシステムはext3なのでこれが適用されると思われる。嗚呼、マジですか。現在運用しているWebアプリケーションにバカバカディレクトリを作成する仕様のものがありますよ、はい。と、いう事は後で作り直さないといけないのか・・・。
そういえばディレクトリってGUIになれてると普通に封筒のような感覚だけど、ただのファイルだという記事を読んだ事があるような、ないような。
ちなみに最新のファイルシステム(xfsとか)では大丈夫らしい。はぁ。