memoメモ

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

Book: How Google Works

読んで考えたことメモ

5年で起こり得ること

How Google Worksより:

常識を捨て、想像力をたくましくし、これからの五年であなたの業界で「起こり得ること」は何かと自問してみよう。一番速く変わるものは何か、まったく変わらないものは何か。

変わるもの:

  • グラス型デバイスで、ディスプレイが不要になる
  • グラス型デバイスで、ホロデッキっぽいものができる
    • 仮想空間
    • モノのデザイン、建築の仕事の仕方が変わる
  • コンピュータに話しかけるようになる
    • 言葉でコンピュータにお仕事を依頼できる
  • 筋斗雲みたいな車ができる
    • 呼んだら車が来る。これが本物の自動車
  • 定型化される仕事はロボットがこなす
    • 作業の定型化が進み、カスタマイズされるものはとても高価になる
  • 手仕事ブランドの確立
    • コンピュータ、ロボットではない、人の手によるプロダクトがブランドとして確立できる
  • 個人の様々データが自動的に収集される
    • いまどこ?
    • 心拍数は?
    • 血流は?
    • 集中してる?それとも眠たい?
    • イライラしてる?元気?
  • レプリケータ
    • モノ・食べ物が家庭でもビルドできるようになる
  • プログラミングできる人材の不足
    • タブレット型端末に慣れた人によるコンピュータ離れ
    • Qwertyキーボードが使えない
  • コミュニケーション力の低下
    • 人と人が偶然会うこと、知りあうきっかけの機会損失の増加
    • 付き合うより一人
  • 物流の自動化
    • ロボット化、自動車による宛先への自動配送
  • 野菜工場
    • 完全自動化された野菜工場による収益拡大
    • 安全性のアピールによるブランドの確立

変わらないもの:

  • 人間
    • 生物学的に。。
  • 宇宙
    • すくなくとも5年ではそう変わらない、と思う
  • 天変地異に対する対応
    • 起こってから対応する性
  • 天気予報
    • むしろ当たらなくなっていくかも?
  • スポーツ
    • 種目、ルールはそんなに変わらない
  • 趣味
    • 世代毎に違うけど、個人の趣味は大きく変わらない
  • ゲーム
    • ゲームに対する面白さは繰り返しやってくる
  • 電気ありきのシステム
    • 電気の次は簡単に出てこない、切り替わらない

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