memo.xight.org

日々のメモ

PhpUnit - PHPのユニットテスト自動化ツール

Reference

SourceForge.net: PhpUnit
http://sourceforge.net/projects/phpunit/

PHPUnit
http://www.go-pear.org/manual/ja/html/package.php.phpunit.html

Do You PHP? - PhpUnit - 最強のユニットテスト自動化ツール
http://www.doyouphp.jp/tips/tips_phpunit.shtml

PEAR hacks - PHPUnitの使い方
http://www.aglabo.com/agl/proevo/PHP/PEAR/phpunit-howto.html

PhotoCabi-diary - 2004-11-18 - PHPUnitの使い方
http://www.photocabi.net/mt/archives/000049.html

Yesterdays Weather - 昨日の天気

Summary

「今日の成果は昨日の成果と (多分) 一緒」という原則.

Reference

MF Bliki: YesterdaysWeather
http://martinfowler.com/bliki/YesterdaysWeather.html

Martin Fowler's Bliki in Japanese - 昨日の天気
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?YesterdaysWeather

via

Slashdot Japan - Winnyによる被害(?)相当額は約100億円規模
http://slashdot.jp/comments.pl?sid=342336&cid=1067400

Nopaste - テキストの共有サービス

Summary

ソースコードをペーストすると,ソースコードのハイライティングを行い,
PermalinkでアクセスできるようになるWebツール.
タブの置換も可能.

入力した内容は24時間で消去される.

Reference

Nopaste
http://rafb.net/paste/

Nopaste - Result
http://rafb.net/paste/results.html

via

最速インターフェース研究会 - 2006-10-03 - Sledge::Plugin::DebugTemplateで開発効率が135倍になるデモ
http://la.ma.la/blog/diary_200610030448.htm

HsbtDiary(2006-08-08)
http://www.hsbt.org/diary/20060808.html

Firefoxに任意のRSSリーダーを追加する方法

Summary

navigator.registerContentHandler("application/vnd.mozilla.maybe.feed",
                                 "http://www.theeasyreaderurl.com?feed=%s",
                                 "Easy Reader");


Reference

Mozilla Developer Center - Adding feed readers to Firefox
http://developer.mozilla.org/ja/docs/Adding_feed_readers_to_Firefox

最速インターフェース研究会 :: Firefox2.0に任意のRSSリーダーを追加する方法
http://la.ma.la/blog/diary_200610251151.htm

zed - ZLE Editorを使って開発されたエディタ

Reference

技術メモ帳 - zshで出来ている新感覚エディタzed
http://d.hatena.ne.jp/lurker/20061129/1164809805

Reference

[を] Windows でエクスプローラの履歴を見る
http://chalow.net/2006-11-29-2.html

xe-kdoo - 2005-07-12 - [Windows] 実行したプログラムの履歴(?)
http://yowaken.dip.jp/tdiary/20050712.html#p01

Wikipedia - ROT13

coLinux 上の Emacs の kill-ring の内容をWindowsのクリップボードと同期する

Reference

naoyaのはてなダイアリー - coLinux 上の Emacs の kill-ring の内容をWindowsのクリップボードと同期する by Perl
http://d.hatena.ne.jp/naoya/20061125/1164466544

odz buffer - coLinux で Emacs の kill-ring の内容をWindowsのクリップボードと同期する
http://d.hatena.ne.jp/odz/20061125/1164433815

odz buffer - coLinux で Emacs の kill-ring の内容をWindowsのクリップボードと同期する #2
http://d.hatena.ne.jp/odz/20061125/1164437987

Syndy Chronicle - 年表ビューア/エディタ

Summary

XVCDというXMLで記述するスクリプト言語で開発.

Reference

Syndy Chronicle
http://www.ne.jp/asahi/yamahige/green/syndy-chronicle/Readme-ja.html

xfy technology - 用語集 - XVCD
http://www.xfy.com/jp/manual/1.3/documents/dev/developer/1.3/overview/glossary.html#xvcd

via

最速チュパカブラ研究会 - 第九回XML開発者の日(コメント質疑応答メモ)
http://d.hatena.ne.jp/gyuque/20061124#1164345088

svn,tracでコミットした内容を取り消す方法

Summary

リビジョンを指定してダンプ,ロード.
例) リビジョン0から99までをダンプ

svnadmin dump -r 0:99 | svnadmin load


tracの再同期.

trac-admin resync


Reference

YappoLogs: 悪のりで学ぶsvnadmin/trac入門実用編
http://blog.yappo.jp/yappo/archives/000477.html

Subversion によるバージョン管理 (日本語訳) - svnadmin dump
http://subversion.bluegate.org/doc/re33.html

Smartyを使った開発でデバッグを行う方法

Summary

Smartyを使った開発でデバッグを行う方法.

常にデバッギングコンソールをポップアップ表示

$smarty->debugging = true;


常にデバッギングコンソールをHTML内に表示

$smarty->debugging = true;
$smarty->assign('_smarty_debug_output', 'html');


URL に SMARTY_DEBUG が含まれる場合にデバッギングコンソールを表示

$smarty->debugging_ctrl = 'URL';


テンプレート変数 debug を利用してポップアップ表示

{debug} 


テンプレート変数 debug を利用してHTML内に表示

{debug output='html'} 


debug_print_var 修正子を利用して,割り当てられた変数を表示

{$foo|@debug_print_var}


debug_print_var 修正子を利用して,割り当てられた変数を表示

インデント1単位,100文字まで表示.
インデント1単位は半角スペース2文字分.
{$foo|@debug_print_var:2:100} 


Reference

cl.pocari.org - Smarty を使った開発でデバッグを行う 4 つの方法
http://cl.pocari.org/2006-11-29-1.html

Smarty - $debugging
http://smarty.php.net/manual/en/variable.debugging.php

