課題
localhost で開発するので localhost の cookie が(少なくとも開発者ツール上では)たくさんあって邪魔くさい。なんかサクッと削除する方法はないか? できれば手作業でなく自動でなんとかしたい。
結論
ダメでした。
- サーバサイドのコードではブラウザから送信されてこない cookie については感知する方法がない
- expired な cookie はサーバには送られてこない(少なくとも最近のブラウザでは)
- ブラウザ上の JavaScript でも expired な cookie にはタッチできなかった(とりあえず Firefox 48 では)
ついでにRFC 6265をちょっと勉強した
RFC 6265 は今回まったく主目的ではないんだけど。
- document.cookie - Web API インターフェイス | MDN
- RFC 6265 — HTTP State Management Mechanism (日本語訳)
- RFC 6265 - HTTP State Management Mechanism
Cookie には伝統的な問題がいくつもあり、RFC 6265 により互換性とこれらの問題の解決を図る。以下、雑なメモ。
- Cookie は request ヘッダに1つだけ。複数送信してはならない。
- expired cookie はいつでも削除しなければならない(タイミングは決まっていない。容量や数の制限を超える場合は優先的に削除される)
- Cookie は cookie-string で定義される文字列 key=value; key=value の並び(デリミタは"; ")
- 妥当な UTF-8 であるとは限らない。
expire については日本語では読みにくく、英語の方が分かりやすい。
A cookie is "expired" if the cookie has an expiry date in the past.
The user agent MUST evict all expired cookies from the cookie store if, at any time, an expired cookie exists in the cookie store.
At any time, the user agent MAY "remove excess cookies" from the cookie store if the number of cookies sharing a domain field exceeds some implementation-defined upper bound (such as 50 cookies).
この MUST evict と MAY remove の違い。
感想
RFC 6265 互換でオブジェクト指向で書けるライブラリを利用すると捗りそう。
js-cookie/js-cookie: A simple, lightweight JavaScript API for handling browser cookies
とか。
expire 周りは実際にはどうも expired cookie はただちに削除はされないが Cookie ヘッダには乗らない、という動作になるようだ。サーバ的には送られてこない Cookie は存在しないも同じなのでそれでよいのか。JavaScript 的にも expired な cookie は取得できないようだ。(Firefox 48で確認)
ただし、人間が目視で開発者ツールで確認を行う際には実際には削除はされていないので、目視的にはノイズになる。これがやっかい。結局は Cookie の確認方法をマスターするのと同時に削除の方法もちゃんと身につけましょう、ということらしい。
ちょっとつらい結論になってしまったが仕方ないかー。
OSX で Notifier と言えば Growl らしいのでこれを入れてみる。
どうやらこれも 10.3 は放置プレイに入りつつあるようだけどとりあえず入れてみる…と思ったら入れ方分かんねぇ。
Growl.prefPane
をダブルクリックって。なんかもう少し分かりやすくできないのか。
そして何にも使えるアプリがねぇ。あーえーと。なんか後から足すのか。
Extras/GrowlMail/GrowlMail.pkg
をインストール。
Extras/growlnotify/install.sh
を Terminal から実行(ぶ) いやまぁ、できますけど、それってどうだ。
続いて Thunderbird に Growl New Message Notification :: Thunderbird Add-ons をインストール。う。これ、新着メッセージだけだよな。つか Growl Notifications :: Thunderbird Add-ons も同じだな。てことはあれか。
Reminderfox から WebDAV で iCal データを定期的に吐き出して、それを iCal で定期的に読み込んで、iCal そのものか、あるいは iCal + Growl でやった方がよさげだな。
どう見てもめんどうくさいです。あり(ry
……。やっぱ iCal かぁ?
PowerBook のディスク周りがどうも不調な様子 。恐ろしく遅くなって使いものにならなくなる。とりあえずお遊び用に用意してあった外付けの HDD に退避開始。中古だし、ついでに HDD 交換のうえクリーンインストールの刑に処することにする。このバックアップは果てしなく長そうだなぁ。…つか、FAT32 に HFS+ のバックアップが取れるわけねーな。(使えない文字とか Mac 用のアプリが地雷踏んでて。)んー。ということは FAT32 のディスクの内容を別な場所に移して(移動先は複数あるから合わせればなんとかなるだろう)HFS+ でフォーマットし直しちゃうのが楽かな?普段全然クライアントマシンのデータの保全ができてないの丸分かりだな、こりゃ。
細かいデータ以外は Web ベースで作業できる状態になっているものが多いので、眠っていた ThinkPad を引っ張りだし…。あれ、AC はどこいった。あー無線のカードを AirMac に登録してない。1あー。めんどくせぇ。
しかしちょっと使ってみたけど ThinkPad 快適だなぁ。なんだこの使いやすさ、レスポンスの良さ。見直したぞ Pen!!! 600 + Win2k.
[10/3 追記] やっぱディスクがダメっぽい。
退避用に 3.5" 160GB、新環境用に 2.5" 60GB のディスクを買ってくる。合わせても2万なんだからずいぶん安くなったもんだ。ついでに Tiger に上げようかと思ったけど、なぜかパッケージが見つからないので無視。バックアップ…。あれ。なんか新しいディスクの容量がでかい。あーなんかちょっと高いなと思ったら 250GB 買ってきちゃったよ。まーいいか。エラーはアプリのコピー時に起きた。データのときには何も言われないしスローダウンもしない。これはとてもラッキーな状態か? 確認、確認。バラシが面倒になった2なので試しに同じディスクのままクリーンインストールして放置してみる。朝になっても終わってないorz なんか前にディスクがおかしくなったとき(どれだったか覚えてない)もこんな感じだったような? 最近のディスクはぶっ飛ぶ前にきれいにスローダウンしてくれるのか? 単に当たり引いてるだけか?
あまり増えないログはそんなに頻繁に rotate する意味がない。でも全然 rotate しないとさすがにいつの間にかすごいことになっていることもある。
newsyslog は定期的にサイズをチェックして、指定のサイズを越えたら rotate するという芸当が可能。これは使えるな。Apache の log だからって Apache 付属の rotatelogs を使わにゃならんつーこともないしね。
Linux では RedHat の開発した logrotate の方がメジャーだけど、newsyslog もよいな。logrotate の方が設定ファイルは冗長で分かりやすいかな。
ついでだ。なんか日記書きまくり。
素晴らしい。それがどんな世界のどんな内容の記録であろうとも、世界一は素晴らしいし、以前の記録が半世紀以上前のものということも、記録更新がどれだけ困難なものだったかを物語っており、その世界一の価値をますます高めている。
同じく Ryuzi_Kambe の日記経由
いろいろあがってるけど米Red Hat、米AOLからNetscapeの企業向け技術を買収 (Enterprise Watch) で。具体的には以下の2つか。
- Netscape Deirectory Server
- Netscape Certificate Management System
てーことはだ。ぶっちゃけると OpenLDAP に匹敵するものがオープンソースで登場してくるってことかな?
見やすい。つーか想像以上にサイトリニューアルに関しては動きが早かったように思う。内部で動いている人たちはどういう人たちなんだろうか? 以前から感じているんだけど、Mozilla.org 界隈のサイト構築の手法って、結構参考になるんじゃないかな。そういうドキュメントはどこかに公開されないのだろうか。
できて当然なんだろうけど、今までこの手の記述を見たことがなかったので自分の実験結果をメモ。
/usr/share/skel
以下に作っておけばディレクトリだろうがなんだろうが adduser したときにどかどか作られる。ま、man adduser すれば分かることなんだけど、本当にできてなんか嬉しかったので。
変なアクセス見っけ
ふとルータに目をやると自分の覚えのないアクセスがチカチカしている。はてなー、外から何かきているなぁ、と思ってログを見ると案の定 sshd に対して適当なユーザーでいたずらしている人発見。オーストラリアからのアクセスだ。
rsa 鍵認証しか許可していないので成功するわきゃないんだけど、目の前でいたずらされ放題ってのもあんまり気分のいいものではないので逆にこっちからアクセスしてみた。
openssh 3.1p1
うーん、ほんとかどうか分からないけど今どきそのバージョンはどうだ? そんな ssh 解放しておいて自分が痛い目見ても知らないぞ。ついでに ftp は
wu-ftp 2.6.2
だった。こっちはまだまともか。ftp と ssh しか開いてないなんて目的が知れるけど、人んち叩くんなら ftp で生パスワード流すのはどうなのだ。
Apache のログを少々
ついでに Apache の log が膨れ上がっていたので
- worm のアクセスは別なログに記録
- 通常のアクセスも画像は記録しない
- LAN 内のアクセスは記録しない
ようにして apache のログのディレクトリを作ってそこに放り込んでおいた。まーそこまでせんでも適当なタイミングでログを消す程度しかしてないんだけど、なんかあったときにノイズだらけのログじゃ分かるものも分からなくなっちゃうので。
Apache 2 のマニュアルはほんとに見やすいな。と思ったら最初のリンク先は正確じゃないな。SetEnvIf の記述は
SetEnvIf Attribute Regex env-attribute[=value] [env-attribute[=value]]
じゃないの。ローカルの IP アドレスをどうやって記述するのかちょっと悩んだが正規表現なら簡単だ。
参考
ついでに
- cvsup
- cygwin の mirror
を crontab に入れておいた。あーでも Windows マシン使ってないじゃん。
職場で入れて便利だったので
- jman の環境を揃える
方法は
- portinstall jman
- A. 日本語マニュアル/ソフトウェア取得 からマニュアルのアーカイブを取ってきて pkg_add
- ports でやろうとすると標準的な ports の supfile では manual は取ってこないので、この方法がたぶんいちばん楽。
人材を人財に昇華させるくらいに考えないとね。
って、モーダルなダイアログなのですね。cookie の動きを確認しながらブラウズできないじゃん。
ということで久々に Mozilla に返り咲き。