memoメモ

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

golang

ビルドしたバイナリからビルドに利用したGoのバージョン情報を読む

なにができる? goでビルド済みのバイナリからgoのバージョン情報が取得できます。 なにがうれしいの? 配布した(された)バイナリはどのgoのバージョンでビルドされたのかわかります。ので、goの本体にセキュリティ修正などが行われた際、もし古いバージョ…

GoでgRPCを始めるときに見ると良さそうな資料

とりあえずリストだけ・・ https://github.com/grpc/grpc-common https://github.com/grpc/grpc-common/tree/master/go https://github.com/grpc/grpc-common/blob/master/go/README.md https://github.com/grpc/grpc-common/blob/master/go/gotutorial.md h…

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

Raspberry Pi 2 Model B (1)出版社/メーカー: 梅本合同会社, RS Componentsメディア: エレクトロニクスこの商品を含むブログ (2件) を見る 自分でビルドしても構いませんが、ここはさっとDaveさんのUnofficial ARM tarballsを使います。 なお、Raspberry Pi …

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 Tes…

qiitaから転載 golangのテンプレート(例えば text/template)では、FuncMapを使うことで好きな関数を実行できます。ので練習がてら簡単な計算機を作ってみます: package example_test import ( "bytes" "fmt" "log" "text/template" ) func ExampleTemplateCa…

gotypeコマンドでgolangのastの結果を視覚化する

qiitaより転載 GolangのASTを可視化するツールを作った でastのステキな可視化がされていて出番は少ないかもしれませんが、gotypeコマンドでもastの結果を可視化できます。 これは何? Go言語のソースコードを解析する際の補助的なツールです。 astパッケージ…

Apple's SSL/TLS bugの件 #golang

Apple's SSL/TLS bugの件で。 golangだとそもそも括弧強要されるし、gofmtでインデントが強制されるのでわりとすぐに気づくのかもと思ったのでメモ。 そもそもエラーになる: package main import "fmt" func main() { var err error = nil if err != nil go…

linux用のgodocのバイナリをOSXでつくる

クロスコンパイルメモ。 以前もクロスコンパイルをやったけど、OSXでlinux用のgodocを作ったときのメモ。 linuxでもwindows上でもできます(windowsはmingwの環境を整える必要がありますが。。) 前提: goの環境をソースからコンパイルできる環境があること …

Go tipでなにが行われてる?(2013-09-07)

What's happening in Go tip (2013-09-07)よりメモ。 前回のメモはこちら: http://atotto.hatenadiary.jp/entry/2013/08/31/202919 (以下、間違い/勘違いがあるかもしれないので注意してね) What's happening in Go tip (2013-09-07) compress/flateのWrite…

golintをemacsで使う

golintはGo言語用のlintプログラムです。 プロジェクトはこちら: https://github.com/golang/lint 導入は: $ go get -u github.com/golang/lint/golint で、基本的な使い方は: $ golint main.go などとすれば解析結果がでてきます。 vimはmattnさん(@mattn…

A Tour of Go日本語版を更新しました

