今月の技術トピックス 株式会社フォアフロンティア 2013/06 帰社日 1. 今月の技術トピックス • 今月のトピックスは以下の通り (1) 先月のおさらい (2) HTTP概要 (3) パスワードについて (4) リリース関連 1-1. 先月のおさらい • そもそも何故?先月説明した内容を再度おさ らいする必要があるのか? 1-1. 先月のおさらい • そもそも何故?先月説明した内容を再度おさ らいする必要があるのか? →皆さんが伸びる人かを試しています。 • 伸びる人はチャンスを無駄にしません。 →伸びない人はチャンスに気がつかない →更に自分にチャンスが巡ってきていないと被 害者意識(勘違い 1-2-1. 目の前のチャンス • 例えば以下の様なチャンスがあります (1) 人から指摘されたとき (2) つまらない作業を繰り返しやっている時 (3) 人から知らないことを聞いたとき 1-2-2. 人からの指摘 • 仕事をしていると間違いを指摘されることが あります。 • では、皆さんは間違いを指摘されたときどの ように感じますか? 1-2-2. 人からの指摘 【成長する人】 • 指摘箇所を自分なりに理解しようと調べる →自分なりに理解することが重要 →これが無い人はソースコピーマンです! • 何故、指摘を受けたか問題点を検証する →同じ失敗を繰り返さないマインドが重要 →原因を追究しない人は類似ミスを繰り返す (仕事ができない烙印を押されます) 1-2-2. 人からの指摘 【成長しない人】 • 最初に言い訳から始まる • 指摘に対してイライラするした顔をする • 指摘されたことを言われた通りにする →それぞれ何故悪い? 1-2-2. 人からの指摘 【成長しない人】 • 最初に言い訳から始まる →指摘意図を理解できてない(無駄な自己保身) →自分の能力がわかっていない証拠 • 指摘に対してイライラするした顔をする →指摘者から不愉快に思われ相手にされない • 指摘されたことを言われた通りにする →自力解決能力が身につかない 1-2-3. つまらない作業 • 毎回、雑用みたいな仕事が回ってくるのは何 故だかわかりますか? • ほとんどの人が環境が悪いと勘違い • 自分が悪いんですけど知ってましたか? 1-2-3. つまらない作業 【成長する人】 • 何故、自分はこの作業なのかを分析する →スキルがつきそうな仕事をしている人との差 を考え、自分の弱点を改善する • やりたい作業をやっている人より優れている 点を作り出す →自分の担当分だけでなく、全体を把握して違 いを生み出そうとする 1-2-3. つまらない作業 【成長しない人】 • ただ、言われたことだけを実施する • 「あーつまらない」と文句をいって、自分は改 善しない →何故駄目? 1-2-3. つまらない作業 【成長しない人】 • ただ、言われたことだけを実施する →しかも、指示以下のことしかできない指示待 ち人間(数合わせ) • 「あーつまらない」と文句をいって、自分は改 善しない →能力をアピールしないで、実力があると息巻 いている悲しい人間(口だけ・・・) 1-2-4. 知らないことを聞いたとき • これは成長スピードに大きく影響します • ほとんどの人がこのチャンスを無駄にしてい る • 折角、最新技術をできるチャンスをみすみす 逃しているんですけど・・・ 1-2-4. 知らないことを聞いたとき 【成長する人】 • メモを残し、後で自分なりに調べる →新しいことを聞いて頭で暗記できるわけ無いのでメモ は必須。 →その後、すぐに調べないと一生調べない • わからない点を執拗に質問してくる →自分で理解しようとしないと聞いているだけ無駄 • 最終的に自分で知識を得るための方法を探ってくる →指示待ち人間には無い発想 →最終的に自力で調べられない=指示待ち人間 1-2-4. 知らないことを聞いたとき 【成長しない人】 • 聞いただけ・・・(1ヶ月以内に忘れる) →聞いている時間の無駄 →聞いているだけの人は現場でも事前準備の 概念が無い →忙しくなってきてから時間が無いからと調べ ないイタイ人 →このタイプはスケジュールが守れない 1-3-1. JBoss • では、先月説明した話をしましょう!! • 無料版は名称が変わりましたよね? →もちろん、Java技術者が気になる無いようで すよね →聞いているだけだと出てこないでしょう 1-3-2. JBoss • 無料版は名称が変わりましたよね? • そうです。「WildFly」です →名称が変わったのにバージョンは引継ぎ・・、 何故か「WildFly 8」が最初です・・・ • JavaEE7が実装されているようです。 2-1-1. HTTP概要 【概要】 • HTTPとはブラウザ等でWebサイトを閲覧する際 に送受信に使用している通信プロトコル • 通信している中身は以下の通り (1) 状態(「リクエスト/レスポンス行」)、1行目 (2) ヘッダー行 (3) ボディ部 • では質問、HTTP(アプリケーション層)で使用して いるトランスポート層は何? →以前の帰社日でやっているので大丈夫!! 2-1-2. HTTP概要 • そう、「TCP」ですね! • さすがにわかりますよね。わからない人は結 構レベル低いので注意が必要・・・ • では、「TCP」の他に有名な「UDP」があります が「TCP」と「UDP」の違いは? 2-1-3. HTTP概要 • HTTPで通信されるデータはパケット型と呼ば れる通信方式であり、そのパケットが正しく到 達する保障がありません。 • TCPは正しく到達する保障をする役割を持って います →トレードオフとしてチェックする時間分遅い • 逆にUDPは保障が無い変わりに短時間で多く のパケット通信が可能 →ストリーミング配信などに使われる 2-1-4. HTTP概要 • • • • • • • 状態(1行目)について確認していきましょう リクエストでは以下の内容 「メソッド」、「URI」、「プロトコル」 レスポンスでは以下の内容 「プロトコル」「ステータスコード」「メッセージ」 では、ここでいっている「メソッド」とは? 同じく「プロトコル」って何が指定してある? 2-1-5. HTTP概要 • 以下に例を示します 【リクエスト】 GET /hyuga.html HTTP/1.1 【レスポンス】 HTTP/1.1 200 OK • ではメソッド(例ではGET)をJavaEEで実装する に当たり、HTTPServletクラスではどうする? 2-2-1. HTTP概要 • もちろん、「doGet」メソッドです • 他にも「doPost」、「doHead」など →メソッド「POST」、「HEAD」などに対応 • このことから、HTTPを理解していないとJavaEE が理解できないことがわかりますね! • では、「POST」と「GET」の違いは? →電文で異なる部分を教えてください 2-2-2. HTTP概要 【GET】 • GETの場合、入力パラメータが1行目のURIに 含まれる 【POST】 • GETとは異なり、入力パラメータがボディー部 に含まれている • では、GETを使用した場合のデメリットを教え てください 2-3-1. HTTP概要 • GETを使用すると入力したパラメータがURIに 含まれるため、以下の問題が発生する (1) Webサーバログにパラメータが残ってしまう (2) リファラーにパラメータが残ってしまう • なぜリファラーにパラメータが残ってしまうと 問題なの? • また、リファラーはどうやってWebサーバは取 得することができているの? 2-3-2. HTTP概要 • 例えば、サイトAにアクセスした際に重要な情 報(パスワードなど)がURIに含まれているとし ます • 次にサイトBへアクセスするとサイトAの重要 な情報がリファラーから取得できます →掲示板などでよくあるパターン • リファラーはリクエストヘッダ「Referer」から取 得できます 2-4-1. HTTP概要 • では、次に現在主流である「HTTP1.1」だと思 いますが「HTTP1.0」との違いは? 2-4-2. HTTP概要 • では、次に現在主流である「HTTP1.1」だと思 いますが「HTTP1.0」との違いは? • 一番の違いは「Keep-Alive」です! • Keep-Aliveが使えることにより無駄なコネク ションを生成しなくても済むようになりました • また、同時接続数という概念もポイントです →サーバにリクエストで同時にデータのやり取 りを行える最大接続数 2-5-1. HTTP概要 • これでHTTP概要については終わりますが、 Webシステム開発をやっているのに答えられ ない人がいたら何故でしょうか? →いない事を祈ってますが・・・ 【参考】 http://codezine.jp/article/detail/7065 2-5-2. HTTP概要 • ソースの意味を理解しないで動くからいいや と思ってしまっている可能性が高い →HTTPの仕組みが理解できていないとJavaEE は理解できないので • そういう感じで仕事を進めて行くと「自力で解 決できない残念なお荷物」となってしまいます • ではどうすればいいですか? 2-5-3. HTTP概要 • 以下の点に気をつけて仕事をしましょう (1) ソースでわからない箇所があれば理解する まで調べる (2) ソースコピーをやめよう(時間の無駄) (3) 常にソースに疑問を感じましょう (4) 同じミスをしないようにミスしたら自分のどこ に問題があり、どうすればミスしなかったか を常に考えましょう 3-1. パスワードについて • BtoB向けシステムなどではログイン機能がほ とんどついていると思います。 • 大体は「アカウント」、「パスワード」による認 証だと思います • ただし、パスワードをプレーン状態でDBへ保 持することはありません • では、どのように保持していますか?また、ど うしてその方法が有効なのでしょうか? 3-2. ハッシュコード • 一般的に使われているのがパスワードをハッ シュ化して保持する方法です。 • この方法を用いるとハッシュコードにされる前 の情報がわからないため、安全といわれてい ます。 • しかし、ただハッシュ化するだけでは脆弱とい われています。何故? 3-3. レインボーテーブル • 簡単に言うとハッシュ化されたデータを逆引き できる表です。 →ということはハッシュは安全ではない • ではどうする? • ちなみにハッシュ方式(MD5等)は関係ない →SHA-256でもレインボーテーブルにかかれば 一緒 3-4-1. ソルト • ハッシュ化する値の前後に特定の値を付与 する 【例】hash($password . $solt); • ソルトの条件としては以下の通り (1) ユーザごとに異なるソルト (2) ある一定の長さ(20文字以上) 3-4-2. ストレッチング • ハッシュ処理を何回も繰り返し行なうことを指 します。 • 通常は1,000回以上らしい • ソルト+ストレッチングでハッシュすると強固 →処理コストがかかるので注意が必要 →逆に負荷をかけるためにDos攻撃に利用され る可能性有り 3-5. セキュリティ総括 • セキュリティ問題は日々進化しています。 • つまり、最新情報に目を向けていないと脆弱 なソースを作ることになるので注意!! • 昔はOKだったという概念は捨てましょう。 4-1-1. Polymer • 2013/05/17 に行なわれたGoogle IOで 「Polymer」が発表された →正確に言うと「Polymer.js」 • Polymerとは多くのWebComponets技術のポリ フィルを提供し、独自の再利用可能なコン ポーネントを全ブラウザがそれらをサポートす る前に、作ることができるようになる! • HTML5を標準に使用している 4-1-2. Web Componets • Web ComponetsとはUIをコンポーネント化す るための仕組み • Google主導で仕様策定が進められている • 現時点ではChromeしか対応していないか な? • これにより工数削減が見込まれている
© Copyright 2024 ExpyDoc