UTF-8 validationとmruby/c

これは mrubyファミリー Advent Calendar 2023 の2日目の記事です。 こんにちは。ima1zumiです。 私はmruby/cでUTF-8を使えるように実装しています。そのなかでRubyの String#valid_encoding みたいな機能を実装しているのでその背景とコードについて書きま…

IRBの型補完を有効にする方法

IRB 1.9.0から tompng さんの実装によりIRBでは型補完が使えるようになりました。katakata_irb の機能がIRB本体に入った形です。 今までは正規表現での補完だったため精度があまり良くなかったのですが、型のパワーを得てより速く精度の良い補完になりました…

Kaigi on Rails 2023に参加した

浅草橋で行われたKaigi on Rails 2023に参加した。 印象に残ったセッション やさしいActiveRecordのDB接続のしくみ step by step でDBに接続するまでの過程を追いかけ、どのようなクラスがどんな働きをしているのかの解説だった。重要なポイントに絞ってあり…

IRBとRelineのHEADを使いつつ現在のブランチ名とcommit hashを表示する

IRBとRelineはHEADで使いたいので、特定ディレクトリのものを使用して実行している。 ASDF_RUBY_VERSION=3.3.0-dev ruby -I /Users/mi/ghq/github.com/ruby/reline/lib -I /Users/mi/ghq/github.com/ruby/irb/lib /Users/mi/ghq/github.com/ruby/irb/exe/irb…

RubyKaigi 2023で "UTF-8 is coming to mruby/c" というタイトルで話しました

スライドタイトルは「サンタが街にやってくる」つまり「Santa Claus Is Coming to Town」のもじりでした。 UTF-8がルンルンでmruby/cにやってくる様子を思い浮かべながら決めました。 スライド きっかけ 発表内でも触れましたが、はすみさんにRubyWorldConfe…

IRBとRelineのバージョンを変更してIRBを起動するスクリプトを書いた

IRBのバージョンは簡単に変更できるけど、Relineのバージョン変えてIRB起動するのが面倒だったのでスクリプトを書いてみた。 手元でしか使わないのでARGVで文字列渡すだけの簡素な作り。 bundler/inline は便利だなぁ。 コードにもコメントしてあるけど、ARG…

福岡Rubyist会議03に参加した

福岡Rubyist会議03 regional.rubykaigi.org キーノートスピーカーの2名が公開されたときに、これは絶対に行きたい!!と思って参加を決めた。参加してとても良かった。 sorahさんの発表はRubyKaigiがどんなものを使って、どんなスケジュール感で作られている…

Ruby 3.2 リリースパーティー presented by アンドパッドに参加した

Ruby 3.2 リリースパーティー presented by アンドパッドに参加しました。とても楽しい時間で、新しいRubyのたくさんの機能が楽しみになりました。 andpad.connpass.com 今日のスライドです。文字が小さいときはこれをみてください #ruby32_andpad https://t…

Ruby ビルド時の parse.tmp.y:12.10-14: require bison 3.0, but have 2.3 を解決する

macOS に入っている bison のバージョンが 2.3 のため Ruby 3.2 がビルドできなくなっていた。 ❯ asdf install ruby 3.2.0-dev Downloading ruby-build... Cloning into '/Users/mi/.asdf/plugins/ruby/ruby-build-source'... remote: Enumerating objects: …

perfでCRubyのプロファイリングができる環境を作る

みなさん、こんにちは。ima1zumi です。 これは Ruby Advent Calendar 2022 6日目の記事です。 本日は macOS で perf が動く仮想環境を作って CRuby のプロファイリングできる環境構築をしていきます。 目次 macOS で perf は使えない Virtualbox & Vagrant …

RubyKaigi2022で "String meets Encoding" というタイトルで話しました

RubyKaigi2022 Day3で "String meets Encoding" というタイトルで話しました。 無事話すことができて良かったです。 スライド 後日YouTubeに動画がアップロードされると思うので、アップロードされたらそちらも貼ります。 きっかけ 本編中に話したとおり、Ru…

RubyKaigi Takeout 2021 で文字コードの話をしました

2022年になって今更2021年の話です。 2021年当時にRubyKaigi参加ブログを書こうとしていた下書きを見つけたので、書きかけですがそのままリリースします。 下書きなので途中から箇条書きです。 2021-09-11 (Sat) の RubyKaigi Takeout 2021 Day3 で "Dive in…

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory を解消する

まとめ (1) .zshrc などで export LC_CTYPE="ja_JP.UTF-8" 日本語ローカライズに非対応の場合は、 export LC_CTYPE="en_US.UTF-8" (2) /etc/ssh/ssh_config の SendEnv LANG LC_* をコメントアウトする 経緯 ssh しようとして以下のエラーが出ることがある。…

String#force_encodingは文字コードの強制変換ではない

Ruby の String#force_encoding は String の encoding を変更するだけで、文字コードの変換を行うわけではありません。そのため、バイト列は変換されません。 force_encoding はどんなメソッドか String の encoding を変更します。ただし、バイト列は変更…

最近の趣味

Rubyist近況 Advent Calendar 2021 - Adventar 7日目 フランス語学習 Duolingo で最近フランス語を勉強している。たしか udzura に英語以外の言語を学習すると面白いと言われたことがきっかけだった気がする。勉強している理由はなくて、英語以外の言語を勉…

Vim から esa に日報を投稿できるようにする

Vim

ESM Advent Calendar 2021 - Adventar の5日目の記事です。 永和システムマネジメント アジャイル事業部では esa を使ってメンバーが日報を投稿しています。 ですが私は日報をよく後回しにして書かなくなってしまうことがありました。そこで、自分にとっても…

Rubyだけで文字コード変換を実装する

Ruby Advent Calendar 2021 - Qiita の5日目の記事です。 こんにちは。ima1zumiです。 私はRubyKaigi Takeout 2021 で Dive into Encoding というタイトルでオレオレ文字コードを作って文字コードを学ぶ話をしました。 その中で、C拡張のgemとして自作文字コ…

フィヨルドブートキャンプを(11ヶ月前に)卒業したこと、楽しいことをすること

「フィヨルドブートキャンプ Part 2 Advent Calendar 2021 - Adventar」4日目の記事です。 2021年1月にフィヨルドブートキャンプというプログラミングスクールを卒業しました。2021年1月から永和システムマネジメントという会社で働いており、スクールを卒業…

RubyKaigi Takeout 2021 に登壇します

RubyKaigi Takeout 2021 に『Dive into Encoding』というタイトルで登壇します。 私の登壇は3日目である 2021-09-11 (土) の 11:00 - 11:25 です。 rubykaigi.org 自作文字コードを作ってローカルのRubyにビルドして遊んだ話をします。文字コードの基礎からR…

Gemのバージョンを比較する

文字列で比較するとうまく比較できない。 '1.0.9' < '1.0.10' # => false Gem::Version を使うと文字列のまま比較できる。 また、 pre や beta などの文字が入っていても正しく比較できる。 require 'rubygems' Gem::Version.new('1.0.9') < Gem::Version.ne…

ファイルパスを指定して irb と reline を起動したい

はじめに 私は irb をよく使うので、せっかくなら常に最新版を使ってバグを見つけたいなと思いました。 irb と reline は git clone しておおむね master に追従しているので、ファイルパスを指定して irb を起動することにしました。 ruby -I <path> Ruby 起動時</path>…

gem installしたgemのパスを知りたい

gemのインストール場所は、$ gem environment の出力結果の INSTALLATION DIRECTORY で分かる。 ❯ gem environment RubyGems Environment: - RUBYGEMS VERSION: 3.2.3 - RUBY VERSION: 3.0.0 (2020-12-25 patchlevel 0) [x86_64-darwin19] - INSTALLATION DI…

URI#escape と URI#unescape は Ruby 3.0.0 から削除された

タイトルの通り、 URI.escape と URI.unescape は Ruby 3.0.0 から削除されました。長い間非推奨となっていましたが、ついに 3.0.0 で削除されました。 代わりに ERB::Util.#url_encode , CGI.escape , URI.encode_www_form , WEBrick::HTTPUtils.#escape_fo…

はじめての自作キーボードを作る(2)遊舎工房でmeishi2ビルド編

はじめに この記事は2020年ふりかえりアドベントカレンダー 15日目です。書いているのは12月18日です。昨日の記事は はじめての自作キーボードを作る(1)情報収集編 - いまブログです。 あらすじ 自作キーボードのさわり心地を確かめることと、meishi2キッ…

はじめての自作キーボードを作る(1)情報収集編

はじめに この記事は2020年ふりかえりアドベントカレンダー 14日目です。書いているのは12月18日です。昨日の記事は 2020年買って良かったもの - いまブログ です。 きっかけ 内定したので就職が決まるまでに何をやりたいかな、と思ったときに自作キーボ…

2020年買って良かったもの

はじめに この記事は2020年ふりかえりアドベントカレンダー 13日目です。昨日の記事は Rails Girls Gathering Japanに参加 - いまブログ です。 こんにちは。趣味は買い物の ima1zumi です。2020年もそろそろ終わりが近いので、買って良かったものリストでも…

Rails Girls Gathering Japanに参加した感想

はじめに この記事は2020年ふりかえりアドベントカレンダー 12日目です。昨日の記事は Rubyで文字コードを扱うコードを書くときに便利なメソッド集 - Qiita です。 Rails Girls Gathering Japan とは Rails Girlsとはより多くの女性がプログラミングに親しみ…

reline のテストを実行

はじめに この記事は2020年ふりかえりアドベントカレンダー 11日目です。これを書いているのは12月14日ですが、あまり気にしないことにしました。昨日の記事は サロゲートペアとRubyのStringについての覚書 - いまブログ です。 先日 Ruby の標準添付ライブ…

サロゲートペアとRubyのStringについての覚書

はじめに この記事は2020年ふりかえりアドベントカレンダー 10日目です。これを書いているのは12月14日ですが、あまり気にしないことにしました。昨日の記事は .irbrc で irb で使える独自メソッドを定義する - いまブログ です。 TL;DL サロゲートペアは16…

.irbrc で irb で使える独自メソッドを定義する

はじめに この記事は2020年ふりかえりアドベントカレンダー 9日目です。これを書いているのは12月12日ですが、あまり気にしないことにします。昨日の記事は Hamada.rb #16 に参加 - いまブログ です。 今日は以下のツイートで教えていただいた内容についてま…