Hatena::ブログ(Diary)

public static void main

誰かが困って検索したときに助けになる話題を書いていければと思っています。

2009-03-22

[][]Tomcat6のインストールとEclipse3.4のWTPで使用する時に詰まったことメモ

OSはWindows XPTomcatのバージョンは6.0.18です。

追記:

GoogleからTomcat5.5+Eclipse3.4でアクセスしてくる方が多いのですが、おそらくEclipse3.4のWTPで作ったプロジェクトがTomcat5.5にデプロイできない(ターゲットランタイムで選べない)ことについてではないかと思ったので一言。

Tomcat5.5にデプロイできるプロジェクトを作るには、動的Webプロジェクトを作成する際に動的Webモジュールバージョンを2.2に変更すればOKです(デフォルトでは2.5)。


Tomcat5.5とTomcat6の並存

Windows環境でインストール用のexeを使ってTomcat6のインストールを仕様としたら以下のようなエラーが発生。

Failed to install Tomcat6 service.
Check your settings and permissions
Ignore and continue anyway (not recommended)?

別のバージョンのTomcatが入っているときに発生するエラーで、どのTomcatのWindowsサービスの名前も「Apache Tomcat」となっているため、サービスを登録するときにエラーになるようです。

Eclipseからだけ使う分にはサービスとして使う必要はないので無理やりインストールを続行してしまってもよいのですが、並存させたい場合はサービス名を変更してやる必要があります。

Tomcat6をインストールする前にコマンドプロンプトを開いて以下のコマンドを実行します。

sc config tomcat5 DisplayName= "Apache Tomcat 5.5"

これで元の「Apache Tomcat」から「Apache Tomcat 5.5」と言う名前に変更できたので、Tomcat6のインストーラを実行すればエラーなくインストールができます。

名前に統一感を持たせたい人はtomcat6のサービス名のほうもリネームしてください。

ちなみにDisplayName=の後のスペースは必須です。


参考


Eclipseでサーバを定義(あるいは起動)

WTPで開発する際にはサーバ(Servers)を定義するのですが、その際にTomcat6が選択肢に出てくるのですが選択しても「選択されたタイプを使用してサーバーを作成できません」と表示されてウィザードを進めることができませんでした。

普通のTomcatサーバを起動しようとしてもjava.io.UnsupportedEncodingExceptionが発生して動かないようです。

これは、「TOMCAT_HOME\conf」以下のtomcat-users.xmlの一行目が以下のようになっているからです。

<?xml version='1.0' encoding='cp932'?>

このxmlファイルの実際のエンコーディングUTF-8なので、以下のように修正します。

<?xml version='1.0' encoding='utf-8'?>

これで上記のどちらの問題も解決しました。


参考

2009-02-28

Maven2のロゴ

[][]Eclipse 3.4.2とm2eclipseでMavenを使ったJavaのライブラリ管理

先日、後輩向けにJavaの事始からWicketのあたりまでざっと話をしたのですが、その中で触れたm2eclipseのインストールと使い方についてまとめておきます。

今回の記事ではライブラリ管理についてのみ言及しています。

Eclipseのバージョンは3.4.2でWTPが最初から入っている「Eclipse IDE for Java EE Developers」を使っていますが、3.4.x系なら同じようにできると思います。Pleiadesを使って日本語化していますので、デフォルトの英語のままの方は適当に読み替えてください。

全体的にWebからダウンロードする作業が多いので結構時間がかかりますが、2回目以降はもっと早くなります。

まだ使い始めたばかりの拙い知識で書いているので、間違いやもっとよい方法がある場合はぜひぜひご指摘ください。

1. Mavenとは

MavenとはApache Software Foundationで開発されているJavaのソフトウェアプロジェクト管理ツールです。

Maven は Project Object Model (POM) という考え方に基づき、プロジェクトのビルド、テスト、ドキュメンテーション、成果物の配備など、プロジェクトのライフサイクル全体を管理します。プロジェクトのビルドツールである Ant とは異なり、Maven はプロジェクト管理ツールとして、プロジェクトに関する色々な情報を POM に集約し、POM の情報に基づきプロジェクト全体を管理します。

1. Maven とは | TECHSCORE(テックスコア)

