技術備忘記

日々調べたこととかとりとめなく

go/typesでgo moduleを有効にするまでの旅路

はじめに この記事はGo2 Advent Calendar 2021 23日目の記事です。 TL; DR; go/types で go moduleを有効にするためには golang.org/x/tools/go/packages を使う。以上。 pkg.go.dev godoc.org 旅のはじまり 日頃仕事でDX(Developer Experienceの方)おじさん…

Written A Compiler In Go を読んだ

はじめに この記事はGo2 Advent Calendar 2018 23日目の記事です。 タイトルの通りWritten A Compiler In Go (以下Compiler本)を読んで、とても面白かったので、その内容を紹介したいと思います。 compilerbook.com Writing An Interpreter In Go Compiler本…

Docker network周りでハマった話

何をしたか Docker Swarm + Composeな構成を、VPNなどネットワーク的な制約が幾つかある環境に構築しました。 その際にいくつかハマり、学びがあったので記事にしたいと思います。 バージョンなど ホストOS cat /etc/redhat-release CentOS Linux release 7.…

GoでORM利用の際のオーバーヘッドについて

はじめに GoのORM的なライブラリには幾つか種類がありますが、例えばgorpで あるテーブルからレコードを取得するのは以下の流れとなります。 1)以下のようなテーブルと対になる構造体を定義 type TestStruct struct { ID int `db:"id"` Col1 sql.NullString …

Docker Compose restart の挙動

Docker (Compose) の 自動再起動について ホストOSを起動したタイミングであるアプリケーションを自動で立ち上げたい、 あるいは何らかの問題で落ちた時に、自動で再起動して欲しい、というニーズは何処にでもあるかと思います。 今回は Docker Compose (以…

Goでアルゴリズムのお勉強

珠玉のプログラミングを読んだ GWには普段はやらないことをやろうと思い、数年前に流し読みだけして積んであった、珠玉のプログラミングという本を読みました。 www.amazon.co.jp かなり古い本なのですが、富豪的プログラミングに慣れてしまっている自分にと…

MacにDocker Swarmクラスタを構築 ①

Docker Swarm 最近Dockerを本番環境(オンプレミス)への導入を検討しています。となると、オーケストレーションどうしようかという話になると思いますが、 選択肢がいろいろあってどうしようかなーと思っていました。 Kubernetes Docker Swarm Mesos Nomad No…

GoからGitHub APIを利用する

はじめに とあるツールを作っていて、GoのコードからGithub APIを叩く必要があったので、使用したライブラリや、スニペットなどを残しておこうと思います。ちなみにエラーハンドリングは一切していないです。予めご了承ください。 使用ライブラリ go-github …

Goパッケージ依存管理最新事情

はじめに Goの依存パッケージ管理といえば、以前から以下のような問題点が指摘されており、 総じてイマイチ、というのが通説である気がします。 外部依存ライブラリのバージョン等が指定できないためビルドの再現性が保証されない 複数prjの開発を同一環境で…

Go1.6 パフォーマンスについて

Go1.6リリース! 去る2016/02/17にGoの1.6がリリースされました。 という訳で色々試してみようと思ったのですが、やりたかったことのほぼ100%を すでにRC版で実施されている方がいましたので有難く内容拝見させて頂きました。 良記事オススメです。 qiita.com…

docker-slimによるImageの簡単ダイエット

Docker Container Imageのダイエット 先日こちらに参加してきました。非常に興味深い内容ばかりだったのですが、その中でもこのスライドの内容はとても印象に残りました。 私自身は残念ながら今の職場がオンプレミス環境(一部ハイブリッド)なこともあり、Doc…

Go言語でのimport cycle not allowedに対処する

はじめに golang でのWeb開発では、RubyにおけるRailsのようなデファクトスタンダードなフレームワークがないので、 パッケージ構成に関して、開発者に大きな裁量があります。 通常、Web開発では多くのフレームワークが採用しているMVC + Service的な形のパ…

IntelliJ IDEAでファイル保存時にgoimportsする

小ネタです。 やろうと思いつつ出来てなかったのですが、 goimportsしないで許されるのは2015年までだよねー、ということでやってみました。 Version IntelliJ IDEA Version 14.0.3 goプラグインの導入 まずこちらを入れます goimportsショートカットの割り…

ZooKeeper を使った Service Discovery入門

ZooKeeper ZooKeeperとは、CoreOSのetcd や Hashicorpのconsul等とよく並び称される、 いわゆるCordination Serviceツールです。 詳しく知りたい方は、公式ドキュメントを、とりあえずおおまかな特徴を抑えたいという方は こちらの記事が非常によくまとまっ…

Go VS Elixir (1)フィボナッチ数列

最近仕事はもっぱら Go を使うことが多いのですが、 Elixir がここ最近気になっており学習をしています。 ということで、思いつきで性能比較をしてみました。 検証環境 MacBook Pro (Retina 13-inch、Early 2015) プロセッサ 3.1 GHz Intel Core i7 メモリ 1…