DAVID MALAN: Okay, sind wir zurück. Also für die spannende Abschließend unserem letzten Abschnitt auf Web-Programmierung, die ich dachte wir würden als allgemeiner Begriff verwenden ein paar verbleibenden Themen zu erfassen. So dass am Ende der Tag, werden wir tatsächlich tun ein bisschen von Hands-on-Web-Programmierung mit einer Sprache namens JavaScript. Und ich denke, dass wir einen Blick auf etwas zu den Bildern im Zusammenhang mit und der etwas entdeckt heimlich in einem Bild versteckt, und nehmen Sie auch einen Blick auf die Google Maps API, Application Programming Schnittstelle, als etwas, Vertreter der Art der Software, das ist immer mehr und frei verfügbar heute. Aber warum nehmen wir nicht einen Blick bei einer Zutat zu dieser Welt dass wir Art gewesen bin für selbstverständlich existiert für einige Zeit, eine Datenbank. Für den letzten Tag und eine halbe wir angenommen haben dass wir Zugriff auf eine Datenbank haben, aber Welches Problem löst eine Datenbank? Was bedeutet es für uns tun? Was ist es? PUBLIKUM: [unverständlich] DAVID MALAN: Hält alle Informationen, OK, und welche Arten von Informationen könnten Sie in it? PUBLIKUM: [unverständlich] DAVID MALAN: Alle Informationen, Sie daran setzen, erhalten Sie zurück. Das ist wahr. Und auf einer typischen Web-basierte Website oder Web Anwendung, welche Arten von Informationen, speziell setzen, könnten Sie in? PUBLIKUM: [unverständlich] DAVID MALAN: Benutzer. Also, was ist ein Benutzer? PUBLIKUM: [unverständlich] DAVID MALAN: OK, registriert Benutzer des Aufstellungsortes. Und was bedeutet es, Speicher Nutzerdaten? Was bildet einen Benutzer? Ein Benutzer hat was? PUBLIKUM: [unverständlich] DAVID MALAN: Ja, persönlich Daten und Ich mag das. Lassen Sie uns genauer zu sein. So ein Benutzer hat in der Regel einen Namen, was sonst haben könnte ein Benutzer? PUBLIKUM: [unverständlich] DAVID MALAN: Ein addr-- OK, so Vorname, Nachname. Das ist gut. Eigentlich wollen wir beheben dass, weil es geht die Möglichkeit zu eröffnen für Diskussion, noch weiter. Vorname, Nachname, Geschlecht. Eine ID irgendeiner Art. Was sonst? Ich hörte etwas anderes vor, auch. Eine E-Mail, Postanschrift. Lassen Sie uns also Pause gibt und jetzt betrachten nicht das, was wir in der Datenbank sind zu speichern, aber-- und nicht warum, da es vielleicht ist offensichtlich, dass, wenn Sie einen Benutzer zu registrieren, Sie wollen, dass sie für einige Zeit zu erinnern. Sie wollen es nicht zu nur im RAM gespeichert werden, und werden forgotten-- so Lassen Sie uns auf der, wie zu konzentrieren. Es stellt sich heraus, dass in die Welt der Datenbanken, es gibt mindestens zwei Arten in diesen Tagen. Etwas rief eine SQL-Datenbank, Strukturierte Abfragesprache, oder, cutely genannt, NoSQL, die nicht SQL ist. Und diese ist eine Beispiel dessen, was man werden eine objektorientierte genannt, oder ein Objekt zu speichern, eine Datenbank dass speichert Objekte, und nicht, Entschuldigung mich, wie wir bald sehen, Reihen. Also werden wir für einen Moment konzentrieren sich auf Das erste von diesen, nämlich eine SQL Datenbank, wenn auch nur, weil es so vertraut schon, für jeden die verwendet Excel oder Google Sheets oder Apple Zahlen sowie alle Standard Tabellenkalkulationsprogramm, oder, äquivalent, oder mehr sophisticatedly, so etwas wie Microsoft Access oder Oracle oder MySQL oder PostgreSQL, von denen alle Produktnamen für Implementierungen sind der folgenden Idee. Eine relationale Datenbank ist einfach etwas, das Zeilen und Spalten aufweist. Und durch Zeilen und Spalten, Ich meine buchstäblich etwas wie diese, so, wo wir vielleicht die haben Name eines Feldes und seiner Art hier. Und tatsächlich, lassen Sie mich Jetzt beginnen diese abzubilden. Also eigentlich, ich weiß nicht, warum zog ich einen separaten Diagramm. Lassen Sie uns diese einfach zu halten. Wir haben hier die Anfänge unserer Tabelle, wo dies ist der Name des Felds und dies ist der Datentyp, und nach Art meine ich Folgendes. Ist es eine Zahl, ist es ein String ist, eine kurze Zeichenfolge, wie ein Wort, ein Absatz ist es, ist es Binärdaten, wie ein Bild? Und lassen Sie uns gerade diese necken abgesehen nur für einen Moment. Also zuerst Name, Nummer, string, großer Teil der Text-- PUBLIKUM: [unverständlich] DAVID MALAN: Ja, so Schnur. Und in einer Datenbank Zusammenhang werden wir typischerweise nennen das char-Feld. Ich werde einfach char sagen jetzt, aber wir sind geht weiter zu verfeinern dies in einem Augenblick. Zeichenfeld. Nachname ist wahrscheinlich das gleiche. Geschlecht? Männlich oder weiblich, so dass es könnte ein Zeichen Feld sein. Es könnte entweder Zitat sein, unquote "Männlich" oder Zitat, unquote "weiblich" oder es könnte m oder F sein. Wenn Sie möchten, integrativer zu sein, Sie könnten einen dritten Wert benötigen oder irgendeine Art von anderen Feld zusammen. Und so könnte man true false verwenden. Das Feld könnte genannt männlich sein und dann könnte man sagen, wahr oder falsch. Aber das muss nicht unbedingt erfassen alle Informationen, die Sie wollen könnten. So stellt sich heraus eine andere Art gibt es hier des Feldes, die nützlich sein könnten in einer typischen Datenbank mit dem Namen ein Enum, wo es ein Zeichenfeld ist, aber du, der Designer, bekommen aufzuzählen, die die möglichen Werte, wie Zitat, unquote "männlich", zitat, unquote "weiblich" und so weiter. So dass alles, was Wert in Ihrer Datenbank, zwar zeichenbasierte, aber es hat einen dieser Werte. Wir würden wahrscheinlich nicht wollen, ein Enum für Vornamen oder Nachnamen. Sonst hätten wir aufzuzählen, wie der Name jeder leitet sich von, buchstäblich möglich Vorname und Nachname. OK, so dass ID, was sollte eine ID sein? Ja, vielleicht eine Nummer. So bleiben wir mit dass für jetzt, Nummer. Und durch die Anzahl, die Anzahl ist jetzt ein wenig zu breit. Für das Ende des zweiten Tag, ich fühle mich wie wir sollte ein wenig genauer. Zahl könnte bedeuten, wie es, so etwas wie 1.236 könnte. Und das ist wahrscheinlich nicht was wir durch eine ID bedeuten. Was meinen wir, wahrscheinlich durch eine ID? PUBLIKUM: [unverständlich] DAVID MALAN: Oh, OK, so vielleicht ist es nicht einmal eine Nummer. Vielleicht ist es tatsächlich eine eindeutige Kennung das ist eine Zeichenfolge, wie einen Benutzernamen. So absolut, könnte sein. Ich glaube, jemand wahrscheinlich bedeutete numerisch, obwohl. Also lassen Sie uns mit, dass zu bleiben. Welche Nummer? Was ist ein mehr eine ganze Zahl precise--. So eine Zahl wie 0, 1, 2, 3, so werden wir nennen eine ganze Zahl dieser. Und selbst dann, ich könnte werden pingelig, es ist nicht wirklich nur ein allgemeine integer Sie wollen. Sie wollen wahrscheinlich nicht negative Werte, gerade weil, es fühlt sich einfach seltsam. Sie wollen wahrscheinlich positive ganze Zahlen. So kann man auch ausdrücken dass in einer Datenbank, aber jetzt werden wir ganze Zahl sagen. Email? Dies ist wahrscheinlich just-- was? PUBLIKUM: [unverständlich] DAVID MALAN: Es ist eine E-Mail, aber das ist Zeichen, nicht wahr? Es hat nur eine funky Charakter wie ein "at" Symbol oder etwas anderes, aber es ist immer noch ein Zeichenfeld. Und Postanschrift? Zeichenfeld. Also das ist ein schöner Anfang, aber Lassen Sie uns nun ein wenig genauer. So stellt sich heraus, dass in eine Datenbank, die oft Sie haben die Wahl über mehr verfeinert Versionen dieser Dinge. In der Tat, in einem typischen SQL-Datenbank, SQL, oder allgemeiner relationale Datenbank, Datenbanken mit Reihen und Spalten, Sie oft bekommen, um nicht nur die Art der die angeben field-- lassen Sie mich etwas Raum hier-- machen sondern auch die Länge. Wie lange ist ein erster Name? Ich denke, D-A-V-I-D. OK, es bekam ich wahrscheinlich genauso wie die Hälfte beleidigt der Personen im Raum, rechts, da Ihre Namen sind länger als fünf Briefe, scheint so fünf ein wenig egoistisch und naiv, so was ist ein besserer Wert? 10, alles in Ordnung, und ich denke, wir sind im Zimmer OK. 13? 30? Warum kann ich nicht nehmen die Ansatz von früher, als wir sprachen über Arrays und Speicher? Warum sage ich nicht nur wie 1000? Niemandes Name wird mehr als 1000 sein. Zurückschieben. PUBLIKUM: [unverständlich] DAVID MALAN: Ja, es ist verschwenderisch, rechts, vor allem wenn die meisten Namen sind nur fünf oder 10 oder 15 Zeichen, das ist sehr verschwenderisch. So wissen Sie was? Dies ist eine Art eine harte Frage. Nun, wir können sicherlich Englisch analysieren und einer anderen Sprache, die Namen und herauszufinden, na ja, was das ist average-- Durchschnitt nicht wirklich Hilfe us--, was die max ist, ist wahrscheinlich das, was wir wirklich wollen. Aber es stellt sich heraus, dass wir auch haben einige Wahl über die Art hier. In einer typischen SQL-Datenbank, Sie haben etwas namens ein char-Feld und auch ein varchar, V-A-R, für variable char-Feld. Und der Unterschied ist. Ein char-Feld, du bist der Designer, müssen im Voraus angeben die genaue Länge des Feldes. Also vielleicht der erste Name wie 20 fühlt sich irgendwie sicher. Möglicherweise müssen einige googeln zu tun, um sehen, ob das wirklich sicher genug ist. Es ist wahrscheinlich ein Name mit 21 Zeichen, aber jetzt an, dass 20 ist sicher. Ein char-Feld würde bedeuten, in einer Datenbank, die Sie unter Verwendung von 20 und immer 20 Zeichen. Nun, wenn es nur D-A-V-I-D, 15 von denen, werden nur leere Zeichen lang sein, aber Sie verwenden immer noch alle 20 Bytes. Ein varchar Feld, dagegen bedeutet, dass die String sollte bis zu 20 Zeichen lang sein aber wenn es nur fünf, Sie gehen nur verwenden fünf oder vielleicht sechs für ein besonderen Wert am Ende, wie die 0 diskutierten wir, dass bedeutet das Ende eines Zeichens Sequenz im Speicher. Also, wenn Sie denken, dass Sie Sie könnten char wählen im Vergleich zu varchar, dass die Trade-off gegeben? Char verwendet, dass viele Zeichen, varchar verwendet nicht mehr als das viele Zeichen. PUBLIKUM: [unverständlich] DAVID MALAN: OK, wenn Sie wissen, die Länge der Saite ziemlich überzeugend zu verwenden, nur Zeichen, denn wenn Sie wissen es, legte es nur nach unten. Und vielleicht ist das gilt für einen Reißverschluss Code, in den USA mindestens 02138, es wird immer fünf sein Zeichen, bis Sie den Strich vier hinzuzufügen. Aber Sie könnten einige Werte haben für was Sie wissen immer die Länge. Oder vielleicht staatliche Symbole, wie NY für New York, und MA für Massachusetts in den USA. Vielleicht haben Sie einige Situationen wo das ist völlig in Ordnung, aber von dieser Logik, warum wir Grübeln sogar das? Warum nicht nur wir verwenden varchar, und wir werden dann nur immer zwei Zeichen verwenden sowieso, oder sowieso immer fünf Zeichen verwenden? Warum sparen einfach nicht varchar für alles, von dieser Logik? Es muss ein Haken sein. PUBLIKUM: [unverständlich] DAVID MALAN: Könnte schreiben Sie etwas falsch. So ist das wahr. Aber selbst dann können sie nicht verwenden mehr Speicher als ich zuweisen. Ich habe immer noch die endgültige sagen über die Länge, so dass sie nicht aus Versehen machen dass Fehler gemacht, aber ein guter Gedanke. Es ist subtiler, aber es ist sehr verwandte zu unserer Diskussion, eigentlich von Arrays und Listen früher verknüpft. Es stellt sich heraus, dass eine Datenbank, wenn es weiß, dass alle Werte sind einer festen Länge, auch wenn einige dieser Werte sind leer, Art ästhetisch leer, D-A-V-I-D und dann 15-Rohlinge, es stellt sich heraus, dass, wenn jedes Feld ist die gleiche Länge, viel wie ein Array hatte alle seine Sachen Rücken an Rücken nach hinten, so zu sichern, dass Sie könnten nur plus 1 zum nächsten zu erhalten Wert, die gleiche Idee in einer Datenbanktabelle. Wenn alle Ihre Zeichen strings die gleiche Länge, Sie haben, was Random Access genannt wird. Wenn alle Saiten von 20 Länge, müssen Sie nicht nur tun plus 1 Sie gerade tun Plus 20, plus 20, plus 20, plus 20, und Sie können sehr schnell blättern oder durch alle Ihre Daten zu suchen. Eine Variable char-Feld, dagegen nicht immer 20 Zeichen lang sein. Es könnte 20 und dann 15 und dann 19 und dann 10, und so, wenn Sie suchen möchten durch sie, können Sie nicht einfach blind Addieren Sie 20 Byte zum nächsten zu gelangen. Sie müssen buchstäblich durchsuchen weil der Rand der Datenstruktur, wenn man so will, ist zackig. Es versteht Art in die und aus basierend auf die tatsächliche Länge der Saite. Also, wenn Sie wissen, die Länge, als Kareem sagt, ein Char-Feld verwenden, weil Sie gewinnen, dass Effizienz des Seins der Lage, durch sie zu suchen schneller wenn Sie nach Daten suchen, Verwenden Sie andernfalls eine Variable. Leider habe ich keine gute Antwort , wie lange sollte der Name sein, aber für so etwas wie ein Name, würde ich sagen, ein varchar ist üblich, weil es nicht gehen eine feste Länge für alle zu sein. 20, ich weiß nicht, 20 fühlt sich ein wenig eng. Lassen Sie uns nur 50 sagen, 50. Es ist nicht wirklich kostet, dass viel mehr 50 zu sagen, statt 40, aber irgendwann, was Sie brauchen ein Urteil Anruf zu tätigen. Sehr häufig, offen gesagt, für [? historisch?] Gründe, auch wenn es übermäßig ist, Vor 255 zu sagen, weil einige Zeit, in der populären Datenbank-Systemen, wie MySQL, ein freies Open-Source-Tool dass viele Unternehmen wie auch Facebook verwendet, dies war das maximale Ausfall so dass die Leute gingen einfach mit ihm. Also nicht unvernünftig, aber wir werden Verwenden Sie ein wenig mehr Intuition und sagen, dass 50, das ist wohl ein wenig übertrieben. Geschlecht, ich mag Enum, und so können wir daher aufzuzählen, männlich oder weiblich, oder vielleicht effizienter, m oder f oder eine andere Symbolik, aber Enum fühlt sich wie eine gute Wahl gibt. Um klar zu sein, Geschlecht konnte nur ein varchar sein, und wir konnten nur alle zustimmen, da nette Leute, setzen die gleichen Werte dort immer. Männlich oder weiblich oder Dingsbums. Aber das Problem ist also, dass wir konnten einen Fehler machen, wie [unverständlich] vorgeschlagen früher in einem anderen Kontext. Wenn wir einen Fehler machen, könnten wir bekommen falsche Werte in unserer Datenbank. Also, was ist schön, über Datenbanken wie Oracle und MySQL und andere, ist, dass Sie diese letzte haben Schicht der Verteidigung, wo Ihre DBA, Datenbankadministrator, Wer ist die Gestaltung dieser Tabelle wie wir verbal sind, könnten setzen an Ort und Stelle eine Enumeration, dass schützt vor, dass durch die Angabe Mann, Frau, und so niemand sonst kann kein Programmierer versehentlich einen anderen Wert ein. So wäre dies eine gute Sache sein. Dies ist ein Feature. So eine ID, eine numerische ID vorausgesetzt, es wahrscheinlich sollte eine positive ganze Zahl sein. Und wir haben manchmal tun Gelegenheit Länge zu diskutieren. Sie würden nicht in der Regel Geben Sie eine Zahl hier, Sie würden stattdessen angeben dies ist ein int, oder ein großer int, wie sie in der Regel genannt sind. Aber in der Regel eine ganze Zahl wäre, sagen wir mal, 4 Byte. Und wenn es 4 Bytes ist, das ist, wie viele Bits? PUBLIKUM: [unverständlich] DAVID MALAN: 32 Bit. Wie viele Benutzer können wir in unsere Datenbank, wenn sie alle haben eine ID und diese ID muss eindeutig sein? 32 Bit bedeutet, dass wir Muster aus einem, zwei, drei, vier, five-- so, wie viele verschiedene Muster von Nullen und diejenigen, können Sie haben, wenn es 32 sind? Das ist das gleiche wie zu fragen, was zwei bis 32? Es ist eine große Zahl, die Ich kann nicht ganz bekommen Recht, aber ich weiß, dass es in etwa 4 Milliarden. So bedeutet dies, Ihre Datenbanktabelle kann haben vier Milliarden Nutzer und das ist es. So ist dies eine interessante Design Implikation. Eine anständige Zahl von Unternehmen vielleicht haben beschlossen, nicht so sehr für ihre Benutzer-Tabelle, da mit 4 Milliarden Nutzer ist ein seltenes Problem. Dies ist eine Art von Facebook-Stil Problem, nicht ein typisches Unternehmen Problem. Aber vielleicht, wenn Sie Transaktionsprotokolle oder irgendeine Art von Daten, die ständig wird in die Datenbank geschrieben dass absolut könnte Milliarden haben und Milliarden von Zeilen und Sie verwenden eine ganze Zahl für sie, was los ist so schnell geschehen, wie Sie erhalten Nummer 4 Milliarden zu rudern und dann versuchen, die einfügen 4000000000. und 1, so zu sprechen? Ich vereinfacht die Zahlen ein wenig. Sie können zurück geschnitten, Ich meine, Sie haben es irgendwie zu behandeln. Und was ein Computer würde in der Regel tun, darüber nachdenken, es selbst von diesem Morgen, wenn Sie ein 4-Bit-Wert wie 1, 1, 1, 1, die, nur am Morgen zu binden zusammen mit dem Nachmittag, was darstellt diese Zahl in binärer? OK, wir werden es leichter machen. Was bedeutet diese Zahl repräsentieren binär? OK, wir werden es leichter machen, was bedeutet dies in binär darstellen? PUBLIKUM: Drei. DAVID MALAN: Drei, weil wir haben die, die column-- [LACHEN] Puh! Wir hatten die Einer Spalte und die Zweier-Spalte. So nehme an, dass in der Tat, unsere [? Infield?] waren nicht 32 Bit, aber es waren zwei Bits, können wir zählen von Benutzernummer 0, 1, 2, 3, und dann sind wir Art von zurück zum Benutzer 00 wieder. So ist es das, was normalerweise passiert. Wenn Sie jemals die expression-- gehört wahrscheinlich nicht, aber wenn Sie have-- Integer-Überlauf, in dem Sie halten alle Ihre Bits Spiegeln die größten möglichen Werte zu sein, und dann bist du aus Bits, was passieren würde, normalerweise? Warum sage ich 00? Nun, das ist drei. Wie gebe ich 4? Wie gebe ich die für Nummer 4 in binär? PUBLIKUM: [unverständlich] DAVID MALAN: One-- ja, nicht 100 sagen per se, weil es die falsche Konnotation, aber 1-0-0. So 1-0-0 diese Zahl ist in der Tat richtig, aber wenn Sie nur zwei Bits haben, Was haben Sie wirklich? Sie haben zu 00 gerollt. Und in der Tat, das ist, was passieren würde. Eigentlich kann man denken darüber mehr vertraut. Wenn Sie sich erinnern, was, vor 16 Jahren, die Welt enden sollte, wenn das Y2K-Problem passiert ist. Warum war das? Nun die meisten Computer, für vernünftige Entscheidungen, wurden die Nummern gespeichert sind wie die Jahr 1975 oder das Jahr 1999 durch nur zwei Ziffern in den Speicher des Computers. So natürlich, was passiert, wenn Sie auf das Jahr 2000 erhalten, gehen Sie auf diese, oder besser gesagt, ja. So gehen Sie auf das Jahr 2000, aber wenn Sie verwenden nur zwei Ziffern sieht es aus wie das Jahr 00 und so haben Sie gerollt. Und das ist, warum viele Systeme benötigt, um zu der Zeit aktualisiert werden. Also mit dieser sagte, Unternehmen wie Facebook laufen gegen diese auf. So ist die einzige Möglichkeit, das zu handhaben Situation, ehrlich gesagt, ist es zu antizipieren. Oder der sauberste Weg zu handhaben diese Situation ist es zu antizipieren, so dass Sie nicht tun müssen Änderungen später machen. So anstelle von 8 Bytes, weißt du was? Ich werde vorausdenk sein hier, obwohl es ein wenig optimistisch, dass wir gehen zu haben 4 Milliarden und 1 Benutzer auf unserer Website. Aber lassen Sie uns nur 8 Bytes zu verwenden, oder 64 Bits, die im Allgemeinen wäre eine große ganze Zahl genannt, sehr technisch. Und das bedeutet, können Sie noch mehr Stellen in Ihrer Nummer. Aber dies ist ein wichtiger Design-Entscheidung, denn wenn Sie eine Nummer wählen, hat zu wenige Bits Ausdrucks Sie könnte tatsächlich schaffen um einen Fehler in der Software. In Ordnung, also lasst uns einpacken mit E-Mail und Postadresse. Also E-Mail, wie lange eine E-Mail-Adresse sein? 50. Ich habe wirklich keine Ahnung, aber es ist wahrscheinlich so etwas, weil sonst niemand wird zu schreiben Sie, wenn sie zu lang, so 50, Lassen Sie uns jetzt mit ihm zu gehen. Postanschrift, wie lange sollte das sein? PUBLIKUM: [unverständlich] DAVID MALAN: Es ist nicht nur eine Postleitzahl, though. Postanschrift, hörte ich. Das ist also wie ein Brattle-Platz, Komma, Cambridge Mass., Komma, 02138. Und in der Tat, lassen Sie mich einfach ziehen hier oben ein wenig Arbeitsblatt. Das fühlt sich an wie es ist eine verpasste Gelegenheit. Wenn wir 1 Brattle-Platz haben, Komma, Cambridge MA 02138, Ich fühle mich wie können wir es besser machen als nur Postanschrift. Warum gehen wir nicht explodieren diese ein wenig? Was soll ich hinaus? Was sollten wir stattdessen haben für unsere Reihen hier vielleicht? PUBLIKUM: [unverständlich] DAVID MALAN: Ja, so lassen Sie uns nennen es street_number, und ein Unterstrich ist nur eine gemeinsame Weg von zu haben, was wie ein Raum aussieht, aber es ist nicht, eigentlich. Street, und dann --Stadt auswählen-- leid? PUBLIKUM: [unverständlich] DAVID MALAN: Wir könnten das tun. Linie eins, Zeile zwei. Warum nicht wir halten es einfach für jetzt, aber das ist absolut eine akzeptable Entscheidung. Und dann Zustand und dann lasst uns sein ein wenig US-centric für jetzt und nur Postleitzahl tun, nur weil es wird zu einem interessanten Fehler führen oder ein Problem hier. So vermute, das ist jetzt unsere Adresse. Es ist ein wenig mehr ärgerlich, dass wir haben alle diese mehr Felder, aber jetzt können wir markieren Dinge ein wenig besser. So, jetzt die Hausnummer wahrscheinlich sollte kein Zeichen, sollte es sein? Was soll es sein? PUBLIKUM: [unverständlich] DAVID MALAN: Vielleicht eine Reihe wie eine ganze Zahl wieder? Eine große ganze Zahl? Sie wahrscheinlich nicht leben auf 4 Milliarden Main Street oder etwas verrückt wie das. So integer ist wahrscheinlich in Ordnung, aber hat jemand an einer Adresse, der je gelebt hat wie 1A Brattle Square oder 1 und 1/2? Diese Dinge existieren, leider, auch wenn Sie dort nicht gelebt haben, gibt es diese Anomalien wie Wohnung 1A, 1B, 1C. Damit Sie wissen, was wir wahrscheinlich sollte nicht mit integer gehen, sonst werden wir einige Verkäufe zu verlieren. Char Feld, vielleicht? Ich weiß nicht, wie lange. Es ist wahrscheinlich nicht sein so lange, so 10 oder so etwas. Niemand wird zu schreiben eine längere Zahl, vielleicht. Aber auch hier sollten wir wahrscheinlich geben mehr Gedanken dazu. Vielleicht etwas Forschung google, tun, aber wir werden jetzt mit unseren Eingeweiden gehen. Straßen, Saibling, 50, ich weiß es nicht. An einem gewissen Punkt, niemand wird schreiben sie auf einem Umschlag, Auch so gibt es wahrscheinlich einige obere Grenze gibt. Stadt, gleich, sicher, so 50 verkohlen. State, können US-centric sein für heute. So könnte es eine Liste sein, so freundlich eines Urteils Anruf, Staat. Es könnte wie zwei Zeichen lang sein. Also eigentlich, vielleicht, hielt ich sagen char. Ich meine, wahrscheinlich varchar- nur für einige Effizienz, aber wir kommen wieder zu diese Entscheidung in einem Augenblick. Könnte ein Zeichen der Länge 2 für Zustand sein. Wenn in den USA haben sie, wie MA, Massachusetts, NY, New York, NJ, New Jersey, und so weiter. So könnte es an, dass festgelegt werden. DC für Washington DC. Aber ich denke, Olivier, Sie einen anderen Ansatz vorgeschlagen. PUBLIKUM: [unverständlich] DAVID MALAN: Ja, es ist so ein wenig ärgerlich in zu geben, aber eine ENUM könnte mehr Sinn machen, denn auf diese Weise zumindest in den USA, Sie könnte aufzählen, wenn ermüdend, aber Sie tun es nur einmal in der Datenbank und nie müssen wieder darüber nachdenken, es, alle 50 Zwei-Zeichen-Codes. Also Ich mag Enum. Lassen Sie uns dort mit dabei bleiben, weil es erzwingt Art mehr Strenge. Und dann Postleitzahl? Ich denke, Andrew einen Gedanken auf, dass hatte PUBLIKUM: [unverständlich] DAVID MALAN: Ja, fünf oder neun. Sagen wir es nur einfach halten. Just do fünf für jetzt. Aber vielleicht könnte ich nur tun eine ganze Zahl, nicht wahr? Ich konnte, aber Sie wissen, was ich gemacht dieser Fehler einmal, in einem gewissen Sinn. Vor einigen Jahren war ich die Migration von Microsoft Outlook zu Google Mail, und Outlook hat einen Weg der ausführenden alle Ihre Kontakte als Excel-Datei, eine CSV-Datei, Komma Werte Datei getrennt. Und machte ich den Fehler, ich denken, von Doppelklick, sobald ich den Export heruntergeladen haben, zu stellen Sie sicher, es sah aus, als ich erwartet hatte. Ich muss speichern oder lassen Sie getroffen haben Auto-Save-Kick in oder so etwas. Denn wenn ich dann importiert es in Gmail, alles funktionierte. Aber seit Jahren, bis zum heutigen Tag, und Ich tat dies, fünf, vor 10 Jahren, Ich finde immer noch Freunde, die haben Adressen, die wie folgt aussehen. Warum? PUBLIKUM: [unverständlich] DAVID MALAN: Es dauerte die 0, na ja, besser gesagt, es nahm die ganze Postleitzahl als eine Zahl, und es ist deshalb eine führende 0, was bedeutet, es hat keine Bedeutung. Und so scheint 2138 meine Postleitzahl zu sein. Und das ist, ehrlich gesagt, eine lästige Excel Funktion, bei der ich standardmäßig denken, selbst wenn es nur gemeint sein Text, Microsoft Excel mich entscheidet, lassen Sie hilfreich sein, und oh, ich sehe nur Zahlen. Lassen Sie uns diese als Zahlen zu behandeln. Und es schneidet die führenden Nullen. Ich schwöre bei Gott, jedes Paar Monate finde ich eine Adresse, und aus einer Art von OCD, gehe ich zurück in und fügen Sie die 0, obwohl ich noch nie Leute, die Briefe oder etwas schicken. Aber ich bin immer noch Reste dieser Erkenntnis. Das ist also zu sagen, ist dies eine gute Idee? OK, nein, weil jemand in Massachusetts, in diesem Bereich, wird einen o führt sie zu haben. Also lassen Sie uns gehen mit wie char, wahrscheinlich, fünf. Und hier erkennen wir, könnte eine ENUM und wir verwenden könnte 10.000 aufzählen möglich Postleitzahlen, aber das fühlt sich an wie es ist wahrscheinlich eine Reihe von, wie, Vorteile kreuzen. Wenn Sie zur Eingabe haben, dass viele Daten in die Datenbank zum Schutz gegen etwas. So char realisiert man geben könnte in H-E-L-L-O wie Postleitzahl, Das ist offensichtlich nicht numerisch. So gibt es keine Möglichkeit, in eine typische Datenbank, nur numerisch zu spezifizieren und nur fünf Zeichen lang, so dass wir gehen zu müssen, dass im Code zu tun. Wir gehen, dass in PHP zu tun oder Java oder was auch immer die Sprache, wir sind Verwendung auf dem Server zu erzwingen diese Art von Zwang. Whoo! In Ordnung, so dass alle Fragen nur noch? Lassen Sie uns ein anderes Design Entscheidung zu treffen. Es stellt sich heraus, dass Sie erhalten auch wählen, wenn eine SQL-Datenbank entwerfen, oder typische relationale database-- wo wieder, relationale nur bedeutet, Zeilen und Spalten, das ist, wie Sie Ihre data-- organisieren und erkennen, dass das, was das bedeutet, ist, Ich habe irreführend dass, ich bin drawing-- diese Das Schema ist das, was genannt wird für eine Datenbanktabelle. Das ist wie die Spezifikationen für die table-- aber wenn es darum geht, um tatsächlich Daten speichern, und wir tun dies nur durch das Beispiel hier. Ich werde Excel zu öffnen, weil Excel gibt mir Zeilen und Spalten. Und das ist genau das, was Oracle und MySQL und andere Werkzeuge werden mir geben. Also ich werde einfach nutzen zur Diskussion willen. Lassen Sie mich gehen Sie vor und eröffnen ein Vertreter Dokument hier, Zoom in einem Bit. So sind beispielsweise unsere headers jetzt Vorname, Name, Geschlecht, ID, E-Mail, Hausnummer, Straße, hoppla. Straße, Stadt, Staat, nur etwa auf den Bildschirm passen. Also, was dies bedeutet ist, dass, wenn ein Benutzer registriert zuerst für meine Website, es wird etwas sein, wie David, Malan, m, lassen Sie uns 1 sagen, malan@harvard.edu, Hausnummer wird sein wie 1 Brattle Square, Cambridge, MA, 02138, und dann so weiter. Also, wenn ich sage, dass eine relationale Datenbank oder SQL-Datenbank ist Zeilen und Spalten, Ich meine das. Das tatsächliche Daten gespeichert in Zeilen und Spalten. Dies ist nur ein Zufall, dass wir sprachen, und ich zeichnete es einfach aus in Zeilen und Spalten. Dies ist nur das Schema, das übergeordnete Definition. Also dieser Felder hier, oder äquivalent, da, das sind die Felder, die Sie denken, Ich bin wahrscheinlich auf zu suchen, wenn ich ein Benutzer bin oder wenn ich den Datenbankadministrator? Wie, was Felder bin ich tatsächlich zu suchen auf? PUBLIKUM: [unverständlich] DAVID MALAN: Der Name, ja so Ich mag die Tatsache dass-- ja, E-Mail könnte ziemlich häufig sein. Sorry, Sie sagten Namen. So maybe-- und wieder, wir sind Art sprechen von in der Zusammenfassung. Ich weiß nicht, warum würden Sie werden nach einem Namen suchen, aber das fühlt sich sinnvoll, wenn Sie für einen Benutzer zu suchen. Vielleicht heißt es, sicher, ID. Und es ist eine rutschige Steigung, weil ich konnte ersinnen ein Szenario, in dem vielleicht mein Chef hat mich gebeten, wie viele Männer haben wir auf unserer Website? Wie viele Frauen haben wir auf unserer Website? Und so an diesem Punkt, sollten Sie auf Gender-Bereich zu suchen, zu, und sonst nichts. So gibt es einen Trade-off hier. Auch hier gibt es keine richtige Antwort, aber es ist eine Funktion in den meisten SQL-Datenbanken bekannt als Indexierung, wobei Sie, die Designer, die Datenbankadministrator, erhalten im Voraus entscheiden, welche Feldern sollte die Datenbank optimieren für die Suche auf. Sie könnten sehr naiv sagen, optimieren Damit optimieren, dass, optimieren diese, optimieren, dass, und dies, und die Datenbank wird tun einige magische Sache unter der Haube, und etwas tun, so dass das nächste Mal, wenn Sie suchen auf jedem dieser Felder, es wird in der Tat schneller sein. Das ist möglich. Es spielt Abbrechen nicht selbst aus. Aber es muss ein Preis bezahlt werden. Wenn Sie naiv, oder über begeistert etwa Index all dieser Felder, so zu sprechen, machen sie alle effizient durchsuchbar, Welchen Preis zahlen Sie wahrscheinlich? PUBLIKUM: [unverständlich] DAVID MALAN: Leistung. Was meinen Sie? Gut Leistung, zumindest in der Kontext ich diskutieren, ist jetzt besser. Das ist die Definition der Indizierung. Es sucht schneller zu machen. So Zeit abnimmt, sozusagen. PUBLIKUM: [unverständlich] DAVID MALAN: Space. Also noch einmal, diese sind eine gemeinsame Handel. Ich kann Ihre Suche zu beschleunigen, aber es ist Wollen Sie mehr Byte Platz kosten. Warum? Nun, standardmäßig, wenn wir nichts von Diese roten Sterne, keine dieser Indizes, wie ich sage, wie Sie suchen für einen Namen in dieser Datenbank? Also lassen Sie uns zeichnen unsere die Aufmerksamkeit auf dieses Beispiel. Wenn wir David und Scully und Kareem und Arwa und andere in diesen Reihen, zum Beispiel. Lassen Sie uns also genau das tun. Scully ist hier in, und dann wir haben Kareem und Arwa, und alle anderen, wenn Sie nicht tun haben ein Index definiert ist, sozusagen das Beste, was Sie tun können, ist lineare Suche. Wenn Sie Arwa suchen, sind wir nicht gehen zu können direkt auf sie zu springen schnell. Wir gehen oben zu beginnen und gehen den ganzen Weg nach unten, nicht im Gegensatz zu unserer ursprünglichen Mike Smith Beispiel. Wenn aber, sage ich, hey, Datenbank, Index des ersten Namensfeld, dann etwas, es wird zu tun schicker und unterstützen etwas wie binäre Suche. Es ist wahrscheinlich nicht binäre Suche per se. Datenbanken sind in der Regel eine andere zu verwenden, Datenstruktur b-Bäume genannt, nicht zu verwechseln mit Binärbäume werden, dass es nur schneller zu suchen etwas logarithmisch in der Natur. Aber der Preis zahlen Sie für den Aufbau, dass Merkmal, dass die Datenstruktur im Speicher, mehr Bytes ist. So könnte es einige Megabytes nehmen, einige Gigabyte, wer weiß? Es hängt von den Daten. Also irgendwann muss man sich entscheiden, es ist wahrscheinlich kein gewöhnlicher Fall. Was sind also die tatsächliche gemeinsame Fällen, wenn Sie musste wirklich wählen, was könnte sein, Ihre Lieblings-Felder? Email. Und Ich mag E-Mail, weil E-Mail, in der Theorie sollte eindeutig sein. Und so typisch, wenn Sie wissen, im Voraus, dass eines Ihrer Felder ist oder wird eindeutig sein, dass neigt dazu, ein gutes Feld zu sein zu suchen, auf, weil auf diese Weise, wenn Sie nach etwas suchen, Sie gehen ein zurück zu bekommen oder Null-Antworten und dann sind Sie fertig. Sie müssen nicht halten für wieder andere suchen. Und so in diesem Fall hier, E-Mail, so lange, wie Sie nicht zweimal registrieren mit der gleichen E-Mail, ist ein guter. ID per Definition in der Informatik Welt, wenn Sie sprechen ein ID, die besser eindeutig sein hatte. Das ist eine Art der Konnotation von ID oder Kennung. Und der Rest von ihnen auch sein mag, Lassen Sie uns sie zu haves schön nennen, aber nicht wirklich erforderlich. Und so in einer Datenbank, geben Sie Indizes, Sie können jedoch noch präziser sein. Man kann sagen, hey, Datenbank, stellen Sie sicher, dass jede ID in dieser Tabelle ist eindeutig. Lassen Sie sich nicht einmal ein Programmierer versehentlich in einem doppelten E-Mail setzen oder ID-Nummer duplizieren. So viel wie Aufzählungen schützen uns, Sie ähnlich können diese auf niedrigerer Ebene Verteidigung haben. Und so Datenbank-Design, in ein Gefühl, eine Art von Spaß ist, weil Sie es defensiv tun. Sie übernehmen die Art, dass Sie arbeiten mit schreckliche, schreckliche Programmierer und Sie wollen so viele Abwehrkräfte setzen in wie Sie Ihre Daten zu schützen, können sie, aber gleichzeitig Sie wollen ihnen zu helfen, eine bessere Leistung von der Auswahl der Felder zu optimieren für. Aber man kann nicht unbedingt tun es in ein Vakuum, wie wir sind ein bisschen hier. Sie haben kennen gelernt haben, was sind diese gemeinsamen Fälle zu sein. Wenn die Entwickler ein Adressbuch Umsetzung, Sie könnte sehr gut wollen in der Lage sein, auf fast allen Bereichen zu suchen, nur von der Natur der Anwendung. Vielleicht verbringen Sie dass zusätzlicher Platz. Richtig, irgendwelche Fragen? Ja. PUBLIKUM: [unverständlich] DAVID MALAN: Nein. PUBLIKUM: [unverständlich] DAVID MALAN: OK. PUBLIKUM: [unverständlich] DAVID MALAN: Oh, so dass wir in einer Weise sprechen nun, das ist völlig sprachunabhängig. So sprechen wir jetzt über relationale Datenbanken allgemeiner oder SQL-Datenbanken im Allgemeinen. PUBLIKUM: [unverständlich] DAVID MALAN: Ein besseres Wort zu verwenden, ist, kann durch jede beliebige Sprache verwendet werden. So kann ich JavaScript-Code, C schreiben Code, C ++ Code, Java-Code, Ruby-Code, von denen alle sprechen ein Datenbank und Abfragen ausführen. In der Tat, das ist keine schlechte segue einem Beispiel Abfrage. Und wieder werden wir gehen nicht in Java oder C ++ oder irgendetwas davon mehr, aber in SQL, die Sprache, auf die ich halten Bezug genommen wird, Structured Query Language, Diese selbst ist eine Programmiersprache, aber es soll angewendet werden, keine Überraschung, Abfrage-Abfragen strukturiert. Damit meine ich das. Die Art und Weise Sie Daten auswählen aus einer MySQL-Datenbank wird Sie buchstäblich in Ihrem Programm eingeben so etwas wie select Stern von den Benutzern. Ich gehe davon aus, dass dieser Tabelle, von nun an wird den Benutzern aufgerufen. Ich konnte es nennen, was wir wollen, aber diese Art von Sinn macht. Und so wählen Sie ist eine sehr gemeinsame Verb, wenn Sie wird, in SQL, das tut buchstäblich das. Was denken Sie, Stern bedeutet in diesem Zusammenhang? PUBLIKUM: [unverständlich] DAVID MALAN: Tut mir leid? PUBLIKUM: [unverständlich] DAVID MALAN: Nicht erforderlich, es ist umfassender ist als das, eigentlich. Es ist die Wildcard-Zeichen. Stern bedeutet fast immer etwas, so bedeutet das, in diesem Fall Wählen Sie alles aus der Datenbank. Also, wenn ich das sage, meine ich gib mir jede Spalte zurück von meinem Tisch Benutzer genannt. Also gib mir eine Ergebnismenge, wie es genannt wird. Mit anderen Worten, geben Sie mir eine Kopie der Tabellenkalkulation, ist das, was ich hinaus will. Aber wenn ich die Auswahl Stern von den Benutzern ID wo gleich 1 ist, wie groß mein Ergebnismenge dann sein? Oder äquivalent, wie viele Zeilen sollte Ich werden aus der Datenbank übergeben zurück? Wahrscheinlich nur ein, wenn ich in der Tat ID als eindeutige Kennung behandelt, und wenn David, dass die eindeutige ID hat, wie ich sollte man sich zurück und nur eine Zeile alle Davids Informationen enthält. Wenn ich sagte, dies wo ID gleich 99, sollte ich zurück, in diesem Zusammenhang keine Zeilen, zumindest im Augenblick. Allerdings, wenn ich nicht wirklich kümmern über alle diese Informationen, Ich konnte nur sagen, wo sich David leben? Wählen Postleitzahl aus Benutzer, wo ID 1 ist. Das wird mir nur wählen Davids zip Code und nicht die Gesamtheit dieser Reihe. Warum könnte ich dies tun, anstatt der Stern-Abfrage, die Wild Card? PUBLIKUM: [unverständlich] DAVID MALAN: Ja, ich könnte nur es brauchen. So Leistung ist wieder die Antwort hier. Warum mehr verlangen Informationen, als Sie brauchen, denn selbst wenn es richtig zusammen ist, Sie müssen immer noch, dass die Daten zu kopieren, es scheint, aus der Datenbank in Ihr Programm irgendwie, und das ist nur dumm, wenn Sie nur müssen fünf dieser Ziffern, nicht die Gesamtheit der Reihe. Wie füge ich ein Benutzer? Angenommen, ein Benutzer hat nur zum ersten Mal registriert. Die Syntax würde in der Regel wie folgt aussehen. Legen Sie in den Benutzern, und dann würden wir Werte sagen, und dann würden wir Werte sagen wie, sagen wir mal, Lauren Scully, unser Videofilmer hier richtig. Und das nächste Feld ist das Geschlecht. Also werden wir sagen, Zitat, unquote "F", dann haben wir eine ID und ich werde sagen-- lasst uns so tun sie hier nicht wirklich ist, so werden wir in der Geschichte zurückzuspulen. So wird 2 ihre ID sein. Und dann das nächste Feld hier ist ihre E-Mail. Also, es wird wie sein Lauren Scully und so weiter, und wir werden einfach dot dot dot es von hier entfernt. Jetzt bekommen sie ein wenig langweilig, aber der Einsatz Abfrage würde sich letztlich so. Wenn ich will, um loszuwerden, Scully, uh-oh, lassen Sie uns abzumelden ihr, sie löscht ihr Konto, Löschen von Benutzern, wo ID 2 entspricht, loswerden von Scully. Oder ich kann Update Benutzer eingestellt sagen, lassen Sie uns sagen, was können wir ändern? Angenommen, sie bewegt. Set zip gleich 021-- Nö, das ist ihre aktuelle Reißverschluss. 90210. Die einzige andere Postleitzahl Ich weiß, dass in der Welt. Damit würde sich ändern ihre zip code-- tatsächlich, das wäre nicht ihre Postleitzahl ändern. Was habe ich nur? Auch wenn die Syntax ist wahrscheinlich neu. PUBLIKUM: [unverständlich] DAVID MALAN: Ja, zog ich alle Beverly Hills, Kalifornien. Also sollte ich eigentlich sagen, wo ID 2 entspricht. Und so weiter. So ist SQL alles über diese Arten von Anweisungen. Wählen Sie, einfügen, löschen, aktualisieren, mit dieser Prädikate am Ende diese where-Klauseln, sozusagen. Und es gibt noch viel mehr können Sie tun, aber es läuft wirklich nur nach unten wenn arcanely einfach, zum Ausdruck was Sie wollen, dass die Datenbank zu tun. Und dann die Datenbank werden herausfinden, wenn Sie fügen Lauren Scully in die Datenbank, wo sie in den Speicher zu stellen so dass wir sehr schnell bekommen sie basiert auf ihrer E-Mail-Adresse oder basierend auf dem ID-Nummer oder dergleichen. Ja, Dan. PUBLIKUM: [unverständlich] DAVID MALAN: Wirklich gute Frage. Ändert sich diese Skripts aus Microsoft Access zu Oracle MySQL auf PostgreSQL? Die kurze Antwort ist es hängt davon ab. In der Theorie ist es eine sehr wichtige gemeinsame Teilmenge von SQL das ist in allen geteilt dieser Implementierungen. Allerdings verschiedener Hersteller haben zusätzliche Funktionen zu ihren Datenbanken, bestimmte Dinge zu tun über den Rahmen dieser Merkmale, das könnte in der Tat brechen. So die Art und Weise Entwickler Absicherung gegen diese, das ist eher als das Schreiben roh SQL-Code wie ich schreibe hier, sie stattdessen eine Bibliothek verwenden, eine gemeinsame Bibliothek, die sich ist eine Art von höherer Ebene und Abstracts welches Produkt Sie verwenden weg. Und es gibt Ihnen Funktionen und Prozeduren so dass Sie rufen nie Schreiben tatsächlich rohe SQL. In der Theorie, dann können Sie ändern Produkte von Oracle zu Microsoft oder umgekehrt oder irgendetwas sonst, und man buchstäblich ändern nichts über Ihren Code. Die Realität aber ist, Sie manchmal geben Funktionen als Ergebnis. Sie könnten für ein Produkt entschieden, weil es ist diese Mehrwert-Features erhalten, und du bist gerade jetzt nicht indem sie bewusst. Und anekdotisch, die meisten Unternehmen neigen dazu, nie zu bewegen, aus ihrer Datenbank entfernt. Während also das ist ein schön Funktion haben, die Realität wenn Sie ist, sind Überholungs Ihre Datenbank, du bist wahrscheinlich Trauben von anderen Änderungen wie auch immer, dass Sie nicht unbedingt müssen, dass zu antizipieren. So ist es wohl Over-Engineering, das Problem, aber es hängt wirklich vom Kontext ab. Aber in der Theorie, SQL wird geteilt über diese verschiedenen Produkten. Wirklich gute Fragen. Ja. PUBLIKUM: [unverständlich] DAVID MALAN: Ja, so Sie können eine Datenbank denken ist nur ein Server am Ende der Tag, und im Inneren des Servers ist eine ganze Reihe von Tabellen, Zeilen und Spalten. Und wenn Sie eine Abfrage wie folgt senden aus Ihrem Programm, Ihre Website, geschrieben in Java, Ruby, Python, was auch immer, der Server empfängt diesen Befehl und Interpretieren es in wahrsten Sinne des Wortes auf die gleiche Weise wir früher diskutiert mit interpretierte Sprachen, und dann die Durchführung eine Aktion auf Null oder mehr Zeilen in null oder mehr Tabellen. PUBLIKUM: [unverständlich] DAVID MALAN: Genau, genau. So die Pseudo-Code für etwas so könnte dies sein. In Ihrer PHP-Datei oder Ihr Python-Datei oder Ihre Java-Datei, Sie würden Pseudo-Code-Code haben, oder Scratch-ähnliche Blöcke wie, wenn Benutzer besucht acme.com/register~~V erstmals, und legen Sie dann in Benutzer und so weiter. Und wir würden übersetzen, dies zu Konkreter Code am Ende. Aber wirklich, haben wir alle die Bausteine ​​hier, obwohl wir das Überspringen einige der Umsetzungsschritte. Also lassen Sie mich bemängeln mit dem, was wir wunderbar tat vor einem Augenblick gerade. Sie haben ein ziemlich erstellt vollständige Tabelle für die Anwender. Zwar konnten wir umsetzen es in ein paar verschiedene Möglichkeiten, aber Sie haben dazu geführt, uns tatsächlich die path-- nach unten, und ich sage dir, aber es ist wahrscheinlich mein fault-- einer ziemlich ineffiziente Datenbank-Implementierung. Es ist nicht normiert. Und durch normalisierte ich meine da wird ... sein, Im Laufe der Zeit eine erhebliche Redundanz, und daher Ineffizienz, das ist Verschwendung von Speicherplatz. Basierend nur auf das, was Sie hier sehen, können stellen Sie sich, wo diese Verschwendung von Speicherplatz geht aus, im Laufe der Zeit zu kommen, da immer mehr Nutzer registrieren für Ihre Website? Welche Daten könnte überflüssig werden? PUBLIKUM: [unverständlich] DAVID MALAN: Warum meinst du das? PUBLIKUM: [unverständlich] DAVID MALAN: Ja. Und lassen Sie uns für die Zwecke übernehmen heute, dass das stimmt. Es stellte sich heraus, und wir haben dies gelernt auf die harte Tour, das ist nicht wahr. Irgendwie mehrere Städte haben, irgendwie die gleiche Postleitzahl, die bricht diese wunderbare Intuition. Aber nehmen wir an, das ist wahr, denn es ist fast immer wahr. So nehme an, dass eine Postleitzahl ist immer mit der gleichen Stadt zugeordnet und Staat, die Art ist der vernünftige Annahme, aber falsch, es stellt sich heraus. Aber eine vernünftige Annahme, für die Zwecke von heute. Dann nehme an, dass ich in Cambridge leben, MA, gemäß dieser Tabelle des Benutzers, und nehmen wir an, dass Lauren Scully lebt in Cambridge, MA, und nehmen wir an, dass Kareem lebt in Cambridge, MA, und Arwa lebt in Cambridge, MA, alle von uns in 02.138. Warum erinnern wir Cambridge, MA, 02138 für alle vier von uns? Was soll daran zu erinnern, genügen? PUBLIKUM: [unverständlich] DAVID MALAN: Einfach die Postleitzahl. Nur, dass 02138 existiert, weil Sie wissen, was wir tun könnten? Wir könnten ein wenig Phantasie bekommen hier und hier, definieren eine andere Tabelle wo dies wird die sein, Name, das wird der Typ zu sein, das wird die sein, Länge, und von nun an, ich bin Gehen diese Tabelle meine Städte zu nennen. Das hieß, von Natürlich, mein Benutzer-Tabelle. Und was soll ich hier gestülpt für meine Städte Tisch, denken Sie? PUBLIKUM: [unverständlich] DAVID MALAN: Ja. So Reißverschluss und Staat und die Stadt. Und so ist hier die Art, werden wir sagen, das wird ein char 5 wieder zu sein, Gegenstand der Debatte von früher. Dies wird eine Enumeration, vielleicht wie vor, und die Stadt wird ein varchar 50 sein. Und jetzt, was bekomme ich aus dieser Tabelle zu löschen diese Ineffizienz zu beseitigen? PUBLIKUM: [unverständlich] DAVID MALAN: Nice. Staat und Stadt gehen weg, also habe ich jetzt das Potential Ineffizienz beseitigt zur redundanten Erinnerung, Cambridge, MA, Cambridge, MA, Cambridge, MA, Cambridge, MA, die hoffentlich sich ändern, wird nie. Und selbst wenn es der Fall ist, es ist minorly ärgerlich, jetzt dass ich ändern es in mehreren Reihen, während hier, konnte ich nur ändern Sie es an einem Ort. Nun, was ist der Trade-off, vielleicht? Das war super bequem. schön zusammen hatten alle meine Daten. Aber was ist eindeutig der Fall jetzt? PUBLIKUM: [unverständlich] DAVID MALAN: Genau, und ich bin froh, verwendet man das Wort kommen, denn das ist eigentlich das Schlüsselwort, in der Welt der relationalen Datenbanken in SQL, es ist eine Sie eigentliche Wort vielleicht geben oder zumindest vermitteln. Und in der Tat, was wir jetzt tun auszuwählen David vollständigen Informationen so etwas wie select-Star aus Benutzer, verbinden Städte, on-- und jetzt Ich werde nur zu einer zweiten Linie bewegen so dass dieser fits-- users.zip gleich cities.zip, wo users.ID 1 entspricht. So was ist los? Es ist hässlich suchen, aber Sie können Art lesen Sie es nach rechts, von oben nach links unten. Wählen Stern von den Benutzern ist nach wie vor der gleiche, aber es ist nicht von den Benutzern, per se. Es ist von den Benutzern Städten verbinden. Was bin ich Beitritt dieser beiden Tabellen auf? Nun, offenbar, die Benutzer Tabellen zip Feld, und diese Zeit ist nur spezielle Syntax, die Idee zum Ausdruck bringen, und dies ist die Städte Tabellen Feld zip. Ich möchte die beiden gleich zu sein, aber ich möchte schließlich wählen nur die Zeilen, in denen ID in der Tabelle users gleich 1 ist, was mein sein passiert ist. Und nur klar zu sein, ein Programmierer, in der Regel, wenn hard so etwas wie die Zahl 1, weil sonst die Website nur unterstützt David oder die erste Benutzer, Sie stattdessen tun so etwas wie Identifikation, wo Dies stellt eine Variable, etwas das wechseln kann Zeit, ähnlich im Geiste zu dem, was ich vorhin sagte, mit dieser Art von Platzhalter. Aber jetzt werden wir hart codieren es genauso wie 1. Und was bedeutet das? Nun, ein schöner Weg, dies zu visualisieren, ist dass, wenn diese Hand ist die Benutzer-Tabelle, und diese Hand ist die Reißverschlüsse Tisch, wir sind eine Art finding-- und die Fingerspitzen sind zip hier, und die Fingerspitzen hier sind zip, du bist Art es von ineinandergreif so dass Sie die resultierende zurück Original-Tabelle, die von wirklich Beitritt die beiden Tabellen auf dem gemeinsamen Feld. Und es muss nicht zip sein. Es könnte die meisten etwas anderes sein, aber zip ist schön, weil man, es ist kurz, zwei, es ist immer das gleiche Länge, so dass es eine wirkliche Effizienz zu dem, was Olivier hier vorgeschlagene mit Factoring die Zip-out, und [Unverständlich] schlägt vor, dass wir loswerden von Stadt und Staaten. Das ist also der Prozess bekannt als Normalisierung. Haben Sie Fragen dazu? Nun lassen Sie mich darauf hinweisen, dies ist die Art von Sachen, obwohl es ziemlich Low-Level ist, diese Diskussion, die Sie würden denken, Sie Art bekommen in das Unkraut verloren, dies ist eine Manifestation der reichlichen Möglichkeit für Entwickler, schlecht zu sein. Und in der Tat, auch wenn wir in Kurse, die ich unterrichtet habe, als wir gehabt haben, zum Beispiel, unerfahren Bachelor-Programmierer Build-Websites, auf den ersten Blick, die Webseiten, könnte grandios aussehen. Und sie haben alle die Funktionalität, die wir angefordert, Die Entwickler haben gute Arbeit geleistet. Aber sie wussten nicht notwendigerweise genug über Datenbank-Design oder sie denken, nicht hart genug über die Typen von Daten und die Typen von Benutzern der Website wurde zu haben,, und wir finden, dann sechs Monate später, nachdem sie auf abgestufte oder verschoben haben, dass verdammt, unsere Website wirklich ist, wirklich langsam. Und ich spreche nicht einmal darüber, dass Millionen oder Tausende von Benutzern. Ich meine, ein paar hundert Benutzer auf dem Campus, von denen alle gern, zum Beispiel, Shop für Kurse an Zur gleichen Zeit, sie sind mit dem Kurskatalog Anwendung, die ich erwähnt und die Sache wird immer wirklich langsam, weil es keine Indizes waren. Es gab keine rote Sterne, so zu sprechen, oder wir hatten nicht unbedingt herausgerechnet gemeinsame Daten einige Einsparungen von Raum zu bekommen. Und so, wenn vetting einen Entwickler oder Datenbank Person oder dergleichen, die Arten von Fragen zu durchdenken auch das ist, wenn jemand den Code überprüft, zu sagen, die nicht unbedingt aussehen durch all ihren Code, aber sagen, Lassen Sie uns die Datenbanktabellen schauen. Was Speichern Sie? Und dann zu sagen, na ja, warten ein Minute, warum verwenden Sie eine ganze Zahl? Was ist, wenn wir haben 4 Milliarden und 1 dieser Reihen? Und diese Arten von Fragen ist eine Chance Art zurück zu drängen und bekommen ein Gefühl von, wo wenn Sie sich nicht ganz sicher es, dass jemand mehr technische diese Fragen stellen, ob oder nicht die Person wirklich kennt ihre Sachen. Und dies ist die Art von Sachen, auch, dass die Menschen im Internet, die vielleicht sind Autodidakten, lernen weniger häufig, da Sie nicht unbedingt über sie kommen so viel, weil man bekommen kann die Datenbank und läuft, aber es sei denn, Sie haben gelesen up auf Tutorials oder gewesen berichtete über Datenbanknormalisierung und Indizierung und Leistung, Dies sind die Arten von Dingen Das sind gehen Sie zu verletzen. Und man könnte denken, oder ein schlechter Ingenieur könnte man sagen, oh, na ja, wir bessere Bezahlung für eine größere Datenbank oder eine schnellere Datenbank oder einfach nur Geld auf diese werfen, vertikal Skala, die nicht unbedingt so. Wenn Sie gehen in-- und können Sie gehen in nach den fact-- und fügen Sie Indizes, und es könnte ein paar Stunden für das nehmen Datenbank zu erstellen, die neuen Daten nach oben Struktur, die ich bereits angedeutet, Sie können dies noch beheben, nachdem die Tatsache, dass das ist, wo Sie beginnen zu unterscheiden gute Designer von schlecht Designer, nicht nur ästhetisch, aber leistungsmäßig als auch. Irgendwelche Fragen? Nein? Also für NoSQL, die der andere Typ war frühere der Datenbank, auf die hingewiesen I, Sie haben keine Zeilen und Spalten. Stattdessen würden Sie etwas haben, das sieht ein wenig mehr davon. Ich werde gemeinsame Syntax zu verwenden. Geschweiften Klammern passieren werden hier ziemlich viel verwendet. Sie könnte etwas wie erste Name ist David, haben Sie vielleicht letzte Name ist Malan, Zitate, Sie könnten ID haben ist-- entschuldigen Sie mich, ist whoops-- ID 1, E-Mail ist malan@harvard.edu, und ich will nicht stören den Rest eingeben, und dann einige andere Dinge. Mit anderen Worten, dies ist eine Textdarstellung von dem, was würden wir in der Regel nennen ein Objekt in einem Computerprogramm. Und ein Objekt ist in der Regel nur eine Sammlung von Schlüsselwert-Paaren. Also noch einmal, diese wiederkehrendes Thema. Wir sahen Schlüsselwertepaare in HTML, wir sahen jetzt Schlüssel-Wert-Paare im Zusammenhang mit Datenbanken und wir sah Schlüsselwert-Paare im Kontext der, glaube ich, eine Sprache, heute früher. Hält kommen. Und in der Tat, das ist wirklich welche Daten läuft darauf hinaus, Daten und Metadaten oder Werte und Tasten sind. So eine nicht-relationale Datenbank, etwas basierend auf Objekte, wo man nur verklumpen alles zusammen und steckte es in den Speicher wäre generell Bild wie, oder dachte, da dies. Und ich werde das jetzt als verlassen Art alternativer Ansatz. Und man ist nicht unbedingt besser als das andere. In der Tat, sehr in Mode in diesen Tagen sind Datenbanksysteme wie MongoDB und Redis und ein paar andere solche Werkzeuge, frei verfügbar, aber sie sind immer en vogue. Zum Teil, weil sie bieten zusätzliche Funktionen über diese tabellarische Ansätze, sondern auch, weil sie ein wenig einfacher zu bedienen, denn man muss so hart nicht denken über eine Menge von diesen Design-Entscheidungen. So Vor- und Nachteile. So erkennen, dass es gibt Optionen jenseits dessen, was nur wir verbrachten Zeit auf. Also lassen Sie uns dies tun. Lassen Sie uns ein wenig über jetzt zurück zu Web-Programmierung, so dass wir Art schließen heute mit etwas Das ist ein wenig hands-on, Füllung in einigen Lücken von gestern. Lassen Sie mich an dieser ersten gehen. So erinnern daran, dass gestern wir hatten einige kanonische HTML Seiten, die ursprünglich hatte, nur HTML, und dann hatte in zweiter Linie CSS, Cascading Style Sheets. Dies ist ein neuer Tag, das wir nicht haben siehe gestern, oder wohnen auf, Script-Tag so genannte. Stellt sich heraus, Sie tatsächlich einbetten können ein Sprache JavaScript in Ihrem Web genannt Seite und machen Sie Ihren Web Seiten etwas tun. Also, was meine ich damit? Nun, lassen Sie mich voran gehen und einfach diesen Code für einen Moment ausleihen. Ich werde in Cloud9 zu gehen, keine Notwendigkeit, es euch zu gehen, nur noch, und ich werde diese alert.HTML zu nennen. Ich werde hier in meiner Datei einzufügen. Und genau zu klären, was ich getan habe, lassen gehen mir an diese Adresse und gehen Sie zu alarmieren, und Sie sehen die Hallo Welt. Aber dies ist eine Art berauschend. ich will etwas tun ein wenig anders. Also, ich werde dies tatsächlich tun. Ich werde hier e zu gehen, und zwischen meinen Script-Tags, sagen alert ( 'Hallo Welt!'); so Bekanntmachung es ist ein wenig schlampig, aber ich habe HTML bekam, in dessen Innerem ein Sprache namens JavaScript, und das ist, was ein genannt Funktionsaufruf oder Prozeduraufruf. Dies ist ein Verb, wörtlich: in diesem Fall, und ich bin Aufruf Code Funktionalität dass jemand anderes geschrieben hat. Damit Funktionalität ist ein Alarm, lassen Sie uns auf dieser Seite so gehen jetzt und klicken Sie auf Reload, und jetzt sehen ein wenig Interaktivität. Es ist eine Art der alten Schule und hässlich. Diese Art von erinnert Sie an die Pop-ups, vielleicht von früher aber es hat etwas ein tun wenig mehr programmatisch. Also mehr als das, wir tun etwas interessanter. Lassen Sie mich gehen hier in und loszuwerden diese. Und ich werde weitermachen und Erstellen Sie ein Formular, wie wir gestern. Eigentlich weißt du was? Ich werde gehen in google.html, die wir begann gestern, das sah aus wie dies, über die wir gesucht für Katze Beachten Sie aber, es ist irgendwie ein Fehler in der aktuellen Version. Es funktioniert für Katzen, aber annehmen, dass Ich nicht zusammenarbeiten und ich geben nichts, und ich klicken Sie auf Absenden einfach. Das ist irgendwie seltsame Verhalten. Hat mich auf die reale Google, geben Sie mir nicht eine Fehlermeldung. Ich möchte den Benutzer zu sagen Sie müssen uns einen Wert zu geben. Wie könnten wir das tun? Nun lassen Sie mich gehen zurück in Cloud9 und lassen Sie mich in die Spitze meiner Seite gehen und fügen Sie ein Skript-Tag wie diesem, wo Ich werde einige JavaScript-Code einzugeben. Und ich werde folgendes tun. Wenn (document.getelementByID-- und Rückruf dass wir über diese vorhin gesprochen haben, diese Funktion. Welche ID will ich bekommen? Ich möchte q zu bekommen, und ich werde sagen wir gleich nichts, wie this-- lassen Sie mich eigentlich doppelte Anführungszeichen verwenden nur für consistency-- gleich nichts, dann alert ( "Bitte geben Sie eine Abfrage") hier. So habe ich was zu sein scheint so etwas wie eine Bedingung. Wir haben diese allgemeine Idee in Scratch gesehen. Es ist wie eine dieser Puzzle Stücke, die so aussah. Und was soll ich sagen? Nun, hier unten, merke ich bin geht folgendes tun. Ich werde diese Form zu geben, Feld nicht nur ein Name von q, die ist das, was an Google weitergegeben wird, aber ich bin geht es eine lokale Kennung zu geben, auch q genannt. Aber ich konnte diese etwas nenne ich will, ich werde es nur einfach zu halten und es auch q nennen, nur der Einfachheit halber. Und jetzt werde ich tun etwas mehr. Auf die Formularfelder hier, werde ich hinzufügen, was ein Event-Handler aufgerufen wird. Auf vorlegen, will ich rufen eine Funktion namens Validieren. Diese gibt es noch nicht, diese Wort oder das Verb Validieren, weil das, was ich tun werde hier oben ist jetzt einige Code hinzufügen. Ich werde Funktion Validate zu sagen. Ich werde diese einrücken und andere hinzufügen geschweifte Klammer hier und ein anderes hier. Überlegen Sie, was das jetzt tut. Ich habe now-- daran denken, wie geschaffen meine eigene Puzzle-Stück, das zuvor nicht existieren, und ich habe dieses Rätsel genannt piece das Validieren Puzzleteil. Sein Ziel im Leben ist, auszuführen Die vier Codezeilen im Inneren davon. Wenn document.getElementById so konzeptionell, das wird in das Element zu gehen, das HTML-Element, dessen einzigartige Idee ist nur q, und dann, obwohl Die Syntax sieht ein wenig seltsam, dass gleich gleich bedeutet nur Gleichen. Das heißt also, wenn das Element mit dem eindeutige Kennung von q, wenn bekommen, keinen Wert hat, entspricht es nur Zitat unquote, nichts drin, dann was will ich machen? Ich möchte an den Benutzer zu schreien. Und wir werden nicht ausführlich hier. Ich werde als falsch zurück. Das ist ein Fehler. Else, ich werde wahr zurückzukehren. Also entweder hat es funktioniert oder es kam nicht. Falsch oder wahr. Und jetzt, wenn ich keine Fehler gemacht habe, lassen Sie mich speichern diese und neu laden. Und lassen Sie mich nur überprüfen, dass Ich habe in der Tat nicht, machen keine Fehler, so dass ich nicht in Verlegenheit bringen mich nicht. Mal sehen, ob das funktioniert. So, jetzt werde ich Katzen zu geben. Es funktioniert immer noch, oder die Hälfte arbeitet, zumindest. Nun lassen Sie mich erneut zu laden, und jetzt lassen versuchen, mich geben, ohne dass die Eingabe anything-- verdammt noch mal, es brach. Einen Moment. Lassen Sie mich die Konsole zu öffnen, [Unverständlich] einzuloggen, um die Seite neu zu laden. Lassen Sie mich noch einmal versuchen dies. Oh, verdammt. Ich habe vergessen. Ich habe einen Tippfehler. Ich erinnere mich, was es ist. .Wert. Ich wollte sagen, wenn der Wert q des Elements, dessen ID gleich dem, dann an den Benutzer yell. So, jetzt lassen Sie mich wieder meinen Atem halten. Auf geht's. Da gehen wir. Bitte geben Sie eine Abfrage. So ist es lässt mich nicht durch. Ich kann mit dieser Art von spielerisch sein, und stattdessen für keinen Wert zu überprüfen, Ich kann etwas sagen wie: nicht mehr für Katzen suchen, und jetzt können wir mehr spielerisch einfach lassen die Benutzersuche für Hunde, wenn er oder sie will, oder wenn ich gehe in hier und Suche für Katzen, jetzt kann ich nicht. Also, was ist das Mitnehmen hier? So ein, haben wir eingeführt in unsere Welt von HTML und CSS, Programmierfunktionalität. Ich kann eigentlich jetzt Entscheidungen im Code. Zuvor alles, was ich tun könnte, ist markieren Textinhalt oder grafischen Inhalt und sagen, dass es was zu sehen wie und wo angezeigt werden soll. Jetzt kann ich eigentlich fragen Fragen der Web-Seite und treffen Entscheidungen auf Basis auf, und fordert den Benutzer wenn ich brauche, um ihn oder sie zu schreien. Also lassen Sie uns versuchen, etwas auf unserem eigenen mit diesem. Gehen Sie weiter, lassen Sie mich das nächste Dia öffnen hier, und nur eine Sache hinweisen. Genau wie bei CSS, können wir ausklammern unsere JavaScript-Code in eine separate Datei, Sie können das gleiche tun, mit JavaScript als mit CSS. Und Sie verwenden, dass eine Quelle mit Attribut des Script-Tag. Aber wir werden nicht die Dinge jetzt erschweren. Stattdessen, wenn könnten Sie nicht gehen, um diese Seite, aber-- lassen Sie mich diese um in order-- bewegen zu gehen, wenn Sie könnten, diese Seite hier. Diese URL hier. Es ist in der heutigen Dias. Sie könnten neu zu laden, weil Ich habe ein paar Dinge hinzugefügt. Aber gehen Sie dort, wo einige Rätsel erwarten. Und das wird uns eine Chance geben, in einem etwas mehr Spaß dabei mit etwas JavaScript zu versuchen. Und wenn Sie dort sind, Ich werde erklären, was sie erwartet. Erhalten Sie grün. Set blau. Setzt grün, rot einstellt. Hoppla. Es tut uns leid. Dies ist der Umfang unserer Dokumentation für diese Herausforderung. Und das wird wie folgt zu arbeiten. Also, was Sie zu diesem Thema haben Seite ist eine ganze Reihe Bild Puzzles von einem Freund an der Stanford University. Also, was Sie hier sehen, ist fast Art einer jener magischen Auges Puzzles, aber wenn Sie nur an sie starren, Nichts wird dich herausspringt. Vielmehr ist etwas, in diesem Bild versteckt. Und es ist in der folgenden Weise versteckt. Bilder, wie Sie vielleicht wissen, kann sein bestehend aus nur drei Farben. Einige rote, etwas blau, und einige grün. Und wir können alle machen den Farben im Regenbogen irgendwie durch diese drei Farben zu mischen. So sieht das meist grün und blau, aber wie Nick hier sagt, dieses Eisen Puzzle Bild ist ein Rätsel. Es enthält ein Bild etwas bekannt, aber, das Bild ist verzerrt. Der berühmte Objekt ist in den roten Werten. Jedoch die Rotwerte haben alle durch 10 geteilt. So dass sie zu klein sind, um einen Faktor von 10. Also mit anderen Worten, Nick nahm ein Originalbild, und er entsättigt alle des roten davon, Absenken der Rotanteil Tinte, wenn man so will, in ihm. Die blauen und grünen Werte alle sind nur sinnlos, Zufallswerte, auch bekannt als Rauschen ausgelegt das reale Bild zu verdunkeln. Also, was Nick tat, war er die rote abgemildert und dann er warf nur zufällig Mengen von Blau und Grün auf dem Bild zu Art obskurer was ist immer noch da eigentlich. Sie müssen diese Verzerrungen rückgängig machen das Bild zu enthüllen. Zuerst stellen Sie alle blauen und grünen Werte auf Null, sie aus dem Weg zu räumen, und Blick auf das Ergebnis. Dann multiplizieren jeweils Rot-Wert von 10, Skalierung wieder auf etwa seinen Endwert. Was ist das berühmte Objekt? Also alle von Ihnen haben dieses Rechteck gerade jetzt in Ihrem Browser. Und feststellen, dass es einige ist Starter-Code sozusagen. Dies ist JavaScript-Code, Nick hat sich für Sie geschrieben. Und feststellen, dass es eine Linie in der Mitte, beginnt mit einem Schrägstrich Schrägstrich, das ist was ist in der Regel ein Kommentar genannt. Es bedeutet, es ist ein Ausdruck für den Programmierer das hat keine funktionelle Bedeutung. Es ist nur ein visueller Hinweis auf den Menschen. So können Sie voran gehen und löschen Sie einfach die Zeile, und sein super vorsichtig nicht zu löschen oder irgendetwas anderes zu ändern. Und lassen Sie mich gehen Sie einfach durch was dieser Code tut und ich werde es verlassen Ihnen das Geheimnis Bild, um herauszufinden. Diese erste Linie hier, die ich habe gerade markierte gibt Ihnen die folgenden. Auf der linken Seite, Sie haben, was genannt wird eine Variable, die Nick willkürlich hat, aber einigermaßen im für Bild genannt. Auf der rechten Seite dieses Gleichheitszeichen, er sagt, gib mir einen neuen Zitat, unquote "einfaches Bild". Einfaches Bild, in diesem Zusammenhang ist, was eine Klasse genannt wird, gut, es ist ein bisschen wie ein class-- technisch ein prototype-- aber wirklich, dies gibt mir ein neues Objekt, deren Inhalt der Datei sind, Eisen-puzzle.png. In anderen Worten hat Nick geschaffen Diese Vorstellung von einem einfachen Bild so dass wir, für die pädagogische Zwecke, mit dem Bild spielen und seine Rot zu ändern, Grün und Blau-Werte. Und wie machen wir das? Diese etwas kryptischen Syntax hier ist so etwas wie der Wiederholungsblock dass einige von Ihnen gesehen in Scratch früher heute, wo man 10-mal wiederholen. In diesem Fall hat Nick nicht eine Zahl wie 10 fest einprogrammiert. er ist vielmehr zu sagen, initialisieren eine Variable x auf 0 genannt, überprüfen, ob x kleiner als die Breite des Bildes. Und so mehr richtige zu sein, ist die Bild Variable, bedeutet Punkt in der es gehen und erhalten ihre Breite, und dann offen paren, geschlossen paren ist nur ein Weg des Programmierers zu sagen, dies ist eine Funktion. Dies ist ein Verfahren. Dies ist Funktionalität jemand anderes geschrieben hat. Verwenden Sie es und geben Sie mir eine Antwort zurück. Und dann x ++ ist eine andere Art zu sagen, nachdem Sie dies einmal getan haben, erhöhen x um 1. In anderen Worten, diese ist ein Weg des Programmierers induzieren eine Schleife, die ist gehen iterieren alle Spalten in einem Bild. Ein Bild ist nur ein Netz von dots, Zeilen und Spalten von Punkten. Dies ist eine Möglichkeit, das Iterieren über all diese Spalten. Und auf der Innenseite, mittlerweile, wir iterieren über die Höhen, hier und hier und hier. Also das ist nur ein Weg von traipsing ist, fast wie eine alte Schule Schreibmaschine, zu gehen, nur über die ganze Bild iterativ. Das ist noch nicht ganz vollständig klar, denn jetzt auf den Glauben nehmen Sie nur, dass diese drei Linien Code zusammen Sie gehen zu lassen, um iterativ aussehen bei jedem Pixel, Dot jedes im Bild. Was ist ein Pixel? Nun, klar zu sein, wenn wir uns bei dem Original und zoomen, wenn du deine Augen wirklich auf dem Computer-Bildschirm ist, dass nur eine ganze Reihe von Punkten, mehrere Tausend Punkte zusammen dort verpackt. Und was sind Sie zu tun? Jeder dieser Punkte, eine endgültige Definition, ist das Ergebnis dessen, was im allgemeinen ist genannt RGB, rot, grün, blau, die wieder werden, kombiniert, um geben Sie eine beliebige Anzahl von Farben. In der Tat, wenn Sie sich erinnern von vor vielen, vielen Jahren, Projektor-Bildschirme, wie diese Dinge haben nicht eine Linse, sondern drei verwendet. Einer von ihnen spucken rotes Licht aus, einer der sie ausspucken grünes Licht, einer von ihnen ausspucken blaues Licht. Und wenn Sie waren in einer Mittelschule wie ich war, wo sie nie waren richtig ausgerichtet sind, waren Sie immer beobachtete Geschichte Filme dass waren leicht verzerrt, weil die drei Farben waren nicht Kombinieren richtig. Aber es stellt sich heraus, dass jeder von diese Werte Rot, Grün und Blau, können eine Reihe mit ihnen verbunden sind. Zum Beispiel 0 für Rot bedeutet, dass keine rot, 0 für Grün bedeutet nicht grün, und 0 für Blau bedeutet, dass keine blau. Also, wenn Sie nicht rot, nicht grün, und kein Blau, welche Farbe haben Sie? PUBLIKUM: [unverständlich] DAVID MALAN: Sie würde so hoffen, es ist weiß. Leider ist dies operates-- leid? PUBLIKUM: [unverständlich] DAVID MALAN: Also Sie eigentlich haben schwarze, in diesem Fall. Also, wenn Sie keine dieser Farben eingeschaltet, Sie schwarz haben. Wenn Sie jedoch haben, lassen Sie uns eine Menge sagen von ihnen, wie viele rote, 255 davon, viel Grün, und eine Menge Blau, ist, dass weiß. Das sind also die beiden Extreme. So nach dieser Logik, wenn ich eine Menge von roten und ohne Grün und kein Blau, Welche Farbe ist das? PUBLIKUM: [unverständlich] DAVID MALAN: Richtig, natürlich. Und dann nicht rot, viel grün, nicht blau, und dann wenn Sie gut have--, werden wir nur beenden es nur, weil, aber dies ist natürlich jetzt ist blau. Und jetzt können Sie diese Farben kombinieren. Jetzt als beiseite, wenn jemand von euch haben immer einige aktuelle Website-Design gemacht, Sie könnte in der Tat siehe Symbole wie diese. FFF-- und tatsächlich, es ist wahrscheinlich nicht einmal das. Es ist FFFFFF. Wer jemals F ist und E die gesehen und A through-- so stellt sich heraus, wir sprachen gestern über dezimal, und heute Art von etwa dezimal. Heute sprachen wir über binär. Es stellte sich heraus, ist hexadezimal eine sehr gemeinsame Basissystem bei der Berechnung zu verwenden. Binary ist zwei, dezimal 10, ist hex 16. Und es stellt sich heraus, wie zu tun Sie zählen in Hexadezimal? Null, eins, zwei, drei, vier, fünf, sechs, sieben, acht, neun, was tun Sie nach neun? Was ist die nächste Zahl? Wir haben bereits Null. Ich brauche 16 davon. Null, eins, zwei, drei, vier, fünf, sechs, sieben, acht, neun, Sie brauchen eine willkürliche Konvention. Und was für die Menschheit beschlossen, einige Zeit vor, dass nach neun kommt der Brief A und dann B und dann C. So ist die So zählen Sie in hexadezimal null, eins, zwei, drei, vier, fünf, sechs, sieben, acht, neun, A, B, C, D, E, F, und das zählt Sie den ganzen Weg, stellt sich heraus, bis 15. So Null bis 15 ist Null durch F. Nun, warum ist das wichtig? Nun, wenn Sie zwei F ist, das ist, wie Sie 255 auszudrücken. So lange Geschichte kurz, in die Welt von Photoshop, dass Grafik-Design-Software, in der Welt der Web-Entwicklung, wo Sie viele Farben haben, natürlich, um mit zu spielen, oft Programmierer diejenigen, die in hexadezimal ausdrücken, nur weil es dazu neigt, ein wenig einfacher. Auch wenn auf den ersten Blick es ist viel komplexer. So in jedem Fall, das ist wichtig, weil Nick an der Stanford hat uns sechs Stücke von Funktionalität gegeben dass Sie, die angehende Programmierer, Es wird nun die Möglichkeit, zu verwenden. Eingebaut in dieser Web Seite ist sechs Funktionen, sechs Verfahren, die Nick schrieb. Drei von ihnen finden Sie eine Reihe zu bekommen, ein rotes, ein grünes oder ein Blau-Wert. Drei von ihnen werden diesen Wert gesetzt. Und diese Unterstrichen nur Platzhalter sind, so müssen Sie wissen, was diese sind. So mit diesen drei Funktionen, die erste dieser Dinge wird eine x-Koordinate ist, und die zweite dieser Dinge wird ein Y-Koordinate zu sein. Mit anderen Worten, der Punkt, der Pixel wollen Sie das Grün zu bekommen, Holen Sie sich die Blau, bekommen die Rot. Und dann ist hier, das wird sein x, das wird ein y-Wert zu sein, und das wird eine Nummer zu sein. Also lassen Sie uns das erste tun Zeile dieser zusammen und dann werde ich es Ihnen überlassen zu versuchen, den Rest abzuleiten. Also nach den Anweisungen auf dieser Seite, wir brauchen zu erhöhen, um die rot um den Faktor 10, und wir müssen das Grün zu entfernen nehmen und den blauen. Fangen wir mit den letzteren Szenarien starten. Also, wenn ich will, und ich werde einrücken, indem sie einige Räume verwenden, wenn ich will die rot zu setzen, die grüne oder die blaue Wert, Ich werde folgendes tun. Bild, im.setBlue, und dann basierend auf meine Anweisungen hier, welche drei Dinge sollte ich jetzt innerhalb von Klammern geben? Ich brauche den x-Wert, der y-Wert, und welche Zahl sollte ich hier setzen, wenn ich loswerden wollen des blauen, hier auf der Basis dieser Geschichte? Nur Null. Wenn ich keine blauen wollen, bin ich einfach geht es auf Null zu ändern. Lassen Sie uns jetzt nur rekapitulieren, was dies tut. Ich habe hier auf dieser zweite und dritte Zeile, Ich behauptete, zwei Schleifen, verschachtelte Schleifen, wenn Sie wird, dass das gehen, um die Wirkung zu haben Weiterkommen von links nach rechts, von oben nach unten über die gesamte Röntgen Werte und alle der y-Werte. Weil wieder ein Bild nur ein Raster von Zeilen und Spalten. Also das wird erhalten von all den blauen befreien. Lassen Sie mich Ihnen in der nächsten Zeile zu verlassen. Wie kann ich von all dem Grün los? PUBLIKUM: [unverständlich] DAVID MALAN: Nice. PUBLIKUM: [unverständlich] DAVID MALAN: Nice. Und ich werde, um es zu vergrößern und nur nehmen Pflege von, dass Sie keine Fehler gemacht habe. Und wenn Sie bequem mit dem, was du getan hast, gehen Sie vor und klicken Sie auf die Schaltfläche Run / Speichern und sehen, was Sie erhalten. Und wieder haben wir gemacht nur drei Änderungen. Wir gelöscht, dass erste Kommentar und ersetzt es mit diesen beiden Zeilen Code. Und es ist in Ordnung, wenn Sie treffen müssen der Run / Save-Taste ein paar Mal zu beheben etwas. Und lassen Sie mich heran auch auf meinem Code, so können Sie transkribieren. Gut. So sehe ich Andrew hat, was scheint ein Fehler zu sein. Er hat gerade einen großen schwarzen bekam Rechteck auf seinem Bildschirm. Hat jemand haben ein großes schwarzes Rechteck? PUBLIKUM: Ja. DAVID MALAN: Große schwarze Rechteck? OK, also lassen Sie uns denken über das, was das bedeutet. Wir sagten, dass Null, Null, Null, so dass kein Grün, kein Rot, kein Blau, wird Ihnen schwarz zu geben. Und es stellt sich heraus, dass die meisten unserer Laptops haben einfach nicht genug Treue. Sie können nicht ganz da sagen es ist tatsächlich etwas. Und wenn Sie Art von vielleicht lehnen Ihr Bildschirm nach vorne und hinten, vielleicht sehen Sie ein wenig etwas da? Vielleicht, eine Art, eine Art? Es ist nicht vollkommen schwarz. PUBLIKUM: [unverständlich] DAVID MALAN: Spoiler! Es gibt dort einige rot, aber erinnern sich aus den Spezifikationen des Problems, getönten Nick es nach unten. Er entsättigt es etwas, aber nicht den ganzen Weg auf null. Also, wenn wir wollen, um die Menge zu vergrößern mich von rot, lassen Sie diesen Trick vorschlagen. Lassen Sie mich auf meinem Bildschirm vergrößern. Und lassen Sie mich voran gehen und sagen Betrag entspricht im.getRed (x, y). Diese Codezeile wird mir geben etwas namens eine Variable. Ich habe willkürlich, aber wohl, maßen meine Variable, was genannt wird, anscheinend? Menge. Gerade Menge. Ich konnte es genannt habe was ich will, aber ich bin mit dieser anderen Funktion dass ich früher beschrieben die Menge der roten bei x Komma y zu erhalten. Warum habe ich das getan? Was wollen Sie hier zu tun? Sie müssen add-- PUBLIKUM: [unverständlich] DAVID MALAN: Ja, vielleicht multiplizieren sie mit 10. Und wenn Sie nicht wissen, ich bin gehen voran gehen und tun dies. Ich gehe voran gehen und sagen wir, ich möchte den Anteil der roten Farbe Ich will sein, was auch immer die rot ist, mal 10, und der Stern, der Stern auf Tastatur ist the-- nicht x verwenden. Verwenden Sie den Stern. Das ist, wie Sie die Dinge multiplizieren in den meisten Programmiersprachen. So nach Kareem Intuition, in dieser Variablen genannt Betrag gespeichert, ist, wie viel Rot ich an eine bestimmte Position wollen. Wie jetzt, muss ich machen, dass Pixel, das Nummer? Sie haben dies bereits zuvor getan. Sie legen die grünen und die Blau auf keinen Wert auf Null. PUBLIKUM: [unverständlich] DAVID MALAN: Ja, gut Sie wollen es nicht bis 10. Sie haben bereits die Mathematik hier. So werden wir den Wert der rot wurde, die eine geringe Zahl, vermutlich. Wir multiplizieren mit 10 auf. Was Sie wollen, mit dem zu tun der variable Betrag jetzt? PUBLIKUM: [unverständlich] DAVID MALAN: Nice. So im.set-- was? PUBLIKUM: setRed. DAVID MALAN: setRed, an eine bestimmte Position. Ja. Und gerade Menge. In anderen Worten, eine variable ist eine temporäre Platzhalter dass Sie setzen alles, was Sie in wünschen können. Wir werden passieren ein Putting Anzahl darin, im Moment. Wir haben es multipliziert mit 10, um es zu vergrößern. Und jetzt bin ich ersetzen diese Variable wie die dritte Argument, oder Eingabe einstellen rot. Und so, dass, wenn Sie erfolgreich abgeschlossen werden, und zur Kenntnis nehmen der Semikolons und Klammern. Gehen Sie weiter und klicken Sie auf run / speichern und später erneut, und Sie sehen sollte, magisch, was war eigentlich Dort. [? Arwa,?], Was ist da? Der Eiffelturm in vollwertiges rot, nicht ganz dunkel. es sollte jetzt klar sein, ja? OK. Und Andrew, nicht mehr Black Box? PUBLIKUM: [unverständlich] DAVID MALAN: Alles in Ordnung. Also werde ich diese halten auf dem Bildschirm. Wenn Sie möchten, mit diesem zu spielen später, ich werde dies für Sie neu. Aber dieser Code hier genau das tat. Warum wir eine nicht andere. Lassen Sie mich blättern leicht nach unten. So in diesem Fall wird der Projektor tun es nicht wirklich gerecht. Aber auf Ihren Bildschirmen, haben Sie wahrscheinlich haben eine sehr rot und sehr Blackbox. Auch dies ist ein Puzzle, das zeigt etwas berühmt. Allerdings hat das Bild verzerrt ist. Das wahre Bild, dieses Mal ist in den blauen und grünen Werten. Jedoch haben sie alle aufgeteilt durch 20, so sind die Werte sehr klein. Die roten Werte sind nur Zufallszahlen, Rauschen. Rückgängig diese Verzerrungen das wahre Bild zu offenbaren. So Nick sagt Ihnen dann, was zu tun ist. Legen Sie die roten Werte auf Null, und dann verderben nicht, was es ist. Dann multiplizieren Sie den blauen und grüne Werte um 20. So ist es fast die elbe Programm wie zuvor, aber du bist Umkehr des Prozesses. Und ich werde meinen Code setzen aus bevor sie auf dem Bildschirm, falls Sie wollen wieder darauf zu verweisen oder spielen weiter mit, dass ein. Lassen Sie mich auf, dass zoomen. Aber lösen Kupfer Bild Puzzle, Nummer zwei. PUBLIKUM: [unverständlich] DAVID MALAN: OK, so dass dies ein Ich bin Gehen zu geben, wie viele Hinweise nicht. Also ich would-- oh, lassen Sie uns sehen, dass Sie hier einen Tippfehler haben. Also denken Sie daran, dies hier muss tatsächlich dorthin zu gehen. Also, was ich würde vorschlagen, wenn Sie wollen konzentrieren sich auf diese, gibt es die Antwort. Wenn Sie möchten, dass zu transkribieren, dass sollte die erste Arbeits bekommen. Und dann können Sie verwenden, die als Inspiration für die zweite. Nett. Gut. Und für die Neugierigen, Dies ist ein einfaches Beispiel einer Wissenschaft oder eine Kunst genannt Steganographie, die Kunst der Informationen in den Bildern versteckt. Ein typischer Fall wäre, Bilder sein sehr offen mit Wasserzeichen versehen mit einem Logo in der unteren Ecke, aber klar, Sie kann viel anspruchsvoller sein darüber und tatsächlich verbergen andere Bilder in den Bildern irgendwie mit dieser Technik. Nehmen Sie weitere 30 Sekunden und dann werden wir zumindest ankündigen, was Sie sehen sollten. Und ich werde die dritte verlassen ein als at-home Übung, wenn Sie eher ein möchten Herausforderung an diesem Wochenende. Und ich glaube, Andrew könnte haben sie zuerst bekommen. Was ist das zweite Bild, Andrew? PUBLIKUM: Freiheitsstatue. DAVID MALAN: Freiheitsstatue wird diesmal die Antwort. Also noch einmal, nur ein paar einfache Beispiele, deren Ziel die ist, dass Sie ein Gefühl dafür, wie zu geben, wir haben bildliche Scratch übersetzt Blöcke ärgerlicher und mehr komplizierten Code, aber alle Ideen noch genau gleich sind, wenn auch mit der Einführung nun von der Vorstellung einer Variablen, wobei Lage vorübergehend etwas zu speichern. Lassen Sie uns ein Hands-on, nur schließen Sie jetzt die Punkte um etwas mehr der realen Welt. Wenn Sie bereit sind, wenn könnten Sie gehen Sie zu dieser URL auf dem Bildschirm. Das ist auch in Ihrer Kopie der Dias, developers.google.com/maps~~V. Lassen Sie uns tatsächlich etwas tun sozusagen auf dem Netz real, unter Verwendung der Google Maps API, oder Programmierschnittstelle, auf die folgende Weise. Google, wie viele Unternehmen, bietet eine Menge freie Funktionalität dass Sie verwenden, um zu bauen Ihre eigene interessante Anwendungen. In der Tat haben, wenn Sie jemals verwendet Uber ein Taxi oder ein Auto zu bekommen, Sie wissen wahrscheinlich, dass Uber hat eine Karte und es zeigt Autos auf sie. Das heißt, so gut wie ich kann sagen, Google Maps API. Sie sind eigentlich mit Google Maps, aber Uber ist kein Mapping Unternehmen, noch würde, dass ein sein besonders interessantes Problem zu lösen, oben auf ihre Auto-Service-Problem. Und so stehen sie sind, wieder auf den Schultern von anderen, Google in diesem Fall. So verwenden sie die Google-Karten, aber ihre eigenen Auto-Dienste und andere Funktionen. So werden wir zu nutzen dies folgendes tun. Und wenn ich habe zu schnell gegangen, rufen Sie mich einfach in einem Moment vorbei. Glücklich einige der Bild Sachen zu rekapitulieren. Sie sollten sich sehen auf einer Seite wie dieser. So Googles schön, und sie sind unter den Besten der Bereitstellung nicht nur APIs, aber kostenlose APIs, die Sie kann mit spielen oder kommerziell zu nutzen. Sie fangen Sie an, wenn Ihre Nutzung Lade hoch ist, aber ich ging weiter im Voraus und unterzeichnet uns für ein kostenloses Konto dass hoffentlich 10 Computer wird disqualifizieren uns nicht plötzlich. So hoffentlich Demonstration wird funktionieren. Und feststellen, dass sie APIs für Android, iOS, Web und Web-Services, was auch immer das ist. Lassen Sie uns auf Web konzentrieren. So klicken Sie auf das rosa Feld, Web und dass hoffentlich zu einer Seite führt Sie, Hier. Und sie haben eine ganze Reihe von APIs bekam. Und es kann etwas sein, auf den ersten Blick überwältigend, aber ich werde lenken uns durch das, was wir wollen. An der Spitze der linken Seite ist die Google Maps JavaScript-API, die JavaScript-API. So voran gehen und dass man klicken. Und das wird Sie jetzt die Führung folgende Seite, Demos und Beispielcode. Lassen Sie mich heran hier. Und lassen Sie mich uns nach unten zu-- blättern , wo es heißt Quick-Start-Schritte. Ihr Bildschirm sollte wie meine aussehen. Und es zwei Schritte ist, erhalten einen Schlüssel und Entwicklung beginnen. Ich habe bereits Schritt ein für uns, immer einen so genannten Schlüssel. Und dies ist eine gemeinsame Idee. Ein API-Schlüssel ist in der Regel nur eine große Zufallszahl oder eine Zeichenfolge dass Sie sollen in den Code einzufügen, so dass Google weiß, wer sind Sie, wenn Sie verwenden ihren Dienst, ihre API. Bedeutet nicht, wir sind wird nichts berechnet. Und jetzt, klicken Sie statt ein, klicken Sie auf Start zu entwickeln. Wenn Sie könnten nur mir Welle über, wenn nicht sicher, wo wir sind. Also werden wir kratzen nur die Oberfläche, hier aber was Ich dachte, wäre überzeugend ist, um tatsächlich alle von uns haben, Verwendung von Cloud9 in einem Fenster und dieses Tutorial in einem anderen Fenster, lets get tatsächlich unsere eigenen Anwendung und läuft dass bettet eine benutzerdefinierte Google Karte in der eigenen Webseite, und fügt dann ein oder zwei Funktionen. Aber wir werden kratzen nur die Oberfläche dessen, was wir tun können. Also nur eine schnelle Plausibilitätsprüfung. Ist jeder auf dieser Seite, Google Maps JavaScript-API? Sollte sagen am Anfang. Wir werden nicht gehen durch das Ganze mit allen Mitteln. OK, in einem anderen Tab, wenn Sie dies nicht tun haben es offen, geh in Cloud9 und erhalten Sie sich einfach an eine neue Registerkarte, letztlich. Also noch einmal, c9.io von gestern, c9.io, und erstellen Sie einfach eine neue Datei. Und gehen Sie vor und Anruf es was auch immer Sie möchten. Ich rief meine map.html. Nennen Sie es, alles in .html endet. Und Sie sollten rund sein wo ich bin in diesem Prozess mit nur einem blinkenden Prompt in einem leeren Reiter namens so etwas wie map.html. Oder Datei, neue Datei dieses Mal. Und nun, über die auf Google Maps JavaScript-API, wir lesen überspringen durch all dieses Textes. Aber beachten Sie, dass hallo Welt in der Tat überall, können Sie es jetzt sehen. Hallo Welt hat dieses große bunte Beispiel für eine ganze Reihe von HTML. Gehen Sie weiter und kopieren und einfügen, nur dass HTML, so von der doc Typ an der Spitze den ganzen Weg bis zum Ende HTML-Tag, gehen und vor allem von dass-- kopieren wieder, das ist unter dem Hallo Welt example-- und fügen Sie, dass in Ihrem Cloud9 Registerkarte so dass jetzt Ihr Bildschirm schauen grob wie meine sollte. Und Sie können es sparen, aber lade es nicht nur noch. Lassen Sie uns zuerst einen Blick auf der Code und sehen, ob wir kann nicht geschlossen werden oder lernen von dem, was es ist Google hatte uns kopieren und einfügen blind. Sie wollen nur helfen, wahrsten Sinne des Wortes, erhalten wir begonnen, aber es gibt nicht so viel tatsächlich gibt Komplexität. Haben Sie Fragen nur noch? Wir sind sicher die Zukunft zu schmieden? OK. So schnell, lass uns einfach tun einige schnelle Plausibilitätsprüfungen. Linie ein von dem, was ich zu sehen, und hoffentlich Sie zu sehen, was bedeutet das, Doctype HTML? Kareem, erinnern? PUBLIKUM: [unverständlich] DAVID MALAN: Ja. Hier kommt HTML 5. Inzwischen Linie zwei auf der Bildschirm bedeutet hier hey Browser, hier kommt die eigentliche HTML. Zeile drei ist hey-Browser, hier kommt der Kopf. Linie vier ist natürlich, hey Browser, hier kommt der Titel. Was bedeutet Linie fünf zu tun? Tatsächlich ist dies nicht alles tun, für uns wirklich. In diesem Fall ändert die Größe es einfach die Seite auf einen Standard. Linie sechs, wir haben nicht darüber gesprochen, aber es gibt die Zeichenkodierung. Es gibt verschiedene Möglichkeiten, um Dateien zu kodieren, besonders für Fremdsprachen. UTF-8 neigt dazu, nur die Standard zu sein. So, jetzt werden wir in Zeile sehen sieben bis 16, einige CSS. Und obwohl wir haben nicht gesehen all diese Dinge vor, wir können Art schließen. So säumen acht Mittel, hey Browser gelten alle folgenden, auf die zwei Tags, anscheinend? Der HTML-und Textkörper. So ist das Komma das neue Ding da. Und das ist nur eine Möglichkeit, Angabe auf einmal mehrere Tags. Dann haben wir die geschweiften Klammern bekam. So offensichtlich, sagt dies den Browser, machen die Höhe der Seite 100%. Also selbst wenn es sehr wenig ist Inhalt, machen die ganze Seite, machen die Sache, um die Seite zu füllen. Machen Sie die Karte schließlich die Seite zu füllen. Margin, was bedeutet das? Das ist in der Regel wie willkürlich Leerraum an den Rändern dass einige Browser-Designer nur entschied, dass es sein sollte, weil es Art macht die Dinge aussehen sauberer. Aber wir wollen nicht, dass. Wir wollen, dass die Karte gehen den ganzen Weg bis zu den Rändern. Padding, im Geiste auf die Margen. Die Margen bedeuten außen, padding Mittel nach innen, aber es ist die gleiche Art von Geschäft. Es ist ein bisschen ein Puffer zwischen Ihnen und den Rändern. Und dann Linie 13 ist eine gute Chance für eine schnelle Überprüfung. Was tut scharfe Zeichenkarte bedeuten, oder Hashtag Karte bedeuten? Worauf bezieht sich das auf im Prinzip? PUBLIKUM: [unverständlich] DAVID MALAN: Genau. Diese Eigenschaft, diese CSS-Eigenschaft gilt für nur eine Sache, die HTML-Tag das hat eine ID-Zitat, unquote "Karte". Und jetzt schnell nach vorne lassen Sie uns, blättern bis zum Ende der Datei, die ist auch nicht weit entfernt, und Mitteilung auf der Leitung 19, wenn Sie fügen Sie ihn genau wie ich es tat, Zeile 19 hat nur ein div, die a Teilung der Seite, die ich gestern ein rechteckiger Bereich genannt. Es ist nichts in es. Es ist ein offenes Tag, in der Nähe Tag. Aber es muss eine eindeutige ID. Also, was zu sein scheint hier geschieht, ist Google unsere Web-Seite zu readying haben eine komplette 100% Höhe, und keine Polsterung, keine Ränder, weil was wir gehen nach innen zu setzen dieses div, deren eindeutige ID Karte, ist eine tatsächliche eingebetteten Karte. Und wir wollen, dass es zu füllen die Seite und nicht nur einige kleine Rechteck in der Mitte sein. So 14 Linie betont ähnlich, die Karte selbst eine Höhe von 100% aufweisen sollte. So bemerken nun zwischen den Linien 20 und 28 ist dieser JavaScript-Code. Und dies, obwohl es syntaktisch ein wenig seltsam, es ist alles nicht so viel los hier. In Zeile 21 wird dies erklärt etwas namens eine Variable. Anstatt ihn anrufen beträgt, wie wir zuvor, wir genauer sagen var, die Variable nur bedeutet. Wir haben könnte, dass verwendet in Nicks Code, aber er tat es nicht, so dass ich störte es auch nicht tun. Es ist eine Variable mit dem Namen Karte, und dann ist da eine Funktion, die ist anscheinend initMap genannt. Also das ist wie unsere eigene Puzzle-Stück in Scratch. Wir haben ein Stück geschaffen Funktionalität namens initMap, und Sie können Art schließen was ist denn hier los. Auf der linken Seite, wir haben eine Variable bekam, so werden wir die folgenden zu setzen Ding in dieser Variablen, von rechts nach links. Die rechte Seite sagt, hey Browser, geben Sie mir ein neues Google-Karte. Und google.maps.Map ist nur eine flippige Weise, der angibt, dass diese Funktionalität gehört zu Google Maps. Nach den Klammern haben wir gesehen, dies vor, hey-Browser erhalten mir die Elemente auf der Seite, die Tag in der Seite, deren eindeutige ID ist-- PUBLIKUM: [unverständlich] DAVID MALAN: --map. Und, was los ist, na ja, diese Linie zusammen, Zeile 23, sagt im Wesentlichen, hey-Browser, gehen mir bekommen dass leere div auf der Seite deren eindeutige ID Karte, denn ich möchte einfügen in es-- hinein zu injizieren, wenn Sie will-- eine ganze Reihe von Inhalten das geschieht aus dem Web zu kommen, anschließend. Und Googles für uns alle, das zu tun. Also noch einmal, ganz am Ende des Tages, Wir haben dieses Beispiel der Abstraktion. Ich habe keine Ahnung, was eine Karte ist oder wie man eine Karte API zu implementieren. Wir brauchen nicht zu. Wir müssen nur die Karte zu sagen, wohin mit sich, und lassen Sie diejenigen zugrunde liegende Implementierung Details zu Google. Nun gibt es offenbar zwei Daten dass dieses Beispiel ist Bereitstellung von Google-API. Anscheinend ist das Zentrum der Karte, und die Zoomstufe, sozusagen. Und erkennt jemand diese Koordinaten, Breite und Länge? Wahrscheinlich nicht, aber wir gehen zurück zum Tutorial zu sehen, buchstäblich. Aber wir werden es in nur einem Augenblick zu sehen. Zoom-Ebene ist ein Wert zwischen, ich weiß nicht wissen, eine in 13 oder so ähnlich. Es muss nur mit dem zu tun, wie weit du bist gezoomt oder zu verkleinern, und das ist es. Und nun ganz am Ende die Seite, Ankündigung Linie 29-- es ist ein wenig hässlich, weil es wraps-- diese Codezeile ist, was zu den Downloads Browser von Google tatsächlichen API. Alle der Code, der von Google Ingenieure haben geschrieben, dass implementieren diese ganze Funktion integrierbarer Karten. Nun wollen wir nichts ändern. Wenn Sie folgende entlang, gehen Sie voran und speichern nur diese Datei, wenn Sie in der Tat haben Was ich habe. Gehen Sie zu seiner URL. Sie können auf die Schaltfläche Ausführen klicken bis oben, und das wird sagen Sie die URL Ihrer Web-Server erneut. Und es wird Sie zu einem neuen Tab führen. Wenn Sie klicken Sie auf Öffnen für map.html, und Chancen sind, du bist Gehen Sie eine Benachrichtigung zu erhalten, eine Fehlermeldung, nicht wahr? Fehlermeldung, Fehlermeldung? Also leider der Fehler Nachricht ist nicht so aufschlussreich es sei denn, Sie tatsächlich öffnen Konsole, dass spezielle Registerkarte wir Eröffnung gestern gehalten und etwas früher heute. Aber ich stolperte über dies früher, so dass ich schon herausgefunden, was die Lösung ist. In der heutigen Folien oder vielmehr in Cloud9, Bekanntmachung dass wir nicht tun absichtlich etwas. Beachten Sie, dass dieses Skript-Tag in Zeile 29, wenn man durch sie zu lesen, es ist wie maps.googleapis.com/ etwas, etwas, etwas, dann merkt man, einer der Entwickler, in Groß schrieb Briefe, Ihre API-Schlüssel. Wir müssen dort etwas einzufügen. Und dies war der Schritt Ich habe für uns vor, und wieder könnten sie die schwarze Liste Sie uns, wenn plötzlich, 12 oder mehr von uns beginnen mit dem gleichen Schlüssel, aber mal sehen, was passiert. Also, wenn Sie heute gehen in Dias, eine Folie später, gibt es Diese sehr funky aussehenden Text-String. Gehen Sie voran und kopieren Sie einfach das und fügen Sie dort Ihre API-Schlüssel sagt. Das ist das, was ich für angemeldet. Und auf jeden Fall versuchen Sie nicht, Eingabe manuell es aus, weil es fühlt sich voll mit Tippfehler, möglicherweise. So einfach kopieren und einfügen. Und es geht um die Linie zu machen länger, aber jetzt, nur klar zu sein, es sollte ein wenig mehr aussehen wie diese, in denen Schlüssel entspricht nicht aktiviert bei Ihnen zu schreien. Speichern Sie die Seite, gehen Sie zurück auf die andere Registerkarte, neu zu laden, und hoffen auf eine Karte, wo zu sehen? PUBLIKUM: Australien. DAVID MALAN: Australien. So offensichtlich das sind die GPS-Koordinaten von Australien. Und lassen Sie mich für einen Moment herumlaufen und helfen, alle, die es nicht ganz ist, aber lassen Sie mich schlagen, über Google finden die GPS-Koordinaten von Ihrer eigenen Heimatstadt oder Ihre eigenen Heimatland. Und wahrscheinlich Google kann diese drehen , oder Wikipedia kann Ihnen sagen. Aber wählen Sie zwei verschiedene Werte für Breiten- und Längengrad, gehen Sie zurück in und fügen Sie sie, und dann aktualisieren Sie die Seite nach dem Speichern und sehen, ob Sie eine haben kann Karte für die eigene Heimatstadt. Und wenn Sie fertig sind mit dass das Follow-up challenge-- und ich werde ein bisschen weniger Richtung geben, bewusst, so dass man absichtlich haben für ein paar zu kämpfen Minuten mit der Dokumentation, ändern, um die Karte zu sein, das nicht cartoonish Standard, aber eine Satellitenkarte. Sie sehen also tatsächlich Satellit Bilder statt der hübschen Farben. Und der Hinweis, den ich gebe dir ist die Art der Karte benützen. Gehen Sie zurück zu, dass immer begann Seite für Inspiration. Wie Sie vielleicht aufgelesen, wenn Sie schauen, es gibt so viele Dinge die du tun kannst. Einige von Ihnen haben bereits den Kartentyp geändert. Aber Sie können zum Beispiel do--, lassen Sie mich gehen Sie zu etwas, das wir für den Kurs tat Ich teach-- maps.cs50.net. Einer unserer undergrads tat dies. Wir Zentrum unserer Karte über Harvard Yard und Overlay alle diese Gebäudenamen, und wir hatten ihn diese hinzufügen. Also, wenn ich nach dem gesucht werden soll, zum Beispiel Matthews Hall, wir haben ein wenig Drop-Down-Menü. Und ich denke, dass er mit Bootstrap, die Bibliothek diskutierten wir für diese früher. Und wenn Sie auf Matthews klicken Hall, es sofort springt die Karte zu einem bestimmten Lage, und es zeigt, Sie ein Bild in diesem kleinen Pop-up. Aber auch diese kleine Pop-up, wir haben nicht umzusetzen. Wenn ich nach unten scrollen auf unserem immer gestartet und suchen Sie nach Info-Fenster, Sie werden sehen, dass einige der Funktionen, die Sie sich selbst hinzufügen können, wenn auch mit etwas mehr Komplexität, ist etwas, das ein Info-Fenster genannt. Und wenn ich ein Beispiel klicken hier, und das ist, was Spaß macht, Sie können Dinge wie diese tun, voila auf eine Markierung klicken und dann, Informationen erscheint. So haben wir nicht ganz eingeführt genug Features von JavaScript malen Sie ein Bild davon, wie genau Draht könnte zusammen all dieses Zeug, aber wir haben zerkratzt Art der Oberfläche. In der Tat, was gerade tat ich, als Ich habe auf dieser Marker, ein Ereignis, eine wurde auslösenden auf Click-Ereignis so genannte. Und wir sahen tatsächlich ein Ereignis früher heute, die so genannte Veranstaltung einreichen, wenn wir verhindern der Benutzer für Katzen zu suchen. Deshalb haben wir uns Art gepflückt und choosed aus all diesen verschiedenen Funktionen, zu geben Ihnen ein Gefühl, hoffentlich, von dem, was kann man eigentlich tun mit ein bisschen mehr Komfort in der Programmierung, und völlig freie Ressourcen. Irgendwelche Fragen? Nein? Dies ist Ihre letzte Chance, zumindest heute, an einem Freitag, alles von Ihrer Brust zu bekommen so dass Sie gehen hier aus zuversichtlich und komfortabel. Ja. PUBLIKUM: Warum nicht Sie fügen eine weitere Sache? DAVID MALAN: Ach du meine Güte. Ich brauche dieses Wochenende ruhen, denke ich. Andere Fragen? PUBLIKUM: [unverständlich] DAVID MALAN: Sie can-- in Internet Explorer, Ruhe in Frieden, Sie verwendet der Lage sein, VB zu setzen Skript, virtuelle Basic-Skript, aber das wirklich nie gefangen. So die kurze Antwort ist einfach JavaScript. Andere Fragen? Also gut, gut, lassen Sie mich dies tun. Lassen Sie mich außerhalb unserer Kollegen greifen. Sie haben einige Auswertung Formulare, die sie wollen, dass jeder verbringen Sie ein paar Minuten zu füllen. Sie wollen, dass die Form zu sammeln und zu jeder Verzichte, die Sie außerhalb haben könnten. Sie werden auch Zertifikate haben. Ich vermute, es gibt noch einige außerhalb Snacks. Lassen Sie mich diese passieren, und wenn Sie Fragen in der Zwischenzeit, Ich werde gehen um mehr individuell und wir können Sie loslegen. Ja, sicher. PUBLIKUM: [unverständlich] DAVID MALAN: Das ist in der Regel in diesen Tagen wahr. Sicherlich mit Web Software, Sie lehnen Auf anderen sind Sie entweder ästhetisch mit Dingen wie Bootstrap, so tun Sie nicht haben die niedrigen Niveau zu implementieren Details von Menüs und Tasten und das alles. Sie stützte sich auf jemanden wie Google, so dass Sie müssen keine Uber bauen Unternehmen und eine Abbildung von Geschäfts, und eine beliebige Anzahl ähnlicher Anwendungen als auch. In der Tat sind die Anmeldungen beliebt, zu. Wenn Sie noch verwendet Spotify oder eine beliebige Anzahl von Websites, Sie werden einige melden Sie sich an Websites mit Facebook. Also, was ist schön, es sind APIs für Anmeldungen heute, so dass Sie nicht haben Ihre eigene Benutzer-Tabelle zu haben, und alle Ihre eigene Datenbank notwendigerweise im gleichen Ausmaß. Sie können alle tun lassen Facebook dieser Komplexität für Sie. So ist es eine aufregende Zeit, ehrlich, in der Programmierung, denn es gibt so viele Dritte Dienste, die Sie oben auf zu bauen. Und wieder, der Preis, den Sie zahlen ist entweder finanzielle oder Ausfallzeiten. Wenn Google geht nach unten, so tut Uber, wohl, aber vielleicht ist das ein vernünftigen Kompromiss. Und wieder, das war eines der Themen, hoffentlich, für die letzten paar Tage, ist diese Trade-offs. Und selten ist es gehen eine richtige Antwort zu sein. Es ist wirklich die bessere von zwei oder mehr Antworten. Führen Sie diese um. Und diese Cloud9 Konten werden auch weiterhin in der Theorie, in Permanenz zu arbeiten. Vielleicht finden Sie, wenn Sie ein paar Tage warten oder eine Woche oder mehr zu melden Sie sich bei ihnen zurück, Es mag wie ein nehmen oder fünf Minuten zu öffnen zurück, aber das ist nur, weil sie setzen sie schlafen auf Ressourcen zu sparen.