最近のJavaの開発ではデファクトスタンダードになりつつあるようです。

私自身Mavenを使い始めたのは結構最近です。というのも、EclipseやNetBeansのようなIDEを使っているとビルドやテストやパッケージ化などもサポートしてくれるためあまりMavenのよさがわからなかったことやpom.xmlを書くのが面倒くさかったりしたからです。しかし、ライブラリ管理やIDEを起動しなくてもビルドやテストを行うことができるなど多くのメリットがあることが実際に使ってみるとわかると思います。

ちなみにm2eclipseのデフォルトのローカルレポジトリは「C:\Documents and Settings\ユーザ名\.m2」になります。



2. m2eclipseのインストール

1. Eclipseを起動して、「ヘルプ」>「ソフトウェア更新」を選ぶ

2. 「使用可能なソフトウェア」タブを開く

3. 「サイトの追加」ボタンを押して、「http://m2eclipse.sonatype.org/update」を入力してOKを押す

4. 下記のようにインストールするものにチェックを入れた後に、「インストール」ボタンを押す

f:id:Kishi:20090228154917j:image

5. 後はウィザードに従って進めていくとインストール開始

6. インストール終了すると再起動を求めるダイアログが出てくるので、「はい」を選んで再起動する

これでm2eclipseのインストール作業は終了です。

再起動をすると以下の図のようにインデックスの更新が行われますが、ダウンロードを伴うので少し時間がかかります。インデックス更新の途中で中止したりして失敗するとこれから紹介するm2eclipseの機能が一部うまく動かないことがありますが、その場合はEclipseを再起動してインデックスの更新を再度行えばうまくいくかもしれません。

f:id:Kishi:20090228160252j:image


Mavenコンソールが表示されない場合、コンソールの右上の「コンソールを開く」を押して「Maven Console」を選択してください。

以下のような警告が出た場合、

f:id:Kishi:20090228161341j:image

eclipse.iniの一行目に

-vm
C:\Program Files\Java\jdk1.6.0_11\bin\javaw.exe

を追加してください。JVMの位置は自分の環境に合わせて変更してください。今回の紹介する内容ではこの作業は行わなくてもよいです。


ちなみにEclipseを起動するたびにインデックスの更新が行われます。初回よりも速くなりますが、インデックスの更新が行われるのがわずらわしい人は以下のように設定すると起動時に更新が行われなくなります。

1. 「ウィンドウ」>「設定」を選ぶ

2. 「Maven」を選択して、「始動時にレポジトリー・インデックス更新をダウンロード」のチェックを外して「OK」ボタンを押す

手動で更新を行う場合は、「設定」の「Maven」>「インストール」を開いて「ローカル・レポジトリー索引再作成」ボタンを押してください。



3. Mavenプロジェクトを作成

「ファイル」>「その他」を選択して、以下のように「Maven Project」のウィザードを開始してください。

f:id:Kishi:20090228163107j:image

今回はアーキタイプを使わずにプロジェクトを作成するので、一枚目のウィザードで「シンプルなプロジェクトの作成」にチェックを入れてください。

次のウィザードの必須部分である「グループ Id」に「test」、「アーティファクト Id」に「first-maven」と入力して「完了」ボタンを押すとプロジェクトが作成されます。

グループ Id(groupId)はプロジェクトを一意に識別する名前で、プロジェクトのルートパッケージ名を指定するのが一般的です。

アーティファクト Id(artifactId)はプロジェクトの成果物の名前です。JARやWARにつける名前を指定してください。

作られたフォルダ構成がMavenプロジェクトの一般的なフォルダ構成です。別のフォルダ構成でもMavenを使うことができるようですが、特別な理由がない限りはこの構成に従ったほうがよいです。

first-maven
├  pom.xml
├  target
└─src
    ├─main
    │  ├─java
    │  └─resource
    └─test
        ├─java
        └─resource
名前役割
pom.xmlプロジェクトの情報を持つファイル
target成果物を置くフォルダ
src/main/javaJavaのソースコード
src/main/testJavaのテストコード

特に重要なのはpom.xmlで、テキストエディタで開いてみると以下のような情報が現在書いてあります。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>first-maven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</project>

