Rubyで利用できるUSDTは probes.d
というファイルに定義されている。
USDTとは:
以下の記事はbpftraceとUSDTを理解している前提で書いていきます。
続きを読む2020年は色々やったんですが、不甲斐なさも残りました。2021年も頑張ります(1行で去年の総括と今年の抱負)。
で、RustとBPF CO-RE、2つのsota(2020年末に覚えた言葉の一つ) をブログに書いて気炎を上げていきたい。
(はじめに: 半分自分メモのつもりなんです! という言い訳をしておきます。認識や用語など間違いがあれば突っ込んで...)
続きを読む飛び入りです。Rubyアドベントカレンダーその2 17日目の記事です。昨日はなんとなく似たような(?)、 Rubyの8進数と2進数の構文エラー文の違い の話です。
今日はRubyで構造体、と言うか、バイナリパックされた構造体を扱う話の触りをします。class Structの話はしない。
さてみなさんは String#unpack/Array#pack
を使ってますか?
すこく正直な話をすると、おそらく多くの方は使っていなくて、使っている方も大半はbase64文字列を生成する m
フォーマットぐらいしか使っていないのではないかと推測しています。
["Hello World"].pack('m') #=> "SGVsbG8gV29ybGQ=\n"
ぼくも今まではそうだったのですが、最近は他のフォーマットも急に使うようになりました。というのも、Cで扱う構造体、実質バイナリ列を簡単にRubyの世界に持っていく際に便利な代物だからです。去年の終わりからずっと ffiをガッツリ使ったgem の開発に勤しんでいるので、やや詳しくなってしまった。
ということで今日は構造体とffiとpack/unpackの話をしていきます。