2008年01月11日
PHPのソースコードを貼り付けるために

PHPのこのソースコードを貼り付けるために、よく他のブログとかでやっているような方法を行おうと調べてみて、ちょっと古いエントリだけれども、
を参考にスタイルシートを変更してみた。
pre.code{
display:block;
background : #EEE;
color : #444;
font-size : 1em;
margin : 1em;
padding : 0.5em;
border : 1px solid #CCC;
width : 90%;
overflow : scroll;
}
こんな感じ。
実態参照に変換するために
MovableType用EntityRefButtonプラグイン v0.0.5
も入れました。
エントリーを書くのがかったるくて、覚書みたいなものをあちらこちらに散乱させていたけれど、これでちゃんと書きたいものが書けるようになるかな。あとでソースコードに色も付けちゃおう。
投稿者 田中@グリニッジ : 20:16 | コメント (0) | トラックバック
2007年04月03日
フォーム認証のデザインパターン

自社のASPサービスの認証部分を見直すついでに、あらためてフォームでのログイン認証をいろいろ調べておりました。
定期購読している WEB+DB PRESS Vol.34 のWebアプリ認証に関する特集が一番良くまとまっていたかな。
上記の特集や、あとは、いろいろなサイトにおける実装を見て回りましたが、現在以下の形での実装が一般的なデザインパターンとして採用されているようです。
・当然ながらHTTPS通信は必須
・パスワードは平文では保存しない
・パスワードを忘れた場合は、パスワードを直接メールで送信するのではなく、メールでパスワード再設定用のURLを送信
・送られてきたURLをクリックし、開いた画面にてパスワードを再設定
母親の旧姓など、あらかじめ設定しておいた質問に答えることで、パスワードを再設定出来るようにするといったパターンを採用しているサイトも見受けられました。これは、以前登録したメールアドレスを現在は使っていないなどの場合でも再設定できる反面、本人以外でも再設定できる可能性が残る点があまりよくない。
パスワード再設定用のURLを送信後、パスワードを再設定するまでの時間的なリミット(60分以内や一週間以内など)や、回数のリミット(同じURL経由では1回しか再設定できないなど)を設けている場合が多い。また、セッションを使って、違うブラウザからの再設定を禁じている例も多く見受けられた。
あとは、セッションID関連のセキュリティ(固定化や漏洩など)には注意すべし。
上記の調査を元に認証部分を作り直してみました。
#osCommerceはここら辺の実装が微妙なとこありますね。
次は、シングルサインオンをどう実装しようかと思案しています。
Ohgakiさんのブログでシングルサインオンの模範解答がはやく公開されないかなーと待っていたりします。
投稿者 田中@グリニッジ : 18:35 | コメント (0) | トラックバック
2006年11月14日
ContOS4.3にPlaggerをインストール その3

PlaggerをCPANからインストールすると、最新版が追いかけにくくなりそうなので、subversionから適宜チェックアウトし、インストールすることに方針変更。
svn checkout http://svn.bulknews.net/repos/plagger/trunk/plagger
cd Plagger
perl Makefile.PL
make
make test
make install
でインストール可能。
投稿者 田中@グリニッジ : 18:56 | コメント (0) | トラックバック
2006年11月13日
CentOS4.3にPlaggerをインストール その2

そんでもって、CPANからPlaggerをインストールすると、テンプレートやその他パターンファイルなどの入った assets ディレクトリがインストールされないという、assets問題というのがあるそう。
SoftwareDesign誌にsubversionをインストールして、最新のPlaggerのソースコードをチェックアウトするように書いてあったけど、何の意味があるのかと思えば、このような理由でした。
で、インストール完了。
空のconfig.yamlを作成し、plaggerコマンドを実行してみたところ、とりあえず動作しているよう。
つづいて、hello world!を表示
global:
plugin_path:
- /usr/lib/perl5/site_perl/5.8.5/Plagger/Plugin
assets_path: /usr/lib/perl5/plagger/assets
timezome: Asia/Tokyo
log:
level: info
plugins:
- module: Subscription::Config
config:
feed:
- http://blog.tanaka-cs.com/index.rdf
- module: Publish::Pipe
config:
command: echo "hello world!"
みたいな形で、config.yamlを作成して、
plagger -c config.yaml
を実行し見てると、こちらも問題なさそう。
では、いよいよ開発に取り掛かりますか。
投稿者 田中@グリニッジ : 23:37 | コメント (0) | トラックバック
2006年11月11日
CentOS4.3にPlaggerをインストール

