@ledsun blog

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

RubyでWebSocketサーバー

RubyでEchoサーバー - @ledsun blog の経験を踏まえまして、改めて RubyでシンプルなWebSocketサーバーをゼロからつくってみたに取りくみます。 TCPサーバーの部分の理解が進みます。 HTTPで使ったTCPコネクションをそのままつかって、送受信データをWebSock…

大人数のデイリーミーティング

今、チームのデイリーミーティングの参加者が14人です。 アジャイルソフトウェア開発の文脈の朝会としては人数が多めに感じます。 それもそのはず、4つの開発チームで合同でやっています。 このチームは発足当初は1開発チームでした。 売上の都合で、あれよ…

docker composeコマンドのcompose spec準拠はcompose-goモジュールを使って実現されている

WARN[0000] /home/ledsun/pubdictionaries/docker-compose.yml: version is obsolete というワーニングを追いかけたら 「docker composeコマンドのcompose spec準拠はcompose-goモジュールを使って実現されている」ことに気がつきました。 その記録です。 警…

RubyKaigiで心の洗濯

RubyKaigiで自分よりすごい技術者、技術に真剣に取り組んで深い洞察を得ている技術者を、目の当たりにすると、自分の慢心に気がつきます。 会社では、それなりに上位の技術者です。色々な技術を少しずつ取り組んでは素早く判断をしている日々です。それはそ…

一番の下手くそでいよう

情熱プログラマー ソフトウェア開発者の幸せな生き方作者:ChadFowler,でびあんぐるオーム社Amazon 情熱プログラマーにあるエピソードです。 僕はこの話はあまり好きではありません。 しかし、一理あるところもあるようです。 一つの会社の中で一番…

設計作業は見積もれない

設計作業はふたつの作業から成り立っています。 調査作業 アウトプットをまとめる作業 後半の「アウトプットをまとめる作業」はまあまあよい精度で作業時間を見積もれます。前半の「調査作業」は見積もりが大きく外れることがあります。 「設計作業」とひと…

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スライドでプレゼンテーション資料を作っていました。 今回はオフラインでも動く…