2019-01-01から1年間の記事一覧
大晦日なので KPT で今年の振り返りをします。 ちなみに年始の目標はこちら。 ema-hiro.hatenablog.com Keep 登壇 これが今年は一番大きな出来事だったかなと思います。 社内勉強会、そして Go Conference と言う大きなカンファレンスで登壇しました。 20代…
Go の 標準の log パッケージ の実装をベースに自前で管理のログ出力部分を実装してみました。 やったこと Go の標準の log パッケージをベースにして自前でログを実装する機会があったので、そもそも log パッケージ内の実装を読んで見ようと思ったのがきっ…
内容 nodebrew を辞めて n を使い始めた 理由 年末だし、開発周りに環境をアップデートしていたこと node-brew で管理すると、バージョンを切り替えるときに nodebrew を打つのがめんどくさい 割と仕事でもそこそこ頻繁に node のバージョンを切り替えること…
大した話じゃないんですけど、忘れてたので備忘録です。 strs := []string{"a", "b", "c", "d", "e"} // "c" を削除する。 idx := 2 strs = append(strs[:idx], strs[idx+1:]...) fmt.Println(strs) ref: https://play.golang.org/p/3QP4OXw2X0u
テストなどで実際にサーバーを立てずに、HTTP のリクエストをシミュレートしたいときに httptest を使いますが、この httptest で立てたダミーサーバーそのものアクセスする方法はないかを調べてみました。 Motivation あるテストをメンテしていた時に httpt…
Summary Go では concrrent map writes のような競合状態の可能性がある実装があるときに排他ロックをかける。 競合状態を回避するためのサンプルとしてロックをかける実装はたくさんインターネット上に情報が出てくるが、そもそも意図的に競合状態を作り出…
linedevday.linecorp.com 今年も参加してきたので備忘録として感想をつらつらまとめます。 スライドは [こちら https://speakerdeck.com/line_devday2019] 感想 まず会場がすごい。グランドニッコーを二日間使うってどういうことだ。 僕は技術的なカンファレ…
報告 以下のリポジトリのオーナーを移行しました。 https://github.com/emahiro/aelog -> https://github.com/DeNA/aelog https://github.com/emahiro/aehcl -> https://github.com/DeNA/aehcl App Engine の 2nd Gen 移行のために業務で作っていたものです。…
Overview 以前作成した ae-plain-logger を aelog としてパッケージ名を変更した。 github.com Motivation emahiro/aehcl とシリーズものとして合わせたかった。 ローカルだと JSON じゃなくてテキスト出力できた方が便利とコメントもらった。 Testable Exam…
net/http の Header の Clone の実装について調べる機会があったので、そこで気になったことをまとめました。 net/http.Header の cloneHeader の実装 本家の Clone の処理は以下 // Clone returns a copy of h. func (h Header) Clone() Header { // Find t…
[]byte でローカルにキャッシュを保存する glc (go local cache) というライブラリを作ってみました。 Motivation APIのレスポンスやそんなに頻繁に更新しないデータを一定時間ローカルにキャッシュとして持っておきたいケースは多いと思います。 Go であれ…
別に目新しいこともないですが、Cloud Run の走りだけ使ってみたので雑な備忘録。 Docker image を用意して gcr に上げる 起動したい Docker image を作成して gcr.io に上げておきます。 Cloud Run を起動するときは gcr.io 上に上がっている image のみ選…
Github Actions (β) がリリースされていたので、せっかくなので自分が現在作成しているプロジェクトをネタに Github Actions の設定を行ってみました。 まずはβに参加する help ページから Github Actions に参加します。 https://help.github.com/ja/articl…
2019/10/09 Google Cloud SDK を v266.0.0 に更新すると aetestの更新せずとも直ります。 2019/10/08 google.golang.org/appengine を最新版にすると本問題は解決します。 ※詳しくは下部の追記参照 Google Cloud SDK を最新版にアップデートした際に aetest …
Go の struct tag の記法を編集する方法を記載します。 IntelliJ と VSCode の2つでの設定方法を記載しました。 VSCode https://github.com/fatih/gomodifytagsを使います。 これは VSCode に限らず各種 Editor 向けにに Go の Struct tag の自動生成機能を…
最近、とある機会にソースコードレビューについて質問されたので、考えてること、意識していることをまとめてみました。 なお、これは私自身の考えていることで人によって異なるところは多いと思いますので一個人のお気持ち表明として読んでもらえればと思い…
git subtree という便利なコマンドを教えてもらいました。 submodule と異なり、取りこむ外部リポジトリのコミットも取り込み元のリポジトリの commit に入れるので、取り込んだリポジトリの編集を commit に含めることが可能です。 How to use help コマン…
もともと JetBrains に魂を売っていた人間なのですが、最近4Kの外部ディスプレイに繋ぐとよく固まってしまってキーボード入力に遅延が発生して体験が圧倒的に不安定になってきているので、これを機に VSCode に乗りかえました。 普段は Go を書いているので…
goimports, gopls などの go get で入れたツール群を最新版にアップデートする方法 # ツールごとに最新版にする go get -u golang.org/x/tools/cmd/goimports # cmd で使えるツール群を一括で最新版にする go get -u golang.org/x/tools/cmd/... # いっその…
ある slice の操作や検証をするときにスッキリ書く方法を教えてもらったので備忘録。 ※ 随時更新(忘れて新しくエントリ書くこともあるかも) 重複する要素を持つ slice を弾きたいとき func duplicate(arr []string) bool { base := map[string]int{} for _,…
以下のエントリで触れてますが、GitHubにOSSを公開したときの手順を備忘録として記録します。 github.com 手順 GitHubに公開用のリポジトリを作成し、コードをPushする LICENCE を設定する ciを連携する Go Report Card を登録する Godocを書く GitHubに公開…
App Engine 2nd Generation で構造化ログを出力するための ae-plain-logger というライブラリを作成しました。 github.com aelog とは? ログエントリを json ペイロードとして標準出力に出力します。この時 traceID と spanID をログエントリに含めることで…
7月も終わって現所属に異動(転籍)してきてから2年と1ヵ月が経ったので勤続エントリを書いてみます。 (これもいつまで続くかな...笑) 去年のエントリは以下 ema-hiro.hatenablog.com 目次 2年終わって 技術スタック的なあれこれ チャレンジしたこと 次の一年…
Go で import 順を揃えたい(standard -> 3rd -> local の順)のに、intellij でファイルを開くと最初から自動で import が折りたたまれてて、レビューでフィードバックされるまで気づかないことがよくあったのでその設定方法を off にする方法がないか調べま…
ema-hiro.hatenablog.com これの追記です。 ディレクトリ構造を変更した時に save_cache ディレクティブで新しいキャッシュ先を指定しても restore_cache で新しいキャッシュ先ではなく古いキャッシュが利用されてしまうケースがあってハマってました。 結果…
ema-hiro.hatenablog.com 以前このエントリーを書いたのですが、ここ最近 JetBrains の Tool Box を使い始めたときに従来の方法で Command Line Tool が作れなくなっていたので、再度作成するための手順を記載します。 手順 IntelliJから作成する Tool > Cre…
通常 $cd | . ./config/fish/config.fish GitHub - oh-my-fish/oh-my-fish: The Fish Shell Framework を使っているとき $omf reload 以上
Go Conference 2019 Spring - Gocon に登壇者として参加してきました。 登壇の詳細は以下になります。 タイトル: 「Go1.9 で作られた App Engine のサービスを Go1.11 に移行した話」 登壇資料 speakerdeck.com こういった大きなカンファレンスで発表するの…
令和最初のエントリです。 連休前に教えてもらったことについてまとめました。 このエントリに記載する内容については、github の SliceTricks · golang/go Wiki · GitHub に記載されてる内容になります。 go の sliceについて go の slice はポインタ型です…
平成最後のエントリです。(ギリギリ間に合った...) 10連休中の目標であった『進化的アーキテクチャ』を読み切ることができたので備忘録を残します。 ※ 僕は別に設計について明るいわけでもマイクロサービスについて明るいわけでもありません。 サマリ 『マク…