N+1問題とは
2018年5月12日概要N+1問題の説明と対応についてまとめる。 N+1問題とは 全てのレコードの取得に1個+レコード文だけのN個のSQLを発行してしまう問題 N+1というより1+Nと解釈したほうがわかりやすい 例 一覧表示用のデータを取得するケース 一覧用の全データを取得するSELECTを1回発行(Nレコード返ってくる) Nレコードの関連データ取得のためにSELECTをN回発行 対応 join SELECT...
概要OS周りの勉強をしている時に調べたこと。 swapメモリが足りない時にメモリの中身をハードディスクに移す機能のこと ページキャッシュとは CPUはストレージからデータを直接読み込みができない データは一旦メモリに読み込む必要がある メモリに読み込まれたデータはページキャッシュとして再利用できる ファイル単位でアクセスする時に使用されるキャッシュ バッファキャッシュ ブロックデバイスを直接アク...
概要ダック・タイピングについてまとめる ダック・タイピングとは 動的型付けオブジェクト指向プログラミング言語において、オブジェクトができることはオブジェクトそのものが決定する インターフェースの全てのメソッドを持つオブジェクトは、インターフェースを実装していなくともオブジェクトはインターフェースを実装しているとみなせる、ということ If it walks like a duck and quack...
概要ポステルの法則 Jon Postel 送信するものに関しては厳密に、受信するものに関しては寛容に ポステルがTCPを規定したRFC793にて記載された1節が一般化されたもの インターネットの通信における原則 パーキンソンの法則 Cyril Northcote Parkinson 第1法則 仕事の量は、完成のために与えられた時間をすべて満たすまで膨張する 第2法則 支出の額は、収入の額に...
概要ポリモーフィズムについてまとめる ポリモーフィズムとは Poly(複数の)Morphism(形状) 複数の異なる型に対し、共有のインターフェースを提供すること 引数を受け取ったインスタンスがクラスによって違う振る舞いをすること ポリモーフィズムの種類 アドホック多相 関数が異なる型の引数に対してそれぞれ異なる実装を持つ 多重定義、関数のオーバーロードによって実現 パラメータ多相 型指定の...
[はじめて学ぶソフトウェアのテスト技法](https://amzn.to/3UM7CJ9を読んだ。 テストの方法について書かれている本で、ソフトウェアテストの基本パターンを学ぶことができる。 テストコードを書いたことなければ最初に読みたい一冊。 ...
概要Vimmerになるために覚えていったコマンドを書き連ねていく。 動機 GUIエディタのショートカットには慣れたもののテキスト編集の速度が頭打ちになった気がする 脱GUIエディタ依存(GUIエディタに依存したショートカットキーを覚えることと枯れたエディタであるVIMのショートカットキーを覚えることのどちらがコスパが良いか。viはあらゆるOSの標準エディタとして搭載されている) ショートカットや矢...
概要アルゴリズムの演算性能をざっくりと計算するO記法と計算量の求め方についての前提知識をまとめる。 計算量(オーダー)とは アルゴリズムの演算性能をデータ量の増加に対し、実行時間がどれくらい増加するかの割合で表した指標。 時間計算量 処理時間 空間計算量 メモリ使用量 Big O/Big θ/Big Ωそれぞれ計算時間を記述するものだが、学術的な意味の違いについてまとめる。 Big...
前提 セッション HTTPは状態を持たないプロトコル リクエストが同一のクライアントからの通信かどうか判断しない 接続確立から切断までの一連の通信 ステートフル サーバーがクライアントのセッション状態を保持している システムが状態やデータを保持している プロトコルの例 FTP, TCP, BGP, OSPF, EIGRP, SMTP, SSH ステートレス サーバーがクライアントの...