ぬまのどろ

namazuのゆるい日記。 ゆるり更新。

電車が遅れてた日

今日したこと

  • 大学へGO 電車遅れで発狂。
  • 研究室で虚無になってた
  • カーネル勉強会でモチベUp
  • 次郎系ラーメンに
  • Ruby

カーネル勉強会

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]  基数を指定して桁毎に分割

田田とかいうの

八王子の次郎系ラーメン? なんとなく研究室で飲んで、ぼーっと八王子歩いてたら入ってしまった。

f:id:kituneko-510:20180306221207j:plain 

全マシ。 ニンニクがちょっとキツすぎましたかね。