電車が遅れてた日
今日したこと
カーネル勉強会
TCP
- ソケットを作る
- ソケットを指定してwriteシステムコール
- ソケットバッファに書き込む
- IPからルーティングテーブル=>ARPテーブルでMACアドレスを導出する
- IPパケットを作り出して送りつける
- ACKのウィンドウサイズまで送る
- 送りつけられた方はACKを返す
- ACKが返ってきたらソケットバッファから送ったやつを消す
- ACKが返ってこないなら再送
こんな流れをボスから聞いてた。 にゃるほどねーって。
プロセス切り替え
手順とか大まかな流れとか教わってた。
ほうほうって。
構造自体はシンプルな物なんですね。
prevとnextのタスク構造体を渡してコンテキストスイッチするところとかほーって。
どうやってnextを決めるのか(スケジューリング)の実装とかちょっと気になってきたので明日コードを読んでみるかという気持ちになった。
Ruby
今日のRuby抜け落ち知識, またまたメモがてら
- 省略できないキーワード引数( Ruby2.1以降)
def hoge(op1:, op2:) end hoge() #=> op1, op2が指定されていないのでArgumentError
- SafeNavigationOperator (Nilなオブジェクトでもメソッドを呼びたい)
obj&.method() # => objがnilなら nil , nilでなければmethodの戻り値が得られる
- 割り込みハンドラの定義
tap :INT do # シグナル受け取ったときの処理 end
- メソッドの
::
での呼び出し(あまり意識したことなかったけどそうだよなぁって)
Time::now
Enumerable モジュール , eachメソッドの実装があれば map等様々なメソッドを取り込める
autoload 必要になったところでrequireをしてくれる
autoload :MySweets, './lib/my_sweets' MySweets # このタイミングでrequire
- Numeric Stepメソッド
1.2.step 2.0, 0.2 do |num| puts num end # 1.2 => 1.4 => 1.6 => 1.8 => 2.0 と順に出力
Numeric upto, downto メソッド 1.upto 5 do |num| # 1から5まで end
Enumeratorオブジェクト
Numeric digitsメソッド
12345.digits(10) # => [5,4,3,2,1] 基数を指定して桁毎に分割
田田とかいうの
八王子の次郎系ラーメン? なんとなく研究室で飲んで、ぼーっと八王子歩いてたら入ってしまった。
全マシ。 ニンニクがちょっとキツすぎましたかね。