僕は再帰が書けない

最近、かなーり古いアルゴリズム本でアルゴリズムの復習をしたりしている。 やっぱ再帰は苦手だな〜。という愚痴。 以下はC言語で、要素数4つのint配列、{0, 0, 0, 0}の要素の合計値が1以上4以下になる場合の配列の組み合わせを示したもの。 中々理解出来な…

A Tour of Go - More types : 自分用リファレンスメモ

Pointers ポインタ型の宣言 //宣言 var po *int &オペレータでポインタを引き出せる。 *オペレータでポインタの指す先の変数を示す。 i := 42 //宣言 & 初期化 p := &i fmt.Println(p) // 0x40e020 fmt.Println(*p) //42 //ポインタpを通してiへ値を代入する…

スタートアップの成長に社員数50人の壁が存在するかもしれないと思った話し

僕の前職はスタートアップのエンジニアだった。 僕が入社した時は創業に近い時期で、創業メンバーと数人のエンジニアがいる状態の会社だった。 おかげさまでスタートアップの熱意を身近で感じられ、ある2つの事業を別々の大きな会社にバイアウトした経験もで…

大規模な運用に備えて:マイクロアーキテクチャ(終)

下流サービスの機能不全 各サービスは接続する下流サービスが止まった場合、または機能低下を起こした場合、どういった振る舞いをするかを常に考えておく。 タイムアウトを設けて、一定時間以上応答がない場合は例外処理をするのが一般的だけど、タイムアウ…

組織が設計に与える影響とは?:マイクロサービスアーキテクチャ(7)

第10章 コンウェイの法則とシステム設計 コンウェイの法則とは "システムを設計する組織は、その構造をそっくりまねた構造の設計を生み出してしまう" この章では、疎のつながりのチームで開発するとモジュール性の高いコードが生産される傾向があると説明し…

A Tour of Go - Flow control statements 自分用リファレンスメモ

For sum := 0 for i := 0; i < 10; i++ { sum += i } while的な記述 sum := 1 for sum < 1000 { sum += sum } If 括弧 ( ) は不要。 if x < 0 { fmt.Println(x) }else{ fmt.Println(x) } If with a short statement ifの評価前にステートメントを記述できる…

セキュリティについてのセオリー:マイクロサービスアーキテクチャ(6)

第9章 セキュリティ 基本的にはマイクロサービスに関係なく、複数のサーバ運用しているサービスのセキュリティに対して当てはまることが解説されている。 認証・認可の課題 前提として全員がシステムごとに異なるIDとパスワードでsign inを行うという作業は…