HANNAHブラムバーグ:皆さん、こんにちは。 私たちは始めるつもりです わずか数分早いです 我々は全体の多くを持っているので、 介して取得する材料の。 私はハンナです。 私は、TFです。 マリアは参加しようとしています ほんの数分で私たち。 彼女は右の前のセクションを教えています。 私は、セクションの右を教えます 後、私たちはつもりです 時間半にそれを維持します。 あなたがここに表示されますように、我々は非常に持っています いくつかのトピックでは、我々は、を介して取得する必要があります 私たちは速い少し行くことがあります。 しかし、いずれかの時点で、私たちは何かを言う場合 早すぎるか、理解していません、 質問を中断して自由に感じます。 我々は、このαを行うことができるようにします あなたのすべてに便利なように、セッションを確認 できるだけ。 驚くばかり。 それでは、と右にジャンプしてみましょう 私たちは実際にいくつかのトピック 非常に、非常に簡単にするために覆われました クイズ0件のセッションでクイズ0。 だから、リンクされたリストから始まります。 だからあなたには、いくつかを持っていることを確認し リンクされたリストについての基礎知識 そして、やって快適です 基本的な操作の一部。 だから、見直しリンクします リストは配列よりも優れています 彼らは動的に成長することができますので。 だから我々はその巨大な利点があります。 我々は、彼らが使用さ見てきました ハッシュテーブルにあるときに我々 正確にどのように多くの知りません 我々はするつもりだもの 我々のデータ構造に挿入します。 残念ながら、我々はの部分を持っています すべてのメモリオーバーリンクリスト、 私たちは、必ずしもではありません 一定時間アクセスを行うことができます リンクされたリスト内の任意の要素に。 見つけるために 特定の要素、我々 すべての反復処理する必要があります 初めから方法。 だから、ほとんどのことに注意してください 基本的な操作は、1のオメガです。 だから、インサートは、ちょうど1を取るために起こっています。 削除は取るつもりnは我々以来されています リストからそれを探しに行く必要があります。 そして、検索は、n、最悪の場合、かかることがあります。 我々のような何かを行うことはできません リンクリストのバイナリ検索 以来、私たちがすることはできませんだけ ランダム真ん中にジャンプします。 クール。 驚くばかり。 スタックの少し。 これは、再び、あなたのように、クイズ0に思い付い それに超快適でなければなりません。 しかし、スタックに、私たちはあなたを求めます トレーのスタックを覚えています。 そして、それはうち最後に最初になるだろう。 だから我々は物事を積み重ねます スタック内の、その後、 私たちは何かを取るしようとしている場合 これoff--我々が飛び出し呼び出します stack--我々はトップをオフに来ます。 そして、私たちは何かを入れたい場合は スタック内に、我々はそれが押して呼び出します。 だから、常に育っすることになるだろう トレイのスタック状の底から。 驚くばかり。 私たちは、実装のスタックを見てきました リンクされたリストと配列の両方を有します。 あなたが実装しようとしている場合 配列で、あなたがしたいです を追跡することを確認します サイズと容量の両方。 だからサイズは現在になるだろう あなたのスタック内の多くのこと、 容量は合計数であるのに対し、 物事のあなたのスタックに格納することができます。 クール。 非常に同様に、我々は、キューを持っています。 この場合は、代わりについて考えます トレーのスタックが、ラインを考えます。 これは最初に出て、最初であることを行っています。 だから、あなたが並んでいる場合 店で何か、 私たちは、その人が最初に願っています 行が最初に助けられることになるだろう。 代わりにプッシュを言ってのと 私たちは、スタックのために行うようにポップ、 私たちはエンキューおよびデキューを言います。 そして再び、あなたがしている場合 配列でこれを実装し、 私たちはトラックを維持する必要があります だけでなく、大きさの 容量だけでなく、ヘッド、およびこれ 私たちのキューの先頭になるだろう。 クール。 そのいずれかの上の任意の質問? 驚くばかり。 右に沿って移動します。 OK、ハッシュテーブル。 それが開始のはここです 本当に面白く。 だから、ハッシュテーブルは一つの実装です 連想配列の。 したがって、基本的に何が起こったのか 我々はこのすべての入力を持っています、 私たちはハッシュにそれを与えます 言う機能、 ここで[OK]を、これは ハッシュテーブルには、それが属しています。 だから、最も単純なハッシュ関数 私たちは言って見てきたこと、 [OK]を、私たちは入れたいと仮定 私たちのハッシュテーブル内の文字列。 そして、本当にシンプルなアイデア [OK]を、言うことかもしれないが、 ただ並べ替えてみましょう 単語の最初の文字。 あなたがここに見ることができるように、我々は、バナナを取ります 我々は、ハッシュ関数を介してそれを置きます それがいることを、ちょっと、と言います インデックス1で行く必要があります。 だから我々は、基本的にハッシュを考えることができます 別のバケツの束として表。 そして、それらのバケットのそれぞれが起こっています リンクリストの先頭を保持します。 ここで、我々はできる、そのリンクされたリストであります 実際にデータの異なる部分を置きます。 だから、ダイビングもう少し ハッシュ関数に、ここです 例ちょうど私 私達はちょうど言う場合について説明し、 [OK]を、最初の文字を取ります 私たちがしていると言葉の バケツにそれをソートするために行きます。 ですからおそらく、26のバケットがあるでしょう、 アルファベットの各文字のための1つ。 なぜこれが偉大なハッシュ関数ではありませんか? 何がこの非理想的なのですか? うん。 観客:あなたが行っています 衝突を持っています。 HANNAHブラムバーグ:うん、まさに。 あなたは衝突を持っているつもりです。 だから、一つのことです。 どのように我々はすることができますし、我々はについて話しましょう ちょうど秒で衝突を解決します。 このもう一つの問題 特定のハッシュ関数 私たちの違うということです バケットはあることを行っています かなり大幅に異なるサイズの。 私たちは、全体の多くがあることを知っています よりXで始まる複数の単語、 私たちは非常に必要があるとしています 私たちのハッシュテーブル内のアンバランスバケット。 クール。 そうそう、のに戻ってみましょう 衝突のポイント。 衝突があるかどうか、私たちは何をしますか? 私たちはカップルの異なるオプションがあります。 だから1、私たちがしようとしていると仮定 私たちのハッシュテーブルにベリーを配置します。 そして、私たちはああ、私たちが望む、参照します インデックス1でそれを置くために、 しかし、バナナは、すでにそこに住んでいます。 何しようか? 私たちは、主に2つのオプションがあります。 ナンバーワンは、[OK]を、私たちが言うことができるで、 インデックス1での余地はありません、 しかしちょうどを通して見て維持させます 我々が開いている別の場所を見つけることができるまで。 だから我々は、[OK]を、言いますよ スポット3に入れましょう。 それは一つの選択肢です。 それはプロービング線形と呼ばれています。 そして、2番目のオプションは、よく、[OK]を、言っています ちょうどこれらのバケットのそれぞれを作ってみよう リンクリストのヘッドです。 より多くがあるかどうか、それは大丈夫です バケット内の1つの事より。 私達はちょうどになるだろう 前にそれを追加します。 だからここに[OK]を、見ることができ、 我々はベリーを挿入したとき、我々 だけの種類の、バナナを取りました 少し上で、それを押しました そしてそこにベリーを投げました。 そして、それはまた、完全に罰金です。 これは、別の連鎖と呼ばれています。 あなたのようなのようなものと考えることができます リンクされたリストへのヘッドの配列。 ハッシュ上の任意の質問 テーブル、ハッシュ関数? 驚くばかり。 木と試みます。 だから木はどんな種類があります データ構造 ここでいくつかの並べ替えがあります 階層またはある種の あなたの別のオブジェクトにランクイン。 そして、これはスーパーになります 明確な我々は例を見たとき。 そして、我々はに沿って、試行を見ました ハッシュテーブルと、pset5--で これは、再び、全く公正なゲーム これは別のデータとしてquiz--ため たちができる構造 異なるものを格納します。 辞書の場合には、 私たちは言葉の束を格納されています。 それでは、いくつかの木を見てみましょう。 だから、これは木の例です。 これは、構造体の種類を有し、 この階層構造 あなたはそれを見ることができます 上部のこの1ノード 2と3上記のランクのいくつかの並べ替えを持っています、 これは、4以上である図5、図6、図7、 これは、図8及び図9の上にあります。 それがすべてですので、の意味 木、あなただけの種類のことができるように あなたの頭の中でこれを描きます。 今、私たちはのカップルを持っています より専門的な木。 そのように、一例では二分木です。 そして、二分木であり、 再び、ちょうどになるだろう のいくつかの並べ替えとデータ構造 階層が、ノードのそれぞれ ほとんどの二人の子供に持つことができます。 ワードバイナリはどこから来たのです。 これは、バイナリツリーの例です。 だから、木の小さいカテゴリです。 今度は、さらに具体的な取得してみましょうと バイナリtrees--バイナリ検索について話します 木、かなり。 だから、ここでの考え方だけでは​​ないん すべてのノードは、最大で二人の子供を持っています、 しかし、するためにすべての子 左が小さくなるとしています そして、するためにすべての子 右大きくなるとしています。 だから私たちの中に気付きます バイナリツリーは、あります 数字の間には関係ありません。 しかし、我々のバイナリ検索で ツリーは、我々が表示され、[OK]を、ここでは44です。 そして、44の左側の全ての数であります 右側に小さく、すべて 大きいです。 そして、それはすべての時に成立します ツリーのレベル。 だからここに、これはより小さく、 22これは22より大きい。 そして、それは二分探索木です。 なぜ我々はそれを呼び出して思います 二分探索木? 何アルゴリズムそれはを思い出させるのですか? 聴衆:バイナリ検索。 HANNAHブラムバーグ:バイナリ検索。 あなたが探している場合ので、 このツリー内の特定の数、 すべての時点で、あなただけのノックすることができます 素晴らしいです木の半額。 そしてそうそれは私たちに何かを与えるために起こっています それは、二分探索によく似ています。 質問は? すべての権利、涼しいです。 すべての権利は​​、しようとします。 みんなのお気に入り。 だから、これは例があること 私たちはクラスの束を見てきました。 そして再び、これはただのです 我々はデータを保存することができる方法。 辞書の場合には、再び、 これは単なる文字列であることを行っています。 それでは、実際にどのようにこれを見てみましょう わずかに低いレベルでのように見えます。 それでは、見てみましょう トライ内の1つのノードで。 そして、我々はOK、そこに起こっている、参照してください。 ブールノードであるために、 ノードへのポインタ。 そして、我々はそれを参照してください。 ブールis_wordと呼ばれています。 だから基本的に、それはです 対応して行きます これらの小さな三角形にします あなたがここに得ている場合は、言います、 あなたは、完全な単語を見つけました。 私たちは知っている「チューリング「オーバー ここで完全な言葉であり、 ただ、T-U-Rは言葉ではないのに対し、 我々はその小さなデルタが表示されていないので。 そして、その小さなデルタ、再び、 このis_wordに対応し、 このブールis_word。 そして、我々は、子の配列を持っています。 あなたは、それぞれのレベルでそう 特定のノードを持っています、 とに、そのノード点 全体アルファベットの配列。 だから、もう一度、確認することができ、 このpicture--でアイム バックジャンプ維持するつもりと forth--その一番上にその配列 異なるの束を持っています それをオフに来ノード。 あなたがしたい場合は26、または27を有します 余分な文字を含めることができます。 そして、これは私たちに与えます 我々のデータを格納するための方法 調べることができます方法で、 あなたが超高速調べることができます。 トライのルックアップ時間は何ですか? 聴衆:[聞こえません]。 HANNAHブラムバーグ:うん。 理論的には、一定の時間です。 それだけの大きさになるだろう 調べたい単語。 私たちは膨大な数を追加する場合でも、 私たちのトライに複数の単語、 それは私たちを取ることはないだろう もはや決定するために、 与えられた単語はトライにある場合。 だから、本当にうれしいです。 聴衆:ちょうどあなたをしました その配列を初期化? あなたは、ポイントまたは2を逃しました。 あなただけについて話すことができます 第二のそれ? HANNAHブラムバーグ:確かに、絶対に。 良い質問。 質問は、私たちでした だ配列を持っています ノードの星を持つことになります 右、ノードだけではなく? クール。 そこでここでは言っ​​ています 私たちの配列がちょうどです 他の配列へのポインタになるだろう。 だから、一種のそれをessentially--です このように、リンクリストのように感じています どこにこれらの子供たちのそれぞれ ちょうど次のノードを指します。 私たちと方法 実際に[OK]を、ちょっと、決定、 我々は、全体を通して反復しました 単語は、辞書内のこの言葉で、 私たちはこのis_wordを確認してください。 素晴らしい質問です。 うん。 聴衆:[OK]をクリックします。 だからトライのランタイムは何でしたか? HANNAHブラムバーグ:確かに。 以下のためのトライのランタイムそう ルックアップは、一定の時間になるだろう。 だから、それだけになるだろう ワード内の文字の数。 それは依存ではありません 辞書のサイズ またはデータ構造のサイズ。 そこでここでは少し簡単な例です。 この場合、あなたはそれを見ることができます 単語のバットは、辞書にあります あなたは、ズームを持っていますが、あなた 動物園のようなものを持っていません。 どのように我々は、動物園を作るでしょうか? どのように我々は我々に動物園を追加します 辞書、私たちのトライに? うん。 聴衆:is_wordを作ります [聞こえない]に当てはまります。 HANNAHブラムバーグ:良いです。 だから我々は、Z-O-Oを言うだろう、と我々は思います 同様にそのチェックボックスをOFFにしたいです。 よかった。 のは非常に簡単に比較してみましょう ハッシュテーブル対しようとします。 トライは本当に素晴らしいです なぜなら、私たちが言ったように、 彼らは一定時間の検索を提供しています。 しかし、巨大な欠点 彼らはでかいですです。 あなたは感覚を得ることができ、 でも、それを見て、 それが取るために起こっていること メモリの膨大な量。 そこで、彼らは多くのことになるだろう ハッシュテーブルよりも大きく、 しかし、彼らは与えるつもりです 私たちはるかに高速に検索倍。 だから、あなたのようなものです トレードオフ、あなたが気に何を、 それは速度やメモリのですか。 そのいずれかの上の任意の質問、 Cデータ構造の全て。 綺麗な。 OK。 私たちは少しに移動しようとしています マリアとWeb開発のビット。 MARIA ZLATKOVA:ラブリー。 OK。 HANNAHブラムバーグ:あなたは私のラップトップを使用することができます。 MARIA ZLATKOVA:ニース。 うんいいね。 私たちはウェブに今移動します 開発、我々は少し話をしました パーミッションの変更について ファイルやディレクトリの 彼らがアクセスできるよう 他のユーザーに、世界に、 私たちはどのように見ることができるように 基本的に我々はそれらを伝えることができます 我々は、ウェブサイトのようなものを開発するとき 私たちは主に行ってきたこと。 だから我々は、chmodコマンドを見て、 これは、基本的には、変更モードです。 それは、Linuxのコマンドだと それは、アクセス権を変更します ファイル・システム・オブジェクト。 ファイルシステムオブジェクトであります 単なるディレクトリ、ファイル、 何もそのことができます のアクセス権を変更します。 だから、ファイルのアクセス権を表示するには、 我々は、ls -lコマンドは、リストを入力します。 そして、我々はそれを入力すると、我々 通常、いくつかの権限を参照してください それは一種のようになり ディレクトリ名の前にインチ だから、dはディレクトリを参照します。 そして、我々は3を持っています トライアドは基本的に いずれかの権限を参照してください。 ユーザー、グループ、または世界。 アクセス権の種類、我々ができること これらの人々の三つのグループのために持っています 以下のためのwのいずれかが、rが読取り 書き込み、および実行のためのx。 そして、我々はのものを持つことができます グループや世界にも。 トリッキーなことは、その時々です 私たちは、chmodコマンドを入力すると、 我々はいくつかの番号を入力します すなわち、3ビットで構成されていました。 だから我々は次のように行うことができます 777と基本的に 付加価値と呼ば これらのトライアドのそれぞれの rは4を参照してくださいになるので、wは希望 2を参照して、xは1に参照することになり、 そう、数字のそれぞれを追加したとき 累積数に降りてくるだろう 0〜7の累積値に設定します。 だから我々はまた、0を持つことができます 全く権限のため。 そして、それは基本的に私たちを与えるだろう いずれかのユーザーのアクセス許可、 グループ、または世界。 これまでのところ、この上の任意の質問? 観客:あなたが読んでは4と言いましたか? MARIA ZLATKOVA:はい。 聴衆:[聞こえません]。 HANNAHブラムバーグ:うん。 聴衆:そしてそれらのすべてのを追加することで 他の人があなたの数を示すことになります。 MARIA ZLATKOVA:うん。 うん。 これらは素晴らしい質問です。 美しい。 次に、我々は、HTMLとAに飛び込みました Web開発についてもう少し。 だから、HTMLはちょうど意味します ハイパーテキストマークアップ言語。 そして、それはマークアップです 標準であり、言語 これは、ウェブページを作成するために使用されるということ。 これは、マークアップ言語と呼ばれています それは実際にコンパイルされていないため。 それはどのようにいくつかのコードがすべきと言っていません 実行されるか、またはそのようなものさ。 それはちょうど描写と どのようにウェブを説明 ページをセットアップする必要があります その要素のそれぞれと 彼らは、ユーザーにどのように見えるべきか。 HTMLタグの一部は、我々 渡りは、以下の通りです。 私たちのHTMLドキュメントのすべて DOCTYPE htmlの作業を開始しています。 その後、我々は常に、htmlタグを持っています。 私たちは、頭と体を持っています。 そして、それは、HTMLが持つことが重要です 入れ子構造のこの種の それは非常に明確だから。 そしてそれは非常に明確になったときに、私たちを 実際に近いタグを開いて、する必要があります。 そして、我々は常に閉じる必要があります 我々が開いたタグ。 そしてここで私達はタイプのいくつかを持っています 私たちは持っていたい先の事を。 だから我々は持っている、例えば、 CS50のタイトル。 そして、我々実際 スタイルシートをリンクすることができます それは私達が私達のウェブサイトをスタイルする方法を定義します。 それは、CSSです。 私たちは、それを介して行くつもりです 同様に、スライドの次のカップル。 体の中で、我々は設定します 一部のクラスとID。 そしてリマインダとして、再び、 IDは一意であるとクラス 複数の項目に割り当てることができます。 そして、それはちょうどことを意味 我々は、クラスとIDを使用することができます ので、他のstructures--内で、用 たとえば、CSSファイルやスタイルの中 特定の要素を参照するためにsheets-- 基本的に私たちはスタイルにしたいと言います またはいくつかの要素をデザイン いくつかの特定の方法です。 そして、我々はによってそれらを参照 そのIDとクラス。 そして、我々はまた、を参照することができます 同様に、タグによって異なるもの、 しかし、IDとクラスがちょうど私たちにいくつかを与えます 汎用性と具体的にどのような我々 を参照したいです。 だから例。 私たちは再び、内、することができます どこCSSファイル いくつかを定義したいです style--色、フォントので、 スタッフたちができるようにthat-- 体のスタイルを定義します。 だから、それを定義します 全身タグの。 しかし、我々はまた、定義することができます #titleのスタイル。 そして再び、ハッシュタグは、私たちを参照 IDとドットが私たちのクラスを参照します。 そしての.infoため、我々 また、いくつかの属性を設定することができます。 我々は戻って行くときそして再び、私たちはしていました クラスには、情報と私たちのIDのタイトルと呼ばれます。 そして、私たちは私たちが参照していることを見ることができます #titleとの.infoによってそれらに。 聴衆:あなたが言うだろう ハッシュタグ [?私を採用? ?] MARIA ZLATKOVA:申し訳ありませんか? 聴衆:あなたが言うだろう ハッシュタグ [?私を採用? ?] MARIA ZLATKOVA:ハッシュタグ ID、そう#titleを意味 どのような要素を指し、 タイトルと呼ばれるこのIDを持っています。 そして、ドットは、クラスを参照します。 だからの.infoは、この要素を指し、 それは、クラス情報を有するからです。 うん。 聴衆:なぜあなたは HTMLでそれらを区別? なぜあなたは、特定の物事があると言うん IDと特定の物事は、クラスですか? MARIA ZLATKOVA:それはちょうどyou--次第です HANNAHブラムバーグ:質問を繰り返します。 MARIA ZLATKOVA:ああ、申し訳ありません。 なぜ我々は、特定の要素を区別しません IDやクラスなどの他の要素と? それはだからそれはちょうどです 本当に多くの場合、設計上の選択。 それはあなたの多くを提供します であることに汎用性 私はこの特定のアイテムをしたいと言うことができます 彼らがしたいので、このIDを持っています たくさんのことを行うには それ、私の唯一の スタイルを定義する、特定のスタイル その項目の色または何でも。 それを行うには、道 ただそれにIDを与えています。 そして、私が持っているしたい場合は さまざまなアイテムのカップル 有する、代わりにそれ 行くとtheir--設定 代わりにしてそれを行うための タグタグがあろうから タグ全体のためにセルを設定 毎回、そのタグが使用され、 あなたが複数の項目にクラスを設定することができます。 そして、ちょうどそのクラスにアクセスして言います 私は、このクラスをそのようにスタイルをしたいと思います。 そして再び、クラスができます 複数の異なる項目も そして、IDは一意である必要があります。 偉大な質問。 その他の質問は? [OK]を、素晴らしいです。 繰り返しますが、これはどのようにこれらのセレクタです ハッシュタグでは、CSSで参照され、 ドットで、またはのために何もせずに いくつかのタグのスタイルを割り当て、 体のような。 そして、ここでは一般的なを持っています これがどのように行われるかの構文。 いくつかのベストを繰り返します HTMLとCSSの実践、 我々は再び、すべて閉じ、する必要があり 我々が開いてHTMLタグ。 そして、私たちはあなたをお勧めします 最終的なプロジェクトのために行います、 同様にCS50ファイナンスのためとして、作ることです あなたのHTMLのすべてを検証していることを確認してください。 そして、それはW3バリで行われています。 そして、私たちがやったことと 私たちは何をしているお勧めします そう、スタイルを分離しています マークアップHTMLからCSS。 方法に関し、だから何も あなたのページには、視覚的に見に行くされています そしてそれはどのように修正することになるだろう CSSドキュメントに行く必要があります。 そして、あなたのマークアップはどのようなことを言って 相互に関係しているが、HTMLで それは中に入る必要があります あなたのHTMLドキュメントの。 質問は? MHM。 聴衆:正確に何が起こっています ページの検証と上 私たちが検証しているとき [聞こえない]作成されたHTML? MARIA ZLATKOVA:だからあなたを思いますwhat--。 だから、正確に何が起こっています ページの検証と上 そしてなぜ我々はそれを行う必要がありますか? 基本的に、我々はそれを行う必要があります 多くの時間のため、お使いのブラウザ、 あなたは、タグを閉じていない場合 またはそのような何か、 お使いのブラウザはまだしようとしています ページをレンダリングしても動作するかもしれません、 それはそれを確認するために練習をお勧めします あなたは、もう一度、すべてのタグを閉じましたが、 すべての要素があること 彼らはあるべき姿、 基本的に、それはによってだと 予め設定されている規則。 それは、再び、ちょうど 事あなたがすべきこと やっていることを学ぶことが、 するものではなく そのようなsloppierコードとスタッフ。 うん。 あ、ごめんなさい。 私はあなたがあなたの手を上げたと思いました。 聴衆:いいえ、私はちょうど[聞こえない]でした。 MARIA ZLATKOVA:[OK]をクリックします。 観客は:ありがとうございます。 MARIA ZLATKOVA:もちろん、あなたに感謝。 だからもう一度、どのように起こっています 情報が転送されます 通信モデル 情報を転送します。 TCP / IP。 TCPは単に送信を意味します 制御プロトコルとIP インターネットプロトコルを意味します。 そして、それはちょうどを指し、 データが配信される方法。 我々はいくつかのデータを持っている場合は、その そうyou--に配信する必要があります あなたは、特定のサーバーを要求します。 例えば、我々 cs50.netにアクセスしようとすると、 我々は要求に作ります CS50サーバと我々 我々が取得したいことがわかり この種の情報。 そして、このプロトコルに基づいています この情報が配信される方法については、 サーバーは、情報を提供します 私達に戻って、クライアント。 そして、我々は見ることができるしています ページのための情報 し、それを使用しています。 それでは、ハイパーテキスト転送プロトコル ちょうど別のプロトコルまたはセットです どのように定義する規則の WebブラウザとWebサーバ 通信する必要があります。 そして、このすべてを置きます 一緒に、HTTP、再び、 ちょうどこのハイパーテキストが定義されている方法を定義します 我々はそれを働いてきたHTMLにより、 それはあなたに配信する方法と どのように配信されているデータ あなたに取得します。 そして、なぜあなたたちは覚えていればそれは、です クラスから、私たちはリクエストがたくさんあり​​ました 私たちは、構文の多くを持っていました 私たちがしているこれらの要求のために 今の上に行くつもり。 だからもう一度、私たちが送信するとき サーバーへの要求、 我々は物事のカップルを定義する必要があります。 だから我々は、型を見つける必要があります 我々が設定している要求の。 そして再び、我々は、例えば、 GETメソッドの一種であります 我々は我々の要求を持っていること。 そして、HTTP / 1.1だけです 私たちが現在使用しているプロトコル。 ほとんどの時間、それが起こっています 私たちが使用しているプロトコルに。 ですから、質問がある場合 クイズのような。 それが慣習です 私たちがこれまで持っています。 バックスラッシュは、どのようなことをいいます 物事の我々が要求しています。 その後、我々のホストは、この中で、例えば、 場合、私達はgoogle.comに行くしようとしています。 だから、これはホストの値です。 これは、要求のタイプです それが送ることができます。 そしてできた応答のタイプ このプロトコルに基づいて、再び、送信され、 HTTP / 1.1は、再びです。 だから、再びHTTPバージョンです。 200 OKは、単にステータスコードです。 そして、[OK]をクリックしてちょうどフレーズであること そのステータスコードに基づきます。 そして、コンテンツタイプ 型を参照 それはつまり、あなたに返されます あなたが受け取ることWebページの そして、ブラウザこと その後レンダリングすることができます。 そして、それはテキスト/ htmlです。 聴衆:1.1は何を意味するのでしょうか? MARIA ZLATKOVA:それはちょうどです バージョンof--ああ、1.1は何を意味するのでしょうか? それはちょうどバージョンで、HTTP 私たちが使用しているプロトコルのバージョン。 素晴らしい質問です。 その他の質問? 観客:あなたは総括でした Content-Typeの本当の迅速な? MARIA ZLATKOVA:だから どのサーバです。 何であるかinformation--のタイプ コンテンツタイプが質問しました。 だから、のタイプでした あなたが戻って取得する情報 サーバからのタイプ データブラウザは、次にできること あなたが使用していることをレンダリングします。 観客は:どのようなこのことです プロトコルは何をするあなたを言っていますか? MARIA ZLATKOVA:申し訳ありませんか? 観客は:プロトコルが何を言うことはありますか? MARIA ZLATKOVA:protocol-- 聴衆:--what コンテンツタイプであるか​​、またはwhat-- MARIA ZLATKOVA:プロトコルは基づいています on--を伝えるプロトコルは何ですか? それはちょうど方法です この情報はその あなたに配信されたベース プロトコルの種類を上 この情報は得ました あなたに戻って配信。 ソートの意味を成しているしていますか? HANNAHブラムバーグ:あなた プロトコルを考えることができます A--ように私は教授を考えます マランはそれを説明しました クラスのような種類のA--のようにそれはようなものです 人間のハンドシェイクの同等。 以下のような、ちょっと、私は要求だ、と言うと私 バージョン1.1のHTTPを処理する方法を知っています。 そしてサーバは、言います ああ、[OK]を、I--との両方が存在します。 私は、HTTP / 1.1に対処する方法を知っています。 そして、私は与えるつもりです あなたは、いくつかのコンテンツをバックアップします。 この場合、それが起こっています タイプtext / htmlのであるように。 だから、ちょっとだけの方法です communicating--のためにそれらの MARIA ZLATKOVA:それはちょうどです あなたがしていることを確認しました 両方同じ以下 プロトコルとその両方 クライアントとそうserver-- お使いのブラウザとserver-- 一種のあなたがしているものを知っています 話としてい データを渡すための規約。 聴衆:だからのContent-Type part-- コンテンツタイプのテキスト/ html--のこと 同じメッセージの別の部分? それとも、のは言わせての一部、200ですか? 200は彼らにそのまたはis--を教えています MARIA ZLATKOVA:200はそれをすべてがOKに行ったと言います。 そして、コンテンツタイプは、の一種であります 同じメッセージの別の部分、 私の事を言って 返されたtext / htmlのこのタイプを持っています。 それはちょうどより多くの情報を与えています。 追加するものがありますか? OK。 この上の任意の他の質問? 驚くばかり。 だから、いくつかの他のHTTPステータスこと 我々は、200 OKに加えて得ることができます 我々は多分見てきたもの おそらく多くは403と404です。 だから404、あなたがしようとしていた場合 存在しないものにアクセスします。 だから例えば、あなたの中に CS50金融のpset、 あなたはquote.htmlレンダリングされていた場合 あなたは、そのファイルを持っていませんでした、 その代わりに、あなたは、quote.php持っていました 404をもたらすであろうが見つかりません ファイルが存在しない場合がありますので。 403の場合と、禁じられ 権限を指します。 だから、いくつかのファイルがによって読み取り可能でない場合 世界、あなたは403が返される可能性があります。 いくつかの他のあなたがかもしれません 301 get--、完全に移動。 302、見つかりました。 304は、変更されました。 400、不正な要求。 用して、内部サーバーエラー 500及び503、サービスを使用できません。 はい。 観客:我々が期待されます これらすべてのステータスを覚えますか? MARIA ZLATKOVA:私が持っているだろう あなたのカンニングペーパーにそれら。 [笑い] 観客:我々は期待されています それぞれをトリガ知っていますか? MARIA ZLATKOVA:彼らはありますか? HANNAHブラムバーグ:私たちはきたもののために そう質問をinto--実行was-- MARIA ZLATKOVA:彼らが期待されています これらの状態のものをそれぞれ1を知っています コー​​ドによって引き起こされる可能性がありますか? 我々が使用したもののためにそう とに走った、私ははい、と言うでしょう。 だから我々は間違いなく200を見てきました OKとのpsetでそれを講義。 私たちは403、404を見てきました。 他のもののために? HANNAHブラムバーグ:私は希望 500は公正なゲームだと言います。 MARIA ZLATKOVA:500、ええ。 HANNAHブラムバーグ:うん。 ただ、一般的な意味を持っています それらの原因となるものを。 そしてまた、単にこれらのことにより、 名前、することができます種類の などの推測を作ります 実際にそれらの原因に。 例えば、おそらく、恒久的に移動します ファイルは永久に移動されました。 聴衆:しかし、前に 試験、そうではありました どのようにあなたはそれに答えるために私達を期待していますか? HANNAHブラムバーグ:それ 零点の価値がありました。 ティーポットに418の質問 技術的にはHTTPステータスで、 それが零点の価値がありました。 もちろん、あなたがいないなら それらを知っていることが期待。 観客は:それが現実のものですか? HANNAHブラムバーグ:それは本当です 一つは、それが何を意味するものではありません。 それは冗談です。 インターネットの人々が面白いです。 MARIA ZLATKOVA:グレート質問、みんな。 その他の質問は? 聴衆:内部サーバーエラーとは何ですか? MARIA ZLATKOVA:内部 サーバーエラーだけ あなたがされていることを意味し 通信することができません 何らかの理由でサーバーと。 だから、必ずしもではありません 関係しているもの クライアントまたはそのような何かを持ちます。 私は、任意の具体的な例を知りません 私たちが説明してオーバー行ってきたことを、 しかし、ええ。 HANNAHブラムバーグ:確かに。 したがって、たとえば、のようにしてみましょう あなたがマッシュアップに取り組んでいたと言います Googleのサーバーは、いくつかのためにダウンしました 理由、停電、のは言わせて。 それは内部サーバになります エラーやあなたのようないくつかの並べ替えof-- 応答を取り戻すないだろう。 MARIA ZLATKOVA:うん。 あなたがいるときそれはちょうどです 通信することができません 何らかの理由でサーバーとの理由 それがダウンしているか、他の何らかの理由で。 だから、PHPに飛び込みます。 PHP、HTMLとは異なり、 プログラミング言語。 それはだから、我々はそれを使用して開始します Web開発のために非常に便利。 まず、CS50ファイナンスでそれを使用していました。 そして、それは基本的に私たちが持って来ることができます 一緒にこのマークアップ、デザイン、 私たちは、実際に情報を使用する方法 Webページ上のものを表示します。 だから、PHP自体がPHPを意味します ハイパーテキストプリプロセッサ、 それは、それ自体で再帰backnorymです。 PHPのタグを開いて、私たち左 疑問符を持つと右の矢印 PHP。 だから我々はすでにそれをたくさん見てきました。 今、私たちはわずかに行くつもりです それについての基本的な事柄のいくつか。 PHPを使用した、変数そう 名前はドル記号で始まります。 私たちは、再び、指定しません 変数は、もはや入力します。 我々は、Cで行ったのと同じように、 我々はそれをする必要はありません。 我々は、さまざまなの束を行うことができます 変数を持つもの。 私たちは一緒にそれらを置くことができます それらを連結することによって ドット表記で、これ 我々は再びC言語で行うことができませんでした。 繰り返しますが、我々はもう少し汎用性を持っています 変数の観点では、PHPと。 繰り返しますが、私たちは主な機能を持っていません。 そして、PHPは解釈されます コンパイルとは対照的に、 だから私たちはCのファイルのために作ったのか、 我々は、PHPのためにそれを行う必要はありません。 むしろ、言語その方法 単独で実行され、それは解釈されます。 そしてルーズ ちょうど私達ことを意味 変数を指定する必要はありません 型と変数の型 実行時に理解されています。 聴衆:しかし、あなたがしました ドット連結によって意味ですか? MARIA ZLATKOVA:確かに。 私たちは物事を入れたいときtogether-- ので、もし我々はいくつかの変数を持っていました 3の値を持っていて、私達は別のものを持っていました 文字列の値を持っていた変数、 私たちは一緒に変数を入れることができます それらの間にドットを置くことによって それらを連結します。 それとも作成することができます 変数と呼ばれる名前 とによってそれをまとめます 2つの文字列を連結します。 だから我々は、二重に文字列があった場合 引用符と我々はそれの後にドットを入れて、 し、我々は、別の文字列を持っていたこと 完全に文字列を作成します。 聴衆:[OK]をクリックします。 MARIAラトビア:それははっきりしていましたか? 聴衆:うん。 MARIA ZLATKOVA:[OK]をクリックします。 はい。 観客:あなたが言います 解釈ではなく、コンパイルされ、 あなたがあなたについて話しているしないでください ときのように具体的にする必要があります それは、C対PHPに来ますか? MARIA ZLATKOVA:私たちが言います コンパイルとは対照的に解釈し、 私たちは何を意味するのですか? だから、私たちが必要としないことを意味し PHPを実行するための実行可能ファイル。 それが行くように、それが実行されることを意味します。 それは理にかなっていますか? もう少し。 HANNAHブラムバーグ:だから 通訳と考えることができます 責任がある別のプログラムとして PHPを介して行ずつ行くため 対照的に、実際に、それを実行します バイナリにそれをすべてダウンしてコンパイルします。 それは実際には何の意味もありません 私たちがする必要があるか特定について。 我々はまだ正確には必要、とそうでありません あなたのセミコロンを忘れて、確認してください あなたはドル記号を持っています、 そのようなもの。 良い質問。 MARIA ZLATKOVA:うん。 だから、行単位、など Cファイルとではなく、 我々は全体の最終をしなければなりません 我々は実際にそれを実行する前に。 それが主な違いです。 しかし、再び、私たちがすることはできません 本当にあまり具体的なこと。 だから、PHPの配列が表します 実際には順番付けられたマップ。 キーに関連付ける値配列がそう。 宣言には二つの方法 配列は、次の構文に基づいて、 我々はより明確にすることができます 言うには、我々は配列を持っています 我々はにマップこのKEY1を持っています この値1、値2をマップKEY2。 それとも単にアレイを作成することができます それは、値自体が含まれています して、キーがあります 以下のように理解。 この上の任意の質問? 聴衆:何だろうキー 第二の例にありますか? 0、1、2、3? MARIA ZLATKOVA:例えば、それだけです この中のキーは必ずしもありません 違いを生みます。 彼らはどれだけのことができます。定義します その中の値を使用します。 だから我々は、foreachのを持っていた場合 PHPのループいるだろう 私たちはすべての値を通過することができ、 我々はすべての値を通過することができ、 私たちは持っていたか、定義されていなかった場合でも、 サイトの内の特定のキー 以前の構文。 だから、これでもソートと 配列の、我々はまだできました foreachループを持っています それは、各経由します 配列で、キーの値の。 foreachの構文そう ループは、我々は配列で始まります。 この$ arrの変数には、当社の実際の配列です 我々は、前のスライドで定義されていること 文字通り行く価値として 値のそれぞれを介して、 かかわらずかどうかの 私たちは鍵を持っていたかどうか。 そして、我々はで何かを行うことができます foreachループの内部値。 そこで再び、我々は配列を持っていた場合 ここでこのようなcreated-- 私たちは、fooとの値のキーを持っています バー、バズのキーとqux--の値 私たちは、foreachループを持つことができます キー値として配列を通過します して、何かをします キーおよび/または値を持ちます。 しかし、我々は必ずしもありません foreachのは、そのループを持っている必要があります 値をキーマップとして配列を通過します。 我々は通過することができ 値としてforeachループ配列。 HANNAHブラムバーグ:そして、私は思います あなたの質問は、to--何でしたか 暗黙的なインデックスがありますか? 聴衆:ちょっと。 MARIA ZLATKOVA:ああ。 HANNAHブラムバーグ:うん、うん。 したがって、基本的に、あなたが指定していない場合 キー、それは01になるだろう。 MARIA ZLATKOVA:うん。 ちょうどCと同じように、それはゼロです キーを指定しない場合は索引付けされています。 聴衆:申し訳ありません。 あなたが話して試みることができます 少し大きな声で? 私は少しを持っています トラブルのすべてを聞きました。 MARIA ZLATKOVA:私はごめんなさい。 ええ、もちろん。 だから、私にしたいです 再びこの上を行きますか? それともthis--です 聴衆:だから前のslide--の場合 あなただけの1秒のために戻って行くことができます。 MARIA ZLATKOVA:もちろん、申し訳ありません。 聴衆:だから二 ここで、配列にはありません キーに値を持っているように見えます、 ソートの[?因果関係。 ?] MARIA ZLATKOVA:右、右。 観客は:だから、どのように仕事をします あなたはそれがすべてまたはnoneだと言うとき。 私にとって、それは次のようになります [? FOO?]既に。 MARIA ZLATKOVA:うん、うん。 だから、再び、これは この意味での注文の地図 そこに理解されていること、 例えば、インデックス ここで0、1、2、3のように理解することができます。 再び、それはそれらを有するです インデックスは、私たちと同等です 値にマッピングされたキーを持ちます。 もしそうであれば私たちの鍵は0--残念でした。 HANNAHブラムバーグ:いいえ、 ここにチョークあります。 それは実際には本当にうれしいです。 MARIA ZLATKOVA:それは素晴らしいことです。 OK。 そこで再び、$ arrの0は次のようになります 値1のためのキー。 0の値は1のための鍵となります。 観客:ごめんなさい。 それは目に見えないです。 HANNAHブラムバーグ:用事すべての権利、。 チョークは悪い考えでした。 私はそれを取り戻します。 あなたは、キーと考えることができます 値1から0マップなど。 MARIA ZLATKOVA:うん。 これは、これは1、2、3であり、0です。 これらは、あなたの鍵することができます。 あなたはええas--それらを考えることができます。 だからではなく、持っていることの 明示的なキー、彼らがしています あると理解の一種 インデックスは0から始まります。 チョークは助けにはなりませんでした。 うん。 聴衆:foreachループのために、 我々は値として表示したい場合、 それが0にだけ自動的にインデックスのでしょうか? MARIA ZLATKOVA:うん。 これは、値のそれぞれを通って行くだろう。 聴衆:[聞こえない]など 0またはそれは単に0をしますか? MARIA ZLATKOVA:あなたが持っているだろう その後、ドル記号として言って いくつかの変数名、値。 聴衆:[聞こえません]。 MARIA ZLATKOVA:申し訳ありませんか? 聴衆:申し訳ありませんが、私は ただ覚えてしようとしています。 あなたがそれを行うことができれば、あなたはそれをどのように行うだろう 自動的にインデックス化は、単に0のでしょうか? MARIA ZLATKOVAを:だから、どのようにそれを行うだろう あなたは、特定のキー名を持っていなかった場合はどうなりますか? 聴衆:うん。 MARIA ZLATKOVA:あなただけdefine--う ちょうどいくつかの名前として自分自身を言います。 だからあなたのpsetで、君たちはかもしれません $行としてのforeach $行を覚えて、 私たちは私たち自身に言って、この$行を作成しました 我々は$行として行を通って行きたいです。 我々は持っていなかったにもかかわらず、 定義されたこの明示的な$行、 私達はちょうど行くと可能性 これは私たちの鍵となることができると言います、 だけの値のそれぞれを通過します。 聴衆:だから値が新しい変数であります 我々は[聞こえない]を格納するために作成していますか? MARIA ZLATKOVA:だから、それはありません 本質的に新しい変数。 それはを参照する変数です それらのそれぞれに配列の内部。 HANNAHブラムバーグ:それは 新しい変数名。 MARIA ZLATKOVA:うん、 それは新しい変数名ですが、 それはええinherently--ていません。 それはちょうど新しい変数です あなたはそれを行うことができます。 だから、どのようにやったん $ $行、行として行 その私たちの新しい変数名でした 私たちのforeachループで作成することができます。 これは、その前に以前から存在する必要はありません。 聴衆:あなたはを通して行くことができます そこに例を使用して、各ロジック、? MARIA ZLATKOVA:MHM。 あ、ごめんなさい。 以下に例を示します。 確かに。 したがって、各そうarray--のために それは、この配列に行くことを意味します 起こっているキーvalue--として この配列を通過します そして、最初に行くとfooを取得し、 キーfooと値バー。 そして第二に forループの反復、 それが通過し、取るために起こっています キーバズと値のかんぬん。 そして、あなたが何かを行うことができます それらのいずれかまたはその両方。 聴衆:だから背後にある考え方 値にキーポイントを持ちます、 あなたがアクセスして何に終わるのですか? MARIA ZLATKOVA:アイデアは何ですか 値にキーポインティングを持つの? それは別の、ちょうど別の大会です 配列を経由する方法 いずれかにアクセスすることができます キーまたは値、またはその両方とそれらを使用しています。 聴衆:の役割は何ですか foreachのが実行されている順序? だから我々は、追加した場合 後で配列に要素、 それらは最初のものであろう foreachの配列に呼ばれます、 またはそれは後ででしょうか? MARIA ZLATKOVA:だから何があります foreachのは、そのため ループは、の配列を通過? これは、最初に経由します 最後の要素の要素、 最後に追加された要素へ。 後で上の要素を追加した場合、彼らは希望 最初の要素はなりaccessed--します 最初としてアクセスすることが 配列の要素、 そして、あなたは、各通過するだろう ordered--の並べ替えなどの要素 注文したが、仕方ないこと それらは配列に入れてきました。 聴衆:だから、新しい要素 後で追加されましたか? そこで彼らは、彼らがなるだろうadded--ています 【における最後のもの?反復。 ?] MARIA ZLATKOVA:新しい要素can-- 基本的に、新たな要素が追加された場合、 彼らは、配列の最後に追加されますか? 聴衆:うん。 MARIA ZLATKOVA:私はそう信じています。 はい。 そして、あなたのforeachループで、 あなたは新しい要素を追加した後に あなたがそれらを介して行きます、 新しい要素だろう それはだ場合は、新しい要素accessed--こと 最後に追加され、それが最後にアクセスされることになります。 観客:あなただけの例を与えることができます 何かのことだろう[聞こえません] 値で何かを持ちます [聞こえない]または値のような、 あなたがそれをフォーマットしたいどのような? MARIA ZLATKOVA:確かに。 私は何の例を与えることができます 我々は値をどうでしょうか? だからみんなに精通しているかもしれないもの 私たちは、配列を行ってきたということです 基本的に印刷されました 各要素、 例えば、の一部として、 順序付きリストか何か。 それが意味をなすか、私たちがしたいですんto-- 観客:我々は、これらの値をプリントアウトすることはできますか? MARIA ZLATKOVA:ええ、私たちは印刷できませんでした して、基本的には$値である​​ため その具体的な値は、我々は次のようになります その中の値を印刷します。 だから我々は我々の最初の繰り返しであった場合 それを、私たちは、$値を印刷 私たちはバーを印刷することになります。 聴衆:にもあります PHPやただのforeachループでループ? MARIA ZLATKOVA:あり また、PHPのループの。 そして、彼らの論理はほとんどあり あなたが使用されてきたものと同じ。 聴衆:だから、その値はnullです。 MARIA ZLATKOVA:それは同じようなものです。 うん。 聴衆:私はお願いするつもりです。 ですから、宣言するとき 配列、あなたがする必要はありません それが何が起こっているのかサイズ伝えるために ちょうどあなたができることを意味し、あること 追加要素[聞こえない]を奪います。 MARIA ZLATKOVA:うん。 うん。 その通りです。 私たちは、配列を宣言するとき、我々 それが何であるかのサイズを言う必要はありません、 私たちはただの要素を追加することができます それの上に、後にも。 問題が解決しませんか? だから、一緒にPHPとHTMLをもたらします 私たちはよくseen--しています、 例えば、この例では、我々は 入力フィールドを持つHTMLフォーム。 そして、入力フィールドは名前だけです そしてそれはSubmitボタンがあります。 そして、あなたが押したときに送信 私たちのhello.phpファイル内のボタン、 フォームのための方法であるからです 取得するには、我々は名前では何でもアクセスすることができます このことにより、グローバル変数を取得すること そのための構文は$ _GETですis--。 そして、我々は何でもアクセスすることができます 名のそのフォームの内側のユーザー入力 そのフィールドの名前を指定することもできます。 その他の質問または任意の この具​​体例に関する質問? 聴衆:PHPはどこにありますか? MARIA ZLATKOVA:ここでは。 だから、これは、PHPのための私達の開始タグです。 聴衆:ああ、そう。 MARIA ZLATKOVA:はい。 HANNAHブラムバーグ:?=省略形です このため、PHPだけエコーです。 聴衆:ああ。 MARIA ZLATKOVA:ええ、申し訳ありません。 私はそれが明らかにされている必要があります。 HANNAHブラムバーグ:印刷。 MARIA ZLATKOVA:それはただの関数です それは、私たちが何かを印刷することができます。 素晴らしい質問です。 そうですgoing--。 観客は:そこに非常にされようとしています PHPとHTMLの手コーディングのビット クイズ1の? MARIA ZLATKOVA:がある場合もあります 解釈のかなりの量 PHPとHTMLの、必ずしも コー​​ディングの膨大な量のように、 次のように記述する必要があるかもしれませんけれども foreachループ、ループのためしかし、A。 我々のループのいずれか ここでカバー公正なゲームです。 そして、それはほとんどがそれです。 HANNAHブラムバーグ:私が準備されることになります。 同じように私たちはあなたをするように求め 、クイズ0でC関数の束を書きます 私は何をする準備されるだろう PHPとJavaScriptで同じ。 MARIA ZLATKOVA:うん。 HANNAHブラムバーグ:私が言います 私たちがいないようなlittle-- あなたは巨大なHTMLを記述するつもり ページそれは少しだという理由だけで 退屈していますが、部品があるかもしれません。 それは完全に公正なゲームです。 小さなHTMLページと同様に、完全に公正な。 聴衆:[OK]をクリックします。 どのようにJavaScriptで約だけでなく? HANNAHブラムバーグ:うん。 JavaScriptのの公正なゲーム。 MARIA ZLATKOVA:うん。 それは完全に公正なゲームです。 HANNAHブラムバーグ:私たちは得るでしょう 以下のような10分のそれに。 MARIA ZLATKOVA:SQL、再び、 構造化照会言語。 それは基本的に私たちがデータを管理することができます リレーショナル・データベース管理で システム。 それはちょうど、基本的意味します 私たちはどこかに持っていること 私たちがしたいかもしれないいくつかのデータを格納します ウェブサイト、または他のいくつかの形で使用しています。 そして、我々は、取得するためのクエリを持っています 当社のデータベースからの情報、 またはそれらの情報を挿入します。 共通ones-- UPDATEの多くは、 INSERT、SELECT、およびDELETE。 だから更新のために、これは構文です データベース内のデータを更新します。 呼ばれるこのテーブルを更新します SETを言って、テーブル、 我々はすべての中でいくつかの値を設定することができます 行何かを等しくします。 だから我々はまた、いくつかの特定を指定することができます 我々は、変更するエントリ それはWHERE使用してすることができます。 そして、我々は我々が唯一のしたいことを指定することができます 家のためのいくつかの行を変更し、 私たちは、学生のテーブルがあった場合 そして、すべての学生が家を持っていました、 私たちは唯一のいくつかの値を変更することになります 家はクーリェに等しいです、 例えば。 INSERTのために、我々は挿入することができます テーブルにある値。 だから、テーブルに挿入、 そして、値、 して、括弧内に、我々は指定します これは、挿入したい値。 だからCOL1、テーブルに挿入し、 col2が、値がval1とval2のであると。 だから、これは基本的に新しい行を挿入 値1および2を含むテーブル 列1および2の下で。 そして、我々は終わっ行くつもりです これがどのように見えるかの簡単な例 少し私達のデータベースのように。 しかし、私はこの最終問合せが 、我々はオーバー行くつもりだと思います SELECT、それだけで私たちを可能にします テーブルからデータを選択します 多分後でそれを使用することができます。 そして、私たちはこれを行う方法は、私たちです ただ、いくつかの変数に格納します。 そして、我々は、おそらく再びそれを使用することができます。 だから、SELECT星はすべてを選択することを意味します。 それはちょうど速記です すべてを選択します。 FROMテーブルWHERE、私たちが見ています いくつかの具体的な条件については、 そう列が等しいです 例えば、何か。 私達はちょうどしたい場合 テーブルからすべてを選択し、 これは単に、すべての列を選択します そして、表のすべての行。 そしてFROMテーブルDELETE colが何かに等しいです、 これはほんの一部を削除 私たちのテーブルの行 ここで我々はいくつかの特定の条件を持っています。 この場合、条件 列が何かに等しいです。 このだから簡単な例。 我々はここ、このテーブルを使用している場合は、我々 テーブルに挿入し、これらの値、 それは、新しい行を挿入します。 我々は自動インクリメントを持っていたなら、これは希望 わずか2に0から1に、当社のIDをインクリメントします。 我々は、学生からすべてを選択した場合は、 ちょうどすべてのフィールドとすべての行を返します。 年大きい場合 2016年よりか等しいです、 それは、ちょうど戻ってきます ハンナと私。 そして、私たちは選択した場合 学生からの年間のIDと年 家はそのキャボットハウスであり、ここで 、再び、ハンナと自分自身を返します。 その後、我々は、学生から削除した場合 名前はロブに等しいです、 それは、行全体を削除します。 そして、我々は設定されている場合 名前、UPDATEの学生 セット名は祈るに等しいです 家は等しいです に行くために起こっているキャボットハウス、 その後、それらの行と名前を更新します。 そして、いくつかのSQLデータ・タイプは、 CHAR、VARCHAR、INT、およびFLOAT。 これらは公正なゲームです。 私は何度も行くだろう あなたが知っていることを確認してください そして、あなたのカンニングペーパーにそれらを持っています 何それらの各文字 何のために使用されています あなたのpsetにそれらを使用し、 あなたが精通していることを確認し、 選択することで快適 あなたのpset内の別のデータ型から。 はい。 聴衆:そのテーブルは何を保存しましたか? うん、ここでこのテーブルが格納されていますか? MARIA ZLATKOVA:まあ、 今、それが保存されていません。 とにかく、ここでこのテーブルが格納されていますか? しかし、SQLデータベースに格納することができます。 聴衆:そしてここで、SQLデータベースがありますか? コンピュータでは、オンライン どこかに、サーバー? MARIA ZLATKOVA:それはすることができます 異なるものの数。 HANNAHブラムバーグ:私たちはとインタフェースしました ほとんどのphpMyAdminでSQLテーブル。 だから我々は、サーバーを求めることができます 私たちのためにそれらを保存します。 私たちは、自分のコンピュータ上でそれらを格納することができます。 MARIA ZLATKOVA:それはちょうど依存します どのようにあなた自身のためにそれをやってみたいです。 しかし、我々は保存されています それら、ハンナは述べたように、 オンラインでphpMyAdminに、上。 そして、方法を使用しております PHPとSQLは、我々はそれを保存します いくつかの変数に 私たちはを照会しました。 だから、私たちは歴史からすべてを選択した場合 USER_IDは、セッションIDに等しく、 それはすべての行を選択することになります 特定の人のための人 履歴からログインしています テーブルと行にそれらを並べ替えます。 知っているクールなものがあります そのCS50のクエリ機能 SQLインジェクションタグから保護します。 それはちょうどそれが確認しますことを意味し 入力された入力は正しいです そしてその人は誰 入力に入っています 入力しようとしていないいくつかの悪意のある 私たちのテーブルを削除するか、コード またはすべてを削除します 当社のデータベースの内部。 の概要 モデルビューコントローラモデル、 それだけで整理する方法です コー​​ドを考えます。 それは、再び設計パラダイムです。 何それが意味することは、その私たちです can--それは良い習慣です 異なる部分を分離します 我々のコードとそれらの これら三つのパラダイムに制御します。 だから、私たちの見解は、ほとんどの場合であり、私たちの テンプレート、私たちのレイアウト、道 ことを私たちは私たちのコードがどのように見えるかを設定しました。 それは主に、当社のCSSファイルおよび方法です 私たちはコードの設計を定義されていること、 基本的に。 当社のコントローラは、ほとんど何です 私たちは、PHPファイルで行ってきました。 そこで再び、での作業 我々が持っている情報 そしてどのように定義します 情報は、使用されています そしてその情報を渡します いずれかのビューやモデルへ。 そして、モデル、我々はしまし方法 ISを使用してすることは、当社のデータベースになっています だから私たちの情報がある場合 それはどこかに持っているので、格納されています 住んでいる、とのいずれかに 方法に関し、コード 我々はその情報を取得したり、その 我々はその情報を更新する方法。 MVCモデルにおけるだから、HTTP 要求がWebサーバーに送信されます。 次に、コントローラ解釈 ユーザからの要求 して、ユーザー入力を検証します。 それは我々が持っているオプションです コントローラが通信 モデルと、何かので、 私達のデータベースのような またはいくつかの他の機能 それは、情報をリレーします。 そして最後に、コントローラ ビューに情報を渡します それができるように レンダリングされ、それができること すべての人に見えるようになります Webページにアクセスします。 質問は? 驚くばかり。 そこで再び、モデル、 その機能は、再度、 情報の永続的なストレージがあり、 管理し、データを整理します。 そして、私たちが見てきたもの これまでMySQLのデータベースです 任意のデータファイルを使用することができること。 ビュー、情報の提示に ユーザー、UI、またはユーザーインターフェース。 この例では、HTMLです。 そして、我々は、最小限のPHPを持っている可能性があります。 だから、ループの反復処理すること プリントアウトされたデータの上に ビューの一部であります コントローラに反対しました。 そして、我々のPHPファイルの後、多くの コントローラのカテゴリに分類されます。 それだけでユーザーの要求を処理し、 モデルからの情報を取得します。 文書にジャンプ オブジェクトモデルは、ちょうどこの 方法HTMLに言及 文書が整理されています。 そして、彼らは木に編成しています 階層構造を持っています。 だから我々は、[聞こえない]へのアクセス権を持っている場合 文書の表現、 我々は次のように、文書で作業することができます 私たちは基本的にオブジェクトを操作します。 そして、このAを作るために ときに、少し明確に 私たちはたくさんあり​​ます 異なるタグが応答 私たちのツリー内の別のルートに。 そして、この例のために、我々 開始文書ノードを持っています。 私たちは、その後、私たちのHTMLノードを持っています それは、頭と体に分かれます。 ヘッドはその後、タイトルを持っており、 タイトルは、Hello Worldのが含まれています。 そして、私たちの体はちょうど含まれています こんにちは、世界にも。 のいずれかにそうご質問 我々はこれまでに覆われての事? そうでない場合、ハンナはなります JavaScriptので引き継ぎます。 驚くばかり。 HANNAHブラムバーグ:OK、涼しいです。 何がPHPやHTMLでアップする場合は、 またはマリアがカバーのもののいずれか、 我々は常に一時停止することができます。 私たちはより良いのやっています 時間再び、とても素晴らしいです。 そして、ちょうど戻ります 本当にすぐこれに、 あなたはすべてのを見ると 昨年の試験、この either--ここでアップします いくつかのHTMLは、この図を作ります。 または、ここにこの図だ、いくつかを作ります HTMLので、間違いなくそれを実践しています。 そしてそれは保証一つです あなたが権利を取得することができます質問。 クール。 それでは、JavaScriptのについて話しましょう そして、それは少しだ方法 PHPなどの言語と異なります C、私たちは事前に見た二つの言語。 だからナンバーワン、それがルーズです。 これは、PHPのようなものですが、C。とは異なり、 それはインタプリタ言語です。 繰り返しますが、それはようなものです PHP、C。そして、これとは異なり、 私たちはそれをuse--できるようにするために起こっています Webページで実際にうまく動作します。 それは私達が操作できるようになるだろう コンテンツとどのようにそれが見えます それが何をしますか。 我々は、Ajaxを少し参照するつもりです。 それは私たちが通信することができます 非同期的に異なるサーバで そして、の情報を得ます。 そして、これは本当にものです PHPとCからJavaScriptを分離 それは、クライアント側であることです。 PHPとCの両方があります 通常、サーバー側。 ほとんどの部分と ほぼ完全に何 我々は、少なくともで、見てきました このクラスは、JavaScript 意味し、クライアント側に作用します ブラウザが実際にあることを それを実行するための責任。 そして、それは我々がないことを意味 サーバーとやり取りする必要があります。 だから、それははるかに高速であることを意味し それは実際にちょうどそれがChromeのだから、 それはSafariの、それはFirefoxの、何でも あなたのJavaScriptを実行して、実際に使用しています。 聴衆:非同期は何を意味するのでしょうか? HANNAHブラムバーグ:ああ、どのような 非同期的に意味するのでしょうか? 素晴らしい質問です。 非同期means-- でよく、コンテンツ 私たちは、[OK]を、それを使用しています ウェブページを作成します 私たちはいくつかの情報を取得する必要があります。 だから、マッシュアップの例と、 私たちが望むかもしれないいくつかの情報 記事のタイトルです。 今、私たちは一つの選択肢をcould-- 同期を行うことです それはレッツ意味します 停止、記事を取りに行きます、 その後、記事を取り戻すと、 レンダリングが、それは本当に遅いだろう。 それは悪いユーザー体験になります あなただけ座っされるので 何かが応答するためにそこに待っています。 非同期我々はよ意味します 私たちのビジネスについて行く続け、 ページをレンダリングし、 我々は要求をオフに送信されます それは一種のに起こっています バックグラウンドで行われます。 私たちは例を使用すると思います ロブを呼び出すと言うの講義、 ねえ、あなたはこれを調べることができます 私のために私に戻って取得し、 ちょうど私とは対照的に、 電話で待っています。 だから、非同期的にそれが起こることを意味 私たちから離れてバックグラウンドで 並行して。 素晴らしい質問です。 他に何か? よかった。 我々は、より多くのへジャンプします Ajaxを使って非同期要求。 観客:JavaScript--がするん それは、モデル・ビュー・コントローラに落ちますか? HANNAHブラムバーグ:グレート質問。 JavaScriptがどこに落ちるん モデル・ビュー・コントローラと? フム。 私はそれがfall--ことができますね 私たちは通常ありません その中にそれをスキッシュしたいです パラダイムが、私は言うだろうと思い、 [OK]は、JavaScriptので、 実際に可能にするために起こっています 私たちは、データを収集し、 実際に行う、データの解釈 データに意味のあるもの。 そのように、それは非常にコントロールのようです。 しかし、それはまた、私たちができるようにするために起こっています モノとプリントのものを表示します。 そのように、それは非常にビューのようです。 うん。 だから、中種のPHPのようなものです それは一種の両方をどこにすることができます。 良い質問。 他に何か? すべての権利、素晴らしいです。 右に沿って移動します。 それでは、例を見てみましょう 私たちがどのように使用できるかの 弊社のWebプログラムの一つではJavaScript。 だから私はこれを検討します HTMLの束とのindex.html。 そして、事は、私はあなたが欲しいです 焦点を当て、このスクリプトタグです。 そして、これは[OK]を、私はいくつかを実行したい、と言います それはどこに住んで、ここでJavaScriptとです。 それはhello.jsに住んでいます。 そして、非常に多くのCSSのように、私たちができました HTMLにJavaScriptを置きます。 なぜ我々はそれを分離することができますか? うん。 聴衆:リライトすることが容易に? HANNAHブラムバーグ:うん。 これは、全体で使用する方が簡単です 別のウェブページ。 これは、クリーンなものを保持します。 それはちょうどよいでしょう。 驚くばかり。 いい答えだ。 それで良いので、これが起こっています 私たちのindex.htmlになります。 そして、ここに至るまで、私たちは、 小さな小さなJavaScriptファイル。 そして、それは言うすべては、こんにちはアラートです。 だから、何が起こるかときであります このページrenders-- あなたはどのようなWebサイトにアクセスした場合 これは、すべてのことが起こるだろうis-- [OK]を、私は、それが起こっているのさを避けます このJavaScriptコードを実行するつもり。 そして、このJavaScriptコード ただ警告こんにちは、世界は述べています。 だから私はこれを取得するつもりです フレンドリーな小さなポップアップ。 クール? それは非常に第一種の私たちのようなものです JavaScriptのプログラム、私たちこんにちは、世界。 何について少し詳しく見てみましょう JavaScriptを構文は次のようになります。 具体的には、のは、それを比較してみましょう 我々の前に見てきたCとPHP、。 JavaScriptでは、我々は、必要があるとしています VAR、変数の名前を入力し、[ その実際の値。 そして、私たちはただ、タイプを​​指定しません PHPのような、しかし非常にCのとは異なり、 例えばそこで、私たちは望んでいた場合 値50を格納するために、 C言語で、私たちが言っているだろう、 ちょっと、C、私は整数をしたいです、 私はそれを呼び出すつもりです 私は、その値は50です。 PHPでは、それは少し簡単です。 私たちは、ちょっと、私は変数をしたい、と言います 私と呼ばれ、その値は50です。 非常に似た、JavaScriptで、我々 ねえ、私は私と呼ばれる変数をしたいと言います、 その値は50です。 私が使用する後続のすべての時間 私は、私はVARを記述する必要はありません。 それはちょうど私のその時点からです。 同様に、Cで、どこ 私たちは私をintと言うと、私達はちょうど私を使用しています。 クール? 大丈夫。 ループに移動、 幸いなことに、これらのほとんど 私は、彼らがいると思うexactly--見ます 何と全く同じ ループは、のように見に行くされています あなたのループのためのCのようなもの 3を持っているとしています 、初期化をparts-- 条件、および更新。 whileループは、それはまったく同じに見えます。 私達はちょうどそれに条件を与えます。 そして、do-whil​​e文、 再び、全く同じ。 我々はそれの状態を与えます。 のは、私がover--反復処理したいとしましょう 私は何かを5回やってみたかったです。 Cでは、私たちは書くかもしれません 初期化のために私は0に等しいです。 iが5未満であり、私は++します。 唯一の違いは、JavaScriptで、 代わりに、私は0に等しいint型というのは、 我々はのvar iが0に等しいと言います。 綺麗な。 それが唯一の違いです。 そのいずれかの上の任意の質問? はい。 聴衆:だから、PHPで、それは同じです 除くが、変数のようなもの、? またはVARの例ということでしたか? HANNAHブラムバーグ:うん。 だから、PHPで、それが起こっています ドル記号であるために。 だから、$ Iイコールになるだろう 0、$ iが5未満であり、$ iが++。 素晴らしい質問です。 それではについてお話しましょう 関数宣言。 Cでは、私たちは宣言したとき 機能、我々はそれに名前を与えました 我々はそれにいくつかのパラメータを与えました。 そして初めに、私たちは型を書き​​ました。 JavaScriptでは、すべての私たち 書き込みされなければなりません キーワード機能その JavaScriptは、ちょっと、と言います 私は、関数を定義しようとしてです。 この場合には、名前の合計を有します。 そして、それは二つの引数xとyをとります。 私たちは気にしないことに注意してください x、yの種類について。 そして、ちょうどCのように、私たちは持っています このキーワード戻り、 私たちは何かを行うことができます リターンxとyのような。 そして今、我々は最初にこれを書いた後に この関数は、我々はどこに合計を使用することができます。 そして、それは完全に罰金です。 一つの本当にクールなものについて Cとは異なり、非常にされるJavaScript 関数ができることです 値のように扱われます。 だから我々はここのような何かを行うことができます 私が思うところ、私はこれをup--カバー 私は、VARの合計をカバーし part--と私たちは言いました 関数xyが戻りXプラスYに等しいです。 それが呼ばれるものです 無名関数。 これは、名前のない関数です。 これは、関数を言うのに対し 和、何とか、何とか、何とか、 これは単に機能を言うでしょう。 しかし、今私が持っているにもかかわらず、 この無名関数、 その関数は実際には単なる値です。 我々は値のように扱うことができます。 だから我々は、変数に同じことを、それを保存することができます 方法我々は、変数に50を格納することができます。 だから我々はOK、私が欲しい、と言うことができます 変数は、それは、和と呼ばれています そして、この関数です。 したがって、これら二つのことは、実際にあります まったく同じことをやろうとして、 しかし、構文が少しあります 異なると楽しいノートのようなもの。 うん。 聴衆:だからあなたが呼び出すことができます 言って無名だった機能、 和ブラケット2、5? HANNAHブラムバーグ:うん。 あなたはこの匿名を呼び出すことができます 同じように機能します。 あなたは合計(2、​​5)を行うだろう;. それは完全に罰金となります。 私は、VARの合計に等しいしなかった場合 機能、私は削除した場合 this--私はそれが私の手にあることを知っています、 しかし私は、this--を削除ふり その関数は、一種のちょうどなくなっています。 あなたはので、それを再度使用することはできません あなたはそれのために名前がありません。 それは何かを参照するのは難しいです あなたは何を呼び出すことを知りません。 良い質問。 うん。 聴衆:あなたはで合計を参照することができます xプラスyの値を持つ他の場所? HANNAHブラムバーグ:することができます 他の場所で参照和 値xプラスyは? 私はあなたが何を意味するか全くわかりません。 聴衆:だからあなたの過去半匿名 この関数は和がこれと同じです 匿名関数は、そのように合計であります あなたがcan--今変数 HANNAHブラムバーグ:右。 だから合計は変数であり、 それはactually--です だから合計はその変数であります 値が関数です。 だから、一種のある関数であり、 奇妙なことは、あなたの頭の周りをラップします 私たちは一緒に遊んでてきたので、 CあなたはCでそれを行うことはできません しかし、今、私たちは合計を呼び出すことができます 同じように、私たちはここに合計を呼び出すことができます。 聴衆:[OK]をクリックします。 HANNAHブラムバーグ:うん。 良い質問。 うん。 聴衆:だから我々は使用しないでください PHPやJavaScriptでのプロトタイプ? HANNAHブラムバーグ:いいえ、私たち プロトタイプを使用する必要はありません、 特にJavaScriptのインチ 私はそのための悪い習慣のこと あなたが行うべきではないと言うつもり あなたがするvar I = 50を記述する必要はありませんです。 あなたはわずか50 =私をやって開始することができます。 そして、ちょうど私がグローバル変数になるだろう。 それはに非常に悪い習慣です 私は明示的にVARを言うことはありません、 それはあなたが行うことができるものです。 インタプリタではありません あなたに叫ぶつもり。 JavaScriptは、かなりのようなものです あなたが欲しいものを行うことができます。 あ、ごめんなさい。 2があります。 オレンジ色のパンツに。 先に行く。 聴衆:いいえ、あなたが最初に行きます。 聴衆:いいえ、私は言っていました 私は私の手を上に持っていませんでした。 OK。 だから、呼び出しした場合 その初めて、今の和、 我々は、x、同じようにそれを呼び出します、 Y、毎回のように? HANNAHブラムバーグ:うん。 したがって、これらの2本質的 同じことを行います。 聴衆:そして、何利点 1または他を使用しますか? HANNAHブラムバーグ:いいえ利点 どちらか一方を使用します。 私はちょうど2つのあなたを見せたかったです 構文の異なる部分。 多くの時間どこ匿名 関数は、目的を持っています 場合は、別の引数であります 関数は、関数でなければなりません。 そして、我々はその中が表示されます Ajaxを使ってちょうど二。 それは何の意味もなかったのであれば、 あなたの頭の後ろにそれを格納します。 それはどこに匿名です 機能が役に立つかもしれません それは実際に価値はないので、 私たちはしているので、それに名前を与えます 一度それを使用する予定。 うん。 聴衆:もしxとyの変更後に で、同様の変化を合計しますか? HANNAHブラムバーグ:xとy変更した場合 後に、同様の変化を合計しますか? だから、これは私が実際にあります 何かを考えて、 再び、それだけで非常に異なる感じ Cからこれは値ではありません。 それは5ではありません。 それはちょうど関数自体です。 だから、できるだけ早くあなたがそれにパラメータを与えるとして、 あなたは、実際に値を計算します。 MARIA ZLATKOVA:そして あなたは関数を呼び出すことができます いくつかの値を取得するために使用します。 HANNAHブラムバーグ:右。 その通りです。 うん。 聴衆:だからあなたの場合 変数に格納し、 VARのXのように2 values​​--の合計に等しいです HANNAHブラムバーグ:うん。 だから、あなただけのVAR合計を行うことができます 2つの値の和に等しいです。 うん。 その他の質問は? うん。 聴衆:しかし、それはでしょう 和と合計を混乱させる? あなたは変数sumを呼び出した場合と同様に、 あなたは、関数の和を呼ぶのでしょうか? HANNAHブラムバーグ:MM。 mmです。 あなたが何かをした場合 以下のような、和は合計2、5に等しいですか? 聴衆:うん。 HANNAHブラムバーグ:私はと考えています 和の値が上書きされます。 だから、別の興味深いです JavaScriptのについての事 単一の変数が取ることができるということです 異なる種類の束に。 悪い習慣。 あなたが何かをするべきではありません あなたがちょうど言ったように。 しかし、C言語で、iが設定されている場合、 整数に等しいです、 我々はそれがことはないことを知っています 文字列になろう。 これはJavaScriptでのケースではありません。 うん、良い質問。 他に何か? 大丈夫。 時間のすべての権利を行います。 維持行きます。 大丈夫。 我々は、アレイを見れば JavaScriptで、ここです 文字列の配列の簡単な例。 配列は動的に成長することができます。 彼らは持っていません 同じように固定サイズ 彼らはCで行うことを私たちはアクセスすることができます ちょうど角括弧を持つ要素。 これはPHPとたくさんによく似ています 私たちはこのような場合には、言うことができるC、のような、 私は言葉JavaScriptを望んでいた場合、私は希望 0、1、2で角括弧をARRありません。 ときに我々それから、あなたはC言語で覚えていれば 配列の長さを取得したいです、 それは本当に迷惑でした。 しかし、JavaScriptで、超簡単。 私たちはすべて、.LENGTH。 それを長さを与えます。 それでおしまい。 観客:それは簡単です。 HANNAHブラムバーグ:うん、なります あなたの人生は非常に簡単。 [OK]を、存在しませんobject--。 JavaScriptの感触のオブジェクト C言語の構造体のようにたくさん そして、PHPの連想配列。 だから、私たちは見てきたもの JSONで、多くの JavaScriptのオブジェクト表記の略です。 そしてそれは、基本的な方法です 我々のデータを構造化します。 それでは、例を見てみましょう、 おそらく最も簡単。 そこでここでは、オブジェクトの例を示します。 それはCS50、クラスを格納します。 私はクラスを言うとき、私は、もちろん意味します 、ええCS50をコースをlike--ありません。 そして、あなたはそれを参照してくださいよ オブジェクト内のすべてのもの 含まれようとしています 中括弧インチ そして、我々は、フィールド名を関連付けるために開始します または異なる値を持つキー。 だから、どのようにこの種の参照を開始することができます PHPの連想配列のように感じています。 だから我々は、フィールドを関連付けるために行っていますか キー名はもちろん、文字列で、 CS50。 私たちは、インストラクターを持っているつもりです。 私たちはのTFを持っているつもりです。 私たちはのpsetの数を持っているつもりです 私たちは記録しているつもりです。 そして、注意する一つのクールなことは、すべてのです これらのことは、さまざまなタイプがあり、 それは完全に罰金です。 これは、実際には、オブジェクトに対して罰金 それはおそらく、オブジェクトのために期待です 文字列の組み合わせを有すること 数字とブールと配列 そして他のものは何でもかもしれません あなたのオブジェクトの内部にしたいです。 そして、これらがあることを行っていることに注意してください その後、名前やキー、ちょうど私達 少しコロンと同等に設定します。 観客:JSONは正確に何を意味するのでしょうか? HANNAHブラムバーグ:何 正確にJSONは意味ですか? JSONはただの略 JavaScriptのオブジェクト表記。 これは、フォーマットのだけの方法です。 うん。 それは私たちのデータをフォーマットする方法です。 Cでは、これは構造体です。 PHPには、連想配列です。 JavaScriptでは、我々はオブジェクトを持っています。 聴衆:だからCS50のオブジェクト? HANNAHブラムバーグ:CS50があります この場合、オブジェクト。 さて、どのように我々は、実際にアクセスします これらのフィールドは、これらのフィールドを変更したり。 たとえば、私たちがすることを決定したと仮定 あなたが1つ少なくPSETこの学期を望んでいました。 代わりに9の、私たちはしています わずか8を持っているつもり。 どのように我々はそれを変更するのでしょうか? ああ、間違った方法。 我々はそれを行うことができる2つの方法があります。 ナンバーワンは、ドットであります 表記と数2 角括弧表記です。 したがって、たとえば、私の場合 変更したり、アクセスしたいです 私たちのCS50オブジェクト内のpsetフィールド、 私はどうなることCS50.psetsあり、 オブジェクトのドットのように名前 フィールドの名前またはキー。 非常に同様に、それは正確です CS50を行うには同等、その後、 角括弧で、のpset。 クール? うん。 聴衆:だから、JSONがあります まだ技術的にはJavaScript、 たとえのpsetで我々 [聞こえない]それを分離? HANNAHブラムバーグ:確かに。 そこで問題は、されています JavaScriptとJSONと同等? だから、JSONは基本的に、表記法であります 我々は書き出す方法 JavaScriptからオブジェクト。 そこで、彼らはまったく同じではないです。 私はそこには、JavaScriptを言います JavaScriptでのオブジェクトがあります。 JSONは、これらのオブジェクトを取り、 それらを印刷し、それらを表示します または素敵な方法でそれらを格納します。 だから、JSONはプログラミングではありません 言語JavaScriptがある方法。 それはのためだけの表記です JavaScriptでの私たちのオブジェクト。 うん。 聴衆:だから何を正確に [聞こえない]完了? HANNAHブラムバーグ:確かに。 だから、これは実際には何もしません。 これは、アクセスするだけの方法です。 それでは、我々が変更したいとしましょう 問題セットの数 八から九から。 私たちがやっていることは何かをです CS50.psets = 8のような;. うん、偉大な質問。 これはあなたの構文を示すことです。 実際には何も有効ではありません。 質問は? 右に沿って移動します。 それでは、どのように簡単な例を見てみましょう 私はあなたにそれを言ったため、JavaScriptが動作します これらすべてのクールなものを行い、 私たちは、ウェブページを変更することができます。 それでは、実際にアクションでそれを見てみましょう。 したがって、例えば、このHTMLファイルを取ります。 そして、私はあなたが集中したい事があります ボタンであり、この特定のタグ、 IDのsearch_buttonと。 それはちょうどページです。 だから今のは何を見てみましょう 私たちは、実際に行うことができます。 まあ、時と仮定 あなたはそのボタンをクリックし、 我々はalert--を作りたいです あなたはボタンをクリックしました。 我々はそれを行うことができます方法を見てみましょう。 だから、これはものではありませんwindow.onload-- あなたはクラスで見てきたこと、したがって、 クイズのためにそれを知っている必要はありません。 しかし、これは基本的にOK、呼び出し、言います この機能は、ときに、ウィンドウがロードされます。 だから、セットアップコードのだけの種類です。 そのことについてあまり心配しないでください。 私はあなたが集中したいことは、ここにあります。 我々は、VARのsearchButtonに等しいと言います document.getElementById search_button。 お察しのように、 これが何をするか、それが言うです [OK]を、要素を探しに行きます IDのsearch_buttonと。 そして今、我々は持っていること 私は、実際の要素 に格納するつもり 変数searchButton。 そして今、我々は実際にその要素を使用することができます それを変更する、またはその値にアクセスし、 そういうもの。 私たちは実際に開始することができます ウェブページに係合します。 だからここに私は今、私が持っていることを、[OK]を、言います それがクリックされるボタン、 この匿名関数を呼び出します。 だから、これはどこに匿名で 機能が便利になります。 そして、この関数は何をするのでしょうか? まあ、それだけで、これを呼び出します アラート機能は、それは、言います あなたは[検索]ボタンをクリックしました。 私はどこに行けば何が起こるのだろう このHTMLが住んでいると私はボタンをクリックし、 私は空想少しアラートを取得します それはあなたがボタンをクリックしたと言います。 だから、物事がに焦点を当てます here--のdocument.getElementById 特定のHTMLを取得 指定されたIDを持つ要素。 そして今、我々は設定することができます ときにどうしますか その特定の要素がクリックされました。 観客:我々はその中のすべてを置く必要がありますか? HANNAHブラムバーグ:申し訳ありませんか? 観客は:私たちが持っていますか 物理的にすべてのことをコーディング? HANNAHブラムバーグ:私たちはしなければなりませんの 物理的にすべてのことをコーディング? はい。 迷惑なのこの種ではないですか? これは、コードがたくさんあり​​ます。 観客:あなたが何かをインポートすることができます。 HANNAHブラムバーグ:右。 私たちは何かを使用することができます。 そしてparticular--にああ、それはです 私に言って、私はセクションを教える必要があります。 具体的には、してみましょう jQueryのライブラリを使用し、 それは本当にあったため、 長いと本当に迷惑 私はそれを簡略化できるようにしたいです それは短く、書き込みが容易になります。 だから、jQueryのは、JavaScriptのライブラリです。 だから、JavaScriptはプログラミングです 言語; jQueryのは、ライブラリです。 そして、それは簡単に物事の束を作ります。 これは、変更と横切る作ります HTMLドキュメントはるかに簡単。 これは、簡単にイベントを処理することができます。 これは、アニメーションが容易になります そしてそれは、Ajaxが簡単になります。 それでは、の二つにジャンプしてみましょう 今それらの事。 すみません。 私たちが行う前に、いくつかの基本的な構文。 これは、ほとんどのに呼ぶものです jQueryのライブラリは、のように見えます。 我々は、このドルを使用sign-- PHPへの接続記号ん、 ただの名前をinconvenient-- セレクタ、ドット、次にアクション。 それでは、いくつかを見てみましょう その具体的な例。 だから、これは実際には同じです イベントスライドからコード。 したがって、この長い、醜いものになります この非常に良く、小さい事。 それでは、これを打破してみましょう。 これは、[OK]を、jQuery--このドルを言います jQueryのをsign--、私のウィンドウを見つけます。 だから、セレクタです。 それはロードすると、この関数を呼び出します。 だから、内部のすべてのものです。 OK。 ここまでは順調ですね? 大丈夫。 さて、jQueryのは、私を見つけます IDのsearch_buttonとの事。 そして、それは何をクリックすると、 この関数を呼び出します。 そして、この関数の まったく同じ。 ただ警告の少しを行うには、 あなたは[検索]ボタンをクリックしました。 だから、本当にうれしいです。 それは実際に凝縮し、 私たちのコードを簡素化します。 私はどのようにしていることを知っていました それは、ID search_buttonです クラスsearch_buttonを好きではありませんか? 聴衆:ハッシュタグ? HANNAHブラムバーグ:うん。 このハッシュ記号は、それだけで、CSSのようなものです。 ときに我々だから、CSSで、覚えています IDで何かを選択したかったです、 我々は、シャープ記号を使用していました。 そして、我々は選択したいとき クラス別の何かが、私たちは、ドットを使用しています。 よかった。 理にかなって? だから、jQueryのは、になっています ちょうど私たちの生活を楽にします。 うん。 聴衆:だから私は少し困惑しています 匿名関数がどのように動作するかを。 あなたはこの匿名希望者に名前を付けてください 機能、機能? それはどのように呼ばれているのですか? HANNAHブラムバーグ:確かに。 だから、この関数は単にキーワードであること 私は関数を定義しようよ、と言います。 聴衆:ああ、[OK]をクリックします。 HANNAHブラムバーグ:OK? そして、我々はとして渡し 引数to--のは、見てみましょう クリック機能に、このインナー選びます - 。 そんなわけで、そのための機能、 この無名関数、 実引数になります。 だから我々は、JavaScriptで覚えています 値としての機能を扱うことができます。 聴衆:ああ、[OK]をクリックします。 HANNAHブラムバーグ:うん。 私はそのような「ああ。」 ニース。 その他の質問? 時間? MARIA ZLATKOVA:良いです。 良い。 HANNAHブラムバーグ:恐ろしいです。 いくつかの簡単な便利なjQueryの。 私は行くつもりはありません これらのすべてを。 これらのスライドになります オンライン少しアップ 後で、あなたは確認することができます 少し後でアウト。 しかし、基本的には、一般的な 私たちが言うところのパターンを保持しており、 [OK]を、ちょっと、jQueryのは、ここに私はです ここで選択した後は、アクションです。 そして、あなたはアクセスのようなものを行うことができます フォームの値は、一部のHTMLにアクセスします、 ときに、ユーザーの動作を制御 フォーム、そのようなものを提出します。 はい。 聴衆:だからで 試験は、我々が必要としています から非常に多くのことを知っています jQueryのドキュメントを参照してください。 だから我々は、jQueryのをコピー/ペーストすることを与えられました 私たちのチートシートに文書化、 どこに行が描かれていますか? 私たちが知っている必要がありますどのように多く、気に入りましたか? HANNAHブラムバーグ:グレート質問。 質問です 基本的にあなたのことを考えます jQueryのドキュメントにアクセスすることはできません テスト中に、どのくらいはあなたをすべき 知っていますか? 我々はあなたが来ることを期待していません いくつかのランダムな機能を備えたアップ 我々はGoogleにあなたを期待していること。 公正なゲームです物事は私が希望しています 、一般的な構文だけのようなものを言います IDによって選択することができると ただ、CSSのようなので、class--こともできます。 そして、実際の機能 その人自身が、私たちはおそらくあなたを教えてあげましょう。 うん。 聴衆:だからあなたが選択 クラスによってドットを意味します。 HANNAHブラムバーグ:はい、まさに。 良い。 あなたはクラスで選択すると、それが起こっています シャープ記号の代わりにドットします。 はい。 聴衆:あなただろう 違いを乗り越えます IDでとクラスによって選択の間に? HANNAHブラムバーグ:確かに。 選択の違い クラス別IDと選択。 だから、マリアが言ったように 少し先に、そこ のみ1つのHTML要素であることができます 指定されたIDと、クラスのに対し、 それはたくさんのグループに私たちを可能にします 一緒の異なる要素 そのように関連している事、 なく、全く同じ。 それは質問に答えるでしょうか? 驚くばかり。 はい。 観客:あなたは複数持っている場合はどう 同じクラスにあるもの? HANNAHブラムバーグ:何が起こります あなたは複数のものを持っている場合 同じクラスはありますか? したがって、たとえば、私たちはしている場合 ただ純粋なJavaScriptを使用して、 我々のような何かをするだろう document.getElementsByClass。 そして、それが実際に何をしますか 要素の配列を返します。 そして、あなたは反復処理するか持っています 彼らはあなたが望むどちら見つけますか。 それは与えることはないだろう あなた単一の要素。 それはあなたを与えるために起こっています 要素の配列。 素晴らしい質問です。 他に何か? 驚くばかり。 だから私は、あなたが精通している場合だと思います 任意のjQueryのは、PSETで見ました あなたが行ってもいいことがあります。 質問? あらいやだ。 私は実際に教えることがあります。 リラックス。 それは大丈夫です。 私はそこに着くでしょう。 のは、アヤックスについてお話しましょう​​。 だから、AjaxはA--もあることを行っています、 それが何の略かで開始してみましょう。 それは頭字語です。 これは、非同期の略 JavaScriptとXML。 そして、XMLは、基本的になるだろうさ [聞こえない]我々のデータの種類に。 しかし、我々は実際にはXMLを使用していません。 その代わりに、私たちは、JSONを使用しています。 したがって、基本的に、それはいくつかのですdata-- 非同期、JavaScript、およびデータ、 この場合、JSON。 我々が述べたように、私たちの目標は、 少し早く、 作ることができることです 要求、その要求を持っています その事 背景が、継続 私たちがしようとするされたものは何でも。 そして、その情報である場合 準備ができて、そして、我々はそれを組み込むだろう。 それでは、どのようにこれを見てみましょう 実際のように見えます。 そして、これは、あなたがすべきです おなじみの少し pset8から、人はあなただけになりました。 そこでここでは、有効なjQueryのです その私達がかもしれない機能 このドル記号about--知りたいです。 だから、jQueryの関数、.getJson氏は述べています。 そして、何この関数が行うことは、それであります URLと一部parameters--を取ります 私はケースで考えます pset8、それはのようでした、 URLはarticles.phpたと パラメータは=いくつかの郵便番号を行いました。 そして、それはOKに要求を行い、言います 指定されたパラメータでこのURL。 そして、それはちょうど起こります。 それが完了すると、それはどちらかです 正常に完了に行きます またはそれは失敗するだろう。 だから、これはコールと同等です ロブとは何かをする彼に尋ねます。 彼が戻って呼び出したときにそして、彼はどちらかです 私が行っているか、私は失敗したと言うつもり。 あなたがいる場合にはそう 行って、あなたが言う、[OK]を、私は終わりです。 そして、あなたは、この関数を呼び出します。 この場合には、になるだろう いくつかの情報を受け取る関数。 我々は通常気に一つは、データです 私たちは実際に返されたデータ .getJSONを呼び出した結果として。 そして、あなたはそれで何かを行うことができます。 だからpset8の場合には、 我々はそれをリストとして表示されます。 失敗関数になるだろう 要求が失敗した場合には呼び出されます 何らかの理由で。 そしてpset8の場合には、 我々はそれをCONSOLE.LOG。 その上の任意の質問? うん。 聴衆:私たちは、関数θを使用することができます 代わりに、関数の、textStatus、jqHXR。 HANNAHブラムバーグ:確かに。 そうそう、私はPSETで考えます、 私たちは関数データを見ました。 だから、それだけでOK、はいthe--です。 それは我々がPSETで見たものです。 それは完全に罰金です。 これらはあなたが望んでいただけの場合あり より多くの情報を引き出すために、 これらは、そのものです あなたは.getJSONから得ることができます。 良い質問。 他に何か? うん。 聴衆:だから.getJSONは、Ajaxのですか? HANNAHブラムバーグ:[OK]をクリックします。 だから、これはトリッキーな部分の一種です。 それは可能にするjQueryの関数であり、 あなたの非同期呼び出しを行います。 そして、それらの非同期呼び出し、それはです 私たちは、Ajaxのように言及してきました。 うん。 それはに私に本当に長い時間がかかりました 私が学生だったときに引き離します。 観客:あなたは再びそれを言うことはできますか? HANNAHブラムバーグ:うん。 私は再びそれを言うことはできますか? この.getJSON機能、 それはjQueryの関数です。 そして、それは作るために起こっています 非同期呼び出し。 そして、これらの非同期呼び出し、我々はしました アヤックスとしてそれらを参照して。 その他の質問は? 我々は左だけで数分を持っています。 そしてマリアはに行きます セキュリティを包みます し、我々はつもりです ちょうど約行われます。 MARIA ZLATKOVA:恐ろしい、[OK]をクリックします。 だから、これはただのカップルを取りますis-- この上を見て秒。 そして、これは本当に素晴らしいものではありません。 なぜ、誰かが私を伝えることができますか? 何FOOで起こっていると可能性があり 潜在的に悪いものになり、 それは何と呼ばれるのですか? うん。 聴衆:もしの主張 12以上の文字で渡されました、 それがオーバーフローする可能性があります。 MARIA ZLATKOVA:右。 パーフェクト。 それはなんと呼ばれていますか? あなたはそれを言及しました。 聴衆:バッファオーバーフロー。 MARIA ZLATKOVA:うん、バッファオーバーフロー。 だから、これは私たちに何かあります バッファオーバーフローと呼びます。 そして、我々は、FOOの内部を参照してください 私たちは、バッファ、Cを定義しました、 12の大きさ。 しかし、主に、私たちにはありません すべてでどのような方法で確認してください argv1--ようにするかどうか 第二引数ました。 私たちは、かどうかはチェックされません その大きさが適切です。 だから私たちが持っていた場合 特に悪質なユーザー 誰だったいくつかの引数に入れ 12よりも長く、その後、潜在的 その範囲外の 引数には、いくつかの実行可能なコードを持っていました 彼は悪い何かをしようとしていたこと それと;この、何が起こりますか、 リターンを上書きすることになります foo関数のアドレス、 ときに関数を引き起こし そのコードを実行するために戻って。 そして悪いことが起こる可能性があります。 これは、すべての人に意味がありますか? そして、どのように我々はこの身を守ることができますか? 助言がありますか? 基本的には、内部 潜在FOO、どのように 我々は確認するためにチェックすることができます それが起こることができませんか? 対象:サイズ12を超えた場合、 あなたは追加のメモリを割り当てるでしょうか? MARIA ZLATKOVA:提案は、割り当て サイズの追加メモリを超えました。 実は、私たちは何かaを行うことができます それよりも簡​​単に多くにも。 私達はちょうど文字列の長さを得ることができます 入力された引数の、 それが小さいかどうかを確認 か等しいです12-- 我々はそれを望むものです 私たちは望んでいないためであると それが私たちのバッファの境界を超えています。 そして、それがない場合は、我々 引数を指定して作業することができます。 それがない場合そして、私たちは、実際にしたいです ユーザーに潜在的YELLOします。 しかし、これは、我々はそれを行うだろうかです。 はい。 観客:あなたはでした memcpyを実際に素早くを説明しますか? MARIA ZLATKOVA:ああ、申し訳ありません。 はい。 memcpyのはOK、残念is--何でも取ります。 memcpyのは、どのような取り バーでは、何が渡されます コマンドライン引数としてfooの上に。 だから、argv1を取るために起こっています。 Argv1はここにバーと呼ばれています。 だから、バーを取るために起こっていると それは、cにコピーするために起こっています。 聴衆:[OK]をクリックします。 MARIA ZLATKOVA:そして、それに起こっています 3番目の引数はちょうどいいcopy-- どのくらいには、cにコピーするために起こっています。 聴衆:ああ。 したがって、この1のコピー、それがすべて。 MARIA ZLATKOVA:うん、 それはそれのすべてをコピーします。 うん。 まず、バーがないことを確認してください それはポインタだからヌルに等しいです。 その後、我々はバーの文字列の長さを取得します。 我々は、それがだことを確認してください 12以下。 そして、我々はしましたので、 私たちが実際にすることができ、確認しました memcpyを、それはOKだということを確認してください。 質問は? よかった。 私は2つの真または偽の質問があります。 誰もがすぐに教えてもらえます これらが真か偽ですか? はい、それは偽です。 その通りです。 それらの両方はfalseです。 だから、単一のパスワードを使用して 本当に良いアイデアになることはありません 誰かが知っていれば理由 あなたのパスワード、彼らができるだけ 他のすべてのアカウントにアクセス。 そして、アイコンは何もしません セキュリティを確保します。 我々は通常、HTTPSを探す必要があります 代わりにHTTPとURLの。 そして、いくつかの他のタイプの 我々が述べた攻撃、 ダビデはで言及していること 講義は、SQLインジェクション攻撃。 我々はすでに我々がdon't--場合ことを見ました CS50クエリ機能は確かにそのSQLを作ります インジェクション攻撃を行うことができません。 しかし、我々は、CS50を使用していない場合、 引用、引用終わり "クエリでは、" 私たちは、ことを確認する必要があります ユーザ入力は、実際にいくつかのSQLではありません すべての原因になりますクエリ 私たちのテーブルが削除されます またはに悪い何か 私達のデータベースで発生。 セッションハイジャックがあります 攻撃の別のタイプ ときにいくつかの悪いことが起こります 人はいくつかの犠牲者のセッションを使用しています ログイン情報にアクセスするためのID。 だから、非常に簡単な例です 以下のような私たちは公共のコンピュータを持っている場合、 そして、悪い人のログで、その後、 それらが保存されているクッキーを持っています。 そして、クッキーはセッションのために変更されません。 その後、我々は被害者がで行く持っています して、ウェブサイトにログインします。 クッキーは変更されません。 特定のセッションのために。 そして被害者はにログイン ウェブサイト、その後の葉。 戻りそして人 その後、まだ彼らのセッションIDを使用することができます 自分の情報にアクセスします。 だから、の一例です どのように発生することがあります。 そして、私はあまり気にしないであろう 特定のコードか何かについて これを引き起こす可能性があり、そのような、 しかし、どのようなアイデアのいくつかの並べ替えを持ちます このに関与変数です。 そして、ヘッダを操作します データは、攻撃の別のタイプであります それは、ダビデはについて話していました。 そして、それはちょうどを指し、 ときに何が起こりますか 応答、HTTP 私たちのヘッダの内部応答 適切にサニタイズされていません。 例えばfields--のいずれか、 誰かが、ヘッダーの1を上書きした場合 以上のものを格納するための値 彼らが実際にcontain--とすべきです 例えば、200を含んでいます [OK]をステータスコード、彼ら 悪意のある行うことができます 物事それらが想定していません。 しかし、私はあまりにも心配はありません 特定のコードについて多く それは、これを引き起こす可能性があり、 理解のちょうどソート そのような高レベルのもの。 私はこれがすべてだと思います 私たちがカバーするために持っています。 アメージング。 誰もがいずれかの上の任意の質問を持っています 私たちがカバーされ、物事の? はい。 聴衆:だから一種の より多くの物流質問。 内容は主に焦点を当てて クイズ1後のものに? MARIA ZLATKOVA:だから 質問は、コンテンツです クイズ1の後に、主なものに焦点を当てましたか? そこで焦点は後にあり 例外とクイズ1、 私たちは、物事に集中する必要があること pset5とデータ構造の多く 我々はカバーされていること。 そして、我々は、我々が言うことができません 前に何かを無視することができます それは同様にそれに基づいて構築されているため、その。 だから、に焦点を当て、プラスpset5材料 リンクリスト、スタックを含むように、 キュー、およびすべてのもの ハンナは渡ったことを。 HANNAHブラムバーグ:右。 ええ、私たちは、すべてのCのものの上に行ってきました で非常に非常に迅速に開始します。 しかし、それを確認してください。 戻って、クイズ0件の口コミを見て。 カップルより多くの物流のノート、 ただ一方で、私たちはあなたの注意を持っています。 私たちは、営業時間を持ってしようとしています 月曜日と火曜日の夜に両方。 彼らは、MD 119であることを行っています。 これには、すべてのウェブサイト上にあります あなたはそれ、何の心配もなくが聞こえない場合。 MARIA ZLATKOVA 11:00 8:30。 HANNAHブラムバーグ:うん11:00 8:30。 私たちはそこになるだろう。 私たちが質問に答えることがあります。 それはかなり寒さと楽しいです。 君たちはどんな質問をすることができます あなたはクイズ1に持っていること。 そして、クイズ1がオンになっています 水曜日、とても幸運。 何か質問がある場合は、多分 ここでは1対1を私たちに話を思い付きます。 クール。 本当にありがとう。 MARIA ZLATKOVA:ありがとう、みんな。 聴衆:イェーイ。 [拍手]