Ruby

objenealogistというgemを作った

github.com 発音と命名の由来 Object(オブジェクト) + Genealogist(ジーニーアーロジスト) -> オブジーニーアーロジスト という想定なのだけど、本当にそう発音していいかは知らない。造語です。 Genealogistは「家系、血縁関係、家系図を専門的に調査・研究…

OSS活動記 #6 - rbs_rails - prismパーサーを利用するようにする

対象リポジトリ github.com 作成したPR github.com 経緯 rbs_railsはRailsアプリケーションでのrbs(Rubyの型定義ファイル)作成を支援してくれるもの。ActiveRecordモデルはDBカラムから動的にメソッド群が生える。そういった動的に生えるメソッドをケアし…

Rubyと深掘る浮動小数点数

はじめに コンピューターサイエンスの基礎的なことをゆるく独学していきたいなぁということで「CSゆる独学」というカテゴリーで記事を書いていこうかとなりました。なおこのテーマを思い立って筆を取るまでにはや数週間経過しているぐらいのゆるさです。やっ…

素朴な再帰下降パーサをRubyで書いてみる その2

改めて書いてみて色々気付きがあったなという記事です。 kozy4324.hatenablog.jp 成果物リポジトリ github.com Lexerの改善 1トークン分を読み進めてトークンを取得する #advance を実装していましたが、自分で実装した割に呼び出した後にlexerがどういった…

素朴な再帰下降パーサをRubyで書いてみる

再帰下降パーサとは? Wikipediaを引用すると、 再帰下降構文解析 - Wikipedia 再帰下降構文解析(さいきかこうこうぶんかいせき、英語: Recursive Descent Parsing)は、相互再帰型の手続き(あるいは再帰的でない同等の手続き)で構成されるLL法のトップダ…

Raccが出力するコードをLLMに解説させたメモ

これの続き。 kozy4324.hatenablog.jp Racc (が出力するソースコード)を眺めてみたいと思います。 と書いてはみたものの、さっぱり分からなかったのでLLMに解説させたというメモ。 -v で出力されるoutput 文法はこれ(アクションは割愛)。 rule program: …

Kaigi on Rails 2025 に参加した Kaigi Effect で ActiveRecord のコネクションを一定期間で再接続するだけの Gem を作った

タイトルが長い。そしてタイトルで全て語ってしまった。 経緯 Day 1 のこちらのセッションを拝聴させてもらいました。 kaigionrails.org 途中 X に投稿したポストの会話が以下。 話逸れるけど、たとえばRDSでfailoverしてwriter/readerが入れ替わった場合、…

Kashiwa.rb #14「ワイガヤグループワーク会」やってきた

やってきました。 Kashiwa.rb #14 ワイガヤグループワーク会 - connpass 今回から数回は各自テーマを持ち寄って取り組む形式でやっていく試みです。個人でもくもく作業するのもいいけど、せっかくだからその場に集まった何人かで一緒に調べたり質問したりと…

RubyのParser周りを俯瞰する〜2025.夏〜

この記事は何? 来たる 8/18(月) にKashiwa.rbの勉強会が開催されます。 Kashiwa.rb #14 ワイガヤグループワーク会 - connpass 自分は「Parser や AST を触ってみる」あたりに取り組むつもり。なのだけど、パッと Parser を動かして AST を確認できるものが…

関西Ruby会議08に参加してきた

2025年6月28日(土)に京都の先斗町歌舞練場で開催された関西Ruby会議08に参加してきました。 regional.rubykaigi.org 前夜祭にも参加したかったので金曜日に京都に入り、前後を観光にして三日間京都を堪能してきたつもりなので記憶が新しいうちに書いておきま…

TSKaigi 2025 の 1日目だけ参加してきました

懇親会付きチケット買ったけど2日目は子供達の小学校運動会と被ってしまったので 1日目のみの参加になりました。しゃーない! 2025.tskaigi.org 聴講したセッション The New Powerful ESLint Config with Type Safety | TSKaigi 2025 checker.tsに対して真剣…

関西Ruby会議08で採択されなかったプロポーザル公開

