2007年7月31日火曜日

ALPSLAB stampが象徴する、きたるべき"メタWeb"の世界

 メタWebとは何か。その問いの前に、Webとは何か。Webとは元々、テキストがハイパーリンクによって結び付けられ、ハイパーテキストとなったものである。それがまるで蜘蛛の網のように、かつ世界的規模で繋がったものがWWW、すなわちWebである。
 ではメタWebとは何か。それはWebの世界を構成するWebページに対してのメタ情報が有機的に結び付けらることによって生じる情報体のことである。メタ情報はもちろん、HTMLのMETAタグだけを指すのではない。メタ情報はWebサイトの制作者だけでなく、それを閲覧する側の人間(あるいはBot)によって外部からつけることも可能だ。また、ここでいう「有機的な結びつき」とは、必ずしも直接的なハイパーリンクの形を取る必要は無い。むしろ個々のメタ情報が別のサイトで何らかの軸を元に他の情報群とともに再定義されることで結びつきは強固となる。

 例えば、今日リリースされたALPSLAB stampである。これはWebページに対して外部から地図情報を付加することができるサービスだ。もしこれがある程度普及すれば面白い。メタ情報上での地図検索なども可能になるだろう。
 もちろん、メタWebはこれが初めてではない。有名なところでは、Webページに対して「ブックマーク」を行い、タグによる分類とコメント付けができる「はてなブックマーク」をはじめとするソーシャルブックマーク/ソーシャルニュースがある。また、Webページに対してランクを付けそれをツールバー上で確認可能にしたGoogle Page Rankや、ドメインに対しての順位を表示可能なAxelaなどもメタWebといえるだろう。面白いところでは、Webページ上でチャットを行うGabblyなんてのもある。
 これらに対してALPSLAB stampが新しいのは、地図というテキストでない情報を扱っていることである。地図は画像と位置情報からなる。これらはテキストだけでは表現しにくい情報を簡単に表すことができる。

 ALPSLAB stampが惜しいのは、Webページ上の地図に他のstampが表示されないことだろう。それが表示されれば、Webページ間の繋がりを地図という異なる側面から捉え直し再構成することができるのに。地図は、テキストとはまた違った方法によりお互いに結びつくことが可能なのだ。(あ、ここの和菓子屋の隣に相撲協会がある!とか。)

 それでは、これからメタWebの世界にはどのような情報が出てくるのだろうか。考えてみた。

  • メタWeb株価速報・・・企業のWebサイトに株価情報を載せる乗せる。
  • メタWeb予測市場・・・Webページの価値を予測市場により取引する。(誰が何のために?)
  • メタWebお薦め商品・・・Webページに関連した本などの商品を外部の人が勝手に紐付けてアフィリエイト。
  • メタWebまとめページ・・・Webサイトのまとめページを外部の人が勝手に作る。
  • メタWebLIVE中継・・・Webページに対してカメラによるLIVE中継を紐付ける。
  • メタWebスター・・・Webページに対して☆を付ける。
 これまでは「直リンクはマナー違反!」とか言っていれば良かったのが、これからは「勝手にメタ情報つけないで!うちの地図とかLIVE中継とか勝手に紐付けないで!」と狼狽する時代が、もうすぐそこまでやってきているのである。恐ろしい時代である。

2007年7月30日月曜日

INSERT&DELETEの代わりにREPLACE

 SQLでデータを登録する時、既に該当データがあればUPDATE、無ければINSERTしたいということがよくある。こういう場合の対応方法は2つある。

  • まずSELECTして存在するかどうか判断し、あればUPDATE、無ければINSERTする
  • まずDELETEし、それからINSERTする (該当データが無ければDELETEは空振りに終わる)
 後者の方が処理がすっきりして好きだが、仕様によっては前者でなければいけないこともある。(あまり無いけど。)

 で、MySQLならこのDELETE&INSERTを一発でできることを最近知った。

MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.4.7 REPLACE 構文

 ちょっと便利かも。UPDATE or INSERTだったらもっと良かったのに。さすが無茶するMySQLといったところか。mysql_affected_rows()で2を返す(DELETE1行+INSERT1行)というのがトリッキーな匂いがしていいね。

2007年7月29日日曜日

Apache Bench (AB) で負荷テスト

 Webアプリの負荷テストのためにABを使ってみた。気軽に使えて便利。JMeterとか使うと構えちゃうけど、ABならちょっと調べてみようかなくらいの気持ちで使える。
 Cookieも使えるので、SESSION変数を使うような処理でもOK。でもQueryStringのパラメータを連番にすることができずに、サーバ側で余分なロジックを仕込むことになった。これができればもっといいのに。

