<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>ueblog &#187; Apache</title>
	<atom:link href="http://ueblog.natural-wave.com/tag/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://ueblog.natural-wave.com</link>
	<description>Web関連のネタを中心に役立つ情報を配信しています。</description>
	<lastBuildDate>Wed, 11 Jan 2012 00:51:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ueblog.natural-wave.com/tag/apache/feed/" />
		<item>
		<title>ライブドアのレコメンデーションエンジン「Cicindela」を試す</title>
		<link>http://ueblog.natural-wave.com/2009/01/25/livedoor-cicindela/</link>
		<comments>http://ueblog.natural-wave.com/2009/01/25/livedoor-cicindela/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 13:42:06 +0000</pubDate>
		<dc:creator>ueblog</dc:creator>
				<category><![CDATA[Programing]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Livedoor]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://ueblog.natural-wave.com/?p=325</guid>
		<description><![CDATA[livedoorのラボ「EDGE」からリリースされたレコメンデーションエンジン「Cicindela」を試してみた。 Cicindelaは何を提供するか Cicindelaが提供するものは主に下記のものだ。 WebAPIとなるWebプログラム（Handlers） データ解析プログラム（Recommender） データを加工するフィルタ（Filters） 制御、設]]></description>
			<content:encoded><![CDATA[<p>livedoorのラボ「<a href="http://labs.edge.jp/" target="_blank">EDGE</a>」からリリースされたレコメンデーションエンジン「<strong><a href="http://labs.edge.jp/cicindela/" target="_blank">Cicindela</a></strong>」を試してみた。</p>
<h3 class="PostLine">Cicindelaは何を提供するか</h3>
<p><strong><a href="http://labs.edge.jp/cicindela/" target="_blank">Cicindela</a></strong>が提供するものは主に下記のものだ。</p>
<ol>
<li>WebAPIとなるWebプログラム（Handlers）</li>
<li>データ解析プログラム（Recommender）</li>
<li>データを加工するフィルタ（Filters）</li>
<li>制御、設定部分（Config）</li>
<li>その他データ作成用の補助スクリプト等</li>
</ol>
<p>これらすべてが、perlのプログラムで作成されていて、Apache+mod_perl+mysqlな環境で動作する。</p>
<p>内部構造は柔軟な構造になっているらしく、自作のフィルタ（Filter）やレコメンダー（Recommender）を設定（Config）で自由に組み合わせて利用できるようだ。</p>
<p>機能的には、「データの蓄積」「データの操作」「データの取得」の3種類で、すべてWebAPI経由で操作可能だ。</p>
<p><a href="http://code.google.com/p/cicindela2/wiki/WebAPI" target="_blank">WebAPI &#8211; cicindela2 &#8211; web API 経由でデータを入出力するには / how to input or output data via web API &#8211; Google Code</a></p>
<p>アイテムを選択した情報だけでなく、アイテムの評価情報や、タグ情報を付加したり、カテゴリによるフィルタリングも可能なようだ。</p>
<h3 class="PostLine">インストールとセッティング</h3>
<p>さてさっそくインストールだが、基本的に</p>
<p><a href="http://code.google.com/p/cicindela2/wiki/Install" target="_blank">Install &#8211; cicindela2 &#8211; セットアップ方法 / How to setup &#8211; Google Code<br />
</a></p>
<p>こちらに従えばそれほど難しくないが、簡単にメモがてら記しておく。</p>
<blockquote><p># チェックアウト<br />
cd /usr/local<br />
svn checkout http://cicindela2.googlecode.com/svn/trunk/ cicindela<br />
# perlモジュールインストール<br />
perl -MCPAN -e &#8220;install DBI; install DBD::mysql; install Ima::DBI; install Time::Piece; install Log::Log4perl; install Module::Pluggable; install Class::Singleton;&#8221;</p></blockquote>
<p>Apacheの設定ファイル「<strong>$CICINDELA_HOME/etc/httpd/modperl.conf</strong>」を参考にhttpd.confなどを設定。</p>
<p>mysqlの設定ファイルmy.cnfはDemoをやる際に、メモリが足りなくなる可能性があるので、「<strong>$CICINDELA_HOME/etc/mysql/my.cnf</strong>」を参考に設定しよう。</p>
<p>Apache＋mod_perl＋mysqlのインストールは割愛。</p>
<p>daemontoolsでデータの再集計などをやってくれるようだが、今回は割愛。</p>
<p>デモはこちらを参考</p>
<p><a href="http://code.google.com/p/cicindela2/wiki/Demos" target="_blank">Demos &#8211; cicindela2 &#8211; デモ用データセットを用いたクイックスタート / quick start with demo datasets &#8211; Google Code</a></p>
<p>このデモは「データの蓄積」部分はデータのインポートを利用している。</p>
<blockquote><p># サンプル用のデータを取得(リポジトリのswitch)<br />
cd /usr/local/cicindela<br />
svn switch http://cicindela2.googlecode.com/svn/branches/demo_data/misc misc<br />
# データベース作成<br />
cd misc<br />
perl create_init_sql.pl &#8211;db_name=cicindela_clip_db | mysql -uroot<br />
# インポート用にperlのモジュールインストール<br />
perl -MCPAN -e &#8220;install Text::CSV_XS;&#8221;<br />
# データインポート<br />
cd clip_data<br />
gunzip -c ldclip_demo_dataset.csv.gz | perl importer.pl  &#8211;work_dir=`pwd` | mysql -uroot cicindela_clip_db</p></blockquote>
<p>そして、設定ファイル「<strong>$CICINDELA_HOME/lib/<span class="highlight">Cicindela</span>/Config/_common.pm</strong>」の</p>
<blockquote><p>## sample settings for ldclip_dataset</p></blockquote>
<p>以下の設定がコメントアウトになっているので、19行目から69行目あたりまでのコメントを外していく。</p>
<p>なおこのファイルで宣言されている、</p>
<blockquote><p>&#8216;clip_simple&#8217; =&gt; {<br />
datasource =&gt;  [ 'dbi:mysql:cicindela_clip_db;host=localhost', 'root', '' ],<br />
filters =&gt; [<br />
[ 'PicksExtractor', { interval =&gt; '20 year' } ],<br />
&#8216;InverseUserFrequency&#8217;,<br />
&#8216;ItemSimilarities&#8217;,<br />
],<br />
recommender =&gt; &#8216;ItemSimilarities&#8217;,<br />
calculation_track =&gt; 1,<br />
refresh_interval =&gt; 1,<br />
},</p></blockquote>
<p>このようなかたまりが、設定の一つ一つになっている。</p>
<p>上記の場合、「clip_simple」というフィルタやレコメンダーなどの設定がされている。（APIで「set=clip_simple」として呼び出される）</p>
<p>datasouceはmysqlに接続する設定なので、各行書き換えておく。</p>
<p>あとは集計バッチを実行する。</p>
<blockquote><p>bin/batch.pl &#8211;track=1<br />
bin/batch.pl &#8211;track=1</p></blockquote>
<p>初回は2回叩く。</p>
<p>これでApacheが動いているならば、Webブラウザで</p>
<blockquote><p>http://hostname/cicindela/recommend?op=for_item&amp;set=clip_simple&amp;item_id=39102</p></blockquote>
<p>このようにリクエストすると、改行区切りのデータが帰ってくるだろう。</p>
<blockquote><p>49425<br />
44936<br />
42886<br />
37580<br />
37710<br />
40699<br />
39574<br />
41925<br />
40012<br />
44423</p></blockquote>
<h3 class="PostLine">感想</h3>
<p>実際にデータを自分で入れていないので、精度などはまだわからないが、このような難しいロジックを擁するツールがオープンソースで公開されている意義はとても大きい。</p>
<p>また、<a href="http://ja.wikipedia.org/wiki/MIT_License" target="_blank">MITライセンス</a>というとても緩いライセンスなので、再利用等が可能だ。これから積極的に利用していきたいと思う。</p>
<p>個人的には、WebAPIにまで手を出さず、<strong>レコメンドエンジン＋ストレージくらいのシンプルなところで留めておいてもよかったのでは？</strong>と思ったりしますが、今後の動きに期待したい。</p>
<p><strong>mod_perl</strong>は、レンタルサーバじゃほとんど利用できないと思うので、<strong>敷居が高いかと</strong>・・・</p>
]]></content:encoded>
			<wfw:commentRss>http://ueblog.natural-wave.com/2009/01/25/livedoor-cicindela/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ueblog.natural-wave.com/2009/01/25/livedoor-cicindela/" />
	</item>
		<item>
		<title>Apacheのバージョン情報などを隠す</title>
		<link>http://ueblog.natural-wave.com/2008/05/03/apache-version-hide/</link>
		<comments>http://ueblog.natural-wave.com/2008/05/03/apache-version-hide/#comments</comments>
		<pubDate>Sat, 03 May 2008 14:27:23 +0000</pubDate>
		<dc:creator>ueblog</dc:creator>
				<category><![CDATA[Programing]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://ueblog.natural-wave.com/2008/05/03/apache-version-hide/</guid>
		<description><![CDATA[Apacheデフォルト設定の場合、ブラウザ（レスポンスヘッダ）に下記のようなバージョン情報を返してしまいます。 Server: Apache/2.2.8 (Unix) PHP/5.2.5 これは、Webサーバ攻撃者にとって有用な情報源となってしまう恐れがあるので、Apacheのhttpd.confなどの設定ファイルを変更します。 # ]]></description>
			<content:encoded><![CDATA[<p>Apacheデフォルト設定の場合、ブラウザ（レスポンスヘッダ）に下記のようなバージョン情報を返してしまいます。</p>
<blockquote><p>Server: Apache/2.2.8 (Unix) PHP/5.2.5</p></blockquote>
<p>これは、Webサーバ攻撃者にとって有用な情報源となってしまう恐れがあるので、Apacheのhttpd.confなどの設定ファイルを変更します。</p>
<blockquote><p># サーバの情報を最低限に返す<br />
ServerTokens Prod</p>
<p># エラー時にフッター情報を返さない<br />
ServerSignature Off</p></blockquote>
<p>こうすることで、レスポンスヘッダは下記のようになる。</p>
<blockquote><p>Server: Apache</p></blockquote>
<p>Not Foundなどのエラー時もフッターにバージョン情報やAdminメールなどの情報を返しません。</p>
<p>＜追記＞<br />
PHPがバンドルされているApacheの場合デフォルトでヘッダに「X-Powered-By: PHP/5.2.5」などと言うバージョン情報を返してしまう。</p>
<p>これをやめたい場合はphp.iniの設定を下記のようにする。</p>
<blockquote><p>expose_php = On<br />
　↓<br />
expose_php = Off</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ueblog.natural-wave.com/2008/05/03/apache-version-hide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://ueblog.natural-wave.com/2008/05/03/apache-version-hide/" />
	</item>
	</channel>
</rss>

