13日目

サーバー 4h AtCoder 2h

GW中に1つサイトを完成させたいと思っている。アイデア・構想自体は既にあるので後はこれまでに習った内容を活かして実装するだけ!
明確な目標があるとモチベも上がるものですね。今日はjQueryの素晴らしさに感動してしまった。

AtCoderはABC122を解いた。ABCまで自力で解けた。うれし~~~!


学習メモ

4-1「フレームワーク

  • Web フレームワークは効率的に Web サービスの開発をすることができる仕組み
  • Express は Node.js の Web フレームワーク
  • Express には、ルーティングやひな形作成、ログ出力やテンプレートエンジンの機能がある

4-2「ExpressのAPI

  • Web フレームワークには、あらかじめセキュリティ対策の仕組みが用意されているので、それを使う(便利)
  • Express では、 Router オブジェクトを Application オブジェクトに登録することで新しい処理を追加できる
    • それぞれの処理が枝分かれしているイメージ
  • エラーが発生した際の関数の呼び出し階層のことを、スタックトレースという

4-3「GitHubを用いた外部認証」

  • OAuth2.0 を用いて外部認証を実装する
    • Express では passport モジュールを利用して OAuth の認証を利用する
  • シリアライズ、デシリアライズとは、メモリ上に参照として飛び散ったデータを 0 と 1 で表せるバイナリのデータとして保存できる形式に変換したり、元に戻したりすることをいう
  • done 関数は、 第一引数にはエラーを、第二引数には結果をそれぞれ含めて実行する必要がある
  • process.nextTick 関数に処理したい関数をコールバック関数として渡して実行することで、すぐには実行を行わず現在の処理が終わった後のタイミングで コールバック関数を実行することができる(イベントループ)
    • 非同期IOを用いているNode.jsを理解するための重要な概念

4-4「テスティングフレームワーク

  • mocha を用いてテストを行った。
effectiveArmor = effectiveArmor <= 0 ? 0 : effectiveArmor;
  • 実効防御力が 0 以下の場合には 0 とする、という記述
  • Math.floor は小数点以下を切り捨て
  • Math.ceil は小数点以下を切り上げ
  • Math.round は小数点以下を四捨五入

4-5「継続的インテグレーション

  • 継続的にソフトウェアのコードの品質の低下や機能の問題を早期検出し、開発を効率化する取り組み
  • ビルドやテストの他に開発にかかわる様々なことを自動化することもできる

4-6「クライアントのフレームワーク

  • 複数の JavaScript ファイルを一つにまとめるフレームワークが存在する
  • JavaScript のファイルを単一にまとめることで、サーバーやクライアントの処理の負荷や通信量を減らせる
  • webpack を利用することで Node.js のモジュールをクライアントの JavaScript で利用することができる

4-7「DOM操作のいフレームワーク

  • DOM は XML や HTML などのドキュメントのツリー構造を操作する API
  • jQuery では DOM を横断操作したり、イベントをハンドリングしたり、アニメーションを行うことができる
    • jQuery便利すぎワローチ
  • jQuery は、慣例的に $ という記号の変数に入れて利用される

4-8「AJAX

  • AJAX はブラウザ上の JavaScript から非同期のリクエストを行い、ユーザーインタフェースの更新を行う技術
  • 一定間隔でサーバーにアクセスする手法のことをポーリングという
  • AJAX の通信は、特に設定をしないかぎりは同一生成元ポリシーを守る必要がある