ここにプロジェクトの依存ライブラリやビルドの情報などを追記していくのがMavenプロジェクトの特徴です。



4. ライブラリの追加と削除

m2eclipseを使うとセントラルレポジトリに登録されているライブラリを簡単に追加することができます。

今回はCommons Langを追加してみます。

以下の図のようにプロジェクトの上で右クリックをして「Maven」>「依存関係の追加」を選択してください。

f:id:Kishi:20090228170028j:image

ダイアログの入力フォームに「commons-lang」と入力すると、インデックスの作成がうまくいっていれば、インクリメンタルにセントラルレポジトリに追加されているライブラリを検索できます。

ライブラリはデフォルトではもっとも最新のバージョンのものが選択されていますが、Commons Langは変わった名前のバージョンのものがひとつあるのでツリーを開いて以下のように2.4を選択してOKを押して下さい。

f:id:Kishi:20090228170628j:image

OKを押すとライブラリと依存ライブラリのダウンロードを開始します。ローカル・レポジトリーにすでにある場合は高速にライブラリの追加を行うことができます。

pom.xmlを開くと以下のようにdependencies要素が追加されていることがわかります。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>first-maven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
  	<dependency>
  		<groupId>commons-lang</groupId>
  		<artifactId>commons-lang</artifactId>
  		<version>2.4</version>
  	</dependency>
  </dependencies>
</project>

Mavenではこのようにdependencies要素の中にdependency要素を追加していくことで依存ライブラリの管理を行います。

今回はフォームから検索して追加しましたが、pom.xmlに手動でdependency要素を追加しても依存ライブラリが自動的に追加されます。

依存ライブラリを削除する場合はpom.xmlをテキストエディタで開いてそのdependency要素の部分を消して保存するとOKです。

実際に作業をしてもらうとわかると思うのですが、これだけ簡単にライブラリの管理ができるのは画期的です。PerlCPANなどとは異なり、新しいライブラリを追加してもその影響範囲はプロジェクトに限定されるのもいいところだと思います。



5. アーキタイプでWicketの開発を始める

アーキタイプ(archetype)とは原型という意味で、Mavenではこれを使うことでフレームワークなどを利用したアプリケーションを作る際の最低限の構成を持ったプロジェクトを作成でき、開発の開始の時間的なコストを大幅に削減することができます。

「ファイル」>「新規」で「Maven Project」を選択してください。

「ファイル」>「その他」を選択して、以下のように「Maven Project」のウィザードを開始してください。

今回は一枚目のウィザードの「シンプルなプロジェクトの作成」にチェックを入れないでください

二枚目のウィザードで「カタログ」に「Nexus Indexer」を選択してフィルターに「wicket」と入力すると1つのアーキタイプに絞り込まれると思います。

f:id:Kishi:20090228174928j:image

「Show the last version of Archetype only」のチェックを外すと最新のライブラリのバージョン以外のアーキタイプを選択することができます。今回はバージョン1.3.5をのアーキタイプを選択して「次へ」を押してください。

f:id:Kishi:20090228175210j:image

最後のウィザードは「グループ Id」には「test.wicket」、「アーティファクト Id」には「first-wicket」、「パッケージ」には「test.wicket」を入力して「完了」ボタンを押してください。

これでWicketの最小限の設定とライブラリを持つプロジェクトが作成されました。

Javaコンパイラのバージョンが1.4になっている場合があるので、そのときはプロジェクトの上で右クリックして「プロパティ」を選択して、「Javaコンパイラー」のコンパイラ準拠レベルを変更してください。

m2eclipseでアーキタイプを使うことのデメリット

今回のwicket-quick-startの場合だとプロジェクト・ファセットの動的Webプロジェクトのバージョンが2.4で作られてしまいます。

Tomcatだと6以降のバージョンでないとこれに対応していないため、デプロイを行うことができません。開発環境によってはこの設定だと困るという人もいると思いますが、後から変更することもできないようです。コメントにて変更方法のご指摘がありました。


6. jettyをサーバとして起動

