@ledsun blog

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

2023-01-01から1年間の記事一覧

PlaywrightのNewwork mockingをつかってみる

Playwrightをつかってみる - @ledsun blog でPlaywrightが最低限動く環境ができました。 リダイレクトレスポンスを扱うテストを書こうと思います。 Playwrightには Netwrok mockingという機能があります。 実行するテストからのHTTPリクエストをモックして書…

Playwrightをつかってみる

Installation | Playwrightの手順に従って進めます。 npm init playwright@latest いまはnpm initにプロジェクトテンプレートをつくる機能が組み込まれているようです。 npm-init | npm Docsによると initializer in this case is an npm package named crea…

リダイレクトレスポンス対応版 require_relativeを組み込んだruby.wasmを実際に動かして、問題を切り分ける

ruby.wasmでrequire_relativeしたときのリダイレクトレスポンスの扱い方 - @ledsun blog に書いたように、HTTPリクエストのリダイレクトレスポンスでURLが変わったら、変更後のURLをロード済みとして扱いたいです。 リダイレクトレスポンス対応版 require_re…

ruby.wasmでrequire_relativeしたときのリダイレクトレスポンスの扱い方

require_relativeでリダイレクトレスポンスをサポートしたいと思っています。 たとえば次のようなシナリオです。 require_relative "a" を実行する fetch('a.rb') を実行する a.rb にGETリクエストを送る サーバーから302レスポンスでb.rbが返ってくる b.rb …

require_relativeの動作確認する

自分でビルドしたruby.wasmを実行する環境をつくる - @ledsun blog で、ruby.wasmのカスタムビルドを動かせるようになりました。 実装中の require_relative が動くか確かめてみましょう。 次のような index.hml を作成します。 <html> <script src="browser.script.iife.js"></script> <script type="text/ruby"> require 'js/require_remo</html>…

自分でビルドしたruby.wasmを実行する環境をつくる

ブラウザからruby.wasmを実行するときは https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@2.1.0/dist/browser.script.iife.js を使うことが多いです。 browser.script.iife.jsは https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@2.1.0/dist/ruby+stdli…

ruby.wasmのE2Eテストをデバッグする その2

ruby.wasmのE2Eテストをデバッグする - @ledsun blog で、次のように書きました。 そこで、テストケースで次のようなイベントリスナーを設定します。 page.on("console", (msg) => console.log("LOG:", msg.text())); ruby.wasmのソースコードをみると元々組…

Response.urlの挙動を確認する

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

ruby.wasmのE2Eテストをデバッグする

ruby.wasmにPlayWrightで書かれたE2Eテストがあります。 https://github.com/ruby/ruby.wasm/blob/84707d656d007577947ced6c14a9a33e3ffd4033/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/browser-script.spec.ts テストに失敗したときに、…

透過pngを作る 2

透過pngを作る - @ledsun blog の続きです。 手元にあるツールで、背景色の透明化を試しましたが上手く行きませんでした。 新しツールをインストールしてみます。 フリーの画像編集ソフトといえばGIMPがあります。 最近はMicrosoft Storeからインストール出…

透過pngを作る

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

KPTでトライ狙いすぎ問題

KPTは「チームの力で問題を見つけるふるまい」の養成ギブスです。 ふるまいに慣ていない間は違和感があります。 たとえば次のような問題が起きます。 トライ狙いすぎ問題 KPTの「改善活動」の面に強く期待しすぎて生じる問題です。 無意識に、KPTの成功指標…

wasmバイナリを読む

お題 WebAssembly text formatからwasmバイナリをつくる環境を整える - @ledsun blogで、watからwasmが作れるようになりました。 すこし複雑な例をつかってwasmバイナリを生成して読んでみましょう。 WebAssembly テキスト形式の理解 - WebAssembly | MDNにw…

WebAssembly text formatからwasmバイナリをつくる環境を整える

wasmバイナリのカスタムセクションを書いてみる - @ledsun blog でプリアンブルとセクションを持つwasmバイナリを書き出せるようになりました。 最低限のwasmバイナリファイルの構造を理解したといえます。 お題 Writingの次はReadingです。 シンプルなwasm…

wasmバイナリのカスタムセクションを書いてみる

最小限のWebAssemblyのバイナリファイルを書く - @ledsun blog でwasmバイナリのプリアンブルの書き出しに成功しました。 続いてセクションを書き出してみます。 Modules — WebAssembly 2.0 (Draft 2023-07-24) によると セクションの定義 1バイトのID、4バ…

