キャッシュ

キャッシュとは

よく利用するデータを蓄積させて、データ処理を速くする仕組み。

詳しく言うと、
一度開いたwebページのデータを、通信経路のどこかに保存しておいて、次に同じページを開くときに速く表示してくれる。

一度アクセスしたページはURLで覚えられている。

Apache・nginx

Apache

webサーバーのソフト。
コンピュータにApacheを入れると、そのコンピュータがwebサーバーをしての仕事ができるようになる。

webサーバー

webサーバーとは、ブラウザからページを調べた時に、そのページの情報を返してくれるサーバーのことを指す。
ただ、webサーバーは、本来はただのコンピュータのため、私たちがいつも使っているパソコンと変わらない。
普通のコンピュータにApacheやnginxなどのwebサーバーソフトを入れることによって、webサーバとなる。



nginx

エンジンエックス。
webサーバの一つ。
Apacheは大量の処理ができないため、大量のアクセスを処理できるようなwebサーバが欲しくて作られた。
シンプルな作りになっているため、自分で処理せずに他に割り振ることで、メモリ消費が比較的少ない。

GZIP

GZIPとは

データ圧縮方法の一つ。

詳しく言うと、
ブラウザに表示するためのデータ転送の時に、その内容を圧縮することで、転送量を減らして表示速度を高める手法。

簡単に言うと、
webページのサーバとユーザーのパソコン間で通信しているデータサイズを少なくすることで、速度を速くしている。




圧縮方法

テキストファイル内の似た文字列を見つけて、一時的にそれを置換することで、全体のファイルサイズを縮小している。
HTML・CSSは、タグなどの似た文字列を繰り返すため、GZIP圧縮に適している。

レンダリング

レンダリングとは

文字のデータを読み取って、実際の画面に映る画像や映像などに変換すること。
文字データが読み取られ、レンダリングされた結果、ブラウザ上に画像がでる。

レンダリング処理の回数を減らす = 最適化につながる。らしい。




JavaScriptを下にすることでなぜ速くなるのか

jsファイルは読み込んだ後、スクリプトを解析している間は他のファイルの読み込みをブロックする。
そのため、jsをページの上に指定すると、このブロックでロード時間が長くなる。

→画面の描画に影響の出ないjsはbodyの中の下に書くべし。

ローカル環境構築でのつまづき

コンテナ起動でつまづく

docker-compose -f ./local-docker-compose.yml up -dで起動させようとすると、

ERROR: for proxy  Cannot start service proxy: oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:359: container init caused \"rootfs_linux.go:54: mounting \\\"/Users/proxy/nginx.conf\\\" to rootfs \\\"/mnt/sda1/var/lib/docker/aufs/mnt/\\\" at \\\"/mnt/sda1/var/lib/docker/aufs/mnt//etc/nginx/nginx.conf\\\" caused \\\"not a directory\\\"\""
: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

proxyにエラーがでて起動しない。



解決

一旦マシーンを止める。

docker-machine stop default


もう一回マシーンを起動。

docker-machine start default


再チャレ。

docker-compose -f ./local-docker-compose.yml up -d

動いた。

もともと違うコンテナを起動してたから?
でもそのあとにそのコンテナを起動させたら動いた。んん?




リモートVMに接続できない

docker logs -f zo-internからのデバッグをしようとすると、Failed to connect to remote VM.
あぁ。
あれやこれや試したもののわからず、次の日にもう一回やったらなんかエラー出なくなったから接続できたっぽい。
あるある。




アクセスしようとするとエラー

500エラー。
Tableが存在しないとのこと。
もう一回ダンプを流し込んだらできた。

オフセットとは

オフセットとは

基準点からの距離で位置を表現したもの。
基準点からどのくらいズレているかを表したもの。



ページングのオフセット

offset = 1ページあたりの件数 ×(現在のページ - 1)

Java 例外について

2種類のエラー

  1. 想定内で、処理の実行開始前にチェックするエラー。
    主に入力エラー。

  2. 異常な状態として処理の続行が不可能なエラー。

※1の場合は、例外を使わない。



try・catch・finally

その場で例外処理を行う。

tryは正常な時の処理
catchは異常な時の処理
finallyは最後に必ず行う処理


try {

    処理

} catch {

    処理

} finally {

    処理

}



throws

呼び出したメソッドに例外処理を任せる。


Exception
コンパイル時に例外処理の実装が強制される。

RuntimeException
コンパイル時に例外処理の実装が強制されない。
RuntimeExceptionを継承したクラスはthrowsを記述する必要はない。

Exception・RuntimeExceptionを継承することでオリジナルの例外を作ることができる。