先ほど作成したwicket-quick-startのアーキタイプを利用したプロジェクトは動的ウェブプロジェクトとして作られているので、WTPで扱うことができます。Tomcatなどのサーバにプロジェクトを追加することができますが、Mavenでは自分でインストールする必要なしにJettyプラグインを用いることでサーバを利用することができますので、今回はこれを利用してみます。

メニューの「実行」>「実行の構成」を選択します。

左側の一覧の中から「Maven Build」の上でダブルクリックを押すと新規構成を追加することができます。

f:id:Kishi:20090228180728j:image

「名前」を「Jettyで実行」に変更してください。

次に「基底ディレクトリ」を、「ワークスペースの参照」で先ほどの「first-wicket」プロジェクトを選択してください。

「ゴール」を、「選択」を押して上部のフォームに「jetty」と入力してフィルタを実行してから「jetty - org.morbay.jetty:maven-jetty-plugin」の「run」を選択してください。

f:id:Kishi:20090228181158j:image

「実行」ボタンを押すと必要なプラグインのダウンロードが開始します。

ダウンロードが終了してJettyサーバが起動したら、ブラウザからhttp://localhost:8080/first-wicket/ にアクセスすると以下のようなWicketで生成されたページを見ることができます。

f:id:Kishi:20090228181726j:image



7. 結びに

今回はライブラリ管理についてしか触れていませんが、この点だけでもMavenを導入するメリットが十分あることがわかっていただけたのではないかと思いますのでぜひMavenを試してみてください。

ちなみにMaven2を扱った日本語の本では、2年前なので若干内容が古いかもしれませんが以下の本が入門書としてよいと思います。

Apache Maven 2.0入門 Java・オープンソース・ビルドツール
野瀬 直樹 横田 健彦
技術評論社
売り上げランキング: 48734



おまけ:セントラルレポジトリにないライブラリを追加する方法

ActiveObjectsの場合

ActiveObjectsはdev.java.netで公開されていますが、ここの場合ですとMavenの公開方式にしたがっているレポジトリのため以下のようにrepositories要素を追加することですることでライブラリを追加することができます。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>first-maven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <repositories>
      <repository>
        <id>maven2-repository.dev.java.net</id>
        <name>Java.net Repository for Maven</name>
        <url>http://download.java.net/maven/2/</url>
        <layout>default</layout>
      </repository>
  </repositories>
  <dependencies>
    <dependency>
      <groupId>net.java.dev.activeobjects</groupId>
      <artifactId>activeobjects</artifactId>
	  <version>0.8.2</version>
    </dependency>
  </dependencies>
</project>


Butterfly Persistenceの場合

Butterfly PersistenceはMaven形式のレポジトリを提供していません。こういうライブラリをMavenで扱う場合、ローカルレポジトリに手動でライブラリを追加することで対処します。

Mavenをインストールした状態で、Betterfly PersitenceのJARをダウンロードしてからコマンドプロンプトで以下のコマンドを実行してください。

mvn install:install-file -Dfile="C:/java/lib/jenkov-butterfly-persistence-5.0.0.jar(JARのパス)" -DgroupId=com.jenkov.butterfly -DartifactId=butterfly-persistence -Dversion=5.0.0 -Dpackaging=jar

ローカルレポジトリに登録した後は以下のようなdepencency要素をpom.xmlに追加すると依存ライブラリを追加できるようになります。

<dependency>
  <groupId>com.jenkov.butterfly</groupId>
  <artifactId>butterfly-persistence</artifactId>
  <version>5.0.0</version>
</dependency>

2008-03-15

[][]Scala触ってみた

一部で話題になっており、関数型の言語を一度触ってみたかったので、勉強がてら使ってみました。

今回は、チュートリアルを元に、導入と簡単なScalaプログラムの作成、Javaとの連携の方法をまとめます。

Scalaとは

スカラと読むそうです。防御力が上がりそうですね。

JavaやRubyのようなオブジェクト指向言語とLispやHaskellのような関数型言語の中間にある静的型付け関数型言語です。

JVM上で動くので、Javaのライブラリを使うことができ、またコンパイルするとJavaのクラスとして実行することもできます。


導入

Java1.4 以降の環境が必要です。

Scala本体は以下のページからダウンロードできます。現在の最新バージョンは2.7です。

no title

Windowsの場合、zipを落としてきて解凍し、binにパスを通して以下のコマンドが実行できればOKです。

