2012年10月30日火曜日

AWS:org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager: method ()V not found

AWSのSimpleDBプログラムをGWT-RPCのサーバー側で呼びだそうとした時、下記のエラーに遭遇
Caused by: java.lang.NoSuchMethodError: org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager: method ()V not found
という意味不明なエラーが発生。これは、どうやら、
gwt-dev.jarにThreadSafeClientConnManagerが含まれてて、これとバッティングしている感じ。解決策としては、
  •  httpclient.jarが含まれているライブラリ、つまりAWSのライブラリを GWTより前に持ってくる
ということで解決できます。






2012年10月29日月曜日

12年度卒研ゼミナールスタート

本年度の卒研ゼミ3年次配属生が決まり、今日から3年生ゼミがスタートしました。初日ですのでまずは
  • 自己紹介
  • 諸連絡、紹介
  • メールアドレス登録
  • マシンアカウント確認
など例年通りなわけですが、今年はスマホ率、Gmail利用率が高いです。
そして、もっと驚いたのが、「じゃ、Gmailで私にメールを送ってください」と指示したところ、スマホ持っている学生は全員、スマホからGmailを出そうとしたこと。目の前に、ログインが完了したPCがあるのにもかかわらずです。今の学生にとって、Gmailというのはスマホ用のメールアドレスという認識が高いようですね。スマホ世代到来といった感じです(悪い意味ではなく、いい意味で)。

なお、今年の3年生のゼミは、下記の書籍を使います。生協置いてますのでゼミ生は購入してください。
作って覚えるVisual C #2010 Express入門
昨年度の書籍はちょっと難しすぎた反省もあり、今年は「言語的なもの」ではなく「プログラミング」を経験できるゼミにしたいと思ってます。学内のPC室でもVisual Studio2010が入ってまので、例年に無く、ゼミ課題がしやすい環境になっているのではないかと期待しています。


2012年10月22日月曜日

GWT:EclipseでUiBinderファイルを作成した時にInvalid web.xml file.

EclipseでUiBinderを作成した時に、最初にUiBinderのxmlを開いて「Design」タブを開くと、上記のような画面が出ることがあります。


このような画面が出た時は、とりあえず、war/WEB-INF/web.xml を一度開いてください。そうすると、上記のエラーは無くなります(Reparseを押してください)。



2012年10月19日金曜日

Eclipse:jdoconfig.xmlファイルのエラー

最近、Eclipseでウェブアプリを開発しているときに、jdoconfig.xmlファイルに下記のようなエラーが出るようになりました。


これは、どうやらjdoconfigのnamespace定義しているURIが違うって感じのエラーです。実害はないようですが、気持ち悪いですね。このエラーを消す方法ですが、
  • xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig"を思い切って消す(たぶん実害なし?未確認)
  • xsi:schemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig http://java.sun.com/xml/ns/jdo/jdoconfig_3_0.xsd" を追加する
のいずれかが解決策です。後者の場合は下記のようになります。



Android: ListActivityを使う

Androidアプリにおいて、リスト表示のUIには
  • ListView
  • ListActivity
のいずれかを利用する方法があります。どちらも動作速度的には違いはないようですが、単純なリスト表示だけのUIを用意するのであれば、後者のほうがコードがすっきりするため、ListActivityを用いるのをオススメします。

クリックイベントのとり方
onListItemClickメソッドをオーバーライドするだけでいいです。
@Override
protected void onListItemClick(ListView listView, View v, int position,long id) {
  super.onListItemClick(listView, v, position, id);
  System.out.println(position+"番目押した");
}

リストの更新
 更新対象となるリスト内の行の位置から、表示内容を管理しているListのitemを取り出して修正し、最後にadapterのnotifyDataSetChangedメソッドを呼べば更新されます!例えば以下の様な感じ。
 item=list.get(position);
 item.setText("30");
 adapter.notifyDataSetChanged();
参考URL



2012年10月16日火曜日

Eclipse: GWT+GAE のプロジェクト作成でエラー(/web.xml already exists)

Eclipse でGWT+GAEのプロジェクトを作成しようとした時、
Creation of element failed:
Reason: Resource '/xxx/war/WEB-INF/web.xml' already exists.
というエラーが出て作成できない場合があります。この時は,
  • とりあえず、GAEをOFFにしてプロジェクトを作成し、後から追加
という手順で解決します。

2012年10月12日金曜日

SimpleDBのJava用マッパークラスを公開しました

Amazonの提供するクラウドデータベースの1つSimpleDBのラッパーライブラリを開発しています。SimpleDBには意外にも用意されていないという現実。研究室では以前からHibernateやObjectifyのようなO/Rマッパーライブラリを積極的に利用していましたから、当然同じことをしたくなるわけです。それじゃあ自作しようかということで、院生のタクボ君にいろいろ頑張って調べていろいろコードを書いてもらいました。

で、とりあえずCRUDの基本的なことはだいたいできたので、とりあえず公開です。

2012年10月11日木曜日

mgwt:選択されたラジオボタンを識別する

MGWTでのラジオボタン(MRadioButton)の使い方のメモ書きです。
MRadioButton mrb = new MRadioButton("Group1");
mrb.setText("ここにラベル名");
mrb.setFormValue("ここに内部データ");

mrb.addValueChangeHandler(new ValueChangeHandler() {
  @Override
  public void onValueChange(ValueChangeEvent event) {
    System.out.println(((MRadioButton)event.getSource()).getFormValue()+ "を選択 ");
  }
});
ポイントは
  • 各アイテムの内部データをFormValue で管理
  • onValueChangeイベントを利用して選択されたアイテムを監視
  • getSourceでイベントが発生したアイテムのオブジェクトを検知し、FormValueを呼び出す
というところでしょう。

2012年10月2日火曜日

Java:scheduleメソッドとscheduleAtFixedRateメソッド

Javaでタイマー処理を行う際は、
  • java.util.timer クラス
を利用しますが、タイマーを起動するメソッドには、scheduleメソッドとscheduleAtFixedRateメソッドの2つが存在します。それぞれの違いを下記に書きます。

scheduleメソッド
  • 処理が行われる毎に、一定間隔(指定した時間)待って繰り返し(相対時間で繰り返し)
  • 遅延が発生した場合、処理がどんどん遅くなる。
scheduleAtFixedRateメソッド
  • 起動した時間を基準にして、一定間隔(指定した時間)で繰り返し処理を行う(絶対時間で繰り返し)
  • 遅延が発生した場合、繰り返しの間隔が狭くなる