タグ

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

  • 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をリリースしました - プログラムモグモグ
    hamaco
    hamaco 2023/09/20
    お疲れ様です!すごい!
  • 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に書き直しました! - プログラムモグモグ
    hamaco
    hamaco 2020/03/03
    素晴しい
  • jqのGo実装 gojq を作りました! ― スタックマシン型インタープリタによるイテレータセマンティクスの実装 - プログラムモグモグ

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

    jqのGo実装 gojq を作りました! ― スタックマシン型インタープリタによるイテレータセマンティクスの実装 - プログラムモグモグ
    hamaco
    hamaco 2019/08/28
    “jqは完全に理解しました。”
  • 珍しいSHA1ハッシュを追い求めて - プログラムモグモグ

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

    珍しいSHA1ハッシュを追い求めて - プログラムモグモグ
    hamaco
    hamaco 2017/01/26
  • 汎用的なコードの依存関係の抽出ツール rexdep を作りました! ― 正規表現で依存関係を大雑把に抽出しよう! - プログラムモグモグ

    あらすじ ソフトウェアの中の依存関係について 正規表現で抽出できることとその限界 コードの依存関係を抽出するツール rexdep を作りました ソフトウェアの構造を概観するには あなたは、大きなソフトウェアを目にした時、何をしますか? ファイルが何十、何百もある時、どこから読みますか? ソフトウェアが巨大になると、そのコードの構造を把握するのは難しくなります。 特にプロジェクトに入りたての人にとって巨大なコードベースを一目で理解することは難しく、細かなタスクをこなしていく中で徐々に「どこに何が書いてあるか」を理解していくしかありません。 ソフトウェアによってはモデルとコントローラ、データベースとビューと言った具合にコードが分かれており、これくらいの分類はディレクトリ名を見れば理解できるかもしれません。 しかしそのようなざっくりとしたコードの分類が分かったところで、ソフトウェアの構造を理解し

    汎用的なコードの依存関係の抽出ツール rexdep を作りました! ― 正規表現で依存関係を大雑把に抽出しよう! - プログラムモグモグ
  • 個人的に便利だと思うVimの基本設定のランキングを発表します! - プログラムモグモグ

    この記事は Vim Advent Calendar 2014 の5日目の記事です。諸事情によりVim Advent Calendar 2014で穴が空いてしまった5日の記事を、遅ればせながら代打で投稿させていただきます。この投稿を以って、 Vim Advent Calendar 2014 は全ての日程が埋まる事になります。完走おめでとうございます。皆様、お疲れ様でした。 2014年もあと僅かとなり、年末の忙しさに追われている方もおられることでしょう。土日は家の大掃除という方も多いのではないでしょうか。 大掃除…大掃除と言えば、vimrcです!!! あなたはvimrcはたくさん書いていますか? Vimをもっと便利にしたくありませんか? 包丁は砥ぐことにより長く使えるのと同様に、普段あなたが使っているvimrcも定期的に見なおすことで、より愛着がわき、更にVimに対する理解も深まります。あなた

    hamaco
    hamaco 2014/12/26
  • calendar.vimの作者が教える! calendar.vimをGoogle Calendarと連携させてみる - 初級編 - プログラムモグモグ

    この記事では, calendar.vimGoogle Calendarと連携させて使う方法を紹介したいと思います. 前回までの記事を挙げておきます. calendar.vimの作者が教える! calendar.vimのインストールと基動作 - 初級編 - プログラムモグモグ イベント, カレンダーの基操作 calendar.vimでは, 設定が何もなければローカルのカレンダーでイベントを管理することができます. カレンダーを開いてiを押してみて下さい. 「イベント: 」というプロンプトが開いたと思います. そこに, 例えば「ミーティング」と入力します. 次に, 「新しいカレンダーの名前を入力して下さい: 」と聞かれますので, 「会社」と入力して下さい. そうすると, カレンダー上に「ミーティング」の文字が出現します. 既に登録したイベントを編集する場合は, イベントウィンドウを用いま

    calendar.vimの作者が教える! calendar.vimをGoogle Calendarと連携させてみる - 初級編 - プログラムモグモグ
    hamaco
    hamaco 2014/01/29
  • Vimmerのあなたの為に。最高のカレンダーcalendar.vimを作りました - Vimはアプリケーションプラットフォームの時代に - プログラムモグモグ

    Vimでカレンダーといえば, mattnさんのcalendar.vimが有名でした. mattn - calendar-vim しかし, 私には以下の不満点がありました. 現在のVim Scriptから見ると, Vim Scriptの基的な要素(文字列と数字)しか使っていない. ぶっちゃけ, コードが読みにくいし拡張しにくい. 日付の計算, 表示部の構成など, 様々な要素が一つのファイルに書かれていて, ごちゃごちゃになっている. キーボード入力に対して, インタラクティブでない. 例えば, hを押した時に隣の日に移動しない. 自分でカレンダーを一から書いてみたくなったんです. というわけで... calendar.vim作りました itchyny - calendar.vim どうぞ使って下さい. :Calendarコマンドでカレンダーが開きます. スクリーンショットはこんな感じ. G

    Vimmerのあなたの為に。最高のカレンダーcalendar.vimを作りました - Vimはアプリケーションプラットフォームの時代に - プログラムモグモグ
    hamaco
    hamaco 2014/01/10
  • lightline.vim作りました - プラグインの直交性について - プログラムモグモグ

    lightline.vimというVimプラグインを作りました。statuslineをなんかかっこよくしてくれるやつです。 https://github.com/itchyny/lightline.vim からインストールできます。 デフォルト (powerlineと同じ配色) wombat solarized landscape どうしてこれを作ったのかということを話すには、vim-powerlineとの出会いまで遡らなくてはなりません。 vim-powerlineとの出会い vim-powerlineとの出会いは約一年前になります。それ以前から気になってはいましたが、フォントにパッチを当てるのが面倒でためらっていました。しかし、重い腰を上げてインストールしてみました。 vim-powerlineがすごい - プログラムモグモグ インストールしてすぐ感じたことは、配色が気に入らないことでし

    lightline.vim作りました - プラグインの直交性について - プログラムモグモグ
  • Vim scriptを取り巻く問題について - プログラムモグモグ

    Vimの設定ファイル.vimrc, そしてVimのプラグインには, スクリプト言語Vim scriptが使用されます. 昨今の巨大なプラグイン製作者によるこの言語への不満が募り, 最近はVim scriptについて激しい議論が交わされています. どんな言語か 静的型付け言語で, 命令形です. while, if等基的な制御文に加え, 関数もサポートされています. 変数の取り扱いが特徴的です. オブジェクトがあるので, 苦し紛れにオブジェクト指向っぽく書くこともできます. vim-jpで何が起こっているのか Vim scriptを今後どうするかが話題になっています. https://github.com/vim-jp/issues/issues/48 https://github.com/vim-jp/issues/issues/340 巨大なプラグインを書いていらっしゃる方々が, Vim

    Vim scriptを取り巻く問題について - プログラムモグモグ
    hamaco
    hamaco 2013/04/03
  • Vimのカラースキーム/シンタックスファイルは自作しよう - プログラムモグモグ

    私は, プラグインに同包されているシンタックスファイルが気に喰わないことが度々あった. 例えばunite.vimの選択色とvimfilerの選択色が異なったり, unite-lineの行番号がLineNrで色付けされてなかったり, vimshellでls -lの時間のあたりの色付けが滅茶苦茶だったり, vimfilerの一番上の現在のパスの色と, vimshellのpromptのパスの色が異なったりするわけだ. (Shougoさんばかりごめんなさい...) 思い返せば, vimshellのls -lの色(特に時間の辺り)が気に喰わないのがシンタックスファイルを書き始めたきっかけだった. そもそも, 自分の身に合うカラースキームを見つけるのは骨が折れる. 或いは, スクリーンショットは良さげでも, 使ってみたらなんだか違う, みたいな感想を持つことも多い. CUIのことを考えていないものもあ

    Vimのカラースキーム/シンタックスファイルは自作しよう - プログラムモグモグ
    hamaco
    hamaco 2013/03/25
  • zshのalias -s (suffix alias)が神な件 - プログラムモグモグ

    まず, 他のシェルをお使いの人にはごめんなさい. aliasコマンドの-sが使えるのは zsh 4.2.x- で, 他のシェルでは実装されていないと思います. あと, もう既に alias -s 知ってるよーって人は読まなくていいです. alias -s って何? 打ったコマンドの後ろ(suffix)を見て, 適当に宜しくやってくれるやつです. 次の例を見て下さい. ~$ echo "print ('hello, world')" > hello.py ~$ python hello.py hello, world ~$ alias -s py=python py=python ~$ ./hello.py hello, world ~$ Pythonのコードは python hello.py で実行出来ますが, お尻が py なら python を使います, とaliasしておけば, ./

    zshのalias -s (suffix alias)が神な件 - プログラムモグモグ
    hamaco
    hamaco 2013/02/28
    extractパクった。 atool使ってたけど入れるのめんどくさいし……
  • JavaScriptで配列の結合を"+"で書きたい. - プログラムモグモグ

    やりたいことはタイトルのとおり. 要はオーバーロードしたいお... ※※※※ こういう願いは既出であること間違いないっ, ※※※※ よってここに書いてること, あるいは ※※※※ さらにエレガントな事がどっかに書かれてるかもしれないっ!!! とりあえずECMA-262を読んでみる. [p.74] 11.6.1 The Addition operator(+) 読むのがめんどくさいが, 要はReturn the String that hogehogeか, ToNumber(左辺)とToNumber(右辺)の和を返すことしかできない. オーバーロードとかできねーーーー (配列を返せない) んじゃ, 汚いけど, String介してやればいいか...??? > Array.prototype.toString = function(){return this.join(',') + ','} [

    JavaScriptで配列の結合を"+"で書きたい. - プログラムモグモグ
  • 1