参考:@IT:Apacheパフォーマンス・チューニングのポイント(2/2)

2007年7月28日土曜日

楽天の検索エンジンってお茶目?

 「プティング」で検索したら、「スプリング」とか「プリンス」とか「プリンタ」とかの一覧ができてしまった。

【楽天市場】プティング の検索結果:通販・インターネットショッピング

「プティング?日本ではプリンって呼ぶのが普通だな。プティングよりもプリンの方がたくさんヒットするだろう。きっとプリンを探してるんだろうから検索結果にプリン関連のものも入れておいてあげよう!」 という感じでプティングに関係ないリストができあがったんだろう。(※)
※これは高い順で表示した場合で、安い順で表示すればプリンがたくさん表示されます。

 これがFASTの底力か?

2007年7月27日金曜日

Firefoxのステータスバーがいっぱいになっちゃった


ステータスバーに余裕が無いので、リンクにマウスカーソルを合わせてもリンク先URLがほとんど見えない...。

del.icio.usアドオンの同期が終わるまで我慢。

2007年7月25日水曜日

JavaScriptでカタカナ入力チェック

 JavaScriptによるカタカナかどうかの判定。正規表現で判定する。こんな感じ。"ー"(伸ばす音)はカタカナに含むとして。

function katakana(str) {
return str.match(/^[ァ-ヶー]*$/);
}
 "ァ"と"ヶ"は小さい文字で。文字コードについては紀州技研工業・文字コードの話/ユニコード表あたりを参考に。ユニコードへの変換なら文字列のユニコードエスケープも便利。(使えるのはFirefoxのみ。)

 文字コード周りが不安なら、ユニコードでチェックした方が無難かも。読み辛くなるけど。こんな感じかな?
function katakana(str) {
return str.match(/^[0x30A1-0x30f60x30fc]*$/);
}
 "ヴ"・"ヵ"・"ヶ"はカタカナじゃない!というならこんな感じで。
function katakana(str) {
return str.match(/^[ァ-ンー]*$/);
}
 "ヰ"・"ヱ"・"ヮ"あたりも除外しようと思ったらもう少し長くなる。
function katakana(str) {
return str.match(/^[ァ-ロワヲンー]*$/);
}
 ァ-ロワヲンー!と覚えよう(?)

2007年7月24日火曜日

携帯でGoogle Readerを使ってみた

 出先で手持ち無沙汰になったので携帯電話でGoogle Readerを見てみた。(こういうときに、3インチのディスプレイはありがたい。)
 GmailよりもJavaScriptfulなGoogle Readerだけに携帯で見るとどうなるかと思ったが、これがなかなか使いやすい。余分な画像など無くてシンプルで見やすく、記事には数字のアクセスキーが振ってありメニューは下側にまとまっている。ようするに"まともな"携帯電話対応サイトだ。

 強いて改善して欲しい点を挙げれば、1ページに記事が10個しか表示されないことと、最上部のGoogle Readerのトップページへのリンク画像が"Google"になっているのが分かりにくい("Google Reader"になっていた方が分かりやすい)ということか。
 また、携帯上でフィードを選んで登録するというのはあまり考えていないかもしれない。あくまでメインとしてPCがあり、それを携帯でも見られるというスタンスなのだろう。

 あと、これはGoogle Readerのせいではないんだけど、全文を配信していないフィードは見るのがちょっと面倒なので敬遠してしまった。購読してる中で全文を配信しているのはTechCrounch他数えるほどしか無い...。

 それから携帯でGoogle Readerを見る際のコツとしては、優先度の高いフィードをなるべく上の方に登録しておくこと。例えば"0"というフォルダを作り、その中に優先度の高いフィードを入れておくと良いだろう。携帯で見るときには上の方のフィードから順に表示される。

2007年7月23日月曜日

regsvr32でCOMを登録

 昔はMicrosoftが推し進めていたCOMも最近ではすっかり使わなくなった。と思ったら使う必要に迫られて困った。調べたら簡単にできた。

 regsvr32とは

 COM+はGUIで登録するだけだったような。COM+ももう日の目を見ないのかな。バックグラウンドでは動いているんだろうけど。Windows DNAとか懐かしいね。

 ところでWindowsならPHPでCOMを簡単に扱える。

 PHP: COM と .Net (Windows) - Manual

 PROGRAM IDさえわかればあとはPHPオブジェクトと同じように扱える。エラーがあるとcom_exceptionを投げるが、これはエラー内容がちょっと分かり辛い。COM経由ならPHPでEXCELを扱えたりして、これはどこかで役立つかも。

