アーカイブ

‘java’ カテゴリーのアーカイブ

Google App Engine for Java で Google Data (GData) API を使う 1

2010 年 3 月 11 日 tdtsh コメントはありません

Google App Engine/Java (以下 GAE/J) のアプリケーションから、Google Calender とか、Google Mapとか、Picasa Web Albums とかと連携したい。

なんでも、Google Data (GData) APIなるものを使えば良いらしい。

Google Data (GData) APIとは

GData APIとはなんでしょう。
Google Data (GData) APIのサイトによると、
「Google DATA API では、Web 上のデータを読み書きするシンプルな標準プロトコルを提供します。」ということです。

サポートされているGoogleのサービスは、こんなにあります。(2010年3月現在)


Google Data (GData) API クライアント ライブラリ

GAE/JなのでJava版を使いますけど、phpやJavaScriptでもイケるので簡単に試せますね。

Downloads – gdata-java-client – Project Hosting on Google Codeからライブラリをダウンロードします。
サンプルは要らないので、gdata-src.java-1.40.3.zip にしましたが、ライブラリが欲しいだけならどっちでもいいです。

ダウンロードしたzipファイルの、gdata/java/lib に、たくさんjarファイルがあります。
利用したいGoogleのサービスに対し、jarファイルの名称から何が必要かなんとなく想像がつきますね。

gdata-analytics-2.1.jar
gdata-analytics-meta-2.1.jar
gdata-appsforyourdomain-1.0.jar
gdata-appsforyourdomain-meta-1.0.jar
gdata-base-1.0.jar
gdata-blogger-2.0.jar
gdata-blogger-meta-2.0.jar
gdata-books-1.0.jar
gdata-books-meta-1.0.jar
gdata-calendar-2.0.jar
gdata-calendar-meta-2.0.jar
gdata-client-1.0.jar
gdata-client-meta-1.0.jar
gdata-codesearch-2.0.jar
gdata-codesearch-meta-2.0.jar
gdata-contacts-3.0.jar
gdata-contacts-meta-3.0.jar
gdata-core-1.0.jar
gdata-docs-3.0.jar
gdata-docs-meta-3.0.jar
gdata-finance-2.0.jar
gdata-finance-meta-2.0.jar
gdata-gtt-2.0.jar
gdata-gtt-meta-2.0.jar
gdata-health-2.0.jar
gdata-health-meta-2.0.jar
gdata-maps-2.0.jar
gdata-maps-meta-2.0.jar
gdata-media-1.0.jar
gdata-photos-2.0.jar
gdata-photos-meta-2.0.jar
gdata-projecthosting-2.1.jar
gdata-projecthosting-meta-2.1.jar
gdata-sidewiki-2.0.jar
gdata-sidewiki-meta-2.0.jar
gdata-sites-2.0.jar
gdata-sites-meta-2.0.jar
gdata-spreadsheet-3.0.jar
gdata-spreadsheet-meta-3.0.jar
gdata-webmastertools-2.0.jar
gdata-webmastertools-meta-2.0.jar
gdata-youtube-2.0.jar
gdata-youtube-meta-2.0.jar

gdata/java/deps にも、こんなんいてはります。

google-collect-1.0-rc1.jar
jsr305.jar

疲れたから次回に続きます。

カテゴリー: Google App Engine, java タグ:

javax.imageio.ImageIO で gif画像 の write (とリサイズ関係)

2010 年 2 月 26 日 tdtsh コメントはありません

たまたまImageIOを触る機会があって始めて認識した事なんですが、javax.imageio.ImageIO で gif 画像を扱う時、JDK5まではreadが出きてもwirteが出来なかったんですね。

「Java SE 6完全攻略」第13回 GIFファイルの書き出し – IT Pro

よくよく考えたら判ることだったんですけど、2004年頃まではUnisys特許絡みがあったので、書き込み出来なくしてたんですね。

ImageIO と絡んでgifとかの画像のリサイズとか調べてたら、イイ感じのサンプル発見したのでメモ。

今まで AffineTransformOp を多用していたのですが、「早いけど、荒い」方法だったんですね。どうりでリサイズ後のベクター画像が汚いわけだ・・・

Image Javaテクニカルサンプル集さんの、ここここここ

多分ここのコードは物凄く再利用されているんだろうなぁ。
そういう意味では、目立たないけどすごい社会貢献だと思います。

私も見習いたいと思います。

カテゴリー: java タグ:

GAE/J (Google App Engine for java) で 拡張log4jを使う(日本時間)

2010 年 2 月 4 日 tdtsh コメントはありません

先日、GAE/J (Google App Engine for java) で log4jを使うの続きです。

こんな素敵なエントリーを発見!
GAE/Jでlog4jの日付を日本時間で出力する。- 今週のキャリッジさん

GAEの管理コンソールの[Logs]の表示を日本時間にする事は出来ないけど、ログ出力の中身を日本時間にする事は出来る模様。

logging.apache.orgから、apache-log4j-extras-1.0.tar.gz を取ってきて、解凍した apache-log4j-extras-1.0.jar を、war/WEB-INF/lib にコピーして、eclipseのビルドパスに追加しました。