Smarty - $debugging_ctrl
http://smarty.php.net/manual/en/variable.debugging.ctrl.php

Smarty - {debug}
http://smarty.php.net/manual/en/language.function.debug.php

$debugging
$debugging_ctrl
{debug}

String::Diff - 行内差分取得モジュール

Summary

Perlの行内差分取得モジュール.

文字列同士の差分を作って変更無い場所,変更が合った場所で配列を分けて作成.

my $diff = String::Diff::diff_fully('this is Perl', 'this is Ruby');
for my $line (@{ $diff->[0] }) {
    print "$line->[0]: '$line->[1]'\n";
}
# u: 'this is '
# -: 'Perl'

for my $line (@{ $diff->[1] }) {
    print "$line->[0]: '$line->[1]'\n";
}
# u: 'this is '
# +: 'Ruby'


差分の合った部分にマークを付ける.

my $diff = String::Diff::diff('this is Perl', 'this is Ruby');

print "$diff->[0]\n";# this is [Perl]
print "$diff->[1]\n";# this is {Ruby}

my $diff = String::Diff::diff('this is Perl', 'this is Ruby',{
    remove_open => '<del>',
    remove_close => '</del>',
    append_open => '<ins>',
    append_close => '</ins>',
});

print "$diff->[0]\n";# this is <del>Perl</del>
print "$diff->[1]\n";# this is <ins>Ruby</ins>


差分同士の結果をマージして一つの文字列にする.

my $diff = String::Diff::diff_merge('this is Perl', 'this is Ruby'{
    remove_open => '<del>',
    remove_close => '</del>',
    append_open => '<ins>',
    append_close => '</ins>',
});
int "$diff\n";# this is <del>Perl</del><ins>Ruby</ins>


正規表現のパターンにする.

my $diff = String::Diff::diff_regexp('this is Perl', 'this is Ruby');
print "$diff\n";# this\ is\ (?:Perl|Ruby)


利用例

Hatena::Wiki - Kwiki mutual diffs
http://hatenawiki.blogdb.jp/?action=diff&page_name=HomePage&revision_id=2&current_revision_id=3

Reference

YappoLogs: String::Diff - 行内差分取得モジュール
http://blog.yappo.jp/yappo/archives/000479.html

String::Diff

Firefoxのミステリーサークル

Reference

http://maps.google.com/?ll=45.123772,-123.113917&t=h

The Road to Firefox 2 - Behind the Scenes: The Firefox crop circle!
http://www.firefoxflicks.com/web-diaries/?p=96

Linux Users Group - Oregon State University
http://lug.oregonstate.edu/index.php/Projects/Firefox/Firefox_Circle

via

MOONGIFTニュース - 2006-11-30 - Firefox on Google Maps
http://news.moongift.jp/i-2941.html

GIGAZINE - 2006-11-30 - Googleマップで見られる巨大Firefoxロゴ
http://gigazine.net/index.php?/news/comments/20061130_google_firefox_logo/

WebTTY - ユーザ変更も可能なWeb上のターミナル

Summary

C言語で作られたwebttyに,PHPから利用する.

Reference

TestApe - Software unit testing for sale
http://testape.com/webtty_sample.php

via

MOONGIFT - WebTTY レビュー
http://oss.moongift.jp/review/i-2921.html

MOONGIFT - WebTTY - ユーザ変更も可能なWeb上のターミナル
http://oss.moongift.jp/intro/i-2917.html

Internote - 閲覧ページに付箋紙を貼り付けるFirefox拡張

Summary

閲覧ページ内に付箋紙 (メモ) を貼り付けることができ,再びそのページに訪れた時,貼り付けた付箋紙が同じ場所に表示される.

付箋紙は閲覧ページの好きな場所へ動かして複数枚貼り付けることができ,付箋の文字色/背景色を変更することも可能.
Internote Managerでは各Webページに貼り付けた付箋紙の内容やURLを管理/編集することが可能.

Reference

SourceForge - Internote
http://internote.sourceforge.net/

Internote | Firefox Add-ons | Mozilla Corporation
https://addons.mozilla.org/firefox/2011/

Firefox更新情報 Wiki - Internote
http://wikiwiki.jp/firefox/?Ext%2FInternote

InterNote: Extending a Hypermedia Framework to Support Annotative Collaboration
http://pitecan.com/bib/Catlin_InterNote.html

sta la sta - Webの好きな場所へ付箋紙を貼れるFirefox拡張機能 - MyStickies
http://d.hatena.ne.jp/starocker/20060120/p2

via

窓の杜 - Webページごとに付箋紙を貼り付けられるFirefox拡張機能「Internote」
http://www.forest.impress.co.jp/article/2006/11/28/internote.html

ChangeLogメモ 4周年

記録

Line 78487 (行)
Entry 5423 (エントリ)
File size 2661086 (byte)

備考

ChangeLog開始日は[2002-11-28-1]
ChangeLog開始1周年は[2003-11-28-1]
ChangeLog開始2周年は[2004-11-28-1]
ChangeLog開始3周年は[2005-11-28-1]

10000行達成は[2003-10-04-1]
20000行達成は[2004-05-06-23]
30000行達成は[2004-09-10-12]
40000行達成は[2004-12-26-1]
50000行達成は[2005-07-19-25]
60000行達成は[2006-01-30-5]
70000行達成は[2006-07-26-8]

Plagger::Plugin::Notify::MissileLauncher - Plaggerでミサイルランチャーを発射

Reference

YappoLogs: Plagger::Plugin::Notify::MissileLauncher - Ejectじゃ刺激が足りない人に
http://blog.yappo.jp/yappo/archives/000484.html

AKIBA PC Hotline! - 2006-07-15 - 実弾発射と姿勢制御可能なUSB接続ミサイルランチャー発売
http://www.watch.impress.co.jp/AKIBA/hotline/20060715/etc_usbmissile.html

