Hatena::ブログ(Diary)

揮発性のメモ このページをアンテナに追加 Twitter

2017/03/24 (金)

ディレクトリごとにDirectoryIndexを変えたいときは、dir.confを削除する必要がある

<Directory "/var/www/piyo/">
    DirectoryIndex hoge.php
</Directory>

piyo/ にアクセスしたときhoge.php飛ばしたい。

しかし、piyoディレクトリには index.html も置いてあり、こちらは明示的に指定されない限りは使いたくない。


このときデフォルト設定ファイル dir.conf があると こっちのが強いらしく個々の設定が無視されてしまう

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

なので、dir.conf を削除する。


そもそも IfModule コンテナ?ディレクティブ? なんざ要らないんだよ。

モジュールロードされてなかったら潔くエラーになっとけや

2017/03/22 (水)

文字列 "90000000" を 0x90000000 と認識させる

32bit環境だとintval系はうまく変換できないので、0を足して暗黙の型変換をするか hexdec()という関数を使う

ダメパターン

<?

printf("0x%08X\n", intval("90000001",16) );  // intvalで変換
// 32bit環境: 0x7FFFFFFF   ← intの最大値になる
// 64bit環境: 0x90000001

printf("0x%08X\n", "0x90000001");  // 頭に0xをつけた文字列
// 32bit環境: 0x00000000   ← 理不尽
// 64bit環境: 0x00000000

printf("0x%08X\n", (int)"0x90000001");  // (int)でキャスト
// 32bit環境: 0x00000000
// 64bit環境: 0x00000000

いけるパターン

<?

printf("0x%08X\n", hexdec("90000001")); // hexdec()を使う
// 32bit環境: 0x90000001
// 64bit環境: 0x90000001

printf("0x%08X\n", hexdec("0x90000001")); // 頭に0xがついてても大丈夫
// 32bit環境: 0x90000001
// 64bit環境: 0x90000001


printf("0x%08X\n", "0x90000001"+0); // 0xをつけた文字列に、数値の0を足す
// 32bit環境: 0x90000001
// 64bit環境: 0x90000001

printf("0x%08X\n", "0x90000001"+"0x90000001"); // 暗黙の型変換さえあれば良い
// 32bit環境: 0x20000002
// 64bit環境: 0x120000002

2017/03/21 (火)

2017/03/19 (日)

apacheの conf.d/hoge.conf の設定内容は httpd.conf で上書きされる

includeはわりと先頭の方にあるので、だいたい conf.d/*.conf のあとに httpd.confが動作する と思っていればよい。

したがって、 conf.d/hoge.conf に 何か書いても httpd.conf に同じ設定があれば上書きされる

例:

httpd.conf

Include conf.d/*.conf
・・・
<Directory "/var/www/html">
     Options Indexes FollowSymLinks
     AllowOverride None
</Dorectory>

conf.d/hoge.conf

<Directory "/var/www/html">
     AllowOverride All
</Dorectory>

hoge.confで設定した AllowOverride All は、後からhttpd.confで上書きされる(つまり効果がなくなる)


welcome.conf

conf.d/welcome.conf は頭文字 w で、hoge.confよりは後に呼ばれる上に、DirectoryディレクティブじゃなくてLocationディレクティブでなんかしてくるので気を付ける

【apache】Options Indexes が効かない? at softelメモ

2017/03/18 (土)

数字かそうじゃないか判定

10e11 とか 0x10 とかは数字として断じて認めない

function isnum(str)
{
    return str.match(/^[-]?[\d]+\.?[\d]*$/);
}

var a = "-5.00a";
console.log( isnum(a) ? "数値だ" : "数値じゃない" );

2017/03/14 (火)

丸め

浮動小数点を100倍して整数にするとかでよくやる失敗。 四捨五入万歳

var a = -1.15;

var b = Math.round(a*100);
print(b); // -115 ○

var c = parseInt(a*100,10);
print(c); // -114 ×

0.57の100倍も56とかになるので良く死ぬ

2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |