メール送信時にアドレスから表示名を取り除く拡張 Auto Address Cleaner

2008/02/18 | ラベル: | 31 コメント | このエントリーを含むはてなブックマークを表示
宛先メールアドレスから次の例のように表示名を取り除く Thunderbird 拡張 Auto Address Cleaner を作ってみた。
"雷鳥 太郎" <taro@example.com>

  ↓
taro@example.com
同様の拡張で AddressCleaner という拡張があるが、Auto Address Cleaner はメール作成中は表示名は消さず、送信時に表示名を取り除くようになっている。

AddressCleaner Auto Address Cleaner
  • アドレス入力時に自動で取り除く(auto_cleanを有効にした場合)
  • コンテキストメニューから手動で取り除く
  • メール送信時に自動で取り除く

Auto Address Cleaner は、表示名は自動で取り除きたいけど、メール作成中は宛先を間違えてないか確認しやすいように表示させておきたいというケースに向いている。
ダウンロードはこちらからどうぞ。: Auto Address Cleaner

なお、本家の AddressCleaner と同じ機能は実装してないので、必要なら併用してください。

お願い: 以下のリンクから Dropbox のアカウントを作ってくれると作者が喜びます。
https://db.tt/EBiogbwn

(補足)このエントリについて

以前このエントリーでは、「Plain Address」として公開していました。同名の拡張が既にあったこと、それなりに需要がありそうなことから名称を変更しました。(2008.5.1)

JSPのプリコンパイル

2008/02/11 | ラベル: , , | 0 コメント | このエントリーを含むはてなブックマークを表示

JSPをWebサーバに配置後、プリコンパイルする方法のメモ。

  • JSPファイルそれぞれに以下の形式でHTTPアクセスする
    • http://path/to/file.jsp?jsp_precompile
    • http://path/to/file.jsp?jsp_precompile=true
    • http://path/to/file.jsp?foo=bar&jsp_precompile=true
  • Ant の jspc タスク を使う
  • Lambda Probe を使う

Ant のことはよく分からないし、そのまま使えるサンプルが見つからなかった。Lambda Probe は Tomcat の管理/管理ツールとのことで良さげ。Tomcat 4.x には未対応。

ローテクながら、1つめの方法をとることに。

JSPファイルを find で列挙して sed で URL 加工、wget でアクセス。

続・Google Analytics のレポートから内部トラフィックを除外する方法

2008/02/10 | ラベル: , , | 0 コメント | このエントリーを含むはてなブックマークを表示

Blogger にログインした状態でアクセスしたときだけ処理を実行する方法を、Google Analytics の自己アクセス除外設定に応用する。

Google Analytics で自己アクセスを除外する設定は Google Analytics のレポートから内部トラフィックを除外する方法 でできたのだが、ひとつ困ったことがある。

このサイトは Blogger を利用しているのだが、自分だけがアクセスできるページを作成できない。Google Analytics で自己アクセスを除外する設定をかいつまむと、こうだ。

  1. サイトに(自分だけがアクセスする/できる)新しいページを作成
  2. 作成したページに自分のアクセスだと識別する Cookie (便宜上、除外用 Cookieと呼ぶことにする)を設定するコードを埋め込む
  3. 自分が使うパソコン、ブラウザから作成したページにアクセスして、除外用 Cookie を受け取る
  4. 除外用 Cookie を持ったトラフィックを除外するフィルタを作成する

除外用 Cookie を他人が受け取っては意味がないので、自分だけがアクセスできるページが必要ということなのだが、Blogger では公開か下書きかの2通りしかなく、隠しページのようなものを作成することはできない。
ダミーの記事やウィジェットを作成し、公開→アクセス→すぐに削除とすれば Cookie を設定できるが、手順が面倒だし Webアプリ作ったりしてると Cookie を削除することも結構あるのでますます面倒である。

そこで、Blogger にログインした状態でアクセスしたときだけ処理を実行する方法を応用する。これを使えば、Cookie を削除したり別の PC を使った場合でも、Blogger にログインしてアクセスしさえすれば、除外用 Cooke を設定することができる。

ダミーの span 要素とその display 属性をチェックするコードを前の記事のように埋め込む。処理の部分に、除外用 Cookie を発行するコードを書くだけだ。

<script type='text/javascript'>
function hoge() {
var element = document.getElementById('hoge'), value;
if ( window.getComputedStyle ) // Firefox, Opera
value = window.getComputedStyle(element, null).display;
if ( element.currentStyle ) // IE
value = element.currentStyle.display;
if ( value != 'none' )
pageTracker._setVar('test_value'); // 除外用 Cookie の設定
}
</script>