SoftwareDesign誌の10月号にPlaggerの特別企画があったので、そちらを参考にしながらのインストール
Bundle::CPANをインストール
ミラーサイトをftp://ftp.kddilabs.jp/CPAN/に指定してインストール
cpan> o conf urllist push ftp://ftp.kddilabs.jp/CPAN/
cpan> install Bundle::CPAN
cpan> quit
モジュールのインストール
CPANモジュール
cpan -fi Config::Simple
cpan -fi YAML < /dev/null
cpan -fi Module::Build
cpan -fi ExtUtils::CBuilder
cpan -fi ExtUtils::ParseXS
cpan -fi Test::More
cpan -fi Test::Pod < /dev/null
cpan -fi Test::Pod::Coverage < /dev/null
cpan -fi Exporter::Lite
openssl-develパッケージがインストールされているか確認
されていない場合は、
yum install openssl-devel
SSL関連モジュール
cpan -fi Net::SSleay
cpan -fi IO::Socket::SSL
cpan -fi Crypt::SSLeay < /dev/null
expat-develパッケージがインストールされているか確認
されていない場合は、
yum install expat-devel
XML関連モジュール
cpan -fi XML::Parser
cpan -fi XML::Simple
cpan -fi XML::LibXML < /dev/null
cpan -fi XML::SimpleObject
cpan -fi XML::XPathEngine
cpan -fi XML::Liberal < /dev/null
cpan -fi XML::FOAF < /dev/null
cpan -fi XMLRPC::Lite < /dev/null
HTML関連モジュール
cpan -fi HTML::TreeBuilder < /dev/null
cpan -fi HTML::Scrubber
cpan -fi HTML::ResolveLink
Plagger のTEST
cpan> test Plagger
18個くらい必須モジュールが足りなかった模様
Auto-installを[y]で足りないモジュールをインストール
(で、インストール継続中)
投稿者 田中@グリニッジ : 18:39 | コメント (0) | トラックバック
2006年11月07日
CentOS4.3にSennaのインストール

#巷では、CentOS4.4もよく目にするけど。そのうちアップデートしよ。
1) MeCabのインストール
http://mecab.sourceforge.jp/#download
より、mecab-0.93.tar.gz をダウンロード(wget)
./configure --prefix=/usr --enable-utf8-only
make
su
make install
2) MeCabの辞書のインストール
http://mecab.sourceforge.jp/#download
より、mecab-ipadic-2.7.0-20060707.tar.gz をダウンロード(wget)
./configure --prefix=/usr --with-charset=utf8
make
su
make install
3) sennaのインストール ※センナではなくセナ
http://sourceforge.jp/projects/senna/files/
より、senna-0.8.2.tar.gz をダウンロード(wget)
./configure --prefix=/usr
make
su
make install
4) MySQLのインストール
MySQL用のユーザーとグループを作成
/usr/sbin/groupadd -g 27 mysql
/usr/sbin/useradd -g mysql -u 27 -d /var/lib/mysql mysql
UTF8を扱うため、MySQL4.1を選択
http://dev.mysql.com/downloads/
より、mysql-4.1.21.tar.gz (Source) をダウンロード(wget)
tar で展開したディレクトリに入り、パッチを適用
patch -p1 < ../senna-0.8.2/bindings/mysql/mysql-4.1.20.senna.diff
patch -p1 < ../senna-0.8.2/bindings/mysql/mysql-4.1.20.senna.2ind.diff
autotoolsを用いて、configureを再作成 ← sennaのサイトに書いてあるとおり
libtoolize -c -f
aclocal-1.9
autoheader
automake-1.9 -c -a -i
autoconf
sql/sql_yacc.yyをtouchする
touch sql/sql_yacc.yy
./configure --with-charset=utf8 --with-extra-charsets=ujis,sjis --with-named-curses-libs=/usr/lib/libncurses.so.5 --with-senna
make
su
make install
-----
追記:mysqlクライアントで日本語入力が出来なくなるのでオプション追加の必要があった。ついでにいくつか追加。
./configure --with-charset=utf8 --with-extra-charsets=complex --with-named-curses-libs=/usr/lib/libncurses.so.5 --enable-assembler --enable-thread-safe-client --with-readline --with-senna
※オプションについては、sennaのサイトで情報あり
-----
データベースの初期化
/usr/local/bin/mysql_install_db
データベースディレクトリのユーザーをmysqlに
chown -R mysql:mysql /usr/local/var
cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf ←ここは規模に応じて
cp /usr/local/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
/sbin/chkconfig --add mysqld
/sbin/chkconfig --level 345 mysqld on
service mysqld start
rootユーザーにパスワードを設定
/usr/local/bin/mysqladmin -u root password 'new-password'
/usr/local/bin/mysqladmin -u root -h example.com password 'new-password'
5) おまけ php5.2.0のインストール
http://www.php.net/downloads.php
より、php-5.2.0.tar.gzをダウンロード(wget)
./configure --with-apxs2=/usr/sbin/apxs --enable-mbstring --enable-mbregex --enable-zend-multibyte --with-zlib --with-mysql
make
su
make install
cp php.ini-dist /usr/local/lib/php.ini
で必要に応じて編集
/etc/httpd/conf/httpd.conf
AddTypeの記述がある部分に以下を追記
AddType application/x-httpd-php .php
投稿者 田中@グリニッジ : 17:31 | コメント (0) | トラックバック
2006年09月14日
subversionのチェックアウトとエクスポート

