ぽよメモ

レガシーシステム考古学専攻

Go

Go 1.20で入ったexec.CommandのCancelとWaitDelayで外部コマンドを正しく終了させる

背景 Goでは外部コマンドの実行時に os/exec パッケージの Command や CommandContext を利用します。特に CommandContext を利用することで、 Goのcontextの流儀に従ってコマンドのタイムアウトや中断が可能であり大変便利です。 一方で、LinuxやmacOSなど…

go.workはmonorepoの夢を見るか

TL; DR はじめに Workspace modeが解決したい課題 Workspace modeのユースケース 複数リポジトリにまたがる開発をする experimentalWorkspaceModuleを置き換える monorepoとWorkspace mode single moduleの場合 multi moduleな場合 goplsのためのワークアラ…

壁を感じたISUCON12本戦

TL; DR はじめに 参加前の準備 今回の出題内容 やったこと 10:00~11:00 初期セットアップ 11:00~12:00 作戦会議とか 12:00~13:00 obtainItemの闇に触れる 13:00~14:00 admin関連のテーブルを別DBに分離しようとしてベンチが落ちる 14:00~15:00 generate…

ISUCON12予選突破の記録~絶望の4年間~

はじめに これまでの記録 参加前の準備 方針の決定 改善〜デプロイ〜ベンチを回すサイクルの高速化 ドキュメントの用意 当日やったこと 10:00〜11:00 初期セットアップ 11:00〜11:30 作戦会議 11:30〜13:45 細かい改善・レビュー・バグ取り 13:45〜14:30 doc…

go.modについての陥りやすい誤解

Go

はじめに go.modにおけるGoのバージョン指定 依存先のgoディレクティブの方が古いバージョンを指す場合 依存先のgoディレクティブの方が新しいバージョンを指す場合 goのバージョンよりgoディレクティブが先行する場合 goディレクティブまとめ 1.21以降のgo.…

マルチアーキテクチャ対応イメージのビルドをどうにか早くしたかった

マルチアーキテクチャ対応イメージって何? どうやって作るか docker manifestコマンドを使う docker buildxコマンドでビルドする buildxとQEMUによるビルドは遅い CIでのビルドを速くしたい アーキテクチャごとに別ジョブでビルドする クロスビルドを活用す…

Protocol BuffersのGolang用API v2を使ってgRPCでHello Worldする

v2とは??? 環境 Hello World プロジェクトの準備 サービスを定義する gRPC用のコードを自動生成する サーバを実装する クライアントコマンドの実装 動かしてみる grpcurlで叩いてみる まとめ v2とは??? 以下の記事にまとまっています。 qiita.com blog…

deanishe/awgoを使って簡単にAlfred Workflowを作る

はじめに Alfred Workflowとは? Alfred Workflowの仕組み Alfred WorkflowとGo github.com/deanishe/awgo チュートリアル 1. 空のWorkflowを作る 2. 実行するアクションを並べる 3. info.plistを手に入れる 4. Goでプログラムを書く 6. パッケージングする …

GoCon 2019 Autumnに参加してきた

はじめに 初めて参加してみて 面白かったセッション 1. Go GC algorithm 101 発表後に上がった質問 Goでヒープにアロケーションされるのはどのようなとき? 結局Goで世代別GCは効くのか? 2. Go で"超高速"な経路探索エンジンをつくる 発表後に上がった質問 …

英文を一文ずつに分割してGoogle翻訳へ投げるAlfred Workflowを作った

これまでに作ったAlfred Workflow poyo.hatenablog.jp poyo.hatenablog.jp これまでに作ったAlfred Workflow これは何? 論文PDFの問題 環境 Google Translate Formatter 準備 使い方 注意点 一文ごとに分解する機能は単なる正規表現マッチとIFの羅列 ピリオ…

Hugo + Travis CI + Github pagesで独自ドメイン+HTTPSなWebページを公開する

きっかけ Hugoとは Travis CIを選んだ理由 Github Pagesとは ページを作る テーマの選択 hugoのインストール サイトの作成 テーマの追加 サンプルをコピーして編集 プレビューする ビルドしてみる Github pagesへ自動デプロイする リポジトリを作成してpush …

macOSで任意のWi-Fiへ接続・切断時に任意のシェルスクリプトを実行させる

きっかけ Hammerspoonの紹介 環境 使用する機能 WiFi切り替え検知 シェルスクリプト実行 実装 構成 config.json config.iniに変更があったときに自動で再読み込み ネットワーク環境切り替え WiFi切り替え時に実行 Hammerspoonをリロード 応用 研究室のWiFiに…

ghq管理下のリポジトリを色々するAlfredWorkflowを作った

色々するとは言っても基本的に何かで開くだけです. きっかけ 環境 ghq-alfred 準備 できること Finderで開く ブラウザで開く ターミナルで開く エディタで開く Googleで検索 できないこと 既知の不具合 改善したいこと まとめ きっかけ 最近ghq*1でリポジト…

Entrykitのrenderで遊ぶ -後編-

頑張りすぎじゃ無いか感が溢れてきます. 発展的な記法 include file, text dir, dirs, files httpget, urlquery json, tojson yaml, toyaml split, join splitkv, joinkv seq append, drop index sh sigilにはあるが使えなかったもの 組み合わせる ファイル…

Entrykitのrenderで遊ぶ -前編-

Dockerコンテナでsedで頑張っているみんながたどり着くところ. Entrykitとは できること できないこと 環境 基本文法 パイプライン 変数宣言 var if range 補助的な文法 default capitalize lower upper replace trim indent len Sigilにはあるが使えないも…

ライフサイエンス辞書で単語を引くAlfred Workflowを作った

きっかけ Go言語を使ったわけ 環境 lsd-alfred できること 検索してブラウザで開く 検索してクリップボードにコピー 検索結果から再検索 検索結果をさらに検索エンジンにかける 検索結果をSpotlight検索にかける 検索結果の一覧ページを開く ホットキーを使…