タグ

golangに関するtoshipon123のブックマーク (64)

  • Goのパッケージ構成の失敗遍歴と現状確認

    この記事は Gunosy Advent Calendar 2017の5日目の記事です。前回の記事はGunosyのパーソナライズを支える技術 -ワークフロー編-でした。 GoAPIを書くときの問題僕の在籍するGunosyはGoを昔(?)から番採用しておりまして、ノウハウも潤沢に溜まっている企業だと言えます。 しかし、contextの扱いやベストなパッケージ構成、テスト、net/httpでAPIを書くノウハウなどなど、迷うことは多々あります。 これは弊社特有の事情ではなく、Goのサーバーサイドエンジニア全員にとっての問題です。中でも、パッケージ構成をどうすればいいのか(相互参照せずに快適に開発を進められるパッケージ構成とは)を見つけるのは結構難しく、各々のチームにお任せ、という状況です。 今回は上記の問題のうち、パッケージ構成に踏みこんで見たいとおもいます。会社でもよくパッケージ構成をどう

    Goのパッケージ構成の失敗遍歴と現状確認
  • Containerize Your Go Developer Environment - Part 1 | Docker

    Products Docker DesktopContainerize your applicationsDocker HubDiscover and share container imagesDocker ScoutSimplify the software supply chainDocker Build Cloud Speed up your image buildsTestcontainers Desktop Local testing with real dependenciesTestcontainers Cloud Test without limits in the cloud See our product roadmapMORE resources for developers

    Containerize Your Go Developer Environment - Part 1 | Docker
  • Go 1.11 Modules でパッケージ管理を行う - tchsskのブログ

    これは Go4 Advent Calendar 2018 の 22 日目の記事です。 今年の 8 月に Go 1.11 がリリースされました。このバージョンでは Modules と呼ばれる新しいコンセプトが導入されています。これはバージョニングとパッケージ配布の仕組みで、 GOPATH 配下以外でのプロジェクト管理を可能にするものです。 これは Go 1.11 の時点では実験的な機能として提供されていて、環境変数 GO111MODULE の設定やプロジェクトGOPATH 配下にあるかどうかに応じて有効化されるようになっています。このバージョンでフィードバックを取り込みながら Go 1.12 で正式な機能としてリリースされる予定ということです。今回は現時点での Go Modules を試してみたいと思います。 Go 1.11 Modules で依存解決を行う 私は Web API の作成

    Go 1.11 Modules でパッケージ管理を行う - tchsskのブログ
  • Go Conference 2018 Spring - 資料一覧 - connpass

    終了 2018/04/15(日) 09:00〜 Go Conference 2018 Spring 桜咲く。Goをはじめる。 tenntenn 他 東京都中央区日橋2-7-1 (東京日橋タワー)

    Go Conference 2018 Spring - 資料一覧 - connpass
  • なぜ私達は Python から Go に移行したのか - Frasco

    新しい言語に移行するのは常に大きな決断です。その言語をよく知る人がチームメンバーに1人しかいない時などは特にそうです。今年の初め、我々は Stream の主要言語を Python から Go に切り替えました。この記事では、なぜ私達が Python から Go に移行しようと決断したのか、その理由を説明します。 Go を使う理由 理由1 - パフォーマンス Go は速いです! Go は極端に速い。そのパフォーマンスは Java もしくは C++ に匹敵します。私達のユースケースでは、GoPython より30倍速いです。GoJava を比較したベンチマークはこちらです。 理由2 - 言語パフォーマンスの問題 多くのアプリケーションにとって、プログラミング言語は、単にアプリとデータベースを繋ぐものにすぎません。言語そのもののパフォーマンスは通常あまり重要ではありません。 しかしな

    なぜ私達は Python から Go に移行したのか - Frasco
  • sync.ErrGroupで複数のgoroutineを制御する

    Golangの並行処理は強力である一方で同期処理を慎重に実装する必要がある.“Go 言語における並行処理の構築部材”にまとめられているようにGolangは様々な方法でそれを実装することができる.実現したいタスクに合わせてこれらを適切に選択する必要がある. この同期処理の機構として新たにgolang.org/x/sync/errgroupというパッケージが登場した.実際に自分のツールで使ってみて便利だったので簡単に紹介する. 使いどころ 時間のかかる1つのタスクを複数のサブタスクとして並行実行しそれらが全て終了するのを待ち合わせる処理(Latch)を書きたい場合にerrgroupは使える.その中でも「1つでもサブタスクでエラーが発生した場合に他のサブタスクを全てを終了しエラーを返したい」(複数のサブタスクが全て正常に終了して初めて1つの処理として完結する)場合が主な使いどころである. 実例

    toshipon123
    toshipon123 2016/12/22
    こんなものがあったのかー
  • CodeReviewComments

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    CodeReviewComments
  • cgoを使ったCとGoのリンクの裏側 (1) - Qiita

    cgoを用いるとCのライブラリをGoバイナリにリンクしたり、Goパッケージの一部をCで書いたりできる。更にGo 1.5以降では、GoのパッケージをC用の静的ライブラリまたは動的ライブラリにまとめておいて、Cからリンクすることもできる。 これらの機能はすべてgo buildコマンドに統合されているので、普段は特にcgoを使っていることを意識することは少ない。しかし、pure goのコードのビルドにしたところでその裏側ではコンパイラ、アセンブラ、リンカが走っているわけである。ではcgoの場合をこの水準で見るとどのような処理が行われているのだろうか。 要は、gcc(1)の裏ではcc1, as, collect2なんかが走ってるよね、cgoではどうなってるの? という話が稿の話題である。 なお、Goのオブジェクトファイルがプラットフォーム独立な(ELFとかではない)フォーマットであることや、Go

    cgoを使ったCとGoのリンクの裏側 (1) - Qiita
  • 初心者がごるーちんでハマるところ - Qiita

    概要 Go言語の特徴であるごるーちん(goroutine)。 go func_name()と書くだけで動くと聞いて、書いてみたけどうまくいかない!とハマったのでまとめました。 結論: main()関数が終了するとごるーちんもすべて終了になるので、main()関数内にgo func_name()と書くだけではごるーちんが起動前にプログラム自体が死んでしまいます。解決するには、チャネルを使う方法があります。サンプルは下に。 うまくいかない例 ↑リンク先の「Run」ボタンを押すとプログラムが実行されます package main import ( "log" "time" ) func sub() { log.Println("ごるーちんが呼ばれたよ!") time.Sleep(3 * time.Second) log.Println("3秒経過!") } func main() { log.P

    初心者がごるーちんでハマるところ - Qiita
  • 私的メモ: golang 学習 - A Tour of Go をなぞる - Qiita

    (この内容は2014年07月時点のものです) 記事中の A Tour of Go のコードは、 このライセンス のもと、 The Go Authors と Google Inc. に帰属します 参考リソース 概観として Go メモ - 日語公開記事 - サイボウズエンジニアのWIKI 中国語オリジナルの日語版の解説書: build-web-application-with-golang/preface.md at master · astaxie/build-web-application-with-golang オフィシャル系 実践 Go: Effective Go - The Go Programming Language 翻訳版 (golang.jp): 実践Go言語 - golang.jp 仕様: The Go Programming Language Specificatio

    私的メモ: golang 学習 - A Tour of Go をなぞる - Qiita
  • Ten Useful Techniques in Go - Fatih Arslan

    Here are my own best practices that I've gathered from my personal experiences with dealing lots of Go code for the past years. I believe they all scale well. With scaling I mean: Your applications requirements are changing in an agile environment. You don't want to refactor every piece of it after 3-4 months just because you need to. New features should be added easily. Your application is devel

    Ten Useful Techniques in Go - Fatih Arslan
  • GitHub - monochromegane/go_design_pattern: Design patterns in Golang.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - monochromegane/go_design_pattern: Design patterns in Golang.
  • ʕ  ゚皿゚ ʔ GolangのWeb Application Frameworkを色々試してみてもいいかしら? - ( ꒪⌓꒪) ゆるよろ日記

    うちのメロンちゃんはLv.117です。 Golangで、簡単なWebアプリケーションをいくつかのフレームワークを用いて作成してみた。 サンプルアプリケーションは、こんな感じのPhotoギャラリーアプリケーションで、画像URLを入力すると追加される。 PureというCSSフレームワークのサンプルから拝借した。 Photo Gallery – Layout Examples – Pure ソースコードはGithubで公開している。 yuroyoro/golang_webapp_framework_samples · GitHub 今回試したのは、net/httpパッケージ、Martini、 Revel の3つ。 net/http編 まずは基net/http編。ソースコードはこちら。 http - The Go Programming Language net/httpパッケージでサーバーを

    ʕ  ゚皿゚ ʔ GolangのWeb Application Frameworkを色々試してみてもいいかしら? - ( ꒪⌓꒪) ゆるよろ日記
  • イベントループなしでのハイパフォーマンス – C10K問題へのGoの回答 | POSTD

    この投稿は、私が去年OSCONで行ったプレゼンテーションを基に作成しています。プレゼンよりは簡潔に編集し直し、プレゼン後にいただいたいくつかのフィードバックに応える形で記事を書いています。 Go言語に関してよく言われるのは、Go言語はサーバでうまく機能し、静的なバイナリや強力な並行処理、高いパフォーマンスを見せくれるということです。 この投稿では、その後半の2つの項目に関して焦点を当てます。プログラマとってGo言語とそのランタイムは、スケーラブルなネットワークサーバをスレッド管理やブロッキングI/Oを気にせずに書くのにどんなに有効かを説明していきます。 効率的なプログラミング言語に関しての議論 技術的な話に入る前に、Go言語をターゲットにしたマーケットを説明する2つの議論に関してお話したいと思います。 ムーアの法則 画像は以下より引用; 2005年5月にHerb Sutter氏が書いたDr

    イベントループなしでのハイパフォーマンス – C10K問題へのGoの回答 | POSTD
  • The Go Programming Language

    The Go Programming Language This page intentionally left blank The Go Programming Language Alan A. A. Donovan Google Inc. Brian W. Kernighan Princeton University New York • Boston • Indianapolis • San Francisco Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City Many of the designations used by manufacturers and sellers to distinguish their pro

  • Go言語のstring, runeの正体とは? - golang - The Round

    Ikedaです。 Goのstringとruneについて曖昧な知識のまま使ってきたが、そろそろちゃんと理解しようと思って下記事を読みました。 Strings, bytes, runes and characters in Go - The Go Blog ざっくりと抜粋。 stringは実質read-onlyなbyteスライス。中身はUTF-8とは限らない GoのソースコードはUTF-8で書くルール ソースがちゃんとUTF-8で書かれていればリテラルで初期化されたstringはUTF-8になるはず len(string)はbyte数返す string[n]はインデックスnのbyte(int8) const sample = "日語" for i := 0; i < len(sample); i++ { fmt.Printf("%x ", sample[i]) } ↓結果 e6 97 a5

    Go言語のstring, runeの正体とは? - golang - The Round
  • go言語におけるロギングについて | さにあらず

    僕は Java 方面に慣れていますのでslf4j(Logback)やlog4j2の様なロギングライブラリがあると扱い易いなぁ…と思う次第です。 まとめ#例によって結論から書くと XML で設定する事に耐えられる ならseelogがオススメ。 CLI で指定出来る程度の設定が出来れば良いなら、公式リリースなglogがオススメ。 標準のlogパッケージについて#まず、僕の開発環境は Windows7 ですので、log/syslog を直接使うようなコードは避けたいのです。 加えて、コードをあまり変更せずに出力先や出力内容を変更したいのですけども、その為の標準的な方法は機能としてライブラリ内に組込まれていません。 テスティングフレームワークの時も同様に感じましたけども、go 言語のコアライブラリは当に一番下の足回りがあるのみです。 例えば、設定可能な項目はこれだけです。抜粋すると、 時間や日付

    go言語におけるロギングについて | さにあらず
  • grpc-gateway機能ひとめぐり - 世界線航跡蔵

    @vvakame さんが TechBooster の新刊"JavaScriptoon"の中でgRPCを解説していて、その中で grpc-gateway にも触れている。これはとてもよい記事だったので、みんなこの電子書籍版を買えば良いと思う。 ただし、grpc-gatewayは記事中で使われているだけで主題ではないので、すべてのトピックをカバーしてくれているわけではない。それは仕方が無いが、そろそろgrpc-gatewayの機能を見渡す日語記事が欲しいと思ったので自分で書くことにする。 grpc-gatewayとは gRPC (HTTP/2 + ProtocolBuffers)をwrapして古典的なJSON API (HTTP 1.1 + JSON)を提供するリバースプロキシを生成するコード生成機だ。 別記事 にも書いた。 何ができるのか gRPCで使うサービス定義(IDLみたいなやつ

    grpc-gateway機能ひとめぐり - 世界線航跡蔵
    toshipon123
    toshipon123 2015/08/25
    grpc-gateway機能ひとめぐり - 世界線航跡蔵
  • Goで使える10のテクニック | POSTD

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

    Goで使える10のテクニック | POSTD
  • golangでのシグナルハンドリング - 年中アイス

    golangでデーモンやWebサーバなどの設定再読み込みなどをどうしようかなと考えてた時に、fluentdがシグナルでいろいろやってたな*1と思ったので、golangだとどうやるか調べてみました。 全体はこれ 動作の確認 ビルドして実行ファイル作成 go build 実行します。(以降このターミナルをAとします) ./signal 他のターミナルからプロセスを確認します。(以降このターミナルをBとします) ps | grep signal 9999 ttys003 0:00:00 ./signal XXXX ttys003 0:00.00 grep --color signal BからSIGHUPシグナルを送ります kill -SIGHUP XXXX Aに、hungupが表示されます(実際はハングアップしてないです) hungup 今度は、AでCtrl+cを押すと、Warikomiと表示さ

    golangでのシグナルハンドリング - 年中アイス