アーカイブ - 4月, 2010



2010年 4月 22

srand()の引数は10桁まで?

Perlでsrand()を使って乱数シードを与えて固定の乱数を得たい時に、11桁以上を渡すと乱数が固定されてしまう。
どうやら制限(上限?)があるようだ。

調べた結果 4294967294 までは乱数が取得出来るっぽい。+1の4294967295以上になると固定値になってしまう。

2011-01-13追記

どうやら32bitの制限のようですね。

32ビット – Wikipedia

32ビットに格納できる整数の範囲は、0 から 4,294,967,295 である。


Filed under: perl

Trackback Uri






2010年 4月 6

普通の変数をハッシュの様に使ってみる

変数…例えば、$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};}

当然こんな方法を使わなくても出来るのですが、利用方法を思いつかなかったので;
何かの時に使えるかもしれないのでメモ。


Filed under: perl

Trackback Uri






2010年 4月 1

ディレクトリ配下に作成出来るファイル数制限

以前調べた事があるディレクトリ配下に作成出来るファイル数の制限。これは、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とか)では大丈夫らしい。はぁ。


Filed under: LINUX

Trackback Uri