2021-01-01から1年間の記事一覧

2021年を振り返って

今年は大きな転機が訪れた年でした。六年半勤めたはてなを退職し、11月からサイボウズで働いています。開発体制の規模やプロセス、文化の違いに戸惑いながらも、楽しく働いています。モブプロを中心とする開発は新しく入社した身としてありがたいです。技術…

株式会社はてなを退職しました

本日2021年9月30日が最終出社日でした。1か月間のお休みをいただき、11月から新しい職場で働きます。2015年4月に新卒入社して、Mackerelチームとブックマークチームに所属しました。約六年半、お世話になりました。どちらのプロダクトも携わることができて楽…

Go言語の strconv.ParseFloat のとある挙動変更を見つけた話

Go

弊社のとあるGoプロダクトでGo 1.14から1.16へアップデートしたところ、プログラムの挙動が変わる問題が発生しました *1。 ドキュメントに書かれていない strconv.ParseFloat の挙動の変更を踏んでしまったのです。 package main import ( "fmt" "strconv" )…

Vim の doautoall コマンドの問題と 8.2.2596 の挙動変更について

Vim

Vimのdoautoallコマンドはいろいろな問題のあるコマンドで、私にとって悩みの多い機能でした。 しかし 8.2.2596 の変更によって問題のすべてが解決しました。 本記事ではこのコマンドの問題点とこのパッチの意味について解説します。 なおコミットメッセージ…

Pythonのstrptime %zに関するバグ報告をした

timefmt-goというGoライブラリを公開してメンテしているのですが、最近タイムゾーン周りの対応が弱いことに気がついて実装していました。タイムゾーンオフセットの表記は +0900 のようにコロンを入れないほうが一般的だと思いますが、RFC3339では +09:00 の…

Go言語のorderedmapパッケージを改善した

Go

Go言語で書かれたorderedmapというサードパーティパッケージがあります。 github.com Goのmapには順序がなく、JSONをデコードすると順序が失われ、それをエンコードするとオブジェクトのキーの順序にソートされます。 これに困る人はそこそこいるようで、順…

gojq が homebrew/core に入りました、他近況

Go

gojqはGoで実装されたjqコマンドおよびライブラリです。2019年の4月から開発を始めて、現在も様々な改善を行っています。 これまでgojqのHomebrew formulaはitchyny/tapより配信していましたが、このたび公式のhomebrew/coreに入りました。 これにより、次の…

一括リネームツール mmv でディレクトリツリーを扱えるようにした

Go

一年前、ファイルをエディターで一括リネームするmmvコマンドを作りました。 itchyny.hatenablog.com github.com mmvはリネームの依存関係を解析して順番を決定します。例えば a => b b => c というリネームを愚直に上から実行すると、ファイルbが消えてしま…