バージョン管理をCVSからsubversionに変えたばかりなので、まだ慣れない所も多いです。
知っている人には当たり前なのだろうと思いますが、詰まったところ。
納品時などに、チェックアウトでファイルを書き出すと.svnディレクトリが各フォルダ内に保存されてしまいます。CVSであれば管理ディレクトリを作らずに書き出すことができるので、subversionもできるんだろうと思いながら、よくわかってなかったのですが、ちょっと検索してみたら、単純な話で、エクスポートを行えばできるようですね。
投稿者 田中@グリニッジ : 11:25 | コメント (0) | トラックバック
2005年09月08日
ノートンのインターネット・セキュリティー

最近、サイト構築をしている中で遭遇した問題。
とある構築中のサイトにて、掲載している画像が何故か表示されないという問題が起こりました。
私の利用するパソコンでは問題なく表示されていたのですが、クライアントさんのパソコンでは表示されず。すぐにその原因はノートンのインターネット・セキュリティーにあるということ、そして、広告ブロック機能をONにしていると、画像が表示されないということがすぐに判明したのですが。
もちろんインターネット・セキュリティーの機能を切ってしまえば画像は問題なく表示されるのですが、一般のユーザーもインターネット・セキュリティーをインストールしていることが多いだろうことを考えると、根本的な原因を探る必要があり、いろいろ調べたのですが。。。
これがなかなか難航しました。ネットで幾ら調べても、なかなか答えが見つからず。
画像のファイル名が悪いのか、あるいは、gifとjpgとで違いがあるのかなどなど、いろいろな可能性を試しても、埒が明かず。
そんな中、横88ピクセル×縦31ピクセルの画像は強制的に広告とみなされ、広告ブロックの対象となってしまうとの内容の記述をネットで見つけました。
今回、画像が表示されなかったのは、横88×縦31ではなく、横120×縦90ピクセルの画像だったのですが、同様の原因の可能性もあるのかと思い、少々画像の縦横サイズを変更しましたところ、無事画像が表示されました。横120×縦90のサイズの画像も広告としてよく使われているということでしょうか。
うーん、インターネット・セキュリティーもなかなか強引なソフトだなぁと思った次第でした。
普段使っていないソフトなだけに、クライアントさんから指摘されなければ、画像が表示されていないということに気がつかないところでした。
投稿者 田中@グリニッジ : 00:26 | コメント (2) | トラックバック
2005年07月09日
AWStats インストールメモ(2)

