群像劇にハマる、24の梅雨。

「本日は、お日柄も良く」に続き、原田マハさんの「独立記念日」を読み終わりました。

離婚、大切な人との別れ、失業など、ある町や地域に住む女性を取り巻く群像劇を描いています。すごい感動しました。寝る前に読み進めていたのですが、冗談抜きで毎晩泣いていました。

特に、みらいバーバーを営むお婆さんと漫画家女性の話は、心が温まりました。

群像劇、良いですね( ; ; )

インターネットを取り巻くパケット君たちの群像劇とか作ってくれればWebに対する理解が深まるのにと思いながらも、今週知ったWebの知識をまとめていきたいと思います。

 

 

キーバリュー型DBとリレーショナル型DB

連想配列Mapと同様に「Key(キー)」と「Value)」のペアからなる分散型DBをキーバリュー型DBという。NoSQLとも呼ばれる。

レコード毎にJSON形式で格納されるため、後述するリレーショナルDBのように、格納する前に検索しやすい形に整形する必要がそこまでない。

一方でリレーショナル型DBは各行(row)の各列(column)にデータが収録されている表(table)のようなデータベース。アトミック性、一貫性、分離性、および耐久性 (ACID) の特性がある。

もう1つの、DBのかたち、分散Key-Valueストアとは

【図解】NoSQLとは?注目される背景や種類をわかりやすく解説 - カゴヤのサーバー研究室

allow_any_instance_of非推奨(RSpec)

下記のように、RSpec::AnyInstance の警告が出てしまう。

Pefer instance doubles over stubbing any instance of a class

クラスのインスタンスをstubするのではなく、instance_doubleを使うこと

なぜ非推奨なのか。

一見すると下記のような2つの解釈ができてしまい混乱を招くWidgetインスタンスがnameメソッドを2回受け取る(正解) Widgetインスタンスは合計2回、nameメソッドを受けとる(間違い)

allow_any_instance_of(Widget).to receive(:name).twice

何をテストしているのかが不明瞭になってしまうからallow_any_instance_ofは非推奨。

https://zenn.dev/murakamiiii/articles/eddd69f3dcde18

around hook(RSpec)

テストの実行前、実行後に特定の処理を行いたい時に使う。

example(なんでもいい)という引数にrunをつけている部分で、テストが実行される。

rubyでいう、yieldに考え方は近いかもしれない。

describe "around filter" do
  around(:each) do |example|
    puts "around each before"
    example.run
    puts "around each after"
  end

  it "gets run in order" do
    puts "in the example"
  end
end

"rspec ./ensure_around_blocks_are_run.rb"を実行すると下記のようなアウトプットを出す


around each before
in the example
around each after

around hooks

OSI7階層参照モデル

データ通信を実現するための、ネットワーク構造の基本的な設計方針

アプリケーション層から物理層まで7層に分けられている。

コンピュータ間でデータをやり取りするときの順番

7層が一番PC内部のハードウェアに近く、1層にいくにつれてネットワークに近づいていく。

馴染みのあるTCP/IPは4〜3層の、実際にネットワーク通信を行う層に位置している。

クリーンアーキテクチャの4層レイヤードアーキテクチャとは全く違う。

OSI参照モデルとは?TCP/IPとの違いを図解で解説 | ITコラム|アイティーエム株式会社

参考文献

もう1つの、DBのかたち、分散Key-Valueストアとは

https://www.kagoya.jp/howto/it-glossary/server/nosql/

OSI参照モデルとは?TCP/IPとの違いを図解で解説 | ITコラム|アイティーエム株式会社

around hooks

allow_any_instance_ofを使うとRubocopに怒られるワケ

NoSQL とは?(NoSQL データベースの解説と SQL との比較)| AWS