今週勉強したことまとめ(2017/11/11 ~ 2017/11/26)

勉強したことについてメモしたものを一週間ごとにまとめてみることにした。 ブログのネタになりそうなものがあれば、ここから記事にまとめるところまでいけると良い。 初回は2週間分になってしまっている。まとめ方が難しい。

Java

  • Arrays.asListは固定長のリストを生成するのでaddやremoveできない
    • new ArrayList<>(Arrays.asList())を使う
  • lombok@Dataをつけるときは@Builderの後につけないとGetterやSetterが正しく作成されずエラーになる
  • synchronizedブロック
    • 他のスレッドから割り込まれないようにブロックする
  • KeyStore
  • keytool
    • jdkが提供するキーストアを操作するツール
    • キーストアから秘密鍵を抽出する機能は持たない

Spring Framework

  • ErrorControllerインタフェースは@Controllerがエラーのレンダリングに使用されていることを示すためのマーカーインタフェース
    • 主にセキュアにする必要のないエラーパスを知るために使用される
  • SpringBootはデフォルトで全てのエラーをハンドルする/errorマッピングする
    • /errorをハンドリングするコントローラを実装すればそこでエラーレスポンスをいじれる
  • server.error.whitelabel.enabled=falseを設定することでデフォルトのエラーページを非表示にできる
  • @ResponseStatusは返すべきステータスコードと理由とともにメソッドや例外をマークする
  • SpringBoot Actuator
    • アプリのモニタリングや管理機能を提供するSpringBootのサブプロジェクト
  • NamedJdbcTemplate
    • NamedParameterJdbcOperationsをimplementしている
    • JDBCの操作の基本セットをもつテンプレートクラス
    • '?'プレースホルダーそのものではなく名前付きパラメータを使用することができる
    • 実行時に名前付きパラメータの解決を行い、あとはJdbcTemplateにデリゲートしている

CQRS

  • コマンドクエリ責務分離
  • 質問することで答えを変えてはいけない
  • 全ての基本操作がコマンドかクエリになる
    • コマンドはシステムの状態を変更する
    • クエリは状態を変更せず報告する

Editor

mysql

Redis

Test

  • unit test
    • テストの定義「ある条件下においてソフトウェアの振る舞いを記録し、その記録が期待される結果となることを検証するプロセス」
    • テストケース -> ひとつのテスト項目のこと

英語

  • via: ~することで
  • with: 使用して

DNS

AWS

ECS

ECR(EC2 Container Registory)

  • AWSが提供するDockerレジストリサービス
  • レジストリがイメージリポジトリとイメージを管理する
  • Error response from daemon: Get https://.dkr.ecr.ap-northeast-1.amazonaws.com/v2/: proxyconnect tcp: dial tcp : getsockopt: connection refusedが出たらDocker再起動でなおった

AWS Shield Advanced

Docker

  • docker buildコマンドはDockerfileとコンテクストによってイメージを構築する

  • コンテクスト

    • dockerコマンドを実行するディレクトリ、ディレクトリに含まれる内容物
    • ビルドプロセスの初めにコンテクストがDockerデーモンに送信される
    • PATH(ローカルフィル上のディレクトリ)やURL(Gitリポジトリの場所)を指定できる
    • Dockerfile上でCOPYなどを行う場合はコンテクスト外のリソースを指定することはできない
    • dcoker build コンテキストPATH -f DockerファイルでDockerfileが保存されている場所とは別の場所をコンテキストに指定できる
  • tag

    • 同じタグをつけると新しいimageにつけ変わる
  • ネットワーク機能

    • Docker ネットワーク機能の概要
    • ユーザが自分自身でネットワークを定義し、コンテナを接続できる
    • docker network lsでネットワークのリストを表示
    • デフォルトで以下の三つのネットワークが生成される
      • brigdge
      • null
      • host
    • docker run --network=<NETWORK>でコンテナがどのネットワークに接続するかを指定できる
      • このオプションを指定しない限りデフォルトのbridgeに接続される
  • docker-compose

    • depends_onとlinkの違い
      • v2では違いはない、v1ではdepends_onはコンテナの作成順序と依存関係を解決するのに対して linkはそれに加えてエイリアス名を使用してコンテナにアクセスできるようになる

Circle CI

bash

fish shell

  • && はfishでは; andと書く

Code coverage

Mac

  • ipコマンドをインストールする方法

    • brew install iproute2mac
  • KarabinerElementsで外部キーボード接続時に内部キーボード無効化

    • Devices > Disable the buildin....

iPhone

  • iPhone X
    • アニ文字
      • 自分の顔の表情を反映させたアニメーションキャラクターアイコン
      • メッセージAppで作成・共有できる
      • サマーウォーズ的な世界観が実現するかも?

Network

  • ブリッジ

    • レイヤー2で異なるネットワーク間を通信できるようにする装置
  • NIC(ネットワークインタフェースカード)

    • eth0, eth1, eth2...という順番で名前がつく
    • lo0
      • ネットワークのテストに使用できるように用意された仮想インタフェース
      • NICがなくてもこのloは表示される
      • 127.0.0.1IPアドレスとして自動で割り当てられる
    • gif0(generic tunnel interface)
      • IPv6/IPv4トンネリングを行うときに使うインタフェース
    • stf0(6to4 tunnel interface)
      • IPv6パケットをIPv4ネットワークにルーティングするためのインタフェース
      • gifは両方できる
    • p2p0
    • awdl0
      • Apple Wireless Direct Link
      • Apple機器と無線通信を行うためのインタフェース
    • utun0
  • MTU

    • ネットワークにおいて1回の転送(1フレーム)で送信できるデータの最大値を示す伝送単位

高速化

  • dev.to
    • 海外版Qiitaのようなサイト
    • とても早い
    • 理由
      • Fastlyでキャッシュ
      • Cloudinaryで画像をwebpに変換し配信
      • styleのレンダリングをしない

その他

  • C10K問題
    • 「C10K問題」(クライアント1万台問題)とは、ハードウェアの性能上は問題がなくても、あまりにもクライアントの数が多くなるとサーバがパンクする問題のこと
    • TheC10kProblem