@ledsun blog

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

GCの影響は少なそう

AWS EC2上で並列処理の時間を再々計測した - @ledsun blog で、次の3つの仮説を立てました。 コピーがボトルネックではなかった コピーは減ったが相変わらずボトルネックである コピーで作られたオブジェクトのGCがボトルネックだった また1は可能性が低いと…

AWS EC2上で並列処理の時間を再々計測した

AWS EC2上で並列処理の時間を再計測した - @ledsun blog でAWS環境で計測したデータが、その前に計測したデータと違いました。 どっちが真かわからないのでもう一度再計測しました。 AWS上で3回目の計測 AWS上で2回目の計測 AWS上で1回目の計測 1回目が明ら…

require_relativeはパッチれない

requrie_relativeをハックしたい require_relativeの相対参照の起点となるもの - @ledsun blog でRubyスクリプトのURLを保持する必要があるとわかりました。 そこで次の感じでURLを保持したVMクラスを作りました。 import { RubyScriptAndSourceURL } from "…

AWS EC2上で並列処理の時間を再計測した

Ractor間のデータのやりとりでコピーを減らすには - @ledsun blog でAWS上で再計測してみると書きました。 再計測しました。 AWS上でのコピー1回と2回の処理時間の比較 あまり効果がないようです。 ローカルPCで試したときは、次のようにもう少し明確に効果…

Ractor間のデータのやりとりでコピーを減らすには

Ractor#send move:true したときに出た3つのエラー - @ledsun blog にて、ディープコピーを減らすためにmoveオプションを使いました。 ところがエラーがでました。またエラーの内容が難解で対応出来そうにありません。 そこで、ディープコピーを減らすための…

Ractor#send move:true したときに出た3つのエラー

詰まっているのはワーカーでなくパイプ? - @ledsun blog で、「Ractor間のデータ受け渡し時のコピーがボトルネックになっている」という仮説を立てました。 これを確認するために、Ractor間のデータの受け渡しをmoveにしてみます。 次のようにRactor#sendと…

詰まっているのはワーカーでなくパイプ?

並列数をかえても処理時間が変わらない謎 - @ledsun blog で「サチっているかもしれない」と仮説を立てました。 それを検証するために並列数を変えて計測してみました。 並列数と処理時間のグラフ 処理時間なので低いほど性能が高いです。 3どころか1並列で…

並列数をかえても処理時間が変わらない謎

とあるRuby on RailsアプリケーションのSidekiqで動くバックグラウンドジョブを高速化をしています。 CPUバウンドな処理に時間が掛かっています。 並列化して高速化できるか試しています。 RactorでWoker pool - @ledsun blog で、4コアのPCで並列化できると…

wingetでPowerShellをアップデートする

PowerShellのアップデート方法が、自分のなかでイマイチ決まっていません。 おおむねwingetでアップデートすれば良いと思っています。 今回アップデートしたら不思議な現象に出くわしたのでメモっておきます。 PS C:\Users\led_l> winget upgrade PowerShell…

Distrodを使うのをやめました

WSL2にDistrodをインストールした - @ledsun blog でsystemdを使うためにDistrodを入れました。 「Windows Subsystem for Linux」が「systemd」に対応へ - 窓の杜 によるとWSL自体がsystemdをサポートするようになったので、Distrodを使うのをやめました。 …

僕の好きなプログラミングの格言

読みやすいコードのガイドライン -持続可能なソフトウェア開発のために作者:石川 宗寿技術評論社Amazon を、読んでいたら、可読性を高めるために役立つプログラミングの原則を紹介されていました。 ボーイスカウトルール YAGNI KISS 単一責務の原則 早計な最…

require_relativeの相対参照の起点となるもの

ruby.wasmのrequire_relativeでfetchする - @ledsun blog fetchは非同期だった - @ledsun blog の続きです。前回fetchで実装してみたところ、非同期APIではrequire_relativeの同期性*1を保証できないことに気が付きました。 ブラウザから同期でHTTPリクエス…

nvm.fishをアンインストール

特定バージョンのNode.jsを使うシチュエーションが減ったので、nvmをアンインストールします。 nvm(Node Version Manager)のアンインストール(削除) | WEBREEをみるとディレクトリだけ消せば良さそうです。 念のため nvm uninstall 17.0.1 してから rm -rf $…

fetchは非同期だった

ruby.wasmのrequire_relativeでfetchする - @ledsun blog で良い感じに require_relative をfetchに置き換えられました。 ところがfetchは非同期関数なのです。 次のようなRubyスクリプトがあります。 require_relative "a-1" require_relative "a-2" p 'a l…

ghコマンド

https://t.co/uEQMxttpce gh コマンドでrepo forkするのはどうでしょう— 馬美肉 (@chiastolite) October 1, 2022 で、紹介してもらいました。 今回はForkしたかったわけでなくてプルリクエストを作りたかっただけです。 試しにGitHub CLI | Take GitHub to t…

