同僚がGoを始める上で、案外まとまった資料が無さそうだったので書いてみることにしました。 Macでhomebrewが入っていることが前提です。事前に brew update をおこない formula を最新のものにしておくと躓くことが少ないでしょう。 Goのインストール % brew install go エントリ執筆時点では、1.6.2 が入ります。Goはメジャーバージョンが同じ場合は、後方互換が保たれているので、基本的に新しいやつを入れて問題ありません。 環境変数の設定 $GOPATH だけを決めればOKです。$GOPATH はどこでも良いのですが、ここでは $HOME/dev を $GOPATH に設定します。また、 $GOPATH/bin に $PATH も通しておきます。 export GOPATH=$HOME/dev export PATH=$GOPATH/bin:$PATH
SREチームの@cubicdaiyaです。つい先日メルカリでOSSとして開発・公開しているスマホアプリ向けのプッシュ通知用ゲートウェイサーバであるGaurunがGCM、APNsともにHTTP/2を利用したプッシュ通知に対応したので紹介します。 github.com ちなみにロゴも出来ました。 Gaurun〜A general push notification server in Go〜 繰り返しになりますが、GaurunはメルカリでOSSとして開発・公開しているスマホアプリ向けのプッシュ通知用ゲートウェイサーバです。GCMやAPNsへのプッシュ通知処理をHTTP + JSONベースの非同期処理APIでラップして大量のプッシュ通知を素早く送信することができるのが特徴です。 github.com メルカリのプッシュ通知のシステムもこのGaurunにより構築されています。クライアントとの通信に
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
glideってなんぞ? glideはGo1.5以降で使用可能なvendoring機能を利用した。 パッケージ管理ツールです。 (正確にはvendor管理) glideを使うと下記のようにvendorにプロジェクトに必要なパッケージがインストールされ、そのプロジェクト内でのみ利用が可能となります。 (通常のgo get, go installのようにグローバル管理ではない) - $GOPATH/src/myProject (プロジェクトのディレクトリ) | |-- glide.yaml | |-- main.go | |-- mySubpackage (サブパッケージ) | | | |-- foo.go | |-- vendor (この配下がglideで作成されるもの) |-- github.com | |-- Masterminds | |-- ... etc. 使いはじめた理由 実は、使
Introduction While most Go applications compile to a single binary, web applications also ship with templates, assets and configuration files; these can get out of sync and cause faulty deployments. Docker lets us create a self-contained image with everything our application needs to work. In this tutorial, you will learn how to deploy a Go web application with Docker, and how Docker can help impr
GoConでは毎回エラー処理について面白い知見が得られる.Go Conference 2014 autumn においては(実際のトークではないが)居酒屋にて@JxckさんがRob Pike氏から以下のようなテクニックを紹介してもらっていた. Errors are values - The Go Blog Golang Error Handling lesson by Rob Pike これはWrite(やRead)のエラー処理が複数続く場合にerrWriter を定義して複数のエラー処理を一箇所にまとめてコードをすっきりとさせるテクニックであった. そして今回の Go Conference 2016 spring のkeynoteにおいてもDave Cheney氏から(僕にとっては)新たなエラー処理テクニックが紹介された. Gocon Spring 2016 実際に使ってみて/コードを読ん
メルカリのグループ会社である、ソウゾウからリリースされた地域コミュニティアプリ「メルカリ アッテ」のリリースまでの裏側を語る「atte FeS」のGo・Swift開発編に参加してきたので、そのまとめ。 atte開発の技術 Golang と Google Cloud Platform 鶴岡 達也様 GoとGAEは非常に有力なWebアプリ開発手段 PaaSの時代が本格的に始まってきた herokuなどあったが、GAEは突き抜けて優秀なのではないか アプリケーションの要件 機能的な側面 作ろうとしているアプリを洗い出した JSON API、静的コンテンツ配信, 動的コンテンツ生成、DB、キュー処理 キーだけの検索ではなく、全文検索、位置情報、予測変換などの検索 画像をアップロードして配信、メール配信、Push通知、データ分析 非機能的な側面 グローバル:複数リージョンでDBはグローバルに一つだけ
はじめに 藤本です。 最近、仕事じゃないことでGo言語を書く機会が増えています。 業務上、プログラムを触ることがそんなに多くないせいか、記憶力が弱いせいか、基本的にプログラミングはIDEがないと辛いです。 私がIDEに特に期待することは、以下となります。 自動補完 デバッグ ジャンプ(というのかな?EclipseでCtrl + Clickで飛ぶやつ) IntelliJ IDEAやEclipseのGo言語Pluginを試してみましたが、EclipseによるJava開発やPyCharmによるPython開発のような感動は得られず、Atomエディタで開発していました。 そんな中、Visual Studio CodeでGo言語Extensionがあり、使い易いとの噂を聞いて、早速試してみました。結果、今のところはあまり不満ありません。 Visual Studio Codeについては下記記事をご参照
by Nick Gauthier on 2016-03-29 Websockets are one of the core technologies MeetSpace uses to connect people on a call. In this post, we’ll look at how to get started with Websockets in JavaScript and Go. Websockets on the Server We’ll dive right into the http handler for a websocket. If you’re unfamiliar with writing http servers in Go, start with my tutorial on http servers. At this point, we hav
QCon London 2016において、Peter Bourgon氏は「Successful Go Program Design, 6 Years On」というプレゼンを行い、Goでプログラミングするときに使うべきパターンと避けるべきパターンについて説明した。 GOPATH: 環境変数PATHにGOPATH/binを加え、関係バイナリを簡単にアクセスできるようにする。Bourgon氏は一つのグローバルなGOPATHを使うことを推奨する。たいていの場合、これでうまくいく。自分のコードと外部依存のコードを明確に分離したい人は、2つのGOPATHを作るのが好みだろう。gbを使って、環境変数をセットせずにプロジェクトごとに構築するという選択肢もある。 リポジトリ構成: リポジトリの構成はプロジェクトに依存する。プライベートなプロジェクトで決して公開しないなら、好きな構成で構わない。オープンソース
ウェブオペレーションエンジニアの id:y_uuki です。 はてなの東京オフィスで先月開催されたGo 1.6 Release Partyで、「Writing Tools in Go For Ops Engineers」というタイトルで発表しました。 発表では、最近作ったGo製ツールを紹介し、なぜGoがインフラエンジニアにとって良い言語であると感じているかを話しました。 最近作ったGo言語のツールの紹介 mkr Grabeni Droot gokc インフラエンジニアがGoを利用することのメリット 1. サーバへの配布が簡単 2. サーバ上で高速開発できる 3. 最終的に成果物をはやく作れる その他 発表資料 あとがき 最近作ったGo言語のツールの紹介 以下の4つのツールを作りました。いずれもはてなでのproduction利用を想定したものになります。 mkr mkrははてなで開発している
Advanced Go Concurrency Patterns Sameer Ajmani Google Video This talk was presented at Google I/O in May 2013. Watch the talk on YouTube 2 Get ready 3 Go supports concurrency In the language and runtime, not a library. This changes how you structure your programs. 4 Goroutines and Channels Goroutines are independently executing functions in the same address space. go f() go g(1, 2) Channels are ty
Goというプログラミング言語の強みの1つは、 Tony Hoare考案のCSP に基づくビルトインの並行性(Concurrency)です。Goは並行性を念頭にデザインされているため、複雑に並行したパイプラインの構築を可能にしています。でも、それぞれの並行性パターンがどのように見えるものなのか気になったことはありませんか。 もちろん、気になったことはあると思います。恐らくそれぞれ形は違っても、誰もが頭に描いているのではないでしょうか。もし、「1から100までの数字」について聞かれたら、無意識に頭の中で数字のイメージを思い浮かべると思います。例えば、私の場合、自分の前から1から20までがまっすぐに並び、21以降は90度右に曲がり1000以降まで続くイメージが浮かびます。これは多分私が幼稚園の時に教室の壁に沿って数字が貼られていて、ちょうど角に数字の20があったからなのだと思います。別の例えをす
Graidという画像プロキシサーバをつくりました。 外のサーバから画像を取得してリサイズしたりして返す、ということをするサーバです。 Golangでなんかミドルウェア的なものが作ってみたかったのでやってみました。 Graidについてのスライド エンジニアが集まってお昼ご飯を食べながら技術的なネタを話すテックランチという会が社内で定期的に開催されているので、Graidについて話してきました。 Graid // Speaker Deck 機能 http://localhost:8080/path/to/image.jpg:w400:h300:q80 例えば8080ポートで起動させてURLにアクセスすると、 オリジンの画像サーバ(設定ファイルに設定する)の/path/to/image.jpgを取ってきて 横400px、縦300pxにリサイズして画質80%に加工して レスポンスを返す という処理を
* outlearn.com is a domain name potentially for sale - NOT a website Your domain name is your identity on the Internet Establish instant trust and credibility with customers Premium domain names appreciate in value over time Acquire or upgrade to the best possible domain for your business usp5 *All sales will be closed using a trusted 3rd party escrow service
7月29日付けのgolang.orgブログエントリーで context というパッケージが紹介されました。 Go Concurrency Patterns: Context - The Go Blog 参考: Go言語のcontextパッケージについてのやりとり - ワザノバ | wazanova 今現在、業務でGo言語を使ったWebサービスを書いているのですが、contextはリクエストのキャンセルとタイムアウトとリクエストスコープの変数を扱う、Google社内で利用が標準化されているパッケージだという事なので、エントリーを翻訳しました。 以下和訳。 Introduction Goサーバーでは、入ってくる各リクエストは専用のgoroutineで処理されます。リクエストハンドラは、データベースやRPCサーバーにアクセスするためにしばしば追加のゴルーチンを開始します。リクエスト上のゴルーチン
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く