最小限のWebAssemblyのバイナリファイルを書く

仕様 WebAssemblyのバイナリファイルはModuleと呼ばれます。 Modules — WebAssembly 2.0 (Draft 2023-07-24) に仕様があります。 プリアンブル セクション に分かれています。セクションは空でも良いです。 つまり、最小限のWebAssemblyモジュールはプリアン…

WSL向けのWindowsポートフォワード設定スクリプト new

WSL

WSL向けのWindowsポートフォワード設定スクリプトが動かなくなった - @ledsun blog のでバッチファイルをやめてPowerShellで書き直しました。 $port = 8000 if (([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent())…

WSL向けのWindowsポートフォワード設定スクリプトが動かなくなった

WSL

WSL向けのWindowsポートフォワード設定をスクリプト化する - @ledsun blog が動きませんでした。 バッチファイルを起動したところ パッとみ気が付きませんでしたが、netsh interface portproxy add v4tov4 listenport=8000 connectaddress=は途中で途切れて…

推測するな、計測せよ

Rob Pike先生は「推測」は否定していないのでは? 「推測するな、計測せよ」はミスリードと言う話 - aki33524’s blog Rob Pikeが批判しているのは「合理的な根拠なしに決めつけてハックをすること」であって、「推測」すること自体ではない。 「推測」の否定…

寿司屋の玉子焼き、最初に食べるか最後に食べるか

お寿司屋さんで握りランチを頼むと、大抵玉子焼きが手前に置かれます。「手前に置く」ということは「最初に食べろ」ということなので、なるべく最初に食べます。ただ、ご飯の最初に甘いものを食べるのはなんとなく据わりが悪いです。 この議論は昭和5年には…

WebAssembly勉強メモ

ruby.wasmの発表ラッシュが終わりました。ruby.wasmのハックをしていると、WebAssemblyの理解があやふやなことが我ながら気になります。ここらで一度、足元を固めたいと思います。 じっくり、本を読んでみようと思います。 ハンズオンWebAssembly ―Emscripte…

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

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

ruby.wasmのビルド中にruby/zlibのconfigureに失敗する

ビルド終盤の linking ruby のあとでエラーが起きています。 ruby.wasmのビルドエラー zlibがインストールされていない? dpkg -l |grep zlibを実行すると ledsun@MSI:~/ruby.wasm[1]►dpkg -l |grep zlib ii zlib1g:amd64 1:1.2.11.dfsg-2ubuntu9.2 amd64 co…

WebAssembly用語集

ruby.wasmのソースコードを読んでいるとWebAssemblyに関する用語が出てきます。用語を間違って読みとるとソースコードも間違って読んでしまいます。ソースコードを読むのに無駄に時間がかかります。そういうわけで、ソースコードを読みながら調べた用語をこ…

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

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

TokyuRuby会議14にてLTをした

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

誰にも出来る殺人/棺の中の悦楽

誰にも出来る殺人/棺の中の悦楽 山田風太郎ベストコレクション (角川文庫)作者:山田 風太郎KADOKAWAAmazon 4年ぶりに読み直しました。 ミステリーですが、トリック寄りの本格でなくて、ホラー的に「ほげーっ」てなる感じでした。 よくもまあこんなプロットが…

ruby.wasmの構成図を書いている

何度やってもruby.wasmのどこからどこまでがWebAssemblyでどこからがJavaScriptなのかわからなくなります。 あらためて絵を描いてみることにしました。 ruby.wasmの構成図 第1段 これだと、Rubyスクリプトがどう関わるのかわからないんですよね。 登場人物を…

JS::Object#new PR感想戦

ruby.wasmでJavaScriptのオブジェクトをnewメソッドで初期化する - @ledsun blogで、JS::Object#newを実装しました。 これを Create a JavaScript object with the new method. by ledsun · Pull Request #246 · ruby/ruby.wasm · GitHub にしました。 マー…

ruby.wasmにto_bを実装するには?

ruby.wasmでクエリ文字列を扱おうとしたら - @ledsun blog で、JavaScriptのオブジェクトの返す真理値が真か確認するために if searchParams.has('phrase') == JS.eval('return true;') と書きました。 if searchParams.has('phrase').to_b と書きたいです。…