golang

A collection of 9 posts
Search my blog posts with Alfred
alfred

Search my blog posts with Alfred

自分のブログ記事を検索する Alfred ワークフローを作った。 * GitHub - lorentzca/alfred-myblog-workflow: Search blog posts. 「前困った MySQL ログインのあれなんだっけ」「Terraform のあれなんだっけ」みたいに以前自分で調べたことを改めて参照したいことがちょくちょくあるので作りました。 ブログ内にも検索用の固定ページはありますが、 Alfred のほうがブラウザを開くまでもなくシュッと使えるのでワークフローにしました。 私のブログは Algolia にインデックスを作っていて、 API で全文検索できるようにしているので、それを叩いている感じです。 Go の Algolia 公式クライアントを使っています。 * GitHub - algolia/algoliasearch-client-go: Algolia Search API Client for Go Algolia の使い方から検索方法等の諸々については以下。 * algolia - ゆるふわキャンパー 一応
1 min read
Alfred CircleCI Workflow
alfred

Alfred CircleCI Workflow

CiecleCI のビルドステータス(直近30個)を検索して表示する Alfred ワークフローを作りました。 * GitHub - lorentzca/alfred-circleci-workflow: Search and show CircleCI build status. こんな感じで、リポジトリ名やブランチ名、ユーザ名、ビルドステータスで検索できます。まだ and 検索には対応していません…。 アイコンがビルドステータスによって変わります。また、実行ユーザ名、開始時間、ビルド時間も小さく出しています。 選択すると該当のビルド番号の CircleCI のページに飛びます。 コミットが活発だとよく CI がキャンセルされたり(同ブランチでビルド中に新しいコミットがあった場合は前のコミットのビルドをキャンセルしている)、どのブランチでテストがどうなってるのかシュッと確認しづらいので作りました。 Go の net/http パッケージで CiecleCI の API(1.1) を叩いて行っています。 API に recent-builds
1 min read
Alfred Mackerel hosts Status Workflow
alfred

Alfred Mackerel hosts Status Workflow

Mackerel に登録してあるホストとホストのステータスをインクリメンタルに検索して表示する Alfred ワークフローを作りました。 * GitHub - lorentzca/alfred-mackerel-hosts-status-workflow: Search Mackerel hosts and show host's status. こんな感じで見れます。アイコンの色もステータスによって変わります。選択すると該当ホストのページに飛びます。 似たような Mackerel ワークフローは既にあったのですが、自分の Go の練習のためとホストのステータスをさらっと見れるようにしたい事情があったので作りました。 Mackerel の API は Go のクライアントから叩いています。 * Go の Mackerel Client を試す Alfred 周りの諸々は以下です。 * かっこいい Alfred ワークフローを作るための覚書き まとめ 小さいツールでも作ると達成感があって楽しいです。 Alfred のワークフローに G
1 min read
Trying out Go Mackerel client library
mackerel

Trying out Go Mackerel client library

Mackerel の API を使って Alfred ワークフローを作ってみよう と思っていたらタイミングよく Go のクライアントを見つけたので使ってみました。 * GitHub - mackerelio/mackerel-client-go: Mackerel API Client in Go (under development version) ちなみにまだ α 版とのこと。 Now, mackerel-client-go is an ALPHA version. In the future release, it may change it's interface. 準備 go get github.com/mackerelio/mackerel-client-go export MACKEREL_APIKEY="XXXXXXXX"
2 min read
Tips of Create Alfred Workflow
alfred

Tips of Create Alfred Workflow

何かしらの API を使ってインタラクティブに結果を返すかっこいい Alfred ワークフローを作るために最低限必要なことを学んだのでまとめます。 API キーを使うとき API を叩くたびに API キーを入力するのは面倒なのでどこかに永続化したいです。 Keyword オブジェクトで文字列を受取り、それを Write Text File オブジェクトでファイルに書き込むことで永続化出来ます。 参照する際は各オブジェクトで $(cat /path/to/apikey) するなり好きに参照すればよさげ。 重要なのは Write Text File の設定項目でどのパスにファイルを置くか決めることです。選べるパスは workflow's data folder と workflow folder です。 workflow's data folder は Workflow の設定で Bundle ID が設定されている場合、 ~/Library/Application\ Support/Alfred\
5 min read
Delete Go Map entry and rename Go Map key
golang

