GoCon 2014(5/31)発表資料
pt(the_platinum_searcher) を高速化するために Goroutines まわりで試したことを発表しました。 http://connpass.com/event/6370/
Go Conference 2014 spring http://connpass.com/event/6370/
(以下はgo 1.2.x時点での話です。将来的に仕様がかわるかどうかはわかりません) これを読んでいて、こういうの気にしてない人多いんだろうなーと思って、書いてみます。元のポストはdeferの挙動について語っているように見受けられるけれども、これは要は複数スレッドで実行されるコードについて、プログラム終了時に同期とか取りたくない、という話だと思ったので、このポストのdeferを正しく動かすには…というところからどういう形でgoroutine同士で同期を取る方法があるのか、一例を書き出していきます。 TL;DR; goでいくらgoroutineが気軽にかけるからと言って、複数スレッドで処理が行われているので同期はキチンとやらないとダメですよ。 deferの基本 goではLLのノリでコードを書けるのが売りの一つですが、メモリ管理はしてくれるものの、様々なリソース解放も全て自動というわけではあり
Go Advent Calendar の12月23日目担当 @yanolab です。 qiita の投稿は初めてだ。。。 23日目の記事では、Golang + Raspberry Pi + LPS331AP(I2C気圧センサーモジュール)で気圧・温度を測定してみたので紹介したいと思います。 個人的な Golang の好きなところにクロスコンパイルがすごく容易というものがあります。マルチプラットフォームで動くツールをよく書く私としてはものすごく助かります。また、 Golang は ARM 用バイナリ出力をサポートしているので、 開発は汎用のIAマシンでできます。さらに、Golang でコンパイルしたものは libc にすら依存しないという男気っぷりを発揮しているのでデプロイも対象マシンにコピーするだけ。と、簡単です。簡単すぎます。 最近では Raspberry Pi の購入は比較的容易なよう
デバッグするとき値の中身を見たいもの。Go言語にもPHPの var_dump やJavaScriptの console.log のように、値の中身をプリントすることができる関数がある。 関数 意味 例
Go言語での構造体実装は、埋込や独自コンセプトのインターフェースといったGo言語独自の機能を理解して行う必要があります。 今年からGo言語を始めましたが理解が曖昧なままだと実装に迷うことが何度かありました。今回よい機会なので、Go言語での構造体実装パターンとしてまとめてみることにしました。 構造体実装パターン 実装パターンの洗い出しとして、GoFデザインパターンをGo言語で実装する手法をとりました。 その中で繰り返し現れる実装をGo言語での構造体実装パターンとしてまとめてみました。 コンストラクタ関数 エクスポートによるアクセス許可 インターフェースによるポリモフィズム 構造体によるポリモフィズム 構造体によるサブクラス・レスポンシビリティ 構造体による移譲 関数による移譲 以下、それぞれのパターンを解説していきます。 コンストラクタ関数 Go言語には構造体のコンストラクタがないため、構造
go 言語において呼び出し元に interface のみを公開することで実装の詳細を隠ぺいすると、gomock を使ったテストがやり易くなります。 ざっくり結論だけ書くとこんな感じのコーディングパターンにすると良いよって感じなので、これだけ見て、何が言いたいのかすぐに分かる人は続きを読まなくても良いと思います。 package intf type Duck interface { Quack() string} type duck struct {} func NewDuck() Duck { return &duck{}} func (d *duck) Quack() string { return "QUUAAAACCCCKK!!!"}コピー interface と実装が分離されたアヒル#最初のポイントは、公開する interface として定義された Duck と非公開の struc
// アクセストークン取得時の型 type AccessTokenMessage struct { TokenType string `json:"token_type"` AccessToken string `json:"access_token"` ExpiresIn string `json:"expires_in"` Scope string `json:"scope"` } // アクセストークン取得時のキャッシュ型 type AccessTokenMessageCache struct { accessTokenMessage AccessTokenMessage updateTime time.Time } func (self *AccessTokenMessageCache) loadNewAccessTokenMessage() { resp, err := http
最近はgolangがアツいらしい。ちょうどRebuild: 15: After Google Reader, DIY Blogging, The Go language (typester)でtypesterさんがgolangについて触れていたのを聞いて、試しに触っていたがなかなか便利であることがわかった。 golangの印象としては go get、go runにgo build、そしてgo testが便利 go fmtのようなコード整形ツールがついてくるのは嬉しい (ただ、インデントがハードタブなのはちょっと時代遅れな気がする) 標準packageが充実しているのが頼もしい golangのマスコットキャラクターであるGopherがかわいい (Gopher人形欲しい) といった感じ。 ←かわいい golangの入門ということで、skkservを実装してみる。skkservというのは、ほとん
ふとtwitterをみていたら @ymotongpoo pythonjapan.comとかいうサイトがすごく下品なことをしてる。 「文字列操作の比較表」 http://bit.ly/ggAJ0k これは高林さんの記事の丸コピペな上に引用元書いてない。恥を知れ。 http://bit.ly/g9U5M http://twitter.com/ymotongpoo/status/40615506608128000 というのが目にはいった時に社内buzzに流したらpythonjapanうんぬんよりも言語比較の話がまた再燃。s.to_fはperlでは0+$sだとか、s.to_sは”$s"とか。 そういえばGo言語も比較したらどうなるかせっかくなのでまとめてみた。 問題のpythonjapanはあっという間に消えたようですね。 謎のpythonjapan
Go言語とは、Googleが開発した新しいプログラミング言語です。 当サイトではこの新しい言語についての情報を集約していきます。 このサイトの更新が滞っており、情報が古くなっておりますのでご注意ください。 始めに このcodelabで説明する範囲: ロードおよびセーブメソッドを持つデータ構造の作成 httpパッケージを使用してWEBアプリケーションを構築 templateパッケージを使用してHTMLテンプレートを処理 regexpパッケージを使用してユーザ入力をチェック クロージャの使用 必要な知識: プログラミング経験 基本的なWEBテクノロジー(HTTP、HTML)への理解 UNIXコマンドの知識 開始準備 現時点でGoを実行させるためには、Linux、OS X、FreeBSDのいずれかのマシンが必要です。これらの何れも利用できなければ、Linux仮想マシン(VirtualBoxまたは
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く