タグ

ブックマーク / 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をリリースしました - プログラムモグモグ
  • 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に書き直しました! - プログラムモグモグ
  • jqのGo実装 gojq を作りました! ― スタックマシン型インタープリタによるイテレータセマンティクスの実装 - プログラムモグモグ

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

    jqのGo実装 gojq を作りました! ― スタックマシン型インタープリタによるイテレータセマンティクスの実装 - プログラムモグモグ
  • ptraceシステムコール入門 ― プロセスの出力を覗き見してみよう! - プログラムモグモグ

    他のプロセスを中断せずに、その出力をミラーリングして新しくパイプで繋ぐ、そんなことはできるのでしょうか。 straceやgdbといったコマンドは一体どういう仕組みで動いているのでしょうか。 ptraceシステムコールを使い、プロセスが呼ぶシステムコールを調べて出力を覗き見するコマンドを実装してみたいと思います。 ptraceシステムコール Linuxを触っていると、いかにプロセスを組み合わせるか、組み合わせる方法をどれだけ知っているかが重要になってきます。 パイプやリダイレクトを使ってプロセスの出力結果を制御したり、コードの中からコマンドを実行して、終了ステータスを取得したりします。 プロセスツリーやプロセスグループを理解し、シグナルやnohupコマンドを使ったりします。 プロセスの扱いに慣れると疑問に持つのがstraceやgdbの仕組みです。 プロセスの実行しているシステムコールを出力し

    ptraceシステムコール入門 ― プロセスの出力を覗き見してみよう! - プログラムモグモグ
  • コマンドラインがさらに便利になるfillinコマンドを作りました! - プログラムモグモグ

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

    コマンドラインがさらに便利になるfillinコマンドを作りました! - プログラムモグモグ
  • LLVMを始めよう! 〜 LLVM IRの基礎はclangが教えてくれた・Brainf**kコンパイラを作ってみよう 〜 - プログラムモグモグ

    コンパイラを作ってみたいと思っていても、アセンブリ言語はよくわからない。 パーサーみたいなコードは書いたことがあるけれど、コード生成の処理はさっぱりだ。 実行ファイルをバイナリエディターで見るとかなにそれ怖い。 そんな私なのですが、LLVMに興味を持ち始めています。 SwiftRust、あるいはEmscriptenなど、近年注目されている言語やコンパイラ技術の中枢にはLLVMがあります。 アセンブリはよく分からなくてもLLVMを使いこなせるようになれば、マルチプラットフォームで実行ファイルを生成できる言語処理系を作るのではないか。 コンパイラ作ってみたいな、LLVMを使ってみようかなと思っている今日このごろです。 ところが、いざLLVMを勉強しようと思ってもどこから始めればいいかよく分かりませんでした。 マニュアルは巨大で読む気が起きないし、リファレンスを見てもさっぱりです。 雰囲気はわ

    LLVMを始めよう! 〜 LLVM IRの基礎はclangが教えてくれた・Brainf**kコンパイラを作ってみよう 〜 - プログラムモグモグ
  • CSVファイルをSQLのクエリで集計できるqコマンドをHaskellで実装してみました! - プログラムモグモグ

    先日、Twitterでqコマンドが話題になっていました。 github.com スターが3000を超えていてすごいですね。2014年から開発されているツールで、Pythonで書かれています。 これはGoで実装してみたいなーと思っていたところ、mattnさんが素早く実装されていました。 mattn.kaoriya.net取られたと思ったものの、よく読むとまだ標準入力しか対応していないようです。 いったいどういう仕組みなのか、何の実装が難しいところなのか、qコマンドが嬉しい場面はどういうケースなのか、自分も知りたくなったので1から実装してみました。 私が一番素早く書ける言語ということでHaskellを選びました。 qhs qコマンドのHaskell実装、ということでqhsと名づけました。 github.com stackが入っていればインストールは簡単です。 $ git clone ht

    CSVファイルをSQLのクエリで集計できるqコマンドをHaskellで実装してみました! - プログラムモグモグ
  • 30のプログラミング言語でFast inverse square rootを実装してみました! - プログラムモグモグ

    あなたの好きな言語は何ですか。そして、あなたの好きなアルゴリズムは何ですか。 好きな言語があると、その言語でどんな問題でも解決しようとなりがちになります。その言語を極めるのは素晴らしいことですが、その言語や似たような言語でしかコードが書けなくなったり、他の言語に対して見向きもしなくなってしまう可能性があります。 勇気を出して新しい言語にチャレンジしてみませんか?色々な言語に挑戦してみませんか? 何から始めればいいか分からない。次にどの言語を学べばいいか分からない。いま特に何も困っていない。何でも得意な言語で書けてしまう。そういう人が多いのではないでしょうか。 新しい言語にチャレンジするきっかけを作る一つの方法は、ある特定のアルゴリズムを一つ決めて、あらゆる言語で実装してみることです。解く問題が大きすぎると力尽きてしまうので、せいぜい20〜30行程度で書ける簡単なものが良いでしょう。大事なこ

    30のプログラミング言語でFast inverse square rootを実装してみました! - プログラムモグモグ
  • 最近の技術トピック・他近況報告 - プログラムモグモグ

    こんにちは。id:itchynyです。 自分の中で、ブログに書く価値のある内容どうかという基準がインフレしてしまって、最近は全くブログを書けていませんでした。 業務の中で学んだこと、家に帰ってから書いたコード、その他技術的に考えていることなど、ブログに書ける内容というのは色々とありますが、どれもこれも「このレベルの理解度では書いてもつまらないだろうなぁ」「技術的にはそんなに凄くないしなぁ」「まぁ当たり前のことか」みたいに考えてしまって、書けなくなってしまっていました。 ブログに掛けるコスト、その分野における記事のレベル、そして一般的なエンジニアに対するインパクトなど、あれもこれもと考えこんでしまってよくありませんでした。 実際、pdfの記事は一か月くらいは掛けていて自分が期待した以上のインパクトを与えることができたので、その記事を基準に物事を考えてしまってなにも書けなくなっていたのです。

    最近の技術トピック・他近況報告 - プログラムモグモグ
  • 個人的に便利だと思うVimの基本設定のランキングを発表します! - プログラムモグモグ

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

  • 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を取り巻く問題について - プログラムモグモグ
  • 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)が神な件 - プログラムモグモグ
  • 1