2009年 07月 03日

gerry++

食べすぎた……

2009年 06月 30日

gerry++

ものすごいひどい下痢だった。原因がわからない……

2009年 06月 27日

gerry++

Apache2 を置換プロキシにする

cocproxy みたいなのを Apache できないかと思ってやってみた。(パフォーマンスの問題)

/Users/cho45/app/proxy にファイルを置くことにする。置換したいリクエストのパスと完全に一致する必要がある (http://s.hatena.ne.jp/js/HatenaStar.js を置換したければ /Users/cho45/app/proxy/js/HatenaStar.js をおく)

#!/opt/local/apache2/bin/httpd -f $PWD/proxy.apache.conf -k restart
ServerRoot "/opt/local/apache2"
PidFile /tmp/proxy.pid

Listen 5432
Timeout 300
KeepAlive On
StartServers        1
MinSpareServers     1
MaxSpareServers     3
MaxClients          5
MaxRequestsPerChild  50

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so

LoadModule log_config_module modules/mod_log_config.so
LoadModule include_module modules/mod_include.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule mime_module modules/mod_mime.so

TypesConfig /opt/local/apache2/conf/mime.types
DefaultType text/plain
<IfModule mod_mime_magic.c>
    MIMEMagicFile conf/magic
</IfModule>

ErrorLog /tmp/proxy.error_log
CustomLog /tmp/proxy.access_log common

LogFormat "%h %l %u %t \"%r\" %>s %b" common

DocumentRoot /Users/cho45/app/proxy

RewriteEngine On
RewriteCond  /Users/cho45/app/proxy/%{REQUEST_FILENAME} !-f
RewriteRule (.*) http://%{HTTP_HOST}$1 [P]

#RewriteLogLevel 2
#RewriteLog /tmp/proxy.rewrite_log
2009年 06月 23日

Cross Site XHR

Firefox3.5 の場合 Basic Auth が該当領域にかかっているとき CSXHR しようとするとめんどうくさい。

JS 側

  • xhr.setRequestHeader("Authorization", "Basic foobar"); してやる
  • (Basic Auth ダイアログは XHR ではでないし勝手に送ったりはしない)

鯖側

  • setRequestHeader されていると simple request にならず必ず OPTIONS method でアクセスがくる
  • OPTIONS には Basic Auth かからないようにする (Authorization を送らない)
  • OPTIONS で以下のヘッダを返してやる
    • Access-Control-Allow-Origin: domain
    • Access-Control-Allow-Methods: POST, GET, OPTIONS
    • Access-Control-Allow-Headers: Authorization

事故死しないように setRequestHeader はちゃんと管理する必要あり (クライアントサイドコードなので……)

req.withCredentials = "true"

して

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: domain

をかえせばいいらしい…… けど domain はちゃんと Origin と一致してないとだめっぽい?

はてなハイクに Copie! ボタンを追加する Greasemonkey Script

2009年 06月 22日

gerry++

2009年 06月 15日

gerry++

朝から…。

2009年 06月 14日

はてブのエントリページのはてなコピィを表示させる GM

はてブのエントリページに、ブクマ先URIについてついているコピィを表示させるようにします。例えばブックマークのウェブフック先をコピィにした場合とかです。

2009年 06月 12日

Perl の utf8 関係が未だ全く理解できない。わからないことがわからないので整理

現状やってること

  • utf8 フラグを全く考慮せずに書き、文字化けした時点で
    1. use utf8 つけたりはずしたり
    2. utf8::encode, utf8::decode を適当にする

最も知りたいこと

  • 確実に文字化けをしない方法


わかること

  • 下位互換性でデフォルトが latin-1
  • use utf8 しててもフラグたたないことがある……
  • 入力時にフラグ立てて 出力時に落とせ、とかいう運用上のやつ

わからないこと

  • encode/decode の覚えかた
    • (いつも適当にどっちかやって is_utf8 ダンプするハメになる。perldoc utf8 みてもわからない)
  • ある文字列 (サブルーチンの返り値とか) が utf8 flagged かどうかわからないときどうすればいいか
    • 誰がその文字列の状態に責任を持ってるのか
    • 誰かが責任をはたせていない場合にできることは?
    • 自分はどこまで責任を持てばいいのか
    • 実際問題これってよくあると思うんだけど……
  • use utf8 の意味
    • フラグが立ったり立たなかったりするのは混乱する
    • use utf8 せずに全部に utf8::decode すべきなんじゃ?
  • 全く utf8 フラグを考慮してない場合にどうなるか
    • 海外製のだいたいの CPAN ライブラリのこと
    • 複雑奇怪な問題を全ての人が「知っている」ことを前提にするのは間違いだと思う
    • 上記責任の問題もあるのだけど、他人が果たせない責任を果たすことはよくあることなのだから、そういうことが確実にできるようでないと使えない。
  • 要は文字化けさせたくないだけ
    • 正規表現マッチを正しくさせるには?
    • 正規表現のエンコーディングは?
  • 普通に開発していて latin-1 が必要になることはあるのか?
    • ライブラリの返り値でそうなることがあるとか?
  • latin-1 と byte 列はちがうのか?
    • utf8 文字列 / latin-1 文字列 / バイト列 ?
  • なんでこんな複雑なのか
    • 下位互換性、というのはわかる、けど、