_onichannn

【Linux】同階層に作成できるディレクトリの上限。

調べたのでメモ。

Linuxで用いられるext3というファイルシステムでのディレクトリ上限数は32000とのこと。
「.」「..」を合わせると31998のディレクトリを生成できることになる。
そのため31999個目のディレクトリ生成を試みると「mkdir: Too many links」と怒られるそうだ。

さらなる詳細は下記ページを参照されたし。

http://wiki.berrystyle.jp/?Linux%20%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%A7%E3%81%8D%E3%82%8B%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E6%95%B0%E4%B8%8A%E9%99%90

 

【PHP】ヒアドキュメントの使い方。

ちょっとはまったのでメモ。

ヒアドキュメントとは複数行に渡る文字列を作成するための記述方法。

下記のように記述する。

$var = '変数は展開される。';
		
$str = <<< TEXT
「&lt;&lt;&lt; TEXT」から「TEXT;」の間に記述された文字列は、
全てが静的な文字列と解釈される。
なお、ヒアドキュメント内での$var
		
また「TEXT」は任意の文字列を設定することができる。
ヒアドキュメント終端のキーとセットになっていればOK。
TEXT;
		
var_dump($str);

↓

string(358) "「<<< TEXT」から「TEXT;」の間に記述された文字列は、 全てが静的な文字列と解釈される。 なお、ヒアドキュメント内での変数は展開される。 また「TEXT」は任意の文字列を設定することができる。 ヒアドキュメント終端のキーとセットになっていればOK。"

といった感じで使用する。

しかしここで一つ注意点として終端を表すキーを記述する場合、その行にはキー文字列及びコロン以外の文字は存在してはならない。
例えばキー文字列の前にインデント(タブやスペース)が存在していると、PHPはヒアドキュメントの終端を正しくパースできず、シンタックスエラーになってしまうので注意されたし。

 

【PHP】file_get_contentsで4系5系のエラーを無視して結果を取得する方法。

見に行ったページが403エラーなどを返してきた時も処理が止まらないようにしたい場合。

$url = 'http://example.com/';

$context = stream_context_create(array(
	'http' => array('ignore_errors' => true)
));
$html = file_get_contents($url, false, $context);

file_get_contents()の第3引数に上記のような設定を渡してやれば良い。
これで4系、5系のエラーを無視してページの取得結果を返却してくれるようになる。

 

【Unix】「/dev/null」に関するメモ。

自分用。

・/dev/nullはUnix系OSにおけるスペシャルファイル
・そこに書き込まれがデータは全て破棄される
・書き込み処理自体は成功とみなされる
・直接読み込んでもEOFしか返さない
・別名、ブラックホール、ビットバケツ

下記のように出力結果を全て破棄して実行命令だけ出したい場合に使う。

php hoge.php arg1 arg2 > /dev/null

 

【PHP】コマンドラインの引数をエスケープする。

例をメモ。

$arg1 = escapeshellarg($argv[1]);
$arg2 = escapeshellarg($argv[2]);

$cmd = "php /path/to/file.php $arg1 $arg2 > /dev/null & echo $!";

exec($cmd, $out);

escapeshellarg()関数を使用することで、引数をシングルクオートで囲い、既存のシングルクオートを全てエスケープしてくれる。

 

【Underscore.js】オブジェクトの空判定を行う。

めも。

var obj = {};
var arr = [];
var val = '';

console.log(_.isEmpty(obj));
console.log(_.isEmpty(arr));
console.log(_.isEmpty(val));

// true
// true
// true

 

【Underscore.js】2つのオブジェクトを比較して内容が同等であるか判定する。

Javascriptにおいて別オブジェクトは内容が同等であっても比較演算子によってtrueを得ることはできないが、_.isEqual()メソッドを用いると2オブジェクトの内容を深くまで精査し、同等とみなせるか否かをブーリアンで返却してくれる。

以下例。

var obj1 = {foo: 'bar', baz: {hoge: 'fuga'}};
var obj2 = {foo: 'bar', baz: {hoge: 'fuga'}};

console.log(_.isEqual(obj1, obj2)); // true
console.log(obj1 == obj2); // false

 

【Underscore.js】オブジェクトのプロパティを別オブジェクトに引き継ぐ。

めも。

var obj1 = {hoge: 'foo'};
var obj2 = {fuga: 'bar'};

_.extend(obj1, obj2);

=> {hoge: 'foo', fuga: 'bar'}