1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [Musikwiedergabe] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID MALAN: Dies ist CS50 und Dies ist der Beginn der achten Woche. 5 00:00:13,350 --> 00:00:17,510 Und wir sind so aufgeregt, willkommen Rücken, große Überraschung, CS50 eigenen Ramon 6 00:00:17,510 --> 00:00:22,160 Galvan, eine steigende Senior, der gewesen ist die Ausgaben der letzten Monate 7 00:00:22,160 --> 00:00:26,190 Seit Juli in LA, in Hollywood, buchstäblich an einem brandneuen TV 8 00:00:26,190 --> 00:00:31,930 Show namens Colony, der Schöpfer von denen ist eigentlich ein Harvard Alaun sich. 9 00:00:31,930 --> 00:00:36,610 Und so sind wir sehr gespannt, das zu sehen Debüt auf der USA-Netzwerk im Januar dieses Jahres. 10 00:00:36,610 --> 00:00:40,370 So bleiben dafür gestimmt, und für mehr Ramon für den kommenden Wochen. 11 00:00:40,370 --> 00:00:42,550 >> Wissen jetzt, dass das Ende nahe ist. 12 00:00:42,550 --> 00:00:47,400 Und was das bedeutet, ist, dass es nicht alle, dass viel von CS50 verlassen, traurig zu sagen. 13 00:00:47,400 --> 00:00:49,400 Wir haben nur drei Problem Sätze left-- es gibt 14 00:00:49,400 --> 00:00:52,510 Problem Set six-- die in ist Ihre Hände jetzt oder werden es bald sein, 15 00:00:52,510 --> 00:00:56,080 im Laufe dieses week-- soll überbrücken unsere Welten von der Kommandozeile aus, in dem 16 00:00:56,080 --> 00:00:59,450 wir haben mit die meiste Zeit verbracht C, und die Welt der Web-Programmierung. 17 00:00:59,450 --> 00:01:02,350 Nun, Sie werden eine Menge Ideen zu sehen von der Kommandozeile arbeiten geliehen, 18 00:01:02,350 --> 00:01:04,560 sondern auch eine Menge neuer und interessante Ideen 19 00:01:04,560 --> 00:01:07,929 , die auch gehen Germane für sein werden mobile Anwendungen und für Technik, 20 00:01:07,929 --> 00:01:10,470 allgemeiner, mit dem Sie Jungs sind alle vertraut heute 21 00:01:10,470 --> 00:01:12,090 auf Laptops und Handys und dergleichen. 22 00:01:12,090 --> 00:01:15,220 >> So werden Sie nicht umsetzen eine Web-Seite, oder eine Website- 23 00:01:15,220 --> 00:01:17,620 an sich, sondern eine tatsächliche Web-Server. 24 00:01:17,620 --> 00:01:21,590 Sie werden den Rest der Web-Server zu schreiben in C, deren Zweck im Leben geschrieben 25 00:01:21,590 --> 00:01:25,410 ist die HTTP-Anfragen, diese zu empfangen virtuelle Umschläge wir reden immer 26 00:01:25,410 --> 00:01:29,780 zu, und tatsächlich zu reagieren entweder mit einige statische content-- wie ein Punkt HTML 27 00:01:29,780 --> 00:01:32,310 Datei oder ein Punkt JPEG oder jede andere Anzahl von Dateien, 28 00:01:32,310 --> 00:01:37,070 oder sogar eine PHP-Datei, wodurch Ihre Web- Server wird, dass PHP interpretieren 29 00:01:37,070 --> 00:01:38,332 Code und ausspucken die Ergebnisse. 30 00:01:38,332 --> 00:01:40,540 Jetzt haben wir Ihnen zur Verfügung gestellt einiges an Rahmen 31 00:01:40,540 --> 00:01:43,100 für es-- Tat die Verteilung Code für Problem 32 00:01:43,100 --> 00:01:47,496 Set von sechs ist mehr als 1000 Zeilen lang, ein Viele von denen Kommentare, fair-- zu sein 33 00:01:47,496 --> 00:01:49,370 aber das ist wirklich bedeutete, um eine Chance sein 34 00:01:49,370 --> 00:01:52,570 auf Ihre Hände schmutzig Tauch in einer ziemlich großen Projekt 35 00:01:52,570 --> 00:01:55,570 dass wir sehr spezifisch geschnitzt aus Stücke für Sie, 36 00:01:55,570 --> 00:01:59,046 so dass wirklich beim Beenden von CS50 und geben Sie die reale Welt der Programmierung 37 00:01:59,046 --> 00:02:00,920 und wollen plantschen in eine beliebige Anzahl von Projekten, 38 00:02:00,920 --> 00:02:03,253 Sie werden viel mehr haben Komfort das Herunterladen einige Quelle 39 00:02:03,253 --> 00:02:05,020 Code, einige Open-Source- Projekt auf dem Web, 40 00:02:05,020 --> 00:02:08,174 und Tauchen in und bei der Änderungen, die Sie für richtig halten. 41 00:02:08,174 --> 00:02:11,340 Problem stellte sieben wird sich über sein oder kreiere deine eigenen Web-basierte Anwendung 42 00:02:11,340 --> 00:02:14,140 das braucht dynamische Eingabe und produziert dynamische Ausgabe in Form 43 00:02:14,140 --> 00:02:16,920 eines etrade.com artigen Website. 44 00:02:16,920 --> 00:02:20,800 Und Problem stellte acht wird noch konzentrieren sich auf eine andere Sprache wie JavaScript bekannt. 45 00:02:20,800 --> 00:02:24,170 >> Inzwischen hat die endgültige Projekt ist am Horizont. 46 00:02:24,170 --> 00:02:26,800 Die so genannte Pre-Vorschlag ist auf eine Woche von heute. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- pro die Spezifikation, die auf CS50 ist website-- ist 48 00:02:29,930 --> 00:02:33,260 ist eine ziemlich lässige Gelegenheit für Sie ziemlich knappe E-Mail senden 49 00:02:33,260 --> 00:02:35,170 auf die Lehre Lands nur um ihn zu benachrichtigen 50 00:02:35,170 --> 00:02:38,250 oder ihr von dem, was Sie denken, um benutzen ihn oder sie als Resonanzboden. 51 00:02:38,250 --> 00:02:40,980 Und haben eine geistige Gesundheit check-- ob du denkst 52 00:02:40,980 --> 00:02:43,210 über zu Abbeißen viel oder vielleicht zu wenig, 53 00:02:43,210 --> 00:02:46,480 oder vielleicht haben Sie keine Ahnung haben, und wollen in ein Gespräch zu verwickeln. 54 00:02:46,480 --> 00:02:48,480 >> Danach ist ein Vorschlag und Lagebericht, 55 00:02:48,480 --> 00:02:51,860 die sogenannte CS50 hackathon hier Cambridge für Harvard und Yale Studenten 56 00:02:51,860 --> 00:02:52,362 gleichermaßen. 57 00:02:52,362 --> 00:02:54,320 Ist das endgültige Projekt Implementierung ist dann fällig. 58 00:02:54,320 --> 00:02:59,290 Und dann ein CS50 Messe hier in Cambridge, sowie ein weiteres in New Haven. 59 00:02:59,290 --> 00:03:02,500 So den Vorschlag, einen Blick auf der Website für die dieser Angaben. 60 00:03:02,500 --> 00:03:06,530 >> Aber spannender ist auch ein Gelegenheit, Ihre Hände schmutzig zu machen, 61 00:03:06,530 --> 00:03:09,350 und Sinne öffnen, um eine ganze Bündel von Themen und Tools 62 00:03:09,350 --> 00:03:12,920 und Techniken, die den Charakter von Hilfs In den Kernlehrplan des Kurses, 63 00:03:12,920 --> 00:03:14,810 aber dennoch zusammen. 64 00:03:14,810 --> 00:03:18,400 Und auch wunderbar Trittsteine ​​zu tut wirklich cool, dass Abschlussarbeiten 65 00:03:18,400 --> 00:03:22,020 gehen weit über Material, das wir behandelt haben formal Problem setzt oder in der Vorlesung. 66 00:03:22,020 --> 00:03:24,446 So gehen Sie zu CS50-Website für die ganze Liste von Seminaren. 67 00:03:24,446 --> 00:03:26,070 Wenn Sie noch nicht wissen zu registrieren, ist das in Ordnung. 68 00:03:26,070 --> 00:03:29,860 Gehen Sie vor und melden Sie sich noch und wir werden Follow-up mit einer Live-Streaming-Link, 69 00:03:29,860 --> 00:03:31,844 Tag und Uhrzeit sind auf der Website. 70 00:03:31,844 --> 00:03:33,760 Und alles wird aufgezeichnet und online zu stellen 71 00:03:33,760 --> 00:03:35,800 wenn Sie nicht machen das bestimmten Tagen und Zeiten. 72 00:03:35,800 --> 00:03:39,380 >> , Was vor uns liegt thereafter-- gut, Selbstverständlich gibt es die CS50 Hackathon. 73 00:03:39,380 --> 00:03:43,560 Dieses Foto, Rückruf, von Woche Null angenommen rund 04.00 Uhr an einem Abend in den vergangenen Jahren. 74 00:03:43,560 --> 00:03:46,900 Der CS50 fair, wieder was findet in beiden Städten zu nehmen. 75 00:03:46,900 --> 00:03:49,760 Und dann, um die Pflanze Samen, auch wenn wir noch 76 00:03:49,760 --> 00:03:54,080 haben einen Monat plus links Semester, wenn Sie möchten, dass CS50 eigenen Lehr beitreten 77 00:03:54,080 --> 00:03:56,770 Personal und Sie starten möchten darüber nachzudenken, zu einem CA, 78 00:03:56,770 --> 00:03:59,550 oder Lehr Kerl, weiß, dass Wir beginnen im Gespräch mehr darüber 79 00:03:59,550 --> 00:04:00,630 noch in diesem Semester. 80 00:04:00,630 --> 00:04:03,470 Aber hier abgebildet ist die meisten der diesjährigen Team. 81 00:04:03,470 --> 00:04:06,950 >> Und so PHP-- und ich war so traurig, letzte Woche, dass [? Allyse?] Kindly 82 00:04:06,950 --> 00:04:09,370 ging an den Anstrengungen zu bekommen uns diese wundervollen Requisiten 83 00:04:09,370 --> 00:04:11,720 dass ich nicht am Ende mit, so dass es wirklich nur sah irgendwie dumm 84 00:04:11,720 --> 00:04:15,160 dass wir eine Schaufel sitzen hier alle Tag am vergangenen Mittwoch, und ein wenig Löffel. 85 00:04:15,160 --> 00:04:17,709 Aber dies war mein metaphorische Weg, zu versuchen, um zu malen 86 00:04:17,709 --> 00:04:21,600 das Bild der Grund, warum wir den Übergang von C in einer Sprache wie PHP. 87 00:04:21,600 --> 00:04:25,480 Und dasselbe kann von jeder sagen Anzahl der languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 oder Bündeln von Andere-- aber während in C, zum Beispiel ein Programm schreiben, in C 89 00:04:31,270 --> 00:04:34,050 kann typischerweise aussehen nehmen einen Löffel wie dieser 90 00:04:34,050 --> 00:04:36,770 und Graben Sie ein Loch in die Boden, in den Sand oder Schmutz. 91 00:04:36,770 --> 00:04:39,770 PHP erlaubt Ihnen, viel, größere Bissen aus dem Problem, 92 00:04:39,770 --> 00:04:42,842 Schreiben weit weniger Code mit einem viel kleineren Werkzeug, 93 00:04:42,842 --> 00:04:45,050 denn es gibt so viel mehr Funktionalität in gesetzt. 94 00:04:45,050 --> 00:04:47,633 >> Nun, wenn wir waren wirklich dramatisch, wir würden etwas zu schaufeln haben 95 00:04:47,633 --> 00:04:48,760 hier, aber so sei es. 96 00:04:48,760 --> 00:04:51,370 Dessen der andere Metapher kamen wir auf 97 00:04:51,370 --> 00:04:53,770 Selbstverständlich ist, könnten Sie so etwas wie einem Schraubenschlüssel 98 00:04:53,770 --> 00:04:56,610 in so etwas wie einen Nagel einschlägt. 99 00:04:56,610 --> 00:04:58,980 Aber natürlich die rechte Werkzeug zu benutzen wird 100 00:04:58,980 --> 00:05:01,360 nicht so sehr die sein Sprache namens C-- 101 00:05:01,360 --> 00:05:03,590 und jetzt bin ich genervt [? Sanders,?] Wahrscheinlich, 102 00:05:03,590 --> 00:05:07,890 wir, dass later-- fixieren, so das richtige Werkzeug, um häufig verwenden 103 00:05:07,890 --> 00:05:09,640 ist nicht zu sein, Diese unterste Ebene Werkzeug. 104 00:05:09,640 --> 00:05:13,720 Und in der Tat, ist nicht eine Sprache, die C die meisten von euch jemals zu verwenden, 105 00:05:13,720 --> 00:05:15,590 oder unbedingt nutzen sollte erneut. 106 00:05:15,590 --> 00:05:18,350 >> Und in der Tat, ein wenig secret-- das einzige Mal, 107 00:05:18,350 --> 00:05:23,160 Ich benutze C selbst ist ziemlich genau zwischen September und Dezember eines jeden fall 108 00:05:23,160 --> 00:05:23,870 Semester. 109 00:05:23,870 --> 00:05:25,790 Und das ist, weil wir verwenden Sie es als Chance 110 00:05:25,790 --> 00:05:27,852 um die Grundlagen zu lehren der Programmierung, 111 00:05:27,852 --> 00:05:29,810 und mit ihr Computer Wissenschaft Fundamentaldaten 112 00:05:29,810 --> 00:05:32,435 Strukturen, Algorithmen und like-- aber sehr schnell werden Sie 113 00:05:32,435 --> 00:05:35,010 jetzt sehen, dass der Syntax und die Ideen zugrunde liegenden C- 114 00:05:35,010 --> 00:05:37,530 sind so wunderbar bis hin zu modernen übertragbar 115 00:05:37,530 --> 00:05:41,130 höheren Sprachen, wie PHP und Python und Perl und Java 116 00:05:41,130 --> 00:05:46,750 und Objective-C- eigentlich nicht so sehr, Objective-C-, aber Swift, diese neueren 117 00:05:46,750 --> 00:05:50,010 Sprachen, die viele von Ihnen dann plantschen mit Ihnen Abschlussprojekt. 118 00:05:50,010 --> 00:05:55,070 >> So ohne weiteres lassen Sie uns wirklich Verwendung von PHP, um einige Probleme zu lösen. 119 00:05:55,070 --> 00:06:00,230 Daran erinnern, dass schon früh, letzte Woche, wir haben nur verwendet CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 Wir schrieben ein dinky kleine Programm dass gerade gesagt, "Hallo Welt." 121 00:06:02,990 --> 00:06:05,680 Und dann gespeichert Ich es in eine Datei namens hello.php. 122 00:06:05,680 --> 00:06:07,280 Und dann lief ich diesen Befehl. 123 00:06:07,280 --> 00:06:08,080 >> Und warum? 124 00:06:08,080 --> 00:06:09,900 In Englisch, was ist denn hier los? 125 00:06:09,900 --> 00:06:12,760 Was sollte ich tun, wenn Ich diesen Befehl lief? 126 00:06:12,760 --> 00:06:13,405 >> Ja? 127 00:06:13,405 --> 00:06:16,572 >> Publikum: Es gibt einige PHP-Funktion das liest, was in-- versteht, dass. 128 00:06:16,572 --> 00:06:19,696 DAVID MALAN: Gut, es gibt einige Funktion PHP-- und lassen Sie mich genauer zu sein, 129 00:06:19,696 --> 00:06:21,810 es gibt ein Programm namens PHP, auch bekannt als 130 00:06:21,810 --> 00:06:25,872 Ein Dolmetscher, die versteht, der Inhalt hello.php, 131 00:06:25,872 --> 00:06:27,830 und interpretiert es oben nach unten, von links nach rechts, 132 00:06:27,830 --> 00:06:29,590 und tut, was diese Befehle sagen. 133 00:06:29,590 --> 00:06:33,320 Die Befehle in hello.php natürlich Nur code-- Funktionen beziehen 134 00:06:33,320 --> 00:06:35,750 und Variablen und Schleifen und dergleichen, die wir uns 135 00:06:35,750 --> 00:06:37,460 haben angefangen zu schreiben in PHP. 136 00:06:37,460 --> 00:06:40,240 >> Aber im Gegensatz zu C, das ist eine kompilierte Sprache, 137 00:06:40,240 --> 00:06:42,810 PHP schreiben Sie einfach es, und führen Sie es. 138 00:06:42,810 --> 00:06:46,420 Sie überspringen diese Mittels Schritt des Umwandlung in Nullen und Einsen, 139 00:06:46,420 --> 00:06:47,790 und dann läuft es. 140 00:06:47,790 --> 00:06:50,510 Und so was ist eine Vorteil davon? 141 00:06:50,510 --> 00:06:52,690 Warum machen wir das Überspringen der Schritt? 142 00:06:52,690 --> 00:06:55,238 Warum moderneren Sprachen neigen dazu, diesen Schritt überspringen? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Was war der Nutzen? 145 00:07:01,220 --> 00:07:02,080 >> Oder einfach nur intuitiv? 146 00:07:02,080 --> 00:07:04,200 Auch wenn wir nicht haben vorher geschrieben viel PHP, 147 00:07:04,200 --> 00:07:07,210 was vorteilhaft zu nicht Kompilieren Sie Ihren Code denken Sie? 148 00:07:07,210 --> 00:07:08,520 Nein? 149 00:07:08,520 --> 00:07:09,610 Nicht zu begehen? 150 00:07:09,610 --> 00:07:11,350 Kopf kratzen? 151 00:07:11,350 --> 00:07:12,614 Ja. 152 00:07:12,614 --> 00:07:13,600 >> ZIELGRUPPE: Mehr Dynamik. 153 00:07:13,600 --> 00:07:14,683 >> DAVID MALAN: Mehr Dynamik? 154 00:07:14,683 --> 00:07:16,032 Was meinst du? 155 00:07:16,032 --> 00:07:17,000 >> ZIELGRUPPE: [unverständlich] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID MALAN: OK, gut, so in Abhängigkeit von der Eingabe, 158 00:07:22,390 --> 00:07:23,470 Sie müssen nicht, um es jedes Mal zu kompilieren. 159 00:07:23,470 --> 00:07:24,990 Und es ist wirklich so einfach wie dass-- was 160 00:07:24,990 --> 00:07:26,990 ist der Punkt, der Weiterbildung um Ihren Code zu kompilieren? 161 00:07:26,990 --> 00:07:29,480 Dies ist nur ein Schritt, der ist making-- dies erfordern, 162 00:07:29,480 --> 00:07:31,900 In den vergangenen Wochen, zweimal so viele Schritte 163 00:07:31,900 --> 00:07:33,820 wie das Starten Ihres Programms. 164 00:07:33,820 --> 00:07:36,940 Es ist sinnvoll gewesen, zu sehen, dass Sie sehen Sie einige Fehlermeldungen und so weiter, 165 00:07:36,940 --> 00:07:38,720 aber es ist immer noch nur eine lästige Schritt. 166 00:07:38,720 --> 00:07:41,810 >> Und so Programmierer realisiert im Laufe der Zeit, warum nicht wir 167 00:07:41,810 --> 00:07:45,327 Schreiben beginnen Sprachen, die nicht tun, müssen die ziemlich mechanischen Schritt 168 00:07:45,327 --> 00:07:47,160 so dass nur schreiben kann Ihr Code und führen Sie es. 169 00:07:47,160 --> 00:07:48,920 Aber was war der Preis dass wir sahen, den wir bezahlt 170 00:07:48,920 --> 00:07:50,910 letzte Woche, mit einem besonderen Beispiel? 171 00:07:50,910 --> 00:07:51,650 Ja? 172 00:07:51,650 --> 00:07:52,370 >> Geschwindigkeit. 173 00:07:52,370 --> 00:07:54,690 Also [? was ist?] Dolmetscher etwas langsamer, 174 00:07:54,690 --> 00:07:57,330 DASS in Nullen und Einsen sind schön und schnell für einen Computer 175 00:07:57,330 --> 00:08:00,070 zu verstehen, denn die Intel CPU, oder was immer es ist, 176 00:08:00,070 --> 00:08:03,070 nur versteht, was los ist auf mit jener Muster von Bits. 177 00:08:03,070 --> 00:08:05,370 Wohingegen der Dolmetscher ist ein Programm, das wirklich 178 00:08:05,370 --> 00:08:07,980 muss den ASCII-Quelle gelesen Code, den Sie geschrieben haben, 179 00:08:07,980 --> 00:08:12,700 und wandeln es, so zu sprechen, oder herausfinden, wie es wandelt schließlich 180 00:08:12,700 --> 00:08:13,525 in Nullen und Einsen. 181 00:08:13,525 --> 00:08:15,650 So dauert es nur ein wenig Bit eines Performance-Einbußen. 182 00:08:15,650 --> 00:08:16,858 Also ist es ein bisschen wie ein Kompromiss. 183 00:08:16,858 --> 00:08:21,570 Nun, wenn wir dies tun, hier, lass mich gehen Sie vor und tun ein Beispiel wie folgt. 184 00:08:21,570 --> 00:08:26,610 Wenn ich hier zu gehen, neue Datei, ich werde , dies erneut zu speichern ist hello.php. 185 00:08:26,610 --> 00:08:31,450 Und jetzt werde ich weitermachen und sagen: "Print Hallo Welt" - 186 00:08:31,450 --> 00:08:35,130 und daran erinnern, dass ich Druck verwenden, weiß ich nicht müssen Druck-F zu verwenden. Und jetzt hier unten, 187 00:08:35,130 --> 00:08:42,039 wenn ich PHP von hello.php tun, huh-- I nicht scheinen, um es zu interpretieren haben. 188 00:08:42,039 --> 00:08:43,412 Was hab ich falsch gemacht? 189 00:08:43,412 --> 00:08:44,710 >> Publikum: Die abgewinkelten Armbänder. 190 00:08:44,710 --> 00:08:47,015 >> DAVID MALAN: Ja, müssen Sie dass Winkel bis oben. 191 00:08:47,015 --> 00:08:49,390 Also, es ist irgendwie ärgerlich, aber Sie schnell daran gewöhnen. 192 00:08:49,390 --> 00:08:53,500 Wenn ich PHP-Code schreiben, ich in der Regel müssen Sie das Programm zu sagen, 193 00:08:53,500 --> 00:08:56,950 oder sagen Sie den Interpreter, hey PHP, hier kommt einige PHP-Code. 194 00:08:56,950 --> 00:09:00,440 Und dann für eine gute Maßnahme, würde ich schließen diese nicht mit diesem, sondern 195 00:09:00,440 --> 00:09:03,740 mit nur Fragezeichen Winkel Halterung, so dass nun hier unten, 196 00:09:03,740 --> 00:09:06,840 wenn ich dies wieder, jetzt Ich bekomme das gewünschte Ergebnis. 197 00:09:06,840 --> 00:09:09,820 >> Nun wollen wir tun eine leichte Optimierung, gerade so, dass man es bisher gesehen haben. 198 00:09:09,820 --> 00:09:14,040 Dies ist eine Art ärgerlich, dass ich müssen PHP Raum hello.php laufen, 199 00:09:14,040 --> 00:09:16,060 weil ich in der Vergangenheit konnte nur schreiben dot Schrägstrich 200 00:09:16,060 --> 00:09:17,560 Programmname, die ganz nett ist. 201 00:09:17,560 --> 00:09:19,420 Es ist irgendwie eine bessere Benutzererfahrung. 202 00:09:19,420 --> 00:09:24,160 >> So stellt sich heraus, dies zu tun in PHP mit dem following-- I 203 00:09:24,160 --> 00:09:28,780 können diese ziemlich kryptisch verwenden Beschwörungsformel an der Spitze hier, 204 00:09:28,780 --> 00:09:31,740 was ist in der Regel ein Shebang genannt, wobei es sich um eine scharfe Symbol, 205 00:09:31,740 --> 00:09:34,270 so zu sagen, dies ist ein Paukenschlag oder einem Ausrufezeichen. 206 00:09:34,270 --> 00:09:38,490 Und das ist jetzt der Pfad zu einem Programm auf einer typischen Linux-System, 207 00:09:38,490 --> 00:09:41,500 wird Umgebung oder env genannt. 208 00:09:41,500 --> 00:09:43,920 Und dies line-- lange Geschichte short-- Linie eine gerade 209 00:09:43,920 --> 00:09:48,710 sagt, hey Computer, finden Sie das PHP Dolmetscher für mich in der Umwelt, 210 00:09:48,710 --> 00:09:50,610 Finden Sie es in Ihrem Gedächtnis, so zu sprechen. 211 00:09:50,610 --> 00:09:54,130 >> Und was ist nun schön, ist dass, wenn ich hier unten gehen, 212 00:09:54,130 --> 00:09:57,750 Ich kann tun, slash dot hallo dot php, oder-- hmm. 213 00:09:57,750 --> 00:09:59,000 Zugriff verweigert. 214 00:09:59,000 --> 00:10:02,350 Nun, Sie werden noch mehr davon zu sehen mit Problem stellte sieben, wenn Sie 215 00:10:02,350 --> 00:10:04,060 nicht bereits haben, mit Berechtigungen. 216 00:10:04,060 --> 00:10:06,510 Es stellt sich heraus, dass ich um diesen Befehl auszuführen 217 00:10:06,510 --> 00:10:10,779 genannt [? Chamod?] für den Wandel mode-- ein Plus x hello.php. 218 00:10:10,779 --> 00:10:13,820 Ich brauche [unverständlich] dies eine zusätzliche Schritt, der erzählt wird mein Computer, 219 00:10:13,820 --> 00:10:16,400 machen hello.php ausführbar. 220 00:10:16,400 --> 00:10:21,310 Und jetzt sehen, was happens-- dot Slash hello.php, es gerade läuft. 221 00:10:21,310 --> 00:10:23,310 Ich brauche nicht zu spezifizieren der Dolmetscher mehr. 222 00:10:23,310 --> 00:10:26,680 Und ich kann es noch schöner, immer noch, wenn ich dieses Ding umzubenennen. 223 00:10:26,680 --> 00:10:30,570 Wenn ich mich bewege hello.php nur Hello-- so feststellen, oben links, 224 00:10:30,570 --> 00:10:32,860 den Namen des Programms ist ja nun gerade hallo. 225 00:10:32,860 --> 00:10:37,300 Jetzt kann ich es aussehen wie ein C-Programm, obwohl es in PHP-- geschrieben 226 00:10:37,300 --> 00:10:39,210 oder offen gesagt eine beliebige Anzahl von anderen Sprachen. 227 00:10:39,210 --> 00:10:41,480 >> So Randverbesserung, keinen funktionalen Unterschied. 228 00:10:41,480 --> 00:10:44,460 Aber es ist nur ein wenig Neugier Jetzt, so dass Sie Programme schreiben 229 00:10:44,460 --> 00:10:48,989 in jeder Sprache, und der Benutzer nicht der Fall ist müssen wissen oder ignorieren, was diese sind. 230 00:10:48,989 --> 00:10:51,030 Nun, lassen Sie uns ein mehr überzeugendes Beispiel jetzt 231 00:10:51,030 --> 00:10:52,850 dass ich peitschte im Voraus. 232 00:10:52,850 --> 00:10:54,955 Und dies wird als quote.php. 233 00:10:54,955 --> 00:10:56,740 Und es ist online verfügbar. 234 00:10:56,740 --> 00:11:00,299 Und beachten Sie, dass es ziemlich short-- aber es ist ein Kommandozeilen-Programm, das ist 235 00:11:00,299 --> 00:11:02,840 gehen nachschlagen Aktienkurse für mich, was eigentlich los ist 236 00:11:02,840 --> 00:11:04,230 Germane zu sein, um Problem stellte sieben. 237 00:11:04,230 --> 00:11:05,396 >> Also mal sehen, was ich tue. 238 00:11:05,396 --> 00:11:08,640 Ganz oben Ich habe die offene Klammer Fragezeichen PHP. 239 00:11:08,640 --> 00:11:13,372 Dann habe ich diese Linie habe, wobei ich eine Datei namens functions.php-- erfordern 240 00:11:13,372 --> 00:11:15,080 wir werden sehen, mehr dazu in einem Bit, 241 00:11:15,080 --> 00:11:17,340 aber das ist, wie die C Version von scharfen gehören, 242 00:11:17,340 --> 00:11:19,090 wo willst du hin gehen schließen Sie eine andere Datei. 243 00:11:19,090 --> 00:11:23,720 PHP nennt es erforderlich, auch wenn es hat auch eine Include-Funktion. 244 00:11:23,720 --> 00:11:26,861 Und es stellt sich heraus, dass function.php ist nur etwas, schrieb ich vor der Klasse. 245 00:11:26,861 --> 00:11:29,860 Ich habe es im gleichen Verzeichnis, weil Ich wollte ausklammern einige Code 246 00:11:29,860 --> 00:11:31,800 dass wir möchten Sie vielleicht an anderer Stelle zu verwenden. 247 00:11:31,800 --> 00:11:34,560 >> In der Zwischenzeit können Sie wahrscheinlich folgern, was hier vor sich geht. 248 00:11:34,560 --> 00:11:39,200 Dies ist aus C-, aber ein wenig anders Was meine ich mit eine ordnungsgemäße Nutzung? 249 00:11:39,200 --> 00:11:41,180 Übersetzen Sie diese technisch. 250 00:11:41,180 --> 00:11:45,950 Unter welchen Umständen ich bin Beenden des Programms, oder Verlassen? 251 00:11:45,950 --> 00:11:47,074 Ja? 252 00:11:47,074 --> 00:11:47,990 >> Publikum: Wenn Sie nicht haben, zwei Kommandozeilenargumente. 253 00:11:47,990 --> 00:11:49,480 >> DAVID MALAN: Wenn ich nicht um Zeilenargumente zu befehlen. 254 00:11:49,480 --> 00:11:52,396 Und denken Sie daran, dass einer von denen, Argumente den Namen des Programms selbst. 255 00:11:52,396 --> 00:11:55,340 Und der zweite sein wird, ein anderes Wort I-Typ nach der Aufforderung. 256 00:11:55,340 --> 00:11:57,460 So wie C, dies ist meine Art Kontroll-, 257 00:11:57,460 --> 00:12:00,022 hat der Benutzer zusammenarbeiten und starten Sie das Programm, wie ich gedacht? 258 00:12:00,022 --> 00:12:01,730 Nun, es ist etwas, ein bisschen anders 259 00:12:01,730 --> 00:12:04,020 mit C- wir zunächst haben diese Dollar-Zeichen, 260 00:12:04,020 --> 00:12:07,710 und was ein Dollar- melden Sie bezeichnen in PHP? 261 00:12:07,710 --> 00:12:08,440 Nur eine Variable. 262 00:12:08,440 --> 00:12:11,731 Das ist allen-- nur eine Variable, gefolgt von Was immer Sie wollen, um tatsächlich nennen. 263 00:12:11,731 --> 00:12:14,000 Beachten Sie, gibt es etwas, fehlt in meinem PHP-Programm, 264 00:12:14,000 --> 00:12:18,210 so wie es fehlte letzten Woche, gegenüber C, das ist was? 265 00:12:18,210 --> 00:12:21,620 >> A-Typen, aber auch etwas anderes. 266 00:12:21,620 --> 00:12:26,409 Es gibt keinen etwas function-- Hauptfunktion. 267 00:12:26,409 --> 00:12:27,450 Es gibt keine Hauptfunktion. 268 00:12:27,450 --> 00:12:29,680 Sie starten nur schriftlich Ihr Code, ohne 269 00:12:29,680 --> 00:12:32,790 , über eine ziemlich willkürliche Sorgen Konvention der Namensgebung einige Standard 270 00:12:32,790 --> 00:12:33,880 Funktion main. 271 00:12:33,880 --> 00:12:36,720 So arg C ist einfach richtig eine globale Variable 272 00:12:36,720 --> 00:12:39,049 dass der Dolmetscher macht, mich zur Verfügung. 273 00:12:39,049 --> 00:12:40,090 Nun, das ist interessant. 274 00:12:40,090 --> 00:12:41,140 So schauen Zeug. 275 00:12:41,140 --> 00:12:43,370 Dollar sign Aktien werden an der links, das ist meine Variable. 276 00:12:43,370 --> 00:12:45,120 Auf der rechten Seite, gibt es offenbar 277 00:12:45,120 --> 00:12:50,270 eine Funktion in PHP namens Lookup, dass Ich bin vorbei mein letzter Kommandozeile 278 00:12:50,270 --> 00:12:51,902 Argument zu-- was auch immer das Wort ist. 279 00:12:51,902 --> 00:12:53,610 Und wir werden sehen, wie diese arbeitet in einem Augenblick. 280 00:12:53,610 --> 00:12:55,380 >> Und dann schließlich ich die Berichterstattung den Preis. 281 00:12:55,380 --> 00:12:58,650 Ich Ausdrucken ein Anteil der so und so. 282 00:12:58,650 --> 00:13:02,082 Und denken Sie daran, dies ist das Weg in PHP-- einer Weise in PHP-- 283 00:13:02,082 --> 00:13:04,290 wo Sie nicht haben, um zu tun das Dollarzeichen S mehr. 284 00:13:04,290 --> 00:13:06,782 Können Sie einfach geschweiften Klammern und stecken in einigen Variablen. 285 00:13:06,782 --> 00:13:09,240 Sie haben keine Sorgen zu machen Verwendung printf in der gleichen Weise. 286 00:13:09,240 --> 00:13:13,530 >> Und nebenbei, wenn Sie eine Variable setzen Innenseite der doppelten Anführungszeichen wie diese, 287 00:13:13,530 --> 00:13:17,370 Sie mit einem ausgefallenen Technik sind genannte variable Interpolation. 288 00:13:17,370 --> 00:13:20,380 Es bedeutet nur, stecken Sie die Variable in hier. 289 00:13:20,380 --> 00:13:23,760 Und nebenbei, einige von euch, die kommen, von anderen Programmiersprachen Hintergründe, 290 00:13:23,760 --> 00:13:26,960 Sie möglicherweise nicht in einfache Anführungszeichen rund Saiten, dies zu tun. 291 00:13:26,960 --> 00:13:30,290 Sie müssen doppelte Anführungszeichen zu verwenden, variable Interpolation an die Arbeit. 292 00:13:30,290 --> 00:13:32,740 Andernfalls werde man buchstäblich sehen diese geschweiften Klammern. 293 00:13:32,740 --> 00:13:34,500 >> So schließlich lassen Sie uns fortfahren und führen Sie diese. 294 00:13:34,500 --> 00:13:36,690 Lassen Sie mich mein Terminal ein wenig größer. 295 00:13:36,690 --> 00:13:41,940 Lassen Sie mich gehen Sie vor und führen Innenseite meiner Kursverzeichnis. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? Zitat?] PHP Zitat dot PHP, 297 00:13:46,950 --> 00:13:50,290 und ich werde nach etwas zu suchen wie GOOG, die ihre Tickersymbol ist, 298 00:13:50,290 --> 00:13:55,510 und eine Aktie der seinen neuen Namen, Alphabet Inc, kostet $ 717, ab heute. 299 00:13:55,510 --> 00:13:58,680 In Ordnung, wenn wir wollen, laufen diese wieder jemand 300 00:13:58,680 --> 00:14:02,600 haben ein anderes Börsenticker wollen sie sehen? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft ist meiner Meinung nach diese, MSFT-- 53 $. 302 00:14:06,770 --> 00:14:09,720 Ich denke, Yahoo ist vielleicht. 303 00:14:09,720 --> 00:14:12,130 Und Facebook ist, dass. 304 00:14:12,130 --> 00:14:13,740 >> Also, was ist dieses Programm zu tun? 305 00:14:13,740 --> 00:14:16,306 Die Magie scheint eingebettet werden in dieser Lookup-Funktion. 306 00:14:16,306 --> 00:14:17,430 Werfen wir also einen Blick. 307 00:14:17,430 --> 00:14:21,815 >> Es stellt sich heraus, dass nicht kommt mit PHP, es ist in functions.php. 308 00:14:21,815 --> 00:14:23,690 Und wir werden nicht durch zu gehen Dieses sehr detailliert, 309 00:14:23,690 --> 00:14:28,040 aber beachten, das Wort hier ist dass auf der Linie sechs functions.php-- 310 00:14:28,040 --> 00:14:29,440 Ich habe buchstäblich sagen Funktion. 311 00:14:29,440 --> 00:14:31,050 Ich den Namen meiner Funktion. 312 00:14:31,050 --> 00:14:34,330 Ich geben Sie dann jede Argumente oder Parameter, 313 00:14:34,330 --> 00:14:36,480 Ich möchte, dass Funktion, keine Typen take--. 314 00:14:36,480 --> 00:14:37,580 Und dann habe ich umsetzen. 315 00:14:37,580 --> 00:14:39,240 >> Und ich werde meine Hand winken bei der Umsetzung, 316 00:14:39,240 --> 00:14:42,115 denn es ist ziemlich weit fortgeschritten rechts jetzt, aber wir werden es wieder zu sehen tatsächlich 317 00:14:42,115 --> 00:14:44,700 in einer Woche in Problem stellte sieben. 318 00:14:44,700 --> 00:14:47,490 Aber ich kann diese bereinigen, zu. 319 00:14:47,490 --> 00:14:49,590 Ich gehörte auch heutigen Code eine Version 320 00:14:49,590 --> 00:14:52,340 Zitat, das keine Punkt PHP-Datei hat. 321 00:14:52,340 --> 00:14:57,270 Denn das, was vermutlich auf die oben auf dem Programm mit dem Namen nur zu zitieren? 322 00:14:57,270 --> 00:15:00,140 Daß shebang-- die sogenannte ziemlich kryptisch Beschwörung 323 00:15:00,140 --> 00:15:04,590 das sagt PHP zu finden und dann führen Sie es auf mein Code hier. 324 00:15:04,590 --> 00:15:07,360 >> In Ordnung, so dass bringt uns, wo wir aufgehört 325 00:15:07,360 --> 00:15:09,560 letzten Zeit-- wenn auch mit einige fortgeschrittenere Beispiele. 326 00:15:09,560 --> 00:15:13,980 Haben Sie Fragen bisher ca. PHP oder was wir tun? 327 00:15:13,980 --> 00:15:15,570 NO- alles in Ordnung. 328 00:15:15,570 --> 00:15:16,180 Ja? 329 00:15:16,180 --> 00:15:19,610 >> Publikum: Im Inneren der HTML-Dateien zu tun Sie-- 330 00:15:19,610 --> 00:15:22,226 [? Tust du ?] [? nennen es einfach?] a [unverständlich] PHP-Datei? 331 00:15:22,226 --> 00:15:23,350 DAVID MALAN: Gute Frage. 332 00:15:23,350 --> 00:15:26,070 In einem Web-Kontext, der wir sind buchstäblich dabei, den Übergang, 333 00:15:26,070 --> 00:15:28,028 Sie nicht mit den so genannten Kram an der Spitze, 334 00:15:28,028 --> 00:15:31,980 da die Bahn server-- oft Programm namens Apache oder Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server oder eine beliebige Anzahl von anderen Web-Server-Software, 336 00:15:37,470 --> 00:15:40,636 weiß, dass, wenn sie sieht, ein Punkt PHP-Datei, dass es 337 00:15:40,636 --> 00:15:42,010 sollte der Dolmetscher darauf ausgeführt werden. 338 00:15:42,010 --> 00:15:43,468 Es muss nicht bei dieser ersten Zeile zu suchen. 339 00:15:43,468 --> 00:15:45,580 Also dieser ersten Zeile Trick ist nur, wenn Sie 340 00:15:45,580 --> 00:15:48,330 Schreiben von Kommandozeilen programs-- die wir nicht super oft tun, 341 00:15:48,330 --> 00:15:52,510 aber es ist unsere Art zu überbrücken unsere C Beispiele, um jetzt unsere PHP. 342 00:15:52,510 --> 00:16:00,680 >> Lassen Sie uns also in der Tat, diese Welt zu überbrücken von der Kommandozeile Welt auf die Bahn 343 00:16:00,680 --> 00:16:02,230 indem Sie folgendermaßen vorgehen. 344 00:16:02,230 --> 00:16:05,090 Lassen Sie mich gehen Sie vor und ziehen hier für einen Moment. 345 00:16:05,090 --> 00:16:09,940 Wenn wir also einen Web-Server, oder besser wenn wir meinem Laptop hier, 346 00:16:09,940 --> 00:16:11,280 was werde ich wie folgt zu zeichnen. 347 00:16:11,280 --> 00:16:14,250 Und hier haben wir die Internet in irgendeiner Form. 348 00:16:14,250 --> 00:16:18,210 Und dann über hier, haben wir einen Server in einem building-- 349 00:16:18,210 --> 00:16:20,760 das ist, wie das Internet works-- und hier 350 00:16:20,760 --> 00:16:23,120 ist ein Server mit einigen Lichtern vielleicht. 351 00:16:23,120 --> 00:16:27,530 Was ist eigentlich los zwischen diesen beiden Verbindungen? 352 00:16:27,530 --> 00:16:29,240 >> Also in diesem Gebäude ist ein Web-Server. 353 00:16:29,240 --> 00:16:31,420 Das ist nur ein Computer- dass läuft einige Betriebs 354 00:16:31,420 --> 00:16:34,561 system-- vielleicht die kostenlose Software namens Apache, die CS50 IDE läuft. 355 00:16:34,561 --> 00:16:36,310 Kann man so eigentlich denke dieses Gebäudes 356 00:16:36,310 --> 00:16:38,579 als das Gebäude in denen CST0 IDE wird gespeichert. 357 00:16:38,579 --> 00:16:40,870 Das ist, wo alle von euch haben Konten, in denen alle von Ihnen 358 00:16:40,870 --> 00:16:43,130 Ihren eigenen Web-Server Laufen, euch alle 359 00:16:43,130 --> 00:16:45,730 Ihre eigene eindeutige URLs, als wir begannen zu diskutieren, 360 00:16:45,730 --> 00:16:47,280 und du wirst mehr zu sehen in P. stellte sechs ein. 361 00:16:47,280 --> 00:16:49,450 >> Hier ist mein Laptop irgendwo sonst im Internet. 362 00:16:49,450 --> 00:16:54,550 Und so, wenn ich Besuch einer URL, die angehört Für mich ist, dass Internet-Datenverkehr 363 00:16:54,550 --> 00:16:58,360 an den Server, der Server des Empfangen eines HTTP request-- 364 00:16:58,360 --> 00:17:02,900 wie ein Get index.html und es ist Beantwortung dieser Web-Seite. 365 00:17:02,900 --> 00:17:04,280 Das ist also der allgemeinen Paradigma. 366 00:17:04,280 --> 00:17:07,089 Der Erwägung, dass alles, was sich bis jetzt heute, alles, was 367 00:17:07,089 --> 00:17:09,660 Erst im Geschehen Grenzen dieses Gebäude. 368 00:17:09,660 --> 00:17:12,910 Ich war mit meinem Laptop, aber Ich wurde zu CS50 IDE verbunden sind, 369 00:17:12,910 --> 00:17:17,369 so alle diese Programme, die ich lief war im Inneren des Servers selbst. 370 00:17:17,369 --> 00:17:22,660 >> Aber jetzt, lassen Sie uns beginnen die Wiederverwendung von PHP einige aktuelle Programme zu schreiben, 371 00:17:22,660 --> 00:17:24,230 werden von einem Web-Server serviert. 372 00:17:24,230 --> 00:17:30,320 Und um dies zu tun, werde ich gehen in eine ganze Reihe von Beispielen 373 00:17:30,320 --> 00:17:33,710 dass diese Idee vorstellen hier. 374 00:17:33,710 --> 00:17:38,500 Also das ist ein bisschen eine andere Art zu beschreibt ein Programmierparadigma. 375 00:17:38,500 --> 00:17:41,540 >> Und in der Tat, wie Sie verlassen CS50 oder arbeiten an Abschlussarbeiten, 376 00:17:41,540 --> 00:17:43,520 oder nehmen einige folgen auf Klasse, werden Sie beginnen 377 00:17:43,520 --> 00:17:45,740 zu sehen, dass der world-- vor allem nachdem erwachsen 378 00:17:45,740 --> 00:17:48,300 mit Sprachen wie C die super günstigen level-- sind 379 00:17:48,300 --> 00:17:51,290 erkennen, dass es besser Möglichkeiten der Schreibsoftware. 380 00:17:51,290 --> 00:17:53,290 Es gibt bestimmte Muster, die Sie folgen können, 381 00:17:53,290 --> 00:17:57,640 bestimmte Formen der Organisation Ihrer Dateien und Wege der Benennung Ihrer Funktionen, 382 00:17:57,640 --> 00:18:00,300 so dass lange Geschichte kurz, hat die Welt kommen 383 00:18:00,300 --> 00:18:04,340 mit einem ganzen Bündel von Akronymen und Namen für Möglichkeiten der Programmierung. 384 00:18:04,340 --> 00:18:06,260 Dies sind nur Techniken, die Sie nutzen könnten. 385 00:18:06,260 --> 00:18:09,660 >> Und einer von ihnen wird als MVC, für Model View Controller. 386 00:18:09,660 --> 00:18:12,270 Und das ist nur für Jetzt, ein übermäßig kompliziert 387 00:18:12,270 --> 00:18:18,960 Art zu sagen, wie sollte man das Layout eine PHP-basierte Website, in unserem Fall. 388 00:18:18,960 --> 00:18:22,140 Wie sehen Sie Ihre Dateien zu organisieren, Wie organisieren Sie Ihre Logik, 389 00:18:22,140 --> 00:18:26,220 in einer Weise, die es leichter macht Schreiben komplizierter Websites? 390 00:18:26,220 --> 00:18:28,550 Und in der Tat, wir werden schnell bekommen es mit p-set sieben. 391 00:18:28,550 --> 00:18:32,020 >> So in der Welt der MVC, Sie gehen um zu sehen, dass unser Code kann in der Regel 392 00:18:32,020 --> 00:18:38,290 entweder als Modellcode gekennzeichnet werden, oder Controller-Code oder Code anzeigen. 393 00:18:38,290 --> 00:18:40,200 Und ich bin zu gehen vereinfachen sie als follows-- 394 00:18:40,200 --> 00:18:42,074 Der Controller ist die Gehirne von Ihrem Programm, 395 00:18:42,074 --> 00:18:44,100 es ist, wo alle der interessante Logik passiert. 396 00:18:44,100 --> 00:18:46,110 Also alles, was wir gewesen sind soweit in Klasse schreiben, 397 00:18:46,110 --> 00:18:48,210 ist eine Art, wie Controller code-- es Steuerung 398 00:18:48,210 --> 00:18:50,585 Ihr Programm, Ihre Loops, Ihrem Bedingungen, Ihre Funktionen 399 00:18:50,585 --> 00:18:52,100 und Variablen und so weiter. 400 00:18:52,100 --> 00:18:56,160 >> Ansichten, jetzt, sein werden, ein wenig näher, in der Welt des Web. 401 00:18:56,160 --> 00:18:59,360 Eine Ansicht ist die Ästhetik Ihrer Website. 402 00:18:59,360 --> 00:19:04,080 Es ist, was der Benutzer die Bilder sees--, die HTML-Tabellen, die HTML-Tags, und alle 403 00:19:04,080 --> 00:19:08,220 kommt, dass alle der flauschige ästhetischen Sachen, die nicht ist, dass schwer zu schreiben, 404 00:19:08,220 --> 00:19:11,380 aber genau das, was Sie erzeugen sind, ist die so genannte Ansicht, die Ästhetik. 405 00:19:11,380 --> 00:19:13,880 Und das Modell letztlich geht Datenbank stuff-- werden, 406 00:19:13,880 --> 00:19:16,510 wir tauchen in all starten desto mehr an diesem Mittwoch. 407 00:19:16,510 --> 00:19:19,740 So ist die Logik-Controller, Ansicht ist die ästhetische stuff, 408 00:19:19,740 --> 00:19:23,500 und das Modell sein wird, wo speichern wir unseren eigentlichen Daten. 409 00:19:23,500 --> 00:19:26,410 >> Also lassen Sie uns dies konkreter mit dem folgenden Beispiel. 410 00:19:26,410 --> 00:19:34,700 Ich werde in meinem Verzeichnis hier gehen der heutigen Quelle code-- von denen alle 411 00:19:34,700 --> 00:19:35,770 ist online verfügbar. 412 00:19:35,770 --> 00:19:37,800 Und ich werde in die Version Null. 413 00:19:37,800 --> 00:19:41,500 Und hier ist-- nennen wir es das lassen Version Null des CS50-Website. 414 00:19:41,500 --> 00:19:43,010 Es gibt nicht viel hier überhaupt. 415 00:19:43,010 --> 00:19:46,810 Es ist eine sehr einfache Webseite, die ist wahrscheinlich mit, was HTML tags-- gerade 416 00:19:46,810 --> 00:19:48,970 schätze aus der Vergangenheit Beispiele? 417 00:19:48,970 --> 00:19:49,890 >> Was ist das? 418 00:19:49,890 --> 00:19:53,920 H1-- wahrscheinlich für diesen großen mutigen Titel, dass logo up top, CS50. 419 00:19:53,920 --> 00:19:55,080 Und was sonst noch im Spiel? 420 00:19:55,080 --> 00:19:55,799 Ja? 421 00:19:55,799 --> 00:19:56,840 ZIELGRUPPE: Ungeordnete Liste. 422 00:19:56,840 --> 00:19:59,990 DAVID MALAN: Ungeordnete list-- so dass die UL-Tag und vielleicht ein paar LI-Tags. 423 00:19:59,990 --> 00:20:01,840 Und wenn Sie sich nicht erinnern diese, es ehrlich spielt keine Rolle. 424 00:20:01,840 --> 00:20:04,170 Dies sind flauschigen Art Details der Implementierung von HTML 425 00:20:04,170 --> 00:20:06,378 dass Sie schnell nachschlagen und Sie sind wieder auf dem Weg. 426 00:20:06,378 --> 00:20:10,040 Wir werden mehr von der Programmierung konzentrieren Ideen, die saftiger Stücke sind. 427 00:20:10,040 --> 00:20:12,890 >> Also lassen Sie uns einfach einen kurzen Blick auf die HTML-- und in der Tat 428 00:20:12,890 --> 00:20:16,880 wenn ich öffnen den Quelltext hier, yup, Das ist genau das, was hier vor sich geht. 429 00:20:16,880 --> 00:20:18,440 Es gibt eine UL-Tag. 430 00:20:18,440 --> 00:20:20,630 Innenseite, die verschachtelte ist es, LI-Tags. 431 00:20:20,630 --> 00:20:24,470 Dann lieh ich mir die URL des eigentlichen Lehrplan hier. 432 00:20:24,470 --> 00:20:27,570 >> Und dann in der lectures.php ist offenbar 433 00:20:27,570 --> 00:20:31,640 ein weiteres dynamisch generierte Seite das wird sich haben, lassen Sie uns see-- ah, 434 00:20:31,640 --> 00:20:33,170 Die ersten zwei Wochen der Vorlesung. 435 00:20:33,170 --> 00:20:36,600 So Woche null und Woche ein, lassen Sie uns Blick auf this-- wenn ich sehen Seite Quelle, 436 00:20:36,600 --> 00:20:38,120 auch super einfach. 437 00:20:38,120 --> 00:20:42,430 Diese sind an zwei Seiten führen genannt week0.php und week1.php. 438 00:20:42,430 --> 00:20:44,040 So betrachten nun, was passiert. 439 00:20:44,040 --> 00:20:50,630 >> Wenn ich auf week0.php klicken, meinen Laptop macht eine Anfrage für week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Der Web-Server, auch bekannt als, CS50 IDE, erhält diese virtuellen Umschlag. 442 00:20:58,110 --> 00:21:01,040 Es ist zu sehen, eine Nachricht wie, bekommen week0.php. 443 00:21:01,040 --> 00:21:05,060 Es wird dann die Interpretation der Datei, top nach unten, nach links, um die Datei right-- 444 00:21:05,060 --> 00:21:07,720 genannt week0.php-- und spuckt die Ergebnisse. 445 00:21:07,720 --> 00:21:10,510 Also innerhalb der Datei, week0.php, muss 446 00:21:10,510 --> 00:21:15,410 die Steuerlogik, die Erzeugung wird Diese HTML, und wir werden bald sehen, dass. 447 00:21:15,410 --> 00:21:19,340 >> Aber jetzt lassen Sie mich an Wochennull klicken, und jetzt haben wir Mittwoch und Freitag, 448 00:21:19,340 --> 00:21:25,260 und jetzt haben wir die Folien langsam von Woche Null. 449 00:21:25,260 --> 00:21:27,400 Und Sie erinnern könnte Dieses von damals. 450 00:21:27,400 --> 00:21:29,340 Also das ist alles Website tut. 451 00:21:29,340 --> 00:21:31,120 >> Lassen Sie uns also überlegen, wie es ist, dies zu tun. 452 00:21:31,120 --> 00:21:34,290 Ich werde wieder in der go Quellcode hier, in CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 und ich werde zu öffnen index.php. 454 00:21:36,660 --> 00:21:38,910 An der Spitze dieser Datei ist ein Bündel von Kommentaren. 455 00:21:38,910 --> 00:21:43,000 Und dann in der Mitte dieser Datei, es stellt sich heraus, es keine PHP-Code zu löschen. 456 00:21:43,000 --> 00:21:47,380 Denn wenn Sie nicht über einen der offene Klammer Fragezeichen PHP-Tags, 457 00:21:47,380 --> 00:21:49,180 Du bist frei, setzen Sie einfach HTML. 458 00:21:49,180 --> 00:21:51,480 >> Denn das, was die PHP- Dolmetscher tun soll, 459 00:21:51,480 --> 00:21:53,938 ist, wenn es auf diese file-- liest von oben nach unten, von links nach right-- 460 00:21:53,938 --> 00:21:59,100 nur interpretiert Code sieht sie zwischen diese spitzen Klammern Fragezeichen. 461 00:21:59,100 --> 00:22:02,380 Und alles andere, dass dies nicht der Fall erkennen, wie PHP, es spuckt gerade aus. 462 00:22:02,380 --> 00:22:05,080 HTML und gehört zu den Sachen es wird nur ausspucken. 463 00:22:05,080 --> 00:22:09,090 >> Also diese Datei haben könnte index.html genannt worden, 464 00:22:09,090 --> 00:22:11,690 aber ich bin alles, was die Benennung dot PHP als Sprungbrett. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- ähnlich berauschend, es ist nur einige HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php ähnlich nur einige HTML. 467 00:22:19,840 --> 00:22:22,300 >> Aber jetzt auf dem setzen lassen sprichwörtliche Engineering-Hut, 468 00:22:22,300 --> 00:22:24,400 und überlegen, wie wir diese verbessern. 469 00:22:24,400 --> 00:22:28,541 Es ist nicht schwer, dies zu tun, aber ich Art der in Kopieren und Einfügen übertragen. 470 00:22:28,541 --> 00:22:31,540 Und in der Tat, wenn ich zwei Wochen, können Sie weiß, was ich bin wahrscheinlich zu tun? 471 00:22:31,540 --> 00:22:34,940 Ich werde gehen, um week1.php, bin ich werde alles markieren. 472 00:22:34,940 --> 00:22:39,110 Ich werde es kopieren, einfügen in eine neue Datei namens week2.php, 473 00:22:39,110 --> 00:22:42,440 zwicken einige URLs, und sein auf dem Weg. 474 00:22:42,440 --> 00:22:45,240 >> Also, was wir auf der Basis in C gesehen schon, 475 00:22:45,240 --> 00:22:46,860 Dies fühlt sich nicht richtig, hoffentlich. 476 00:22:46,860 --> 00:22:49,610 Kopieren, Einfügen nur selten die richtige Lösung. 477 00:22:49,610 --> 00:22:51,429 Was können wir also beginnen zu tun, um dies zu verbessern? 478 00:22:51,429 --> 00:22:53,345 Wo liegen die Chancen für besseres Design? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Als ich zu bekommen, Woche acht, es geht 481 00:22:58,760 --> 00:23:00,910 zu sein, wirklich ärgerlich wenn ich ändern wollen 482 00:23:00,910 --> 00:23:03,930 die Schriftart eines jeden von meine Seiten, oder wenn ich will 483 00:23:03,930 --> 00:23:06,522 die Struktur des Layouts ändern. 484 00:23:06,522 --> 00:23:08,396 Also, wo ist die Möglichkeit, für besseres Design? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Nun, laßt uns überlegen, was ist für alle diese Dateien geteilt. 487 00:23:15,160 --> 00:23:21,696 >> Hier ist eine Woche, ist hier der Woche Null, hier ist lectures.php, 488 00:23:21,696 --> 00:23:25,790 hier ist index.php-- was dasselbe ist, und was anders ist, grob gesprochen, 489 00:23:25,790 --> 00:23:26,760 in jede dieser Dateien? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Ja? 492 00:23:32,060 --> 00:23:34,560 >> ZIELGRUPPE: [unverständlich] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID MALAN: OK, gut. 495 00:23:42,160 --> 00:23:46,115 Also gibt es ein Muster, mit Sicherheit, wobei jedes Mal wenn ich wählen, Vortrag, den ich, 496 00:23:46,115 --> 00:23:48,250 Ich sollte Erzeugen eines sehr ähnlich aussehenden Seite. 497 00:23:48,250 --> 00:23:50,375 Und so ich vielleicht nutzen können die Tatsache, dass wirklich, 498 00:23:50,375 --> 00:23:53,060 wir bewusst numerisch indexiert unsere lectures-- 499 00:23:53,060 --> 00:23:55,290 wenn ich noch mehr setzen Wörter in Ihrer Antwort. 500 00:23:55,290 --> 00:23:59,984 Und was ist das einzige, was, wirklich, das ändert sich zwischen Woche one-- 501 00:23:59,984 --> 00:24:02,400 und lassen Sie mich nach unten scrollen, so ist es etwa in der gleichen place-- 502 00:24:02,400 --> 00:24:05,480 so ist hier Woche null, etwa an der Spitze. 503 00:24:05,480 --> 00:24:12,370 Hier ist eine Woche, Woche Null, eine Woche, Woche Null. 504 00:24:12,370 --> 00:24:14,370 OK, wörtlich, wenn Sie wissen kein Programm auch immer, 505 00:24:14,370 --> 00:24:16,286 das ist jetzt wie ein Pattern-Matching-Spiel. 506 00:24:16,286 --> 00:24:17,200 Also, was ist anders? 507 00:24:17,200 --> 00:24:18,765 Ja? 508 00:24:18,765 --> 00:24:19,777 >> ZIELGRUPPE: [unverständlich] 509 00:24:19,777 --> 00:24:22,360 DAVID MALAN: Gut, so der Titel verändert sich, immer so leicht. 510 00:24:22,360 --> 00:24:24,010 Null wird, natürlich, zu einem. 511 00:24:24,010 --> 00:24:25,570 Dasselbe ist in der H1-Tag passiert. 512 00:24:25,570 --> 00:24:28,790 Und wir wissen nicht recht sehen, daß es so einfach, weil die URLs sind ein wenig lang. 513 00:24:28,790 --> 00:24:30,670 Aber diese URLs werden leicht verändert. 514 00:24:30,670 --> 00:24:34,490 >> Aber was nicht verändert, ich wage heißt, die meisten der Inhalt des page-- 515 00:24:34,490 --> 00:24:38,530 der HTML-Tag ist das gleiche, ist der Kopf die gleichen sind, der Titel ist fast das gleiche, 516 00:24:38,530 --> 00:24:40,659 der Körper die gleiche ist, und fast alles andere 517 00:24:40,659 --> 00:24:42,450 ist gleich, mit Ausnahme diese kleinen zwickt. 518 00:24:42,450 --> 00:24:45,310 Wie können wir also zu gehen Factoring einige this out? 519 00:24:45,310 --> 00:24:48,740 >> Nun lassen Sie mich genau das vorschlagen daß in der nächsten Version. 520 00:24:48,740 --> 00:24:53,890 So, hier in der Version ein, ich habe die genaue gleichen dateien, plus ein paar andere. 521 00:24:53,890 --> 00:24:59,730 Hier ist index.php-- und selbst wenn Sie noch nie zuvor gesehen PHP, 522 00:24:59,730 --> 00:25:05,511 was tue ich wohl, diese zu lösen basierend auf problem-- was Sie hier sehen? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Ja, das ist eine leichte Engagement? 525 00:25:12,760 --> 00:25:13,450 Nein? 526 00:25:13,450 --> 00:25:16,020 Ja, weitergehen. 527 00:25:16,020 --> 00:25:17,380 >> ZIELGRUPPE: [unverständlich] 528 00:25:17,380 --> 00:25:18,380 >> DAVID MALAN: Yep. 529 00:25:18,380 --> 00:25:20,380 >> ZIELGRUPPE: [unverständlich] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID MALAN: Ich brauche dich spreche nur ein wenig lauter. 532 00:25:28,669 --> 00:25:31,084 >> ZIELGRUPPE: [unverständlich] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID MALAN: OK, gut. 535 00:25:36,660 --> 00:25:38,620 Und ich think-- es war schwer zu Sie-- aber ich höre, 536 00:25:38,620 --> 00:25:42,690 denke, was Sie hinauswollen, dass die Tags, die gemeinsam bis oben waren, 537 00:25:42,690 --> 00:25:47,710 und die Tags, die auf die gemeinsame waren unten, haben nun berücksichtigt worden, 538 00:25:47,710 --> 00:25:51,140 oder welche Dateien verbannt? 539 00:25:51,140 --> 00:25:53,476 Header.php und footer.php-- und wir werden 540 00:25:53,476 --> 00:25:55,600 einige Tweaks zu machen adressieren die Sorge Sie gerade 541 00:25:55,600 --> 00:25:59,370 über die Zahlen Wechsel erhoben, für Beispiel, wenn ich Sie richtig gehört. 542 00:25:59,370 --> 00:26:02,060 >> Aber das scheint der Kern von ihm zu sein. 543 00:26:02,060 --> 00:26:04,820 Wenn es eine große Menge an Redundanz auf der oben auf der Seite, 544 00:26:04,820 --> 00:26:06,736 und eine große Menge an Redundanz an der Unterseite, 545 00:26:06,736 --> 00:26:09,280 wir buchstäblich nur Highlight und schneiden Sie, dass der Inhalt aus, 546 00:26:09,280 --> 00:26:13,270 legen Sie sie in einem separaten file-- wie die Idee der CSS, wo wir herausgerechnet 547 00:26:13,270 --> 00:26:16,710 sehr ähnliche Ästhetik setzen sie in einem separaten Punkt PHP-Datei, 548 00:26:16,710 --> 00:26:20,340 verwenden Sie die erfordern mechanism-- die ist wie Cis include-- die 549 00:26:20,340 --> 00:26:23,570 ist im Wesentlichen wie wenn man sagt gehen greifen die Inhalte der header.php, 550 00:26:23,570 --> 00:26:25,370 und kopieren Sie sie hier. 551 00:26:25,370 --> 00:26:29,490 >> Aber was das bedeutet, ist, dass jetzt in index.php, habe ich diese zwei Zeilen. 552 00:26:29,490 --> 00:26:32,130 In lectures.php ich auch diejenigen zwei Zeilen. 553 00:26:32,130 --> 00:26:35,230 In week0.php ich auch diejenigen zwei Zeilen. 554 00:26:35,230 --> 00:26:38,380 >> So, jetzt, wenn ich ändern wollen der Titel der alle meine Seiten, 555 00:26:38,380 --> 00:26:40,530 oder I, um das zu ändern Grundstruktur, 556 00:26:40,530 --> 00:26:44,380 Ich kann es jetzt nur an einer Stelle zu ändern, oder zwei places-- Kopf- und Fußzeile, 557 00:26:44,380 --> 00:26:45,429 beziehungsweise. 558 00:26:45,429 --> 00:26:47,970 Jetzt Ausgangs des Codes zu sehen ein wenig kryptisch, nicht wahr? 559 00:26:47,970 --> 00:26:53,590 Aber wenn Sie darüber nachdenken, was die Seite wird doing-- wenn ich Ihr Interesse an week0.php, 560 00:26:53,590 --> 00:26:59,880 genau wie auf der Zeichnung über hier-- wenn week0.php angefordert wird, 561 00:26:59,880 --> 00:27:00,960 was bedeutet das? 562 00:27:00,960 --> 00:27:04,410 >> Wörtlich ist diese Datei vom Browser angefordert. 563 00:27:04,410 --> 00:27:06,240 Die Web-server-- a.k.a. 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- packt diese Datei week0.php und liest 565 00:27:09,250 --> 00:27:10,780 es von oben nach unten, von links nach rechts. 566 00:27:10,780 --> 00:27:15,400 Auf Leitung eins sofort trifft es offene Klammer Fragezeichen PHP, benötigen 567 00:27:15,400 --> 00:27:17,872 Kopf dot PHP, usw. was der PHP-Interpreter 568 00:27:17,872 --> 00:27:20,580 does-- das ist in die Bahn gebaut Server, weil wir vorkonfiguriert 569 00:27:20,580 --> 00:27:24,580 es Sie-- sie automatisch geht in header.php, kopiert den Inhalt, 570 00:27:24,580 --> 00:27:25,640 fügt sie hier. 571 00:27:25,640 --> 00:27:28,790 >> Aber dann die Dolmetscher Begegnungen Fragezeichen-Klammer zu, 572 00:27:28,790 --> 00:27:30,320 Es ist also alles getan zu denken. 573 00:27:30,320 --> 00:27:33,400 Jetzt ist es einfach blind spuckt out Zeilen zwei bis sieben, 574 00:27:33,400 --> 00:27:35,240 weil es nur reines HTML. 575 00:27:35,240 --> 00:27:38,470 Ruft die Linie acht, und das tut gleiche Magie again-- Öffnen der Datei, 576 00:27:38,470 --> 00:27:41,460 Greifen Sie den Inhalt, und ihnen zu verlangen oder sie einfügen 577 00:27:41,460 --> 00:27:42,480 dann rechts oder dort. 578 00:27:42,480 --> 00:27:44,210 >> Aber ich habe gerade einen Fehler hingewiesen. 579 00:27:44,210 --> 00:27:48,610 Dies ist ein Teilschritt rückwärts, denn wenn wir in header.php aussehen, 580 00:27:48,610 --> 00:27:50,850 Ich habe Art von schneiden eine Ecke. 581 00:27:50,850 --> 00:27:56,250 Welche Funktion hatte ich aufgeben, um um diese vertretbare besseres Design zu gewinnen? 582 00:27:56,250 --> 00:27:57,305 Ja? 583 00:27:57,305 --> 00:27:58,180 ZIELGRUPPE: [unverständlich] 584 00:27:58,180 --> 00:28:00,570 DAVID MALAN: Ja, ich Art der schnitt eine nicht-triviale Ecke. 585 00:28:00,570 --> 00:28:04,489 Sie wies darauf hin, dass das, was Änderung wurde war der Titel, die Anzahl der Titel, 586 00:28:04,489 --> 00:28:05,530 und die Zahl in der H1. 587 00:28:05,530 --> 00:28:08,170 Also meine Lösung war, OK, Lassen Sie uns die Seite umbenennen, nur, 588 00:28:08,170 --> 00:28:10,080 und nicht damit umgehen Problem auch immer. 589 00:28:10,080 --> 00:28:12,130 Also das ist eine teilweise Schritt nach hinten sicher. 590 00:28:12,130 --> 00:28:14,300 >> Aber was hier ist bemerkenswert, ist das, was ich getan habe, 591 00:28:14,300 --> 00:28:17,200 ansonsten berücksichtigt alle die gemeinsame Sachen. 592 00:28:17,200 --> 00:28:21,520 Und in footer.php, merke ich einkalkuliert Sie alle, dass, wenn auch geringeren, 593 00:28:21,520 --> 00:28:22,790 gemeinsame Sachen. 594 00:28:22,790 --> 00:28:26,070 Also muss ich irgendwie jetzt in der Lage zu sein, einen weiteren Schritt nach vorn, und beheben 595 00:28:26,070 --> 00:28:27,160 Dieser Titel Themen. 596 00:28:27,160 --> 00:28:28,180 Also lassen Sie uns tun. 597 00:28:28,180 --> 00:28:35,060 >> Lassen Sie mich in meine zweite Version gehen hier hat wieder, die die gleichen Dateien 598 00:28:35,060 --> 00:28:36,825 bis auf einen Neuzugang. 599 00:28:36,825 --> 00:28:38,950 Und es ist ein wenig mehr verbose, aber mal sehen, ob wir 600 00:28:38,950 --> 00:28:40,550 auseinander zu necken, was hier vor sich geht. 601 00:28:40,550 --> 00:28:45,370 Also anstatt erfordern header.php und footer.php, 602 00:28:45,370 --> 00:28:50,180 Ich scheine zu nur einer benötigt file-- genannt natürlich helpers.php. 603 00:28:50,180 --> 00:28:52,560 Und lassen Sie mich jetzt sehen vor, was innerhalb der helpers.php 604 00:28:52,560 --> 00:28:55,330 ist gerade ein Bündel von Funktionen dass ich schrieb, genau wie zuvor. 605 00:28:55,330 --> 00:28:57,550 Aber ich nannte es helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Nun offenbar, Linie drei und 10, ich bin 607 00:29:00,370 --> 00:29:02,840 ruft zwei functions-- machen header, footer machen. 608 00:29:02,840 --> 00:29:05,040 Diejenigen, nicht mit zu kommen PHP, schrieb ich denen mir. 609 00:29:05,040 --> 00:29:07,880 Und ich legte sie in helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Jetzt haben wir nur diese Syntax zu sehen einmal, und es war sehr kurz. 611 00:29:11,210 --> 00:29:15,330 Aber das ist offenbar ein Argument zu machen Header, die Funktion. 612 00:29:15,330 --> 00:29:16,450 Warum muss ich das wissen? 613 00:29:16,450 --> 00:29:18,522 Nun, hier ist eine enge paren, hier ist ein offener paren. 614 00:29:18,522 --> 00:29:21,230 Und selbstverständlich, wie in C, etwas zwischen den Klammern 615 00:29:21,230 --> 00:29:23,350 ist eine input-- oder Argument an die Funktion. 616 00:29:23,350 --> 00:29:26,710 >> Was ist der Datentyp dieses Argument, basierend auf dem, was ich hervorgehoben? 617 00:29:26,710 --> 00:29:30,820 Was bedeuten die eckigen Klammern anzuzeigen, basierend auf der letzten Woche? 618 00:29:30,820 --> 00:29:33,390 Ja, es ist ein array-- speziell ein assoziatives Array. 619 00:29:33,390 --> 00:29:35,700 Und diese Syntax zugegebenermaßen ist ein wenig flippig, 620 00:29:35,700 --> 00:29:38,860 aber dies ist nur auf der Durch in ein Schlüsselwertepaar. 621 00:29:38,860 --> 00:29:43,530 Der Schlüssel ist, Zitat Zitat Ende Titel, und der Wert ist CS50. 622 00:29:43,530 --> 00:29:46,220 >> Wenn wir dies getan hatten in C, es könnte statt 623 00:29:46,220 --> 00:29:49,400 sehen eher wie dieses, nur Kurs unquote CS50-- 624 00:29:49,400 --> 00:29:52,460 oder tatsächlich, es wäre lockigen Hosenträger, oder so ähnlich, in C, 625 00:29:52,460 --> 00:29:55,580 wobei der Schlüssel Null ist, und der Wert ist CS50. 626 00:29:55,580 --> 00:29:59,840 Aber noch einmal, in PHP, obwohl die Syntax ist, wieder ein wenig seltsam, 627 00:29:59,840 --> 00:30:02,860 es Ihnen erlaubt, übergeben in anstelle von Worten Nummern 628 00:30:02,860 --> 00:30:05,120 um Schlüssel mit Werten zu verknüpfen. 629 00:30:05,120 --> 00:30:06,390 >> Also, was bedeutet das alles? 630 00:30:06,390 --> 00:30:09,750 Wenn ich in helpers.php zu gehen, schauen wir uns an dieser Funktion. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php statt renderHeader ist meine Funktion, 632 00:30:13,620 --> 00:30:16,220 und ich weiß, weil ich sehe, die Funktion Stichwort. 633 00:30:16,220 --> 00:30:19,450 Das ist neu aus C- es offensichtlich ein Argument genannt data-- 634 00:30:19,450 --> 00:30:22,400 aber ich konnte diese aufgerufen haben nichts, aber ich nannte es Daten, 635 00:30:22,400 --> 00:30:25,090 nur um ein wenig clean-- und nehmen Sie nur eine Vermutung, insbesondere 636 00:30:25,090 --> 00:30:28,173 wenn Sie auf eine andere programmiert haben Hochsprache vor, etwas, 637 00:30:28,173 --> 00:30:29,820 über C, konzeptionell. 638 00:30:29,820 --> 00:30:33,820 >> Was bedeutet gleich offene Bügel eckige Klammer vermutlich das? 639 00:30:33,820 --> 00:30:35,540 Oder wie wäre es damit? 640 00:30:35,540 --> 00:30:39,660 Wir haben das nicht in C. Ja gesehen? 641 00:30:39,660 --> 00:30:40,480 >> Ein leeres Array. 642 00:30:40,480 --> 00:30:45,440 Konkret bedeutet dies, dass, wenn der Benutzer nicht renderHeader nennen 643 00:30:45,440 --> 00:30:49,340 mit dem Argument, ich bin immer noch ein Argument aufgerufen Daten haben, 644 00:30:49,340 --> 00:30:52,327 aber sein Standardwert ist gehen, um ein leeres Array sein. 645 00:30:52,327 --> 00:30:53,660 So ist es nur eine nette Annehmlichkeit. 646 00:30:53,660 --> 00:30:56,493 Ich habe nicht an den Benutzer zu schreien, oder sagen, dass Sie meine Funktion falsch eingesetzt. 647 00:30:56,493 --> 00:30:59,849 Ich kann nur geben dem Benutzer eine Default- Wert, wenn ich nicht besonders zu kümmern. 648 00:30:59,849 --> 00:31:01,890 Nun ist diese Funktion, ich bin werde meine Hände an zu winken. 649 00:31:01,890 --> 00:31:07,620 Aber dieser Extrakt Funktion erlaubt uns, diese Variablen in Daten zu übergeben 650 00:31:07,620 --> 00:31:10,360 in header.php in der folgenden Weise. 651 00:31:10,360 --> 00:31:13,100 Und das ist das letzte Stück, Ich denke, von funky-Syntax. 652 00:31:13,100 --> 00:31:15,860 Hier ist meine neue Version von header.php-- es 653 00:31:15,860 --> 00:31:20,140 pflegte zu sagen, wörtlich, offene Halterung Titel CS50, und das war es. 654 00:31:20,140 --> 00:31:21,766 Und dasselbe für die H1. 655 00:31:21,766 --> 00:31:24,310 >> Jetzt scheint es sagt, etwas ziemlich funky. 656 00:31:24,310 --> 00:31:28,030 Und lassen Sie mich dies zu vereinfachen für einen Moment wie folgt. 657 00:31:28,030 --> 00:31:31,020 Dies ist, was ich habe änderte meinen Titel zu sein. 658 00:31:31,020 --> 00:31:35,140 Allerdings ist es immer ein wenig hässlich ständig offenen Klammern mit PHP, 659 00:31:35,140 --> 00:31:36,610 und verwenden Sie dann die Druckfunktion. 660 00:31:36,610 --> 00:31:40,810 Es stellt sich heraus, dass PHP hat eine Kurzform Notation dafür, das nur 661 00:31:40,810 --> 00:31:45,050 ein Gleichheitszeichen, die technisch eine ist Funktion namens Echo statt Druck, 662 00:31:45,050 --> 00:31:46,800 aber es ist die gleiche Sache, effektiv. 663 00:31:46,800 --> 00:31:48,440 >> Das sieht einfach besser aus. 664 00:31:48,440 --> 00:31:50,510 Es ist nur eine syntaktische Zucker, wenn man so will, 665 00:31:50,510 --> 00:31:52,260 das macht mein Code ein wenig besser aussehen. 666 00:31:52,260 --> 00:31:54,010 Aber es stellt sich heraus, und Wir werden dies wieder zu sehen 667 00:31:54,010 --> 00:31:57,420 es dauerte nicht lange, wir haben zu dieser Aufforderung nervend langen Funktion aufgerufen 668 00:31:57,420 --> 00:32:00,582 HTML-Sonderzeichen in PHP, weil es sich herausstellt, 669 00:32:00,582 --> 00:32:02,790 gibt es bestimmte Eingänge dass der Benutzer uns geben könnten, 670 00:32:02,790 --> 00:32:05,160 oder dass die Nutzer uns geben könnten, die gehen, um unsere Website zu brechen. 671 00:32:05,160 --> 00:32:07,035 Aber wir sehen werden, dass beim nächsten Woche mit JavaScript. 672 00:32:07,035 --> 00:32:10,740 Aber jetzt weiß nur, dass Diese Datei, headers.php einfach 673 00:32:10,740 --> 00:32:13,040 führt den Titel, Ich ging in, es zu machen 674 00:32:13,040 --> 00:32:17,380 Sie sicher, dass es sicher ist, zu einer Bahn eingespritzt werden Seite, und es spuckt es aus wie mein Titel 675 00:32:17,380 --> 00:32:18,640 und da meine H1. 676 00:32:18,640 --> 00:32:24,440 Also, wenn ich in dieser Version jetzt, feststellen, dass Vorlesungen hat seinen Titel zurück, 677 00:32:24,440 --> 00:32:28,630 Woche Null hat seinen Titel zurück, und in der Tat, die HTML Ich Erzeugung 678 00:32:28,630 --> 00:32:32,110 ist identisch mit dem, was meine erste Version was-- außer für meine Whitespace, 679 00:32:32,110 --> 00:32:35,150 weil ich die Formatierung begonnen mein Code ein wenig anders. 680 00:32:35,150 --> 00:32:38,082 Aber ich habe alle generierten der Code Ich kümmere mich um. 681 00:32:38,082 --> 00:32:39,790 Also lassen Sie mich für die Pause nur einen Augenblick und sehen, 682 00:32:39,790 --> 00:32:42,200 wenn es irgendwelche Fragen oder Verwirrung habe ich erstellt. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Alles klar, also lassen Sie uns verdrehen ein wenig härter hier 685 00:32:48,150 --> 00:32:51,500 um zu sehen, ob es ein Chance zur Verbesserung. 686 00:32:51,500 --> 00:32:56,130 Helpers.php hatte auch diese Funktion, genannt renderFooter. 687 00:32:56,130 --> 00:32:59,652 Und was ist bemerkenswert, zu renderHeader und renderFooter? 688 00:32:59,652 --> 00:33:02,610 Und wieder, für die heutigen Zwecke, wissen, dass der Extrakt-Funktion ist nur 689 00:33:02,610 --> 00:33:08,280 meine Art Weitergabe Argumente in header.php und footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Es tut uns leid? 692 00:33:11,780 --> 00:33:13,056 >> ZIELGRUPPE: [unverständlich] 693 00:33:13,056 --> 00:33:15,180 DAVID MALAN: Ja, nur ich änderte sich die erfordern Linie. 694 00:33:15,180 --> 00:33:19,410 So wörtlich, habe ich die Sünde begangen Kopieren und Einfügen, noch einmal. 695 00:33:19,410 --> 00:33:21,920 Es ist nicht eine große Anzahl von Linien, sondern kommen an-- 696 00:33:21,920 --> 00:33:25,220 wenn ich das Kopieren und alles einfügen nur um ein kleines Wort zu ändern, 697 00:33:25,220 --> 00:33:28,610 und das ein kleines Wort, das Alan Punkte hier aus ist Fußzeile gegen header hier. 698 00:33:28,610 --> 00:33:30,670 Ansonsten ist alles identisch ist, außer, 699 00:33:30,670 --> 00:33:32,180 natürlich Namen der Funktion. 700 00:33:32,180 --> 00:33:33,690 Also, was können wir besser machen? 701 00:33:33,690 --> 00:33:39,810 >> Nun lassen Sie mich eröffnen diese Version hier, wobei in helpers.php, 702 00:33:39,810 --> 00:33:42,300 warum nicht ich weiß nur wenig schlauer wäre es damit? 703 00:33:42,300 --> 00:33:46,410 Schreiben Sie etwas komplizierter Code, sondern nennen es machen? 704 00:33:46,410 --> 00:33:48,470 So was habe ich grundlegend verändert? 705 00:33:48,470 --> 00:33:51,770 >> Es dauert ein Argument now-- zwei Argumente, Daten immer noch. 706 00:33:51,770 --> 00:33:54,444 Und dann, was ist das erste, Namen wahrscheinlich die für verwendet wird, 707 00:33:54,444 --> 00:33:55,860 basierend auf, was Sie hier gerade lesen? 708 00:33:55,860 --> 00:33:58,452 Selbst wenn einige der Syntax noch neu. 709 00:33:58,452 --> 00:33:59,660 Was ist Dollar-Zeichen-Vorlage? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Es tut uns leid? 712 00:34:03,016 --> 00:34:03,710 >> ZIELGRUPPE: Kopf- oder Fußzeile. 713 00:34:03,710 --> 00:34:04,510 >> DAVID MALAN: Kopf- oder Fußzeile. 714 00:34:04,510 --> 00:34:07,134 So offensichtlich, beschloss ich, dass, wenn das einzige, was zu ändern ist 715 00:34:07,134 --> 00:34:10,159 ist, welche Vorlage Ich möchte um print-- und durch Vorlage 716 00:34:10,159 --> 00:34:13,100 Ich meine, das ist Blaupause für Code, den ich ausgeben wollen, 717 00:34:13,100 --> 00:34:16,350 aber ich möchte in einigen Plug values-- so wenn es nur Kopf 718 00:34:16,350 --> 00:34:20,440 oder Fußzeile, warum nicht ich parametrieren dass und rufen Sie das Argument Dollarzeichen 719 00:34:20,440 --> 00:34:21,409 Vorlage? 720 00:34:21,409 --> 00:34:26,250 Und dann dieses unkonventionelle Syntax ermöglicht es mir, um einen Pfad in einer Variablen hier erstellen. 721 00:34:26,250 --> 00:34:28,030 >> So Dollarzeichen Pfad ist eine Variable. 722 00:34:28,030 --> 00:34:31,120 Was bedeutet diese Syntax zu tun, wenn Sie nicht vertraut sind? 723 00:34:31,120 --> 00:34:32,512 Ja? 724 00:34:32,512 --> 00:34:34,065 >> ZIELGRUPPE: [unverständlich] 725 00:34:34,065 --> 00:34:34,940 DAVID MALAN: Genau. 726 00:34:34,940 --> 00:34:37,600 Wenn Vorlage ist, Zitat Zitat Ende, Kopfzeile, oder wenn Vorlage ist, 727 00:34:37,600 --> 00:34:41,170 Zitat Zitat Ende, footer, dass es Linie dass ich hervorgehoben, Linie acht, 728 00:34:41,170 --> 00:34:46,330 wird einfach unter diesen Namen, wie Header, und verketten es mit Punkt PHP. 729 00:34:46,330 --> 00:34:49,750 So dass wir diesen Operator nicht in C. Dieser Punkt-Operator ist 730 00:34:49,750 --> 00:34:54,520 eine erstaunliche Sache in PHP-- wenn Sie mit JavaScript oder Java vertraut sind, 731 00:34:54,520 --> 00:34:56,949 können Sie über die Plus- unterzeichnen, um die Verkettung zu tun. 732 00:34:56,949 --> 00:34:59,974 >> In C ist es ein Schmerz im neck-- und tut mir so leid, in p-Set von sechs, 733 00:34:59,974 --> 00:35:02,390 Sie gehen zu tun zu haben sind this-- es ist ein Schmerz im Nacken 734 00:35:02,390 --> 00:35:03,930 um Zeichenfolgen zu verketten. 735 00:35:03,930 --> 00:35:04,670 Warum? 736 00:35:04,670 --> 00:35:06,580 Nun, weil, wenn du hast ein String, der so lange ist, 737 00:35:06,580 --> 00:35:09,538 und eine andere Zeichenfolge, die so lange ist, Sie nicht einfach anschließen können sie zusammen. 738 00:35:09,538 --> 00:35:11,070 Was halten Sie statt dessen müssen in C tun? 739 00:35:11,070 --> 00:35:11,680 Ja? 740 00:35:11,680 --> 00:35:12,380 >> ZIELGRUPPE: [unverständlich] 741 00:35:12,380 --> 00:35:15,090 >> DAVID MALAN: Sie müssen malloc Gedächtnis, oder verwenden Sie ein Array auf dem Stapel. 742 00:35:15,090 --> 00:35:17,214 Und Sie haben tatsächlich zu machen, dass Array groß genug 743 00:35:17,214 --> 00:35:20,940 dies zzgl diese passen, plus dem umgekehrten Schrägstrich Null. 744 00:35:20,940 --> 00:35:24,994 Dann verketten sie zusammen mit rühren Katze oder manuell mit einer for-Schleife, 745 00:35:24,994 --> 00:35:26,160 oder eine beliebige Anzahl von Techniken. 746 00:35:26,160 --> 00:35:27,760 Und wir zeigen Ihnen ein paar in p-Set von sechs. 747 00:35:27,760 --> 00:35:29,080 >> Es ist ein Schmerz im Nacken. 748 00:35:29,080 --> 00:35:34,190 Und das ist wirklich, was ich meine zu dies gegenüber this-- wie C im Vergleich zu PHP. 749 00:35:34,190 --> 00:35:36,870 Sie haben gerade erhalten viel mehr Infos Funktionalität kostenlos, 750 00:35:36,870 --> 00:35:39,030 so dass Sie konzentrieren können, idealerweise auf den Spaß 751 00:35:39,030 --> 00:35:41,190 Teil der Codierung, die Projekt, das Sie lösen wollen, 752 00:35:41,190 --> 00:35:43,190 anstatt dem niedrigen Niveau Minutien. 753 00:35:43,190 --> 00:35:49,840 >> Also das nur erzeugt header.php oder footer.php basierend auf welches ich nennen. 754 00:35:49,840 --> 00:35:52,280 Und in der Tat, wenn ich in index.php, Ankündigung 755 00:35:52,280 --> 00:35:56,230 alles, was Statt changed-- Aufruf machen Kopf- oder Fußzeile zu machen, 756 00:35:56,230 --> 00:36:00,230 Ich rufe zu machen, gefolgt von der Name der Vorlage, die ich tun möchte. 757 00:36:00,230 --> 00:36:02,370 Und Sie werden das sehen, auch, in Problem stellte sieben, 758 00:36:02,370 --> 00:36:05,530 wobei wir ermöglichen es Ihnen, die Verwendung gleiche Funktion, um Trauben zu machen 759 00:36:05,530 --> 00:36:07,550 und Bündeln von verschiedenen Web-Seiten. 760 00:36:07,550 --> 00:36:10,570 >> Also anstatt zu wohnen viel mehr auf diesen details-- 761 00:36:10,570 --> 00:36:13,210 Sie finden das wieder zu sehen Problem Set seven-- lassen Sie uns 762 00:36:13,210 --> 00:36:16,850 Jetzt bei Beginn einer Lösung zu einer interessantes Problem. 763 00:36:16,850 --> 00:36:19,310 Bisher nichts, was wir haben getan hat gespeicherten Daten. 764 00:36:19,310 --> 00:36:22,920 In der Tat, das einzige Mal, dass wir gespeichert haben etwas, das wir in dieser Klasse gemacht habe 765 00:36:22,920 --> 00:36:31,030 wird, wenn wir hatten eine sehr einfache Demo Weile zurück, wobei wir verwendeten Datei IO in C, 766 00:36:31,030 --> 00:36:34,520 und ich denke, dass ich in meinem Namen eingegeben haben, und Hannah Name und Maria den Namen, 767 00:36:34,520 --> 00:36:37,610 oder vielleicht Andy Name und dann gespeichert wir eine CSV file-- 768 00:36:37,610 --> 00:36:39,430 Comma Separated Values ​​Datei. 769 00:36:39,430 --> 00:36:43,530 >> Und wir fopen-- verwendet Ich denke, wir verwendet fprintf soweit ich mich erinnere, 770 00:36:43,530 --> 00:36:44,910 und wir gerettet eine Datei. 771 00:36:44,910 --> 00:36:46,920 Nun ist, dass die einfachste Form einer Datenbank. 772 00:36:46,920 --> 00:36:50,230 Wenn Sie eine Website für das machen wollen Frosh IMs Programm, wobei Studienanfänger 773 00:36:50,230 --> 00:36:53,390 kann für eine Sportart, die Sie idealerweise zu registrieren, wollen etwas mit diesen Daten zu tun. 774 00:36:53,390 --> 00:36:55,370 Letzte Woche haben wir nichts mit dem data-- wir gerade gesagt, 775 00:36:55,370 --> 00:36:56,661 Sie registriert sind, nicht wirklich. 776 00:36:56,661 --> 00:36:58,950 Oder vielleicht mailte ich das Proctor, und das war es. 777 00:36:58,950 --> 00:37:02,110 >> Aber es wäre schön, wenn ich könnte zu geben, die Proctor eine CSV-Datei, 778 00:37:02,110 --> 00:37:03,340 wie eine Excel-Datei. 779 00:37:03,340 --> 00:37:05,090 Oder noch besser, wäre es schön, wenn ich könnte 780 00:37:05,090 --> 00:37:08,830 legte Namen diejenigen Verbraucher, Wohnheim Namen und all das 781 00:37:08,830 --> 00:37:11,740 in eine Datenbank, nur lebt für immer, 782 00:37:11,740 --> 00:37:13,530 bis ich wählen, um die Daten zu löschen. 783 00:37:13,530 --> 00:37:15,645 Eine Datenbank, die ermöglicht mir, um Informationen abzufragen. 784 00:37:15,645 --> 00:37:18,070 Und in der Tat, das ist, was eine Datenbank ist. 785 00:37:18,070 --> 00:37:20,470 >> Wir stellen heute, und nächste Woche, auch, eine Technologie, 786 00:37:20,470 --> 00:37:25,020 genannt SQL-- ein Structured Query Sprache, die eine andere Sprache ist. 787 00:37:25,020 --> 00:37:28,750 Es ist im Wesentlichen ein Programmier Sprache, aber für Datenbanken. 788 00:37:28,750 --> 00:37:31,760 Und eine Datenbank für jetzt, denken Sie an wie ein super schickes Version 789 00:37:31,760 --> 00:37:35,710 von Microsoft Excel oder Google Tabellenkalkulationen, oder Apple Numbers. 790 00:37:35,710 --> 00:37:39,950 Es ist in der Regel ein Programm, das ermöglicht Sie eine ganze Reihe von Daten zu speichern, 791 00:37:39,950 --> 00:37:43,960 in Zeilen und Spalten, ganz wie Sie vielleicht in Excel. 792 00:37:43,960 --> 00:37:47,100 >> Aber was ist schön, vor allem, wenn wir sind nicht super vertraut mit Excel, 793 00:37:47,100 --> 00:37:52,040 was SQL können Sie tun, ist diese Abfrage Informationen durch Schreiben Zeilen Code 794 00:37:52,040 --> 00:37:55,220 wo Sie können, auch wenn Ihr Datenbank verfügt über eine Million Zeilen in es, 795 00:37:55,220 --> 00:37:57,190 man kann die Dinge super schnell zu finden. 796 00:37:57,190 --> 00:37:59,950 In der Tat ist insbesondere Excel schlecht großer Datenmengen. 797 00:37:59,950 --> 00:38:02,460 Und in der Tat bis zu einigen Vor Jahren, stellte sich heraus, 798 00:38:02,460 --> 00:38:08,890 Excel würde nur erlauben Ihnen, zu speichern bis zu 65.535 Zeilen data-- denen 799 00:38:08,890 --> 00:38:12,020 klingt wie eine Menge, aber die Zeit war ich ein Doktorand, 800 00:38:12,020 --> 00:38:14,920 und ich erinnere mich Stolper dies, weil ich zu erzeugen 801 00:38:14,920 --> 00:38:17,900 CSV-Dateien für meine Forschung und ich wollte sie schnell zu analysieren 802 00:38:17,900 --> 00:38:19,530 nur durch die Öffnung in Excel. 803 00:38:19,530 --> 00:38:23,730 Natürlich, mein Computer ist abgestürzt, denn ich hatte mehr als 65.000 Zeilen. 804 00:38:23,730 --> 00:38:27,210 >> Aber woher die 65.535 kommen aus? 805 00:38:27,210 --> 00:38:29,670 Was Microsoft tut, vermutlich? 806 00:38:29,670 --> 00:38:32,430 Wenn Sie gut mit Ihren Potenzen von zwei sind? 807 00:38:32,430 --> 00:38:37,160 Ja, wurden sie mit einer 16-Bit- Wert, um die Zeilennummer dar. 808 00:38:37,160 --> 00:38:41,310 Und zwei bis 16 65,536-- minus eins, denn wenn man 809 00:38:41,310 --> 00:38:45,414 Null-Index bedeutet, dass war die die meisten Anzahl von Zeilen ich haben könnte. 810 00:38:45,414 --> 00:38:46,830 Und es war nur eine Design-Entscheidung. 811 00:38:46,830 --> 00:38:52,760 Durch die Einsparung von 16 Bit, mich beschränkt sie 16.000 Zeilen anstelle von 4 Milliarden 812 00:38:52,760 --> 00:38:54,322 die ich könnte im Idealfall gehabt. 813 00:38:54,322 --> 00:38:57,030 Aber jetzt sind wir zu gehen präsentieren diese mehr in einem Web-Kontext. 814 00:38:57,030 --> 00:39:00,390 Und was ist schön zu SQL ist, dass selbst aber es ist ziemlich mächtig und ziemlich 815 00:39:00,390 --> 00:39:04,050 anspruchsvoll, es läuft wirklich bis zu vier Tastenbetätigungen, vier 816 00:39:04,050 --> 00:39:08,060 Schlüsselfunktionen, wenn Sie will-- wählen, zum Abrufen von Daten, die Suche 817 00:39:08,060 --> 00:39:12,510 für Daten; zu löschen oder die Löschung der Daten; Einsatz für das Hinzufügen von Zeilen in die Datenbank; 818 00:39:12,510 --> 00:39:13,410 und Aktualisierung. 819 00:39:13,410 --> 00:39:17,010 Also, wenn Sie jemals Google verwendet haben Tabellenkalkulationen, Apple-Zahlen, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, die Sie ausgeführt haben, sowie wahrscheinlich alle 821 00:39:19,310 --> 00:39:22,530 dieser Operationen wie einem Menschen durch nur mit der Tastatur und mouse-- 822 00:39:22,530 --> 00:39:26,050 Einfügen von Daten, mit deinen Augen auswählen oder nach Daten, 823 00:39:26,050 --> 00:39:28,360 oder Aktualisieren von Daten oder Löschen von Daten. 824 00:39:28,360 --> 00:39:29,870 >> Also, was bedeutet das? 825 00:39:29,870 --> 00:39:34,300 Nun, in der CS50 vorinstalliert IDE ist ein Programm namens MySQL. 826 00:39:34,300 --> 00:39:37,050 Es ist ein freies Open-Source- Datenbank, die super beliebt ist. 827 00:39:37,050 --> 00:39:40,590 Book, zum Beispiel, verwendet er hierzu Tag unter anderem Werkzeuge, die sie verwenden. 828 00:39:40,590 --> 00:39:44,300 Und eine Menge sehr beliebte Websites verwenden es zu einem großen Teil, weil es schnell, 829 00:39:44,300 --> 00:39:45,230 und weil es kostenlos ist. 830 00:39:45,230 --> 00:39:46,820 Wenn auch sicherlich Alternativen existieren. 831 00:39:46,820 --> 00:39:49,580 Und einige von euch vielleicht mit plantschen Alternativen für Abschlussarbeiten. 832 00:39:49,580 --> 00:39:55,330 >> Dies ist ein Screenshot, inzwischen von ein webbasiertes Tool namens phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Es ist ein Zufall, dass Diese Web-basierte Tool ist auch 834 00:39:58,260 --> 00:40:01,720 in einer Sprache verfasst, PHP, aber, was es tun soll 835 00:40:01,720 --> 00:40:04,620 wird uns eine web-basierte Schnittstelle zu einer Datenbank. 836 00:40:04,620 --> 00:40:07,180 Weil MySQL typischerweise etwas, historisch, Sie 837 00:40:07,180 --> 00:40:08,770 wäre nur mit interagieren mit einer Befehlszeile. 838 00:40:08,770 --> 00:40:10,811 Und es wäre super ärgerlich und arkane zu haben, 839 00:40:10,811 --> 00:40:14,487 , Textbefehle eingeben, um zu wählen Daten, Einfügen von Daten, und die Daten zu löschen. 840 00:40:14,487 --> 00:40:16,820 So dass einige Leute auf dem Internet schrieb ein web-basiertes Programm 841 00:40:16,820 --> 00:40:18,900 daß lassen Sie es uns zu verwalten die Daten in der Datenbank. 842 00:40:18,900 --> 00:40:23,040 Es ist wie Doppelklick auf Excel und Ausführen eines webbasierten Version davon. 843 00:40:23,040 --> 00:40:26,370 >> Und was wirst du dies für verwenden möchten letztlich nächste Woche, die noch nicht in p-Set von sechs, 844 00:40:26,370 --> 00:40:28,680 aber ist es, etwas zu bauen genannt CS50 Finanzen, das 845 00:40:28,680 --> 00:40:32,630 wird eine Datenbank haben, Benutzer mit Benutzernamen und Kennwörter, 846 00:40:32,630 --> 00:40:34,860 Dollar beläuft, dass sie haben in ihre Bankkonten. 847 00:40:34,860 --> 00:40:37,280 Es wird etwas, das Sie zu speichern verwenden 848 00:40:37,280 --> 00:40:39,910 die Symbole und die Mengen der Bestände, die Benutzer 849 00:40:39,910 --> 00:40:42,567 haben mit virtuellen gekauft Dollar, die Sie ihnen geben. 850 00:40:42,567 --> 00:40:44,900 Und es geht um den Benutzern zu ermöglichen um für Ihre Website registrieren, 851 00:40:44,900 --> 00:40:47,190 so dass auch Ihre Freunde einzustellen, können auf Ihre Website 852 00:40:47,190 --> 00:40:49,360 und tatsächlich zu registrieren, melden Sie sich an, und spielen, um 853 00:40:49,360 --> 00:40:52,807 und versuchen, Fehler im Code zu finden, und versuchen, Fehler in Ihre Website zu finden. 854 00:40:52,807 --> 00:40:55,390 Und sie werden einfach registrieren, indem Zugabe selbst effektiv 855 00:40:55,390 --> 00:40:58,120 über Code, den Sie schreiben, um Ihre Datenbank. 856 00:40:58,120 --> 00:41:02,470 >> Zum Beispiel, eine Quick Screenshot ist dies von welchem ​​eine Datenbank aussehen könnte. 857 00:41:02,470 --> 00:41:05,190 Dieses wurde aus einem im vergangenen Jahr solutions-- 858 00:41:05,190 --> 00:41:07,760 Das ist wie ein Mini-Excel Datei, in unserer Datenbank gespeichert sind, 859 00:41:07,760 --> 00:41:09,950 in dieser Software namens MySQL gespeichert. 860 00:41:09,950 --> 00:41:13,260 Auf der linken Seite, habe ich anscheinend gegeben jedem Anwender eine eindeutige Nummer. 861 00:41:13,260 --> 00:41:16,200 In der zweiten Spalte, ich gegeben haben jeder ein Benutzer meine eigene name-- 862 00:41:16,200 --> 00:41:16,880 darunter. 863 00:41:16,880 --> 00:41:21,430 Und auf der rechten Seite, Ich habe sie einen Hash gegeben. 864 00:41:21,430 --> 00:41:26,760 >> Nun ist dies eigentlich ein Passwort, aber es ist nicht ein Klartext-Passwort. 865 00:41:26,760 --> 00:41:30,160 Es ist ein verschlüsseltes Passwort, wenn Sie werden, oder eine Hash-Passwort. 866 00:41:30,160 --> 00:41:32,000 Was wir antworten bald kommen. 867 00:41:32,000 --> 00:41:34,340 >> Aber wenn Sie je gelesen habe ein Artikel darüber, wie 868 00:41:34,340 --> 00:41:37,950 Ihr Passwort zu einem bestimmten Bank oder einige Website beeinträchtigt gewesen sein könnte, 869 00:41:37,950 --> 00:41:39,630 es in der Regel bedeuten, kann eines von zwei Dingen. 870 00:41:39,630 --> 00:41:42,780 Also das ist nur ein Auszug aus sechs Nutzer. 871 00:41:42,780 --> 00:41:45,460 Alle von euch jetzt herausfinden können erfolgt über Hacking oder rissiger 872 00:41:45,460 --> 00:41:47,690 was Passwörter unserer sechs Personen sind. 873 00:41:47,690 --> 00:41:49,720 Aber wenn Sie jemals bekommen haben eine Warnung oder eine Entschuldigung 874 00:41:49,720 --> 00:41:52,803 von einem Unternehmen oder eine Website Sprichwort, sorry, brach ein Hacker in unsere Datenbank, 875 00:41:52,803 --> 00:41:56,360 Sie sollten wahrscheinlich ändern Passwort vergessen, was könnte das bedeuten? 876 00:41:56,360 --> 00:41:59,670 >> Nun, man könnte das bedeuten, Unternehmen mehr schwachsinnig gewesen, 877 00:41:59,670 --> 00:42:03,630 und wurde vergessen Speichern in einer Spalte wie diese, unverschlüsselt. 878 00:42:03,630 --> 00:42:05,840 Was bedeutet, den Gegner, , die die Datenbank gestohlen, 879 00:42:05,840 --> 00:42:07,440 buchstäblich kennt Ihre Benutzername und Passwort. 880 00:42:07,440 --> 00:42:08,960 Das ist die denkbar schlechteste Szenario. 881 00:42:08,960 --> 00:42:11,710 Und wie Sie in p-Set zu sehen sieben, so leicht zu vermeiden. 882 00:42:11,710 --> 00:42:15,624 Es gibt absolut keine Entschuldigung dafür, dass Form der Dummheit in der heutigen Internet. 883 00:42:15,624 --> 00:42:18,540 Two-- und wir werden einige Artikel finden um die Tatsache bezeugen, dass diese immer noch 884 00:42:18,540 --> 00:42:21,710 passiert, nonetheless-- zwei, vielleicht der Gegner 885 00:42:21,710 --> 00:42:23,840 stahlen diese Version der Datenbank. 886 00:42:23,840 --> 00:42:27,110 Welche ist immer noch Art von schlecht, denn jetzt sie wissen, dass ich sechs Kunden, 887 00:42:27,110 --> 00:42:29,270 Ich weiß, dass die Benutzernamen dieser sechs Kunden, 888 00:42:29,270 --> 00:42:32,910 und ich weiß, das verschlüsselte Versionen oder die gehashten Versionen 889 00:42:32,910 --> 00:42:34,340 Anzahl an sechs Kunden Passwörter. 890 00:42:34,340 --> 00:42:37,010 Aber jeder von euch, die vielleicht getan haben [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 wo Sie geknackt Passwörter oder nahmen eine zu dieser Version des Problems zu suchen 892 00:42:41,150 --> 00:42:46,280 Set, warum ist es immer noch ein wenig besorgniserregend wenn der Gegner kennt Ihre Hash- 893 00:42:46,280 --> 00:42:47,435 Passwörter? 894 00:42:47,435 --> 00:42:49,732 >> ZIELGRUPPE: weil sie geben Sie die ganze Wörterbuch 895 00:42:49,732 --> 00:42:50,690 in die Hash-Funktion. 896 00:42:50,690 --> 00:42:54,520 Und wenn Sie Ihr Passwort ein Wörterbuch Wort, [? sie können einfach match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID MALAN: Genau, der Widersacher kann nur Code schreiben, wie einige von euch 898 00:42:57,640 --> 00:43:00,526 hat für [? Hacker?] 2, wobei Sie überlaufen 899 00:43:00,526 --> 00:43:03,400 alle Wörter in dem Wörterbuch, oder alle möglichen Kombinationen von A 900 00:43:03,400 --> 00:43:06,610 bis Z und einem durch nine-- die wie eine Menge ertönt, und es ist. 901 00:43:06,610 --> 00:43:08,361 Aber für einen Computer, es ist verdammt schnell. 902 00:43:08,361 --> 00:43:10,610 Und war in der Tat, dass die Punkt [? Hacker 2,?] War 903 00:43:10,610 --> 00:43:12,540 In den Sachen, die zu nehmen buchstäblich sieht so aus, 904 00:43:12,540 --> 00:43:14,900 und Reverse Engineering was es eigentlich war. 905 00:43:14,900 --> 00:43:17,270 >> Also werden wir prüfen, wie wir können, speichern diese effizienter. 906 00:43:17,270 --> 00:43:20,210 Es stellte sich heraus, zum Glück in MySQL, gibt es werde Datentypen sein. 907 00:43:20,210 --> 00:43:22,800 Und einer der Spaß Teile zu Datenbank-Design, um ehrlich zu sein, 908 00:43:22,800 --> 00:43:25,810 ist eigentlich die Entscheidungen für sich selbst Wie sollten Sie die Daten dar? 909 00:43:25,810 --> 00:43:29,630 Sollten Sie stellen eine Telefonnummer als int, wie eine große Anzahl oder eine lange? 910 00:43:29,630 --> 00:43:31,630 Oder haben Sie es wirklich tun als eine Folge von Zeichen? 911 00:43:31,630 --> 00:43:33,780 Und es kann sehr werden nicht-triviale Auswirkungen dieser. 912 00:43:33,780 --> 00:43:36,714 >> In der Tat, eine der frühestens Spaß germane Geschichten 913 00:43:36,714 --> 00:43:39,880 ist, wenn Mark Zuckerberg baute Facebook wurde ursprünglich geschrieben, 914 00:43:39,880 --> 00:43:42,300 und ist immer noch weitgehend in PHP geschrieben. 915 00:43:42,300 --> 00:43:45,400 Und eine der größten Herausforderungen, sie früh wurde die Skalierung konfrontiert. 916 00:43:45,400 --> 00:43:48,820 Als sie gehalten Zugabe Schule nach Schule nach der Schule, nach meinem Wissen, 917 00:43:48,820 --> 00:43:51,639 einer der ursprünglichen Lösungen war im Wesentlichen zum Kopieren und Einfügen 918 00:43:51,639 --> 00:43:53,430 einige der Datenbanken und ein Teil des Codes, 919 00:43:53,430 --> 00:43:55,346 so dass Harvard war auf einem eigenen Server läuft, 920 00:43:55,346 --> 00:43:56,995 und MIT auf einem eigenen Server lief. 921 00:43:56,995 --> 00:43:59,120 Und das war, warum, für einige von euch, die sich vielleicht erinnern, 922 00:43:59,120 --> 00:44:01,510 Sie konnte nicht haben Freunde in anderen Netzwerken. 923 00:44:01,510 --> 00:44:05,050 >> Sie haben wahrscheinlich nicht zu haben Freunde MIT oder Harvard vor 10 Jahren oder so, 924 00:44:05,050 --> 00:44:07,467 aber man konnte nicht Netze umspannen für die teilweise aus diesem Grund. 925 00:44:07,467 --> 00:44:10,550 Und eine der größten Herausforderungen für die Mark und für Unternehmen wie Facebook 926 00:44:10,550 --> 00:44:13,460 ist eigentlich Umgang mit Hunderten und Tausende und Millionen 927 00:44:13,460 --> 00:44:14,460 der Anforderungen pro Sekunde. 928 00:44:14,460 --> 00:44:16,501 Also das, was wir beginnen reden über diese Woche 929 00:44:16,501 --> 00:44:19,860 sind wirklich relevant für sein Schreiben guter Software und Volksmund 930 00:44:19,860 --> 00:44:23,040 erfolgreiche Werkzeuge, können viele Benutzer zu handhaben. 931 00:44:23,040 --> 00:44:25,460 >> Also werden wir über Dinge zu sprechen wie Indizierung und Suche, 932 00:44:25,460 --> 00:44:26,910 aber das ist für heute. 933 00:44:26,910 --> 00:44:28,780 Wir werden Sie für mehr am Mittwoch zu sehen. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUSIC - "Seinfeld" THEMA] 936 00:44:33,902 --> 00:44:35,943 DAVID MALAN: Sie können auf , und subtrahieren Sie von ihm. 937 00:44:35,943 --> 00:44:38,859 Und Sie müssen nicht mit Stick manche vorbestimmte Menge an Speicher. 938 00:44:38,859 --> 00:44:40,580 Nun, was ist, dass geht zu nennen? 939 00:44:40,580 --> 00:44:42,369 >> Sprecher 1: Nun, was ist los? 940 00:44:42,369 --> 00:44:43,535 Sprecher 2: Was meinen Sie damit? 941 00:44:43,535 --> 00:44:44,451 Er geben einen Vortrag. 942 00:44:44,451 --> 00:44:47,650 DAVID MALAN: Und wir können a verwenden Funktion namens malloc zu memory-- 943 00:44:47,650 --> 00:44:50,050 >> Sprecher 1: Warum werden die Arme bewegen? 944 00:44:50,050 --> 00:44:52,450 >> Sprecher 2: Nun that's-- Sie wissen, das ist normal. 945 00:44:52,450 --> 00:44:57,162 Es ist genau wie er gerade große Würste hängen dort. 946 00:44:57,162 --> 00:44:59,040 >> Sprecher 1: Das ist normal? 947 00:44:59,040 --> 00:45:03,096 >> Sprecher 2: Ja, ich denke wir einfach davon ausgehen, er versehentlich 948 00:45:03,096 --> 00:45:06,840 ersetzt sein Deodorant mit Sekundenkleber. 949 00:45:06,840 --> 00:45:07,608