Plagger::Plugin::Notify::MissileLauncher

URLParser - JavaScriptのURLパーサークラス

Summary

var p = new Poly9.URLParser('http://user:password@poly9.com/pathname?arguments=1#fragment');

/* OUT *
p.getHost() == 'poly9.com'
p.getProtocol() == 'http'
p.getPathname() == '/pathname'
p.getQuerystring() == 'arguments=1'
p.getFragment() == 'fragment'
p.getUsername() == 'user'
p.getPassword() == 'password'
*/

p.setURL('another.url.com');

/* OUT *
p.getHost() == 'another.url.com'
p.getProtocol() == ''
*/


Reference

URLParser - Public code - Trac
https://code.poly9.com/trac/wiki/URLParser

via

phpspot開発日誌 - 2006-11-27 - JavaScriptから使える便利なURLパーサークラス「URLParser」
http://phpspot.org/blog/archives/2006/11/javascripturlur.html

MySQLの高速化 Tips

Summary

my.cnf

[client]
# セキュリティ面から変更すべき
port = 3306

[mysqld]
# インデックスをバッファに保存する際のメモリサイズ
# MyISAMならOSキャッシュも使用するため,全メモリの30-40%を当てると良い.
key_buffer = 256M

# InnoDBはOSキャッシュを使用しないため,全メモリの70-80%を当てると良い.
innodb_buffer_pool_size =512M 

# データのキャッシュサイズ.I/Oを減らす.
# 数百のテーブルであれば,1024が良いらしい.
table_cache = 256

# スレッドの作成,削除は負荷が大きい.
# Threads_Createdの動きを見ながら変更.
thread_cache = 16

# あまり効果は無いらしい.
#innodb_additional_pool_size = 20M

# ログファイルのサイズ.
# 増やすとパフォーマンスが良くなるが,復旧に時間がかかる.
# 64-512M程度まで.
innodb_log_file_size = 64M

# ログのバッファサイズ
# 8-16Mまで.
innodb_log_buffer_size = 8M

# flush logをディスク,メモリに記録するか,記録しないかを設定する.
# 必ずメモリに記録するよう設定すること.
# 0 : flush log を記録しない.
# 1 : flush log をディスクに記録する.
# 2 : flush log をメモリに記録する.
innodb_flush_logs_at_trx_commit = 2

# 入力データ保持のための最大バッファサイズ
# 大きいファイルを扱う際に必須.
max_allowed_packet = 1M

# ORDER BYやGROUP BYのクエリ速度を上げる.
# メモリが多くない限り増やしても意味ないらしい.
sort_buffer = 1M

# インデックスを使わない際のクエリ速度向上
record_buffer  1M

# この秒数を超えるとslowクエリと認識される
long_query_time = 1

# join用バッファ
join_buffer = 131072

# クエリのキャッシュ量.
# 増やしすぎると更新が反映されない場合がある
# 32M-512Mくらいが良い.
query_cache = 32M

Reference

TechKnowledge - mysql を高速化したいときに読むメモ
http://tech.media-index.jp/2006/11/mysql_1.html

@IT - Linux Square - MySQLの高度な管理とチューニングテクニック(1/2)
http://www.atmarkit.co.jp/flinux/rensai/mysql11/mysql11a.html

All About - データベース - MySQLのチューニング
http://allabout.co.jp/internet/database/closeup/CU20040722A/

MySQL Performance Blog - What to tune in MySQL Server after installation
http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/

Webサイトを作成する際に参考になるサイト

Reference

Color Scheme Generator 2
http://wellstyled.com/tools/colorscheme2/index-en.html

Color Palette Generator
http://www.degraeve.com/color-palette/

Web 2.0 Colour Palette
http://www.modernlifeisrubbish.co.uk/article/web-2.0-colour-palette

CSS examples
http://www.pmob.co.uk/

LogoPond - Identity Inspiration
http://logopond.com/

via

ウノウラボ Unoh Labs: デザインセンスの無い人がwebサイトを作成する際に参考にしているサイト
http://labs.unoh.net/2006/11/web.html

JavaScriptist - javascript/ajax/サンプル/入門/リファレンス/ライブラリ

Reference

JavaScriptist - javascript/ajax/サンプル/入門/リファレンス/ライブラリ
http://javascriptist.net/

phpspot開発日誌 - 2006-11-27 - JavaScript入門&応用&リファレンス&ライブラリ紹介サイト「JavaScriptist」を公開
http://phpspot.org/blog/archives/2006/11/javascriptjavas.html

aptitude update で gpg エラー

Summary

Debian アーカイブ署名鍵が更新したため,
aptitude update でエラーが発生する.

Debian パッケージディレクトリ検索 (バイナリ) - debian-archive-keyring をインストールして,対応完了.

エラー内容

LANG=C

# aptitude update
...

Reading package lists... Done
W: There are no public key available for the following key IDs:
A70DAF536070D3A1
W: There are no public key available for the following key IDs:
A70DAF536070D3A1
W: There are no public key available for the following key IDs:
A70DAF536070D3A1
W: You may want to run apt-get update to correct these problems

日本語

# aptitude update
...

パッケージリストを読み込んでいます... 完了
W: 以下の鍵 ID に対して利用可能な公開鍵がありません:
A70DAF536070D3A1
W: 以下の鍵 ID に対して利用可能な公開鍵がありません:
A70DAF536070D3A1
W: 以下の鍵 ID に対して利用可能な公開鍵がありません:
A70DAF536070D3A1

Reference

そこをなんとか (仮題) - 2006-11-21
http://d.hatena.ne.jp/takunama/20061121

KeN's GNU/Linux Diary | Debianアーカイブ署名鍵が更新
http://kmuto.jp/d/index.cgi/debian/apt-key-20061120.htm

KeN's GNU/Linux Diary | secure apt
http://kmuto.jp/d/index.cgi/debian/apt-secure.htm

