HANNAH BLUMBERG: Hallo allerseits. Wir gehen, um loszulegen nur ein paar Minuten zu früh denn wir haben eine ganze Menge Material, um durchzukommen. Ich bin Hannah. Ich bin ein TF. Maria geht auf meine Tätigkeit uns in nur ein paar Minuten. Sie unterrichtet Abschnitt direkt vor. Ich unterrichte Abschnitt rechts nach, so werden wir um es in die anderthalb Stunden zu halten. So wie Sie hier sehen, haben wir ganz ein paar Themen, die wir brauchen, um durchzukommen, so werden wir schnell gehen ein wenig. Aber wenn an irgendeinem Punkt haben wir etwas zu sagen zu schnell oder die Sie nicht verstehen, fühlen sich frei, sich mit Fragen zu unterbrechen. Wir wollen in der Lage, diese eine zu machen Überblick Sitzung als nützlich erweisen, um alle von Ihnen wie möglich. Fantastisch. Lassen Sie uns also direkt rechts in mit Einige Themen, die wir tatsächlich sehr, sehr kurz für die überdachte quiz 0 im Quiz 0 Bewertung Sitzung. So beginnend mit verknüpften Listen. Also nur sicherstellen, dass Sie einige haben Grundkenntnisse über verkettete Listen und sind komfortabel zu tun einige der grundlegenden Operationen. Also nur zu überprüfen, verbunden Listen sind besser als Arrays weil sie dynamisch wachsen kann. Also müssen wir diese riesigen Vorteil. Wir haben gesehen, wie sie verwendet werden, in Hash-Tabellen, wenn wir weiß nicht genau, wie viele Dinge, die wir gehen zu wollen, in unser Datenstruktur einzufügen. Leider Stücke bieten wir die verknüpfte Liste aller Erinnerung, so dass wir nicht unbedingt in der Lage, konstante Zeitzugang zu tun zu jedem Element in der verketteten Liste. Um eine zu finden besondere Element, die wir müssen alle durchlaufen Weise von Anfang an. Also denken Sie daran, dass die meisten der Grundoperationen sind Omega von 1. So Einsatz ist gerade dabei, ein zu nehmen. Löschen wird n, da wir zu nehmen gehen müssen es aus der Liste. Und Such könnte im schlimmsten Fall zu nehmen,, n. Wir können nicht etwas zu tun binäre Suche auf eine verknüpfte Liste denn wir können nicht einfach zufällig springt in die Mitte. Cool. Fantastisch. Ein wenig von der Stacks. Dies wiederum kam auf Quiz 0, so dass Sie sollte super bequem mit ihm. Aber für Stacks, bitten wir Sie, einen Stapel von Schalen erinnern. Und es wird zuerst in zu sein, heraus dauern. Also haben wir stapeln Dinge in dem Stapel, und wenn wir versuchen, etwas zu nehmen off-- die wir als Abspringen die stack-- wir kommen aus der Spitze. Und wenn wir auf etwas setzen wollen in dem Stapel, nennen wir es schieben. So ist es immer sein werden, bis wächst von der Unterseite wie ein Stapel von Tabletts. Fantastisch. Wir haben gesehen, Stacks implementiert mit beiden verknüpften Listen und Arrays. Wenn Sie die Durchführung sind mit Arrays, Sie wollen um sicherzustellen, dass, um zu verfolgen sowohl die Größe und die Kapazität. So Größe wird sich der Strom sein, Reihe von Dingen in Ihrem Stapel, in der Erwägung, Kapazität ist die Gesamtzahl Dinge, die Sie in Ihrem Stapel speichern kann. Cool. Sehr ähnlich, haben wir Warteschlangen. In diesem Fall, anstatt darüber nachzudenken, ein Stapel von Schalen, denken Sie an einer Linie. Das wird sein first in, first out. Also, wenn Sie Futter sind für etwas im Laden, wir hoffen, dass die Person, die erste in Linie wird sich zuerst geholfen werden. Anstatt zu sagen, Push und Pop, wie wir für die Stack zu tun, wir einfach sagen, Enqueue und dequeue. Und wieder, wenn Sie Umsetzung dieser mit einer Reihe, wir brauchen den Überblick zu behalten der nicht nur die Größe und die Kapazität, sondern auch der Kopf, der wird sich die vor unserem Warteschlange. Cool. Sie haben Fragen zu einem der das? Fantastisch. Rechts entlang zu bewegen. OK, Hash-Tabellen. Hier findest es beginnt bekommen wirklich interessant. So eine Hash-Tabelle ist eine Umsetzung eines assoziativen Arrays. Also im Grunde, was passiert ist haben wir alle diese Eingabe, und wir geben es zu einem Hash- Funktion, die sagt: OK, das ist, wo in der Hash-Tabelle angehört. So einfachsten Hash-Funktion dass wir gesehen haben, ist nur zu sagen, OK, nehmen wir an setzen möchten Zeichenfolgen in unserer Hash-Tabelle. Und eine wirklich einfache Idee könnte sein, zu sagen, OK, lassen Sie uns einfach durch die Art erste Buchstabe des Wortes. So können Sie hier sehen, nehmen wir Banane, wir es durch eine Hash-Funktion, und er sagt, hey, dass sollte bei Index 1 zu gehen. So können wir im Wesentlichen aus einem Hash denken Tabelle als eine Reihe von verschiedenen Eimern. Und jede dieser Schaufeln wird um den Kopf einer verketteten Liste zu halten. Und in dieser verknüpften Liste ist, wo wir können, tatsächlich legte verschiedene Stücke von Daten. So tauchen ein bisschen mehr in eine Hash-Funktion, ist hier, das Beispiel, das ich gerade beschrieben, wo wir einfach sagen, OK, nehmen Sie den ersten Buchstaben des Wortes und wir sind gehen, um es in die Eimer zu sortieren. Daher ist anzunehmen, werde da sein 26 Eimer, eine für jeden Buchstaben des Alphabets. Warum ist dies eine große Hash-Funktion? Was macht diesen nicht idealen? Ja. ZIELGRUPPE: Du wirst um Kollisionen zu haben. HANNAH BLUMBERG: Ja, genau. Sie werden, um Kollisionen zu haben. Also das ist eine Sache. Und wir werden darüber reden, wie wir können, fix Kollisionen in nur einer Sekunde. Ein weiteres Problem dieser insbesondere Hash-Funktion ist, dass unsere verschiedenen Eimer sein werden von ziemlich drastisch unterschiedlicher Größe. Wir wissen, dass es eine ganze Menge mehr Wörter, die mit A als X zu starten, so werden wir sehr haben unsymmetrisch Eimer in unserer Hash-Tabelle. Cool. Also ja, lassen Sie uns zurück zu der Punkt der Kollisionen. Was tun wir, wenn es eine Kollision? Wir haben ein paar verschiedene Optionen. So einen, so nehme an, wir versuchen Berry in unser Hash-Tabelle zu setzen. Und wir sehen, oh, wir wollen um es in Genres 1 gesetzt, aber Bananen lebt schon da. Was werden wir machen? Wir haben zwei Hauptoptionen. Nummer eins ist können wir sagen, OK, es gibt keinen Raum in den Index 1, aber lassen Sie uns einfach weiter auf der Suche durch bis wir eine weitere offene Stelle zu finden. Also werden wir sagen, OK, sagen wir es in Stelle 3. Das ist eine Möglichkeit. Das nennt man linear Sondieren. Und eine zweite Option ist zu sagen, OK, gut, lassen Sie uns einfach jede dieser Schaufeln ist Leiter der verknüpften Listen. Und es ist in Ordnung, wenn es mehr als eine Sache in einem Eimer. Wir sind gerade dabei, hängen Sie ihn an die Front. So, hier können Sie sehen, OK, wenn wir einge Beere, wir nahm nur Banane, Art schob es über ein wenig und warf eine Beere in dort. Und das ist auch völlig in Ordnung. Dies wird als separater Verkettung. Sie können dies als eine Art, wie denke, eine Reihe von Köpfen auf verkettete Listen. Irgendwelche Fragen zu Hash- Tabellen, Hash-Funktionen? Fantastisch. Bäume und Versuchen. So ein Baum ist jede Art der Datenstruktur in denen es irgendeine Art Hierarchie oder irgendeiner der Rangliste, um Ihre verschiedenen Objekten. Und das wird super werden klar, wenn wir sehen, ein Beispiel. Und wir sahen versucht, zusammen mit Hash-Tabellen, in pset5-- die wiederum völlig fair game hierfür quiz-- wie ein anderer Daten Strukturen, die wir speichern verschiedene Dinge. Im Fall von Wörterbuch, wir gespeichert eine Reihe von Wörtern. Werfen wir also einen Blick auf einige Bäume. So ist dies ein Beispiel für einen Baum. Es hat eine Art von Struktur, dass hierarchische Struktur, wo Sie sehen können, dass Dieses 1-Knoten an der Spitze hat eine Art von Rang oberhalb 2 und 3, die sind über 4, 5 und 6 und 7, die oberhalb 8 und 9 sind. Also das ist alles, dass wir durch eine Baum, so können Sie einfach Art von Bild diese in Ihrem Kopf. Jetzt haben wir ein paar spezialisiertere Bäumen. So dass man beispielsweise ein binärer Baum. Und ein binärer Baum ist, wieder, gerade dabei zu sein eine Datenstruktur mit einer Art von Hierarchie, aber jeder der Knoten kann höchstens zwei Kinder haben. Das ist, wo das Wort binären kommt. So ist dies ein Beispiel eines binären Baums. Also das ist eine kleinere Gruppe von Bäumen. Nun wollen wir noch mehr spezifische und sprechen über binäre trees-- binäre Suche Bäume, statt. Also hier die Idee ist nicht nur, dass jeder Knoten haben höchstens zwei Kinder, aber alle Kinder, um die links gehen, kleiner zu sein und alle Kinder, um die rechts gehen, größer sein. So bemerken in nur unsere binären Baum, gibt es keine Beziehung zwischen den Zahlen. Aber in unserem binäre Suche Baum, sehen wir, OK, hier ist 44. Und jede Zahl auf der linken Seite 44 kleiner und alles rechts ist größer. Und das hält bei jedem Ebene des Baumes. Also hier, kleiner als ist dies 22 und diese größer ist als 22. Und das ist, binären Suchbaum. Warum denken wir, es heißt ein binärer Suchbaum? Welche Algorithmus funktioniert es erinnern Sie an? ZIELGRUPPE: Binäre Suche. HANNAH BLUMBERG: Binäre Suche. Weil, wenn Sie für einen suchen bestimmte Anzahl in diesem Baum, an jedem Punkt, die Sie gerade klopfen kann weg von der Hälfte des Baumes, was ausgezeichnet ist. Und so, das wird uns etwas zu geben, dass sieht viel wie binäre Suche. Irgendwelche Fragen? Alles klar, cool. Alle Rechte, versucht. Lieblings jeden. Das ist also das Beispiel, Wir haben eine Reihe in der Klasse zu sehen. Und wieder, das ist nur eine andere so können wir Daten zu speichern. Im Fall der Wörterbuch wieder Dies ist gerade dabei, Strings sein. Also mal sehen, was das eigentlich sieht aus wie auf einem etwas niedrigeren Niveau. Werfen wir also einen Blick an einem Knoten in einem Trie. Und wir sehen, OK, es geht ein Boolean und einen Knoten sein, ein Zeiger zu einem Knoten. Und wir sehen, dass die Boolean heißt is_word. So im Wesentlichen, das ist, gehen zu entsprechen um diese kleinen Dreiecke, sagt, wenn Sie hier bekommen habe, Ihnen ein komplettes Wort gefunden. Wir wissen, dass "Turing" über Hier ist eine komplette Wort, der Erwägung, dass nur T-U-R ist nicht ein Wort weil wir nicht sehen, dass etwas Delta. Und das kleine Dreieck wieder entspricht diesem is_word, Diese Boolean is_word. Und dann haben wir eine Reihe von Kindern. Also auf jeder Ebene, die Sie einen bestimmten Knoten, und dass die Knotenpunkte, um eine Array der gesamte Alphabet. So können Sie sehen, noch einmal, in diesem picture-- Ich bin werde immer wieder springen und forth--, dass Array an der Spitze hat eine Reihe von verschiedenen Knoten kommen aus der IT. Es verfügt über 26, oder 27, wenn Sie wollen um ein zusätzliches Zeichen enthalten. Und das gibt uns ein Weg, um unsere Daten zu speichern in einer Weise, die auf betrachtet werden kann dass man nach oben schauen super schnell. Was die Nachschlagzeit für ein Trie? ZIELGRUPPE: [unverständlich]. HANNAH BLUMBERG: Ja. In der Theorie ist es konstante Zeit. Es wird nur gehen, um die Größe zu sein das Wort, das Sie nachschlagen möchten. Auch wenn wir eine Zillion hinzufügen mehr Worte, um unsere trie, es wird nicht zu uns nehmen nicht mehr zu bestimmen, wenn ein gegebenes Wort in dem Trie. Also das ist wirklich nett. ZIELGRUPPE: Hast du gerade initialisiert das Array? Sie verpasste eine oder zwei Punkte. Können Sie nur darüber reden dass für eine Sekunde? HANNAH BLUMBERG: Sicher, absolut. Gute Frage. Die Frage war, wir habe ein Array, das ist werde Knoten Sterne wie haben im Gegensatz zu nur Knoten, nicht wahr? Cool. Also hier, was wir sagen ist unser Angebot ist nur gehen, um Zeiger auf andere Arrays. So ist es essentially-- es Art von fühlt sich an wie eine verbundene Liste auf diese Weise wobei jedes dieser Kinder nur Punkt zum nächsten Knoten. Und die Art, wie wir tatsächlich bestimmen, hey, OK, wir durch eine ganze wiederholt habe Wort wird dieses Wort in dem Wörterbuch, Wir überprüfen gerade dieses is_word. Gute Frage. Ja. ZIELGRUPPE: OK. Also, was war die Laufzeit für die Trie? HANNAH BLUMBERG: Sicher. So der Laufzeit einer Trie für Lookup wird eine konstante Zeit. So ist es nur geht, um das zu sein Anzahl der Buchstaben im Wort. Es ist nicht abhängig von der Wörterbuchgröße oder die Größe der Datenstruktur. Also hier ist ein etwas einfacheres Beispiel. In diesem Fall können Sie das sehen das Wort Fledermaus ist im Wörterbuch und Sie haben Zoom, aber Sie nicht über so etwas wie Zoo. Wie würden wir machen Zoo? Wie können wir unsere zoo hinzufügen Wörterbuch, um unsere Trie? Ja. ZIELGRUPPE: Stellen is_word gilt für die [unverständlich]. HANNAH BLUMBERG: Good. So würden wir sagen, Z-O-O, und dann würden wir wollen abhaken, dass das Feld als auch. Groß. Vergleichen wir ganz kurz versucht gegenüber Hash-Tabellen. Versuche sind wirklich toll weil, wie gesagt, sie bieten Konstantzeit-Lookup. Aber die großen Nachteil ist sie humongous. Sie können das Gefühl zu bekommen, sogar um es zu betrachten, , dass es dauern wird eine große Menge an Speicher. So, sie werden viel sein größer als Hash-Tabellen, aber sie gehen zu geben, uns viel schneller Lookup-Zeiten. Also das ist Art von Ihrem Kompromiss, was Ihnen wichtig sind, ob es sich um Geschwindigkeit oder Speicher. Sie haben Fragen zu einem der, dass, alle C-Datenstrukturen. Schön. OK. Wir werden auf dem Weg zu einem kleinen Bit der Web-Entwicklung mit Maria. MARIA Zlatkova: Lovely. OK. HANNAH BLUMBERG: Sie können meinen Laptop nutzen. MARIA Zlatkova: Nice. OK COOL. Wie wir heute bewegen, um Web- Entwicklung, unterhielten wir uns ein wenig zum Ändern von Berechtigungen von Dateien und Verzeichnissen so daß sie zugänglich an andere Benutzer, für die Welt, und damit wir sehen, wie Grundsätzlich können wir sie vermitteln wenn wir entwickeln Dinge wie Websites dass wir meistens getan. So sahen wir den Befehl chmod, die Änderungsmodus ist, im Grunde. Das ist eine Linux-Befehl und es Zugriffsberechtigungen ändert von Dateisystemobjekten. Und ein Dateisystemobjekt ist nur ein Verzeichnis, eine Datei, Alles, was du kannst Ändern Sie die Berechtigungen. Also, um die Dateiberechtigungen zu sehen, Wir geben Sie den Befehl ls, liste, -l. Und wenn wir geben, dass wir in der Regel sehen einige Berechtigungen das aussehen ein bisschen wie dieses vor einem Verzeichnisnamen. So d bezieht sich auf Verzeichnis. Und dann haben wir drei haben Triaden, dass im Grunde beziehen sich auf die Berechtigungen entweder ein Benutzer, eine Gruppe oder die Welt. Die Arten von Berechtigungen, die wir können, Für diese drei Gruppen von Menschen sind entweder r für Lesen, w für zu schreiben, und x für auszuführen. Und wir können die für haben die Gruppe und die Welt als gut. Die heikle Sache ist, dass manchmal wenn wir den Befehl chmod, wir würden etwas Nummer eingeben dass aus drei Bits. So wie wir tun könnten, 777 und dass im Grunde bezogen auf den Mehrwert jedes dieser Triaden weil r würde bis 4 beziehen, w würde beziehen sich auf 2, und x würde auf 1 beziehen, so, wenn Sie, hinzugefügt jede der Zahlen würde bis zu einer Gesamtzahl kommen einer kumulativen Wert zwischen 0 und 7 liegt. So konnten wir auch 0 für keine Berechtigungen überhaupt. Und das wäre im Grunde uns die Berechtigungen entweder für den Benutzer, die Gruppe oder die Welt. Haben Sie Fragen zu diesem Thema so weit? ZIELGRUPPE: Sie war die Lese 4? MARIA Zlatkova: Ja. ZIELGRUPPE: [unverständlich]. HANNAH BLUMBERG: Yup. Publikum: Und dann durch Zugabe von allen, andere würden Sie Ihre Nummer. MARIA Zlatkova: Ja. Ja. Dies sind große Fragen. Schön. Als nächstes wird in HTML und eine sprangen wir etwas mehr über Web-Entwicklung. So HTML bedeutet nur, Hypertext Markup Language. Und das ist das Markup Sprache, die ein Standard ist dass es verwendet, um Webseiten zu erstellen. Es ist eine Markup-Sprache genannt weil es nicht wirklich zusammengestellt. Es wird nicht gesagt, wie einige Code sollte ausgeführt oder so etwas werden. Es umreißt kurz und beschreibt, wie eine Web- Seite eingerichtet werden soll mit jedem seiner Elemente und wie sie der Benutzer den Eindruck sollte. Einige der HTML-Tags, die wir ging sind die folgenden. Alle unsere HTML-Dokumenten mit der DOCTYPE html gestartet. Dann haben wir immer die HTML-Tag. Wir haben einen Kopf und einen Körper. Und es ist wichtig, dass HTML hat diese Art der verschachtelten Struktur denn es ist sehr klar. Und dann wird es sehr deutlich, wenn wir müssen nahe Tags öffnen und tatsächlich. Und wir müssen immer zu schließen Tags, die wir geöffnet haben. Und hier haben wir einige der Arten der Dinge vor, die wir haben wollen. So haben wir zum Beispiel, der Titel des CS50. Und dann haben wir eigentlich kann ein Stylesheet zu verknüpfen dass definiert, wie wir stylen unserer Website. Das ist CSS. Wir werden in die zu über sie gehen nächsten paar Dias als auch. Innerhalb des Körpers, setzen wir einige Klassen und IDs. Und als Erinnerung, wieder, IDs sind einzigartig und Klassen können, um mehrere Elemente zugeordnet werden. Und das bedeutet nur, dass können wir Klassen und IDs verwenden innerhalb anderer structures-- so, für beispielsweise innerhalb von CSS-Dateien oder Stil sheets-- auf bestimmte Elemente beziehen und im Grunde sagen, dass wir zu stylen möchten oder entwerfen Sie ein Element in einer bestimmten Art und Weise. Und wir beziehen, die ihnen von ihre IDs und Klassen. Und wir können auch zu beziehen verschiedene Dinge von Tags sowie, aber IDs und Klassen geben uns nur einige Vielseitigkeit und was genau wir wollen sich beziehen. Also nur ein Beispiel. Wir können wieder in eine CSS-Datei, wo wir wollen einige definieren style-- so Farben, Schriftarten, und solche Sachen dass-- wir können definieren den Stil für einen Körper. So dass es zu definieren für den ganzen Körper-Tag. Aber dann können wir auch festlegen, ein Stil für eine #title. Und wieder, bezieht sich der Hashtag, um unsere ID und der Punkt bezieht sich auf unsere Klasse. Und dann für die .info, wir Außerdem können einige Attribute gesetzt. Und wieder, wenn wir wieder zu gehen, hatten wir unsere Klasse namens info und unsere ID Titel. Und wir sehen, dass wir auf die ihnen von #title und .info. ZIELGRUPPE: Würden Sie sagen, Hashtag [? Wähle mich? ?] MARIA Zlatkova: Es tut uns leid? ZIELGRUPPE: Würden Sie sagen, Hashtag [? Wähle mich? ?] MARIA Zlatkova: Hashtag bedeutet, ID, so #title bezieht sich auf was auch immer Elemente haben diese ID genannten Titel. Und dann der Punkt bezieht sich auf eine Klasse. So .info bezieht sich auf dieses Element weil es die Klasse info. Jep. Publikum: Warum wollen Sie unterscheiden sie im HTML-Format? Warum sagen Sie bestimmte Dinge IDs und bestimmte Dinge Klasse? MARIA Zlatkova: Das ist nur bis zu Sie-- HANNAH BLUMBERG: Wiederholen Sie die Frage. MARIA Zlatkova: Oh, sorry. Warum müssen wir unterscheiden, bestimmte Elemente wie IDs und andere Elemente wie Klassen? Das ist einfach, weil es wirklich oft eine Design-Wahl. Es gibt Ihnen eine Menge Vielseitigkeit im Sein in der Lage zu sagen, ich will dieses bestimmte Produkt , diese ID haben, weil sie wollen, , eine Menge Dinge zu tun mit ihr, und ich nur wollen einen Stil zu definieren, bestimmten Stil oder Farbe unabhängig für dieses Element. Und die Art und Weise, das zu tun ist nur so dass sie eine ID. Und dann, wenn ich haben ein paar verschiedene Artikel aufweist, dass anstelle des gehen und Einstellen their-- statt es durch Tag, weil der Tag würde setzen Sie die Zelle für den gesamten Tag für jedes Mal, das Tag verwendet wird, können Sie eine Klasse, um mehrere Elemente gesetzt. Und dann nur Zugriff auf diese Klasse und sagen, Ich möchte dieser Klasse Stil, der Art und Weise. Und wieder, kann die Klasse werden mehrere verschiedene Artikel und die ID muss eindeutig sein. Große Fragen. Noch mehr Fragen? OK, awesome. Auch dies ist, wie diese Selektoren werden in CSS referenziert, mit hashtag, mit Punkt oder ohne etwas zu Zuweisen der Stil einiger tag, wie Körper. Und hier haben wir die allgemeine Syntax, wie dies geschieht. Um einige besten wiederholen Practices für HTML und CSS, wir brauchen, um wieder, schließen Sie alle die HTML-Tags, die wir öffnen. Und was wir Ihnen empfehlen für Ihre Abschlussarbeiten zu tun, als auch für CS50 Finanzen, ist es, Sie sicher, dass alle Ihre HTML validiert. Und das ist mit dem W3 Validator getan. Und dann, was wir getan haben und was wir empfehlen, tun trennt Stil, so CSS von Markup HTML. Also alles, was, wie bezieht Ihre Seite wird visuell zu sehen und wie es geht um geändert werden sollte in eine CSS-Dokument zu gehen. Und dann Markup sagen, wie die Dinge sind in Bezug auf jede andere HTML, und daß innen gehen sollten Ihre HTML-Dokumente. Irgendwelche Fragen? Mhm. ZIELGRUPPE: Was genau wird auf die Seite Validierung wenn wir die Validierung der HTML, die [unverständlich] erstellt? MARIA Zlatkova: So what-- denken, Sie. Also, was genau los ist auf mit Seitenvalidierung und warum wir das tun? Im Grunde, das zu tun brauchen wir weil eine Menge Zeit, Ihrem Browser, wenn Sie nicht einen Tag zu schließen oder etwas ähnliches, Ihr Browser immer noch zu machen Sie eine Seite und kann immer noch funktionieren, aber es ist am besten Praxis, um sicherzustellen, dass Sie haben wieder geschlossen alle Tags, dass alle Ihre Elemente sind die Art, wie sie sein sollten, und im Grunde, dass es durch die Konventionen, die voreingestellt sind. Es ist wiederum nur ein Sache, sollten Sie werden lernen, zu tun, im Gegensatz dazu, schlampiger Code und solche Sachen. Ja. Oh, das tut mir leid. Ich dachte, Sie erhöhen Ihre Hand. ZIELGRUPPE: Nein, ich war einfach nur [unverständlich]. MARIA Zlatkova: OK. ZIELGRUPPE: Vielen Dank. MARIA Zlatkova: Natürlich, ich danke Ihnen. Also noch einmal, geht in, wie Informationen übertragen und Kommunikationsmodelle um Informationen zu übertragen. TCP / IP. TCP bedeutet nur, Transmission Control Protocol und IP- bezieht sich auf Internet Protocol. Und das nur, bezieht sich auf die Art und Weise Daten geliefert werden. Wenn wir einige Daten haben, dass muss geliefert, um so Sie-- Sie eine Anforderung für einen bestimmten Server zu machen. Beispielsweise, wenn man versuchen, cs50.net zuzugreifen, wir einen Antrag zu machen das CS50-Server und wir sehen, dass wir wollen, um diese Art von Informationen. Und dann werden basierend auf diesem Protokoll denn wie diese Information geliefert werden, der Server gibt Informationen zurück zu uns, der Kunde. Und dann sind wir in der Lage zu sehen die Informationen für die Seite und dann verwenden. So dann Hypertext Transfer Protocol ist nur ein weiteres Protokoll oder eingestellt von Konventionen, die definiert, wie der Web-Browser und dem Web-Server sollte zu kommunizieren. Und setzen das alles zusammen, HTTP, wieder nur definiert, wie diese Hypertext definiert durch die HTML, die wir gearbeitet haben es, wie sollte es bei Dir und wie die Daten, die an Sie geliefert wird kommt zu Ihnen. Und deshalb, wenn euch daran erinnern, aus einer Klasse, wir hatten viele Anfragen und wir hatten eine Menge von Syntax Für diese Anforderungen, die wir sind gehen, um mehr als jetzt gehen. Also noch einmal, wenn wir senden eine Anforderung zu einem Server, wir müssen ein paar Dinge zu definieren. Also müssen wir die Art zu finden der Anfrage, die wir einstellen. Und wieder haben wir, zum Beispiel, GET ist eine Art von Verfahren dass wir in unserer Anfrage. Und dann HTTP / 1.1 ist nur die Protokoll, das wir mit aktuell sind. Die meisten der Zeit, das wird zu dem Protokoll, das wir verwenden. Also, wenn Sie eine Frage haben, wie die auf Ihrem Quiz. Das ist die Konventionen dass wir so weit. Backslash bezieht sich auf welche Art der Dinge, die wir anfordert. Dann ist unser Wirt, beispielsweise in diese Dabei versuchen wir, auf google.com zu gehen. Das ist also der Wert für einen Host. Dies ist eine Art der Anfrage das könnte gesendet werden. Und dann eine Art der Reaktion das könnte sandte wiederum basieren auf diesem Protokoll, wieder, HTTP / 1.1. Also das ist der HTTP-Version erneut. 200 OK ist nur der Statuscode. Und das OK ist nur ein Begriff auf der Grundlage dieser Status-Code. Und dann der Content-Type bezeichnet die Art dass wird an Sie zurückgeschickt das ist für diese Web-Seite, die Sie empfangen und dass Ihr Browser kann anschließend rendern. Und das ist text / html. ZIELGRUPPE: Was 1.1 das? MARIA Zlatkova: Das ist nur die Version von-- oh, was 1.1 das? Das ist nur die Version, der HTTP- Version eines Protokolls, das wir verwenden. Gute Frage. Andere Fragen? ZIELGRUPPE: Können Sie zusammenfassen Content-Type, sehr kurz? MARIA Zlatkova: Damit ist das, was der Server. die Art der information-- was Inhaltstyp waren die Fragen. Das war also der Art von Informationen, die Sie zurück zu bekommen von dem Server, der Art der Daten, die der Browser kann dann machen, dass Sie verwenden. Publikum: Ist das, was diese Protokoll ist Ihnen zu sagen, zu tun? MARIA Zlatkova: Es tut uns leid? Publikum: Ist das, was das Protokoll zu sagen? MARIA Zlatkova: Die protocol-- ZIELGRUPPE: --was die Content-Type ist oder what-- MARIA Zlatkova: Das Protokoll basiert an--, was ist das Protokoll sage Ihnen? Das ist halt so dass diese Informationen wurde an Sie geliefert basiert Auf welche Art von Protokoll wurden diese Informationen bekommen zurück an Sie geliefert. Macht das Sinn Art? HANNAH BLUMBERG: Sie kann der Protokoll denken wie a-- Ich denke, Professor Malan beschrieb es in der Klasse als eine Art, wie es ist, a-- das Äquivalent der menschlichen Handshake. Sagen, wie, hey, ich bin eine Anfrage und ich wissen, wie man HTTP-Version 1.1 zu behandeln. Und dann sagt der Server, oh, OK, I-- und beide existieren. Ich weiß auch, wie man mit HTTP / 1.1 umzugehen. Und ich werde zu geben Sie sichern einige Inhalte. In diesem Fall, es geht vom Typ text / html ist. Also, es ist irgendwie nur ein Weg, davon für communicating-- MARIA Zlatkova: Es ist nur, die bestätigt, dass Sie sowohl nach dem gleichen Protokoll und dass sowohl der Client und der so server-- Ihrem Browser und dem server-- Art weiß, was du reden und haben die Konvention für die Weitergabe in Daten. Publikum: So ist die Content-Type part-- die Content-Type text / html-- ist, dass ein separater Teil der gleichen Botschaft? Oder ist es Teil der sagen wir mal, 200? Hat 200 ihnen sagen, dass oder ist-- MARIA Zlatkova: 200 sagt, es ging alles OK. Und dann Inhaltstyp ist eine Art separaten Teil der gleichen Nachricht, und sagen, die Sache, die ich zurückgekehrt ist, diese Art von text / html. Es ist nur geben weitere Informationen. Haben Sie etwas hinzuzufügen? OK. Weitere Fragen zu diesem Thema? Fantastisch. So einige andere HTTP-Status, konnten wir zusätzlich zu 200 OK bekommen, diejenigen, die wir vielleicht gesehen haben möglicherweise viel sind 403 und 404. So 404, wenn Sie versuchten, Zugang etwas, das es nicht gibt. So zum Beispiel, in Ihrem CS50 Finanzen psets, wenn Sie hatte Rendering quote.html und Sie nicht über diese Datei, sondern man musste quote.php, dass würde in einem 404 führen nicht gefunden da die Datei nicht existieren könnte. Für eine 403 verboten, dass bezieht sich auf die Berechtigungen. Also, wenn einige Datei wird von der nicht lesbar Welt, könnte man eine 403 zurückgegeben zu werden. Einige andere, die Sie get-- 301 Moved Permanently; 302, gefunden; 304 Geändert; 400 Bad Request; und dann Interner Serverfehler für 500 und 503 Service Unavailable. Ja. ZIELGRUPPE: Werden wir zu erwarten auswendig zu lernen alle diese Zustände? MARIA Zlatkova: Ich hätte sie auf Ihrem Spickzettel. [LACHEN] ZIELGRUPPE: Sind wir zu erwarten wissen, was löst jeden? MARIA Zlatkova: Sind sie das? HANNAH BLUMBERG: Für diejenigen, die wir haben laufen into-- so die Frage was-- MARIA Zlatkova: Sind sie zu erwarten wissen, was jede dieser Status Codes könnte ausgelöst werden durch? Also für diejenigen, die wir verwendet haben, und lief in, würde ich sagen, ja. Deshalb haben wir auf jeden Fall gesehen, 200 OK und lehrte sie in psets. Wir haben gesehen 403, 404. Für andere, die? HANNAH BLUMBERG: Ich würde sagen, 500 scheint fair game. MARIA Zlatkova: 500, yeah. HANNAH BLUMBERG: Ja. Müssen nur ein allgemeines Gefühl von dem, was sie verursacht. Und auch nur von diesen Namen können Sie Art wie eine fundierte Vermutung zu dem, was tatsächlich verursachten sie. Zum Beispiel permanent bewegen, wahrscheinlich die Datei wurde dauerhaft verschoben. ZIELGRUPPE: Aber auf einem früheren Prüfung, gab es eine so wie kann man erwarten, dass wir beantworten? HANNAH BLUMBERG: Das war es wert null Punkte. Die Frage über 418 auf der Teekanne ist technisch ein HTTP-Status, aber es hat sich gelohnt null Punkte. Offensichtlich sind Sie nicht erwartet, dass sie wissen. Publikum: Ist es eine echte? HANNAH BLUMBERG: Es ist eine echte , aber es hat nichts zu bedeuten. Es ist nur ein Witz. Internet Leute sind lustig. MARIA Zlatkova: Great Fragen, Jungs. Noch mehr Fragen? ZIELGRUPPE: Was ist interner Server-Fehler? MARIA Zlatkova: Intern Server-Fehler nur bedeutet, dass Sie gewesen sind nicht kommunizieren mit dem Server aus irgendeinem Grund. Es ist also nicht unbedingt etwas, das zu tun hat mit dem Kunden oder so ähnlich. Ich kenne keine speziellen Beispiel wissen, dass wir über gegangen, um zu erklären, aber ja. HANNAH BLUMBERG: Sicher. So zum Beispiel, wie wir sagen, Sie auf Mashup arbeiteten und einen Server von Google ging für einige Grund ist ein Stromausfall, sagen wir. Das wäre ein interner Server sein Fehler oder irgendeine Art von-- mag dich würde keine Antwort zurück. MARIA Zlatkova: Ja. Es ist nur, wenn Sie nicht kommunizieren mit dem Server aus irgendeinem Grund, weil davon hinunter oder aus einem anderen Grund. So springt in PHP. PHP im Gegensatz zu HTML, ist ein Programmiersprache. Und wir verwenden es, weil es begann sehr nützlich für Web-Entwicklung. Wir ersten verwendet es in CS50 Finance. Und es ist im Grunde hilft uns zu bringen zusammen dieses Markup, das Design, und wie wir eigentlich Informationen benutzen, die Dinge auf einer Webseite anzuzeigen. So PHP selbst bedeutet PHP Hypertext Preprocessor, so ist es eine rekursive backnorym von selbst aus. Und Öffnen Tags für PHP wir die linke und rechts Pfeile mit den Fragezeichen und PHP. So haben wir bereits eine Reihe von gesehen. Nun, wir sind nur gehen über einige der grundlegenden Dinge über sie. Also mit PHP, die Variable Namen mit Dollar-Zeichen. Wir wissen nicht geben, noch einmal, eine Variable mehr geben. So wie wir mit C hat, brauchen wir nicht, das zu tun. Wir können eine Reihe von verschiedenen zu tun Sachen mit Variablen. Wir können sie zusammen durch Verkettung von ihnen mit der Punktnotation, die wir konnten nicht in C wieder tun. Auch hier haben wir ein bisschen mehr Flexibilität mit PHP im Hinblick auf die Variablen. Auch hier haben wir nicht eine Hauptfunktion. Und PHP interpretiert im Gegensatz zu kompiliert So, wie wir es für die C-Dateien zu machen, wir haben nicht zu der für PHP zu tun. Sondern die Art und Weise, dass der Sprache wird von selbst läuft, wird sie interpretiert. Und dann schwach typisierte einfach bedeutet, dass wir nicht haben, um eine Variable angeben, Typ und die Variablentypen werden zur Laufzeit bekannt. ZIELGRUPPE: Aber was Sie getan haben damit meine dot Verkettung? MARIA Zlatkova: Sicher. Wenn wir die Dinge together-- setzen wollen so dass, wenn wir eine variable hatte, hatte den Wert von 3, und wir hatten eine andere Variable, die den Wert der String hat, wir könnten die Variablen zusammengestellt indem Sie einen Punkt zwischen ihnen und verketten sie. Oder wir könnten eine zu erstellen Variable namens name und legte sie zusammen durch Verkettung von zwei Strings. Also, wenn wir hatten ein String in doppelten Zitate und wir haben einen Punkt, nachdem es, und dann hatten wir eine andere Zeichenfolge, daß würde eine Zeichenfolge überhaupt zu erstellen. ZIELGRUPPE: OK. MARIA LETTLAND: War das klar? ZIELGRUPPE: Ja. MARIA Zlatkova: OK. Ja. Publikum: Wenn Sie sagen, anstatt interpretiert kompilierte, Sie reden über dich nicht müssen so spezifisch, wenn sein es darum geht, im Vergleich zu C PHP? MARIA Zlatkova: Wenn wir sagen, interpretiert im Gegensatz zu kompiliert, was meinen wir damit? Das heißt also, dass wir nicht brauchen, ausführbaren Dateien, um PHP laufen. Es bedeutet, dass es ausgeführt wird, wie es geht. Ist das sinnvoll? Ein bisschen mehr. HANNAH BLUMBERG: Sie kann durch einen Dolmetscher zu denken, als ein anderes Programm, das zuständig ist Zur perfekten Zeile für Zeile durch PHP und tatsächlich führt es, im Gegensatz zu kompilieren es läuft alles auf Binär. Es ist nicht wirklich alles bedeuten darüber, wie bestimmte wir sein müssen. Wir müssen noch genau zu sein, und nicht Vergessen Sie Ihre Strichpunkt, und stellen Sie sicher, haben Sie Ihre Dollar-Zeichen, und solche Sachen. Gute Frage. MARIA Zlatkova: Ja. So Zeile für Zeile, wie mit C-Dateien gegenüber, wir müssen das ganze Finale schaffen bevor wir tatsächlich ausführen. Das ist der Hauptunterschied. Aber auch hier können wir nicht wirklich weniger spezifisch sein. So Arrays in PHP dar eigentlich eine geordnete Karte. So Arrays assoziierten Werte auf Schlüssel. Die beiden Möglichkeiten, um ein zu erklären Anordnung, basierend auf dieser Syntax können wir mehr explizit sein zu sagen, wir haben eine Reihe und wir haben dieses key1, die Karten Diese value1, key2, die value2 abbildet. Oder wir können eine Reihe einfach zu erstellen dass die Werte selbst enthält und dann die Tasten in einer Weise verstanden werden. Haben Sie Fragen zu diesem Thema? Publikum: Was wäre der Schlüssel werden im zweiten Beispiel? 0, 1, 2, 3? MARIA Zlatkova: Zum Beispiel, es ist einfach Schlüssel in diesem nicht unbedingt Macht einen Unterschied. Sie bestimmen, wie Sie können Verwenden Sie die Werte innerhalb der IT. Also, wenn wir hatten eine foreach Schleife in PHP Das wäre ermöglichen es uns, alle Werte zu gehen, Wir können alle Werte zu gehen, auch wenn wir nicht einheitlich war eine bestimmte Taste innerhalb der Website previous Syntax. So auch bei dieser Art des Arrays, konnten wir noch haben eine foreach-Schleife dass durch jede geht von den Werten in dem Schlüssel in der Anordnung. So der Syntax einer foreach Schleife, beginnen wir mit einem Array. Diese $ arr Variable ist unsere tatsächlichen Array dass wir in der vorherigen Folie definiert als Wert, der buchstäblich geht durch jedes der Werte, egal ob wir hatten einen Schlüssel oder nicht. Und dann können wir etwas mit zu tun der Wert innerhalb der foreach-Schleife. Also noch einmal, wenn wir ein Array wie dieses hier created-- so den Schlüssel foo und den Wert müssen wir Bar, der Schlüssel der baz und Wert der qux-- können wir eine foreach-Schleife, dass geht durch Array als Schlüsselwert und dann etwas zu tun mit dem Schlüssel und / oder Wert. Aber wir tun, nicht unbedingt immer haben müssen eine foreach-Schleifen, dass geht durch Array als Schlüsselkarte zu Wert. Wir können durch die gehen foreach-Schleife Array als Wert. HANNAH BLUMBERG: Und ich denke, zu-- war Ihre Frage, was ist der implizite Index? ZIELGRUPPE: Kinda. MARIA Zlatkova: Oh. HANNAH BLUMBERG: Ja, ja. Also im Grunde, wenn Sie nicht angeben ein Schlüssel, es wird 01 sein. MARIA Zlatkova: Ja. Genau wie bei C, es ist null indiziert, wenn Sie nicht über einen Schlüssel angeben. Publikum: Es tut uns leid. Könnten Sie versuchen, zu sprechen etwas lauter? Ich habe ein bisschen von Schwierigkeiten mit dem Hören alles. MARIA Zlatkova: Es tut mir leid. Ja natürlich. Also willst du mich willst erneut, um über diese gehen? Oder this-- ist Publikum: So auf der vorherigen slide-- wenn Sie gerade gehen könnte für eine Sekunde zurück. MARIA Zlatkova: Natürlich, sorry. Publikum: So die zweite Array hier nicht scheinen einen Wert haben, um Schlüssel, Art [? Schadensursache. ?] MARIA Zlatkova: Richtig, richtig. Publikum: So wie funktioniert das wenn Sie sagen, es ist alles oder nichts. Für mich sieht das wie ein [? foo?] bereits. MARIA Zlatkova: Ja, ja. Also noch einmal, ist dies ein bestellt Karte in diesem Sinne dass es verstanden werden, zB die Indizes Hier kann als 0, 1, 2, 3 zu verstehen. Auch das ist mit denen Indizes ist unser Äquivalent der mit Schlüssel auf Werte abgebildet. Wenn also war unser Schlüssel 0-- sorry. HANNAH BLUMBERG: Nein, Es gibt hier oben Kreide. Es ist eigentlich sehr schön. MARIA Zlatkova: Das ist toll. OK. Also noch einmal, $ arr 0 wäre, der Schlüssel für den Wert 1. 0 würde der Schlüssel für den Wert 1 zu sein. Publikum: Es tut mir leid. Es ist unsichtbar. HANNAH BLUMBERG: In Ordnung, nevermind. Chalk war eine schlechte Idee. Ich nehme es zurück. Sie können der Schlüssel zu denken als 0 Karten auf den Wert 1. MARIA Zlatkova: Ja. Das ist also 0, ist dies 1, 2, 3. Diese können Sie Ihre Schlüssel sein. Sie können von ihnen as-- denke ja. Also anstatt expliziten Schlüssel, sie sind Art verstanden als die Indizes bei 0 beginnt. Die Kreide hat nicht geholfen. Ja. Gruppe: für die foreach-Schleife, Wenn wir das als Wert betrachten wollte, Es wäre nur automatisch Index auf 0? MARIA Zlatkova: Ja. Es würde durch jeden der Werte gehen. ZIELGRUPPE: [unverständlich] wie 0 oder wäre das nur tun, 0? MARIA Zlatkova: Sie müssten als Dollar-Zeichen und dann sagen, einige Variablennamen, Wert. ZIELGRUPPE: [unverständlich]. MARIA Zlatkova: Es tut uns leid? ZIELGRUPPE: Sorry, ich bin nur versuchen, sich zu erinnern. Wie würden Sie wissen, dass, wenn Sie es tun können automatisch die Indizierung ist nur 0 von? MARIA Zlatkova: Wie würden Sie das tun wenn Sie nicht über bestimmte Schlüsselnamen? ZIELGRUPPE: Ja. MARIA Zlatkova: Sie würden nur define-- nur sagen, selbst als einige Namen. Also in Ihrem psets, euch könnte erinnern foreach $ row als Zeilen $, wir selbst diese $ row sagen erstellt Wir wollen durch Zeile wie $ Reihen zu gehen. Auch wenn wir nicht Diese explizite $ rows definiert sind, wir könnten einfach hingehen und sagen, dass dies unsere Schlüssel sein, und gerade durch jeden der Werte gehen. Publikum: So ist der Wert eine neue Variable wir schaffen zu speichern [unverständlich]? MARIA Zlatkova: Also ist es nicht von Natur aus eine neue Variable. Es ist eine Variable, die auf das bezieht innerhalb des Arrays zu jedem von ihnen. HANNAH BLUMBERG: Es ist ein neuer Name variabel. MARIA Zlatkova: Ja, es ist eine neue Variablennamen, aber es ist nicht inherently-- ja. Es ist nur eine neue Variable dass Sie das tun. So, wie wir das gemacht haben $ wie $ Reihen, Reihen Reihen war einen neuen Variablennamen, dass wir konnte in unserem foreach-Schleife erstellen. Es muss nicht vor, dass präexistieren. ZIELGRUPPE: Können Sie über die gehen Logik für jede, am Beispiel da? MARIA Zlatkova: Mhm. Oh, das tut mir leid. Hier ist das Beispiel. Sicher. Also für jeden array-- so das bedeutet, gehen Sie zu diesem Array als Schlüssel value-- das wird um durch diese Anordnung gehen und ersten gehen und foo, die Schlüssel foo und der Wert bar. Und dann auf dem zweiten Iteration der for-Schleife, es geht um durch zu gehen und nehmen Sie der Schlüssel baz und der Wert qux. Und dann kann man etwas mit zu tun einer von ihnen oder beide. Publikum: So ist die Idee hinter mit einem Schlüsselpunkt auf den Wert, was tun Sie am Ende den Zugriff? MARIA Zlatkova: Was ist die Idee der mit einem Schlüsselzeige zu bewerten? Es ist nur eine andere Konvention, ein anderer Weg zu gehen durch das Array und die Möglichkeit für den Zugriff auf entweder der Schlüssel oder den Wert oder beides und zu nutzen. Publikum: Was ist die Rolle für die anordnen, dass die foreach läuft? Also, wenn wir hinzufügen, waren von Elementen zum Array später würden diejenigen, die ersten zu sein in der foreach-Array mit dem Namen, oder wäre es später sein? MARIA Zlatkova: Also, was ist die Reihenfolge, dass die foreach Schleife geht durch ein Feld in? Es geht durch die erste Element bis zum letzten Element, bis zum letzten Element hinzugefügt. Wenn Sie Elemente später hinzufügen, würden sie werden accessed-- die ersten Elemente würden als erstes zugegriffen werden Elemente des Arrays, und dann würden Sie durch jede der gehen die Elemente als eine Art einer ordered-- nicht bestellt, aber die Art und Weise, sie in das Array gesetzt. Publikum: So neue Elemente werden später hinzugefügt? So dass sie added-- werden sie das sein, letzten, die in der [? Iteration. ?] MARIA Zlatkova: Neue Elemente can-- Grundsätzlich, wenn neue Elemente hinzugefügt werden, werden sie zu dem Ende der Reihe hinzugefügt? ZIELGRUPPE: Ja. MARIA Zlatkova: Ich glaube schon. Ja. Und dann mit Ihrem foreach-Schleife, nachdem Sie neue Elemente hinzugefügt haben und Sie durch sie gehen, die neuen Elemente würden sein accessed-- neuen Elements, wenn es zuletzt zugegeben, wäre es zuletzt zugegriffen werden. ZIELGRUPPE: Können Sie sich ein Beispiel geben von etwas, das [unverständlich] Wollen mit etwas mit Wert wie [unverständlich] oder Wert, wie, wie Sie möchten, dass zu formatieren? MARIA Zlatkova: Sicher. Kann ich ein Beispiel geben, was wir mit dem Wert zu tun würde? Also, was euch vielleicht vertraut sein ist, dass wir durch eine Reihe fort und im Grunde gedruckt jedes der Elemente, zum Beispiel als ein Teil eines geordnete Liste oder etwas, das. Ist das sinnvoll oder wollen wir zu-- ZIELGRUPPE: Können wir drucken diese Werte aus? MARIA Zlatkova: Ja, wir drucken könnte und dann im Grunde $ value, weil bei dass bestimmten Wert, wir würden uns Drucken Sie den Wert darin. Also, wenn wir in unserem ersten Iteration von ihm und wir gedruckte $ value, wir würden den Druck bar. Publikum: Gibt es auch für Schleifen in PHP oder foreach-Schleifen? MARIA Zlatkova: Es gibt auch für Schleifen in PHP. Und deren Logik meistens der elbe, was Sie bei uns eingesetzt. Publikum: So ist sein Wert null. MARIA Zlatkova: Es ist wie die gleiche. Ja. Publikum: Ich werde einfach zu fragen. Also, wenn Sie ein zu erklären Array, brauchen Sie nicht zu erklären, welche Größe es zu gehen sein, was bedeutet, dass man nur hinzufügen und wegnehmen Elemente [unverständlich]. MARIA Zlatkova: Yup. Jep. Genau. Wenn wir ein Array deklarieren, wir brauchen nicht zu sagen, wie groß sie ist, so können wir nur hinzufügen, Elemente auf sie später auch. Mehr Fragen? So bringen PHP und HTML zusammen, Was haben wir gut seen--, beispielsweise in diesem Beispiel haben wir ein HTML-Formular, das ein Eingabefeld hat. Und das Eingabefeld ist nur Namen und dann hat es einen Submit-Button. Und wenn Sie die Taste Senden Button, in unserem hello.php-Datei, da das Verfahren für das Formular erhalten, können wir zugreifen, was auch immer auf Namen durch dieses zu erhalten globale Variable, ist-- die Syntax ist es $ _GET. Und dann können wir den Zugriff unabhängig von der Benutzereingabe innerhalb dieses Formular für Namen indem Sie den Namen des Feldes. Alle anderen Fragen oder jede Fragen zu diesem speziellen Beispiel? ZIELGRUPPE: Wo ist der PHP? MARIA Zlatkova: Hier. Also das ist unser Start-Tag für den PHP. ZIELGRUPPE: Ach ja, richtig. MARIA Zlatkova: Ja. HANNAH BLUMBERG: Das ist die Kurzform = dafür ist PHP und nur Echo. ZIELGRUPPE: Oh. MARIA Zlatkova: Ja, sorry. Ich sollte das klar gemacht haben. HANNAH BLUMBERG: drucken. MARIA Zlatkova: Es ist nur die Funktion dass erlaubt uns, etwas zu drucken. Gute Frage. So going-- ja. ZIELGRUPPE: Wird es durchaus sein, ein wenig manuelle Programmierung von PHP und HTML am Quiz 1? MARIA Zlatkova: Es kann eine sein, ziemlich viel Interpretations von PHP und HTML, nicht notwendigerweise wie eine riesige Menge von Kodierung, obwohl Sie vielleicht auf einen Schreib foreach-Schleife, obwohl, eine for-Schleife. Jede der Schleifen, die wir decken hier ist Freiwild. Und das ist meistens ist es. HANNAH BLUMBERG: Ich würde vorbereitet sein. Auf die gleiche Weise, die Sie baten wir um einen Haufen von C Funktionen auf Quiz 0, Ich würde bereit, das zu tun gleichen in PHP und JavaScript. MARIA Zlatkova: Ja. HANNAH BLUMBERG: Ich würde sagen, a little-- wären wir nicht gehen, dass Sie eine große HTML zu schreiben Seite, nur weil das ist ein bisschen langweilig, aber Sie haben könnten Teile. Das ist völlig fair game. Wie kleine HTML-Seite, ganz fair. ZIELGRUPPE: OK. Wie wäre es in JavaScript, wie gut? HANNAH BLUMBERG: Ja. JavaScript ist Freiwild. MARIA Zlatkova: Ja. Das ist völlig fair game. HANNAH BLUMBERG: Wir bringen wie in wie 10 Minuten. MARIA Zlatkova: SQL, wieder, Strukturierte Abfragesprache. Es ermöglicht uns, im Grunde, um Daten zu verwalten in einem relationalen Datenbankverwaltungs System. Dass gerade im Grunde bedeutet, dass wir irgendwo einige Daten, die wir auf Sie vielleicht speichern Verwendung in einer Website oder in einer anderen Form. Und dann haben wir Anfragen zu bekommen Daten aus unserer Datenbank, oder um Informationen in ihnen stecken. Ein großer Teil der gemeinsamen ones-- UPDATE, INSERT, SELECT und DELETE. Also für UPDATE, das ist die Syntax zum Aktualisieren von Daten in einer Datenbank. Aktualisieren Sie diese Tabelle mit dem Namen Tabelle mit den Worten SET, können wir einige Werte in ganz eingestellt Zeilen, die gleich etwas anderes. So können wir auch einige spezifische angeben Einträge, die wir wollen, um zu ändern und dass sein mit WHERE kann. Und wir können angeben, dass wir wollen nur einige Zeilen zu ändern, wo das Haus zu, wenn wir eine Tabelle der Schüler hatten und alle Schüler hatten Haus, so würden wir nur einige Werte ändern wo ein Haus gleich Currier, beispielsweise. Für INSERT, wir einfügen können bestimmte Werte in eine Tabelle. So in Tabelle einfügen, und dann werden die Werte, und dann in Klammern, die wir angeben welche Werte Sie einfügen möchten. So INSERT INTO Tabelle, col1 und col2 ist der Wert val1 und val2. So fügt dies im Grunde eine neue Zeile in eine Tabelle, die die Werte 1 und 2 In den Spalten 1 und 2. Und dann werden wir gehen über ein kleines Beispiel dafür, wie diese aussieht wie in unserer Datenbank ein wenig. Aber das letzte Abfrage, die ich denke, wir gehen über, SELECT, es erlaubt uns nur um Daten aus einer Tabelle auszuwählen möglicherweise verwenden Sie es danach. Und die Art, wie wir dies tun, ist, dass wir nur speichern sie in einer Variable. Und dann können wir vielleicht wieder verwenden. So SELECT Stern bedeutet, wählen Sie alle. Das ist nur eine Kurzform zum Auswählen von allen. FROM Tabelle WHERE suchen wir für bestimmte Bedingungen also wo Spalte gleich etwas, zum Beispiel. Wenn wir nur wollten wählen Sie alle vom Tisch, dieses gerade wählt alle Spalten und alle Zeilen aus einer Tabelle. Und dann aus Tabelle löschen WHERE col gleich etwas, dieses gerade löscht einige Zeile von unserem Tisch wo wir einige spezifische Bedingungen. In diesem Fall sind die Bedingungen Spalten gleich etwas. Also nur ein kleines Beispiel dafür. Wenn wir diesen Tisch hier und wir legen Sie sie in einer Tabelle, die Werte, dass eine neue Zeile einfügen würde. Und wenn wir Auto-Inkrement, würde dies inkrementieren unserer ID 0-1 bis 2 ist. Wenn wir alle aus ausgewählten Studenten es, nur gibt alle Felder und alle Zeilen. Wo Jahr größer oder gleich 2016 dass, nur zurückkehren würde Hannah und mir. Und dann, wenn wir nur gewählt Jahres-ID und das Jahr von Studenten, wo das Haus ist Cabot House, dass würde wieder zurückkehren Hannah und mir. Dann, wenn wir von den Studenten gelöscht wobei Name gleich Rob, das würde die ganze Zeile zu löschen. Und dann, wenn wir den Name, UPDATE Studenten Satzname gleich zu Daven WHERE Haus gleich Cabot House, das wird gehen die Zeilen und aktualisieren Sie dann den Namen. Und dann noch ein paar SQL-Datentypen sind CHAR, VARCHAR, INT, und schweben. Dies sind Freiwild. Ich würde wieder gehen und stellen Sie sicher, Sie wissen, und haben sie auf Ihrem Spickzettel, was jedes dieser Zeichen wählte verwendet wurde, was Sie sie auf Ihrer psets verwendet, und sicherzustellen, dass Sie vertraut sind und komfortabel mit zu müssen, wählen Sie aus verschiedenen Datentypen in Ihrem pset. Ja. ZIELGRUPPE: Was war das Tabelle gespeichert? Ja, wo ist diese Tabelle gespeichert? MARIA Zlatkova: Nun, gerade jetzt, es ist nicht gespeichert. Wie auch immer, wo ist diese Tabelle gespeichert? Aber es kann in einer SQL-Datenbank gespeichert werden. Publikum: Und wo ist die SQL-Datenbank? In dem Computer, Online- irgendwo, der Server? MARIA Zlatkova: Es kann eine sein, Reihe von verschiedenen Dingen. HANNAH BLUMBERG: Wir haben mit Schnittstelle SQL-Tabellen meistens mit phpMyAdmin. Also haben wir einen Server stellen konnte um sie für uns zu speichern. Wir könnten sie auf unserem eigenen Computer zu speichern. MARIA Zlatkova: Es hängt nur von wie Sie es für sich selbst zu tun. Aber wir wurden Speichern sie, wie Hannah erwähnt, auf phpMyAdmin, die online ist. Und dann die Art und Weise verwenden wir PHP und SQL, es speichern wir in eine variable was wir abgefragt haben. Also, wenn wir alle aus der Geschichte WÄHLEN wo user_id gleich der Session-ID, dass alle Zeilen wählen würde für die spezielle Person, die wird aus dem Verlauf angemeldet Tisch und sortieren sie in Zeilen. Eine coole Sache zu wissen ist, dass Abfragefunktion des CS50 schützt vor SQL-Injection-Tags. Das bedeutet nur, dass es sorgt dafür, der Eingang, der eingegeben wird, korrekt ist und dass die Person, ist die Eingabe der Eingangs versucht nicht, Eingangs einige böswillige Code, um entweder Drop unseren Tischen oder löschen Sie alles, was Innere unserer Datenbank. Ein kurzer Überblick über die Model View Controller-Modell, es ist nur ein Weg für die Organisation und das Denken über Code. Es ist wieder ein Design-Paradigma. Das bedeutet, dass wir can-- und es ist gute Praxis um verschiedene Teile zu trennen unseres Codes und was sie Kontrolle in diese drei Paradigmen. Also aus unserer Sicht ist meistens unsere Vorlagen, unseren Layouts, die Art und Weise dass wir festlegen, wie unser Code sieht. Das ist vor allem CSS-Dateien und die Art, dass wir definiert das Design unserer Code, im Grunde. Unsere Steuerung ist vor allem, was wir haben mit PHP-Dateien zu tun ist. Also noch einmal, die Zusammenarbeit mit der Informationen, die wir haben, und definiert, wie die Informationen werden verwendet, und dann vorbei, dass die Informationen entweder auf die Ansicht oder das Modell. Und das Modell, die Art und Weise, dass wir wurde mit IS hat unsere Datenbank, also wo unsere Informationen gespeichert, so dass es irgendwo hat zu leben, und mit einer der Code, der die Art und Weise betrifft dass wir diese Informationen oder das bekommen Weise, dass wir diese Informationen zu aktualisieren. So in der MVC-Modell, HTTP Anfragen werden an einen Web-Server gesendet. Dann werden die Controller interpretiert die Anforderung von der Benutzer und dann überprüft die Benutzereingabe. Es ist optional, dass wir der Steuerung kommunizieren mit einem Modell, so etwas, wie unserer Datenbank oder eine andere Funktionalität , dass die Relais Informationen. Und dann schließlich die Steuerung leitet Daten auf die Ansichts so dass es sein kann, gemacht und dass sie sichtbar für jede Person, Zugriff auf die Web-Seite. Irgendwelche Fragen? Fantastisch. Also noch einmal, das Modell, seine Funktion wieder ist persistente Speicherung von Informationen, Verwaltung und Organisation von Daten. Und was wir so gesehen haben weit ist der MySQL-Datenbank und alle Datendateien, die verwenden können. Ansicht, Darstellung der Informationen zu der Benutzer das UI oder Benutzeroberfläche. Und das Beispiel ist HTML. Und dann haben wir vielleicht minimal PHP. Also eine für Schleife, über Daten, die ausgedruckt werden ist Teil der Ansicht, wie an die Steuereinrichtung gegenüberliegt. Und dann eine Menge von unseren PHP-Dateien fallen in die Steuerung Kategorie. Er verarbeitet nur Benutzeranforderungen und erhält Informationen aus dem Modell. Sprung in den Document Objektmodell, das nur bezieht sich auf die Art und Weise HTML Dokumente werden organisiert. Und sie sind in einem Baum organisiert Struktur, die eine Hierarchie. Wenn wir also den Zugang zu haben [unverständlich] Darstellung des Dokuments, Wir können mit dem Dokument arbeiten, wie wir Objekte manipulieren, im Grunde. Und diese eine zu machen wenig klarer, wenn haben wir einen großen Teil unserer verschiedene Tags zu antworten In den verschiedenen Routen in unserem Baum. Und dann in diesem Beispiel wir haben die Startdokument Knoten. Wir haben dann unseren HTML-Knoten dass spaltet sich in Kopf und Körper. Kopf hat Titel und dann Titel enthält hallo, Welt. Und unser Körper nur enthält Hallo, Welt als gut. Also Fragen auf einer der Dinge, die wir bisher behandelt? Und wenn nicht, wird Hannah übernimmt mit JavaScript. Fantastisch. HANNAH BLUMBERG: OK, cool. Wenn etwas kommt mit PHP oder HTML, oder jede von dem Zeug Maria bedeckt, wir können immer pausieren. Wir sind besser tun Immer wieder, so genial. Und nur um zurück zu gehen sehr schnell dazu, wenn Sie bei jedem Blick vergangenen Jahres Prüfung dieses kommt either-- hier einige HTML, machen dieses Diagramm. Oder hier ist das Diagramm, stellen einige HTML, also auf jeden Fall, dass die Praxis. Und dann ist man garantiert Frage, die Sie richtig machen können. Cool. Also lassen Sie uns über JavaScript sprechen und wie es ist ein bisschen verschieden von Sprachen wie PHP und C, die beiden Sprachen, die wir vorher gesehen haben. So Nummer eins, es ist schwach typisierte. Das ist, wie PHP, aber im Gegensatz zu C. Es ist eine interpretierte Sprache. Auch das ist wie PHP im Gegensatz zu C. Und das wird, damit wir es use-- funktioniert sehr gut mit Web-Seiten. Das wird es uns ermöglichen, zu manipulieren Inhalt und wie es aussieht, und was es tut. Wir werden ein wenig von Ajax zu sehen. Es ermöglicht uns, zu kommunizieren asynchron mit unterschiedlichen Servern und erhalten Informationen. Und das ist die Sache, die wirklich trennt JavaScript aus PHP und C ist, dass er Client-Seite. Beide PHP und C in der Regel Server-Side. In den meisten Fällen und fast vollständig, was die wir gesehen haben, zumindest in diese Klasse, JavaScript wirkt auf Client-Seite, was bedeutet, dass der Browser tatsächlich verantwortlich für sie auszuführen. Und das bedeutet, dass wir nicht benötigen, um mit dem Server zu interagieren. So ist es bedeutet, es kann viel schneller sein, denn es ist eigentlich nur, es ist Chrome, es ist Safari, Firefox, es ist, was auch immer Sie tatsächlich nutzen laufen sie JavaScript. ZIELGRUPPE: Was bedeutet asynchrone das? HANNAH BLUMBERG: Ach, was ist asynchron das? Gute Frage. Asynchron means-- gut, der Inhalt, in dem Wir verwenden es, OK, wir erstellen eine Web-Seite und müssen wir ein paar Informationen zu erhalten. So mit dem Beispiel des Mashup, einige Informationen, die wir vielleicht ist Artikeltitel. Nun, eine Möglichkeit could-- wir ist, es zu tun, synchron und das bedeutet, ließ uns zu stoppen, gehen Sie den Artikel, erhalten Sie den Artikel zurück, und dann zu machen, aber das wäre wirklich langsam. Das wäre eine schlechte Benutzererfahrung sein weil Sie gerade sitzen Es warten auf etwas zu reagieren. Asynchron bedeutet, dass wir weiter gehen über unser Unternehmen, Rendern der Seite, und wir abzuschicken eine Anfrage Das ist nett, zu gehen, geschieht im Hintergrund. Ich denke, dass wir das Beispiel in verwenden Vortrag des Aufrufs Rob und sprach: hey, können Sie dies nachschlagen für mich und zurück zu mir, im Gegensatz zu nur mir wartet am Telefon. So asynchron bedeutet es passiert im Hintergrund von uns entfernt parallel. Gute Frage. Noch etwas? Groß. Wir werden eine Menge mehr zu springen asynchrone Anforderungen mit Ajax. ZIELGRUPPE: Funktioniert JavaScript-- woher kommt mit Model-View-Controller fallen? HANNAH BLUMBERG: Gute Frage. Woher kommt JavaScript Herbst mit Model-View-Controller? Hm. Ich denke, es kann fall-- so dass wir in der Regel nicht gerne, um es in die squish Paradigma, aber ich denke, ich würde sagen, OK, so dass Sie JavaScript eigentlich los ist, damit uns um Daten zu sammeln, interpretieren Daten tatsächlich tun sinnvolle Dinge mit den Daten. Auf diese Weise ist es sehr Steuerungs-like. Aber es ist auch gehen, um uns zu erlauben, Anzeigen Dinge und Druck Dinge. Auf diese Weise ist es sehr view-like. Ja. Also ist es ein bisschen wie in PHP wo es Art beides sein. Gute Frage. Noch etwas? Also gut, genial. Rechts entlang zu bewegen. Also mal sehen, ein Beispiel wie wir verwenden können, JavaScript in einem unserer Web-Programme. Also werde ich diese betrachten index.html mit einem Bündel von HTML. Und das, was ich möchte, dass Sie konzentrieren sich auf ist dieses Skript-Tag. Und das sagt, OK, ich möchte einige laufen JavaScript und hier ist, wo sie lebt. Er lebt in hello.js. Und sehr viel wie CSS, konnten wir setzen JavaScript im HTML. Warum könnten wir wollen es trennen? Ja. ZIELGRUPPE: Einfacher zu umschreiben? HANNAH BLUMBERG: Ja. Es ist einfacher zu bedienen über verschiedene Web-Seiten. Es hält die Dinge sauberer. Es ist nur gute Praxis. Fantastisch. Gute Antwort. So gut, so das wird unsere index.html sein. Und dann hier unten ist unsere winzig kleine JavaScript-Datei. Und alles was man sagt, ist alert Hallo, Welt. Also, was passiert ist, wenn Diese Seite renders-- Wenn Sie also zu, was eine Website zu gehen Dies ist-- alles, was passieren wird wird, es wird sagen: OK, ich bin werde diesen JavaScript-Code auszuführen. Und das JavaScript-Code sagt nur alert Hallo, Welt. Also werde ich, dieses zu erhalten freundliches kleines Pop-up. Cool? Das ist eine Art, wie unser allererstes JavaScript-Programm, unsere Hallo, Welt. Lassen Sie uns ein wenig mehr über das, was die Syntax JavaScript aussieht. Und gesagt, lassen Sie uns vergleichen Sie es mit C und PHP, die wir bisher gesehen haben. In JavaScript, wir gehen zu müssen, var, den Namen der Variablen, und den tatsächlichen Wert. Und wir haben einen Typ angeben, nur wie in PHP, aber sehr anders als in C. So zum Beispiel, wenn man wollte, um den Wert 50 zu speichern, in C, würden wir zu sagen haben, hey, C, ich möchte eine ganze Zahl, Ich werde es nennen i, und sein Wert ist 50. In PHP ist es ein wenig einfacher. Wir sagen, hey, ich will eine variable rief ich und sein Wert ist 50. Sehr ähnlich, in JavaScript, die wir sagen, hey, ich will eine Variable namens i, sein Wert ist 50. Jede nachfolgende Zeit, die ich benutze i, ich brauche nicht zu var schreiben. Es ist nur, ich von diesem Punkt an. In der gleichen Weise, in C, wobei wenn wir sagen, int i, wir benutzen Sie einfach i. Cool? Gut. Bewegen Sie sich auf Loops, Zum Glück sind diese fast schauen exactly-- Ich denke, sie sind genau das gleiche wie das, was Schleifen gehen, um wie in aussehen so etwas wie C, wo Ihre for-Schleife wird zu drei haben parts-- eine Initialisierung, ein Zustand, und eine Aktualisierung. Eine while-Schleife, sieht es genau das gleiche. Wir geben es nur eine Bedingung. Und ein Do While-Schleife, wieder genau das gleiche. Wir geben es eine Bedingung. Sagen wir, ich wollte laufen over-- Ich wollte etwas tun, das Fünffache. In C, könnten wir schreiben für init i gleich 0 ist. i kleiner als 5 ist, ++ i. Der einzige Unterschied, in JavaScript, anstatt zu sagen, int i gleich 0 ist, wir sagen var i gleich 0 ist. Schön. Das ist der einzige Unterschied. Sie haben Fragen zu einem der das? Ja. ZIELGRUPPE: Also in PHP, ist es das gleiche Sache, mit der Ausnahme, aber wie eine Variable? Oder war das ein var Beispiel? HANNAH BLUMBERG: Ja. Also in PHP, es geht um ein Dollarzeichen sein. So ist es bis $ i gleich gehen 0, $ i kleiner als 5, $ i ++. Gute Frage. Jetzt lassen Sie uns darüber reden Funktionsdeklarationen. In C, wenn wir erklärten ein Funktion, gaben wir ihm einen Namen und wir gaben es einige Parameter. Und zu Beginn schrieben wir den Typ. In JavaScript, alles, was wir tun müssen, ist zu schreiben das Schlüsselwort Funktion, sagt, hey, JavaScript, Ich freue mich über eine Funktion zu definieren. In diesem Fall hat sie Namen Summe. Und es nimmt zwei Argumente x und y. Beachten Sie, dass wir kümmern uns nicht über die Arten von x und y. Und genau wie C, haben wir Dieses Schlüsselwort Rückkehr also können wir etwas tun, wie Rück x und y. Und jetzt, wenn wir diese erste geschrieben habe Funktion, können wir Summe überall verwenden. Und das ist völlig in Ordnung. Eine wirklich coole Sache über JavaScript, die sehr ist im Gegensatz zu C ist, dass Funktionen wie Werte behandelt werden. So können wir so etwas wie hier zu tun wo ich glaube, ich decken diese up-- Ich überdachte die var sum part-- und wir gerade gesagt, Funktion xy gleich x plus y Rückkehr. Das ist, was heißen würde, eine anonyme Funktion. Es ist eine Funktion ohne Namen. Während dies sagt Funktion Summe, blah, blah, blah, dies würde einfach sagen Funktion. Aber jetzt, obwohl ich Diese anonyme Funktion, diese Funktion ist eigentlich nur ein Wert. Wir können es wie ein Wert zu behandeln. So können wir in einer Variablen die gleiche sparen wie wir 50 in einer Variablen speichern könnte. So können wir sagen, OK, ich möchte ein variabel, es heißt Summe, und es ist diese Funktion. Also diese beiden Dinge sind wirklich gehen, um genau dasselbe zu tun, aber die Syntax ist ein wenig anders und eine Art Spaß Note. Ja. Publikum: So anruft könnte ein Funktion, die mit den Worten anonym war, Summe Klammern 2, 5? HANNAH BLUMBERG: Ja. Sie können diese anonymen Anruf Funktion in der gleichen Weise. Sie würden Summe zu tun (2, 5) ;. Das wäre völlig in Ordnung sein. Wenn ich es nicht tun var Summe gleich Funktion, wenn ich einfach gelöscht this-- Ich weiß, dass es auf der Hand, aber so tun, als ich dann gelöscht this-- diese Funktion Art von einfach weg. Man kann nie wieder verwenden, da Sie haben keinen Namen dafür. Es ist schwer, etwas zu finden Sie wissen nicht, was zu nennen. Gute Frage. Ja. ZIELGRUPPE: Können Sie Summe in Referenz anderen Orten mit dem Wert von x plus y? HANNAH BLUMBERG: Können Sie Referenzbetrag in anderen Orten mit dem Wert x plus y? Ich bin mir nicht ganz sicher, was du meinst. Publikum: So Ihre letzten semi-anonym Funktion ist Summe, das ist anonyme Funktion, so Summe Jetzt eine Variable, die Sie can-- HANNAH BLUMBERG: Richtig. So Summe ist die Variable, aber es ist actually-- so Summe ist eine Variable, deren Wert ist die Funktion. So ist es eine Funktion, die Art ist eine seltsame Sache, um Ihren Kopf wickeln um seit wir mit gespielt C und man kann nicht in C tun, Aber jetzt können wir nennen die Summe Ebenso konnten wir hier Summe nennen. ZIELGRUPPE: OK. HANNAH BLUMBERG: Ja. Gute Frage. Ja. Publikum: So nutzen wir nicht die Prototypen in PHP oder JavaScript? HANNAH BLUMBERG: Nein, wir müssen nicht Prototypen zu verwenden, insbesondere in JavaScript. So eine schlechte Praxis, was ich bin gehen zu sagen, dass Sie nicht tun sollten ist, dass Sie nicht haben, um var i = 50 schreiben. Sie könnten einfach angefangen zu i = 50. Und würde nur machen i eine globale Variable. Es ist sehr schlechte Praxis, nie sagen ausdrücklich var i, aber es ist etwas, was Sie tun können. Der Dolmetscher ist nicht werde dich schreien. JavaScript ist ziemlich ähnlich, Du kannst machen was du willst. Oh, das tut mir leid. Es gibt zwei. In der orangefarbenen Hose. Gehen Sie geradeaus. ZIELGRUPPE: Nein, gehen Sie zuerst. ZIELGRUPPE: Nein, ich war nur sagen Ich habe nicht meine Hand. OK. Also, wenn Sie anrufen waren , dass erste Mal, nun zusammenfassen, Wir nennen es die gleiche Art und Weise, x, y, wie jedes einzelne Mal? HANNAH BLUMBERG: Ja. So dass diese beiden wesentlichen das gleiche tun. Publikum: Und was ist der Vorteil, der mit der einen oder anderen? HANNAH BLUMBERG: Kein Vorteil der Verwendung der einen oder der anderen Seite. Ich wollte dir nur zeigen zwei verschiedene Teile der Syntax. Eine Menge Zeit, wo anonyme Funktionen zu tun haben einen Zweck ist, wenn das Argument in eine andere Funktion sollte eine Funktion sein. Und wir werden sehen, dass in nur eine Sekunde mit Ajax. Also, wenn das hat keinen Sinn, speichern sie in der Rückseite des Kopfes. Das ist, wo ein anonymer Funktion kann nützlich sein, denn es ist nicht wirklich wert ihm einen Namen, da wir gerade sind gehen, um es wieder zu verwenden. Ja. Publikum: Wenn x und y Wechsel später an wird Fassend ändern, wie gut? HANNAH BLUMBERG: Wenn x und y Wechsel Später werden Fassend ändern, wie gut? So ist dies tatsächlich I denken, etwas, das ist, wieder, es fühlt sich einfach sehr unterschiedlich von C. Dies ist kein Wert. Es ist nicht 5. Es ist nur die Funktion selbst. So, sobald Sie es Parameter zu geben, dann werden Sie tatsächlich einen Wert berechnen. MARIA Zlatkova: Und dann können Sie die Funktion aufrufen, und es verwenden, um einen Wert zu erhalten. HANNAH BLUMBERG: Richtig. Genau. Ja. ZIELGRUPPE: Also, wenn Sie nur speichern sie in der Variablen, wie var x gleich Summe zweier values-- HANNAH BLUMBERG: Ja. So könnten Sie einfach var sum tun ist gleich Summe der beiden Werte. Ja. Noch mehr Fragen? Ja. ZIELGRUPPE: Aber würde, dass Verwechseln Summe und die Summe? Wie, wenn Sie Ihren variablen Summe nennen, würden Sie die Funktion Summe anruft? HANNAH BLUMBERG: Mm. Mm. Wenn Sie etwas haben wie, Summe gleich Summe 2, 5? ZIELGRUPPE: Ja. HANNAH BLUMBERG: Ich glaube, dass würde den Wert der Summe überschreibt. Also ein weiterer interessanter Sache über JavaScript ist, dass eine einzelne Variable annehmen kann auf eine Reihe von verschiedenen Arten. Schlechte Praxis. Sie sollten sich nicht etwas zu tun wie das, was Sie gerade gesagt haben. Aber in C, wenn ich gesetzt gleich einer ganzen Zahl, wir wissen, dass es nie gehen, um eine Zeichenfolge zu werden. Dies ist nicht in JavaScript der Fall. Ja, gute Frage. Noch etwas? Gut. Tun alles zur rechten Zeit. Halten werde. Gut. Wenn wir auf ein Array in JavaScript, hier ist ein kurzes Beispiel aus einem Array von Zeichenfolgen. Und Arrays dynamisch wachsen. Sie haben nicht ein feste Größe auf die gleiche Weise dass sie in C tun Wir können auf die Elemente nur mit den eckigen Klammern. Das sieht viel wie PHP und eine Menge wie C, wo wir uns in diesem Fall sagen, wenn ich wollte das Wort JavaScript, würde ich Sie arr eckigen Klammern mit einer 0, 1, 2. Und dann, wenn Sie in C erinnere mich, als wir gesucht, um die Länge eines Arrays zu erhalten, es war wirklich ärgerlich. Aber in JavaScript, super einfach. Alles was wir tun, .length. Gibt es die Längen. Das ist es. ZIELGRUPPE: Das ist einfach. HANNAH BLUMBERG: Ja, das macht Ihr Leben viel einfacher. OK, object-- nicht da. Objekte in JavaScript Gefühl eine Menge, wie Strukturen in C und assoziative Arrays in PHP. Also, was wir gesehen haben, ein viel ist JSON, die steht für JavaScript Object Notation. Und es ist im Grunde ein Weg der Strukturierung unserer Daten. Also mal sehen, ein Beispiel, wahrscheinlich die einfachste. Also hier ist ein Beispiel für ein Objekt dass speichert die Klasse, CS50. Und wenn ich sage Klasse, ich meine natürlich, nicht like-- ja, den Kurs, CS50. Und Sie, denn alles, was in dem Objekt wird sich enthalten sein in geschweiften Klammern. Und wir beginnen, Feldnamen assoziieren Tasten oder mit den verschiedenen Werten. So können Sie beginnen zu sehen, wie diese Art von fühlt sich an wie ein assoziatives Array in PHP. Also werden wir, um das Feld zu verknüpfen oder der Schlüssel Namen, natürlich mit der Zeichenfolge, CS50. Wir werden einen Lehrer zu haben. Wir werden TFs haben. Wir werden Anzahl der psets haben und wir werden aufgezeichnet haben. Und eine coole Sache zu beachten ist, alle diese Dinge haben verschiedene Arten, und das ist völlig in Ordnung. Es ist in Ordnung für ein Objekt in der Tat, ist es wahrscheinlich für ein Objekt erwartet um eine Kombination von Saiten und Zahlen und Boolesche Werte und Arrays und was Sie sonst noch wollen in Ihrem Objekt haben. Und beachten Sie, dass diese sein werden, die Namen oder die Tasten, und dann werden wir nur stellen Sie es gleich mit einem kleinen Doppelpunkt. Publikum: Was genau macht JSON das? HANNAH BLUMBERG: Was genau bedeutet JSON das? JSON steht gerade für JavaScript Object Notation. Es ist nur ein Weg, der Formatierung. Ja. Es ist ein Weg der Formatierung unsere Daten. In C ist es Strukturen. In PHP ist es assoziative Arrays. In JavaScript gibt es Objekte. Publikum: So CS50 ist ein Objekt? HANNAH BLUMBERG: CS50 ist das Objekt in diesem Fall. Nun, wie wir tatsächlich Zugang diese Felder oder ändern Sie die Felder. Angenommen, wir beschlossen, dass Sie wollte einen weniger pset in diesem Semester. Statt neun, wir sind gerade dabei, acht haben. Wie würden wir das ändern? Oh, falsche Weg. Es gibt zwei Möglichkeiten, dass wir das tun. Nummer eins ist mit dem Punkt Notation und Nummer zwei ist mit der eckigen Klammern. So, zum Beispiel, wenn I wollte zu ändern oder Zugang das Feld psets in unserer CS50-Objekt, was ich tun würde, ist CS50.psets, so dass der Name des Objekts Punkt der Name des Feldes oder des Schlüssels. Sehr ähnlich, es ist genau entspricht CS50 tun, und dann in eckigen Klammern, psets. Cool? Ja. Publikum: So ist JSON technisch JavaScript noch, auch wenn in den psets wir trennen Sie es aus [unverständlich]? HANNAH BLUMBERG: Sicher. Die Frage ist also, sind JavaScript und JSON Äquivalent? So JSON-Notation ist, im Grunde die Art und Weise, die wir schreiben, ein Objekt von JavaScript. So sind sie nicht genau das gleiche. Ich würde sagen, JavaScript, gibt sind Objekte in JavaScript. JSON nimmt diese Objekte und druckt sie und zeigt sie oder speichert sie auf eine nette Art. So JSON ist keine Programmiersprache Sprache die Art und Weise, dass Javascript. Es ist nur die Notation für unsere Objekte in JavaScript. Ja. Publikum: Was genau [Unverständlich] abzuschließen? HANNAH BLUMBERG: Sicher. So dies tatsächlich tut nichts. Dies ist nur ein Weg, um zuzugreifen. Also lassen Sie uns sagen, wir ändern wollten die Zahl der Problemstellungen von neun auf acht. Was wir tun, ist etwas zu tun wie CS50.psets = 8 ;. Ja, gute Frage. Dies ist nur, um Sie Syntax zu zeigen. Nicht wirklich etwas Sinnvolles zu tun. Irgendwelche Fragen? Rechts entlang zu bewegen. Also lassen Sie uns ein kurzes Beispiel, wie JavaScript funktioniert, weil ich Ihnen sagte, es tut all diese coolen Sachen und ermöglicht es uns, Web-Seiten zu ändern. Lassen Sie uns in Aktion tatsächlich sehen. So nehmen beispielsweise diese HTML-Datei. Und das, was ich möchte, dass Sie konzentrieren sich auf ist dieser besondere Tag, der ein Knopf ist, mit id search_button. Es ist nur auf der Seite. So, jetzt wollen wir mal sehen, was können wir tatsächlich tun. Nun, angenommen, wenn Sie klicken Sie auf diese Schaltfläche, wir eine alert-- machen wollen Sie geklickt haben, auf die Schaltfläche. Mal sehen, wie wir das tun können. So window.onload-- dies nicht etwas, dass Sie in der Klasse gesehen habe, also nicht brauchen, um es für das Quiz zu kennen. Aber dies im Grunde sagt, OK, Anruf diese Funktion, wenn das Fenster Lasten. Also das ist nur eine Art Setup-Code. Nicht so viel Sorgen machen. Was ich möchte, dass Sie konzentrieren sich auf die in hier. Wir sagen var search gleich document.getElementById search_button. So wie Sie sich vorstellen können, Was das bedeutet ist, heißt es, OK, gehen Sie finden das Element mit ID search_button. Und jetzt haben wir, dass eigentliche Element, und ich bin gehen, um es in einem Geschäft variable search. Und jetzt können wir tatsächlich nutzen dieses Element und ändern Sie es, oder Zugriff auf ihre Werte, Sachen wie diese. Wir können tatsächlich zu starten greifen in die Web-Seite. Also hier sagen, dass ich, OK, jetzt, wo ich daß Schaltfläche, wenn darauf geklickt wird, nennen diese anonyme Funktion. Also das ist, wo anonyme Funktionen nützlich werden. Und was bedeutet die Funktion zu tun? Nun, es ist nur nennt dies Alarm-Funktion, und es sagt, Sie klickte auf die Schaltfläche Suchen. Also, was passiert, wenn ich gehen, um überall dort, wo Diese HTML lebt und ich auf die Schaltfläche, Ich werde ein wenig Phantasie Benachrichtigung erhalten die sagt, Sie auf die Schaltfläche geklickt wird. Also die Dinge zu konzentrieren, hier-- document.getElementById bekommt eine bestimmte HTML Element mit der gegebenen ID. Und jetzt setzen wir können was passieren soll, wenn dass bestimmtes Element angeklickt wird. Publikum: Wir müssen alles in zu setzen? HANNAH BLUMBERG: Es tut uns leid? Publikum: Müssen wir körperlich codieren all das? HANNAH BLUMBERG: Müssen wir körperlich codieren all das? Ja. Ist nicht diese Art von lästigen? Dies ist ein viel Code. Publikum: Sie könnten etwas zu importieren. HANNAH BLUMBERG: Richtig. Wir könnten etwas zu verwenden. Und in particular-- Oh, es ist sagen mir, ich muss Bereich unterrichten. Insbesondere lassen die Bibliothek jQuery, denn das war wirklich lang und wirklich ärgerlich und ich möchte in der Lage, es zu vereinfachen und machen es kürzer und einfacher zu schreiben. So jQuery ist eine JavaScript-Bibliothek. So JavaScript-Programmierung Sprache; jQuery ist eine Bibliothek. Und es macht eine Menge Dinge einfacher. Es macht Ändern und gehen über ein HTML-Dokument, viel einfacher. Es macht Handling Veranstaltungen einfacher. Es macht Animation einfacher und es macht Ajax einfacher. Lassen Sie uns also in zwei von springen diese Dinge jetzt. Entschuldigen Sie. Bevor wir das tun, einige grundlegende Syntax. Dies ist, was die meisten Anrufe die jQuery-Bibliothek aussehen. Wir verwenden diese Dollar sign-- keine Verbindung Zeichen PHP, nur inconvenient-- den Namen ein Wahl, Punkt, und dann eine Aktion. Lassen Sie uns also etwas zu sehen konkrete Beispiele dafür. Also das ist eigentlich die gleichen Code aus dem Ereignis Rutsche. Also das lange, hässliche Ding wird dies viel schöner, kleiner Sache. So wollen wir versuchen, diese zu brechen. Dieses sagt, OK, jQuery-- diese Dollar- sign-- jQuery, finden Sie mich das Fenster. Das ist also der Wahlschalter. Wenn es lädt, rufen Sie diese Funktion. Also das ist alles, was im Inneren. OK. So weit, ist es gut? Gut. Nun, jQuery, finden Sie mich das Sache mit ID search_button. Und was es angeklickt wird, rufen Sie diese Funktion. Und dann diese Funktion genau die gleiche. Just do ein wenig wachsam, Sie klickte auf die Schaltfläche Suchen. Also es ist wirklich schön. Es ist wirklich kondensiert und vereinfacht unseren Code. Wie habe ich wissen, dass es ist ID search_button und nicht wie Klasse search_button? ZIELGRUPPE: Hashtag? HANNAH BLUMBERG: Ja. Dieser Hash-Symbol, es ist nur wie CSS. Also denken Sie daran, mit CSS, wenn wir wollte etwas von ID auszuwählen, wir haben das Pfund-Zeichen. Und wenn wir die Option wollte etwas nach Klasse, verwenden wir den Punkt. Groß. Sinn ergeben? So jQuery ist anzunehmen, nur unser Leben einfacher machen. Ja. ZIELGRUPPE: Also ich bin ein wenig verwirrt, wie , wie die anonyme Funktion arbeitet. Wollen Sie dieses anonymouse nennen Funktion, funktionieren? Wie heißt es? HANNAH BLUMBERG: Sicher. So Funktion ist nur ein Schlüsselwort, sagt, ich bin zu einer Funktion zu definieren. ZIELGRUPPE: Oh, OK. HANNAH BLUMBERG: OK? Und dann haben wir es passieren, wie ein Argument zu-- nehmen lassen diese innere one-- auf die Klick-Funktion. Also ja, so dass die Funktion, Diese anonyme Funktion, wird eine tatsächliche Argument. Also denken Sie daran in JavaScript, die wir können Funktionen als Werte zu behandeln. ZIELGRUPPE: Oh, OK. HANNAH BLUMBERG: Ja. Ich mag, dass "Oh." Nett. Andere Fragen? Zeit? MARIA Zlatkova: Good. Gut. HANNAH BLUMBERG: Awesome. Einige schnelle nützliche jQuery. Ich werde nicht gehen durch alle diese. Diese Folien werden up-online ein wenig später, so dass Sie überprüfen können, es ein wenig später. Aber im Grunde, die allgemeine Muster hält, wo wir sagen, OK, hey, jQuery, hier ist mein Wahlschalter und dann ist hier eine Aktion. Und man Dinge wie den Zugang der tun kann, Wert einer Form, zugreifen etwas HTML, Steuer was passiert, wenn der Benutzer ein Formular, solche Dinge. Ja. Publikum: So in der Prüfung, wir gehen zu müssen, eine ganze Menge von weiß die jQuery-Dokumentation. Also da wir copy / paste die jQuery Dokumentation in unseren Spickzettel, wo ist die Grenze gezogen? Wie zB wie viele brauchen wir das wissen? HANNAH BLUMBERG: Gute Frage. Die Frage ist im Wesentlichen, dass Sie gegeben können die jQuery-Dokumentation nicht zugreifen während des Tests, wie viel Sie kennt? Wir würden nicht erwarten, dass Sie kommen, mit einigen Zufallsfunktion dass wir Sie Google erwartet. Dinge, die Freiwild sind, würde ich sagen, nur irgendwie die allgemeine Syntax, in der Lage, durch ID auswählen und von class-- so genau wie CSS. Und dann die eigentlichen Funktionen them, werden wir wahrscheinlich sagen. Ja. Publikum: So, wenn Sie wählen Sie nach Klasse würde dot bedeuten. HANNAH BLUMBERG: Ja, genau. Gut. Wenn Sie nach Klasse wählen, wird es anstelle des Nummernzeichen dot werden. Ja. ZIELGRUPPE: Würden Sie gehen Sie über den Unterschied zwischen der Auswahl von ID und Klasse? HANNAH BLUMBERG: Sicher. Der Unterschied zwischen Auswahl ID und Auswahl von Klasse. So wie Maria, sagte ein etwas früher, gibt kann nur ein HTML-Element sein, mit einer bestimmten ID, während Klasse es erlaubt uns, Gruppe, ein Haufen der verschiedenen Elemente, so Dinge, die miteinander verbunden sind, aber nicht genau gleich sind. Heißt das, die Frage zu beantworten? Fantastisch. Ja. Publikum: Was ist, wenn Sie über mehrere Dinge, die in der gleichen Klasse sind? HANNAH BLUMBERG: Was passiert wenn Sie mehrere Dinge haben, dass sind die gleichen Klasse? So, zum Beispiel, wenn wir nur mit reinem JavaScript, wir würden etwas tun document.getElementsByClass. Und dann, was das tatsächlich tut ist gibt ein Array von Elementen. Und man muss entweder laufen sie oder finden Sie, welches wünschen Sie. Es wird nicht zu geben, Sie ein einzelnes Element. Es wird Ihnen ein Array von Elementen. Gute Frage. Noch etwas? Fantastisch. Ich denke also, wenn Sie mit vertraut sind beliebige jQuery Sie sah in der pset, Sie sollten gut zu gehen. Frage? Ach nein. Ich muss wirklich zu lehren. Entspannen Sie sich. Es wird gut sein. Ich komme dorthin. Lassen Sie uns über Ajax sprechen. So Ajax wird sich a-- durchaus sein, lassen Sie uns mit, wofür es steht zu starten. Es ist ein Akronym. Es steht für Asynchronous JavaScript and XML. Und XML ist im Grunde sein wird [Unverständlich] mit einer Art unserer Daten. Aber wir haben nicht wirklich benutzt XML. Stattdessen haben wir einfach verwenden JSON. Also im Grunde ist es ein paar data-- asynchrone, JavaScript, und Daten, in diesem Fall JSON. Und unser Ziel, wie schon erwähnt ein bisschen früher, ist in der Lage, eine zu machen Wunsch haben, dass der Antrag zu tun seine Sache in der Hintergrund, aber weiterhin tun, was wir beabsichtigen, zu tun. Und dann, wenn diese Informationen bereit, dann werden wir es übernehmen. Also mal sehen, was diese tatsächlich aussieht. Und das sollten Sie sein, ein wenig vertraut von pset8, die, die Sie gerade eingeschaltet. Also hier ist ein gültiger jQuery Funktion, dass wir vielleicht wollen about-- dieser Dollarzeichen kennen. Sagt, dass es so jQuery-Funktion, .getJSON. Und was diese Funktion tut, ist es nimmt eine URL und einige parameters-- also denke ich, im Fall von pset8, es war wie, Die URL war articles.php und die Parameter war go = eine Postleitzahl. Und er sagt, OK, machen Sie eine Anfrage an diese URL mit den angegebenen Parametern. Und das passiert einfach. Wenn es fertig ist, ist es entweder gehen, um erfolgreich abgeschlossen oder es wird scheitern. Das ist also das Äquivalent von Anruf Rob und ihn bitten, etwas zu tun. Und dann, wenn er zurück ruft, er ist entweder sagen ich fertig bin, oder ich gescheitert. Also in dem Fall, wo du bist getan, Sie sagen, OK, ich bin fertig. Und dann haben Sie diese Funktion aufrufen. In diesem Fall, es geht um eine sein Funktion, die einige Informationen übernimmt. Der, den wir normalerweise beruecksichtigen sind Daten, die Daten, die wir tatsächlich zurückgegeben wurden als Ergebnis des Aufrufs .getJSON. Und Sie können etwas mit ihm zu tun. Also im Falle pset8, wir angezeigt es als eine Liste. Ausfallen wird eine Funktion sein dass heißt, wenn die Anforderung fehlschlägt aus welchem ​​Grund auch immer. Und im Fall von pset8, wir console.log es einfach. Haben Sie Fragen dazu? Ja. ZIELGRUPPE: Können wir nur Funktions Theta statt der Funktion textStatus, jqHXR. HANNAH BLUMBERG: Sicher. Also ja, ich denke, im PSET, wir gerade gesehen haben Funktionsdaten. So ist es nur the-- ja, OK. Das ist, was wir in der pset sah. Das ist völlig in Ordnung. Dies sind nur, wenn man wollte mehr Informationen herausziehen, das sind die Dinge, die Sie .getJSON bekommen konnte. Gute Frage. Noch etwas? Ja. Publikum: So .getJSON ist Ajax? HANNAH BLUMBERG: OK. Das ist also die Art der schwierige Teil. Es ist ein jQuery-Funktion, die ermöglicht Sie asynchrone Aufrufe zu tun. Und die asynchrone Aufrufe, das ist, was wir zu beziehen ist, wie Ajax. Ja. Das dauerte eine wirklich lange Zeit, auseinander ziehen, als ich noch Student war. ZIELGRUPPE: Können Sie noch einmal sagen, dass? HANNAH BLUMBERG: Ja. Kann ich sagen, dass wieder? Diese .getJSON Funktion, es ist ein jQuery-Funktion. Und es geht um Sie ein asynchroner Aufruf. Und diese asynchrone Aufrufe, haben wir worden, um diejenigen, die als Ajax Bezug. Noch mehr Fragen? Wir haben nur ein paar Minuten. Und Marias zu gehen wrap up mit Sicherheits und dann werden wir gerade über durchgeführt werden. MARIA Zlatkova: Awesome, OK. Also das ist-- nehmen Sie nur ein paar Sekunden, um über so aussehen. Und das ist nicht etwas, was wirklich toll. Und kann mir jemand sagen, warum? Was ist los in foo und können konnten möglicherweise in etwas Schlimmes führen, und was das heißt? Ja. Publikum: Wenn das Argument, das ist bestanden in mehr als 12 Zeichen, es könnte überlaufen. MARIA Zlatkova: Richtig. Perfekt. Was heißt es? Sie erwähnten es einfach. ZIELGRUPPE: Pufferüberlauf. MARIA Zlatkova: Yup, Pufferüberlauf. Also das ist etwas, das wir zu beziehen, wie Pufferüberlauf. Und wir sehen, dass im Inneren des foo, wir unser Puffer, c definiert haben, mit einer Größe von 12. Im wichtigsten, wir tun, ist jedoch nicht Check-in irgendeiner Weise ob die argv1-- sodass war das zweite Argument. Wir wissen nicht, ob der Größe ist angemessen. Also, wenn wir hatten ein besonders böswillige Benutzer die in irgendeiner Argument, das war gelegt länger als 12, und dann potentiell jenseits der Grenzen, dass Argument, hatte einige ausführbaren Code , dass er versuchte, etwas Schlechtes zu tun damit; dann ist dies, was passieren würde, würde die Rückkehr zu überschreiben Adresse des foo-Funktion, wodurch die Funktion, wenn Rückkehr in diesen Code ausführen. Und dann schlechte Dinge passieren könnte. Macht das Sinn für jedermann? Und wie können wir zum Schutz gegen das? Irgendwelche Vorschläge? Grundsätzlich Innenseite potenziell foo, how können wir überprüfen, ob dass diese nicht passieren kann? Publikum: Wenn die Größe 12 überschritten, Sie zusätzlichen Speicher zuweisen? MARIA Zlatkova: Vorschlag ist, zuzuweisen zusätzlicher Speicher für die Größe überschritten. Eigentlich haben wir etwas tun können, ein viel einfacher als das auch. Wir können einfach die Länge der Zeichenfolge bekommen des Arguments, die eingegeben wird, überprüfen Sie, ob, dass weniger oder gleich 12-- das ist, was wir wollen zu sein, weil wir nicht wollen, es um die Grenzen unserer Puffer überschreiten. Und dann, wenn dies nicht der Fall, werden wir kann mit dem Argument zu arbeiten. Und dann, wenn es funktioniert, haben wir eigentlich wollen potentiell an der Benutzer yello. Aber das ist, wie wir das tun würde. Ja. ZIELGRUPPE: Können Sie erklären memcpy ganz schnell? MARIA Zlatkova: Oh, sorry. Ja. Memcpy nimmt, was auch immer ist-- sorry, OK. Memcpy nimmt, was auch immer in bar, was auch immer passiert auf foo als Befehlszeilenargument. Also, es wird argv1 zu nehmen. Argv1 wird bar hier genannt. Also es geht um bar zu nehmen und es geht um sie in c kopieren. ZIELGRUPPE: OK. MARIA Zlatkova: Und es ist zu gehen copy-- das dritte Argument bezieht sich nur um wie viel es wird in c kopieren. ZIELGRUPPE: Ah. Also das hier ist das Kopieren all das dann. MARIA Zlatkova: Ja, es ist das Kopieren von alles. Ja. Zunächst stellen wir sicher, die Bar ist nicht gleich null, denn es ist ein Zeiger. Dann erhalten wir die Stringlänge der Bar. Wir stellen sicher, dass es weniger als oder gleich 12 ist. Und dann, weil wir sorgte dafür, wir können tatsächlich memcpy und achten Sie darauf, dass das ist OK. Irgendwelche Fragen? Groß. Ich habe zwei Fragen richtig oder falsch ist. Kann mir jemand sagen sofort, wenn diese wahr oder falsch? Ja, es ist falsch. Genau. Beide sind falsch. Also mit einem einzigen Passwort ist nie wirklich gute Idee denn wenn jemand weiß, Ihr Passwort vergessen, können sie nur Zugriff auf alle Ihre anderen Konten. Und dann icons nichts tun um Sicherheit zu gewährleisten. Wir sollten in der Regel für HTTPS suchen anstelle von HTTP und der URL. Und einige andere Arten von Angriffe, die wir bereits erwähnt haben, dass David hat in den genannten Vorlesung, SQL-Injection-Angriffe. Wir haben bereits gesehen, dass, wenn wir die don't-- CS50-Abfrage-Funktion stellt sicher, dass SQL Injection-Angriffe können nicht auftreten. Aber wenn wir nicht mit CS50, Zitat, Zitat Ende "in Abfrage" wir müssen sicherstellen, dass die Benutzereingabe ist nicht wirklich einige SQL Abfrage, die alle dazu führen wird unsere Tische fallen gelassen werden oder etwas Schlimmes passieren, mit unserer Datenbank. Session-Hijacking ist Eine andere Art von Angriff Das geschieht, wenn eine schlechte Person verwendet Session irgend Opfer ID, um die Login-Daten zuzugreifen. Also ein sehr einfaches Beispiel dafür ist wie wenn wir einen öffentlichen Computer, dann meldet sich der schlechte Person und dann sie haben Cookies, die gespeichert werden. Und Cookies nicht zur Sitzung zu ändern. Dann haben wir das Opfer gehen in und dann in der Webseite anzumelden. Die Cookies nicht ändern für eine bestimmte Sitzung. Und dann das Opfer meldet sich die Website und dann lässt. Und dann die Person, die zurückgeht kann dann immer noch ihre Session-ID verwenden ihre Informationen zuzugreifen. Also das ist ein Beispiel dafür, wie das passieren könnte. Und dann würde ich nicht zu viel Sorgen zu spezifischen Code oder irgendetwas so, dass dies dazu führen könnte, aber mit einer Art von Ahnung, was die Variablen hier einzubringen. Und dann die Manipulation Kopf Daten ist eine andere Art des Angriffs das hat David hat darüber gesprochen. Und es einfach bezieht sich auf was passieren kann, wenn die Antwort, die HTTP Antwort innerhalb unserer Kopf ist nicht ausreichend bereinigt. Und mit einer der fields-- B. wenn jemand überschreibt eine der Header- Werte, etwas mehr als enthalten was sie contain-- sollte und tatsächlich enthalten, zum Beispiel ein 200 OK Statuscode, dann könnte möglicherweise gefährliche tun Dinge, wenn sie sollen nicht. Aber ich würde nicht zu kümmern viel über die spezifischen Code dass könnte dies dazu führen, gerade Art von Verständnis High-Level-Sachen. Ich denke, das ist alles, dass wir zu decken. Erstaunlich. Wer Fragen zu irgendwelchen haben der Dinge, die wir abgedeckt? Ja. Publikum: So eine Art von weitere logistische Frage. Wird der Inhalt im Wesentlichen fokussiert auf die Dinge nach dem Quiz 1? MARIA Zlatkova: So Frage ist, ist der Gehalt vor allem auf die Dinge nach dem Quiz 1 fokussiert? So liegt der Fokus auf nach Quiz 1, ausgenommen dass wir uns auf die Dinge konzentrieren, in pset5 und eine Menge der Datenstrukturen dass wir bedeckt. Und wir können nicht sagen, dass wir kann alles vor zu ignorieren dass, weil es baut auf sie als gut. So konzentrieren sich auf das, zzgl pset5 Material wie auch verkettete Listen, Stacks, Warteschlangen, und alles, dass Hannah ging. HANNAH BLUMBERG: Richtig. Ja, über die ganze C Sachen gingen wir ganz am sehr schnell ab. Aber stellen Sie sicher, dass zu überprüfen. Gehen Sie zurück und beobachten Sie das Quiz 0 Bewertung. Ein paar weitere logistische Noten, gerade, während wir Ihre Aufmerksamkeit. Wir werden die Bürozeiten haben sowohl am Montag und Dienstag Nacht. Sie werden in MD 119 sein. Das ist alles auf der Website, so dass wenn Sie nicht hört, keine Sorgen. MARIA Zlatkova: 8.30 bis 11.00 Uhr. HANNAH BLUMBERG: Ja, von 8.30 bis 11.00 Uhr. Wir werden da sein. Wir werden da sein, um Fragen zu beantworten. Es ist ziemlich Chill und Spaß. Ihr könnt Fragen stellen dass Sie am Quiz 1. Und Quiz-1 auf Mittwoch, so viel Glück. Wenn Sie irgendwelche Fragen haben, vielleicht kommen Sprechen Sie mit uns hier oben one-on-one. Cool. Vielen Dank. MARIA Zlatkova: Vielen Dank, Jungs. ZIELGRUPPE: Yay. [BEIFALL]