2011年10月12日水曜日

Google App Engine Go SDK1.5.5の変更点

Google App Engine Go SDK 1.5.5がリリースされました。

1.5.4からの変更点を確認した所、たくさんの変更がありました。
したがって、1.5.4で動作していたプログラムが1.5.5ではコンパイルエラーになる可能性が高いです。(データストアを使っていたら、ほぼNGでしょう)

わかり次第、変更点を追記していく予定です。

変更点は以下のポイントです。

  1. app.yamlに指定するapi_versionは"3"を指定する。(ローカルサーバが動きません)
  2. Cross Multiple Group Transactionの追加により、datastore.RunInTransaction()の引数にTransactionOptions構造体の引数が必要。メンバ変数XGにfalseを設定するとSingle Transactionとなる。
  3. datastore.NewKeyにappengine.Contextの引数が追加された。
  4. datastore.NewIncompleteKeyも同じくappengine.Contextの引数が追加された。
  5. datastore.NewIncompleteKeyにも親キーを指定するKey引数が追加された。
  6. http.ResponseWriterのHeaderが初期値が"text/plain"になっているので、w.Header().set("Content-Type", "text/html")を入れる必要がある。※ただし、w.Fprintf()で文字列を出力した時の挙動
  7. templateパッケージが変更されている。(詳細は、http://golang.org/pkg/template/#Template.Parse参照)
  8. gofmt、gofix、godocコマンドが同梱されるようになった。(1.5.4以前は無かった)※gofixコマンドはtemplateパッケージの変更には対応していない(?)
2011.10.13:
  • 8を追記
2011.10.15:
  • gofixコマンドのtemplateパッケージの変化に対応していない事を追記
2011.10.18:

  • datastore.RunInTransactionのTransactionOptions構造体の説明を修正




レイアウトのXMLに配置したButtonのOnClickはDialogでも使えるらしい

以前、移転前のブログにて、
「レイアウトのXMLに配置したButtonのOnClickがDialogだと使えない?」
http://hobby.txt-nifty.com/t1000/2011/06/xmlbuttononclic.html

という記事を書きました。

しかし、後日、コメントが付き、以下のサイトのようにするとDialogでもonClickを
利用する事ができるようです。

http://wiki.android-fun.jp/?layout%20xml%E3%81%ABonClick%E3%81%A7%E5%91%BC%E3%81%B0%E3%82%8C%E3%82%8B%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8B


レイアウトのボタンに定義したonClickはDialogからは使えない件について、
Activityに定義すれば利用可能。

emacsにcss-modeを導入する

emacsでCSS3を編集しようとした時に、どうも見にくいなと思ったので、
emacsの設定ファイルがないか探していた所、以下のサイトにcss-mode.elが
公開されているという事で、導入しました。

A CSS editing mode for Emacs
http://www.garshol.priv.no/download/software/css-mode/

上記サイトにある、css-mode.elをMacOSXの場合は、~/.emacs.dにコピーし、
.emacsに以下の設定を追記します。


;; CSS mode
(autoload 'css-mode "css-mode")
(setq auto-mode-alist
	  (cons '("\\.css\\'" . css-mode) auto-mode-alist))

あとは、emacsでcssファイルを開き、色が変わればOKです。

追記:
上記までだと、入力時のタブ幅が8(?)なので4に変更するのと、
インデントをCのスタイルに変更する設定も一緒に入れておくと良いでしょう。

(setq cssm-indent-level 4)
(setq cssm-indent-function #'cssm-c-style-indenter)

参考サイト:
http://uch-x40.seesaa.net/article/44721501.html

2011年10月11日火曜日

emacsのコマンド集


今日は、Rubyのkazuhisa1976さんの「ミニミニemacs勉強会」に
参加してきたので、emacsのコマンドをメモしておきます。
※私はRubyの話はわからないので、ひとまずスルー気味でいました。
(分かるようにはならんとなと思っていますが)

便利な(?)emacsコマンド集
※Ctrlを押しながらの操作は「C-*」、ESCを押してからのキー操作を「M-*」と表記しています。

M-X grep-find[Enter]
   カーソルの場所にキーワードを入力するとfindコマンドが実行される。
   (実行結果は新しいバッファ)

C-a
   行の先頭にカーソルを移動する。
C-e
   行の最後にカーソルを移動する。
C-x 1
   分割した選択していないバッファを閉じる
C-x 2
   バッファを上下に分割
C-x 3
   バッファを左右に分割

@kazuhisa1976さんのブログも参考に。
http://d.hatena.ne.jp/tech-kazuhisa/20111010

そういえば、C-sで検索しても、前に検索することができないなーと
言っていたけど、手元にある書籍を見返すとC-rで前検索をするようです。

2011年10月10日月曜日

Dartの導入 on MacOS X

Web構造化プログラミング言語"Dart"が発表されたみたいですね。

参考:
http://www.dartlang.org/(公式、英語)

ということで、早速動かしてやろうと思って、作業をした手順を控えておこうと思います。

最初にDepot_Toolsをダウンロードする必要があります。
Dartのソースコード、ツール一式がgclientを利用しないとダウンロードできないためです。

Depot_Toolsのダウンロード(いろんな物が落ちてきます)
$ svn co http://src.chromium.org/svn/trunk/tools/depot_tools

Depot_Toolsをダウンロードしたら、その中にある、gclientというコマンドを利用します。
恐らく、パスを通しておく方が良いでしょう。
export PATH=$PATH:[Depot_Tools

Dartのソースコード、ツール一式のダウンロード(本当にいろんな物が落ちてきます)
$ gclient config http://dart.googlecode.com/svn/branches/bleeding_edge/deps/all.deps

$ gclient sync

ダウンロード後、Dartをビルドします。
$ cd [Dartのダウンロードディレクトリ]/dart
$ ./tools/build.py --arch=ia32

ビルド後、以下のHTMLのコードを作成します。これは、Dartのコードを含んでいます。
ファイル名はdartsample.htmlで保存しました。
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>Dart Sample</title>
</head>
<body>
  <script type='application/dart'>
	void main() {
	   HTMLElement element = document.getElementById('result');
	   element.innerHTML = 'Hello World!';
	}
  </script>
  <div id="result"></div>
</body>
</html>

このHTMLファイルをDartのコンパイラ(?)dartcでコンパイルします。ただし、pythonのスクリプトが用意されているので、以下のコマンドを使ってコンパイルします。

$ python [Dartのダウンロードディレクトリ]/dart/client/tools/htmlconverter.py dartsample.html -o out/

正常に終了したら、outディレクトリを調べると、dartsample-js.htmlというファイルが
生成されていました。これをChromeで表示すると、Hello World!という文字列が
表示されました。

今回はブラウザで実行させるようにしましたが、DartはVM上でも動作させる事が
できるようなので、後で、同じく動かしてみようと思います。

2011/10/11追記
dartsample.htmlのソースコードに変なspanタグが挿入されているのに
気がついたので、削除しました。本来は不要でした。