memoメモ

最近はGo言語関連で。φ(..)メモメモ

GitHub APIメモ

GitHub APIについてメモ

やりたいこと API
リポジトリのコミット履歴を取る https://api.github.com/repos/golang/go/commits
特定パスのコミット履歴を取る https://api.github.com/repos/golang/go/commits?path=doc/cmd.html
コンテンツを取る https://api.github.com/repos/golang/go/contents/doc/cmd.html

参考資料:

Raspberry Pi 2で Go言語 を使う #golang

Raspberry Pi 2 Model B (1)

Raspberry Pi 2 Model B (1)

自分でビルドしても構いませんが、ここはさっとDaveさんのUnofficial ARM tarballsを使います。

なお、Raspberry Pi のOSには Raspbian を使っています。

インストール

Raspberry Pi 2のARMv7用をダウンロードし、展開します:

$ wget http://dave.cheney.net/paste/go1.4.2.linux-arm~armv7-1.tar.gz
$ tar zxf go1.4.2.linux-arm~armv7-1.tar.gz

あとは http://golang.org/doc/install 通りですが、書いておきます。

~/.bashrcに以下を追加します:

export GOROOT=$HOME/go
export GOPATH=$HOME
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

bashに設定を読みこませれば準備完了です:

$ source ~/.bashrc

go go!

$ go version
go version go1.4.2 linux/arm

Raspberry Piクックブック (Make:PROJECTS)

Raspberry Piクックブック (Make:PROJECTS)

WEB+DB PRESS Vol.82

WEB+DB PRESS Vol.82

  • 作者: 山口徹,Jxck,佐々木大輔,横路隆,加来純一,山本伶,大平武志,米川健一,坂本登史文,若原祥正,和久田龍,平栗遵宜,伊藤直也,佐藤太一,高橋俊幸,海野弘成,五嶋壮晃,佐藤歩,吉村総一郎,橋本翔,舘野祐一,中島聡,渡邊恵太,はまちや2,竹原,河合宜文,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2014/08/23
  • メディア: 大型本
  • この商品を含むブログ (1件) を見る

Goのテストでsetup/teardownする #golang

go1.4でtestingパッケージにTestMainが追加されました。

func TestMain(m *testing.M)を定義してあると、go testはこのメソッドを呼び出します。試しに書いてみます:

package example_test

import (
    "os"
    "testing"
)

func TestA(t *testing.T) {
}

func TestB(t *testing.T) {
}

func setup() {
    println("setup")
}

func teardown() {
    println("teardown")
}

func TestMain(m *testing.M) {
    setup()
    ret := m.Run()
    if ret == 0 {
        teardown()
    }
    os.Exit(ret)
}

gist: go1.4 TestMain example

TestATestBはなにかのテストコードだと思ってください。 TestMainで、setupteardownを呼び出すようにしています。この例ではテストが成功した時だけteardornするようにしています。 go test -vしてみると:

$ go test -v
setup
=== RUN TestA
--- PASS: TestA (0.00s)
=== RUN TestB
--- PASS: TestB (0.00s)
PASS
teardown
ok      testmain    0.004s

となり、パッケージテストの最初と最後でそれぞれsetupteardownが呼ばれるのがわかると思います。

これまでinitメソッドでsetupしてz_test.goなどでteardownさせるなどの黒魔術的なことが必要でしたがこれで解決ですね。

基礎からわかる Go言語

基礎からわかる Go言語

WEB+DB PRESS Vol.82

WEB+DB PRESS Vol.82

  • 作者: 山口徹,Jxck,佐々木大輔,横路隆,加来純一,山本伶,大平武志,米川健一,坂本登史文,若原祥正,和久田龍,平栗遵宜,伊藤直也,佐藤太一,高橋俊幸,海野弘成,五嶋壮晃,佐藤歩,吉村総一郎,橋本翔,舘野祐一,中島聡,渡邊恵太,はまちや2,竹原,河合宜文,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2014/08/23
  • メディア: 大型本
  • この商品を含むブログを見る

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缶 クラフトビールお試しセット

よなよなエール 350ml 4種4缶 クラフトビールお試しセット

よなよなエール 350ml 4缶 お試しセット

よなよなエール 350ml 4缶 お試しセット

Raspberry Pi Type B 512MB

Raspberry Pi Type B 512MB

Raspberry Pi Model B+ (Plus)

Raspberry Pi Model B+ (Plus)

MacBook Pro 2014 midを買う?

きっかけ

  • そしたらちょっと新しいMacBook Proがリリースされた!

なんのお告げか。

RetinaMacBook Proを買うにあたっての懸念点

  • 非光沢ディスプレイを選択できない
  • 自分でパーツの交換ができない(ストレージやメモリなど)
  • キーボードのストロークが薄っぺらい

などが気になってる。

MacBook Airの13inch買うならPro 13inchかなと思う。厚さも重さもそんなに変わらないし。 Airを買うなら11inchってことになるけど、ディスプレイの比率が横長なのが引っかかるのでパス。もしうわさの12inch MacBook Airが出たら欲しい!けど、まだなので出たときに考えることにする。

だけどそもそも。

いまのマシンをお金をかけずに延命できれば一番いいんだけど…。

と。ひとまずメモ。

qiitaから転載

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)

Lean UX ―リーン思考によるユーザエクスペリエンス・デザイン (THE LEAN SERIES)

この本をざっくりと説明すると、UIデザイナ+エンジニア達がアジャイル開発をリーン・スタートアップの要領でプロダクト開発をすすめるために必要なこと・やることをおおまかにまとめた本、です。 Lean UXというタイトルからするとユーザーエクスペリエンスをリーンを通じてどうデザインするか、ということを想像するかもしれませんが、UXのtipsなどはなく、純粋にリーンの話です。

以下、感想:

すでにリーンスタートアップの本やアジャイルやUIに関する本を読んでいることもあり、すんなりと読めたように思います。

薄い本ですので、具体的な例が少なく、実践するにはおそらく情報が足りません。別途:

などを読むことをオススメします。

本文には、突然MVPやペルソナの話が出てきますので、そのあたりの知識を前提にしているようにも感じました。全体で150ページほどですので、どんな開発スタイルでどう顧客と向きあってプロダクトデザインを進めればよいのかということを知るには丁度良い本だと思います。

組織化された開発では、UIを設計する人、UIのデザインをする人、UIを実装する人、、などがレイヤー分けされていたりします。そういった退屈な開発を壊すために、この本の内容を実践できればいいと思います。

Running Lean ―実践リーンスタートアップ (THE LEAN SERIES)

Running Lean ―実践リーンスタートアップ (THE LEAN SERIES)

About Face 3 インタラクションデザインの極意

About Face 3 インタラクションデザインの極意

インタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針

インタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針

アジャイルサムライ――達人開発者への道

アジャイルサムライ――達人開発者への道