それから、src/log4j.properties を修正します。

log4j.appender.A1.layout=org.apache.log4j.PatternLayout
↓
log4j.appender.A1.layout=org.apache.log4j.EnhancedPatternLayout

log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%F:%L] - %m%n
↓
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}{Asia/Tokyo} %-5p - %m%n

war/WEB-INF/appengine-web.xml 書いときます。

<system-properties>
	<property name="org.apache.commons.logging.Log" value="org.apache.commons.logging.impl.Log4JLogger"/ >
	<property name="java.util.logging.config.file" value="WEB-INF/classes/log4j.properties"/>
</system-properties>
カテゴリー: Google App Engine, java タグ:

JADでjavaのclassファイルを逆コンパイルする

2010 年 1 月 4 日 tdtsh コメントはありません

たまーに、ソースコードが手元にないjavaのclassファイルのソースが見たい時があります。
その時の為に、開発環境には必ず逆コンパイラのJADへのパスを通してます。

入手方法

私がダウンロードしたのは数年間で、http://www.kpdus.com/からダウンロードしたんですが、今は置いていないみたいです。ここで手に入ります。

使いかた

一番簡単な使い方を備忘録として書いておきます。

cd /path/to/package/

jad TargetClass.class
move TargetClass.jad TargetClass.java

これで終わりです。

詳細な使い方は、ここや、ここを参考にしてください。

カテゴリー: java タグ:

GAE/J (Google App Engine for Java) で Apache Velocityを動かす

2009 年 10 月 31 日 tdtsh コメントはありません

GAE/J で Apache Velocity は動く

わたしにとってGAE/Jをガンガン使えるか否かは、Apache Velocityが動くかどうかに強く依存しています。
他のテンプレートエンジンを触ったことないし、JSPは絶対イヤだからです。

Will it play in App Engine – Google App Engine for Java | Google GroupsにはVelocityのことは書かれていてない(2009年10月30日現在)。

結論から言うとGAE/JでVelocityは動きます。すでに動かしちゃってる先人の方もいらっしゃる様です。
ちょっと安心です。

GAEにデプロイしたサンプルはこちら
http://tdtsh-blog.appspot.com/velocity/top.vm


インストール手順

今個人的に使っているのは、velocity-1.4 と velocity-tools-1.1 なんですが、この際だから最新にしちゃいます。
Downloads – Apache Velocity Siteから、

velocity-1.6.2.zip
velocity-tools-1.4.zip

をダウンロードします。

ダウンロードした2つのzipをローカルのどっかに解凍します。

解凍したディレクトリから、jarファイルを、eclipseのプロジェクトのwar/WEB-INF/lib/にコピーします。

velocity-1.6.2\velocity-1.6.2.jar
velocity-tools-1.4\lib\velocity-tools-1.4.jar

ここまでで実行すると、依存性が解決できずに (org.apache.commons達) Exceptionはきまくりでした。
細かい依存性の管理については後回しにして、velocity-tools-1.4\lib\ の下の、commons-* を片っ端からeclipseのプロジェクトのwar/WEB-INF/lib/にコピーしました。

こいつらです。
commons-beanutils-1.7.0.jar
commons-chain-1.1.jar
commons-collections-3.2.jar
commons-digester-1.8.jar
commons-lang-2.2.jar
commons-logging-1.1.jar
commons-validator-1.3.1.jar

最終的に、依存性は maven で管理したいなぁ、と思います。


動かしてみる

先ずは、クラス my.package.VelocityServlet として、org.apache.velocity.tools.view.servlet.VelocityViewServlet を拡張してクラスを作ります。とりあえずは何も実装しなくていいです。

war/WEB-INF/web.xmlを修正して、こんな感じにしました。

<servlet>
	<servlet-name>velocity</servlet-name>
	<servlet-class>
		my.package.VelocityServlet
	</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>velocity</servlet-name>
	<url-pattern>/velocity/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
	<servlet-name>velocity</servlet-name>
	<url-pattern>*.vm</url-pattern>
</servlet-mapping>

それから、VMファイルはサーブレットからアクセス出来る必要があるので、war/WEB-INF/appengine-web.xmlを修正して、リソースファイルとして設定しておきます。今回はこんな感じにしました。

<resource-files>
	<include path="/velocity/*" />
</resource-files>

war/velocityディレクトリを作成し、その中に test.vm ファイルを作成します。
中身はなんでもいいんですが、簡単にテストする方法としては、VTLでのコメントを書けばいいです。

<html>
<body>
	<h1>Test VelocityServlet</h1>
	## if you see this message, VelocityViewServlet might not work.
</body>
</html>

http://localhost:8080/velocity/test.vm にアクセスします。

404エラーや500エラーなら、何かの設定が間違っています。
if you see… が表示されたなら、静的ファイルとして読まれているかもしれません。
(VelocityViewServletがリクエストを正しく処理していれば、if you see… の部分は見えません)

今回は、VM_global_library.vm とか velocity.properties のことには触れていないけど、リソースファイルとして配備すればもちろん使えます。encodingをきちんと設定すれば、日本語もちゃんと使えます。

カテゴリー: Google App Engine, eclipse, java, クラウド タグ: