You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
[追記 2024/8/1] 修正のPRがマージされました cache-hitとは v4における挙動変更(?) cache-hitがfalseを返さない ワークアラウンド [追記 2024/8/1] 修正のPRがマージされました まだリリースされていませんが次のリリースに含まれるでしょう。 github.com cache-hitとは GitHub Actionsのキャッシュ用actionであるactions/cacheは、指定したキーに完全一致するキャッシュがヒットしたかどうかのパラメータをそのstepのoutputとして保持している。 つまり以下の様にすることで、キャッシュがヒットしたかどうかを判定し、何かアクションするということが可能である。 jobs: run: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - u
こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。 僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1 週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。 本記事はその時のネタをまとめたものです。 2023-01-25 号から、基本的に隔週で連載することとしました。たまに単独でも投稿するかもしれません。 今週は 2024-01-31 単独号です。 今回が第 141 回目です。過去の記事はこちら。 news 📺 GitHub Actions で M1 macOS ランナーが public リポジトリで無料に使えるようになりました GitHub Actions: Introducing the new M1 macOS runner available to open source! - The GitH
git grep 便利ですよね。 私は git grep と git gsub は本当によく使います。 ところで git grep はローカルリポジトリがないと実行できません。 ローカルにリポジトリがなければ git clone して、 git grep すればいいのですが、もう少し簡単にgrepするために gh-grep を作りました。 github.com gh-grep gh-grepはGitHub APIを使ってGitHub上のリポジトリに対してgrepをするツールです。 特徴は、全てGitHub APIを通じて実行するためローカルに git clone することなくgrepできることです。 また、APIを使っている特徴を活用して複数リポジトリに対してgrepすることなども可能になっています。 あと実行が遅いです。ひたすらGitHub APIを叩いているので...*1。 インストー
こんにちは北原です。 Natureのバックエンドはおおよそ Go で書かれています。3月にリリースしたNatureスマート電気も同じく Go で実装されています。 energy.nature.global Natureスマート電気を作るにあたって、いわゆる営業日の計算をする必要があり*1、当時小さく、メンテナンスを自分でしていける Go のライブラリがなかったので github.com/soh335/shukujitsu というものを作りました。 github.com インターフェイスとしては与えられた日付が祝日かどうかを判定するもののみを提供しており非常にシンプルな作りになっています。 if shukujitsu.IsShukujitsu(time.Now()) { fmt.Println("shukujitsu!") } こちらは内閣府から提供されている csv データをもとに作成され
こんにちは、Fundsチームの @convto です。Kyashでは銀行入金やコンビニ入金などの残高の入出金に関わる部分の開発をしています。 Fundsチームではその業務の性質上多数の外部ベンダとやり取りをしています。 それぞれベンダごとに仕様なども異なるため、その接続部分のいくつかはマイクロサービスとして切り出されています。 Fundsチームの管理しているサービス間の通信でgRPCを導入する際、今後の社内の別サービスなどにも汎用的に使えるようなproto管理レポジトリを構築したのでその紹介をしたいと思います。 proto管理レポジトリで満たしたい要件について はじめに、他社の事例も参考にしつつ、自分たちがprotoを管理するにあたってどのような要件を満たせれば良いのか整理しました。 他社の事例を調査したところ、以下のような構成が多かったように思います。 名称は app-proto や p
GitHub - aereal/go-openapi3-validation-middleware: net/http middleware to validate HTTP requests/responses against OpenAPI 3 schema using kin-openapi. kin-openapiというOpenAPI 3定義を読んでリクエスト・レスポンスのバリデーションをしてくれるGoのライブラリがあるんだけど微妙に使い勝手が悪い。 素朴に使おうとするとHTTPハンドラ内でバリデーションに関するコードを書く必要があって関心を分離させるという目的を果たすにはちょっと弱いし、得られたエラーを一貫して取り扱うにはエラーをHTTPレスポンスに加工して返すところまで一気通貫で取り扱いたい。 Goでnet/httpを使ってHTTPサーバを書く時は、RackやPlackのように
https://github.com/Songmu/gotesplit gotesplitというかなり便利なツールを書いた。Goのテストをいい感じのサブセットに分割して、それを実行するものです。このアプローチで、社内のテストを15分から3分くらいまでに短縮しました。 これを使えばCI環境での高速なテストの並列実行を簡単に実現できます。 実例 CircleCIやGitHub Actions上で簡単に導入できます。 CircleCIの場合 parallelism: 5 docker: - image: golang:1.15.3 steps: - checkout - run: command: | curl -sfL raw.githubusercontent.com/Songmu/gotesplit/main/install.sh | sh -s bin/gotesplit ./... -
アプリケーションが発行するSQLにコメントが埋め込めると便利です。例えば、 /* path/to/logic.go:334 */ SELECT ... のようにSQLに発行元の情報をコメントとして埋め込んでからExecすれば、DB側のログ(general log等)にも記録されるため、SREやDREサイドからも、負荷の高いSQLがアプリケーションのどこから発行されているかが分かりやすくなります。 Goには github.com/shogo82148/go-sql-proxy という、SQL実行をトレースし、フック処理を差し込める便利なライブラリがありますが、今回それにpull requestを送って、SQL実行前にクエリの書き換えができるようにしました。 https://github.com/shogo82148/go-sql-proxy/pull/61 https://github.co
Pushデバッグってなんぞ? 〜1年前〜 CircleCIド素人ぼく 「CircleCI configに記述したコードがうまく動かないな……でもGithubにPushして、CircleCIが動いてるところ見ないとわからん……」 などど言い出し、何度もPushしまくってcommitを荒らしたのは私です。 そんな一か八か、動くかわからないコードをPushしまくるのはやめていきたいものです。 CircleCI CLIをインストール Linux, macOS Homebrew ローカルで確認する configtest Job実行 ちょっとした注意点 You attempted to run a local build with version '2.1' of configuration. SSHする 参考 CircleCI CLIをインストール インストール方法はそこまで大変でないので、公式に書
kubernetesでもぷよぷよがしたいので同じ色のPodが4個くっついたらdeleteされるcustom controller「くべくべ」を作ったGokubernetes Kubernetes使ってると、Nodeにえらい数のPodが溜まってくじゃないですか。消したくなりますよね。連鎖してほしいですよね。なりません?なので、4つ同じ色のPodが4個くっついたらdeleteされる、爽快感のあるカオスエンジニアリング用のcustom contollerを作りました。 deleteされるだけでは寂しいので、deleteされていく様子を見るためのkubectl pluginも作りました。合わせて使うとこんな感じになります。 左側の●のひとつひとつがPodです。Nodeが列に対応してます。6Node構成です。各色8個ずつpodを立てていて、右側にreplicasetの増減を置いてみました。 レポジト
この投稿は、 Go アドベントカレンダーの 6日目のものになります。 はじめに GoでYAMLを扱う際にデファクトになっているのは、おそらく github.com/go-yaml/yaml でしょう。 実装はC言語で実装された libyaml を Go に移植しつつ、 Go ならではの機能を足す作りになっているのですが、 cgo を使わずに pure Go で移植されており、開発者の気合を感じます。 枯れている libyaml を利用していることからも、 YAML の仕様を忠実に実装していることが期待できます。 ですが、このライブラリにはいくつか使いにくい点もあり、例えば以下のようなことはできませんでした 構造体を埋め込む場合に、埋め込む型をポインタで定義できない ( ※ ポインタなしは大丈夫 ) encoding/json とコンパチの インターフェース ( MarshalYAML()
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く