記事

SPAを構築したときにハマったこと

アプリケーション

概要以前、LaravelにSPAを組み込む時に考えたディレクトリ構成とnginxのconfファイルというタイトルの記事を書いたが、そこで記載したnginxのconfが不十分だったため、改めて問題点を整理、解決した。 前提 History API nginx SPAを構築したときにハマったことnginxの設定リロードしても常にindex.htmlを返すように設定する必要がある。こんな感じでtry...

Nginx SPA

DIとサービスロケーター

アプリケーション

概要DIとService Locatorの違いについてまとめる DIとは デザインパターンの一種 依存性注入 オブジェクト間の依存性を分離 オブジェクトの実行時に必要なオブジェクトが注入されるようにする テストしやすくなる DIパターンの実装DIパターン(コンストラクタインジェクション)を実装してみる。なお、DIパターンには、コンストラクタインジェクション、セッターインジェクション、メソッド...

DI サービスロケーター デザインパターン

シンボリックリンクとハードリンクの違い

OS

概要 シンボリックリンクとハードリンクの違いについてまとめる 前提 inode データ構造 ファイルシステム上の属性情報(作成者、グループ、作成日時など)をデータとして持つ ls -i1 /またはstat /でinode番号を確認できる シンボリックリンクとは 元のファイルまたはディレクトリのパスを参照するディレクトリエントリを追加 実験 touch a.md ln -s a.md a_s...

シンボリックリンク ハードリンク

開発環境を見直してvimライクにした

ツール

概要 開発の効率化を図り、vimを取り入れ、開発環境諸々を刷新したのでまとめておく。 各ツールの細かい設定や導入しているプラグイン詳細などは省く。  エディタ Atom 開発で使うメインエディタ vimのキーバインドを使えるようにプラグインを導入 vim-mode-plus-ex-mode vim-mode-plus 画面分割やペイン移動などもvimっぽくできるようにキーバインドを少しいじった...

tmux vim Atom iTerm

tmuxコトハジメ

ツール

概要端末多重化ソフトウェアであるtmuxのコトハジメ キーバインドtmux起動tmux or tmux new-session セッション中での新規セッション作成prefix+:new セッション一覧tmux ls セッションのデタッチ(tmuxから抜ける)prefix+d セッションのアタッチtmux attach(a) 任意のセッションにアタッチtmux attach(a) -t 0(name...

tmux

UNIXという考え方

OS

UNIXという考え方を読んだ。 UNIXについての思想と哲学を150ページという短いページにまとめてある本。 この本ではコーディングに通じる考え方も学ぶことができる。 何かの設計を考えるときに普遍的に活かせるであろう思想が書いてあるので、設計に立ち向かうときに振り返りたい内容である。 ...

UNIX

N+1問題とは

データベース

概要N+1問題の説明と対応についてまとめる。 N+1問題とは 全てのレコードの取得に1個+レコード文だけのN個のSQLを発行してしまう問題 N+1というより1+Nと解釈したほうがわかりやすい 例 一覧表示用のデータを取得するケース 一覧用の全データを取得するSELECTを1回発行(Nレコード返ってくる) Nレコードの関連データ取得のためにSELECTをN回発行 対応 join SELECT...

N+1

OSメモ

OS

概要 OS周りの勉強をしている時に調べたこと。 swap メモリが足りない時にメモリの中身をハードディスクに移す機能のこと ページキャッシュとは CPUはストレージからデータを直接読み込みができない データは一旦メモリに読み込む必要がある メモリに読み込まれたデータはページキャッシュとして再利用できる ファイル単位でアクセスする時に使用されるキャッシュ バッファキャッシュ ブロックデバイスを...

os

ダック・タイピングとは

アプリケーション

概要ダック・タイピングについてまとめる ダック・タイピングとは 動的型付けオブジェクト指向プログラミング言語において、オブジェクトができることはオブジェクトそのものが決定する インターフェースの全てのメソッドを持つオブジェクトは、インターフェースを実装していなくともオブジェクトはインターフェースを実装しているとみなせる、ということ If it walks like a duck and quack...

ダック・タイピング

ソフトウェア開発の法則

アプリケーション

概要ポステルの法則 Jon Postel 送信するものに関しては厳密に、受信するものに関しては寛容に ポステルがTCPを規定したRFC793にて記載された1節が一般化されたもの インターネットの通信における原則 パーキンソンの法則 Cyril Northcote Parkinson 第1法則  仕事の量は、完成のために与えられた時間をすべて満たすまで膨張する 第2法則 支出の額は、収入の額に...

ソフトウェア開発