テック

深さ優先探索の探索順配列モデルの生成

お勉強がてら書いてみた。 こういう数値リストを [5, 20, 22, 35, 64, 71] 組み合わせごとの探索順のツリーにする。 言語はvar_dumpが綺麗なPHPで。

DDD 各役割のメモ書き

DDDの各コンポーネントの役割のメモ書き。 Entity アプリケーション上で登録や変更が行われるような情報を指す。アプリケーションから一意に識別できる必要がある。RDBの行データのようなイメージ。 exp. User, Order, Product ValueObject Entityを構成する…

ValueObjectについてのメモ書き

ValueObjectとは? クラスプロパティにプリミティブ型ではなくオブジェクトとして定義する。 class User{ int volume; // プリミティブ型 Volume volume; // ValueObject } メリット整理 型安全、null安全、値安全を構築しやすい コンストラクタでフィルター…

浮動少数と丸め誤差

floatやdouble型をloopカウンタや終了条件にすると意図したループ回数にはならない時もあるので注意。 丸め誤差 限られたビット数で浮動小数点数を表現した時、実際の値と近似した値で誤差が出る。 float f1, f2; f1 = 0.1f; f2 = 0.100000001f; printf( " %…

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

Goroutines Goroutinesは軽量なスレッド。goと記述するだけで別スレッドで処理が実装される。 go f(x, y, z) Channels channelを使用してgoroutine間でデータの送受信を行える。 channelの生成 ch := make(chan int) channelの送受信 ch <- v // v をチャネ…

Swift ドラッグ可能なView間を線でつなげる

最近、趣味でNeo4jを触ってて、Swift実装でソーシャルグラフのようなView表現を試してみた。 実装のイメージ ※ 何故かXcodeの動画キャプチャがエラー吐きまくりでカクカクになってしまった... まあ、こんなもんかな。strokeした線は消して再描画するみたい p…

A Tour of Go - Method and interfaces 自分用リファレンスメモ

Methods Goには、クラス( class )のしくみはないが、型にメソッド( method )を定義できる。 struct宣言したTyoeにメソッドを追加することでクラス定義と似た振る舞いを記述できる。 type Vertex struct { X, Y float64 } // Vertex型にメソッドを定義 func (…

B木の構造の整理

ノードページの構造 ページバッファに整列済みのデータを配置 { 40 } { 40, 63 } { 24, 40, 63 } { 24, 40, 58, 63 } ページの分割 バッファが溢れた時、ページの分割を行う。 { 24, (+ 31), 40, 58, 63 } ┏ {40} ┓ { 24, 31} {58, 63 } さらにデータを追加 …

2分木のノード削除

binary treeのノード削除 削除対象のノードの子が左右両方にある場合、削除後、親要素にどちらの要素をぶら下げれば良いか? 10 5 15 2 6 17 1 3 というツリーがあった場合、ノード5を削除した場合、どういうツリーになるか?という話し。 答え:子左要素の最…

AVL木の平衡原理

AVL木の平衡原理 AVL木とは どのノードから見ても左右の子ノードの深さの差が1以内のツリー構造を指す。以下はAVL木を保つ為の考え方。 1重回転 例えばこんなbinary treeがあった場合、ノード10から子孫ノードを辿った場合、子孫の高さが2階層以上の差がある…

僕は再帰が書けない

最近、かなーり古いアルゴリズム本でアルゴリズムの復習をしたりしている。 やっぱ再帰は苦手だな〜。という愚痴。 以下は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へ値を代入する…

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

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

組織が設計に与える影響とは?:マイクロサービスアーキテクチャ(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を行うという作業は…

マイクロサービスの監視の考え方と設計論:マイクロサービスアーキテクチャ(5)

第8章 監視 複数ホスト、サービスでどう監視設計を行うか。という話し。 多分、「監視」を行っている人達は用いているツールは違うけれども似たようなことはすでにやっているんじゃないかな。 ポイントは サービスが多くなると収集するメトリクス、ログの頻…

理解し易いナビゲーション:インターフェースデザインのお約束(5)

インターフェースデザインのお約束(5) ナビゲーションとユーザージャーニー 本書ではコンテンツの一覧表示時のユーザへのアプローチに対してのナビゲーションの例を紹介。モバイルUIに重きを置いて解説しているように感じた。 そしてナビゲーション、ユーザ…

A Tour of Go - Packages, variables, and functions の自分用リファレンスメモ

A Tour of Go の自分用リファレンスメモ A Tour of Go Exported names 外部のパッケージから参照できるオブジェクトは先頭が大文字から始まる。 例) PrintlnとPi fmt.Println(math.Pi) Functions 関数の定義 func add(x int, y int) int { return x + y } ad…

PHPで実装したソケットサーバにUnity C#から接続する

ちょっとした同期オンラインを試してみたかったので書いてみました。 PHPでソケットサーバーを立てる Unityからsocket通信するプログラム試したくて、socket-server立てるのに久しぶりにPHP書いてる。PHP便利!— Fumiya Ichikawa (@LET__IT__RIDE) December …

複数マイクロサービスからなるテストの複雑性に立ち向かおう:マイクロサービスアーキテクチャ(4)

第7章 テスト 複数のマイクロサービスから成り立つサービステスト、統合テストにどう立ち向かうか。という話し。 古典的な単体自動テストから話しは始まるんだけど、単体テスト - サービステスト(サービス間の結合) - エンドツーエンド(UI上から稼働テスト)…

UnityではじめるC# 基礎編 写経メモ

写経の感想 UnityではじめるC# 基礎編 写経したので忘れそうな操作をメモしておく。 「Unityの教科書」は写経済みで、Animationのadd keyframeの操作以外はサクサク進めることが出来て、写経するのに2日はかからなかった。 Unityの教科書はシンプルなミニゲ…

Unity ios-src/のサイズが大きくてGitHubにPushできない件

Push時のエラー UnityプロジェクトをGitHubにプッシュしようとしたら、libiPhone-lib.aがデカすぎてプッシュできない... initし直すしかないのかなあ。— Fumiya Ichikawa (@LET__IT__RIDE) January 5, 2020 remote: warning: File ios-src/Libraries/libil2c…

readlineのバージョンが上がってたでござるの巻き

ちょっと必要があってpsqlを使おうとしたら... $ heroku pg:psql --> Connecting to postgresql-round-81223 dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib Referenced from: /usr/local/bin/psql Reason: image not foun な…

Swift WKWebView、JSを利用したネイティブアプリ内で完結させるスクレイピング

サーバを持ちたくなくてネイティブアプリ側で外部サイトのHTMLをスクレイピング完結したい場合。 WKWebViewでページ取得するのが手取り早い。要はWKWebViewが読み込んだHTMLをスクレイピングしてしまおうという作戦。 ちなみに実験的に検証しただけなのでsto…

マイクロサービスのデプロイをどう迅速にするかの解説:マイクロサービスアーキテクチャ感想(3)

第6章 デプロイ デプロイについての章。 CIについて デプロイ先のアーキテクチャ environmentについて が解説されている。 テストがあってこそのCI ビルドが期待通りに振る舞っているかは、テストがあってこそ。テストがないCIはCIではないと本書では警鐘を…

ユーザが操作しやすいフォームとは?:インタフェースデザインのお約束(4)

第5章 フォーム フォームについて。ユーザが使いやすいフォームとはどういうものか。 少ない操作で完了。やり直しを少なくを考える。 入力フィールドについて 例えマーケティング等で有用なデータであっても、そのファンクション内で必要のない情報は入力さ…

DB分割というアンタッチャブルに踏み込む:マイクロサービスアーキテクチャ(2)

第5章 モノリスの分割 第4章 統合では分割されている各マイクロサービス同士をどう統合していくかに焦点を当てていたが、今回は「どうマイクロサービスに分けていくか」の話し。 データベースの分割 データベースの分割。いきなり核心をついてきた。 多分、…

読了:iOSアプリ開発 自動テストの教科書

iOSアプリ開発 自動テストの教科書 そういえば読み終えていた。メモと感想をば。 僕自身のテストコードについての経験値はRailsのminitestで単体テストや統合テストを書いてるよ。みたいな感じ。GithubにpushするとCirecleCIでテストを回すというところまで…

インタフェースデザインのお約束(3)

4章 UI部品 UI部品、主にコントロール要素についての注意点などの紹介。 標準コントロールの利用を心がけよう デバイス、ブラウザ標準のコントロールを利用することが、結局はユーザは一番わかりやすいし、操作しやすい。 我流のコントロール、例えば独自の…