1本入魂でプロポーザルを送ってみたのですが結果は残念ながら不採択。この内容でどこかで発表はしたかったので資料の準備はやっていこうかと考えています。 Title (Publicly viewable title. Ideally catchy, interesting, essence of the talk. Limited to …

Kashiwa.rb #11「LT会 & Extreme Fish Bowl」やってきた

今月も地域Ruby勉強会の Kashiwa.rb をやってきました。 Kashiwa.rb #11 LT会 & Extreme Fish Bowl - connpass 前半 LT 会、後半はみんなでコードを書きながらワイワイしたいなってことで Extreme Fish Bowl を企画してみました。 LT 会 発表者は shilo さん…

Ruby で logicuit っていう論理回路シミュレータの gem を作った

https://github.com/kozy4324/logicuit From logic circuit to Logicuit — a playful portmanteau. A Ruby-based logic circuit simulator featuring an internal DSL for building circuits. を作ったよっていう話。 この gem は何ができるのか? 論理回路…

Ruby LSP が textDocument/hover リクエストを処理する流れ

リクエストの振り分け RubyLsp::Server#process_message でリクエストの振り分けが書かれている。 https://github.com/Shopify/ruby-lsp/blob/v0.23.11/lib/ruby_lsp/server.rb#L13 今回見るのは textDocument/hover なので以下箇所から。 https://github.co…

VSCode 拡張の Ruby LSP で Language Server が起動するまでを確認する

VSCode 拡張のエントリーポイント VSCode 拡張としての実装は vscode ディレクトリ以下に格納されている。実装は TypeScript 。今インストールしている VSCode 拡張のバージョンが v0.9.7 なのでそのタグで確認していく。 https://github.com/Shopify/ruby-l…

Kashiwa.rb #8「OSS Gate風 OSS と仲良くなるためのワークショップ」のRuby-LSPチームで取り組んだこと詳細

Kashiwa.rb 第8回も無事に開催することができました。 Kashiwa.rb #8 OSS Gate風 OSS と仲良くなるためのワークショップ - connpass 自分は earthean さん、Hisakeyさん、私の3人チームで Ruby-LSP と仲良くなろうと試みました。 GitHub - Shopify/ruby-lsp:…

Kashiwa.rb #6 「2024年の出来事をネタにオープンスペーステクノロジー(OST)」やってきた

ちゃんとブログ書くところまでやる。 kashiwarb.connpass.com 12月師走ということで、今回の柏.rbは2024年をふりかえりつつ2025年に向けた話も含めてワイワイしたいなということでオープンスペーステクノロジーを企画してみました。 発表1: Ruby界隈を中心に…

Kashiwa.rb #5 「もくもく会 & LT会」やってきた

ブログを書くまでが勉強会です。 kashiwarb.connpass.com もくもく会 今日の柏.rbではruby-lsp関連をもくもく作業しよう— Koji NAKAMURA (@kozy4324) 2024年11月18日 最近 Ruby LSP の Add-ons 関連で遊び始めたのだけど、実装の更新にドキュメントが全然追…

CVE-2023-22794: SQL Injection Vulnerability via ActiveRecord comments

Rails の過去の脆弱性から勉強するシリーズ #5 github.com 脆弱性の概要 ActiveRecord のクエリメソッド #annotate #optimizer_hints および QueryLogs インターフェースにおいて SQL インジェクション脆弱性。SQL のコメントに対するサニタイズが不十分だっ…

Kaigi on Rails 2024 登壇ふりかえり

Kaigi on Rails 2024 Day2 10:40 〜 10:55 「ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)」というタイトルで登壇させてもらいました。大きな技術カンファレンスでの登壇は初だったのでふりかえり記事を書き残しておこうと思います。 参加したセ…

Kaigi on Rails 2024 に参加した

2024.10.25 (Fri.) - 26 (Sat.) の2日間、有明セントラルタワーホール & カンファレンスで開催された Kaigi on Rails 2024 に参加してきました。 kaigionrails.org Kaigi on Rails は初参加だったし、コロナ禍&家庭都合で大規模カンファレンス自体が数年ぶ…

CVE-2023-28120: Possible XSS Security Vulnerability in SafeBuffer#bytesplice

Rails の過去の脆弱性から勉強するシリーズ #4 github.com 修正コミット github.com 脆弱性の概要 SafeBuffer#bytesplice に XSS 脆弱性の可能性がある。 html_safe と SafeBuffer 出力する文字列がすでに検査済みで、追加で HTML エスケープする必要がなく…

Rubyセミナー東京2024に参加してきた

セミナー参加感想文です。 rubyassociation.doorkeeper.jp 基調講演「Better Ruby」 Rubyのパパ、まつもとさん (Matz) による講演。 CRuby 開発の近況報告という感じの内容だった。というか RubyKaigi2024 のキーノートとタイトル同じで(自分は RubyKaigi …

CVE-2023-23913: rails-ujs vulnerable to DOM Based Cross-site Scripting contenteditable HTML Elements

Rails の過去の脆弱性から勉強するシリーズ #3 github.com 修正コミット github.com 脆弱性の概要 contenteditable な要素に malicious HTML をペーストすることで DOM based XSS の可能性がある。 contenteditable に HTML そのままペーストできるの?レベ…

CVE-2023-28362: Actionpack has possible cross-site scripting vulnerability via User Supplied Values to redirect_to

Rails の過去の脆弱性から勉強するシリーズ #2 github.com 修正コミット github.com 脆弱性の概要 HTTP header で利用できる文字種は RFC で定義されている。 RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing 修正前のアプ…

CVE-2023-38037: Active Support Possibly Discloses Locally Encrypted Files

Rails の過去の脆弱性から勉強するシリーズ。 github.com 修正コミット github.com 脆弱性の概要 Rails には秘密鍵を credential ファイルへ編集・保存するための仕組みが含まれている。 railsguides.jp config/credentials.yml.encには暗号化された内容が書…

Ruby 3.3.5 のリリースノートを眺めたメモの続き: HANDLE_REG_TIMEOUT_IN_MATCH_AT とは何だったのか?

昨日の記事の続きです。 kozy4324.hatenablog.jp HANDLE_REG_TIMEOUT_IN_MATCH_AT が GitHub の全文検索でもヒットしなかったけど簡単な理由だったというオチ。 Bug #20653: Memory leak in String#start_with? when regexp times out Ruby 3.3.5 に含まれる…

Ruby 3.3.5: Bug #20650: Memory leak in Regexp capture group when timeout を眺めたメモ

github.com bugs.ruby-lang.org どんなバグ? 正規表現の capture group によって確保されたメモリが、正規表現処理でタイムアウトするとメモリリークするということらしい。 diffを眺める match_at 関数の末尾にあるラベル timeout: の処理が変わって ONIGE…

Rubyであえて手続き型のパラダイムでマインスイーパーを書いてみる

プログラミング初学者向けのモブプロ題材を考えていて、マインスイーパーあたりがちょうどいいんじゃないかと思って試しに書いてみた。 ゴールはオブジェクト指向の考え方も学べるようなものにしたいと考えている とはいえ、いきなり初学者にオブジェクト指…