Java

Slim3 に Scenic3 と PirkaEngineを使う方法

ここの所、随分とAppEngineへの関心が高まってきているようです。Slim3の周辺も活発になってきている事もあり、Scenic3に注目していただく方もチラホラと出てきました。注目されるということは非常にモチベーションが高まります。 今回は前回に予告した通り…

JavaScriptによるEtupirkaCMSのアップデートプログラム

EtupirkaCMS絡みでちょっとネタになりそうなプログラムを作ったので紹介します。内容としては、JSR223(スクリプト言語サポート)を使いJavaScriptでランチャープログラム(Swingアプリ)の更新を行う仕組みの解説です。 動機 EtupirkaCMSのウリとしてJavaだ…

41-無駄な警告を排除する

「プログラマが知るべき97のこと」の41個目のエピソードは、コンパイラによる警告に関する話です。静的な型付けの強い言語を好むプログラマならば、強く意識しておきたいエピソードです。静的な型付が強いコンパイル言語の場合、ソースコード上の誤りの多く…

JSR223を使ってJavaからJavaScriptを実行する時にJavaのクラスを利用する

JSR223スクリプト言語サポートでは、JavaScriptなどのスクリプト言語をJavaから利用するためのAPIを提供しています。Java6ではJavaScript(Rhino)がサポートされており、ライブラリを使えばJRubyやJythonなどが利用できます。 利用方法は簡単です。 public …

Slim3 pluginでScenic3の使い方

Slim3には簡単にプロジェクトを作成する為に使えるEclipse pluginがあります。@tomotaro1065 さんが中心になって作られていますが、ご厚意でScenic3の対応もしていただいています。ですが、自分で使ってみて使い方が解らないのではないか?と気付きました。…

21-技術的例外とビジネス例外を明確に区別する

「プログラマが知るべき97のこと」の21個目のエピソードは、例外に関する話題です。このエピソードは具体的な内容なので書くべき事はあまりありませんが、例外に関して適切に設計されているかどうかは、その開発チームのレベルがハッキリと解る部分とも言え…

pirka-mobileによるGAEのモバイル対応

1月に入ってからGoogle App Engine/Javaで必要最低限の実装でモバイル対応をするためのライブラリを書いてました。 やれることとしてはシンプルに次の3点。 絵文字の出力 キャリア判定 UID/GUIDの取得 機能てんこ盛りにすることもできますが、それならば既…

19-誰にとっての「利便性」か

「プログラマが知るべき97のこと」の19個目のエピソードは、APIのデザインに関する話題です。API(Application Program Interface)はその名前の通りインターフェイスです。インターフェイスとは、複数の異なるものの間で情報をやりとりする取り決めです。プロ…

pirka-slim3 0.1.0 リリース

pirka-slim3はテンプレートエンジン pirkaengine をGAEで利用する為のモジュールです。slim3を使ってJSPを利用したくない人にオススメです。 特徴 pirkaengineの最大の特徴は、JRE以外に依存ライブラリがない点です。したがって、GAEを扱う上での最大の問題…

BDDの話をしよう

Java Advent Calendar -ja 2011の1日目のエントリーをお送りします。カレンダーが進むにつれて高度な話や高ブクマのエントリーが増えてハードルがあがっている気がしますが、ネタ臭香ばしく行きましょう。では、本題です。Google Codeにtumbler-glassという…

開発サーバの起動引数メモ

GAE/Jの開発サーバの起動引数とappengine-web.xmlに関して、ちょっとはまっていたのでメモしておきます。GAE/Jの開発サーバは、 com.google.appengine.tools.development.DevAppServerMain をエントリーポイントとします。これは通常のエントリーポイントの…

makeAsynCallをサーバ上で実行させる

Google App Engineの各サービス(Datastore,Mail,Memcahe…)はプロダクションサーバで実行されるときにGoogleのサーバ群のどこかで実行されています。この時に使われている通信プロトコルがプロトコルバッファと呼ばれるもので、バックエンドのサービスに対…

Javaで重複したアノテーションを宣言する3つの方法

これまで気になる事がなかったので知らなかったのですが、Javaのアノテーション(注釈)では同じアノテーションを同一のフィールド(クラス、メソッドなども同様)に宣言することができないようです。 例えばこんなコードはコンパイルエラーになります。 pub…

GAEのChannel API で対戦ゲームの開発がどの程度難しいか

