投稿

12月, 2013の投稿を表示しています

[Go言語] 豆知識、小ネタ

まだまだよくわかっていないGo言語。 何をするにもどん詰まる。とにかく小ネタを記録する。 byte配列を文字列(string)に変換する var s = make([]byte,10) s[0] = 'a' fmt.Printf("result=%s",string(s) ) stringをbyte配列に変換する s := "test" b := []byte(s) 何でも入るmapを作る(keyは文字列) m := make(map[string]interface{}) m["first"] = "test" fmt.Printf("result=%s",m ) mapをJSON化する "encoding/json"のimportが必要 m := make(map[string]interface{}) m["f"] = "test" r,_ := json.Marshal(m); fmt.Printf("result=%s",string(r) ) JSON文字列をmap化する "encoding/json"と"strings"のimportが必要 s := strings.NewReader(`{"f":"test"}`) d := json.NewDecoder( s ) m2 := make(map[string]interface{}) d.Decode(&m2) fmt.Printf("result=%s",m2 ) TimeをJSON化する time.Timeはjson.MarshalでJSON化してくれないようだ。 というわけで、マニュアルでJSON化。 t := time.Now() s,_ := t.MarshalJSON() fmt.Printf( "%s", s ) string

[Dart] PolymerでObservableにsetterを使う

observableのプロパティに、setterを使いたいときってあるよね。 こんな感じ。 String _title = ""; @observable String get title => _title; set title( String t ) => _title = "hoge $t"; で、html側で{{title}}ってやるわけですが。 でも、これ動きません! titleの実体がfunctionだからだと思いますが、変更イベントが飛ばないのです。 というわけで、自分で変更イベントを飛ばせばOKとのこと。 具体的には、setterを下記のように変更します。 set title( String t ) {   _title = notifyPropertyChange( #title, _title, t ); } notifyPropertyChangeの仕様は下記の通り。 dynamic notifyPropertyChange(Symbol field, Object oldValue, Object newValue) 戻り値はnewValueとなっています。 そして、これをするとgetterの@observableが不要になります。つまり、observableに頼らず、自前で変更イベントを出せるってことですね。 …っていうか、#titleって何ヨ? 本来、const Symbol("title")としなければいけないっぽいが、表記を省略できるってことかね? 参考資料: 同様の質問 https://groups.google.com/a/dartlang.org/forum/#!topic/web-ui/hxCqmwjnLIA まさにこれのサンプル https://github.com/sethladd/dart-polymer-dart-examples/tree/master/web/setter_with_observable_property_change

[Dart] PolymerElementを動的に作成

PolymerElementを状況に応じて動的に作成すること、したいよね〜。 Seth Laddのサンプルによると、ore-tagというカスタムタグがあるとして、 querySelector("#place").childlen.add( new Element.tag("ore-tag") ); とすればいけるとのこと。 確かにこれで問題なく動くのだが、ワナがひとつ。 Pub Buildすると正しく動かんのだ、これが。 具体的には、enteredViewが呼ばれない。グハッ! バグじゃね?

[Dart] ゲーム作ってみた

Dartでゲーム作ってみたよ。 http://www.niku-mansei.com/contents/05club/club04game00.html Canvasバリバリ系。 フレームはいわゆるsetTimerで取っている。 スマホでも動作するけど古い端末だとちょっと重いかも。 描画をキレイにするために、実は倍の解像度で描画してるんだが(いわゆるRetina対応)それが原因っぽい。 しかし、Dartは楽ちんですな〜。 もう、JavaとかObjective-Cとかやる気しないな〜。