最後に、ページが表示されたら上記のコードを実行するよう、body要素を変更する。

<body onload='javascript:hoge();'>

これで、logger にログインしているときにアクセスすると除外用 Cookie が設定されるようになる。まー正直、ここまでやんなくてもと自分でも思うが。

ただ Blogger にログインしているかどうかで処理を変えたいというのは需要がありそうな気もする。Blogger Developers Network を探したが、ログイン中だけコードを出力するようなタグや機能はなさそうだった。

Blogger にログインした状態でアクセスしたときだけ処理を実行する方法

2008/02/09 | ラベル: , | 0 コメント | このエントリーを含むはてなブックマークを表示

Blogger にログインした状態でアクセスしたときだけ表示する方法の応用。

クイックエディットアイコンは以下の span 要素の内側にある。

<span class='widget-item-control'>
  <span class='item-control blog-admin'></span>
</span>

ログイン中だと内側の span 要素の display 属性が inline になり、ログインしていないときは none になっている。この状態をチェックすることで、ログインした状態でアクセスしたときだけ処理を実行することができる。

上記の要素には ID がないので、固有の ID をつけたものをテンプレートに直接埋め込んでおく。

<span class='widget-item-control'>
<span class='item-control blog-admin' id='hoge'></span>
</span>

次に、id='hoge' な要素の display 属性をチェックして、属性が none でないときに処理を実行するような JavaScript を書く。

<script type='text/javascript'>
function hoge() {
var element = document.getElementById('hoge'), value;
if ( window.getComputedStyle ) // Firefox, Opera
value = window.getComputedStyle(element, null).display;
if ( element.currentStyle ) // IE
value = element.currentStyle.display;
if ( value != 'none' ) {
// ここに実行したいコードを書く
}
}
</script>

getComputedStyle, currentStyle は、現在その要素に設定されているスタイルを取得するもの。

これで、ログイン中のときのみ、何らかの処理を実行させることができる。これを使って、Google Analytics で自己アクセスを除外するための Cookie を設定する方法を改良する。

詳細は次回

Blogger にログインした状態でアクセスしたときだけ表示する方法

| ラベル: , | 0 コメント | このエントリーを含むはてなブックマークを表示

Blogger にログインした状態で自分のブログを見ると、各ウィジェットの右下にクイックエディットのアイコンが表示される。(テンプレートによっては表示されない場合もある)

ログインしていない状態ではクイックエディットのアイコンは表示されないが、HTML コード自体は出力されていて、display: none で見えなくなっているだけである。

クイックエディットアイコンは、次のような span 要素の内側にある。

<span class='widget-item-control'>
  <span class='item-control blog-admin'>
今 Blogger にログイン中です。
</span>
</span>

上記のようなコードを記述すれば、ログインした状態のときのみメッセージ等を表示させることができる。

Google Analytics のレポートから内部トラフィックを除外する方法

| ラベル: , | 0 コメント | このエントリーを含むはてなブックマークを表示

Google Analytics ではフィルタ機能を使うことで内部アクセスを除外することができる。アクセス元を特定する方法としては3つの手段を提供している。

  1. ドメインからのトラフィックをすべて除外
  2. IP アドレスからのトラフィックをすべて除外
  3. カスタムフィルタ

企業や固定IP、ドメインを持つ場合は1または2で簡単に設定できる。そうではない場合は、ちょっと工夫がいる。

ネット環境が DSL だったり、FTTH 接続でも固定 IP じゃない場合は、自分の IP アドレスが変化するので IP 指定で除外しにくい。プロバイダによっては変化する IP アドレス範囲の特定が難しい場合もある。ドメイン名もしかり。
変化する IP アドレスの範囲が分かっていて、ご近所さん(そのIPアドレス範囲のユーザ)からのトラフィックも除外してしまって OK ならば、2の方法を使うことができる。

きっちり自分のトラフィックのみ除外したい!という人は、3のカスタムフィルタを選び、Cookie を設定することになる。ヘルプセンターに FAQ として設定方法が載っているが、フィルタパターンに何を入力すれば良いか説明がない。

Google ヘルプセンター: レポートから内部トラフィックを除外するにはどうすればよいですか。

結論は、test_value と入力すれば良い。
ヘルプでは以下のコードを埋め込むよう説明されているが、赤字の部分と同じ文字列を入力すればオッケー。

<body onLoad="javascript pageTracker._setVar('test_value');">

RHELでシングルユーザモードのログインにパスワードを要求する

2008/02/04 | ラベル: , | 0 コメント | このエントリーを含むはてなブックマークを表示

シングルユーザモードのときは、パスワードを求められないものと思っていたが、debianを使ってみてそうではないことを知った。sulogin と init (, inittab) がキーワード。

RHEL の sulogin の ManPage の説明。

sulogin は、シングルユーザモードの時、ユーザがシステムにアクセス可能となる前に、 /etc/init によって起動される。この機能は、init が適切に変更されているシステムか、あるいは /etc/inittab にシングルユーザ login のエントリがあるシステムでのみ利用できる。

... snip ...

このコマンドが利用できるようにするには、init が /bin/sh ではなく sulogin を呼ぶようになっているか、または inittab 中にシングルユーザ ログインに対する設定がされている必要がある。例えば、

co:s:respawn:/etc/sulogin /dev/console

という行を書いておけば、シングルユーザモードでは sulogin コマンドが実行される。

/etc/inittab の書式は id:runlevels:action:process なので、上記によれば /etc/sulogin が起動するプロセスになる。RHEL では /etc/sulogin はなく、/sbin/sulogin なので、正しくは以下。

co:s:respawn:/sbin/sulogin /dev/console   ・・・・・(1)

しかーし。上記ではうまく動かず。今度は init の ManPage を見てみる。ブートの項ではこう書かれている。

ランレベルを S または s にすると、システムはシングルユーザモードに入る。この場合は /etc/inittab ファイルを必要としない。シングルユーザモードでは、/dev/console で /sbin/sulogin が起動される。

さらに、ブートフラグの項ではこう書かれている。

ブートモニタ (例えば LILO) から init に様々なフラグを渡すことが可能である。 init は以下のようなフラグを受け付ける:

-s, S, single

シングルユーザモードでブートする。このモードでは /etc/inittab を
参照する。またシングルユーザモードのシェルが起動される前に
ブートアップ rc スクリプトが実行される。

まとめると、

  • ブートローダにオプションを渡してシングルユーザモードになるときは /etc/inittab が参照される
  • それ以外の場合は /etc/inittab は参照されない

となりそうだが、実際は常に /etc/inittab が参照されてるっぽい。本題の、「RHELでシングルユーザモードのログインにパスワードを求める」には、/etc/inittab にこう記述する。

~:S:wait:/sbin/sulogin   ・・・・・(2)

(1) ではだめで、(2) とすると期待した動きになる。

debian の場合、/etc/inittab に以下を記述するらしい(未確認)。

~~:S:wait:/sbin/sulogin

被はてなブックマーク数を表示する

2008/02/03 | ラベル: , | 0 コメント | このエントリーを含むはてなブックマークを表示

はてなの方に Blogger の場合のサンプルが載っているけど、情報が古いようで現在の Blogger では使えない。以下のようにするとおっけー。

<a expr:href='"http://b.hatena.ne.jp/entry/" + data:post.url'> <img alt='このエントリーを含むはてなブックマークを表示' expr:src='"http://b.hatena.ne.jp/entry/image/" + data:post.url' title='このエントリーを含むはてなブックマークを表示'/> </a>

ソーシャルブックマークへの追加ボタンをつける

| ラベル: , | 2 コメント | このエントリーを含むはてなブックマークを表示

各エントリにソーシャルブックマークへの追加ボタンをつける方法。

ソーシャルブックマークへの追加ボタンは AddClips で簡単に作成できる。Bloggerなら作成したコードを貼り付けるだけでOKらしいけど、そのまま貼り付けてもうまくいかなかったのでメモ。

AddClipsUrl    = &#39;<data:post.url/>&#39;;
AddClipsTitle  = &#39;<data:post.title/>&#39;;

URLとタイトルのところは上記のようにしたらうまくいった。他の部分も、シングルクォートは &#39; と文字実体参照で記述する。(コピペして保存すれば勝手に変換されたと思う)

あとはボタンの表示位置が微妙に上にずれていて見た目が良くないので、span要素でくくって位置調整。

.post-bookmark a img {
  vertical-align: bottom;
}

MS OfficeそっくりのオンラインOfficeアプリ

| ラベル: , , | 0 コメント | このエントリーを含むはてなブックマークを表示

Microsoft OfficeそっくりのオンラインOfficeアプリ。
Think Free Office

