blog.syfm

徒然なるままに考えていることなどを書いていくブログ

Programming

ISUCON13 に参加した

毎年恒例の ISUCON に参加してきた。メンバーは毎年恒例 @acomagu & @natumn 今回はノベルティが欲しかったのもあり個人スポンサーになってみた。 結果としては最高スコアで 56180 点を出すことができたが、再起動試験に失敗し fail でした…。 事前にやった…

go-fuzzyfinder で色をつけられるようになった

個人的にほそぼそと開発をしていた ktr0731/go-fuzzyfinder を使うと fzf のような UI を持つ CLI ツールを非常に簡単につくることができます。go-fuzzyfinder では、Preview Window という、現在選択しているアイテムの詳細情報を知らせるための表示領域を…

Go の "missing go.sum entry" エラーによって Dependabot による PR が自動でマージできなくなる問題を修正する

今まで設定していたものたち 個人利用のリポジトリや社内リポジトリでは Dependabot を利用していて、依存のアップデートを自動で行うようにしていた。 依存のアップデートがあると Dependabot は Pull Request を出してくれるものの、放置しがちだったので…

curl から Go の API クライアントを自動生成する

これは Aizu Advent Calendar 2020 の 10 日目の記事です。9 日目は虚無さん、11 日目は虚無さんです。 curl を使って API クライアントやリクエスト・レスポンス型を自動生成したいと思ったことはありませんか?わたしはあります。ということでつくりました…

Go の t.Cleanup がとてもべんり

Go 1.14 で testing パッケージに新しく t.Cleanup(func()) や b.Cleanup(func()) が導入されました。 最初は今まで defer を使っていたところを置き換えられるくらいしか良いところがないかな〜と思っていましたが、想像以上に柔軟な使い方ができるので今ま…

Pull Request と共に GoDoc を生成してくれる GitHub Action をつくった

これは Go5 Advent Calendar 2019 の 13 日目の記事です。12 日目は shiimaxx さん、14 日目は nsega さんです。 以前、以下のような記事を書いており、その中で GoDoc を通してソフトウェアを見ることでドキュメントや仕様の質を確認しやすくなるといったメ…

ISUCON9 予選で負けた

今年も ISUCON に参加していました。メンバーは去年と変わらず @acomagu と @natumn。 去年は syfm.hatenablog.com 去年は温泉旅館に二泊三日で泊まり、中日で ISUCON をやっていて、その体験がすごく良かったので今年も旅館に泊まることにしました。 今回…

土善旅館で開発合宿してきた

最近忙しく、なかなかブログを書けなかったのでだいぶ間が空いてしまったのですが、GW 中に大学時代の友人らと土善旅館で開発合宿をしてきました。 5/1 から 2 泊 3 日、あまりお金がない友人らもいたのでエコノミー開発合宿プランでした。 他のブログでも言…

esa、Google Cloud Functions、Hugo、Netlify で簡易 CMS をつくる

Hugo は、Markdown ファイルを元にブログポストの HTML を静的に生成することのできるツールです。Hugo で生成した HTML を Netlify や GitHub Pages にデプロイすることでブログをホストするためのサーバを用意せずにブログを公開することができます。 しか…

fzf ライクな fuzzy-finder を提供する Go ライブラリを書いた

fuzzy-finder fzf や fzy、skim などの fuzzy-search (あいまい検索) を提供する CLI ツールの登場により、コマンドラインでの操作はますます表現豊かになっています。 例えば、カレントシェルのコマンドヒストリの一覧から fuzzy-finder を使って選択したり…

fuzzy-finder で使われるスコアリングアルゴリズム

fuzzy-finder を構成するアルゴリズム fzy や fzf といった fuzzy-finder を使うと、stdin などからリストを受け取り、ユーザの入力によってマッチする行を絞り込むことができます。このとき、入力文字列の各文字は隣接している必要がありません。例えば、以…

dept を使った Go ツールの依存管理

はじめに ツールのバージョン管理が煩雑 ツールの統一的なインストール方法がない ktr0731/dept Go Modules におけるツールの依存管理 dept を使った依存管理 dept の実装 まとめ はじめに Go プロジェクトでは、しばしば静的解析ツールが使用されます。例え…

自作 CLI ツールのワークフローとそれを支える技術

去年の秋頃から作っていた gRPC クライアントツールである Evans が今年に入り、徐々にいろんな方々に使われ始めました。 github.com Issue や Pull Request を頂けてとてもありがたい反面、それらを反映したバグフィックスや機能追加がツールに取り込まれて…

ある構造体型の変数の値をもう一方の変数にコピーするライブラリを書いた

書いたもの github.com 使用例 type Foo struct { Hoge string Fuga string piyo string } v1 := Foo{Hoge: "dummy", Fuga: "FUGA", piyo: "dummy"} v2 := Foo{Hoge: "HOGE"} ires, _ := mapstruct.Map(v1, v2) res := ires.(Foo) fmt.Println("%#v", res) …

gofmt を理解する