Delete Go Map entry and rename Go Map key

Mapの操作を色々する機会があったのでまとめてみます。 * The Go Programming Language Specification - Map_types それぞれのセクションごとに動作するコードのリンクがあります。play.golang.org上にあるので、その場で実行することができます。 ゴール pathみたいに/区切りの文字列をキーとして持っているMapに対し、特定の条件を持つキーを削除したり、キー名を変更する。 普通はそんなこと意識しないようにMap作っていくと思うんだけど人生は長い。Mapのキーをごにょごにょしたいときもある。 Mapの作成 いくつか作成方法はありますが今回は以下のように作成。このMapをごにょごにょしていきます。 func defineMap() map[string]int { m := map[string]int{ "/tabemono/fruit/apple/hoge": 1, "/tabemono/fish/carp/fuga": 4, "/tabemono/fruit/p
2 min read
Search Algolia index data with Golang client
golang

Search Algolia index data with Golang client

このブログの記事検索にAlgoliaを使っています。 * algolia - ゆるふわキャンパー Algoliaはjsonでデータをクラウドにアップロードし、APIで検索したいキーワードを投げて結果を得ることの出来るサービスです。 AlgoliaはREST API以外にも一通り有名どころの言語のライブラリを提供しています。今回はGolangのライブラリを使用して、私のブログの記事を検索してjsonで結果を得るところまでやってみます。 準備としてとりあえずalgoliasearchをインストールしておきます。 go get github.com/algolia/algoliasearch-client-go/algoliasearch 簡単なことからやってみる まずはQuick Startに従ってサンプルデータの検索をやってみます。 Quick Startではデータを登録する例から始まっていますが、今回はサンプルデータを手で直接Algoliaに登録しちゃいます。 contactsという名前でIndexを作成します。 早速登録したデータに
4 min read
Trying out golang BigQuery client library
bigquery

Trying out golang BigQuery client library

GCPのbillingをbigqueryにエクスポートしてre:dashで可視化してみました。 * Export GCP Billing data to Google BigQuery * Visualize GCP Billing Data 次はmackerelにbillingの情報を送ってメトリクスとして記録してみたいので、まずはgolangからbigqueryに対し何かしらのクエリを叩くところまでやってみます。 以下のドキュメントを見ながら試してみます。 * BigQuery クライアント ライブラリ 準備 ライブラリのインストール。 go get cloud.google.com/go/bigquery go get google.golang.org/api/iterator * cloud.google.com/go/bigqueryはbigqueryのapiを叩くライブラリ * ちなみにこのライブラリはまだβ版なので注意 * google.golang.org/api/iteratorはgoogle ap
2 min read
Rewrite check_mailgun.sh to golang
mackerel

Rewrite check_mailgun.sh to golang

以前mailgunのステータスをmackerelで監視するシェルスクリプトを書きました。 * Check maingun status on mackerel これをようやくGoで書き直して、一応使える状態にはなったのでうp。 * GitHub - Lorentzca/check-mailgun: WIP デモ。 $ ./build/darwin_amd64_check-mailgun -p key-xxxx -d ghost.ponpokopon.me State OK: ghost.ponpokopon.me is active あんまりよくわかってないまま書いたので後で復習が必要。特に以下。 * http.Client{}をなぜポインタのアドレスで指定しているのか * 型周り * httpパッケージで戻り値が(resp *Response)になってて*Responseってどういう型なのかわからんみたいな * Goプログラミング言語仕様 - golang.jp * jsonパッケージが何やってるのかよくわからん
1 min read