Ruby

WindowsでKernel#spawnで作った子プロセスを親プロセスが死ぬときに同時に死んでもらう

WindowsだとRubyのspawnメソッドでプロセスを作成すると親プロセスからは切り離されて、親プロセスが終了しても残り続けます。 これが便利な時もありますが、私のユースケースでは不便に働くことがありました。なので、今回は親子共々死んでもらいます。 以…

Rust で Ruby の拡張を書くことができるらしい

私は Windows 使いなので Windows を使って Rust で Ruby を拡張したい。 最近(といっても半年前)rubygem が Rustで書けるようになったらしいので書いていきたい。 Ruby をインストール rubyinstaller.org ここから +DevKit のインストーラーを使ってイン…

2021年度版、TSharkを使ってリアルタイムパケットモニタリング

2013年に以下の記事を書いた。この時はJSONではなく、XMLフォーマットを用いてリアルタイムパケットモニタリングを実現したが、最近では jsonが隆盛してきているため、jsonフォーマットでのリアルタイムパケットモニタリングを行いたい。また、Rubyのバージ…

2水準系直行表の作成

2水準系直行表を作成するスクリプト require 'terminal-table' require 'csv' def dup_row(rows) new_rows = [] rows.each do |row| 2.times do new_rows << row.dup end end new_rows end def add_cols(rows) c = [0,1].cycle new_rows = rows.dup new_rows…

子プロセス間でパイプをつなぐ

親プロセスで作成したパイプを子プロセス間でつなぐ方法 以下のスクリプトは、標準入力で 何か文字を入力すると、それが出力されるサンプル。 out_r, out_w = IO.pipe script1 = <<~SCRIPT1 $stdout.sync = true loop do v = gets puts '1:' + v sleep 1 end…

Windowsファイルパスを標準添付ライブラリで生成/パースする時の言語ごとの違い

Ruby 、 C# 、 Go の標準添付ライブラリで file:///c:\temp\doc.txt のようなパスを生成・パースした時の違いを示します。Ruby だけは標準ライブラリの仕様上少し手を加えてあげないと動きませんでした。そのあたり少しフェアじゃないかもしれません。 参考…

プラットフォームがWindowsかそうでないかで処理を変える方法

RUBY_PLATFORM で Ruby が動作しているプラットフォームがわかります。 Windowsは x64-mingw32 とかになります。windows ではありません。 Visual Studio とかでビルドすると mswin が入るようです。(環境がないのでフルネームはわかりません...) なので、こ…

Windowsでプロセスグループを指定して spawn する方法

Linux で プロセスグループを指定して spawn を実行する場合は pgroup を指定しますが、Windowsではこのオプションはサポートされていません。Windowsでプロセスグループを作成するには new_pgroup を指定します。ただし、spawnの記述を間違うとshell経由で…

spawnとCtrl+C

参考サイト equj65.net モチベ プロセスグループとCtrl+Cの関係がよくわからなかったので調べてみた。 結論 pgroup: false だと子プロセスにも SIGINTを送信する pgroup: true だと子プロセスには SIGINTは送信しない プロセスグループなしで spawn 以下のプ…

Fiddle で MessageBox 表示

Ruby3.0から Win32API ライブラリが廃止になってしまったらしく 久々に Win32API使おうと思ったら使えなくて困った。 代替品として fiddle/import を使ってねということだったの使ってみた。 require "fiddle/import" require 'fiddle/types' def L(text) te…

Ruby(Windows)で改行付き文字列データを扱う場合はテキストモード(バイナリモード)に気をつけろ!!

はじまり Rubyに限った話ではないのかもしれないですが、Rubyで改行を含むテキストデータを送受信するようなプログラムをWindowsで書いていた時に思った通りに処理されなくて嵌ってしまったので、自戒を込めてブログに残しておきます。 結論 Windowsで CR/LF…

Hotwire チュートリアルをする

Hotwire とは hotwired.dev Railsの作者 DHHが提唱する新しいSPAの形を実装したライブラリになります。 今まではサーバーサイドのデータをJSONのようなフォーマットでクライアントに渡し、クライアント側のJavascriptでHTMLをレンダリングすることでSPAを実…