Debian パッケージディレクトリ検索 (バイナリ) - debian-archive-keyring

Infinite Mario Bros! - 無限にステージが生成されるマリオ

Summary

無限にステージが生成されるスーパーマリオブラザーズのクローンゲーム.
Java製.

A Bボタン (ダッシュ,こうらを持ち上げる,ファイアボール)
S Aボタン (ジャンプ)
F1 画面拡大

Reference

Infinite Mario Bros!
http://www.mojang.com/notch/mario/

Notch!
http://www.mojang.com/notch/

via

GIGAZINE - 2006-11-26 - 無限にステージが生成されるマリオっぽいゲーム「Infinite Mario Bros」
http://gigazine.net/index.php?/news/comments/20061126_infinite_mario/

gaia - Google Earthをリバースエンジニアリング

Summary

Googleからの要請で,ダウンロード中止.

Reference

gaia - opensource 3D interface to the planet
http://gaia.serezhkin.com/

Reference [2006-12-04]追記

Slashdot Japan - Google APIのお勉強はいかが?
http://slashdot.jp/developers/comments.pl?sid=342591&cid=1068709

via

MOONGIFT - gaia - オープンソースのGoogle Earth
http://oss.moongift.jp/intro/i-2879.html

MOONGIFT - gaia レビュー
http://oss.moongift.jp/review/i-2887.html

CSS Tab Designer - CSSによるタブメニューを生成するソフトウェア

Summary

CSSによるタブメニューを生成するソフトウェア.
予めテンプレートが登録されているため,簡単にメニューが生成可能 .

Reference

OverZone Software - CSS Tab Designer
http://www.highdots.com/css-tab-designer/

via

MOONGIFT - CSS Tab Designer - CSSによるメニューを簡単に作成
http://fw.moongift.jp/intro/i-2867.html

MOONGIFT - CSS Tab Designer レビュー
http://fw.moongift.jp/review/i-2868.html

SimpleViewer - Flash製の画像ビューワー

Summary

Flash製のインタラクティブな画像ビューワー.

サムネイル生成や,XMLファイルの生成には,SimpleViewerAdminを用いると良い.
SimpleViewerAdminを動作させるにはGDライブラリが必要.

Reference

AIRTIGHT Interactive - SimpleViewer
http://www.airtightinteractive.com/simpleviewer/

.redSPLASH - Projects :: SimpleViewerAdmin
http://www.redsplash.de/projects/simplevieweradmin/

via

MOONGIFT - SimpleViewer - Flash製の画像ビューワー
http://fw.moongift.jp/intro/i-2888.html

MOONGIFT - SimpleViewer レビュー
http://fw.moongift.jp/review/i-2889.html

MOONGIFT - SimpleViewerAdmin - SimpleViewer用管理ソフトウェア
http://oss.moongift.jp/intro/i-2890.html

MOONGIFT - SimpleViewerAdmin レビュー
http://oss.moongift.jp/review/i-2891.html

Net::SSL::ExpireDate + Test::Base で証明書の期限切れをチェック

Summary

Net::SSL::ExpireDateTest::Baseを用いて,SSL証明書の期限切れをチェック.

#!/usr/bin/env perl
# -*- mode: cperl; -*-
use Test::Base;
use Net::SSL::ExpireDate;
use Regexp::Common qw(net);

my $Check_Duration;
# $Check_Duration = '15 years';

plan tests => 1 * blocks;

run {
    my $block = shift;
    my $ed = Net::SSL::ExpireDate->new( build_arg($block->name) );
    is($ed->is_expired($Check_Duration) && $ed->expire_date->iso8601,
        undef,
        $block->name);
};

