タグ

goに関するuneasyのブックマーク (97)

  • Dockerで最小のGoのイメージを作成する(cgo編) - Qiita

    「最小のNode.jsのDockerイメージを目指すスレ」、「JavaでもDockerでマルチステージビルド」というエントリーでは、Node.jsとJavaを使ったアプリケーションのイメージをなるべく小さくするトライアルをしました。 今度はGoでやってみます。ただし、Pure Goで最小というのはすでに方法があって、scratchという何も含まれないイメージを元に、静的リンクしたバイナリを配置するという方法です。 Building Minimal Docker Containers for Go Applications Goを使う場合に、一部cgoで使われたパッケージを利用したいこともあるでしょうし、雑にコマンドラインを利用することもあるだろう、ということで、今回も、できることを減らさずに(やりたいことにしたがって細かく作戦を微調整する必要がない)、なるべく小さく、という方針でいきたいと

    Dockerで最小のGoのイメージを作成する(cgo編) - Qiita
    uneasy
    uneasy 2017/12/11
  • Goのリバースプロキシーでレスポンスを書き換える - Qiita

    フューチャーアーキテクトアドベントカレンダーの5日目の サーバーサイドレンダリングの代替としてPrerenderを試してみたの最後で、「Go実装について 長くなったので説明は省略します。だれかがGoアドベントカレンダーを落としたら書くかも?」と書いていたら、早速落とす人がいたらしいので、ハイジャックします。 リバースプロキシーはnet/http/httputilパッケージの ReverseProxyを使えば簡単につくれますよ、という説明はよく見かけるのですが、レスポンスを書き換える方法はまとまった情報がなかったので紹介します。 リクエストを書き換える go言語でリバースプロキシというブログのエントリーにある通りです。 向き先を書き換える、Directorというフック関数を設定してあげることで、向き先を変えられます。なお、このエントリーにあるように、この関数の中でrequestを書き換えるこ

    Goのリバースプロキシーでレスポンスを書き換える - Qiita
    uneasy
    uneasy 2017/12/07
  • Goのパッケージ構成の失敗遍歴と現状確認

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

    Goのパッケージ構成の失敗遍歴と現状確認
    uneasy
    uneasy 2017/12/05
  • GoのInterfaceとは何者なのか #golang #go - niconegoto Blog

    はじめに これはGo Advent Calendar 2017 - Qiitaの3日目の記事です。 当初はコンパイラの最適化を話すつもりだったのですが… GoConでParallel Compilationの話をしたからコンパイラ最適化のところをアドベントカレンダーで出そうと思ってたんだけど結構内容が濃すぎてなんか間に合わなさそうな雰囲気を感じていているのでどうしようか考えている— 井手康貴/Koki Ide (@niconegoto) 2017年12月2日 こんな感じでつらいなということになり、アンケートを行いました。 というわけで何が読みたいのかアンケート— 井手康貴/Koki Ide (@niconegoto) 2017年12月2日 その結果、上記の通りInterfaceとは何なのかの記事を書くことになりました。(異論は認めません) コンパイラ最適化に関しては30%くらい書き進めてい

    GoのInterfaceとは何者なのか #golang #go - niconegoto Blog
    uneasy
    uneasy 2017/12/04
  • GoとCの間のポインタ渡し - Qiita

    これはGo3 Advent Calendar 2017の3日目の記事です。 CでGOのポインタを扱う方法と、GoでCのポインタを扱う方法を紹介する。 コードは以下にあります。 GoのポインタをCで扱う場合 そのままGoのポインタを渡すコードを作成すると、ビルドエラーになる import "C" //export createGoInstancePointer func createGoInstancePointer(n C.int) *box { b := new(box) b.content = int(n) return b }

    GoとCの間のポインタ渡し - Qiita
    uneasy
    uneasy 2017/12/03
  • lestrrat-go/fluent-clientの紹介

    あるときGo言語のアプリで使うfluentdクライアントが必要になりました。色々見た後、「あ、俺自前のクライアントを書こう!」と思い立ち、イチから書いてみる事にしてみました。 (エントリはGo2 Advent Calendarの12/1のエントリです) 結果的に出来たライブラリは良い感じで並行処理がされている気がするので、この記事はその並行処理について解説してみます。 モチベーションまず、そもそもなんで公式のライブラリ使わないの?というところから。

    lestrrat-go/fluent-clientの紹介
  • Golang を使うなら Makefile を恐れるな - Frasco

    最近 Golang を使っています。開発中、私は go buildgo test を繰り返し手入力で実行するのに慣れてしまいました。これはついついやってしまう、私の悪い癖でした。引数がないようなシンプルなコマンドであれば、それほど辛くありません。しかし、タスクが複雑になってくれば、当然苦痛になってきます。逃げ道となりえる選択肢はほとんどありません。bash スクリプトは、あなたの仕事の役に立つでしょう。しかし、私としては makefile が役に立つと言いたいです。make ツールはこういった理由から生まれたものであり、 makefile には普段行う作業をまとめておくことができるからです。私は make の教祖になって、うまい書き方を教えたりすることはできませんが、今回の記事では、私のプロジェクトでよく使っている makefile をまとめておきました。では、やってみましょう。 #

    Golang を使うなら Makefile を恐れるな - Frasco
    uneasy
    uneasy 2017/11/22
  • Go言語のご紹介 2017

    2017年11月18日(土)に徳島で開催された「DevFest Shikoku 2017」にて入門者向けにGoを紹介した私の発表資料「Go言語のご紹介 2017」です。 オリジナルURL:https://talks.godoc.org/github.com/qt-luigi/talks/2017/introduction-of-go-2017.slide#1

    Go言語のご紹介 2017
    uneasy
    uneasy 2017/11/20
  • Go Conference 2017 Autumn まとめ&感想 #gocon - algonote

    Go Conference 2017 Autumnに参加しました。 特別企画:パネルディスカッション w/ mattn 普通のパネルディスカッション。Goはruntime updateでもいけて問題がおきづらい、Windowsでもしっかり動く、Go2に期待すること、中級以上のgopherを採用するなら等々。 バグが互換性のために修正できないのはつらそう。Goで書かれたCのコンパイラは初めて知った。題と全く関係ないがBigQueryってJSONもインポートできるのか。 キーノート:Go at DigitalOcean / fatih DigitalOceanでのGoの活用事例。インフラのコードの多くはGoに移行。Code Sharing等の課題があったので単一レポジトリに移行したが別の課題も出てきたため、毎年少しづつ構成を変更。 DigitalOcean、勝手に内部は全部Pythonだと思

    Go Conference 2017 Autumn まとめ&感想 #gocon - algonote
    uneasy
    uneasy 2017/11/07
  • Golang + echoなREST APIサーバで、テスト実行時に自動でAPIドキュメントを生成できるようにする - 一から勉強させてください

    最近、Golang (+echo) で REST API サーバを開発する機会があったのですが、テストを書いたら API ドキュメントを自動生成するような仕組みを作るために試行錯誤したのでメモです。 方針 API ドキュメントの生成にはtest2docを利用 テストを実行すると API Blueprint 形式でファイルを自動生成してくれそう 該当するメソッドの上にコメントを書くことで最低限の説明は記述できそう README には gorilla/muxと julienschmidt/httprouterのサンプルしか載っておらず echoでうまく動くかは試してみるしかなさそう テストから生成された .apibファイルをaglioみたいなツールにかませば HTML ファイルとして API ドキュメントができそう プロジェクト構成 github.com/danimal141/rest-api

    Golang + echoなREST APIサーバで、テスト実行時に自動でAPIドキュメントを生成できるようにする - 一から勉強させてください
    uneasy
    uneasy 2017/11/01
  • Gunosy広告配信を支えるGo ~キャッシュ編~ - Gunosy Tech Blog

    広告技術部の今川です。 わたしは主にGoを使って広告配信APIの改修を担当しています。 今回はAPIの高速化のためにキャッシュを使った話をご紹介します。 データベースへのアクセス頻度を減らすための努力 広告技術部では、広告配信APIのCTRの予測で利用する特徴ベクトルをAmazon Auroraに保存しています。 しかし、単純にデータ取得時に毎回Auroraに問い合わせていては処理速度が遅くなってしまうので、以下の二種類の方法で高速化を図っています。 1. キャッシュする 予測ロジックで利用するデータの中でも、ユーザーに関するベクトルはユーザーIDをキーにユーザー数だけのデータが存在する反面、すべてのユーザーが同じ時間帯にアクセスするとは限らず、一度訪問したユーザーが続けて何回もアクセスする場合が多いという特徴があります。 このため、利用したいデータがキャッシュに無ければAuroraに問い

  • Treasure 2017 の研修資料は Go を学ぶのに最高だった - kakakakakku blog

    Go 関連のを読んだり,サンプルコードを写経するだけではなく,もっと実践的に勉強したいなと思って調べていたら,VOYAGE GROUP の Treasure 2017 と言うインターンシップの研修資料GitHub に公開されていることを知って,さっそく挑戦してみた.数日間取り組んでみて,とにかく素晴らしかったので,紹介したいと思う.suzuken 先生,素晴らしすぎます! Go入門 GitHub - voyagegroup/talks 学べるテーマ Go研修資料とは言え,幅広いテーマで Go を学ぶことができる点が素晴らしかった.ザッと挙げるとすると以下のようになる.テーマを見るだけで,もうワクワクしてくるのではないだろうか? アルゴリズム実装とテストコード フィボナッチ数 スタック CLI net/http curl 実装 スクレイピング実装 コンカレンシー goroutine

    Treasure 2017 の研修資料は Go を学ぶのに最高だった - kakakakakku blog
    uneasy
    uneasy 2017/10/16
  • Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える - pospomeのプログラミング日記

    devfest 2017 tokyo の発表資料です。 Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える from pospome 当日は入室できない人もいたらしい & 機材トラブルで10minほど開始が遅れてしまった ということで申し訳なく思っています。 また、立ち見する価値がある内容を提供できたのだろうか? とも思っています。 スライドは単体でも発表内容が伝わるように文章を多めに載せているので、 是非確認してみてください。 100ページ越えていますが・・・。 #DevFest_room2 入れなかった。。— t.junichi (@tjun1) 2017年10月9日 ものすごい立ち見人数 #Devfest17 #DevFest_room2— バトルプログラマー柴田智也@少女終末旅行 (@tomoya_shibata) 2017年10月9日 ルーム2これから並ぶ方はま

    Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える - pospomeのプログラミング日記
    uneasy
    uneasy 2017/10/11
  • Go1.8 for Google App Engine

    1. The Go gopher was designed by Renée French. The gopher stickers was made by Takuya Ueda. Licensed under the Creative Commons 3.0 Attributions license. Go1.8 for Google App Engine @GDG DevFest Tokyo 2017 2017年10月09日(月) ハッシュタグ: #DevFest17 #DevFest_room1

    Go1.8 for Google App Engine
    uneasy
    uneasy 2017/10/11
  • goxc + ghrを使って、Goで書いたツールのバイナリをGithub Releasesで配布する - $shibayu36->blog;

    先日の goreleaserを使ってGoで書いたツールのバイナリをGithub Releasesで配布する - $shibayu36->blog; で、Goツールのバイナリ配布ができるようになった。しかし、アーカイブ周りの処理が少し期待と違い、作成したzipをunzipコマンドで取り出すとファイルのアクセス権がおかしくなり、バイナリに実行権限がつかなくなるという問題が起こった。これは困る。 goreleaserを深追いをしても良いけど、ひとまず別の方法も試してみようと思って、goxc + ghrを使うようにしてみた。これがうまくいったので、メモしておく。 今回のコードは以下のところで確認できる。 https://github.com/shibayu36/shibayu36/tree/v0.0.7 https://github.com/shibayu36/shibayu36/pull/1 バ

    goxc + ghrを使って、Goで書いたツールのバイナリをGithub Releasesで配布する - $shibayu36->blog;
    uneasy
    uneasy 2017/10/10
  • Goツールのリリースにおけるバージョニングについて | おそらくはそれさえも平凡な日々

    Goのツールをリリースする時、個人的には以下のような手順を踏んでいる。もちろんスクリプトで一撃でできるようにはしている。今回は1.の話。セマンティックバージョニングの話は出てきません。 versionをbumpする CHANGELOGを更新する 1,2での変更をgitに反映してタグを打つ ビルドする ビルドをアップロードする versionは -ldflags を使って動的に埋め込む方法があるが、最近は明示的にソースコードに書いた方が良いと思うようになってそうしている。 理由としては、ユーザーが go get/build で実行ファイルを取得した場合でもバージョンは表示されて欲しいというのが一つ。 -ldflags で実行ファイルに色々な値を埋めることはできますが、基原則として、それらを埋めてない状態でもちゃんと実行ファイルが正常に動くようにすることを意識した方が良い。 もう一つの理由と

    Goツールのリリースにおけるバージョニングについて | おそらくはそれさえも平凡な日々
  • goreleaserを使ってGoで書いたツールのバイナリをGithub Releasesで配布する - $shibayu36->blog;

    Goで書いたツールのバイナリ配布ってどうやれば良いのかなーと思っていたら、goreleaser というツールを見つけたので使ってみた。非常に便利だったのでメモしておく。 goreleaserとは 簡単に言うと、Goのバイナリのクロスコンパイルと、Github Releasesへのデプロイをやってくれる君。詳しくは https://goreleaser.com/ と https://github.com/goreleaser/goreleaser を参照。 goreleaserのインストール https://github.com/goreleaser/goreleaser/releases からバイナリを取ってくるでも良いけど、僕はgo getでインストールした。 $ go get github.com/goreleaser/goreleaser goreleaserの設定を行う まずはリリ

    goreleaserを使ってGoで書いたツールのバイナリをGithub Releasesで配布する - $shibayu36->blog;
  • Go APIサーバーの設計について、golang.tokyo#9で話しました。 - Gunosy Tech Blog

    どうも、Gunosyの新規事業開発室エンジニア、高橋(@__timakin__)です。 先日行われたgolang.tokyo#9にて、GoAPIサーバーの設計についてトークをする機会を頂いたので、いってきました。 スライドはこちらです。全編英語となっておりますが、ご覧頂けると幸いです。 speakerdeck.com 概要 アジェンダの前の序文にも書いてあるのですが、GoAPIが大企業で試験的に導入するというフェーズを超え、スタートアップなどでも「Goって最近トレンドだよね」という声が聞こえ、小規模のチームでも積極的に登用されるようになってきたように感じます。 あくまで個人の観測範囲での話なのでバイアスがあるとは思いますが、「試してみた」というトークが界隈でも最近少なくなったように思います。 そんな中、参考例となるGoAPIのOSSは非常に少ないため、新規に始めるハードルは、学習コス

    Go APIサーバーの設計について、golang.tokyo#9で話しました。 - Gunosy Tech Blog
    uneasy
    uneasy 2017/10/03
  • ミリシタを支える GAE/Go

    2017-09-28 thu. 第 1 回 Google Cloud INSIDE Games & Apps 株式会社バンダイナムコスタジオ エンジニア 保科 一成 氏の登壇スライドです。Read less

    ミリシタを支える GAE/Go
    uneasy
    uneasy 2017/10/03
  • Go で並列数をうまいところ制御しながら並列に動くクローラー - Diary

    Go で並列数をうまいところ制御しながら並列に動くクローラー というもののサンプル。 並列に HTTP アクセスしてきてパースして title 要素を表示するというものです。 title 要素をパースしてくるのに使っているパッケージはこちらです。 今回は HTML のダウンロード => パース => 画面への出力処理 までを一塊として並列処理の単位にしています。 ですが、ここをさらに gorutine と channel で制御してダウンロードは 5 並列でやってパースは 20 並列でやって出力は 1 並列でやる、みたいなふうにもできるでしょう。今回は channel を単なるセマフォのように使っていますが、その場合は gorutine 間のやり取りに channel を使う方がシンプルに書けるでしょう(そしてそれがより Go らしいやり方でしょう)。 またダウンロード制御するにあたってホ

    uneasy
    uneasy 2017/09/30