タグ

ブックマーク / blog.utgw.net (5)

  • 有効期限を過ぎても消えないインメモリキャッシュの謎 - 私が歌川です

    tl;dr キーワードは「monotonic clock」です。 あらすじ Goで以下のようなコードを書いていた*1*2。あるAPIを叩くクライアントで、APIコールに必要なアクセストークンを4時間キャッシュしている。c.getToken() で得られたトークンを使ってAPIコールを行えばよい。 type Client struct { mu sync.RWMutex expiresAt time.Time token string } // トークンのキャッシュがあればキャッシュから返し、なければ更新してから返す func (c *Client) getToken() string { if cachedToken, ok := c.getTokenFromCache(); ok { return cachedToken } return c.refreshToken() } // トー

    有効期限を過ぎても消えないインメモリキャッシュの謎 - 私が歌川です
  • 味玉のレシピをMakefileで記述する - 私が歌川です

    最近よく味玉を作っているのだけど、ジップロックに日付を記入し忘れたり、ボウルに水を入れてから氷を入れようとしたりしていて、手順の依存関係を意識しないとめちゃくちゃになる。 Makefileは依存関係と成果物を記述できるので、レシピをMakefileの形で書いたらおもしろいのでは、と思ったけど記述量が多い気がする。 .PHONY: お湯を湧かす 卵を茹でる 8分待つ ボウルに氷を入れる ボウルに水を入れる ボウルに卵を入れる 卵の殻を剥く ジップロックに日付を書く ジップロックにめんつゆを入れる ジップロックに卵を入れる 一晩寝かせる 味玉 お湯を湧かす: @echo お湯を湧かします 卵を茹でる: お湯を湧かす @echo 卵を茹でます 8分待つ: 卵を茹でる @echo 8分待ちます ボウルに氷を入れる: 8分待つ @echo ボウルに氷を入れます ボウルに水を入れる: ボウルに氷を入れ

    味玉のレシピをMakefileで記述する - 私が歌川です
  • MySQLのEXPLAINが直感とは異なっていた事例 - 私が歌川です

    おもしろかったのでメモ。 CREATE TABLE `tbl` ( `id` BIGINT UNSIGNED NOT NULL, `done` BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (`id`), KEY `done_and_id` (`done`, `id`) ); tbl テーブルに done = FALSE で100万行INSERTしておく SELECT id FROM tbl WHERE done = FALSE ORDER BY id ASC LIMIT 50 でidを順に集める 処理する UPDATE tbl SET done = TRUE WHERE id IN (...) で処理済にする これを done = FALSE な行がなくなるまで繰り返す KEY `done_and_id (`done`, `id`) ありでEXP

    MySQLのEXPLAINが直感とは異なっていた事例 - 私が歌川です
  • ふだんの開発でPRを出すときに考えていること - 私が歌川です

    業務の話です。OSSとかだとまた変わってくるのかもしれないし、共通することもあるかもしれません。 先に作戦を練る 実装する前に、方針段階でレビューしてもらえるとよい 自分だけでは気づけない考慮漏れとか、こういう方針もあるよっていう提案とか、いろいろ得られるものがある 先に実装完成させてから、これでは要件を満たせない・うまくいかないねってなるともったいない 巨大なPRにしない diffの大きさについては、プログラミング言語とか、利用するフレームワークによっても変わってくるので、一概には言えなさそう +1500, -1500 だけどスナップショットの更新があったとか インデント1つ下げることになったとか たとえば、あらゆる機能を1つのPRで実装してたら巨大なPRになると思う 1つのPRであらゆるものを実装しない、1機能ずつ実装するとか、1つの層だけ実装する、とか PRが巨大だと、コミュニケーシ

    ふだんの開発でPRを出すときに考えていること - 私が歌川です
  • Python の依存パッケージ管理/環境切り分けツール pipenv の紹介 - 私が歌川です

    この記事は 2017/9 に書かれたものであり、2019/11/26 現在とは状況が変わっています。公式ドキュメント(日語訳)を参照してください。 時代は pipenv や— うたがわきき🔰💊 (@utgwkk) September 5, 2017 もう誰も,requirements.txt や,source ENV/bin/activate に頭を悩まされる時代は終わった! というわけで virtualenv の時代は終わり*1,pipenv の時代になりました. この記事は Python を書く人間が全員 pipenv を使うべきだという思いを込めて書きました.日語で書かれた記事がまだぜんぜんないという事情もあります. pipenv とは Python のパッケージ管理ツールの pip と,環境切り分けツールの virtualenv を融合させたツールです.Ruby でいうとこ

    Python の依存パッケージ管理/環境切り分けツール pipenv の紹介 - 私が歌川です
  • 1