DAVIDマラン:すべての権利、我々は戻ってきました。 励起するだから、 結論、私たちの最後のセクション Webプログラミング、私に 我々は一般的な用語として使用したいと思いました いくつかの残りのトピックをキャプチャします。 の終わりにそのように 日、私たちは実際にやります ハンズオンWebプログラミングの少し JavaScriptをと呼ばれる言語で。 そして、私たちは見てみようと思います 画像に関連するもので、 そして何かを発見 密か画像に隠されました、 また、Googleのを見てみましょう マップAPI、アプリケーション・プログラミング 何かのようなインターフェース、 ソフトウェアのタイプを代表します それはますますとです 今日自由に利用できます。 しかし、なぜ我々は、ルックを取ることはありません この世界に成分で 私たちは、この種のしてきたこと 当然の服用して存在します いくつかの時間のために、データベース。 過去の日のためと 我々が想定してきた半分 私たちは、データベースへのアクセス権を持っているが、 データベースには何の問題を解決できますか? それが私たちのために何をするのでしょうか? それは何ですか? AUDIENCE:[聞こえません] DAVIDマラン:すべての情報を保持し、 情報の[OK]をクリックし、どのような種類 あなたはそれに置くことがあるかもしれませんか? AUDIENCE:[聞こえません] DAVIDマラン:すべての情報 あなたがそれに入れて、あなたが戻って取得します。 それは本当です。 そして、典型的なウェブベースのサイトまたはウェブ上 アプリケーション、どのような情報の種類、 具体的には、あなたがに入れるのでしょうか? AUDIENCE:[聞こえません] DAVIDマラン:ユーザー。 したがって、ユーザーは何ですか? AUDIENCE:[聞こえません] DAVIDマラン:OK、登録 サイトのユーザー。 そして、それはに何を意味しています 店舗利​​用者の情報? 何がユーザーを構成しますか? ユーザーが何を持っていますか? AUDIENCE:[聞こえません] DAVIDマラン:ええ、個人的 データ、と私はそれが好きです。 それでは、より正確にしましょう​​。 したがって、ユーザーは、通常、名前を持っています、 ユーザーは、他に何を持っているのでしょうか? AUDIENCE:[聞こえません] DAVIDマラン:addr-- OK、 そう姓、名。 それは良い。 実際に、のは修正しましょう それが起こっているので、その ための機会を開くために 議論、まだ、さらに。 姓、名、性別。 ある種のID。 ほかに何か? 私も、前に何かを聞きました。 電子メール、郵便アドレス。 それでは、そこに一時停止し、今考えてみましょう 私たちは、データベースに保存しているではありません、 それはおそらくだから、なぜbut--なく、 ユーザーを登録するとことは明らかで、 あなたはいくつかの時間のためにそれらを覚えておきたいです。 あなたはそれがしたくありません 単にRAMに格納されます そのためforgotten--します それでは、どのように焦点を当ててみましょう。 それはでていることが判明します データベースの世界では、 少なくとも2種類のこれらの日があります。 SQLデータベースと呼ばれるもの、 構造化照会言語、 または、かわいく、命名 SQLではないのNoSQL、。 後者は かもしれないものの例 オブジェクト指向と呼ばれ、 またはオブジェクトストア、データベース それは、オブジェクトが格納されず、言い訳 私は、のように我々はすぐに、行が表示されます。 だから我々は、上のちょっと注目します これらの最初の、つまり、SQL データベース、それだからこその場合 誰にも、すでに馴染み Excelの使用している人や GoogleスプレッドシートまたはApple 数字または任意の標準 スプレッドシートプログラム、 または、同等に、または より巧みに、 マイクロソフトのようなもの アクセスまたはOracle やMySQLやPostgreSQL、そのすべて 実装のための製品名であります 次のアイデアの。 リレーショナルデータベースは、単純です 行と列を持っているもの。 そして、行と列によって、 私は、文字通り何かを意味します このようなので、ここで我々が​​持っているかもしれません フィールドの名前とこちらにそのタイプ。 そして実際に、私を聞かせて 今これらをマッピングするために開始します。 だから、実際に、私は知りません なぜ私は別のグラフを描きました。 この単純なを維持してみましょう。 私たちは右ここにあります 私たちのテーブルの始まり これは、フィールドの名前です。 これは、データ型であり、 そして、タイプすることによって、私は次のような意味です。 それは数であり、それは、文字列です 単語のような短い文字列、 それは、段落であります 画像のようなバイナリデータを、? そして、ちょうどこれをいじめるしましょう 離れてちょっと。 したがって、最初の名前、番号、 文字列、text--の大きな塊 AUDIENCE:[聞こえません] DAVIDマラン:はい、そう文字列。 そして、データベースのコンテキストでは、我々はよ 通常、このchar型のフィールドを呼び出します。 私はちょうど私たちがしているが、今の文字を言いますよ 現時点でこれを改良するために行きます。 文字フィールド。 姓は、おそらく同じです。 性別? 男性または女性、それ char型のフィールドである可能性があります。 それはどちらかの引用、引用終わりかもしれません 「男性」または引用、引用終わり "女性" またはそれはメートルまたはfである可能性があります。 あなたはより包括的になりたい場合は、 あなたは3番目の値が必要になる場合があります または完全に他のフィールドのいくつかの種類。 そして、あなたは真偽を使用することができます。 フィールドは、雄と呼ばれる、とすることができ あなたは真または偽の言うことができます。 しかし、それは必ずしも取得しません あなたが望むかもしれないすべての情報。 だから、別のタイプがありますが判明します ここで役に立つかもしれないフィールドの 一般的なデータベースでは、と呼ばれます それは文字フィールドである列挙型、 ただし、設計者は、に行きます 可能な値を列挙し、 引用、引用、引用終わり "男性"のような、 引用終わり「女性」など。 だからどのような値 あなたのデータベース内にあります、 文字ベースのは確かですが、 それはそれらのいずれかの値を指定する必要があります。 私たちは、おそらく望んでいないだろう 姓または名の列挙。 そうでなければ、我々は持っているだろう 名前のように、列挙します 文字通りあらゆるから派生 可能姓と名。 [OK]を、ので、IDはID何をすべきですか? はい、ので、多分数。 それでは、に固執しましょう その今のところ、数。 そして数によって、数の 今少し広すぎます。 第二の終わりのための 日、私たちのように感じます もう少し正確でなければなりません。 番号は次のように意味するかもしれません、それを 1.236のようなものである可能性があります。 そして、それはおそらくありません 我々はIDによって何を意味します。 我々は、おそらくIDとはどういう意味ですか? AUDIENCE:[聞こえません] DAVIDマラン:ああ、[OK]を、ので、 多分それは偶数ではありません。 多分それは実際に一意識別子 それは、ユーザー名などの文字列、です。 だから絶対に、である可能性があります。 私は誰かおそらくだと思います しかし、数値の意味。 それでは、それに滞在してみましょう。 数のどのような? より多くの整数をprecise--ものです。 0、1、2、3のようなので、数 私たちは、この整数呼ぶことにします。 そしてその後も、私ができました つまらないことにこだわること、それはです ない本当にただ あなたが望む一般的な整数。 おそらく、負の値を望んでいません 理由だけで、それだけで奇妙な感じ。 おそらく、正の整数をしたいです。 だから、あなたも表現することができます データベースにその、 しかし今のところ、我々は整数を言いますよ。 Eメール? これはおそらく、何をjust--のですか? AUDIENCE:[聞こえません] DAVIDマラン:それは電子メールです、 それは右、文字ですか? それだけのようなファンキーなキャラクターを持っています 「時」のシンボルまたは何か他のもの、 それはまだ文字フィールドです。 そして、住所? 文字フィールド。 だから、素敵な始まりですが、 それでは、もう少し正確にしましょう​​。 だから、中にいることが判明します データベース、多くの場合、あなた より洗練された以上の選択肢を持っています これらの事のバージョン。 実際には、典型的なSQLデータベース、SQLで、 より一般的に、リレーショナルデータベース、 行を持つデータベース そして、列、多くの場合、あなた のタイプではないだけを指定して取得 私はいくつかの部屋を作ってみましょうfield-- here-- だけでなく、長さ。 だから、最初の名前どのくらいですか? 私はD-A-V-I-D、と思います。うん、わかりました おそらくちょうど半​​分のように気分を害し 部屋の人々の、右、 あなたの名前は5よりも長いので、 文字なので、5は少し利己的です ナイーブなので、より良い値は何ですか? 10、すべての権利、と私は思います 私たちは部屋でOKです。 13? 30? なぜ私が取ることはありません 以前のアプローチときに我々 配列やメモリについて話していましたか? なぜ私はちょうど千のように言っていませんか? 誰の名前が起こっています 千よりも長くします。 押し戻します。 AUDIENCE:[聞こえません] DAVIDマラン:うん、それはです 無駄な、右、特に ほとんどの名前があ​​る場合にのみ、5または10 15文字が、それは非常に無駄です。 だからあなたは何を知っていますか? これは難しい質問の一種です。 今、我々は確かに英語を分析することができます 他の言語にも対応の名前 よく、何で、把握 average--平均は本当にありません maxがあるものだus--助けます おそらく、私たちが本当に欲しいもの。 しかし、それは私たちも持っているが判明します ここで型を超えるいくつかの選択肢。 典型的なSQLデータベースでは、あなた char型のフィールドと呼ばれるものをしています また、varchar型、V-A-R、 変数char型のフィールドのため。 その差はこれです。 char型のフィールドには、デザイナー、 事前に指定する必要があります フィールドの正確な長さ。 そのため、おそらく最初の名前 以下のような20は一種の安全な感じ。 にいくつかのグーグルをしなければならないかもしれません それが十分で実際に安全ですかどうかを確認します。 21での名前はおそらくあります 文字は、今のところ、20を考えます 安全です。 char型のフィールドが暗示します あなたのデータベース内 20と常に20文字を使用しています。 今ではそれらのちょうどD-A-V-I-D、15だ場合 ちょうど空白文字であることを行っています、 しかし、あなたはまだ、すべての20バイトを使用しています。 varchar型のフィールドは、対照的に、意味します 文字列は最大20文字でなければなりません しかし、それは5だけだ場合、 あなただけ使用するつもり 以下のための5、または多分6 終わりに特別な値、 その0のように、我々はそれを議論しました 文字の終わりを意味し メモリ内のシーケンス。 だから、ときに思います あなたは、charを選択する可能性があります varchar型対、そのトレードオフを与えられましたか? シャアはその文字数、varchar型を使用しています その多くの文字以下を使用していません。 AUDIENCE:[聞こえません] DAVIDマラン:OK、あなたが知っています 文字列の長さはかなり説得力のあります ちょうど場合チャー、「原因を使用するには あなたはそれを下に置く、それを知っています。 そしておそらくそれはジッパーのために本当です コー​​ド、米国では、少なくとも、02138、 常に5になるだろう あなたまでの文字がダッシュ4を追加します。 しかし、あなたがのためにいくつかの値を持っている可能性があります これはあなたが常に長さを知っています。 それとも状態のシンボル、 ニューヨークのためのNYのような、 そして、米国のマサチューセッツ州のためのMA。 たぶん、あなたはいくつかの状況がありますか それは完全に合理的だところ、 しかしそのロジックによって、なぜです 私たちもこれをover​​thinking? なぜ私たちは使用しないでください varchar型、その後、私達はちょうどよ 常にとにかく2つの文字を使用しますか、 常にとにかく5文字を使用できますか? 理由だけのためのvarchar型を保存しません すべて、そのロジックによる? キャッチがあるに違いありません。 AUDIENCE:[聞こえません] DAVIDマラン:でした 何か間違ったことを書きます。 だから、それは本当です。 しかし、その後も、彼らが使用することはできません 私は割り当てよりも多くのメモリ。 私はまだ最終的なを持っています 長さにわたって言います、 そう、彼らは誤って作成することはできません その間違いが、良い考え。 これは、より微妙なのですが、それは非常に関連するです 私たちの議論に、実際には、配列の 以前のリンクリスト。 これは、場合、データベースことが判明します それはすべての値があることを知っています 固定長の、たとえ これらの値の一部は、空白であります 審美的にブランクの一種、 D-A-V-I-D、次いで15ブランク、 すべての場合には、ことが判明します フィールドが同じ長さであり、 アレイは、そのもののすべてを持っていたのと同じよう バックするように背中合わせにする背面に あなただけのプラス1次へ取得することができ 値、データベーステーブル内の同じ考え。 あなたのキャラクターのすべての場合 文字列が同じ長さです、 あなたは、ランダムアクセスと呼ばれるものがあります。 すべての文字列は、である場合 長さ20、あなただけではないん やるプラス1あなただけやるプラス 20、+ 20、+ 20、+ 20、 あなたは非常に迅速にスクロールすることができます またはすべてのデータを検索。 変数char型のフィールドは、対照的に、 常に20文字を持っていません。 その後、20とを持っている可能性があります 15、次に19、次に10、 ので、検索したい場合は それを介して、あなただけ盲目的にできません 次の1に到達するために20バイトを追加します。 あなたは文字通りを検索する必要があります ためのデータ構造のエッジ あなたがする場合は、ギザギザです。 それは一種ので行くとアウトベース 文字列の実際の長さに。 だから、長さ、などを知っているとき カリームは、char型のフィールドを使用し、言います あなたはそれを得るため、 であることの効率性 より速く、それを検索することができ あなたがデータを探しているときに、 そうでない場合は変数を使用します。 残念ながら、私は良い答えを持っていません 名前はどうあるべきかの長に、 しかし、のようなもののために 名前は、私が言います varchar型が一般的です それはないだろうので、 皆のための一定の長さにします。 20、私は知らない、20 少しタイトに感じています。 ちょうど50、50を言ってみましょう。 それは本当にあなたのことは費用がかかりません 50の代わりに40を言ってはるかに、 しかし、いくつかの点で、あなたが必要です 審判の判定を行います。 率直に言って、非常に一般的な、 ために [?歴史?] 理由により、それが過剰だとしても、 いくつかの時間前ので、255を言うことです、 人気のデータベースシステムにおいて、等 MySQLの、無料のオープンソース・ツール その企業の多く 以下のようにもFacebookは、使用しました これは最大のデフォルトました だから人々はそれと一緒に行きました。 だから無理が、我々はよありません もう少し直感を使用 50確かに、それはだ、と言います おそらく、少し過剰な。 性別、私は列挙型のように行います、 そして私たちは、したがって、缶 男性または女性を列挙し、 または多分より効率的に、 メートルまたはfまたはいくつかの他のシンボルが、 列挙型が良い選択のように感じています。 明確にするためには、性別 ちょうどvarchar型とすることができます、 そして私達はちょうどすべての可能性 素敵な人を同意し、 いつもそこに同じ値を置くために。 男性または女性またはその他もろもろ。 しかし、問題はその後、我々は可能性があることです [聞こえない]提案されているように、ミスを犯します 以前別のコンテキストインチ 我々はミスをした場合、我々は得ることができます 私達のデータベースに誤った値。 それでは、データベースに関するうれしいです OracleとMySQLおよび他のような、 最後にあなたがこれを持っているということです 防衛どこの層 あなたのDBAは、データベース管理者、 誰が私たちのように、このテーブルを設計しています 口頭である、入れることができます 列挙型の場所にその 指定しているから保護 男性、女性、そしてそのように誰も 他に無いプログラマが誤ってすることができます それ以外の値を挿入します。 だから、これは良いことでしょう。 これが特徴です。 だからID、数値IDを想定し、それを おそらく、正の整数でなければなりません。 そして、私たちは時々持っています 長さを議論する機会。 通常はないでしょう ここ数を指定し、 あなたの代わりに指定します これはint型、または大きなintで、 彼らは一般的に呼ばれているとして。 しかし、一般的に、整数 4バイト、の言わせ、であろう。 そして、それは4バイトだ場合、 それは何ビットですか? AUDIENCE:[聞こえません] DAVIDマラン:32ビット。 だから我々は、中にどのように多くのユーザーを持つことができます 彼らはすべてのIDを持っている場合は、当社のデータベース このIDは一意である必要がありますか? 32ビットは、我々はパターンを持っていることを意味します 1つ、2つ、3つ、4つ、five-- ゼロのため、どのように多くの異なるパターン 32がある場合、どれがあなたが持つことができますか? それは同じことです 尋ねる32へ2を何ですか? それは、その大きな数です 私はかなり、権利を取得することはできません 私はそれがおよそ40億知っています。 だから、これはあなたのデータベーステーブルができることを意味します 40億人のユーザーを持っており、それはそれです。 だから、これは面白いです デザイン含意。 企業のまともな数 そうでないかもしれないあまり、決定しました そのユーザーテーブルの有するので、 40億人のユーザー稀な問題です。 これはFacebookのスタイルの一種であります 問題ではなく、典型的な会社の問題。 しかし、あなたは、トランザクション・ログを持っているかもしれない場合 または常にデータのいくつかの種類 あなたのデータベースに書き込まれます 絶対に十億を持っていることができること そして数十億行、および あなたはそれのために整数を使用し、 何ができるだけ早く起こるだろう あなたは数40億行してもらいます そして、あなたは挿入しよう 4億および1、いわばするには? 私は数ビットを簡素化しています。 あなたが戻ってカットすることができ、私はあなたを意味します 何とかそれを処理する必要があります。 そして、コンピュータは一般的に何をするのか、 でも、今朝からそれについて考え、 あなたは、4ビット値を有する場合 これは、1、1、1、1のような、 ちょうど朝ネクタイします 一緒に午後に、どのような この番号はバイナリで表現していますか? [OK]を、我々はそれが容易になります。 この番号を何 バイナリで表現しますか? [OK]を、私たちはどのような、それが容易になります これは、バイナリで表現していますか? AUDIENCE:三。 DAVIDマラン:スリー、理由 私たちはものを持っていますcolumn-- [笑い] やれやれ! 私たちは、ものの列を持っていました そして、補数列。 だから、確かに、それを考える私たちの [?内野?] 32ビットではありませんでした、 それは私達ができる2つのビットでした ユーザ番号0、1、2、3から数え し、我々は一種のです 戻ってユーザ00に再び。 だから、これは一般的に何が起こるかです。 あなたは今までexpression--を聞いた場合 おそらく持っていないが、あなたはhave--場合 整数オーバーフロー、あなた あなたのすべてのビットを反転保ちます 最大の可能な値であるためには、 そして、あなたはビットの外出します、 一般的に何が起こるのでしょうか? なぜ私は00を言うのですか? まあ、これは3です。 どのように私は4を表しているのですか? 私はどのように表しますか バイナリで数4のために? AUDIENCE:[聞こえません] DAVIDマラン:ええ選びます - 、 100それ自体を言うことはありません、 それは間違ったを持っているので、 含蓄が、1-0-0。 だから、その番号1-0-0は確かです 正しい、しかし、あなたは唯一の2つのビットを持っている場合、 あなたが本当に何をしましたか? あなたは00にロールオーバーしました。 そして実際、それは何が起こるかです。 実際には、あなたが考えることができます これより親しまについて。 あなたは、何を思い出している場合、 16年前、世界 ときに終了するようになっていました Y2K問題が起こりました。 それはなぜでしたか? まあほとんどのコンピュータ、用 合理的な意思決定、 同様の番号を格納し、 1975年または1999年 ちょうど2桁を使用して、 コンピュータのメモリインチ もちろん、だから、何が起こります あなたが2000年に取得したときに、 あなたはええ、これに行く、というか。 だから、2000年に行く、しかし、もし あなたはそれが見える2桁を使用しています 今年のように00と あなたがロールオーバーしました。 そして、これは、なぜ多くのシステム 一度に更新する必要がありました。 以下のようなこと言った、企業とそのように Facebookはこのぶつかります。 処理するための唯一の方法だから、 状況は、率直に言って、それを予測することです。 またはクリーンな方法へ このような状況に対処 あなたがいないので、それを予測することです 後で変更を行う必要があります。 だからではなく、8バイトの、あなたは何を知っていますか? 私は前向きになりそうです ここでは、それはだにもかかわらず、 その少し楽観的 我々は40億を持っているつもりです および当社のウェブサイト上で1人のユーザー。 しかし、ちょうど8バイトを使用してみましょう、または 一般的であろう64ビット、 非常に技術的な、大整数と呼ばれます。 そして、それはちょうどあなたが持っていることを意味し あなたの数はさらに多くの桁数。 しかし、これは重要です デザインの決定、 あなたはその番号を選択した場合ので、 表現の数が少なすぎるビットを有します あなたが実際に作成することができます お使いのソフトウェアのバグ。 すべての権利、それでは包みましょう 電子メールや住所を持ちます。 そこで、電子メール、どのくらいのはず 電子メールアドレスは? 50。 私は本当にわかりませんが、それはです おそらくそのような何か、 そうでなければ、誰のがしようとしていないので、 それはあまりに長くなる場合を書き、そのように50、 それでは、今のところそれで行きましょう。 住所、どのくらいのことはすべきですか? AUDIENCE:[聞こえません] DAVIDマラン:そうではありません ちょうど郵便番号、しかし。 住所、私が聞きました。 だから、これは、1ガタガタ音を立てる広場のようなものです カンマ、マサチューセッツ州ケンブリッジ、カンマ、02138。 そして実際に、私はただ引っ張ってみましょう ここで少しワークシートアップ。 それはだようにこれは感じています 機会を逃しました。 我々は1ガタガタ音を立てる広場を持っている場合は、 カンマ、ケンブリッジMA 02138、 私たちはより良い行うことができますように私は感じます ちょうど郵便アドレスより。 なぜ我々は、これは少し爆発しませんか? 私はで何を取得していますか? 私たちは代わりに何を持っている必要があります おそらく、ここで私たちの行の? AUDIENCE:[聞こえません] DAVIDマラン:ええ、そうしましょう street_numberそれを呼び出します、 アンダースコアはちょうど一般的です スペースどのように見えるかを有するとして、 実際には、ありません。 ストリート、その後残念city--? AUDIENCE:[聞こえません] DAVIDマラン:我々はそれを行うことができます。 ライン1、ライン2。 なぜ我々は維持されますしません それは単純な今のところ、 それは絶対にです 許容可能な決断。 そして状態、次にしてみましょう 今のところ少し米国を中心とすること そして、だけという理由だけで、郵便番号を行います それは興味深いミスにつながります またはここで問題。 だから、今、私たちのアドレスだと仮定します。 それは、そのもう少し迷惑なんです 我々は、すべてのこれらの複数のフィールドを持っています しかし、今はタグを付けることができます 少しより良いもの。 おそらく、だから今街路数 それべき、char型ではないでしょうか? それは何をすべきですか? AUDIENCE:[聞こえません] DAVIDマラン:たぶん、数 再び整数のような? 大整数? あなたは、おそらく住んでいません 40億メインストリートで またはそのような狂気何でも。 だから整数は、おそらくです 罰金、しかし、誰もが持っています これまでのようなアドレスに住んでいました 1Aガタガタ音を立てるスクエア、または1と1/2? これらのことは、残念ながら、存在します あなたはそこに住んでいない場合でも、 これらの異常があります アパート1A、1B、1Cなど。 だから、あなたは何を知って、私たちは、おそらく 整数で行くべきではありません、 そうしないと我々はつもりです いくつかの販売を失います。 CHARフィールド、多分? どのくらい私は知りません。 おそらくなることはないだろう その長いので、10か何か。 誰も書くつもりはありませんです 長い番号、多分。 しかし、再び、我々はおそらくべき それにより多くの思考を与えます。 たぶんグーグル、いくつかの研究を行います、 しかし、我々は今の私たちの勇気と行きますよ。 通りは、char型、50、私は知りません。 ある時点で、誰もが起こっていないです 封筒にそれを書くために、 あまりにも、そうおそらくあります そこにいくつかの上限。 同じ市、必ず、そうチャー50。 状態は、今のところ米国を中心とすることができます。 だから、とても親切リストかもしれません 審判の判定、状態の。 これは、2つの文字のようである可能性があります。 だから実際に、多分、私は、charを言い続けました。 私はおそらくvarchar型を意味し、 単にいくつかの効率のために、 しかし、我々は戻ってくるだろう 現時点でその決定。 状態のために長さ2の文字である可能性があります。 米国の場合、それらはMAのように、持っています、 マサチューセッツ州、ニューヨーク州、ニューヨーク、ニュージャージー、ニュー ジャージーなど。 だから、その時に固定することができました。 ワシントンDCのDC。 しかし、私が思うに、オリビエ、あなた 別のアプローチを提案しました。 AUDIENCE:[聞こえません] DAVIDマラン:うん、それです で入力には少し迷惑、 しかし、列挙型は、より多くの意味になるかもしれません この方法のため、米国では少なくとも、 あなたは、列挙うんざりするほどであれば、しかし、可能性があり あなたのデータベースに一度だけそれを行います そして二度とについて考えなければなりません それは、すべての50の二文字コード。 だから私は、列挙型が好き。 のがあることに固執してみましょう、ので、 それは一種のより厳格に適用します。 そして、郵便番号? 私はアンドリューはその上で考えを持っていたと思います AUDIENCE:[聞こえません] DAVIDマラン:うん、5または9。 ちょうどそれをシンプルに保つのをしてみましょう。 ただ、今のところ5を行います。 しかし、多分私はちょうどでし 整数の操作を行い、右? 私ができる、しかし、あなたは何を知って、私が作っ ある意味で、この間違いに一度、。 数年前、私はから移行しました。 GmailにMicrosoft Outlookの、 およびOutlookは、輸出の道を持っています Excelファイルなどのすべての連絡先、 値ファイルをコンマ区切りのCSVファイル、。 そして私は、私は、ミスを犯しました 、それをダブルクリックするので、考えます 私はに、輸出をダウンロードしたら、 私は期待どおりに見えたことを確認してください。 私は保存するか聞かせ直撃している必要があります キックか何かを自動保存。 私は、インポートしたときので、 それはGmailに、それはすべてが働きました。 しかし年間、この日に、と 私はこの5、10年前、 私はまだ持っている友人を見つけることです このように見えるのアドレス。 どうして? AUDIENCE:[聞こえません] DAVIDマラン:それは取りました 0、よく、むしろ、それを 全体郵便番号を取りました 数、したがって、それはです 意味先頭の0 それは意味がありません。 それで、2138年には、私の郵便番号のようです。 そして、これは、率直に言って、迷惑エクセルです 私は、デフォルトではと思いせる機能、 それだけに意味だ場合でも、 テキスト、Microsoft Excelのこと 決定し、私が参考にしましょう​​、 とまあ、私は数字のみを参照してください。 数字としてこれらを扱うましょう。 そして、それは先行ゼロを切り捨てます。 私は神に誓う、すべてのカップル 数ヶ月の私はアドレスを見つけます、 そして、OCDの種類のうち、私は戻って であっても私は決してかかわらず、0を追加します。 人々の手紙か何かを送信します。 しかし、私はまだこのの名残を見つけることです。 これは、と言うことです、これは良いアイデアですか? いいえ、[OK]を、ので、誰で マサチューセッツ州、この領域において、 それらをリードするOを持っているとしています。 それでは、などで手放します チャー、おそらく、5。 そしてここで、私たちを実現 列挙型と我々を使用することができます 万を列挙可能性 可能な郵便番号、 それはおそらくだようにそれは感じています メリット、のような、のラインを横切ります。 あなたが入力する必要がある場合は、その あなたのデータベースに多くのデータ 何かから保護します。 だから、文字入力した可能性が実現 あなたの郵便番号のようなH-E-L-L-Oで、 これは、明らかに、数値ではありません。 だから方法はで、ありません 一般的なデータベース、 数字だけを指定すると、 のみ5文字の長さ、 私たちは持っているつもりです コー​​ドでそれを行います。 私たちは、PHPでそれをやろうとしていますか Javaまたは任意の言語で、我々はしています 強制するために、サーバー上で使用して 制約のようなもの。 うっ! すべての権利、これだけはまだ質問? のは、別の設計上の決定を作ってみましょう。 それはあなたのことが判明します また、選択してもらいます、 SQLデータベースを設計するとき、または 典型的なリレーショナルdatabase--場所 もう一度、リレーショナル 行と列を意味します、 それはあなたがあなたのdata--を整理方法です そして、これが何を意味するのかであることを実感 私は中に誤解を招くしてきました 、私はこのdrawing--だと スキーマと呼ばれるものであり、 データベーステーブルのため。 これはのようなものです table--の仕様 しかし、それは時間が来るとき 実際にデータを格納します、 私たちはここだけの例によりこれをやります。 私はので、Excelを開くつもりです Excelは私に行と列を与えます。 そして、それはまさにオラクルだと MySQLと他のツールは、私を与えるだろう。 だから私はちょうど使用するつもりです それ議論のために。 私は先に行ってみようと開きます ここでは代表的な文書、 ビットにズームします。 だから、例えば、私たちのヘッダになりました 姓、名、性別、ID、 電子メール、街路番号、通り、おっと。 ちょうどストリート、市、州、 約画面に収まります。 それでは、これが意味するときということです ユーザは最初に、私のウェブサイトのために登録します のようなものになるだろう デビッド、マラン、mは、の1を言わせて、 malan@harvard.edu、街路番号になります 1ガタガタ音を立てる広場、マサチューセッツ州ケンブリッジのようで、 02138、その後等々。 だから私は、リレーショナルデータベースと言うとき、 またはSQLデータベースは、行と列であり、 私はこれを意味します。 実際のデータが格納されていること 行と列です。 これは単なる偶然です、 私たちは話していたことを、 そして、私はそれを描いていました 行と列でアウト。 これは、単にスキーマです 包括的な定義。 ここではこれらのフィールドのため、 または等価的に、そこに、 これはあなたが考えるのフィールドがあります 私はユーザーだ場合、私は上の検索しそうです または私は、データベース管理者ですか? 同様に、どのような分野私は 実際に検索するつもり? AUDIENCE:[聞こえません] DAVIDマラン:名前、ええそう 私は、ええthat--事実が好き 電子メールは、かなり一般的であるかもしれません。 申し訳ありませんが、あなたが名前を言いました。 だからmaybe--そして再び、私たちはしています 種類の抽象的に話します。 私はなぜあなたがしたいかわかりません 名を検索することが、 場合それは合理的な感じ あなたは、ユーザーを探しています。 たぶん、必ず、ID、述べています。 そして、それは滑りやすいです スロープ、私は可能性があるため、 ここで、シナリオを工夫 多分私の上司は私に尋ねました、 どのように多くの男性たちは、私たちのサイトにありますか? どのように多くの女性たちは、私たちのサイトにありますか? だからその時点で、あなたがしたいことがあります あまりにも、性別フィールドを検索するには、 何もありません。 だからここにトレードオフがあります。 この場合も、ありますなし 正しい答えが、そこ ほとんどのSQLデータベースの機能です インデックス付け、それによってとして知られています もし、デザイナー、 データベース管理者、 これは事前に決めてもらいます データベースが最適化する必要がありフィールド 検索のために。 あなたは非常に単純に最適化する、と言うことができます これは、それを最適化し、これを最適化し、 そのこれを最適化し、 データベースは意志 下にいくつかの魔法のことを行います フードは、そのような方法で何かを行います そのあなたが検索し、次回 これらのフィールドのいずれかに、 それは、実際には、高速になります。 これが可能です。 それは、それ自体を取り消すことはありません。 しかし、支払った価格が存在しなければなりません。 あなたの場合単純に、またはオーバー熱心に 、これらのフィールドのインデックスすべてを言って、 いわば、それらをすべて作るために 効率的に検索可能、 あなたは、おそらくどのような価格を払っていますか? AUDIENCE:[聞こえません] DAVIDマラン:パフォーマンス。 どういう意味ですか? まあ、パフォーマンス、少なくとも中 私が議論している状況は、今より良いです。 つまり、インデックス作成の定義です。 これは、より高速な検索を行います。 だから、時間はいわば、減少しています。 AUDIENCE:[聞こえません] DAVIDマラン:スペース。 だからもう一度、これらは一般的な取引です。 私はあなたの検索をスピードアップすることができますが、それはです あなたのスペースのバイト以上の費用がかかるだろう。 どうして? まあ、デフォルトでは、我々はのどれを持っていない場合 これらの赤い星、これらの指標のいずれも、 私が言っているように、どのように検索します このデータベース内の名前のために? それでは、私たちを描いてみましょう この例に注目。 私たちはダビデとスカリーとカリームを持っている場合 そしてこれらの行のArwaなど、 例えば。 それでは、まさにそれをやらせます。 スカリーはここにあり、その後、 我々は、カリーム、およびArwaを持っています そして皆、そうでない場合 、インデックスはいわば、定義されています あなたができる最善のは、線形検索です。 あなたはArwaを検索する場合、私たちではありません 彼女に権利をジャンプすることができるようになるだろう 早く。 我々はトップを開始するつもりだと 底にすべての道を行きます、 ではない私たちのオリジナルとは異なり、 マイク・スミス例。 しかし、私が言う場合は、ちょっと、データベース、 インデックス最初の名前フィールド、 何かをするだろう 手の込んだと何かをサポート バイナリサーチのような。 それはおそらく、それ自体は二分探索ではありません。 データベースは別のものを使用する傾向があります Bツリーと呼ばれるデータ構造、 バイナリツリーと混同しないように、 ちょうどそれがより速く検索することを可能にすること 自然の中で対数何か。 しかし、価格はあなたがいることを構築するために支払います 機能、メモリ内のデータ構造 以上のバイトです。 だから、いくつかのメガバイトを取るかもしれないが、 いくつかのギガバイト、知っていますか? これは、データに依存します。 だから、ある時点で、あなたが決定する必要があり、 それはおそらく一般的なケースではありません。 だから、実際の一般的なものです 例、あなたは本当に選択しなければならなかった場合、 あなたの好きな分野は何でしょうか? Eメール。 そして、私は、電子メールのためのメールが好き 理論的には、一意である必要があります。 だから一般的に、あなたが知っているとき 事前にフィールドのいずれか、その であるか、または一意になり、その 良い場になる傾向があります そのようにするので、上の検索し、 あなたが何かを検索するとき、 あなたが戻って1または取得するつもりです 応答をゼロにし、その後、あなたは完了です。 あなたは維持する必要はありません まだ他の人を探しています。 ので、ここで、この場合には、電子メール、 あなたが二回登録できない限り、 同じ電子メールで、良いものです。 で定義によりID、 コンピュータサイエンスの世界、 あなたが話をしている場合 より良い一意でいたID、。 それは含蓄の一種です IDまたは識別子の。 そして、これらの残りの部分はあるかもしれません、 それでは、金持ちに素敵な彼らを呼びましょう、 しかし、本当に必要はありません。 だから、データベース内の、 あなたは、インデックスを指定します しかし、あなたも、より正確にすることができます。 あなたはちょっと、データベース、確認してください、と言うことができます このテーブル内のすべてのIDが一意であること。 でも、プログラマをさせてはいけません 誤って重複した電子メールに入れ またはID番号を複製します。 列挙型のようなので、多くの 、同様にあなたを私たちを守ります これらの下位レベルの防御を持つことができます。 そのため、データベースの設計、中 ある意味では、楽しいの一種です、 あなたは守備にそれを行うため。 あなたは一種のあなたが働くことを前提としてい 恐ろしい、恐ろしいプログラマと あなたは、多くの防御を入れたいです あなたのデータを保護することができますように、 しかし、同時にあなたが欲しいです 彼らがより良い実行を支援します これを選択して、 以下のために最適化するためのフィールド。 しかし、あなたは、必ずしもそれを行うことはできません 我々のような真空は一種のここにあります。 あなたが何であるかを知っているんです これらの一般的な例があります。 開発者がある場合 アドレス帳を実装 あなたは非常によくできるようにしたいかもしれません ほぼすべてのフィールドを検索するには、 単にアプリケーションの性質によって。 だから、多分あなたが費やします その追加スペース。 ご質問、右? うん。 AUDIENCE:[聞こえません] DAVIDマラン:いいえ。 AUDIENCE:[聞こえません] DAVIDマラン:OK。 AUDIENCE:[聞こえません] DAVIDマラン:ああ、私たち 以下のように話しています 今では完全に言語にとらわれないです。 だから我々はについて今話しています より一般的にはリレーショナルデータベース、 より一般的に、またはSQLデータベース。 AUDIENCE:[聞こえません] DAVIDマラン:使用するより良い言葉 、任意の言語で使用することができるされています。 だから私は、CのJavaScriptコードを書くことができます コー​​ド、C ++コード、Javaコード、Rubyコード、 これらはすべてに話します データベースとクエリを実行します。 実際には、それは悪くはありません 例クエリにセグエ。 そして再び、私たちは、に行くつもりはありません JavaやC ++またはもうそのいずれかの、 しかし、SQLで、言語は私が維持します 参照して、構造化照会言語、 これ自体はプログラミング言語であり、 ない、のために使用されることを意図してい 驚き、構造化されたクエリクエリ。 それによって私はこれを意味します。 あなたがデータを選択する方法 MySQLデータベースから あなたは文字通りあなたのプログラムに入力され、 ユーザーからのセレクトスターのようなもの。 私は、この表と仮定しています、 今後はユーザーと呼ばれています。 私たちは何でもそれを呼び出すことができ、 しかし、その種の理にかなっています。 それで非常にある選択 一般的な動詞、よろしければ 、SQLで、それは文字通りそれを行うだろう。 あなたは星をどう思いますか この文脈で意味? AUDIENCE:[聞こえません] DAVIDマラン:私は申し訳ありませんか? AUDIENCE:[聞こえません] DAVIDマラン:必須ではありません、それはです それよりもより包括的、実際に。 これは、ワイルドカード文字です。 何を意味ほとんど常にスター、 これは、この場合には、手段 データベースからすべてを選択します。 私はこれを言うときに、私が意味します 私にすべての列を返します 私のテーブルからユーザーを呼ばれます。 メソッドが呼び出されるように、私に結果セットを与えます。 言い換えれば、私のコピーを与えます スプレッドシートは、私が得ているものです。 しかし、私は言った場合、ユーザーからのセレクト星 IDは1に等しく、どのように大きなはすべき 私の結果セットは、その後ですか? または同等に、どのように多くの行がすべき 私は、データベースから戻って渡されますか? おそらく私が実際に持っている場合は一つだけ、 一意の識別子としてIDを扱わ、 そしてダビデがその固有のIDを持っている場合、I 1と1つの行のみが返されます ダビデの情報のすべてを含みます。 私は言った場合は、この場所ID 私は戻って取得する必要があり、99に等しく、 この文脈では、ゼロ行、 少なくとも現時点では。 しかし、私は本当に気にしない場合 すべての情報について、 私はダビデはどこに住んでん、と言うことができますか? から郵便番号を選択します IDが1であるユーザー。 これは私だけダビデのジップに選択されます コー​​ドではなく、その行全体。 なぜ私が代わりにこれを行う可能性があります スター・クエリー、ワイルドカード? AUDIENCE:[聞こえません] DAVIDマラン:ええ、私はそれが必要な場合があります。 だから、パフォーマンスが再びここに答えです。 なぜ多くを求めます あなたが必要以上の情報、 それが正しい一緒にすべてだ場合でもので、 あなたはまだ、そのデータをコピーする必要が それは、データベースから、と思われます 何とか自分のプログラムに、 あなたならば、それはちょうど愚かです のみの数字の5を必要とし、 行のない全体。 だから、どのように私は、ユーザーを挿入するのですか? ユーザーがちょうど持っていると仮定 初めて登録されています。 構文は通常、次のようになります。 ユーザーの中に挿入し、 その後、我々は、値を言います し、我々は値を言います 以下のような、のは、ローレン・スカリーを言わせて、 右ここで私たちのビデオ撮影。 そして、次のフィールドは性別です。 だから我々は、引用引用終わりを言いますよ 「f」は、その後、我々はIDを持っています そして、私はしてみましょうsay--するつもりです 彼女は実際にはここではありませんふり、 私たちは物語の中で巻き戻します。 だから2は、彼女のIDになります。 そして、次のフィールド ここで彼女の電子メールがあります。 だから、同じようになるだろう などローレンスカリーと、 そして私達はちょうどドットドットます ここで上からそれを離れて点在しています。 今ではほとんどを取得します 退屈な、しかし、INSERTクエリ 最終的にそのようになります。 私は取り除くしたい場合 スカリーは、ええと、ああ、の登録解除しましょう 彼女は、彼女は彼女のアカウントを削除し、 IDは2になり、ユーザーからの削除、 スカリーを取り除くでしょう。 または私は更新ユーザーが設定すると言うことができ、 私たちは何を変えることができる、のは言わせ? 彼女が移動したとします。 セットジッパーは、ハズレ021--等しいです それは彼女の現在のジップです。 90210。 他の唯一の郵便番号 私は、世界に知っています。 だから、変化するであろう 彼女のジッパーは、実際にcode-- それは彼女の郵便番号を変更することはありません。 私は何をしましたか? 構文は、おそらく新しいですが。 AUDIENCE:[聞こえません] DAVIDマラン:ええ、私はみんなを移動 ビバリーヒルズ、カリフォルニア州へ。 だから私は実際にすべき IDが2に等しいと言います。 など。 だから、SQLは、これらすべてについて 命令の種類。 SELECT、INSERT、削除、更新、 最後にこれらの述部を持ちます これらのwhere句、いわば。 そして、より多くのことができますがあります やるが、それは本当にただつまるところ 単純に、もしarcanely発現 どのようなデータベースがしたいです。 そして、データベース ときに、把握します あなたはにローレンスカリーを挿入します データベース、どこメモリに彼女を置くために 我々は非常に迅速に得ることができるように 彼女の自分の電子メールアドレスに基づいて または彼女のID番号等に基づい。 うん、ダン。 AUDIENCE:[聞こえません] DAVIDマラン:本当に良い質問。 これらのスクリプトから変更されます OracleへのMicrosoft Access MySQLへのPostgreSQLのか? 短い答えは、それが依存しています。 理論的には、非常にあり SQLの重要な共通のサブセット そのは、すべてにわたって共有さ これらの実装。 しかし、様々なメーカー 機能を追加しました 彼らのデータベースに特定の物事を行うには これらの機能の範囲を超えて、 それは、実際には、壊れる可能性があります。 だから、方法の開発 このヘッジ、 それはむしろ、生の書き込みよりもあります 私がここに書いているようなSQLコード、 彼らは代わりにライブラリを使用し、 共通ライブラリ自体 上位レベルと抄録の一種であります 離れているあなたが使用している製品。 そして、それはあなたを与えます ファンクションおよびプロシージャ そのため、あなた決して呼び出さないします 実際に生のSQLを記述します。 理論的には、その後、あなたが変更することができます オラクルからマイクロソフトの製品 またはその逆か何か 他に、そしてあなた文字通り あなたのコードについては何も変わりません。 現実には、しかし、時には、あなたです その結果としての機能をあきらめます。 あなたがするので、製品を選択している可能性があります それは、これらの付加価値機能を持っています、 あなたは今じゃありません 意識的にそれらを使用します。 そして、逸話的に、ほとんどの企業が傾向があります そのデータベースから離れることはなかっ。 だから、これはにいいですしながら、 機能を持って、現実 あなたはオーバーホールしている場合、あります データベース、あなたがしています おそらく、他の変更の束を作ります とにかく、あなたは必ずしもないこと それを予想する必要があります。 だから、それは間違いなくです オーバーエンジニアリング問題を、 それは本当に文脈に依存します。 しかし、理論的には、SQLが共有されています これらの様々な製品間。 本当に良い質問。 うん。 AUDIENCE:[聞こえません] DAVIDマラン:ええ、そう データベースを考えることができます の終了時に、サーバだけです 日、およびそのサーバの内部 の全体の束であります テーブル、行と列。 そして、あなたはこのようなクエリを送信するとき あなたのプログラムから、あなたのウェブサイト、 Javaで書かれた、ルビー、Pythonの、何でも、 サーバーがこのコマンドを受信して​​います そして、それを解釈します 文字通り同じ方法 我々はして先に議論しました 言語を解釈し、 そして、ゼロにいくつかのアクションを実行します ゼロまたは複数のテーブルの行以上。 AUDIENCE:[聞こえません] DAVIDマラン:その通り、正確に。 何かのための擬似コードだから そのように、この可能性があります。 あなたのPHPファイルまたはあなたの PythonのファイルまたはあなたのJavaファイル、 あなたは、擬似コードのコードを持っているでしょうか、 キズ状ブロックとして、ユーザーがアクセスする場合 初めてacme.com/register~~V、 その後、ユーザーになどに挿入します。 そして、我々はこれを翻訳するでしょう 最終的にはより具体的なコード。 しかし、実際には、我々はすべて持っています ここでビルディングブロック 我々はいくつかをスキップしているにもかかわらず、 実装手​​順の。 だから、私は私たちの欠点を見つけてみましょう 素晴らしくちょっと前でした。 あなたはかなりを作成しました ユーザーのための完全なテーブル。 確かに、私たちは実装することもでき それいくつかの異なる方法で、 しかし、あなたは実際に私たちを導きました path--ダウンと私はあなたを言います、 しかし、それはおそらくかなりの私のfault--です 非効率的なデータベースの実装。 これは、正規化されていないのです。 そして、正規化されたことにより、私が意味します あるように起こっています、 時間をかけて、かなりの冗長性、 そのため非効率性、 それはスペースの無駄です。 、あなたがここで見るものだけにすることができます基づいて、 あなたは宇宙のどこに、この無駄を思い描きます 時間をかけて、から来るように起こっています、 より多くのユーザーを登録するように あなたのウェブサイトのために? どのようなデータが冗長になるのでしょうか? AUDIENCE:[聞こえません] DAVIDマラン:なぜあなたはそれを意味するのですか? AUDIENCE:[聞こえません] DAVIDマラン:うん。 とのが目的で仮定しましょう それが本当であることを、今日の。 結局のところ、私たちはこのことを学びました ハードな方法は、それは真実ではありません。 どういうわけか、複数の都市が持っています、 どういうわけか、同じ郵便番号、 これはこの素晴らしい直感を壊します。 しかし、それでは、それは本当だと仮定してみましょう それはほとんど常に真だから。 だから、郵便番号があると仮定 常に同じ都市に関連付けられています 一種であり、状態、 妥当な仮定の、 しかし、間違った、それが判明しました。 しかし、合理的な仮定 今日の目的のために。 その後、私はケンブリッジに住んでいるとし、 MA、このユーザーの表によれば、 そして、仮定するローレン スカリーは、マサチューセッツ州ケンブリッジに住んでいます そして、仮定するカリーム マサチューセッツ州ケンブリッジに住んでいます、 そして、Arwaは、ケンブリッジに住んでいます MA、私たちのすべての02138インチ なぜ我々はケンブリッジを記憶しています、 MA、私たちの4つのすべてのための02138? 何を覚えておくことは十分なはず? AUDIENCE:[聞こえません] DAVIDマラン:ちょうど郵便番号。 ちょうど02138が存在することを、理由 あなたは私たちが何ができるか知っていますか? ここでは少し空想を得ることができます ここの上に、別のテーブルを定義します これがあることを行っているところ 名前は、これは、タイプになるだろう これは、になるだろう 長さ、および今後、私は この私の都市テーブルを呼び出すことだろう。 これは、のと呼ばれていました もちろん、私のユーザーテーブル。 そして、私はここで何を上に置く必要があります 私の都市テーブルのために、あなたは思いますか? AUDIENCE:[聞こえません] DAVIDマラン:うん。 だから、圧縮した状態と都市。 ので、ここでのタイプは、我々が言いますよ これは、再びchar型5になるだろう 以前の議論の対象に。 これはおそらくのように、列挙型になります 前、および都市はvarchar型50になります。 そして今、私は何を得るのですか この表から消去します その非効率性を排除するには? AUDIENCE:[聞こえません] DAVIDマラン:ニース。 州、市は離れて行くので、私は今ました 潜在的な非効率性を排除 冗長覚えるために、ケンブリッジ、 MA、ケンブリッジ、マサチューセッツ州、マサチューセッツ州ケンブリッジ、 、うまくいけば、マサチューセッツ州ケンブリッジ、 変更するつもりはありません。 それがない場合でも、それはです 今、minorly迷惑 私は変更する必要があること その複数の行で、 ここで、一方、私はちょうどでし 一つの場所に変更します。 今トレードオフは、おそらく、何ですか? これは超便利でした。 うまく一緒にすべての私のデータを持っていました。 しかし、今の場合、明らかに何ですか? AUDIENCE:[聞こえません] DAVIDマラン:その通り、と私は 喜んであなたは、単語が参加使用しました なぜならそれは、実際のキーワードです、 リレーショナル・データベースの世界では SQLで、それは実際の言葉あなたです 入力するか、または少なくとも伝える可能性があります。 そして実際に、私たちは今しなければなりません ダビデの完全な情報を選択することがあります からのセレクト星のようなもの ユーザーは、on--そして今、都市に参加します 私はちょうど二行目に移動するつもりです このfits-- users.zipが等しくなるように users.IDが1に等しいcities.zip、。 どうしたの? それは見て醜いですが、あなたは一種の缶 それは上から下へ、左から右に読んでください。 ユーザーからの星を選択 前と同じであり、 それはそれ自体がユーザーからではありません。 これは、都市に参加するユーザからです。 私は何にこれらの2つのテーブルを結合していますか? まあ、明らかに、 ユーザーテーブルはフィールドを圧縮し、 この期間だけ特別です そのアイデアを表現するための構文、 これは都市のテーブルはフィールドを圧縮です。 私はそれらの2が等しくなるようにしたいです、 私は最終的に選択したいです 行のみ場所 usersテーブル内のID 鉱山であることを起こっている、1に等しいです。 そして、ちょうど明確にすることが、 プログラマ、一般的に時 番号のようなものをハードコーディング 1、なぜならそれ以外のウェブサイトのみ デビッドまたはサポートしています 非常に最初のユーザー、あなた 代わりに行うだろう ID、のようなもの これが表します 変数、何か 同様に、時間と共に変化することができ 私が以前言ったことへの精神で プレースホルダのこれらの種類を持ちます。 しかし、今の私たちは1として、それをハードコーディングします。 そして、これは何を意味するのでしょうか? さて、これを視覚化するための良い方法です この手はユーザーテーブルである場合に、 この手はジッパーです テーブルには、我々は一種のですfinding-- そして、私の指の先端はZIPです こっち、と私の指の先端 ここにあなたがしている、ジップです それを連動の種類 あなたは、結果を取り戻すように、 本当に参加することによって、元のテーブル、 共通のフィールド上の2つのテーブル。 そして、それはジッパーである必要はありません。 それは何か、ほとんどが、可能性があり 一つは、それは短いですので、ジッパーは、いいです 二人は、それは常にです 同じ長さなので、あります 何に本当の効率 オリビエは、ここで提案しました ジップを因数分解とし、 [聞こえない]我々は取り除くことを提案 都市と国家の。 だから、これはプロセスであり、 正規化として知られています。 その上の任意の質問? まあ私が指摘してみましょう これは、ものの一種であります それはかなり低レベルだとしても、 あなたが思うだろうことをこの議論、 あなたはソートの取得しています 雑草で失われました、 これは十分なの現れであります 開発者のための機会が悪いことにします。 そして、実際には、場合でも、我々、中 私たちが持っていたときに私は、教えられてきたコース、 例えば、経験の浅いです 学部プログラマ 一目見ただけで、ウェブサイトを構築し、 ウェブサイトは素晴らしい見えるかもしれません。 そして、彼らはすべてを持っています 我々は要求された機能は、 開発者は良い仕事をしました。 しかし、彼らは必ずしも知りませんでした データベース設計についての十分な または、彼らはハードとは思いませんでした データの種類についての十分な ユーザーの種類 ウェブサイトは持っているつもりでした、 私たちは、その後、見つける、6ヵ月後、 彼らは卒業または上に移動した後、 その畜生、当社のウェブサイト 本当に、純粋に遅いです。 そして、私も持っていることについて話していませんよ 何百万または数千のユーザー。 私は、キャンパス内には数百人のユーザーを意味します 例えば、したいすべての人の、 でコースのお店 同時に、彼らがしています そのコース・カタログを使用して 私が述べたアプリケーション そして事が本当になっています 何のインデックスがありませんでしたので、遅くなります。 のように赤い星は、ありませんでした 話す、あるいは我々は、必ずしもではない持っていました に共通のデータを因数分解 スペースのいくつかの貯蓄を取得します。 そのため、開発者を吟味するとき またはデータベースの人など、 考える質問の種類 でもある、誰かのコードを検討するとき、 言って、必ずしも見ていません 彼らのすべてのコードが、言う通り、 のは、データベース・テーブルを介して見てみましょう。 あなたは何を格納していますか? そして言って、よく、待ちます 分、なぜあなたは整数を使用していますか? 私たちは、40億を持っている場合 そしてこれらの行の1? そして、これらの種類の 質問の機会です プッシュバックの種類に及び ここで、感を得ます あなたがやって慣れていないなら それ、持つ誰かより技術的な のかどうかにかかわらず、これらの質問をします 人は本当に自分の作品を知っています。 そして、これは一種のです もの、あまりにも、その人 インターネット上で誰 多分、独学です あなたので、あまり頻繁に学びます 必ずしもそれに遭遇していません あなたが得ることができるので、できるだけ多く データベースの稼働中、 しかし、あなたは読んでない限り、 チュートリアルにアップまたはされて データベースの正規化について語りました そして、インデックスとパフォーマンス、 これらは、物事の種類があります それはあなたを傷つけるしようとしています。 そして、あなたが思う、または悪いエンジニア可能性があります ああ、よく、私たちより良い賃金、と言うかもしれません 大きなデータベースの またはより高速なデータベース あるいは単に、この時にお金を投げます 垂直スケール、必ずしもそう。 あなたはin--行くとあなたがで行くことができる場合 fact--後とインデックスを追加し、 そして、それは数時間かかることがあります その新しいデータを構築するためのデータベース 私は以前に言及した構造、 あなたはまだ事実の後にこの問題を解決することができ、 これはどこにあること 区別するために開始 悪いから良いデザイナー デザイナーだけでなく、審美的に、 しかし、性能面だけでなく。 質問は? なし? 他のタイプだったのNoSQL、用ですから データベースの私が以前言及した先の、 あなたは、行と列を持っていません。 その代わりに、あなたが何かを持っているでしょう それはもう少し、このようになります。 私は、共通の構文を使用するつもりです。 中括弧に起こります ここではかなり多くを使用すること。 あなたが何かを持っているかもしれません 最初の名前はデビッドあるように、 あなたが最後かもしれません 名前は、引用符マランあり、 あなたがIDを持っているかもしれませんis-- 恐れ入りますが、whoops-- IDは、1であり、 電子メールはmalan@harvard.eduある、と私はしません その後、残りの部分を入力して気にし、 いくつかの他のもの。 言い換えれば、これは テキスト表現 我々は、一般的に呼ぶものの コンピュータプログラム内のオブジェクト。 その目的は、単に一般的です キーと値のペアのコレクション。 だからもう一度、この定期的なテーマ。 私たちは、HTML内のキーと値のペアを見て、 我々は今、キーと値のペアを見て データベースの文脈、私たちで コンテキスト内のキーと値のペアを見て 私は言語以前の今日、と思います。 来る保持します。 そして実際、それは本当にです どのようなデータに帰着します、 データおよびメタデータ、または値 それぞれとキー、。 だから、非リレーショナル データベース、何かベース あなただけの凝集オブジェクト、上 一緒にすべてとそれを置きます メモリに、一般的だろう 描か、またはこのような考え。 そして、私はとして今それを残しておきます 別のアプローチの一種。 そして、もう一つは、必ずしもではありません 他よりも良いです。 実際には、非常に流行して これらの日には、データベースシステムです MongoDBのとRedisのといくつかのような 自由に利用できる他のそのようなツール、 しかし、彼らがvogueアンますますです。 一部は彼らが追加提供していますので、 これらの表形式のアプローチより機能、 しかし、また、彼らはだから 使用して少し楽に、 あなたは、ハード考える必要はありませんので、 これらの設計上の決定の多くについて。 プラスとマイナスだから。 だからオプションがあります実現 我々だけに時間を費やしている以上。 それでは、これを実行しましょう​​。 それでは、少し移行してみましょう バック今やWebプログラミングに、 私たちは一種の結論ということ 何かで今日 それは充填、少しハンズオンです 昨日からいくつかのギャップインチ 私はこの最初に行きましょう。 だから昨日リコール 我々はいくつかの標準的なHTMLを持っていました 最初に持っていたページのみ HTML、その後、二次、CSSを持っていました カスケードスタイルシート。 これは、我々はなかった新しいタグです 昨日の参照、または上に住みます、 いわゆるスクリプトタグ。 あなたが実際に埋め込むことができ判明 あなたのWeb​​内のJavaScriptと呼ばれる言語 ページとあなたのウェブを作ります ページには、何かをします。 だから私はそれによって何を意味していますか? まあ、私は先にだけ行ってみよう 瞬間のためにこのコードを借ります。 私はCloud9、不要に行くつもりです まだそこに自分自身を行くために、 そして私はこのalert.HTMLを呼ぶつもりです。 私はここに私のファイルに貼り付けるつもりです。 そして、ちょうど私が何をやったか明確にするために、聞かせ 私は、このアドレスに行くと警告しに行きます あなたはHello Worldのを参照してください。 しかし、これはがっかりの一種です。 私が何かをしたいです 少し異なります。 だから私は実際にこれをするつもりです。 私は、ここでは電子に行くつもりです そして、私のスクリプトタグの間で、 ( 'こんにちは、世界')アラートを言​​います。そう予告 それは少しずさんだが、私がHTMLを持っています、 内部があります JavaScriptのと呼ばれる言語、 これはと呼ばれるものであり、 関数呼び出しまたはプロシージャ・コール。 これは、この場合には、文字通り、動詞であります そして私は、コードの機能を呼び出すしています 誰か他の人が書きました。 だから機能があります アラートは、それでは、このページに行こう そして今、あなたは今、リロードをクリックして、 インタラクティビティの少しを参照してください。 これは、古い学校と醜いのようなものです。 これは一種のを思い出させます ポップアップ、おそらく、往年の それは何かaを行いました もう少しのプログラム。 それよりもので、より多くの、のがやらせます もっと面白いです。 私はここに行くと、この取り除くましょう。 そして、私は先に行くつもりだし、 私たちは昨日のようなフォームを作成します。 実際に、あなたは何を知っていますか? 私はに行くつもりです google.html、これは我々 以下のように見えており、昨日の開始 これは、これを介して我々は猫のための検索しました しかし、のようなものがあります注意してください 現在のバージョンのバグ。 これは、猫のために動作しますが、と仮定します 私は協力しないと私は何も入力しません、 そして、私は単純に提出する]をクリックします。 それは奇妙な行動のようなものです。 実際のGoogleに連れて行ってくれました、 私はエラーメッセージを与えていません。 私は、ユーザーに伝えたいです あなたは私たちに値を与える必要があります。 だから我々はこれをどのように行うのでしょうか? まあ私はCloud9とに戻ってみましょう 私は私のページの上部に行こう どこで、このようなスクリプトタグを追加します 私はいくつかのJavaScriptコードを入力するつもりです。 そして、私は次のことをするつもりです。 (document.getelementByID--とリコールの場合 我々は以前の話をすることを、 その関数。 どのようなID私が取得したいですか? 私はQを取得したい、と私はするつもりです this--ように、何も等しくないと言います 実際に私は、二重引用符を使用してみましょう ちょうどconsistency--には何も等しくありません、 その後、警告ここ( "クエリを入力してください」)。 だから私はあるよ​​うに思われるものを持っています 条件のようなもの。 私たちは、スクラッチで、この一般的な考え方を見てきました。 それは、これらのパズルの一つのようなものです このように見えた作品。 そして、私は何を言っているんですか? さて、ダウンここでは、私は気づきます 次のことをするつもり。 私はこのフォームを与えるつもりです qのフィールド名だけでなく、その Googleに何が渡されるかですが、私はよ それをローカル識別子を提供するつもり、 また、Qと呼ばれます。 しかし、私はこの何でも呼び出すことができますI 欲しい、私はちょうどそれをシンプルに保つつもりです また、簡単のために、qはそれを呼び出します。 そして今、私は何をするつもりです もう少し何か。 ここでは、フォームフィールドでは、私はするつもりです イベントハンドラと呼ばれるものを追加します。 提出する上で、私は呼びたいです 検証と呼ばれる関数。 これは、これをまだ存在しません。 単語、またはこの動詞の検証、 私はするつもりです何のため ここまでの今いくつかのコードを追加するだけです。 私は、機能検証を言うつもりです。 私はこれをインデントし、他を追加するつもりです カーリーここブレース、ここでもう一つ。 これが今何をしているか考えてみましょう。 私は自分の作成したと考えるnow--持っています 以前になかった独自のパズルのピース 存在し、私はこのパズルと呼ばれてきました 検証パズルのピースをつなぎ。 生活の中でその目的は、実行することです その中の4行のコード。 document.getElementById場合 そう概念的に、 それは、要素に行くために起こっています そのユニークなHTML要素 アイデアは、たとえその後、ちょうどqは、と 構文は、少し奇妙に見えます それは、同じだけのequalsを意味等しいです。 要素を持つのであれば、それは意味します qの一意の識別子、頂いた場合に、 値を持たない、それだけで等しいです 引用終わりの引用、何もそこに、 その後、どのような私が何をしたいですか? 私は、ユーザーで叫ぶしたいと思います。 そして、我々はここで非常に詳細に行くことはありません。 私はfalseを返すつもりです。 それは誤りです。 そうでなければ、私がtrueを返すつもりです。 だから、どちらかそれが働いたか、それはしませんでした。 falseまたはtrue。 そして今、私はミスをしなかった場合は、 私はこれを保存し、これをリロードしてみましょう。 そして、私はちょうどことを再確認しましょう 私は、実際には、任意のタイプミスをしませんでした、 だから私は自分自身を困らしないでください。 これが動作するかどうかを見てみましょう。 だから今、私は猫を入力するつもりです。 それはまだ動作し、または少なくとも半分の作品。 今私はそれをリロードし、今聞かせてみましょう 私は入力せずに送信してみてください anything--畜生、それが壊れました。 一瞬。 私は、コンソールを開いてみましょう、 [聞こえない]、ログインページをリロードします。 私は再びこれを試してみましょう。 ああ、畜生。 忘れてた。 私はタイプミスをしました。 私はそれが何であるかを覚えています。 。値。 値ならば私が言うことを意味し IDがqは要素の その後、ユーザーで叫ぶ、ということに等しいです。 だから今、私は再び私の息を止めてみましょう。 さあ。 そうしよう。 クエリを入力してください。 だから、私を介して、させないことです。 私は、これを一種の遊び心することができます その代わりに無価値をチェックします、 私のような何かを言うことができ、 これ以上の猫を探して、 そして今、私たちはもっとふざけせることができます 犬のためのユーザーの検索の場合、彼または彼女 望んでいる、または私はここに行けばと 今、私はできません、猫を検索します。 だからここに持ち帰りは何ですか? だから1、我々は中に導入しました HTMLとCSSの私たちの世界、 プログラミング機能。 私は今、実際にすることができます コー​​ド内で意思決定を行います。 以前、私は何ができるすべては、マークアップしています テキストコンテンツまたはグラフィックコンテンツ そして何を見て、それを伝えます 以下のような、どこを表示します。 今、私は実際に尋ねることができます Webページの質問 そして、ベースの意思決定を行います その上、およびユーザを促します 私は彼または彼女で叫ぶする必要がある場合。 それでは、何かを試してみましょう これで私たち自身に。 先に行き、私は次のスライドを開いてみましょう ここでは、ちょうど一つのことを指摘しています。 ちょうどCSSと同じように、我々はくくり出すことができます 別のファイルにJavaScriptコード、 あなたが同じことを行うことができます CSSのようにJavaScriptを使用。 そして、あなたはソースを使用していることを使用します スクリプトタグの属性。 しかし、我々は今のために物事を複雑にしません。 その代わりに、あなたは可能性がある場合 ないこのページに移動し、 but--私はorder--で、この周りを移動させましょう あなたができれば、ここで、このページを移動します。 ここではこのURL。 それは今日のスライドにあります。 あなたはので、リロードする必要があるかもしれません 私は事のカップルを追加しました。 いくつかのパズルを待つどこでもそこに行きます。 そして、これは私たちにチャンスを与えるだろう、 もう少し楽しみ文脈では、 いくつかのJavaScriptで手を出すします。 そして、あなたがそこに着くとき、 私は待って何を説明します。 緑入手してください。 青に設定します。 緑、赤の設定を設定します。 おっとっと。 ごめんなさい。 これが私たちの範囲であります この課題のドキュメント。 そして、これは次のように仕事に行くされています。 ですから、この上に持っているもの ページは全体の束であります バディによる画像パズルの スタンフォード大学。 ですから、ここで見ているものがほとんどです これらの魔法の目のパズルの1の種類、 しかし、あなたはそれを凝視すれば、 何もあなたに飛び出すつもりないです。 むしろ、何かがあります このイメージに隠されました。 そして、それは次のように隠されています。 画像は、あなたが知っているかもしれないように、することができます ちょうど3色で構成される。 いくつかの赤、いくつかの青、およびいくつかの緑。 そして、我々はすべて行うことができます 虹色 何とかこれらの3つの色を混合することによって。 だから、これは主に緑に見えると 青、しかしニックは、ここで言うように、 この鉄パズル画像はパズルです。 これは、の画像が含まれています 有名なものは、しかし、 画像が歪んされています。 有名なオブジェクトが赤の値です。 しかし、赤の値 全10によって分割されています。 そこで、彼らは10倍には小さすぎます。 だから、他の言葉で、ニック 元の画像を取りました、 彼はすべての不飽和化 それから赤、 赤の量を低下させます インク、可能ならば、それインチ 青と​​緑の値 すべてのちょうど無意味であり、 ランダムな値、別名ノイズ設計 実像を曖昧に。 だから何ニックがしたことは彼でした その後、赤とトーンダウン 彼はちょうどランダム投げました 青と​​緑の量 曖昧の種類を画像で まだそこに実際に何がありますか。 あなたはこれらの歪みを元に戻す必要があります 画像を明らかにする。 まず、すべての青と緑の値を設定 ゼロへの道からそれらを取得するには、 その結果を見てください。その後 10によって各赤の値を乗算し、 まで縮小 約その最終値。 有名なオブジェクトとは何ですか? だから、あなたのすべては、この長方形を持っています お使いのブラウザで今。 そして、いくつかがあることに気付きます スターターコード、いわば。 これは、JavaScriptコードであります ニックはあなたのために書かれています。 そして、そこだと気付きます 真ん中の線その それはだ、スラッシュスラッシュで始まります 何が一般的コメントと呼ばれています。 それはプログラマにフレーズであることを意味し それは機能的な意味を持ちません。 それは人間にだけ、視覚的なキューです。 だから、先に行くことができ、 ちょうどその行を削除し、 とに超注意しないこと 削除したり、何かを変更します。 そして、私はちょうどあなたを見てみましょう 何このコードがないと私はそれを残しておきます あなたに秘密のイメージを把握します。 私はちょうどきたここで、この最初の行 あなたは次のようになります強調しました。 左側に、 あなたは何と呼ばれていています ニックは任意に持つ変数、 しかし、合理的イメージのためのIMと呼ばれます。 右側の その等号の、 彼は私に新しいを与えると言っています 引用、引用終わり "単純なイメージ」。 この文脈でシンプルな画像、 よく、クラスと呼ばれるものであり、 それは一種のclass--ようなものです 技術的にprototype--本当に、 これは、私に新しいオブジェクトを与えています ファイルであるの内容、 鉄puzzle.png。 言い換えれば、ニックが作成されました シンプルなイメージのこの概念 教育学のために、我々はできるように 目的は、画像と遊びます そして、その赤を変更 緑、青の値。 そして、どのように我々はそれをやっていますか? ここでは、このやや不可解な構文 種類のリピートブロックのようなものです あなたのいくつかは、以前のスクラッチで見たこと あなたは10回を繰り返すことができ、今日、。 この場合、ニックはない持っています 10のような番号をハードコーディング。 その代わりに彼は、初期化すると言っています 0からxと呼ばれる変数、 Xが以下であるかどうかを確認 画像の幅。 それでより適切であると、イメージがあります 変数、ドットは、それの中に入ることを意味します そして、その幅を取得し、 その後、オープン括弧は、閉じた状態 括弧だけのプログラマの方法です これは関数であるというのが。 これが手順です。 これは機能です 他の誰かが書きました。 それを使用して、私に答えを返します。 そして、X ++は、空想の方法です 一度これをやった後、言って、 1だけxをインクリメントします。 換言すれば、この プログラマの方法です だループを誘導します 反復処理しようとして 画像内のすべての列。 画像は、ちょうどグリッドです ドット行ドットの列。 これは、反復の方法です これらの列のすべての上に。 そして内側には、 一方、我々は反復しています 高さ、こっち そして、こことここ。 これは、ちょうどtraipsingの方法です ほとんど古い学校のタイプライターのように、 ちょうど上に行くために 反復的に全体像。 でもそれはかなり完全ではありません 明確な、ちょうど今の信仰を取ります、 これらの3つの線その コー​​ドで一緒になって、 あなたが反復的に検索できるようになるだろう 画素ごとに、すべての画像に点在しています。 ピクセルは何ですか? 私たちが見ればまあ、明確にします 元に及び、ズームイン、 あなたが本当にあなたの目を置く場合 コンピュータの画面に、それはです ドットのちょうど全体の束、いくつかの 千ドットが一緒にパック。 そして、あなたが行うことはそんなに何ですか? これらのドットの各1、 最終的な定義は、 一般的に何の結果であります これは、青、緑、赤のRGBと呼ば 再度、を組み合わせることが可能 あなたの色の任意の数を与えます。 実際には、あなたが覚えていれば 多くの、何年も前から、 これらの事のようなプロジェクタースクリーン ない一つのレンズが、3つを持っていました。 そのうちの一つは、1、赤色光を吐き出します それらは、そのうちの一つ、緑色の光を吐き出します 青色光を吐き出します。 そして、あなたは中学校にあった場合 彼らは決してなかったどこに私がしたように 適切に整列、あなたがました 常に歴史の映画を見て それは、わずかに歪んでありました 3色がなかったため、 適切に組み合わせます。 しかし、それはそれぞれのことが判明します 赤、緑、青のこれらの値 それらに関連付けられている番号を持つことができます。 例えば、0なし赤手段のため 赤、緑0は緑を意味し、 そして、青のための0は青を意味しません。 だから、あなたは赤、ない緑を、持っていない場合 そして、青のない、あなたは何色を持っていないのですか? AUDIENCE:[聞こえません] DAVIDマラン:あなただろう そう、それは白だ願っています。 残念ながら、これは残念operates--? AUDIENCE:[聞こえません] DAVIDマラン:実際だから この場合、黒です。 ですから、これらのどれを持っていない場合 色は、あなたが黒の持っている、オン。 しかし、あなたが持っている場合、のは多くのことを言わせて それらの、赤の多くのように、それの255、 緑の多い、およびロット 青の、それは白です。 したがって、これらは両極端です。 このロジックによるだから、私は多くを持っている場合 赤となし、緑、ノー青の、 それは何色ですか? AUDIENCE:[聞こえません] DAVIDマラン:右、明らかに。 のそして赤なし、ロット 、緑なし青、その後、 あなたがよくhave--場合、我々だけで終了します それ、という理由だけで、これは、もちろん、 今、青です。 そして今、あなたはこれらの色を組み合わせることができます。 今はさておき、あなたのいずれかが持っているかのように これまでにいくつかの実際のウェブサイトのデザインを行って、 あなたが実際にかもしれません このようなシンボルを参照してください。 FFF--実際、それはです おそらくもないこと。 それはFFFFFFです。 誰もがこれまでFのとEのを見ました そして、through--それは、判明して 我々は、小数について昨日話しました そして今日、種類の小数について。 今日はバイナリについて話しました。 結局のところ、16進数は非常にあります コンピューティングで使用するための共通基盤システム。 バイナリ進が16で、10進数10で、2です。 そして、それはどのように行う、判明します あなたは16進数でカウント? ゼロ、1つ、2つ、3つ、4つ 5、6、7、8個 9、あなたは9の後に何を使うのですか? 次の番号は何ですか? 我々はすでにゼロを使用していました。 私はこれらの16を必要としています。 ゼロ、1つ、2つ、3つ、4つ 5、6、7個、8個、9個 あなたは、いくつかの任意の規則を必要としています。 そして、何人類はいくつかの時間を決定しました 前9の後に手紙が来ること Aおよび次いでBおよびCだから あなたが進数で数える方法 ゼロ、1つ、2つ、3つ、4つです 5、6、7個、8個、9個 、B、C、D、E、F、およびそれがカウントされ あなたのすべての方法は、それが15に、判明しました。 だからゼロ15には貫通ゼロであります F.さて、なぜそれが重要なのですか? さて、あなたは2つのFの持っているとき、 それはあなたが255を表現する方法です。 で非常に長い話を短く、 フォトショップの世界、 そのグラフィックデザインソフトウェア、 Web開発の世界では、 あなたは色の多くを持っている場合に、 もちろん、一緒にプレイするために、 多くの場合、プログラマはなります 16進数でそれらを表現します、 それは傾向があるという理由だけで 少しシンプルにします。 でも一見かかわらず それははるかに複雑です。 そのようにいずれの場合にも、これは重要です スタンフォード大学のニック理由 私たちの機能の6枚を与えています もしその、新進のプログラマ、 今使用することができるようになります。 このウェブに組み込まれて ページには、6つの機能です、 ニックが書いた6手順。 それらのうちの3つはあなたの番号を取得します、 赤、緑、または青の値。 それらのうちの3つは、その値を設定します。 そして、これらのアンダースコア ちょうどプレースホルダは、 あなたはそれらが何であるかを知る必要があります。 これらの三つの機能を持つため、 これらの事の最初の x座標になるだろう、 そしてこれらのものの第二 y座標になるだろう。 ドットすなわち、で、その ピクセルは、あなたがの緑を取得したいです、 、の青を得るの赤を取得します。 そしてここで、これがあることを行っています xが、これは、y値になるだろう これは数になるだろう。 それでは、最初にやらせます この一緒のライン そして私はあなたにそれを残しておきます 残りを推測しようとします。 指示に従ってだから このページには、我々は必要 倍赤色を増加させます 10、我々は緑を削除する必要があります そして、青を削除します。 のは、後者のシナリオを見てみましょう。 だから私がしたい、と私はつもりだ場合 いくつかのスペースを使ってインデントします、 私は赤を設定したい場合は、 緑、または青の値、 私は、次の手順を実行するつもりです。 画像、im.setBlue、その後、 ここに私の指示に基づいて、 私は何三つべき 今括弧内の入力? 私は、x値が必要です どのような数y値、および 私は取り除く取得したい場合、私はここに置く必要があります ここでは、この物語に基づいて、青の? ちょうどゼロ。 私は青をしたいしない場合、私はちょうどよ ゼロに変更しよう。 それでは、ちょうどこれは何をしているかおさらいしましょう​​。 私はこれらの上にここにあります 2行目と3行目、 私は2つのループを主張し、 ネストされたループ、よろしければ 、それが効果を持ってしようとしているだろう 左から右に進行します、 xのすべてにわたって上から下へ 値とyの値のすべて。 再び、画像ですので 行と列のちょうどグリッド。 だから、これは取得する予定です すべての青を取り除きます。 私はあなたの次の行に残しましょう​​。 どのように私はすべての緑を取り除くのですか? AUDIENCE:[聞こえません] DAVIDマラン:ニース。 AUDIENCE:[聞こえません] DAVIDマラン:ニース。 そして、私はズームアウトします。また、ちょうど取りますよ あなたは、任意のタイプミスをしていませんでしたことの世話。 そして、あなたは満足している場合 あなたが何をやったかと、 先に行くと、ボタンをクリックします 実行/保存して何を得る参照してください。 そして再び、我々が作りました ちょうど3変更。 私たちは、最初にそれを削除しました コメントし、それを置き換えます 次の2行のコードを持ちます。 あなたがヒットする必要がある場合、それはOKです 実行/保存]ボタン数回 何かを修正します。 そして、私はまた私にズームインしましょう コー​​ドあなたが転写できるようにします。 良い。 だから私はアンドリューは何を持っている参照してください。 間違いであると思われます。 彼はただ大きな黒いを持っています 彼の画面上の長方形。 誰にも持っています 大きな黒い四角形? AUDIENCE:はい。 DAVIDマラン:ビッグ黒い四角形? OK、それでは考えてみましょう これが何を意味するかについて。 我々はゼロ、ゼロ、ゼロと言いました、 ありませんので、緑、赤なし、なし、青、 あなたに黒を与えるために起こっています。 そして、それはことが判明します 私たちのラップトップのほとんど ちょうど十分な忠実度を持っていません。 あなたは非常にそこに言うことができません 実際にそこに何かあります。 そして、あなたは一種の多分傾く場合 前後にあなたのスクリーン、 多分あなたは見ています そこに少し何か? たぶん、一種の、一種の? それは完全に黒ではないのです。 AUDIENCE:[聞こえません] DAVIDマラン:ネタバレ! いくつかの赤が、そこにありますが、 仕様から覚えています 問題の、ニックはそれをトーンダウン。 彼は、ややそれを不飽和化 ではないがゼロにすべての方法。 だから我々は量を拡大したい場合 赤の、私はこのトリックを提案してみましょう。 私は私の画面をズームしてみましょう。 そして、私が先に行くとしましょう 量はim.getRed(x、y)を等しいです。 このコード行は私を与えています 変数と呼ばれるもの。 私は、間違いなく、任意に持っているが、 合理的に私の変数は何と呼ばれ、 明らかに? 量。 ただ金額。 私はそれを呼ばれたかもしれません 私はしたいが、私は何も この他の機能を使用して 私は以前に記載されています xコンマのyの赤色の量を取得します。 なぜ私はそれを行うのですか? 何がここで何をしたいですか? あなたはadd--する必要があります AUDIENCE:[聞こえません] DAVIDマラン:はい、多分 10を掛け。 あなたがこれを知らないなら、私はよ 先に行くと、これをするつもり。 私は先に行くつもりだと 私は赤の量をしたい、と言います 私は何になりたいです 、赤であり、10倍 星、上のアスタリスクあなた キーボードはthe--は、xを使用していないです。 スターを使用してください。 それはあなたが物事を掛ける方法です ほとんどのプログラミング言語インチ だから、カリームの直感に従って、 量と呼ばれるこの変数に格納され、 私は場所のxyにしたいどのくらいの赤です。 どのように、今、私がいることを作るのですか ピクセルは、その番号を持っていますか? あなたは既に前にこれをやりました。 あなたは緑と設定します ゼロに、値なしに青。 AUDIENCE:[聞こえません] DAVIDマラン:はい、よく あなたは10にそれをしたくありません。 あなたはすでにここに数学をしました。 だから我々は、赤の値を取得しています これはおそらく、低い数字です。 私たちは10で、最大乗算しています。 あなたが何をしたいですか 今可変量? AUDIENCE:[聞こえません] DAVIDマラン:ニース。 だから何im.set--? AUDIENCE:setRed。 DAVIDマラン:setRed、位置XYで。 うん。 そして、ちょうど額。 換言すれば、可変 一時的なプレースホルダです あなたはあなたが欲しいものを置くことができます。 私たちは、パッティングすることが起こります 現時点では、その中の数、。 私たちは、ことによってそれを掛けてきました それは大きくするために10。 そして今、私はその変数を代入しています その第三引数、または入力として 赤に設定します。 そしてその結果、一度 それを終えて、メモを取ります セミコロンや括弧の。 前方に移動し、クリック /実行を再度保存し、そしてあなた 実際にあったものを、魔法のように、表示されるはずです そこ。 [? Arwa、?]そこには何ですか? 本格的なエッフェル塔 赤、かなり暗いありません。 それはそう、今より明白でなければなりませんか? OK。 そしてアンドリュー、これ以上のブラックボックス? AUDIENCE:[聞こえません] DAVIDマラン:すべての権利。 だから私は、画面上でこれをしておこう。 あなたはこれで再生したい場合 それ以降、私はあなたのためにこれを再作成します。 しかし、ここで、このコードはまさにそれをしました。 なぜ我々は、他のいずれかの操作を行いません。 私は少し下にスクロールしてみましょう。 この場合には、プロジェクターだから 本当にそれを正義を行いません。 しかし、あなたの画面上で、あなたはおそらく 非常に赤と非常にブラックボックスを持っています。 これは、あまりにも、そのパズルです 有名なものを示しています。 しかし、画像が歪みました。 真の画像は、この時間は、あります 青と​​緑の値インチ しかし、それらはすべて分割されてきました 20によってそのような値は非常に小さいです。 赤の値はちょうどです 乱数、ノイズ。 これらの歪みを元に戻します 真の画像を明らかにしました。 だから、ニックは、次に何をするかを説明します。 ゼロに赤の値を設定し、 それが何であるかを台無しにしないでください。 その後、青を掛けます そして、緑の値は20によります。 だから、それはほとんどです 前と同じプログラム、 しかし、あなたは、プロセスを逆にしています。 そして、私はから私のコードを配置します 前の場合には、画面上 あなたはそれに戻って参照したいです またはそのいずれかでさらに再生されます。 私はその上にズームインしてみましょう。 しかし、銅のイメージを解決 パズル、数2。 AUDIENCE:[聞こえません] DAVIDマラン:OK、だから私はこの1 など、多くのヒントを与えるつもりはありません。 だから私はああ、してみましょうwould-- あなたはここにタイプミスを持って、参照してください。 そこでこのここで、覚えています 実際にそこに行く必要があります。 あなたがしたいのであれば、私は、提案するもの この1に焦点を当て、その答えがあります。 あなたがいること、それを転写する場合 第1の作業を取得する必要があります。 そして、あなたはのようにそれを使用することができます 第1のためのインスピレーション。 ニース。 良い。 そして好奇心のために、 これは単純な例であります 科学や芸術の ステガノグラフィと呼ばれます、 画像内の情報を隠蔽する技術。 一般的に、画像はあるかもしれません 非常に露骨に透かしを入れ 底にロゴ付き コー​​ナー、しかし明らかに、あなたは はるかに洗練されたことができます それについて実際 画像内の他の画像を非表示にします 何とかこの技術では。 別の30秒を取り、その後、我々はよ 少なくともあなたが見るべきものを発表。 そして、私は三分の一を残しておきます 在宅運動として1、 あなたはより多くのをたい場合 この週末に挑戦。 そして、私はアンドリューがかもしれないと思います 最初にそれを得ています。 第2の画像が、アンドリューは何ですか? AUDIENCE:自由の女神像。 DAVIDマラン:自由の女神像 答えはこの時間になります。 だからもう一度、ちょうどいくつかの簡単な 例の目的 あなたはどのように感を与えることです 私たちは、絵のスクラッチを翻訳しました ブロックにより迷惑とより 複雑なコードが、アイデアのすべて 全く同じままです、 導入にもかかわらず 今、変数の概念の、あります 一時的に何かを記憶することができます。 、の1以上のハンズオンやってみましょう ちょうど今、ドットを接続します 何かもう少し現実世界へ。 あなたができれば、あなたは、準備ができたら、 画面上の次のURLを参照してください。 それはあなたのコピーにもです スライドは、developers.google.com/maps~~V。 それでは、実際に何かをやってみましょう ウェブ上で、いわば、現実の GoogleマップAPIを使用して、または アプリケーション・プログラミング・インターフェース 以下の方法インチ グーグル、多くの企業のように、 自由な多くの機能を提供します あなたを構築するために使用することができます 独自の興味深い応用。 実際には、今まで使用している場合 タクシーや車を取得するためのユーバー、 おそらくユーバーを持っていることを知っています マップとそれに自動車を示しています。 つまり、私はできる限り最善のように 、GoogleマップAPIを教えてください。 彼らは実際には、Googleのマップを使用しています しかし、ユーバーは、マッピングの会社ではありません、 でもそれは次のようになります 特に興味深い問題 彼らの上に解決するために カーサービスの問題。 だから、彼らは立っています、 再び、肩の上 他人の、この場合にはグーグル。 だから彼らは、Googleのマップを使用しますが、自分の 車のサービスおよび他のそのような機能を備えています。 だから我々は、利点を活用するつもりです この次の操作を行います。 そして、私は、あまりにも速く行ってきた場合 一瞬で私を呼び出します。 画像のもののいくつかをおさらいもラクラク。 あなたは自分自身を参照する必要があります このようなページで。 だから、Googleの素敵な、と 彼らは最高の間です だけでなく、APIを提供します、 そのあなたが、無料のAPI で再生したり、商業的に使用することができます。 彼らはあなたの用法場合の充電を開始か 高いですが、私は事前に先に行っ そして無料のアカウントのための私達にサインアップ その、うまくいけば、10台のコンピュータ 突然のための私達を失格しません。 だから、うまくいけば、この デモは動作します。 そして、彼らはのためのAPIを持っていることに気付きます アンドロイド、iOSの、ウェブ、およびウェブサービス、 何すなわち。 のは、ウェブに焦点を当ててみましょう。 だからピンクボックス、ウェブをクリックして、その ページに、うまくいけば、あなたを導くでしょう ここに。 そして彼らは、APIの全体の束を持っています。 そして、それは少しすることができます 最初は圧倒的な、 私は、我々が望むものを通して私たちを導くでしょう。 左上にGoogleマップであります JavaScriptのAPI、JavaScriptのAPI。 だから先に行くと、そのいずれかをクリックします。 そして、それはここであなたを導くでしょう ページ、デモとサンプルコード以下。 私はここでズームアウトしてみましょう。 そして、私は私たちがスクロールダウンto--取得してみましょう それはクイックスタート手順を言う場所へ。 あなたの画面は私のようになります。 そして、二つのステップがあります、取得 キーと開発を開始。 私はすでにのためのステップ1を行いました 私たちは、いわゆるキーを取得します。 そして、これが一般的な考え方です。 APIキーはちょうど一般的です 大きな乱数または文字列 あなたが想定されていること あなたのコードに貼り付け、 Googleはあなたが時誰であるか知っているように、 あなたはそれらのサービス、それらのAPIを使用しています。 私たちがしているという意味ではありません 何かを充電中。 そして今、クリックして、代わりに 1、開発を開始]をクリックします。 あなただけの私を振ることができれば 以上の私たちがどこにあるかどうかは不明。 だから我々はちょうど傷ます 表面、ここが、何 私は魅力的だろうと思いました 実際に私たちのすべてを持つことです、 1つのウィンドウでCloud9を使用し、 別ウィンドウでこのチュートリアル、 実際に私たち自身を取得することができます アプリケーションの稼働中 それは、カスタムGoogleに埋め込みます 私たち自身のウェブページ内のマップ、 および1つまたは2つの機能が追加されます。 しかし、我々はただスクラッチよ 私たちは何ができるかの表面。 だから迅速な健全性チェック。 誰もが、このページにあり Google Maps JavaScript APIの? 始めると言うべきです。 私たちは、通過するつもりはありません 任意の手段によって全体のこと。 [OK]を、別のタブで、あなたがいない場合 それは開いている、Cloud9に行くのですか だけに自分自身を取得 新しいタブ、最終的に。 だからもう一度、昨日からc9.io、 c9.io、ちょうど新しいファイルを作成します。 そして、先に行くとコール それはあなたが何をしたいと思います。 私は私map.htmlと呼ばれます。 .htmlで終わるもの、それを呼び出します。 そして、あなたはおおよそであるべき 私は、このプロセスで午前場所 空の中だけ点滅プロンプトで タブはmap.htmlのようなものと呼ばれます。 またはファイル、新規ファイルこの時間。 そして今、オーバーに GoogleマップのJavaScript API、 私たちは、読書をスキップします このテキストのすべてを通じ。 しかし、世界があるハローことに気づきます 確かにどこでも、あなたは今それを参照してください。 こんにちは、世界はこの大きなカラフルなを持っています HTMLの全体の束の一例。 前方に移動し、コピーして貼り付けるだけで HTML、上部のドキュメントタイプからそう 近くにHTMLタグにすべての道、行きます 先行して、もう一度that--のすべてをコピーし、 それは、ハローワールドの下ですexample-- そして、あなたのCloud9タブにそれを貼り付けます その結果、今あなたの画面 大体地雷のようになります。 そして、あなたはそれを保存することができますが、 まだそれをロードしないでください。 見てみましょう 我々場合、コードとを参照してください。 推測か知ることができません それはGoogleのあるものから 私たちは盲目的にコピー&ペーストしてきました。 彼らはただ手助けをしたいです、 文字通り、私たちは始めます、 しかし、その多くはありません 実際にそこに複雑。 ただまだ質問? 私たちは前進しても安全ですか? OK。 こんなに早く、ちょうどやらせます いくつかの簡単な健全性チェック。 どのような私のライン1 、うまくいけばあなたを見て、 DOCTYPEのHTMLに、それが何を意味し、参照してください? カリーム、思い出しますか? AUDIENCE:[聞こえません] DAVIDマラン:はい。 ここではHTML 5付属しています。 一方、上の2行目 ここで画面がちょっとブラウザを意味し、 ここでは、実際のHTMLが付属しています。 ライン3はちょっとブラウザです、 ここでヘッドが付属しています。 4行目はねえ、もちろん、あります ブラウザは、ここにタイトルを付属しています。 ライン5は何をするのでしょうか? 実は、これはそうではありません 本当に私たちのために何でもします。 この場合には、それだけリサイズ デフォルトのページ。ライン6、 我々はについて話しましたが、それしていません 文字エンコーディングを指定します。 ファイルをエンコードするためのさまざまな方法があります、 特に外国語のため。 UTF-8は、単にデフォルトになる傾向があります。 だから今、私たちはラインに表示されます 16、いくつかのCSSを介して7。 そして、私たちは見ていないしたにも関わらず、 前に、これらすべてのもの、 我々は種類の推測することができます。 だからライン8手段、ちょっとブラウザは、適用されます 次の二つのタグのすべて、 明らかに? HTMLおよび本文テキスト。 だから、カンマが新しいものです。 そして、それはちょうど方法です 一度に複数のタグを指定します。 その後、我々は、中括弧を持っています。 だから明らかに、これはブラウザに指示します、 ページ100パーセントの高さを作ります。 だから、非常に少ないがあります場合でも、 内容は、ページ全体を作り、 事はページいっぱいにします。 マップは、最終的にページを埋めることを確認します。 マージン、それは何を意味するのでしょうか? これは通常、任意のようなものです エッジの周りの空白 その一部のブラウザの設計者だけ 、そこにあるべきであることを決めた、それ理由 種類の物事がクリーナーに見えるのです。 しかし、我々はそれを望んでいません。 私たちは、マップが起こって欲しいです エッジのすべての方法。 パディング、マージンと精神面で似ています。 余白は、外側のパディング手段を意味します 内側が、それは契約の同じようなものです。 これは、バッファの少しです あなたとエッジ間。 そして、13行目が良いです クイックレビューのためのチャンス。 何がシャープマップを行います 意味、またはハッシュタグマップが意味ですか? それは、原理的には、に何を参照していますか? AUDIENCE:[聞こえません] DAVIDマラン:その通り。 このプロパティは、このCSSプロパティ ただ一つのことに適用され、HTMLタグ それは引用、引用終わり「マップ」のIDを持っています。 そして今、みましょう早送り、スクロール ファイルの最後まで、どの あまりにも遠くはないが、ライン上の通知 19、あなたはそれを貼り付ける場合は正確に私がしたように、 19行目は、ちょうどdiv要素を持っています ページの部門、昨日 矩形領域と呼ばれます。 それは、その中に何も持っています。 これは、開始タグ、終了タグです。 しかし、それは固有のIDを持っています。 だから何があると思われます ここで起こっGoogleアカウントであります に私たちのウェブページを準備しさ 完全な100%の高さを有し、 無パディング、マージンなし、なぜなら 私たちが内側に置くつもりです その固有のIDです。このdiv要素の マップは、実際の埋め込みマップです。 そして、我々はそれを埋めるためにしたいです ページだけではなく、 途中でいくつかの小さな長方形です。 だから、ライン14は、同様に強調し、 マップ自体は100%の高さを持っている必要があります。 だから今のライン20との間に気付きます 28、これはJavaScriptコードです。 これは、それがだにもかかわらず、あります 、少し奇妙な構文的に すべてのことずっとここで起こっありません。 ライン21において、これは、宣言されています 変数と呼ばれるもの。 代わりに、それを呼び出します 私たちは前にやったように、量、 私たちは、より正確に言っています 単に変数を意味VAR、。 私たちは、その中を使用することもできました ニックのコードが、彼はしませんでしたので、私 どちらかそれをやって気にしませんでした。 これは、変数と呼ばれています マップ、そこです だ機能 どうやらinitMapと呼ばれます。 だから、これは私たち自身のカスタムのようなものです スクラッチでパズルのピース。 私たちは、の作品を作成しました initMapと呼ばれる機能が、 あなたは種類の推論できます 何が起きてる。 左側に、 私たちは、変数を持っています、 私たちは次のことを置くつもりです その変数の内部の事、 右から左へ。 右側はちょっと、と言います ブラウザは、私に新しいGoogleマップを与えます。 そしてgoogle.maps.mapはちょうどファンキーな方法です この機能することを指定します Googleマップに属しています。 括弧の後、我々が見てきました これは前に、ブラウザねえ、取得します 私のページの要素、 ユニークIDのページ内のタグis-- AUDIENCE:[聞こえません] DAVIDマラン:--map。 そして、何が、よく、起こっています 一緒にこの行、23行目、 基本的に言って、 ブラウザねえ、私を取りに行きます ページ上の空のdiv その一意のIDマップです、 私は挿入したいので、 it--にそれに注入、 あなたは、コンテンツの全体の束をwill--場合 それは、ウェブから来ることを起こります、 その後。 そして、Googleのは、私たちのためにすべてのことをやって。 だからもう一度、一日の最後に、 私たちは、抽象化のこの例を持っています。 私はマップが何であるか見当がつかない またはどのようにマップのAPIを実装します。 我々はする必要はありません。 私達はちょうどマップを指示する必要があります どこに自分自身を入れて、残します これらの基本となる実装 Googleに詳細。 今明らかに存在します データの2個 この例では、あること GoogleのAPIを提供します。 どうやら地図の中心、 ズームレベルは、いわば。 そして、誰もがこれらを認識しません 座標、緯度と経度? おそらくないが、我々は戻って行くことができます チュートリアルに、文字通り参照してください。 しかし、我々は一瞬でそれが表示されます。 ズームレベルは、間の値である私にはありません 、13またはそのような何かで1を知っています。 それはちょうどあなたがしているどの程度に関係しています ズームインまたはズームアウトし、それはそれです。 そして今の一番端になります ページ、予告ライン29-- それがために少し醜いです それは、このコード行をwraps-- にダウンロードするものです ブラウザGoogleの実際のAPI。 Googleのコードのすべて それが実装するエンジニアを書かれています 埋め込み可能なマップのこの全体の機能。 今度は、何も変更しないようにしましょう​​。 あなたが一緒に従っている場合は、先に行くと、 あなたが実際に持っている場合だけ、そのファイルを保存します 私が持っているもの。 そのURLにアクセスしてください。 ファイル名を指定して実行]ボタンをクリックすることができます トップアップとそれが教えてくれます もしもう一度WebサーバのURL。 そして、それは新しいタブにあなたを導くでしょう。 あなたは[開く]をクリックした場合 map.html、およびオッズあなたがしているしています アラートを取得するつもり、 エラーメッセージは、はい? エラーメッセージは、エラーメッセージ? だから、残念ながら、エラー メッセージはその啓発ではありません あなたが実際に開かない限り コンソール、その特別なタブたち 昨日開いて保持し、 少し以前の今日。 しかし、私は全体でつまずい この先に、私既に 解決策が何であるかを考え出しました。 今日のスライドで、または むしろ、Cloud9で、予告 我々はやらなかったこと 意図的に何か。 で、このスクリプトタグに注目してください ライン29、あなたはそれを読めば、 それはmaps.googleapis.com/ようなものです 何か、何か、何か、 その後、誰かに気づきます 開発者の一人、 すべての首都に書きました 手紙、あなたのAPIキー。 私たちはそこで何かを貼り付ける必要があります。 そして、これはステップでした 私は前に私たちのためにしました、 そして再び彼らがブラックリストに載せるかもしれません 私たちの突然の場合、私たちの12以上 同じキーを使用して起動し、 しかし、それでは、何が起こるか見てみましょう。 だから、今日のに行けば スライドは、1スライド後に、あります テキストのこの非常にファンキーに見える文字列。 先に行くと、ちょうどそれをコピーして、 それはあなたのAPIキーを言う場所に貼り付けます。 それは私がのためにサインアップした一つです。 そして間違いなくしようとしません 手動でそれを入力し、 それは、はらん感じているので、 タイプミスで、潜在的に。 だから、ちょうどそれをコピーして貼り付けます。 そして、ラインを作るために起こっています 長いが、今、ちょうど、明確にします それはもう少しはず このように、どこにキーがないに等しいです あなたに叫んで資産計上。 ページを保存し、戻って 他のタブに、リロード、 そして、のマップを見てほしいですか? AUDIENCE:オーストラリア。 DAVIDマラン:オーストラリア。 だから、明らかにそれらがあります GPSは、オーストラリアの座標。 そして、私はちょっと歩くましょう そして、かなりそこにはありません誰を助けます、 しかし、Google経由、見つける、私が提案してみましょう あなた自身の故郷のGPS座標 またはあなた自身の母国。 おそらくGoogleはこれをオンにすることができます アップ、またはウィキペディアはあなたを伝えることができます。 しかし、2つの異なる値を選択します 緯度と経度のために、 後ろに行くと、それらを貼り付け、 その後、保存した後にページをリロード あなたが持っていることができるかどうかを確認 あなた自身の故郷のためのマップ。 そして、あなたがで行われているとき そのフォローアップchallenge-- そして、私は少し方向性を与えるだろう、 意図的に、あなたのように意図的に カップルのために闘争しなければなりません ドキュメントと分、 ないこのことがマップを変更 漫画デフォルトが、衛星地図。 だから、実際に衛星を参照してください。 代わりに、きれいな色の画像。 そしてヒントは、私はあなたを与えるだろう マップの種類を変更です。 それは取得に戻ります インスピレーションのためのページを開始しました。 あなたが集められているかもしれませんが、 あなたが探しているなら、 非常に多くのより多くがあります あなたがすることができるもの。 あなたの中には、既に持っています マップタイプを変更しました。 しかし、あなたは私を聞かせて、例えばdo--ことができます 私たちはもちろんのためにした何かに行きます 私はmaps.cs50.netをteach--。 私たちの学部生の一つは、これをしました。 私たちは、ハーバードヤードを超える当社の地図の中心と これらの建物名のすべてをオーバーレイ、 そして、我々は彼がこれを追加していました。 私が検索したいのであれば、 例えば、マシューズホール、 我々は少しドロップダウンメニューがあります。 そして、私は彼が、ブートストラップを使用していると思います ライブラリ我々はこのために先に述べました。 そして、あなたはマシューズをクリックした場合 ホール、すぐにそれ 特定のマップをジャンプ 場所、およびそれショー あなたこの小さなポップアップで絵。 しかし、たとえこの小さな ポップアップ、我々は実装していませんでした。 私たちの取得を下にスクロールすると ページを開始し、情報ウィンドウを探し、 あなたは、その一部が表示されます 機能あなた自身で とはいえ、追加することができます もう少し複雑、 情報ウィンドウと呼ばれるものです。 そして、私は例をクリックした場合 ここでは、これは楽しいものですが、 あなたは、このようなものを行うことができます 出来上がり、その後、マーカーをクリックすると、 情報がポップアップ表示されます。 だから我々は非常に導入していません JavaScriptを十分に特徴 正確にどのようにあなたの絵をペイントします 一緒にこのようなもののすべてを配線することができ、 私たちは種類の表面を傷付けてきました。 実際に、私はちょうどその時何をしました 私は、そのマーカーをクリック イベントAをトリガし クリックイベントに、いわゆる。 そして、私たちが実際に見ました イベントは、以前の今日、 イベントを提出する、いわゆる、 ときに我々が防止されました 猫を探してからユーザー。 だから我々は一種の拾い上げ、選びましました すべてのこれらのさまざまな機能の中から、 うまくいけば、あなたの感覚を与えるために、 あなたが実際に缶の もう少しで行います プログラミングで快適、 そして、完全にリソースを解放。 質問は? なし? これはあなたの最後のチャンスです、 少なくとも今日は、金曜日に、 あなたの胸から何かを得るために あなたはここから出て歩くように 自信を持って、快適な感じ。 はい。 AUDIENCE:なぜしません あなたは、もう一つを追加しますか? DAVIDマラン:善ああ私。 私が思うに、この週末を休ませる必要があります。 その他の質問? AUDIENCE:[聞こえません] DAVIDマラン:あなたがでcan-- Internet Explorerで、平和で残り、 あなたは、VBを置くことができるように使用されます スクリプト、仮想基本的なスクリプト、 それは本当に上でキャッチすることはありません。 だから短い答えはただのJavaScriptです。 その他の質問? すべての権利は​​、よく、私はこれをやらせます。 私は外で私たちの同僚をつかむしてみましょう。 彼らはいくつかの評価を持っています 彼らは誰もが望む形 記入数分を過ごすために。 彼らは、そのフォームを収集すると、任意の あなたは外に持っているかもしれない免除。 彼らはまた、証明書を持っています。 私はあります推測しています 外はまだいくつかのスナック。 私はこれらを通過させ、そしてあなたの場合 その間に任意の質問を持って、 私はより個別に歩きますよ 私たちはあなたが始めることができます。 はい、もちろん。 AUDIENCE:[聞こえません] DAVIDマラン:それは これらの日は通常真。 確かにウェブと ソフトウェア、あなたが傾いています 他人にあなたはどちらかです 審美的なものを使用して ブートストラップのようなので、あなたはしないでください ローレベルを実装する必要が メニューの詳細と ボタンやすべてのこと。 あなたは誰かに寄りかかっています Googleのようなので、その ユーバーを構築する必要はありません ビジネスとマッピング事業、 そして、同様の任意の数 用途としても。 実際には、ログインがあまりにも、人気があります。 あなたはSpotifyはまたはを使用している場合 ウェブサイトの任意の数、 あなたは、いくつかにログインします Facebookのを使用してウェブサイト。 だから、素敵なものです ログインのためのAPIがあります 今日では、あなたが持っていないように、 独自のユーザーテーブルを持っています そして、独自のデータベースのすべて 必ずしも同程度です。 あなたは、Facebookがすべてをやらせることができます あなたのために、その複雑さの。 だから、エキサイティングな時間です​​、 正直、プログラミングにおいて、 非常に多くのサードパーティがあるので、 あなたが上に構築できるサービス。 そして再び、あなたが支払う価格です 金融やダウンタイムのいずれか。 Googleがダウンした場合、 そうユーバーは、間違いなく、い おそらくそれはです 合理的なトレードオフ。 そして再び、それがテーマの一つでした、 うまくいけば、日の過去のカップルのため、 これらのトレードオフです。 そして、めったに行くはありません 正しい答えであることを。 それは本当に良いです 二つ以上の回答。 これらの周りを渡します。 そして、これらのCloud9アカウントが継続されます 永久に、理論的には、動作するように。 あなたは数日待っていればあなたが見つけるかもしれません またはそれらに再度ログインする週間以上、 それは、1等かかる場合があります バックアップ開くために5分、 それは、彼らが置かという理由だけです それは、リソースを節約するためにスリープ状態に。