C:\>scala -version
Scala code runner version 2.7.0-final -- (c) 2002-2008 LAMP/EPFL

プログラムを書いてみる

まずは、お決まりのHello World!から。以下のプログラムをHelloWorld.scalaと名前を付けて保存します。ちなみに日本語を使う場合はUTF-8で保存してください。

object HelloWorld{
	def main(args: Array[String]){
		println("Hello world!")
	}
}

コマンドプロンプトで以下のコマンドでコンパイル&実行します。

C:\scala>scalac HelloWorld.scala

C:\scala>scala HelloWorld
Hello world!


ScalaにはRubyのirbのような対話型の実行環境もあり、scalaと入力すれば実行可能です。


Javaとの連携

Javaのパッケージを利用する

Javaのパッケージをインポートするには、

import java.util.List

のような感じで行えます。

同じパッケージ内のものを複数指定する場合は、

import java.util.{List, ArrayList}

のように書けます。

まとめてインポートするときは*ではなく

import java.util._

とアンダーバーを使います。

読み込んだクラスは

var list = new ArrayList[String]()
list.add("hoge");

のように違和感なく使うことが出来ます。

またクラスだけでなくメンバメソッドを読み込んで使うことが出来ます。


Javaプログラムとして実行する

scalacでコンパイルされて生成されるclassファイルはJavaのclassファイルと同じなので、ダウンロードしたScalaのフォルダのlib以下にあるscala-library.jarをクラスパスで指定すれば、Javaプログラムとして実行することが出来ます。

java -classpath .;C:\scala\lib\scala-library.jar HelloWorld

その他の特徴

  • 純粋オブジェクト指向言語なので、関数やJavaのintのようなプリミティブなものもオブジェクトとして扱う
  • 文末のコロンは必須ではない
  • staticなメンバは存在しない→シングルトンオブジェクトでメンバを定義する
  • オーバーライドするときは、明示的にoverride def hoge(){}とする

終わりに

とりあえず、今回はScalaの導入と簡単なプログラムの実行を行いましたが、これではJavaで書くのと大差ありません。チュートリアルでは、クロージャやケースクラス、パターンマッチなどが取り上げられているので、その辺りを使って、今後は関数言語らしい使い方をしてみたいと思っています。何か適当な課題があればよいのですが。

あと、Twitterにも書いたのですが、関数型言語は勉強用や研究以外で活躍している場というのがあるのでしょうか。どうせやるなら何かに使えると思うとやる気が出ますしね。


参考

2007-11-14

[]Windowsのタスクを使って一定時間後にシャットダウンさせる

決まった時間ごとに処理を行ったり、一定時間後にマシンをシャットダウンしたり、といったことが必要になるときがあります。

これを実現するために、Linuxの場合はcronを使いますが、Windowsではタスクと呼ばれている機能を使います。

このタスクを使ってWindowsを一定時間後に終了する処理を書いてみます。

環境はXPでしか試していませんが、2003でもいけるはずです。

シャットダウンするには

C:\WINDOWS\system32\shutdown.exeがシャットダウンのプログラムファイルです。

実行時に、shutdown -sと引数をつけてやる必要があります。


ウィザードを使ってタスクを登録

以下のいずれかの場所から「スケジュールされたタスクの追加」を開始してください。

  • コントロールパネル>タスク
  • C:\WINDOWS\Tasks\
  • アクセサリ>システムツール>タスク
  1. ウィザードを開始したら、まずは次へを押してください。
  2. 実行するプログラムを聞かれるので、「参照」から上記のshutdown.exeを選択してくさい。
  3. 名前は適当につけてもらって、「このタスクの実行」から適切なものを選んでください。(今回は「1回だけ実行」を選択)
  4. 日時を聞かれるので、今回は5分後に設定します。
  5. パスワードを入力します。処理によっては、ユーザに権限がないと実行できないものもあります。
  6. 最後に完了を押すと、ウィザードは終了します。

ウィザードを使うと引数の指定ができないようなので、あとからタスクを開いて実行するファイル名の後ろに-sを追加してください。

