blink(1) mk2を買った
blink(1) mk2 USB RGB LED を同僚と一緒に購入しました。
簡単に説明すると、カラーLEDを制御可能なUSBランプです。ウラとオモテで別々に操作できる2つのカラーLEDを装備しています。
分解するとRGBのフルカラーLEDが見える:
blink1のgithubを見てみると対応している言語が多い!もちろんGo言語も。基本はlibusbで叩く感じです。
Linuxでセットアップ:
Ubuntuでのメモ。
ひとまずリポジトリをclone:
$ git clone https://github.com/todbot/blink1.git
https://github.com/todbot/blink1/tree/master/linux に説明がありますが:
$ sudo cp blink1/linux/51-blink1.rules /etc/udev/rules.d/
をしておくとユーザ権限でblink1を操作できるようになります。
コマンドのビルド:
$ cd blink1/commandline && make
使い方は blink1-tool.md にありますが、ちゃんとした使い方は実装を読むべきようです。
blink1-tool -m 1000 --rgb 255,0,0 # 1秒かけて赤く光る blink1-tool --off # 消灯 blink1-tool -t 1000 -m 200 --rgb 255,0,0 --blink 5 # ぴーかx5
Windows版やMac版ではGUIですぐに動かせます。色を自由に設定できるのは楽しいですね。IFTTTへの連携も簡単にできそうです。
とりあえずやること(アイディア):
- リモートのJenkinsのビルドが失敗したら手元のランプが光る。
- push前のコードのテストがバックグラウンドで失敗したら赤blink、成功したら緑3secとか。
まだまだ暑いですね!
よなよなエール 350ml 4種4缶 クラフトビールお試しセット
- 出版社/メーカー: ヤッホーブルーイング
- メディア:
- 購入: 17人 クリック: 573回
- この商品を含むブログ (5件) を見る
- 出版社/メーカー: ヤッホーブルーイング
- メディア: 食品&飲料
- クリック: 1回
- この商品を含むブログを見る
- 出版社/メーカー: RS Components Ltd (ソースマーキング及び販売 Umemoto LLP)
- メディア: エレクトロニクス
- この商品を含むブログ (12件) を見る
- 出版社/メーカー: raspberrypi.org
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
MacBook Pro 2014 midを買う?
きっかけ
- MacBook Pro 15inch 2011 early が亡くなられた
うちの子もこの病にかかったっぽい。 / “ディスプレイ表示が乱れる。(MacBook Pro early 2011) | Apple サポートコミュニティ” http://t.co/1TfEsebSIs
— atotto (@atotto) 2014, 7月 26
- そしたらちょっと新しいMacBook Proがリリースされた!
おや / 他2コメント http://t.co/0sW5990CSm “アップル、MacBook Pro Retinaを価格据え置きでCPU底上げ、メモリ倍増 ~非Retinaモデルは値下げ - PC Watch” http://t.co/Ub3RV9nOj7
— atotto (@atotto) 2014, 7月 29
なんのお告げか。
RetinaなMacBook Proを買うにあたっての懸念点
- 非光沢ディスプレイを選択できない
- 自分でパーツの交換ができない(ストレージやメモリなど)
- キーボードのストロークが薄っぺらい
などが気になってる。
MacBook Airの13inch買うならPro 13inchかなと思う。厚さも重さもそんなに変わらないし。 Airを買うなら11inchってことになるけど、ディスプレイの比率が横長なのが引っかかるのでパス。もしうわさの12inch MacBook Airが出たら欲しい!けど、まだなので出たときに考えることにする。
だけどそもそも。
いまのマシンをお金をかけずに延命できれば一番いいんだけど…。
そして自分でなんとかするには、ロジックボードを焼き直せばなおせるかもしれないらしいw / “MacBook Proがゾンビ化。オーブンで焼いたら復活し、7ヶ月以上も動作してる” http://t.co/WX7L7Fy2Ia
— atotto (@atotto) 2014, 7月 26
と。ひとまずメモ。
■
golangのテンプレート(例えば text/template)では、FuncMapを使うことで好きな関数を実行できます。ので練習がてら簡単な計算機を作ってみます:
package example_test import ( "bytes" "fmt" "log" "text/template" ) func ExampleTemplateCalculator() { funcMap := template.FuncMap{ "add": func(a, b int) int { return a + b }, "sub": func(a, b int) int { return a - b }, "mul": func(a, b int) int { return a * b }, "div": func(a, b int) int { return a / b }, } var buf bytes.Buffer tp := template.Must(template.New("calculator").Funcs(funcMap).Parse("{{mul (div (sub 3 (add 1 4)) 2) -10}}")) err := tp.Execute(&buf, nil) if err != nil { log.Fatal(err) } fmt.Println(buf.String()) // Output: // 10 }
playgroundはこちら: http://play.golang.org/p/iYlS-L4qQZ
読んだ: Lean UX
先日、読書会で読んできました。
Lean UX ―リーン思考によるユーザエクスペリエンス・デザイン (THE LEAN SERIES)
- 作者: ジェフ・ゴーセルフ,ジョシュ・セイデン,エリック・リース,坂田一倫(監訳),児島修
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/01/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
この本をざっくりと説明すると、UIデザイナ+エンジニア達がアジャイル開発をリーン・スタートアップの要領でプロダクト開発をすすめるために必要なこと・やることをおおまかにまとめた本、です。 Lean UXというタイトルからするとユーザーエクスペリエンスをリーンを通じてどうデザインするか、ということを想像するかもしれませんが、UXのtipsなどはなく、純粋にリーンの話です。
以下、感想:
すでにリーンスタートアップの本やアジャイルやUIに関する本を読んでいることもあり、すんなりと読めたように思います。
薄い本ですので、具体的な例が少なく、実践するにはおそらく情報が足りません。別途:
- Running Lean ―実践リーンスタートアップ (THE LEAN SERIES)
- About Face 3 インタラクションデザインの極意
- インタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針
- アジャイルサムライ――達人開発者への道
などを読むことをオススメします。
本文には、突然MVPやペルソナの話が出てきますので、そのあたりの知識を前提にしているようにも感じました。全体で150ページほどですので、どんな開発スタイルでどう顧客と向きあってプロダクトデザインを進めればよいのかということを知るには丁度良い本だと思います。
組織化された開発では、UIを設計する人、UIのデザインをする人、UIを実装する人、、などがレイヤー分けされていたりします。そういった退屈な開発を壊すために、この本の内容を実践できればいいと思います。
Running Lean ―実践リーンスタートアップ (THE LEAN SERIES)
- 作者: アッシュ・マウリャ,渡辺千賀,エリック・リース,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/12/21
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 14回
- この商品を含むブログ (18件) を見る
- 作者: Alan Cooper,Robert Reimann,David Cronin,長尾高弘
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2008/07/22
- メディア: 大型本
- 購入: 9人 クリック: 208回
- この商品を含むブログ (26件) を見る
インタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針
- 作者: Susan Weinschenk,武舎広幸,武舎るみ,阿部和也
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/14
- メディア: 大型本
- 購入: 36人 クリック: 751回
- この商品を含むブログ (28件) を見る
- 作者: Jonathan Rasmusson
- 出版社/メーカー: オーム社
- 発売日: 2014/06/25
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
gotypeコマンドでgolangのastの結果を視覚化する
qiitaより転載
GolangのASTを可視化するツールを作った でastのステキな可視化がされていて出番は少ないかもしれませんが、gotypeコマンドでもastの結果を可視化できます。
これは何?
Go言語のソースコードを解析する際の補助的なツールです。 astパッケージを使う際のデバッグなどに役に立つと思います。
インストール
導入は:
$ go get code.google.com/p/go.tools/cmd/gotype
でok。
簡単な使い方:
例えば:
package main import ( "fmt" ) func main() { fmt.Println("Hello, 世界") }
を入れてみると以下のようになります:
$ gotype -ast main.go 0 *ast.File { 1 . Package: main.go:1:1 2 . Name: *ast.Ident { 3 . . NamePos: main.go:1:9 4 . . Name: "main" 5 . } 6 . Decls: []ast.Decl (len = 2) { 7 . . 0: *ast.GenDecl { 8 . . . TokPos: main.go:3:1 9 . . . Tok: import 10 . . . Lparen: main.go:3:8 11 . . . Specs: []ast.Spec (len = 1) { 12 . . . . 0: *ast.ImportSpec { 13 . . . . . Path: *ast.BasicLit { 14 . . . . . . ValuePos: main.go:4:2 15 . . . . . . Kind: STRING 16 . . . . . . Value: "\"fmt\"" 17 . . . . . } 18 . . . . . EndPos: - 19 . . . . } 20 . . . } 21 . . . Rparen: main.go:5:1 22 . . } 23 . . 1: *ast.FuncDecl { 24 . . . Name: *ast.Ident { 25 . . . . NamePos: main.go:7:6 26 . . . . Name: "main" 27 . . . . Obj: *ast.Object { 28 . . . . . Kind: func 29 . . . . . Name: "main" 30 . . . . . Decl: *(obj @ 23) 31 . . . . } 32 . . . } 33 . . . Type: *ast.FuncType { 34 . . . . Func: main.go:7:1 35 . . . . Params: *ast.FieldList { 36 . . . . . Opening: main.go:7:10 37 . . . . . Closing: main.go:7:11 38 . . . . } 39 . . . } 40 . . . Body: *ast.BlockStmt { 41 . . . . Lbrace: main.go:7:13 42 . . . . List: []ast.Stmt (len = 1) { 43 . . . . . 0: *ast.ExprStmt { 44 . . . . . . X: *ast.CallExpr { 45 . . . . . . . Fun: *ast.SelectorExpr { 46 . . . . . . . . X: *ast.Ident { 47 . . . . . . . . . NamePos: main.go:8:2 48 . . . . . . . . . Name: "fmt" 49 . . . . . . . . } 50 . . . . . . . . Sel: *ast.Ident { 51 . . . . . . . . . NamePos: main.go:8:6 52 . . . . . . . . . Name: "Println" 53 . . . . . . . . } 54 . . . . . . . } 55 . . . . . . . Lparen: main.go:8:13 56 . . . . . . . Args: []ast.Expr (len = 1) { 57 . . . . . . . . 0: *ast.BasicLit { 58 . . . . . . . . . ValuePos: main.go:8:14 59 . . . . . . . . . Kind: STRING 60 . . . . . . . . . Value: "\"Hello, 世界\"" 61 . . . . . . . . } 62 . . . . . . . } 63 . . . . . . . Ellipsis: - 64 . . . . . . . Rparen: main.go:8:29 65 . . . . . . } 66 . . . . . } 67 . . . . } 68 . . . . Rbrace: main.go:9:1 69 . . . } 70 . . } 71 . } 72 . Scope: *ast.Scope { 73 . . Objects: map[string]*ast.Object (len = 1) { 74 . . . "main": *(obj @ 27) 75 . . } 76 . } 77 . Imports: []*ast.ImportSpec (len = 1) { 78 . . 0: *(obj @ 12) 79 . } 80 . Unresolved: []*ast.Ident (len = 1) { 81 . . 0: *(obj @ 46) 82 . } 83 }
-comment
を合わせて入れればコメント行も解析します。
godocはこちら gotype
Book「APIデザインの極意」
APIデザインの極意 を、この本の訳者の @yoshiki_shibata さんがレビューを募集していたので応募してみました。
インプレスジャパン様よりAPIデザインの極意届きました。ありがとうございます! @yoshiki_shibata http://t.co/JGWLaQlFkO
— atotto (@atotto) 2014, 5月 17
手にとって中身をパラパラとみてみると、文字がぎっしり。本はEffective Javaより多少分厚いくらいですが、中の情報量がもの凄いです。このレビューを出すのが遅くなってしまった理由でもあります。
中には、APIをデザインする上で、何を考え、どうしておくべきか、どうしてこうするべきか、するとどうなるのか、なにに失敗したのかがしっかりと書かれています。コードはそれほど多くありません(最後は除く)が、Javaの知識があると背景をつかみやすいと思います。説明はNetBeansの開発経験などを元にした内容で書かれていますが、他に適用できる話が多いです。全てを読むには根気が要ると思いますので、何人か集めて読書会をするのもいいと思います。
簡単に中を紹介すると、第2部では、Effective Javaに続くような話があり、Effective Javaを読んだ方は是非読んでおくことをおすすめします。 第3部では、はじめの13章で軽く息抜きをしてから、APIを公開、維持する際の話がメインになります。APIは公開以前と公開以降では全く異なる性質を持つようになります。
以下、気になった所のメモを少し:
- 無知な利用が成功するためには、 APIがライブラリの本質的な真意をきちんと反映していることが重要。2章より。
- APIは自己文書化されている必要があり、つまりドキュメントが無くても使えるようにしておく必要がある。2章より。
- APIは公開するものが少ないほどよい。ユースケースに確信が持てないときは公開しない。5章より。
- 単一のAPIで構成されるライブラリはほとんどない。APIが対象としている複数の目的と複数のグループが存在する。ユーザの必要性に合わせてAPIを構成すべし。8章より。
- テスト容易性を考えずにフレームワークを作成することは、開発者を不快にさせる。9章より。
- API設計に問題がなく期待通りうまく運用されていれば「何も」起きない。「何もない」ことが大きな成功であることを示すことは難しい。14章より。
昨今APIをめぐるこんなトラブルもあり、今後のAPI設計の方向性が心配ですが、良いインターフェースの定義は広く使われるようになって欲しいですね。日本語で読めるようになったこの本でAPI設計に関する先人の知恵を読んでおくことをおすすめします!
- 原著:Practical API Design: Confessions of a Java Framework Architect
- 柴田さんのblog :柴田さん翻訳ありがとうございます!
APIデザインの極意 Java/NetBeansアーキテクト探究ノート
- 作者: Jaroslav Tulach,柴田芳樹
- 出版社/メーカー: インプレスジャパン
- 発売日: 2014/05/23
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
EFFECTIVE JAVA 第2版 (The Java Series)
- 作者: Joshua Bloch,柴田芳樹
- 出版社/メーカー: 丸善出版
- 発売日: 2014/03/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
Apple's SSL/TLS bugの件 #golang
golangだとそもそも括弧強要されるし、gofmtでインデントが強制されるのでわりとすぐに気づくのかもと思ったのでメモ。
そもそもエラーになる:
package main import "fmt" func main() { var err error = nil if err != nil goto fail goto fail fmt.Println("Hello, playground") fail: fmt.Println("Hello, fail") }
http://play.golang.org/p/lcgZDh-ji4
修正&gofmtでこうなる:
package main import "fmt" func main() { var err error = nil if err != nil { goto fail } goto fail fmt.Println("Hello, playground") fail: fmt.Println("Hello, fail") }
http://play.golang.org/p/hinPttq13L
気づくかな。
goto文をつかうこと自体は悪く無いと思う。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
- 購入: 68人 クリック: 1,802回
- この商品を含むブログ (111件) を見る
- 作者: スティーブマコネル,Steve McConnell,クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2005/03/26
- メディア: 単行本
- 購入: 44人 クリック: 1,166回
- この商品を含むブログ (284件) を見る
- 作者: スティーブマコネル,Steve McConnell,クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2005/03/26
- メディア: 単行本
- 購入: 16人 クリック: 193回
- この商品を含むブログ (160件) を見る