これもDeki wikiが利用している。 Think Freeをホストしているサーバにキャッシュとかで中身保存されていないのかちょっと心配。

全文検索エンジンApache Lucene

| ラベル: , | 0 コメント | このエントリーを含むはてなブックマークを表示

Lucene(ルシーン)は Javaで書かれた全文検索のライブラリ。DekiWiki が利用している。
DekiWiki、もうちょっと軽快ならいいんだけどなー。

Lucene のサンプルコードなどは 関口宏司のLuceneブログ が充実している。Lucene本の著者さんですね。

リンク

fmlで受信メールサイズの制限をする

| ラベル: | 0 コメント | このエントリーを含むはてなブックマークを表示

fml 3.0 (かなり古いが。。。)だと 7. SECURITY & FILTERING にてメール受信の最大サイズを設定できる。任意の値ではなく、あらかじめ決められた値の中から選択する形。

サーバ証明書のシリアル重複

| ラベル: | 0 コメント | このエントリーを含むはてなブックマークを表示

IEでは無視されるが、NetscapeやFirefoxでは同一の証明機関から発行された証明書で同一のシリアル番号があった場合、無効になるらしい。ちゃんとした認証機関から発行してもらっている分には問題ないが、自己認証局でオレオレ証明書を作ってる場合はミスする可能性もあるかも。

Postfixで拡張アドレスを使う

| ラベル: , | 0 コメント | このエントリーを含むはてなブックマークを表示

Gmail では

  • '.' (ドット)は無視される
  • '+' (プラス)以降は無視される

という規則があって、たとえば以下のメールアドレスは同じと解釈される。

  • foo.bar@gmail.com
  • foobar@gmail.com
  • foob.ar@gmail.com
  • foo.bar+abcdefg@gmail.com

Gmailユーザでは + を使ってアドレスを(擬似的に)複数使い分けている人も多いと思う。これと同じようなことを Postfix でも簡単に実現できる。

main.cf に以下を追加するだけで、上記の例のように + 以降を無視することができる。

recipient_delimiter = +

qmail でも同様の設定が可能とのこと。

不機嫌なエクスプローラ

| ラベル: | 0 コメント | このエントリーを含むはてなブックマークを表示

ノートPCのエクスプローラがたまに(しょっちゅう)おかしくなる。壊れっぷりの一部を紹介。


メニューがなくなり、Windowsの旗マークがびよーんと。


メニューがツールとヘルプだけに。


もう、どうしろっての。。。

再起動すると直るので、システムリソース不足っぽい。

ログインプロンプトの表示を変更する

| ラベル: , | 0 コメント | このエントリーを含むはてなブックマークを表示

ログインプロンプトが表示されるとき、RHELでは画面がいったんクリアされるが、Debianではクリアされず以前の画面表示内容が残ったままになる。RHELで/etc/rc.localでメッセージを表示したい場合、画面がクリアされないようにログインプロンプトのオプションを変更する必要がある。

RHELのリファレンスマニュアルのブートプロセスの詳細を参照すると、

initコマンドがそのランレベルに適切なrcディレクトリを通過すると、/etc/inittabスクリプトは、ランレベルに割り当てられた各仮想コンソール(ログインプロンプト)用に /sbin/mingettyプロセスをフォーク(分岐)します。ランレベル2から 5は 6つの仮想コンソールをすべて持ちますが、ランレベル1(シングルユーザーモード)は1つしか持たず、ランレベル 0 とランレベル 6は仮想コンソールがありません。/sbin/mingettyプロセスは通信経路をttyデバイス[2]に対して開き、そのモードを設定、ログインプロンプトを表示、ユーザーのユーザー名とパスワードを受け取ってからログインプロセスを開始します。

とある。/etc/inittabに、ログインプロンプトを仮想コンソールに表示する/sbin/mingettyの記述があるということだ。

man mingetty でmingettyのマニュアルを見てみると、--noclear とか --noissue というオプションがあるのがわかる。おそらく Debian では --noclear オプションが指定されているのだろう。(未確認)

/etc/inittab を開き、tty1 の mingetty に --noclear オプションをつけて保存(必要に応じて他のttyも変更)。

表示させたいメッセージは /etc/rc.local に書くと良い。ログインプロンプトが表示される毎にメッセージを表示したいなら、/etc/issue に書く。

echo  
echo -e "\033[1mThis is sample message."
echo
echo "  sample sample sample"
echo -e "\033[0m"

\033[1m から \033[0m までの文字は強調表示される。