では、昨日に引き続き、AWStatsのインストール手順を以下に記しておく。
インストール方法は、インターネット上でもいくつかの情報が見つかるが、バージョンの6.0以降はインストーラーが付属しているようなので、ドキュメントのインストール方法を参照して行う方法が一番簡単そう。
- /usr/local/awstats 内に wwwroot 以下を格納
- /usr/local/awstats 内に tools フォルダ内の awstats_configure.pl を格納
- シェルから # perl awstats_configure.pl を実行。
デフォルト設定で、/etc/awstats 内にconfファイルが作成される。 - 作成されたconfファイルを編集。 最低限、以下のパラメーターあたりは確認のうえ編集の必要あり。 LogFile LogType LogFormat SiteDomain
- シェルから # perl awstats.pl -config=myvirtualhostname -update を実行することで、デフォルト設定で、/var/lib/awstats 内に解析ファイルが格納される。
このままでは、検索語句などが文字化けしてしまうので、AWStats-6.0_Jpn に同梱されていた utf8_decode.pl でログの文字コードを変換する。使い方は、以下のような感じ。
# perl utf8_decode.pl < myvirtualhostname_access_log > myvirtualhostname_access_log_jp
あとは、/etc/logrotate.d の中のhttpdを編集し、ログをローテートするごとに、解析を行うようにしてみた。ログを毎日ローテートし、28日(4週間分)保存にしてみた場合の設定。太字あたりが変更点。
/var/log/httpd/*log {
daily
missingok
notifempty
sharedscripts
prerotate
perl /usr/local/awstats/wwwroot/cgi-bin/utf8_decode.pl
< /var/log/httpd/myvirtualhostname_access_log >
/var/log/httpd/myvirtualhostname_access_log_jp
perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=myvirtualhostname -update
endscript
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
rotate 28
}
投稿者 田中@グリニッジ : 21:31 | コメント (2) | トラックバック
AWStats インストールメモ

AWStats は オープンソースのアクセス解析ソフトで、ApacheならびにIISのログを解析し、統計情報を作成することが出来るツールです。
参考リンク
AWStats - Free log file analyzer for advanced statistics (GNU GPL).
AWStats Ver.6.0完全日本語版のページ
AWStats めも
CYBERAM Documents Project... AWStats 6.0
以下は、WebサーバーとしてApacheを利用した場合のインストールメモです。
Apache のログはcombined形式で出力されていることを前提とします。
上記の"AWStats めも"を参考にインストール作業を開始。
AWStats Ver.6.0完全日本語版のページから日本語対応の AWStats を取得。
AWStats official web site から AWStats-6.4 と AWStats-6.0 を取得。
まずは、AWStats-6.4 を解凍してみる。
解凍したディレクトリを覗いてみると、プログラムのほかに、ドキュメント類とツール類が含まれていることが分かる。
ツールの中にはwebminのモジュールも同梱されているので、普段サーバー管理ツールとしてwebminを多用している身としてはありがたい。
では、AWStats-6.4 をインストールする前に、AWStats-6.0 と AWStats-6.0_Jpn の差分を取って、日本語対応の AWStats を作成した際の変更点を確認してみることにする。
その情報を元に、AWStats-6.4_Jpn を作成することにしよう。
普段利用しているDiffツール、ExamDiff Pro で差分を取ってみると、AWStats-6.0 と AWStats-6.0_Jpn では以下の違いがあることが分かる。
それぞれの変更点を AWStats-6.4 に盛り込めば、AWStats-6.4_Jpn が完成することになるだろう。おそらく。
(というか、AWStats-6.0_Jpn には、オリジナル版もリネームの上同梱されていたので、あまり調べることもなかったことが判明したことはさておき)
Only in (first) \AWStats60_Jpn\AWStats60_Jpn -> awstats.cron
Only in (first) \AWStats60_Jpn\AWStats60_Jpn\tools -> httpd_conf
Only in (first) \AWStats60_Jpn\AWStats60_Jpn\wwwroot\cgi-bin -> utf8_decode.pl
Different files -> \AWStats60_Jpn\AWStats60_Jpn\wwwroot\cgi-bin\awstats.model.conf
Different files -> \AWStats60_Jpn\AWStats60_Jpn\wwwroot\cgi-bin\awstats.pl
Different files -> \AWStats60_Jpn\AWStats60_Jpn\wwwroot\cgi-bin\lang\awstats-jp.txt
Different files -> \AWStats60_Jpn\AWStats60_Jpn\wwwroot\cgi-bin\lang\awstats-tt-jp.txt
Different files -> \AWStats60_Jpn\AWStats60_Jpn\wwwroot\cgi-bin\lib\browsers.pm
Different files -> \AWStats60_Jpn\AWStats60_Jpn\wwwroot\cgi-bin\lib\domains.pm
Different files -> \AWStats60_Jpn\AWStats60_Jpn\wwwroot\cgi-bin\lib\mime.pm
Different files -> \AWStats60_Jpn\AWStats60_Jpn\wwwroot\cgi-bin\lib\robots.pm
Different files -> \AWStats60_Jpn\AWStats60_Jpn\wwwroot\cgi-bin\lib\search_engines.pm
ということで、ちまちま作業中。
awstats.model.conf を眺めていて、ものすごく機能が豊富なことに驚いてます。
urchinなんて、必要ないかも。
投稿者 田中@グリニッジ : 01:05 | コメント (2) | トラックバック
2004年09月28日
一時的にサイト全体にアクセスできないようにする

昨日書いた、動的ページを静的ページに見せかける、というのと同様の、mod_rewriteを使ったTIPSです。
.htaccessに以下のように書くと、.htaccessを置いたディレクトリ以下には、ブラウザからアクセスできなくなり、常に、temp.htmlというファイルの内容が表示されることになります。temp.htmlには、「メンテナンス中です」などと書いておけば良いでしょう。
RewriteEngine on
RewriteBase /
RewriteRule .* temp.html
サイトのファイルを丸ごと上げなおす、なんていうときには有効だと思います。
上記では、temp.htmlとなっていますが、この部分は適当に変更可能です。
Apacheサーバを使用していて、かつ、「mod_rewrite」の使用が許可されている環境でのみ有効な方法です。
投稿者 田中@グリニッジ : 20:29 | コメント (2) | トラックバック
動的ページを静的ページに見せかける

PHPなどを使ってサイトを作っていると、引数を渡してページを表示させるなんてことが当たり前になってしまいます。
EC協議会のサイトでは、NucleusというBLOGツールで生成したページを、あちらこちらに埋め込むことにしたのですが、検索エンジン対策からいうと、静的ページを用意しておいたほうがいいことは当然で。しかしながら、ページを動的に生成することのメリットは捨てられず。。。
そんな中、動的ページを静的ページに見せかける方法を知ったため記しておきます。
Apacheサーバを使用していて、かつ、「mod_rewrite」の使用が許可されている環境でのみ有効な方法です。
たとえば、http://www.example.com/test.php?itemid=5 などという形でアクセスするphpファイルがあったとします。
itemidには数値が入るとします。そうした場合に、.htaccessに以下のように記述
RewriteEngine On
RewriteRule ^test-([0-9]+).html+ test.php?itemid=$1
すると、http://www.example.com/test-5.html で http://www.example.com/test.php?itemid=5 の結果が表示されることになります。
Googleのクローラーがこのtest-5.htmlを見に来ても、phpで生成されたページだとは気づかずに、静的ページとしてリストしていくんですね~。
RewriteEngine on
は、mod_rewrite を有効化するために書く文言です。その次の行の、
RewriteRule ...
には、URLを変換する書式を書きます。ここの書き方次第で、動的ページを静的ページに見せかけることが出来るんですね。
「mod_rewrite」って、今までサイトを移転した際に、自動的にページを飛ばすぐらいの用途でしか使ったことがなかったので、こういう使い方もあるのかと、正直目からウロコでした。
投稿者 田中@グリニッジ : 01:38 | コメント (2) | トラックバック
2004年09月20日
Amazonのアソシエイトで、商品にダイレクトリンクする方法

Amazonのアソシエイトをやっている方は、Amazonの管理画面から個別商品のリンクを生成しようとすると、
http://www.amazon.co.jp/exec/obidos/ASIN/xxxxxxxxxx/xxxxxxx-22
みたいなURLになってしまうと思います。
このリンクのとび先は、「こんな商品もおすすめします」というページですが、商品ページそのものに飛ばしたい場合は、このURLの末尾に/ref=nosimを付け加えればOK。以下のような感じです。
http://www.amazon.co.jp/exec/obidos/ASIN/xxxxxxxxxx/xxxxxxx-22/ref=nosim
なお、ASIN/xxxxxxxxxx の部分は書籍のISBN番号を記入すれば、その本のページに飛びます。手元に書籍があるならば、裏表紙にISBN4-7741-0755-7みたいに書かれていることが多いと思うので、ここから、ISBNの文字と、ハイフンを取り除いたものをASIN/の後ろに埋め込んでください。
例:CGI&Perlポケットリファレンス(結構重宝しています)
http://www.amazon.co.jp/exec/obidos/ASIN/4774107557/greenwich-22/ref=nosim
投稿者 田中@グリニッジ : 15:17 | コメント (2) | トラックバック
2004年09月14日
コメントスパムの遮断

ブログの人気が出てくると、コメントスパムとかいうものの被害にあうらしい。
「Blog Hacks」の記述に従い、このコメントスパムの対策を行っておく。
人気が出るかどうかはわからないが、コメント受付をオープンにしているので、念のため。
「Blog Hacks」では、Movable Type2.6用の対策術が書かれているが、3.01D-jaでも、ほぼ同様に行うことが出来た。
1、mt-comments.cgiをリネームする。
mt-com.cgiとかに名前を変えてあげればいいでしょう。
2、mt.cfgの中の、334行目あたり(3.01D-jaの場合)を編集する。
# CommentScript mt-comments.pl
という行を探し、先頭にある「#」を削除する。
mt-comments.plの部分を、1で変更した名前に書き換える。
3、mt.cfgをサーバーにアップロード。
4、サイトを再構築
投稿者 田中@グリニッジ : 22:45 | コメント (1) | トラックバック
2004年07月20日
Linuxでのファイル内検索の方法

現在のディレクトリ以下で、
拡張子が.phpのファイルで、
そのファイル内にhogehogeが含まれる文章、
を検索する場合
find ./ -name \*.php -print | xargs grep hogehoge
http://x68000.startshop.co.jp/~68user/unix/pickup?find も参照