2007年7月22日日曜日

Apache2.2 on Windows 初期設定

これからも何度もやることになりそうだからメモしておく。Apache2.2 with SSL feat. PHP on Windowsの場合のhttpd-x.confの設定。

httpd.conf

  • Options FollowSymLinks (セキュリティのためIndexesを外す)
  • BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On (Digest認証でのIE6のバグへの対応 参照:HTTP クライアントを作ってみよう(6) - Digest 認証編
    • (2010/06/14 追記)Chromeも同様に!
  • 負荷が気になるなら使わないLoadModuleは全てコメントアウトする
(PHPのための設定)
  • LoadModule php5_module <PHPルート>/php5apache2_2.dll
  • PHPIniDir "<PHPルート>"
  • DirectoryIndex index.php index.html
  • AddType application/x-httpd-php .php
httpd-dafault.conf
  • Timeout 30 (適度な秒数で)
  • #AccessFileName .htaccess (使わないなら念のためにコメントアウト。使うなら使う場所でだけ有効にする)
  • ServerTokens Prod (デフォルトはFull。最小限のProdにする)
  • ServerSignature Off (これも見せない)
httpd-ssl.conf
  • #SSLMutex file:logs/ssl_mutex (Windowsでは使えない。コメントアウトしないとApacheが起動しない)
(2007/09/15 追記:Apacheチューニングメモ(Expires、deflate)も参考に!)

(2010/06/14 追記)
下記の設定も!
  • TraceEnable Off (セキュリティ向上)
  • FileETag MTime Size (YSlowでポイントが良くなる。ロードバランスしてなければ意味はないけど)

(2011/01/07 追記)
下記の設定も!!


関連記事:
PHP.iniでのセキュリティ対策
Windows+OpenSSLでサーバ証明書を作成
Apache2.2のDigest認証設定
winnt_acceptエラーとの戦い、そして敗北
Windows2003のIISでPHPを動かす

2007年7月21日土曜日

PostgreSQLで外部からのアクセスを受け付ける設定

 PostgreSQLでlocalhost以外からのクライアントからのアクセスを受け付ける設定。

  1. ファイルpostgresql.confのlisten_addressesを'*'にする
  2. 同じくファイルpostgresql.confのsslをonにする(※)
  3. ファイルpg_hba.confにアクセスを許すクライアントを追加する
  4. ディレクトリdataの中に、SSL用のKEYファイル(server.key)とサーバ証明書(server.crt)を放り込む(※)
    これらの作り方はApacheと同じなので Windows+OpenSSLでサーバ証明書を作成 参照。Apache用のサーバ証明書のファイル名が上記と同じならコピーしてそのまま使える。
 ※印が付いているのは通信をSSL化する場合のみ必要。ちなみにPgAdminⅢはSSL通信ができるのでSSL化しても不自由無くアクセスできる。

2007年7月19日木曜日

Ruby on Rails on Windows

 WindowsでRuby on Railsを動かしてみたメモ。

  1. Rubyをインストール
    RubyForgeからOne-Click Installerをダウンロードしてインストール。RubyGemsもインストールできてらくちんだ。
  2. Railsをインストール
    RubyGemsを使ってインストール。コマンドラインから下記コマンドを実行。
    gem install rails -y
  3. 基本操作を学ぶ
    Ruby on Rails入門を参考に基本的な操作を一通り。このサイトはシンプルで見やすく分かりやすい。DB絡みが無いのが残念。これから追加されるのかな?
    文法についてはrubylifeで。
 Railsの手軽さは、そのまま起動するだけで使えるWebサーバが同梱されていることだと感じた。参考サイトの多くではWebサーバはWEBrickになっているけど、上記の環境ではMongrelが使われていた。最近のバージョンではMongrelに変わったのかな?メモリを数十MB使うのが少し気になる。
 CoCベースのO/Rマッピングについては簡潔でいいと思うんだけど、SQLは自分で書いたほうが安心できると思ってしまうのは古い人間だからだろうか。

2007年7月18日水曜日

フォントサイズとマージンはYUIに任せてしまおう

 *{ margin : 0 }はもう古い!?なんて話を意識してしまってマージンとかどうしようと思い、初めてYUIのCSSを使ったらなかなか良かった。
 まずReset。これを使うと余分な余白がなくなる。最初に読み込むでいいのかな?
 それからFonts。これを使うとフォントサイズがほどよい大きさに。h1・h2あたりがほどよく大きめになってくれるともっと良かったのに。
 YUIがベストではないのかもしれないが、あれこれ迷いやすくそれに比べて効果が少ない事についてあっさりキッパリ決めてしまえるのはありがたい。

2007年7月17日火曜日

デスクトップの壁紙に夜が迫ってくる

 Windowsの壁紙をDesktop Earthにしてみたら、これがなかなか楽しい。
 インドはまだ夜かーとか、ハワイはもう夜か~とか、日本も夜になっちゃった...とか、インドも夜に突入か...早く帰らないと...とか。たまにデスクトップを見るたびに今までに無い時間感覚が味わえる。
 飽きるまで入れとこう。

2007年7月16日月曜日

PHPを使ってサーバサイドでXMLをPOST

 サーバサイドで、SOAPやXML-RPCを使わずに素のXMLをPOSTしたい場合、PEAR::HTTP_Client::post() でPOSTできる。
 HTTP_Clientは PEAR::HTTP_Request などのラッパーで、内部的にはpost()の第2引数(mixed $data)が配列かどうかによって下記のようにHTTP_Requestのfunctionを呼び分けている。

  • 第2引数が配列の場合 :
     配列の各要素をHTTP_Request::addPostData() する
  • 第2引数が配列以外の場合 :
     第2引数をそのまま HTTP_Request::addRawPostData() する
 なので、素のXMLをPOSTしたい場合はpost()の第2引数にXMLの文字列を渡せばOK。XMLをpostの1つのフィールドに入れて渡したい場合は第2引数にarray(フィールド名 => XMLの文字列)を渡せばよい。


 ちなみに上記の2番目の方法でPOSTされた場合、フィールド名を指定してデータを取り出すことができない。PHPでデータを取り出す場合は下記のようにすればPOSTされたデータを取り出すことができる。
$xmlString = file_get_contents("php://input");

2007年7月15日日曜日

PHPアプリをWindowsサービスとして動かす

 Windowsでの話。
 PHPで書いたプログラムを常駐プログラムとして動かしたい場合がある。Windowsのタスクに登録して1分毎に実行するという手もあるが、もっと短い間隔で実行したい場合もあるし、タスクが実行されるごとにコマンドラインの黒窓が表示されるのが鬱陶しい。そこで、Windowsのサービスに登録して動かすことにした。

  • Windowsサービスへの登録にはフリーウェア sexeが便利(作者さんありがとう!)。実行ファイルとしてphp.exe、パラメータとして実行するPHPファイルを指定する。
  • PHPアプリ内では永久ループ内でやりたい処理を実行しておく。ただし過負荷にならないように、ループの最後で sleep(1) などしておく。
  • 複数のPHPアプリをサービスとして動かす場合、PHPアプリごとにsexeを用意する。(コピーでOK)
 エラーとか起きるとちょっと怖いけど。実行前のパースでエラーが起きた場合はサービスが停止する。実行中のエラーはエラーログが延々と増えていく...。catchできるエラーはcatchしてしかるべき処置をしておく。catchできないのは...どうするべきなんだろ?

(2007/07/17追記)
 この方法でPHPを実行すると、1回読み込まれたPHPファイルはサービスを再起動するまで再度読み込まれることは無い。コードを変更してもサービスを再起動するまで反映されないので注意。(少しはまった...)

2007年7月14日土曜日

SimpleXMLではXPathも使える

 PHPでXMLからデータを取り出すときに直感的で便利なSimpleXML。このSimpleXMLはXPathも使えるらしい。

XPathの使用例
$xml = new SimpleXMLElement($xmlstr);

foreach ($xml->xpath('//character') as $character) {
 echo $character->name . 'played by ' . $character->actor;
}
from PHP: SimpleXML関数 - Manual (一部変えてある)
 これは強力だ。ただXPathがあまり普及していないので、メンバーによってはあえて使わないという選択肢になるかも。

 SimpleXMLの欠点は、データを取り出すときにいちいちキャストしなければいけないこと。これが少しめんどくさい。あとXMLを作成・変更する場合の直感的でない文法も改善の余地がある。PHP6では良くなってるのかなあ。

写真のEXIF情報(撮影日時・カメラ機種など)をプログラムで取得

 以前、苦労して画像ファイルのプロパティを取得する方法を見つけ出した。これにより、PHPなどから写真のEXIF情報が自由に取得できるようになった。しかし、PHPの標準関数を使えば同じことが簡単にできることを知った。

PHP: exif_read_data - Manual

 ちょっとショック...。

 PHPの標準関数って痒いところに手が届く反面、なかなか隅まで使いこなせない。ましてやPEARまでなんて。ましてやPHP Classesまでなんて...

2007年7月12日木曜日

Windows2003のIISでPHPを動かす

 Windows Server 2003のIISでPHPを動かすときの初期設定のメモ。PHPマニュアルに書いてあることを全部やる必要はないようだ。

  1. Webサービス拡張にPHPを追加する。
    IIS 6 (2003 Server) の場合は IIS マネージャを開き、「Web サービス拡張」に 移動し、「新しい Web サービス拡張を追加」を選択し、たとえば「PHP」などと 拡張名を入力し、「追加」ボタンを押して ISAPI ファイル (php4isapi.dll または php5isapi.dll) あるいは CGI (php.exe または php-cgi.exe) を選択し、「拡張の状態を許可済みに設定する」をチェックして「OK」ボタンを クリックします。
  2. 既定のWebサイトなどのプロパティで、マッピングを追加する。
    指定するexeはphp.exeで良さそう(?)
    「構成」ボタンをクリックし、「マッピング」タブを選択します。 「追加」をクリックし、実行可能ファイルに適切な CGI ファイルを指定します。 たとえば PHP 5 では C:\php\php-cgi.exe となります。 「拡張子」に .php を指定し、「動詞」は空白のまま、 「スクリプトエンジン」チェックボックスをチェックしてください。 そして、「OK」ボタンを何度かクリックしてください。
  3. ここまではIISの再起動は不要。
    また、既定のWebサイトのISAPIフィルタについて言及している説明が多いが、Windows Server 2003ではWebサービス拡張の設定をしているのでISAPIフィルタの設定は不要みたい。
  4. php.iniをC:/Windowsへ移動する。ここでIISの再起動が必要。php.iniを変更した場合もIISの再起動をするまで反映されない。
    また、C:/Windowsにphp.iniが無い場合、デフォルト設定(php.ini-recommendedかな?)の動きをするのが紛らわしい。その場合、phpinfo()での"Loaded Configuration File"が"(none)"になる。
  5. phpフォルダ等に対しての権限設定変更は不要みたい。
 意外とあっさり動くもんだ。

関連記事:
 PHP.iniでのセキュリティ対策
 Apache2.2 on Windows 初期設定
 PHPの日付操作はDateTimeが簡単
 PHPアプリをWindowsサービスとして動かす
 regsvr32でCOMを登録

2007年7月11日水曜日

MySQLのプレペアードステートメントはメモリレベルか?

 何かと便利なプレペアードステートメント。SQLにプレースホルダーとして"?"などを埋め込んで、実行時にベット渡したパラメータを代入(バインド)してくれるプレペアードステートメント。MS系ではパラメータ(ライズド)クエリーと呼ばれることが多いプレペアードステートメント。パフォーマンスの向上や実行時エラーの検出よりもSQLインジェクション対策として重宝する。
 しかし、プレースホルダーへのパラメータの代入がメモリレベルで行われていなければ、SQLインジェクションの根本的解決とはならない。有名な例では、PHPのPEAR::DBではプレペアードステートメントっぽく見えるけど実際にはDBに渡る前にパラメータがSQLの一部に埋め込まれてDBに渡されるので、場合によってはSQLインジェクションが可能だ。

 それでは、メモリレベルでのプレペアードステートメントが可能なDBってどれだろう?これについての情報がかなり少ないのだが、たまたまMySQL5.0ではメモリレベルでのプレペアードステートメントが行われるということを知った。

IPA ISEC セキュア・プログラミング講座:Webアプリケーション編 第6章 入力対策:SQL注入: #1 実装における対策

 逆に言えばMySQL4以前はメモリレベルでバインドされていないということ。使うとしたらちょっと嫌だなあ。

関連記事:
 MySQLのデフォルトのストレージエンジンがInnoDBになる
 MySQLでURLからドメイン部分を抜き出す方法
 MySQL Query Browser がとても便利
 PostgreSQLのUPDATEの実態と、MySQLを早くする方法

2007年7月10日火曜日

PHP.iniでのセキュリティ対策

 PHP.iniでできるセキュリティ対策のメモ。php.ini-recommendedをベースにするという前提で。

  • disable_functions = phpinfo
    とりあえずphpinfo()は禁止。開発環境なら許す。
  • expose_php = Off
    PHPを使っていることをhttpヘッダでクライアントに通知しない。これによりPHPの隠し機能(イースターエッグ!)も無効になる。
  • display_errors = Off
    エラーをWebページに表示しない。デフォルトはOffなので、そのままならOK。開発環境ではOnにする。
  • session.name = 独自の文字列
    セッションIDを独自の文字列にする。独自の文字列にしても丸見えなので効果は薄いが、やらないよりはいいだろう。
  • session.hash_function = 1
    セッションIDをSHA-1で生成する。最近、MD5は条件反射的に避けるようになってきた。

2007年7月6日金曜日

MySQLのデフォルトのストレージエンジンがInnoDBになる

 MySQLでストレージエンジンを指定しないと、デフォルトとしてストレージエンジンはMyISAMになる。どこのサイトを見てもそう書いてあるので疑いもしなかった。

 ところが、ストレージエンジンを指定しないでいたら、ストレージエンジンがInnoDBになっているのに気が付いた。なぜ?それはMySQLをWindowsのインストーラでインストールしたから。このインストーラでインストールすると、デフォルトストレージエンジンがInnoDBに設定されるらしい。(MySQL AB :: MySQL 5.1 リファレンスマニュアル :: 13.5.1 InnoDB 概要) デフォルトストレージエンジンがInnoDBに設定されているので、ストレージエンジンを指定しない場合にはデフォルトストレージエンジンであるInnoDBが採用されたという訳だった。

 5.0.40あたりからはInnoDBも早くなったらしいし、トランザクションもサポートしてるし、InnoDBをお薦めしてるって事かな?これでホットバックアップが無償で提供されれば文句無いのにねぇ?

関連記事:
 MySQLのプレペアードステートメントはメモリレベルか?
 MySQLでURLからドメイン部分を抜き出す方法
 MySQL Query Browser がとても便利
 PostgreSQLのUPDATEの実態と、MySQLを早くする方法

2007年7月4日水曜日

Windows+OpenSSLでサーバ証明書を作成

 Windowsで、Apache用のサーバ証明書をOpenSSLを使って作成する方法。作成条件は下記のとおり。環境に合わせて適宜読み替える。

  • カレントディレクトにopenssl.exeがある
  • ../confディレクトリにopenssl.cnfがある(※)
  • 秘密鍵は"server.key"というファイル名で、サーバ証明書は"server.crt"という名前で、両方ともカレントディレクトリに作る
  • 自己署名で済ます (正式なサーバ証明書の作成を業者に依頼する場合はCSRを作成する必要がある)
※openssl.cnfはWindowsのエクスプローラで表示すると、ファイル名が"openssl"、ファイル種類が"短縮ダイヤル"と表示されるのが分かりづらいので注意。
  1. 秘密鍵を作成する。-randで指定するのはhttpd.confでなくてもいいかも。
     openssl genrsa -des3 -rand ../conf/httpd.conf -out server.key 1024
  2. 起動時にパスワード要求をしないようにする。Windowsだけで必要な作業らしい。
     openssl rsa -in server.key -out server.key
  3. サーバ証明書を作成する。有効期間は1年にしたが、10年でも大丈夫だった。
    入力項目はだいたい聞かれるままに答えればいいが、Common Nameにはドメインを入力するとこだけ注意。
     openssl req -config ../conf/openssl.cnf -new -x509 -days 365 -key server.key -out server.crt
 3で-configを指定しないと、デフォルトの場所(c:/usr/share/conf/openssl.cnfかな?)にopenssl.cnfを探しに行ってしまい、そこに無いとエラーになる。

 サーバ証明書を作る前にCSRを作成すると説明しているサイトが多いが、自己署名の場合はCSRを作成せずにいきなりサーバ証明書が作れるみたい。

2007年7月1日日曜日

AmebaがAmebaBotを送り込んできた

 ログに「AmebaBot/1.0 (http://buzz.ameba.jp/)」という珍しいUser-Agentがあった。このURLはアメーバ 口コミ・クチコミ評判検索 β版。でもこの口コミ評判検索って、Ameba Blog内からキーワードを探すんじゃないの?何でブログと関係ないサイトまで出掛けてきてんだろう。

 まさかこうやってログに残ってるUser-Agentからサイトを訪れる人を増やすためにボットを動員してるんじゃ...ないね。

ブログ アーカイブ

tags