Ruby の CSV が nil を返さないようにする

Ruby の CSV ライブラリはとても便利なんだけど、ひとつだけ問題があって、CSV をパースしたときに nil を返すことがある。 つぎのような CSV をパースすると2番目のカラムが nil になる。4番目のカラムは空文字になるのに! hoge,,fuga,"",piyo require 'cs…

MySQL Parameters で SQL 構文の差分を確認できるようにした

MySQLのバージョン間のいろんな差分を見れる MySQL Parameters というのがあるんだけど、SQL 構文の差分を見れるようにしてみた。 たとえば、8.0 の最初のリリースの 8.0.11 と最後のリリースの 8.0.37 の構文の差分はここから見れる。 https://mysql-params…

RubyKaigi 2024

2024-05-15〜17 と RubyKaigi 2024 が沖縄で開催されて行ってきたのでその記録。今月中に書いた。えらい! 0日目 ESM Night Cruise at RubyKaigi 2024 1日目 Writing Weird Code Namespace, What and Why An adventure of Happy Eyeballs RubyKaigi 2024 Off…

[追記あり]Mac のここがダメ

追記したよ! 注意 Mac にもいいところはあるけど書いてない Windows の方がいいとは言ってない ハード / MacBook Pro 14インチ 会社から貸与されているのは MacBook Pro 14インチなのでそれについて。他のは知らない。 JIS キーボード キーボードは US でも…

2023年振り返り

2024年になったので2023年を振り返ってみる。 仕事 11月で現職丸2年になった。 目標設定は2年経っても苦手。というか、前職で目標管理制度が30年くらい前に導入されてからずっと苦手なのでまあ仕方ない。 2年経ったけどやっぱり Mac は使いづらい。 2022年は…

KeePass を使う

パスワード管理はずっと Firefox のを使ってたんだけど、9月頃から KeePassXC を使い始めた。しばらく使ってみてそれなりに使えてるのでメモ。なお KeePass と KeePassXC の違いはよくわかってない。 KeePassXC はデータベースを開くためにパスワードだけじ…

LSP ルーターを作った

