memo.log

技術情報の雑なメモ

2021-01-01から1年間の記事一覧

setsocopt探訪のメモ(5)

前回までは、 setsocopt 関数はOSのシステムコールを呼んでいるらしいというところまで確認した。 今回は、カーネルのシステムコールの実装を覗いてみたいと思います。(確認した時のカーネルのバージョンは linux-4.19.172 kernel/git/stable/linux.git - L…

setsocopt探訪のメモ(4)

さて、前回までで、文字列データでオプションを指定しても、mreq 構造体で指定してもシステムコールとしては同じものが実行されるところまでを確認した。 今回は、Cのコードからシステムコールが実行されるまでの流れを追ってみようと思う。 setsockopt は定…

カーネルをコンパイルして、1行だけデバッグログを追加する最低限の手順

前提 Amazon Linux2 ( amzn2-ami-hvm-2.0.20210126.0-x86_64-gp2 ) アップデート前のカーネルバージョン 4.14.214 アップデート後のカーネルバージョン 4.19.172 手順 必要なパッケージのインストール # yum groupinstall "Development Tools" # yum install…

setsocopt探訪のメモ(3)

さて、前回記事では、Cでの setsocopt 関数の optval にはRubyの同メソッドからオプションのデータを渡した際には文字列データを渡していることまでを確認した。では、Cの仕様としては指定の構造体を渡すところで、なぜ文字列でも問題ないのか、本当に問題な…

setsocopt探訪のメモ(2)

さて、前回ではRubyの BasicSocket#setsocopt メソッドの optval になぜ文字列を渡せばいいのか、という疑問が生じるまでの背景を記した。今回は、その疑問の深堀りをさらに進めていく。 Rubyは実装はCで書かれているため、 BasicSocket#setsocopt メソッド…

setsocopt探訪のメモ(1)

ソケットをプロミスキャスモードにするためにはPACKET_ADD_MEMBERSHIPオプションをsetsockoptで設定する必要がある。 よくあるサンプルコードだが、Cなら以下のような感じだ。 sock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); struct packet_mreq mr…

【CircleCI】1つずつ試しながら config.yml を作成していく(job, workflow, executors)

.circleci/config.yml を編集しながら試していく。 これじゃ駄目 さすがにversionだけだと駄目。 これだとジョブかワークフローを作れということでエラー。 version: 2.1 以下のエラー # Error calling workflow: 'workflow' # Cannot find a definition for…

Amazon Linux2 で glibc をコンパイルする

ハマったところメモ 最新のglibc でコンパイルしようとすると、以下のようなエラーが各種ライブラリについて出てきた。1つ1つ潰していくのは大変すぎるのと、標準リポジトリでは公開されていないバージョンのライブラリも必要になってくるようだったのでイン…

RubyでEtherIPパケットを作るメモ書き(RAWソケットで生データを書き込む)

require "socket" # EtherIPヘッダも含んでそれらも含めた上側のデータ def trans_data # IP Header: 20Byte # MAC Header: 14Byte # EtherIP Header: 2Byte # とりあえず、EtherIPヘッダ+自然に生成されたEtherヘッダ+IPヘッダをベタで。 bynary_data = 0…

Amazon Prime Video で ChromeCastで映そうとした時にキャストボタンが表示されなかったとき

以下の許可が必要だった。「設定」から探すと出てくる。

リリースしたばかりのGemをインストールしようとしたら「Could not find gem ...」

Gemをリリース(アップデート)して、アップデートしたVersionを実際にインストールしてみようとVersion指定して bundle install しようとしたら以下のエラーが。 Could not find gem xxxx in any of the gem sources listed in your Gemfile. ところが、5分…

【Ruby 3.0】RBSの生成方法を色々試してみるメモ

以下の3つの方法を順番に試してみる。 引数/戻り値の型は記載されていてほしいのでtypeprof が動くのならそれを利用するのがベターそう。 各方法の解説は参考リンクのページが詳しい。 rbs prototype rb Rubyファイルを指定して静的に解析 引数/戻り値の型は…