1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [Musikwiedergabe] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Hallo, alle zusammen. 5 00:00:12,700 --> 00:00:15,866 Danke Jungs so viel für Coming Out in der widerlichen Wetter für einen Quiz 6 00:00:15,866 --> 00:00:16,910 überprüfen Sitzung. 7 00:00:16,910 --> 00:00:20,020 Wie ihr wisst, Quiz man ist an diesem Mittwoch. 8 00:00:20,020 --> 00:00:22,209 So werden wir zu gehen, durch ein Bündel von Themen. 9 00:00:22,209 --> 00:00:24,000 DAVIN: Hey, kann ich sagen, etwas ganz schnell? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Ja, Davins gehen etwas ganz schnell sagen. 11 00:00:25,215 --> 00:00:25,780 DAVIN: Es tut uns leid. 12 00:00:25,780 --> 00:00:29,490 Nur sehr schnell, wenn Sie Fragen haben zum Quiz, können Sie online gehen. 13 00:00:29,490 --> 00:00:32,420 Zum 2014-Quiz ein, zum Quiz. 14 00:00:32,420 --> 00:00:34,680 Es hat sich herumgesprochen Logistik wohin sie gehen, als zu gehen. 15 00:00:34,680 --> 00:00:38,100 Wenn Sie gleichzeitig eingeschrieben sind wir werde ein Make-up-Quiz um 5:30 haben. 16 00:00:38,100 --> 00:00:40,350 Oder wenn du mich gesandt hast ein Problem, Sie haben eine andere Frage. 17 00:00:40,350 --> 00:00:42,640 Aber 05.30 ist die Make-up- Zeit am Mittwoch. 18 00:00:42,640 --> 00:00:44,540 Wenn Sie Fragen haben, Wenn Sie allgemeine Fragen, 19 00:00:44,540 --> 00:00:45,748 Online hat die gesamte Logistik. 20 00:00:45,748 --> 00:00:47,690 Es gibt also prüfen Sie zuerst. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 Also hier ist die große Liste von Themen dass wir gehen, um durch zu gehen heute. 23 00:00:53,030 --> 00:00:57,390 Ich werde alle der C decken Sachen, die die erste Spalte ist. 24 00:00:57,390 --> 00:01:00,710 So ist die C Sachen, die wir Nach Quiz Null fallen. 25 00:01:00,710 --> 00:01:05,459 Beginnend mit einer verknüpften Liste, was beinhaltet Zeiger. 26 00:01:05,459 --> 00:01:07,668 >> In Ordnung, so sahen wir in der letzten Überprüfung Sitzung 27 00:01:07,668 --> 00:01:10,000 so werde ich zu durchlaufen Das ist ein wenig schneller. 28 00:01:10,000 --> 00:01:13,500 Nur die Hand heben, wenn Sie mich wollen verlangsamen oder anzusprechen etwas weiter. 29 00:01:13,500 --> 00:01:17,150 Aber wir verkettete Listen, weil verwenden wir in C begann mit Arrays. 30 00:01:17,150 --> 00:01:20,920 Und Arrays sind groß, aber die Problem ist sie eine feste Größe haben. 31 00:01:20,920 --> 00:01:24,925 Verkettete Listen können wir erstellen dynamisch dimensioniert Datenstrukturen. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> Und wir haben unsere Grundoperationen, einfügen, löschen und suchen. 34 00:01:32,320 --> 00:01:36,780 Und wir Einsatz tun können schlimmsten Fall konstante Zeit 35 00:01:36,780 --> 00:01:39,140 wenn wir sie nur ganz am Anfang. 36 00:01:39,140 --> 00:01:45,220 Löschung und Abfrage, am schlimmsten Bei großen oh n Zeit. 37 00:01:45,220 --> 00:01:47,140 Also noch einmal, nur um Flip durch diese Bilder, 38 00:01:47,140 --> 00:01:50,860 Ich weiß, dass wir diese letzte Mal gesehen, aber wir wollen den Überblick über unsere verknüpften Liste zu halten 39 00:01:50,860 --> 00:01:53,440 durch die Verfolgung der die Leiter unserer verketteten Liste. 40 00:01:53,440 --> 00:01:55,580 Denn wir wissen: jeder unserer Knoten 41 00:01:55,580 --> 00:01:58,610 ist gerade dabei, auf den Punkt nächste Knoten in unserem verketteten Liste. 42 00:01:58,610 --> 00:02:00,460 >> Also das ist, wie wir im Auge behalten. 43 00:02:00,460 --> 00:02:02,910 Obwohl diese nicht kontinuierliches Stück Speicher, 44 00:02:02,910 --> 00:02:07,410 können wir sie durch nur finden im Anschluss an die verschiedenen Pfeile. 45 00:02:07,410 --> 00:02:09,800 Hier ist unsere Struktur für eine verkettete Liste Knoten. 46 00:02:09,800 --> 00:02:11,440 Wir sahen diese letzten Mal. 47 00:02:11,440 --> 00:02:13,080 Wir haben unsere struct Knoten. 48 00:02:13,080 --> 00:02:14,340 Und es hat zwei Eigenschaften. 49 00:02:14,340 --> 00:02:17,020 Die Nummer eins, die tatsächliche Wert wollen wir speichern. 50 00:02:17,020 --> 00:02:18,290 In diesem Fall ist es eine ganze Zahl ist. 51 00:02:18,290 --> 00:02:21,100 Es könnte ein String sein, könnte es sein ein Zeichen, was auch immer Sie wollen. 52 00:02:21,100 --> 00:02:24,710 Und dann müssen wir im Auge behalten der nächste Knoten im verketteten Liste. 53 00:02:24,710 --> 00:02:29,797 So, das wird eine sein Zeiger auf den nächsten Knoten. 54 00:02:29,797 --> 00:02:31,880 Wenn Sie gerade tun Suche, wie ich schon sagte, 55 00:02:31,880 --> 00:02:34,900 müssten Sie Ihre Pfeile nach unten folgen. 56 00:02:34,900 --> 00:02:40,720 Einsetz-, würden Sie Kurs zu halten von wo der Rest der Liste ist. 57 00:02:40,720 --> 00:02:44,150 Und Sie, um den Kopf umgeleitet werden sollen um unsere neue Element, Punkt, 58 00:02:44,150 --> 00:02:46,640 in diesem Fall ist einer, und dann wird man zeigen 59 00:02:46,640 --> 00:02:49,480 an den Rest der verketteten Liste. 60 00:02:49,480 --> 00:02:52,996 Also noch einmal, ich weiß, das ist ein wenig Bit einer Wiederholung von Quiz Null. 61 00:02:52,996 --> 00:02:55,370 Also müssen wir sehr vorsichtig sein, über die Reihenfolge, in der man 62 00:02:55,370 --> 00:03:00,390 tun diese pointings so dass wir nicht Überblick verlieren der Rückseite der Liste. 63 00:03:00,390 --> 00:03:04,122 OK, alle Fragen mit nur einfach verkettete Listen? 64 00:03:04,122 --> 00:03:06,060 Awesome, OK, cool. 65 00:03:06,060 --> 00:03:09,410 >> So, jetzt werden wir auf etwas gehen nur etwas komplizierter, 66 00:03:09,410 --> 00:03:10,920 doppelt verkettete Listen. 67 00:03:10,920 --> 00:03:13,680 So dass zusätzlich zu halten Spur des nächsten Knotens, 68 00:03:13,680 --> 00:03:16,220 wir wollen auch den Überblick zu behalten des vorherigen Knoten. 69 00:03:16,220 --> 00:03:19,580 Und das können wir, wenn wir an einem gewissen Punkt in unserem verknüpften Liste, 70 00:03:19,580 --> 00:03:23,110 nicht nur nach vorne gehen, aber auch rückwärts durchlaufen. 71 00:03:23,110 --> 00:03:25,220 Denn wie wir in sahen eine einfach verkettete Liste, 72 00:03:25,220 --> 00:03:27,980 wenn wir zu einem bestimmten Knoten, und ganz plötzlich, haben wir beschlossen, 73 00:03:27,980 --> 00:03:30,160 wirklich, ich will gehen der Knoten direkt vor mir, 74 00:03:30,160 --> 00:03:32,034 müssten Sie alle gehen der Weg zurück an die Spitze 75 00:03:32,034 --> 00:03:35,710 und durch durchlaufen, bis Sie gefunden der Knoten Sie gesucht haben. 76 00:03:35,710 --> 00:03:37,680 >> Also das macht die Dinge etwas leichter als wir sind 77 00:03:37,680 --> 00:03:39,670 versucht, durchlaufen durch unsere verketteten Liste. 78 00:03:39,670 --> 00:03:47,870 Aber es erfordert, dass wir den Überblick über einen halten mehr Zeiger, so dass eine weitere Knoten Sterne. 79 00:03:47,870 --> 00:03:50,830 In Ordnung, so da kommt der lustige Teil. 80 00:03:50,830 --> 00:03:55,600 Wir werden üben Umsetzung für doppelt verkettete Listen zu entfernen. 81 00:03:55,600 --> 00:03:58,660 Also das ist etwas, das ist absolut faires Spiel für das Quiz. 82 00:03:58,660 --> 00:04:00,750 Es zeigte sich auf letzten Quiz. 83 00:04:00,750 --> 00:04:04,220 Also auf jeden Fall vorbereitet sein ein wenig in C Code 84 00:04:04,220 --> 00:04:07,900 Vergessen Sie nicht, dass alle dieser Spaß PHP und JavaScript, 85 00:04:07,900 --> 00:04:10,560 wir haben immer noch zu erinnern, C. tun also auffrischen, dass 86 00:04:10,560 --> 00:04:12,146 wenn Sie das Gefühl rostig. 87 00:04:12,146 --> 00:04:14,580 >> Also gut, mal sehen, ob wir dies tun können. 88 00:04:14,580 --> 00:04:16,312 OK, cool. 89 00:04:16,312 --> 00:04:18,600 Also werden wir versuchen, nach rechts in hier zu bearbeiten, 90 00:04:18,600 --> 00:04:20,707 und hoffentlich klappt wie geplant. 91 00:04:20,707 --> 00:04:23,915 In Ordnung, hat jemand will mir ein Vorschlag, wie ich anfangen soll? 92 00:04:23,915 --> 00:04:27,030 Die einzige Voraussetzung, ich bin Herstellung ist, dass ich schon 93 00:04:27,030 --> 00:04:30,180 haben eine Struktur definiert, die ein Ich zeigte auf der letzten Seite, 94 00:04:30,180 --> 00:04:31,420 auf der letzten Folie. 95 00:04:31,420 --> 00:04:39,250 Und ich bin Speicherung der Kopf meines verbunden Liste in einigen Zeiger namens Liste. 96 00:04:39,250 --> 00:04:42,190 Will jemand mir die ersten Schritte? 97 00:04:42,190 --> 00:04:45,410 >> ZIELGRUPPE: Können Sie ein neues erstellen Knoten durch die Liste anrufen? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, so wir werden zu erstellen 99 00:04:46,410 --> 00:04:47,951 ein neuer Knoten, um die Liste zu kriechen. 100 00:04:47,951 --> 00:04:48,570 Ich mag es. 101 00:04:48,570 --> 00:04:50,799 Ich werde es nennen Zeiger, wenn das ist OK. 102 00:04:50,799 --> 00:04:52,340 Und wo sollte es ursprünglich angefangen? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> ZIELGRUPPE: Wahrscheinlich am der Kopf der Liste. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Schöne. 106 00:05:00,590 --> 00:05:03,670 Wir wollen an der Spitze, beginnen die Ich sagte, wird sich in der Liste gespeichert werden. 107 00:05:03,670 --> 00:05:04,170 Ehrfürchtig. 108 00:05:04,170 --> 00:05:05,220 So weit, ist es gut. 109 00:05:05,220 --> 00:05:08,260 Und jetzt ist es unser Ziel, durchlaufen Sie die Liste 110 00:05:08,260 --> 00:05:12,870 bis wir den Knoten mit Wert n, die wir löschen möchten. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> So, jetzt ist der Teil, wo Wir wollen durch laufen. 113 00:05:15,910 --> 00:05:19,488 Kann jemand empfehlen, eine bis hin zu durchlaufen? 114 00:05:19,488 --> 00:05:20,979 >> ZIELGRUPPE: Eine Schleife. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: Eine Schleife. 116 00:05:21,840 --> 00:05:22,620 Ich liebe es. 117 00:05:22,620 --> 00:05:25,550 Genauer gesagt, können wir eine while-Schleife zu versuchen. 118 00:05:25,550 --> 00:05:30,919 OK, und wir wissen, dass wir erreicht haben das Ende unserer Liste, wenn das, was? 119 00:05:30,919 --> 00:05:32,210 ZIELGRUPPE: Steht der Zeiger ist null. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Steht der Zeiger ist null. 121 00:05:33,418 --> 00:05:34,320 Schön, ich liebe es. 122 00:05:34,320 --> 00:05:35,110 OK, cool. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Tut mir leid, wenn meine Begrenzungsstrebe ist Art fallen aus dem Bildschirm. 125 00:05:43,190 --> 00:05:44,090 Wir brachten es zurück. 126 00:05:44,090 --> 00:05:46,610 OK, cool. 127 00:05:46,610 --> 00:05:48,690 Was kommt als nächstes? 128 00:05:48,690 --> 00:05:51,950 >> So wissen wir, wir löschen möchten der Knoten, der Wert n hat. 129 00:05:51,950 --> 00:05:56,340 Also lassen Sie uns den Fall, wir tatsächlich finden unsere Knoten. 130 00:05:56,340 --> 00:05:57,840 Wie würde ich prüfen, dass? 131 00:05:57,840 --> 00:06:02,210 Ich möchte nur sagen, wenn Zeiger, und dann, wenn ich wollen den Wert von Zeiger zu erhalten, 132 00:06:02,210 --> 00:06:08,940 Ich weiß nur arrow n, gleich n ist, die Parameter 133 00:06:08,940 --> 00:06:14,490 dass wir auf diese Funktion hat, die Knoten, die wir wollen, um tatsächlich zu löschen. 134 00:06:14,490 --> 00:06:17,090 Haben Sie Fragen, bis hier? 135 00:06:17,090 --> 00:06:18,360 In Ordnung. 136 00:06:18,360 --> 00:06:24,140 OK, so jetzt zu ziehen schnell ein Bild lassen auf dem Brett, um diese sichtbar zu machen. 137 00:06:24,140 --> 00:06:30,710 >> Also lassen Sie uns sagen, dass es unsere schöne Knoten. 138 00:06:30,710 --> 00:06:34,480 Und es Wert hat, werde ich nur sagen, vier. 139 00:06:34,480 --> 00:06:40,340 Und es zum nächsten Punkte Knoten in unserem verketteten Liste. 140 00:06:40,340 --> 00:06:42,220 Und es gibt nichts, bevor es. 141 00:06:42,220 --> 00:06:45,800 So haben wir unsere bisherigen zeigt auf nichts. 142 00:06:45,800 --> 00:06:48,110 In diesem Fall weisen wir zurück. 143 00:06:48,110 --> 00:06:50,960 OK, nur die Einrichtung meiner hier verknüpften Liste. 144 00:06:50,960 --> 00:06:53,630 Und wir haben eine Liste, die Punkte auf diese Struktur zu beginnen. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Ich werde noch für zu ziehen Der Vollständigkeit halber. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 OK. 149 00:07:06,117 --> 00:07:07,480 Ich werde diese nach vorne zeigen. 150 00:07:07,480 --> 00:07:09,550 Und ich werde, dass man zurückweisen. 151 00:07:09,550 --> 00:07:10,360 Oops, sorry. 152 00:07:10,360 --> 00:07:12,710 Ja, ich diese nach hinten. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Tun Sie es erneut. 155 00:07:16,967 --> 00:07:18,330 OK, es wir gehen. 156 00:07:18,330 --> 00:07:19,910 In Ordnung, bekam sie. 157 00:07:19,910 --> 00:07:21,780 OK, hier ist unser Bild. 158 00:07:21,780 --> 00:07:24,860 >> OK, so wollen wir zwei Fälle zu berücksichtigen. 159 00:07:24,860 --> 00:07:27,330 Der erste Fall ist, wenn der Knoten wir zu lösch 160 00:07:27,330 --> 00:07:29,420 ist ganz am Anfang der Liste. 161 00:07:29,420 --> 00:07:34,070 Und dann wird der zweite Fall, dass wir möchten zu prüfen ist, ob es irgendwo anders. 162 00:07:34,070 --> 00:07:37,660 Ich verstehe, dass dies eine völlig messy Zeichnung von ganzem Löschen, 163 00:07:37,660 --> 00:07:40,400 aber hoffentlich werden wir versuchen, dies zu verdeutlichen mit einigen Code. 164 00:07:40,400 --> 00:07:45,450 >> OK, also lassen Sie decken den Fall wo wir unsere Knoten, 165 00:07:45,450 --> 00:07:48,900 und es ist zumin Start unserer verketteten Liste. 166 00:07:48,900 --> 00:07:50,810 Jemand mir ein Vorschlag hier, was 167 00:07:50,810 --> 00:07:54,684 Ich tun sollte, um tatsächlich zu entfernen unsere Knoten? 168 00:07:54,684 --> 00:07:55,970 Es ist ein wenig kompliziert. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> ZIELGRUPPE: Sie müssen das nehmen Knoten, bevor er sein würde 171 00:07:59,628 --> 00:08:01,794 und stellen Sie es auf den Punkt eines, das, nachdem es sein würde, 172 00:08:01,794 --> 00:08:03,004 und nehmen Sie den Knoten, würde, nachdem er sein und 173 00:08:03,004 --> 00:08:04,554 Sie weisen auf die Knoten, bevor es. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Genau. 175 00:08:05,220 --> 00:08:10,640 OK, dies der Fall ist, so where-- wir zwei Fälle. 176 00:08:10,640 --> 00:08:14,100 Wir haben den Fall, dass die Knoten, die wir suchen 177 00:08:14,100 --> 00:08:18,270 ist die Vorderseite der Liste. 178 00:08:18,270 --> 00:08:23,110 OK und dann der Fall, dass Sie beschrieben ist anders, nicht wahr? 179 00:08:23,110 --> 00:08:24,500 Es ist irgendwo anders in der Liste. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 So können Sie sagte, müssen wir Blick auf die Knoten vorherigen, 182 00:08:32,840 --> 00:08:36,500 und stellen Sie den vorherigen Knoten Punkt zu dem nächsten Knoten. 183 00:08:36,500 --> 00:08:40,510 Also lassen Sie uns sagen, dass wir versuchen, nehmen Sie fünf 184 00:08:40,510 --> 00:08:43,059 in meinem sehr chaotisch Zeichnung hier. 185 00:08:43,059 --> 00:08:47,530 Wir wollen dafür sorgen, dass vier zeigt jetzt auf sechs. 186 00:08:47,530 --> 00:08:49,590 Vier der nächsten Punkte auf sechs. 187 00:08:49,590 --> 00:08:52,150 Und sechs bisherige Punkte auf vier. 188 00:08:52,150 --> 00:08:53,960 Das ist unser Ziel hier, nicht wahr? 189 00:08:53,960 --> 00:08:56,150 Dies ist, was ich denke, Sie sagte nur dort. 190 00:08:56,150 --> 00:08:58,450 >> OK, also lassen Sie uns diese erste Stück. 191 00:08:58,450 --> 00:09:02,300 Machen wir das haben die vorherige Zeiger vorherigen. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Also vier nächsten sollten auf das hinweisen? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Genau in diesem Fall sechs. 196 00:09:14,900 --> 00:09:18,470 Also sollten wir sagen, Zeiger, neben. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 In Ordnung. 199 00:09:21,150 --> 00:09:24,870 Lassen Sie uns also dieser hässliche Bild loswerden und versuchen, eine etwas schöneres ziehen. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Wir haben unsere Liste Kopf hier. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 Und zeigt auf den ersten Knoten in unsere verknüpften Liste, die wir gesagt ist vier. 204 00:09:42,740 --> 00:09:45,620 Hier ist unsere zweite Knoten, fünf. 205 00:09:45,620 --> 00:09:47,307 Und unsere dritte Knoten, sechs. 206 00:09:47,307 --> 00:09:50,265 Nur versuchen, genau die gleiche ziehen Bild, nur ein wenig sauberer. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, so dass vier der nächsten Ursprünglich weist auf fünf. 209 00:09:56,280 --> 00:09:58,620 Fünf der nächsten Punkte auf sechs. 210 00:09:58,620 --> 00:10:00,170 Sechs frühere Punkte auf fünf. 211 00:10:00,170 --> 00:10:02,470 Und fünf früheren Punkte zu vier. 212 00:10:02,470 --> 00:10:03,360 So viel schöner! 213 00:10:03,360 --> 00:10:04,530 OK, cool. 214 00:10:04,530 --> 00:10:07,770 >> So, jetzt, was wir getan haben gerade Hier, diese Codezeile, 215 00:10:07,770 --> 00:10:12,680 was sagt Zeiger vorherige nächste, also was soll das bedeuten? 216 00:10:12,680 --> 00:10:17,540 Das heißt, wenn wir bei der Suche fünf, gehen Sie zum vorherigen Knoten, 217 00:10:17,540 --> 00:10:21,970 und es ist neben sollte jetzt Punkt fünf der nächsten. 218 00:10:21,970 --> 00:10:27,840 So im Wesentlichen, dass das, was zu tun ist das ist das Löschen dieser Pfeil 219 00:10:27,840 --> 00:10:29,640 und es überspringen Recht auf fünf. 220 00:10:29,640 --> 00:10:31,360 Ist das klar? 221 00:10:31,360 --> 00:10:33,200 Ich weiß, dass ein wenig lückenhaft sein kann. 222 00:10:33,200 --> 00:10:34,480 Ich sehe einige Kopf nickt. 223 00:10:34,480 --> 00:10:35,390 Das ist gut. 224 00:10:35,390 --> 00:10:36,670 OK, cool. 225 00:10:36,670 --> 00:10:39,590 Nun, was ist der nächste Schritt? 226 00:10:39,590 --> 00:10:42,060 >> Ich habe die nächsten zurückgesetzt. 227 00:10:42,060 --> 00:10:45,297 Nun, die anderen Pfeil muss ich ändern? 228 00:10:45,297 --> 00:10:46,130 Dieser hier richtig. 229 00:10:46,130 --> 00:10:47,560 Sechs frühere. 230 00:10:47,560 --> 00:10:50,620 Das wollen wir nicht sechs früheren mehr, bis zu fünf zu verweisen. 231 00:10:50,620 --> 00:10:54,580 Wir wollen, dass es zu vier verweisen. 232 00:10:54,580 --> 00:10:56,190 Heißt das Bild sinnvoll? 233 00:10:56,190 --> 00:10:58,370 So, jetzt können wir tatsächlich nehmen fünf. 234 00:10:58,370 --> 00:10:59,370 Also lassen Sie uns das Stück. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Was muss ich, bevor ich zu tun Reset sechs der vier vorherigen? 237 00:11:11,180 --> 00:11:14,360 Alle Ideen, da? 238 00:11:14,360 --> 00:11:17,369 >> ZIELGRUPPE: Befreien Sie den Knotenpunkt zwischen sie, indem Sie sie auf null? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Kühl. 240 00:11:17,910 --> 00:11:21,100 Auf jeden Fall ist unser Endziel sein wird, um den Knoten freizugeben. 241 00:11:21,100 --> 00:11:22,490 Also haben wir, dass genau hier tun können. 242 00:11:22,490 --> 00:11:23,540 Kostenlose Zeiger. 243 00:11:23,540 --> 00:11:24,810 Absolut. 244 00:11:24,810 --> 00:11:29,160 Doch schon vor, dass, Lassen Sie uns just-- unser Ziel rechts 245 00:11:29,160 --> 00:11:38,730 hier ist es, Zeiger neben eingestellt vorherige gleich Zeiger vorherigen. 246 00:11:38,730 --> 00:11:40,760 Ich weiß, das wird immer vertuscht. 247 00:11:40,760 --> 00:11:45,440 OK, lass uns take-- cool. 248 00:11:45,440 --> 00:11:46,990 Kann jeder sehen, diese unter dem Strich? 249 00:11:46,990 --> 00:11:47,840 Oder ist es super winzige? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Also, bevor wir ausführen diese Linie hier, wir wollen 252 00:11:54,300 --> 00:11:58,375 um sicherzustellen, dass Zeiger neben nicht null ist. 253 00:11:58,375 --> 00:12:00,500 Denn wenn Zeiger neben ist null, welche Art von Fehler 254 00:12:00,500 --> 00:12:02,727 erhalte ich, wenn ich versuche, verweisen auf eine Null-Zeiger? 255 00:12:02,727 --> 00:12:03,560 ZIELGRUPPE: Seg Fehler. 256 00:12:03,560 --> 00:12:05,660 HANNAH: Ein seg Fehler, schön. 257 00:12:05,660 --> 00:12:09,690 OK, also wenn das nicht null, dann können wir zurückzusetzen. 258 00:12:09,690 --> 00:12:14,420 Und wir haben sechs Punkt wieder auf vier. 259 00:12:14,420 --> 00:12:17,440 Fragen bis zu diesem Zeitpunkt? 260 00:12:17,440 --> 00:12:17,940 Ja? 261 00:12:17,940 --> 00:12:19,814 >> ZIELGRUPPE: In Ihrem ersten if-Anweisung, nicht wahr 262 00:12:19,814 --> 00:12:23,817 bedeuten, um den Pfeil haben nächsten oder [unverständlich]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: Ich meinte den Mauspfeil n. 264 00:12:25,150 --> 00:12:30,270 Also im Grunde, was ich versuche zu tun, ist zu sagen, den aktuellen Knoten, die ich 265 00:12:30,270 --> 00:12:34,100 Iteration über die aktuelle Knoten, Ich freue mich auf, ich bin in Zeigerspeicher. 266 00:12:34,100 --> 00:12:37,630 Und ich möchte wissen Zeigers Wert, der in diesem Fall ist n. 267 00:12:37,630 --> 00:12:39,500 Und ich möchte, um zu sehen, ist der Knoten Ich suche 268 00:12:39,500 --> 00:12:42,790 für den Knoten mein Ziel zu löschen? 269 00:12:42,790 --> 00:12:47,657 Also das ist, warum wir hier Zeiger n. 270 00:12:47,657 --> 00:12:49,857 >> ZIELGRUPPE: Also der Pfeil, n, den Wert zu setzen Sie 271 00:12:49,857 --> 00:12:52,058 und speichern sie in einem Knoten namens n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: So ist es, wie wenn ich gehen durch diese verkettete Liste 274 00:12:58,820 --> 00:13:00,310 und zeigt auf fünf. 275 00:13:00,310 --> 00:13:03,600 Wenn ich will, um diesen Wert zu erhalten, wenn Ich möchte diese Zahl, 5 zu erhalten, 276 00:13:03,600 --> 00:13:06,400 Ich muss den Mauspfeil n zu tun. 277 00:13:06,400 --> 00:13:06,900 Cool? 278 00:13:06,900 --> 00:13:07,900 Ja. 279 00:13:07,900 --> 00:13:11,200 >> ZIELGRUPPE: Ist n die Namen der Variablen? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Ja. 281 00:13:11,700 --> 00:13:14,870 Wenn wir also zurück Flip ein Rutsche, ist n der Name 282 00:13:14,870 --> 00:13:18,660 der Wert in der Knoten in unserem verketteten Liste. 283 00:13:18,660 --> 00:13:21,510 Und ich weiß, es kann ein wenig zu bekommen wenig verwirrend, weil wir auch 284 00:13:21,510 --> 00:13:24,680 werden das Ding nennen dass wir wollen n löschen. 285 00:13:24,680 --> 00:13:26,717 Also das ist, wo das eine Zeile stammt. 286 00:13:26,717 --> 00:13:27,671 Ja? 287 00:13:27,671 --> 00:13:31,010 >> ZIELGRUPPE: Was haben Sie [Unverständlich], wie sie funktionieren? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Ein Zeiger [unverständlich]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Sicher. 291 00:13:37,520 --> 00:13:40,027 Sprechen Sie about-- welche Linie? 292 00:13:40,027 --> 00:13:41,526 ZIELGRUPPE: Die letzte Zeile [unverständlich]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Sicher, OK. 295 00:13:45,250 --> 00:13:48,540 Also schauen wir uns das Bild in um zu versuchen, das zu erklären. 296 00:13:48,540 --> 00:13:51,030 Es tut mir leid für die Kamera, war die Frage, 297 00:13:51,030 --> 00:13:54,580 können wir erklären, Zeiger Pfeil nächste Zeiger vorherigen. 298 00:13:54,580 --> 00:14:01,510 OK, also lassen Sie uns sagen, dass wir in fünf sind und unser Ziel ist es, zu löschen fünf. 299 00:14:01,510 --> 00:14:07,240 So Zeiger nächsten, die von diesen drei Knoten bedeutet, dass Sie uns geben? 300 00:14:07,240 --> 00:14:10,840 Das bringt uns zu dem sechsten Knoten, nicht wahr? 301 00:14:10,840 --> 00:14:16,490 >> OK, so jetzt sind wir gefragt für die sechs früheren. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 Und wir sind das Zurücksetzen dieser gleich sein, vier, 304 00:14:20,210 --> 00:14:23,214 die an fünf frühere zufällig. 305 00:14:23,214 --> 00:14:25,180 Ich weiß, es ist super schwer den Überblick zu behalten. 306 00:14:25,180 --> 00:14:29,286 Ich empfehle Ihnen Bilder zeichnen wenn Sie eine Frage wie diese zu erhalten. 307 00:14:29,286 --> 00:14:30,242 Ja? 308 00:14:30,242 --> 00:14:32,617 >> ZIELGRUPPE: Ist der Grund dafür, dass wir nicht über ein [unverständlich]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Genau. 311 00:14:38,570 --> 00:14:44,800 Die Frage war, warum wir brauchen, um hier zu überprüfen? 312 00:14:44,800 --> 00:14:48,160 Warum gehen wir nicht brauchen, um zu prüfen, Zeiger vorherigen ungleich null? 313 00:14:48,160 --> 00:14:50,070 Und es ist, weil wir bereits ausgeschieden 314 00:14:50,070 --> 00:14:52,490 der Fall, wenn sich der Zeiger der ganz am Anfang. 315 00:14:52,490 --> 00:14:54,060 Sehr gute Frage. 316 00:14:54,060 --> 00:14:56,880 Sonst noch dazu? 317 00:14:56,880 --> 00:14:57,380 OK, cool. 318 00:14:57,380 --> 00:14:58,360 Lassen Sie uns also beenden Sie es. 319 00:14:58,360 --> 00:14:59,890 Wir sind fast da. 320 00:14:59,890 --> 00:15:01,310 >> So was, wenn es an die Spitze? 321 00:15:01,310 --> 00:15:03,360 Was wäre, wenn statt versuchen, zu löschen fünf, 322 00:15:03,360 --> 00:15:06,240 wollten wir eigentlich vier löschen? 323 00:15:06,240 --> 00:15:07,270 Was würde ich tun? 324 00:15:07,270 --> 00:15:09,610 Nun, ich möchte meinen Kopf, was zurück? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Shout it out? 327 00:15:15,585 --> 00:15:16,710 ZIELGRUPPE: Die eine, nachdem es. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Schöne. 329 00:15:17,460 --> 00:15:26,430 OK, wir wollen Liste zu sein Zeige , was auch immer unsere Zeiger nächsten Knoten ist. 330 00:15:26,430 --> 00:15:29,040 Gute. 331 00:15:29,040 --> 00:15:30,810 Und nur der Vollständigkeit halber ist willen, würden wir 332 00:15:30,810 --> 00:15:35,590 wollen, dass so lange prüfen, wie unsere Liste nicht null ist, so lange wie unsere Liste nicht 333 00:15:35,590 --> 00:15:42,730 leer ist, dann setzen möchten wir unsere bisherigen gleich null. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Frage so weit? 336 00:15:50,230 --> 00:15:53,205 Einen Schritt davon from--? 337 00:15:53,205 --> 00:15:55,530 >> PUBLIKUM: Wäre es, wenn sein Liste ist nicht gleich null? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Ja, Sie haben völlig Recht. 339 00:15:56,950 --> 00:15:58,130 Es tut mir leid. 340 00:15:58,130 --> 00:16:00,040 Ist Liste ist nicht gleich null. 341 00:16:00,040 --> 00:16:01,915 Ehrfürchtig. 342 00:16:01,915 --> 00:16:04,245 Der Versuch, das alles auf die Leinwand zu bringen. 343 00:16:04,245 --> 00:16:06,870 Es ist eine Art herunterfallen. 344 00:16:06,870 --> 00:16:07,730 Sorry, Jungs. 345 00:16:07,730 --> 00:16:11,874 Und last but not least, alle wir tun müssen, ist Rückkehr. 346 00:16:11,874 --> 00:16:12,840 OK. 347 00:16:12,840 --> 00:16:15,400 Das war viel vollgestopft in wirklich schnell. 348 00:16:15,400 --> 00:16:16,800 Nein, Sie haben, um diese über zu suchen. 349 00:16:16,800 --> 00:16:18,216 Sag mir, wenn Sie Fragen haben. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Ja? 352 00:16:20,732 --> 00:16:26,940 >> ZIELGRUPPE: Wenn Liste ist unter der Kopf, dann- warten, nevermind. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, gut. 354 00:16:27,700 --> 00:16:30,987 Also das ist, wenn Liste ist an der Spitze, wir sie entfernen, um was auch immer wir eingefügt. 355 00:16:30,987 --> 00:16:31,486 Ja? 356 00:16:31,486 --> 00:16:33,777 >> ZIELGRUPPE: Können Sie erklären, die erste if-Anweisung wieder? 357 00:16:33,777 --> 00:16:36,149 Wenn der Zeiger auf n gleich n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Sicher. 359 00:16:36,690 --> 00:16:42,780 So ist unser Ziel, diese ganze Funktion ist um den Knoten, der Wert n zu löschen. 360 00:16:42,780 --> 00:16:47,460 Also, wenn wir, wie wir sind Durchlaufen unserer Liste, 361 00:16:47,460 --> 00:16:51,770 der Knoten mit dem Wert n, das ist das, was wir wollen, zu löschen. 362 00:16:51,770 --> 00:16:57,286 Also alles, was der Löschen geschieht innerhalb dieses großen if-Anweisung. 363 00:16:57,286 --> 00:16:58,593 Ist das sinnvoll? 364 00:16:58,593 --> 00:16:59,480 Kühle. 365 00:16:59,480 --> 00:16:59,990 Ja? 366 00:16:59,990 --> 00:17:02,864 >> ZIELGRUPPE: Vielleicht haben Sie gerade nicht sehen können, , aber nicht müssen Sie auch eine Linie 367 00:17:02,864 --> 00:17:06,024 Scrollen Sie durch die Liste? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Bringen wir diese oben ein wenig, und wir werden dieses Recht in den Boden zu werfen. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Vielleicht würde der Vorstand haben war eine etwas bessere Idee. 372 00:17:15,490 --> 00:17:17,829 Wie würde ich bewegen Zeiger vorwärts? 373 00:17:17,829 --> 00:17:20,184 >> ZIELGRUPPE: Pointer entspricht Zeiger plus eins. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Schöne. 375 00:17:21,599 --> 00:17:25,050 So dass ermöglicht es uns, weiter durchlaufen. 376 00:17:25,050 --> 00:17:26,251 OK. 377 00:17:26,251 --> 00:17:27,750 PUBLIKUM: Wäre es ein anderes? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Noch einmal? 379 00:17:29,028 --> 00:17:32,444 PUBLIKUM: Wäre es nicht da sein, ein anderes nach dem großen, alten, wenn 380 00:17:32,444 --> 00:17:35,519 Anweisung [unverständlich]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Welcher Teil? 382 00:17:36,310 --> 00:17:38,350 Es tut mir leid. 383 00:17:38,350 --> 00:17:41,800 >> ZIELGRUPPE: Die Durchquerung, sollte es nicht ein anderes? 384 00:17:41,800 --> 00:17:43,550 HANNAH: Sie unbedingt könnte ein anderes haben. 385 00:17:43,550 --> 00:17:46,930 Weil ich ein Rückgaberecht gibt, brauchen Sie nicht eine andere. 386 00:17:46,930 --> 00:17:48,760 Aber ja, gute Frage. 387 00:17:48,760 --> 00:17:50,170 OK, nicht wahr? 388 00:17:50,170 --> 00:17:52,878 ZIELGRUPPE: Können wir von Zeiger denken dass sich durch die Liste zu bewegen 389 00:17:52,878 --> 00:17:56,610 als unter dem Wert jedes Knotens in der Liste? 390 00:17:56,610 --> 00:18:00,650 Oder sollten wir halten sie für Art außerhalb der Liste? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Entweder man ist in Ordnung, denke ich. 392 00:18:02,350 --> 00:18:05,880 Die Art, wie ich mir das ist Ich sage: OK, ich bin Zeiger. 393 00:18:05,880 --> 00:18:06,520 Und das ist mir. 394 00:18:06,520 --> 00:18:07,150 Das ist meine Hand. 395 00:18:07,150 --> 00:18:09,960 Ich werde auf die verschiedenen Punkt Dinge, die ich will, um durch laufen. 396 00:18:09,960 --> 00:18:12,270 Zuerst werde ich zeigen an die Spitze der Liste. 397 00:18:12,270 --> 00:18:14,144 Und das mir, ich bin erzählt werde zu vier verweisen. 398 00:18:14,144 --> 00:18:18,060 Und so, ich zu sein, außerhalb der Liste, I kann auf jedes dieser Elemente zeigen. 399 00:18:18,060 --> 00:18:19,520 Also ich denke an mich als Zeiger. 400 00:18:19,520 --> 00:18:21,645 ZIELGRUPPE: Also, wenn Sie zu löschen eines dieser Elemente, 401 00:18:21,645 --> 00:18:23,404 Sie selbst zu löschen, so zu sprechen. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Genau. 403 00:18:24,070 --> 00:18:25,920 So können Sie das Ding zu löschen Sie zeigte auf. 404 00:18:25,920 --> 00:18:28,340 Also in diesem Beispiel, dass sahen wir, wo wir sind 405 00:18:28,340 --> 00:18:31,670 versuchen, zu löschen fünf, wenn ich mit fünf zeigt, 406 00:18:31,670 --> 00:18:34,200 Ich möchte das Löschen Sache, die ich zu zeigen. 407 00:18:34,200 --> 00:18:35,870 Genau richtig. 408 00:18:35,870 --> 00:18:36,577 Ja? 409 00:18:36,577 --> 00:18:39,410 ZIELGRUPPE: Haben wir uns um die genommen wenn n nicht in der Liste? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Wenn n nicht in der Liste? 411 00:18:40,460 --> 00:18:43,501 Alle, die gehen zu geschehen ist, sind Sie gehen durch und wiederholen laufen 412 00:18:43,501 --> 00:18:47,616 durch, und dann wirst du zu bekommen, um als Null-Zeiger, 413 00:18:47,616 --> 00:18:48,990 und dann wirst du zu tun. 414 00:18:48,990 --> 00:18:50,812 >> ZIELGRUPPE: So haben wir etwas zurück? 415 00:18:50,812 --> 00:18:51,520 HANNAH: Wir könnten. 416 00:18:51,520 --> 00:18:54,500 Die Art und Weise, dass, wenn dieser definierte Funktion, ich nur sagen, dass er zurückkehrt 417 00:18:54,500 --> 00:18:55,770 nichtig unabhängig. 418 00:18:55,770 --> 00:18:58,360 Aber man konnte etwas haben wie einen Integer zurückgibt, 419 00:18:58,360 --> 00:19:00,920 und lassen Sie es zurück negativ 1, wenn es scheitert. 420 00:19:00,920 --> 00:19:03,070 So ungefähr. 421 00:19:03,070 --> 00:19:04,494 Fragen with-- ja? 422 00:19:04,494 --> 00:19:05,410 ZIELGRUPPE: [unverständlich]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Es tut uns leid? 424 00:19:05,993 --> 00:19:07,419 ZIELGRUPPE: [unverständlich]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Sicher. 426 00:19:07,960 --> 00:19:11,730 Das ist also der actual-- Sobald wir alles getan, diese Arbeit zu bewegen 427 00:19:11,730 --> 00:19:16,530 all diese Pfeile um, unser ganzes Ziel war es, die Knoten loszuwerden 428 00:19:16,530 --> 00:19:18,230 dass wir suchen. 429 00:19:18,230 --> 00:19:21,610 Also in diesem Fall, die Befreiung Zeiger, wenn ich bis fünf zeigen, 430 00:19:21,610 --> 00:19:24,670 es ist wie das Löschen dieses mittleren Knoten. 431 00:19:24,670 --> 00:19:27,250 Das ist die freie Zeigerteil. 432 00:19:27,250 --> 00:19:29,090 Das Sinn? 433 00:19:29,090 --> 00:19:31,390 >> ZIELGRUPPE: Also dachte sogar, Sie nicht [unverständlich]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Also haben wir zu Beginn angenommen wir hatten einige Liste, war bereits-- 435 00:19:36,060 --> 00:19:37,220 sie dies zusammen hatte. 436 00:19:37,220 --> 00:19:39,761 Um also dieses Konstrukts Liste must've sie [unverständlich]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Kühle. 439 00:19:42,750 --> 00:19:44,490 Sonst noch etwas mit diesem? 440 00:19:44,490 --> 00:19:46,386 Ja? 441 00:19:46,386 --> 00:19:49,204 >> ZIELGRUPPE: Was ist, wenn die Liste hat die Nulllinie nicht gleich? 442 00:19:49,204 --> 00:19:49,704 [Unverständlich]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Genau hier? 445 00:19:53,080 --> 00:19:53,840 ZIELGRUPPE: Ja. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, alles, was ich tue, ist Ich bin nur dafür sorgen, 447 00:19:57,370 --> 00:20:03,250 dass, bevor ich versuche, dereferenzieren Liste bevor ich versuchen, auf den vorherigen, 448 00:20:03,250 --> 00:20:07,210 Ich möchte sicherstellen, dass es nicht null, damit ich nicht bekommen eine seg Fehler. 449 00:20:07,210 --> 00:20:08,400 Kühle. 450 00:20:08,400 --> 00:20:10,820 >> OK, ich weiß, das war ganz eine Menge, um durchzukommen. 451 00:20:10,820 --> 00:20:14,950 Also das Dia wird zur Verfügung gestellt, um Sie. 452 00:20:14,950 --> 00:20:17,341 So kann man durch sie in mehr ins Detail gehen. 453 00:20:17,341 --> 00:20:17,841 Ja? 454 00:20:17,841 --> 00:20:19,749 >> ZIELGRUPPE: Warum wird die Liste [unverständlich]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Sicher. 457 00:20:24,670 --> 00:20:27,390 Also wirklich Liste verweist auf dieses Element genau hier, 458 00:20:27,390 --> 00:20:29,200 das erste Element in der Liste. 459 00:20:29,200 --> 00:20:30,748 Es kann also nicht über eine frühere. 460 00:20:30,748 --> 00:20:31,736 Ja? 461 00:20:31,736 --> 00:20:35,194 >> ZIELGRUPPE: Unterstützt den Zeiger Punkt auf die gleiche Adresse im Speicher? 462 00:20:35,194 --> 00:20:38,404 Ist es auf den gleichen Punkt Adresse in dem Speicher als die Knoten 463 00:20:38,404 --> 00:20:40,640 dass es zu zeigen? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Ja, weist sie zu diesem Knoten im Speicher. 465 00:20:43,865 --> 00:20:47,190 >> ZIELGRUPPE: Richtig, so wenn Sie [unverständlich]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: In gewisser Weise ja. 467 00:20:50,580 --> 00:20:51,280 OK. 468 00:20:51,280 --> 00:20:52,997 Also gut, lassen Sie uns nun zusammen mit diesem. 469 00:20:52,997 --> 00:20:55,330 Und wenn Sie noch mehr Fragen, bleiben, um am Ende, 470 00:20:55,330 --> 00:20:57,130 und wir können durch sie wieder gehen. 471 00:20:57,130 --> 00:20:58,120 OK, cool. 472 00:20:58,120 --> 00:21:00,490 Nun, weiter zu gehen erhalten wir Tabellen, versucht Hash, 473 00:21:00,490 --> 00:21:04,940 und Bäume, die man Super bekam vertraut mit in p-Set fünf, Rechtschreibprüfung. 474 00:21:04,940 --> 00:21:11,020 >> So Hash-Tabelle ist nur ein Array mit einfach verkettete Listen 475 00:21:11,020 --> 00:21:14,050 oder doppelt verkettete Listen kommen aus der IT. 476 00:21:14,050 --> 00:21:16,380 Wir haben also eine Art von assoziativen Arrays. 477 00:21:16,380 --> 00:21:21,280 Und wie wir wissen, was von ihnen Arrays Eimer, in zu erhalten, 478 00:21:21,280 --> 00:21:24,137 Wir verwenden eine Hash-Funktion. 479 00:21:24,137 --> 00:21:26,470 Also in diesem Fall, kann jeder erraten, was die Hash-Funktion 480 00:21:26,470 --> 00:21:28,636 möchte nur auf einige basieren der Eingangs- und Ausgangs? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> ZIELGRUPPE: Brief Nummer des Alphabets. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Genau. 484 00:21:33,860 --> 00:21:36,160 Er stellt sie nur in alphabetischer Reihenfolge. 485 00:21:36,160 --> 00:21:39,280 Alles, was mit einem beginnt A wird in den ersten Eimer gelegt. 486 00:21:39,280 --> 00:21:43,340 Alles mit einem B wird in die setzen zweiten Eimer, usw., und so weiter. 487 00:21:43,340 --> 00:21:45,620 Awesome, OK. 488 00:21:45,620 --> 00:21:48,980 Und eine Hash-Funktion irgendeine Funktion, die in einem Wort übernimmt 489 00:21:48,980 --> 00:21:51,910 und sagen Ihnen, was Eimer in gehört. 490 00:21:51,910 --> 00:21:55,150 So denen in unserem Eintrag Array gehört in. 491 00:21:55,150 --> 00:21:58,080 >> Also jedes Mal, ich meine Hash-Funktion ein Wort, 492 00:21:58,080 --> 00:22:00,660 es sollte mir das gleiche sagen legen jedes einzelne Mal. 493 00:22:00,660 --> 00:22:03,270 Also, wenn wir die Hash-Funktion von der vorherigen Folie 494 00:22:03,270 --> 00:22:05,950 wo wir durch die Sortier ersten Buchstaben des Alphabets, 495 00:22:05,950 --> 00:22:08,230 jedes Mal, wenn ich meine Hash-Funktion "apple" 496 00:22:08,230 --> 00:22:10,180 es sollte mich immer zurück zu geben 0. 497 00:22:10,180 --> 00:22:12,890 Also wenn ich ein Apfel in meinem Hash-Tabelle setzen, 498 00:22:12,890 --> 00:22:17,700 wenn ich "apple", meine Hash-Funktion, es sollte sagen, gehen Sie es in Eimer 0. 499 00:22:17,700 --> 00:22:19,980 Wenn ich mich für ein Apfel in meinem Hash-Tabelle 500 00:22:19,980 --> 00:22:24,340 und ich sage, wo Macht Apfel Live, bitten Sie Ihre Hash-Funktion. 501 00:22:24,340 --> 00:22:26,900 Und er sagt, gehen Sie zu 0 Eimer. 502 00:22:26,900 --> 00:22:29,150 In Ordnung? 503 00:22:29,150 --> 00:22:32,660 Fragen mit Hash-Funktionen? 504 00:22:32,660 --> 00:22:34,570 Ehrfürchtig. 505 00:22:34,570 --> 00:22:37,320 >> Hier ist ein wenig mehr ausführliche Beschreibung 506 00:22:37,320 --> 00:22:39,570 von dem, was eine Hash-Funktion aussehen könnte. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 In Ordnung. 509 00:22:42,960 --> 00:22:45,960 Nun, das Problem mit den Hash- Funktionen ist in einer idealen Welt, 510 00:22:45,960 --> 00:22:48,870 wir haben nur eine was in jedem Eimer. 511 00:22:48,870 --> 00:22:50,900 Aber in Wirklichkeit gibt es nicht nur ein Wort 512 00:22:50,900 --> 00:22:54,280 das beginnt mit A. Es gibt nicht nur ein Wort, das mit B. So beginnt 513 00:22:54,280 --> 00:22:56,960 in diesem Fall, wenn wir plötzlich "Beere" 514 00:22:56,960 --> 00:22:58,710 und wir wollen es in unserer Hash-Tabelle, 515 00:22:58,710 --> 00:23:03,640 und wir sehen, oh, nein, Banane schon da, was wir tun? 516 00:23:03,640 --> 00:23:05,900 >> Nun, wir haben zwei Möglichkeiten. 517 00:23:05,900 --> 00:23:07,990 Die erste Option ist linearen Austesten, die 518 00:23:07,990 --> 00:23:11,100 bedeutet nur, Go Find der nächste leere Eimer. 519 00:23:11,100 --> 00:23:14,100 Gehen Sie finden die nächste leere Array-Eintrag. 520 00:23:14,100 --> 00:23:15,750 Und einfach "berry" gibt. 521 00:23:15,750 --> 00:23:18,880 Also ich weiß, es ist zu vermuten, gehen mit Bananen in einem Eimer. 522 00:23:18,880 --> 00:23:22,155 Aber diese einfach in drei Eimer, weil drei Eimer leer ist. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Eine weitere Option ist wahrscheinlich was Sie implementieren 525 00:23:26,680 --> 00:23:29,220 im p-Set, in dem Sie hatten getrennte Verkettung. 526 00:23:29,220 --> 00:23:33,990 So jede Ihrer Eimer, jede Ihrer Array-Elemente, 527 00:23:33,990 --> 00:23:38,410 hält nicht nur ein Wort, aber eigentlich einen Zeiger auf eine Liste von Wörtern. 528 00:23:38,410 --> 00:23:41,880 So dass, wenn Sie hatte Banane in Ihrer Hash-Tabelle 529 00:23:41,880 --> 00:23:44,740 und plötzlich wollte um Beere, kein Problem hinzuzufügen. 530 00:23:44,740 --> 00:23:51,110 Fügen Sie einfach Beere auf bis zum Ende, oder der Anfang, der verknüpften Liste. 531 00:23:51,110 --> 00:23:54,040 OK, awesome. 532 00:23:54,040 --> 00:23:58,490 Fragen mit Hash- Tabellen, bevor wir weitergehen? 533 00:23:58,490 --> 00:23:59,850 >> In Ordnung. 534 00:23:59,850 --> 00:24:01,070 Bäume und Versuche. 535 00:24:01,070 --> 00:24:07,980 OK, so war dies eine weitere Option, für die Umsetzung Wörterbuch. 536 00:24:07,980 --> 00:24:09,100 Sie können einen Versuch gemacht haben. 537 00:24:09,100 --> 00:24:13,420 Also ist es eine besondere Art von Baum, verhält sich wie ein Multi-Level-Hash-Tabelle. 538 00:24:13,420 --> 00:24:16,862 So dass Sie das Bild sehen wo Sie ein Array, dass 539 00:24:16,862 --> 00:24:19,320 weist auf eine Reihe von Arrays diesen Punkt zu einer Gruppe von Arrays 540 00:24:19,320 --> 00:24:20,390 diesen Punkt zu einer Gruppe von Arrays. 541 00:24:20,390 --> 00:24:23,140 Und wir werden sehen, was genau das würde wie auf einem zukünftigen Dia aussehen. 542 00:24:23,140 --> 00:24:26,070 Und allgemeiner, ein Baum ist irgendeine Datenstruktur 543 00:24:26,070 --> 00:24:29,710 in dem die Daten in irgendeiner Hierarchie organisiert. 544 00:24:29,710 --> 00:24:32,610 Also, wo wir sahen, wir haben eine Art von Verständnis 545 00:24:32,610 --> 00:24:36,130 einer oberen Ebene, eine nächste Ebene, eine nächste Ebene, eine nächste Ebene. 546 00:24:36,130 --> 00:24:39,690 Also das ist wohl klar, mit einigen spezifischen Beispielen. 547 00:24:39,690 --> 00:24:40,880 Also hier ist unser Baum. 548 00:24:40,880 --> 00:24:42,970 Sie können sehen, dass es hat besondere Ebenen 549 00:24:42,970 --> 00:24:45,480 dass wir mit diesem Wurzelknoten, eines. 550 00:24:45,480 --> 00:24:47,640 Und wir können sich über unser Baum gehen. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Ein binärer Baum ist ein bestimmte Art von Baum. 553 00:24:53,910 --> 00:24:56,770 Und die einzige Spezifikation für einen Binärbaum 554 00:24:56,770 --> 00:25:01,130 ist, dass jeder Knoten höchstens zwei Blättern. 555 00:25:01,130 --> 00:25:03,960 So gehst du nicht zu einem sehen dieser Knoten drei oder vier haben, 556 00:25:03,960 --> 00:25:06,880 oder eine andere Anzahl von Blättern. 557 00:25:06,880 --> 00:25:11,310 Und dann noch spezielleren ist ein binärer Suchbaum 558 00:25:11,310 --> 00:25:18,010 wobei jeder Knoten auf der linken Seite der Knoten wird ein Wert kleiner zu haben. 559 00:25:18,010 --> 00:25:21,180 Und jeder Wert auf die Recht wird größer sein. 560 00:25:21,180 --> 00:25:26,900 Also, wenn Sie sehen, 44 ist auf unsere Wurzel, nach links, 11, 22 und 33 561 00:25:26,900 --> 00:25:28,940 sind alle weniger als unsere Wurzel. 562 00:25:28,940 --> 00:25:33,890 Und auf der rechten Seite sind Zahlen bigger-- 66, 55 und 77. 563 00:25:33,890 --> 00:25:37,380 Und diese Eigenschaft gilt auf jeder Ebene des Baumes. 564 00:25:37,380 --> 00:25:42,690 >> Also, wenn wir gehen, um 22, 11 und 33, weiterhin 11 565 00:25:42,690 --> 00:25:46,950 ist kleiner als 22 und 33 ist größer als 22. 566 00:25:46,950 --> 00:25:50,160 Und das macht es einfacher, zu suchen denn wenn wir uns für eine Reihe suchen, 567 00:25:50,160 --> 00:25:53,877 Wir wissen genau, was Zweig zu folgen unten. 568 00:25:53,877 --> 00:25:56,210 So sollte diese Ihnen erinnern wenig von binären Suche. 569 00:25:56,210 --> 00:25:56,967 Ja? 570 00:25:56,967 --> 00:25:58,835 >> ZIELGRUPPE: Also, wenn Sie beschreibt binäre, 571 00:25:58,835 --> 00:26:00,587 Sie sagte, dass es höchstens zwei Blätter hat? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 ZIELGRUPPE: Könnte es weniger? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Ja. 575 00:26:03,121 --> 00:26:06,720 Also sagen wir mal zum Beispiel Sie nicht über eine gerade Anzahl von Dingen 576 00:26:06,720 --> 00:26:11,791 und man konnte nicht füllen Sie alle Ihre Blätter, es ist in Ordnung, wenn man eine hat. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Ehrfürchtig. 579 00:26:12,789 --> 00:26:15,930 Alle anderen Fragen auf Bäumen? 580 00:26:15,930 --> 00:26:16,670 OK. 581 00:26:16,670 --> 00:26:20,110 >> Zurück zu unseren Versuchen als ich sprach über etwas früher, 582 00:26:20,110 --> 00:26:23,900 wie wir diese Multi-Level-Arrays. 583 00:26:23,900 --> 00:26:26,280 Also in diesem Fall, beginnen wir am Anfang. 584 00:26:26,280 --> 00:26:29,030 Und wir können jede gegebene Wort hinab folgen. 585 00:26:29,030 --> 00:26:30,780 Also lassen Sie uns sagen, wir wollten für Turing suchen. 586 00:26:30,780 --> 00:26:34,380 Wir starten am T, folgen Sie unten auf ein Array, das U enthält, 587 00:26:34,380 --> 00:26:37,350 und befolgen Sie sie gedrückt, bis wir erreichen das kleine Dreieck die 588 00:26:37,350 --> 00:26:39,060 sagt uns, ja, ein Wort zu finden Sie. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Klar auf dern? 591 00:26:44,120 --> 00:26:48,138 Alles, was da drüben gehen? 592 00:26:48,138 --> 00:26:48,908 Ja? 593 00:26:48,908 --> 00:26:51,866 ZIELGRUPPE: Ist das Symbol der Delta- haben, um Platz innerhalb des try besetzen? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Ja, so ist es nicht der Fall ist unbedingt einmal zu einem Delta sein. 595 00:26:54,532 --> 00:26:57,760 Aber wir brauchen einen Weg, um sagen unseren computer-- sorry, 596 00:26:57,760 --> 00:27:01,130 so dass wir wissen, dass TUR ist nicht ein Wort. 597 00:27:01,130 --> 00:27:04,180 Da sagen wir, wir hatten nicht Dieses Konzept eines Delta dieses Konzept 598 00:27:04,180 --> 00:27:09,850 Glückwünsche, ein Wort zu finden Sie, es durchlaufen und durchlaufen T-U-R, 599 00:27:09,850 --> 00:27:11,300 und dann sagen, fantastisch, ich fand es! 600 00:27:11,300 --> 00:27:12,670 Es muss ein Wort sein. 601 00:27:12,670 --> 00:27:13,720 Aber es ist wirklich nicht. 602 00:27:13,720 --> 00:27:15,310 Wir wollen ganz Turing ein Wort sein. 603 00:27:15,310 --> 00:27:17,760 Also müssen wir etwas an die haben Ende, die sagt, glückwünsche, 604 00:27:17,760 --> 00:27:19,051 Sie ein legitimes Wort gefunden. 605 00:27:19,051 --> 00:27:21,680 ZIELGRUPPE: Also, wenn Sie wie gehabt 26 Buchstaben des Alphabets, 606 00:27:21,680 --> 00:27:24,560 würden Sie tatsächlich haben 27 Tasten in Ihrem Versuch? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, ja. 608 00:27:26,010 --> 00:27:28,210 Also wirklich, ich glaube, wird auf der nächsten Folie sein. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Wo, wenn Sie eine Knoten in Ihrem Versuch, du bist 611 00:27:32,880 --> 00:27:35,800 gehen zu 27 Kindern statt 26 haben. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Haben Sie Fragen dazu? 614 00:27:40,050 --> 00:27:40,550 Ja? 615 00:27:40,550 --> 00:27:44,569 ZIELGRUPPE: Warum versucht nehmen so viel Platz [unverständlich], wie Sie gehen? 616 00:27:44,569 --> 00:27:47,629 Warum wird es als sein [unverständlich]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Sicher. 618 00:27:48,170 --> 00:27:48,790 Gehen wir zurück. 619 00:27:48,790 --> 00:27:52,350 Die Frage ist, warum Versuche sind so viel größer 620 00:27:52,350 --> 00:27:54,620 als so etwas wie eine Hash-Tabelle. 621 00:27:54,620 --> 00:27:57,790 Also für jede dieser Ebenen, auch wenn sie hier nicht gezeichnet, 622 00:27:57,790 --> 00:28:01,250 müssen Sie alle 26 Zeichen lang sein. 623 00:28:01,250 --> 00:28:04,420 Und der Grund dafür, dass man nicht sagen, oh, aber wie für Turing, I 624 00:28:04,420 --> 00:28:07,570 müssen nicht alle diejenigen haben gleichen Dinge auf der Ebene der U. Nun, 625 00:28:07,570 --> 00:28:11,390 wenn plötzlich die Sie hinzufügen wollten etwas, das wie T-H war, 626 00:28:11,390 --> 00:28:14,800 müssten Sie das haben Möglichkeit der Erweiterung durch das Wort. 627 00:28:14,800 --> 00:28:17,330 So wird für jeden einzelnen Buchstaben, Sie gehen zu müssen sind 628 00:28:17,330 --> 00:28:19,730 einen Haufen haben Arrays kommen aus der IT. 629 00:28:19,730 --> 00:28:24,060 So können Sie sehen, wie es wäre zu bekommen wirklich groß, wirklich schnell. 630 00:28:24,060 --> 00:28:26,560 Noch Fragen? 631 00:28:26,560 --> 00:28:28,980 In Ordnung. 632 00:28:28,980 --> 00:28:29,832 Ja? 633 00:28:29,832 --> 00:28:33,210 >> ZIELGRUPPE: Wann sind Versuche schneller als Hash-Tabellen? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Wenn es versucht, schneller als Hash-Tabellen? 635 00:28:36,280 --> 00:28:39,120 Also, wenn Sie einen wirklich hatte schlechte Hash-Funktion. 636 00:28:39,120 --> 00:28:41,840 Also lassen Sie uns sagen, ich war wie, hier ist Ihre Hash-Funktion. 637 00:28:41,840 --> 00:28:43,660 Egal, was Wort Sie mir, ich bin immer 638 00:28:43,660 --> 00:28:47,740 werde es in Array-Eintrag 0 setzen. 639 00:28:47,740 --> 00:28:52,000 Und so haben wir am Ende mit nur darum, alles in einem großen langen verketteten Liste. 640 00:28:52,000 --> 00:28:58,740 Und so ein Lookup Zeit würde im schlimmsten Fall nehmen n, wenn es am Ende der Liste. 641 00:28:58,740 --> 00:29:03,150 Mit dem Versuch, wir müssen nur durchlaufen durch die Buchstaben in dem Wort. 642 00:29:03,150 --> 00:29:07,080 Also selbst wenn wir soeben einen Haufen Worte zu unserem Versuch, 643 00:29:07,080 --> 00:29:09,620 wäre es nicht mehr nehmen uns um ein bestimmtes Wort zu finden. 644 00:29:09,620 --> 00:29:11,750 >> Alles, was wir tun müssen, ist, für Beispielsweise in diesem Fall 645 00:29:11,750 --> 00:29:17,170 Lassen Sie uns sagen, dass wir für Zoom suchen, wir müssen nur durchlaufen 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, vier Buchstaben. 647 00:29:19,840 --> 00:29:22,250 Also das ist nur die Länge des Wortes Zoom. 648 00:29:22,250 --> 00:29:25,400 Es spielt keine Rolle, wie viele mehr Wörter in diesem Versuch haben wir. 649 00:29:25,400 --> 00:29:30,225 Wir können immer alles in diesen vier Schritten. 650 00:29:30,225 --> 00:29:31,215 Ehrfürchtig. 651 00:29:31,215 --> 00:29:32,205 Ja? 652 00:29:32,205 --> 00:29:34,185 >> ZIELGRUPPE: So [unverständlich] ist ein Array, oder? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 ZIELGRUPPE: Wenn Sie Suche nach [unverständlich], 655 00:29:37,155 --> 00:29:40,929 würden Sie zu durchlaufen haben Ihr Array zu [unverständlich] finden? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Sicher. 657 00:29:41,470 --> 00:29:44,000 ZIELGRUPPE: Nicht, dass mehr Zeit in Anspruch nehmen? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Wenn ich zu gehen sagen, dass meine Array ist immer 659 00:29:46,370 --> 00:29:49,250 werde A, B, C, D sein, E, F, G, blah blah blah, 660 00:29:49,250 --> 00:29:51,630 so dass, wenn ich weiß, es ist immer in der gleichen genaue Reihenfolge, 661 00:29:51,630 --> 00:29:53,880 wenn ich weiß, es ist immer in alphabetischer Reihenfolge, 662 00:29:53,880 --> 00:29:57,860 Ich kann nur sagen O ist Nummer so und so im Alphabet. 663 00:29:57,860 --> 00:29:59,620 Nur direkt an diesen Ort. 664 00:29:59,620 --> 00:30:01,860 Denn denken Sie daran, mit Arrays, die wir zugreifen können, 665 00:30:01,860 --> 00:30:06,590 jedes Element des Arrays in konstanten Zeit, wenn wir wissen, wo wir suchen. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Ja? 668 00:30:09,580 --> 00:30:12,005 >> ZIELGRUPPE: Auf dem früheren Schieben Sie [unverständlich] 27, 669 00:30:12,005 --> 00:30:14,430 aber 26 für das erste. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Es tut uns leid? 671 00:30:15,400 --> 00:30:18,800 >> ZIELGRUPPE: Ist nicht das erste eine 0, so wäre es nicht 26 sein? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Sicher, so dass, wenn wir sagen, 27, das ist werde uns Indizes 0 bis 26. 673 00:30:24,900 --> 00:30:28,220 Aber wenn Sie wirklich zählen diejenigen aus, es geht bis 27 sein. 674 00:30:28,220 --> 00:30:30,007 Gute Frage. 675 00:30:30,007 --> 00:30:30,590 Noch etwas? 676 00:30:30,590 --> 00:30:31,200 Ja? 677 00:30:31,200 --> 00:30:34,420 >> ZIELGRUPPE: So sind Versuche langsamer als Hash-Tabellen? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Tries sein werden, in theoretisch schneller als Hash-Tabellen 679 00:30:37,920 --> 00:30:39,760 aber mehr Speicherkapazität. 680 00:30:39,760 --> 00:30:40,534 Ja? 681 00:30:40,534 --> 00:30:41,450 ZIELGRUPPE: [unverständlich]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Tut mir leid, ich habe nicht Ihnen zu hören. 684 00:30:47,484 --> 00:30:48,400 ZIELGRUPPE: [unverständlich]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0-25 gibt Ihnen 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0-25 würde geben Ihnen 26, nicht wahr. 688 00:30:56,958 --> 00:30:58,457 >> ZIELGRUPPE: Und dann [unverständlich]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Richtig. 690 00:30:59,040 --> 00:31:04,760 So ist die Zahl wir die Angabe ist die Zahl der Dinge in unser Angebot. 691 00:31:04,760 --> 00:31:07,260 Wenn wir also 27, ist es wird uns geben 0 692 00:31:07,260 --> 00:31:10,620 bis 26, die geben us Raum, in diesem Fall 693 00:31:10,620 --> 00:31:12,770 Ich bin nicht wie ein Apostroph. 694 00:31:12,770 --> 00:31:17,040 So bekommen wir von 0 bis 25 sind, die ersten 26 Buchstaben des Alphabets, 695 00:31:17,040 --> 00:31:18,990 oder alle 26 Buchstaben des Alphabets. 696 00:31:18,990 --> 00:31:21,190 Und dann das letzte Sache, bei der Einreise 26 ist 697 00:31:21,190 --> 00:31:24,598 werde die Prüfung sein, Marke oder das Delta. 698 00:31:24,598 --> 00:31:26,960 Noch etwas? 699 00:31:26,960 --> 00:31:29,130 Ehrfürchtig. 700 00:31:29,130 --> 00:31:30,020 Verlor meine Ordnung. 701 00:31:30,020 --> 00:31:31,020 OK, cool. 702 00:31:31,020 --> 00:31:33,240 >> So berührt die wir bereits auf diese. 703 00:31:33,240 --> 00:31:37,430 Aber der große Kompromiss zwischen Versuchen und Hash-Tabellen 704 00:31:37,430 --> 00:31:39,720 ist, dass Versuche liefern, in Theoretisch konstant nachschlagen 705 00:31:39,720 --> 00:31:42,890 Zeiten, sondern verwenden eine Menge Speicher. 706 00:31:42,890 --> 00:31:46,495 Also gut, jetzt haben wir etwas weniger komplizierte Strukturen, 707 00:31:46,495 --> 00:31:49,640 und wir werden mit C durchgeführt werden, und wir werden rechts entlang zu bewegen. 708 00:31:49,640 --> 00:31:51,930 >> So Stacks, das sahen wir in Vortrag, in dem Sie 709 00:31:51,930 --> 00:31:55,020 so etwas wie eine Stapel von Ablagen in dem 710 00:31:55,020 --> 00:31:57,330 das letzte, was Sie setzen auf dem Stapel wird 711 00:31:57,330 --> 00:31:59,500 das erste, was Sie weg zu nehmen. 712 00:31:59,500 --> 00:32:02,880 Also das ist, was wirklich definiert einen Stapel ist, dass das letzte, was Sie anziehen 713 00:32:02,880 --> 00:32:06,080 wird der erste sein Sache, die Sie sich zu entfernen. 714 00:32:06,080 --> 00:32:09,279 Und die Terminologie, die wir verwenden ob wir etwas zu setzen, 715 00:32:09,279 --> 00:32:12,070 wenn wir gehen, um etwas hinzufügen unsere Stapel, rufen wir, dass drängen. 716 00:32:12,070 --> 00:32:14,970 Und wenn wir etwas zu nehmen off, nennen wir es knallen. 717 00:32:14,970 --> 00:32:17,080 Und wenn wir zu gehen Implementierung eines Stapels, wir 718 00:32:17,080 --> 00:32:20,660 müssen sicher sein, zu verfolgen sowohl die Größe und die Kapazität. 719 00:32:20,660 --> 00:32:24,940 So ist die Gesamtzahl der Elemente können wir zu halten, und die aktuelle Anzahl von Elementen 720 00:32:24,940 --> 00:32:27,880 dass wir uns halten. 721 00:32:27,880 --> 00:32:29,885 >> Und sehr ähnlich, haben wir Warteschlangen. 722 00:32:29,885 --> 00:32:34,510 Und der einzige Unterschied ist statt mit Stapeln, 723 00:32:34,510 --> 00:32:37,630 wir sagten, das letzte, was wir setzen auf ist das erste, was wir ausziehen. 724 00:32:37,630 --> 00:32:40,940 Also mit Warteschlangen, die erste, was wir setzen in 725 00:32:40,940 --> 00:32:43,129 wird sich das zu sein erste, was wir herausnehmen. 726 00:32:43,129 --> 00:32:45,420 Also das ist, wie wenn Sie tatsächlich Schlange vor einem Geschäft 727 00:32:45,420 --> 00:32:48,140 und schon sind Sie dabei unterstützt, dann wird die erste Person in der Reihe 728 00:32:48,140 --> 00:32:50,880 sollte die erste Person, geholfen werden kann. 729 00:32:50,880 --> 00:32:52,220 So, das wäre eine Warteschlange. 730 00:32:52,220 --> 00:32:55,880 >> Also müssen wir den Überblick über die zu halten Größe, Kapazität und Kopf da wir 731 00:32:55,880 --> 00:33:01,130 werde alle von der Front zu nehmen der Liste statt an der Rückseite. 732 00:33:01,130 --> 00:33:03,480 Fragen dazu? 733 00:33:03,480 --> 00:33:06,330 Alle Fragen, die C stört Sie? 734 00:33:06,330 --> 00:33:09,590 Datenstrukturen, der eine der betreffenden fun stuff? 735 00:33:09,590 --> 00:33:10,530 Alles klar, cool. 736 00:33:10,530 --> 00:33:14,120 Also werde ich es zu übergeben, um Alison springen in eine weitere Programmierung. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Oh, wir werden sehen. 738 00:33:15,965 --> 00:33:17,370 Wir werden sehen, wie gut ich hier tun. 739 00:33:17,370 --> 00:33:21,410 OK, ich werde versuchen und fliegen durch dieses Zeug, Leute. 740 00:33:21,410 --> 00:33:24,540 Hannah ging sehr in Tiefe auf alle ihre Sachen. 741 00:33:24,540 --> 00:33:26,900 Ich werde versuchen, zu geben Sie eine schnelle Explosion Übersicht 742 00:33:26,900 --> 00:33:31,290 damit wir Davin alle erhalten die Spaß JavaScript und Sicherheit Dinge 743 00:33:31,290 --> 00:33:33,380 dass Sie vielleicht tatsächlich wollen mehr darüber hören. 744 00:33:33,380 --> 00:33:36,600 >> OK, wie Hannah sagte, wenn Sie irgendwelche Fragen haben, 745 00:33:36,600 --> 00:33:39,170 Ich bin zu schnell, bitte, lassen Sie mich wissen. 746 00:33:39,170 --> 00:33:42,114 Ich werde Fragen wie nötig zu beantworten. 747 00:33:42,114 --> 00:33:45,280 So zu beginnen, werden wir für den Anfang wahrscheinlich eines der ersten Dinge, 748 00:33:45,280 --> 00:33:48,730 Sie mit Web gelernt Programmierung, Berechtigungen. 749 00:33:48,730 --> 00:33:52,720 So chmod, Leute sollten waren Meister in diesem mit allen Web- 750 00:33:52,720 --> 00:33:54,870 Programmierung, die Sie haben, in der letzten Zeit zu tun. 751 00:33:54,870 --> 00:33:57,320 Es ist im Grunde nur ein Befehl das ändert die Berechtigungen 752 00:33:57,320 --> 00:34:00,779 und die Zugriffsberechtigungen der Dateisystemobjekten. 753 00:34:00,779 --> 00:34:02,570 Natürlich tatsächlich sehen diese, wenn Sie 754 00:34:02,570 --> 00:34:04,910 irgendwelche Probleme mit diesen während Ihr Problem-Sets, 755 00:34:04,910 --> 00:34:11,460 Sie ls -l, die lange Zeit ist verwendet haben, um die Ansicht eine Art, wie dies zu umgehen, 756 00:34:11,460 --> 00:34:14,209 wo Sie wirklich sehen alle die Berechtigungen für eine Datei. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> Und in der Tat, wir sind gerade dabei zu gehen durch ziemlich schnell ziemlich einfach 759 00:34:20,732 --> 00:34:21,940 genau das, was jeder von ihnen bedeutet. 760 00:34:21,940 --> 00:34:24,481 So haben wir hier D, die nur steht für das Verzeichnis. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Offensichtlich genau hier sehen wir rwx, die lesen, zu schreiben, und ausführbar. 763 00:34:31,739 --> 00:34:37,090 Dies könnte auch als Bits dargestellt werden, die wir in der nächsten Seite zu gelangen. 764 00:34:37,090 --> 00:34:40,699 So jede Triade, die wir sahen hier, es ist so drei Triaden. 765 00:34:40,699 --> 00:34:48,120 Wir haben rwx, r nichts x und r Nichts x für die erste Datei. 766 00:34:48,120 --> 00:34:49,690 Es ist diese allgemeine Struktur. 767 00:34:49,690 --> 00:34:50,940 >> So haben wir einige Verzeichnis. 768 00:34:50,940 --> 00:34:53,999 Wir haben einige Benutzergruppe mit diesen Berechtigungen. 769 00:34:53,999 --> 00:34:57,040 Einige Gruppen, die diese Berechtigungen verfügt, und eine Welt, die eine Berechtigung hat. 770 00:34:57,040 --> 00:34:59,420 Sie können von ihnen als Dreiklang denken. 771 00:34:59,420 --> 00:35:01,130 Sie können von ihnen als drei Bits zu denken. 772 00:35:01,130 --> 00:35:04,060 So können sie Werte enthalten im Bereich von 0 bis 773 00:35:04,060 --> 00:35:07,350 bis 7, weshalb manchmal wir hatten Sie chmod tun 774 00:35:07,350 --> 00:35:17,510 600 anstatt chmod rw was auch immer. 775 00:35:17,510 --> 00:35:19,170 Wir werden dort in ein Beispiel zu bekommen. 776 00:35:19,170 --> 00:35:24,260 Aber im Grunde, Sie denken können von ihnen entweder nur rwx, 777 00:35:24,260 --> 00:35:28,520 oder Sie von ihnen, wie einige denken können Anzahl, wo diese erste hier 778 00:35:28,520 --> 00:35:31,480 steht für eine Zahl zwischen 0 und 7, wobei dieses zweite ein 779 00:35:31,480 --> 00:35:33,970 steht für eine Zahl zwischen 0 und 7 und die dritte 780 00:35:33,970 --> 00:35:38,245 für eine Zahl zwischen 0 und 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r einen Wert von 4 w hat einen Wert von 2, und x 782 00:35:42,700 --> 00:35:49,230 hat einen Wert von 1, weshalb dies Erlaubnis hier würde chmod 700 werden. 783 00:35:49,230 --> 00:35:53,520 Da in diesem Fall hier, sagt, dass es uns haben das erste Bit wird schaltete. 784 00:35:53,520 --> 00:35:55,380 So haben wir 4 für Lese. 785 00:35:55,380 --> 00:35:58,730 Das zweite Bit wird für gekippt w, die 2, so jetzt haben wir 6. 786 00:35:58,730 --> 00:36:02,070 Und das dritte Bit ist auf gekippt für x, die 1 ist, so erhalten wir sieben. 787 00:36:02,070 --> 00:36:04,820 Und natürlich unsere Gruppe und unsere Welt jeweils 0. 788 00:36:04,820 --> 00:36:07,770 So ist dies auch der Äquivalent chmod 700. 789 00:36:07,770 --> 00:36:12,081 Und ich würde auf jeden Fall versuchen, verstehen die Zuordnung zwischen diesen. 790 00:36:12,081 --> 00:36:14,080 Ich bin nicht sicher, wenn sie kommen an einem Quiz vor, 791 00:36:14,080 --> 00:36:18,590 aber es wäre ein Frage, die ich vielleicht fragen. 792 00:36:18,590 --> 00:36:22,110 >> Nur ein bisschen geht noch weiter in chmod hier, hier, 793 00:36:22,110 --> 00:36:27,730 ist die sehr allgemein Struktur eines chmod Anruf. 794 00:36:27,730 --> 00:36:29,500 So natürlich, wir haben hier chmod. 795 00:36:29,500 --> 00:36:34,410 Referenzen, was dies betrifft ist die geben wir diese Berechtigungen zu 796 00:36:34,410 --> 00:36:36,570 oder wer wir nehmen diese Berechtigungen von. 797 00:36:36,570 --> 00:36:44,330 So haben wir eine hier in den Berechtigungen, als hätten wir da Sie ein plus x chmod, 798 00:36:44,330 --> 00:36:45,440 wie wir bald sehen werden. 799 00:36:45,440 --> 00:36:48,460 a bedeutet nur, geben diese spezifischen Berechtigungen für alle. 800 00:36:48,460 --> 00:36:49,600 Gib sie alle. 801 00:36:49,600 --> 00:36:55,370 So könnte man sehr wohl u plus x oder g plus x oder o plus x oder mehrere 802 00:36:55,370 --> 00:36:55,870 davon. 803 00:36:55,870 --> 00:36:59,280 So dass erste Teil ist immer werde Referenzen können. 804 00:36:59,280 --> 00:37:03,220 Wer geben wir diese Berechtigungen zu, oder, die wir ihnen wegzunehmen? 805 00:37:03,220 --> 00:37:04,850 >> Der zweite ist der Bediener. 806 00:37:04,850 --> 00:37:07,350 So können Sie Jungs haben meist mit Plus behandelt. 807 00:37:07,350 --> 00:37:12,140 Dies gibt Berechtigungen wer auch immer Sie geben ihnen, 808 00:37:12,140 --> 00:37:14,840 während minus logischerweise entfernt diese. 809 00:37:14,840 --> 00:37:16,880 So ist es auch nichts Schlimmes gibt. 810 00:37:16,880 --> 00:37:23,060 Und dann Modi ist das, was wir gesprochen mit Lesen, Schreiben oder Ausführen. 811 00:37:23,060 --> 00:37:29,070 So ein Plus x bedeutet geben ausführbare Berechtigungen für alle. 812 00:37:29,070 --> 00:37:33,430 Und dann natürlich auf denen bestimmte Datei oder ein Verzeichnis. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Jeder gut mit chmod? 815 00:37:36,010 --> 00:37:37,850 Nicht so schlecht? 816 00:37:37,850 --> 00:37:42,417 >> OK, also HTML, einer von euch alt genug zu-- MySpace Alter? 817 00:37:42,417 --> 00:37:44,750 Ich habe diese auf meine Abschnitt, und buchstäblich die Hälfte der Menschen 818 00:37:44,750 --> 00:37:45,790 sah mich an, ich sei verrückt. 819 00:37:45,790 --> 00:37:47,498 Und ich war wie, Jungs, wir sind nicht so alt. 820 00:37:47,498 --> 00:37:48,910 Komm schon. 821 00:37:48,910 --> 00:37:53,360 So Hypertext Markup Language, es ist ehrlich gesagt nur eine Möglichkeit für Sie, 822 00:37:53,360 --> 00:37:57,990 , bestimmte Dinge im Internet angezeigt werden. 823 00:37:57,990 --> 00:37:59,210 Also ist es eine Markup-Sprache. 824 00:37:59,210 --> 00:38:00,640 Es ist nicht eine Skriptsprache. 825 00:38:00,640 --> 00:38:02,160 Es gibt keine Logik darin. 826 00:38:02,160 --> 00:38:05,710 Es ist einfach, um das zu ändern So etwas angezeigt wird. 827 00:38:05,710 --> 00:38:07,670 OK, das ist also ein wichtiger Unterscheidung zu machen. 828 00:38:07,670 --> 00:38:12,030 Sie gilt als eine Markup-Sprache, kein Skriptsprache. 829 00:38:12,030 --> 00:38:15,100 >> Hier haben wir also unsere HTML-Tags. 830 00:38:15,100 --> 00:38:20,390 Auf dieser Folie sind wahrscheinlich die meisten der diejenigen, die Sie kennen sollten 831 00:38:20,390 --> 00:38:22,390 und wirklich komfortabel mit. 832 00:38:22,390 --> 00:38:25,700 So offensichtlich, haben wir unsere HTML-Tag, das 833 00:38:25,700 --> 00:38:29,930 bezeichnet, dass alles in zwischen diesen beiden wird HTML sein. 834 00:38:29,930 --> 00:38:33,070 Wir haben einige Links, die offensichtlich wird Ihnen 835 00:38:33,070 --> 00:38:34,990 ein Link zu einer externen Webseite. 836 00:38:34,990 --> 00:38:37,520 Einige Titel, im hier unseren Kopf. 837 00:38:37,520 --> 00:38:40,020 Und wir haben mit unserem Körper h1, die ein Header ist, 838 00:38:40,020 --> 00:38:42,260 so dass es dann schön machen und fett und größer. 839 00:38:42,260 --> 00:38:46,040 Und dann haben wir einige p, die eine Ziffer ist. 840 00:38:46,040 --> 00:38:49,000 Sie sollten wahrscheinlich wissen, und mit den Dingen vertraut sein 841 00:38:49,000 --> 00:38:54,030 wie, wie Sie ein Bild einfügen, sind es weitere Header-Klassen? 842 00:38:54,030 --> 00:38:57,240 Ich würde auf jeden Fall komfortabel mit div. 843 00:38:57,240 --> 00:39:00,840 Das sind also die meisten Tags Sie kennen sollten. 844 00:39:00,840 --> 00:39:04,370 Aber natürlich, wie bei allem in CS 50, die Liste ist nicht vollständig. 845 00:39:04,370 --> 00:39:08,200 So stellen Sie sicher, dass auffrischen. 846 00:39:08,200 --> 00:39:13,260 >> CSS, CSS, so, wenn einer von euch zu sehen meinem Seminar von vor zwei Wochen, 847 00:39:13,260 --> 00:39:16,250 ist eigentlich nur ein Weg Ihrer Webseite zu stylen? 848 00:39:16,250 --> 00:39:18,950 OK, so haben wir einige Markup-Sprache. 849 00:39:18,950 --> 00:39:23,220 HTML, das sich um nur den Text übernimmt und, wo es auf der Seite sein. 850 00:39:23,220 --> 00:39:25,760 Aber CSS ist wirklich, was es ziemlich macht. 851 00:39:25,760 --> 00:39:30,690 Sie können diese in Ihrem HTML haben Dateien, aber wie wir später darüber zu sprechen, 852 00:39:30,690 --> 00:39:32,660 Ich bin ziemlich sicher, es könnte können die nächste Folie, es 853 00:39:32,660 --> 00:39:35,620 ist gängige Praxis, und tatsächlich Praxis, die wir wirklich zu fördern, 854 00:39:35,620 --> 00:39:40,670 für Sie, halten Sie sie getrennt, wenn wir sprechen über MVC und diese ganze Paradigma. 855 00:39:40,670 --> 00:39:42,490 Das ist wirklich, was diese Feeds in. 856 00:39:42,490 --> 00:39:46,110 >> So CSS ist nur eine Möglichkeit, die Dinge hübsch aussehen. 857 00:39:46,110 --> 00:39:50,500 Die Dinge, die hier, wie Körper und #title und .info, 858 00:39:50,500 --> 00:39:54,340 diese Selektoren und was genannt sie tun, ist sie bestimmte Dinge auszuwählen 859 00:39:54,340 --> 00:39:59,260 in Ihrer HTML-Datei und anzuwenden, ohne Stil, 860 00:39:59,260 --> 00:40:04,090 Unabhängig von der Art der Dinge, die Sie wollen, zu diesem bestimmten Element des Web- 861 00:40:04,090 --> 00:40:04,590 Seite. 862 00:40:04,590 --> 00:40:08,820 Also hier haben wir eine Hintergrundfarbe und einer Farb 863 00:40:08,820 --> 00:40:12,450 und eine Schriftfamilie, die Befinden auf das, was in den Körper aufgetragen. 864 00:40:12,450 --> 00:40:15,530 Also, wenn wir sahen hier zurück, es nicht auf den Titel gelten. 865 00:40:15,530 --> 00:40:22,340 Es würde nur auf das, was gelten in diesen Körper Selektoren, OK? 866 00:40:22,340 --> 00:40:25,250 >> Mit Titel hier, das ist werde dasselbe sein, 867 00:40:25,250 --> 00:40:28,410 die Farbe des Text blau ist nur noch 868 00:40:28,410 --> 00:40:33,870 zu beeinflussen, was in die Titel-Selektoren. 869 00:40:33,870 --> 00:40:36,580 Neben Infos hier, der Text wird rosa sein, 870 00:40:36,580 --> 00:40:38,600 Wie immer die Informationen, die hier ist. 871 00:40:38,600 --> 00:40:40,860 So ist die einzige Sache, wäre rosa auf dieser Seite 872 00:40:40,860 --> 00:40:44,100 ist Tag, Montag, 17. November 2014. 873 00:40:44,100 --> 00:40:48,770 OK, so CSS ist nur eine Möglichkeit, mehr Kontrolle over-- ja? 874 00:40:48,770 --> 00:40:51,850 >> ZIELGRUPPE: Warum musst du den Hash mit Titel benutzen? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: Nächste Folie, versprochen! 876 00:40:55,170 --> 00:40:56,810 Wir werden es schaffen. 877 00:40:56,810 --> 00:40:59,830 Also das ist, warum wir den Hash verwenden. 878 00:40:59,830 --> 00:41:03,429 So Selektoren nehmen auf drei Haupt Formen, die wir euch darüber zu sprechen. 879 00:41:03,429 --> 00:41:05,595 Ich fyou mehr erfahren möchten, es gibt viele da draußen. 880 00:41:05,595 --> 00:41:07,540 Es ist großartig, CSS-Dokumentation. 881 00:41:07,540 --> 00:41:12,680 Es gibt einen Tag-Namen, die zu tun hat mit nur Ihre normalen Tags in HTML. 882 00:41:12,680 --> 00:41:17,210 So h1, p, div, h2, diese Art von Dingen. 883 00:41:17,210 --> 00:41:20,320 Und wir können nur Namen, die wie es ist. 884 00:41:20,320 --> 00:41:22,650 So wie wir hier sehen, mit Körper, es ist ein normaler Tag. 885 00:41:22,650 --> 00:41:26,660 So können wir nur mit Leib, wenn wir in unserem CSS-Datei im Gespräch. 886 00:41:26,660 --> 00:41:29,730 >> Mit Titel, der ganze Grund, warum wir haben diese Hash ist, wir haben, was 887 00:41:29,730 --> 00:41:31,010 als eine ID. 888 00:41:31,010 --> 00:41:35,400 So sollte eine ID immer einzigartig in Ihre HTML-Seite 889 00:41:35,400 --> 00:41:37,930 so dass, wenn Sie darauf zu verweisen, die Sie 890 00:41:37,930 --> 00:41:41,990 wissen, dass Sie nur mit Bezug auf eine bestimmte Sache. 891 00:41:41,990 --> 00:41:46,270 Also in diesem Fall hier, mit unseren h1 hier, CS 50 Review-Sitzung, 892 00:41:46,270 --> 00:41:47,810 wir haben eine id Vorbehalt. 893 00:41:47,810 --> 00:41:54,280 Also, um genau zu beziehen Stück unserer HTML, machen wir einen Hash-Titel. 894 00:41:54,280 --> 00:41:58,080 Nur durch die Konvention werden IDs bezeichnet mit einem Hash vor ihnen. 895 00:41:58,080 --> 00:42:01,650 In gleicher Weise sieht man Infos hier ist eine Klasse. 896 00:42:01,650 --> 00:42:06,070 Und so Klasse mit CSS als Punkt-Klasse bezeichnet 897 00:42:06,070 --> 00:42:08,895 oder was auch immer das dot Klasse ist. 898 00:42:08,895 --> 00:42:10,850 Also in diesem Fall hier, es ist info. 899 00:42:10,850 --> 00:42:13,090 >> Also nehme ich es zurück. 900 00:42:13,090 --> 00:42:16,200 Beides wäre rosa für unsere CSS hier 901 00:42:16,200 --> 00:42:18,430 weil sie beide eine Klasse von Informationen. 902 00:42:18,430 --> 00:42:23,070 Und in unserem CSS-Datei, die wir haben, bezeichnet dass alles, was mit einer Klasse von Informationen 903 00:42:23,070 --> 00:42:24,120 ist rosa. 904 00:42:24,120 --> 00:42:25,968 Ist das sinnvoll? 905 00:42:25,968 --> 00:42:27,435 Ja? 906 00:42:27,435 --> 00:42:30,731 >> ZIELGRUPPE: Wenn Sie waren zu machen alles, was im Körper weiß, 907 00:42:30,731 --> 00:42:32,814 und dann können Sie versuchen, etwas in sie blau, 908 00:42:32,814 --> 00:42:34,770 wäre das zu Problemen führen? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: So CSS ist Cascading Style Sheets. 910 00:42:37,310 --> 00:42:40,730 Also, was auch immer in Richtung der Unter Vorrang. 911 00:42:40,730 --> 00:42:44,080 Also, wenn Sie etwas mit dem Körper zu tun, und Sie machen alles weiß, 912 00:42:44,080 --> 00:42:49,300 und dann später auf die Sie den Titel zu ändern oder Sie den Code im Körper zu ändern, 913 00:42:49,300 --> 00:42:50,560 überschreibt das. 914 00:42:50,560 --> 00:42:55,360 So etwas in Richtung der Unter Vorrang. 915 00:42:55,360 --> 00:42:56,730 Ja? 916 00:42:56,730 --> 00:42:59,627 >> ZIELGRUPPE: Und IDs sind einzigartig, aber Klassen können mehr sein? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Richtig. 918 00:43:00,210 --> 00:43:06,320 So sollte IDs eindeutig sein und Klassen können beziehen sich auf so viele Dinge wie Sie möchten. 919 00:43:06,320 --> 00:43:07,580 Noch Fragen? 920 00:43:07,580 --> 00:43:09,800 Ja. 921 00:43:09,800 --> 00:43:11,210 >> ZIELGRUPPE: [unverständlich]. 922 00:43:11,210 --> 00:43:13,509 Ich frage mich, ob das einen Unterschied macht. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Tut mir leid, Was war die Frage? 924 00:43:15,217 --> 00:43:18,960 ZIELGRUPPE: Es gibt kleine "F" und Kapital "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: So ist der Unterschied zwischen kleinen "f" und Kapital "F" 926 00:43:21,440 --> 00:43:22,606 sollte nicht einen Unterschied machen. 927 00:43:22,606 --> 00:43:26,330 So "f" wird 15 oder so sein. 928 00:43:26,330 --> 00:43:28,130 Cool, etwas anderes? 929 00:43:28,130 --> 00:43:29,930 Jeder gute, CSS? 930 00:43:29,930 --> 00:43:30,850 Ja? 931 00:43:30,850 --> 00:43:31,790 >> ZIELGRUPPE: Es tut uns leid. 932 00:43:31,790 --> 00:43:35,550 Können Sie eine Klasse und einen ID? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Ja, das ist möglich. 934 00:43:38,030 --> 00:43:40,420 So kann es sowohl eine Klasse und eine ID haben. 935 00:43:40,420 --> 00:43:44,670 Und ich empfehle testet diese auf eigene Faust. 936 00:43:44,670 --> 00:43:50,480 CSS Sie am besten nur, indem sie lernen, etwas, sehr einfache Webseite, 937 00:43:50,480 --> 00:43:53,440 Aufstellung einige CSS, und nur zu sehen, wie sie interagieren. 938 00:43:53,440 --> 00:43:56,970 Und Sie werden ein sehr gutes zu gewinnen, intuitives Gefühl dafür, wie es funktioniert. 939 00:43:56,970 --> 00:43:58,810 >> OK, alle gut mit CSS? 940 00:43:58,810 --> 00:44:01,280 Sie gehen alle zu machen, schöne Websites mit CSS jetzt. 941 00:44:01,280 --> 00:44:05,460 OK, Best Practices, gerade Dinge im Auge zu behalten, was 942 00:44:05,460 --> 00:44:09,810 dass-- diesem Grund haben wir andocken Dank für Designer und so weiter. 943 00:44:09,810 --> 00:44:11,820 So schließen Sie Ihre HTML-Tags. 944 00:44:11,820 --> 00:44:14,840 Also, wenn Sie eine offene Stelle haben, es sollte eine enge Körper. 945 00:44:14,840 --> 00:44:18,180 Wenn Sie über einen offenen Abschnitt, es sollte eine enge Paragraphen. 946 00:44:18,180 --> 00:44:19,555 Überprüfen Sie Ihre Seite bestätigt. 947 00:44:19,555 --> 00:44:23,330 Ihr solltet sehr vertraut sein mit diesen Eintrag von p-Set sieben 948 00:44:23,330 --> 00:44:26,350 mit CS 50 Finanz mit dem W3-Validator. 949 00:44:26,350 --> 00:44:28,340 Und wie ich schon sagte, einer unserer großen Paradigmen 950 00:44:28,340 --> 00:44:33,780 trennt Ihren Stil mit CSS von Markup, die HTML ist. 951 00:44:33,780 --> 00:44:36,900 Und dann, natürlich, haben wir diese große XKCD hier unten. 952 00:44:36,900 --> 00:44:38,280 Yay, comic relief! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Zwischen diesen und HTTP, im Grunde sind sie beide Protokolle. 955 00:44:44,650 --> 00:44:46,810 So dass Sie nur denken konnte, von ihnen als ein Satz von Regeln, 956 00:44:46,810 --> 00:44:50,110 , die, wie die Dinge regeln bewegen sich über das Internet. 957 00:44:50,110 --> 00:44:53,410 So Getriebesteuerung Protokoll oder Internetprotokoll, 958 00:44:53,410 --> 00:44:57,280 ist nur ein Weg, um sicherzustellen, dass die Daten bekommt, wohin es geht 959 00:44:57,280 --> 00:45:00,030 und dass wir wissen, ob wir sind immer Daten fehlen. 960 00:45:00,030 --> 00:45:03,520 Also, wenn Sie Jungs denken zurück zu Vortrag ein paar Wochen mit David 961 00:45:03,520 --> 00:45:06,980 wo wir vier Hüllkurven, sie waren alle wie eine von vier nummeriert, 962 00:45:06,980 --> 00:45:11,300 zwei von vier, drei oder vier, vier vier, das ist nur ein Satz von Regeln. 963 00:45:11,300 --> 00:45:13,830 Wir haben gesagt, OK, wenn wir Senden von mehr als einem Paket, 964 00:45:13,830 --> 00:45:16,610 wir werden an die Nummer mit welcher Zahl ist 965 00:45:16,610 --> 00:45:19,040 und wie viele insgesamt, dass sollte der Benutzer zu bekommen. 966 00:45:19,040 --> 00:45:22,540 >> Und dies ist nur zu sagen, wer wird die Daten, ob sie empfangen 967 00:45:22,540 --> 00:45:26,120 haben alles bekommen oder wenn etwas habe auf dem Weg verloren. 968 00:45:26,120 --> 00:45:28,840 Und sie müssen dafür noch einmal fragen. 969 00:45:28,840 --> 00:45:31,140 Das ist wirklich nur ein Satz von Regeln. 970 00:45:31,140 --> 00:45:33,650 Das ist, wie Sie es sich vorstellen können, OK? 971 00:45:33,650 --> 00:45:37,700 Und auch, den Hafen, gibt es das euch can-- ich in der Vorlesung wissen, 972 00:45:37,700 --> 00:45:39,170 sie hatten eine ganze Liste von Ports. 973 00:45:39,170 --> 00:45:41,630 Aber wir haben sie hier nicht im Augenblick. 974 00:45:41,630 --> 00:45:45,290 >> So Hypertext Transfer Protocol ist, wieder, es ist ein anderes Protokoll. 975 00:45:45,290 --> 00:45:48,630 Es ist also ein weiterer Satz von Regeln dass regeln, in diesem Fall 976 00:45:48,630 --> 00:45:51,130 wie Hypertext übertragen wird. 977 00:45:51,130 --> 00:45:54,340 Also ist es erlaubt nur Browser um Webserver zu sprechen. 978 00:45:54,340 --> 00:45:56,910 Und wie wir hier sagen, es ist wie menschliche Handshake. 979 00:45:56,910 --> 00:46:00,480 Es ist nur ein Weg, um zu regieren , wie der Web-Server 980 00:46:00,480 --> 00:46:02,690 gehen, um mit Ihrem Browser zu interagieren. 981 00:46:02,690 --> 00:46:05,660 Und wir haben nur ein paar Beispiele. 982 00:46:05,660 --> 00:46:09,100 Wir haben einige Anfragen hier wobei GET ist das Verfahren. 983 00:46:09,100 --> 00:46:13,760 Wir haben HTTP 1.1, das ist, Protokollversion für uns. 984 00:46:13,760 --> 00:46:17,230 Und dann wird der Host, der, was wir tatsächlich versuchen, zuzugreifen. 985 00:46:17,230 --> 00:46:21,800 Und dann, wie Sie hier sehen, werden wir bekommen eine Reaktion mit diesem 200 986 00:46:21,800 --> 00:46:25,032 OK, wie unsere HTTP Antwort-Code. 987 00:46:25,032 --> 00:46:27,240 Wir haben eine große Liste werde ich up in einer Sekunde zu ziehen 988 00:46:27,240 --> 00:46:29,430 dass euch kennen sollten. 989 00:46:29,430 --> 00:46:35,750 Und wir haben diesen Content-Typ text / HTML, das sagt nur, welche Art von Daten 990 00:46:35,750 --> 00:46:39,990 erhalten wir vom Server, OK? 991 00:46:39,990 --> 00:46:44,230 Dieser Host und dieser Inhaltstyp sind Teil der HTTP-Header. 992 00:46:44,230 --> 00:46:49,610 Sie können so wenig oder so wenig wie haben für den Kontext erforderlich, was 993 00:46:49,610 --> 00:46:50,580 Sie zu tun haben. 994 00:46:50,580 --> 00:46:53,371 Manchmal werden Sie eine Menge haben, Informationen, die von Ihrem Server. 995 00:46:53,371 --> 00:46:56,040 Vielleicht sind sie anfordert viel von Informationen von dem Benutzer. 996 00:46:56,040 --> 00:46:57,600 Es hängt von dem Kontext abhängig. 997 00:46:57,600 --> 00:47:01,144 Wenn Sie bei CS 50 Study betrachten, es gibt eine Menge mehr dazu. 998 00:47:01,144 --> 00:47:03,060 Aber wir haben eine Menge zu bekommen durch, also werde ich 999 00:47:03,060 --> 00:47:05,760 nach rechts vor, wenn gehen das ist in Ordnung mit euch? 1000 00:47:05,760 --> 00:47:07,960 Kühle. 1001 00:47:07,960 --> 00:47:08,460 Warten Sie mal. 1002 00:47:08,460 --> 00:47:11,182 Ich habe auf jeden Fall, dass ganze Liste von-- huh! 1003 00:47:11,182 --> 00:47:13,140 Ich weiß nicht, warum das so ist den ganzen Weg hierher. 1004 00:47:13,140 --> 00:47:15,660 Ich dachte, ich buchstäblich bewegt es während ich sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN: Wollen Sie es lehren? 1006 00:47:16,540 --> 00:47:17,420 Oder wollen Sie mir, es zu unterrichten? 1007 00:47:17,420 --> 00:47:20,010 >> ZIELGRUPPE: Ich dachte, wir könnten nur zeigen, mit zu beginnen. 1008 00:47:20,010 --> 00:47:22,210 Ich meine, man kann in gehen sie weiter, aber ich 1009 00:47:22,210 --> 00:47:26,030 dachte, dass es mehr Sinn, da ich wurde nur um HTTP-Status vorliegt. 1010 00:47:26,030 --> 00:47:28,200 Also hier ist die ganze Liste. 1011 00:47:28,200 --> 00:47:31,730 Ich denke, was passieren wird, Davin wird sich später zu ihnen zu gehen. 1012 00:47:31,730 --> 00:47:35,330 Aber es gibt eine ganze Liste, ein Vorschau auf den Geschmack zu kommen. 1013 00:47:35,330 --> 00:47:41,640 OK, wir gehen zu blow-- das wird um eine PHP-Crash-Kurs wie kein anderer sein. 1014 00:47:41,640 --> 00:47:44,874 >> So PHP Hypertext Preprocessor, es ist eine rekursive backronym, 1015 00:47:44,874 --> 00:47:46,540 was bedeutet, es ist etwas anderes genannt wurde. 1016 00:47:46,540 --> 00:47:49,050 Und dann waren sie wie diese nicht wirklich sinnvoll. 1017 00:47:49,050 --> 00:47:52,210 So dass sie nur mit dem Namen es-- und es war ein Akronym, 1018 00:47:52,210 --> 00:47:54,840 so dass sie nur gemacht, PHP Hypertext Preprocessor, die 1019 00:47:54,840 --> 00:47:55,980 einfach keinen Sinn. 1020 00:47:55,980 --> 00:47:57,714 Fun Geschichte. 1021 00:47:57,714 --> 00:47:58,880 Es ist eine Programmiersprache. 1022 00:47:58,880 --> 00:48:02,360 Also so viel wie ich betonen, dass HTML ist keine Programmiersprache, 1023 00:48:02,360 --> 00:48:05,350 es ist eine Auszeichnungssprache, PHP ist eine Programmiersprache. 1024 00:48:05,350 --> 00:48:07,422 Wie Sie wissen, ist dies da Logik. 1025 00:48:07,422 --> 00:48:08,380 Es gibt conditionals. 1026 00:48:08,380 --> 00:48:12,750 Wir haben Variablen, während wir haben nichts von alledem in HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Na gut, dann haben wir dieses kleine etwas hier, das ist wie ein Geschmack von PHP. 1028 00:48:16,960 --> 00:48:20,510 So Grundlagen, Variablennamen beginnen mit einem Dollarzeichen. 1029 00:48:20,510 --> 00:48:21,500 Viele Leute mögen es. 1030 00:48:21,500 --> 00:48:22,371 Erinnert an uns Geld. 1031 00:48:22,371 --> 00:48:22,995 Es ist alles super. 1032 00:48:22,995 --> 00:48:25,280 Wir alle wollen, PHP. 1033 00:48:25,280 --> 00:48:28,020 Also haben wir nicht angeben, ein Typ Variablen mehr. 1034 00:48:28,020 --> 00:48:29,995 Es wird während der Laufzeit bestimmt. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 Der Dolmetscher sein wird, oh, wir gerade durchlaufen, 1037 00:48:35,890 --> 00:48:39,565 und nach dem Kontext, wir werden, welche Arten von Typen zu sehen 1038 00:48:39,565 --> 00:48:41,560 Diese Variablen müssen zu haben. 1039 00:48:41,560 --> 00:48:42,815 Es gibt keine Hauptfunktion. 1040 00:48:42,815 --> 00:48:43,690 Die Dinge werden einfach laufen. 1041 00:48:43,690 --> 00:48:47,851 Ihr seid mit Import in Ihrem letzte p-Set, werden Sie dies bemerken. 1042 00:48:47,851 --> 00:48:49,350 Es war nicht wirklich eine Hauptfunktion. 1043 00:48:49,350 --> 00:48:52,070 Sie haben geschrieben, was Sie wollte zu geschehen. 1044 00:48:52,070 --> 00:48:53,280 Und es einfach irgendwie passiert. 1045 00:48:53,280 --> 00:48:56,760 Also das ist PHP für Sie. 1046 00:48:56,760 --> 00:48:59,180 >> Arrays sind sehr ähnlich. 1047 00:48:59,180 --> 00:49:01,270 Wir haben immer noch diese Halterung. 1048 00:49:01,270 --> 00:49:05,940 Hier einige variable wir arr genannt, und es ist gleich 1049 00:49:05,940 --> 00:49:08,540 zu-- wir unsere normalen Klammern erstellen. 1050 00:49:08,540 --> 00:49:10,630 Und wir haben einige Schlüsselwert. 1051 00:49:10,630 --> 00:49:14,630 Und der große Unterschied zwischen C und PHP-Arrays 1052 00:49:14,630 --> 00:49:19,330 ist, dass wir diese associate-- haben Wir können Werte auf Schlüssel zuordnen. 1053 00:49:19,330 --> 00:49:22,440 Also, statt nur mit ein Array, das indiziert wird 1054 00:49:22,440 --> 00:49:26,630 durch die Anzahl oder die Position dieses Element in dem Array, 1055 00:49:26,630 --> 00:49:29,060 können wir tatsächlich verbinden sie mit einem Schlüssel. 1056 00:49:29,060 --> 00:49:36,700 Wo können wir sagen, OK, ich will was auch immer Wert wird mit Früchten assoziiert. 1057 00:49:36,700 --> 00:49:39,280 Und vielleicht gibt es Obst ging an Banane. 1058 00:49:39,280 --> 00:49:41,760 So würde Banane an uns zurück. 1059 00:49:41,760 --> 00:49:44,100 >> Aber im Grunde, die mächtige Sache über dieses 1060 00:49:44,100 --> 00:49:47,960 ist, dass, wenn euch daran erinnern, die Demo von Vortrag, wo wir im Grunde 1061 00:49:47,960 --> 00:49:53,050 rewrote Speller in PHP, und es was-- Lookup war wirklich nur wünschen, 1062 00:49:53,050 --> 00:49:55,007 ist dieser Schlüssel gibt es? 1063 00:49:55,007 --> 00:49:56,590 Das ist wirklich nett von der Macht der es. 1064 00:49:56,590 --> 00:49:58,560 Sie brauchen nicht zu durchlaufen durch das Array. 1065 00:49:58,560 --> 00:50:00,311 Sie brauchen nicht zu wissen, was Raum ist es in. 1066 00:50:00,311 --> 00:50:01,976 Es könnte am Ende oder der Anfang. 1067 00:50:01,976 --> 00:50:04,790 Solange Sie den Schlüssel kennen das ist mit dem Wert zugeordnet, 1068 00:50:04,790 --> 00:50:09,740 PHP kann nur spucken diesen Wert gleich wieder bei dir, okay? 1069 00:50:09,740 --> 00:50:12,960 >> Und dann haben wir auch nur haben, nur weil wir 1070 00:50:12,960 --> 00:50:16,750 können Schlüssel-Wert-Paare bedeutet nicht, dass Sie müssen. 1071 00:50:16,750 --> 00:50:19,180 Sie können auch einfach erstellen ein normaler Array wie hier, 1072 00:50:19,180 --> 00:50:21,540 an der Unterseite, wo es nur ein, zwei, drei, vier. 1073 00:50:21,540 --> 00:50:22,510 Das sind unsere Werte. 1074 00:50:22,510 --> 00:50:25,320 Und in der Tat, ihre Schlüssel sind die Indizes. 1075 00:50:25,320 --> 00:50:26,830 So ist der Schlüssel für eine Null. 1076 00:50:26,830 --> 00:50:28,610 Der Schlüssel für die beiden würde sein. 1077 00:50:28,610 --> 00:50:31,910 So weiter und so fort, es sei denn, Sie explizit einen Schlüssel zuweisen, 1078 00:50:31,910 --> 00:50:34,630 Sie können davon ausgehen, dass die Wert ist nur ihrem Index. 1079 00:50:34,630 --> 00:50:37,290 Heißt das sinnvoll sein, alle? 1080 00:50:37,290 --> 00:50:38,070 Keine Fragen? 1081 00:50:38,070 --> 00:50:38,930 Ehrfürchtig. 1082 00:50:38,930 --> 00:50:44,420 >> OK, das ist eine Möglichkeit, foreach durchlaufen Sie Ihre Arrays. 1083 00:50:44,420 --> 00:50:47,490 Also haben wir etwas haben, hier, nur die allgemeine Struktur. 1084 00:50:47,490 --> 00:50:51,020 So foreach, der Name unser Angebot, wie auch immer 1085 00:50:51,020 --> 00:50:53,930 Sie jede anrufen möchten Element im Array, 1086 00:50:53,930 --> 00:50:57,270 und wir können etwas mit zu tun dass Element oder mit diesem Wert. 1087 00:50:57,270 --> 00:50:58,680 So haben wir hier ein Beispiel. 1088 00:50:58,680 --> 00:51:05,770 Wir haben ein assoziatives Array mit diesen beiden Einträgen 1089 00:51:05,770 --> 00:51:10,080 mit Bar, die mit foo zu tun und qux mit baz verbunden. 1090 00:51:10,080 --> 00:51:12,180 So Schlüssel foo und baz. 1091 00:51:12,180 --> 00:51:13,650 Die Werte sind Bar und qux. 1092 00:51:13,650 --> 00:51:18,560 So foreach, haben wir unser Angebot hier, wie der Schlüsselwertepaar. 1093 00:51:18,560 --> 00:51:21,560 Dies erlaubt uns, den Zugang sowohl die Schlüssel und Wert. 1094 00:51:21,560 --> 00:51:23,680 Vielleicht wollen Sie gerade, die Wert, in welchem ​​Fall 1095 00:51:23,680 --> 00:51:27,640 Sie könnten wie arr tun wie $ Wert, und dann 1096 00:51:27,640 --> 00:51:30,640 werden nur den Zugriff auf den Wert wie Sie durch laufen. 1097 00:51:30,640 --> 00:51:32,600 Aber vielleicht, für einige Grund der Schlüssel wollen, 1098 00:51:32,600 --> 00:51:35,460 weshalb ich wählte in diesem Beispiel statt. 1099 00:51:35,460 --> 00:51:40,240 So können Sie tatsächlich manipulieren Schlüssel und Wert in diesem Fall. 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 Fragen? 1102 00:51:41,905 --> 00:51:44,279 >> ZIELGRUPPE: Wenn Sie wollten einfach zu manipulieren den Schlüssel würde 1103 00:51:44,279 --> 00:51:45,910 Sie tun müssen, foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Richtig. 1105 00:51:47,360 --> 00:51:50,560 Also, wenn Sie wollen manipulieren Sie einfach die Taste, 1106 00:51:50,560 --> 00:51:53,680 Sie müssen noch wäre dies Syntax, denn wenn man nur 1107 00:51:53,680 --> 00:51:56,930 haben arr als etwas, als eine Sache, es ist 1108 00:51:56,930 --> 00:52:00,070 nehme an, Sie wollen der Wert, nicht der Schlüssel. 1109 00:52:00,070 --> 00:52:06,780 Also, wenn Sie jemals einfach nur wie arr so, vielleicht ist dies wie $ Element, 1110 00:52:06,780 --> 00:52:11,670 es wird davon aus, dass Sie fragen, nur für den Wert an jedem Punkt. 1111 00:52:11,670 --> 00:52:13,879 Wenn Sie explizit wollen etwas zu tun mit dem Schlüssel, 1112 00:52:13,879 --> 00:52:16,170 auch wenn Sie nicht zu gehen nichts mit dem Wert, 1113 00:52:16,170 --> 00:52:18,430 Sie müssen diese Struktur dass wir hier haben 1114 00:52:18,430 --> 00:52:22,330 in dem Sie explizit fragst sowohl für den Schlüssel und Wert. 1115 00:52:22,330 --> 00:52:24,170 Gute Frage. 1116 00:52:24,170 --> 00:52:25,940 Noch etwas? 1117 00:52:25,940 --> 00:52:27,490 Kühle. 1118 00:52:27,490 --> 00:52:29,911 >> In Ordnung, PHP und HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, wir sind zurück zu p-Set sieben wieder. 1120 00:52:31,410 --> 00:52:35,380 So sollte diese ein wenig bekannt vor. 1121 00:52:35,380 --> 00:52:41,760 Also das ist etwas einfaches HTML-Formular das hat eine Eingabe Name hallo. 1122 00:52:41,760 --> 00:52:43,820 Und wir sehen, haben wir unsere Methode GET. 1123 00:52:43,820 --> 00:52:47,430 Und wenn wir uns erinnern, von unserer p-Set, wenn dieses Formular gesendet wird, 1124 00:52:47,430 --> 00:52:58,130 es ein Array namens $ _GET, die hat sendet alle diese Eingänge oder Variablen aus 1125 00:52:58,130 --> 00:53:00,490 die Form, die sein sollte in unserem PHP manipuliert. 1126 00:53:00,490 --> 00:53:03,320 So dass in diesem Fall der Benutzer würde in ihrem Namen gesetzt. 1127 00:53:03,320 --> 00:53:04,370 Sie eintragen. 1128 00:53:04,370 --> 00:53:07,810 Und wir sehen, dass wir hier etwas Array. 1129 00:53:07,810 --> 00:53:09,080 Wir haben unsere GET-Array. 1130 00:53:09,080 --> 00:53:11,510 Und wir greifen auf den Namen. 1131 00:53:11,510 --> 00:53:15,070 >> Also, das sagt, OK, geben Sie mir die Wert, der mit dem Namen verknüpft ist, 1132 00:53:15,070 --> 00:53:16,550 Name, der hier der Schlüssel. 1133 00:53:16,550 --> 00:53:21,400 Und das Karten direkt an, was sagten wir unseren Input Name ist. 1134 00:53:21,400 --> 00:53:28,960 Also das war die Ihnen die Schlüssel zu dem, was wird sich in Ihrem Array hier zu sein. 1135 00:53:28,960 --> 00:53:31,220 Heißt das sinnvoll sein, alle? 1136 00:53:31,220 --> 00:53:32,070 Ja? 1137 00:53:32,070 --> 00:53:36,240 >> ZIELGRUPPE: Sagt Ihnen der Name in GET beziehen auf die violette Linie in [unverständlich]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: Er bezieht sich auf das hier. 1139 00:53:37,740 --> 00:53:43,840 Also das Feld hier, es bezieht sich auf diesen Namen hier. 1140 00:53:43,840 --> 00:53:47,800 So könnte genannt worden wie Telefonnummer oder was auch immer. 1141 00:53:47,800 --> 00:53:51,790 Dieser Name sagt eigentlich, was rufst du dieses Feld? 1142 00:53:51,790 --> 00:53:53,600 Wie wollen Sie finden Sie in diesem Bereich? 1143 00:53:53,600 --> 00:53:57,670 Und dieser Name ist eigentlich mag, wir sind sagen, dieses Feld wird der Name genannt. 1144 00:53:57,670 --> 00:53:59,224 Das ist, wie wir gehen, um darauf zuzugreifen. 1145 00:53:59,224 --> 00:54:02,070 >> ZIELGRUPPE: So wird es Ihnen gefällt, Eingabename entspricht Bob, und-- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: Rechts, dann Bob würde dort unten zu bekommen. 1147 00:54:04,380 --> 00:54:06,090 Genau. 1148 00:54:06,090 --> 00:54:07,800 Jeder cool? 1149 00:54:07,800 --> 00:54:10,990 Na gut, so dass man im Vergleich zu POST, das sind die beiden Hauptwege 1150 00:54:10,990 --> 00:54:14,880 dass wir Daten zu übergeben in einer HTTP-Anforderung. 1151 00:54:14,880 --> 00:54:17,370 Ihr solltet gesehen haben diese beiden hoffnungsvoll. 1152 00:54:17,370 --> 00:54:20,940 Also mit GET, die Informationen wird über die URL übergeben. 1153 00:54:20,940 --> 00:54:23,490 Also, wenn Sie jemals tun Google Suchen, YouTube, werden Sie 1154 00:54:23,490 --> 00:54:25,130 wahrscheinlich feststellen, einige Fragezeichen. 1155 00:54:25,130 --> 00:54:28,230 Und dann alle Worte dass Sie gerade in es gesetzt. 1156 00:54:28,230 --> 00:54:31,410 Und POST übergibt die Daten in der HTTP-Nachrichtentext. 1157 00:54:31,410 --> 00:54:36,922 Also im Gegensatz zu erhalten, können Sie Art betrachten dass die Daten von dem Anwender verborgen. 1158 00:54:36,922 --> 00:54:38,630 Aber was ist wirklich wichtig zu verstehen 1159 00:54:38,630 --> 00:54:44,040 ist, dass dies noch ebenso unsicher wie GET. 1160 00:54:44,040 --> 00:54:48,780 Die Analogie Ich mag zu verwenden ist, wenn Sie Ihre Kontonummer haben 1161 00:54:48,780 --> 00:54:52,795 und Sie können es auf der Außenseite zu schreiben eine Hülle, das ist ziemlich unsicher. 1162 00:54:52,795 --> 00:54:55,920 Würde man es auf ein Stück zu schreiben Papier und legen Sie sie in den Umschlag, 1163 00:54:55,920 --> 00:54:58,850 es ist immer noch sehr unsicher, da alles, was Sie tun müssen, ist zu öffnen, dass sich 1164 00:54:58,850 --> 00:55:03,480 und sehen Sie sich die aktuellen Inhalte der Nachricht, das zu sehen. 1165 00:55:03,480 --> 00:55:08,310 Also das ist "versteckt", und Menschen wie zu denke, es ist sicher, aber es ist wirklich nicht. 1166 00:55:08,310 --> 00:55:11,000 Und ich bin sicher Davin werden erhalten in diesem mehr, vielleicht. 1167 00:55:11,000 --> 00:55:12,850 Aber es ist eine wichtige Unterscheidung zu machen, 1168 00:55:12,850 --> 00:55:15,820 und etwas wirklich Gutes zu verstehen. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 All das Zeug, wir haben so vor kurzem gesehen! 1171 00:55:22,220 --> 00:55:25,400 So ist es im Grunde nur entworfen, Offensichtlich ist für die Verwaltung von Daten. 1172 00:55:25,400 --> 00:55:30,560 Ihr Jungs hatten eine Menge Erfahrung mit diese in Ihren Tabellen mit PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 Und es gibt vier häufigsten Fragen dass wir wollen, dass Sie Jungs wissen. 1174 00:55:34,100 --> 00:55:37,304 Es gibt also aktualisieren, einfügen, auszuwählen und zu löschen. 1175 00:55:37,304 --> 00:55:38,970 So stellen Sie sicher wissen, die wirklich gut. 1176 00:55:38,970 --> 00:55:40,960 Wir werden gehen durch sie wirklich schnell. 1177 00:55:40,960 --> 00:55:44,340 >> So aktualisieren Sie wirklich, wie das, was Sie vielleicht denken, es tut, 1178 00:55:44,340 --> 00:55:46,740 es aktualisiert nur Daten in Ihrer Datenbank. 1179 00:55:46,740 --> 00:55:48,750 So haben wir hier einige Beispiele. 1180 00:55:48,750 --> 00:55:53,310 Dies ist die allgemeine Struktur einer Aktualisierungsabfrage. 1181 00:55:53,310 --> 00:55:56,150 Also haben wir die Tabelle zu aktualisieren dass wir hier reden. 1182 00:55:56,150 --> 00:56:00,520 Und wir bestimmte einstellen möchten Werte, bestimmte Spalten 1183 00:56:00,520 --> 00:56:02,600 gleich bestimmten Werten. 1184 00:56:02,600 --> 00:56:07,500 Also das gerade aktualisiert die Tabelle, Ändern Werte in allen Zeilen in diesem Fall. 1185 00:56:07,500 --> 00:56:13,690 Also in diesem einen hier unten, eine tatsächliche Wir haben beispielsweise insert-- leid. 1186 00:56:13,690 --> 00:56:17,630 Das Schiebevoran ohne mir dessen bewusst zu sein. 1187 00:56:17,630 --> 00:56:22,230 >> So ist dieses Updates Tabelle col1 gleich um val1, wo Haus gleich "Currier." 1188 00:56:22,230 --> 00:56:25,300 Was dieses tut, ist, es ändert sich nur, nur sie 1189 00:56:25,300 --> 00:56:28,130 aktualisiert diese Werte an bestimmten Orten. 1190 00:56:28,130 --> 00:56:32,300 Also in diesem ersten, ändert sich diese Werte für alle in der Tabelle, 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 Es wird dies ändern Spalte für jeden einzelnen Eintrag, 1193 00:56:35,820 --> 00:56:37,020 für jede einzelne Zeile. 1194 00:56:37,020 --> 00:56:40,840 Aber das, wo, könnten Sie betrachten Sie es als Qualifikation. 1195 00:56:40,840 --> 00:56:44,020 So ist es nur geht, um zu ändern es in ganz bestimmten Orten. 1196 00:56:44,020 --> 00:56:47,840 So in p-Set sieben, wenn Sie vielleicht aktualisiert die Menge an Bargeld 1197 00:56:47,840 --> 00:56:53,050 dass Ihr Benutzer hatten, haben Sie wahrscheinlich hatte einige, wo ID entspricht Session-ID, oder? 1198 00:56:53,050 --> 00:56:55,280 >> Weil Sie nicht wollen, ändern Sie die Menge an Bargeld 1199 00:56:55,280 --> 00:56:57,630 für jede Person, wurde mit Ihrer Webseite ein. 1200 00:56:57,630 --> 00:57:00,480 Du wolltest es für einen ändern bestimmte Person, dass diese Person 1201 00:57:00,480 --> 00:57:02,410 wer auch immer Sie es zu dieser Zeit. 1202 00:57:02,410 --> 00:57:04,320 Richtig? 1203 00:57:04,320 --> 00:57:07,510 OK, so einzufügen, Einsatz bestimmte Werte in Tabellen. 1204 00:57:07,510 --> 00:57:11,650 Das ist wie wenn man Schaffung einer Marke neuen Benutzer. 1205 00:57:11,650 --> 00:57:14,240 Die allgemeine Struktur hier in welchem ​​Tabelle einfügen 1206 00:57:14,240 --> 00:57:15,680 wir reden. 1207 00:57:15,680 --> 00:57:18,910 Werte, dass die Werte, wir wirklich wollen, ein. 1208 00:57:18,910 --> 00:57:23,060 OK, so wie wir hier sehen, werden wir sind in Tabelle einfügen. 1209 00:57:23,060 --> 00:57:27,790 Dies ist bestimmte Spalten mit ihre Werte entsprach. 1210 00:57:27,790 --> 00:57:29,940 Also das sagt, einfügen eine neue Zeile mit 1211 00:57:29,940 --> 00:57:33,660 Werte val1 und val2 unter diese bestimmte Spalten. 1212 00:57:33,660 --> 00:57:39,240 >> Vielleicht möchten Sie nur ausfüllen out Hälfte der Dinge, die in dieser Reihe. 1213 00:57:39,240 --> 00:57:41,150 Das ist, was dieser Teil hier können Sie tun. 1214 00:57:41,150 --> 00:57:43,280 Damit können Sie wirklich festzustellen, welcher Teil. 1215 00:57:43,280 --> 00:57:44,244 Ja? 1216 00:57:44,244 --> 00:57:52,150 >> ZIELGRUPPE: Können Sie nur [unverständlich] Zellen in der Zeile [unverständlich]? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: Wenn Sie nur ausfüllen bestimmte Teile Ihrer Reihe, 1218 00:57:55,000 --> 00:57:57,480 der Rest dieser Zellen sind nur leer. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Solange Sie es ihnen ermöglichen, leer sein, ist es kein Problem. 1221 00:58:05,660 --> 00:58:09,570 Wenn Sie versuchen, auf sie zuzugreifen, ist es wird einige Leerelement zurückzukehren. 1222 00:58:09,570 --> 00:58:13,850 Aber es ist wichtig zu wissen, daß in bestimmten Tabellen, 1223 00:58:13,850 --> 00:58:16,690 sie haben zu dürfen null sein. 1224 00:58:16,690 --> 00:58:18,890 Sie können in einem durchgeführt haben Problem während Ihres p-Set 1225 00:58:18,890 --> 00:58:21,320 weil wir nicht lassen Ihre Werte null sein. 1226 00:58:21,320 --> 00:58:26,110 Aber Sie können eine angeben optionaler Wert in der Tabelle. 1227 00:58:26,110 --> 00:58:29,640 >> OK, das ist so zu wählen, nur ein Weg, 1228 00:58:29,640 --> 00:58:33,790 spezifische Daten aus einer Tabelle auf einige Kennung, die Sie wollen. 1229 00:58:33,790 --> 00:58:37,990 So wählen Sie Sterne von Tisch, an dem col gleich etwas bedeutet nur, 1230 00:58:37,990 --> 00:58:43,820 Gib mir alle Daten verbunden wo diese bestimmte Spalte gilt. 1231 00:58:43,820 --> 00:58:49,020 So der Star in diesem Fall wird Rückkehr die gesamte Zeile, Sie, ja? 1232 00:58:49,020 --> 00:58:54,880 >> Und dann, in diesem Fall wählen Sie aus star Tabelle gibt Ihnen nur die gesamte Tabelle. 1233 00:58:54,880 --> 00:58:58,940 Und dann, natürlich zu löschen, es ist einfach löscht die Zeile aus der Tabelle. 1234 00:58:58,940 --> 00:59:01,320 So aus der Tabelle zu löschen, was auch immer Tisch wir sind 1235 00:59:01,320 --> 00:59:06,830 Referenzierung, wo einige spezifische Kennung oder eine Bedingung erfüllt ist. 1236 00:59:06,830 --> 00:59:07,720 Ja? 1237 00:59:07,720 --> 00:59:08,700 >> ZIELGRUPPE: Frage. 1238 00:59:08,700 --> 00:59:10,699 Warum verwenden Sie Doppel Zitate, und ob Sie 1239 00:59:10,699 --> 00:59:13,600 tun doppelte Anführungszeichen oder Einzel Zitate, macht es einen Unterschied machen? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: doppelte Anführungszeichen oder einfache Anführungszeichen nicht einen Unterschied machen in SQL. 1241 00:59:18,235 --> 00:59:19,610 Ich dachte, ich sah eine andere Frage. 1242 00:59:19,610 --> 00:59:20,814 Ja? 1243 00:59:20,814 --> 00:59:25,070 >> ZIELGRUPPE: Macht es nicht beeinflussen, was wird aus der Abfrage entkommen? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Was meinen Sie mit entkam aus der Abfrage? 1246 00:59:31,410 --> 00:59:36,870 >> ZIELGRUPPE: Wenn jemand ein einzelne Abfrage in Form von-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Wenn jemand stellen ein einfaches Anführungszeichen in, 1248 00:59:39,862 --> 00:59:43,560 dann so lange wie Sie sind Desinfektions Ihre Eingabe, dann ist es egal. 1249 00:59:43,560 --> 00:59:46,205 Aber wenn Sie mit einem einzigen sind Angebot und Sie sind falsch 1250 00:59:46,205 --> 00:59:47,914 Flucht Ihre Eingaben, dann ja, müssen sie 1251 00:59:47,914 --> 00:59:51,079 um ein einfaches Anführungszeichen, um umgebrochen werden müssen Ihr Code. Wenn Sie Anführungszeichen verwenden, 1252 00:59:51,079 --> 00:59:53,580 sie zu einem Doppelbett setzen müssen zitieren, um den Code zu brechen. 1253 00:59:53,580 --> 00:59:56,163 Aber so lange wie Sie die Dinge zu entkommen korrekt, es spielt keine Rolle. 1254 00:59:56,163 --> 00:59:59,220 Es ist nur eine Übersetzung erfolgen soll auf die richtige Symbol sowieso. 1255 00:59:59,220 --> 01:00:02,332 >> ZIELGRUPPE: Was bedeutet Flucht das? 1256 01:00:02,332 --> 01:00:04,040 ALISON: Nun, wie Desinfektion und Flucht. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Die Prüfung, die wir haben, der große XKCD comic, dass sie nach oben ziehen, in dem Sie haben, 1259 01:00:13,820 --> 01:00:15,629 OH- 1260 01:00:15,629 --> 01:00:16,670 ROB: Es ist die letzte Folie. 1261 01:00:16,670 --> 01:00:18,500 ALISON: Es ist das letzte Bild, das wirklich? 1262 01:00:18,500 --> 01:00:20,200 Oh mein Gott. 1263 01:00:20,200 --> 01:00:21,780 Dort gehen wir, perfekt. 1264 01:00:21,780 --> 01:00:27,900 OK, so dass im Grunde, die Sie injizieren können etwas in dieser SQL-Abfrage 1265 01:00:27,900 --> 01:00:30,560 wo es bricht Ihrer Code oder als David zeigte, 1266 01:00:30,560 --> 01:00:38,460 in der Klasse, wenn wir einige Einzel Zitat 1 gleich 1 ist, und wenn in unserem Code, 1267 01:00:38,460 --> 01:00:41,230 wir direkt zu kopieren, dass in und wir haben ein einfaches Anführungszeichen endet, 1268 01:00:41,230 --> 01:00:44,740 was passiert ist, wir bekommen einige Ausdruck, 1269 01:00:44,740 --> 01:00:48,680 true ergibt das wird lassen Sie jemand geben unserer Datenbank 1270 01:00:48,680 --> 01:00:51,720 versorgt dich mit Daten, die wir wollen sie nicht zu bekommen. 1271 01:00:51,720 --> 01:00:54,240 So Desinfektion der Ein- bedeutet nur, um sicherzustellen, 1272 01:00:54,240 --> 01:00:57,680 dass wir diese Flucht Zeichen und sie bezeichnenden 1273 01:00:57,680 --> 01:01:01,720 als Zeichen und nicht die Dinge, dass zugelassen werden soll 1274 01:01:01,720 --> 01:01:04,990 wörtlich zu nehmen wie unsere SQL-Anweisung. 1275 01:01:04,990 --> 01:01:09,980 >> Die große Sache, dass wir das dass euch verwenden sollten 1276 01:01:09,980 --> 01:01:13,650 waren HTML Sonderzeichen, Das ist etwas, 1277 01:01:13,650 --> 01:01:15,730 dass Sie vielleicht einen Blick auf zu nehmen. 1278 01:01:15,730 --> 01:01:17,240 OK, löschen. 1279 01:01:17,240 --> 01:01:19,450 Datentypen, das wird alles online sein. 1280 01:01:19,450 --> 01:01:23,510 Da wir 15 Minuten verlassen, ich bin gerade dabei, Recht durch diese gehen. 1281 01:01:23,510 --> 01:01:28,500 PHP und SQL, das ist im Grunde nur wir eine Abfragefunktion hatte, dass 1282 01:01:28,500 --> 01:01:31,520 half schützen vor diese böswillige Angriffe. 1283 01:01:31,520 --> 01:01:33,970 Also, wenn Sie verwenden, Abfrage wurden wir dafür sorgen, 1284 01:01:33,970 --> 01:01:36,560 dass die Dinge bereinigt und so weiter. 1285 01:01:36,560 --> 01:01:41,070 >> MVC ist nur ein Design-Paradigma, so Model, View, Controller. 1286 01:01:41,070 --> 01:01:44,200 Es ist nur ein Weg, um Dinge zu halten schön und bis in gleicher Weise aufgeteilt 1287 01:01:44,200 --> 01:01:47,100 dass wir dazu neigen zu Faktor aus Code in Funktionen. 1288 01:01:47,100 --> 01:01:53,390 Dies ist nur ein Web-Design-Rahmen das Ihnen erlaubt, das gleiche zu tun. 1289 01:01:53,390 --> 01:01:54,760 Ich werde diese zu überspringen. 1290 01:01:54,760 --> 01:01:58,530 >> Das ist etwas, was ich wäre super bequem mit sein. 1291 01:01:58,530 --> 01:02:01,132 Es ist ein großartiges kleines Tisch gibt. 1292 01:02:01,132 --> 01:02:03,090 Es gibt Ihnen die Funktion Beispiel für das Modell. 1293 01:02:03,090 --> 01:02:05,473 Ich werde nur durch das, weil ich wirklich wollen Davin, um zu sprechen. 1294 01:02:05,473 --> 01:02:07,140 Wenn Sie irgendwelche Fragen haben, wenden Sie sich bitte. 1295 01:02:07,140 --> 01:02:07,931 Ich werde hier nach sein. 1296 01:02:07,931 --> 01:02:10,360 Kommen Sie einfach mit mir reden. 1297 01:02:10,360 --> 01:02:13,380 Damit haben wir HTTP-Status vorliegt. 1298 01:02:13,380 --> 01:02:16,270 Und Davins die Luft zu sprengen durch diese in 15 Minuten. 1299 01:02:16,270 --> 01:02:17,560 Das wird großartig werden. 1300 01:02:17,560 --> 01:02:18,893 >> DAVIN: OK. 1301 01:02:18,893 --> 01:02:20,312 Äh, Ihr Mikrofon? 1302 01:02:20,312 --> 01:02:22,210 Ja. 1303 01:02:22,210 --> 01:02:23,336 Entschuldigung. 1304 01:02:23,336 --> 01:02:24,460 ALISON: Weise vorbereitet werden. 1305 01:02:24,460 --> 01:02:25,335 DAVIN: Nein, ich bin bereit. 1306 01:02:25,335 --> 01:02:25,860 Ich bin bereit. 1307 01:02:25,860 --> 01:02:28,790 Das machen wir. 1308 01:02:28,790 --> 01:02:29,290 Es ist fertig. 1309 01:02:29,290 --> 01:02:30,041 OK. 1310 01:02:30,041 --> 01:02:30,540 Entschuldigung. 1311 01:02:30,540 --> 01:02:31,664 Ich verschütteten Kaffee auf mich. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Ich weiß nicht, ob ich mehr aufgeregt, dass ich lächerlich, 1314 01:02:38,210 --> 01:02:40,600 oder dass ich nicht Kaffee trinken mehr. 1315 01:02:40,600 --> 01:02:44,480 Wie auch immer, nur eine kurze Ankündigung über das Blatt, das Sie Jungs haben. 1316 01:02:44,480 --> 01:02:47,994 Also das Blatt euch haben, ist nicht die offizielle, was auf dem Quiz. 1317 01:02:47,994 --> 01:02:49,660 Dies ist die offizielle, was auf dem Quiz. 1318 01:02:49,660 --> 01:02:52,520 Auch auf der Website, wir sagen Sie, OK, das wird auf dem Quiz können. 1319 01:02:52,520 --> 01:02:55,020 So in der kleinen Spickzettel Sie haben, nicht offiziell. 1320 01:02:55,020 --> 01:02:56,690 Und es gibt Fehler auf sie. 1321 01:02:56,690 --> 01:03:01,490 Also am besten nicht nur blind verwenden. 1322 01:03:01,490 --> 01:03:04,390 Also ja, das ist, dass. 1323 01:03:04,390 --> 01:03:05,980 Lassen Sie uns also in diese ganz schnell zu bekommen. 1324 01:03:05,980 --> 01:03:07,420 >> So HTTP-Status vorliegt. 1325 01:03:07,420 --> 01:03:10,430 Also, was passiert, wenn die Website, ist alles in Ordnung. 1326 01:03:10,430 --> 01:03:11,144 Alles in bester Ordnung. 1327 01:03:11,144 --> 01:03:13,310 Doch alles über Sie so, wie Sie es wollen. 1328 01:03:13,310 --> 01:03:15,370 Sie erhalten eine 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, wo haben wir gesehen, dass 301 vor? 1330 01:03:19,250 --> 01:03:20,890 Warten Sie, was ist los? 1331 01:03:20,890 --> 01:03:23,250 Entschuldigung. 1332 01:03:23,250 --> 01:03:24,980 Wir sahen i Zinn Vortrag während Sicherheit. 1333 01:03:24,980 --> 01:03:30,690 Also während der Sicherheit, so dass, wenn David tippte http und dann versucht, zu cs50.net gehen, 1334 01:03:30,690 --> 01:03:31,940 Sie gehen zu sehen, 301 bewegt. 1335 01:03:31,940 --> 01:03:32,440 Warum? 1336 01:03:32,440 --> 01:03:35,570 Denn es wird umgeleitet Sie automatisch in unseren HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> So 301 bewegt, so ist es im Grunde eine Umleitung. 1338 01:03:38,649 --> 01:03:40,190 Und Sie können über sie so denken. 1339 01:03:40,190 --> 01:03:43,790 Jeder der Zustände, die mit 2 beginnen, die sind wie, OK, dass alles funktioniert. 1340 01:03:43,790 --> 01:03:46,530 Jeder der Zustände, die beginnen 3, das sind die Umleitung. 1341 01:03:46,530 --> 01:03:49,571 Zustände, die mit 4 beginnen, dass Mittel gibt es eine Art von Client-Fehler. 1342 01:03:49,571 --> 01:03:52,440 Zustände, die mit 5 beginnen, das ist eine Art von Server-Fehler. 1343 01:03:52,440 --> 01:03:54,680 So können Sie Art aufzubrechen die Zustände so. 1344 01:03:54,680 --> 01:03:59,120 Also nicht 304 nicht geändert, so dass in Ihrem server.c p-Sets, so sagen wir, Sie 1345 01:03:59,120 --> 01:04:00,600 bela cat.html. 1346 01:04:00,600 --> 01:04:03,360 Alles kommt zurück, Sie 200s, OK, groß. 1347 01:04:03,360 --> 01:04:04,540 >> Angenommen, Sie haben es aktualisiert. 1348 01:04:04,540 --> 01:04:07,310 Nun, im Inneren, cat.html, haben Sie eine JPEG. 1349 01:04:07,310 --> 01:04:09,520 Nun, das ist nicht die JPEG- werde wieder geladen werden. 1350 01:04:09,520 --> 01:04:12,140 Sie werden nicht zu einem anderen veröffentlichen GET-Anforderung an den Server, 1351 01:04:12,140 --> 01:04:13,980 und dann bekommen alle diese Informationen zurück. 1352 01:04:13,980 --> 01:04:17,560 Es wird nur be-- dass Bild werde auf Ihrem Computer zwischengespeichert werden. 1353 01:04:17,560 --> 01:04:19,540 Und so, dass ein Bild 304 sein. 1354 01:04:19,540 --> 01:04:20,720 Es ist also nicht verändert. 1355 01:04:20,720 --> 01:04:24,600 Wenn Sie schließen aus, klar, Cookies und aktualisieren 1356 01:04:24,600 --> 01:04:27,490 und versuchen, diese Seite zu laden wieder, wirst du sehen, 200s. 1357 01:04:27,490 --> 01:04:28,910 Du wirst doch nicht, dass die 304 sehen. 1358 01:04:28,910 --> 01:04:32,340 >> 400, bad request, Echt schnell, wie wenn Sie 1359 01:04:32,340 --> 01:04:34,880 im Begriff waren, ein senden JSON-Objekt an den Server 1360 01:04:34,880 --> 01:04:38,090 und Ihre JSON-Objekt nicht korrekt war, Sie werden so etwas zu sehen. 1361 01:04:38,090 --> 01:04:39,000 403, verboten. 1362 01:04:39,000 --> 01:04:40,330 Wann würden Sie sehen eine verbotene? 1363 01:04:40,330 --> 01:04:41,394 Wahrscheinlich Wahrscheinlich? 1364 01:04:41,394 --> 01:04:42,060 ZIELGRUPPE: Chmod. 1365 01:04:42,060 --> 01:04:42,950 DAVIN: Chmod, ja. 1366 01:04:42,950 --> 01:04:44,730 So können Sie nicht festgelegt haben Rechte korrekt. 1367 01:04:44,730 --> 01:04:45,577 404 nicht gefunden. 1368 01:04:45,577 --> 01:04:46,410 Es ist einfach nicht da. 1369 01:04:46,410 --> 01:04:48,670 Also, wenn Sie in die falsche URL eingeben. 1370 01:04:48,670 --> 01:04:53,500 500, interner Serverfehler, der Server wahrscheinlich wurde nicht richtig konfiguriert. 1371 01:04:53,500 --> 01:04:56,260 Was tun, wenn auf Ihrer Seite, aber etwas auf der Serverseite. 1372 01:04:56,260 --> 01:04:57,240 Und 503? 1373 01:04:57,240 --> 01:04:59,502 Eine Menge Leute gesehen 503s in der letzten p-Set. 1374 01:04:59,502 --> 01:05:00,460 Wann möchten ist das passiert? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Ich habe gehört, flüstert. 1377 01:05:05,660 --> 01:05:07,767 >> ZIELGRUPPE: Wenn Google Sie entscheidet ein Roboter sind. 1378 01:05:07,767 --> 01:05:10,350 DAVIN: Ja, wenn Google entscheidet, Du bist ein Roboter, Sie 503s zu bekommen. 1379 01:05:10,350 --> 01:05:11,560 Also das ist eine Überlast. 1380 01:05:11,560 --> 01:05:14,620 Wenn Sie vom Server angefordert haben zu viel, es ist in der Regel zeitlich begrenzt. 1381 01:05:14,620 --> 01:05:15,560 Und die meisten von euch bemerkt. 1382 01:05:15,560 --> 01:05:16,185 So sah man 503. 1383 01:05:16,185 --> 01:05:19,282 Sie könnten ein wenig genommen haben Pause, dann gingen die 503s entfernt, 1384 01:05:19,282 --> 01:05:20,490 und alles war in Ordnung. 1385 01:05:20,490 --> 01:05:26,640 >> GABE: sehr schnell, wenn Sie Jungs 500 in wahrscheinlich dieses letzte Problem ein? 1386 01:05:26,640 --> 01:05:27,954 Ja? 1387 01:05:27,954 --> 01:05:30,906 >> ZIELGRUPPE: In der Regel, wenn die Server eine Datei verloren 1388 01:05:30,906 --> 01:05:34,650 oder [unverständlich] ihre Maschine [unverständlich]. 1389 01:05:34,650 --> 01:05:38,870 >> GABE: So könnte es eine Konfiguration Problem in der PHP auf Ihrem Server. 1390 01:05:38,870 --> 01:05:42,250 Aber es könnte nur etwas sein, wie ein Semikolon, die Ihr Passwort. 1391 01:05:42,250 --> 01:05:44,130 Wenn Sie mit der Eingabe von PHP sind, einige falsche Syntax 1392 01:05:44,130 --> 01:05:46,000 erhalten Sie möglicherweise so ähnlich. 1393 01:05:46,000 --> 01:05:46,960 OK? 1394 01:05:46,960 --> 01:05:48,610 >> DAVIN: Kühl. 1395 01:05:48,610 --> 01:05:51,180 Soll ich gerade zu tun, bis AJAX suchen? 1396 01:05:51,180 --> 01:05:52,950 >> GABE: [unverständlich]. 1397 01:05:52,950 --> 01:05:53,450 DAVIN: OK. 1398 01:05:53,450 --> 01:05:54,230 Also, was ist das DOM? 1399 01:05:54,230 --> 01:05:55,290 Was bedeutet DOM stehen? 1400 01:05:55,290 --> 01:05:56,990 >> ZIELGRUPPE: Dokument-Objektmodell. 1401 01:05:56,990 --> 01:05:57,490 DAVIN: Nice. 1402 01:05:57,490 --> 01:06:00,775 Und warum tun wir etwas für Sie? 1403 01:06:00,775 --> 01:06:02,670 Ehrfürchtig. 1404 01:06:02,670 --> 01:06:06,651 Richtig, ermöglicht es uns, so dass es nur um den Zugang HTML, Zugriff auf unsere Seite sehr schnell. 1405 01:06:06,651 --> 01:06:07,150 Warum? 1406 01:06:07,150 --> 01:06:09,980 Weil wir die Behandlung unserer Seite, die Behandlung unserer HTML-Tags, 1407 01:06:09,980 --> 01:06:11,730 Behandlung alles als ob sie Objekte. 1408 01:06:11,730 --> 01:06:13,710 Wenn wir behandelt sie wie sie sind Objekte, so was können wir tun? 1409 01:06:13,710 --> 01:06:15,210 Nun, wir können Funktionen auf sie zu nennen. 1410 01:06:15,210 --> 01:06:16,460 Und das ist wichtig, warum? 1411 01:06:16,460 --> 01:06:19,200 Nun, da werden wir verwenden JavaScript unseren HTML aktualisieren, 1412 01:06:19,200 --> 01:06:20,500 aktualisieren diese Objekte. 1413 01:06:20,500 --> 01:06:23,869 Also, wenn wir behandeln sie wie Objekte, wir können dann Funktionen fordern sie. 1414 01:06:23,869 --> 01:06:26,660 Ich werde in diese ein wenig zu bekommen mehr als ich in JavaScript zu gehen, 1415 01:06:26,660 --> 01:06:30,510 aber Sie haben alle gesehen, wie document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 So ist Ihr Dokument Element, erhalten Element nach ID, 1417 01:06:32,870 --> 01:06:35,087 so wirst du sehen sind seit einiger ID in einem HTML-Tag. 1418 01:06:35,087 --> 01:06:36,920 Und dann, Sie tun können, etwas anderes zu. 1419 01:06:36,920 --> 01:06:40,089 Zum Beispiel, wie document.body, dann können Sie Kind anhängen. 1420 01:06:40,089 --> 01:06:41,630 So wirst du, um das Dokument zu finden. 1421 01:06:41,630 --> 01:06:42,340 Sie haben das Dokument. 1422 01:06:42,340 --> 01:06:43,629 Sie werden, um den Körper zu finden. 1423 01:06:43,629 --> 01:06:44,420 Sie fand die Leiche. 1424 01:06:44,420 --> 01:06:46,545 Und dann, du bist zu gehen rufen eine Funktion auf sie. 1425 01:06:46,545 --> 01:06:50,312 So hängen Sie Kind, und Sie können anhängen einige HTML auf das Ende in Ihrem Körper. 1426 01:06:50,312 --> 01:06:52,520 Also im Grunde, nur du bist behandeln Sie es wie ein Objekt. 1427 01:06:52,520 --> 01:06:54,515 Du behandelst HTML Tags wie ein Objekt. 1428 01:06:54,515 --> 01:06:57,071 Und es macht es sehr einfach und schnell durch sie gehen. 1429 01:06:57,071 --> 01:06:59,070 Aber es ermöglicht Ihnen auch Funktionen auf sie nennen 1430 01:06:59,070 --> 01:07:04,410 so dass Sie manipulieren können und ändern Sie die Elemente. 1431 01:07:04,410 --> 01:07:10,162 >> GABE: Angesichts dessen, warum ist JavaScript solchen eine schöne Sprache, um mit HTML interagieren? 1432 01:07:10,162 --> 01:07:12,870 Die Chancen stehen, als die Leute die Wahl die Sprache für den Browser, 1433 01:07:12,870 --> 01:07:14,990 für Client-Seite, JavaScript ist wirklich nett, 1434 01:07:14,990 --> 01:07:16,765 es ist wirklich gut im Umgang mit Objekten. 1435 01:07:16,765 --> 01:07:20,620 Und die Objekte eine Art, wie die Objekte, die in der HTML erscheinen, 1436 01:07:20,620 --> 01:07:23,940 so ist es für JavaScript sehr einfach diese Art von Behandlung zu tun. 1437 01:07:23,940 --> 01:07:24,440 DAVIN: Nice. 1438 01:07:24,440 --> 01:07:25,670 Also hier ist nur ein Beispiel. 1439 01:07:25,670 --> 01:07:29,020 Ich denke also, auf der letztjährigen Quiz, oder vielleicht vor zwei Jahren, wir 1440 01:07:29,020 --> 01:07:30,840 Sie gebeten, einen Baum zu erstellen. 1441 01:07:30,840 --> 01:07:32,660 Also das ist genau das, was Sie tun würden. 1442 01:07:32,660 --> 01:07:34,255 Sie beginnen also mit dem Dokument. 1443 01:07:34,255 --> 01:07:36,130 Und dann haben Sie im Grunde Schauen Sie sich die Tags. 1444 01:07:36,130 --> 01:07:38,100 Also, wenn Sie, wir freuen beginnen Sie mit einem HTML-Tag. 1445 01:07:38,100 --> 01:07:41,660 Und dann Hinweise, wie um Sie tun dies auf der Grundlage der Vertiefung. 1446 01:07:41,660 --> 01:07:43,870 Also Kopf Art abzweigt. 1447 01:07:43,870 --> 01:07:46,242 Im Kopf, haben wir ein weiterer Tag für Titel. 1448 01:07:46,242 --> 01:07:47,450 Also haben wir einen Titel-Tag. 1449 01:07:47,450 --> 01:07:49,760 Und im Inneren, haben wir eine Schnur. 1450 01:07:49,760 --> 01:07:52,210 Und so sind wir vertreten eine Zeichenkette in einen Kreis. 1451 01:07:52,210 --> 01:07:54,010 Und all die Tags sind in den Quadraten. 1452 01:07:54,010 --> 01:07:56,270 >> Und wenn Sie schauen, wenn wir Betrachten Sie das als einen Baum, 1453 01:07:56,270 --> 01:07:58,730 und lassen Sie uns sagen, dass HTML Eltern, dann Kopf und Körper 1454 01:07:58,730 --> 01:07:59,772 gehen, um Geschwister sein. 1455 01:07:59,772 --> 01:08:01,813 Sie sind beide sein wird Kinder dieser Eltern. 1456 01:08:01,813 --> 01:08:03,620 Also, weil sie beide Geschwister, sie sind 1457 01:08:03,620 --> 01:08:06,590 werde Art neben sein einander in unserer Baummodell. 1458 01:08:06,590 --> 01:08:08,590 Und dann, Sie im Grunde tun genau dasselbe. 1459 01:08:08,590 --> 01:08:13,512 Also nicht schwierig, aber wir gefragt haben, Fragen wie diese, bevor auf dem Quiz. 1460 01:08:13,512 --> 01:08:15,220 GABE: Hat jemand Fragen so weit? 1461 01:08:15,220 --> 01:08:16,357 Ist es gut? 1462 01:08:16,357 --> 01:08:16,856 DAVIN: Kühl. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript OK, die guten Sachen. 1465 01:08:21,600 --> 01:08:24,069 So JavaScript, was ist JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Nun, es ist kein JavaScript ist-- komplizierte, aber diese 1467 01:08:28,370 --> 01:08:30,727 sind nur einige der Highlights dass Sie sollten im Hinterkopf behalten. 1468 01:08:30,727 --> 01:08:31,810 Erstens, es ist schwach typisierte. 1469 01:08:31,810 --> 01:08:33,529 Was bedeutet das? 1470 01:08:33,529 --> 01:08:35,596 So PHP was-- ja, was ist los? 1471 01:08:35,596 --> 01:08:39,854 >> ZIELGRUPPE: Sie müssen nicht explizit müssen mitteilen, welche Art von Variable es sich handelt. 1472 01:08:39,854 --> 01:08:40,479 DAVIN: Perfect. 1473 01:08:40,479 --> 01:08:43,270 So sagte er Sie nicht haben ausdrücklich den Typ der Variablen. 1474 01:08:43,270 --> 01:08:44,160 Das ist genau richtig. 1475 01:08:44,160 --> 01:08:49,700 So in C, wenn ich int i gleich 50, dann in PHP, es ist nur so, $ i, 1476 01:08:49,700 --> 01:08:50,550 gleich 50 ist. 1477 01:08:50,550 --> 01:08:54,319 Dann in JavaScript was wäre der Anruf sein? 1478 01:08:54,319 --> 01:08:55,260 Var, nicht wahr? 1479 01:08:55,260 --> 01:08:56,566 Es würde sein wie var i gleich 50. 1480 01:08:56,566 --> 01:08:58,649 Aber Sie haben nicht zu sein, wie, OK, das ist ein int. 1481 01:08:58,649 --> 01:09:00,350 OK, das ist ein String. 1482 01:09:00,350 --> 01:09:01,731 Keine Notwendigkeit, das zu tun. 1483 01:09:01,731 --> 01:09:02,939 Es ist eine interpretierte Sprache. 1484 01:09:02,939 --> 01:09:04,904 Also, was bedeutet das? 1485 01:09:04,904 --> 01:09:06,340 >> ZIELGRUPPE: Nicht zusammengestellt. 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN: Was nicht kompiliert das? 1487 01:09:10,470 --> 01:09:11,392 Ja? 1488 01:09:11,392 --> 01:09:15,336 >> ZIELGRUPPE: Sie müssen nicht um den Code zu restrukturieren 1489 01:09:15,336 --> 01:09:18,294 es bereit zu bekommen der Computer, um sie auszuführen. 1490 01:09:18,294 --> 01:09:23,144 Es ist nur zu dem Zeitpunkt genommen Ausführung und der Computer [unverständlich]. 1491 01:09:23,144 --> 01:09:25,560 DAVIN: Ja, so ist es zu gehen gehen durch einen Dolmetscher. 1492 01:09:25,560 --> 01:09:26,750 Aber du bist genau richtig. 1493 01:09:26,750 --> 01:09:28,319 So wirst du nie um es zu kompilieren, oder? 1494 01:09:28,319 --> 01:09:30,399 Wenn Sie bisher Ihre PHP und JavaScript-Code, 1495 01:09:30,399 --> 01:09:31,365 Sie nie aufgerufen Kompilierung. 1496 01:09:31,365 --> 01:09:33,779 Man kann nie etwas namens wie zu machen oder so etwas. 1497 01:09:33,779 --> 01:09:34,800 Das ist, weil es interpretiert. 1498 01:09:34,800 --> 01:09:37,319 Also jedes Mal, es über den Browser geht, es geht durch einen Dolmetscher. 1499 01:09:37,319 --> 01:09:40,370 Und das wird sie zu interpretieren nur in Echtzeit sofort für Sie. 1500 01:09:40,370 --> 01:09:43,770 Also, was sind einige positive und negative um eine interpretierte Sprache 1501 01:09:43,770 --> 01:09:45,258 und eine kompilierte Sprache? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 So compiling-- ja, was ist los? 1504 01:09:50,540 --> 01:09:52,444 >> ZIELGRUPPE: Ausgelegt ist langsamer. 1505 01:09:52,444 --> 01:09:53,319 DAVIN: In welchem ​​Sinne? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> ZIELGRUPPE: Nach kompilieren, müssen nicht Sie 1508 01:09:59,091 --> 01:10:04,400 keine zusätzlichen Schritte zu tun, um ausführen es, während dieser [unverständlich]. 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN: Richtig, perfekt. 1510 01:10:05,570 --> 01:10:08,386 Also, was Sie gesagt haben ist im Grunde, dass Zusammenstellung, 1511 01:10:08,386 --> 01:10:10,760 beim Kompilieren haben Sie ein Viele Investitionskosten, nicht wahr? 1512 01:10:10,760 --> 01:10:11,760 Du wirst es zu kompilieren. 1513 01:10:11,760 --> 01:10:13,750 Aber nachdem Sie es zu kompilieren, die Compiler geht um es zu optimieren. 1514 01:10:13,750 --> 01:10:14,840 Es wird schnell sein. 1515 01:10:14,840 --> 01:10:16,170 Es wird im Grunde werden so schnell wie möglich zu machen. 1516 01:10:16,170 --> 01:10:18,830 Mit der Interpretation, die Sie nie haben, dass die Kosten im Voraus. 1517 01:10:18,830 --> 01:10:22,260 Vielmehr, es wird etwas langsamer sein jedes einzelne Mal, wenn Sie es zu interpretieren. 1518 01:10:22,260 --> 01:10:24,940 Und du wirst zu haben sind interpretieren sie jedes Mal. 1519 01:10:24,940 --> 01:10:27,114 Also anstatt diese einmalige Kosten, jetzt bist du 1520 01:10:27,114 --> 01:10:29,530 gehen sie zu interpretieren zu müssen jedes Mal, wenn die Seite macht. 1521 01:10:29,530 --> 01:10:31,890 >> So Dolmetscher sind gut, weil Sie müssen nicht um es zu kompilieren, 1522 01:10:31,890 --> 01:10:33,980 aber sie sind schlecht, dass jeder Mal die Seite geladen wird, ist es 1523 01:10:33,980 --> 01:10:35,771 werde zu haben, interpretieren diese JavaScript. 1524 01:10:35,771 --> 01:10:40,520 Und es geht um etwas langsamer laufen als wenn Sie es zu kompilieren waren. 1525 01:10:40,520 --> 01:10:43,044 Damit können Sie communicate-- oh, warten. 1526 01:10:43,044 --> 01:10:44,960 Wird verwendet, um die zu manipulieren Inhalt und Aussehen. 1527 01:10:44,960 --> 01:10:46,043 Wir sprachen gerade darüber. 1528 01:10:46,043 --> 01:10:47,250 Es verwendet das DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, werden wir in zu erhalten AJAX in ein wenig. 1530 01:10:49,930 --> 01:10:51,520 Und dann ist es Client-Seite. 1531 01:10:51,520 --> 01:10:53,110 So PHP ist Server-Seite. 1532 01:10:53,110 --> 01:10:54,360 JavaScript ist Client-Seite. 1533 01:10:54,360 --> 01:10:57,780 Was sind positiv, dass? 1534 01:10:57,780 --> 01:10:58,280 Sie sagt, sie. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Es ist schneller, nicht wahr? 1537 01:11:02,780 --> 01:11:05,282 Weil Sie nicht über zu-- es ist schneller. 1538 01:11:05,282 --> 01:11:07,490 Sie müssen nicht, um zu kommunizieren mit einem anderen Gerät. 1539 01:11:07,490 --> 01:11:08,790 Wenn Sie gerade unterwegs sind, Ihren Kunden, sind Sie nie 1540 01:11:08,790 --> 01:11:11,280 zu haben, um zu gehen und sehen, was auf dem Server 1541 01:11:11,280 --> 01:11:13,150 und dann wieder zurück zu melden oder so ähnlich. 1542 01:11:13,150 --> 01:11:15,410 So Client-Seite neigt, ein bisschen schneller. 1543 01:11:15,410 --> 01:11:17,910 >> GABE: Ja, aber diese bedeutet nicht, dass PHP ist 1544 01:11:17,910 --> 01:11:20,440 schneller als JavaScript oder etwas ähnliches. 1545 01:11:20,440 --> 01:11:23,270 Sie laufen Art in der gleichen Geschwindigkeit, weil sie sowohl 1546 01:11:23,270 --> 01:11:24,490 interpretierten Sprachen. 1547 01:11:24,490 --> 01:11:26,680 Die Sache, die langsam ist hier ist die Anfrage. 1548 01:11:26,680 --> 01:11:28,870 Sie sind also eigentlich vor sich geht den ganzen Weg über Brasilien 1549 01:11:28,870 --> 01:11:31,460 um einige Informationen zu bekommen dass dort lebt. 1550 01:11:31,460 --> 01:11:34,590 Aber PHP und JavaScript, sie Art laufen in der gleichen Geschwindigkeit. 1551 01:11:34,590 --> 01:11:37,930 Es ist nicht, dass man schneller als die andere. 1552 01:11:37,930 --> 01:11:40,600 Auch dies Fangfrage hier. 1553 01:11:40,600 --> 01:11:47,338 So JavaScript niemals Maschinencode, wahr oder falsch? 1554 01:11:47,338 --> 01:11:48,590 >> ZIELGRUPPE: False. 1555 01:11:48,590 --> 01:11:49,090 GABE: False. 1556 01:11:49,090 --> 01:11:51,298 Es muss Maschine geworden Code da Maschinencode ist 1557 01:11:51,298 --> 01:11:53,210 das einzige, was die Maschine versteht. 1558 01:11:53,210 --> 01:11:55,800 Auch wenn es nicht kompiliert, noch wird Maschinencode 1559 01:11:55,800 --> 01:11:59,120 weil der Dolmetscher ist nur ein Programm, das Linie geht durch Leitung 1560 01:11:59,120 --> 01:12:02,170 und wandelt diese Zeile in etwas, die der Computer versteht. 1561 01:12:02,170 --> 01:12:02,825 OK? 1562 01:12:02,825 --> 01:12:03,325 Kühle. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> DAVIN: Hier ist nur ein sehr einfaches Hallo Welt JavaScript-Programm. 1565 01:12:12,890 --> 01:12:15,590 Also ich weiß nicht, if-- du das gesehen habe. 1566 01:12:15,590 --> 01:12:17,630 Aber man muss nur HTML hier. 1567 01:12:17,630 --> 01:12:21,020 Und statt der tatsächlich setzen das JavaScript in den Script-Tags, 1568 01:12:21,020 --> 01:12:22,810 so man normalerweise legen Sie sie in den Kopf. 1569 01:12:22,810 --> 01:12:24,030 Sie müssen Script-Tags. 1570 01:12:24,030 --> 01:12:24,870 Sie legen Sie es dort. 1571 01:12:24,870 --> 01:12:28,350 Alles, was wir hier getan haben ist, dass wir in-- verknüpft haben so dass wir in einer JavaScript-Datei verknüpft haben 1572 01:12:28,350 --> 01:12:29,137 so was. 1573 01:12:29,137 --> 01:12:30,470 Und Sie alle getan haben, oder? 1574 01:12:30,470 --> 01:12:34,740 Also, wenn Sie mit jQuery und wurden Underscore.js im letzten p-Set, 1575 01:12:34,740 --> 01:12:38,700 Sie müssen nicht jede Menge Code in Ihre Script-Tags, in Ihrem Kopf. 1576 01:12:38,700 --> 01:12:41,415 Sie können das tun, aber statt Sie gerade Verknüpfung in. 1577 01:12:41,415 --> 01:12:43,540 Und du bist Verknüpfung in Genau wie Sie mit CSS zu tun. 1578 01:12:43,540 --> 01:12:50,186 So ist es nur macht es einfacher, so zu lesen Ihr Code ist nicht wie 1000 Zeilen lang 1579 01:12:50,186 --> 01:12:52,310 mit Tonnen von Funktionen, Sie möglicherweise nicht verwenden werden. 1580 01:12:52,310 --> 01:12:53,518 >> Stattdessen können Sie einfach verbinden Sie in. 1581 01:12:53,518 --> 01:12:55,050 Es compartmentalizes es. 1582 01:12:55,050 --> 01:13:00,110 Es ist wie das Schreiben einige Header-Datei, und dann auch, dass die Header-Datei in C 1583 01:13:00,110 --> 01:13:01,620 Betrachten Sie es einfach so. 1584 01:13:01,620 --> 01:13:02,680 Was bedeutet dies nun tun? 1585 01:13:02,680 --> 01:13:04,560 Nun, das wird laufen. 1586 01:13:04,560 --> 01:13:05,410 Es wird zu alarmieren. 1587 01:13:05,410 --> 01:13:08,020 So wirst du ein wenig zu bekommen sind Pop-up namens Hallo Welt. 1588 01:13:08,020 --> 01:13:11,420 Kurze Frage, nur Plausibilitätsprüfung, so dass Sie sehen hier in den Körper, 1589 01:13:11,420 --> 01:13:13,160 sagen Körper, HTML hier. 1590 01:13:13,160 --> 01:13:14,080 Was kommt zuerst? 1591 01:13:14,080 --> 01:13:16,864 Sehe ich Körper, HTML hier, oder muss ich den Alarm zuerst sehen? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> ZIELGRUPPE: Alert. 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN: Richtig. 1595 01:13:21,470 --> 01:13:22,110 Er sagt, Alarm. 1596 01:13:22,110 --> 01:13:22,610 Warum? 1597 01:13:22,610 --> 01:13:24,470 >> ZIELGRUPPE: Weil Sie gehen von oben nach unten. 1598 01:13:24,470 --> 01:13:25,600 >> DAVIN: Ja. 1599 01:13:25,600 --> 01:13:26,100 Perfect. 1600 01:13:26,100 --> 01:13:29,207 So sagt er, Sie von oben zu gehen Boden, die absolut korrekt ist. 1601 01:13:29,207 --> 01:13:30,790 Sie werden von oben nach unten zu gehen. 1602 01:13:30,790 --> 01:13:34,790 Und in JavaScript jQuery, müssen Sie eine Funktion, wie onload oder bereit ist, 1603 01:13:34,790 --> 01:13:38,030 und das sagt, OK, warten Sie, bis alle diese HTML geladen wurde. 1604 01:13:38,030 --> 01:13:39,580 Und dann, rufen Sie die JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Weil wir nicht hier, die haben, dass das erste, was, das geht zu geschehen 1606 01:13:42,190 --> 01:13:43,920 wird, es wird von oben nach unten zu gehen. 1607 01:13:43,920 --> 01:13:46,310 Es wird getroffen, dass JS rufen, wird es zu alarmieren. 1608 01:13:46,310 --> 01:13:49,510 Danach können Sie auf OK klicken, dass Alarm verschwindet. 1609 01:13:49,510 --> 01:13:53,600 Dann, es wird zeigen, Sie der Körper HTML hier. 1610 01:13:53,600 --> 01:13:54,590 Nizza. 1611 01:13:54,590 --> 01:14:00,880 >> OK, so dass nur sehr schnell, schriftlich in JavaScript ist super schnell. 1612 01:14:00,880 --> 01:14:02,710 Um zu erklären, eine Variable, Namen var. 1613 01:14:02,710 --> 01:14:07,070 So in C, müssen Sie int i, haben Sie zu erklären, welche Art von Typ es sich handelt. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript var. 1616 01:14:08,755 --> 01:14:09,630 Wir sprachen über diese. 1617 01:14:09,630 --> 01:14:11,020 Alles klar, lass uns gehen. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, dasselbe. 1619 01:14:12,510 --> 01:14:14,230 Gleiche. 1620 01:14:14,230 --> 01:14:18,165 Funktionsdeklarationen, so wie Sie in C gesehen haben 1621 01:14:18,165 --> 01:14:21,290 Das einzige, was anders ist, so dass, wenn Sie andere Programmiersprachen zu bekommen, 1622 01:14:21,290 --> 01:14:24,780 wie wenn Sie nehmen 51 im nächsten Semester und Sie können mit ocaml tust, 1623 01:14:24,780 --> 01:14:26,690 können Sie mit anonymen Funktionen umzugehen. 1624 01:14:26,690 --> 01:14:28,240 Also das ist genau das, was Sie hier sind. 1625 01:14:28,240 --> 01:14:31,560 Sie wollen also in Summe setzen wollen, eine Art Summenwert. 1626 01:14:31,560 --> 01:14:33,870 Aber Sie könnten nur tun es einmal. 1627 01:14:33,870 --> 01:14:37,310 So müssen Sie nicht wollen, nennen es Funktion Summe, geben ihm eine Funktionsdeklaration. 1628 01:14:37,310 --> 01:14:39,830 Stattdessen können Sie es einfach verwenden, als eine anonyme Funktion. 1629 01:14:39,830 --> 01:14:42,469 Und Sie dieses viel gesehen haben. 1630 01:14:42,469 --> 01:14:44,510 Sie werden ein Beispiel zu sehen diese in ein paar Dias. 1631 01:14:44,510 --> 01:14:45,597 Ja, wir werden sehen. 1632 01:14:45,597 --> 01:14:46,430 GABE: Gute Frage. 1633 01:14:46,430 --> 01:14:50,660 Wann können Sie verwenden möchten eine anonyme Funktion hier? 1634 01:14:50,660 --> 01:14:54,111 Grundsätzlich, wenn Sie etwas wollen, wie ein Ereignis, zu geschehen. 1635 01:14:54,111 --> 01:14:55,860 Also, wenn die Maus geklickt wird, beispielsweise 1636 01:14:55,860 --> 01:14:57,790 Sie wollen eine Funktion aufgerufen werden. 1637 01:14:57,790 --> 01:15:00,570 So können Sie mit dem Ereignis übergeben Handler übergeben Sie an das Ereignis, 1638 01:15:00,570 --> 01:15:02,870 Art, die Funktion, Sie wollen, aufgerufen werden. 1639 01:15:02,870 --> 01:15:04,710 Und was ist übergeben Sie ist wie am Ende 1640 01:15:04,710 --> 01:15:08,757 der Tag, nur ein Zeiger auf daß der Befehl, an die Funktion. 1641 01:15:08,757 --> 01:15:11,090 Also es ist nicht so übergeben Sie der gesamte Code, ebenso wie 1642 01:15:11,090 --> 01:15:12,173 einen Zeiger auf die Funktion. 1643 01:15:12,173 --> 01:15:17,871 Und dann, wenn jemand klickt der Maus, wird diese Funktion aufgerufen wird. 1644 01:15:17,871 --> 01:15:22,340 >> DAVIN: Arrays, so dass Sie haben eine Reihe Erklärung. 1645 01:15:22,340 --> 01:15:23,990 Dann wird ein Array an Sachen. 1646 01:15:23,990 --> 01:15:25,769 Sehr schnell, was diese ausdrucken? 1647 01:15:25,769 --> 01:15:27,060 Was wird das dritte Element sein? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> ZIELGRUPPE: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN: Richtig, es wäre "JS". 1651 01:15:33,940 --> 01:15:35,760 Warten Sie, gehen Sie zurück. 1652 01:15:35,760 --> 01:15:37,100 Wie lang ist? 1653 01:15:37,100 --> 01:15:38,117 >> ZIELGRUPPE: Drei. 1654 01:15:38,117 --> 01:15:38,950 DAVIN: Drei, oder? 1655 01:15:38,950 --> 01:15:40,210 Genau das, was Sie denken. 1656 01:15:40,210 --> 01:15:42,072 OK, jetzt zu gehen. 1657 01:15:42,072 --> 01:15:43,530 Arrays können Sie die Dinge um sie hinzuzufügen. 1658 01:15:43,530 --> 01:15:45,395 So können Sie über das hinausgehen kann ihrer ursprünglichen Grenzen. 1659 01:15:45,395 --> 01:15:46,740 Nur etwas im Auge zu behalten. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, sie sind ein wenig wenig toleranter in Bezug auf die Dinge, 1661 01:15:49,760 --> 01:15:50,570 so. 1662 01:15:50,570 --> 01:15:54,260 Objekte, sehr ähnlich Strukturen in C, sehr viel 1663 01:15:54,260 --> 01:15:56,590 wie assoziative Arrays in PHP. 1664 01:15:56,590 --> 01:15:58,720 Sie alle haben schon Erfahrung mit diesem. 1665 01:15:58,720 --> 01:16:01,880 So JSON, wenn Sie vorbei JSON sind in p-Set acht vor und zurück, 1666 01:16:01,880 --> 01:16:03,260 das ist Ihr Ziel. 1667 01:16:03,260 --> 01:16:06,290 >> Also ja, zB ganz schnell Beispiel. 1668 01:16:06,290 --> 01:16:07,880 Hier ist ein Objekt. 1669 01:16:07,880 --> 01:16:12,700 Die Art und Weise dieser Referenz Objekt, so dass nur sehr schnell, 1670 01:16:12,700 --> 01:16:18,630 sagen wir, ich wollte herausfinden out, OK, was ist der Kurs? 1671 01:16:18,630 --> 01:16:20,681 Und so ist die Objektnamen hier CS50. 1672 01:16:20,681 --> 01:16:23,180 Und dann, wenn ich ein assoziatives Array, wie würde ich das tun? 1673 01:16:23,180 --> 01:16:24,580 Ich werde mit einem Schlüssel, nicht wahr? 1674 01:16:24,580 --> 01:16:26,030 So habe ich den Namen des Arrays. 1675 01:16:26,030 --> 01:16:30,160 Ich habe Halterung, Zitate, Schlüssel, Ende Zitate, Endwinkel, 1676 01:16:30,160 --> 01:16:33,610 und das wird verweisen, dass Element in meinem assoziatives Array. 1677 01:16:33,610 --> 01:16:37,646 Wie kann ich verwiesen Natürlich in meinem Objekt? 1678 01:16:37,646 --> 01:16:39,170 Jeder weiß? 1679 01:16:39,170 --> 01:16:40,622 >> ZIELGRUPPE: [unverständlich]. 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN: Was ist los? 1681 01:16:41,784 --> 01:16:42,700 ZIELGRUPPE: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 DAVIN: Richtig, ja. 1683 01:16:43,510 --> 01:16:45,320 So CS50.course. 1684 01:16:45,320 --> 01:16:48,770 So, wie Sie die Dinge verweisen in einem JSON-Objekt ist mit einem Punkt. 1685 01:16:48,770 --> 01:16:53,114 >> ZIELGRUPPE: Sie können auch Array-Syntax verwenden. 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN: OK, gut. 1687 01:16:54,050 --> 01:16:57,544 >> GABE: Sie können auch CS50 Halterung zu verwenden, String, wie Anführungszeichen. 1688 01:16:57,544 --> 01:16:59,210 ZIELGRUPPE: Ich denke, es ist identisch mit PHP. 1689 01:16:59,210 --> 01:17:00,293 GABE: Es ist die gleiche Sache. 1690 01:17:00,293 --> 01:17:02,487 DAVIN: Schön! 1691 01:17:02,487 --> 01:17:03,945 Aber Sie werden diese an anderen Orten zu sehen. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Ja, so weiterzumachen. 1694 01:17:10,480 --> 01:17:13,330 Dies ist, was ich gerade gesagt habe. 1695 01:17:13,330 --> 01:17:17,840 Also in eine JavaScript jQuery Beispiel. 1696 01:17:17,840 --> 01:17:19,440 Also das ist meine DOM, nicht wahr? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Sehr schnell, so dass ich ein Kopf, Hallo Welt, Körper. 1699 01:17:25,410 --> 01:17:26,160 Ich habe eine Schaltfläche. 1700 01:17:26,160 --> 01:17:27,870 Er sagt, "Push mich", so möchte ich es schieben. 1701 01:17:27,870 --> 01:17:29,745 Und ich möchte etwas zu tun wenn es angeklickt wird. 1702 01:17:29,745 --> 01:17:31,220 Rechts neben. 1703 01:17:31,220 --> 01:17:34,630 >> Richtig, das ist so meine JavaScript. 1704 01:17:34,630 --> 01:17:37,790 So jQuery ist nur ein einfacher Weg, um JavaScript zu schreiben. 1705 01:17:37,790 --> 01:17:40,920 Also das, und was ich zu zeigen, Sie das nächste Mal, wird sich jQuery sein, 1706 01:17:40,920 --> 01:17:41,930 sind identisch. 1707 01:17:41,930 --> 01:17:43,990 So werden sie die gleichen Dinge zu tun. 1708 01:17:43,990 --> 01:17:45,974 Nur jQuery neigt dazu, ein wenig leichter. 1709 01:17:45,974 --> 01:17:47,140 Menschen neigen dazu, es mögen. 1710 01:17:47,140 --> 01:17:48,390 Es verfügt über eine Vielzahl von Funktionen. 1711 01:17:48,390 --> 01:17:49,830 So können die Leute neigen dazu, jQuery verwenden. 1712 01:17:49,830 --> 01:17:53,270 Sie alle verwendet jQuery in der letzten p-Set. 1713 01:17:53,270 --> 01:17:54,270 Also, was wird dies zu tun? 1714 01:17:54,270 --> 01:17:56,580 Was wird diese JavaScript-- so Das ist einfach nur JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Was wird dies tun? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Was wird es tun? 1718 01:18:03,450 --> 01:18:04,890 >> Also zuerst, Sie sehen Fenster onload. 1719 01:18:04,890 --> 01:18:05,390 Richtig? 1720 01:18:05,390 --> 01:18:06,640 Also haben wir nicht gesehen, dass vorher nicht. 1721 01:18:06,640 --> 01:18:09,380 Also das wird warten bis die gesamte Fenster Lasten. 1722 01:18:09,380 --> 01:18:12,770 Es wird also warten, bis HTML, werden alle Bilder laden 1723 01:18:12,770 --> 01:18:13,770 bevor es irgendetwas tut. 1724 01:18:13,770 --> 01:18:16,050 Also sagen wir mal unsere DOM geladen wurde. 1725 01:18:16,050 --> 01:18:17,270 Alles, was da ist. 1726 01:18:17,270 --> 01:18:19,080 Und was wird passieren? 1727 01:18:19,080 --> 01:18:19,922 Ja? 1728 01:18:19,922 --> 01:18:22,880 >> ZIELGRUPPE: Button erscheint. 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN: Die Schaltfläche ist schon da. 1730 01:18:25,201 --> 01:18:26,700 Ja, so dass die Taster der schon da. 1731 01:18:26,700 --> 01:18:31,190 Aber das sagen wird, OK, wenn ich auf die Schaltfläche, 1732 01:18:31,190 --> 01:18:33,650 so dass die Taster ist bereits da, wie die HTML-Tag. 1733 01:18:33,650 --> 01:18:35,980 Warten Sie, gehen Sie zurück, sehr kurz. 1734 01:18:35,980 --> 01:18:39,470 Diese Markierung rechts rechts hier wird ein Button schon sein. 1735 01:18:39,470 --> 01:18:40,810 Es gibt bereits eine Taste. 1736 01:18:40,810 --> 01:18:44,120 Aber dann ist die JavaScript Tag, genau hier, 1737 01:18:44,120 --> 01:18:46,160 es sagt, OK, ich will zum Element ID zu bekommen, 1738 01:18:46,160 --> 01:18:50,300 so Suchtaste nur sagt, OK, ich will diese Variable auf diese Schaltfläche Karte. 1739 01:18:50,300 --> 01:18:53,120 Damit die Variable ist nur eine einfacheren Weg, um Zugriff auf diese Taste. 1740 01:18:53,120 --> 01:18:57,300 Und ich sage, OK, wenn ich Sie, dass Taste, so dass, wenn ich auf das Element, 1741 01:18:57,300 --> 01:18:59,560 und dieses Element verweist auf die Taste, wenn ich Sie es, 1742 01:18:59,560 --> 01:19:00,875 dann möchte ich eine Funktion aufrufen. 1743 01:19:00,875 --> 01:19:03,500 Hier ist einer jener anonymen Funktionen haben wir gesprochen. 1744 01:19:03,500 --> 01:19:04,840 >> Rufen Sie einfach eine Funktion. 1745 01:19:04,840 --> 01:19:08,840 Innerhalb dieser Funktion, im Grunde etwas, wir haben eine Menge, wachsam zu sehen. 1746 01:19:08,840 --> 01:19:10,477 Sie klicken Sie auf die Suchtaste. 1747 01:19:10,477 --> 01:19:12,060 Es wird grundsätzlich eine Taste. 1748 01:19:12,060 --> 01:19:13,040 Sie klicken Sie darauf. 1749 01:19:13,040 --> 01:19:14,040 Sie erhalten diese Benachrichtigung. 1750 01:19:14,040 --> 01:19:14,850 X aus. 1751 01:19:14,850 --> 01:19:15,754 Das ist es. 1752 01:19:15,754 --> 01:19:16,254 Ja? 1753 01:19:16,254 --> 01:19:21,980 >> ZIELGRUPPE: Wenn Sie also das Skript [Unverständlich], script-Tag im HTML? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN: Sie können das Skript setzen Tag gerade in den Kopf 1755 01:19:24,300 --> 01:19:30,667 weil Sie diese onload. 1756 01:19:30,667 --> 01:19:32,000 Es ist auch, dass ein Klicken zu haben. 1757 01:19:32,000 --> 01:19:34,166 Es wird also warten, bis Sie etwas anklicken. 1758 01:19:34,166 --> 01:19:37,470 Aber onload nur um sicher zu sein, zu machen sicherzustellen, dass alles Lasten in Ihren HTML- 1759 01:19:37,470 --> 01:19:38,170 vorher. 1760 01:19:38,170 --> 01:19:39,247 Ja? 1761 01:19:39,247 --> 01:19:40,330 Sie möchten noch etwas sagen? 1762 01:19:40,330 --> 01:19:41,080 >> GABE: [unverständlich]. 1763 01:19:41,080 --> 01:19:42,485 DAVIN: Ja. 1764 01:19:42,485 --> 01:19:45,426 >> ZIELGRUPPE: So vermeidet onload Definieren des variablen Suchtaste 1765 01:19:45,426 --> 01:19:49,930 indem einfach nur sagen document.getElementById Suchtaste dot [unverständlich]. 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN: Auf jeden Fall, aber dann Ihre String wird immer riesig. 1767 01:19:52,320 --> 01:19:55,553 Genau, so ist dies nur zu machen es einfacher für Sie, ja. 1768 01:19:55,553 --> 01:19:56,053 Ja? 1769 01:19:56,053 --> 01:19:57,886 >> ZIELGRUPPE: Wo haben wir erstellen window.onload? 1770 01:19:57,886 --> 01:19:58,951 Oder document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> DAVIN: Ja, es gibt. 1772 01:20:00,590 --> 01:20:02,094 Ja, es ist, ich überprüft. 1773 01:20:02,094 --> 01:20:03,710 >> GABE: Nicht für sie zu interessieren. 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN: OK, also werde ich um Ihnen trotzdem erzählen. 1775 01:20:06,970 --> 01:20:11,005 Also im Grunde, nur im Allgemeinen, so window.onload wartet, bis Sie Ihre DOM, alle 1776 01:20:11,005 --> 01:20:12,180 Ihre HTML, Lasten. 1777 01:20:12,180 --> 01:20:13,513 Er wartet, bis Sie Ihre Bilder laden. 1778 01:20:13,513 --> 01:20:14,930 Er wartet, bis alles geladen wird. 1779 01:20:14,930 --> 01:20:18,410 document.ready, es ist einfach wartet, bis Sie Ihre DOM Lasten. 1780 01:20:18,410 --> 01:20:22,190 Sobald der HTML ist alles da, einmal Ihre DOM ist es, zu laufen beginnt. 1781 01:20:22,190 --> 01:20:23,400 Das ist der einzige Unterschied. 1782 01:20:23,400 --> 01:20:24,700 >> GABE: Schnell Vernunft hier überprüfen. 1783 01:20:24,700 --> 01:20:29,060 So kann Art gesehen werden wie eine Codezeile, oder? 1784 01:20:29,060 --> 01:20:33,600 Weil es window.onload gleich ein paar Sachen. 1785 01:20:33,600 --> 01:20:39,030 Wenn JavaScript liest, wahr oder falsch ist, wird die Funktion ausgeführt. 1786 01:20:39,030 --> 01:20:40,020 Falsch. 1787 01:20:40,020 --> 01:20:40,920 OK? 1788 01:20:40,920 --> 01:20:44,470 Was hier passiert, sind Sie nur auf der Durch Diese Funktion als anonyme Funktionen 1789 01:20:44,470 --> 01:20:45,300 um window.onload. 1790 01:20:45,300 --> 01:20:48,480 Und dann, wenn es wird um tatsächlich ausgeführt werden? 1791 01:20:48,480 --> 01:20:49,600 Wenn das Fenster geladen wird. 1792 01:20:49,600 --> 01:20:50,420 Das ist ein Ereignis. 1793 01:20:50,420 --> 01:20:52,460 Also das ist jus t, was wir sind reden über früher, nicht wahr? 1794 01:20:52,460 --> 01:20:54,580 Also, wenn das Ereignis eintritt, die Funktion geschieht. 1795 01:20:54,580 --> 01:20:55,746 Das Gleiche gilt für das onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN: OK, so jemand hat entfernt die document.ready. 1798 01:21:03,130 --> 01:21:04,698 Aber das wird die genaue same-- sein 1799 01:21:04,698 --> 01:21:06,864 ZIELGRUPPE: Das Dollarzeichen, daß ein document.ready. 1800 01:21:06,864 --> 01:21:07,710 Das ist eine Abkürzung. 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN: Oh, ist das so? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, so bedeutet dies, document.ready, Verknüpfung. 1804 01:21:15,500 --> 01:21:19,660 Aber dies ist das gleiche wie window.onload außer für den kleinen Unterschied 1805 01:21:19,660 --> 01:21:20,680 Ich Ihnen erzählt habe. 1806 01:21:20,680 --> 01:21:21,870 Und das ist jQuery. 1807 01:21:21,870 --> 01:21:25,190 Also das ist genau das gleiche thing-- dies JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Dies wird just-- einige Leute darüber denken als mehr leichte, schlanke Version 1809 01:21:29,500 --> 01:21:32,370 das hat viele Funktionen dass Sie wahrscheinlich verwenden werden. 1810 01:21:32,370 --> 01:21:34,500 Also das macht genau dasselbe. 1811 01:21:34,500 --> 01:21:37,110 >> Also Dinge zu Art hinzuweisen. 1812 01:21:37,110 --> 01:21:40,364 So in dem anderen Beispiel, wir hatte document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 so dass wir diese lang Zeichenfolge, die gehen, um zu bekommen 1814 01:21:42,280 --> 01:21:44,290 das Element durch ein beliebiges von ID hat. 1815 01:21:44,290 --> 01:21:46,470 Das ist hier durch diesen Aufruf ersetzt. 1816 01:21:46,470 --> 01:21:50,860 Sie sehen also, das Dollar-Zeichen, dann sieht man, Zitat, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag ist immer ein Selektor. 1818 01:21:52,370 --> 01:21:54,730 Er sagt, OK, so ist dies mit einer ID zu tun. 1819 01:21:54,730 --> 01:21:56,120 Was ist der Selektor für eine Klasse? 1820 01:21:56,120 --> 01:21:57,190 >> ZIELGRUPPE: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN: Punkt, richtig. 1822 01:21:57,960 --> 01:22:01,950 Wenn Sie gerade dabei, wählen Sie ein Tag, was ist das? 1823 01:22:01,950 --> 01:22:03,310 Es ist nur der Tag, genau. 1824 01:22:03,310 --> 01:22:05,560 Und man konnte, dass hier zu verwenden, als auch. 1825 01:22:05,560 --> 01:22:08,560 >> GABE: Und nach Tag, so meinen wir, wie div, zum Beispiel, oder Kopf. 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN: Oder Körpers oder p oder etwas in der Art, ja. 1827 01:22:11,500 --> 01:22:14,390 Also hier, OK, anstatt zu sagen, document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 das ist nur die genau dasselbe. 1829 01:22:16,500 --> 01:22:17,990 Nur in jQuery, es ist kürzer. 1830 01:22:17,990 --> 01:22:19,860 So ist es einfacher. 1831 01:22:19,860 --> 01:22:23,420 Also, nicht mehr onclick, klicken Sie einfach auf. 1832 01:22:23,420 --> 01:22:26,320 jQuery-Funktion, rufen Sie diese Funktion. 1833 01:22:26,320 --> 01:22:27,580 Alarm ist genau das gleiche. 1834 01:22:27,580 --> 01:22:29,452 So ist es ein wenig kleiner oder etwas 1835 01:22:29,452 --> 01:22:32,410 kürzer, denke ein wenig bit-- Menschen es ist ein wenig leichter zu schreiben, 1836 01:22:32,410 --> 01:22:34,600 ein wenig leichter zu verstehen. 1837 01:22:34,600 --> 01:22:35,640 Aber das ist jQuery. 1838 01:22:35,640 --> 01:22:37,887 Eine Menge Leute erhalten wenig wenig verwirrt und besorgt 1839 01:22:37,887 --> 01:22:40,220 und sie denken, OK, jQuery ist anders als JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Ich muss diese erinnern zwei verschiedene Dinge. 1841 01:22:42,136 --> 01:22:42,740 Es ist nicht. 1842 01:22:42,740 --> 01:22:45,315 Ich meine, es ist eine andere Syntax. 1843 01:22:45,315 --> 01:22:46,970 Aber jQuery JavaScript. 1844 01:22:46,970 --> 01:22:50,050 Es ist nur eine scheinbar bessere Version, 1845 01:22:50,050 --> 01:22:51,967 könnte einfacher sein verstehen, dass Menschen zu verwenden. 1846 01:22:51,967 --> 01:22:53,716 GABE: Ja, zu sein ehrlich, dass Dollar-Zeichen 1847 01:22:53,716 --> 01:22:57,240 dass Sie in jQuery zu sehen, das ist nur die Name einer Funktion, die jQuery definiert. 1848 01:22:57,240 --> 01:22:58,614 Es muss nicht etwas Besonderes. 1849 01:22:58,614 --> 01:23:03,140 Ist Es ist nur der Name einer Funktion, genau wie Sie könnte Dollarzeichen zu definieren. 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN: Ja, so sprach darüber. 1851 01:23:05,670 --> 01:23:06,680 Hier werden einige nützliche Dinge. 1852 01:23:06,680 --> 01:23:10,414 Ich war wieder auf den alten Quiz suchen. 1853 01:23:10,414 --> 01:23:13,080 In den letzten paar Quizfragen, sie haben mussten Dinge wie diese zu verwenden. 1854 01:23:13,080 --> 01:23:15,230 So document.ready, so stellen Sie sicher, alles ist 1855 01:23:15,230 --> 01:23:17,410 bevor Sie geladen beginnen, Dinge zu tun. 1856 01:23:17,410 --> 01:23:20,120 Wählen Sie eine ID ein, oder wählen eine Klasse, würde es nur 1857 01:23:20,120 --> 01:23:24,020 sein Angebot dot etwas Klasse, Ende Zitat. 1858 01:23:24,020 --> 01:23:26,580 Senden, also, wenn Sie ein Formular und Call- 1859 01:23:26,580 --> 01:23:28,830 diese Funktion nach dem Formular sendet. 1860 01:23:28,830 --> 01:23:34,210 Wert, so sagen wir, ich habe ein Formular Unterordnung, wie einen Benutzernamen, eine E-Mail, 1861 01:23:34,210 --> 01:23:34,950 was auch immer. 1862 01:23:34,950 --> 01:23:36,010 Ich hatte ein Textfeld. 1863 01:23:36,010 --> 01:23:37,670 Also ich bin der Eingabe in das Textfeld ein. 1864 01:23:37,670 --> 01:23:42,170 Nun, wenn Sie den Wert erhalten möchten aus diesem Textfeld, Punkt val verwenden Sie. 1865 01:23:42,170 --> 01:23:44,050 Und dann, hier unten, dot HTML ist die gleiche 1866 01:23:44,050 --> 01:23:47,710 ist wie Dokument dot getElementByID dot innerhtml. 1867 01:23:47,710 --> 01:23:50,890 So, das wird zurückkehren Sie die HTML aus dieser ID. 1868 01:23:50,890 --> 01:23:55,080 Hier finden Sie nur einige verwenden ID oder was auch immer dot HTML. 1869 01:23:55,080 --> 01:23:56,930 Das wird die HTML von diesem Element zu erhalten. 1870 01:23:56,930 --> 01:24:00,130 Wenn Sie wollte dann ändern HTML, können Sie es so etwas passieren. 1871 01:24:00,130 --> 01:24:05,600 So würden Sie wie dot HTML, und dann innen, Zitate, neue HTML oder so etwas. 1872 01:24:05,600 --> 01:24:07,490 >> GABE: OK, so AJAX. 1873 01:24:07,490 --> 01:24:10,347 Ich zu verstehen, mag AJAX wirklich gut. 1874 01:24:10,347 --> 01:24:12,430 Deshalb möchte ich euch zu verstehen AJAX wirklich gut. 1875 01:24:12,430 --> 01:24:14,221 Denn wenn Sie das tun, Sie ziemlich viel los 1876 01:24:14,221 --> 01:24:16,810 , alles zu verstehen, dass hat mit HTTP zu tun, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript weil es allen kommt zusammen in AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX ist keine Sprache. 1879 01:24:25,130 --> 01:24:27,000 AJAX ist eine Technik. 1880 01:24:27,000 --> 01:24:31,690 Und es nutzt viele verschiedene Werkzeuge. 1881 01:24:31,690 --> 01:24:35,090 AJAX steht für asynchrone JavaScript XML. 1882 01:24:35,090 --> 01:24:36,730 So ist die Methode, die Sprache, die Daten. 1883 01:24:36,730 --> 01:24:40,610 >> So der Hauptsprache, die wir verwenden in AJAX, alles auslösen 1884 01:24:40,610 --> 01:24:42,830 und alles im Griff später ist JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Das ist, warum sie sich ganz in der Nähe JavaScript. 1886 01:24:45,160 --> 01:24:49,810 Und dann asynchron ist weil wir es nicht tun 1887 01:24:49,810 --> 01:24:51,980 alle auf einmal, wenn wir das Laden der Seite. 1888 01:24:51,980 --> 01:24:57,190 Das ist die Sache, die wir können Dinge tun, Art parallel. 1889 01:24:57,190 --> 01:24:59,725 Die Grundidee hinter AJAX ist, dass Sie wollen, 1890 01:24:59,725 --> 01:25:02,170 es um bestimmte Informationen zu bekommen. 1891 01:25:02,170 --> 01:25:06,450 Zum Beispiel, wenn Sie neue eingeben Benutzernamen, wenn Sie einen Benutzernamen registrieren, 1892 01:25:06,450 --> 01:25:08,520 meinen Benutzernamen ist abc123. 1893 01:25:08,520 --> 01:25:11,671 Und dann, am Ende der Form, müssen Sie klicken Sie auf Absenden. 1894 01:25:11,671 --> 01:25:14,420 Und es hatte sich mit dem Server zu gehen, und dann prüfen, ob in der Datenbank, 1895 01:25:14,420 --> 01:25:15,594 abc123 ist schon da. 1896 01:25:15,594 --> 01:25:18,510 Und wenn es schon da, sagt er, bereits in der Datenbank-Benutzernamen. 1897 01:25:18,510 --> 01:25:21,010 Und sie können, müssen Sie füllen aus das gesamte Formular erneut. 1898 01:25:21,010 --> 01:25:23,110 Und es war wirklich sehr, sehr schlecht. 1899 01:25:23,110 --> 01:25:25,440 >> Und dann werden die Menschen sagen, OK, warum können wir nicht einfach 1900 01:25:25,440 --> 01:25:29,560 tun einen kleinen HTTP-Anforderung an einfach mal zu sehen, wenn dieser Benutzer in der Datenbank ist 1901 01:25:29,560 --> 01:25:32,080 bevor der Benutzer musste senden Sie das Formular vollständig aus? 1902 01:25:32,080 --> 01:25:36,350 So zum Beispiel, wenn der Benutzer beendet die Eingabe abc123, 1903 01:25:36,350 --> 01:25:39,660 lassen Sie uns einfach an den Server ein wenig gehen Bit und einfach nur ein richtig oder falsch 1904 01:25:39,660 --> 01:25:43,080 von dem Server zu sehen, ob das ist ein gültiger Benutzername oder nicht. 1905 01:25:43,080 --> 01:25:49,250 OK, das ist also eine der wichtigsten nutzt AJAX auch heute noch. 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN: So ganz schnell, in ein Ajax-Aufruf in jQuery, 1907 01:25:52,130 --> 01:25:54,770 Ihnen, dass Sie bedeuten könnte wollen, dass es synchron sein. 1908 01:25:54,770 --> 01:25:56,330 Sie sollten das nicht tun. 1909 01:25:56,330 --> 01:25:57,640 Aber man kann das tun. 1910 01:25:57,640 --> 01:25:59,277 Und wenn Sie, dass das getan, was würde passieren? 1911 01:25:59,277 --> 01:26:01,610 Nun, zum Beispiel, wenn Sie unterwegs sind Nachrichten bekommen oder was auch immer, 1912 01:26:01,610 --> 01:26:05,464 Ihr Browser nur noch warten bis das gesamte Anruf abgeschlossen ist 1913 01:26:05,464 --> 01:26:08,130 anstatt dass Sie zu tun Dinge richtig, nachdem Sie auf sie. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> GABE: Es ist nicht mehr vorbei. 1916 01:26:17,115 --> 01:26:19,681 Oh mein Gott. 1917 01:26:19,681 --> 01:26:20,180 Es tut uns leid! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Jawohl. 1920 01:26:23,601 --> 01:26:25,350 "In der Vergangenheit wurde der Client auf Anfrage benötigt 1921 01:26:25,350 --> 01:26:26,840 der gesamte Inhalt einer Website. " 1922 01:26:26,840 --> 01:26:28,210 Das ist, was ich gesagt habe. 1923 01:26:28,210 --> 01:26:30,070 Es ermöglicht uns, senden zusätzliche GET oder POST 1924 01:26:30,070 --> 01:26:32,140 Anfragen ohne unsere Browser neu zu laden. 1925 01:26:32,140 --> 01:26:34,806 So am Ende des Tages sind wir tatsächlich macht eine HTTP-Anfragen 1926 01:26:34,806 --> 01:26:35,740 hier mit Hilfe von JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Denn bevor wir nur verwendet JavaScript um die HTML, die bereits gekommen zu ändern. 1928 01:26:39,700 --> 01:26:43,110 Und jetzt können wir es verwenden, um eine Schnittstelle mit den Web-Server als auch. 1929 01:26:43,110 --> 01:26:46,140 Die Art und Weise dies geschieht, ist, dass wir den Kunden zu haben. 1930 01:26:46,140 --> 01:26:47,340 Davin ein Client ist. 1931 01:26:47,340 --> 01:26:50,797 Und er hat alle JavaScript laufen, weil HTML ist dumm. 1932 01:26:50,797 --> 01:26:51,630 JavaScript ist smart. 1933 01:26:51,630 --> 01:26:54,690 So davin Davin hat seinen Smart Teil und seine stumme Rolle. 1934 01:26:54,690 --> 01:26:57,590 Er wird seine intelligenten Teil nun. 1935 01:26:57,590 --> 01:27:00,860 Er wird JavaScript verwenden auf Anfrage, beispielsweise 1936 01:27:00,860 --> 01:27:04,340 ob abc123 ist in die Datenbank oder nicht. 1937 01:27:04,340 --> 01:27:08,450 >> So Davin, bitte, die Sie gerade senden Sie mir eine HTTP-Anfrage. 1938 01:27:08,450 --> 01:27:09,197 Danke. 1939 01:27:09,197 --> 01:27:10,530 Also schickte er eine HTTP-Anforderung. 1940 01:27:10,530 --> 01:27:11,270 Siehst du das? 1941 01:27:11,270 --> 01:27:14,700 Und das ist nur die gleiche Art und Weise dass jede HTTP-Anfrage gesendet wird. 1942 01:27:14,700 --> 01:27:16,830 Der Browser, Google Chrome oder so etwas, ist 1943 01:27:16,830 --> 01:27:19,570 gehen, um zu sehen, dass Davins versuchen, eine HTTP-Anfrage zu senden, 1944 01:27:19,570 --> 01:27:20,930 zu helfen, hm ein wenig. 1945 01:27:20,930 --> 01:27:23,950 Und das wird gehen den ganzen Weg zu dem Server. 1946 01:27:23,950 --> 01:27:27,370 Nun wird der Server zu haben, PHP hier, oder jeder anderen Sprache. 1947 01:27:27,370 --> 01:27:29,990 Genau wie bei einem normalen HTTP-Anforderung. 1948 01:27:29,990 --> 01:27:31,950 Es ist so ziemlich eine normale HTTP-Anforderung. 1949 01:27:31,950 --> 01:27:33,658 >> Und dann der Server wird sagen, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin will, dass ich, ob überprüfen Diese abc123 ist in der Datenbank. 1951 01:27:37,270 --> 01:27:38,310 Sprecht mit dem Modell. 1952 01:27:38,310 --> 01:27:41,310 Das Modell sagt, es ist nicht. abc123 ist ein guter Benutzernamen. 1953 01:27:41,310 --> 01:27:47,940 Und dann wird der Web-Server würde Verwendung von PHP, irgendeine Form von Datei rendern. 1954 01:27:47,940 --> 01:27:52,280 Es könnte buchstäblich nur eine Datei sein das enthält "Ja" in ihm, oder "Nein, 1955 01:27:52,280 --> 01:27:53,315 oder so ähnlich. 1956 01:27:53,315 --> 01:27:54,190 Es könnte jede Datei sein. 1957 01:27:54,190 --> 01:27:57,080 >> Es könnte sein, wie ich bin zu gehen senden Davin ein Bild von einer Ente 1958 01:27:57,080 --> 01:28:01,200 wenn es in der Datenbank und senden Sie ein Bild eines Hamsters 1959 01:28:01,200 --> 01:28:02,420 wenn es nicht in der Datenbank. 1960 01:28:02,420 --> 01:28:04,294 Das wäre Art sein dumm, aber es wird funktionieren. 1961 01:28:04,294 --> 01:28:07,030 OK, so sende ich eine Ente zu Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin bekam eine Ente. 1963 01:28:08,150 --> 01:28:13,330 Und nun, wer wird , um die Ente zu behandeln? 1964 01:28:13,330 --> 01:28:16,390 Davin Smart Teil wieder, so JavaScript, oder? 1965 01:28:16,390 --> 01:28:18,620 JavaScript schickte der Anfrage und JavaScript 1966 01:28:18,620 --> 01:28:22,300 wird, um die Anforderung zu empfangen und interpretieren sie in irgendeiner Form. 1967 01:28:22,300 --> 01:28:26,630 >> Und in diesem Sinne, es ist zu gehen sagen, OK, wenn Ente dann bin ich gut. 1968 01:28:26,630 --> 01:28:30,770 Wenn Hamster, dann werde ich um jetzt schon sagen, nein, Benutzernamen 1969 01:28:30,770 --> 01:28:31,970 in der Datenbank existiert. 1970 01:28:31,970 --> 01:28:33,845 Aber in der Regel, sind Sie nicht werde eine Ente zu senden. 1971 01:28:33,845 --> 01:28:36,740 Du wirst senden etwas etwas schlauer. 1972 01:28:36,740 --> 01:28:40,320 Und was wir benutzen, ist XML. 1973 01:28:40,320 --> 01:28:42,690 Und in jüngster Zeit verwenden wir JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON ist einfach JavaScript Object Notation, die 1975 01:28:45,629 --> 01:28:47,670 ist im Grunde erhalten Sie ein gesamten JavaScript-Objekt. 1976 01:28:47,670 --> 01:28:50,820 Und Sie es in einer Datei, genau wie dass CS50-Objekt, das euch sah. 1977 01:28:50,820 --> 01:28:53,090 Sie steckte es in eine Datei und Sie senden über den Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Also in diesem Fall, würde ich einen JavaScript-Objekt 1979 01:28:55,850 --> 01:28:59,570 und nur sagen, Benutzer vorhanden ist, ja. 1980 01:28:59,570 --> 01:29:01,630 Oder Benutzer vorhanden ist, nein. 1981 01:29:01,630 --> 01:29:02,810 Und schicken Sie es zurück zu ihm. 1982 01:29:02,810 --> 01:29:03,830 Und warum JSON? 1983 01:29:03,830 --> 01:29:07,330 Da die Person, wer empfängt das ist 1984 01:29:07,330 --> 01:29:10,030 werde JavaScript verwenden um die Reaktion zu behandeln. 1985 01:29:10,030 --> 01:29:14,970 Und Javascript funktioniert so gut, weil es heißt JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Richtig? 1987 01:29:15,470 --> 01:29:19,660 Also ist er einfach anrufen können eine Funktion und erhalten dieses schöne Objekt aus der Antwort. 1988 01:29:19,660 --> 01:29:22,890 Und dann soll er denn wissen, ob dieser Benutzer in der Datenbank oder nicht. 1989 01:29:22,890 --> 01:29:25,230 >> So können Sie sehen, alle von ihm kommen zusammen in den Webserver, 1990 01:29:25,230 --> 01:29:28,450 und dann gibt es eine HTTP-Anfrage an und eine HTTP-Antwort und alles. 1991 01:29:28,450 --> 01:29:30,600 So stellen Sie sicher Jungs Diese AJAX-Aufruf zu verstehen 1992 01:29:30,600 --> 01:29:37,260 denn es hilft Ihnen alle verstehen, der Konzepte die wir sprechen. 1993 01:29:37,260 --> 01:29:40,260 >> Also hier ist ein Beispiel von AJAX mit jQuery. 1994 01:29:40,260 --> 01:29:42,130 Und hier müssen wir mit get JSON. 1995 01:29:42,130 --> 01:29:45,660 Also wir versuchen nicht, eine zu bekommen Bild einer Katze hier, oder eine Ente. 1996 01:29:45,660 --> 01:29:48,110 Wir versuchen, eine JSON-Datei zu erhalten. 1997 01:29:48,110 --> 01:29:51,184 Und dann warten, bis wir es fertig, Punkt gemacht. 1998 01:29:51,184 --> 01:29:52,850 Das heißt, ich warte auf die Antwort. 1999 01:29:52,850 --> 01:29:54,180 Es könnte eine Weile dauern. 2000 01:29:54,180 --> 01:29:56,360 Dann finden Sie einen kleinen Laden. 2001 01:29:56,360 --> 01:29:59,340 Wenn Sie, dass auf Ihrer Website tun. 2002 01:29:59,340 --> 01:30:01,440 So dot getan, und was dann passiert, wenn es fertig ist? 2003 01:30:01,440 --> 01:30:04,040 Sie passieren in anonymisierter Funktion, genauso wie wir vorher gesehen haben. 2004 01:30:04,040 --> 01:30:07,800 Da getan ist ein Ereignis, nur wie mit einer Maus oder was auch immer, 2005 01:30:07,800 --> 01:30:08,710 für jQuery. 2006 01:30:08,710 --> 01:30:13,710 So können Sie in dieser Funktion mit übergeben Daten, Text, Status und jqXHR. 2007 01:30:13,710 --> 01:30:15,790 Und im Grunde, das ist nur einige Variablen 2008 01:30:15,790 --> 01:30:22,160 dass Sie später verwenden können, müssen der Status der HTTP-Anforderung, 2009 01:30:22,160 --> 01:30:24,470 die Daten, die es geht um zu senden Ihnen zurück. 2010 01:30:24,470 --> 01:30:28,740 So können Sie später zu interpretieren und tun Sie etwas mit ihm sinnvoll. 2011 01:30:28,740 --> 01:30:30,240 Und wenn es scheitert, als könnte es scheitern? 2012 01:30:30,240 --> 01:30:33,780 Nun, wenn die HTTP-Anforderung gibt Sie sind ein 500 oder so ähnlich. 2013 01:30:33,780 --> 01:30:37,420 Dann, es geht um die Sie das sagen, Status, welche Art von Fehler, der war, 2014 01:30:37,420 --> 01:30:38,420 und alle möglichen Dinge. 2015 01:30:38,420 --> 01:30:40,630 Sie müssen sicherstellen, , beide Fälle zu behandeln, 2016 01:30:40,630 --> 01:30:42,770 sonst geht das Programm verrückt. 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN: Also ja, das ist genau was du gesehen hast auf dem letzten p-Set. 2018 01:30:45,820 --> 01:30:49,720 Die tatsächliche AJAX-Aufruf ist in der get JSON. 2019 01:30:49,720 --> 01:30:50,587 Das ist der Ruf. 2020 01:30:50,587 --> 01:30:52,920 Und dann ist dot getan wie es überprüft, ob es erfolgreich ist. 2021 01:30:52,920 --> 01:30:55,620 Wenn es erfolgreich ist, sollten Sie etwas mit den Daten zu tun. 2022 01:30:55,620 --> 01:30:59,290 Sie erhalten wieder aus, dass JSON-Anforderungsdaten. 2023 01:30:59,290 --> 01:31:00,600 Das ist, was du zurückkommst. 2024 01:31:00,600 --> 01:31:04,470 Also, wenn Sie daran denken, aus dem p-Set, viele von Ihnen waren wie Daten Halterung i 2025 01:31:04,470 --> 01:31:06,302 oder was auch immer, Punkt Verbindung oder Titel. 2026 01:31:06,302 --> 01:31:08,260 Was auch immer kommt zurück von diesem JSON, was auch immer 2027 01:31:08,260 --> 01:31:11,020 die Felder in diesem JSON-Objekt, das ist, was Sie wieder einlassen. 2028 01:31:11,020 --> 01:31:12,394 Daten ist, was Sie wieder einlassen. 2029 01:31:12,394 --> 01:31:15,510 Text-Status, nur etwas, lässt Sie wissen, was passiert ist. 2030 01:31:15,510 --> 01:31:20,570 Und dann die jqXHR, das ist einfach die jQuery XML HTTP-Anforderung. 2031 01:31:20,570 --> 01:31:21,990 Das ist genau wie ein Objekt. 2032 01:31:21,990 --> 01:31:23,932 Und dann scheitern, wie die Gabe. 2033 01:31:23,932 --> 01:31:27,140 GABE: In unserem kleinen Beispiel abc123 nur um zu überprüfen, ob das in der Datenbank 2034 01:31:27,140 --> 01:31:32,260 oder nicht, die Daten würden etwas, das Sie tun würde, wenn die Datenpunktbenutzernamen existiert, 2035 01:31:32,260 --> 01:31:37,720 das ist, was Ihre PHP für generierte Sie, wenn Datenpunktbenutzernamen existiert, 2036 01:31:37,720 --> 01:31:40,880 Ich werde zu warnen, Benutzer Namen existiert bereits. 2037 01:31:40,880 --> 01:31:44,300 Else, ich bin gerade dabei, die lassen Benutzer gehen Sie das Formular ausfüllen. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, Sicherheit, cool. 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN: Soll ich? 2041 01:31:52,060 --> 01:31:54,500 >> GABE: Ich mag diese. 2042 01:31:54,500 --> 01:31:57,680 Also etwas, das bekannt vorkommt. 2043 01:31:57,680 --> 01:31:59,750 Wir sind fast fertig. 2044 01:31:59,750 --> 01:32:02,670 So ist dies nur das Beispiel Sie Kerle sah in der Klasse. 2045 01:32:02,670 --> 01:32:04,860 Sie wurden hier mit argv1. 2046 01:32:04,860 --> 01:32:06,460 Das ist wie ein Befehlszeilenargument. 2047 01:32:06,460 --> 01:32:09,270 Und wir mem Kopieren dass in einen Puffer der Größe 12. 2048 01:32:09,270 --> 01:32:12,560 Was ist das Problem? 2049 01:32:12,560 --> 01:32:13,660 Pufferüberlauf! 2050 01:32:13,660 --> 01:32:15,400 Weil wir ein Puffer der Größe 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 könnte eine Größe von zwei Milliarden. 2052 01:32:18,400 --> 01:32:19,960 Wir übernehmen keine Grenzkontrolle zu tun. 2053 01:32:19,960 --> 01:32:24,970 So könnten wir eine Menge Speicher kopieren. 2054 01:32:24,970 --> 01:32:28,630 Und wir werden vor allem sein schlecht darüber. 2055 01:32:28,630 --> 01:32:32,600 Was können wir tun, das ist, sehr, sehr in diesem Fall das? 2056 01:32:32,600 --> 01:32:33,278 Ja? 2057 01:32:33,278 --> 01:32:36,528 ZIELGRUPPE: Ein Teil der zwei Milliarden Dinge enthält ausführbaren Code, die zurück 2058 01:32:36,528 --> 01:32:38,127 [Unverständlich]. 2059 01:32:38,127 --> 01:32:38,710 GABE: Genau. 2060 01:32:38,710 --> 01:32:41,110 Also das ist die Art von Sache, die Menschen nutzen 2061 01:32:41,110 --> 01:32:43,344 ein iPhone Jailbreak, zum Beispiel. 2062 01:32:43,344 --> 01:32:44,260 Also diese Art der Sache. 2063 01:32:44,260 --> 01:32:48,610 Da Sie nur das Gerät zu machen einen Code, den Sie gerne ausführen. 2064 01:32:48,610 --> 01:32:50,247 Das Update, so dass die Lösung ist einfach. 2065 01:32:50,247 --> 01:32:51,330 Schaut euch einfach mal für den Rahmen. 2066 01:32:51,330 --> 01:32:53,455 Sie checken für null, weil wir prüfen immer null 2067 01:32:53,455 --> 01:32:54,940 wenn wir mit Streichern zu tun haben. 2068 01:32:54,940 --> 01:32:57,840 Und dann nehmen Sie die Stringlänge vor. 2069 01:32:57,840 --> 01:33:00,150 Und wenn die Zeichenfolge Länge ist eine gültige Zeichenfolge 2070 01:33:00,150 --> 01:33:03,700 Länge, die innerhalb von 0 und 12, dann sind wir gut. 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN: Wenn Sie nicht zum prüfen null, ganz schnell, was passieren wird? 2072 01:33:07,144 --> 01:33:07,810 Es wird Fehler seg. 2073 01:33:07,810 --> 01:33:10,850 Warum wird es SEG Fehler? 2074 01:33:10,850 --> 01:33:12,510 Weil Sie anrufen strlen auf null. 2075 01:33:12,510 --> 01:33:13,010 GABE: Ja. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Wahr oder falsch, mit einer Kennwort ist eine gute Idee. 2078 01:33:19,630 --> 01:33:20,430 >> ZIELGRUPPE: False. 2079 01:33:20,430 --> 01:33:21,150 >> GABE: False. 2080 01:33:21,150 --> 01:33:23,870 Verwenden Sie viele Passwörter, und große, lange. 2081 01:33:23,870 --> 01:33:26,050 Padlock icons sorgen für Sicherheit. 2082 01:33:26,050 --> 01:33:27,080 >> ZIELGRUPPE: False. 2083 01:33:27,080 --> 01:33:27,749 >> GABE: False. 2084 01:33:27,749 --> 01:33:28,790 Es hat nichts zu bedeuten. 2085 01:33:28,790 --> 01:33:30,480 Es ist nur ein Symbol. 2086 01:33:30,480 --> 01:33:32,824 SSL schützt vor ein Mann in der Mitte anzugreifen. 2087 01:33:32,824 --> 01:33:33,490 ZIELGRUPPE: False. 2088 01:33:33,490 --> 01:33:34,110 GABE: False. 2089 01:33:34,110 --> 01:33:35,355 OK, so dass alle, die falsch sind. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Nizza. 2092 01:33:39,490 --> 01:33:40,220 [Unverständlich] 2093 01:33:40,220 --> 01:33:42,500 Willst du darüber reden? 2094 01:33:42,500 --> 01:33:43,259 Jetzt bist du dran. 2095 01:33:43,259 --> 01:33:45,050 DAVIN: Arten von Angriffen, Mann in der Mitte. 2096 01:33:45,050 --> 01:33:47,134 Was ist ein Mann in der Middle-Angriff? 2097 01:33:47,134 --> 01:33:48,050 ZIELGRUPPE: [unverständlich]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN: Wenn Sie eine HTTP senden Wunsch konnten sie dies tun, nicht wahr? 2100 01:33:54,020 --> 01:33:57,890 Aber wenn Sie das Versenden von HTTPS, sie wird wahrscheinlich nicht in der Lage, dies zu tun. 2101 01:33:57,890 --> 01:33:59,952 Es gibt viele Punkte entlang Ihrer Verbindung. 2102 01:33:59,952 --> 01:34:00,660 Sie haben Routern. 2103 01:34:00,660 --> 01:34:01,746 Sie müssen DNS-Server. 2104 01:34:01,746 --> 01:34:04,120 Wenn jemand in der Lage, körperlich sehen, was Sie senden, 2105 01:34:04,120 --> 01:34:06,140 so jemand in der Lage, ist tatsächlich zwischen Ihnen zu bekommen, 2106 01:34:06,140 --> 01:34:08,840 der Client und der Server, und in der Lage zu sehen, was Sie senden, 2107 01:34:08,840 --> 01:34:10,298 dies ist ein Mann in der Mitte anzugreifen. 2108 01:34:10,298 --> 01:34:14,287 Also, um zu sehen, was Sie versuchen, von zu bekommen sind der Server, oder in der Lage ist schlimmer see--, 2109 01:34:14,287 --> 01:34:16,620 Sie könnten in der Lage sein zu sehen, Cookies oder so ähnlich. 2110 01:34:16,620 --> 01:34:19,290 >> So zum Beispiel, wenn Sie nicht mit SSL, er 2111 01:34:19,290 --> 01:34:21,900 vielleicht in der Lage sein zu sehen, Ihre Session-ID-Cookies. 2112 01:34:21,900 --> 01:34:25,460 Und dies wird als Session Hijacking weil er Ihre ID-Cookies sieht, 2113 01:34:25,460 --> 01:34:28,317 und dann ist er in der Lage zu gehen, dass Website und so tun, als Sie sein. 2114 01:34:28,317 --> 01:34:31,150 Denn genau wie in PHP, erinnern wenn wir Sie angemeldet sind, was sollen wir tun? 2115 01:34:31,150 --> 01:34:33,340 Wir setzen Session-ID gleich ID. 2116 01:34:33,340 --> 01:34:34,810 So dass Sie identifizieren. 2117 01:34:34,810 --> 01:34:38,300 Deshalb sollten Sie Ihr Portfolio sehen können und nicht alle anderen Portfolio. 2118 01:34:38,300 --> 01:34:42,320 >> Nun, wenn ich mich in der Lage, das Cookie zu erhalten, dann kann ich auf dieser Seite einloggen. 2119 01:34:42,320 --> 01:34:45,380 Und dann kann ich nur sehen, Ihr Material und beginnen Kauf und Verkauf von Sachen. 2120 01:34:45,380 --> 01:34:46,800 Also das ist, Session-Hijacking. 2121 01:34:46,800 --> 01:34:50,810 Aber Sie sollten nicht in der Lage, so dass Sie zu-- sein können die Menschen in der Mitte Angriff nutzen 2122 01:34:50,810 --> 01:34:52,290 auch wenn sie unter Verwendung von SSL. 2123 01:34:52,290 --> 01:34:53,520 Aber Sie sollten nicht in der Lage zu sein. 2124 01:34:53,520 --> 01:34:56,580 Wenn sie unter Verwendung von SSL, Sie können nicht Sitzung entführen. 2125 01:34:56,580 --> 01:34:58,927 Warum? 2126 01:34:58,927 --> 01:35:01,135 Denn es ist alles verschlüsselt, oder? wenn es verschlüsselt ist, 2127 01:35:01,135 --> 01:35:03,509 und ich bin immer noch ein Mann in die Mitte, ich bekomme immer noch Ihre Daten. 2128 01:35:03,509 --> 01:35:04,279 Das ist in Ordnung. 2129 01:35:04,279 --> 01:35:05,070 Aber es ist verschlüsselt. 2130 01:35:05,070 --> 01:35:07,750 So kann ich nicht wirklich nutzen. 2131 01:35:07,750 --> 01:35:09,840 Also das ist zwei. 2132 01:35:09,840 --> 01:35:11,544 >> Sehr schnell, Cross-Site Request Forgery. 2133 01:35:11,544 --> 01:35:13,960 Das ist nur, ob es eine Verbindung dieser Zusammenhang etwas tut, 2134 01:35:13,960 --> 01:35:14,890 Sie glaube nicht, dass es tun sollten. 2135 01:35:14,890 --> 01:35:18,150 So zum Beispiel, wenn der Link war gehen, Aktien zu kaufen oder zu verkaufen, Aktien, 2136 01:35:18,150 --> 01:35:19,360 und man wusste nicht, dass. 2137 01:35:19,360 --> 01:35:22,040 Sie klickte auf den Link, schickte eine Anfrage, gekauft 2138 01:35:22,040 --> 01:35:24,240 oder etwas, das verkauft Sie wollte nicht zu tun. 2139 01:35:24,240 --> 01:35:25,120 Das ist das. 2140 01:35:25,120 --> 01:35:30,720 >> Cross Site Scripting, so hier, übergeben Sie in über Variable q, 2141 01:35:30,720 --> 01:35:33,510 setzen, anstatt in einer Art der Wert ist, ist vielleicht q wie ein Name. 2142 01:35:33,510 --> 01:35:36,560 Anstatt also vorbei q equals Davin oder so ähnlich, 2143 01:35:36,560 --> 01:35:38,740 wenn Sie nicht mit HTML Sonderzeichen, wenn Sie 2144 01:35:38,740 --> 01:35:43,100 nicht entgehen diese, um sicherzustellen, es ist OK, dann könnte ich in anstatt übergeben, 2145 01:35:43,100 --> 01:35:46,910 sagen wir mal, hier ich sage, Druck oder so ähnlich, 2146 01:35:46,910 --> 01:35:51,070 dann könnte ich hier ein Skript Aufruf übergeben. 2147 01:35:51,070 --> 01:35:53,140 >> Also, statt der gerade erst eine variable, 2148 01:35:53,140 --> 01:35:54,960 Ich würde dann dieses Skript Aufruf. 2149 01:35:54,960 --> 01:35:57,065 Also innerhalb dieses Skript rufen, was tut sie? 2150 01:35:57,065 --> 01:36:00,190 Document Punktstelle, das wird ändern Sie den Speicherort des Dokuments. 2151 01:36:00,190 --> 01:36:02,290 Also werde ich umleiten woanders. 2152 01:36:02,290 --> 01:36:08,170 Es heißt Bösewicht in Dieses Beispiel, sehr gut. 2153 01:36:08,170 --> 01:36:10,536 Konnte nicht von dem Wort denken. 2154 01:36:10,536 --> 01:36:12,410 Und dann, was noch Noch schlimmer ist, dass ich gehe 2155 01:36:12,410 --> 01:36:16,832 um dann Cookie, das einige ist variable Ich habe auf dieser Website. 2156 01:36:16,832 --> 01:36:19,040 Ich werde es gleich eingestellt zum Dokument dot Cookie. 2157 01:36:19,040 --> 01:36:20,660 Daher werde ich Sie Ihre Cookie zu stehlen. 2158 01:36:20,660 --> 01:36:22,951 Und ich werde umleiten einige Informationen zu einer Website 2159 01:36:22,951 --> 01:36:25,120 dass Sie nicht zugreifen. 2160 01:36:25,120 --> 01:36:29,250 Und das alles geschieht, weil Sie nicht entkommen, was Sie gesehen haben. 2161 01:36:29,250 --> 01:36:29,910 Ja? 2162 01:36:29,910 --> 01:36:32,160 >> ZIELGRUPPE: Also, nur um machen, dass klar ist, ist es 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com dass ist anfällig für diese. 2164 01:36:37,550 --> 01:36:39,300 Damit die Verbindung kann erscheinen Seite geschaltet. 2165 01:36:39,300 --> 01:36:42,200 Wenn jemand auf sie, geht an vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Sie haben ein Cookie an vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Nehmen wir an, ist Facebook verletzlich, so facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Sie haben Ihre Facebook-Cookie. 2169 01:36:48,310 --> 01:36:50,925 Was dies tut, sind Sie werde facebook.com, 2170 01:36:50,925 --> 01:36:53,990 es ist sofort umgeleitet Sie badguy.com, 2171 01:36:53,990 --> 01:36:57,182 aber einschließlich Ihrer Cookie-Informationen. 2172 01:36:57,182 --> 01:36:59,310 Also ist es eine schnelle Weiterleitung, aber Ihr Facebook-Cookie 2173 01:36:59,310 --> 01:37:02,572 wird mit dieser Weiterleitung enthalten, und das ist, wie sie [unverständlich]. 2174 01:37:02,572 --> 01:37:04,280 GABE: Ja, es gibt einige sehr gemeine Dinge 2175 01:37:04,280 --> 01:37:06,070 dass die Menschen tun können, wenn es dies. 2176 01:37:06,070 --> 01:37:09,190 Wenn beispielsweise Face erlaubt jeder, Ihren Benutzernamen zu ändern, 2177 01:37:09,190 --> 01:37:11,680 und sie haben nicht zu tun Plausibilitätsprüfungen, so dass Sie 2178 01:37:11,680 --> 01:37:16,810 könnte einen JavaScript Sache Einsatz, ändert sich das Bild an einen Hamster. 2179 01:37:16,810 --> 01:37:22,590 Und fügt den gleichen JavaScript in allen, die Ihre Seitenaufrufe. 2180 01:37:22,590 --> 01:37:26,400 Also alle, die Ihre Seitenaufrufe hat die gleiche Sache in den Benutzernamen. 2181 01:37:26,400 --> 01:37:30,104 Und weil es ein Virus, es breitet sich exponentiell. 2182 01:37:30,104 --> 01:37:32,270 DAVIN: Wir werden die letzte überspringen ein, und dann sind wir fertig. 2183 01:37:32,270 --> 01:37:34,120 Also das ist nur ein weiteres Beispiel. 2184 01:37:34,120 --> 01:37:36,120 Also das ist sie nicht Flucht ihre SQL-Tabelle. 2185 01:37:36,120 --> 01:37:37,090 So können Sie sie löschen. 2186 01:37:37,090 --> 01:37:38,805 So können Sie die Dinge entfliehen möchten. 2187 01:37:38,805 --> 01:37:44,010 Das war das vorherige Beispiel mit dem Cross Site Scripting. 2188 01:37:44,010 --> 01:37:45,430 Es tut uns leid wir liefen ein wenig spät. 2189 01:37:45,430 --> 01:37:46,870 Morgen, sorry! 2190 01:37:46,870 --> 01:37:48,560 Morgen haben wir Bürozeiten. 2191 01:37:48,560 --> 01:37:50,870 So Bürozeiten in Cabbot 8.00 bis 11.00 Uhr. 2192 01:37:50,870 --> 01:37:55,240 Die Öffnungszeiten sind ausschließlich für Quizfragen. 2193 01:37:55,240 --> 01:37:56,587