かなり前(SDK1.3.4-5)の頃の話題なのですが、Google App Engine でCometを実現するAPIが試験的に導入されました。デモとしてAndroidのロボットが動くやつを見た人も多いでしょう(http://dance-dance-robot.appspot.com/)。 現在、Channel APIは申請し承認…

Scenic3を可変長のURL引数に対応してみた

slim3のMLでこんなURLに対応できないの?という話があがっていました /foo/bar/a/very/long/long/long/long/long/long/long/path/ つまり、パスでIdか何かが区切られていて、かつ可変長なパターンです。 正直な所あまりないのかな?と思いつつも、ファイルの…

単純な処理の単体テストが重要

先日、appengine SDKが1.3.8にアップデートしたのですが、ローカル環境のSDKを1.3.8にした所、EtupirkaCMSの単体テストが1/3くらい失敗するようになりました。原因の1つはプロトコルバッファを使って画像加工の部分を単体テスト用に細工しているところで、A…

LocalDatastoreServiceのThreadを止める方法

JUnitで実行する分には問題は起こらないのですが、通常のJavaアプリケーションとしてGAEの実行環境を使い、LocalのDatastoreを操作したい場合、アプリケーションが終了しない問題に遭遇します。 原因は、com.google.appengine.api.datastore.dev.LocalDatast…

単体テスト勉強会

札幌Javaコミュニティの勉強会の最近のテーマは主に3つ。 言語の基礎 単体テスト GAE 今回は単体テストの基礎ということで、どのように単体テストをすれば効果的か?という点をテーマにやりました。資料はこちら。Unit testView more presentations from Sh…

気のせいじゃなかったのか?

3.4のときはこんなことなかったのに、3.6はピリオドを打った瞬間に長い時間とまる。 ゲッターアクセスしようとしてgetとおすとそれぞれ絞られるのに時間がかかって十数秒とまる。なんだこれ。 そこからセッターを見たくてあわててバックスペースを3回おすと…

scenic3 0.2.0 リリース

slim3をT2Framework風に記述できる拡張ライブラリ Scenic3の0.2.0をリリースしました。とはいっても、単体テストを追加して不要なクラスなどを整理しただけです。 0.1.0には随分とゴミコードが残っていたので・・・・。詳しくはドキュメントサイトを参照くだ…

AppEngine Ja Night Sapporo #1 完了しました

札幌でも35℃近い気温を記録した8月6日に札幌での初AJN(AppEngige Ja Night)が開催されました。参加人数は、前半のセッションが約30名、BT(Beer Talk)が約25名です。開催を告知すると一晩で100名以上の参加希望者が殺到する本家AJNには遠く及びませんが…

scenic3 0.1.0 リリース

slim3を薄くラップして、t2 framework のようなPageクラスでコントローラを記述できる拡張ライブラリscenic3をリリースしました。まだ、トライアル版に近くテストなどが十分ではありませんが、slim3の「1コントローラ=1アクションクラス」がしっくり来な…

EtupirkaCMSの開発状況

Google App Engine/ JavaをプラットフォームとするCMSの開発に着手して半年ほど経過しました。途中、なんども仕組みを見直しながら作り込みを行い、ここ1ヶ月くらいは細かい機能の調整やドキュメントの作成などリリース準備に向けて進めている段階です。予定…

Google App Engine アプリケーション開発

オープンソースカンファレンスにて札幌Javaコミュニティ枠で、GAEのセッションを行いました。内容としては、GAEの特徴についてと、slim3の紹介、spin-upとDatastoreのTipsという構成です。45分しかないので駆け足になってしまいましたが、なんとか(3分程度…

Eclipse Helios is here

最新版のEclipse、Heliosがリリースされています。どうですか、この神々しい色!

static-filesがどのくらい早いか検証してみた

Google App Engine/Javaではデプロイしたファイル郡から静的なリソースに関して、appengine-web.xml で定義することにより特別な扱いにすることができます。静的ファイルに設定したリソースのURLはウェブアプリケーションにリクエストが来ません。ドキュメン…

開発サーバとプロダクション環境でログの設定を切り替える方法

Google App Engine/Java(以下GAE)で開発をしていてはまったのでメモ。GAEで開発するならばEclipseを使うかと思いますが、GAE Plugin は必要最低限の機能を提供している感じです。したがって、プロダクション環境にアップロードされる形を意識しながら開発…

AppEngine ja Night #8 のBeer Talkで話します

銀座なう。 ということで、札幌からAppEnginge ja Nightに参加するために飛んできました。折角と言うことでここ半年ほど色々といじっているAppEngine上で動くCMS(開発中)etupirkacmsの開発で得た経験を元にspin-up関連のネタで話をすることになりました。…

Kotanの開発状況

最近は色々と平行で進めていて進捗が悪いのですが、ここ2−3日はKotanの開発を進めていました。KotanはAppEngine上のデータを引き抜いて表示・編集のできるSwingアプリケーションです。 用途としては大きく2つあり、1つはローカル環境でのデータ作成、主…

64bitのJVMでslim3を使った開発をする方法

正式には32bitしかサポートされていません。とはいえ、Javaの設定でいちいち切り替えるのも面倒です。しかし、MacのJavaには-d32という特別なオプションがあり、これを指定すれば32bitで動作してくれます。 以下設定。 Eclipse - 環境設定 - Java - Installe…