最近は Emacs の LSP クライアント機能である Eglot を使って Ruby を書いたり読んだりしてる。 ruby-mode では LSP サーバーはデフォルトで Solargraph が使われてる。 半年くらい前に rubocop に LSP サーバー機能が搭載されたらしいんで使ってみた。 (add…

文字ときどきRuby

これはRubyアドベントカレンダーとSmartHRアドベントカレンダーの17日目の記事です。 qiita.com qiita.com 12/9 に nagano.rb で文字について発表して、同じのを 12/15 に SmartHR 社内で LT しました。 スライドはこちら speakerdeck.com 同じ文字? この2…

net-smtp 0.4.0

Ruby の SMTP ライブラリ net-smtp の 0.4.0 をリリースしたので変更内容を書いておく。 認証用のクラスを分離 今まで Net::SMTP クラス中に全部の認証用のメソッドが用意されていたんだけど、新しい認証方式に対応するたびに Net::SMTP 本体に手を入れるの…

Ruby から Bluesky に投稿してみる

Ruby から Bluesky に投稿してみようとあれこれやってみたのでメモ。 Gem Bluesky のプロトコルについて何もわかってないので Gem を探す。 bluesky という gem が見つかったけど、これは違うやつっぽい。 bskyrb というのがあったので使ってみる。 atproto …

roda-sequel-stack を使ってみた

Ruby で ActiveRecord じゃなくて Sequel を使いたい場合のウェブフレームワークは何がいいかなぁ。Hanami かな。まあ Rails で Sequel 使ってもいいんだけども。— とみたまさひろ (@tmtms) 2023年5月27日 Ruby で ActiveRecord じゃなくて Sequel を使いた…

RubyKaigi 2023

2023-05-11〜13と RubyKaigi 2023 が松本で開催されて、行ってきたのでその記録。一ヶ月以内に書いた!えらい! 松本開催 RubyKaigi は 2016年から地方都市で開催されてる。地方に行くには大都会発着だとそれなりに便利なんだけど、地方地方間の移動は結構大…

ruby.wasm で await を使う

最近はずっと ruby.wasm で遊んでます。 2023/5/19 に ruby.wasm 2.0 が出ました。 ruby.wasm 1.0 では await がうまく動かないことがあったけど、2.0 でちゃんと動くようになったんで、記念に前の記事以降にやったこと等をまとめてみた。 await ruby.wasm …

Rabbit on Firefox

Rabbit というプレゼンツールがある。画面の下の方でウサギとカメが追いかけっこをしてるプレゼンツールで、Ruby で作られててまつもとさんがよく使ってる。 www.youtube.com PDF 表示時にもこれと同じようなウサギとカメを表示できないかなーと思っていろい…

ruby.wasm で MySQL Parameters を作り直した

プライベートでは基本的に誰の役にも立たないプログラムを作ってるんだけど、たまにうっかり MySQL Parameters みたいな役に立つものを作ってしまう。 MySQL Parameters は5年くらい前に Vue.js の勉強のために作ってみたんだけど、結局そのまま Vue.js は触…

ThinkPad T14 Gen3 + Xubuntu 22.10 をハイバネートできるようにしてみた

ハイバネート Ubuntu 22.04でのハイバネーション - Journal InTime(2023-01-03) を見て、自分の ThinkPad T14 Gen3 はそんなでもないけどサスペンド時にまあまあバッテリーが減るので、自分もハイバネートしようかと思ってやってみた。 ハイバネートの設定手…

2022年振り返り

2023年になったので2022年を振り返ってみる。 仕事 2021年11月に転職したので、2022年が実質1年目だった。 仕事でバリバリ Ruby が書ける環境は良いね。 プロダクトの機能開発以外は、テスト周りとかデータベース周りをやってた気がする。 フロントエンド難…

Ruby: SSL_CTX_load_verify_file: system lib (OpenSSL::SSL::SSLError)

OpenSSL まわりでちょっとハマったのでメモ。 こんな Ruby のコードを動かすと環境によって warning になったりエラーになったりする。 require 'faraday' ssl_opts = {ca_file: OpenSSL::X509::DEFAULT_CERT_FILE} Faraday::Connection.new('https://tmtms.…

3.2 rc1 以降の変更

Ruby 3.2 アドベントカレンダーの最終日記事です。 qiita.com 3.2 rc1 以降の変更 今年も 12/25 に無事 Ruby 3.2.0 がリリースされた ということで、3.2 rc1 以降の変更を、3.2.0-rc1 の NEWS.md と 3.2.0 リリースの NEWS.md の差分からピックアップ。 3.2…

Ruby 3.2 - Fiber

Ruby 3.2 アドベントカレンダーの24日目の記事です。 qiita.com Fiber Fiber[], Fiber[]=, Fiber#storage 追加 Feature #19078: Introduce Fiber#storage for inheritable fiber-scoped variables. - Ruby master - Ruby Issue Tracking System Fiber ストレ…

Ruby 3.2 - OptionParser / Timeout

Ruby 3.2 アドベントカレンダーの23日目の記事です。 qiita.com default gem のバージョンアップで面白いのがあるかなーと眺めてみた。 OptionParser OptionParser#raise_unknown Mode for accepting all unknown options · Issue #38 · ruby/optparse raise…

Ruby 3.2 - default gem の差分 / bundled gem の差分

Ruby 3.2 アドベントカレンダーの22日目の記事です。 qiita.com default gem の差分 default gem は Ruby に同梱されていて削除できない gem。新しいバージョンの gem のインストールは可能。 default gem のバージョンの Ruby 3.1 との差分を調べてみた。 G…

Ruby 3.2 - RubyVM::AbstractSyntaxTree

Ruby 3.2 アドベントカレンダーの21日目の記事です。 qiita.com RubyVM::AbstractSyntaxTree RubyVM::AbstractSyntaxTree.parse に error_tolerant オプション追加 Feature #19013: Error Tolerant Parser - Ruby master - Ruby Issue Tracking System RubyV…

Ruby 3.2 - Proc

Ruby 3.2 アドベントカレンダーの20日目の記事です。 qiita.com Proc Proc#dup が元のオブジェクトと同じクラスのオブジェクトを返す Bug #17545: Calling dup on a subclass of Proc returns a Proc and not the subclass - Ruby master - Ruby Issue Track…

Ruby 3.2 - Process / Socket / UNIXSocket

Ruby 3.2 アドベントカレンダーの19日目の記事です。 qiita.com Process Process に定数追加 FreeBSD で Process::RLIMIT_NPTS が追加された。FreeBSD 使ってないからよくわからん。 Socket Socket に定数追加 Socket に定数が追加された。 Socket::SO_INCOM…

Ruby 3.2 - Integer / Set

Ruby 3.2 アドベントカレンダーの18日目の記事です。 qiita.com Integer Integer#ceildiv 追加 Feature #18809: Add Numeric#ceildiv - Ruby master - Ruby Issue Tracking System 商を切り上げる割り算の Integer#ceildiv が追加された。 123.ceildiv(10) #…

Ruby 3.2 - Module

Ruby 3.2 アドベントカレンダーの17日目の記事です。 qiita.com Module Module#const_added Feature #17881: Add a Module#const_added callback - Ruby master - Ruby Issue Tracking System Module#const_added が追加された。定数が追加されたときに実行…

Ruby 3.2 - リファインメント

Ruby 3.2 アドベントカレンダーの16日目の記事です。 qiita.com リファインメント Module#used_refinements Feature #14332: Module.used_refinements to list refinement modules - Ruby master - Ruby Issue Tracking System Module.used_refinements が追…

Ruby 3.2 - Hash

Ruby 3.2 アドベントカレンダーの15日目の記事です。 qiita.com Hash デフォルト値を持つ Hash オブジェクトが空の場合に Hash#shift が返す値が変わった Bug #16908: Strange behaviour of Hash#shift when used with default_proc. - Ruby master - Ruby I…

Ruby 3.2 - Enumerator

Ruby 3.2 アドベントカレンダーの14日目の記事です。 qiita.com Enumerator Enumerator::Product クラスと Enumerator.product メソッド追加 Feature #18685: Enumerator.product: Cartesian product of enumerables - Ruby master - Ruby Issue Tracking Sy…