メールアドレスって大文字小文字区別するんだっけ? 気になって調べてみました。

rfc822(jp)

フィールド名は一つ以上の印字可能な文字(コロン・スペースそして 制御文字を除く)から構成されています。フィールド名は一行に収まらなく てはなりません。フィールド名を比較する際大文字小文字は区別されません。

(中略)

その他の構文単位を一致には、ケース情報は無視されなければなりませ ん。例えば、フィールド名で”“From”“・”“FROM”“・”“from”“そして”“FroM”“でさ え構文的には同等で、全て同等に処理されるべきです。 これらの単位を生成する場合アルファベット文字の大文字と小文字の混 在も使われるかもしれません。この仕様書で示している例はメッセージ 制作過程のために示唆されています。 注意: 予約されたローカル部分(local-part)アドレス、”“Postmaster”“、 は例外です。 ””Postmaster”“の値が解釈される際、”“POSTMASTER”” や”“postmaster”“を含む如何なるケース混在(大文字小文字混在) でも受け入れられなければなりません。

結論から言うと、

ドメイン部分は大文字小文字の区別無し、ローカル部分はpostmaster以外は送信先の実装依存 (postmasterは大文字小文字区別しない)

だそうです。ほー。

スカイフィッシュはこんな姿だ

下は攻撃体制に入り、ホバリングしているときに取る体制

スカイフィッシュと坂本氏が恐ろしすぎる!

メシを残すことで有名な西田 | 本日のカレー

オフィスにて「腹ぁー減りましたねぇ。メシ行きませんか?」と声をかけてきた西田は私が見た白昼夢であったのだろうか。

毎日毎日の西田の残しっぷり。

Apacheメモ。

ヘッダや404ページでソフトのバージョンとかを出さない

ServerTokens Prod   # Headerから情報を消す
ServerSignature Off # Errorページ等から情報を消す

※Apache2xではServerTokensだけで両方消える。

fakemac:~% HEAD http://localhost/foo
404 Not Found
Connection: close
Date: Mon, 23 Jan 2006 09:45:43 GMT
<strong>Server: Apache/2.0.55 (Debian) PHP/4.4.0-4</strong>
Content-Type: text/html; charset=iso-8859-1
Client-Date: Mon, 23 Jan 2006 09:45:43 GMT
Client-Peer: 127.0.0.1:80
Client-Response-Num: 1
fakemac:~% GET http://localhost/foo
&lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"&gt;
&lt;html&gt;&lt;head&gt;
&lt;title&gt;404 Not Found&lt;/title&gt;
&lt;/head&gt;&lt;body&gt;
&lt;h1&gt;Not Found&lt;/h1&gt;
&lt;p&gt;The requested URL /foo was not found on this server.&lt;/p&gt;
&lt;hr&gt;
<strong>&lt;address&gt;Apache/2.0.55 (Debian) PHP/4.4.0-4 Server at localhost Port 80&lt;/address&gt;</strong>
&lt;/body&gt;&lt;/html&gt;

これが、

fakemac:~% HEAD http://localhost/foo
404 Not Found
Connection: close
Date: Mon, 23 Jan 2006 09:46:01 GMT
<strong>Server: Apache</strong>
Content-Type: text/html; charset=iso-8859-1
Client-Date: Mon, 23 Jan 2006 09:46:01 GMT
Client-Peer: 127.0.0.1:80
Client-Response-Num: 1
fakemac:~% GET http://localhost/foo
&lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"&gt;
&lt;html&gt;&lt;head&gt;
&lt;title&gt;404 Not Found&lt;/title&gt;
&lt;/head&gt;&lt;body&gt;
&lt;h1&gt;Not Found&lt;/h1&gt;
&lt;p&gt;The requested URL /foo was not found on this server.&lt;/p&gt;
&lt;hr&gt;
<strong>&lt;address&gt;Apache Server at localhost Port 80&lt;/address&gt;</strong>
&lt;/body&gt;&lt;/html&gt;

こうなる。(さっそくGETを使い始めた野郎)

PHP: htmlspecialchars_decode – Manual

htmlspecialchars_decode

(PHP 5 >= 5.1.0RC1) htmlspecialchars_decode— 特殊な HTML エンティティを文字に戻す

全米の↓この関数の持ち主が泣いた。。。

function unhtmlspecialchars($str) {
    $entry = array_flip(get_html_translation_table(HTML_SPECIALCHARS));
    return strtr($str, $entry);
}
PRADOバージョン3.0aリリース – HotPHPPER News

PHP 5専用のフレームワークであるPRADOのバージョン3.0aがリリースされました。 日本ではmojaviや最近ではsymfonyが有名ですが、PRADOも一部では期待されているフレームワークです。

PHP Pro Podcastに作者が出てましたが、JSFみたいなイベントドリブンのフレームワークってことで他とはかなり違いそうです。超面白そう。 あと作者は少し落ち着け。(噛み過ぎ)

そんなのあるんだったら(略)シリーズ。

本番ではエラーを画面に出さない。(以下、php.ini)

display_errors = Off

ログファイルには出す。

log_errors = On
error_log = /var/log/php

syslogに出す。

error_log = syslog

PHPの “そんなのあるんだったらはじめに教えといてくれよ!” シリーズ

PEAR Pager。 ページング処理(↓こういうやつ)をやってくれるライブラリ。

paging.png

ARTIFACT ―人工事実― | 雑談だけで会話を続けるのは難しい

 飲み会とかの場でありがちなんだけど、良い会話というのがテンションの高い会話ばかりイメージされている気がする。この辺はテレビのバラエティのフォーマットのせいだろうか。しかし、ゆるい会話でも会話のグルーヴを絶やさないことはできる。ただ、こういった緩い会話スタイルはテンションの高い会話に場の主導権を取られることが多いのだが…。

 自分の話ばかりする人は、人が話をしている時に、「それで思い出したんだけど…」といって、全然違う方向の話に持っていったりする人は、その話をしていた人からすると嫌われる。「思いついた瞬間に話さないと気が済まない人」なんだろうけど、会話には流れがあるんだから、相手の話が一段落ついたところで言うべき。

バラエティの影響というのはあると思う。よく見れば編集してるから話題が飛んでるところが大半なんだけど、そのフォーマットが実際の会話に出てる。

Mojavi2で“user1とuser2だけに見せたいページ”みたいな認証の仕方ができないかと聞かれました。

デフォルトのPrivilegeAuthorizationHandlerだとできないようなのでこんな感じで複数権限一度に指定できるPrivilegesAuthorizationHandlerを作ってみました。(sが付いている)

class FooAction extend Action {
    function getPrivilege(&$controller, &$request, &$user) {
        return array(
            array("user1", "members"),
            array("user2", "members")
        );
    }
}

PrivilegesAuthorizationHandler.class.php.gz

index.phpで元の奴の変わりに使う。

//require_once(AUTH_DIR . 'PrivilegeAuthorizationHandler.class.php');
require_once(AUTH_DIR . 'PrivilegesAuthorizationHandler.class.php');
require_once(USER_DIR . 'PrivilegeUser.class.php');
//$authHandler =& new PrivilegeAuthorizationHandler;
$authHandler =& new PrivilegesAuthorizationHandler;
$user        =& new PrivilegeUser;
$controller-&gt;setAuthorizationHandler($authHandler);
$controller-&gt;setUser($user);