プログラミング講座 13回・14回目。(用語解説のみ)
こんばんわ。
今日は、今週のプログラミング講座にて学んだことを
あたかもメモのように投稿させてもらいます。
blogなんだからちゃんと記事にしろよ、って
自分でも思いますが、今はそんなに時間も割けないのでw
なので読まない方をお勧めします。
ITに興味あったら見てもいいかも、
用語解説。
・get
url文字列の後ろにクエリ文字列として表示されるので、passwordとかのやりとりには不向き。
・post
urlの後ろに表示されない。https通信だとbodyのなかで暗号化されるので、passwordなどのやりとりに向いている。
・MAMP
webサーバー、アプリケーション、DBの部分を接続させる機能。
・port
それぞれのアプリケーションが使う、〜上の港的な。それぞれに4桁の番号が割り当てられている。
無料RDBMS(OS)
有料RDBMS
*大規模なサービスで利用されがち。
こいつのPlutinum資格とったら年収アゲアゲ(取りてえ)
DBの情報は決して消せないように。
作ったデータは一生消えないように。
アクセス権限なども運用考えて。
DBはどこにいても、こいつらがわかればアクセスできるよ。
$user = 'ユーザー名';
$password = 'パスワード';
$dbName = 'データベース名';
$host = 'localhost: MANPなどのポート名 もしくは 120.0.0.1:MAMPなどのポート名';
・Data center
自然災害などでサーバーが機能しなくなったときに、地理的に離れた場所でデータバックアップとる仕組み(施設)。
・latency : レイテンシ
反応時間、待ち時間。
物理的距離でも発生する。
日本とアメリカの(どこだったか忘れた)距離で200ミリ秒発生。
100ミリ秒でさくっと感を感じる。
Amazonはほとんどの処理を100ミリ秒以内に設定してある。
・CDN : コンテンツ デリバリー ネットワーク
物理的に分散されたサーバープラットフォーム。大きなlatencyを発生させないために分散された場所にある。コンテンツサーバーとクライアントの中間サーバーの役割でjsとかcssを発信するサーバーである。
・CPU
処理をする人。最重要。core数の2とか4は、処理の速さに比例する。
働き手が2人か4人かの違いのイメージ。
・メモリ
作業台、主記憶装置。動いてるアプリはここ。メモリ数でかいと複数アプリ同時に動かせる。メモリの容量足りなくなったらHDDとかの外部ディスクにデータを入れる。外部ディスクは処理速度がメモリの1000倍遅い。
・HDD・SDD
外部記憶装置。アプリは非稼働時ここに住んじゃってる。
DBはここ住み。奴らはメモリ食うからな!!!
・ns(ナノセコンド)
1秒を0、6個ほにゃららした数。笑
・なぜDBについて知るべきか?
データの取り出し方など、知らないと設計がめちゃくちゃで、修正時や進化じに困る。
開発の全部の流れ理解して腕あげようぜ。
・バリデーションとは。
検証。要求が記述に適しているかを検証すること。
・webサーバー
おかみさん(cssとかの配信)
最強のおかみさんを作る
・アプリケーション
職人さん
限られた材料で、システムの主役って感じの働きする。
・DB
素材屋さん(お店のメモリにないものを調達する、必要な分を最低限)
(遅いけど豊富)チューニングが必要かな
・エスケープ処理
phpだと(?)htmlspecialcharacter で指定できる。
悪意あるJSなどの操作を入力フォームからできないようにする。
・オープンソース:OS
世界に公開されているコード。無料で使用できるし、
たくさんの中の一人が気付けば、脆弱性対策などができるので
更新は早い、、、だったはず。
アプリケーションのセキュリティ不備を意図的に利用し。想定外のSQL文を実行させること。DBのデータ消したりとか。直接文字列を受け取ることで起きる危険やバグ
webアプリケーションに存在する脆弱性、もしくはそれを利用した攻撃。
CSRF対策で使われる。指定したサイトからしか値を受け取らないようにする
・基本的な脆弱性への予防策
laravel rails とかは事前に予防策が実装されてるので、
こいつら使えると強い。
・ウォーターフォール型開発
滝の流れのように、逆流せずにwebアプリケーション開発を行う仕組み。
フェーズがかっちりしているので役割がわかりやすくていいのがメリット(長期的)
自動車開発とかならいいけどwebアプリケーションには向かない(短期的)
・アジャイル型開発
小さな機能を短期間で実装、リリース(短期間)
顧客を巻き込むのがベスト。彼らが答えを持っている。
多くて100人開発とかが限界。(by さぼさん)
システム構築といった仕事(システムインテグレーション)を行う企業や業者のことを指す。自動車製造とか、基本ウォーターフォール型。
アプリケーション開発のコーディング以前にやること
(1)要件定義
どんな機能が必要か、どうしたいか
(2)基本設計
ソフトウェアとかの選定、どのサーバー使うか、外侮システとの連携、環境の決定等
microsoft Azure(cognitiv services),google plattform
algoliaてやつもある(検索アプリ?)
sentgrid(メール検索)
API 知ってた方が実装にかかる時間削減になる
(3)詳細設計
コード書かずに全体の設計する
・銀の弾丸
存在しないもの。絶対の正解はない。脆弱性のないシステムなどないことの例え。
・E-R図(実体関連モデル)
エンティティ(MVCモデルにおけるビューやオブジェクトといった実体のこと)をまずリストアップし、それらがどのように関連しているかを表すためのもの。DBのテーブル設計に直結する。
*フィールドが変わると呼び方が変わる
MVC=モデル、オブジェクト
UML=エンティティ
ユースケース図、アクティビティ図(画面のアクティビティを文字に)など。
ここちょっと弱いので要復習。
設計と実装が異なる人だと使うのが普通。
ああ、眠くなってきた。
3〜4年前の近所の花でおやすみ。