ブックマーク / scrapbox.io/kawasima (4)

  • Totality - kawasima

    数学の用語では全域性と呼ばれる code:f f = x => y 関数fの定義域xの取りうる値すべてに対応する値域yが存在することである。 全域性を持たない関数の例として代表的には割り算がよく取り上げられる。 code:divide.ts type Divide = (a:number, b: number) => number const divide: Divide = (a,b) => b !== 0 ? a/b : NaN 割る数に0は取りえないので、このdivide関数は全域性が無いことを意味する。 全域性を持たせるためには、3つのアプローチがあるとされる。 1. 定義域にデフォルト値を返す。 2. 戻り値にエラーケースを含める。 3. 引数(定義域)を全域性担保できる範囲に限定する。 1はこれが出来る場合と出来ない場合がある。上記例のように割り算の場合、どんな数字をデフォルト

    Totality - kawasima
  • データベース設計におけるNULL - kawasima

    NULL絶対ダメ論や現実的には無理だから上手く付き合っていくしかないんだよ論など見られるが、せっかくCodd博士が上図の分類を提示しておられるので、これを元にもっと詳細化して考えてみよう。

    データベース設計におけるNULL - kawasima
  • Microservices分割大全 - kawasima

    Microserviceの分割の仕方について語られているものを収集します。 microservices.ioのサイトに載っている分割パターンは4つ。ただし「自己完結型サービス」と「チームごとのサービス」は、直交していないので大きくは「ビジネスケイパビリティでの分割」と「サブドメインでの分割」の2つ。 ビジネスケイパビリティでの分割 https://microservices.io/patterns/decomposition/decompose-by-business-capability.html 現在の業務機能にしたがってサービスを分割する。 したがって、コンウェイの法則にしたがった分割とされる。 サブドメインでの分割 https://microservices.io/patterns/decomposition/decompose-by-subdomain.html DDDのサブドメ

    Microservices分割大全 - kawasima
  • アーキテクチャ設計における垂直思考と水平思考 - kawasima

    このADRをレビューするにあたっては、コンテキストのセクションもよくよく議論すべきで、意思決定が妥当かだけ見ても、「実はコンテキストに誤りやあやふやなところがありA案よりもB案の方が良かった…」みたいなことが発生するし、十分にコンテキストが理解されていない第3者や有識者をまじえてのレビューでは、レビューアに意思決定の構造を理解してもらいにくい、ということもある。

    アーキテクチャ設計における垂直思考と水平思考 - kawasima
    for-my-internet-demo
    for-my-internet-demo 2020/08/11
    分割の話かと思った
  • 1