ruby.wasmのrequire_relativeでfetchする

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

Cannot open display ":0"

WSL起動時にCannot open display ":0"が表示される どうもWSLgが上手く動いていないみたいです。 Xを使うアプリケーション起動すると同様のメッセージを表示して失敗します。 xeyesコマンドを実行するとCannot open display ":0"が表示される 試したけど直ら…

Windows 11, version 22H2に上げたらWSL更新の通知が表示された

WSLアップデートの案内 WSLのアップデート アップデート後のWSLのバージョン WSLのバージョン - @ledsun blog の時はWindowsのビルドとWSLのビルドが連動していたように記憶しています。 Microsoft Store での WSL のリリース ノート | Microsoft Learn によ…

ruby.wasmのハックの仕方

ruby.wasmをブラウザで動かす時require_relativeを相対パスへのfetchに置き換えられる? - @ledsun blog で、ruby.wasmをハックしようと考えました。 実際どうすればハック出来るのかよくわかりません。 irb.wasm がgem関数でgemインストール出来ることがわ…

ruby.wasmをブラウザで動かす時require_relativeを相対パスへのfetchに置き換えられる?

Enable src attribute in script tag in browser.script.iife.js. by ledsun · Pull Request #49 · ruby/ruby.wasm · GitHub が取り込まれたので使ってみました。 <script defer src="https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@0.3.0-2022-10-01-a/dist/browser.script.iife.js"></script> <script type="text/ruby" src="main.rb">…

久しぶりに見知らぬリポジトリにプルリクエストを作成した

プルリクエストを作りました RubyをWebAssemblyで動かすruby.wasmを、ブラウザで動かす時に便利なJavaScriptにbrowser.script.iife.jsがあります。 <script type="text/ruby">にインラインで書いたRubyスクリプトを実行してくれます。 これにsrc属性の対応を追加するパッチです。 アイ…

Stackprofで時間の掛かる処理を探そうとして上手く行かなかった話

RactorでWoker pool - @ledsun blog で、並列化の効果が芳しくないことがわかりました。 どこに原因があるのか知りたいのでstackprof情報を取得します。 Ractor版だと例外がおきます。 PubAnnotationのアノテーション取り込み処理をRactor化したものをStackp…

https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@0.3.0-2022-09-06-f/dist/browser.script.iife.js のsrc属性対応

ruby.wasm/browser.script.ts at d92d1a82256c12604a1e6e15e1269f6d11a81af3 · ruby/ruby.wasm · GitHub を次のようにすれば良いじゃん簡単じゃん?と思っていました。 if (tag.type === "text/ruby") { if (tag.hasAttribute('src')){ const response = awa…

静的サイトをホスティングする

RubyスクリプトをWebAssembly化したRubyランタイムで動かす - @ledsun blog でブラウザで動くRubyスクリプトができました。 スマートフォンでみれるように、ホスティングします。 しました。 https://wordle-search.onrender.com/ です。 スマートフォンで見…

RubyスクリプトをWebAssembly化したRubyランタイムで動かす

wordleの候補をgrepするRubyスクリプト - @ledsun blogをブラウザで動くようにしたいと思います。 ruby.wasm/lucky.html at main · ruby/ruby.wasm · GitHub を参考にして実装していきます。 <html> <script src="https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@0.3.0-2022-09-06-f/dist/browser.script.iife.js"></script> <script type="text/ruby"> require "js" di…</html>

wordleの候補をgrepするRubyスクリプト

Wordle - The New York Times を解くとき、次のようにgrepしています。 ledsun@MSI:~/wordle_rb►grep -e '^\w\w\wt\w$' /usr/share/dict/words | grep -v '[o sclh]' | grep a | grep e | grep r Berta Greta Harte grate irate prate これをRubyスクリプト…

Ractorで並列に動いているっぽい?

次の感じのRubyのソースコードがあります。 annotations_collection_with_doc.each do |annotations, doc| messages += Annotation.prepare_annotations!(annotations, doc, options) end Annotation.prepare_annotations!(annotations, doc, options)の先の…

Stories from developing YJIT

rubykaigi.org は、RubyのYJITでどんな挑戦をしてきたかの話でした。 最初はRubyのinstructionを1:1で機械語に置き換えるところか始めました。 Railsでは遅くなりました。 つぎにJIT部分をフロントエンドとバックエンドに分けました。 もう、この辺でわかり…

Roslynを使ってC#のクラス名を変更する

Roslynを使ってC#のソースコードを編集する - @ledsun blog でRoslynをつかうとC#のソースコードが編集出来るとわかりました。 編集内容を変えて練習します。 クラス名を変えてみます。 using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp;…

Roslynを使ってC#のソースコードを編集する

自分で自分用のC#のソースコード編集ツールをつくったら捗りそうなことに気がつきました。 ググってみたら GitHub - dotnet/roslyn: The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs. というのでC#のソース…