ウィザード終了前に「完了をクリックしたときに詳細プロパティを開く」にチェックをしておくと、終了した後にすぐタスクのプロパティが開くので簡単です。

コマンドからタスクを登録

ウィザードを使わなくても、以下のコマンドを打つことでコマンドプロンプトからタスクを登録することもできます。

schtasks /create /tn "shutdown2" /tr "C:\WINDOWS\system32\shutdown.exe -s" /sc ONCE /st 12:00:00

パスワードの入力を求められるので入力してください。

tnはタスクの名前。

trは実行するプログラムの位置。

scは実行するスケジュールの種類。(MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY, ONCEなど)

stは実行する時間。

とそれぞれ指定します。

削除方法や細かい設定は以下を参照してください。

参考

We are sorry, the page you requested cannot be found

http://www.atmarkit.co.jp/fwin2k/win2ktips/582schtasks/schtasks.html



終わりに

削除する場合は、タスクのフォルダに移動して、タスクをゴミ箱に送ればよいです。コマンドからも削除できます。

ノートPCだと、電源の状態によってタスクの実行を制御できるようです。デフォルトではタスクが実行されない設定になっているので注意が必要です。

今回は、shutdown.exeを実行しましたが、試してみる場合はメモ帳などで行ってみるとよいかもしれません。

また、自分でShellを書けば複雑な処理を行うこともできますので、いろいろと試してみたいですね。

2007-11-05

[][]RubyでAtomをパースする

Oshira.se APIから情報を検索して表示するプログラムを勉強がてら書いてみました。

Railsを使わずに、まともにRubyのコードを書くのははじめてかも。

net/httpでAtomを取得して、REXMLでXpathを使って解析しています。

Windows環境なので、ところどころで文字コードを変換しています。

ソースコード

get_atom.rb

require "rexml/document"
require "iconv"
require "uri"
require "net/http"

#引数がない場合
if ARGV.length == 0 then
	puts "Usage: ruby get_atom.rb keyword"
	exit(1)
end
#化けるのでUTF-8に変換
keyword = URI.encode(String(Iconv.iconv("UTF-8", "Shift_JIS", ARGV[0])))
url = URI.parse("http://api.oshira.se/news?q="+keyword+"&s=d")
#GET
doc = REXML::Document.new(Net::HTTP.get(url))
entries = REXML::XPath.match(doc, "feed/entry/")
#順番に表示
entries.each do |entry|
	#コマンドプロンプトで表示するのでShift_JISに変換
	puts Iconv.iconv("Shift_JIS", "UTF-8", String(REXML::XPath.match(entry, "title/text()")[0]))
end

実行

ruby get_atom.rb Java

実行結果

Vintage Computer Festivalレポート【初日編】
[JAVA]とある無償配布クライアントソフトをインストー..
JavaFesta札幌
【コラム】Java API、使ってますか? 第30回 Javaアプリケーションにオブジェクトのキャッシュ機構を提供するJCache API
米モジラが「Firefox」の新版を公開、複数の問題を修正
米モジラが「Firefox」の新版を公開、複数の問題を修正
フリーの最強IE7アドオン「IE7Pro 1.2」リリース、さらに機能を追加
MSの画像フォーマット「HD Photo」、「JPEG XR」として標準化へ
米モジラが「Firefox」の新版を公開、複数の問題を修正
ウノウラボ Unoh Labs: PHPで暗号化・復号化あれこれ
Javaのプロパティファイルの読込に関する質問です。「..
Google「Open Social」公開、SNSに何が起きる?:CNET Japan オンラインパネルディスカッション - CNET Japan
BEAがSOAの新コンセプト「Genesis」提唱,システムの組み換えを簡素化
Mozilla,バグ修正版「Firefox 2.0.0.9」を公開,Windows版のクラッシュ問題に対応
モバゲーのゲーム開発者が語る、モバイルFlashコンテンツ作成のポイント

Windowsの環境だからなのかもしれませんが、やたらと文字コードの変換やStringにキャストを行う必要がありました。

あと、返ってきた結果によっては、iconvで変換時にエラーになります。

iconvの引数は 変換後の文字コード 変換前の文字コード なので順番が直感的にわかりにくいですね。

このままだと使い物にならないので、時間があればLinux上で試してみます。