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

  • jq 1.7をリリースしました - プログラムモグモグ

    jqがjqlang organizationに移譲され、数名の新たなメンテナーを入れた開発体制に移行してから三か月が経ちました。 私にとってこの三か月はとても濃厚で、これまでのOSS活動の中でも特に大変な期間でした。 itchyny.hatenablog.com github.com リポジトリの管理権限をいただいてからまずやったことは、既存のissueやPRの整理でした。 500ほどのissueとPRに目を通し、ラベルをつけて、解決済みのものを閉じて、直近で入れたいものを独断でリリースマイルストーンに入れていきました。 この整理がついた頃には他のメンテナの活動も活発になり、私の作ったマイルストーンのissueやPRを確認してくれました。 そして先日、ようやく1.7をリリースしました。 1.6から実に五年弱、一時は開発が完全に止まってしまいプロジェクトの存続を危ぶむ声も上がるような状況から

    jq 1.7をリリースしました - プログラムモグモグ
    t_f_m
    t_f_m 2023/09/11
    "そして先日、ようやく1.7をリリースしました。 1.6から実に五年弱、一時は開発が完全に止まってしまいプロジェクトの存続を危ぶむ声も上がるような状況からの再起をかけたリリースになりました"
  • Go言語でJSONをYAMLに変換するコマンド json2yaml を作りました! - プログラムモグモグ

    JSONをYAMLに変換するコマンド json2yaml を、Go言語で作ってみました。 他の言語も含めると同じようなコマンドラインツールは無数に作られていますが、 Goのライブラリとして組み込みたかったというのが最初のモチベーションです。 また、JSONをストリーミング的にYAMLに変換できるのかという疑問を以前から抱いていて、ここに答えを得たかったというところもありました。 github.com go install github.com/itchyny/json2yaml/cmd/json2yaml@latest Homebrewでもインストールできます。 brew install itchyny/tap/json2yaml JSONファイルを引数にしてYAMLを出力したり、 $ cat sample.json { "Sample": "JSON" } $ json2yaml sam

    Go言語でJSONをYAMLに変換するコマンド json2yaml を作りました! - プログラムモグモグ
    t_f_m
    t_f_m 2022/08/29
  • Haskellで書かれたおもしろいFizzBuzz ― Haskellで読めないコードに遭遇した時に解読する方法を徹底解説! - プログラムモグモグ

    Haskellには抽象的な高階関数や演算子がいくつもあり、たまにそれらを巧妙に用いたコードがでてきて感心することがあります。 他の人が書いたHaskellのコードを読んでいると、なかなか面白いものと遭遇したりします。 巧妙に書かれたコードを解読していくと、実は型クラスのinstanceをうまく組み合わせて使っていて、とてもよい教材になることがあります。 実際にアプリケーションコードを書いていてここまで技巧的なコードを書くわけではありません。しかし、こういうコードを読み解くのは型クラスのいい練習になりますし、それまで知らなかったinstanceと遭遇したりしたときは、とても勉強になるのです。 このエントリーでは、とても技巧的なFizzBuzzを紹介し、それを読み解いていく方法を紹介します。 Haskellの初心者向けに、どういうふうに関数や型を調べて言ったらいいかを丁寧に書いています。 Ha

    Haskellで書かれたおもしろいFizzBuzz ― Haskellで読めないコードに遭遇した時に解読する方法を徹底解説! - プログラムモグモグ
    t_f_m
    t_f_m 2020/10/09
    あとで
  • 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に書き直しました! - プログラムモグモグ
    t_f_m
    t_f_m 2020/03/03
  • 開発環境構築スクリプトのCIをGitHub Actionsで回す - プログラムモグモグ

    小ネタですが、開発環境の構築はスクリプト化して、CIを回そうという話です。 開発環境を構築することは年にそう何回もあるわけではないですが、スクリプトを一発叩いて必要なツールが揃うようにしておくと便利です。私は素朴にシェルスクリプトで書いています。好きな言語で書けばいいと思いますが、macOSは将来的にRubyPythonといったスクリプト言語を排除しようとしていて、不安ですね。Ansibleみたいなのを使ってもいいと思います。私はちょっと苦手で… あくまで私用のスクリプトなので使わないでください。 このスクリプトを叩いてしまえば、iTerm2やVim、tmux、自分のdotfilesの配置と言語処理系のインストール、Google ChromeSlackのインストールを行ってくれます。モダンなプロジェクトならdockerさえあればいいんでしょうが、なかなかそういうわけにはいかないですよね

    開発環境構築スクリプトのCIをGitHub Actionsで回す - プログラムモグモグ
    t_f_m
    t_f_m 2019/11/18
  • バイナリエディタを作りました! - プログラムモグモグ

    バイナリエディタを作りました。 インストールはHomebrew brew install itchyny/tap/bed または以下のコマンドでできます。 go get github.com/itchyny/bed/cmd/bed なぜ作ったのか 私は昔からファイルフォーマットに興味があり、画像ファイルやPDFファイルのフォーマットを調べるのが好きでした。 最近も圧縮ファイルのフォーマットを趣味で調べたりしています。 コンパイラ技術にも興味があり、ゆくゆくは実行ファイルを生成したりしたいなという思いもあります。 バイナリファイルをエディットするにはバイナリエディタが必要となるわけですが、自分の手に馴染むUIを持つエディタがありませんでした。 私は実はVimというエディタが好きなので、Vimのようなインターフェースを持ち、ターミナルの中で動くエディタを探したのですが、なかなかありません。 b

    バイナリエディタを作りました! - プログラムモグモグ
    t_f_m
    t_f_m 2018/04/10
    " 私は実はVimというエディタが好きなので、Vimのようなインターフェースを持ち、ターミナルの中で動くエディタを探した"
  • シンプルでかつ最高のJavaScriptプロファイラ sjsp を作りました! ― Webアプリケーションが複雑化する中でプロファイラに求められるものとは何か - プログラムモグモグ

    あらすじ Web技術が複雑になる中で、JavaScriptのプロファイリングをとる方法とは。 プロファイリングを取るためのコードを手で書いてみましょう。 とてもシンプルで、かつ最高のJavaScriptプロファイラ sjsp を作りました。 当にあった怖い話 上司 「とにかくJavaScriptのコードを速くしてくれ」 私 「分かりました、速くします」 (次の日) 私 「いいプロファイラがないなら作ればいいじゃない」 同じチームの人 「えっ?」 私 「最高のJavaScriptプロファイラ作ったよ」 同じチームの人 「「えっえっ???」」 私 「早速使ってみたらこことここが遅いって分かったよ」 同じチームの人 「「「この子は一体…」」」 JavaScriptのプロファイリングの難しさ 近年、Webブラウザーの処理速度は著しく向上し、その可用性の高さから、アプリケーションのプラットフォーム

    シンプルでかつ最高のJavaScriptプロファイラ sjsp を作りました! ― Webアプリケーションが複雑化する中でプロファイラに求められるものとは何か - プログラムモグモグ
    t_f_m
    t_f_m 2016/12/15
  • 珍しいSHA1ハッシュを追い求めて - プログラムモグモグ

    「SHA1ハッシュってあるだろう?」 放課後、いつものように情報処理室に行くと、高山先輩が嬉しそうな顔でそう言った。 「ええ、SHA1、ありますね」 「SHA1って何桁か覚えているかい?」 「えっと…」 一年下の後輩、岡村が口を開いた。 「50桁くらいはありましたっけ…?」 先輩はパソコンに向かって何かを打ちはじめた。 現在、情報部の部員は三人しかいない。部長の高山先輩と、二年の自分と、後輩の岡村だ。いや、正確に言うと、先輩の学年にはもう少しいたのだが、もうほとんど部室に来ることはなくなってしまった。無理もない、この季節になると先輩たちは受験勉強で忙しくなる。 「例えば、こういうふうに… 適当なSHA1の長さを…」 echo -n | openssl sha1 | awk '{print length}' 部長だけは今も部活に来てこうやって色々なことを教えてくれている。人曰く、普通に勉強

    珍しいSHA1ハッシュを追い求めて - プログラムモグモグ
    t_f_m
    t_f_m 2016/12/05
    あとで
  • 端末の上で動かして遊べる!迷路コマンドをGo言語で書きました! - プログラムモグモグ

    迷路で遊びたくなったので作りました。Goで書いています。 github.com Homebrewをお使いの方は、次のコマンドでインストールしてください。 brew install itchyny/tap/maze そうでない方は、次のコマンドでビルドしてインストールするか、 go get github.com/itchyny/maze/cmd/maze あるいは https://github.com/itchyny/maze/releases よりバイナリーを落としてご利用ください。 mazeコマンドは、ランダムな迷路を出力します。 maze --interactive引数を渡すと、カーソルを動かして迷路を遊ぶことができます。 maze --interactive --format colorを渡すと迷路が綺麗に表示されます。--widthや--heightなどで迷路のサイズを制御すること

    端末の上で動かして遊べる!迷路コマンドをGo言語で書きました! - プログラムモグモグ
    t_f_m
    t_f_m 2016/04/05
  • 詳細PDF入門 ー 実装して学ぼう!PDFファイルの構造とその書き方読み方 - プログラムモグモグ

    PDFのファイル構造を理解すると、テキストエディタでも直接PDFファイルを作ることができるようになります。このエントリーではPDFファイルの基礎要素を説明し、簡単なPDFファイルを例にしてファイル構造を説明します。更に、テキストを渡すとPDFファイルを吐いてくれる簡単なプログラムや、PDFを読み込んで簡単な解析をするプログラムを書いてみます。 目次 目次 まえがき オブジェクト 間接参照 ファイル構造 Hello, world! ヘッダ トレーラ 相互参照テーブル PDFを生成するプログラム 日語の扱い方 日語を含むPDFを生成するプログラム グラフィックス PDFを読むプログラム あとがき まえがき 1990年代前半、アドビシステムズは、どのプラットフォームやデバイスでも文書を確実に表示・共有できることを目的としてPDFファイルフォーマットを開発しました。 PDFの表示ソフト

    詳細PDF入門 ー 実装して学ぼう!PDFファイルの構造とその書き方読み方 - プログラムモグモグ
    t_f_m
    t_f_m 2015/09/16
    あとで
  • Haskellでハマった - runhaskellを使うとリストがメモ化されない?あるいはモジュールにすると-O3でもリストがメモ化されない? - プログラムモグモグ

    Haskellを書いていて、久しぶりに言語自体について不可解な挙動にぶち当たった。普段Haskellを書いていて、言語について「なんだこれ」と思うことはまずない。ところが、今回の疑問点は自分の理解を遥かに超える内容だった。最初はTwitterで質問してみたのだが、誰にも答えて頂けなかったので、stackoverflowで質問した。すると、見事に解決しまったので紹介する。 質問が長い。でも丁寧に書いたつもり。下の方に和訳も用意した。英語を読むのが面倒な人はそっちを読んでほしい。(自分が書いた英語を和訳するとか意味が分からんね。) http://stackoverflow.com/questions/25958007/ Why ghc changes the evaluation way due to the optimisation flag? Hello, I've encountered

    Haskellでハマった - runhaskellを使うとリストがメモ化されない?あるいはモジュールにすると-O3でもリストがメモ化されない? - プログラムモグモグ
    t_f_m
    t_f_m 2014/10/01
  • mazeコマンド作った 〜 端末で迷路で遊ぼう - プログラムモグモグ

    どうしても迷路で遊びたくなったので, 自分で作りました. リポジトリは itchyny / maze-c - GitHub です. インストール git clone https://github.com/itchyny/maze-c cd ./maze-c autoreconf -i ./configure make sudo make install autotoolsを使ってみたので, 知ってる人にとっては良い感じに使えると思います. 遊び方 以下のコマンドは, 迷路を生成して出力します. $ maze 大きさを変えたい時は, -w, -hで変えて下さい. $ maze -w 18 -h 8 vimshellのように, エスケープシーケンスの処理がきつい環境では, -aオプションを使用して下さい. $ maze -a XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    mazeコマンド作った 〜 端末で迷路で遊ぼう - プログラムモグモグ
    t_f_m
    t_f_m 2013/04/02
  • JavaScriptとcanvasで画像処理 - プログラムモグモグ

    私は画像処理を避けてきました. 画像処理ってなんだか難しそうだし, そもそも画像を簡単に扱ってデバッグしてみたいな環境をあまり知らなかったんです. もう画像処理は怖くない. 我々にはcanvasがあります. ふと思い立って, canvasで画像処理するようなものを作ってみました. Canvas Filter ソースコード→ https://github.com/itchyny/Filter.js Mac + Chrome or Safariの人は, すごく楽しめると思います. Firefoxはなんとか動くレベル. 後は知りません. ガンマ補正 明るさ調整 エッジ抽出 初心者ながら, 画像処理は奥深い分野だなぁと思いました. あまりきちんとしたライブラリーにしてないので, ソースコードを参考に皆さんもJavaScriptで画像処理を楽しんでみて下さい. JavaScriptにして, UIとか

    JavaScriptとcanvasで画像処理 - プログラムモグモグ
    t_f_m
    t_f_m 2013/02/28
  • Jison入門!!! - プログラムモグモグ

    最近, Jisonを使おうとしている人をちらほら見るので, ちょっと入門的なやつを書いてみる. 定義(てけとー Jisonというのは, JavaScriptで書かれたパーサーを吐くことができる, パーサジェネレーターの一つ 現在Jisonは https://github.com/zaach/jison で入手可能です. 色々説明したいけど, 構文解析とかLALRとか説明しだしたら, ボロが出る難しいので, ... 取り敢えずJisonのexampleを試してみよう!!! まずは, narwhalをインストールしましょう https://github.com/280north/narwhal から落として, PATHを通す. narwhalと叩いてJavaScriptのインタラクティブな環境が立ち上がったら多分OK. (というかnarwhalの詳しいことは僕はよく分からない...) Jiso

    Jison入門!!! - プログラムモグモグ
    t_f_m
    t_f_m 2011/07/21
  • 1