2009年10月1日木曜日

Flex Builder 3をEclipse 3.4 Ganymedeにインストール

Adobe Flex Builder 3.0.2をPleiades All in One Eclipse 3.4 (Ganymede)にインストールした。結果的にはうまく動かすことができたが、途中はまったのでメモ。

私が使っていた
Eclipse 3.4 (Ganymede)は、Flex Builder 3では正式にサポートされていないので、試される方は自己責任で。

普通にPlugin版のFlex Builderをインストールすると、右のように「製品拡張が自動的に確立されない」という謎めいたエラーメッセージを表示してインストールが終了してしまう。ただ、Pluginのファイル自体はディスク上にインストールされているようだ。

Eclipse (Ganymede)を起動して「ヘルプ」より、「ソフトウェア更新」より「サイトの追加」ボタンで、下記を指定する。
"C:\Program Files\Adobe\Flex Builder 3 Plug-in\com.adobe.flexbuilder.update.site"

Flex Builder のインストール時のダイアログ(右上)で指定しているパスとは異なるので注意。ダイアログ通りにやって何度も失敗した…

するとプラグインが表示されるので選択してから「インストール」ボタンを押せばOK!!
なお、起動はスタートアップメニューに用意されたFlex Builder Eclipseランチャーではなく、これまでどおりのPleiades 版 Eclipseの起動方法でうまくいっている。


Flex Builder はスタンドアロンでインストールするとFlex開発はもちろんできるが、Java開発のために色々追加する必要があるので、普段Java開発で使用しているEclipseで使用できると便利。

ちなみに、Eclipse 3.5 (Galileo)ではインストールまでは進むものの依存性のエラーで最終的には失敗した。



追記:
このあと、Google Plugin やSubclipse Plugin(の更新)をソフトウェア更新からインストールしようとしたら、なぜか選択してもいないFlex Builderの依存性チェックエラーが表示されてPluginのインストールができない状況が発生。
解決方法が分からず、いったんFlex Builder Pluginを削除⇒必要なPluginをインストール⇒再度Flex Builder Pluginをインストールという手順をとってしまった。毎回コレだけっこうつらい。

…回避方法の分かる方、教えてください。

2009年9月8日火曜日

HeritrixのBasic/Digest認証

HeritrixのJobを試していたが、Digest認証(Apache 2.2)で保護されているWebサイトに接続しても、401のエラーになってしまい困っていた。どうも、Settingの内容が間違っていたみたい。
手順メモ

1. Submodulesにorg.archive.crawler.datamodel.credential.Rfc2617Credentialを追加

2. Setting画面で"expert setting"に切替える

