2013-02-27

PHP: It is not safe to rely on the system's timezone settings

PHPのアプリをインストールしようとしたとき、表題のように
 It is not safe to rely on the system's timezone settings
というメッセージが出ることがあります。これは、PHPでのタイムゾーンの設定ができてないからです。

その際は、/etc/php.ini を開いて
  • date.timezone = Asia/Tokyo を追記
  • Apacheを再起動(しなくてもいいかな?
とすればOK。

GAE:Java7に対応へ

ようやく、Google App EngineがJava7対応になるようです。
Java 7 Considerations
現在は試験運用のようです。Java6のコードが動かなくなるという意味ではないと思いますが、ただ、「Java 6ベースのアプリがJava7で動くかどうか試しとけ、、」みたいなことは書いてますので、移行に向けて確認をしておくほうがいいでしょう。
この件はGAEのサーバの話ですし、将来的にJava6のサポートを廃止するようですので、我々開発者には「Java7に移行しない」という選択肢はないと考えたほうがいいでしょう。

ちなみに移行時にはいきなりどーんと変わるんでしょうかね?スイッチみたいなのを用意するのでしょうか?気になるところです。






2013-02-26

2012年度教育システム情報学会関西支部学生研究発表会

今年も下記の学生研究会で発表します。おちラボからはM1の5名が発表します。
昨年度優秀ポスター賞を得たタブレットシステムも、バージョンアップして今回もポスター発表となります。

発表会 日時・場所
 日時:2013年3月9日(土)13時から
 会場:関西学院大学 大阪梅田キャンパス 14階
    http://www.kwansei.ac.jp/kg_hub/

発表会のスケジュール、プログラムなどは関西支部のサイトをご覧ください。

参加費は無料です。


2013-02-25

GWT: 標準ライブラリのHTML5Canvasを利用する ~UiBinder編~

GWTでHTML5Canvasを利用するのであれば、UiBinderを利用するとラクになります。

Inheritsの設定
<inherits name="com.google.gwt.canvas.Canvas">
と書きます。

UiBinderの書き方
xmlns:c="urn:import:com.google.gwt.canvas.client"
 <c:Canvas ui:field="canvas"/>
と書きます。

Javaファイルの書き方
ここはいくつか注意事項があります。
@UiField(provided = true)
Canvas canvas;
public MyCanvas() {
 canvas = Canvas.createIfSupported();
 initWidget(uiBinder.createAndBindUi(this));

 canvas.setWidth("800px");
 canvas.setHeight("800px"); 
 canvas.setCoordinateSpaceWidth(400);
 canvas.setCoordinateSpaceHeight(600);
}
上記を見てもらうとわかりますが、
  • @UifFieldのところに、(provided = true)が必要
  • canvas = Canvas.createIfSupported()の処理が必要で、さらにそれは initWidgetの前にしなければならない
ということです。

以上で、普通にCanvasを利用できます。イベント処理も楽になるのではないでしょうか。

GWT: 標準ライブラリのHTML5Canvasを利用する

GWTでHTMLCanvasを利用するには、過去にはサードパーティ製のライブラリ、例えば、
などがありましたが、今では 「com.google.gwt.canvas」の中に取り込まれています。以下、簡単な使い方です。
  Canvas canvas = Canvas.createIfSupported();
  canvas.setWidth("400px");
  canvas.setHeight("400px"); 
  canvas.setCoordinateSpaceWidth(400);
  canvas.setCoordinateSpaceHeight(400);
 Context2d context = canvas1.getContext2d();
上記には少しポイントがありまして、Canvas領域のサイズを変更するには、
setCoordinateSpace****();
というのを使わないといけないということ(これを理解するのに苦労しました)。

あとは、Context2dに対して描画のメソッドを呼ぶだけです。例えば下記のようにです。
context.fillRect(x,y,w,h);//塗りつぶした四角形を描く。尚、塗りつぶす色の指定はfillStyleプロパティで設定する。
context.strokeRect(x,y,w,h);//線だけの四角形を描く。尚、線の色の指定はstrokeStyleプロパティで設定する。
context.clearRect(x,y,w,h);//四角形の内容を消去する。
context.rect(x,y,w,h);//他のパスと組み合わせて四角形を描く。
context.fillText(text,x,y,[maxWidth]);//塗りつぶしのテキストを指定座標に描画する。
context.strokeText(text,x,y,[maxWidth]);//線だけのテキストを指定座標に描画する。
context.moveTo(x,y);//パスを作成する際に指定座標に移動させる。
context.lineTo(x,y);//直線を描画する。
context.stroke();//lineToメソッドなどで描画したパスを表示する。
その他にも、図形の回転、イメージ・映像の描画、描画した内容の保存などができるメソッドがあり、様々な表現がCanvas上で実現できるようになっています。

P.S
後記事の
のほうがオススメです。


MSWord:ワードでソースコードを書く方法


おちラボでは、卒論や修論の執筆にワードを利用してます。(理系ならTexだろ?という意見はとりあえずおいといて、、)
論文中にソースコードを一部を掲載して説明するような場合が少なからずありますが、ふつうにソースコードを貼り付けるとかっこ悪いわるくなりますので、フォーマットに工夫が必要となります。
その工夫は以下の通り。
(1)ソースコードの部分は表にする
(2)表内の行間を狭くする
ここは、段落設定にて行間を「固定値」に変えて間隔を好みに応じて変えてみるといいでしょう。なお、固定値にするだけで良い感じの行間になります。



(3)好みに応じてフォントを変えてみる
ソースコードに適したフォントなどもあるようですが、日本語のフォントとのバランスが注意です。
(4)好みに応じて背景色を変えてみる
灰色っぽい色にするとかっこ良く見えたりします。

下記は、ワードの例です(クリックで拡大)。ちなみに、表全体を右方向に1段階インデントかけてます(表全体を選んで右インデント1回)。なかなか良い感じではないかと。。。

1つでもソースコード用の表を作っておけば、後は表ごとコペ-&ペーストで貼り付ければフォーマットを再利用できます。



2013-02-22

GWT:GWT-BootStrapはじめの一歩

ちょっと巷で流行ってる?BootstrapのGWT版があります。
GWT-Bootstrap
これを使うためのはじめの一歩は以下のとおり。

(1)GWT-Bootstrap.jarをダウンロード

(2)jarをクラスパスに追加

(3)gwt.xmlでのinheritは以下のように書く
<inherits name='com.github.gwtbootstrap.Bootstrap' />
<set-property name="bootstrap.responsiveDesign" value="true"/>
 (4)UiBinderでのXMLNamespaceの書き方
xmlns:b="urn:import:com.github.gwtbootstrap.client.ui"
この記述をuiタグに追加してください。これで利用できるようになります。




GAE:本番環境かどうか判断する方法

GAE用のサーバサイドプログラムが動いている環境が、本番環境(appspot)かローカル環境なのかを判断するには、下記のコードでOKです。
String env = System.getProperty("com.google.appengine.runtime.environment");
開発環境ではDevelopmentという文字列が返ってきます。

EclipseのソースファイルをDropBoxで共有 ~Google Web Application編~

自宅と職場・大学で開発を継続させるには、DropBoxを利用して共有するのが一番です。しかし、Eclipseの場合、WorkspaceにPC固有の環境情報まで入ってしまうので、Workspace毎共有してもで動かないということが多々あります。そこで、DropBoxでEclipseのファイルを共有するには、
  • ソースファイルだけ共有する
というのが、無難なやり方となります。具体的に言えば、プロジェクト(Workspace)内にソースコードはおかず、DropBox内のディレクトリにソースをおいて、プロジェクトに紐付け(リンク)させればOK。
ただしWeb Applicationの場合、Javaソースフォルダだけでなく、warフォルダ(Webフォルダ)も共有しないといけないので、ちょっと面倒。以下、その方法を述べる。

0.共有フォルダの作成
ここでは、次の3つのフォルダを共有する。自分の環境で何を共有するのかはお好みで。
  • src  ・・・ Javaのソースファイルを置く場所
  • war ・・・ Webディレクトリとなる場所
  • lib ・・・ このプロジェクトで利用するライブラリ(jarファイル)の置き場
1.Javaソースの共有
(1)Java Build Path(Source)でDropboxに作ったsrcフォルダをソースとしてリンク追加
(2)元のソースディレクトリは削除してよい

2.Warフォルダの共有設定
こちらがちょっとやっかい。warフォルダだけでなく、classesの設定もしないといけないので。

(1)Java Build Path(Source)でDropboxに作ったwarフォルダをソースとしてリンク追加(例えばwar2と名付ける)
(2)Packege Exploreでwarフォルダ内の内容をwar2にコピーしておく

(3)Java Build Path(Source)でdefault output folderの設定をwar2フォルダ内のclassesに変更

(4)ここでエラーが出てOKボタンが押せないので、ソースフォルダ(Java Build Path内)からwar2を削除


war2/WEB-INF/classesをoutputフォルダにすると、上記のようなエラーが出ます。どうすればいいかというと、先ほど、ソースフォルダとして追加したwar2フォルダをパスから削除すればいいんです。


そうすると、なぜかうまくいくんですよね。。。。

(5)Google Web Application の設定で WARディレクトリ設定を war2にする。


以上の処理でOKです。(4)の処理がクセモノですね。ちなみに、(3)の処理をしておかないとデフォルトのwarフォルダが消せませんし、おそらくアプリも動かないでしょう。




2013-02-19

GWT:HTML5Canvas用ライブラリ”Lienzo”

GWT関係のライブラリ紹介です。

現在、GWTではHTML5対応が進んでいて、HTML5Canvasをデフォルトで使うことができます。ネイティブのCanvasの仕様に準拠しているため、ある意味ガリガリとコードを書いていく必要があります。

で、emitorom社がLienzoと呼ぶオープンソースのHTML5Canvas対応ライブラリを公開しています。
Lienzo:An open source cross-platform structured graphics toolkit.
詳細説明は省きますが、個人的に気に入っているのは、
  • ViewPortによるCanvas描画イメージの管理(JSon形式でシリアライズ出力可能)
  • タブレットも含めた各種マウス・タッチイベントへの対応
  • アニメーション処理、画像処理の実装
などが挙げられます。個人的には、ViewPortに一番関心がありますね。描画データを別に管理できるわけですから、ここがキモだと思ってます。

このライブラリは、Apache License Version 2.0で公開されていおり、おちラボでも正式採用の可能性大です!