@ledsun blog

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

MySQLのロックに関する調査メモ その4

MySQLのロックに関する調査メモ その3 - @ledsun blog の続きです。 SHOW ENGINE INNODB STATUS\Gで出力されるロック情報を眺めていたら意味がわかってきました。 まずテーブルに格納されているレコードの情報です。 select * from mysqlcasual; +----+-----…

MySQLのロックに関する調査メモ その3

MySQLのロックに関する調査メモ その2 - @ledsun blog の続きです。 概念だけ勉強しても理解に限度があります。 実際にロックを起こして観察してみました。 InnoDBのロックの範囲とネクストキーロックの話 - かみぽわーる を参考にしました。 MySQL Shellを…

MySQLのロックに関する調査メモ その2

MySQLのロックに関する調査メモ その1 - @ledsun blog の続きです。 MySQLのロックについて - SH2の日記 のPDFを読みました。 面白かったです。 MySQL(というかInnoDB)の最初のスタート地点が「絶対にファントムリードさせたくない」なようです。 つまり一…

MySQLのロックに関する調査メモ その1

MySQLのロックのついては MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.7.1 InnoDB ロック に書いてあるはずです。 読んでもいまいちよくわかりません。 MySQL/MariaDBとTransactdのInnoDBロック制御詳細 その1 - BizStationブログを合わせて読むとわか…

Windows Formの同期イベントハンドラーから入れ子になった非同期関数を呼ぶとデッドロックする

await と Task.Result によるデッドロックによるとWindows FormでTaskを使ったときにデッドロックするケースがあるようです。 検証してみます。 デッドロックするソースコード 試しに次のようなコードを書いてみました。 namespace AwaitDeadLockEight { pub…

オートローダー設計調査

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

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

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

wez.termのテーマを変えた

変更後のテーマのスクリーンショット matrixという中2っぽいテーマにしました。 ついでに .wezterm.lua に次の設定を追加してフォントを変更しました。 config.font = wezterm.font '源ノ角ゴシック Code JP' config.font_size = 14.0 もともとは補完途中の…

相対URLの解決

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

Playwrightでリダイレクト後のHTTPリクエストをMockできない

ruby.wasmのテストコードを書いていました。 PlaywrightでHTTPリクエストをMockしているスクリーンショット cdn.jsdriver.netへのリクエストをMockして、レスポンスの内容をローカルファイルに置き換えています。 リダイレクトしたあとはMockできていないス…

Playwrightでリダイレクトの動作をテストで確認する

PlaywrightのNewwork mockingをつかってみる - @ledsun blog ではテスト用のUIを使ってリダイレクトの動作を確認しました。 テストコードで確認してみましょう。 import { test, expect } from '@playwright/test'; test.beforeEach(async ({ context }) => …

Playwrightでローカルファイルを読み込む

次のようなindex.htmlを用意します。 <html> <title>Playwright</title> </html> テストは次のように書きます。 import path from 'path'; import { test, expect } from '@playwright/test'; test('has title', async ({ page }) => { const htmlPath = `file://${path.join(__dirname, …

Amazon Linuxに関する調査メモ

Amazon Linux 2では、Node.jsの新しいバージョンをインストールできなかったり、少しずつ時代遅れ感が出ています。 では、「Amazon Linux 2023にすればいいのか?」というと、どうもそう簡単ではないようです。 これは、アップデートに挑戦して苦戦した話で…

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…

Response.urlの挙動を確認する

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

透過pngを作る 2

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

KPTでトライ狙いすぎ問題

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

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モジュールはプリアン…

推測するな、計測せよ

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

ニトリのオフィスチェア

同僚にニトリのオフィスチェアがお値段以上だと聞きました。 店舗に試しに行きました。 OC701 メッシュだと39,900円。脅威のお値段です。 リクライニングがかなり倒れる。押し返す力は弱め アームレストが前後、向きも変えられる アームレストが71cmくらいま…

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

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

Ubuntuで自動的にapt upgradeするには?

WSL上のUbuntuでsudo apt update && sudo apt upgradeするのが日課です。 自動化していい気がしてきました。 ChatGPTに相談します。 ChatGPTの回答 sudo apt install unattended-upgrades sudo dpkg-reconfigure --priority=low unattended-upgrades してみ…

RubyKaigi向け発表資料づくり

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

RubyKaigi 2023 に登壇します。

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

ChatGPTの答えをプログラムで処理しやすくする

ChatGPTに質問をなげて、その結果に反応するプログラムを書こうと思いました。 ChatGPTは自然言語で回答するので、プログラムでパースしにくそうと思っていました。 回答形式を指定すれば良かったんですね。

ChatGPTをレビューコメントの社会性フィルターとしてつかう

例えば、ソースコードレビューをしていて、アレを使うと便利ですと指摘したときです。 LINQでRxのTakeUntilみたいな操作をしたいときに、レビューコメントで「LINQにRxのTakeUntilみたいなのないの?あったらそれ使ってほしい」って書くと、乱暴な感じがしま…

NUnitをつかってテストコードを書くときのテストメソッド名の命名規則

NUnitのテストの命名規則をどうするとわかりやすくなるのか悩ましいのでまとめてみます。 describe と context がない NUnitにはRSpecとちがいdescribeとcontextに相当する機能がありません。 NUnitの公式のサンプルコードを見てみましょう。 https://github…