>> [Musikwiedergabe]
HANNAH: Hallo, alle zusammen.
Danke Jungs so viel für Coming Out in der widerlichen Wetter für einen Quiz
überprüfen Sitzung.
Wie ihr wisst, Quiz man ist an diesem Mittwoch.
So werden wir zu gehen, durch ein Bündel von Themen.
DAVIN: Hey, kann ich sagen, etwas ganz schnell?
HANNAH: Ja, Davins gehen etwas ganz schnell sagen.
DAVIN: Es tut uns leid.
Nur sehr schnell, wenn Sie Fragen haben zum Quiz, können Sie online gehen.
Zum 2014-Quiz ein, zum Quiz.
Es hat sich herumgesprochen Logistik wohin sie gehen, als zu gehen.
Wenn Sie gleichzeitig eingeschrieben sind wir werde ein Make-up-Quiz um 5:30 haben.
Oder wenn du mich gesandt hast ein Problem, Sie haben eine andere Frage.
Aber 05.30 ist die Make-up- Zeit am Mittwoch.
Wenn Sie Fragen haben, Wenn Sie allgemeine Fragen,
Online hat die gesamte Logistik.
Es gibt also prüfen Sie zuerst.
>> HANNAH: Awesome.
Also hier ist die große Liste von Themen dass wir gehen, um durch zu gehen heute.
Ich werde alle der C decken Sachen, die die erste Spalte ist.
So ist die C Sachen, die wir Nach Quiz Null fallen.
Beginnend mit einer verknüpften Liste, was beinhaltet Zeiger.
>> In Ordnung, so sahen wir in der letzten Überprüfung Sitzung
so werde ich zu durchlaufen Das ist ein wenig schneller.
Nur die Hand heben, wenn Sie mich wollen verlangsamen oder anzusprechen etwas weiter.
Aber wir verkettete Listen, weil verwenden wir in C begann mit Arrays.
Und Arrays sind groß, aber die Problem ist sie eine feste Größe haben.
Verkettete Listen können wir erstellen dynamisch dimensioniert Datenstrukturen.
>> Und wir haben unsere Grundoperationen, einfügen, löschen und suchen.
Und wir Einsatz tun können schlimmsten Fall konstante Zeit
wenn wir sie nur ganz am Anfang.
Löschung und Abfrage, am schlimmsten Bei großen oh n Zeit.
Also noch einmal, nur um Flip durch diese Bilder,
Ich weiß, dass wir diese letzte Mal gesehen, aber wir wollen den Überblick über unsere verknüpften Liste zu halten
durch die Verfolgung der die Leiter unserer verketteten Liste.
Denn wir wissen: jeder unserer Knoten
ist gerade dabei, auf den Punkt nächste Knoten in unserem verketteten Liste.
>> Also das ist, wie wir im Auge behalten.
Obwohl diese nicht kontinuierliches Stück Speicher,
können wir sie durch nur finden im Anschluss an die verschiedenen Pfeile.
Hier ist unsere Struktur für eine verkettete Liste Knoten.
Wir sahen diese letzten Mal.
Wir haben unsere struct Knoten.
Und es hat zwei Eigenschaften.
Die Nummer eins, die tatsächliche Wert wollen wir speichern.
In diesem Fall ist es eine ganze Zahl ist.
Es könnte ein String sein, könnte es sein ein Zeichen, was auch immer Sie wollen.
Und dann müssen wir im Auge behalten der nächste Knoten im verketteten Liste.
So, das wird eine sein Zeiger auf den nächsten Knoten.
Wenn Sie gerade tun Suche, wie ich schon sagte,
müssten Sie Ihre Pfeile nach unten folgen.
Einsetz-, würden Sie Kurs zu halten von wo der Rest der Liste ist.
Und Sie, um den Kopf umgeleitet werden sollen um unsere neue Element, Punkt,
in diesem Fall ist einer, und dann wird man zeigen
an den Rest der verketteten Liste.
Also noch einmal, ich weiß, das ist ein wenig Bit einer Wiederholung von Quiz Null.
Also müssen wir sehr vorsichtig sein, über die Reihenfolge, in der man
tun diese pointings so dass wir nicht Überblick verlieren der Rückseite der Liste.
OK, alle Fragen mit nur einfach verkettete Listen?
Awesome, OK, cool.
>> So, jetzt werden wir auf etwas gehen nur etwas komplizierter,
doppelt verkettete Listen.
So dass zusätzlich zu halten Spur des nächsten Knotens,
wir wollen auch den Überblick zu behalten des vorherigen Knoten.
Und das können wir, wenn wir an einem gewissen Punkt in unserem verknüpften Liste,
nicht nur nach vorne gehen, aber auch rückwärts durchlaufen.
Denn wie wir in sahen eine einfach verkettete Liste,
wenn wir zu einem bestimmten Knoten, und ganz plötzlich, haben wir beschlossen,
wirklich, ich will gehen der Knoten direkt vor mir,
müssten Sie alle gehen der Weg zurück an die Spitze
und durch durchlaufen, bis Sie gefunden der Knoten Sie gesucht haben.
>> Also das macht die Dinge etwas leichter als wir sind
versucht, durchlaufen durch unsere verketteten Liste.
Aber es erfordert, dass wir den Überblick über einen halten mehr Zeiger, so dass eine weitere Knoten Sterne.
In Ordnung, so da kommt der lustige Teil.
Wir werden üben Umsetzung für doppelt verkettete Listen zu entfernen.
Also das ist etwas, das ist absolut faires Spiel für das Quiz.
Es zeigte sich auf letzten Quiz.
Also auf jeden Fall vorbereitet sein ein wenig in C Code
Vergessen Sie nicht, dass alle dieser Spaß PHP und JavaScript,
wir haben immer noch zu erinnern, C. tun also auffrischen, dass
wenn Sie das Gefühl rostig.
>> Also gut, mal sehen, ob wir dies tun können.
OK, cool.
Also werden wir versuchen, nach rechts in hier zu bearbeiten,
und hoffentlich klappt wie geplant.
In Ordnung, hat jemand will mir ein Vorschlag, wie ich anfangen soll?
Die einzige Voraussetzung, ich bin Herstellung ist, dass ich schon
haben eine Struktur definiert, die ein Ich zeigte auf der letzten Seite,
auf der letzten Folie.
Und ich bin Speicherung der Kopf meines verbunden Liste in einigen Zeiger namens Liste.
Will jemand mir die ersten Schritte?
>> ZIELGRUPPE: Können Sie ein neues erstellen Knoten durch die Liste anrufen?
>> HANNAH: Awesome, so wir werden zu erstellen
ein neuer Knoten, um die Liste zu kriechen.
Ich mag es.
Ich werde es nennen Zeiger, wenn das ist OK.
Und wo sollte es ursprünglich angefangen?
>> ZIELGRUPPE: Wahrscheinlich am der Kopf der Liste.
HANNAH: Schöne.
Wir wollen an der Spitze, beginnen die Ich sagte, wird sich in der Liste gespeichert werden.
Ehrfürchtig.
So weit, ist es gut.
Und jetzt ist es unser Ziel, durchlaufen Sie die Liste
bis wir den Knoten mit Wert n, die wir löschen möchten.
OK?
>> So, jetzt ist der Teil, wo Wir wollen durch laufen.
Kann jemand empfehlen, eine bis hin zu durchlaufen?
>> ZIELGRUPPE: Eine Schleife.
>> HANNAH: Eine Schleife.
Ich liebe es.
Genauer gesagt, können wir eine while-Schleife zu versuchen.
OK, und wir wissen, dass wir erreicht haben das Ende unserer Liste, wenn das, was?
ZIELGRUPPE: Steht der Zeiger ist null.
HANNAH: Steht der Zeiger ist null.
Schön, ich liebe es.
OK, cool.
Tut mir leid, wenn meine Begrenzungsstrebe ist Art fallen aus dem Bildschirm.
Wir brachten es zurück.
OK, cool.
Was kommt als nächstes?
>> So wissen wir, wir löschen möchten der Knoten, der Wert n hat.
Also lassen Sie uns den Fall, wir tatsächlich finden unsere Knoten.
Wie würde ich prüfen, dass?
Ich möchte nur sagen, wenn Zeiger, und dann, wenn ich wollen den Wert von Zeiger zu erhalten,
Ich weiß nur arrow n, gleich n ist, die Parameter
dass wir auf diese Funktion hat, die Knoten, die wir wollen, um tatsächlich zu löschen.
Haben Sie Fragen, bis hier?
In Ordnung.
OK, so jetzt zu ziehen schnell ein Bild lassen auf dem Brett, um diese sichtbar zu machen.
>> Also lassen Sie uns sagen, dass es unsere schöne Knoten.
Und es Wert hat, werde ich nur sagen, vier.
Und es zum nächsten Punkte Knoten in unserem verketteten Liste.
Und es gibt nichts, bevor es.
So haben wir unsere bisherigen zeigt auf nichts.
In diesem Fall weisen wir zurück.
OK, nur die Einrichtung meiner hier verknüpften Liste.
Und wir haben eine Liste, die Punkte auf diese Struktur zu beginnen.
Ich werde noch für zu ziehen Der Vollständigkeit halber.
OK.
Ich werde diese nach vorne zeigen.
Und ich werde, dass man zurückweisen.
Oops, sorry.
Ja, ich diese nach hinten.
Tun Sie es erneut.
OK, es wir gehen.
In Ordnung, bekam sie.
OK, hier ist unser Bild.
>> OK, so wollen wir zwei Fälle zu berücksichtigen.
Der erste Fall ist, wenn der Knoten wir zu lösch
ist ganz am Anfang der Liste.
Und dann wird der zweite Fall, dass wir möchten zu prüfen ist, ob es irgendwo anders.
Ich verstehe, dass dies eine völlig messy Zeichnung von ganzem Löschen,
aber hoffentlich werden wir versuchen, dies zu verdeutlichen mit einigen Code.
>> OK, also lassen Sie decken den Fall wo wir unsere Knoten,
und es ist zumin Start unserer verketteten Liste.
Jemand mir ein Vorschlag hier, was
Ich tun sollte, um tatsächlich zu entfernen unsere Knoten?
Es ist ein wenig kompliziert.
OK?
>> ZIELGRUPPE: Sie müssen das nehmen Knoten, bevor er sein würde
und stellen Sie es auf den Punkt eines, das, nachdem es sein würde,
und nehmen Sie den Knoten, würde, nachdem er sein und
Sie weisen auf die Knoten, bevor es.
HANNAH: Genau.
OK, dies der Fall ist, so where-- wir zwei Fälle.
Wir haben den Fall, dass die Knoten, die wir suchen
ist die Vorderseite der Liste.
OK und dann der Fall, dass Sie beschrieben ist anders, nicht wahr?
Es ist irgendwo anders in der Liste.
So können Sie sagte, müssen wir Blick auf die Knoten vorherigen,
und stellen Sie den vorherigen Knoten Punkt zu dem nächsten Knoten.
Also lassen Sie uns sagen, dass wir versuchen, nehmen Sie fünf
in meinem sehr chaotisch Zeichnung hier.
Wir wollen dafür sorgen, dass vier zeigt jetzt auf sechs.
Vier der nächsten Punkte auf sechs.
Und sechs bisherige Punkte auf vier.
Das ist unser Ziel hier, nicht wahr?
Dies ist, was ich denke, Sie sagte nur dort.
>> OK, also lassen Sie uns diese erste Stück.
Machen wir das haben die vorherige Zeiger vorherigen.
Also vier nächsten sollten auf das hinweisen?
Genau in diesem Fall sechs.
Also sollten wir sagen, Zeiger, neben.
OK?
In Ordnung.
Lassen Sie uns also dieser hässliche Bild loswerden und versuchen, eine etwas schöneres ziehen.
Wir haben unsere Liste Kopf hier.
Und zeigt auf den ersten Knoten in unsere verknüpften Liste, die wir gesagt ist vier.
Hier ist unsere zweite Knoten, fünf.
Und unsere dritte Knoten, sechs.
Nur versuchen, genau die gleiche ziehen Bild, nur ein wenig sauberer.
OK, so dass vier der nächsten Ursprünglich weist auf fünf.
Fünf der nächsten Punkte auf sechs.
Sechs frühere Punkte auf fünf.
Und fünf früheren Punkte zu vier.
So viel schöner!
OK, cool.
>> So, jetzt, was wir getan haben gerade Hier, diese Codezeile,
was sagt Zeiger vorherige nächste, also was soll das bedeuten?
Das heißt, wenn wir bei der Suche fünf, gehen Sie zum vorherigen Knoten,
und es ist neben sollte jetzt Punkt fünf der nächsten.
So im Wesentlichen, dass das, was zu tun ist das ist das Löschen dieser Pfeil
und es überspringen Recht auf fünf.
Ist das klar?
Ich weiß, dass ein wenig lückenhaft sein kann.
Ich sehe einige Kopf nickt.
Das ist gut.
OK, cool.
Nun, was ist der nächste Schritt?
>> Ich habe die nächsten zurückgesetzt.
Nun, die anderen Pfeil muss ich ändern?
Dieser hier richtig.
Sechs frühere.
Das wollen wir nicht sechs früheren mehr, bis zu fünf zu verweisen.
Wir wollen, dass es zu vier verweisen.
Heißt das Bild sinnvoll?
So, jetzt können wir tatsächlich nehmen fünf.
Also lassen Sie uns das Stück.
Was muss ich, bevor ich zu tun Reset sechs der vier vorherigen?
Alle Ideen, da?
>> ZIELGRUPPE: Befreien Sie den Knotenpunkt zwischen sie, indem Sie sie auf null?
HANNAH: Kühl.
Auf jeden Fall ist unser Endziel sein wird, um den Knoten freizugeben.
Also haben wir, dass genau hier tun können.
Kostenlose Zeiger.
Absolut.
Doch schon vor, dass, Lassen Sie uns just-- unser Ziel rechts
hier ist es, Zeiger neben eingestellt vorherige gleich Zeiger vorherigen.
Ich weiß, das wird immer vertuscht.
OK, lass uns take-- cool.
Kann jeder sehen, diese unter dem Strich?
Oder ist es super winzige?
>> Also, bevor wir ausführen diese Linie hier, wir wollen
um sicherzustellen, dass Zeiger neben nicht null ist.
Denn wenn Zeiger neben ist null, welche Art von Fehler
erhalte ich, wenn ich versuche, verweisen auf eine Null-Zeiger?
ZIELGRUPPE: Seg Fehler.
HANNAH: Ein seg Fehler, schön.
OK, also wenn das nicht null, dann können wir zurückzusetzen.
Und wir haben sechs Punkt wieder auf vier.
Fragen bis zu diesem Zeitpunkt?
Ja?
>> ZIELGRUPPE: In Ihrem ersten if-Anweisung, nicht wahr
bedeuten, um den Pfeil haben nächsten oder [unverständlich]?
HANNAH: Ich meinte den Mauspfeil n.
Also im Grunde, was ich versuche zu tun, ist zu sagen, den aktuellen Knoten, die ich
Iteration über die aktuelle Knoten, Ich freue mich auf, ich bin in Zeigerspeicher.
Und ich möchte wissen Zeigers Wert, der in diesem Fall ist n.
Und ich möchte, um zu sehen, ist der Knoten Ich suche
für den Knoten mein Ziel zu löschen?
Also das ist, warum wir hier Zeiger n.
>> ZIELGRUPPE: Also der Pfeil, n, den Wert zu setzen Sie
und speichern sie in einem Knoten namens n?
>> HANNAH: So ist es, wie wenn ich gehen durch diese verkettete Liste
und zeigt auf fünf.
Wenn ich will, um diesen Wert zu erhalten, wenn Ich möchte diese Zahl, 5 zu erhalten,
Ich muss den Mauspfeil n zu tun.
Cool?
Ja.
>> ZIELGRUPPE: Ist n die Namen der Variablen?
HANNAH: Ja.
Wenn wir also zurück Flip ein Rutsche, ist n der Name
der Wert in der Knoten in unserem verketteten Liste.
Und ich weiß, es kann ein wenig zu bekommen wenig verwirrend, weil wir auch
werden das Ding nennen dass wir wollen n löschen.
Also das ist, wo das eine Zeile stammt.
Ja?
>> ZIELGRUPPE: Was haben Sie [Unverständlich], wie sie funktionieren?
Ein Zeiger [unverständlich]?
>> HANNAH: Sicher.
Sprechen Sie about-- welche Linie?
ZIELGRUPPE: Die letzte Zeile [unverständlich].
>> HANNAH: Sicher, OK.
Also schauen wir uns das Bild in um zu versuchen, das zu erklären.
Es tut mir leid für die Kamera, war die Frage,
können wir erklären, Zeiger Pfeil nächste Zeiger vorherigen.
OK, also lassen Sie uns sagen, dass wir in fünf sind und unser Ziel ist es, zu löschen fünf.
So Zeiger nächsten, die von diesen drei Knoten bedeutet, dass Sie uns geben?
Das bringt uns zu dem sechsten Knoten, nicht wahr?
>> OK, so jetzt sind wir gefragt für die sechs früheren.
OK?
Und wir sind das Zurücksetzen dieser gleich sein, vier,
die an fünf frühere zufällig.
Ich weiß, es ist super schwer den Überblick zu behalten.
Ich empfehle Ihnen Bilder zeichnen wenn Sie eine Frage wie diese zu erhalten.
Ja?
>> ZIELGRUPPE: Ist der Grund dafür, dass wir nicht über ein [unverständlich]?
>> HANNAH: Genau.
Die Frage war, warum wir brauchen, um hier zu überprüfen?
Warum gehen wir nicht brauchen, um zu prüfen, Zeiger vorherigen ungleich null?
Und es ist, weil wir bereits ausgeschieden
der Fall, wenn sich der Zeiger der ganz am Anfang.
Sehr gute Frage.
Sonst noch dazu?
OK, cool.
Lassen Sie uns also beenden Sie es.
Wir sind fast da.
>> So was, wenn es an die Spitze?
Was wäre, wenn statt versuchen, zu löschen fünf,
wollten wir eigentlich vier löschen?
Was würde ich tun?
Nun, ich möchte meinen Kopf, was zurück?
Shout it out?
ZIELGRUPPE: Die eine, nachdem es.
HANNAH: Schöne.
OK, wir wollen Liste zu sein Zeige , was auch immer unsere Zeiger nächsten Knoten ist.
Gute.
Und nur der Vollständigkeit halber ist willen, würden wir
wollen, dass so lange prüfen, wie unsere Liste nicht null ist, so lange wie unsere Liste nicht
leer ist, dann setzen möchten wir unsere bisherigen gleich null.
Frage so weit?
Einen Schritt davon from--?
>> PUBLIKUM: Wäre es, wenn sein Liste ist nicht gleich null?
>> HANNAH: Ja, Sie haben völlig Recht.
Es tut mir leid.
Ist Liste ist nicht gleich null.
Ehrfürchtig.
Der Versuch, das alles auf die Leinwand zu bringen.
Es ist eine Art herunterfallen.
Sorry, Jungs.
Und last but not least, alle wir tun müssen, ist Rückkehr.
OK.
Das war viel vollgestopft in wirklich schnell.
Nein, Sie haben, um diese über zu suchen.
Sag mir, wenn Sie Fragen haben.
Ja?
>> ZIELGRUPPE: Wenn Liste ist unter der Kopf, dann- warten, nevermind.
>> HANNAH: OK, gut.
Also das ist, wenn Liste ist an der Spitze, wir sie entfernen, um was auch immer wir eingefügt.
Ja?
>> ZIELGRUPPE: Können Sie erklären, die erste if-Anweisung wieder?
Wenn der Zeiger auf n gleich n?
HANNAH: Sicher.
So ist unser Ziel, diese ganze Funktion ist um den Knoten, der Wert n zu löschen.
Also, wenn wir, wie wir sind Durchlaufen unserer Liste,
der Knoten mit dem Wert n, das ist das, was wir wollen, zu löschen.
Also alles, was der Löschen geschieht innerhalb dieses großen if-Anweisung.
Ist das sinnvoll?
Kühle.
Ja?
>> ZIELGRUPPE: Vielleicht haben Sie gerade nicht sehen können, , aber nicht müssen Sie auch eine Linie
Scrollen Sie durch die Liste?
HANNAH: Awesome.
Bringen wir diese oben ein wenig, und wir werden dieses Recht in den Boden zu werfen.
Vielleicht würde der Vorstand haben war eine etwas bessere Idee.
Wie würde ich bewegen Zeiger vorwärts?
>> ZIELGRUPPE: Pointer entspricht Zeiger plus eins.
>> HANNAH: Schöne.
So dass ermöglicht es uns, weiter durchlaufen.
OK.
PUBLIKUM: Wäre es ein anderes?
HANNAH: Noch einmal?
PUBLIKUM: Wäre es nicht da sein, ein anderes nach dem großen, alten, wenn
Anweisung [unverständlich]?
HANNAH: Welcher Teil?
Es tut mir leid.
>> ZIELGRUPPE: Die Durchquerung, sollte es nicht ein anderes?
HANNAH: Sie unbedingt könnte ein anderes haben.
Weil ich ein Rückgaberecht gibt, brauchen Sie nicht eine andere.
Aber ja, gute Frage.
OK, nicht wahr?
ZIELGRUPPE: Können wir von Zeiger denken dass sich durch die Liste zu bewegen
als unter dem Wert jedes Knotens in der Liste?
Oder sollten wir halten sie für Art außerhalb der Liste?
>> HANNAH: Entweder man ist in Ordnung, denke ich.
Die Art, wie ich mir das ist Ich sage: OK, ich bin Zeiger.
Und das ist mir.
Das ist meine Hand.
Ich werde auf die verschiedenen Punkt Dinge, die ich will, um durch laufen.
Zuerst werde ich zeigen an die Spitze der Liste.
Und das mir, ich bin erzählt werde zu vier verweisen.
Und so, ich zu sein, außerhalb der Liste, I kann auf jedes dieser Elemente zeigen.
Also ich denke an mich als Zeiger.
ZIELGRUPPE: Also, wenn Sie zu löschen eines dieser Elemente,
Sie selbst zu löschen, so zu sprechen.
HANNAH: Genau.
So können Sie das Ding zu löschen Sie zeigte auf.
Also in diesem Beispiel, dass sahen wir, wo wir sind
versuchen, zu löschen fünf, wenn ich mit fünf zeigt,
Ich möchte das Löschen Sache, die ich zu zeigen.
Genau richtig.
Ja?
ZIELGRUPPE: Haben wir uns um die genommen wenn n nicht in der Liste?
HANNAH: Wenn n nicht in der Liste?
Alle, die gehen zu geschehen ist, sind Sie gehen durch und wiederholen laufen
durch, und dann wirst du zu bekommen, um als Null-Zeiger,
und dann wirst du zu tun.
>> ZIELGRUPPE: So haben wir etwas zurück?
HANNAH: Wir könnten.
Die Art und Weise, dass, wenn dieser definierte Funktion, ich nur sagen, dass er zurückkehrt
nichtig unabhängig.
Aber man konnte etwas haben wie einen Integer zurückgibt,
und lassen Sie es zurück negativ 1, wenn es scheitert.
So ungefähr.
Fragen with-- ja?
ZIELGRUPPE: [unverständlich]?
HANNAH: Es tut uns leid?
ZIELGRUPPE: [unverständlich]?
HANNAH: Sicher.
Das ist also der actual-- Sobald wir alles getan, diese Arbeit zu bewegen
all diese Pfeile um, unser ganzes Ziel war es, die Knoten loszuwerden
dass wir suchen.
Also in diesem Fall, die Befreiung Zeiger, wenn ich bis fünf zeigen,
es ist wie das Löschen dieses mittleren Knoten.
Das ist die freie Zeigerteil.
Das Sinn?
>> ZIELGRUPPE: Also dachte sogar, Sie nicht [unverständlich]?
>> HANNAH: Also haben wir zu Beginn angenommen wir hatten einige Liste, war bereits--
sie dies zusammen hatte.
Um also dieses Konstrukts Liste must've sie [unverständlich].
Kühle.
Sonst noch etwas mit diesem?
Ja?
>> ZIELGRUPPE: Was ist, wenn die Liste hat die Nulllinie nicht gleich?
[Unverständlich]?
HANNAH: Genau hier?
ZIELGRUPPE: Ja.
HANNAH: OK, alles, was ich tue, ist Ich bin nur dafür sorgen,
dass, bevor ich versuche, dereferenzieren Liste bevor ich versuchen, auf den vorherigen,
Ich möchte sicherstellen, dass es nicht null, damit ich nicht bekommen eine seg Fehler.
Kühle.
>> OK, ich weiß, das war ganz eine Menge, um durchzukommen.
Also das Dia wird zur Verfügung gestellt, um Sie.
So kann man durch sie in mehr ins Detail gehen.
Ja?
>> ZIELGRUPPE: Warum wird die Liste [unverständlich]?
HANNAH: Sicher.
Also wirklich Liste verweist auf dieses Element genau hier,
das erste Element in der Liste.
Es kann also nicht über eine frühere.
Ja?
>> ZIELGRUPPE: Unterstützt den Zeiger Punkt auf die gleiche Adresse im Speicher?
Ist es auf den gleichen Punkt Adresse in dem Speicher als die Knoten
dass es zu zeigen?
>> HANNAH: Ja, weist sie zu diesem Knoten im Speicher.
>> ZIELGRUPPE: Richtig, so wenn Sie [unverständlich]?
>> HANNAH: In gewisser Weise ja.
OK.
Also gut, lassen Sie uns nun zusammen mit diesem.
Und wenn Sie noch mehr Fragen, bleiben, um am Ende,
und wir können durch sie wieder gehen.
OK, cool.
Nun, weiter zu gehen erhalten wir Tabellen, versucht Hash,
und Bäume, die man Super bekam vertraut mit in p-Set fünf, Rechtschreibprüfung.
>> So Hash-Tabelle ist nur ein Array mit einfach verkettete Listen
oder doppelt verkettete Listen kommen aus der IT.
Wir haben also eine Art von assoziativen Arrays.
Und wie wir wissen, was von ihnen Arrays Eimer, in zu erhalten,
Wir verwenden eine Hash-Funktion.
Also in diesem Fall, kann jeder erraten, was die Hash-Funktion
möchte nur auf einige basieren der Eingangs- und Ausgangs?
>> ZIELGRUPPE: Brief Nummer des Alphabets.
HANNAH: Genau.
Er stellt sie nur in alphabetischer Reihenfolge.
Alles, was mit einem beginnt A wird in den ersten Eimer gelegt.
Alles mit einem B wird in die setzen zweiten Eimer, usw., und so weiter.
Awesome, OK.
Und eine Hash-Funktion irgendeine Funktion, die in einem Wort übernimmt
und sagen Ihnen, was Eimer in gehört.
So denen in unserem Eintrag Array gehört in.
>> Also jedes Mal, ich meine Hash-Funktion ein Wort,
es sollte mir das gleiche sagen legen jedes einzelne Mal.
Also, wenn wir die Hash-Funktion von der vorherigen Folie
wo wir durch die Sortier ersten Buchstaben des Alphabets,
jedes Mal, wenn ich meine Hash-Funktion "apple"
es sollte mich immer zurück zu geben 0.
Also wenn ich ein Apfel in meinem Hash-Tabelle setzen,
wenn ich "apple", meine Hash-Funktion, es sollte sagen, gehen Sie es in Eimer 0.
Wenn ich mich für ein Apfel in meinem Hash-Tabelle
und ich sage, wo Macht Apfel Live, bitten Sie Ihre Hash-Funktion.
Und er sagt, gehen Sie zu 0 Eimer.
In Ordnung?
Fragen mit Hash-Funktionen?
Ehrfürchtig.
>> Hier ist ein wenig mehr ausführliche Beschreibung
von dem, was eine Hash-Funktion aussehen könnte.
In Ordnung.
Nun, das Problem mit den Hash- Funktionen ist in einer idealen Welt,
wir haben nur eine was in jedem Eimer.
Aber in Wirklichkeit gibt es nicht nur ein Wort
das beginnt mit A. Es gibt nicht nur ein Wort, das mit B. So beginnt
in diesem Fall, wenn wir plötzlich "Beere"
und wir wollen es in unserer Hash-Tabelle,
und wir sehen, oh, nein, Banane schon da, was wir tun?
>> Nun, wir haben zwei Möglichkeiten.
Die erste Option ist linearen Austesten, die
bedeutet nur, Go Find der nächste leere Eimer.
Gehen Sie finden die nächste leere Array-Eintrag.
Und einfach "berry" gibt.
Also ich weiß, es ist zu vermuten, gehen mit Bananen in einem Eimer.
Aber diese einfach in drei Eimer, weil drei Eimer leer ist.
Eine weitere Option ist wahrscheinlich was Sie implementieren
im p-Set, in dem Sie hatten getrennte Verkettung.
So jede Ihrer Eimer, jede Ihrer Array-Elemente,
hält nicht nur ein Wort, aber eigentlich einen Zeiger auf eine Liste von Wörtern.
So dass, wenn Sie hatte Banane in Ihrer Hash-Tabelle
und plötzlich wollte um Beere, kein Problem hinzuzufügen.
Fügen Sie einfach Beere auf bis zum Ende, oder der Anfang, der verknüpften Liste.
OK, awesome.
Fragen mit Hash- Tabellen, bevor wir weitergehen?
>> In Ordnung.
Bäume und Versuche.
OK, so war dies eine weitere Option, für die Umsetzung Wörterbuch.
Sie können einen Versuch gemacht haben.
Also ist es eine besondere Art von Baum, verhält sich wie ein Multi-Level-Hash-Tabelle.
So dass Sie das Bild sehen wo Sie ein Array, dass
weist auf eine Reihe von Arrays diesen Punkt zu einer Gruppe von Arrays
diesen Punkt zu einer Gruppe von Arrays.
Und wir werden sehen, was genau das würde wie auf einem zukünftigen Dia aussehen.
Und allgemeiner, ein Baum ist irgendeine Datenstruktur
in dem die Daten in irgendeiner Hierarchie organisiert.
Also, wo wir sahen, wir haben eine Art von Verständnis
einer oberen Ebene, eine nächste Ebene, eine nächste Ebene, eine nächste Ebene.
Also das ist wohl klar, mit einigen spezifischen Beispielen.
Also hier ist unser Baum.
Sie können sehen, dass es hat besondere Ebenen
dass wir mit diesem Wurzelknoten, eines.
Und wir können sich über unser Baum gehen.
>> Ein binärer Baum ist ein bestimmte Art von Baum.
Und die einzige Spezifikation für einen Binärbaum
ist, dass jeder Knoten höchstens zwei Blättern.
So gehst du nicht zu einem sehen dieser Knoten drei oder vier haben,
oder eine andere Anzahl von Blättern.
Und dann noch spezielleren ist ein binärer Suchbaum
wobei jeder Knoten auf der linken Seite der Knoten wird ein Wert kleiner zu haben.
Und jeder Wert auf die Recht wird größer sein.
Also, wenn Sie sehen, 44 ist auf unsere Wurzel, nach links, 11, 22 und 33
sind alle weniger als unsere Wurzel.
Und auf der rechten Seite sind Zahlen bigger-- 66, 55 und 77.
Und diese Eigenschaft gilt auf jeder Ebene des Baumes.
>> Also, wenn wir gehen, um 22, 11 und 33, weiterhin 11
ist kleiner als 22 und 33 ist größer als 22.
Und das macht es einfacher, zu suchen denn wenn wir uns für eine Reihe suchen,
Wir wissen genau, was Zweig zu folgen unten.
So sollte diese Ihnen erinnern wenig von binären Suche.
Ja?
>> ZIELGRUPPE: Also, wenn Sie beschreibt binäre,
Sie sagte, dass es höchstens zwei Blätter hat?
HANNAH: Mm-hm.
ZIELGRUPPE: Könnte es weniger?
HANNAH: Ja.
Also sagen wir mal zum Beispiel Sie nicht über eine gerade Anzahl von Dingen
und man konnte nicht füllen Sie alle Ihre Blätter, es ist in Ordnung, wenn man eine hat.
OK?
Ehrfürchtig.
Alle anderen Fragen auf Bäumen?
OK.
>> Zurück zu unseren Versuchen als ich sprach über etwas früher,
wie wir diese Multi-Level-Arrays.
Also in diesem Fall, beginnen wir am Anfang.
Und wir können jede gegebene Wort hinab folgen.
Also lassen Sie uns sagen, wir wollten für Turing suchen.
Wir starten am T, folgen Sie unten auf ein Array, das U enthält,
und befolgen Sie sie gedrückt, bis wir erreichen das kleine Dreieck die
sagt uns, ja, ein Wort zu finden Sie.
Klar auf dern?
Alles, was da drüben gehen?
Ja?
ZIELGRUPPE: Ist das Symbol der Delta- haben, um Platz innerhalb des try besetzen?
HANNAH: Ja, so ist es nicht der Fall ist unbedingt einmal zu einem Delta sein.
Aber wir brauchen einen Weg, um sagen unseren computer-- sorry,
so dass wir wissen, dass TUR ist nicht ein Wort.
Da sagen wir, wir hatten nicht Dieses Konzept eines Delta dieses Konzept
Glückwünsche, ein Wort zu finden Sie, es durchlaufen und durchlaufen T-U-R,
und dann sagen, fantastisch, ich fand es!
Es muss ein Wort sein.
Aber es ist wirklich nicht.
Wir wollen ganz Turing ein Wort sein.
Also müssen wir etwas an die haben Ende, die sagt, glückwünsche,
Sie ein legitimes Wort gefunden.
ZIELGRUPPE: Also, wenn Sie wie gehabt 26 Buchstaben des Alphabets,
würden Sie tatsächlich haben 27 Tasten in Ihrem Versuch?
>> HANNAH: Awesome, ja.
Also wirklich, ich glaube, wird auf der nächsten Folie sein.
Ta-da!
Wo, wenn Sie eine Knoten in Ihrem Versuch, du bist
gehen zu 27 Kindern statt 26 haben.
Haben Sie Fragen dazu?
Ja?
ZIELGRUPPE: Warum versucht nehmen so viel Platz [unverständlich], wie Sie gehen?
Warum wird es als sein [unverständlich]?
HANNAH: Sicher.
Gehen wir zurück.
Die Frage ist, warum Versuche sind so viel größer
als so etwas wie eine Hash-Tabelle.
Also für jede dieser Ebenen, auch wenn sie hier nicht gezeichnet,
müssen Sie alle 26 Zeichen lang sein.
Und der Grund dafür, dass man nicht sagen, oh, aber wie für Turing, I
müssen nicht alle diejenigen haben gleichen Dinge auf der Ebene der U. Nun,
wenn plötzlich die Sie hinzufügen wollten etwas, das wie T-H war,
müssten Sie das haben Möglichkeit der Erweiterung durch das Wort.
So wird für jeden einzelnen Buchstaben, Sie gehen zu müssen sind
einen Haufen haben Arrays kommen aus der IT.
So können Sie sehen, wie es wäre zu bekommen wirklich groß, wirklich schnell.
Noch Fragen?
In Ordnung.
Ja?
>> ZIELGRUPPE: Wann sind Versuche schneller als Hash-Tabellen?
>> HANNAH: Wenn es versucht, schneller als Hash-Tabellen?
Also, wenn Sie einen wirklich hatte schlechte Hash-Funktion.
Also lassen Sie uns sagen, ich war wie, hier ist Ihre Hash-Funktion.
Egal, was Wort Sie mir, ich bin immer
werde es in Array-Eintrag 0 setzen.
Und so haben wir am Ende mit nur darum, alles in einem großen langen verketteten Liste.
Und so ein Lookup Zeit würde im schlimmsten Fall nehmen n, wenn es am Ende der Liste.
Mit dem Versuch, wir müssen nur durchlaufen durch die Buchstaben in dem Wort.
Also selbst wenn wir soeben einen Haufen Worte zu unserem Versuch,
wäre es nicht mehr nehmen uns um ein bestimmtes Wort zu finden.
>> Alles, was wir tun müssen, ist, für Beispielsweise in diesem Fall
Lassen Sie uns sagen, dass wir für Zoom suchen, wir müssen nur durchlaufen
Z-O-O-M, vier Buchstaben.
Also das ist nur die Länge des Wortes Zoom.
Es spielt keine Rolle, wie viele mehr Wörter in diesem Versuch haben wir.
Wir können immer alles in diesen vier Schritten.
Ehrfürchtig.
Ja?
>> ZIELGRUPPE: So [unverständlich] ist ein Array, oder?
>> HANNAH: Mm-hm.
ZIELGRUPPE: Wenn Sie Suche nach [unverständlich],
würden Sie zu durchlaufen haben Ihr Array zu [unverständlich] finden?
HANNAH: Sicher.
ZIELGRUPPE: Nicht, dass mehr Zeit in Anspruch nehmen?
HANNAH: Wenn ich zu gehen sagen, dass meine Array ist immer
werde A, B, C, D sein, E, F, G, blah blah blah,
so dass, wenn ich weiß, es ist immer in der gleichen genaue Reihenfolge,
wenn ich weiß, es ist immer in alphabetischer Reihenfolge,
Ich kann nur sagen O ist Nummer so und so im Alphabet.
Nur direkt an diesen Ort.
Denn denken Sie daran, mit Arrays, die wir zugreifen können,
jedes Element des Arrays in konstanten Zeit, wenn wir wissen, wo wir suchen.
Ja?
>> ZIELGRUPPE: Auf dem früheren Schieben Sie [unverständlich] 27,
aber 26 für das erste.
>> HANNAH: Es tut uns leid?
>> ZIELGRUPPE: Ist nicht das erste eine 0, so wäre es nicht 26 sein?
>> HANNAH: Sicher, so dass, wenn wir sagen, 27, das ist werde uns Indizes 0 bis 26.
Aber wenn Sie wirklich zählen diejenigen aus, es geht bis 27 sein.
Gute Frage.
Noch etwas?
Ja?
>> ZIELGRUPPE: So sind Versuche langsamer als Hash-Tabellen?
>> HANNAH: Tries sein werden, in theoretisch schneller als Hash-Tabellen
aber mehr Speicherkapazität.
Ja?
ZIELGRUPPE: [unverständlich]?
>> HANNAH: Tut mir leid, ich habe nicht Ihnen zu hören.
ZIELGRUPPE: [unverständlich].
0-25 gibt Ihnen 26.
>> HANNAH: 0-25 würde geben Ihnen 26, nicht wahr.
>> ZIELGRUPPE: Und dann [unverständlich].
HANNAH: Richtig.
So ist die Zahl wir die Angabe ist die Zahl der Dinge in unser Angebot.
Wenn wir also 27, ist es wird uns geben 0
bis 26, die geben us Raum, in diesem Fall
Ich bin nicht wie ein Apostroph.
So bekommen wir von 0 bis 25 sind, die ersten 26 Buchstaben des Alphabets,
oder alle 26 Buchstaben des Alphabets.
Und dann das letzte Sache, bei der Einreise 26 ist
werde die Prüfung sein, Marke oder das Delta.
Noch etwas?
Ehrfürchtig.
Verlor meine Ordnung.
OK, cool.
>> So berührt die wir bereits auf diese.
Aber der große Kompromiss zwischen Versuchen und Hash-Tabellen
ist, dass Versuche liefern, in Theoretisch konstant nachschlagen
Zeiten, sondern verwenden eine Menge Speicher.
Also gut, jetzt haben wir etwas weniger komplizierte Strukturen,
und wir werden mit C durchgeführt werden, und wir werden rechts entlang zu bewegen.
>> So Stacks, das sahen wir in Vortrag, in dem Sie
so etwas wie eine Stapel von Ablagen in dem
das letzte, was Sie setzen auf dem Stapel wird
das erste, was Sie weg zu nehmen.
Also das ist, was wirklich definiert einen Stapel ist, dass das letzte, was Sie anziehen
wird der erste sein Sache, die Sie sich zu entfernen.
Und die Terminologie, die wir verwenden ob wir etwas zu setzen,
wenn wir gehen, um etwas hinzufügen unsere Stapel, rufen wir, dass drängen.
Und wenn wir etwas zu nehmen off, nennen wir es knallen.
Und wenn wir zu gehen Implementierung eines Stapels, wir
müssen sicher sein, zu verfolgen sowohl die Größe und die Kapazität.
So ist die Gesamtzahl der Elemente können wir zu halten, und die aktuelle Anzahl von Elementen
dass wir uns halten.
>> Und sehr ähnlich, haben wir Warteschlangen.
Und der einzige Unterschied ist statt mit Stapeln,
wir sagten, das letzte, was wir setzen auf ist das erste, was wir ausziehen.
Also mit Warteschlangen, die erste, was wir setzen in
wird sich das zu sein erste, was wir herausnehmen.
Also das ist, wie wenn Sie tatsächlich Schlange vor einem Geschäft
und schon sind Sie dabei unterstützt, dann wird die erste Person in der Reihe
sollte die erste Person, geholfen werden kann.
So, das wäre eine Warteschlange.
>> Also müssen wir den Überblick über die zu halten Größe, Kapazität und Kopf da wir
werde alle von der Front zu nehmen der Liste statt an der Rückseite.
Fragen dazu?
Alle Fragen, die C stört Sie?
Datenstrukturen, der eine der betreffenden fun stuff?
Alles klar, cool.
Also werde ich es zu übergeben, um Alison springen in eine weitere Programmierung.
>> ALISON: Oh, wir werden sehen.
Wir werden sehen, wie gut ich hier tun.
OK, ich werde versuchen und fliegen durch dieses Zeug, Leute.
Hannah ging sehr in Tiefe auf alle ihre Sachen.
Ich werde versuchen, zu geben Sie eine schnelle Explosion Übersicht
damit wir Davin alle erhalten die Spaß JavaScript und Sicherheit Dinge
dass Sie vielleicht tatsächlich wollen mehr darüber hören.
>> OK, wie Hannah sagte, wenn Sie irgendwelche Fragen haben,
Ich bin zu schnell, bitte, lassen Sie mich wissen.
Ich werde Fragen wie nötig zu beantworten.
So zu beginnen, werden wir für den Anfang wahrscheinlich eines der ersten Dinge,
Sie mit Web gelernt Programmierung, Berechtigungen.
So chmod, Leute sollten waren Meister in diesem mit allen Web-
Programmierung, die Sie haben, in der letzten Zeit zu tun.
Es ist im Grunde nur ein Befehl das ändert die Berechtigungen
und die Zugriffsberechtigungen der Dateisystemobjekten.
Natürlich tatsächlich sehen diese, wenn Sie
irgendwelche Probleme mit diesen während Ihr Problem-Sets,
Sie ls -l, die lange Zeit ist verwendet haben, um die Ansicht eine Art, wie dies zu umgehen,
wo Sie wirklich sehen alle die Berechtigungen für eine Datei.
>> Und in der Tat, wir sind gerade dabei zu gehen durch ziemlich schnell ziemlich einfach
genau das, was jeder von ihnen bedeutet.
So haben wir hier D, die nur steht für das Verzeichnis.
Offensichtlich genau hier sehen wir rwx, die lesen, zu schreiben, und ausführbar.
Dies könnte auch als Bits dargestellt werden, die wir in der nächsten Seite zu gelangen.
So jede Triade, die wir sahen hier, es ist so drei Triaden.
Wir haben rwx, r nichts x und r Nichts x für die erste Datei.
Es ist diese allgemeine Struktur.
>> So haben wir einige Verzeichnis.
Wir haben einige Benutzergruppe mit diesen Berechtigungen.
Einige Gruppen, die diese Berechtigungen verfügt, und eine Welt, die eine Berechtigung hat.
Sie können von ihnen als Dreiklang denken.
Sie können von ihnen als drei Bits zu denken.
So können sie Werte enthalten im Bereich von 0 bis
bis 7, weshalb manchmal wir hatten Sie chmod tun
600 anstatt chmod rw was auch immer.
Wir werden dort in ein Beispiel zu bekommen.
Aber im Grunde, Sie denken können von ihnen entweder nur rwx,
oder Sie von ihnen, wie einige denken können Anzahl, wo diese erste hier
steht für eine Zahl zwischen 0 und 7, wobei dieses zweite ein
steht für eine Zahl zwischen 0 und 7 und die dritte
für eine Zahl zwischen 0 und 7, OK?
>> r einen Wert von 4 w hat einen Wert von 2, und x
hat einen Wert von 1, weshalb dies Erlaubnis hier würde chmod 700 werden.
Da in diesem Fall hier, sagt, dass es uns haben das erste Bit wird schaltete.
So haben wir 4 für Lese.
Das zweite Bit wird für gekippt w, die 2, so jetzt haben wir 6.
Und das dritte Bit ist auf gekippt für x, die 1 ist, so erhalten wir sieben.
Und natürlich unsere Gruppe und unsere Welt jeweils 0.
So ist dies auch der Äquivalent chmod 700.
Und ich würde auf jeden Fall versuchen, verstehen die Zuordnung zwischen diesen.
Ich bin nicht sicher, wenn sie kommen an einem Quiz vor,
aber es wäre ein Frage, die ich vielleicht fragen.
>> Nur ein bisschen geht noch weiter in chmod hier, hier,
ist die sehr allgemein Struktur eines chmod Anruf.
So natürlich, wir haben hier chmod.
Referenzen, was dies betrifft ist die geben wir diese Berechtigungen zu
oder wer wir nehmen diese Berechtigungen von.
So haben wir eine hier in den Berechtigungen, als hätten wir da Sie ein plus x chmod,
wie wir bald sehen werden.
a bedeutet nur, geben diese spezifischen Berechtigungen für alle.
Gib sie alle.
So könnte man sehr wohl u plus x oder g plus x oder o plus x oder mehrere
davon.
So dass erste Teil ist immer werde Referenzen können.
Wer geben wir diese Berechtigungen zu, oder, die wir ihnen wegzunehmen?
>> Der zweite ist der Bediener.
So können Sie Jungs haben meist mit Plus behandelt.
Dies gibt Berechtigungen wer auch immer Sie geben ihnen,
während minus logischerweise entfernt diese.
So ist es auch nichts Schlimmes gibt.
Und dann Modi ist das, was wir gesprochen mit Lesen, Schreiben oder Ausführen.
So ein Plus x bedeutet geben ausführbare Berechtigungen für alle.
Und dann natürlich auf denen bestimmte Datei oder ein Verzeichnis.
OK?
Jeder gut mit chmod?
Nicht so schlecht?
>> OK, also HTML, einer von euch alt genug zu-- MySpace Alter?
Ich habe diese auf meine Abschnitt, und buchstäblich die Hälfte der Menschen
sah mich an, ich sei verrückt.
Und ich war wie, Jungs, wir sind nicht so alt.
Komm schon.
So Hypertext Markup Language, es ist ehrlich gesagt nur eine Möglichkeit für Sie,
, bestimmte Dinge im Internet angezeigt werden.
Also ist es eine Markup-Sprache.
Es ist nicht eine Skriptsprache.
Es gibt keine Logik darin.
Es ist einfach, um das zu ändern So etwas angezeigt wird.
OK, das ist also ein wichtiger Unterscheidung zu machen.
Sie gilt als eine Markup-Sprache, kein Skriptsprache.
>> Hier haben wir also unsere HTML-Tags.
Auf dieser Folie sind wahrscheinlich die meisten der diejenigen, die Sie kennen sollten
und wirklich komfortabel mit.
So offensichtlich, haben wir unsere HTML-Tag, das
bezeichnet, dass alles in zwischen diesen beiden wird HTML sein.
Wir haben einige Links, die offensichtlich wird Ihnen
ein Link zu einer externen Webseite.
Einige Titel, im hier unseren Kopf.
Und wir haben mit unserem Körper h1, die ein Header ist,
so dass es dann schön machen und fett und größer.
Und dann haben wir einige p, die eine Ziffer ist.
Sie sollten wahrscheinlich wissen, und mit den Dingen vertraut sein
wie, wie Sie ein Bild einfügen, sind es weitere Header-Klassen?
Ich würde auf jeden Fall komfortabel mit div.
Das sind also die meisten Tags Sie kennen sollten.
Aber natürlich, wie bei allem in CS 50, die Liste ist nicht vollständig.
So stellen Sie sicher, dass auffrischen.
>> CSS, CSS, so, wenn einer von euch zu sehen meinem Seminar von vor zwei Wochen,
ist eigentlich nur ein Weg Ihrer Webseite zu stylen?
OK, so haben wir einige Markup-Sprache.
HTML, das sich um nur den Text übernimmt und, wo es auf der Seite sein.
Aber CSS ist wirklich, was es ziemlich macht.
Sie können diese in Ihrem HTML haben Dateien, aber wie wir später darüber zu sprechen,
Ich bin ziemlich sicher, es könnte können die nächste Folie, es
ist gängige Praxis, und tatsächlich Praxis, die wir wirklich zu fördern,
für Sie, halten Sie sie getrennt, wenn wir sprechen über MVC und diese ganze Paradigma.
Das ist wirklich, was diese Feeds in.
>> So CSS ist nur eine Möglichkeit, die Dinge hübsch aussehen.
Die Dinge, die hier, wie Körper und #title und .info,
diese Selektoren und was genannt sie tun, ist sie bestimmte Dinge auszuwählen
in Ihrer HTML-Datei und anzuwenden, ohne Stil,
Unabhängig von der Art der Dinge, die Sie wollen, zu diesem bestimmten Element des Web-
Seite.
Also hier haben wir eine Hintergrundfarbe und einer Farb
und eine Schriftfamilie, die Befinden auf das, was in den Körper aufgetragen.
Also, wenn wir sahen hier zurück, es nicht auf den Titel gelten.
Es würde nur auf das, was gelten in diesen Körper Selektoren, OK?
>> Mit Titel hier, das ist werde dasselbe sein,
die Farbe des Text blau ist nur noch
zu beeinflussen, was in die Titel-Selektoren.
Neben Infos hier, der Text wird rosa sein,
Wie immer die Informationen, die hier ist.
So ist die einzige Sache, wäre rosa auf dieser Seite
ist Tag, Montag, 17. November 2014.
OK, so CSS ist nur eine Möglichkeit, mehr Kontrolle over-- ja?
>> ZIELGRUPPE: Warum musst du den Hash mit Titel benutzen?
>> HANNAH: Nächste Folie, versprochen!
Wir werden es schaffen.
Also das ist, warum wir den Hash verwenden.
So Selektoren nehmen auf drei Haupt Formen, die wir euch darüber zu sprechen.
Ich fyou mehr erfahren möchten, es gibt viele da draußen.
Es ist großartig, CSS-Dokumentation.
Es gibt einen Tag-Namen, die zu tun hat mit nur Ihre normalen Tags in HTML.
So h1, p, div, h2, diese Art von Dingen.
Und wir können nur Namen, die wie es ist.
So wie wir hier sehen, mit Körper, es ist ein normaler Tag.
So können wir nur mit Leib, wenn wir in unserem CSS-Datei im Gespräch.
>> Mit Titel, der ganze Grund, warum wir haben diese Hash ist, wir haben, was
als eine ID.
So sollte eine ID immer einzigartig in Ihre HTML-Seite
so dass, wenn Sie darauf zu verweisen, die Sie
wissen, dass Sie nur mit Bezug auf eine bestimmte Sache.
Also in diesem Fall hier, mit unseren h1 hier, CS 50 Review-Sitzung,
wir haben eine id Vorbehalt.
Also, um genau zu beziehen Stück unserer HTML, machen wir einen Hash-Titel.
Nur durch die Konvention werden IDs bezeichnet mit einem Hash vor ihnen.
In gleicher Weise sieht man Infos hier ist eine Klasse.
Und so Klasse mit CSS als Punkt-Klasse bezeichnet
oder was auch immer das dot Klasse ist.
Also in diesem Fall hier, es ist info.
>> Also nehme ich es zurück.
Beides wäre rosa für unsere CSS hier
weil sie beide eine Klasse von Informationen.
Und in unserem CSS-Datei, die wir haben, bezeichnet dass alles, was mit einer Klasse von Informationen
ist rosa.
Ist das sinnvoll?
Ja?
>> ZIELGRUPPE: Wenn Sie waren zu machen alles, was im Körper weiß,
und dann können Sie versuchen, etwas in sie blau,
wäre das zu Problemen führen?
>> HANNAH: So CSS ist Cascading Style Sheets.
Also, was auch immer in Richtung der Unter Vorrang.
Also, wenn Sie etwas mit dem Körper zu tun, und Sie machen alles weiß,
und dann später auf die Sie den Titel zu ändern oder Sie den Code im Körper zu ändern,
überschreibt das.
So etwas in Richtung der Unter Vorrang.
Ja?
>> ZIELGRUPPE: Und IDs sind einzigartig, aber Klassen können mehr sein?
HANNAH: Richtig.
So sollte IDs eindeutig sein und Klassen können beziehen sich auf so viele Dinge wie Sie möchten.
Noch Fragen?
Ja.
>> ZIELGRUPPE: [unverständlich].
Ich frage mich, ob das einen Unterschied macht.
HANNAH: Tut mir leid, Was war die Frage?
ZIELGRUPPE: Es gibt kleine "F" und Kapital "F."
HANNAH: So ist der Unterschied zwischen kleinen "f" und Kapital "F"
sollte nicht einen Unterschied machen.
So "f" wird 15 oder so sein.
Cool, etwas anderes?
Jeder gute, CSS?
Ja?
>> ZIELGRUPPE: Es tut uns leid.
Können Sie eine Klasse und einen ID?
>> HANNAH: Ja, das ist möglich.
So kann es sowohl eine Klasse und eine ID haben.
Und ich empfehle testet diese auf eigene Faust.
CSS Sie am besten nur, indem sie lernen, etwas, sehr einfache Webseite,
Aufstellung einige CSS, und nur zu sehen, wie sie interagieren.
Und Sie werden ein sehr gutes zu gewinnen, intuitives Gefühl dafür, wie es funktioniert.
>> OK, alle gut mit CSS?
Sie gehen alle zu machen, schöne Websites mit CSS jetzt.
OK, Best Practices, gerade Dinge im Auge zu behalten, was
dass-- diesem Grund haben wir andocken Dank für Designer und so weiter.
So schließen Sie Ihre HTML-Tags.
Also, wenn Sie eine offene Stelle haben, es sollte eine enge Körper.
Wenn Sie über einen offenen Abschnitt, es sollte eine enge Paragraphen.
Überprüfen Sie Ihre Seite bestätigt.
Ihr solltet sehr vertraut sein mit diesen Eintrag von p-Set sieben
mit CS 50 Finanz mit dem W3-Validator.
Und wie ich schon sagte, einer unserer großen Paradigmen
trennt Ihren Stil mit CSS von Markup, die HTML ist.
Und dann, natürlich, haben wir diese große XKCD hier unten.
Yay, comic relief!
>> OK, TCP / IP.
Zwischen diesen und HTTP, im Grunde sind sie beide Protokolle.
So dass Sie nur denken konnte, von ihnen als ein Satz von Regeln,
, die, wie die Dinge regeln bewegen sich über das Internet.
So Getriebesteuerung Protokoll oder Internetprotokoll,
ist nur ein Weg, um sicherzustellen, dass die Daten bekommt, wohin es geht
und dass wir wissen, ob wir sind immer Daten fehlen.
Also, wenn Sie Jungs denken zurück zu Vortrag ein paar Wochen mit David
wo wir vier Hüllkurven, sie waren alle wie eine von vier nummeriert,
zwei von vier, drei oder vier, vier vier, das ist nur ein Satz von Regeln.
Wir haben gesagt, OK, wenn wir Senden von mehr als einem Paket,
wir werden an die Nummer mit welcher Zahl ist
und wie viele insgesamt, dass sollte der Benutzer zu bekommen.
>> Und dies ist nur zu sagen, wer wird die Daten, ob sie empfangen
haben alles bekommen oder wenn etwas habe auf dem Weg verloren.
Und sie müssen dafür noch einmal fragen.
Das ist wirklich nur ein Satz von Regeln.
Das ist, wie Sie es sich vorstellen können, OK?
Und auch, den Hafen, gibt es das euch can-- ich in der Vorlesung wissen,
sie hatten eine ganze Liste von Ports.
Aber wir haben sie hier nicht im Augenblick.
>> So Hypertext Transfer Protocol ist, wieder, es ist ein anderes Protokoll.
Es ist also ein weiterer Satz von Regeln dass regeln, in diesem Fall
wie Hypertext übertragen wird.
Also ist es erlaubt nur Browser um Webserver zu sprechen.
Und wie wir hier sagen, es ist wie menschliche Handshake.
Es ist nur ein Weg, um zu regieren , wie der Web-Server
gehen, um mit Ihrem Browser zu interagieren.
Und wir haben nur ein paar Beispiele.
Wir haben einige Anfragen hier wobei GET ist das Verfahren.
Wir haben HTTP 1.1, das ist, Protokollversion für uns.
Und dann wird der Host, der, was wir tatsächlich versuchen, zuzugreifen.
Und dann, wie Sie hier sehen, werden wir bekommen eine Reaktion mit diesem 200
OK, wie unsere HTTP Antwort-Code.
Wir haben eine große Liste werde ich up in einer Sekunde zu ziehen
dass euch kennen sollten.
Und wir haben diesen Content-Typ text / HTML, das sagt nur, welche Art von Daten
erhalten wir vom Server, OK?
Dieser Host und dieser Inhaltstyp sind Teil der HTTP-Header.
Sie können so wenig oder so wenig wie haben für den Kontext erforderlich, was
Sie zu tun haben.
Manchmal werden Sie eine Menge haben, Informationen, die von Ihrem Server.
Vielleicht sind sie anfordert viel von Informationen von dem Benutzer.
Es hängt von dem Kontext abhängig.
Wenn Sie bei CS 50 Study betrachten, es gibt eine Menge mehr dazu.
Aber wir haben eine Menge zu bekommen durch, also werde ich
nach rechts vor, wenn gehen das ist in Ordnung mit euch?
Kühle.
Warten Sie mal.
Ich habe auf jeden Fall, dass ganze Liste von-- huh!
Ich weiß nicht, warum das so ist den ganzen Weg hierher.
Ich dachte, ich buchstäblich bewegt es während ich sitting--
>> DAVIN: Wollen Sie es lehren?
Oder wollen Sie mir, es zu unterrichten?
>> ZIELGRUPPE: Ich dachte, wir könnten nur zeigen, mit zu beginnen.
Ich meine, man kann in gehen sie weiter, aber ich
dachte, dass es mehr Sinn, da ich wurde nur um HTTP-Status vorliegt.
Also hier ist die ganze Liste.
Ich denke, was passieren wird, Davin wird sich später zu ihnen zu gehen.
Aber es gibt eine ganze Liste, ein Vorschau auf den Geschmack zu kommen.
OK, wir gehen zu blow-- das wird um eine PHP-Crash-Kurs wie kein anderer sein.
>> So PHP Hypertext Preprocessor, es ist eine rekursive backronym,
was bedeutet, es ist etwas anderes genannt wurde.
Und dann waren sie wie diese nicht wirklich sinnvoll.
So dass sie nur mit dem Namen es-- und es war ein Akronym,
so dass sie nur gemacht, PHP Hypertext Preprocessor, die
einfach keinen Sinn.
Fun Geschichte.
Es ist eine Programmiersprache.
Also so viel wie ich betonen, dass HTML ist keine Programmiersprache,
es ist eine Auszeichnungssprache, PHP ist eine Programmiersprache.
Wie Sie wissen, ist dies da Logik.
Es gibt conditionals.
Wir haben Variablen, während wir haben nichts von alledem in HTML.
>> Na gut, dann haben wir dieses kleine etwas hier, das ist wie ein Geschmack von PHP.
So Grundlagen, Variablennamen beginnen mit einem Dollarzeichen.
Viele Leute mögen es.
Erinnert an uns Geld.
Es ist alles super.
Wir alle wollen, PHP.
Also haben wir nicht angeben, ein Typ Variablen mehr.
Es wird während der Laufzeit bestimmt.
Der Dolmetscher sein wird, oh, wir gerade durchlaufen,
und nach dem Kontext, wir werden, welche Arten von Typen zu sehen
Diese Variablen müssen zu haben.
Es gibt keine Hauptfunktion.
Die Dinge werden einfach laufen.
Ihr seid mit Import in Ihrem letzte p-Set, werden Sie dies bemerken.
Es war nicht wirklich eine Hauptfunktion.
Sie haben geschrieben, was Sie wollte zu geschehen.
Und es einfach irgendwie passiert.
Also das ist PHP für Sie.
>> Arrays sind sehr ähnlich.
Wir haben immer noch diese Halterung.
Hier einige variable wir arr genannt, und es ist gleich
zu-- wir unsere normalen Klammern erstellen.
Und wir haben einige Schlüsselwert.
Und der große Unterschied zwischen C und PHP-Arrays
ist, dass wir diese associate-- haben Wir können Werte auf Schlüssel zuordnen.
Also, statt nur mit ein Array, das indiziert wird
durch die Anzahl oder die Position dieses Element in dem Array,
können wir tatsächlich verbinden sie mit einem Schlüssel.
Wo können wir sagen, OK, ich will was auch immer Wert wird mit Früchten assoziiert.
Und vielleicht gibt es Obst ging an Banane.
So würde Banane an uns zurück.
>> Aber im Grunde, die mächtige Sache über dieses
ist, dass, wenn euch daran erinnern, die Demo von Vortrag, wo wir im Grunde
rewrote Speller in PHP, und es was-- Lookup war wirklich nur wünschen,
ist dieser Schlüssel gibt es?
Das ist wirklich nett von der Macht der es.
Sie brauchen nicht zu durchlaufen durch das Array.
Sie brauchen nicht zu wissen, was Raum ist es in.
Es könnte am Ende oder der Anfang.
Solange Sie den Schlüssel kennen das ist mit dem Wert zugeordnet,
PHP kann nur spucken diesen Wert gleich wieder bei dir, okay?
>> Und dann haben wir auch nur haben, nur weil wir
können Schlüssel-Wert-Paare bedeutet nicht, dass Sie müssen.
Sie können auch einfach erstellen ein normaler Array wie hier,
an der Unterseite, wo es nur ein, zwei, drei, vier.
Das sind unsere Werte.
Und in der Tat, ihre Schlüssel sind die Indizes.
So ist der Schlüssel für eine Null.
Der Schlüssel für die beiden würde sein.
So weiter und so fort, es sei denn, Sie explizit einen Schlüssel zuweisen,
Sie können davon ausgehen, dass die Wert ist nur ihrem Index.
Heißt das sinnvoll sein, alle?
Keine Fragen?
Ehrfürchtig.
>> OK, das ist eine Möglichkeit, foreach durchlaufen Sie Ihre Arrays.
Also haben wir etwas haben, hier, nur die allgemeine Struktur.
So foreach, der Name unser Angebot, wie auch immer
Sie jede anrufen möchten Element im Array,
und wir können etwas mit zu tun dass Element oder mit diesem Wert.
So haben wir hier ein Beispiel.
Wir haben ein assoziatives Array mit diesen beiden Einträgen
mit Bar, die mit foo zu tun und qux mit baz verbunden.
So Schlüssel foo und baz.
Die Werte sind Bar und qux.
So foreach, haben wir unser Angebot hier, wie der Schlüsselwertepaar.
Dies erlaubt uns, den Zugang sowohl die Schlüssel und Wert.
Vielleicht wollen Sie gerade, die Wert, in welchem ​​Fall
Sie könnten wie arr tun wie $ Wert, und dann
werden nur den Zugriff auf den Wert wie Sie durch laufen.
Aber vielleicht, für einige Grund der Schlüssel wollen,
weshalb ich wählte in diesem Beispiel statt.
So können Sie tatsächlich manipulieren Schlüssel und Wert in diesem Fall.
OK?
Fragen?
>> ZIELGRUPPE: Wenn Sie wollten einfach zu manipulieren den Schlüssel würde
Sie tun müssen, foreach--
>> ALISON: Richtig.
Also, wenn Sie wollen manipulieren Sie einfach die Taste,
Sie müssen noch wäre dies Syntax, denn wenn man nur
haben arr als etwas, als eine Sache, es ist
nehme an, Sie wollen der Wert, nicht der Schlüssel.
Also, wenn Sie jemals einfach nur wie arr so, vielleicht ist dies wie $ Element,
es wird davon aus, dass Sie fragen, nur für den Wert an jedem Punkt.
Wenn Sie explizit wollen etwas zu tun mit dem Schlüssel,
auch wenn Sie nicht zu gehen nichts mit dem Wert,
Sie müssen diese Struktur dass wir hier haben
in dem Sie explizit fragst sowohl für den Schlüssel und Wert.
Gute Frage.
Noch etwas?
Kühle.
>> In Ordnung, PHP und HTML.
Oh, wir sind zurück zu p-Set sieben wieder.
So sollte diese ein wenig bekannt vor.
Also das ist etwas einfaches HTML-Formular das hat eine Eingabe Name hallo.
Und wir sehen, haben wir unsere Methode GET.
Und wenn wir uns erinnern, von unserer p-Set, wenn dieses Formular gesendet wird,
es ein Array namens $ _GET, die hat sendet alle diese Eingänge oder Variablen aus
die Form, die sein sollte in unserem PHP manipuliert.
So dass in diesem Fall der Benutzer würde in ihrem Namen gesetzt.
Sie eintragen.
Und wir sehen, dass wir hier etwas Array.
Wir haben unsere GET-Array.
Und wir greifen auf den Namen.
>> Also, das sagt, OK, geben Sie mir die Wert, der mit dem Namen verknüpft ist,
Name, der hier der Schlüssel.
Und das Karten direkt an, was sagten wir unseren Input Name ist.
Also das war die Ihnen die Schlüssel zu dem, was wird sich in Ihrem Array hier zu sein.
Heißt das sinnvoll sein, alle?
Ja?
>> ZIELGRUPPE: Sagt Ihnen der Name in GET beziehen auf die violette Linie in [unverständlich]?
>> ALISON: Er bezieht sich auf das hier.
Also das Feld hier, es bezieht sich auf diesen Namen hier.
So könnte genannt worden wie Telefonnummer oder was auch immer.
Dieser Name sagt eigentlich, was rufst du dieses Feld?
Wie wollen Sie finden Sie in diesem Bereich?
Und dieser Name ist eigentlich mag, wir sind sagen, dieses Feld wird der Name genannt.
Das ist, wie wir gehen, um darauf zuzugreifen.
>> ZIELGRUPPE: So wird es Ihnen gefällt, Eingabename entspricht Bob, und--
>> ALISON: Rechts, dann Bob würde dort unten zu bekommen.
Genau.
Jeder cool?
Na gut, so dass man im Vergleich zu POST, das sind die beiden Hauptwege
dass wir Daten zu übergeben in einer HTTP-Anforderung.
Ihr solltet gesehen haben diese beiden hoffnungsvoll.
Also mit GET, die Informationen wird über die URL übergeben.
Also, wenn Sie jemals tun Google Suchen, YouTube, werden Sie
wahrscheinlich feststellen, einige Fragezeichen.
Und dann alle Worte dass Sie gerade in es gesetzt.
Und POST übergibt die Daten in der HTTP-Nachrichtentext.
Also im Gegensatz zu erhalten, können Sie Art betrachten dass die Daten von dem Anwender verborgen.
Aber was ist wirklich wichtig zu verstehen
ist, dass dies noch ebenso unsicher wie GET.
Die Analogie Ich mag zu verwenden ist, wenn Sie Ihre Kontonummer haben
und Sie können es auf der Außenseite zu schreiben eine Hülle, das ist ziemlich unsicher.
Würde man es auf ein Stück zu schreiben Papier und legen Sie sie in den Umschlag,
es ist immer noch sehr unsicher, da alles, was Sie tun müssen, ist zu öffnen, dass sich
und sehen Sie sich die aktuellen Inhalte der Nachricht, das zu sehen.
Also das ist "versteckt", und Menschen wie zu denke, es ist sicher, aber es ist wirklich nicht.
Und ich bin sicher Davin werden erhalten in diesem mehr, vielleicht.
Aber es ist eine wichtige Unterscheidung zu machen,
und etwas wirklich Gutes zu verstehen.
>> OK, SQL, Structured Query Language.
All das Zeug, wir haben so vor kurzem gesehen!
So ist es im Grunde nur entworfen, Offensichtlich ist für die Verwaltung von Daten.
Ihr Jungs hatten eine Menge Erfahrung mit diese in Ihren Tabellen mit PHP MyAdmin.
Und es gibt vier häufigsten Fragen dass wir wollen, dass Sie Jungs wissen.
Es gibt also aktualisieren, einfügen, auszuwählen und zu löschen.
So stellen Sie sicher wissen, die wirklich gut.
Wir werden gehen durch sie wirklich schnell.
>> So aktualisieren Sie wirklich, wie das, was Sie vielleicht denken, es tut,
es aktualisiert nur Daten in Ihrer Datenbank.
So haben wir hier einige Beispiele.
Dies ist die allgemeine Struktur einer Aktualisierungsabfrage.
Also haben wir die Tabelle zu aktualisieren dass wir hier reden.
Und wir bestimmte einstellen möchten Werte, bestimmte Spalten
gleich bestimmten Werten.
Also das gerade aktualisiert die Tabelle, Ändern Werte in allen Zeilen in diesem Fall.
Also in diesem einen hier unten, eine tatsächliche Wir haben beispielsweise insert-- leid.
Das Schiebevoran ohne mir dessen bewusst zu sein.
>> So ist dieses Updates Tabelle col1 gleich um val1, wo Haus gleich "Currier."
Was dieses tut, ist, es ändert sich nur, nur sie
aktualisiert diese Werte an bestimmten Orten.
Also in diesem ersten, ändert sich diese Werte für alle in der Tabelle,
OK?
Es wird dies ändern Spalte für jeden einzelnen Eintrag,
für jede einzelne Zeile.
Aber das, wo, könnten Sie betrachten Sie es als Qualifikation.
So ist es nur geht, um zu ändern es in ganz bestimmten Orten.
So in p-Set sieben, wenn Sie vielleicht aktualisiert die Menge an Bargeld
dass Ihr Benutzer hatten, haben Sie wahrscheinlich hatte einige, wo ID entspricht Session-ID, oder?
>> Weil Sie nicht wollen, ändern Sie die Menge an Bargeld
für jede Person, wurde mit Ihrer Webseite ein.
Du wolltest es für einen ändern bestimmte Person, dass diese Person
wer auch immer Sie es zu dieser Zeit.
Richtig?
OK, so einzufügen, Einsatz bestimmte Werte in Tabellen.
Das ist wie wenn man Schaffung einer Marke neuen Benutzer.
Die allgemeine Struktur hier in welchem ​​Tabelle einfügen
wir reden.
Werte, dass die Werte, wir wirklich wollen, ein.
OK, so wie wir hier sehen, werden wir sind in Tabelle einfügen.
Dies ist bestimmte Spalten mit ihre Werte entsprach.
Also das sagt, einfügen eine neue Zeile mit
Werte val1 und val2 unter diese bestimmte Spalten.
>> Vielleicht möchten Sie nur ausfüllen out Hälfte der Dinge, die in dieser Reihe.
Das ist, was dieser Teil hier können Sie tun.
Damit können Sie wirklich festzustellen, welcher Teil.
Ja?
>> ZIELGRUPPE: Können Sie nur [unverständlich] Zellen in der Zeile [unverständlich]?
>> ALISON: Wenn Sie nur ausfüllen bestimmte Teile Ihrer Reihe,
der Rest dieser Zellen sind nur leer.
Solange Sie es ihnen ermöglichen, leer sein, ist es kein Problem.
Wenn Sie versuchen, auf sie zuzugreifen, ist es wird einige Leerelement zurückzukehren.
Aber es ist wichtig zu wissen, daß in bestimmten Tabellen,
sie haben zu dürfen null sein.
Sie können in einem durchgeführt haben Problem während Ihres p-Set
weil wir nicht lassen Ihre Werte null sein.
Aber Sie können eine angeben optionaler Wert in der Tabelle.
>> OK, das ist so zu wählen, nur ein Weg,
spezifische Daten aus einer Tabelle auf einige Kennung, die Sie wollen.
So wählen Sie Sterne von Tisch, an dem col gleich etwas bedeutet nur,
Gib mir alle Daten verbunden wo diese bestimmte Spalte gilt.
So der Star in diesem Fall wird Rückkehr die gesamte Zeile, Sie, ja?
>> Und dann, in diesem Fall wählen Sie aus star Tabelle gibt Ihnen nur die gesamte Tabelle.
Und dann, natürlich zu löschen, es ist einfach löscht die Zeile aus der Tabelle.
So aus der Tabelle zu löschen, was auch immer Tisch wir sind
Referenzierung, wo einige spezifische Kennung oder eine Bedingung erfüllt ist.
Ja?
>> ZIELGRUPPE: Frage.
Warum verwenden Sie Doppel Zitate, und ob Sie
tun doppelte Anführungszeichen oder Einzel Zitate, macht es einen Unterschied machen?
>> ALISON: doppelte Anführungszeichen oder einfache Anführungszeichen nicht einen Unterschied machen in SQL.
Ich dachte, ich sah eine andere Frage.
Ja?
>> ZIELGRUPPE: Macht es nicht beeinflussen, was wird aus der Abfrage entkommen?
>> ALISON: Rob?
>> ROB: Was meinen Sie mit entkam aus der Abfrage?
>> ZIELGRUPPE: Wenn jemand ein einzelne Abfrage in Form von--
>> ROB: Wenn jemand stellen ein einfaches Anführungszeichen in,
dann so lange wie Sie sind Desinfektions Ihre Eingabe, dann ist es egal.
Aber wenn Sie mit einem einzigen sind Angebot und Sie sind falsch
Flucht Ihre Eingaben, dann ja, müssen sie
um ein einfaches Anführungszeichen, um umgebrochen werden müssen Ihr Code. Wenn Sie Anführungszeichen verwenden,
sie zu einem Doppelbett setzen müssen zitieren, um den Code zu brechen.
Aber so lange wie Sie die Dinge zu entkommen korrekt, es spielt keine Rolle.
Es ist nur eine Übersetzung erfolgen soll auf die richtige Symbol sowieso.
>> ZIELGRUPPE: Was bedeutet Flucht das?
ALISON: Nun, wie Desinfektion und Flucht.
Die Prüfung, die wir haben, der große XKCD comic, dass sie nach oben ziehen, in dem Sie haben,
OH-
ROB: Es ist die letzte Folie.
ALISON: Es ist das letzte Bild, das wirklich?
Oh mein Gott.
Dort gehen wir, perfekt.
OK, so dass im Grunde, die Sie injizieren können etwas in dieser SQL-Abfrage
wo es bricht Ihrer Code oder als David zeigte,
in der Klasse, wenn wir einige Einzel Zitat 1 gleich 1 ist, und wenn in unserem Code,
wir direkt zu kopieren, dass in und wir haben ein einfaches Anführungszeichen endet,
was passiert ist, wir bekommen einige Ausdruck,
true ergibt das wird lassen Sie jemand geben unserer Datenbank
versorgt dich mit Daten, die wir wollen sie nicht zu bekommen.
So Desinfektion der Ein- bedeutet nur, um sicherzustellen,
dass wir diese Flucht Zeichen und sie bezeichnenden
als Zeichen und nicht die Dinge, dass zugelassen werden soll
wörtlich zu nehmen wie unsere SQL-Anweisung.
>> Die große Sache, dass wir das dass euch verwenden sollten
waren HTML Sonderzeichen, Das ist etwas,
dass Sie vielleicht einen Blick auf zu nehmen.
OK, löschen.
Datentypen, das wird alles online sein.
Da wir 15 Minuten verlassen, ich bin gerade dabei, Recht durch diese gehen.
PHP und SQL, das ist im Grunde nur wir eine Abfragefunktion hatte, dass
half schützen vor diese böswillige Angriffe.
Also, wenn Sie verwenden, Abfrage wurden wir dafür sorgen,
dass die Dinge bereinigt und so weiter.
>> MVC ist nur ein Design-Paradigma, so Model, View, Controller.
Es ist nur ein Weg, um Dinge zu halten schön und bis in gleicher Weise aufgeteilt
dass wir dazu neigen zu Faktor aus Code in Funktionen.
Dies ist nur ein Web-Design-Rahmen das Ihnen erlaubt, das gleiche zu tun.
Ich werde diese zu überspringen.
>> Das ist etwas, was ich wäre super bequem mit sein.
Es ist ein großartiges kleines Tisch gibt.
Es gibt Ihnen die Funktion Beispiel für das Modell.
Ich werde nur durch das, weil ich wirklich wollen Davin, um zu sprechen.
Wenn Sie irgendwelche Fragen haben, wenden Sie sich bitte.
Ich werde hier nach sein.
Kommen Sie einfach mit mir reden.
Damit haben wir HTTP-Status vorliegt.
Und Davins die Luft zu sprengen durch diese in 15 Minuten.
Das wird großartig werden.
>> DAVIN: OK.
Äh, Ihr Mikrofon?
Ja.
Entschuldigung.
ALISON: Weise vorbereitet werden.
DAVIN: Nein, ich bin bereit.
Ich bin bereit.
Das machen wir.
Es ist fertig.
OK.
Entschuldigung.
Ich verschütteten Kaffee auf mich.
Ich weiß nicht, ob ich mehr aufgeregt, dass ich lächerlich,
oder dass ich nicht Kaffee trinken mehr.
Wie auch immer, nur eine kurze Ankündigung über das Blatt, das Sie Jungs haben.
Also das Blatt euch haben, ist nicht die offizielle, was auf dem Quiz.
Dies ist die offizielle, was auf dem Quiz.
Auch auf der Website, wir sagen Sie, OK, das wird auf dem Quiz können.
So in der kleinen Spickzettel Sie haben, nicht offiziell.
Und es gibt Fehler auf sie.
Also am besten nicht nur blind verwenden.
Also ja, das ist, dass.
Lassen Sie uns also in diese ganz schnell zu bekommen.
>> So HTTP-Status vorliegt.
Also, was passiert, wenn die Website, ist alles in Ordnung.
Alles in bester Ordnung.
Doch alles über Sie so, wie Sie es wollen.
Sie erhalten eine 200 OK.
301, wo haben wir gesehen, dass 301 vor?
Warten Sie, was ist los?
Entschuldigung.
Wir sahen i Zinn Vortrag während Sicherheit.
Also während der Sicherheit, so dass, wenn David tippte http und dann versucht, zu cs50.net gehen,
Sie gehen zu sehen, 301 bewegt.
Warum?
Denn es wird umgeleitet Sie automatisch in unseren HTTPS.
>> So 301 bewegt, so ist es im Grunde eine Umleitung.
Und Sie können über sie so denken.
Jeder der Zustände, die mit 2 beginnen, die sind wie, OK, dass alles funktioniert.
Jeder der Zustände, die beginnen 3, das sind die Umleitung.
Zustände, die mit 4 beginnen, dass Mittel gibt es eine Art von Client-Fehler.
Zustände, die mit 5 beginnen, das ist eine Art von Server-Fehler.
So können Sie Art aufzubrechen die Zustände so.
Also nicht 304 nicht geändert, so dass in Ihrem server.c p-Sets, so sagen wir, Sie
bela cat.html.
Alles kommt zurück, Sie 200s, OK, groß.
>> Angenommen, Sie haben es aktualisiert.
Nun, im Inneren, cat.html, haben Sie eine JPEG.
Nun, das ist nicht die JPEG- werde wieder geladen werden.
Sie werden nicht zu einem anderen veröffentlichen GET-Anforderung an den Server,
und dann bekommen alle diese Informationen zurück.
Es wird nur be-- dass Bild werde auf Ihrem Computer zwischengespeichert werden.
Und so, dass ein Bild 304 sein.
Es ist also nicht verändert.
Wenn Sie schließen aus, klar, Cookies und aktualisieren
und versuchen, diese Seite zu laden wieder, wirst du sehen, 200s.
Du wirst doch nicht, dass die 304 sehen.
>> 400, bad request, Echt schnell, wie wenn Sie
im Begriff waren, ein senden JSON-Objekt an den Server
und Ihre JSON-Objekt nicht korrekt war, Sie werden so etwas zu sehen.
403, verboten.
Wann würden Sie sehen eine verbotene?
Wahrscheinlich Wahrscheinlich?
ZIELGRUPPE: Chmod.
DAVIN: Chmod, ja.
So können Sie nicht festgelegt haben Rechte korrekt.
404 nicht gefunden.
Es ist einfach nicht da.
Also, wenn Sie in die falsche URL eingeben.
500, interner Serverfehler, der Server wahrscheinlich wurde nicht richtig konfiguriert.
Was tun, wenn auf Ihrer Seite, aber etwas auf der Serverseite.
Und 503?
Eine Menge Leute gesehen 503s in der letzten p-Set.
Wann möchten ist das passiert?
Ich habe gehört, flüstert.
>> ZIELGRUPPE: Wenn Google Sie entscheidet ein Roboter sind.
DAVIN: Ja, wenn Google entscheidet, Du bist ein Roboter, Sie 503s zu bekommen.
Also das ist eine Überlast.
Wenn Sie vom Server angefordert haben zu viel, es ist in der Regel zeitlich begrenzt.
Und die meisten von euch bemerkt.
So sah man 503.
Sie könnten ein wenig genommen haben Pause, dann gingen die 503s entfernt,
und alles war in Ordnung.
>> GABE: sehr schnell, wenn Sie Jungs 500 in wahrscheinlich dieses letzte Problem ein?
Ja?
>> ZIELGRUPPE: In der Regel, wenn die Server eine Datei verloren
oder [unverständlich] ihre Maschine [unverständlich].
>> GABE: So könnte es eine Konfiguration Problem in der PHP auf Ihrem Server.
Aber es könnte nur etwas sein, wie ein Semikolon, die Ihr Passwort.
Wenn Sie mit der Eingabe von PHP sind, einige falsche Syntax
erhalten Sie möglicherweise so ähnlich.
OK?
>> DAVIN: Kühl.
Soll ich gerade zu tun, bis AJAX suchen?
>> GABE: [unverständlich].
DAVIN: OK.
Also, was ist das DOM?
Was bedeutet DOM stehen?
>> ZIELGRUPPE: Dokument-Objektmodell.
DAVIN: Nice.
Und warum tun wir etwas für Sie?
Ehrfürchtig.
Richtig, ermöglicht es uns, so dass es nur um den Zugang HTML, Zugriff auf unsere Seite sehr schnell.
Warum?
Weil wir die Behandlung unserer Seite, die Behandlung unserer HTML-Tags,
Behandlung alles als ob sie Objekte.
Wenn wir behandelt sie wie sie sind Objekte, so was können wir tun?
Nun, wir können Funktionen auf sie zu nennen.
Und das ist wichtig, warum?
Nun, da werden wir verwenden JavaScript unseren HTML aktualisieren,
aktualisieren diese Objekte.
Also, wenn wir behandeln sie wie Objekte, wir können dann Funktionen fordern sie.
Ich werde in diese ein wenig zu bekommen mehr als ich in JavaScript zu gehen,
aber Sie haben alle gesehen, wie document.getElementById.
So ist Ihr Dokument Element, erhalten Element nach ID,
so wirst du sehen sind seit einiger ID in einem HTML-Tag.
Und dann, Sie tun können, etwas anderes zu.
Zum Beispiel, wie document.body, dann können Sie Kind anhängen.
So wirst du, um das Dokument zu finden.
Sie haben das Dokument.
Sie werden, um den Körper zu finden.
Sie fand die Leiche.
Und dann, du bist zu gehen rufen eine Funktion auf sie.
So hängen Sie Kind, und Sie können anhängen einige HTML auf das Ende in Ihrem Körper.
Also im Grunde, nur du bist behandeln Sie es wie ein Objekt.
Du behandelst HTML Tags wie ein Objekt.
Und es macht es sehr einfach und schnell durch sie gehen.
Aber es ermöglicht Ihnen auch Funktionen auf sie nennen
so dass Sie manipulieren können und ändern Sie die Elemente.
>> GABE: Angesichts dessen, warum ist JavaScript solchen eine schöne Sprache, um mit HTML interagieren?
Die Chancen stehen, als die Leute die Wahl die Sprache für den Browser,
für Client-Seite, JavaScript ist wirklich nett,
es ist wirklich gut im Umgang mit Objekten.
Und die Objekte eine Art, wie die Objekte, die in der HTML erscheinen,
so ist es für JavaScript sehr einfach diese Art von Behandlung zu tun.
DAVIN: Nice.
Also hier ist nur ein Beispiel.
Ich denke also, auf der letztjährigen Quiz, oder vielleicht vor zwei Jahren, wir
Sie gebeten, einen Baum zu erstellen.
Also das ist genau das, was Sie tun würden.
Sie beginnen also mit dem Dokument.
Und dann haben Sie im Grunde Schauen Sie sich die Tags.
Also, wenn Sie, wir freuen beginnen Sie mit einem HTML-Tag.
Und dann Hinweise, wie um Sie tun dies auf der Grundlage der Vertiefung.
Also Kopf Art abzweigt.
Im Kopf, haben wir ein weiterer Tag für Titel.
Also haben wir einen Titel-Tag.
Und im Inneren, haben wir eine Schnur.
Und so sind wir vertreten eine Zeichenkette in einen Kreis.
Und all die Tags sind in den Quadraten.
>> Und wenn Sie schauen, wenn wir Betrachten Sie das als einen Baum,
und lassen Sie uns sagen, dass HTML Eltern, dann Kopf und Körper
gehen, um Geschwister sein.
Sie sind beide sein wird Kinder dieser Eltern.
Also, weil sie beide Geschwister, sie sind
werde Art neben sein einander in unserer Baummodell.
Und dann, Sie im Grunde tun genau dasselbe.
Also nicht schwierig, aber wir gefragt haben, Fragen wie diese, bevor auf dem Quiz.
GABE: Hat jemand Fragen so weit?
Ist es gut?
DAVIN: Kühl.
JavaScript OK, die guten Sachen.
So JavaScript, was ist JavaScript?
Nun, es ist kein JavaScript ist-- komplizierte, aber diese
sind nur einige der Highlights dass Sie sollten im Hinterkopf behalten.
Erstens, es ist schwach typisierte.
Was bedeutet das?
So PHP was-- ja, was ist los?
>> ZIELGRUPPE: Sie müssen nicht explizit müssen mitteilen, welche Art von Variable es sich handelt.
DAVIN: Perfect.
So sagte er Sie nicht haben ausdrücklich den Typ der Variablen.
Das ist genau richtig.
So in C, wenn ich int i gleich 50, dann in PHP, es ist nur so, $ i,
gleich 50 ist.
Dann in JavaScript was wäre der Anruf sein?
Var, nicht wahr?
Es würde sein wie var i gleich 50.
Aber Sie haben nicht zu sein, wie, OK, das ist ein int.
OK, das ist ein String.
Keine Notwendigkeit, das zu tun.
Es ist eine interpretierte Sprache.
Also, was bedeutet das?
>> ZIELGRUPPE: Nicht zusammengestellt.
>> DAVIN: Was nicht kompiliert das?
Ja?
>> ZIELGRUPPE: Sie müssen nicht um den Code zu restrukturieren
es bereit zu bekommen der Computer, um sie auszuführen.
Es ist nur zu dem Zeitpunkt genommen Ausführung und der Computer [unverständlich].
DAVIN: Ja, so ist es zu gehen gehen durch einen Dolmetscher.
Aber du bist genau richtig.
So wirst du nie um es zu kompilieren, oder?
Wenn Sie bisher Ihre PHP und JavaScript-Code,
Sie nie aufgerufen Kompilierung.
Man kann nie etwas namens wie zu machen oder so etwas.
Das ist, weil es interpretiert.
Also jedes Mal, es über den Browser geht, es geht durch einen Dolmetscher.
Und das wird sie zu interpretieren nur in Echtzeit sofort für Sie.
Also, was sind einige positive und negative um eine interpretierte Sprache
und eine kompilierte Sprache?
So compiling-- ja, was ist los?
>> ZIELGRUPPE: Ausgelegt ist langsamer.
DAVIN: In welchem ​​Sinne?
>> ZIELGRUPPE: Nach kompilieren, müssen nicht Sie
keine zusätzlichen Schritte zu tun, um ausführen es, während dieser [unverständlich].
>> DAVIN: Richtig, perfekt.
Also, was Sie gesagt haben ist im Grunde, dass Zusammenstellung,
beim Kompilieren haben Sie ein Viele Investitionskosten, nicht wahr?
Du wirst es zu kompilieren.
Aber nachdem Sie es zu kompilieren, die Compiler geht um es zu optimieren.
Es wird schnell sein.
Es wird im Grunde werden so schnell wie möglich zu machen.
Mit der Interpretation, die Sie nie haben, dass die Kosten im Voraus.
Vielmehr, es wird etwas langsamer sein jedes einzelne Mal, wenn Sie es zu interpretieren.
Und du wirst zu haben sind interpretieren sie jedes Mal.
Also anstatt diese einmalige Kosten, jetzt bist du
gehen sie zu interpretieren zu müssen jedes Mal, wenn die Seite macht.
>> So Dolmetscher sind gut, weil Sie müssen nicht um es zu kompilieren,
aber sie sind schlecht, dass jeder Mal die Seite geladen wird, ist es
werde zu haben, interpretieren diese JavaScript.
Und es geht um etwas langsamer laufen als wenn Sie es zu kompilieren waren.
Damit können Sie communicate-- oh, warten.
Wird verwendet, um die zu manipulieren Inhalt und Aussehen.
Wir sprachen gerade darüber.
Es verwendet das DOM.
AJAX, werden wir in zu erhalten AJAX in ein wenig.
Und dann ist es Client-Seite.
So PHP ist Server-Seite.
JavaScript ist Client-Seite.
Was sind positiv, dass?
Sie sagt, sie.
Es ist schneller, nicht wahr?
Weil Sie nicht über zu-- es ist schneller.
Sie müssen nicht, um zu kommunizieren mit einem anderen Gerät.
Wenn Sie gerade unterwegs sind, Ihren Kunden, sind Sie nie
zu haben, um zu gehen und sehen, was auf dem Server
und dann wieder zurück zu melden oder so ähnlich.
So Client-Seite neigt, ein bisschen schneller.
>> GABE: Ja, aber diese bedeutet nicht, dass PHP ist
schneller als JavaScript oder etwas ähnliches.
Sie laufen Art in der gleichen Geschwindigkeit, weil sie sowohl
interpretierten Sprachen.
Die Sache, die langsam ist hier ist die Anfrage.
Sie sind also eigentlich vor sich geht den ganzen Weg über Brasilien
um einige Informationen zu bekommen dass dort lebt.
Aber PHP und JavaScript, sie Art laufen in der gleichen Geschwindigkeit.
Es ist nicht, dass man schneller als die andere.
Auch dies Fangfrage hier.
So JavaScript niemals Maschinencode, wahr oder falsch?
>> ZIELGRUPPE: False.
GABE: False.
Es muss Maschine geworden Code da Maschinencode ist
das einzige, was die Maschine versteht.
Auch wenn es nicht kompiliert, noch wird Maschinencode
weil der Dolmetscher ist nur ein Programm, das Linie geht durch Leitung
und wandelt diese Zeile in etwas, die der Computer versteht.
OK?
Kühle.
>> DAVIN: Hier ist nur ein sehr einfaches Hallo Welt JavaScript-Programm.
Also ich weiß nicht, if-- du das gesehen habe.
Aber man muss nur HTML hier.
Und statt der tatsächlich setzen das JavaScript in den Script-Tags,
so man normalerweise legen Sie sie in den Kopf.
Sie müssen Script-Tags.
Sie legen Sie es dort.
Alles, was wir hier getan haben ist, dass wir in-- verknüpft haben so dass wir in einer JavaScript-Datei verknüpft haben
so was.
Und Sie alle getan haben, oder?
Also, wenn Sie mit jQuery und wurden Underscore.js im letzten p-Set,
Sie müssen nicht jede Menge Code in Ihre Script-Tags, in Ihrem Kopf.
Sie können das tun, aber statt Sie gerade Verknüpfung in.
Und du bist Verknüpfung in Genau wie Sie mit CSS zu tun.
So ist es nur macht es einfacher, so zu lesen Ihr Code ist nicht wie 1000 Zeilen lang
mit Tonnen von Funktionen, Sie möglicherweise nicht verwenden werden.
>> Stattdessen können Sie einfach verbinden Sie in.
Es compartmentalizes es.
Es ist wie das Schreiben einige Header-Datei, und dann auch, dass die Header-Datei in C
Betrachten Sie es einfach so.
Was bedeutet dies nun tun?
Nun, das wird laufen.
Es wird zu alarmieren.
So wirst du ein wenig zu bekommen sind Pop-up namens Hallo Welt.
Kurze Frage, nur Plausibilitätsprüfung, so dass Sie sehen hier in den Körper,
sagen Körper, HTML hier.
Was kommt zuerst?
Sehe ich Körper, HTML hier, oder muss ich den Alarm zuerst sehen?
>> ZIELGRUPPE: Alert.
>> DAVIN: Richtig.
Er sagt, Alarm.
Warum?
>> ZIELGRUPPE: Weil Sie gehen von oben nach unten.
>> DAVIN: Ja.
Perfect.
So sagt er, Sie von oben zu gehen Boden, die absolut korrekt ist.
Sie werden von oben nach unten zu gehen.
Und in JavaScript jQuery, müssen Sie eine Funktion, wie onload oder bereit ist,
und das sagt, OK, warten Sie, bis alle diese HTML geladen wurde.
Und dann, rufen Sie die JavaScript.
Weil wir nicht hier, die haben, dass das erste, was, das geht zu geschehen
wird, es wird von oben nach unten zu gehen.
Es wird getroffen, dass JS rufen, wird es zu alarmieren.
Danach können Sie auf OK klicken, dass Alarm verschwindet.
Dann, es wird zeigen, Sie der Körper HTML hier.
Nizza.
>> OK, so dass nur sehr schnell, schriftlich in JavaScript ist super schnell.
Um zu erklären, eine Variable, Namen var.
So in C, müssen Sie int i, haben Sie zu erklären, welche Art von Typ es sich handelt.
PHP, $.
JavaScript var.
Wir sprachen über diese.
Alles klar, lass uns gehen.
>> Loops, dasselbe.
Gleiche.
Funktionsdeklarationen, so wie Sie in C gesehen haben
Das einzige, was anders ist, so dass, wenn Sie andere Programmiersprachen zu bekommen,
wie wenn Sie nehmen 51 im nächsten Semester und Sie können mit ocaml tust,
können Sie mit anonymen Funktionen umzugehen.
Also das ist genau das, was Sie hier sind.
Sie wollen also in Summe setzen wollen, eine Art Summenwert.
Aber Sie könnten nur tun es einmal.
So müssen Sie nicht wollen, nennen es Funktion Summe, geben ihm eine Funktionsdeklaration.
Stattdessen können Sie es einfach verwenden, als eine anonyme Funktion.
Und Sie dieses viel gesehen haben.
Sie werden ein Beispiel zu sehen diese in ein paar Dias.
Ja, wir werden sehen.
GABE: Gute Frage.
Wann können Sie verwenden möchten eine anonyme Funktion hier?
Grundsätzlich, wenn Sie etwas wollen, wie ein Ereignis, zu geschehen.
Also, wenn die Maus geklickt wird, beispielsweise
Sie wollen eine Funktion aufgerufen werden.
So können Sie mit dem Ereignis übergeben Handler übergeben Sie an das Ereignis,
Art, die Funktion, Sie wollen, aufgerufen werden.
Und was ist übergeben Sie ist wie am Ende
der Tag, nur ein Zeiger auf daß der Befehl, an die Funktion.
Also es ist nicht so übergeben Sie der gesamte Code, ebenso wie
einen Zeiger auf die Funktion.
Und dann, wenn jemand klickt der Maus, wird diese Funktion aufgerufen wird.
>> DAVIN: Arrays, so dass Sie haben eine Reihe Erklärung.
Dann wird ein Array an Sachen.
Sehr schnell, was diese ausdrucken?
Was wird das dritte Element sein?
>> ZIELGRUPPE: "JS".
>> DAVIN: Richtig, es wäre "JS".
Warten Sie, gehen Sie zurück.
Wie lang ist?
>> ZIELGRUPPE: Drei.
DAVIN: Drei, oder?
Genau das, was Sie denken.
OK, jetzt zu gehen.
Arrays können Sie die Dinge um sie hinzuzufügen.
So können Sie über das hinausgehen kann ihrer ursprünglichen Grenzen.
Nur etwas im Auge zu behalten.
PHP, JavaScript, sie sind ein wenig wenig toleranter in Bezug auf die Dinge,
so.
Objekte, sehr ähnlich Strukturen in C, sehr viel
wie assoziative Arrays in PHP.
Sie alle haben schon Erfahrung mit diesem.
So JSON, wenn Sie vorbei JSON sind in p-Set acht vor und zurück,
das ist Ihr Ziel.
>> Also ja, zB ganz schnell Beispiel.
Hier ist ein Objekt.
Die Art und Weise dieser Referenz Objekt, so dass nur sehr schnell,
sagen wir, ich wollte herausfinden out, OK, was ist der Kurs?
Und so ist die Objektnamen hier CS50.
Und dann, wenn ich ein assoziatives Array, wie würde ich das tun?
Ich werde mit einem Schlüssel, nicht wahr?
So habe ich den Namen des Arrays.
Ich habe Halterung, Zitate, Schlüssel, Ende Zitate, Endwinkel,
und das wird verweisen, dass Element in meinem assoziatives Array.
Wie kann ich verwiesen Natürlich in meinem Objekt?
Jeder weiß?
>> ZIELGRUPPE: [unverständlich].
>> DAVIN: Was ist los?
ZIELGRUPPE: CS50.course.
DAVIN: Richtig, ja.
So CS50.course.
So, wie Sie die Dinge verweisen in einem JSON-Objekt ist mit einem Punkt.
>> ZIELGRUPPE: Sie können auch Array-Syntax verwenden.
>> DAVIN: OK, gut.
>> GABE: Sie können auch CS50 Halterung zu verwenden, String, wie Anführungszeichen.
ZIELGRUPPE: Ich denke, es ist identisch mit PHP.
GABE: Es ist die gleiche Sache.
DAVIN: Schön!
Aber Sie werden diese an anderen Orten zu sehen.
Ja, so weiterzumachen.
Dies ist, was ich gerade gesagt habe.
Also in eine JavaScript jQuery Beispiel.
Also das ist meine DOM, nicht wahr?
Sehr schnell, so dass ich ein Kopf, Hallo Welt, Körper.
Ich habe eine Schaltfläche.
Er sagt, "Push mich", so möchte ich es schieben.
Und ich möchte etwas zu tun wenn es angeklickt wird.
Rechts neben.
>> Richtig, das ist so meine JavaScript.
So jQuery ist nur ein einfacher Weg, um JavaScript zu schreiben.
Also das, und was ich zu zeigen, Sie das nächste Mal, wird sich jQuery sein,
sind identisch.
So werden sie die gleichen Dinge zu tun.
Nur jQuery neigt dazu, ein wenig leichter.
Menschen neigen dazu, es mögen.
Es verfügt über eine Vielzahl von Funktionen.
So können die Leute neigen dazu, jQuery verwenden.
Sie alle verwendet jQuery in der letzten p-Set.
Also, was wird dies zu tun?
Was wird diese JavaScript-- so Das ist einfach nur JavaScript.
Was wird dies tun?
Was wird es tun?
>> Also zuerst, Sie sehen Fenster onload.
Richtig?
Also haben wir nicht gesehen, dass vorher nicht.
Also das wird warten bis die gesamte Fenster Lasten.
Es wird also warten, bis HTML, werden alle Bilder laden
bevor es irgendetwas tut.
Also sagen wir mal unsere DOM geladen wurde.
Alles, was da ist.
Und was wird passieren?
Ja?
>> ZIELGRUPPE: Button erscheint.
>> DAVIN: Die Schaltfläche ist schon da.
Ja, so dass die Taster der schon da.
Aber das sagen wird, OK, wenn ich auf die Schaltfläche,
so dass die Taster ist bereits da, wie die HTML-Tag.
Warten Sie, gehen Sie zurück, sehr kurz.
Diese Markierung rechts rechts hier wird ein Button schon sein.
Es gibt bereits eine Taste.
Aber dann ist die JavaScript Tag, genau hier,
es sagt, OK, ich will zum Element ID zu bekommen,
so Suchtaste nur sagt, OK, ich will diese Variable auf diese Schaltfläche Karte.
Damit die Variable ist nur eine einfacheren Weg, um Zugriff auf diese Taste.
Und ich sage, OK, wenn ich Sie, dass Taste, so dass, wenn ich auf das Element,
und dieses Element verweist auf die Taste, wenn ich Sie es,
dann möchte ich eine Funktion aufrufen.
Hier ist einer jener anonymen Funktionen haben wir gesprochen.
>> Rufen Sie einfach eine Funktion.
Innerhalb dieser Funktion, im Grunde etwas, wir haben eine Menge, wachsam zu sehen.
Sie klicken Sie auf die Suchtaste.
Es wird grundsätzlich eine Taste.
Sie klicken Sie darauf.
Sie erhalten diese Benachrichtigung.
X aus.
Das ist es.
Ja?
>> ZIELGRUPPE: Wenn Sie also das Skript [Unverständlich], script-Tag im HTML?
>> DAVIN: Sie können das Skript setzen Tag gerade in den Kopf
weil Sie diese onload.
Es ist auch, dass ein Klicken zu haben.
Es wird also warten, bis Sie etwas anklicken.
Aber onload nur um sicher zu sein, zu machen sicherzustellen, dass alles Lasten in Ihren HTML-
vorher.
Ja?
Sie möchten noch etwas sagen?
>> GABE: [unverständlich].
DAVIN: Ja.
>> ZIELGRUPPE: So vermeidet onload Definieren des variablen Suchtaste
indem einfach nur sagen document.getElementById Suchtaste dot [unverständlich].
>> DAVIN: Auf jeden Fall, aber dann Ihre String wird immer riesig.
Genau, so ist dies nur zu machen es einfacher für Sie, ja.
Ja?
>> ZIELGRUPPE: Wo haben wir erstellen window.onload?
Oder document.ready?
>> DAVIN: Ja, es gibt.
Ja, es ist, ich überprüft.
>> GABE: Nicht für sie zu interessieren.
>> DAVIN: OK, also werde ich um Ihnen trotzdem erzählen.
Also im Grunde, nur im Allgemeinen, so window.onload wartet, bis Sie Ihre DOM, alle
Ihre HTML, Lasten.
Er wartet, bis Sie Ihre Bilder laden.
Er wartet, bis alles geladen wird.
document.ready, es ist einfach wartet, bis Sie Ihre DOM Lasten.
Sobald der HTML ist alles da, einmal Ihre DOM ist es, zu laufen beginnt.
Das ist der einzige Unterschied.
>> GABE: Schnell Vernunft hier überprüfen.
So kann Art gesehen werden wie eine Codezeile, oder?
Weil es window.onload gleich ein paar Sachen.
Wenn JavaScript liest, wahr oder falsch ist, wird die Funktion ausgeführt.
Falsch.
OK?
Was hier passiert, sind Sie nur auf der Durch Diese Funktion als anonyme Funktionen
um window.onload.
Und dann, wenn es wird um tatsächlich ausgeführt werden?
Wenn das Fenster geladen wird.
Das ist ein Ereignis.
Also das ist jus t, was wir sind reden über früher, nicht wahr?
Also, wenn das Ereignis eintritt, die Funktion geschieht.
Das Gleiche gilt für das onclick.
>> DAVIN: OK, so jemand hat entfernt die document.ready.
Aber das wird die genaue same-- sein
ZIELGRUPPE: Das Dollarzeichen, daß ein document.ready.
Das ist eine Abkürzung.
>> DAVIN: Oh, ist das so?
OK, so bedeutet dies, document.ready, Verknüpfung.
Aber dies ist das gleiche wie window.onload außer für den kleinen Unterschied
Ich Ihnen erzählt habe.
Und das ist jQuery.
Also das ist genau das gleiche thing-- dies JavaScript.
Dies wird just-- einige Leute darüber denken als mehr leichte, schlanke Version
das hat viele Funktionen dass Sie wahrscheinlich verwenden werden.
Also das macht genau dasselbe.
>> Also Dinge zu Art hinzuweisen.
So in dem anderen Beispiel, wir hatte document.getElementById,
so dass wir diese lang Zeichenfolge, die gehen, um zu bekommen
das Element durch ein beliebiges von ID hat.
Das ist hier durch diesen Aufruf ersetzt.
Sie sehen also, das Dollar-Zeichen, dann sieht man, Zitat, hashtag.
Hashtag ist immer ein Selektor.
Er sagt, OK, so ist dies mit einer ID zu tun.
Was ist der Selektor für eine Klasse?
>> ZIELGRUPPE: Dot.
>> DAVIN: Punkt, richtig.
Wenn Sie gerade dabei, wählen Sie ein Tag, was ist das?
Es ist nur der Tag, genau.
Und man konnte, dass hier zu verwenden, als auch.
>> GABE: Und nach Tag, so meinen wir, wie div, zum Beispiel, oder Kopf.
>> DAVIN: Oder Körpers oder p oder etwas in der Art, ja.
Also hier, OK, anstatt zu sagen, document.getElementById,
das ist nur die genau dasselbe.
Nur in jQuery, es ist kürzer.
So ist es einfacher.
Also, nicht mehr onclick, klicken Sie einfach auf.
jQuery-Funktion, rufen Sie diese Funktion.
Alarm ist genau das gleiche.
So ist es ein wenig kleiner oder etwas
kürzer, denke ein wenig bit-- Menschen es ist ein wenig leichter zu schreiben,
ein wenig leichter zu verstehen.
Aber das ist jQuery.
Eine Menge Leute erhalten wenig wenig verwirrt und besorgt
und sie denken, OK, jQuery ist anders als JavaScript.
Ich muss diese erinnern zwei verschiedene Dinge.
Es ist nicht.
Ich meine, es ist eine andere Syntax.
Aber jQuery JavaScript.
Es ist nur eine scheinbar bessere Version,
könnte einfacher sein verstehen, dass Menschen zu verwenden.
GABE: Ja, zu sein ehrlich, dass Dollar-Zeichen
dass Sie in jQuery zu sehen, das ist nur die Name einer Funktion, die jQuery definiert.
Es muss nicht etwas Besonderes.
Ist Es ist nur der Name einer Funktion, genau wie Sie könnte Dollarzeichen zu definieren.
>> DAVIN: Ja, so sprach darüber.
Hier werden einige nützliche Dinge.
Ich war wieder auf den alten Quiz suchen.
In den letzten paar Quizfragen, sie haben mussten Dinge wie diese zu verwenden.
So document.ready, so stellen Sie sicher, alles ist
bevor Sie geladen beginnen, Dinge zu tun.
Wählen Sie eine ID ein, oder wählen eine Klasse, würde es nur
sein Angebot dot etwas Klasse, Ende Zitat.
Senden, also, wenn Sie ein Formular und Call-
diese Funktion nach dem Formular sendet.
Wert, so sagen wir, ich habe ein Formular Unterordnung, wie einen Benutzernamen, eine E-Mail,
was auch immer.
Ich hatte ein Textfeld.
Also ich bin der Eingabe in das Textfeld ein.
Nun, wenn Sie den Wert erhalten möchten aus diesem Textfeld, Punkt val verwenden Sie.
Und dann, hier unten, dot HTML ist die gleiche
ist wie Dokument dot getElementByID dot innerhtml.
So, das wird zurückkehren Sie die HTML aus dieser ID.
Hier finden Sie nur einige verwenden ID oder was auch immer dot HTML.
Das wird die HTML von diesem Element zu erhalten.
Wenn Sie wollte dann ändern HTML, können Sie es so etwas passieren.
So würden Sie wie dot HTML, und dann innen, Zitate, neue HTML oder so etwas.
>> GABE: OK, so AJAX.
Ich zu verstehen, mag AJAX wirklich gut.
Deshalb möchte ich euch zu verstehen AJAX wirklich gut.
Denn wenn Sie das tun, Sie ziemlich viel los
, alles zu verstehen, dass hat mit HTTP zu tun, PHP,
JavaScript weil es allen kommt zusammen in AJAX.
AJAX ist keine Sprache.
AJAX ist eine Technik.
Und es nutzt viele verschiedene Werkzeuge.
AJAX steht für asynchrone JavaScript XML.
So ist die Methode, die Sprache, die Daten.
>> So der Hauptsprache, die wir verwenden in AJAX, alles auslösen
und alles im Griff später ist JavaScript.
Das ist, warum sie sich ganz in der Nähe JavaScript.
Und dann asynchron ist weil wir es nicht tun
alle auf einmal, wenn wir das Laden der Seite.
Das ist die Sache, die wir können Dinge tun, Art parallel.
Die Grundidee hinter AJAX ist, dass Sie wollen,
es um bestimmte Informationen zu bekommen.
Zum Beispiel, wenn Sie neue eingeben Benutzernamen, wenn Sie einen Benutzernamen registrieren,
meinen Benutzernamen ist abc123.
Und dann, am Ende der Form, müssen Sie klicken Sie auf Absenden.
Und es hatte sich mit dem Server zu gehen, und dann prüfen, ob in der Datenbank,
abc123 ist schon da.
Und wenn es schon da, sagt er, bereits in der Datenbank-Benutzernamen.
Und sie können, müssen Sie füllen aus das gesamte Formular erneut.
Und es war wirklich sehr, sehr schlecht.
>> Und dann werden die Menschen sagen, OK, warum können wir nicht einfach
tun einen kleinen HTTP-Anforderung an einfach mal zu sehen, wenn dieser Benutzer in der Datenbank ist
bevor der Benutzer musste senden Sie das Formular vollständig aus?
So zum Beispiel, wenn der Benutzer beendet die Eingabe abc123,
lassen Sie uns einfach an den Server ein wenig gehen Bit und einfach nur ein richtig oder falsch
von dem Server zu sehen, ob das ist ein gültiger Benutzername oder nicht.
OK, das ist also eine der wichtigsten nutzt AJAX auch heute noch.
>> DAVIN: So ganz schnell, in ein Ajax-Aufruf in jQuery,
Ihnen, dass Sie bedeuten könnte wollen, dass es synchron sein.
Sie sollten das nicht tun.
Aber man kann das tun.
Und wenn Sie, dass das getan, was würde passieren?
Nun, zum Beispiel, wenn Sie unterwegs sind Nachrichten bekommen oder was auch immer,
Ihr Browser nur noch warten bis das gesamte Anruf abgeschlossen ist
anstatt dass Sie zu tun Dinge richtig, nachdem Sie auf sie.
>> GABE: Es ist nicht mehr vorbei.
Oh mein Gott.
Es tut uns leid!
Jawohl.
"In der Vergangenheit wurde der Client auf Anfrage benötigt
der gesamte Inhalt einer Website. "
Das ist, was ich gesagt habe.
Es ermöglicht uns, senden zusätzliche GET oder POST
Anfragen ohne unsere Browser neu zu laden.
So am Ende des Tages sind wir tatsächlich macht eine HTTP-Anfragen
hier mit Hilfe von JavaScript.
Denn bevor wir nur verwendet JavaScript um die HTML, die bereits gekommen zu ändern.
Und jetzt können wir es verwenden, um eine Schnittstelle mit den Web-Server als auch.
Die Art und Weise dies geschieht, ist, dass wir den Kunden zu haben.
Davin ein Client ist.
Und er hat alle JavaScript laufen, weil HTML ist dumm.
JavaScript ist smart.
So davin Davin hat seinen Smart Teil und seine stumme Rolle.
Er wird seine intelligenten Teil nun.
Er wird JavaScript verwenden auf Anfrage, beispielsweise
ob abc123 ist in die Datenbank oder nicht.
>> So Davin, bitte, die Sie gerade senden Sie mir eine HTTP-Anfrage.
Danke.
Also schickte er eine HTTP-Anforderung.
Siehst du das?
Und das ist nur die gleiche Art und Weise dass jede HTTP-Anfrage gesendet wird.
Der Browser, Google Chrome oder so etwas, ist
gehen, um zu sehen, dass Davins versuchen, eine HTTP-Anfrage zu senden,
zu helfen, hm ein wenig.
Und das wird gehen den ganzen Weg zu dem Server.
Nun wird der Server zu haben, PHP hier, oder jeder anderen Sprache.
Genau wie bei einem normalen HTTP-Anforderung.
Es ist so ziemlich eine normale HTTP-Anforderung.
>> Und dann der Server wird sagen, OK,
Davin will, dass ich, ob überprüfen Diese abc123 ist in der Datenbank.
Sprecht mit dem Modell.
Das Modell sagt, es ist nicht. abc123 ist ein guter Benutzernamen.
Und dann wird der Web-Server würde Verwendung von PHP, irgendeine Form von Datei rendern.
Es könnte buchstäblich nur eine Datei sein das enthält "Ja" in ihm, oder "Nein,
oder so ähnlich.
Es könnte jede Datei sein.
>> Es könnte sein, wie ich bin zu gehen senden Davin ein Bild von einer Ente
wenn es in der Datenbank und senden Sie ein Bild eines Hamsters
wenn es nicht in der Datenbank.
Das wäre Art sein dumm, aber es wird funktionieren.
OK, so sende ich eine Ente zu Davin.
Davin bekam eine Ente.
Und nun, wer wird , um die Ente zu behandeln?
Davin Smart Teil wieder, so JavaScript, oder?
JavaScript schickte der Anfrage und JavaScript
wird, um die Anforderung zu empfangen und interpretieren sie in irgendeiner Form.
>> Und in diesem Sinne, es ist zu gehen sagen, OK, wenn Ente dann bin ich gut.
Wenn Hamster, dann werde ich um jetzt schon sagen, nein, Benutzernamen
in der Datenbank existiert.
Aber in der Regel, sind Sie nicht werde eine Ente zu senden.
Du wirst senden etwas etwas schlauer.
Und was wir benutzen, ist XML.
Und in jüngster Zeit verwenden wir JSON.
JSON ist einfach JavaScript Object Notation, die
ist im Grunde erhalten Sie ein gesamten JavaScript-Objekt.
Und Sie es in einer Datei, genau wie dass CS50-Objekt, das euch sah.
Sie steckte es in eine Datei und Sie senden über den Davin.
>> Also in diesem Fall, würde ich einen JavaScript-Objekt
und nur sagen, Benutzer vorhanden ist, ja.
Oder Benutzer vorhanden ist, nein.
Und schicken Sie es zurück zu ihm.
Und warum JSON?
Da die Person, wer empfängt das ist
werde JavaScript verwenden um die Reaktion zu behandeln.
Und Javascript funktioniert so gut, weil es heißt JavaScript Object Notation.
Richtig?
Also ist er einfach anrufen können eine Funktion und erhalten dieses schöne Objekt aus der Antwort.
Und dann soll er denn wissen, ob dieser Benutzer in der Datenbank oder nicht.
>> So können Sie sehen, alle von ihm kommen zusammen in den Webserver,
und dann gibt es eine HTTP-Anfrage an und eine HTTP-Antwort und alles.
So stellen Sie sicher Jungs Diese AJAX-Aufruf zu verstehen
denn es hilft Ihnen alle verstehen, der Konzepte die wir sprechen.
>> Also hier ist ein Beispiel von AJAX mit jQuery.
Und hier müssen wir mit get JSON.
Also wir versuchen nicht, eine zu bekommen Bild einer Katze hier, oder eine Ente.
Wir versuchen, eine JSON-Datei zu erhalten.
Und dann warten, bis wir es fertig, Punkt gemacht.
Das heißt, ich warte auf die Antwort.
Es könnte eine Weile dauern.
Dann finden Sie einen kleinen Laden.
Wenn Sie, dass auf Ihrer Website tun.
So dot getan, und was dann passiert, wenn es fertig ist?
Sie passieren in anonymisierter Funktion, genauso wie wir vorher gesehen haben.
Da getan ist ein Ereignis, nur wie mit einer Maus oder was auch immer,
für jQuery.
So können Sie in dieser Funktion mit übergeben Daten, Text, Status und jqXHR.
Und im Grunde, das ist nur einige Variablen
dass Sie später verwenden können, müssen der Status der HTTP-Anforderung,
die Daten, die es geht um zu senden Ihnen zurück.
So können Sie später zu interpretieren und tun Sie etwas mit ihm sinnvoll.
Und wenn es scheitert, als könnte es scheitern?
Nun, wenn die HTTP-Anforderung gibt Sie sind ein 500 oder so ähnlich.
Dann, es geht um die Sie das sagen, Status, welche Art von Fehler, der war,
und alle möglichen Dinge.
Sie müssen sicherstellen, , beide Fälle zu behandeln,
sonst geht das Programm verrückt.
>> DAVIN: Also ja, das ist genau was du gesehen hast auf dem letzten p-Set.
Die tatsächliche AJAX-Aufruf ist in der get JSON.
Das ist der Ruf.
Und dann ist dot getan wie es überprüft, ob es erfolgreich ist.
Wenn es erfolgreich ist, sollten Sie etwas mit den Daten zu tun.
Sie erhalten wieder aus, dass JSON-Anforderungsdaten.
Das ist, was du zurückkommst.
Also, wenn Sie daran denken, aus dem p-Set, viele von Ihnen waren wie Daten Halterung i
oder was auch immer, Punkt Verbindung oder Titel.
Was auch immer kommt zurück von diesem JSON, was auch immer
die Felder in diesem JSON-Objekt, das ist, was Sie wieder einlassen.
Daten ist, was Sie wieder einlassen.
Text-Status, nur etwas, lässt Sie wissen, was passiert ist.
Und dann die jqXHR, das ist einfach die jQuery XML HTTP-Anforderung.
Das ist genau wie ein Objekt.
Und dann scheitern, wie die Gabe.
GABE: In unserem kleinen Beispiel abc123 nur um zu überprüfen, ob das in der Datenbank
oder nicht, die Daten würden etwas, das Sie tun würde, wenn die Datenpunktbenutzernamen existiert,
das ist, was Ihre PHP für generierte Sie, wenn Datenpunktbenutzernamen existiert,
Ich werde zu warnen, Benutzer Namen existiert bereits.
Else, ich bin gerade dabei, die lassen Benutzer gehen Sie das Formular ausfüllen.
OK, Sicherheit, cool.
>> DAVIN: Soll ich?
>> GABE: Ich mag diese.
Also etwas, das bekannt vorkommt.
Wir sind fast fertig.
So ist dies nur das Beispiel Sie Kerle sah in der Klasse.
Sie wurden hier mit argv1.
Das ist wie ein Befehlszeilenargument.
Und wir mem Kopieren dass in einen Puffer der Größe 12.
Was ist das Problem?
Pufferüberlauf!
Weil wir ein Puffer der Größe 12.
argv1 könnte eine Größe von zwei Milliarden.
Wir übernehmen keine Grenzkontrolle zu tun.
So könnten wir eine Menge Speicher kopieren.
Und wir werden vor allem sein schlecht darüber.
Was können wir tun, das ist, sehr, sehr in diesem Fall das?
Ja?
ZIELGRUPPE: Ein Teil der zwei Milliarden Dinge enthält ausführbaren Code, die zurück
[Unverständlich].
GABE: Genau.
Also das ist die Art von Sache, die Menschen nutzen
ein iPhone Jailbreak, zum Beispiel.
Also diese Art der Sache.
Da Sie nur das Gerät zu machen einen Code, den Sie gerne ausführen.
Das Update, so dass die Lösung ist einfach.
Schaut euch einfach mal für den Rahmen.
Sie checken für null, weil wir prüfen immer null
wenn wir mit Streichern zu tun haben.
Und dann nehmen Sie die Stringlänge vor.
Und wenn die Zeichenfolge Länge ist eine gültige Zeichenfolge
Länge, die innerhalb von 0 und 12, dann sind wir gut.
>> DAVIN: Wenn Sie nicht zum prüfen null, ganz schnell, was passieren wird?
Es wird Fehler seg.
Warum wird es SEG Fehler?
Weil Sie anrufen strlen auf null.
GABE: Ja.
Wahr oder falsch, mit einer Kennwort ist eine gute Idee.
>> ZIELGRUPPE: False.
>> GABE: False.
Verwenden Sie viele Passwörter, und große, lange.
Padlock icons sorgen für Sicherheit.
>> ZIELGRUPPE: False.
>> GABE: False.
Es hat nichts zu bedeuten.
Es ist nur ein Symbol.
SSL schützt vor ein Mann in der Mitte anzugreifen.
ZIELGRUPPE: False.
GABE: False.
OK, so dass alle, die falsch sind.
Nizza.
[Unverständlich]
Willst du darüber reden?
Jetzt bist du dran.
DAVIN: Arten von Angriffen, Mann in der Mitte.
Was ist ein Mann in der Middle-Angriff?
ZIELGRUPPE: [unverständlich].
DAVIN: Wenn Sie eine HTTP senden Wunsch konnten sie dies tun, nicht wahr?
Aber wenn Sie das Versenden von HTTPS, sie wird wahrscheinlich nicht in der Lage, dies zu tun.
Es gibt viele Punkte entlang Ihrer Verbindung.
Sie haben Routern.
Sie müssen DNS-Server.
Wenn jemand in der Lage, körperlich sehen, was Sie senden,
so jemand in der Lage, ist tatsächlich zwischen Ihnen zu bekommen,
der Client und der Server, und in der Lage zu sehen, was Sie senden,
dies ist ein Mann in der Mitte anzugreifen.
Also, um zu sehen, was Sie versuchen, von zu bekommen sind der Server, oder in der Lage ist schlimmer see--,
Sie könnten in der Lage sein zu sehen, Cookies oder so ähnlich.
>> So zum Beispiel, wenn Sie nicht mit SSL, er
vielleicht in der Lage sein zu sehen, Ihre Session-ID-Cookies.
Und dies wird als Session Hijacking weil er Ihre ID-Cookies sieht,
und dann ist er in der Lage zu gehen, dass Website und so tun, als Sie sein.
Denn genau wie in PHP, erinnern wenn wir Sie angemeldet sind, was sollen wir tun?
Wir setzen Session-ID gleich ID.
So dass Sie identifizieren.
Deshalb sollten Sie Ihr Portfolio sehen können und nicht alle anderen Portfolio.
>> Nun, wenn ich mich in der Lage, das Cookie zu erhalten, dann kann ich auf dieser Seite einloggen.
Und dann kann ich nur sehen, Ihr Material und beginnen Kauf und Verkauf von Sachen.
Also das ist, Session-Hijacking.
Aber Sie sollten nicht in der Lage, so dass Sie zu-- sein können die Menschen in der Mitte Angriff nutzen
auch wenn sie unter Verwendung von SSL.
Aber Sie sollten nicht in der Lage zu sein.
Wenn sie unter Verwendung von SSL, Sie können nicht Sitzung entführen.
Warum?
Denn es ist alles verschlüsselt, oder? wenn es verschlüsselt ist,
und ich bin immer noch ein Mann in die Mitte, ich bekomme immer noch Ihre Daten.
Das ist in Ordnung.
Aber es ist verschlüsselt.
So kann ich nicht wirklich nutzen.
Also das ist zwei.
>> Sehr schnell, Cross-Site Request Forgery.
Das ist nur, ob es eine Verbindung dieser Zusammenhang etwas tut,
Sie glaube nicht, dass es tun sollten.
So zum Beispiel, wenn der Link war gehen, Aktien zu kaufen oder zu verkaufen, Aktien,
und man wusste nicht, dass.
Sie klickte auf den Link, schickte eine Anfrage, gekauft
oder etwas, das verkauft Sie wollte nicht zu tun.
Das ist das.
>> Cross Site Scripting, so hier, übergeben Sie in über Variable q,
setzen, anstatt in einer Art der Wert ist, ist vielleicht q wie ein Name.
Anstatt also vorbei q equals Davin oder so ähnlich,
wenn Sie nicht mit HTML Sonderzeichen, wenn Sie
nicht entgehen diese, um sicherzustellen, es ist OK, dann könnte ich in anstatt übergeben,
sagen wir mal, hier ich sage, Druck oder so ähnlich,
dann könnte ich hier ein Skript Aufruf übergeben.
>> Also, statt der gerade erst eine variable,
Ich würde dann dieses Skript Aufruf.
Also innerhalb dieses Skript rufen, was tut sie?
Document Punktstelle, das wird ändern Sie den Speicherort des Dokuments.
Also werde ich umleiten woanders.
Es heißt Bösewicht in Dieses Beispiel, sehr gut.
Konnte nicht von dem Wort denken.
Und dann, was noch Noch schlimmer ist, dass ich gehe
um dann Cookie, das einige ist variable Ich habe auf dieser Website.
Ich werde es gleich eingestellt zum Dokument dot Cookie.
Daher werde ich Sie Ihre Cookie zu stehlen.
Und ich werde umleiten einige Informationen zu einer Website
dass Sie nicht zugreifen.
Und das alles geschieht, weil Sie nicht entkommen, was Sie gesehen haben.
Ja?
>> ZIELGRUPPE: Also, nur um machen, dass klar ist, ist es
vulnerable.com dass ist anfällig für diese.
Damit die Verbindung kann erscheinen Seite geschaltet.
Wenn jemand auf sie, geht an vulnerable.com.
Sie haben ein Cookie an vulnerable.com.
Nehmen wir an, ist Facebook verletzlich, so facebook.com.
Sie haben Ihre Facebook-Cookie.
Was dies tut, sind Sie werde facebook.com,
es ist sofort umgeleitet Sie badguy.com,
aber einschließlich Ihrer Cookie-Informationen.
Also ist es eine schnelle Weiterleitung, aber Ihr Facebook-Cookie
wird mit dieser Weiterleitung enthalten, und das ist, wie sie [unverständlich].
GABE: Ja, es gibt einige sehr gemeine Dinge
dass die Menschen tun können, wenn es dies.
Wenn beispielsweise Face erlaubt jeder, Ihren Benutzernamen zu ändern,
und sie haben nicht zu tun Plausibilitätsprüfungen, so dass Sie
könnte einen JavaScript Sache Einsatz, ändert sich das Bild an einen Hamster.
Und fügt den gleichen JavaScript in allen, die Ihre Seitenaufrufe.
Also alle, die Ihre Seitenaufrufe hat die gleiche Sache in den Benutzernamen.
Und weil es ein Virus, es breitet sich exponentiell.
DAVIN: Wir werden die letzte überspringen ein, und dann sind wir fertig.
Also das ist nur ein weiteres Beispiel.
Also das ist sie nicht Flucht ihre SQL-Tabelle.
So können Sie sie löschen.
So können Sie die Dinge entfliehen möchten.
Das war das vorherige Beispiel mit dem Cross Site Scripting.
Es tut uns leid wir liefen ein wenig spät.
Morgen, sorry!
Morgen haben wir Bürozeiten.
So Bürozeiten in Cabbot 8.00 bis 11.00 Uhr.
Die Öffnungszeiten sind ausschließlich für Quizfragen.