タグ

ブックマーク / k0kubun.hatenablog.com (10)

  • 2022年にやったこと - k0kubun's blog

    2021年にやったこと 2020年にやったこと 2019年にやったこと 2018年にやったこと 2017年にやったこと 2016年にやったこと 2015年にやったこと 今年のハイライトは 大学院を卒業し、CS修士号を取った グリーンカードを取った Shopifyに転職し、仕事RubyのJIT開発を始めた という感じの一年だった。 大学 5月にジョージア工科大学のCS修士を卒業した。 ほとんどの人は3~4年かけて卒業するプログラムを、理論上最速である1年9か月で卒業するRTAをやっていた。 かといって特に雑になるでもなく、GPA 3.90/4.00 だったので、GPA 3.36だった学部の時よりかなりマシな成績を取っている。 なんかその記事に書くとダサくなりそうなので書かなかったが、よく宿題の提出期限になる月曜の朝5時はほぼ毎週起きててギリギリに提出するくらいには大変だった。4:57~4:

    2022年にやったこと - k0kubun's blog
    udzura
    udzura 2023/01/01
  • Linux用キーリマッパーxremapをRustで書き直した - k0kubun's blog

    このエントリはRust Advent Calendar (3) 22(-10)日目 の記事です。 5年前にxremapというLinux向けのキーリマッパーを作った (Linux向けの最強のキーリマッパーを作った - k0kubun's blog) のだが、X11のレイヤーで実装したため、GNOMEのActivitiesでリマップが効かなかったり、WaylandではXWayland内でしか動かないといった問題があった。 これらの問題を解決すべく、xkeysnailやwayremapといったツールが後に作られたのだが、xkeysnailはWaylandで動かずwayremapはX11で動かない方針なのと、やはり全てのキー入力を中継するようなツールはPythonのような遅い言語よりRustみたいな速い言語で書かれるべきだと思ったので、後発のツール*1の良いところ取りをしながら今回xremapを作

    Linux用キーリマッパーxremapをRustで書き直した - k0kubun's blog
    udzura
    udzura 2021/12/23
    clone(), Rc, RefCell を多用する僕は負けているということなのだろう...
  • 2020年にやったこと - k0kubun's blog

    2019年にやったこと 2018年にやったこと 2017年にやったこと 2016年にやったこと 2015年にやったこと ハイライト 子供が産まれた 大学院生になった Ruby 3x3 を達成した I became a father ☺️ pic.twitter.com/Uq0Jgbduny— k0kubun (@k0kubun) July 15, 2020 I've been officially admitted to Georgia Tech's OMSCS (Online Master of Computer Science). I'm excited for being a student again. I chose the online course to take it without quitting my job, but due to COVID-19 it's pro

    2020年にやったこと - k0kubun's blog
    udzura
    udzura 2020/12/31
    “JIT開発に必要だったのでdwarfを勉強して” dwarfの専門家だ
  • 令和時代のRubyコア開発 - k0kubun's blog

    Ruby Core Development 2019というタイトルでRubyKaigiのCFPにプロポーザルを書いたのだが、 もう一つ書いた方の話が採択されたのでその話はしなかった。 さて、今日はRubyコア*1の開発がSubversionからGitに移った節目でもあったので、そっちのトークで言いたかったことの一部を記事にしておこうと思う。 Subversion → Git 移行 [Misc #14632] 去年くらいから @hsbt さんが cgit というGitフロントエンドを使ってGitリポジトリの準備を始め Misc #14632、ついに今日正式にcgitの方がupstreamになった。平成の時代でSubversionでのtrunkのRubyコア開発は幕を閉じた。 この辺を進めているのは主に @hsbt さんな中、僕がこれを偉そうに書いたり今回のRubyKaigiで壇上でアナウンス

    令和時代のRubyコア開発 - k0kubun's blog
    udzura
    udzura 2019/04/23
  • ISUCON7予選2日目「Railsへの執着はもはや煩悩」で予選通過した - k0kubun's blog

    ISUCON7予選に「railsへの執着はもはや煩悩の域であり、開発者一同は瞑想したほうがいいと思います。」チーム (@cnosuke, @rkmathi, @k0kubun) で参加し、217,457点で予選通過だったようです。 正確な値は覚えてませんが、Best Scoreは25万くらいでした。 最終形の構成概要 appサーバ1 puma 16スレッド: 画像のアップロード/表示、雑多なリクエスト対応 puma 2スレッド: GET /fetch だけ返す appサーバ2 puma 16スレッド: 雑多なリクエスト対応 (画像はnginxがサーバ1に流す) puma 2スレッド: GET /fetch だけ返す DBサーバ MySQLがいるだけ サーバ1, サーバ2をベンチマーク対象にしていました。この構成なのは GET /fetch がスコアにカウントされないため、それ以外にほとんど

    ISUCON7予選2日目「Railsへの執着はもはや煩悩」で予選通過した - k0kubun's blog
    udzura
    udzura 2017/10/23
  • CRuby向けのLLVMベースのJITコンパイラを書いている話 - k0kubun's blog

    LLRBというRuby向けのメソッドJITコンパイラを書いている github.com RubyKaigi 2015の最後のキーノートで@evanphxが「LLVMでCRubyのコードをインライン化するメソッドJITを実装したら速いんじゃね」みたいな発表をしていたのを覚えているだろうか。 LLRBというのはまさにそれを実装しているプロジェクトであり、少なくとも現時点で「LLVMでCRubyのコードをインライン化するメソッドJIT」と言える状態まで実装でき、ものによっては効果が出る状態になったので公開した。 なんで書いてるの 言語を自分で実装するとその言語に関する理解が大分深まる、というのをHamlの実装とかCコンパイラとかで体験していて、僕が一番好きな言語はRubyなのでRubyでもそれをやっておきたい、というのがあった。また、Rubyは遅いと言われがちだが、どこに改善可能な点が眠っている

    CRuby向けのLLVMベースのJITコンパイラを書いている話 - k0kubun's blog
  • Hamlを3倍速くした - k0kubun's blog

    Hamlコミッターになった RubyKaigi 2015で「Hamlは遅いしメンテされてないので使わない方がいい」と言ったところ、じゃあ自分でメンテして速くしろということになりコミッターになった*1。 当時から2年ごしなのは、当時のHamlのオーナーがあまりアクティブではなく、最近a_matsudaさんがオーナーになったため。 HamlのTemple化・高速化を行った Templeというのは、テンプレートエンジンをパイプライン的に構築するためのフレームワークで、テンプレートエンジン用の中間表現とその最適化エンジンを持つ。実装をTempleベースにすると、SlimやHamlitに使われているような中間表現を使った最適化を適用しやすくなる。 コミット権をもらったので、RubyKaigi 2015でマージされないと言っていたパッチを自分でマージし、コード生成とattributeのコンパイルをTe

    Hamlを3倍速くした - k0kubun's blog
    udzura
    udzura 2017/02/28
    Ruby・Railsに詳しくないためErubiというのが出てたの初めて知った…
  • Linux向けの最強のキーリマッパーを作った - k0kubun's blog

    X Window Systemで動作するキーリマッパー「xremap」を作った 2017/1/9追記: xkremap→xremapにリネームしました 2021/12/21: Rust化に伴いアーキテクチャを刷新し、より多くの機能と環境がサポートされました: Linux用キーリマッパーxremapをRustで書き直した - k0kubun's blog 僕はKarabiner用のRuby DSLを作ったりそれを使って大量の設定を既述する程度にはKarabinerのヘビーユーザーなんだけど、デスクトップ環境にLinuxを使い始めてからもう1年以上経つ今でもLinux環境で使えるKarabiner並にリッチなキーリマッパーを見つけられずずっと不便していたので、ユースケースを満たす最低限のものを自分で作った。 github.com ちなみにX用であって別にLinuxの何かに依存しているわけではな

    Linux向けの最強のキーリマッパーを作った - k0kubun's blog
    udzura
    udzura 2016/11/30
    息を吸うようにmrubyのC拡張を書く人だ
  • Itamaeのmruby実装「mitamae」が大体いい感じになった話 - k0kubun's blog

    Roppongi.rb #2 で「mitamae」について話してきた Roppongi.rb #2が "Infrastructure x Ruby" をテーマに開催され、そこで RubyなしでItamaeレシピを実行できる「itamae-go」を作った - k0kubun's blog 話と pure mrubyで実装されたItamae「itamae-mruby」を作った - k0kubun's blog 話をしてきた。 いいたかったことはスライドの通りだけど、枠が15分でいろいろ漏れた話を書いておく。 mitamaeの現状について なんでitamae-mrubyからMItamaeに変えたの というか一昨日までmitamaeはitamae-mrubyという名前だった。エエー。変えた理由は真面目な奴がいくつかあるんだけど、あえて不真面目な奴だけ書くと、名前が微妙なソフトウェアは流行らない気が

    Itamaeのmruby実装「mitamae」が大体いい感じになった話 - k0kubun's blog
    udzura
    udzura 2016/11/02
    見たまえ、ということか
  • pure mrubyで実装されたItamae「itamae-mruby」を作った - k0kubun's blog

    itamae-goを作り直してitamae-mrubyを作った 先週Goからmrubyを使ってRubyなしでItamaeレシピを実行できる「itamae-go」を作ったんだけど、全く同じコンセプトの、RubyなしでItamaeレシピを実行できる「itamae-mruby」を作った。 github.com itamae-goの問題点 mrubyは組み込み言語だしこれは来想定された使い方であり、go-mrubyの実用的な例として普通に作ってよかったと思っているけど、ことItamaeを実装することに関しては以下のような問題があった。 レシピを読む部分以外をGoで実装していたので、specinfraのコードの移植に手間がかかる 主にstandaloneなバイナリを吐く目的にGoが使われているが、mruby-cliでもできるのでGoを使っているメリットがそれほどなく、2つの言語をブリッジするコード

    pure mrubyで実装されたItamae「itamae-mruby」を作った - k0kubun's blog
    udzura
    udzura 2016/08/06
    spawn風の何かだ!!!便利そう
  • 1