3. credential-storeの設定項目に下記を設定
 credential-domain: ホスト名(http://xxxxxx/...のxxxxxxの部分)
 realm: 認証エリアの名前(Apacheのhttpd.confの"AuthName"の部分)
 login:/password: 正しく認証されるものを設定

ここまで設定すれば正しくされる。私の場合は、realmの設定内容がわからなくて、"Basic"だの"Digest"だのを設定してずいぶんハマッた。…ふぅ

追記: HTTPなどのエラーコードは、HeritrixのWeb UIの"Help"内の"URI Fetch Status Codes"にまとまっているので便利だと気づいた。もちろんHeritrixサーバが起動していないと見れないけど。

2009年9月7日月曜日

Heritrix on Windows 2nd

前回のつづき、Windows XPで動かしたら上手くいかなかったので、今度は推奨環境にあわせて、手持ちのLinux(CentOS4.7)で実行した。

普通にコマンドラインで立ち上げてから、管理画面(localhost:8080)にブラウザで接続し、デフォルトProfileの設定内容を確認してみる。Windowsでは初期値が上手く取得出来ていなかったところ。

下記が、デフォルトProfileのModules設定内容一覧

Select Crawl Scope
org.archive.crawler.deciderules.DecidingScope

Select URI Frontier
org.archive.crawler.frontier.BdbFrontier

Pre Processors Processors
org.archive.crawler.prefetch.Preselector
org.archive.crawler.prefetch.PreconditionEnforcer

Fetchers Processors
org.archive.crawler.fetcher.FetchDNS
org.archive.crawler.fetcher.FetchHTTP

Extractors Processors
org.archive.crawler.extractor.ExtractorHTTP
org.archive.crawler.extractor.ExtractorHTML
org.archive.crawler.extractor.ExtractorCSS
org.archive.crawler.extractor.ExtractorJS
org.archive.crawler.extractor.ExtractorSWF

Writers Processors
org.archive.crawler.writer.ARCWriterProcessor

Post Processors Processors
org.archive.crawler.postprocessor.CrawlStateUpdater
org.archive.crawler.postprocessor.LinksScoper
org.archive.crawler.postprocessor.FrontierScheduler


このProfileをベースに新しいJobを作成する。
Modulesは、とりあえず初期値のままとして、設定が必須なのは、Settiongsのuser-agent:とfrom:の部分だけのようだ。ドキュメントに従い下記を設定する。

user-agent: my-heritrix-crawler (+http://mywebsite.com)
from: 自分のメールアドレス

ここで注意が必要なのは、user-agent:の書式で、括弧"("やプラス"+"も含めて書式が決まっている。間違うとJobの実行時にエラーになるので注意。

あと、うまくクロール出来ない場合の対応として、ホスト名をIPアドレスにするとうまくいくみたい。こちらの環境依存だと思うけど、ホスト名にするとJobがいつまでたっても先に進まず止まってしまう…なぜ?
とりあえず、イントラネット利用が目的なので、IPアドレスを指定することとする。

2009年9月4日金曜日

Heritrix on Windows


イントラネットサイト上の情報のデータ化が必要になりそうなので、WebクローラのHeritrixを使ってみた。HeritrixはInternet Archiveが開発したクローラとして有名で、SourceForgeで公開されている。結構使われていると思ってGoogleで検索してみても、日本語の情報が少ないみたい。

とりあえずダウンロードしてみた。そして、ドキュメントをチェックする。HertrixはJavaで開発されているので、当然マルチプラットフォーム…かと思えば、ドキュメントには「Linuxで開発、テストされているからそれ以外のプラットフォーム(Windowsとか) で動くかどうか知らないよ」と書かれている。確かに起動用のシェルとか、設定ファイルのパーミッションチェックとか、Linux(Unix)ライクになっている。

気軽なお試しのつもりでWindows XPで起動してみた。普通に起動した。…ドキュメントに従って、簡単なJobを設定…Jobの実行……ダメっぽい。ドキュメントにかかれている事と違うじゃん!!っと思ってしまう。

結局半日ほど試したがダメ。Profileに設定されているModuleやFrontier、Processorの初期値がうまく取り込まれていない様子。すべて正しく設定し直せば動くのかもしれないけど、おそらくWindowsで動作すると、設定を持っているファイルが正しく読めていないのではないかと、勝手に推測。

つぎは、Linuxで試してみよう…。
つづく

2009年7月30日木曜日

iBatorで作成したSqlMapファイルで実行時エラー

iBatorでMySQLからdao/dto/sqlmapを自動作成した。実行するとRuntimeExceptionが発生してしまう。どうも、SQLがうまく取得できないらしい。

java.lang.RuntimeException: Could not find SQL statement to include with refid 'XXX.XXXXXXX…


しばらく悩んだが、ネット上で解決法を発見。iBatorで作成したSqlMapファイルはidで名前空間を使用する定義を出力するみたい。SqlMapConfig.xmlに名前空間を有効にする設定を追記したら、問題なく動いた。

<sqlMapConfig>
<!-- 名前空間を有効に(iBatorでExampleクラスを利用するときは必須 -->
<settings useStatementNamespaces="true" />

</sqlMapConfig>

デフォルトでtrueでも良いのに…

2009年7月16日木曜日

GAEにProxy経由でアップロード


GAEを使い始めた。

会社のLANを使用しているため、GAEにアップロードできるか試してみる。

eclipseのGoogleプラグインからアップロードをすると失敗する。GAEへのアップロードのログには、ソケット接続のエラーがあった。

GAEにはHTTP接続だと思っていたが、どうやらHTTPS接続みたい。早速、Eclipseの「一般」->「ネットワーク接続」を確認すると、「SSL用に~」のチェックボックスが設定されていないことが判明。

チェックを入れたところ、GAEにアップロードができるようになった。ちなみに、Web上の先人による情報では、http*_proxy環境変数が必要とあったが、私の環境では不要であった。

会社のProxy経由でGAEにアップできないか心配だったが、問題なくできそうでよかった。

使用環境: Eclipse 3.3 (というか、Flex Builder 3 + JDT)、App Engine-SDK 1.2.2(Plugin同梱版)