memo.log

技術情報の雑なメモ

2021-02-01から1ヶ月間の記事一覧

『オブジェクト指向設計実践ガイド』3章メモ

テーマ 依存関係の少ない(疎結合な、変更に強い)コードを書く クラスは自身よりも変更の可能性の低いクラスのみ依存するべき 抑えておきたいこと 具象クラスは、抽象クラスよりも変わる可能性が高い . この概念については、「依存オブジェクトの注入」で一…

Docker と Nginx でリバースプロキシを構成する最低限のメモ

前提 構成は以下のイメージ ホストで80番ポートで受ける、DockerのNginxは80番ポートで受ける、後ろに80番ポートで流す docker はインストール済であること、後ろのサーバは動いていること Amazon Linux2 Linux ip-172-31-4-104.ap-northeast-1.compute.inte…

【Ruby】シフト演算メモ

irb(main):001:0> 1.to_s(2) => "1" irb(main):002:0> 1 << 8 => 256 irb(main):004:0> 256.to_s(2) => "100000000"

【Ruby】1文字(1Byte)の4bit分の数値を取得する

> 80.to_s(2) => "1010000" > 80[0, 4] => 0 > 80[4, 4] => 5 参考 プロと読み解くRuby 2.7 NEWS - クックパッド開発者ブログ https://techlife.cookpad.com/entry/2019/12/25/121834

【Ruby】文字列の範囲指定メモ

irb(main):027:0> str = "0123456789" => "0123456789" irb(main):028:0> str.slice(0, 5) => "01234" irb(main):029:0> str.slice(5, 5) => "56789"

【Ruby】数値と文字列の変換メモ

文字列→数値 基本形 > "10".to_i => 10 整数とみなせない文字があればそこまでを変換対象とします。変換対象が空文字列であれば 0 を返します。 > "a".to_i => 0 基数の指定が可能(レシーバの文字列を基数の数値と解釈して返却する) > "10".to_i(2) => 2 >…

【Linux】ネットワークインターフェースの番号(インデックス)を確認するコマンド

コマンド自体は極めてオーソドックス。 ip link show で表示される番号が該当してるっぽい。 % ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 </loopback,up,lower_up>…

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 メソッド…