本家の更新に追従してA Tour of Go を更新しました。 主な変更は以下のとおりです: Go Playgroundに関するスライドを追加 (スライド#3) スライド#4へ乱数生成についての注意書きを追加 スライド#43の説明文を追加 あまり大きな変更はありませんが、スライ…

Go tipでなにが行われてる?(2013-08-30)

What's happening in Go tip (2013-08-30)よりメモ。 前回のメモはこちら: http://atotto.hatenadiary.jp/entry/2013/08/24/214941 (以下、間違い/勘違いがあるかもしれないので注意してね) What's happening in Go tip (2013-08-30) より安全に GIF画像の…

Go tipでなにが行われてる?(2013-08-23)

What's happening in Go tip (2013-08-23)よりメモ。 前回のメモはこちら:http://atotto.hatenadiary.jp/entry/2013/08/19/083830 (以下、間違い/勘違いがあるかもしれないので注意してね) What's happening in Go tip (2013-08-23) スライスの新しいシンタ…

コンパイル時に特別な文字列情報を入れるには #golang

Go言語の話題です。 コンパイル時にフラグを与えることで、ソースコード上の特定の文字列情報を書き換えることができます。 これを応用すれば、例えば、バージョンやリビジョン番号などの特別な文字列情報を後で指定するといった使い方ができます。 以下、例…

Go言語の環境をソースからビルドする #golangjp

Go1がリリースされて以来、各環境のGoコンパイラは Downloads - go - The Go Programming Language - Google Project Hosting で簡単にダウンロードできるようになりました。 またLinuxやOSXでも、パッケージマネージャでGoコンパイル環境を整えることもでき…

Go言語ベストプラクティス12コ

Twelve Go Best Practices よりメモ。 各行の # はスライドの番号 コード エラーを先に処理して、ネストするのを避ける #4 可能なら同じことの繰り返しを避ける #5 Type switchを特別なケースのために使う #6 Type switchには変数宣言を使う #7 Function ada…

Go tipでなにが行われてる?(2013-08-15)

What's happening in Go tip (2013-08-15)よりメモ ちなみに、tip とは Goのリポジトリ https://code.google.com/p/go/ の開発中のバージョンを指します。 $ hg update tip で切り替えることができます。 (以下、間違い/勘違いがあるかもしれないので注意し…

glogパッケージをちょっと使ってみる #golang

つい最近アナウンスされたglogパッケージを使ってみました。glogは簡単に言うとログをとるためのパッケージです。実行時の引数でログレベルを指定したり、指定したモジュールのログだけを出力したりと、簡単に使うことができます。 glogパッケージで利用でき…

Go Conference 2013 spring のリンクまとめ

今更だけどリンクだけまとめとく http://connpass.com/event/1906/ @tenntenn さん Go言語で作るWebアプリ @najeira さん Go on AppEngine @Jxck_ さん Go の並行処理 blog: http://d.hatena.ne.jp/Jxck/20130414/1365960707 @methane さん GOMAXPROCS の基…

Go言語で効率良く文字列を連結する話 #golang

Go言語での話ですが、他の言語でも似た話があります。 文字列の連結で何気なく+(プラス演算子)を使ってしまうことがありますが、連続する場合は気をつける必要があります。 たとえば以下のコード: func StringBuild_bad() string { str := "" for i := 0; i …

JettyのwebsocketクライアントからGo言語のwebsocketサーバへ接続する #golang

JettyのwebsocketとGo言語のwebsocketは共にversion 13です*1(2013/03/02現在) というわけで、Java(Jetty)からGoへ接続してみましょう! Jettyは jetty-websocket-8.1.9.v20130131 を利用しました。 Jettyのwebsocketクライアントは WebSocketClientのドキ…

Go Tour日本語版を更新しました #golang

本家に合わせてGo Tourを更新しました。 目に見える所での主な変更点: 各スライドが固有のタイトルになるように修正 スライドの配置を自然になるように変更(これまでと順序が変わっています) 日本語訳の修正(変な日本語多すぎ。。スイマセン。) 「Go言…

Go言語のパッケージのテストでプライベートな関数や変数を呼び出すには

Go言語でパッケージのテストを書く時に、プライベートな関数(隠蔽した関数)や定数を呼び出したいことがたまにあります。 これを実現する方法をメモ。 プライベートって? パッケージの内容は以下のような構成になっているとします: eg.go eg_test.go ここ…

はてなブログの markdown 形式で ソースコードハイライト

以前はできなかったのですが、はてなブログでソースコードのシンタックスハイライトができるようになってました。いつから?? ```go package main import "fmt" func main() { fmt.Println("Hello, 世界") } ``` とすると: package main import "fmt" func…

go get でプロキシを突破するには #golang

Go言語では、 go get コマンドで外部パッケージや外部コマンドを簡単に取得でき、とても便利です。 ここでは、 go get コマンドでプロキシを突破する方法についてメモしておきます。 解決策 環境変数の http_proxy と https_proxy を設定します。 くわしく …

Travis-CI で Go言語 のプロジェクトを自動ビルド&テストする

Travis-CIでGo言語のプロジェクトを自動ビルド&テストするサンプルを作ってみました: https://github.com/atotto/travisci-golang-example Travis-CI側の設定は、 .travis.yml : language: go script: - go test -v として、テストを実行するようにしてい…

Go言語でJSON(Marshal)エンコード

試す。 package main import ( "encoding/json" "fmt" ) type Message struct { Name string Body string Time int64 } func main() { m := Message{"Alice", "Hello", 1294706395881547000} b, _ := json.Marshal(m) fmt.Println(string(b)) } 結果: http:…

Go言語でLinux ARM用の実行ファイルをビルドする

以前、Go言語でクロスコンパイルする方法を書いたけれど、ARM用にビルドする手順をまとめとく。 前提として、Go言語をソースコードからコンパイルできる環境が必要です。 ここが参考になります: http://golang.org/doc/install/source GoのLinux ARMコンパ…

Go言語用QuickLookプラグイン QuickGo を作ってみた #golang

MacのQuickLook用プラグインです。 もしかすると既にあるかもしれませんが、練習に作ってみました。 ダウンロードはこちらから: https://github.com/atotto/QuickGo 簡単なシンタックスハイライトも付けてみました。githubのREADMEにも書きましたが、style.…

Goフレーズブックと原著のサイズ比較 #golang

左から 「プログラミング言語Goフレーズブック」 「The Go Programming Language Phrasebook 」(原著) 「iPhone 4S」 原著小さいっ Goフレーズブックについてはこちらの記事参照どぞ。

Google GroupsでRSSを取得する方法

RSSがどんどん駆逐されているような気がしますが、特定のアンテナを貼るのにはまだまだ役に立ちます。 ここでは、新しいGoogle Groupsに変更するとRSSで読むにはどうすればよいのかについてメモしときます。 #新しいGroupsではもうRSS使うなってことなんだ…

go get で exec: "bzr": executable file not found in $PATH エラーの解決

exec: "bzr": executable file not found in $PATHと。最初意味不明でしたが、BazaarというVCSがインストールされてないということに気づいたので、bzrをインストール。もしOSXでbrewを使ってるなら: $ brew install bzr でOK。 やってたこと: http://lumi…

"プログラミング言語Goフレーズブック"を戴きました #golang

書店に少しずつ入っているようですが、一足早く、柴田さん@yoshiki_shibataより本書を戴きました!この本のレビューへも参加させて頂き、とても勉強になりました。ありがとうございます。 2010年ごろにGoを触り始めたころは、Cに代わる組込みで行く言語なの…

A Tour of Go 日本語版のUIを更新しました

本家のUIが大幅に更新されたので、A Tour of Go 日本語版 http://go-tour-jp.appspot.com/ を更新しました。画面の幅に合わせてUIの構成が変更されます。なお、以前追加された編集内容をLocalStrageへ保存する機能(link)は取り除かれています。もし日本語版…

A Tour of Go 日本語版を更新しました

本家の変更に合わせて、A Tour of Go 日本語版 http://go-tour-jp.appspot.com/ を更新しました。 主な変更は以下の通りです: 編集したコードをブラウザへ保存する機能の追加 #32 mapの操作についての説明スライドの追加 コードをブラウザへ保存する機能に…

HelloWorldをgoroutineで書く

Go言語でchannelの使い方を忘れるのでメモ。 package main import "fmt" func main() { ch := make(chan string) go func() { ch <- "Hello, 世界" }() fmt.Println(<-ch) } ここにサンプルを置いとく。 http://play.golang.org/p/B43cNJkMu2

Go言語でクロスコンパイルする

これを試したときのバージョン: go version go1.0.1 実行環境:Mac OS X Lion 下準備 Goはソースからコンパイルしておきます。これを参考に:http://golang.org/doc/install/source $ hg clone -u release https://code.google.com/p/go $ cd go/src $ ./al…

Tour of Go の日本語訳をアップデートしました for Go 1

Go 1 (The Go Programming Language)がリリースされ、それに合わせて A Tour of Go もversion 1用に修正が入っています。 ということで、日本語版も修正を入れました! http://go-tour-jp.appspot.com/ A Tour of Go について Documentation - The Go Progra…