@ledsun blog

無味の味は佳境に入らざればすなわち知れず

Ruby

オートローダー設計調査

ruby.wasmでオートロードする - @ledsun blog でModule#const_missingをつかってオートローダーを書いてみました。 Module#const_missingのAPIで、汎用的なオートローダーを書くのは少し難しそうなことがわかりました。 難しそうですが、どれくらい難しいの…

Rubyでテトリスを実装する その9

Rubyでテトリスを実装する その8 - @ledsun blog の続きです。 すべてのテトリミノを実装しリファクタリングしました。 github.com CLIバージョンはひとまず完成です。

Rubyでテトリスを実装する その8

Rubyでテトリスを実装する その7 - @ledsun blog の続きです。 今回は 行を消すロジックの修正 T字形テトリミノの追加 デバッグ表示の追加 です。 行を消すロジックの修正 より宣言的にならないか工夫してみました。 https://github.com/ledsun/tetoris/blob…

Rubyでテトリスを実装する その7

Rubyでテトリスを実装する その6 - @ledsun blog の続きです。 今回は、ライン消しです。 https://github.com/ledsun/tetoris/commit/fb4fd5d11f58d7353d4501124290574206a98dbf がコミットです。 行単位の処理が増えたので、FieldクラスからRowクラスを分離…

Rubyでテトリスを実装する その6

Rubyでテトリスを実装する その5 - @ledsun blog の続きです。 左右キー下キーでテトリミノを移動出来るようにしました。 https://github.com/ledsun/tetoris/commit/bda62edefc2d13cdb6c93c242fc97b2729526313 が、コミットです。 実装は簡単でした。 落下…

Rubyでテトリスを実装する その4

Rubyでテトリスを実装する その3 - @ledsun blog の続きです。 今回はテトリミノの種類を増やします。 同時に、テトリミノが着地したときに新しいテトリミノを追加します。 着地しとテトリミノと新しいテトリミノが衝突する判定も必要なので、それもいれます…

Rubyでテトリスを実装する その3

Rubyでテトリスを動かす その2 - @ledsun blog の続きです。 前回、I字型テトリミノが落ちてくるようになりました。 今回は、上キーの入力でテトリミノを回転します。 変更は https://github.com/ledsun/tetoris/commit/f93310b1254d2b53f8ca27ac0a15a373b95…

Rubyでテトリスを実装する その2

Rubyでテトリスを動かす その1 - @ledsun blog の続きです。 前回、枠を表示しました。 今回は、I字型テトリミノを表示して落下させます。 https://github.com/ledsun/tetoris/commit/9000667616f82486fe55c20e2c42b9c29e41bf34 の1コミットにまとめてありま…

Rubyでテトリスを実装する その1

WSL2上にRuby開発環境を構築してテトリスを作ってみた #Ruby - Qiita を見ながらテトリスを動かそうとしています。 読む分には簡単にできそうと思いました。 実際に、写経して動かそうとしてみたら結構大変でした。 特に、Cursesアプリケーションのデバッグ…

相対URLの解決

URL: URL() コンストラクター - Web API | MDN を使うと、基準になるURLからの相対パスを解決したURLが得られます。 例えば、次のように使います。 // ベース URL: let baseUrl = "https://developer.mozilla.org"; new URL("ja/docs", baseUrl); // => 'htt…

Response.urlの挙動を確認する

ruby.wasmのE2Eテストをデバッグする - @ledsun blog で、Response.urlにリダイレクト後のURLが入っていない現象を観測しました。 MDNには url プロパティの値は、あらゆるリダイレクトの後に得られる最終的な URL になります。 とあります。矛盾しているよ…

透過pngを作る

ChatGPTで画像が作れるようになりました。 楽しく画像をつくりました。 ChatGPTで作った画像 作った画像でトレーナーが作りたくなりました。 背景色の白が印刷されてしまいます。 絵だけを残して背景を透過したいです。 Windowsの3Dペイントには良い感じに塗…

RubyKaigi 2023 follow upでしゃべりました

発表 RubyKaigi 2023 follow up - connpass で発表しました。 発表資料です。 speakerdeck.com TokyuRuby会議14にてLTをした - @ledsun blog と とちぎRubyの勉強会 拡大版で発表しました - @ledsun blog につづき3連続です。 この3回ではスライドのテンプレ…

とちぎRubyの勉強会 拡大版で発表しました

とちぎRubyの勉強会 拡大版 で発表しました。 発表資料はこちらです。 自分がプルリクエストをつくるときの手順を例にハッキングの仕方を整理しました。我ながら、現時点のruby.wasmのハッキングの仕方の説明としてなかなか上手くできたと思います。 先週のT…

TokyuRuby会議14にてLTをした

TokyuRuby会議14 - Regional RubyKaigi でLTをしました。 speakerdeck.com ruby.wasmを使ったブラウザアプリケーションをつくった話とその途中で見つけたruby.wasmの改善点のプルリクエストをつくった話です。 当時の朝にマージされたプルリクエストを含む2.…

RubyKaigi向け発表資料づくり その2

