ブックマーク / itchyny.hatenablog.com (7)

  • jq が jqlang organization に移譲されました - プログラムモグモグ

    JSONを操作するコマンドラインツールであるjqは、これまでオリジナル作者であるStephen Dolan氏 (@stedolan)のリポジトリ(github.com/stedolan/jq)で管理されていました。 メンテナンスはNico Williams氏 (@nicowilliams)とWilliam Langford氏 (@wtlangford)の二名が行なっていましたが、近年は活動が減っておりメンテナンスが滞っていることが度々指摘されていました。 最新のリリースは2018年11月に行われた1.6であり、その後に様々なバグ修正やパフォーマンス改善、新機能の実装が行われているのにリリースされておらず、またissueやPRも放置されがちになっていました。 さらにCI (AppVeyor)は常に落ちるので、簡単なドキュメント修正でもCIが通らず苦情が来る、数か月放置されたPRは作った人が諦

    jq が jqlang organization に移譲されました - プログラムモグモグ
    hogashi
    hogashi 2023/05/30
    めでたい
  • 株式会社はてなを退職しました - プログラムモグモグ

    日2021年9月30日が最終出社日でした。1か月間のお休みをいただき、11月から新しい職場で働きます。2015年4月に新卒入社して、Mackerelチームとブックマークチームに所属しました。約六年半、お世話になりました。どちらのプロダクトも携わることができて楽しかったです。 入社時はウェブサービスの実装について何も知らない状態でした。しかしMackerelチームの優秀な先輩と理解あるプロダクトオーナーとディレクターに支えられて、様々なことを学びながらサービスと共に成長できました。サーバーやフロントエンドを書いたり、機能を作ったり閉じたり、年の瀬の夜中に障害対応したり、ioドメインが壊れたり、Linuxカーネルのコードを読んだり、時系列DBをクラウド上で実装したり、競合との差別化を考えたり、お客様とサービスの強み弱みについて議論したりしながら、SaaSビジネスをやる上での色々なことを経験で

    株式会社はてなを退職しました - プログラムモグモグ
    hogashi
    hogashi 2021/09/30
  • Go言語の strconv.ParseFloat のとある挙動変更を見つけた話 - プログラムモグモグ

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

    Go言語の strconv.ParseFloat のとある挙動変更を見つけた話 - プログラムモグモグ
    hogashi
    hogashi 2021/06/08
    脳内トレース丁寧
  • コマンドラインがさらに便利になるfillinコマンドを作りました! - プログラムモグモグ

    fillinというコマンドラインツールを作成しました。 コマンドの一部を変数化して、別の履歴に保存しておけるツールです。 ステージング環境と番環境のように、同じコマンドで複数の環境を切り替えるのに便利です。 zshの (エッセンシャルソフトウェアガイドブック) 作者:広瀬 雄二発売日: 2009/06/17メディア: 単行(ソフトカバー) どうして作ったの コマンド履歴って便利ですよね。 私はよくコマンド履歴からコマンドを選んで実行しています。 シェルに付属しているデフォルトの履歴を使っている方もおられるでしょうし、fzfやpecoのようなインタラクティブな絞り込みを行なっている方もいるでしょう。 私が一番困っていたのが、認証キーの扱いです。 webアプリを作っていてcurlで素早く確認するときに、認証キーやアクセストークンを打つことがあります。 アクセストークンのようなランダムな英

    コマンドラインがさらに便利になるfillinコマンドを作りました! - プログラムモグモグ
    hogashi
    hogashi 2021/02/25
  • Go言語で日時と文字列を相互変換するライブラリtimefmtを作りました - プログラムモグモグ

    Go言語でstrftime・strptime相当の関数を提供するライブラリを実装しました。 t, _ := timefmt.Parse("2020/07/24 09:07:29", "%Y/%m/%d %H:%M:%S") fmt.Println(t) // 2020-07-24 09:07:29 +0000 UTC str := timefmt.Format(t, "%Y/%m/%d %H:%M:%S") fmt.Println(str) // 2020/07/24 09:07:29 str = timefmt.Format(t, "%a, %d %b %Y %T %z") fmt.Println(str) // Fri, 24 Jul 2020 09:07:29 +0000 なぜ作ったか Go言語の標準ライブラリには日時と文字列を変換する関数がありますが、2006年1月2日の15:04

    Go言語で日時と文字列を相互変換するライブラリtimefmtを作りました - プログラムモグモグ
    hogashi
    hogashi 2020/08/03
  • HomebrewのインストーラーをRubyからBashに書き直しました! - プログラムモグモグ

    みなさんはHomebrewをお使いでしょうか。macOSをお使いの多くの開発者が使っていると思います。 HomebrewのインストーラーはRubyで書かれており、次のコマンドでインストールするようになっていました。 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" HomebrewがRubyに依存していることは良いのですが (formulaの書きやすさはRubyならでは)、インストーラーの話になると事情が変わってきます。HomebrewのインストールコマンドはmacOSの工場出荷状態でも動く必要があります。こういうものにRubyを使っているのはリスクがあります。 将来的にmacOSデフォルトにRubyPythonが含まれなくなる (参考リンク

    HomebrewのインストーラーをRubyからBashに書き直しました! - プログラムモグモグ
    hogashi
    hogashi 2020/03/03
  • jqのGo実装 gojq を作りました! ― スタックマシン型インタープリタによるイテレータセマンティクスの実装 - プログラムモグモグ

    jqはとても便利なコマンドです。 JSONを返すAPIを実装するときや、SaaSのAPIから特定の情報を抜き出してシェル変数に代入するときなど、web開発や運用には欠かせないツールとなっています。 しかし、私にとってjqのクエリを一発で書くのは容易ではなく、思い通りの出力が得られないことがよくありました。 難しいエラーメッセージに悩まされて、jqで書くのを諦めて別の言語で書き直すこともありました。 jqの十八番と思える場面で使いこなせないのは、なかなか悔しいものがあります。 ツールを使うのが難しいなら、同じものを作ってしまえばよいのです。 jqの全ての機能を実装する jqを言語としてきちんと書けるようになる jqを完全に理解する jqの全ての機能を自分で実装してしまえば、jqがどういうものか、クエリがどのように処理されるのか、詳しくなれるはずです。 jqを得意な言語と言えるようになって、ク

    jqのGo実装 gojq を作りました! ― スタックマシン型インタープリタによるイテレータセマンティクスの実装 - プログラムモグモグ
  • 1