[Powered by Google Translate] [セミナー] [Web開発:アイデアから実装へ] [ベンクーン] [ビリーJanitsch] [ハーバード大学] [CS50.TV] [これはCS50である] [ビリー]こんにちは、私はビリーだと、これはベンです。 >> [ベン]こんにちは。 今日は、Web開発の話をすることになるだろう。 [がWebdev] [ビリーJanitschとベンクーン] まず私たちについて少し。 ベンは、バックエンドの男のようなものです。彼は、物事の仕組みになります。 そして私はに行くと、それらはかなり作る。 私は、ものの以上のフロントエンドのレイアウト設計一種で、主に携わって とベンは、他の一方で、彼は、バックエンドのもので動作しますので、やっているか知っている。 一緒に、我々はいくつかのことを行ってきました。 例えば、昨年はオンラインゲーム開発スタジオですGimbliumに取り組みました。 つまり、クラスの私たちの最終的なプロジェクトだった、 それ以来、私たちは、ハーバード大学のクラスを作りました これハーバード大学の閲覧やショッピングのコースのためのオンラインワークです。 当社は、当社のウェブサイトのためにこのアイデアを開始するつもりだ。 我々はFacebookを利用して作るつもりが、猫のためだ。 あなたが実際にこのウェブサイトを作る前に、 それはよくないので、このウェブサイトを作るていない、しかし、我々はフレームワークとしてそれを使用します そして我々はこのアイデアを取るかの過程を経る そして我々が使用することができ、実際のウェブサイトにそれを回す。 私たちは、ウェブサイトを破壊することから始めます。 あなたはCS50に行ってきたように、 あなたは、このウェブサイトに入る実際のコンポーネントであるかを考えたいと思います。 基本的には一種の抽象的概念であるという考えから、それを回す あなたが作るこ​​とができ、実際の、具体的なものに。 我々はいくつかの質問をすることから始めます。 このウェブサイトは何ですか?なぜ我々はそれを作っている? それは何のために使用されようとしている?そういったこと。 Facebookの猫の場合には、 私たちは、基本的にはお互いに猫のソーシャルネットワークをすることができますウェブサイトを求めています。 アイデアは、彼らが互いの壁に投稿することができていることなので、 彼らは、コメント、そういったことを行うことができます。 我々は、機能コンポーネントに来るところ、それはね。 我々は現在のフレームワークは、この種を持っている - 私たちは、ユーザープロファイルを持っている、 我々は意見を持って、私たちは投稿することができます。 おそらくいつの日か、私たちが好きとそういったことを流入します。 そして、我々は一種のインチ行くこれらの機能に優先順位を付けたい 私たちは大丈夫、のような言いたい、それは誰もが、プロファイルを持っていることは本当に重要です その誰もがお互いの壁に投稿することができます。 それに続発する、コメントはいいだろう。 多分後で私達は同類を流入します。 だから、あなたはあなたのプロジェクトの基盤にあるものの考えを持つようにしたい そして後に適用することができ、より一般的な機能のようなものは何でしょう。 あなたは一種の心の内の特定のリストを持つようにしたい、 しかし、あなたが開始するプロジェクトは、あなたが終了したプロジェクトであることを行っていません。 言い換えれば、物事は、あなたがサイトを開発している間に変更しようとしている あなたは、そのためのスペースを残しておきたい。 私は、構造について少し話をするつもりだベンにそれを裏返します。 [ベン]私はウェブ開発のより技術的な側面の話をするつもりだ。 ちょうど最初のいくつかの基本を見ていきましょう。 あなたは、Webアプリをやっているときは、 あなたが持っている必要があるとしている主要な部門がある あなたは、クライアント側で起こっているいくつかのものを持っているつもりです - つまり、あなたがブラウザているコードは、サイトから取り とJavaScript、HTML、CSSのもの。 つまり、クライアント側ですべてです。 サーバー側で実行されます他のコードを持っているつもりです その人があなたへの送信するすべてのデータを追跡し、 そのようなものを何を与えることを誰が決定します。 あなたたちはすべて我々が何を言っているのかを熟知しているように、これは単にいくつかの専門用語である。 その部門を超えて、それはの面では、Webアプリケーションを考えて良いことだ 個別のコンポーネントのカップル。 あなたは、Web開発をやっているときは あなたはいつも何をしようとする必要があることの一つは、複雑さを軽減することである。 より複雑なコードは、バグを作るために存在するより多くのチャンスです。 難しく、後で変更することである。 だから、あなたは、いくつかの異なる機能領域にアプリを破ることができれば その意志 - あなたは、クロスエリアの通信量のようなものを減らすことができます - それはあなたのバグを減らすという点で長期的に大いに役立つでしょう。 具体的には、通常、人々はにWebアプリケーションを分割 - これらは今話題の言葉の一種であるが、彼らはまだ便利だ。 あなたは、人々はモデル、ビュー、コントローラの話聞いたことがあるかもしれません。 モデルは、アプリケーションが対処しようとしている実際のデータである。 たとえば、あなたの猫のFacebookで、あなたのモデルは次のようになります - あなたのようなポストのためのモデル、およびそのようなユーザープロファイル、もののためのモデルを持っていると思います。 あなたの意見では、ユーザーにそのデータを提示する方法である。 あなたは、1つのポストを検索するためのビューとすべてのコメントがあるかもしれません そしてすべての投稿のリストを持っているあなたの壁のために別のビュー あなたに向けて、あなたのニュースフィードに別の図であること - そのようなもの。 最後に、人々はあなたに記事を送信するときに、基本的にされているコントローラを持っている あなたは、あなたのバックエンド·システムへの更新を行う あなたはカウンターの束をインクリメントし、何でも。 それらはあなたのコントローラです。 私はモデルについて主に話をするつもりです。 ビューは、技術的にそれほど難しくなく、問題は、それを設計して、よりです コントローラは、あなたが設計している何に固有であることを行っている。 しかし、あなたが使用できるいくつかの非常に一般的なテクニックがあります それで動作するようにあなたのモデルがよりよいと容易にするために、私は非常に有用だと思います。 これは主に良い方法であなたのWeb​​アプリケーションのデータを扱う方法についてであることを行っている。 モデルとの主な問題 彼らは、クライアントとサーバー上で生活し、あなたが把握しなければならないことである A)、それらを取得する方法 - 関連するすべてのもの - サーバからクライアントに、 及びb)の同期でそれらを維持する方法。 ユーザーは、いくつかの更新プログラムを作りたいとしている。 彼らは、新しい記事を作成するつもりだ。 彼らはあなたが同類を持っている場合のものとものを好きにするつもりだ。 それらはモデルを扱うの主な技術的課題である。 あなた自身をお聞きしたいとしている最初の事はある データの種類は、このモデルになり、クエリの種類を、我々は何をしたいとしている - つまり、どのように我々はモデルを見てするつもりですか? あなたの猫のFacebook例えば、 あなたの投稿は、それに関連付けられた作成者を持っているとしている いくつかの壁のポストテキスト、および壁のポストの受信者。 そして、あなたはさまざまな方法の束でそのクエリを実行したい場合があります。 あなたは、どの記事を書いた人でそれを見たいと思う そのポストを受けたことで、おそらく彼らが投稿した日付ごと。 日付でそれをやろうとしている場合しかし、あなたはあなたのポストに別のフィールドを追加する必要があります それが実際に投稿されましたときに。 これらの2要因 - あなたはそれを表示する方法を使用するとどのようなデータ - 彼らはお互いに依存しているためには、まずそれについて考えなければならない、 そしてそれは、後でそれらを追加することはより困難になるだろう。 他のいくつかの考慮事項があります。 あなたは、サーバー上のモデルを扱う方法について考えているとき 何を見たいのです - あなたは基本的には可能な限り、サーバーが同じくらい簡単にしたい。 クライアント側でのものを行うと、一般的には、クライアントで純粋にそれを行うことができればはるかに高速です ネットワーク要求の任意の並べ替えを行わずに。 アイデアは、あなたがクライアント上でできる限りのクエリの多くを行うことです。 その唯一の問題 あなたが初めにすべてのデータを要求した場合ということです そしてそれはロードに時間がかかるだろう。 だから、アイデアは、クライアント上で十分なデータを持っ間の妥協点を打つことです あなたはそこにあなたの仕事のほとんどを行うが、ちょうど一度にすべてを取り出すことができないこと あなたが先頭に本当に遅いロード時間を得るようにします。 たとえば、あなたの猫·データの あなたはおそらく、最近の掲示板の束を取得したいと思う。 それは数年を遡る可能性があるため、あなたはそれらのすべてを取得するのは嫌だ。 しかし、あなたは一度にそれらを1つを取得する必要はありません つまり、ネットワークのオーバーヘッドを大幅に導入するため。 それはかなり難しいことが多いです - あなたは、データベースが稼働した後は - それはあなたがそれを持っているどのようなデータに変更するしばしば非常に難しい - つまり、新しいデータベース列または何かを追加 - その一つの良い戦略は、単なるテキストBLOBにデータの多くを維持するために、実際には - JSONのブロブ - JSONはJavaScriptのオブジェクト表記法であること - それから、新しいプロパティを追加することができますので、便利だ理由は、 データベースを変更することなく、これらのJSONブロブのすべてに。 その唯一の欠点は、あなたがフィールドの束を持っている場合 あなたは後から追加されていること - それはJSONブロブに隠されたように - それは、データベース内部でそれらを照会するのは難しいです。 たとえば、後であれば - あなたのPostモデルを持っていた場合、我々は先に説明したもの ただ著者と、受信者とテキスト - また、あなたは、後で日付フィールドを追加したいならば、JSONのブロブを持っているし、可能性が あなたのデータベースを変更する必要はありません。 あなただけのテキストフ​​ィールドのすべてに日程を追加することができます。 そして、あなたは、クライアント側でそれらを見ることができるようになる しかし、あなたは、サーバー側でそれらを照会することができません それは、そのテキストの中に隠されているからです。 あなたが考えるようにしたい他の問題 クライアントとサーバーが通信しようとしている方法である。 通常は、できるだけ単純、これを維持したい。 あなただけの、GET-ME-次のようにデータ要求を持つことができます Aのこと - 新しいオブジェクトの作成、および更新 - 古いオブジェクト要求。 これらは、すべてのことをサーバー上の別のURLになります - ブラウザがあろうと - あなたは、これらのすべてのAJAXリクエストを使用することができます および受信またはPOSTデータのどちらか。 繰り返しますが、私たちの猫のFacebook例えば、 あなたは、個々の投稿を取得するには、そのURLを持つことができ、 そして、新しい壁のポストを作成するためのURLがあるんだけど そして多分あなたのプロフィール写真は、そのようなものをアップロードするためのURLです。 しかし、再び、それはあなたが維持する必要がないように、あなたのデータのほとんどをプリフェッチすることだ ネットワーク要求を行う。 そのために、1つのポストのための個々のGET要求を持ってしたくない場合があります その代わりにあなただけの壁全体のための1 GETリクエストをしたいと思う。 それから、あなたが原因でバランスをしようとしている場合 - また、これは、アプリケーションに依存しようとしている。 あなたは、人々が唯一の10または20掲示板を持っていることを期待している場合、以下の原因 それはいいですから。 あなたが期待している場合は、しかし、彼らは、その要求は時間がかかりすぎる何千ものがあるでしょう ので、あなたは、get-オール支柱 - 以来パラメータを追加することもできます。 これらすべてのためには、おそらくJSON形式でデータを同期するつもりだ - JavaScriptのオブジェクト表記法。 ほとんどすべての言語は、非常によく、JSONを扱う。 jQueryはあなたのためにハードワークのすべてを行いますこの素敵なgetJSONの機能を備えている。 とPHP上で非常に素晴らしいのJSON通信機能もあります。 だから、それはおそらく、前後にモデルを送信するための最適な形式です。 これまでの話した内容の一例としては、 ここにあなたの猫のFacebookアプリケーションの一例の流れです。 お使いのブラウザベースのWebサイトのURLを要求から始まり。 サーバーはおそらく静的なHTMLと一部のJavaScriptとCSSを介して送信だろう。 これは、サーバー上の任意のレンダリングを行わないことが最善です。 おそらくしたくない - サーバーは、そこに何をしてされていない掲示板の一覧を下に起こっている それぞれ1のためのいくつかのHTMLを生成し、その上で送信。 なぜなら、それ以外の場合は、クライアント側でそれを行うことが最善だ あなたが何かを再描画するたびに、サーバ要求をしなければならない。 そして、それは非常に迅速にあなたに多くのオーバーヘッドを与えます。 船は、静的なHTMLを降らせだけにこれは通常お勧めします して、クライアント側でレンダリングを行いますJavaScriptとCSS。 とすぐにその原料が入ってくるように、 あなたが持つことができます - JavaScriptで - あなたは壁のデータの要求を行うことができます そのようなもの、その後サーバーは、基本的にはデータベースクエリを実行している とアクセス権をチェックする。 唯一重要なことは、それはいくつかの他のユーザーの掲示板に書き込みを送っていないということです あなたが見ることができていないこと。 それは基本的に、データベースへのアクセスに非常に薄い層とすることができる、 そして、その後のすべてのデータを示す - ビューともののすべて - あなたがポストか何かを作りたいときにそれらのは、ブラウザで発生し、することができます あなただけの別の要求を送信します。 あなたがこの上に行うことができますいくつかの凝っもあります。 より具体的な技術的な情報に関しては、 平野JavaScriptで開発することは、少し痛みを伴うことができます ようにあなたに多くを助けるいくつかのライブラリやツールがあります。 私はあなたがすべておそらくHTMLレンダリングを行うことになりこれはjQueryについて聞いたと思う と操作非常に簡単 - 内とフェードアウトするために派手な機能がたくさんある、 とジッピーアニメーションをやって。 Underscore.jsと呼ばれるこのライブラリもあります。 それは、あなたはJavaScriptを持つことを期待するものを便利なユーティリティ機能をたくさん持っている それは本当にdoesn'tこと - 配列をシャッフルのようなものを、 リストから重複を削除するか、リストのリストを平坦化する。 これはただの小さなコードサンプルです。 アンダースコアを使用すると、すべての時間を持っていてほしいこれらの素敵な機能のトンを持っています。 した後、私は少し時間を過ごすしたい1以上のライブラリがあります バックボーンは本当にあなたがクライアント側でモデルを扱うことができますのでBackbone.js呼ばれる で、それを引き起こす可能性があることを多くの混乱。 バックボーンはあなたにモデルやコレクションのこの概念を提供します JavaScriptで正確にJavaScriptのオブジェクトのように基本的にある JavaScriptの配列ではなく、彼らはあなたがそれらのプロパティを変更するイベントがあります。 ボタンをクリックしたか何かされるときにだけJavaScriptで同じように、イベントを持つことができます これらのバックボーンモデルとバックボーンコレクションはのようなものを放送します その彼らが変更されたとき。 それはあなたがちょうどここに、このコードスニペットのようなものを書くことができることを意味し - あなたは壁全体を再描画posts配列には何も追加するたびに、これは、述べています。 同類の投稿の数が変更されるたびに、これは、言うだろう あなたは、誰かが自分のポストが好きユーザに通知。 またはPOSTの任意のプロパティを使用すると、投稿を変更するたびに再描画。 そのようなものが原因そうでなければあなたの複雑さのトンを保存します あなたはこのようないくつかのフレームワークの変更、コードにしておきの時間を持っていない場合は、 ポストについては何も、あなたはすべてのレンダリング機能を呼び出すために自分を覚えておく必要があるだろう そのようなもの、そして何が起こったか新しいものを追加したい場合は、 投稿を修正するたびに、あなたの中のすべての場所を通過する必要があるだろう あなたがポストを変更し、その新しいものを追加したコード。 このようなフレームワークは、それとの間層のコミュニケーションの多くを削除します つまり、コードが複雑で、維持が困難になります。 景色について少しもあります。 彼らは技術的に非常に難しいことではありませんだから、私はビリーにこれの大部分を残すつもりです。 あなたの意見のためのjQueryを使用してください。これは、事実上、この時点で必要なものだ。 それだけで、すべてがとても簡単になります。 ライブラリがたくさんあり​​ます。 あなたは、ユーザインターフェイス要素を複雑にしている場合、 あなたはオートコンプリートことをしたい場合は、それらの空想マルチセレクターの1のように - あなたがそのようなことが必要な場合は、おそらく周り検索する あなたは、あなたがやりたいのはいいのライブラリを見つけることができます。 ビリーは、ビューのは事実上困難パーツの詳細を説明します。 また、注意点として、バックボーンは景色が通信させるためのいくつかの機能を備えています 素敵なモデルと - 実際には、これらのライブラリのすべてのドキュメントを見てください。 ただドキュメントを見てください。彼らは非常によく書かれており、従うことは簡単だ。 問題がある場合、一般的に、あなたはかなりちょうどGoogleにできます。 それらを使用している人々がたくさんあり​​ます。 私はこれが最後になりますようにと思います。 あなたが行うことができますいくつかのより高度なものもあります あなたのWeb​​アプリケーションは、余分な素晴らしい作るために探しているなら。 あなたが行うことができます - 新しいHTML5仕様は、あなたがすることができる派手なものをたくさん持っている。 ローカルストレージ - あなたがブラウザにデータを格納することができている - むしろ戻ってすべてのもののためにサーバを熟読するよりも、 あなたがクライアント上であっても、人々をすることができますことを、その一部を維持することができます - いくつかのケースでは、それも、あなたがWebページをオフラインで使用できるようにすることができます。 ネットワーク通信の異なる種類であるWebSocketを呼ばれるこの事があります どこの代わりに、ちょうどあなたが1要求を行うには、応答を取得し、設定が完了したら、 あなたがサーバーへの接続を開いたままにし、その次のようなことを行うことができます リアルタイムの更新。 だから、あなたがチャットアプリを作ろうとした場合は、WebSocketをを使用することができます あなたが要求し続けなければならないように、前後に通信するには、 「ああ、サーバー、誰も私のチャットを送ったのか? " 10秒ごとに、または何か。 あなたはそれのように見えるようにすることができ、興味深いHTML5の機能もあります ページのURLは、これまで実際にそれをリロードすることなく、変化しています。 あなたは、ネットワーク要求の束を行うことなく戻る]ボタンや[進む]ボタンを使用することができます。 そのようなものは、それが迅速な作りの面で非常に便利ですが、またすべきWebアプリケーションのように動作します。 CoffeeScriptはと呼ばれるこの事もあります。 CoffeeScriptは、実際には、それはJavaScriptにダウンしてコンパイルし、異なる言語である。 あなたは、CoffeeScriptの中ですべてのコードを記述し、その後、このコンパイラを実行する、 それはあなたが自分のウェブページに含めることができるJavaScriptファイルを出してくれる。 それはたくさんのを取り除くため、CoffeeScriptのが嬉しい理由は、 イコールに等しいJavaScriptが持つ奇妙な例、 とequalsが異なることを行うなど等しい - それは、配列や関数を扱うためのよりよい構文があります。 これはすべての正方形のリストが作成さCoffeeScriptはほとんどスニペットです 10 ^ 2から^ 2 1とは逆の順序で。 ご覧のように、CoffeeScriptは、多くの場合、あなたは1行で表現することができます 何のJavaScriptの5行がかかるだろう。 それは、物事がずっと楽にすることができます。 それが最初に学ぶために新しい構文を少しですが、 それは間違いなく、長期的にはあなたがより生産的になります。 また、PHPに比べ、サーバー上の他の言語を使用することができます - ルビー、Pythonのような言語、Node.jsの呼ばれていてもプロジェクトがあります それは、サーバー上でJavaScriptを使用できるようになる。 個人的に、私は本当に、本当に、PHPを憎む。 私はちょうどそれを扱う享受していない。 あなたも、それは言語のひどいclugeと思えば、 その後、代わりに次のいずれかを使用することができます。 一般的には、あなたが何かをしたいとした場合、あなたは本当にあなたがそれを行うだろうか分からない、 単にインターネットを検索。 特に上のリソースのトン、トンがあります - StackOverflowのは素晴らしいものです。 これは、プログラマが互いに質問をこのWebサイトの。 あなたはCS50問題セットの問題を抱えていた場合、あなたはそれに遭遇した可能性があります。 そして、あなたが望むほとんど何を行うためのライブラリのトンがあります。 あなたが何かをしたいとした場合、あなたはそれを行う方法がわからない、 それは不可能だと仮定しないでください。 ちょっと見てみると、いくつかの良いリソースを見つけるかもしれない。 一般的のように包み込み、 メイン持ち帰りは物事をシンプルに保つている。 より複雑なコードが先頭にある そしてより多くのあなたが試してみて、派手なものを行う、 もはやそれは実際には機能的な何かを得るために取る そして難しく、後で変更することになります。 だから、最初のもののダム、簡単な方法で行う。 それと一緒に行く、 古いコードを捨てるか、多くのことを、それをクリーンアップするのを怖がってはいけない。 一般的に、あなたが実際に何かの作業をした後、 それはあなたが最初の段階ではまだしているときよりも考える方がはるかに簡単だ のどのように私はすべて一緒にこれを置けばいい。 これは動作します非常識可能な設計を行うことをお勧めします して、反復的に右初めてすべてを取得しようとするよりも、それを改善する。 クライアント·サーバ事業部の面では、試してみて、非常に単純なサーバーを維持する - ただデータベースといくつかの認証とは、そこに任意のハードワークをしない。 ブラウザにクライアント側で、あなたの複雑なもののすべての操作を行い JavaScriptでできるだけ多くすることができますように。 あなたの人生をより良くするライブラリを見て回る。 誰か他の人が書いたコードを使用するのが無難 もしあれば - としないが、それを自分で書き込むことができます。 インターネット上の多くのものがあります。 Googleはあなたの親友である。 Googleは、プログラマの親友です。 うん、確かにものを見て回ることを恐れてはいけない。 わかりました。オーバービリーへ。 [ビリー]実際に、私はいくつかのデザインのものを開始する前に、 誰もが、彼は話を何でも約ベンのための質問がありますか? さて、良い。 繰り返しますが、何もはっきりしていない場合はお知らせ よろしければ、または私たちは、もう少し何かを行​​く。 私は少し戻って、設計のより基本的な部分について話をするつもりです。 申し訳ありませんが、モデル·コントローラ·ビューシステム - ベンというモデルに言及 その技術的な側面のようなものなので、私は、特に景色を見に行くんだ、 と私はあなたが素敵に見えるビューをデザインしたいどのように開始するつもりです。 ここに私たちの猫のFacebookのために実際に基本テンプレートのようなものです。 私は現代的なUIデザインにいくつかの基礎があると思います 拾う価値があること。 あなたはすべてのページの上の空白がたくさんあり​​ます気づくことができる、 物事の余地。 あなたがページに物事をつぶすために持っているように感じることはありません。 開いている部屋の多くを残しておきたい、あなたは、ほぼすべての近代的なWebサイトにアクセスした場合 あなたはどこにでも白ありますがわかります。 あなたが期待していない場所で、白があります。 このカラーパレットを有し、それは冒頭に賢明だ あなたと仕事し、開発しようとしているカラーパレットを選択します。 また、 - それは書体を選択するのに役立ちますし、そうすればあなたは、ソートの作業している 設計のこれらの具体的な基礎。 あなたは、あなたの色を持って、あなたのタイプを持っているし、その後、種類の缶 必要に応じて中の他のすべてに合う。 だから、私が言ったように、あなたのカラースキームを使用すると、お使いの配色の大胆な色を使用したい 控えめに。ヘッダがいいです。ボタンは本当に大きな、派手な色があると便利です。 しかし、一般的に、あなたはどこの色を持っているウェブサイトを持っている場合、 すべての顔であなたを見つめて、それだけで雑然と見え、それはいいません。 あなたは一般的に明るい色を使用したい。 再び、かなり一貫した配色を選んでみてください。 あなたは色がたくさんのこれらの小さな飛沫を持つことができます - これはかなり見栄えすることができますが、かなり控えめにそれらを使用したいと思います。 私が言ったように、あなたは最小限にしたい。以下がほとんど常にではありません。 あなたが何かを表示したり、何かを表示できない場合は、 あなたはそれがデフォルトであるべきかどうか種類がわからない - おそらくあなたはそれを残してオフに最高のだ。あなたはいつも後から追加することができます。 うん、物事をシンプルに保つ。 しかし、最も重要なのは、複数の設計を検討したいと思います。 サイトを作るとき、あなたはあなたがしようとしているあなたの頭の中でそれを持っていることを考えてはいけない 特定の方法でサイトを作り、それがまさにこのように見えるようになるだろう。 それは、一番上の青いヘッダーと青サイドバーを持っているために起こっている した後、黄色のサブヘッダーの事。 あなたは、複数のテンプレートを作りたい。 あなたはどちらができます - あなたはフォトショップとの良好なら、あなたはそれを開き、並べ替えができます あなたはそれが見て好きなようにウェブサイトを設計します。 そうでない場合は、あなただけのペンと紙を使用することができ、 しかし、複数のデザインを傷つける。 あなたは、基本的には異なるデザインがたくさんある場所に設定したい 1が動作してしまう場合には、それは素晴らしいことだ。 1が失敗してしまう場合は、常にオンに別のものを持っている。 あなたが制約されるべきであるように、一般的に、感じることはありません どのようなデザインにするには、最初に決定します。 デザインは、非常に可変され、モデルの重要性の一部 コントローラ·ビューシステムでは、内と外、必要なさまざまなビューを入れ替えることができるということです。 あなたはデータを一方向に揺れてから、そのうまく機能しないこと、実際には、ああ、決めることができます。 、私はそれはちょっと複雑すぎると思うか、本当に仕事ではない、ここの部分があります ので、私は完全に、完全に新しいもので、このビューとスワップを放棄するつもりです。 我々はまだ旧機種と古いコントローラを使用することができます。 我々は我々の前に同じように、サーバーとクライアント上ですべてを行うことができます。 しかし、表示されるデータの実際の波がわずかに異なることになるだろう。 限り、実際に必要な設計を実装、 あなたは、いくつかのデザインが紙の上に、またはフォトショップまたは何にスケッチした後、 あなたに利用できるようにするツールがいくつかあります。 まず、あなたのHTML、PHP、または何であると非常に精通している あなたは自分のウェブサイト上の静的なページをコーディングに使用している言語。 あなたは親切のあなたに、これらのタグを与えHTMLでたくさん働いてきた あなたはに物を置くことができ、基本的にそれはあなたのコンテンツを整理する方法ですこと。 たとえば、あなたがそこまでのヘッダを持っているので、ヘッダータグを持っているつもりです そしてそれはおそらく別のタグであることを行っていることの内部にいくつかのテキストを持っているつもりだ。 その後、いくつかの異なるリンクで多分サイドバーがあり、 それらは、すべて別々のタグであることを行っている。 したがって、基本的にその中心にあるHTMLはどのようにページを分割する方法です あなたが最終的にそれをフォーマットしたいと思います。 だからもう一度、あなたはその前に見てきました。 あなたは今、それを操作すると、かなり満足している あなたがうまくいけば、最後のPSETをやったことを考えると、 だから、問題はないはず。 次に、基本的な設計の静的な側面をすべて処理し、CSSを持っている。 それは、異なる要素の配置をすべての色のすべてを扱うだろう、 彼らは互いに対してどこに行くか、 どのように大きな彼らは、あなたが持っているのポジショニングの異なる種類である - あなたが下にスクロールしたときに、彼らが滞在するように、言い換えれば、あなたは、物事を固定することができ、 またはあなたが他の要素に比べて物事を持つことができます。 もののその種のすべてがCSSである。 さらに、別の装飾を行うことができ、テキストの色を持つことができ、 テキスト効果、スタッフのようなものがすべて表示されます。 ベンはこの最後の週末に本当に良いのセミナーを与え、 あなたはCSSで一部の派手なことをやってもすることを計画している場合ので、私は間違いなくそれをチェックアウトするだろう。 CSS3は、実際には、CSSの最新バージョンであり、それは本当にいいもののすべての種類を行うことができます。 これは、勾配を行うことができます。あなたが素敵な、丸みを帯びた角を持つことができます。あなたはもののすべての種類を行うことができます あなたのウェブサイトを作るために、より現代的で空想に見える。 次のツールは、ベンがについて少し話しJavaScriptとjQueryのですが、 しかし、私は少し遠くに得られます。 JavaScriptを、あなたが講義でそれをそれで少し働いていたか、少なくとも見てきたように、 動的にHTMLでものを行う方法の一種である。 あなたは、HTMLを作成したら、あなたがそれを変更することはできませんので、HTMLは、ご存知のように、静的です。 しかしJavaScriptは、いくつかの点で、HTMLを変更できるようにする方法です。 だから、それを行うことができますし、それは素晴らしいことですが、JavaScriptが実際に動作するように痛みです。 それも、最も単純なことをするので、長くて鈍角だし JavaScriptの行の多くを必要とします。 だから、jQueryは基本的にすべてのことが簡単になりJavaScriptのためのライブラリです。 あなたが左から来た正方形のボックスを持つようにしたい場合は、大丈夫、と言う それがかかるだろうJavaScriptで、真ん中にいれるようにして、ページにフェードイン - 私は何を、百行を知らない、それは苦痛であるように、 あなたはそれがWebプログラミングについてのすべてを嫌うから出てくる。 jQueryはあなたが基本的要素ドットフェードイン、またはそのような何かを持っている。 あなたはクールなアニメーションのすべての種類を行うようになるので、非常に、非常に単純な関数 そしてそういったこと。 これらの2のために本当に良いです他の事はただの動的なことをやっている ウェブサイトで。 だから、というだけで、HTMLページ持っているより - いくつかのデータが表示されますが、実際にはしません 何でもする - JavaScriptとjQueryは、あなたがクリックできるボタンができるようになる、 あなたは要素や再オーダーをドラッグし、それらを並べ替えて、新しい要素を持つことができます 追加または削除。あなたは、アドオンが削除することができ、そういったことを。 だから、jQueryはクールなもののトンを行います。 とVipulは、実際には5〜時に、私は信じて、今日のセミナーを与えている、 あなたがその長い間に固執することができますので、もし、それがでしょう - 5または4? 四つ。申し訳ありません。まさに、この後に実際になので、私が推薦する できればそれのために周りに付着。 jQueryは、スーパー、超便利であり、あなたはそれで本当にいいものの多くを行うことができるでしょう ほとんどすべてのWeb開発プロジェクトのため。 今、私は区別の一種に入るつもりです。 私は、ユーザーインターフェイスに関する基本的話をしてきた。 ユーザーインターフェイスは、サイトのデザインだけです。 しかし、ユーザーエクスペリエンスである別のコンセプトのようなものがあります。 2は非常に異なっています。 インターフェイスは間違いなく経験の一部です。 あなたがサイトにアクセスしたとき、言い換えれば、あなたは、インターフェイスを見てください。 それはあなたがサイトを体験する方法の一部です。 しかし、ユーザーエクスペリエンスはそれ以上です。 ユーザーエクスペリエンスは、ユーザーがあなたのサイトから取得する印象が何であるかについてです。 だから、明らかに、インターフェイスはその一環である。 そして、それは間違いなく必要な部分だが、それは十分ではありません。 言い換えれば、あなたは素敵なインターフェイスを持っている場合、それはかなりカラフルな、それがすべてです、 それは素晴らしいことです、しかし、ユーザーがあなたのサイトになった場合、かなりのレイアウトを見て、それがで混乱だ すべては、何を行う方法は考えを持っていないし、明らかにあなたが本当に作りました 貧しいウェブサイト。 つまり、ユーザーエクスペリエンスの出番のようなものだ 私はUXデザインについて少し話をするつもりだ - UXは、ユーザーエクスペリエンスの略です - そして、あなたが優れたユーザーエクスペリエンスを持っていることを確認する方法の一種。 最初のポイントは、ユーザーがその何でもできるウェブサイトを設計することができるということです そのユーザーはおそらく望んでいる。 しかし、ユーザーはそれらのことを行う方法を見つけ出すことができない場合 - 言い換えれば、彼らはあなたのサイトにアクセスしたときにユーザーが良いアイデアを持っていない場合、 私は自分のプロファイルを更新する場合は "ああ、私は私が投稿したい場合は、このボタンをクリックするか、 誰かの壁は、私は彼らの壁に行くと小さな箱をクリックしてください。 " ユーザーがそれを知らない場合は、効果的ではない、実際に持っている 正しくその機能を実装しました。 機能を実装するの一部は、ユーザーが実際にそれを使用することができるということである。 そして、それはイライラするかもしれません - あなたはサイトを作る可能性があり、それは、すべての種類を行うことができます 素晴らしいものが、その後、あなたは、人々はそれをテストして、それがこれを行うことはできません "、と言うでしょう。 それはなぜ?これを行うことはできません」と、あなたはそれらに戻って言うよ、 「まあ、それは。あなただけのこのあいまいな上第七ドロップダウン·メニューに入ることができます 唯一の右下の隅」か何かにあるリンクによって発見されたページ。 明らかに、あなたはそれを望んでいない。 あなたは、それは彼らが行うことになっているものをユーザーに明確にしたい そしてそれは簡単で、そのための直感的でなければなりません。 あなたがしてみたいもう一つは、誰かがあなたのサイトに行くつもりなら、である そして10回のうち9は、アクションA、および10回行い、アクションBのうち1を行い、 おそらく、アクションAの経験を集中したい 言い換えれば、あなたはそれが非常に、非常に明確な方法Aを行うにしたい フロントとセンターでなければならない - それを見る、サイトにアクセスして、ああ、それはすぐそこです。 Bは明らかにあなたは明確にしたいが、あなたは少しにしておくことができ、一方、 バックグラウンドで。 ダビデは、講義でこの良い例を示しています これボストンT系である。 あなたはボストンTに移動し、チケットを購入したい場合には、 あなたが実際にチケットを購入することができます前に、5メニューに取得する必要があります それは地下鉄に乗るのにかかるどのくらいで2ドル、2.50ドルの値の 1方向で。 それが問題だから地下鉄に乗っているほとんどの人々 おそらく、一つの場所に行って自分のチケットを購入し、すぐに取得したい。 それは彼らが異なるメニューの多くを通過する必要があることは意味がありません そこに着く。 優れたユーザーエクスペリエンスは、最初のページにQUICKボタンになります それはちょうど '、片道切符を買って」と言うと、それは標準のすべてを入れだろう デフォルト値は、、その後、誰かがそれとは異なるチケットを購入したい場合は、 彼らはまだ、もちろん、のオプションがありますが、あなたがのために最適化しました 本当に重要な共通ユースケース。 あなたは正しい、Facebookの例を見ることができますか? あなたは、Facebookに移動し、ステータスを投稿したい場合は、 それはあなたが多くの場合、何をしたいです一番上だね。 とすぐにページに入るように、その最も一般的なことを行うことができます あなたがやってみたい。 あなたのようなもう少し複雑なことをしたい場合は、 私は私の友人の壁に移動して、その上に絵を投稿したいと言う - これ、私はできるだけ頻繁にステータスの更新を掲示するなど、多くの場合、何をしたいではなく、よ - そのような場合に、私は自分のプロファイルをクリックし、上部のボックスに自分の名前を入力し、 私は自分のプロファイルに得たら、次に、それでも、そこに一番上だね。 繰り返しますが、私は、最も一般的な利用例のために優先して最適化されてきました。 もう一つ重要なことは、多くの場合、人々は一種のこれを回避しようとするということです と言って、わかりましたので、私がサイトを作った人々は、それが混乱見つけている それは右、問題なの? 明らかに、私は人々が私のサイトの内容に惑わされたくない。 しかし、それを解決する方法は、何か言ってポップアップしていることではない ねえ、私はどのようにこのサイトを利用する方法を教えるつもりです。 ステップ1 - このボタンをクリックします。ステップ2 - ここに行く。 確かに、それはそれを回避する方法 - それはあなたが何をすべきかの人々に伝えることができる方法だが、それはだ 本当にしない最適な方法。 私は、ウェブサイトにアクセスして、突然、私は私に言っているのは、このチュートリアルが殺到していた場合 何をすべきか、どこに行くと、そのすべてに、それは私のための楽しいではありません。 それは私にとって良い経験ではありません。 それは、痛みのようなものだ。私はものをやって起動します。 人々は、彼らのダイアログボックスの外に閉じるようにしようとしている またはチュートリアルから抜け出す、何をすべきかを知って、その後、文句はないので、 あなたは何をすべきか、それらを告げていない。 これを解決する方法は、チュートリアルまたは方向のいずれかの種類を与えることはない - そのようなこと。 同じくらいあなたはそれを避けることができるように、あなたが本当に何をすべきかをユーザーに表示したい ただウェブサイトのレイアウト方法の性質によって。 言い換えれば、私はログインせずにFacebookに行けば、 私はメインページで見る最初の事 - それは少しログインボックスです。だから、当たり前。私はそれがすぐそこです、ログインする必要があります。 一方で、私はFacebookに行き、私は、下部にある小さなリンクをクリックする必要がありました場合は、 「ログインする」と述べて、ページの残りの部分は、画像か何かのほんの一部のようなものだったこと、 私は本当に正しい、何をすべきかわからないでしょう?私は混乱するでしょう。 だから、それは、ダウンしてそこに行くとしてログインボタンをクリックして私に言うことができる またはボタン内のログは、私はそれを見に行くよ上部に右である可能性があります。 あなたはいつも何をすべきかをユーザに表示されるようにしたい、 それはページ自体に内在する必要があります。 あなたのデザインを考えると、さまざまな方法をからかっているとき あなたのサイトを表現する、あなたが本当にユーザーがしようとしているかについて考えてほしい あなたが何をすべきか、それらを表示する方法をやっても。 最後に一つは、テストが本当に、本当に重要です。 友人を得る、あなたも知らない誰かを取得する - それが誰かを得るために素晴らしいです - サイトを使用する前に、サイトを見たことがないだ人。 何時間も現場で働いてきたので、それを見つめてきた、 あなたは明らかにあなたがテストすることになるだろう、まさにそうしないと知っている あなたが、あなたが仕事を知っていることを取り組んできたもの。 しかし、他の誰かが一緒に来て、それを前に使用したことがないサイトを使用している場合、 あなたは事前の知識を持たない人がいるので、それはユニークな経験だ サイトのITに入るので、効果的に何をすべきかは考えているとしている またはユースケースはどのような彼らのために存在している。 それは素晴らしいことです。彼らは基本的に心のためのブランクのある方だからそれはユニークだ。 何かが混乱したり不明確である場合、彼らはあなたを伝えることができます。 彼らはあなたのサイトのユーザーエクスペリエンスが正確かのアイデアを与えることができます。 それは私はあなたを奨励するので、間違いなく、あることを自分で言うのは非常に難しいことができます あなたのプロジェクトを開発しているように - あなたは、Webベースのプロジェクトをやっている場合 - 早ければあなたは、機能のデモのいくつかの種類を持っているように、サイトを使用している人々を取得します。 今、私は、Web開発プロジェクトを管理する方法について少し話をするつもりです。 私たちは、あなたが技術的なバックエンド側を行うことができますどのようにかけて行ってきた どのようにあなたは本当に良いサイトを設計することができ、 それは自分で作業している場合は素晴らしいことだけど - 自分で作業している場合でも、あなたがチームで作業している場合は特に、 プロジェクト管理が大きな問題となる。 あなたは、ソートのため、様々な形態で、プロジェクトマネジメントについて聞いた 小学校あなたはグループワークを言われたとき。 あなたはすべてのこと、通信、協力しなければならない。 つまり、すべてまだここに適用されますが、といくつかのユニークな状況がある あなたが知っておくようにしたい、とあなたがうまく扱うを確認するには、コンピュータサイエンス。 私はあなたがインチだろうチームについて最初に少しお話します それが上の動作しているように、チームの正しいサイズを選ぶことが非常に重要です、 そして、最終的なプロジェクトで、私はあなたが選択するオプションを持っていると思う 1〜4人、私が正しいいたら。 あなたはあなただけの人々の数を選択していないことを確認するには あなたは彼らがあなたの友人だからと仕事をしたいという。 あなたは良いサイズだとそれは仕事を得るでしょうチームを選びたい。 あまりの人々に対してより多くの人々を持つの貿易オフがあります。 あなたがより多くの人々を持っている場合は、明らかに多くの作業を行うことができます あなたは多くの人々、多くのコード、アイデアの多くを、持っているので、 それは、すべての素晴らしいことだ。 しかし、それはまた、より多くの管理や、より多くの通信を必要とします。 言い換えれば、同じプロジェクトに取り組んで4人を持っている場合 それらはすべて、多かれ少なかれ彼らが必要とするすべての種類を知ることは、同じコードを編集している それはあなたが必要なので、何が起こっているの - あなたには、いくつかの新しい機能を追加した場合には、種類の人々に伝えるために持っている - 私は申し訳これを追加し、 あなたが本当に深いものに入る場合は特に - 私はこの方法でこれを変更するよ 実際にサイトがどのように機能するかに影響しようとしているモデルやコントローラなどである。 チーム全体がそれを認識している必要があり、 だから、あなたが一生懸命になるだろう大きすぎるチームを選択していないようにする必要があり その通信を確認します。 また、あなたはするつもりはない、十分に小さいチームを選択する必要はありません それはちょうどあなただから通信できるように。 考慮すべきもう一つは、人々のスキルがどこにあるのバランスです。 あなたはすべて本当に良いのプログラマーなら、それは素晴らしいことだ。 あなたはすべてのバックエンドの人々をしている場合しかし、その後、あなたのサイトは非常に良い見に行くされていません あなたは、この偉大なデータベースを持っており、超高速の検索クエリを実行しているため - その素晴らしいです - しかし、あなたがそれに行くときには、赤と青との1990年のサイトのようなものだ どこでも、それはどちらか良いです。 私は、ソートの詳細だから、ベンと私は、チームとして働いては非常にいいであることに注意してください フロントエンドでは、我々は両方のミドルエンドで相互作用し、ベンは、バックエンドのもので本当に良いことだ 我々は、任意のサイトを設計し、基本的に穴ができるので、だから、本当によく働く 充填する必要があるサイトで私たちのいずれか一方、又は恐らく両方によって充填することができる。 あなたは、あなたのチームに穴がないことを確認する。 重複のビットがあります場合は大丈夫です。 つまり、両方のバックエンドとの良好である2人を持っている場合、 彼らは問題にお互いを助けることができるので、それも同様に良いことができます それらが有するされる。 あなただけのあるものの責任だ1人を持っている場合、それは問題になる可能性があります 彼らは問題に遭遇したので、あなたは、オーバーラップを少し持っているか しかし、あなたは最も重要なことの可能な穴のすべてが満たされていることを確認する。 最後の事は - これは明らかなはずであるが、それは多くの場合ではありません。 あなたは本当に楽しんでしたい。 CS50は、この最終的なプロジェクトのポイントや一般的なWeb開発の多くの場合、ポイント それはやって必要があるため、単に仕事をするではありません。 あなたは本当に楽しんでしたい、あなたが何かを作ることにしたい それはそれで動作するようにあなたをやる気だ。 あなたが作っているどのようなことは座って、上で動作するように痛みであれば、 あなたは正しいプロジェクトを選択していない。 あなたは、あなたが面白いと思うものを選びたい あなたは本当にあなたについて新しいアイデアを得るときに興奮して、結果を見てみたい そのプロジェクトのすべての種類は、私は確信していることをそこにある - あなたができる何か あなたが見つけることができる - 誰もが実際にそれらを陰謀と何かを持っている 彼らは、Webベースのプロジェクトをやっている場合。 私は今再びそれを言うよ。 あなたのプロジェクトは、痛みのように思えるし、それに仕事をしたくない場合は、 別のプロジェクトを選択します。本当にあなたを刺激する何かを選択してください。 ベンはビット反復のこの概念を述べて、私はその上に少し行きたい。 それはあなたが、機能何かを得る噴出で働くことは本当に重要です。 あなたはA、B、Cをやろうとしてのウェブサイトのためにこの計画を持っていれば、素晴らしいことができます 最終的にはそれがあり得るでしょう。 しかし、あなたは、あなたがそれに取り組んで、それに取り組んでいるこの段階で立ち往生している、 しかし、何もしないばかりだ。あなたが見て何と有形、機能的なものを持っていない。 あなたは本当にそれが時々痛みのようなものを見かけほど多くを何をしたいか 何かの作業で、それを少なくとも安定し、走行時のように、ソートのそれを締めくくる それはあなたが望むすべての機能を持っていない場合でも、バージョン。 そしておそらく、あなたが本当に追加したいが、あなただけではないことができるいくつかの機能があります あなたは、機能の点にこのサイトを取得したいので。 だからあなたは親切の全開発プロセスを持つようにしたいもののように見える。 または本質的に何もで始まる - あなたはどこかに機能を開始したい - しかし、あなたはどこかに非常に基本的で機能的な取得したい。 し、再度、ジャンプのようなものを作り、再びどこかの機能を得る。 、あなたはゆっくりと構築します、そして、それがそうでなければだろうよりも少し遅く行くかもしれない しかし、長い目で見れば常にあなた、この中間の接地相で立ち往生している場合 実際の作業は何も持っていない、それは本当に大きなフラストレーションすることができます あなたのプロジェクトで作業するには、常にそれが働いて得るために非常に近いだから、 そしてそれは、実際に働いたことがないだ。 あなたは、これらの機能猛烈に仕事をしたい、 そしてまた、各1の後に、いくつかの反射をやってみたい。 言い換えれば、あなたはサイトが今取り組んでいる点にいる一度 - それはあなたが好きなすべてのものを持っていないが、いくつかのことを行います - あなたが考えてほしい、大丈夫、私は何に着手した目標を達成するこのサイトです? つまり、サイトにXがやろうとしている場合、私はX方向に働いている何ですか? 私は望んで機能性のすべてがありますか? しかも、それは私が欲しいの全体的な目的を果たすのですか? あなたのサイトが別の方向に向きを変えるために開始されることを発見している場合 それとも物事がだけの種類のうち、動作していない、それはギアを少しシフトする時期かもしれません。 必要であれば、それはアイデアを投げて価値がある - 言い換えれば、それは検討の価値がある と考えると、私は本当に私がなりたいものに向かって働いています。 私は私の次のポイントだと思います。アイデアを放棄することを恐れてはいけない。 あなたが機能を労働時間の多くを費やしたからといって そして最終的にそれが動作してくれましたが、それは本当にとてもうまく行っていない - そういったことを - それは、その有用ではありませんか、ユーザーがそれを使用してトラブルを抱えているように - それを捨てることを恐れてはいけない。 それはあなたがそれに取り組んで多くの時間を費やしてきたことを吸う、 しかし、最終的には一種のこれらの作品によってまとめのサイトを望んでいない 仕事のようなものが、そのほかは提供されません。 また、新しいアイデアを受け入れることを恐れてはいけない。 誰かが一緒に来て言うならば、ちょっと、そのサイトは本当にクールに見えるが、 また、これをしなかった場合は、それも素晴らしいことではないでしょうか? それはあなたが意図してではない何かをしなかったものだからといって、あなたの スペック、あなたがやろうと設定していないもの、 でそれを取るし、それを操作することを恐れてはいけない。 あなたは、開発の過程を通してで実行しばしばアイデア理由 ウェブサイトの本当にクールな機能になってしまう。 私は前にこれを言った。私は再びそれを言うだろう。 テスターは、超便利超である。 ログオンして、何が起こっているか見るために前にサイトを見たことがない人々を取得しよう 彼らは、サイトとユーザーエクスペリエンスの有用性をテストすることができていないという理由だけで、 しかし、彼らはまた、あなたができない方法で機能をテストすることができます。 あなたは、あることをするいくつかの機能を加えた場合 あなたはそれが正しくひとつひとつの時間を、同じことを行うために起こっている知っている、それは素晴らしいことです。 しかし、それは多くの場合、ユーザー·マイトコーナーケースを考慮するために難しいことができます あなたが定義されているので、正確に - あなたが予想していなかった何かを入力 機能自身。 だから、誰かがサイトを使用する方法は考えを持っていない人に来ている と理由だけで、あなたは本当に便利です、彼らが行うことができますどのような方法でそれを破る 動作しているサイトの内容の全く異なる視点からアイデアを得る そして何が修理が必要です。 最後に、私は、いくつかの一般的な優れた実践について話をするつもりだ あなたはCS50でこれらをたくさん見てきたが、彼らはまた、本当に、本当に、プロジェクトの設定で適用されます。 一つは、コメントです。あなたは大きなチームで作業している場合は、必ずあなたのコードは、特にコメント。 それは誰かが書かれていることだけで、コードの巨大なブロックを持っているので、いらいらすることができ そして多分それは多分それはないが、動作しますが、あなたはそれが何をするかわかりません、 だから、それはそれはそこにするかどうかまたは有用なかのかどうかわかりません あなたが何か他の作業をしている場合、それはあなたが取り組んでいることも可能です 同じことなので、ちょうどあなたの仲間の思いやりであると、非常に、非常に注意してください そして十分に文書化のコードを記述します。 あなたがインクリメントかのように全体のことをするように、これまで行く必要はありません カウンタは、私がこのカウンタに1を追加している、と言うコメントを持っています。 それはその詳細である必要はしませんが、あなたが書いている任意の機能のために あなたは、その機能が正確に何をするかのいくつかのドキュメントを持っている必要があります その入力が何であるか、それは返すべきか。 サイトの他の人々のコンポーネントを使用することができる方法 あなたが何か大きなを構築に向けて作業することができます。 もう一つ重要なことは、あなたが定期的にクリーンアップを実行するようにしたいです。 コー​​ドが乱雑取得します。あなたのコードだけで、完全に読めなく、巨大な混乱の場合は気を悪くしないでください。 それは常に、Web開発で発生します。 あなたは、古いものを削除し、新機能を追加している。ものがあってはならないことがあることを行っている。 それはいいが、あなたは定期的にそれに対処することを確認したい。 あなたはそれがあなただけの何かを見つけることができない時点までに作成してみましょうする必要はありません コー​​ド内で、あなたは何が何をするかわかりません。 それは、HTMLの場合です。 時々、あなたは何が含まれていないオブジェクトになってしまいます、 そしてあなたはそれらを取り除くしたいと思う。 CSSで、あなたはもう存在しない要素を参照することができ、 だから、そのコードを取り除きたい。 JavaScriptでは、HTMLから何かを削除した可能性があります。 だから、あなたは常にクリーンアップしていることを確認するには、かなりのものづくり あなたが定期的にできる限り。 私は考えていないもうひとつの便利なものがCS5​​0に非常に概説されている それはあるバージョン管理に入る価値がある。 あなたは基本的にすべての進捗状況を追跡しているときに、バージョン管理の考え方は、 あなたのサイトに向けて作った任意の時点であなたが実現した場合、ああ、これは働いていた しばらく前に、それはあなたが戻って、以前のバージョンに戻ることができ、これ以上動作していない して、そしてそういったことから変更されたかを見る。 そのための主な方法は、Gitのであり、Gitはそのシステムのこの全体の一種である 私はトミーMacWilliam昨年約セミナーを与えたと考えています。 あなたは2011年のCS50セミナーに入る場合は、その上で彼のセミナーを見ることができます。 Gitの考えは、定期的にこれらの約束を作っていることを基本的に サイトは、今はかなり安定したバージョンの概要というのは方法があるので、 私はそれをパッケージ化し、それをサーバに離れて送信し、その後、そのサーバーに行くことができるよ そして、コードの以前のすべてのバージョンを見て、それが進行している方法を参照してください と良好なもののすべてその種。 だから、それは基本的にはこれだけです。 限りWeb開発のように、我々の周りに固執し、いずれかを答えて幸せだ 今のところ私たちのプレゼンテーションのように質問。 これだけです。ありがとうございます。 >> [ベン]ありがとうございます。 [拍手] [ビリー]スタッフ、誰もが我々がカバーしてきた事柄についての質問があるん または我々は、彼らが望んでいたことをカバーされていませんでした事が、我々は、カバーしたい? 私たちは、それらのお答えさせていただきます。誰ですか? [聴衆]ルビーを使用するか、またはPythonを使用することの長所と短所は何ですか? [ベン]の質問は、RubyやPythonを使用することの長所と短所は何ですか、だった 代わりに、PHPのような。 長所は、RubyやPythonは、PHPよりもはるかに良い言語であるということである。 少なくとも私の意見では、と私は他の人の意見をたくさんではないでしょうか。 彼らは、複雑なものを行うための多くを設計されていた と本当に素早くWebペ​​ージを一緒に打つにはあまり 動的コンテンツの少し。 短所の少しがあることをある - 学習曲線のよりがあります それらを設定取得します。 つまり、PHPのような、あなただけのHTMLファイルを持つことができ、あなたは小なり書き込みで クエスチョンマークしてから、いくつかのコードを記述してから、疑問符を書き、 より、大きくしてから、設定が完了したら。 RubyやPythonのような他の言語で、 あなたが最初のサイトが動作を得るためにもう少し作業を通過する必要があります。 もあります - 少なくともそれはケースのように使用される - より多くのドキュメントがありますことを PHPで使用できる、それを使用してもっとたくさんの人々がいるという理由だけで。 私はそれはもう問題の限りではないと思う。 Ruby on Railsのようなもののために非常に良いドキュメントは確かにありま​​す やPythonのためのDjangoは同等です。 PHPは、誰もが何年も使ってきているの一つであり、あなたはそれがどのように動作するかを知っています。 RubyやPythonは少しあまり成熟している。 [聴衆]あなたが学ぶかピックアップして、それらの1を選択した場合、 あなたはどちらを選びますか? 正直なところ、私は人に依存だと思います。 ごめんなさい。問題は、そのあなたが学ぶために誰かのために選ぶだろうでしたか? 私はPythonで個人的に最も素晴らしい見つける。 私は、PythonとDjangoの私の最初のWeb devのプロジェクトをした - 人々がたくさんあり​​ます。 また、Ruby on Railsのが好きな人がたくさんあり​​ます。 Ruby on Railsのを知っている、おそらくより多くの人々。 正直なところ、私はちょうどあなたの周りの人々が知っている何でもとなるだろう あなたが質問をする人がいるようにします。 質問があった - 共有サーバーでは、この種のハードのPythonで動作するでしょうか? それはあなたのホスティングに依存します。 Pythonのものを掲載しますWebホストの数があります。 WebFactionは右、というのでしょうか? WebFactionはビリーと私はいくつかのプロジェクトのために使用しているものです。 彼らは本当に素晴らしいよ。彼らは、ほとんどの言語をサポートしています。 しかし、それは、PHPがはるかに広くサポートされていることは事実です。 あなただけのPHPを実行し、Webホスト上で立ち往生しているのであれば、それは、PHPを使用するには十分な理由だ。 [聴衆]私はいくつかのデータベースを照会する方法を学ぶことになった、 と私は私のSQLはすべての場所で​​ですけど、私は最近にさらされてしまった - そしてあなたはそれを指摘した。あなたは、JSONと拡張可能なデータベースを参照してください。 私のSQLはあらゆる場所にまだある。どのようにして、その出来事を見ていますか? 以上の拡張(聞き取れない)のために成長している傾向があるように起こっていますか? 質問があった - 私は、非SQLデータベースへの傾向があるように起こって思います。 たとえば、MongoDBのような。私はそれは間違いなく真実であると思います。 私のアドバイスは、主にMySQLがあるという理由だけで、ここでMySQL関連した 業界標準。 個人的に、私は多くのMongoDBのようなschemosを持っていないデータベースを好む あなたが問題を持っていない場合には、ああ、私は別の列を追加する必要があります。 災​​いは、私は何をすればよいように、私ですか? それは、MySQL上でそれを行うことは非常に難しいですが、あなたはMongoのようなものを持っているとき それは非常に良くあります。 Mongoの約他の良い点は、あなたの記録が実際にJavaScriptのオブジェクトであるということです。 これらのデータベースの行を取る必要がある変換ステップのない一種はありません とJavaScriptオブジェクトにそれらをオンにしてネットワーク経由で送信します。 私はそのようなものは、将来の迅速なWeb開発のための非常に、非常に便利になるだろうと思います。 [ビリー]私は一般的なポイントである追加し何かがある あなたは私たちが議論してきたすべての言語を学んだ必要がありますように感じることはありません 私たちのセミナーから。 明らかにポイントを使用すると、そこに何のアイデアを与えることであり、 あなたは私たちが言及したことのいずれかに興味をそそられている場合、あなたはそれをGoogleのことができます それらをよく読ん。 私が述べたように、正確に、これらのことに対処するいくつかのセミナーがあります。 おそらく入る私が言及していなくてもより多くのセミナーがあります。 このようなものにも。 アイデアは、あなたが何かで作業したい場合は、ここではあなたの処分でのツールであるということである。 これらのツールは、正確に何をすべきか、本当にわからない場合圧倒感じることはありません、 しかし、彼らはそこに、あなたはそれらの普及を行うことができることだということを知っている Googleによる。 [聴衆]物事のどのようなことを確認あなたのウェブサイトにするために何をする必要があります モバイルデバイスでよさそう? [ビリー]モバイルデバイスは、少し難しいです。 あなたがそれに近づくことができる2つの方法があります。 最初の方法は、実際に携帯サイトを持っているということです。 言い換えれば、あなたは初めに、検出のいくつかの並べ替えを行う ブラウザは述べていますどちらかあなたのウェブサイトに要求を行っているとき このビューを返す - デスクトップまたはノートPCブラウザ用のビューされる - モバイル機器のためのこの他のビュー。 つまり、ビューはあなたがほとんどのスワップができるという点で、本当にいいです場所です 2つ、モバイルデバイス上で実際にうまく動作インタフェースを持つ およびブラウザのデバイス上でうまく動作は完全に異なるものを持っている。 その問題点は、符号化を意味するので、それは長い時間がかかるである 全く別のインターフェイス。 あなたがそれを行うことができ、他の方法がある - 現代の携帯電話の多くは、ウェブサイトを表示し、ブラウザと同じようにレンダリングしようとします そして、彼らは彼らのベストを尽くす。 あなたが親切なのは、使用しているjQueryのJavaScriptの量に光を滞在しようとすることができます これは、物事がうまく少し行くことができる場所になる傾向がある。 これは、その多くの時間を持っていない場合に使用すべき方法の一種である。 モバイルインターフェイス上で動作する時間を持っているなら、それは明らかにあなたの最良の選択肢です。 私は一般的にCS50プロジェクトのために、あなたは、どちらか一方を選択するつもりだと思います。 言い換えれば、モバイルアプリを作りたいか、デスクトップのウェブサイトを作りたい。 そして、あなたはそれで行くかを決定するその種。 後でそれを拡張したい場合は、おそらくあなたの最善の策はある その他用に他のインターフェイスを作る。 私はワードプレスベースのサイトの開発の経験を少し持っている。 私はしばらくの間、ワードプレスに個人的なウェブサイトを主催した。 フレームワークのそれらの種類は、単に非常に基本的なことのように素晴らしいことができます。 多くの場合、あなただけでもカスタマイズ性の問題の多くに遭遇するでしょう。 あなたは、何かが、ある方法を見たり、特定の方法であるようにしたいでしょう それは、システムにハードワイヤードなので、あなただけのことができないこと これは、問題のビットであることができることをしなければならない方法です。 それ以来、私は一種のゼロからのサイトで動作する傾向してきた。 ブログデータベースとそういったことのようなもののために、フレームワークを構築するために本当に難しいことではありません。 あなたは本当に時間を伸ばしている場合は、もちろん、ワードプレスのようなものを使用することができます またはブログのためのそういったこと。 ブログ店、観光は本当にハードに十分なものではないこと、物事の種類 あなたは物事のそれらの種類のいずれかに実行している場合、あなただけに、おそらく最高だ 社内のバージョンを確認します。 私はそれについてだと思うので、おかげで再び来て。 私たちは本当にあなたたちに話して楽しんで、あなたはいくつかのものを学んだことを願っています。 [ベン]我々は話をして幸せだ - 私たちは行かなければならないが、我々はより多くの外で話をすることに満足している あなたが別の質問がある場合。おかげで再び。 [拍手] [CS50.TV]