タグ

goに関するpirosikickのブックマーク (19)

  • Big Sky :: golang でパフォーマンスチューニングする際に気を付けるべきこと

    golang のテストツールには標準でベンチマークツールが付属しています。例えば、引数 n を貰ってその数分だけメッセージの入ったスライスを返す関数 makeSlice が以下の実装だったとします。 foo.go package foo import "fmt" func makeSlice(n int) []string { var r []string for i := 0; i < n; i++ { r = append(r, fmt.Sprintf("%03d だよーん", i)) } return r } 如何にも遅そうなコードですね。まずはこのコードを単品で計測するベンチマークを書きます。 foo_test.go package foo import "testing" func BenchmarkMakeSlice(b *testing.B) { b.ResetTimer()

    Big Sky :: golang でパフォーマンスチューニングする際に気を付けるべきこと
  • context パッケージの紹介

    context パッケージの紹介 introduction to context package 8 August 2016 Yasuharu Goto Software Engineer Profile(1/2) Yasuharu Goto @ono_matope ポータルサイトの会社 バックエンド開発 とくいわざ: Go, Cassandra Go歴 2014/1- 2 Contribution Go 1.6 に Contribution net/httpにExpect: 100-continueのクライアントサイド実装を追加 3 contextパッケージの紹介 4 package context google社内で開発 2014年 golang.org/x/net/contextで公開 Go1.7で標準ライブラリに昇格 5 package context contextパッケージはデ

  • GolangのGCを追う

    Go1.5とGo1.6でGoのGCのレイテンシが大きく改善された.この変更について「ちゃんと」理解するため,アルゴリズムレベルでGoのGCについて追ってみた. まずGoのGCの現状をパフォーマンス(レイテンシ)の観点からまとめる.次に具体的なアルゴリズムについて,そして最後に実際の現場でのチューニングはどうすれば良いのかについて解説する. GoのGCの今 最初にGoのGCの最近の流れ(2016年5月まで)をまとめる. Go1.4までは単純なStop The World(STW)GCが実装されていたがGo1.5からは新たなGCアルゴリズムが導入された.導入の際に設定された数値目標は大きなヒープサイズにおいてもレイテンシを10ms以下に抑えることであった.Go1.5で新たなアルゴリムが実装されGo1.6で最適化が行われた. 以下は公開されているベンチマーク.まずはGo1.5を見る. Gophe

  • cgoでGolangとC++ライブラリをリンクするとき、何が起きているのか

    関東も秋が深まり、「紅葉を見にいこうよう」と言ってスベるシーズンがやってきました。みなさんいかがお過ごしでしょうか、れもんです。 さて、自社サイトでGoやるよって発表したので最近はずっとGoを書いているのですが、ついに難題がやってきました。C++で書かれたライブラリをGoで使うというやつです。今日は、GoからC++のライブラリを使おうとするときに何が起きているのかという話と、それゆえにこのオプションを指定するとドツボにはまるのでやめた方がいいよという話です。 GoからC++を使うときの基的な考え方はRubyとかPerlC++のライブラリを使うときと同じです。なので、いつものセオリーでやってみることにしました。まぁC++なら素直にSWIG使えよって話もあるんですが、何事も最初は挑戦だってことで手で書きます。 そのいつものセオリーとは何かというと、C++のライブラリをCインタフェースで使え

    cgoでGolangとC++ライブラリをリンクするとき、何が起きているのか
  • Go言語での構造体実装パターン

    Go言語での構造体実装は、埋込や独自コンセプトのインターフェースといったGo言語独自の機能を理解して行う必要があります。 今年からGo言語を始めましたが理解が曖昧なままだと実装に迷うことが何度かありました。今回よい機会なので、Go言語での構造体実装パターンとしてまとめてみることにしました。 構造体実装パターン 実装パターンの洗い出しとして、GoFデザインパターンをGo言語で実装する手法をとりました。 その中で繰り返し現れる実装をGo言語での構造体実装パターンとしてまとめてみました。 コンストラクタ関数 エクスポートによるアクセス許可 インターフェースによるポリモフィズム 構造体によるポリモフィズム 構造体によるサブクラス・レスポンシビリティ 構造体による移譲 関数による移譲 以下、それぞれのパターンを解説していきます。 コンストラクタ関数 Go言語には構造体のコンストラクタがないため、構造

    Go言語での構造体実装パターン
  • なぜGo言語は設計が悪いのか – Go愛好者の見地から | POSTD

    さて、このタイトル、かなり挑発的ですよね。それは認めます。もう少し説明すると、私は大胆なタイトルが好きなのです。人の注意を引くことができますからね。とにかく、この記事では、Goがひどい設計の言語(実際、当に全て台無しになります)だということを証明していこうと思います。私は既に数カ月間Goで遊んでいますし、たしか6月のいつだったかに初めてHello, Worldを走らせてもみました。私は数学がそんなに得意ではありませんが、あれから既に4カ月経っていますし、 Github 上のパッケージもいくつか手に入れました。言うまでもありませんが、私は仕事Goを使ったことは全くないので、”コードサポート”や”デプロイ”やそのあたりに関する私の意見は話半分で読んでくださいね。 私はGoが大好きです。使ってみて大好きになりました。慣用表現を理解したり、ジェネリクスがないことや、おかしなエラーハンドリングや

    なぜGo言語は設計が悪いのか – Go愛好者の見地から | POSTD
  • Goで使える10のテクニック | POSTD

    ここでは、私がたどりついた最善のやり方を紹介しましょう。個人的に過去数年にわたって大量のGoコードと付き合ってきた経験から集めたものです。これらは全て非常にスケーラビリティがあると思っています。私が、スケールする、と言うときは次のような意味があります。 アプリケーションが求める環境は、アジャイル環境の中で変化していきます。開発の3、4か月後に、全てをリファクタリングする必要が出てくるなど、考えたくもないはずです。新しい機能は簡単に追加できなくては意味がありません。 あなたのアプリケーションは多くの人々によって開発されます。可読性が高く、維持しやすいものでなくてはなりません。 あなたのアプリケーションは大勢の人々に使われます。バグは容易に特定でき、修正できなくてはなりません。 長期的にみるとこれらのことが重要になる、ということを私は今までに学んできました。小さなことであっても、多数に影響しま

    Goで使える10のテクニック | POSTD
  • Goでwebサーバー作るときに考えたこと - Qiita

    Goでwebサーバーを作るときに考えたことをまとめておきます。 dockerコンテナで動かす場合を少し考慮してます。 フルスタックフレームワークか軽量系フレームワークか 最初に突きつけられる問題です。 フルスタックフレームワーク revel beego 軽量系フレームワーク goji negroni どんなフレームワークもそうですが、フルスタックなフレームワークならば、 その道に乗っかることで余計なことを考えずにすみます。 だけどその道から外れることをする場合に苦労が伴います。 golangの場合、Go初心者ならばフルスタックでもいいけれど、 ある程度Goに慣れてくると標準のライブラリといくつかのライブラリを使うだけで webサーバーを作る場合、十分な場合があります。 前にrevelを使っていたときは、最初はrevelの機能を使っていたけれど、途中で他のライブラリを使ったほうが楽なんじゃな

    Goでwebサーバー作るときに考えたこと - Qiita
  • React & Go Single Page Apps

    なぜかUIデザイナーが語る、React.jsとGo言語を使ったGunosyのSPA例。

    React & Go Single Page Apps
  • Go言語で API サーバーを開発する | カメリオ開発者ブログ

    こんにちは!白ヤギの開発者、森です。 白ヤギではいま API サーバーを Go 言語で開発しています。 皆さんも Go の話題をよく見聞きするようになっていると思います。今回は白ヤギの業務でどんな風に Go を使って開発しているかの一端を紹介します。 余談ですが、先日、大学の先生とお話ししたときにこんな話を伺いました。その先生は学生にプログラミングを教えているそうですが、何割かの学生は及第点に届かないそうです。しかし、そういった学生がプログラミングの素養がないかというとそういう訳ではなく、プログラミングを学ぶ上でその学生にとって何が理解を促すのかが違うだけなのだと仰っていました。教える側として全ての学生が習得できるプログラミング教育というのを見つけられていないのが悔しいといった話をされていました。 何かを学ぶというのを一般論では語るのは難しいということかもしれません。そのため、私はこうい

    Go言語で API サーバーを開発する | カメリオ開発者ブログ
  • 今年の新人研修はgoでした - KAYAC engineers' blog

    新人研修のgo担当だったhandlenameです。 昨夏、Go言語を積極的に推進していきます。という宣言を出しましたが、 この一環として新人研修で扱う言語としてgoが選ばれました。 研修では何をやったのか Webサービスの開発・運用に関わる要素を対象としました。 goの研修に使える時間は合わせて10時間程度と限られていたこともあり、 かなり内容を絞っています。 開発環境の準備 研修に入る前に、受講者それぞれに開発環境の準備をしてもらいました。 brew install go 環境変数の設定 エディタの設定(保存時にgofmt自動実行) 幸いここで躓いた受講者はいなかったようです。 Tour of Go プログラミングは全くの未経験、という受講者はいなかったので、 いきなりTour of Gogoのコードを書いてもらいました。 基文法/制御構文/データ構造/並列処理 の4つのセクションに

    今年の新人研修はgoでした - KAYAC engineers' blog
  • 【Go × Vim】 VimでGoを書く - 2015 Spring - Qiita

    快適にGoを書くための設定たち - 2015 Spring インターネット上に転がってる情報は古いものも多いので,Goはじめるついでに2015年4月中旬ごろのトレンドっぽい?設定を探してみました. なんかおかしな点や抜けてるところ等あればご教授いただけると幸いです.

    【Go × Vim】 VimでGoを書く - 2015 Spring - Qiita
  • Golang で Web アプリケーションを作る際のメモ - Memo

    自分用メモ。 ここら辺を参考にした。 Golang でのウェブ開発を考えてみる - Qiita cli GitHub - urfave/cli: A simple, fast, and fun package for building command line apps in Go ここら辺が鉄板。 ちょっとアレと思ったのが、グローバルオプションの位置がサブコマンドの前に書かないといけない。 $ ./app runserver --config=./setting.hcl とかやる場合は、runserver のオプションにしないと行けない。 あと、グローバルオプションが goji の goji.Serve() と被って困った。 試してないけど良さそうと思ったけど、どうなんだろう。 GitHub - mitchellh/cli: A Go library for implementing c

    Golang で Web アプリケーションを作る際のメモ - Memo
  • Go言語で幸せになれる10のテクニック - Qiita

    はじめに Go近辺を徘徊していて見つけたブログポスト。 Ten Useful Techniques in Go Goな方々には常識なのかも知れないけど、Go初心者の私にとっては面白かったのでちょっとまとめてみる。 紹介されているのは以下の10個の項目。 Use a single GOPATH Wrap for-select idiom to a function Use tagged literals for struct initializations Split struct initializations into multiple lines Add String() method for integers const values Start iota with a +1 increment Return function calls Convert slices,maps,et

    Go言語で幸せになれる10のテクニック - Qiita
  • Benchmarking Nginx with Go

    benchmark+go+nginx.md Benchmarking Nginx with Go There are a lot of ways to serve a Go HTTP application. The best choices depend on each use case. Currently nginx looks to be the standard web server for every new project even though there are other great web servers as well. However, how much is the overhead of serving a Go application behind an nginx server? Do we need some nginx features (vhosts

    Benchmarking Nginx with Go
  • Go製サーバーを開発・運用して〜ピクシブ新広告配信サーバー〜 // Speaker Deck

    キャリアを充実させる『カギ』に!PR TIMES CTO金子達哉から学ぶアウトプット術 / output_method

    Go製サーバーを開発・運用して〜ピクシブ新広告配信サーバー〜 // Speaker Deck
  • ya! library for go routines in JavaScript (Next, ES6)

    lodr en Algoritmia, Javascript, Programación, Proyectos septiembre 6, 2014septiembre 6, 2014 718 palabras ya! is a go-routine implementation in ES6 using generators and promises, inspired by task.js A month ago I discovered Go language, a kind of modern C designed by Robert Griesemer, Rob Pike, and Ken Thompson inside Google and after passing the online tutorial I ended fascinated by go-routines a

    ya! library for go routines in JavaScript (Next, ES6)
  • Go駆動開発で超速Pushエンジンを作った話

    Go Conference 2014 spring で発表した資料。 受託開発に持ち込んだ事例紹介。 http://connpass.com/event/6370/

    Go駆動開発で超速Pushエンジンを作った話
  • The Benchmark with Go REST API Server - stanaka's blog

    I gave a presentation about lightweight REST API Server by Go, and performance comparison with Go, Perl and Ruby at GoCon 2013 autumn. The slide about benchmarking result is as follows. This shows milliseconds per request with 10,000 sequential requests at various conditions, which are go/perl/ruby, messagepack/json, and mysql SQL query/innodb memcached plugin. "direct memcached (innodb)" is direc

    The Benchmark with Go REST API Server - stanaka's blog
    pirosikick
    pirosikick 2013/10/18
    Go + memcached plugin + messagepack = Fastest!! The Benchmark with Go REST API Server %textQuotePrefix% %quote% --- Shared from Pocket (http://getpocket.com)
  • 1