<?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/"
	>

<channel>
	<title>OKLabの戯言</title>
	<atom:link href="http://blog.oklab.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.oklab.org</link>
	<description>ソフトウェア開発まわりのブログ</description>
	<lastBuildDate>Sat, 20 Feb 2010 12:11:45 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Oracle JDeveloper 11gのチュートリアルと学習</title>
		<link>http://blog.oklab.org/?p=445</link>
		<comments>http://blog.oklab.org/?p=445#comments</comments>
		<pubDate>Sun, 07 Feb 2010 10:00:13 +0000</pubDate>
		<dc:creator>oklab</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[JDeveloper]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Weblogic]]></category>

		<guid isPermaLink="false">http://blog.oklab.org/?p=445</guid>
		<description><![CDATA[Java の開発は 統合開発環境として Eclipse を使うのが一般的です。私も仕事でよく使うのですが、今後使用するかもしれないので、 休日中に、Oracle JDeveloper 11g  調べてみました。 Oracle は数年前に Weblogic アプリケーションサーバで有名な BEA システムズ を買収し、最近 サンマイクロシステムズを買収しました。そのため Eclipse と比較すると、IDE にWeblogicが組み込まれている点と、Oracle 用の SQL開発環境が組み込まれている点が Eclipse に対するメリットと感じました。 Weblogic向けのEJB関係の自動生成機能などは非常に便利で、EJB2.0 のころと比べると作る敷居がかなり下がった印象でした。 デメリットは、Eclipse のような豊富なプラグインでカスタマイズできないことと、日本語ドキュメントの少なさを感じました。そのため、Weblogic と Oracle を使う前提だと強力な統合開発環境ですが、開発は、Tomcat アプリケーションサーバを使ったり、Seaserフレームワークなど様々なフレームワークを使う場合は Eclipse のほうが使いやすいです。 学習するドキュメントについては、英語ですが、Oracle.com &#8211; Getting Started: Java が参考になります。はじめは、Oracle JDeveloper 11g のドキュメントを Google でがんばって探したのですが入門レベルの日本語ドキュメントはないようでした。英語は大変ですが上記ドキュメントで学習したほうが早いです。また、このチュートリアルはスクリーンショットがあるので何とかなると思います。 チュートリアルのはじめの章(Step 3)で、簡単な Java のクラスを作成したり、リファクタリング、ビルド、デバッグなどを通して、その作業で、JDeveloper がどのような動きをするのかが理解できます。 休日にVisual Studio 、NetBeans を使ったりしてある程度いろいろな統合開発環境には慣れているのですが、Weblogic がどのように統合されているかなどを理解するためにも、はじめの章は試してみたほうがよいです。所要時間は30分ぐらいです。 また、Step [...]]]></description>
			<content:encoded><![CDATA[<p>Java の開発は 統合開発環境として Eclipse を使うのが一般的です。私も仕事でよく使うのですが、今後使用するかもしれないので、 休日中に、Oracle JDeveloper 11g  調べてみました。</p>
<p>Oracle は数年前に Weblogic アプリケーションサーバで有名な BEA システムズ を買収し、最近 サンマイクロシステムズを買収しました。そのため Eclipse と比較すると、IDE にWeblogicが組み込まれている点と、Oracle 用の SQL開発環境が組み込まれている点が Eclipse に対するメリットと感じました。 Weblogic向けのEJB関係の自動生成機能などは非常に便利で、EJB2.0 のころと比べると作る敷居がかなり下がった印象でした。</p>
<p>デメリットは、Eclipse のような豊富なプラグインでカスタマイズできないことと、日本語ドキュメントの少なさを感じました。そのため、Weblogic と Oracle を使う前提だと強力な統合開発環境ですが、開発は、Tomcat アプリケーションサーバを使ったり、Seaserフレームワークなど様々なフレームワークを使う場合は Eclipse のほうが使いやすいです。</p>
<p>学習するドキュメントについては、英語ですが、<a href="http://www.oracle.com/technology/getting-started/java.html">Oracle.com &#8211; Getting Started: Java</a> が参考になります。はじめは、Oracle JDeveloper 11g のドキュメントを Google でがんばって探したのですが入門レベルの日本語ドキュメントはないようでした。英語は大変ですが上記ドキュメントで学習したほうが早いです。また、このチュートリアルはスクリーンショットがあるので何とかなると思います。</p>
<p>チュートリアルのはじめの章(Step 3)で、簡単な Java のクラスを作成したり、リファクタリング、ビルド、デバッグなどを通して、その作業で、JDeveloper がどのような動きをするのかが理解できます。 休日にVisual Studio 、NetBeans を使ったりしてある程度いろいろな統合開発環境には慣れているのですが、Weblogic がどのように統合されているかなどを理解するためにも、はじめの章は試してみたほうがよいです。所要時間は30分ぐらいです。</p>
<p>また、Step 4 の <a href="http://www.oracle.com/technology/obe/obe1013jdev/10131/10131_ejb_30/ejb_30.htm">Build the business logic for an application using EJB 3.0</a> で Weblogic向けの EJB3.0 と JPA が学習できます。所要時間はこれも30分くらいです。</p>
<p>私の場合はここまでで1時間30分ぐらい掛かりましたが Step 4まで行えば 今後 JDeveloper で J2EE 側の実装が可能になります。Step 5まで行えば、Web層を含めて開発ができるようになると思います。Step 6 ではさらに SOA の学習となります。</p>
<p>今回 JDeveloper 11g をはじめて使ってみましたが、やはり自社製品との連携機能は強力でした。Oracle データベースは、CPUなどのハードウェアの制約がありますが、Oracle XE が無償で使えるので、Weblogic も個人向けに 無償版ライセンスができると、もっと JDeveloper と Weblogic のユーザが増えそうですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oklab.org/?feed=rss2&amp;p=445</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OracleのWebLogic Server 11gR1、Eclipse、Oracle 11gでEJB3.0の概要を学習</title>
		<link>http://blog.oklab.org/?p=439</link>
		<comments>http://blog.oklab.org/?p=439#comments</comments>
		<pubDate>Sat, 30 Jan 2010 06:49:29 +0000</pubDate>
		<dc:creator>oklab</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Weblogic]]></category>
		<category><![CDATA[データベース]]></category>

		<guid isPermaLink="false">http://blog.oklab.org/?p=439</guid>
		<description><![CDATA[限られた時間でEJB3.0の概要を把握するため、２日という期間でEJB3.0が何かを調べたときの資料です。 EJB3.0は自動化やDI,O/Rマッピングなどを機械的にやるので、概要を把握する際にトライアンドエラーをするコストがすごく高くつきます。また、学習段階だとそのエラーが何を意味しているのかは理解できても、その対策方法を行うのにすごく時間がかかってしまいます。 下記で説明する「Oracle Fusion Middleware ドキュメント・ライブラリ」を読みつつ、Google検索すれば、EJB3.0の概要がわかると思います。用語を押さえたら、「Introduction to Oracle Enterprise Pack for Eclipse 11g JPA Workbench」で手を動かすことで実装のスタートラインに立てると思います。 環境 DB:Oracle 10g XE or Oracle 11g 開発ツール:Oracle Enterprise Pack for Eclipse(OEPE) アプリケーションサーバー:WebLogic Server 11gR1 OS:Windows Server 2008 参考資料 上記環境で開発するために、参考になるリンク。 Getting Started With the Oracle Database Plugin for Eclipse Oracle Database Pluginの概要。 http://download.oracle.com/docs/cd/E14545_01/help/oracle.eclipse.tools.database.doc/html/gettingStarted/files/gettingStarted.html  Introduction to Oracle Enterprise Pack for Eclipse [...]]]></description>
			<content:encoded><![CDATA[<p>限られた時間でEJB3.0の概要を把握するため、２日という期間でEJB3.0が何かを調べたときの資料です。</p>
<p>EJB3.0は自動化やDI,O/Rマッピングなどを機械的にやるので、概要を把握する際にトライアンドエラーをするコストがすごく高くつきます。また、学習段階だとそのエラーが何を意味しているのかは理解できても、その対策方法を行うのにすごく時間がかかってしまいます。</p>
<p>下記で説明する「Oracle Fusion Middleware ドキュメント・ライブラリ」を読みつつ、Google検索すれば、EJB3.0の概要がわかると思います。用語を押さえたら、「Introduction to Oracle Enterprise Pack for Eclipse 11g JPA Workbench」で手を動かすことで実装のスタートラインに立てると思います。</p>
<h2>環境</h2>
<ul>
<li>DB:Oracle 10g XE or Oracle 11g</li>
<li>開発ツール:Oracle Enterprise Pack for Eclipse(OEPE)</li>
<li>アプリケーションサーバー:WebLogic Server 11gR1</li>
<li>OS:Windows Server 2008</li>
</ul>
<h2>参考資料</h2>
<p>上記環境で開発するために、参考になるリンク。</p>
<h3>Getting Started With the Oracle Database Plugin for Eclipse</h3>
<p style="padding-left: 30px;">Oracle Database Pluginの概要。</p>
<p style="padding-left: 30px;"><a href="http://download.oracle.com/docs/cd/E14545_01/help/oracle.eclipse.tools.database.doc/html/gettingStarted/files/gettingStarted.html">http://download.oracle.com/docs/cd/E14545_01/help/oracle.eclipse.tools.database.doc/html/gettingStarted/files/gettingStarted.html</a></p>
<h3> Introduction to Oracle Enterprise Pack for Eclipse 11g JPA Workbench</h3>
<p style="padding-left: 30px;">Oracle Enterprise Pack for Eclipse、WebLogic Server 11gR1、Oracle 10g XEを使ってEJB3.0のセッションBean、エンティティBean、JPA、呼び出しとなるJSP/Servletのユーザーインタフェース作成をして、EARパッケージをデプロイするまで記述されています。また、このチュートリアルで使ったサンプルのZIPがあるので、EJB3.0をどのように実装すればわからない場合はお勧めです。</p>
<p style="padding-left: 30px;"><a href="http://www.oracle.com/technology/pub/articles/cioroianu-eclipse-jpa.html">http://www.oracle.com/technology/pub/articles/cioroianu-eclipse-jpa.html</a></p>
<h3>Oracle Enterprise Pack for Eclipse 11gR1 PS1</h3>
<p style="padding-left: 30px;">OEPEのページ。WebLogic Server 11gR1は、アプリケーションサーバのみと、OEPEバンドル版があるので、バンドル版をインストールする場合は必要ありません。</p>
<p style="padding-left: 30px;"> <a href="http://www.oracle.com/technology/global/jp/products/enterprise-pack-for-eclipse/index.html">http://www.oracle.com/technology/global/jp/products/enterprise-pack-for-eclipse/index.html</a></p>
<h3>Oracle Fusion Middleware ドキュメント・ライブラリ</h3>
<p style="padding-left: 30px;"><a href="web.1111/b55511/toc.htm">アプリケーションのデプロイメント</a>、<a href="web.1111/b55515/toc.htm">アプリケーションの開発</a>、<a href="web.1111/b55521/toc.htm">Web アプリケーション、サーブレット、JSP の開発</a>、<a href="web.1111/b55529/toc.htm">エンタープライズ JavaBeans バージョン 3.0 プログラマーズ ガイド</a>　から必要なところをつまみ食いすれば、EJB3.0がわかってきます。</p>
<p style="padding-left: 30px;"><a href="http://download.oracle.com/docs/cd/E16340_01/dev.htm">http://download.oracle.com/docs/cd/E16340_01/dev.htm</a></p>
<h3>EJB3 – HelloWorld example Using Weblogic 10.3</h3>
<p style="padding-left: 30px;">JNDI lookupでのEJB3.0の呼び出しサンプルです。上記の「Introduction to Oracle Enterprise Pack for Eclipse 11g JPA Workbench」を見つけ出す前まで、JSP/ServletからEJB3.0のセッションBeanをうまく呼び出せなくて試行錯誤しているときに見つけました。</p>
<p style="padding-left: 30px;">ドキュメント内のNoteで書かれていますが、ユーザ名、パスワード、プロバイダURLは各自設定する必要があります。</p>
<p style="padding-left: 30px;"><a href="http://upog.wordpress.com/2009/10/18/ejb3-helloworld-example-using-weblogic-10-3/">http://upog.wordpress.com/2009/10/18/ejb3-helloworld-example-using-weblogic-10-3/</a></p>
<h3><a accesskey="1" href="http://blogs.oracle.com/jamesbayer/">James Bayer&#8217;s Blog</a> - Workshop for WebLogic 10.3 JEE 5 Trial and Error</h3>
<p style="padding-left: 30px;">クライアントPC上のJavaVMで動作するJavaクライアントプログラムから、サーバ側のWebLogic Server のEJB3.0セッションBeanを呼び出すための記事です。Oracle Enterprise Pack for Eclipse(OEPE)上で、J2EE アプリケーションクライアントを実行するには、実行の設定で、Bootstrap EntriesからWeblogic関係のライブラリを削除すること、User Entriesにwlclient.jarを追加する事について書かれています。</p>
<p style="padding-left: 30px;"><a href="http://blogs.oracle.com/jamesbayer/2008/08/workshop_for_weblogic_103_jee.html">http://blogs.oracle.com/jamesbayer/2008/08/workshop_for_weblogic_103_jee.html</a></p>
<h2>用語</h2>
<ul>
<li> Oracle E-Business Suite</li>
</ul>
<blockquote><p>ERPパッケージ。財務会計、人事管理（HRM）、サプライチェーンマネジメント（SCM）、購買調達、プロジェクト管理、マスターデータ管理のソリューションを包括的に提供。</p></blockquote>
<ul>
<li>Java EE5
<ul>
<li>EJB3.0(セッションBean,エンティティ,インターセプター)</li>
<li>Webサービス</li>
<li>JSF/JSTL</li>
<li>JPA O/Rマッピング</li>
<li>その他、トランザクション管理、リソース管理など</li>
</ul>
</li>
</ul>
<p> </p>
<ul>
<li>EARファイル</li>
</ul>
<p style="padding-left: 30px;">EJBパッケージ、WARパッケージ(JSP/ServletなどWeb層のアプリケーション)などをまとめたものです。Eclipseの場合は、Enterprise Applicationプロジェクトを作成します。<strong>エンタープライズアプリケーション</strong>とも呼ばれます。これはただまとめるための器となるプロジェクトです。これに、EJBプロジェクト、Dynamic Web プロジェクト、JPAプロジェクトを追加します。</p>
<p style="padding-left: 30px;">EARファイル = WARファイル + EJB Jarファイル &#8230;</p>
<ul>
<li>Oracleの永続化プロダクト</li>
</ul>
<p style="padding-left: 30px;">もともとは、Oracle Kodo JPA/JDOがでしたが、マニュアルを確認すると現在は非推奨となっています。Oracle TopLinkを使うように促しています。2010年現在、Oracle TopLinkは、Eclipse Foundationに寄与されたのでEclipseLinkになっています。よって、EclipseからJPAプロジェクトを作成すれば、EclipseLinkをJPA実装として使えます。</p>
<ul>
<li>依存性注入</li>
</ul>
<p style="padding-left: 30px;">アプリケーションが起動中に、Javaのフィールド変数に値を埋めてくれる機能と考えればわかりやすいです。DIとも呼ばれます。EJBでは、SQLを使わないようにJPAのO/Rマッピング、EJB2.0時代のホーム/リモートインターフェースの省略などで使われます。</p>
<ul>
<li>インターセプター</li>
</ul>
<p style="padding-left: 30px;">アスペクト指向を組み入れる方法です。プログラムをするとき、業務ロジック以外に、ログ出力機能、セキュリティチェック機能、例外処理機能など、本来業務ロジックとしてはではないプログラミングが必要になります。これらのコードを業務ロジックとともに記述すると、複雑になってくるので、普通はオブジェクト指向の継承や委譲機能を使って、プログラムを分割します。これをさらに発展させたのが、インターセプターです。セキュリティチェック機能の後に、ログ出力機能を呼び出し、その後業務ロジックを呼び出す。また設定だけで、呼び出す順番を変更できたりします。EJB側で使えるフィルターです。</p>
<ul>
<li>J2EE アプリケーションクライアント</li>
</ul>
<p style="padding-left: 30px;">EARファイルに含めることのできるクライアントモジュール(JARファイル)の事です。J2EE標準デプロイメント記述子のapplication-client.xmlが含まれています。またWeblogic</p>
<ul>
<li>T3プロトコル</li>
</ul>
<p style="padding-left: 30px;">Oracle独自の通信プロトコルです。</p>
<ul>
<li>Weblogic フルクライアント</li>
</ul>
<p style="padding-left: 30px;">OracleのT3プロトコルを使ったJava RMIクライアントです。Weblogicのwlfullclient.jarがライブラリとして必要になります。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oklab.org/?feed=rss2&amp;p=439</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>無料ファイル転送オンラインストレージ [エストカス]のドメインをhttp://stoc.as.wakwak.ne.jp/からhttp://stocas.webhop.net/に変更しました。</title>
		<link>http://blog.oklab.org/?p=434</link>
		<comments>http://blog.oklab.org/?p=434#comments</comments>
		<pubDate>Sun, 17 Jan 2010 13:50:46 +0000</pubDate>
		<dc:creator>oklab</dc:creator>
				<category><![CDATA[ファイルアップローダ]]></category>
		<category><![CDATA[stoc.as.wakwak.ne.jp]]></category>
		<category><![CDATA[stocas.webhop.net]]></category>
		<category><![CDATA[エストカス]]></category>
		<category><![CDATA[オンラインストレージ]]></category>
		<category><![CDATA[無料ファイル転送]]></category>

		<guid isPermaLink="false">http://blog.oklab.org/?p=434</guid>
		<description><![CDATA[日経BP社に、記事を載せていただいたhttp://stoc.as.wakwak.ne.jp/で運営している、無料ファイル転送オンラインストレージ [エストカス]のドメインをstocas.webhop.netに変更しました。 日経BP社（参考：アカウントを作成する必要なし！ 「エストカス」を使う パスワードさえ知っていればファイルをダウンロードできる) 旧ドメイン：http://stoc.as.wakwak.ne.jp/ 新ドメイン:http://stocas.webhop.net/ 最近、月々の通信費が高いので、携帯電話やプロバイダ・回線を見直しました。サービスのプランや質は変わらなくとも、会社を変更するだけでかなりの額が安くなるのが分かったので、10年以上使っているプロバイダを変更したりしました。そのため、無料ファイル転送オンラインストレージ[エストカス]として、公開しているサイトのドメインを変更しました。 少し、遅い報告ですが、検索エンジンがブログのインデックスを張るのが早いので記事にしました。]]></description>
			<content:encoded><![CDATA[<p>日経BP社に、記事を載せていただいたhttp://stoc.as.wakwak.ne.jp/で運営している、<a href="http://stocas.webhop.net/">無料ファイル転送オンラインストレージ [エストカス]</a>のドメインをstocas.webhop.netに変更しました。</p>
<p>日経BP社（参考：<a title="アカウントを作成する必要なし！ 「エストカス」を使う パスワードさえ知っていればファイルをダウンロードできる" href="http://pc.nikkeibp.co.jp/article/special/20090715/1016998/" target="_blank">アカウントを作成する必要なし！ 「エストカス」を使う パスワードさえ知っていればファイルをダウンロードできる</a>)</p>
<ul>
<li><strong>旧ドメイン：http://stoc.as.wakwak.ne.jp/</strong></li>
<li><strong>新ドメイン:<span style="color: #ff0000;"><a href="http://stocas.webhop.net/">http://stocas.webhop.net/</a></span></strong></li>
</ul>
<p>最近、月々の通信費が高いので、携帯電話やプロバイダ・回線を見直しました。サービスのプランや質は変わらなくとも、会社を変更するだけでかなりの額が安くなるのが分かったので、10年以上使っているプロバイダを変更したりしました。そのため、無料ファイル転送オンラインストレージ[エストカス]として、公開しているサイトのドメインを変更しました。<a href="http://stocas.webhop.net/"><br />
</a></p>
<p><a href="http://blog.oklab.org/wp-content/uploads/2010/01/stocas.png"><img class="alignnone size-medium wp-image-435" title="stocas" src="http://blog.oklab.org/wp-content/uploads/2010/01/stocas-300x260.png" alt="" width="300" height="260" /></a></p>
<p>少し、遅い報告ですが、検索エンジンがブログのインデックスを張るのが早いので記事にしました。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oklab.org/?feed=rss2&amp;p=434</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Windows Server 構築しました。</title>
		<link>http://blog.oklab.org/?p=429</link>
		<comments>http://blog.oklab.org/?p=429#comments</comments>
		<pubDate>Sun, 17 Jan 2010 13:33:25 +0000</pubDate>
		<dc:creator>oklab</dc:creator>
				<category><![CDATA[サーバ構築]]></category>
		<category><![CDATA[環境設定]]></category>
		<category><![CDATA[Hyper-V Server 2008 R2]]></category>
		<category><![CDATA[Windows Web Server 2008 R2]]></category>
		<category><![CDATA[インストールマニアックス3 Hyper-V祭り]]></category>

		<guid isPermaLink="false">http://blog.oklab.org/?p=429</guid>
		<description><![CDATA[先月から、インストールマニアックス3 Hyper-V祭りが行われました。Hyper-V Server 2008 R2 と呼ぶWindows Server 2008 R2ベースの仮想化用OSに、Windows Web Server 2008 R2をインストールし、その上にオープンソースのアプリケーションをインストールする大会です。オープンソースはwordpressやpukiwikiなど一般的に普及している課題の中から自分で選択してインストールしていきます。 詳しくは、サイトを公開しましたので確認していただければ、Window Server について知らない方もドキュメント化しつつ大会を行ったので、どういうものか理解できると思います。InstallManiax3 サーバー構築日記(http://techon.webhop.net/) 仕事上、Window Server はあまり扱わないので、今回の大会に参加できて非常に勉強になりました。Linuxだとyumでのパッケージ管理が普及しています。Windowsの場合はパッケージ管理がないと思っていたので、検証しながらインストールするのは大変かと思われたのですが、最近は、簡単にオープンソースがインストールできる「Microsoft Web Platform Installer」というインストーラが存在していました。依存関係等も正しく解決してくれるので、これを使うとIIS, MySQL,Wordpress, PHP実行環境を一度でインストールできました。 大会の規約上、１年間運用するので、この機会にASP.NETやWindow Server 管理をいろいろ試してみたいと思います。また、Windows Server に関しての記事はoklab.orgのブログではなく、techon.webhop.net側のwordpressに記述していこうと思います。]]></description>
			<content:encoded><![CDATA[<p>先月から、<a href="http://www.thinkit.co.jp/maniax/3/" target="_blank">インストールマニアックス3 Hyper-V祭り</a>が行われました。Hyper-V Server 2008 R2 と呼ぶWindows Server 2008 R2ベースの仮想化用OSに、Windows Web Server 2008 R2をインストールし、その上にオープンソースのアプリケーションをインストールする大会です。オープンソースはwordpressやpukiwikiなど一般的に普及している課題の中から自分で選択してインストールしていきます。</p>
<p>詳しくは、サイトを公開しましたので確認していただければ、Window Server について知らない方もドキュメント化しつつ大会を行ったので、どういうものか理解できると思います。<a href="http://techon.webhop.net/">InstallManiax3 サーバー構築日記(http://techon.webhop.net/)</a></p>
<p><a href="http://blog.oklab.org/wp-content/uploads/2010/01/installmaniax3.png"><img class="alignnone size-medium wp-image-430" title="installmaniax3" src="http://blog.oklab.org/wp-content/uploads/2010/01/installmaniax3-300x295.png" alt="" width="300" height="295" /></a></p>
<p>仕事上、Window Server はあまり扱わないので、今回の大会に参加できて非常に勉強になりました。Linuxだとyumでのパッケージ管理が普及しています。Windowsの場合はパッケージ管理がないと思っていたので、検証しながらインストールするのは大変かと思われたのですが、最近は、簡単にオープンソースがインストールできる「Microsoft Web Platform Installer」というインストーラが存在していました。依存関係等も正しく解決してくれるので、これを使うとIIS, MySQL,Wordpress, PHP実行環境を一度でインストールできました。</p>
<p>大会の規約上、１年間運用するので、この機会にASP.NETやWindow Server 管理をいろいろ試してみたいと思います。また、Windows Server に関しての記事はoklab.orgのブログではなく、<a href="http://techon.webhop.net/">techon.webhop.net</a>側のwordpressに記述していこうと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oklab.org/?feed=rss2&amp;p=429</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ロイターのニュースAPI(Reuters Spotlight)を使ってみる。</title>
		<link>http://blog.oklab.org/?p=424</link>
		<comments>http://blog.oklab.org/?p=424#comments</comments>
		<pubDate>Sun, 17 Jan 2010 13:13:55 +0000</pubDate>
		<dc:creator>oklab</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Reuters Spotlight]]></category>

		<guid isPermaLink="false">http://blog.oklab.org/?p=424</guid>
		<description><![CDATA[ここ数年、日本では、新聞や雑誌の売り上げが減っています。既存の仕組みで利益を得ながらも、新しい取り組みを模索して行かなければならない現状はとても大変だと思われます。米国でもインターネットの台頭で、老舗の新聞社が廃刊に追い込まれています。（参考 &#8211; メディア・ハブを「廃刊」で検索） 日本では、新聞戸別宅配制度が普及しているため廃刊になるほど急激には落ち込んでいないようですが、緩やかに減少はしています。米国は国土が広いためか、日本ほど戸別販売の仕組みが普及していないので急激な落ち込みに至っているようです。そのため日本に比べると新聞社や通信社はインターネットを使う仕組みを研究・開発しています。 特に、ニューヨーク・タイムス、ロイター通信は、プログラマ向けにニュース用API（スポットライトAPIと言いますReuters Spotlight)を公開しています。昨年私が調べていたときは、ニューヨーク・タイムスは日本語に対応していませんでしたが、ロイター通信のニュース用APIが日本語に対応していたので、http://sornews.info/というドメインを取得してデモプログラムを実装してみました。 sorenws.info &#8211; SORNEWS &#8211; Reuters Spotlight と PHP でニュースのデモ sornews.infoでは、海外の新聞社や通信社がどのような取り組みをしているのかや、Spotlightの簡単な概要説明を日本語で書いています。将来日本でもこのような取り組みが行われるかもしれないのでソフトウェア開発をしている私に取っては非常に興味深い仕組みでした。]]></description>
			<content:encoded><![CDATA[<p>ここ数年、日本では、新聞や雑誌の売り上げが減っています。既存の仕組みで利益を得ながらも、新しい取り組みを模索して行かなければならない現状はとても大変だと思われます。米国でもインターネットの台頭で、老舗の新聞社が廃刊に追い込まれています。（参考 &#8211; <a href="http://zen.seesaa.net/pages/user/search/?keyword=%98V%95%DC&amp;vs=http%3A%2F%2Fzen.seesaa.net%2F&amp;fr=sb-sesa&amp;ei=Shift_JIS">メディア・ハブを「廃刊」で検索</a>）</p>
<p>日本では、新聞戸別宅配制度が普及しているため廃刊になるほど急激には落ち込んでいないようですが、緩やかに減少はしています。米国は国土が広いためか、日本ほど戸別販売の仕組みが普及していないので急激な落ち込みに至っているようです。そのため日本に比べると新聞社や通信社はインターネットを使う仕組みを研究・開発しています。</p>
<p>特に、ニューヨーク・タイムス、ロイター通信は、プログラマ向けにニュース用API（スポットライトAPIと言います<a href="http://spotlight.reuters.com/">Reuters Spotlight</a>)を公開しています。昨年私が調べていたときは、ニューヨーク・タイムスは日本語に対応していませんでしたが、ロイター通信のニュース用APIが日本語に対応していたので、http://sornews.info/というドメインを取得してデモプログラムを実装してみました。</p>
<p><a href="http://sornews.info/">sorenws.info &#8211; SORNEWS &#8211; Reuters Spotlight と PHP でニュースのデモ</a></p>
<p><a href="http://blog.oklab.org/wp-content/uploads/2010/01/spotlight.png"><img class="alignnone size-medium wp-image-425" title="spotlight" src="http://blog.oklab.org/wp-content/uploads/2010/01/spotlight-300x287.png" alt="" width="300" height="287" /></a></p>
<p>sornews.infoでは、海外の新聞社や通信社がどのような取り組みをしているのかや、Spotlightの簡単な概要説明を日本語で書いています。将来日本でもこのような取り組みが行われるかもしれないのでソフトウェア開発をしている私に取っては非常に興味深い仕組みでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oklab.org/?feed=rss2&amp;p=424</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VC++での文字セットや文字コードについて</title>
		<link>http://blog.oklab.org/?p=420</link>
		<comments>http://blog.oklab.org/?p=420#comments</comments>
		<pubDate>Wed, 13 Jan 2010 03:25:25 +0000</pubDate>
		<dc:creator>oklab</dc:creator>
				<category><![CDATA[VC++]]></category>

		<guid isPermaLink="false">http://blog.oklab.org/?p=420</guid>
		<description><![CDATA[C#やJavaは新しい言語なので、文字列を扱うライブラリが豊富で、使い方も簡単です。なのでこれらの言語を学習中に文字コードや文字セットをあまり意識せずに学習できます。VC++では文字列の扱いが複雑です。C言語の入門書では、標準ライブラリのsprintf、fopen を使うのですが、VC++ではコンパイラから警告を受けます。なのでマルチバイト文字セット、Unicode 文字セットの意味合いを一度整理した方が、学習効率がよさそうです。 以下の「charとUnicodeとワイド文字をごっちゃにしないために」は、基本的な用語から噛み砕いて説明をしているので、C言語学習中でも比較的理解しやすいと思います。 http://marupeke296.com/CPP_charUnicodeWideChar.html [国際対応のプログラミング - MSDN] http://msdn.microsoft.com/ja-jp/library/06b9yaeb%28VS.80%29.aspx]]></description>
			<content:encoded><![CDATA[<p>C#やJavaは新しい言語なので、文字列を扱うライブラリが豊富で、使い方も簡単です。なのでこれらの言語を学習中に文字コードや文字セットをあまり意識せずに学習できます。VC++では文字列の扱いが複雑です。C言語の入門書では、標準ライブラリのsprintf、fopen を使うのですが、VC++ではコンパイラから警告を受けます。なのでマルチバイト文字セット、Unicode 文字セットの意味合いを一度整理した方が、学習効率がよさそうです。</p>
<p>以下の「charとUnicodeとワイド文字をごっちゃにしないために」は、基本的な用語から噛み砕いて説明をしているので、C言語学習中でも比較的理解しやすいと思います。</p>
<pre>http://marupeke296.com/CPP_charUnicodeWideChar.html</pre>
<pre>[国際対応のプログラミング - MSDN]

http://msdn.microsoft.com/ja-jp/library/06b9yaeb%28VS.80%29.aspx</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.oklab.org/?feed=rss2&amp;p=420</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP経由の、hg push で「abort: HTTP Error 500: Internal Server Error」発生を回避する方法</title>
		<link>http://blog.oklab.org/?p=409</link>
		<comments>http://blog.oklab.org/?p=409#comments</comments>
		<pubDate>Sun, 29 Nov 2009 12:47:06 +0000</pubDate>
		<dc:creator>oklab</dc:creator>
				<category><![CDATA[サーバ構築]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Mercurial]]></category>

		<guid isPermaLink="false">http://blog.oklab.org/?p=409</guid>
		<description><![CDATA[CentOS5上に、Mercurialサーバを構築したのですが、hg push が正常に動作しませんでした。その原因と解決方法です。 レポジトリを作成する場合は、Linuxのアカウントでhg init を使いレポジトリを作成すると思います。この時レポジトリのオーナーは、いま使っているアカウントになります。hg pushコマンドをHTTP経由で行った場合は、Apacheの実行ユーザでレポジトリにアクセスしようとします。例えば、CentOS5の場合のデフォルトでは、Apacheの実行ユーザは、apache、実行グループはapacheになります。そのためhg initで作成したレポジトリは、HTTP経由でhg pushができるように、Apacheの実行ユーザにする必要があります。 普段使っているhogeユーザで、Mercurialのレポジトリを作成する例。ユーザがhogeになっているのが分かると思います。 [hoge@sc ~]$ hg init MyFirstProject [hoge@sc ~]$ ls -l 合計 4 drwxrwxr-x 3 hoge hoge 4096 11月 29 21:29 MyFirstProject 例えば、実行ユーザをapacheにして、実行グループをapacheにする場合は以下のようにします。 [hoge@sc ~]$ sudo chown -R apache.apache MyFirstProject ただこの場合は、このローカルマシンで作業をする場合に、apache を意識する必要があるので、普段使用するユーザと、apache ユーザ用のグループ(この場合はmyadmin)をgroupaddコマンドで作成したほうが管理が楽になると思います。 [hoge@sc ~]$ sudo chown -R apache.myadmin MyFirstProject また、問題を解決する際にGoogleなどの検索エンジンを使うと思いますが、&#8211;debug -v &#8211;traceback で、実行時の詳細が取得できます。詳細なログで検索すれば解決方法が見つかるかもしれません。 [hoge@sc ~]$ hg [...]]]></description>
			<content:encoded><![CDATA[<p>CentOS5上に、Mercurialサーバを構築したのですが、hg push が正常に動作しませんでした。その原因と解決方法です。</p>
<p>レポジトリを作成する場合は、Linuxのアカウントでhg init を使いレポジトリを作成すると思います。この時レポジトリのオーナーは、いま使っているアカウントになります。hg pushコマンドをHTTP経由で行った場合は、Apacheの実行ユーザでレポジトリにアクセスしようとします。例えば、CentOS5の場合のデフォルトでは、Apacheの実行ユーザは、apache、実行グループはapacheになります。そのためhg initで作成したレポジトリは、HTTP経由でhg pushができるように、Apacheの実行ユーザにする必要があります。</p>
<p>普段使っているhogeユーザで、Mercurialのレポジトリを作成する例。ユーザがhogeになっているのが分かると思います。</p>
<pre>[hoge@sc ~]$ hg init MyFirstProject
[hoge@sc ~]$ ls -l
合計 4
drwxrwxr-x 3 <strong><span style="color: #ff0000;">hoge hoge</span></strong> 4096 11月 29 21:29 MyFirstProject</pre>
<p>例えば、実行ユーザをapacheにして、実行グループをapacheにする場合は以下のようにします。</p>
<pre>[hoge@sc ~]$ sudo chown -R <strong><span style="color: #ff0000;">apache.apache </span></strong>MyFirstProject</pre>
<p>ただこの場合は、このローカルマシンで作業をする場合に、apache を意識する必要があるので、普段使用するユーザと、apache ユーザ用のグループ(この場合はmyadmin)をgroupaddコマンドで作成したほうが管理が楽になると思います。</p>
<pre>[hoge@sc ~]$ sudo chown -R <strong><span style="color: #ff0000;">apache.myadmin </span></strong>MyFirstProject</pre>
<p>また、問題を解決する際にGoogleなどの検索エンジンを使うと思いますが、&#8211;debug -v &#8211;traceback で、実行時の詳細が取得できます。詳細なログで検索すれば解決方法が見つかるかもしれません。</p>
<pre>[hoge@sc ~]$ hg push --debug -v --traceback
Traceback (most recent call last):
 File "/usr/lib/python2.4/site-packages/mercurial/dispatch.py", line 43, in _runcatch
 return _dispatch(ui, args)
 File "/usr/lib/python2.4/site-packages/mercurial/dispatch.py", line 441, in _dispatch
 raise error.RepoError(_("There is no Mercurial repository"
RepoError: There is no Mercurial repository here (.hg not found)
abort: There is no Mercurial repository here (.hg not found)!</pre>
<p>http://ubuntuforums.org/showthread.php?p=7539735</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.oklab.org/?feed=rss2&amp;p=409</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS5でのindex.phpとindex.htmlのDirectoryIndex評価順序</title>
		<link>http://blog.oklab.org/?p=401</link>
		<comments>http://blog.oklab.org/?p=401#comments</comments>
		<pubDate>Fri, 27 Nov 2009 11:09:20 +0000</pubDate>
		<dc:creator>oklab</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[CentOS]]></category>

		<guid isPermaLink="false">http://blog.oklab.org/?p=401</guid>
		<description><![CDATA[httpd.confのDirectoryIndexを変更しても、index.htmlとindex.phpの評価順序が変更されなかったので評価順序を調べてみました。バーチャルホストで運用している際に、評価順序としては、以下のようになります。 VirtualHost ディレクティブ内で定義した、Directoryディレクティブ内の、DirectoryIndex /etc/httpd/conf.d/php.conf に記述されたDirectoryIndex /etc/httpd/conf/httpd.conf に記述されたサーバデフォルトのDirectoryIndex CentOS5でphp環境をyumでインストールした場合、以下のような/etc/httpd/conf.d/php.confが追加されます。この設定ファイルにより、PHP5のモジュールがロードされ、Apacheはphp拡張子を理解できるようになります。また、URLでディレクトリアクセスした場合には、DirectoryIndexで定義された、index.phpを確認し、ある場合はindex.phpを実行し、無い場合は、HTTPステータス404をクライアントに返却するようになります。 # # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. # LoadModule php5_module modules/libphp5.so # # Cause the PHP interpreter to handle files with a .php extension. # AddHandler php5-script .php AddType text/html .php # [...]]]></description>
			<content:encoded><![CDATA[<p>httpd.confのDirectoryIndexを変更しても、index.htmlとindex.phpの評価順序が変更されなかったので評価順序を調べてみました。バーチャルホストで運用している際に、評価順序としては、以下のようになります。</p>
<ol>
<li> VirtualHost ディレクティブ内で定義した、Directoryディレクティブ内の、DirectoryIndex</li>
<li> /etc/httpd/conf.d/php.conf に記述されたDirectoryIndex</li>
<li> /etc/httpd/conf/httpd.conf に記述されたサーバデフォルトのDirectoryIndex</li>
</ol>
<p>CentOS5でphp環境をyumでインストールした場合、以下のような/etc/httpd/conf.d/php.confが追加されます。この設定ファイルにより、PHP5のモジュールがロードされ、Apacheはphp拡張子を理解できるようになります。また、URLでディレクトリアクセスした場合には、DirectoryIndexで定義された、index.phpを確認し、ある場合はindex.phpを実行し、無い場合は、HTTPステータス404をクライアントに返却するようになります。</p>
<pre>#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#

LoadModule php5_module modules/libphp5.so

#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps</pre>
<p>そのため、以下のようにhttpd.conf のDirectoryIndexの最後にindex.phpを追加して、html拡張子を先に評価しようとしても、</p>
<pre>DirectoryIndex index.html index.html.var index.php</pre>
<p>実際には、php.conf側のDirectoryIndexが先に評価されるため、以下のような定義と同様になるようです。</p>
<pre>DirectoryIndex <strong>index.php</strong> index.html index.html.var <strong>index.php
</strong></pre>
<p>CentOS5の場合は、index.htmlとindex.phpの評価順序を変更したい場合は、httpd.confのDirectoryIndexにindex.phpを追加するのではなく、php.conf側で以下のように指定したほうがよいのかもしれません。</p>
<pre>DirectoryIndex index.html　index.php</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.oklab.org/?feed=rss2&amp;p=401</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javaで固定小数点の計算</title>
		<link>http://blog.oklab.org/?p=395</link>
		<comments>http://blog.oklab.org/?p=395#comments</comments>
		<pubDate>Thu, 26 Nov 2009 04:22:37 +0000</pubDate>
		<dc:creator>oklab</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.oklab.org/?p=395</guid>
		<description><![CDATA[JavaでWebアプリケーションを作成している場合は、小数点の計算には、浮動小数点のfloat型やdouble型を使い、お金の計算には、java.math.BigDecimal 型が使われます。またサーバ用コンピュータとしてある程度ハードウェアの性能が期待できるのと、保守性を考慮して、上記の型を使います。 近年、Google 製の携帯電話が発売されましたが、携帯電話でぎりぎりまで性能を引き出すには、固定小数点での計算が有力だそうです。以下にAndroid携帯でのゲーム開発について解説があるのですが、パフォーマンスチューニングのために、関数を使わないや、固定小数点を使うなどは普段Webアプリケーションでは考慮しない事なのでとても興味深いです。 Android でリアルタイムゲームの開発方法 : Google Developer Day 2009 Japan ,スピーカー : クリス プルエット /** * Javaで固定小数点の計算. * @author Satoshi Okita * 参考資料: * 固定小数 http://www.sage-p.com/compone/toda/fixdec.htm * 整数化小数 http://www.geocities.co.jp/Berkeley/2093/clab.html * 固定小数点 http://www2s.biglobe.ne.jp/~nuts/labo/daal/daal07.html * Javaでfixpointのライブラリを作っている方がいました。三角関数も実装されています。 * http://blog.numfum.com/2007/09/java-fixed-point-maths.html */ public class FixpointTest { /** * @param args */ public static void main(String[] args) { // [...]]]></description>
			<content:encoded><![CDATA[<p>JavaでWebアプリケーションを作成している場合は、小数点の計算には、浮動小数点のfloat型やdouble型を使い、お金の計算には、java.math.BigDecimal 型が使われます。またサーバ用コンピュータとしてある程度ハードウェアの性能が期待できるのと、保守性を考慮して、上記の型を使います。</p>
<p>近年、Google 製の携帯電話が発売されましたが、携帯電話でぎりぎりまで性能を引き出すには、固定小数点での計算が有力だそうです。以下にAndroid携帯でのゲーム開発について解説があるのですが、パフォーマンスチューニングのために、関数を使わないや、固定小数点を使うなどは普段Webアプリケーションでは考慮しない事なのでとても興味深いです。</p>
<p><a title="Android でリアルタイムゲームの開発方法 : Google Developer Day 2009 Japan ,スピーカー : クリス プルエット" href="http://www.youtube.com/watch?v=5mTJ9X4910E">Android でリアルタイムゲームの開発方法 : Google Developer Day 2009 Japan ,スピーカー : クリス プルエット</a></p>
<pre>/**
 * Javaで固定小数点の計算.
 * @author Satoshi Okita
 * 参考資料:
 * 固定小数   http://www.sage-p.com/compone/toda/fixdec.htm
 * 整数化小数 http://www.geocities.co.jp/Berkeley/2093/clab.html
 * 固定小数点 http://www2s.biglobe.ne.jp/~nuts/labo/daal/daal07.html
 * Javaでfixpointのライブラリを作っている方がいました。三角関数も実装されています。
 * http://blog.numfum.com/2007/09/java-fixed-point-maths.html
 */
public class FixpointTest {

    /**
     * @param args
     */
    public static void main(String[] args) {

        // 整数の計算.
        int five = 5;                        // 0000 0000 0000 0000, 0000 0000 0000 0101 (32bit)
        int ffive= Fixpoint.int2fix(five);    // 0000 0000 0000 0000, 0000 0101 0000 0000 (32bit)
        int rfive = Fixpoint.fix2int(ffive);// 0000 0000 0000 0000, 0000 0000 0000 0101 (32bit)
        System.out.println("整数5をそのまま表示した値=" + five);
        System.out.println("整数5をfixpointで表した値=" + ffive);
        System.out.println("整数5をfixpointから戻した=" + rfive);

        // 小数点のある値の計算.
        // 小数を代入するときは、2のシフト数乗をかけた値を指定
        int f   = Fixpoint.fvalue(1.23f);
        System.out.println("小数1.23をfixpointで表現 =" + f);

        // fixpoint型での加算. 5+1.23
        int fixr = ffive + f;

        System.out.println("小数6.23をfixpointで表した値=" + fixr);

    }

}

final class Fixpoint {
    public static int FIX_POINT  = 8;

    public static int fvalue(float fx) {
        int r = 2;
        for (int i = 2; i &lt;= FIX_POINT; i++) {
            r = r * 2;
        }
        System.out.println("r=" + r);
        return (int)(fx * r);
    }

    public static int int2fix( int x ) {
        // return value = x * 2のFIX_POINT乗
        // 例) return value = x * 2^8 (Javaでは^はサポートされていない)
        return x &lt;&lt; FIX_POINT;
    }
    public static int fix2int( int x ) {
        return x &gt;&gt; FIX_POINT;
    }

    public static int multiply( int x, int y ) {
        return (int)(( ( long )x * ( long )y ) / FIX_POINT);
    }

    public static int divide( int x, int y ) {
        return (int)(( ( long )x * FIX_POINT ) / ( long )y);
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.oklab.org/?feed=rss2&amp;p=395</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS5にMercurial1.3をインストール</title>
		<link>http://blog.oklab.org/?p=388</link>
		<comments>http://blog.oklab.org/?p=388#comments</comments>
		<pubDate>Wed, 25 Nov 2009 14:45:28 +0000</pubDate>
		<dc:creator>oklab</dc:creator>
				<category><![CDATA[サーバ構築]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Mercurial]]></category>

		<guid isPermaLink="false">http://blog.oklab.org/?p=388</guid>
		<description><![CDATA[CentOS5にMercurial1.3をインストールした際に、マルチレポジトリ環境を構築したのですが、ブラウザでレポジトリのリストが表示されない状態になってしまいました。その時のトラブルシューティングです。 CentO+S5.4では、RPMForegeをインストールすれば、yum管理でMercurial1.3がインストールできます。ローカルでMercurialを使う環境を整えるのは比較的簡単にできますが、レポジトリ公開用の環境構築に癖があります。CVSやSVNの場合は、ブラウザベースでレポジトリを公開する場合は、一般的にViewvcなどが使われますが、Mercurialでは、標準で用意されています。標準で用意されている機能としては、以下の3つがあります。 hg serveコマンドによる簡易サーバ レポジトリを１つ公開するためのhgweb 複数のレポジトリを公開するためのhgwebdir hgwebサーバの構築または、hgwebdirサーバの構築には、以下の構築手順書があります。 http://mercurial.selenic.com/wiki/PublishingRepositories http://mercurial.selenic.com/wiki/modwsgi CentOS5.4の場合は、mod_wsgi はyumでインストールできるのでwsgi環境を整える(Pythonの環境)を整えるのは難しくありません。 私の場合は、上記手順書で、hgwebdirサーバの構築を行ったのですが、http://mercurial.selenic.com/wiki/modwsgiの「3.3 Mercurial」で書かれている設定ではブラウザからレポジトリ公開のトップページは表示できるけれど、レポジトリ一覧が表示できない状態でした。以下のように、CGI 設定ファイルに当たるhgweb.config を絶対パスで指定することで解決できました。 from mercurial import demandimport; demandimport.enable() from mercurial.hgweb.hgwebdir_mod import hgwebdir application = hgwebdir('/var/www/myhg/hgweb.config') # 絶対パス トラブルシューティングの手順としては、 コマンドラインでMercurialのテストプロジェクトを作って動作確認する。これによりMercurial自体に問題ないことを検証。 hgweb,hgwebdirを使わずに、hg serveコマンドで簡易サーバを立てて、ブラウザからのアクセスを行う。ここでファイアウォールやブラウザ環境に問題ないことを確認。 hgwebdirの構築を行って動作確認。問題がある場合は、パーミッション、Apacheの設定、hgweb.config の設定などが考えられます。 #hg serve -p 8111 --webdir-conf /var/www/myhg/hgweb.config SVNとViewvcで構築した場合は、SVN自体の管理と、Viewvcの管理が必要になりますが、Mercurialでは、単体でViewvcのようなソースコードブラウザの管理ができ、また複数のレポジトリをサーバの再起動せずに反映させることが可能です。 また、yumでmercurial1.3をインストールした場合、以下ディレクトリに、hgwebdir.wsgiが存在するのでこれをコピーして使います。 [root@xxx ~]# rpm -ql mercurial-1.3.1-1.el5.rf &#124; grep hgwebdir /usr/lib/python2.4/site-packages/mercurial/hgweb/hgwebdir_mod.py /usr/lib/python2.4/site-packages/mercurial/hgweb/hgwebdir_mod.pyc /usr/lib/python2.4/site-packages/mercurial/hgweb/hgwebdir_mod.pyo /usr/share/doc/mercurial-1.3.1/contrib/hgwebdir.fcgi [...]]]></description>
			<content:encoded><![CDATA[<p>CentOS5にMercurial1.3をインストールした際に、マルチレポジトリ環境を構築したのですが、ブラウザでレポジトリのリストが表示されない状態になってしまいました。その時のトラブルシューティングです。</p>
<p>CentO+S5.4では、RPMForegeをインストールすれば、yum管理でMercurial1.3がインストールできます。ローカルでMercurialを使う環境を整えるのは比較的簡単にできますが、レポジトリ公開用の環境構築に癖があります。CVSやSVNの場合は、ブラウザベースでレポジトリを公開する場合は、一般的にViewvcなどが使われますが、Mercurialでは、標準で用意されています。標準で用意されている機能としては、以下の3つがあります。</p>
<ul>
<li>hg serveコマンドによる簡易サーバ</li>
<li>レポジトリを１つ公開するためのhgweb</li>
<li>複数のレポジトリを公開するためのhgwebdir</li>
</ul>
<p>hgwebサーバの構築または、hgwebdirサーバの構築には、以下の構築手順書があります。</p>
<ul>
<li>http://mercurial.selenic.com/wiki/PublishingRepositories</li>
<li>http://mercurial.selenic.com/wiki/modwsgi</li>
</ul>
<p>CentOS5.4の場合は、mod_wsgi はyumでインストールできるのでwsgi環境を整える(Pythonの環境)を整えるのは難しくありません。</p>
<p>私の場合は、上記手順書で、hgwebdirサーバの構築を行ったのですが、http://mercurial.selenic.com/wiki/modwsgiの「3.3 Mercurial」で書かれている設定ではブラウザからレポジトリ公開のトップページは表示できるけれど、レポジトリ一覧が表示できない状態でした。以下のように、CGI 設定ファイルに当たるhgweb.config を絶対パスで指定することで解決できました。</p>
<pre>from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb.hgwebdir_mod import hgwebdir
application = hgwebdir('<span style="color: #ff0000;"><strong>/var/www/myhg/hgweb.config</strong></span>') <span style="color: #ff0000;"># 絶対パス</span></pre>
<p>トラブルシューティングの手順としては、</p>
<ol>
<li>コマンドラインでMercurialのテストプロジェクトを作って動作確認する。これによりMercurial自体に問題ないことを検証。</li>
<li>hgweb,hgwebdirを使わずに、hg serveコマンドで簡易サーバを立てて、ブラウザからのアクセスを行う。ここでファイアウォールやブラウザ環境に問題ないことを確認。</li>
<li>hgwebdirの構築を行って動作確認。問題がある場合は、パーミッション、Apacheの設定、hgweb.config の設定などが考えられます。</li>
</ol>
<pre>#hg serve -p 8111 --webdir-conf /var/www/myhg/hgweb.config</pre>
<p>SVNとViewvcで構築した場合は、SVN自体の管理と、Viewvcの管理が必要になりますが、Mercurialでは、単体でViewvcのようなソースコードブラウザの管理ができ、また複数のレポジトリをサーバの再起動せずに反映させることが可能です。</p>
<p>また、yumでmercurial1.3をインストールした場合、以下ディレクトリに、hgwebdir.wsgiが存在するのでこれをコピーして使います。</p>
<pre>[root@xxx ~]# rpm -ql mercurial-1.3.1-1.el5.rf | grep hgwebdir
/usr/lib/python2.4/site-packages/mercurial/hgweb/hgwebdir_mod.py
/usr/lib/python2.4/site-packages/mercurial/hgweb/hgwebdir_mod.pyc
/usr/lib/python2.4/site-packages/mercurial/hgweb/hgwebdir_mod.pyo
/usr/share/doc/mercurial-1.3.1/contrib/hgwebdir.fcgi
<strong>/usr/share/doc/mercurial-1.3.1/contrib/hgwebdir.wsgi</strong></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.oklab.org/?feed=rss2&amp;p=388</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
