ブックマーク / qiita.com/deeeet (15)

  • GolangのhttptestでHTTP2を使う - Qiita

    GolangGo1.6でHTTP2をサポートした. また2017年2月にリリース予定のGo1.8ではServer Pushを行うためのメソッドも新たに追加される(使い方は HTTP/2 Server Push · Go, the unwritten parts が詳しい). 今後GolangでのHTTP2の利用はさらに増えると考えられる. HTTP2を使うアプリが増える分そのテストも重要になる. Go1.6におけるHTTP2サポートは素晴らしくAPIの変更なしにサポートが行なわれた. Server側でh2を有効にするにはListenAndServeTLSで起動すればよいしClientもDefaultClientを使えばよい. Golangでサーバーのテストをするときはhttptestパッケージが主に利用されるが,これほど簡単に使える訳ではない. 以下のように軽く設定を入れる必要がある.

    GolangのhttptestでHTTP2を使う - Qiita
    deeeet
    deeeet 2017/01/11
    書いた
  • 良かったGolangの記事/発表(2016年) - Qiita

    (元々Gistにメモ的に書いていたが後から追跡しにくいので転載した) golangweekly.com が http://golangweekly.com/issues/140 にてBest 2016をまとめていた.便乗して自分なりに今年良かったものをまとめてみる.https://blog.golang.org/ は除外している.あくまで「自分が良かった」ものである. まずgo-kitのPeter BourgonのGo best practices, six years inとBoltDBのBen Johnsonが標準パッケージを詳細に語るGo Walkthroughシリーズ https://medium.com/go-walkthrough はMUSTである.これらの知見を知ってるだけでだいぶ良いコードが書けるのではないか. 今年はGo1.6とGo1.7がリリースされたがruntimeの

    良かったGolangの記事/発表(2016年) - Qiita
    deeeet
    deeeet 2016/12/26
    Gistに書いていたけど追跡しにくいので転載した
  • 複数のGolangバージョンに対応したパッケージを書く - Qiita

    GoにはGo 1 promise of compatibilityがあり基的にGo1.xでAPIのインターフェースが変更されることはない.そのため過去に書いたコードを新しいGoでビルドしてもぶっ壊れることは(おそらく)ない.ただリリースごとに新しいパッケージや関数/メソッドはどんどん追加されていくため古いGoで新しいコードをビルドすることはできないことがある(例えば,標準のcontextパッケージを使っているコードはGo1.7以降でしかビルドすることができない). GoはリリースごとにGC(e.g., Sub-millisecond GC pauses)やコンパイラ(e.g, SSAの導入)や各標準パッケージの改善が行われる.そのため自分は「どんどんバージョン上げていけば良い.だからパッケージも同じく最新のバージョンで動くものを提供すれば良い」と思う.がこれは個人的な思想で誰かが使える形

    複数のGolangバージョンに対応したパッケージを書く - Qiita
    deeeet
    deeeet 2016/12/20
    書いた
  • 独自のfmt.Formatterを実装する - Qiita

    fmt.Formatter interfaceを実装すると独自で定義した型がfmt.Sprintfやfmt.Fprintfに渡されたときのverb(verbとは例えば%sや%vなど)ごとの出力をカスタマイズすることができる. これを実装しているのは以前 Golangでエラー時にスタックトレースを表示するで紹介したpkg/errors パッケージである.pkg/errorsで生成したエラーは%sverbを使うと通常の表示,%+vverbを使うとスタックトレース形式の表示という切り替えが可能になっている.これはfmt.Formatterを実装することで実現している.実装は以下のようになっている. type StackTrace []Frame func (st StackTrace) Format(s fmt.State, verb rune) { switch verb { case 'v'

    独自のfmt.Formatterを実装する - Qiita
    deeeet
    deeeet 2016/11/02
    書いた #golang
  • Golangでエラー時にスタックトレースを表示する - Qiita

    Golangerrorにはスタックトレース情報はない.基は必要ないと思うし困ったこともない.一方で新しくプロジェクトに入りかつコードベースに慣れてない場合はどこが問題かアタリをつけるためにあっても良いとも思う.pkg/errorsを使ってるならそれはすぐに実現できる. pkg/errorsの基的な考え方についてなどは GoCon 2016 springの後に "Golangのエラー処理とpkg/error"にまとめた(作者のDaveのブログ記事は "Don’t just check errors, handle them gracefully").ここで強調して書いたのはちゃんとエラーをアノテートする(何をしてそのエラーが発生したかの状況を付加する)ことである.特に外部のパッケージとやり取りする場合,つまりまともなエラーメッセージが返ってこないかもしれない場合,pkg/errorsの

    Golangでエラー時にスタックトレースを表示する - Qiita
    deeeet
    deeeet 2016/10/26
    書いておいた
  • Golangのbundleコマンド - Qiita

    Golangbundleコマンドに関する困惑をTwitterで見かけた.おそらくRubybundlerと名前が衝突するためだろう. ただこのコマンドはおそらく多くのひとは今後使うことはないため気にする必要はない.これはGo1.6でHTTP/2をぶっ込むときにx/toolsに入れられたパワー系コマンドである(もともとはRuss Cox氏が作っていた).インストールしているのはおそらくこの対応の経緯を追っていた人だと思う(ちなみに僕はこれをインストールしたのを忘れていてRubybundleを実行したつもりがGolangのほうを実行してしまったことがある). bundleコマンドとは何か? bundleはパッケージを別パッケージとして1つのファイルにするコマンド.以下のように使われる. 上記のコマンドを実行するとgolang.org/x/net/http2パッケージをnet/httpパッケ

    Golangのbundleコマンド - Qiita
    deeeet
    deeeet 2016/09/21
    書いておいた
  • 社内ツールもHomebrewで配布する - Qiita

    Homebrewは家のFormula以外もtapコマンドで取り込む仕組みをもつ (HomeBrewで自作ツールを配布する). tapは基的にはGithub上のレポジトリを前提にしているが,Github以外のレポジトリ(e.g., GHEやBitbucket)でも使うことができる.つまり外部には公開したくない社内ツールもHomebrewで配布することができる. 以下のようにする.

    社内ツールもHomebrewで配布する - Qiita
    deeeet
    deeeet 2015/12/22
    軽く書いておいた
  • 高速にApache Kafkaを試す - Qiita

    Apache kafkaに入門した 最近Apache kafkaを探求している.触ることも多くなったのでローカルで簡単に試せる環境をちゃんと整えた.JVMだし動かすの大変そうと思われがちだがDockerを使えばコマンド1発で起動できる.以下では実際にBrokerを立ててsyslogの配信/購読をやってみる. バージョンは 0.8.2 を対象に書いている. まずKafka(Broker)を動かす.Dockerイメージtcnksm/single-kafkaを準備した.以下のように起動する.オプションはすべてDockerホスト外からBrokerにアクセスするための設定. $ docker run --rm -it \ --name kafka \ --publish 9092:9092 \ --env ADVERTISED_HOST=${DOCKER_HOST} \ --env ADVERTIS

    高速にApache Kafkaを試す - Qiita
    deeeet
    deeeet 2015/09/10
    書いておいた
  • Heroku用のDockerfileを書く時のTips - Qiita

    Introducing 'heroku docker:release': Build & Deploy Heroku Apps with Docker HerokuDockerを使ったツールを提供し始めた.中身を追ってみて( "Herokuの'docker:release'の動き")いろいろできそうだったので遊んでみた. tcnksm/gox-server,Heroku上にGo言語のクロスコンパイル環境を立てた.curl -A "uname -sp" https://gox-server.herokuapp.com/Soulou/curl-unix-socketみたいなリクエスト投げると環境にあったバイナリをビルドしてダウンロードできる tcnksm/heroku-docker-registry,Heroku上でDocker Registryを立てた.普通にpushやpullできる.バッ

    Heroku用のDockerfileを書く時のTips - Qiita
    deeeet
    deeeet 2015/05/15
    書いておいた
  • PackerでDockerイメージを作成してQuay.ioにpushする - Qiita

    Packerを使うとDockerfileを使わずにChefやPuppetからDockerのイメージを作成することができる(詳しくは"Packerを使ってChef/Puppet/AnsibleでDockerのイメージをつくる"に書いた).ChefとかPuppetのような資産が既にある場合は,それを使うのも良い(インフラCIでベースDockerイメージだけChefで作ってしまってみたいなことも考えているが,まだ試し中). イメージができたら,次はそのイメージをどこかにホストする必要がある.また業務で利用するなら認証機構のちゃんとしたプライベートレジストリを使いたい.Dockerのイメージの保存先の選択肢は,今のところ以下の3つがある. docker/docker-registryを運用する DockerHubを利用する Quay.ioを利用する まず、自分でdocker-registryを運用

    PackerでDockerイメージを作成してQuay.ioにpushする - Qiita
    deeeet
    deeeet 2015/01/23
    軽くメモ書いた
  • HomeBrewでフォントも管理する - Qiita

    HomeBrewを使うと,OSXのパッケージを管理できる.さらにhomebrew-caskを使うと,Google Chromeのように.dmgとして配布されるアプリケーションもインストールできる. で,このhomebrew-caskには,フォントをインストールするためのhomebrew-fontsというCaskが存在する. Brefileが非奨励になったため,パッケージは各々のシェルスクリプトで管理していると思う.例えば,以下のようなスクリプトを書いておけば,お気に入りのフォントもパッケージと同様に管理しておくことができる. #!/bin/bash # Add repository brew tap caskroom/fonts # fonts fonts=( font-m-plus font-source-code-pro font-clear-sans font-roboto ) #

    HomeBrewでフォントも管理する - Qiita
    deeeet
    deeeet 2014/11/06
    書いた!
  • boot2dockerの環境変数を一発で設定する - Qiita

    boot2dockerが新しくなってDOCKER_HOSTだけではなく,DOCKER_CERT_PATHやDOCKER_TLS_VERIFYなど設定するべき環境変数が増えた. boot2dockerはこれらを一発で設定するコマンドを準備している.

    boot2dockerの環境変数を一発で設定する - Qiita
  • Dockerでnghttp2を動かす - Qiita

    HTTP2ConferenceにてHTTP2.0の実装を試すにはnghttp2が良いという知見を得たので,OSX上でboot2dockerを使って楽しむことにした. イメージを作成する Dockerfileは以下. FROM buildpack-deps RUN git clone https://github.com/tatsuhiro-t/nghttp2 \ && cd nghttp2 \ && autoreconf -i \ && automake \ && autoconf \ && ./configure \ && make WORKDIR /nghttp2/src

    Dockerでnghttp2を動かす - Qiita
  • Dockerでh2oを動かす - Qiita

    HTTP2Conferenceにてkazuhoさんの"H2O - the optimized HTTP server"を聞いて,h2oを試したくなったので,Dockerで動かしてみた. イメージを作成する Dockerfileは以下. FROM buildpack-deps RUN apt-get update && apt-get install -y \ cmake \ && rm -rf /var/lib/apt/lists/* RUN git clone https://github.com/h2o/h2o \ && cd h2o \ && git submodule update --init --recursive \ && cmake . \ && make h2o WORKDIR /h2o ENTRYPOINT ["./h2o", "-c"]

    Dockerでh2oを動かす - Qiita
  • 実例で学ぶDockerコマンド - Qiita

    Docker Cheat SheetというDockerの基礎のまとめが良かったので翻訳してみた(Docker 虎の巻).このまとめは説明は十分にあるが,例がほとんどない.実例を使って,コンテナとイメージに関する基礎コマンドをまとめてみる. OS XでDockerを使う場合 vagrantを使ってる場合は今すぐ1.4にバージョンを上げる. Download Vagrant - Vagrantより.dmgをダウンロードしてきてインストール.

    実例で学ぶDockerコマンド - Qiita
    deeeet
    deeeet 2013/12/13
    vagrant1.4の説明を追記
  • 1