RubyKaigi向け発表資料づくり - @ledsun blogの続きです。 何度か練習してみた結果30分の枠に収まりそうです。 プレゼンテーション資料の作成に取りかかります。 最近はGoogleスライドでプレゼンテーション資料を作っていました。 今回はオフラインでも動く…

RubyKaigi向け発表資料づくり

RubyKaigi 2023 に登壇します。 - @ledsun blog の続きです。 文字起こしが書けたので、手書きのコンテを書き起こしました。 コンテ1枚目 これが8枚あります。 スライドにすると48枚です。 30分の枠に収まらない可能性が出てきました。 トピックを削る必要が…

RubyKaigi 2023 に登壇します。

RubyKaigi 2023 3日目のタイムテーブル 右下に居ます。 ここ数ヶ月、仕事もプライベートも慌ただしく、なかなか時間がとれずに、ふええって思いながら準備をしています。 僕は次の手順で発表資料を作っています。 スマートフォンに時間分しゃべる 内容が固ま…

rbenvをsudoしたい

ratにファーストチャレンジ - @ledsun blog で、ratの実行にroot権限が必要そうなことがわかりました。 rbenvをユーザーアカウントにインストールしています。 単にsudoをつけて実行するとrubyが見つかりません。 ledsun@MSI:~/rat►sudo ruby rat.rb sudo: r…

ratにファーストチャレンジ

プログラミング言語Ruby30周年記念イベント を軽い気持ちで見ていました。 奥一穂さんの発表がめちゃすごかったです。 さっそくGitHub - kazuho/rat: NAT written in pure rubyを読んでみます。 https://github.com/kazuho/rat/blob/3efd4d47aa0e2eb44768d28…

elasticsearch-rails 7.2.1について

elasticsearch-rails gemの最新バージョンは7.2.1です。 elasticsearch gemの最新バージョンは8.6.0です。 バージョンがズレています。 こういうものなのでしょうか? 状況はちょっとややこしいです。 elasticsearch-railsのリポジトリには次のissueがありま…

Railsのタスクを作成する

あるRailsアプリケーションではファイルアップロードのジョブの途中で失敗すると、処理途中のレコードやアップロードしたファイルが残ります。 削除の手順はわかっています。 次の2つのコマンドでDBに残ったデータとアップロードしたファイルが消せます。 bi…

DockerイメージのベースをAlpineからDebianに変えた

ruby:3.0.1-alpine Dockerイメージでsimstring gemがビルドできない - @ledsun blog でRuby 3.0.1 はAlpine上でC拡張Gemのビルドに失敗することがあるとわかりました。 では、3.0.5ではどうでしょうか? config.status: error: in `/simstring': config.stat…

ruby:3.0.1-alpine Dockerイメージでsimstring gemがビルドできない

simstringとswigの問題の切り分け - @ledsun blog で、simstringのgemをビルドするときはprepare.shに--swigオプションをつける必要があることがわかりました。 simstring gemをDocker上で使いたいです。 Dockerコンテナを小さめにするために、Alpine Linux…

simstringとswigの問題の切り分け

Rubyからsimstringを使うにはSWIGが必要です。 - @ledsun blog でビルドしたsimstring gemをRubyから実行時に次のエラーが出ていました。 ledsun@MSI:~/pubdictionaries►ruby -e 'require "simstring"' <internal:/home/ledsun/.rbenv/versions/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require': /home/ledsun/.rbenv/versions/3.0.</internal:/home/ledsun/.rbenv/versions/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>…

Rubyからsimstringを使うにはSWIGが必要です。

GitHub - chokkan/simstring: SimString という文字列を検索するライブラリーがあります。 Rubyから使うことができます。 というわけでインストールしてみたのですが次のエラーが起きました。 ledsun@MSI:~/pubdictionaries►ruby -e 'require "simstring"' <internal:/home/ledsun/.rbenv/versions/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:</internal:/home/ledsun/.rbenv/versions/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>…

RubyVMインストラクション1日目

25日間で理解するRubyVMインストラクション - @ledsun blog の1日目が公開されました。 RubyVMはスタックベース仮想マシンです。 スタックに入る値はRubyのオブジェクトがそのまま入る点が特徴的なようです。 例えばduparrayという命令では配列[1, 2, 3]がそ…

Vladimir MakarovさんのRubyKaigi 2022での発表を記事にしたもの?

developers.redhat.com ruby-jp slackで教えてもらいました。 A Faster CRuby interpreter with dynamically specialized IR - RubyKaigi 2022 の内容を記事にしたものらしいです。 この発表をみた僕の感想は A Faster CRuby interpreter with dynamically s…

25日間で理解するRubyVMインストラクション

kddnewton.com ruby-jp slackで教えてもらいました。 Syntax Tree - RubyKaigi 2022 を発表したケビン・ニュートンさんが25日間でRubyVMについて解説してくれるようです。 プロローグの本記事によるとRubyVMのインストラクションを表示する方法が挙げられて…

ruby.wasmのrequire_relativeでfetchする

ruby.wasmをブラウザで動かす時require_relativeを相対パスへのfetchに置き換えられる? - @ledsun blog で ruby.wasm ハックアイデアを思いつきました。 実際にやってみます。 packages/npm-packages/ruby-wasm-wasi/src/browser.script.ts に次のようなコ…