これは Aizu LT feat. CyberAgent での発表に補足を加えた記事です。 発表資料は speakerdeck.com gofmt Go には標準でさまざまなツールが揃っています。 その中でも自分が好きなものに gofmt があります。 gofmt は所謂コードフォーマッタの一つで、ソース…

Clean Architecture で Go 製の API サーバを書く

この記事は Aizu Advent Calendar の 20 日目の記事です。 adventar.org 前日は id:nktafuse の 、 nktafuse.hatenablog.com 明日は id:ywkw1717 です。 ywkw1717.hatenablog.com きっかけ 最近職場で Clean Architecture を取り入れたアプリケーションを Py…

ISUCON7 に出た

土曜日に ISUCON7 に出ていた。 チームは、自分と、同じ大学の友人一人。本当はもう一人いる予定だったけど、別な予定と被っていたらしく、二人のチームになった。 トラブルがあったようで、開始の時間が遅れて 13:00 からになったりと、運営の方もとても大…

はてなインターンで最高の夏を過ごしてきた

明示的に言ってはいなかったのですが、この1ヶ月間、はてなサマーインターン 2017 に参加していました! 公式のページ developer.hatenastaff.com TL;DR 用に言っておくと、最高の夏でした!!! 以下では、そのはてなインターンの思い出を振り返っていきた…

Go にコントリビュートするまでの手順

最近、ついに Go (golang/go) にコントリビュートしました! 正確にはレビュー中で、レビューが通ってもマージされるのは Go 1.10 なので、だいぶ先は長いですが取り敢えず自分のできることは一通り終わりました。 Go ではレビューシステムに GitHub は使っ…

任意のコマンドのサブコマンドにエイリアスを設定できる salias をつくった

動機 最近のコマンドは大抵サブコマンド形式になっています。 $ docker pull hello-world このように、コマンド名 + サブコマンド + 対象 みたいな形式。 サブコマンドには大きく2種類あって、サブコマンドに動詞を指定するタイプと、リソースを指定するタイ…

Amazon Product Advertising API で AWS.InvalidAssociate エラー

ちょっと Amazon Product Advertising API (PAAPI) を利用する必要があって、ドキュメントを読みながら進めていたら、以下のようなエラーに悩まされた。 かなりハマったので備忘録的な感じで書いておきたい。 ちなみに、REST API で ItemSearch を叩いていた…

iTunes をコマンドラインから操作するためのツールを書いた

ふと iTunes をコマンドラインから操作したいなぁ…と思い、絶対あるだろうとググってみたら案の定あったのですが、いくつか気に入らないところがあるものばかりだったので作りました。 その他の理由としては、UNIX という考え方 という本を読んでいて CLI ツ…

重複したページを一括で閉じる Chrome 拡張機能をつくった

動機 自分の場合、いろんなページを見ているといつの間にかタブを物凄く開いていることがあります。 それだけならいいけど、たまに同じページをいくつも開いている時もあって、ぐちゃぐちゃになることもしばしば。 タブが多くなるとタブのタイトルも埋もれて…

Neovim のリモートプラグインを利用して好きな言語でプラグインを書く

この記事は Aizu Advent Calendar 2016 (Qiita) の 17日目の記事です。 前の人は @acomagu1 さんです。 次の人は @noah_orberg さんです。 Neovim 突然ですが、Neovim はご存知でしょうか。 Vim は言わずもがな非常によく知られたテキストエディタの一つです…

 なかったのでグルコスのマイページの情報を取得するライブラリを書いた

概要 BEMANI の音ゲーの一つである SDVX や弐寺、Jubeat なんかは非公式でもスコアデータを取得するアプリなりライブラリがある。そのどれもが根強い人気を誇っているのは多分音ゲーをやっている/やっていた人ならばわかるはず。 Groove Coaster (グルコス) …

イラストを Git で管理したかったのでツールをつくった

イラストの管理 自分はたまにイラストを描いたりするのですが、以前からその管理方法に苦労していました。 苦労していた点は主に次の 2 点です。 バックアップ 制作過程 Gif をつくるのが面倒くさい 強い人は、短時間でもさらっとイラストを描いてしまいます…

Aizu CTF #2 に参加してきました

先週土曜日に 会津Webセキュリティ勉強会 a.k.a Aizu CTF #2 に初心者 CTF チーム(仮)の wabisabi のバイナリ担当、暗号担当と共に参加してきました。 見て分かる通り、今回で 2 回目の開催らしいですが自分は初参加でした。 前半は Web セキュリティの基礎…

ksnctf を全部解きたかった話

今月末に katagaitai 勉強会の easy に参加することになりました。 その内容は Web と Reversing で、Web に関しては最低限の知識はあるものの、Reversing におけるバイナリとかは全然知識がありませんでした。 自分の所属している初心者 CTF チームの wabis…

LINE BOT APIを使ってグルコスのある最短距離のゲーセンを特定する

動機 最近、botが急激に流行ってきているなぁと感じます。LINEやFacebook、SkypeなどでもAPIを提供し始めています。そこで今回、1万名限定でLINEのBOT API Trialが無料で利用できたのでつられてみました。 とはいえ、botを具体的に何に使うかを全く考えてい…