sub build_arg {
    my ($v) = @_;
    if ($v =~ m{^(file)://(.+)}) {
        return $1 => $2;
    } elsif ($v =~ m{^(https)://([^/]+)}) {
        return $1 => $2;
    } elsif ($v =~ m{^$RE{net}{domain}{-nospace}{-keep}$}) {
        return 'https' => $1;
    } elsif (-r $v) {
        return 'file' => $v;
    } else {
        croak "$v: assume file. but cannot read.";
    }
}

__END__
=== rt.cpan.org
=== www.google.com


Reference

(ひ)メモ - Net::SSL::ExpireDate + Test::Base で証明書の期限切れをチェック
http://d.hatena.ne.jp/hirose31/20061121/1164042331

via

オレンジニュース - 2006-11-21
http://secure.ddo.jp/~kaku/tdiary/20061121.html#p10

ファミスタオンライン

Reference

ハンゲーム - ファミスタオンライン
http://fmst.hangame.co.jp/gt/

ハンゲーム - ファミスタオンライン
http://fmst.hangame.co.jp/st/

via

憩いの場 - 2006-11-21 - ファミスタオンライン
http://fun.poosan.net/sawa/index.php?UID=1164041441

読書記録ChangeLog - 2006-11-22 - ファミスタオンライン
http://dkiroku.com/2006-11-22-2.html

<object>を利用した,外部のHTMLファイルを読み込む方法

Summary

<iframe>を利用しないで,外部のHTMLファイルを読み込む方法.

For Internet Explorer

<object
    classid="clsid:25336920-03F9-11CF-8FD0-00AA00686F13"
    data="some.html">
	<p>backup content</p>
</object>


For Internet Explorer以外

<object
    type="text/html"
    data="some.html">
	<p>backup content</p>
</object>


読み込ませるページ

...
<body style="border:0;overflow:visible">
...


Reference

aplus moments - Insert HTML page into another HTML page
http://www.aplus.co.yu/web-dev/insert-html-page-into-another-html-page/

Reference 追記 [2006-11-27]

WWW WATCH - 2006-11-25 - IFRAME を使わない方法の補足
http://hyper-text.org/archives/2006/11/object_element.shtml

via

phpspot開発日誌 - 2006-11-24 - IFRAMEを使わずにHTMLファイルから他のHTMLファイルを読み込む方法
http://phpspot.org/blog/archives/2006/11/iframehtmlhtml.html

電話帳お預かりサービス - 携帯電話の電話帳バックアップサービス

Summary

携帯電話の電話帳のバックアップをサーバ側に置くことができる.
パケット通信料のみで利用可能.
保存容量は4MBまで.

携帯電話の機種変更時,携帯を水没させた,紛失した場合でも,
簡単に電話帳を移行できる.

Reference

My DoCoMo - お問い合わせ・サポート - My DoCoMoの使い方 - 電話帳お預かりサービス
http://www.mydocomo.com/web/howto/storage01.html

My DoCoMo - お問い合わせ・サポート - 電話帳お預かりサービスについて
http://www.mydocomo.com/web/faq/storage.html

J-COMのOutbound Port25 Blocking

Summary

J-COMのOP25B (Outbound Port25 Blocking)により,メールが送信できていなかった.
が,まだ送信できず….

postfix で submissionポートを開ける.

submission inet n      -       -       -       -       smtpd
	-o smtpd_sasl_auth_enable=yes
	-o smtpd_etrn_restrictions=reject

# /etc/init.d/postfix reload


Reference

zapanet.info - 突然メールが送信できなくなった時の話
http://zapanet.info/blog/item/851

J-COM - セキュリティ情報 - セキュリティ対策:OP25B (Outbound Port25 Blocking) 導入のお知らせ
http://www.home.ne.jp/cs/data/vs-200609-001.html

J-COM - お知らせ情報 - メール送信のみが突然出来なくなったお客様へのご案内
http://www.home.ne.jp/cs/data/in-200609-003.html

@NetHome セキュリティ - @NetHomeの迷惑メール対策
http://www.home.ne.jp/cs/virus/spam/spam_block.shtml#03

Kozupon.com - Postfixで実現するSubmission over SMTP-AUTH!
http://www.kozupon.com/mail/submission.html

ぴえ〜るの活動日記 - Postfixのsubmissionポート対応 (Debian編)
http://pierre.vg/x/modules/pukiwiki/?Postfix%A4%CEsubmission%A5%DD%A1%BC%A5%C8%C2%D0%B1%FE%A1%CADebian%CA%D4%A1%CB

Postfix + SMTP-AUTH2(SASL2)

Summary

Postfix で SMTP-AUTHを実現する方法.

SASL関連をインストール

# aptitude install sasl2-bin libsasl2 libsasl-modules


■SASLの設定

SASLのアカウント操作

  - アカウント作成

# saslpasswd2 -c -u myhostname username


  - アカウント削除

# saslpasswd2 -d -u myhostname username


  - アカウント確認

# sasldblistusers2


Postfix 側とのデータベース関連付け

ユーザ登録毎に以下作業が必要.

# chgrp postfix /etc/sasldb2
# chmod 640 /etc/sasldb2
# cp /etc/sasldb2 /var/spool/postfix/etc/

パスワードチェックメソッド (pwcheck_method) の指定

/usr/lib/sasl2/smtpd.conf

pwcheck_method: auxprop
mech_list: cram-md5

Plain loginのみ対応のMUAを使用する場合

/usr/lib/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login

(pwcheck_method に saslauthd を指定した場合,mech_list にはplain loginしか指定できない)

smtpd.confのコピー

# cp /usr/lib/sasl2/smtpd.conf /etc/postfix/sasl/


■Postfixの設定

/etc/postfix/main.cf

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,
  regexp:/etc/postfix/recipient_checks.reg,
  check_sender_access hash:/etc/postfix/bad_sender,
  reject_rbl_client relays.ordb.org,
  reject_rbl_client spamcop.net,
  reject_rbl_client dynablock.wirehub.net,
  reject_rbl_client opm.blitzed.org,
  reject_non_fqdn_recipient,
  permit_auth_destination,
  permit_sasl_authenticated,
  reject_unauth_destination

/etc/postfix/master.cf

smtp-amavis unix - - n - 2 smtp
    -o smtp_data_done_timeout=1200
    -o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
    -o smtpd_sasl_auth_enable=yes
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
    -o smtp_error_sleep_time=0
    -o smtp_soft_error_limit=1001
    -o smtp_hard_error_limit=1000

■動作確認

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 example.com ESMTP Postfix
EHLO localhost
250-example.com
250-PIPELINING
250-SIZE 51200000
250-ETRN
250-AUTH NTLM LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-AUTH=NTLM LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.

ログの確認

sasl_method=CRAM-MD5, sasl_username=xxxx

エラーログについて

openldap + sasl2 を導入していると,auth.logに以下のメッセージが記録されることがある.

Aug 17 14:54:37 ns postfix/smtpd[3819]: sql_select option missing
Aug 17 14:54:37 ns postfix/smtpd[3819]: auxpropfunc error no mechanism available
Aug 17 14:54:37 ns postfix/smtpd[3819]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: sql

■トラブルシューティング

/etc/sasldb2: Permission denied

以下のエラーが発生

Nov 24 03:58:22 myhostname postfix/smtpd[12200]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: Permission denied

/var/spoold/postfix/sasldb2 の権限が間違っている場合でも /etc/sasldb2 の Permission deniedが発生していた.

# cp /etc/sasldb2 /var/spool/postfix/sasldb2
# chgrp postfix /var/spool/postfix/sasldb2
# chmod 640 /var/spool/postfix/sasldb2

Reference

Kozupon.com - Postfix + SMTP-AUTH2(SASL2)のセットアップ!
http://www.kozupon.com/mail/sasl2.html

PearのServices_JSONを使ってPHPの変数を簡単にJSON形式にする

Summary

日本語を使う場合はUTF-8の変数を渡す必要がある.

require_once('Services/JSON.php');

$json = new Services_JSON();
$obj = array(
    'id'   => array(
       'foo',
       'bar',
       array('aa' => 'bb')
       ),
       'foobar' => $string,
       'a'   => 123 ,
       'b'   => true
);
$js = $json->encode($obj);
echo $js; 


Reference

phpspot開発日誌 - PearのServices_JSONを使ってPHPの変数を簡単にJSON形式にするサンプル
http://phpspot.org/blog/archives/2006/11/pearservices_js.html

PICTAPS - 描いた絵が踊るFlash

Summary

スプー
http://roxik.com/pictaps/?pid=32706

http://roxik.com/pictaps/?pid=32845

セフィロス
http://roxik.com/pictaps/?pid=32876

http://roxik.com/pictaps/?pid=34228

コナン
http://roxik.com/pictaps/?pid=34471

http://roxik.com/pictaps/?pid=39235

Reference

ROXIK - PICTAPS
http://roxik.com/pictaps/

via

絵を描いたらなんか動くの見つけたwwwwwwwwww
http://www.kajisoku.com/archives/eid656.html

AquaMaker - Aqua風のボタンを簡単に作成できるソフトウェア

Summary

Aqua風のボタンの作成に特化したソフトウェア.

Reference

TAKABO SOFT NETWORK - Windowsソフトウェア - ツール - AquaMaker
http://www.tkb-soft.hmcbest.com/program/win/index.htm#tool

via

MOONGIFT - AquaMaker - Aqua風のボタンを簡単に作成
http://fw.moongift.jp/intro/i-2838.html

MOONGIFT - AquaMaker レビュー
http://fw.moongift.jp/review/i-2839.html

PortableApps Suite - アプリケーションをポータブルに

Summary

以下,7種類のソフトをUSBメモリに入れて持ち運べる.
o ClamWin
o Firefox
o Gaim
o OpenOffice
o Sudoku (数独)
o Sunbird
o Thunderbird

Reference

PortableApps Suite
http://portableapps.com/suite

Reference [2006-11-30]追記

Going My Way: USBドライブから起動可能な Firefox Portable 2.0 、Thunderbird Portable 1.5.8 、OpenOffice.org Portable 2.0.4
http://kengo.preston-net.com/archives/002926.shtml

Going My Way: Portable OpenOffice.orgを日本語化する方法
http://kengo.preston-net.com/archives/002413.shtml

Going My Way: USBドライブで使うPortable Skypeの設定方法
http://kengo.preston-net.com/archives/002415.shtml

Going My Way: USBドライブから高機能な画像作成、処理が可能なPortable GIMP
http://kengo.preston-net.com/archives/002534.shtml

GIMP Portable | PortableApps.com - Portable software for USB drives
http://portableapps.com/apps/graphics_pictures/gimp_portable

via

MOONGIFT - Portable Apps Suite - ポータブルアプリケーションを一元管理
http://oss.moongift.jp/intro/i-2840.html

Rebirth RB-338 - 高性能テクノソフトウェア

Summary

RolandのベースシンセTB-303,リズムマシンTR-808,TR-909をシミュレートしたソフトウェア.
開発中止に伴い,最新バージョンを無償でダウンロード可能.
BitTorrentでのみダウンロードが可能.

Reference

Propellerhead Software
http://www.rebirthmuseum.com/home/main.htm

via

MOONGIFT - Rebirth RB-338 - 高性能テクノソフトウェア
http://fw.moongift.jp/intro/i-2852.html

MOONGIFT - Rebirth RB-338 レビュー
http://oss.moongift.jp/review/i-2853.html

Lingua::JA::Summarize::Extract を利用した日本語文章の要約

Summary

use strict;
use warnings;
use utf8;
use Lingua::JA::Summarize::Extract;

my $extracter = Lingua::JA::Summarize::Extract->new;
my $text = "日本語の文章を沢山書きます";
my $result = $extracter->extract($text);
my $summary = $result->as_string;

utf8::encode($summary);
print $summary; #サマリーが出てくる.


Reference

Lingua::JA::Summarize::Extract

YappoLogs - 2006-11-13 - Lingua::JA::Summarize::Extract - 日本語文章のサマリ抽出
http://blog.yappo.jp/yappo/archives/000473.html

無駄に長いテキストを要約する
http://stone.dialog.jp/archives/extract/index.cgi

Voice of Stone #1469 無駄に長い文章を要約するツール
http://stone.dialog.jp/voice/view/1469

IP-address.com - Googleマップで自分がどこからアクセスしているかが分かる

Reference

My IP address and location? Show my ip address and locate the ip!
http://www.ip-adress.com/

via

GIGAZINE - 2006-11-21 - Googleマップで自分がどこからアクセスしているかが分かる「IP-address.com」
http://gigazine.net/index.php?/news/comments/20061121_ip_address/

12のPHP最適化テクニック

Summary

 1. staticメソッドが使えるなら使おう.速度は4倍になる
 2. __get, __set, __autoload は使わない
 3. require_once は重い
 4. include, requireで読み込むファイルはフルパスにしよう
 5. スクリプト開始時のUNIXタイムを $_SERVER['REQUEST_TIME'] で取れる
 6. strncasecmp関数やstrpbrk関数を使えるケースはこれらを使い,正規表現は使わない
 7. preg_replaceはstr_replaceより速い,しかし,strtrはpreg_replaceより4倍速い
 8. 引数を,単体か配列かで自動判別するようなコードは出来るだけ避ける
 9. @ を使ったエラー制御はとても遅い.→ @fputs($fp, "?");
10. $row["id"] は $row[id] より7倍速い.
11. PHPのエラーメッセージは重い. (noticeとかwarningとか)
12. for ($x=0; $x < count($array); $x) のように,
    forの中でcountを使うと毎回countが呼ばれるので使わない.

Reference

12 PHP optimization tips
http://www.moskalyuk.com/blog/php-optimization-tips/1272

via

phpspot開発日誌 - 2006-11-21 - 12のPHP最適化テクニック
http://phpspot.org/blog/archives/2006/11/12php.html

phpMyEdit - データベースのメンテナンス画面を生成

Summary

phpMyEditSetup.phpにアクセスしウィザード形式で進んでいくと,
最終的に指定したテーブルの操作用ライブラリが出来上がる.

Reference

phpMyEdit: Instant MySQL Table Editor and PHP Code Generator
http://www.phpmyedit.org/

via

phpspot開発日誌 - 2005-11-07 - phpMyEdit: DB操作コード自動生成
http://phpspot.org/blog/archives/2005/11/phpmyedit_welco.html

MOONGIFT - phpMyEdit - データベースのメンテナンス画面を生成
http://oss.moongift.jp/intro/i-2816.html

MOONGIFT - phpMyEdit レビュー
http://oss.moongift.jp/review/i-2817.html

Red5 - Java製のオープンソースFlashサーバー

Summary

Javaで開発されたFlashサーバ.
ストリーミング,録画,Flash Remotingに対応.

Reference

Open Source Flash - red5
http://www.osflash.org/red5

via

MOONGIFT - Red5 - オープンソースFlashサーバー
http://oss.moongift.jp/intro/i-2819.html

MOONGIFT オープンソース - Red5 レビュー
http://oss.moongift.jp/review/i-2820.html

JavaScriptファイルを圧縮して読み込ませる

Summary

JavaScriptファイル自体を gzip で圧縮して読み込ませれば良い.
<script type="text/javascript" src="prototype.js.gz"></script>


圧縮されたJavaScriptがSafariで読み込めない問題

圧縮したJavaScriptファイルの拡張子を .jgz とし,
mod_rewriteで .jgz へのアクセスを .js にリダイレクト.

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR]
RewriteCond %{HTTP:Accept-Encoding} !gzip
RewriteRule (.*)\.jgz$ $1\.js [L]

AddType "text/javascript;charset=UTF-8" .jgz
AddEncoding gzip .jgz


Reference

亜細亜の蛾 - 2006-11-16 - prototype.jsを10KBにする方法
http://asiamoth.com/mt/archives/2006-11/16_2331.php

こぶたのラッパ : 世界の片隅で.jgzと言ってみる
http://smil.exblog.jp/4650470/

やってはいけない10のユーザインタフェース

Summary

 1. ID,ニックネームを考えさせてはいけない.半角英字開始限定は論外.
 2. パスワードに英数混在や5文字以上を強制すると問い合わせ激増,アクティブ会員率減.
 3. チェックボックスで項目選び,別のボタンで操作を決定するUIはわかりにくい.
 4. フォントサイズはブラウザ設定で可変できないとだめ.
 5. アイコンは理解されない 使う場合は添え書きを.
 6. ブラウザにてリンクを新しいウィンドゥで開くのはNG.
 7. 1つの画面に多数の機能を並べてはいけない.
 8. AJAXやFlashで可能になったからといってドラッグ&ドロップは使うな.
 9. ダブルクリックされるとまずいボタンはダブルクリック禁止にせよ.
10. 「かんたんモード」を設定しても使わない.

Reference

キャズムを超えろ! - 団塊〜シニア層向けのWeb設計 やっちゃいけない10のUI
http://d.hatena.ne.jp/wa-ren/20061117/p1

GeoIP

Summary

# aptitude install geoip-bin
# cp /etc/GeoIP.conf.default /etc/GeoIP.conf


/etc/GeoIP.conf を編集

# Enter your license key here
LicenseKey YOUR_LICENSE_KEY_HERE

# Enter your User ID here
UserId YOUR_USER_ID_HERE

# Enter the Product ID(s) of the database(s) you would like to update
# By default 106 (MaxMind GeoIP Country) is listed below
ProductIds 106

% geoiplookup example.com
GeoIP Country Edition: US, United States

Reference

Bubble://ちずろぐ/
http://bubble.air-nifty.com/mapper/

Bubble://ちずろぐ/: GeoIP
http://bubble.air-nifty.com/mapper/geoip/

Debian パッケージディレクトリ検索 (バイナリ) - geoip-bin
Debian パッケージディレクトリ検索 (バイナリ) - libgeoip-dev
Debian パッケージディレクトリ検索 (バイナリ) - libgeoip1

CSS の line-height の値は単位なしが良い

Summary

line-height の値に単位をつけて 1em とした場合
p {
	font-size: 16px;
	line-height: 1em;
}
p em {
	font-size: 24px;
}


line-height の値に単位をつけずに 1 とした場合
p {
	font-size: 16px;
	line-height: 1;
}
p em {
	font-size: 24px;
}


line-height の継承に差が発生する.

line-height の値に単位をつけて 1em とした場合
p {
	font-size: 16px;
	line-height: 1em = 16px;
}
p em {
	font-size: 24px;
	line-height: 16px;
}


line-height の値に単位をつけずに 1 とした場合
p {
	font-size: 16px;
	line-height: 1 = 16px;
}
p em {
	font-size: 24px;
	line-height: 24px;
}


Reference

Lucky bag::blog: line-height の値には単位なしが良いとされる理由
http://www.lucky-bag.com/archives/2006/04/unitless-line-heights.html

Lucky bag::blog: line-height の値には単位なしが良いとされる理由サンプル
http://www.lucky-bag.com/appendix/line-heights-sample.html

via

日本の総理大臣の演説をタグクラウド化: blog.bulknews.net
http://blog.bulknews.net/mt/archives/002078.html

日本の総理大臣の演説をタグクラウド化

Summary

1. HTML::TreeBuilder で as_text
2. Text::MeCab で形態素解析
3. 名詞の頻度データを YAML に変換
4. HTML::TagCloud でタグクラウド化

Reference

Japanese Prime Minister Speeches Tag Cloud - 日本の首相演説のタグクラウド
http://blog.bulknews.net/PMTagCloud/

日本の総理大臣の演説をタグクラウド化: blog.bulknews.net
http://blog.bulknews.net/mt/archives/002078.html

HTML::TreeBuilder
Text::MeCab
YAML
HTML::TagCloud

Yahoo! Slurp が robot.txt でワイルドカードをサポート

Summary

Yahoo! Slurp (Yahooのクローラ) がrobot.txt 内のワイルドカードなどを解釈するようになった.

Session ID が付いている場合はクロールさせない.

User-Agent: Yahoo! Slurp
Disallow: /*?sessionid
Allow: /*?$

gif画像をクロールさせない.

User-Agent: Yahoo! Slurp
Disallow: /*.gif$
Allow: /*?$

Reference

Yahoo! Search blog: Yahoo! Search Crawler (Yahoo! Slurp) - Supporting wildcards in robots.txt
http://www.ysearchblog.com/archives/000372.html

SEM R - Yahoo! Search、robots.txtでワイルドカード対応
http://www.sem-r.com/15/20061104113835.html

[を] Yahoo! Slurpがワイルドカードをサポート
http://chalow.net/2006-11-13-3.html

Google Code Search の OpenSearchファイル

Summary

サンプルコードを探すのに便利.

<OpenSearchDescription>
	<ShortName>Google Code Search</ShortName>
	<Description>Google Code Search</Description>
	<InputEncoding>utf-8</InputEncoding>
	<Image width="16" height="16">http://www.google.com/favicon.ico</Image>
	<Url type="text/html" method="GET" template="http://www.google.com/codesearch?q={searchTerms}"/>
</OpenSearchDescription>

Reference

最速インターフェース研究会 :: Google Code SearchのOpenSearchファイル
http://la.ma.la/blog/diary_200611171328.htm

Windowsに付属しているゲーム "3D Pinball Space Cadet" の裏技

Summary

発射台にボールがあるときに"hidden test"と入力することで,debugモードに入る.

デバッグモードで以下の操作が可能.
h ハイスコアの表示,操作
m システムメモリの表示
r 昇格
y フレームレートを表示

全画面時に以下の操作が可能.
bmax ボール無制限
1max エキストラボール獲得
gmax 重力トラップをオン
rmax 昇格

Reference

Windows 3D Pinball Hidden Trick! Video
http://www.metacafe.com/watch/297793/windows_3d_pinball_hidden_trick/

解析3Dピンボール - Space Cadet
http://www.kazamit.com/3dp/

3D Pinball High Score Editor (ハイスコアの編集)
http://www.blumentals.net/pinball/

長時間プレイするコツ
http://www.geocities.co.jp/Playtown-Domino/6439/pinpball/3dpin2.htm

via

Windows付属ピンボールのボールをマウスで動かす裏コマンド - GIGAZINE
http://gigazine.net/index.php?/news/comments/20061117_pinball/

Sitemaps - サイト情報の提供

Summary

Google Sitemapsが発端となったプロジェクト.
Google, Yahoo!, Microsoftがサポートする.

ライセンスは,
Attribution-ShareAlike Creative Commons License
(Creative Commons 帰属 - 同一条件許諾)

Reference

sitemaps.org
http://www.sitemaps.org/

Yahoo! Site Explorer
http://siteexplorer.search.yahoo.com/

via

MYCOMジャーナル - 2006-06-06 - 米Google、壮大なボランティアプロジェクト「
Google Sitemaps」を開始
http://journal.mycom.co.jp/news/2005/06/06/100.html

MYCOMジャーナル - 2006-11-16 - Googleなど3社、Sitemapsをサポート
http://journal.mycom.co.jp/news/2006/11/16/340.html)

エレベーターの裏技

押した階数ボタンをキャンセル

三菱 キャンセルしたい[階数ボタン]をダブルクリック
キャンセルしたい[階数ボタン]を押し続ける
フジテック キャンセルしたい[階数ボタン]を5連打
OTIS キャンセルしたい[階数ボタン]をダブルクリック
扉が開いているときに[開ボタン]を押したままキャンセルしたい[階数ボタン]をダブルクリック
松下 キャンセルしたい[階数ボタン]をダブルクリック
東芝 キャンセルしたい[階数ボタン]をダブルクリック
キャンセルしたい[階数ボタン]を押し続ける(3〜5秒)
日立 キャンセルしたい[階数ボタン]を押し続ける
不明 [階数ボタン]すべてを押す
最上階層から順に素早くすべての[階数ボタン]を押す

停止不可の階に停止

フジテック [開ボタン] + [閉ボタン] + 目的の[階数ボタン]

方向のキャンセル

日立 乗り込んだ[階数ボタン]をダブルクリック(他階から呼び出しが無い場合、キャンセル有効)

Reference

エレベータ停止階キャンセル方法 - Quality of Life...!
http://takalog.podzone.net/psite/blog/137

らっぱ王子:エレベーターの裏技
http://denzo.sakura.ne.jp/archives/2005/0609_000000.htm

らっぱ王子:エレベーターのボタンキャンセル実証
http://denzo.sakura.ne.jp/archives/2005/0623_000000.htm

bLag Life | エレベーター停止階キャンセルの噂がやっとスッキリ?
http://blog.metch.jp/?eid=177108

VSTHost - VSTインストゥルメントに複数のVSTエフェクトを接続して演奏

Summary

VSTプラグインを利用してMIDI鍵盤などで演奏できるソフトウェア

Reference

Hermann Seib's Homepage
http://www.hermannseib.com/english/

via

窓の杜 - VSTインストゥルメントに複数のVSTエフェクトを接続して演奏できる「VSTHost」
http://www.forest.impress.co.jp/article/2006/11/08/vsthost.html