>> 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]