[Musikwiedergabe] DAVID MALAN: Dies ist CS50 und Dies ist der Beginn der achten Woche. Und wir sind so aufgeregt, willkommen Rücken, große Überraschung, CS50 eigenen Ramon Galvan, eine steigende Senior, der gewesen ist die Ausgaben der letzten Monate Seit Juli in LA, in Hollywood, buchstäblich an einem brandneuen TV Show namens Colony, der Schöpfer von denen ist eigentlich ein Harvard Alaun sich. Und so sind wir sehr gespannt, das zu sehen Debüt auf der USA-Netzwerk im Januar dieses Jahres. So bleiben dafür gestimmt, und für mehr Ramon für den kommenden Wochen. Wissen jetzt, dass das Ende nahe ist. Und was das bedeutet, ist, dass es nicht alle, dass viel von CS50 verlassen, traurig zu sagen. Wir haben nur drei Problem Sätze left-- es gibt Problem Set six-- die in ist Ihre Hände jetzt oder werden es bald sein, im Laufe dieses week-- soll überbrücken unsere Welten von der Kommandozeile aus, in dem wir haben mit die meiste Zeit verbracht C, und die Welt der Web-Programmierung. Nun, Sie werden eine Menge Ideen zu sehen von der Kommandozeile arbeiten geliehen, sondern auch eine Menge neuer und interessante Ideen , die auch gehen Germane für sein werden mobile Anwendungen und für Technik, allgemeiner, mit dem Sie Jungs sind alle vertraut heute auf Laptops und Handys und dergleichen. So werden Sie nicht umsetzen eine Web-Seite, oder eine Website- an sich, sondern eine tatsächliche Web-Server. Sie werden den Rest der Web-Server zu schreiben in C, deren Zweck im Leben geschrieben ist die HTTP-Anfragen, diese zu empfangen virtuelle Umschläge wir reden immer zu, und tatsächlich zu reagieren entweder mit einige statische content-- wie ein Punkt HTML Datei oder ein Punkt JPEG oder jede andere Anzahl von Dateien, oder sogar eine PHP-Datei, wodurch Ihre Web- Server wird, dass PHP interpretieren Code und ausspucken die Ergebnisse. Jetzt haben wir Ihnen zur Verfügung gestellt einiges an Rahmen für es-- Tat die Verteilung Code für Problem Set von sechs ist mehr als 1000 Zeilen lang, ein Viele von denen Kommentare, fair-- zu sein aber das ist wirklich bedeutete, um eine Chance sein auf Ihre Hände schmutzig Tauch in einer ziemlich großen Projekt dass wir sehr spezifisch geschnitzt aus Stücke für Sie, so dass wirklich beim Beenden von CS50 und geben Sie die reale Welt der Programmierung und wollen plantschen in eine beliebige Anzahl von Projekten, Sie werden viel mehr haben Komfort das Herunterladen einige Quelle Code, einige Open-Source- Projekt auf dem Web, und Tauchen in und bei der Änderungen, die Sie für richtig halten. Problem stellte sieben wird sich über sein oder kreiere deine eigenen Web-basierte Anwendung das braucht dynamische Eingabe und produziert dynamische Ausgabe in Form eines etrade.com artigen Website. Und Problem stellte acht wird noch konzentrieren sich auf eine andere Sprache wie JavaScript bekannt. Inzwischen hat die endgültige Projekt ist am Horizont. Die so genannte Pre-Vorschlag ist auf eine Woche von heute. Pre-proposal-- pro die Spezifikation, die auf CS50 ist website-- ist ist eine ziemlich lässige Gelegenheit für Sie ziemlich knappe E-Mail senden auf die Lehre Lands nur um ihn zu benachrichtigen oder ihr von dem, was Sie denken, um benutzen ihn oder sie als Resonanzboden. Und haben eine geistige Gesundheit check-- ob du denkst über zu Abbeißen viel oder vielleicht zu wenig, oder vielleicht haben Sie keine Ahnung haben, und wollen in ein Gespräch zu verwickeln. Danach ist ein Vorschlag und Lagebericht, die sogenannte CS50 hackathon hier Cambridge für Harvard und Yale Studenten gleichermaßen. Ist das endgültige Projekt Implementierung ist dann fällig. Und dann ein CS50 Messe hier in Cambridge, sowie ein weiteres in New Haven. So den Vorschlag, einen Blick auf der Website für die dieser Angaben. Aber spannender ist auch ein Gelegenheit, Ihre Hände schmutzig zu machen, und Sinne öffnen, um eine ganze Bündel von Themen und Tools und Techniken, die den Charakter von Hilfs In den Kernlehrplan des Kurses, aber dennoch zusammen. Und auch wunderbar Trittsteine ​​zu tut wirklich cool, dass Abschlussarbeiten gehen weit über Material, das wir behandelt haben formal Problem setzt oder in der Vorlesung. So gehen Sie zu CS50-Website für die ganze Liste von Seminaren. Wenn Sie noch nicht wissen zu registrieren, ist das in Ordnung. Gehen Sie vor und melden Sie sich noch und wir werden Follow-up mit einer Live-Streaming-Link, Tag und Uhrzeit sind auf der Website. Und alles wird aufgezeichnet und online zu stellen wenn Sie nicht machen das bestimmten Tagen und Zeiten. , Was vor uns liegt thereafter-- gut, Selbstverständlich gibt es die CS50 Hackathon. Dieses Foto, Rückruf, von Woche Null angenommen rund 04.00 Uhr an einem Abend in den vergangenen Jahren. Der CS50 fair, wieder was findet in beiden Städten zu nehmen. Und dann, um die Pflanze Samen, auch wenn wir noch haben einen Monat plus links Semester, wenn Sie möchten, dass CS50 eigenen Lehr beitreten Personal und Sie starten möchten darüber nachzudenken, zu einem CA, oder Lehr Kerl, weiß, dass Wir beginnen im Gespräch mehr darüber noch in diesem Semester. Aber hier abgebildet ist die meisten der diesjährigen Team. Und so PHP-- und ich war so traurig, letzte Woche, dass [? Allyse?] Kindly ging an den Anstrengungen zu bekommen uns diese wundervollen Requisiten dass ich nicht am Ende mit, so dass es wirklich nur sah irgendwie dumm dass wir eine Schaufel sitzen hier alle Tag am vergangenen Mittwoch, und ein wenig Löffel. Aber dies war mein metaphorische Weg, zu versuchen, um zu malen das Bild der Grund, warum wir den Übergang von C in einer Sprache wie PHP. Und dasselbe kann von jeder sagen Anzahl der languages-- Java, Python, Ruby oder Bündeln von Andere-- aber während in C, zum Beispiel ein Programm schreiben, in C kann typischerweise aussehen nehmen einen Löffel wie dieser und Graben Sie ein Loch in die Boden, in den Sand oder Schmutz. PHP erlaubt Ihnen, viel, größere Bissen aus dem Problem, Schreiben weit weniger Code mit einem viel kleineren Werkzeug, denn es gibt so viel mehr Funktionalität in gesetzt. Nun, wenn wir waren wirklich dramatisch, wir würden etwas zu schaufeln haben hier, aber so sei es. Dessen der andere Metapher kamen wir auf Selbstverständlich ist, könnten Sie so etwas wie einem Schraubenschlüssel in so etwas wie einen Nagel einschlägt. Aber natürlich die rechte Werkzeug zu benutzen wird nicht so sehr die sein Sprache namens C-- und jetzt bin ich genervt [? Sanders,?] Wahrscheinlich, wir, dass later-- fixieren, so das richtige Werkzeug, um häufig verwenden ist nicht zu sein, Diese unterste Ebene Werkzeug. Und in der Tat, ist nicht eine Sprache, die C die meisten von euch jemals zu verwenden, oder unbedingt nutzen sollte erneut. Und in der Tat, ein wenig secret-- das einzige Mal, Ich benutze C selbst ist ziemlich genau zwischen September und Dezember eines jeden fall Semester. Und das ist, weil wir verwenden Sie es als Chance um die Grundlagen zu lehren der Programmierung, und mit ihr Computer Wissenschaft Fundamentaldaten Strukturen, Algorithmen und like-- aber sehr schnell werden Sie jetzt sehen, dass der Syntax und die Ideen zugrunde liegenden C- sind so wunderbar bis hin zu modernen übertragbar höheren Sprachen, wie PHP und Python und Perl und Java und Objective-C- eigentlich nicht so sehr, Objective-C-, aber Swift, diese neueren Sprachen, die viele von Ihnen dann plantschen mit Ihnen Abschlussprojekt. So ohne weiteres lassen Sie uns wirklich Verwendung von PHP, um einige Probleme zu lösen. Daran erinnern, dass schon früh, letzte Woche, wir haben nur verwendet CS50 IDE, Wir schrieben ein dinky kleine Programm dass gerade gesagt, "Hallo Welt." Und dann gespeichert Ich es in eine Datei namens hello.php. Und dann lief ich diesen Befehl. Und warum? In Englisch, was ist denn hier los? Was sollte ich tun, wenn Ich diesen Befehl lief? Ja? Publikum: Es gibt einige PHP-Funktion das liest, was in-- versteht, dass. DAVID MALAN: Gut, es gibt einige Funktion PHP-- und lassen Sie mich genauer zu sein, es gibt ein Programm namens PHP, auch bekannt als Ein Dolmetscher, die versteht, der Inhalt hello.php, und interpretiert es oben nach unten, von links nach rechts, und tut, was diese Befehle sagen. Die Befehle in hello.php natürlich Nur code-- Funktionen beziehen und Variablen und Schleifen und dergleichen, die wir uns haben angefangen zu schreiben in PHP. Aber im Gegensatz zu C, das ist eine kompilierte Sprache, PHP schreiben Sie einfach es, und führen Sie es. Sie überspringen diese Mittels Schritt des Umwandlung in Nullen und Einsen, und dann läuft es. Und so was ist eine Vorteil davon? Warum machen wir das Überspringen der Schritt? Warum moderneren Sprachen neigen dazu, diesen Schritt überspringen? Was war der Nutzen? Oder einfach nur intuitiv? Auch wenn wir nicht haben vorher geschrieben viel PHP, was vorteilhaft zu nicht Kompilieren Sie Ihren Code denken Sie? Nein? Nicht zu begehen? Kopf kratzen? Ja. ZIELGRUPPE: Mehr Dynamik. DAVID MALAN: Mehr Dynamik? Was meinst du? ZIELGRUPPE: [unverständlich] DAVID MALAN: OK, gut, so in Abhängigkeit von der Eingabe, Sie müssen nicht, um es jedes Mal zu kompilieren. Und es ist wirklich so einfach wie dass-- was ist der Punkt, der Weiterbildung um Ihren Code zu kompilieren? Dies ist nur ein Schritt, der ist making-- dies erfordern, In den vergangenen Wochen, zweimal so viele Schritte wie das Starten Ihres Programms. Es ist sinnvoll gewesen, zu sehen, dass Sie sehen Sie einige Fehlermeldungen und so weiter, aber es ist immer noch nur eine lästige Schritt. Und so Programmierer realisiert im Laufe der Zeit, warum nicht wir Schreiben beginnen Sprachen, die nicht tun, müssen die ziemlich mechanischen Schritt so dass nur schreiben kann Ihr Code und führen Sie es. Aber was war der Preis dass wir sahen, den wir bezahlt letzte Woche, mit einem besonderen Beispiel? Ja? Geschwindigkeit. Also [? was ist?] Dolmetscher etwas langsamer, DASS in Nullen und Einsen sind schön und schnell für einen Computer zu verstehen, denn die Intel CPU, oder was immer es ist, nur versteht, was los ist auf mit jener Muster von Bits. Wohingegen der Dolmetscher ist ein Programm, das wirklich muss den ASCII-Quelle gelesen Code, den Sie geschrieben haben, und wandeln es, so zu sprechen, oder herausfinden, wie es wandelt schließlich in Nullen und Einsen. So dauert es nur ein wenig Bit eines Performance-Einbußen. Also ist es ein bisschen wie ein Kompromiss. Nun, wenn wir dies tun, hier, lass mich gehen Sie vor und tun ein Beispiel wie folgt. Wenn ich hier zu gehen, neue Datei, ich werde , dies erneut zu speichern ist hello.php. Und jetzt werde ich weitermachen und sagen: "Print Hallo Welt" - und daran erinnern, dass ich Druck verwenden, weiß ich nicht müssen Druck-F zu verwenden. Und jetzt hier unten, wenn ich PHP von hello.php tun, huh-- I nicht scheinen, um es zu interpretieren haben. Was hab ich falsch gemacht? Publikum: Die abgewinkelten Armbänder. DAVID MALAN: Ja, müssen Sie dass Winkel bis oben. Also, es ist irgendwie ärgerlich, aber Sie schnell daran gewöhnen. Wenn ich PHP-Code schreiben, ich in der Regel müssen Sie das Programm zu sagen, oder sagen Sie den Interpreter, hey PHP, hier kommt einige PHP-Code. Und dann für eine gute Maßnahme, würde ich schließen diese nicht mit diesem, sondern mit nur Fragezeichen Winkel Halterung, so dass nun hier unten, wenn ich dies wieder, jetzt Ich bekomme das gewünschte Ergebnis. Nun wollen wir tun eine leichte Optimierung, gerade so, dass man es bisher gesehen haben. Dies ist eine Art ärgerlich, dass ich müssen PHP Raum hello.php laufen, weil ich in der Vergangenheit konnte nur schreiben dot Schrägstrich Programmname, die ganz nett ist. Es ist irgendwie eine bessere Benutzererfahrung. So stellt sich heraus, dies zu tun in PHP mit dem following-- I können diese ziemlich kryptisch verwenden Beschwörungsformel an der Spitze hier, was ist in der Regel ein Shebang genannt, wobei es sich um eine scharfe Symbol, so zu sagen, dies ist ein Paukenschlag oder einem Ausrufezeichen. Und das ist jetzt der Pfad zu einem Programm auf einer typischen Linux-System, wird Umgebung oder env genannt. Und dies line-- lange Geschichte short-- Linie eine gerade sagt, hey Computer, finden Sie das PHP Dolmetscher für mich in der Umwelt, Finden Sie es in Ihrem Gedächtnis, so zu sprechen. Und was ist nun schön, ist dass, wenn ich hier unten gehen, Ich kann tun, slash dot hallo dot php, oder-- hmm. Zugriff verweigert. Nun, Sie werden noch mehr davon zu sehen mit Problem stellte sieben, wenn Sie nicht bereits haben, mit Berechtigungen. Es stellt sich heraus, dass ich um diesen Befehl auszuführen genannt [? Chamod?] für den Wandel mode-- ein Plus x hello.php. Ich brauche [unverständlich] dies eine zusätzliche Schritt, der erzählt wird mein Computer, machen hello.php ausführbar. Und jetzt sehen, was happens-- dot Slash hello.php, es gerade läuft. Ich brauche nicht zu spezifizieren der Dolmetscher mehr. Und ich kann es noch schöner, immer noch, wenn ich dieses Ding umzubenennen. Wenn ich mich bewege hello.php nur Hello-- so feststellen, oben links, den Namen des Programms ist ja nun gerade hallo. Jetzt kann ich es aussehen wie ein C-Programm, obwohl es in PHP-- geschrieben oder offen gesagt eine beliebige Anzahl von anderen Sprachen. So Randverbesserung, keinen funktionalen Unterschied. Aber es ist nur ein wenig Neugier Jetzt, so dass Sie Programme schreiben in jeder Sprache, und der Benutzer nicht der Fall ist müssen wissen oder ignorieren, was diese sind. Nun, lassen Sie uns ein mehr überzeugendes Beispiel jetzt dass ich peitschte im Voraus. Und dies wird als quote.php. Und es ist online verfügbar. Und beachten Sie, dass es ziemlich short-- aber es ist ein Kommandozeilen-Programm, das ist gehen nachschlagen Aktienkurse für mich, was eigentlich los ist Germane zu sein, um Problem stellte sieben. Also mal sehen, was ich tue. Ganz oben Ich habe die offene Klammer Fragezeichen PHP. Dann habe ich diese Linie habe, wobei ich eine Datei namens functions.php-- erfordern wir werden sehen, mehr dazu in einem Bit, aber das ist, wie die C Version von scharfen gehören, wo willst du hin gehen schließen Sie eine andere Datei. PHP nennt es erforderlich, auch wenn es hat auch eine Include-Funktion. Und es stellt sich heraus, dass function.php ist nur etwas, schrieb ich vor der Klasse. Ich habe es im gleichen Verzeichnis, weil Ich wollte ausklammern einige Code dass wir möchten Sie vielleicht an anderer Stelle zu verwenden. In der Zwischenzeit können Sie wahrscheinlich folgern, was hier vor sich geht. Dies ist aus C-, aber ein wenig anders Was meine ich mit eine ordnungsgemäße Nutzung? Übersetzen Sie diese technisch. Unter welchen Umständen ich bin Beenden des Programms, oder Verlassen? Ja? Publikum: Wenn Sie nicht haben, zwei Kommandozeilenargumente. DAVID MALAN: Wenn ich nicht um Zeilenargumente zu befehlen. Und denken Sie daran, dass einer von denen, Argumente den Namen des Programms selbst. Und der zweite sein wird, ein anderes Wort I-Typ nach der Aufforderung. So wie C, dies ist meine Art Kontroll-, hat der Benutzer zusammenarbeiten und starten Sie das Programm, wie ich gedacht? Nun, es ist etwas, ein bisschen anders mit C- wir zunächst haben diese Dollar-Zeichen, und was ein Dollar- melden Sie bezeichnen in PHP? Nur eine Variable. Das ist allen-- nur eine Variable, gefolgt von Was immer Sie wollen, um tatsächlich nennen. Beachten Sie, gibt es etwas, fehlt in meinem PHP-Programm, so wie es fehlte letzten Woche, gegenüber C, das ist was? A-Typen, aber auch etwas anderes. Es gibt keinen etwas function-- Hauptfunktion. Es gibt keine Hauptfunktion. Sie starten nur schriftlich Ihr Code, ohne , über eine ziemlich willkürliche Sorgen Konvention der Namensgebung einige Standard Funktion main. So arg C ist einfach richtig eine globale Variable dass der Dolmetscher macht, mich zur Verfügung. Nun, das ist interessant. So schauen Zeug. Dollar sign Aktien werden an der links, das ist meine Variable. Auf der rechten Seite, gibt es offenbar eine Funktion in PHP namens Lookup, dass Ich bin vorbei mein letzter Kommandozeile Argument zu-- was auch immer das Wort ist. Und wir werden sehen, wie diese arbeitet in einem Augenblick. Und dann schließlich ich die Berichterstattung den Preis. Ich Ausdrucken ein Anteil der so und so. Und denken Sie daran, dies ist das Weg in PHP-- einer Weise in PHP-- wo Sie nicht haben, um zu tun das Dollarzeichen S mehr. Können Sie einfach geschweiften Klammern und stecken in einigen Variablen. Sie haben keine Sorgen zu machen Verwendung printf in der gleichen Weise. Und nebenbei, wenn Sie eine Variable setzen Innenseite der doppelten Anführungszeichen wie diese, Sie mit einem ausgefallenen Technik sind genannte variable Interpolation. Es bedeutet nur, stecken Sie die Variable in hier. Und nebenbei, einige von euch, die kommen, von anderen Programmiersprachen Hintergründe, Sie möglicherweise nicht in einfache Anführungszeichen rund Saiten, dies zu tun. Sie müssen doppelte Anführungszeichen zu verwenden, variable Interpolation an die Arbeit. Andernfalls werde man buchstäblich sehen diese geschweiften Klammern. So schließlich lassen Sie uns fortfahren und führen Sie diese. Lassen Sie mich mein Terminal ein wenig größer. Lassen Sie mich gehen Sie vor und führen Innenseite meiner Kursverzeichnis. [? CDsource?] [? AM?] [? Zitat?] PHP Zitat dot PHP, und ich werde nach etwas zu suchen wie GOOG, die ihre Tickersymbol ist, und eine Aktie der seinen neuen Namen, Alphabet Inc, kostet $ 717, ab heute. In Ordnung, wenn wir wollen, laufen diese wieder jemand haben ein anderes Börsenticker wollen sie sehen? Microsoft ist meiner Meinung nach diese, MSFT-- 53 $. Ich denke, Yahoo ist vielleicht. Und Facebook ist, dass. Also, was ist dieses Programm zu tun? Die Magie scheint eingebettet werden in dieser Lookup-Funktion. Werfen wir also einen Blick. Es stellt sich heraus, dass nicht kommt mit PHP, es ist in functions.php. Und wir werden nicht durch zu gehen Dieses sehr detailliert, aber beachten, das Wort hier ist dass auf der Linie sechs functions.php-- Ich habe buchstäblich sagen Funktion. Ich den Namen meiner Funktion. Ich geben Sie dann jede Argumente oder Parameter, Ich möchte, dass Funktion, keine Typen take--. Und dann habe ich umsetzen. Und ich werde meine Hand winken bei der Umsetzung, denn es ist ziemlich weit fortgeschritten rechts jetzt, aber wir werden es wieder zu sehen tatsächlich in einer Woche in Problem stellte sieben. Aber ich kann diese bereinigen, zu. Ich gehörte auch heutigen Code eine Version Zitat, das keine Punkt PHP-Datei hat. Denn das, was vermutlich auf die oben auf dem Programm mit dem Namen nur zu zitieren? Daß shebang-- die sogenannte ziemlich kryptisch Beschwörung das sagt PHP zu finden und dann führen Sie es auf mein Code hier. In Ordnung, so dass bringt uns, wo wir aufgehört letzten Zeit-- wenn auch mit einige fortgeschrittenere Beispiele. Haben Sie Fragen bisher ca. PHP oder was wir tun? NO- alles in Ordnung. Ja? Publikum: Im Inneren der HTML-Dateien zu tun Sie-- [? Tust du ?] [? nennen es einfach?] a [unverständlich] PHP-Datei? DAVID MALAN: Gute Frage. In einem Web-Kontext, der wir sind buchstäblich dabei, den Übergang, Sie nicht mit den so genannten Kram an der Spitze, da die Bahn server-- oft Programm namens Apache oder Microsoft IIS, Internet Information Server oder eine beliebige Anzahl von anderen Web-Server-Software, weiß, dass, wenn sie sieht, ein Punkt PHP-Datei, dass es sollte der Dolmetscher darauf ausgeführt werden. Es muss nicht bei dieser ersten Zeile zu suchen. Also dieser ersten Zeile Trick ist nur, wenn Sie Schreiben von Kommandozeilen programs-- die wir nicht super oft tun, aber es ist unsere Art zu überbrücken unsere C Beispiele, um jetzt unsere PHP. Lassen Sie uns also in der Tat, diese Welt zu überbrücken von der Kommandozeile Welt auf die Bahn indem Sie folgendermaßen vorgehen. Lassen Sie mich gehen Sie vor und ziehen hier für einen Moment. Wenn wir also einen Web-Server, oder besser wenn wir meinem Laptop hier, was werde ich wie folgt zu zeichnen. Und hier haben wir die Internet in irgendeiner Form. Und dann über hier, haben wir einen Server in einem building-- das ist, wie das Internet works-- und hier ist ein Server mit einigen Lichtern vielleicht. Was ist eigentlich los zwischen diesen beiden Verbindungen? Also in diesem Gebäude ist ein Web-Server. Das ist nur ein Computer- dass läuft einige Betriebs system-- vielleicht die kostenlose Software namens Apache, die CS50 IDE läuft. Kann man so eigentlich denke dieses Gebäudes als das Gebäude in denen CST0 IDE wird gespeichert. Das ist, wo alle von euch haben Konten, in denen alle von Ihnen Ihren eigenen Web-Server Laufen, euch alle Ihre eigene eindeutige URLs, als wir begannen zu diskutieren, und du wirst mehr zu sehen in P. stellte sechs ein. Hier ist mein Laptop irgendwo sonst im Internet. Und so, wenn ich Besuch einer URL, die angehört Für mich ist, dass Internet-Datenverkehr an den Server, der Server des Empfangen eines HTTP request-- wie ein Get index.html und es ist Beantwortung dieser Web-Seite. Das ist also der allgemeinen Paradigma. Der Erwägung, dass alles, was sich bis jetzt heute, alles, was Erst im Geschehen Grenzen dieses Gebäude. Ich war mit meinem Laptop, aber Ich wurde zu CS50 IDE verbunden sind, so alle diese Programme, die ich lief war im Inneren des Servers selbst. Aber jetzt, lassen Sie uns beginnen die Wiederverwendung von PHP einige aktuelle Programme zu schreiben, werden von einem Web-Server serviert. Und um dies zu tun, werde ich gehen in eine ganze Reihe von Beispielen dass diese Idee vorstellen hier. Also das ist ein bisschen eine andere Art zu beschreibt ein Programmierparadigma. Und in der Tat, wie Sie verlassen CS50 oder arbeiten an Abschlussarbeiten, oder nehmen einige folgen auf Klasse, werden Sie beginnen zu sehen, dass der world-- vor allem nachdem erwachsen mit Sprachen wie C die super günstigen level-- sind erkennen, dass es besser Möglichkeiten der Schreibsoftware. Es gibt bestimmte Muster, die Sie folgen können, bestimmte Formen der Organisation Ihrer Dateien und Wege der Benennung Ihrer Funktionen, so dass lange Geschichte kurz, hat die Welt kommen mit einem ganzen Bündel von Akronymen und Namen für Möglichkeiten der Programmierung. Dies sind nur Techniken, die Sie nutzen könnten. Und einer von ihnen wird als MVC, für Model View Controller. Und das ist nur für Jetzt, ein übermäßig kompliziert Art zu sagen, wie sollte man das Layout eine PHP-basierte Website, in unserem Fall. Wie sehen Sie Ihre Dateien zu organisieren, Wie organisieren Sie Ihre Logik, in einer Weise, die es leichter macht Schreiben komplizierter Websites? Und in der Tat, wir werden schnell bekommen es mit p-set sieben. So in der Welt der MVC, Sie gehen um zu sehen, dass unser Code kann in der Regel entweder als Modellcode gekennzeichnet werden, oder Controller-Code oder Code anzeigen. Und ich bin zu gehen vereinfachen sie als follows-- Der Controller ist die Gehirne von Ihrem Programm, es ist, wo alle der interessante Logik passiert. Also alles, was wir gewesen sind soweit in Klasse schreiben, ist eine Art, wie Controller code-- es Steuerung Ihr Programm, Ihre Loops, Ihrem Bedingungen, Ihre Funktionen und Variablen und so weiter. Ansichten, jetzt, sein werden, ein wenig näher, in der Welt des Web. Eine Ansicht ist die Ästhetik Ihrer Website. Es ist, was der Benutzer die Bilder sees--, die HTML-Tabellen, die HTML-Tags, und alle kommt, dass alle der flauschige ästhetischen Sachen, die nicht ist, dass schwer zu schreiben, aber genau das, was Sie erzeugen sind, ist die so genannte Ansicht, die Ästhetik. Und das Modell letztlich geht Datenbank stuff-- werden, wir tauchen in all starten desto mehr an diesem Mittwoch. So ist die Logik-Controller, Ansicht ist die ästhetische stuff, und das Modell sein wird, wo speichern wir unseren eigentlichen Daten. Also lassen Sie uns dies konkreter mit dem folgenden Beispiel. Ich werde in meinem Verzeichnis hier gehen der heutigen Quelle code-- von denen alle ist online verfügbar. Und ich werde in die Version Null. Und hier ist-- nennen wir es das lassen Version Null des CS50-Website. Es gibt nicht viel hier überhaupt. Es ist eine sehr einfache Webseite, die ist wahrscheinlich mit, was HTML tags-- gerade schätze aus der Vergangenheit Beispiele? Was ist das? H1-- wahrscheinlich für diesen großen mutigen Titel, dass logo up top, CS50. Und was sonst noch im Spiel? Ja? ZIELGRUPPE: Ungeordnete Liste. DAVID MALAN: Ungeordnete list-- so dass die UL-Tag und vielleicht ein paar LI-Tags. Und wenn Sie sich nicht erinnern diese, es ehrlich spielt keine Rolle. Dies sind flauschigen Art Details der Implementierung von HTML dass Sie schnell nachschlagen und Sie sind wieder auf dem Weg. Wir werden mehr von der Programmierung konzentrieren Ideen, die saftiger Stücke sind. Also lassen Sie uns einfach einen kurzen Blick auf die HTML-- und in der Tat wenn ich öffnen den Quelltext hier, yup, Das ist genau das, was hier vor sich geht. Es gibt eine UL-Tag. Innenseite, die verschachtelte ist es, LI-Tags. Dann lieh ich mir die URL des eigentlichen Lehrplan hier. Und dann in der lectures.php ist offenbar ein weiteres dynamisch generierte Seite das wird sich haben, lassen Sie uns see-- ah, Die ersten zwei Wochen der Vorlesung. So Woche null und Woche ein, lassen Sie uns Blick auf this-- wenn ich sehen Seite Quelle, auch super einfach. Diese sind an zwei Seiten führen genannt week0.php und week1.php. So betrachten nun, was passiert. Wenn ich auf week0.php klicken, meinen Laptop macht eine Anfrage für week0.php. Der Web-Server, auch bekannt als, CS50 IDE, erhält diese virtuellen Umschlag. Es ist zu sehen, eine Nachricht wie, bekommen week0.php. Es wird dann die Interpretation der Datei, top nach unten, nach links, um die Datei right-- genannt week0.php-- und spuckt die Ergebnisse. Also innerhalb der Datei, week0.php, muss die Steuerlogik, die Erzeugung wird Diese HTML, und wir werden bald sehen, dass. Aber jetzt lassen Sie mich an Wochennull klicken, und jetzt haben wir Mittwoch und Freitag, und jetzt haben wir die Folien langsam von Woche Null. Und Sie erinnern könnte Dieses von damals. Also das ist alles Website tut. Lassen Sie uns also überlegen, wie es ist, dies zu tun. Ich werde wieder in der go Quellcode hier, in CS50 IDE, und ich werde zu öffnen index.php. An der Spitze dieser Datei ist ein Bündel von Kommentaren. Und dann in der Mitte dieser Datei, es stellt sich heraus, es keine PHP-Code zu löschen. Denn wenn Sie nicht über einen der offene Klammer Fragezeichen PHP-Tags, Du bist frei, setzen Sie einfach HTML. Denn das, was die PHP- Dolmetscher tun soll, ist, wenn es auf diese file-- liest von oben nach unten, von links nach right-- nur interpretiert Code sieht sie zwischen diese spitzen Klammern Fragezeichen. Und alles andere, dass dies nicht der Fall erkennen, wie PHP, es spuckt gerade aus. HTML und gehört zu den Sachen es wird nur ausspucken. Also diese Datei haben könnte index.html genannt worden, aber ich bin alles, was die Benennung dot PHP als Sprungbrett. Lectures.php-- ähnlich berauschend, es ist nur einige HTML. Week0.php ähnlich nur einige HTML. Aber jetzt auf dem setzen lassen sprichwörtliche Engineering-Hut, und überlegen, wie wir diese verbessern. Es ist nicht schwer, dies zu tun, aber ich Art der in Kopieren und Einfügen übertragen. Und in der Tat, wenn ich zwei Wochen, können Sie weiß, was ich bin wahrscheinlich zu tun? Ich werde gehen, um week1.php, bin ich werde alles markieren. Ich werde es kopieren, einfügen in eine neue Datei namens week2.php, zwicken einige URLs, und sein auf dem Weg. Also, was wir auf der Basis in C gesehen schon, Dies fühlt sich nicht richtig, hoffentlich. Kopieren, Einfügen nur selten die richtige Lösung. Was können wir also beginnen zu tun, um dies zu verbessern? Wo liegen die Chancen für besseres Design? Als ich zu bekommen, Woche acht, es geht zu sein, wirklich ärgerlich wenn ich ändern wollen die Schriftart eines jeden von meine Seiten, oder wenn ich will die Struktur des Layouts ändern. Also, wo ist die Möglichkeit, für besseres Design? Nun, laßt uns überlegen, was ist für alle diese Dateien geteilt. Hier ist eine Woche, ist hier der Woche Null, hier ist lectures.php, hier ist index.php-- was dasselbe ist, und was anders ist, grob gesprochen, in jede dieser Dateien? Ja? ZIELGRUPPE: [unverständlich] DAVID MALAN: OK, gut. Also gibt es ein Muster, mit Sicherheit, wobei jedes Mal wenn ich wählen, Vortrag, den ich, Ich sollte Erzeugen eines sehr ähnlich aussehenden Seite. Und so ich vielleicht nutzen können die Tatsache, dass wirklich, wir bewusst numerisch indexiert unsere lectures-- wenn ich noch mehr setzen Wörter in Ihrer Antwort. Und was ist das einzige, was, wirklich, das ändert sich zwischen Woche one-- und lassen Sie mich nach unten scrollen, so ist es etwa in der gleichen place-- so ist hier Woche null, etwa an der Spitze. Hier ist eine Woche, Woche Null, eine Woche, Woche Null. OK, wörtlich, wenn Sie wissen kein Programm auch immer, das ist jetzt wie ein Pattern-Matching-Spiel. Also, was ist anders? Ja? ZIELGRUPPE: [unverständlich] DAVID MALAN: Gut, so der Titel verändert sich, immer so leicht. Null wird, natürlich, zu einem. Dasselbe ist in der H1-Tag passiert. Und wir wissen nicht recht sehen, daß es so einfach, weil die URLs sind ein wenig lang. Aber diese URLs werden leicht verändert. Aber was nicht verändert, ich wage heißt, die meisten der Inhalt des page-- der HTML-Tag ist das gleiche, ist der Kopf die gleichen sind, der Titel ist fast das gleiche, der Körper die gleiche ist, und fast alles andere ist gleich, mit Ausnahme diese kleinen zwickt. Wie können wir also zu gehen Factoring einige this out? Nun lassen Sie mich genau das vorschlagen daß in der nächsten Version. So, hier in der Version ein, ich habe die genaue gleichen dateien, plus ein paar andere. Hier ist index.php-- und selbst wenn Sie noch nie zuvor gesehen PHP, was tue ich wohl, diese zu lösen basierend auf problem-- was Sie hier sehen? Ja, das ist eine leichte Engagement? Nein? Ja, weitergehen. ZIELGRUPPE: [unverständlich] DAVID MALAN: Yep. ZIELGRUPPE: [unverständlich] DAVID MALAN: Ich brauche dich spreche nur ein wenig lauter. ZIELGRUPPE: [unverständlich] DAVID MALAN: OK, gut. Und ich think-- es war schwer zu Sie-- aber ich höre, denke, was Sie hinauswollen, dass die Tags, die gemeinsam bis oben waren, und die Tags, die auf die gemeinsame waren unten, haben nun berücksichtigt worden, oder welche Dateien verbannt? Header.php und footer.php-- und wir werden einige Tweaks zu machen adressieren die Sorge Sie gerade über die Zahlen Wechsel erhoben, für Beispiel, wenn ich Sie richtig gehört. Aber das scheint der Kern von ihm zu sein. Wenn es eine große Menge an Redundanz auf der oben auf der Seite, und eine große Menge an Redundanz an der Unterseite, wir buchstäblich nur Highlight und schneiden Sie, dass der Inhalt aus, legen Sie sie in einem separaten file-- wie die Idee der CSS, wo wir herausgerechnet sehr ähnliche Ästhetik setzen sie in einem separaten Punkt PHP-Datei, verwenden Sie die erfordern mechanism-- die ist wie Cis include-- die ist im Wesentlichen wie wenn man sagt gehen greifen die Inhalte der header.php, und kopieren Sie sie hier. Aber was das bedeutet, ist, dass jetzt in index.php, habe ich diese zwei Zeilen. In lectures.php ich auch diejenigen zwei Zeilen. In week0.php ich auch diejenigen zwei Zeilen. So, jetzt, wenn ich ändern wollen der Titel der alle meine Seiten, oder I, um das zu ändern Grundstruktur, Ich kann es jetzt nur an einer Stelle zu ändern, oder zwei places-- Kopf- und Fußzeile, beziehungsweise. Jetzt Ausgangs des Codes zu sehen ein wenig kryptisch, nicht wahr? Aber wenn Sie darüber nachdenken, was die Seite wird doing-- wenn ich Ihr Interesse an week0.php, genau wie auf der Zeichnung über hier-- wenn week0.php angefordert wird, was bedeutet das? Wörtlich ist diese Datei vom Browser angefordert. Die Web-server-- a.k.a. CS50 ID-- packt diese Datei week0.php und liest es von oben nach unten, von links nach rechts. Auf Leitung eins sofort trifft es offene Klammer Fragezeichen PHP, benötigen Kopf dot PHP, usw. was der PHP-Interpreter does-- das ist in die Bahn gebaut Server, weil wir vorkonfiguriert es Sie-- sie automatisch geht in header.php, kopiert den Inhalt, fügt sie hier. Aber dann die Dolmetscher Begegnungen Fragezeichen-Klammer zu, Es ist also alles getan zu denken. Jetzt ist es einfach blind spuckt out Zeilen zwei bis sieben, weil es nur reines HTML. Ruft die Linie acht, und das tut gleiche Magie again-- Öffnen der Datei, Greifen Sie den Inhalt, und ihnen zu verlangen oder sie einfügen dann rechts oder dort. Aber ich habe gerade einen Fehler hingewiesen. Dies ist ein Teilschritt rückwärts, denn wenn wir in header.php aussehen, Ich habe Art von schneiden eine Ecke. Welche Funktion hatte ich aufgeben, um um diese vertretbare besseres Design zu gewinnen? Ja? ZIELGRUPPE: [unverständlich] DAVID MALAN: Ja, ich Art der schnitt eine nicht-triviale Ecke. Sie wies darauf hin, dass das, was Änderung wurde war der Titel, die Anzahl der Titel, und die Zahl in der H1. Also meine Lösung war, OK, Lassen Sie uns die Seite umbenennen, nur, und nicht damit umgehen Problem auch immer. Also das ist eine teilweise Schritt nach hinten sicher. Aber was hier ist bemerkenswert, ist das, was ich getan habe, ansonsten berücksichtigt alle die gemeinsame Sachen. Und in footer.php, merke ich einkalkuliert Sie alle, dass, wenn auch geringeren, gemeinsame Sachen. Also muss ich irgendwie jetzt in der Lage zu sein, einen weiteren Schritt nach vorn, und beheben Dieser Titel Themen. Also lassen Sie uns tun. Lassen Sie mich in meine zweite Version gehen hier hat wieder, die die gleichen Dateien bis auf einen Neuzugang. Und es ist ein wenig mehr verbose, aber mal sehen, ob wir auseinander zu necken, was hier vor sich geht. Also anstatt erfordern header.php und footer.php, Ich scheine zu nur einer benötigt file-- genannt natürlich helpers.php. Und lassen Sie mich jetzt sehen vor, was innerhalb der helpers.php ist gerade ein Bündel von Funktionen dass ich schrieb, genau wie zuvor. Aber ich nannte es helpers.php. Nun offenbar, Linie drei und 10, ich bin ruft zwei functions-- machen header, footer machen. Diejenigen, nicht mit zu kommen PHP, schrieb ich denen mir. Und ich legte sie in helpers.php. Jetzt haben wir nur diese Syntax zu sehen einmal, und es war sehr kurz. Aber das ist offenbar ein Argument zu machen Header, die Funktion. Warum muss ich das wissen? Nun, hier ist eine enge paren, hier ist ein offener paren. Und selbstverständlich, wie in C, etwas zwischen den Klammern ist eine input-- oder Argument an die Funktion. Was ist der Datentyp dieses Argument, basierend auf dem, was ich hervorgehoben? Was bedeuten die eckigen Klammern anzuzeigen, basierend auf der letzten Woche? Ja, es ist ein array-- speziell ein assoziatives Array. Und diese Syntax zugegebenermaßen ist ein wenig flippig, aber dies ist nur auf der Durch in ein Schlüsselwertepaar. Der Schlüssel ist, Zitat Zitat Ende Titel, und der Wert ist CS50. Wenn wir dies getan hatten in C, es könnte statt sehen eher wie dieses, nur Kurs unquote CS50-- oder tatsächlich, es wäre lockigen Hosenträger, oder so ähnlich, in C, wobei der Schlüssel Null ist, und der Wert ist CS50. Aber noch einmal, in PHP, obwohl die Syntax ist, wieder ein wenig seltsam, es Ihnen erlaubt, übergeben in anstelle von Worten Nummern um Schlüssel mit Werten zu verknüpfen. Also, was bedeutet das alles? Wenn ich in helpers.php zu gehen, schauen wir uns an dieser Funktion. renderHeader.php statt renderHeader ist meine Funktion, und ich weiß, weil ich sehe, die Funktion Stichwort. Das ist neu aus C- es offensichtlich ein Argument genannt data-- aber ich konnte diese aufgerufen haben nichts, aber ich nannte es Daten, nur um ein wenig clean-- und nehmen Sie nur eine Vermutung, insbesondere wenn Sie auf eine andere programmiert haben Hochsprache vor, etwas, über C, konzeptionell. Was bedeutet gleich offene Bügel eckige Klammer vermutlich das? Oder wie wäre es damit? Wir haben das nicht in C. Ja gesehen? Ein leeres Array. Konkret bedeutet dies, dass, wenn der Benutzer nicht renderHeader nennen mit dem Argument, ich bin immer noch ein Argument aufgerufen Daten haben, aber sein Standardwert ist gehen, um ein leeres Array sein. So ist es nur eine nette Annehmlichkeit. Ich habe nicht an den Benutzer zu schreien, oder sagen, dass Sie meine Funktion falsch eingesetzt. Ich kann nur geben dem Benutzer eine Default- Wert, wenn ich nicht besonders zu kümmern. Nun ist diese Funktion, ich bin werde meine Hände an zu winken. Aber dieser Extrakt Funktion erlaubt uns, diese Variablen in Daten zu übergeben in header.php in der folgenden Weise. Und das ist das letzte Stück, Ich denke, von funky-Syntax. Hier ist meine neue Version von header.php-- es pflegte zu sagen, wörtlich, offene Halterung Titel CS50, und das war es. Und dasselbe für die H1. Jetzt scheint es sagt, etwas ziemlich funky. Und lassen Sie mich dies zu vereinfachen für einen Moment wie folgt. Dies ist, was ich habe änderte meinen Titel zu sein. Allerdings ist es immer ein wenig hässlich ständig offenen Klammern mit PHP, und verwenden Sie dann die Druckfunktion. Es stellt sich heraus, dass PHP hat eine Kurzform Notation dafür, das nur ein Gleichheitszeichen, die technisch eine ist Funktion namens Echo statt Druck, aber es ist die gleiche Sache, effektiv. Das sieht einfach besser aus. Es ist nur eine syntaktische Zucker, wenn man so will, das macht mein Code ein wenig besser aussehen. Aber es stellt sich heraus, und Wir werden dies wieder zu sehen es dauerte nicht lange, wir haben zu dieser Aufforderung nervend langen Funktion aufgerufen HTML-Sonderzeichen in PHP, weil es sich herausstellt, gibt es bestimmte Eingänge dass der Benutzer uns geben könnten, oder dass die Nutzer uns geben könnten, die gehen, um unsere Website zu brechen. Aber wir sehen werden, dass beim nächsten Woche mit JavaScript. Aber jetzt weiß nur, dass Diese Datei, headers.php einfach führt den Titel, Ich ging in, es zu machen Sie sicher, dass es sicher ist, zu einer Bahn eingespritzt werden Seite, und es spuckt es aus wie mein Titel und da meine H1. Also, wenn ich in dieser Version jetzt, feststellen, dass Vorlesungen hat seinen Titel zurück, Woche Null hat seinen Titel zurück, und in der Tat, die HTML Ich Erzeugung ist identisch mit dem, was meine erste Version was-- außer für meine Whitespace, weil ich die Formatierung begonnen mein Code ein wenig anders. Aber ich habe alle generierten der Code Ich kümmere mich um. Also lassen Sie mich für die Pause nur einen Augenblick und sehen, wenn es irgendwelche Fragen oder Verwirrung habe ich erstellt. Alles klar, also lassen Sie uns verdrehen ein wenig härter hier um zu sehen, ob es ein Chance zur Verbesserung. Helpers.php hatte auch diese Funktion, genannt renderFooter. Und was ist bemerkenswert, zu renderHeader und renderFooter? Und wieder, für die heutigen Zwecke, wissen, dass der Extrakt-Funktion ist nur meine Art Weitergabe Argumente in header.php und footer.php. Es tut uns leid? ZIELGRUPPE: [unverständlich] DAVID MALAN: Ja, nur ich änderte sich die erfordern Linie. So wörtlich, habe ich die Sünde begangen Kopieren und Einfügen, noch einmal. Es ist nicht eine große Anzahl von Linien, sondern kommen an-- wenn ich das Kopieren und alles einfügen nur um ein kleines Wort zu ändern, und das ein kleines Wort, das Alan Punkte hier aus ist Fußzeile gegen header hier. Ansonsten ist alles identisch ist, außer, natürlich Namen der Funktion. Also, was können wir besser machen? Nun lassen Sie mich eröffnen diese Version hier, wobei in helpers.php, warum nicht ich weiß nur wenig schlauer wäre es damit? Schreiben Sie etwas komplizierter Code, sondern nennen es machen? So was habe ich grundlegend verändert? Es dauert ein Argument now-- zwei Argumente, Daten immer noch. Und dann, was ist das erste, Namen wahrscheinlich die für verwendet wird, basierend auf, was Sie hier gerade lesen? Selbst wenn einige der Syntax noch neu. Was ist Dollar-Zeichen-Vorlage? Es tut uns leid? ZIELGRUPPE: Kopf- oder Fußzeile. DAVID MALAN: Kopf- oder Fußzeile. So offensichtlich, beschloss ich, dass, wenn das einzige, was zu ändern ist ist, welche Vorlage Ich möchte um print-- und durch Vorlage Ich meine, das ist Blaupause für Code, den ich ausgeben wollen, aber ich möchte in einigen Plug values-- so wenn es nur Kopf oder Fußzeile, warum nicht ich parametrieren dass und rufen Sie das Argument Dollarzeichen Vorlage? Und dann dieses unkonventionelle Syntax ermöglicht es mir, um einen Pfad in einer Variablen hier erstellen. So Dollarzeichen Pfad ist eine Variable. Was bedeutet diese Syntax zu tun, wenn Sie nicht vertraut sind? Ja? ZIELGRUPPE: [unverständlich] DAVID MALAN: Genau. Wenn Vorlage ist, Zitat Zitat Ende, Kopfzeile, oder wenn Vorlage ist, Zitat Zitat Ende, footer, dass es Linie dass ich hervorgehoben, Linie acht, wird einfach unter diesen Namen, wie Header, und verketten es mit Punkt PHP. So dass wir diesen Operator nicht in C. Dieser Punkt-Operator ist eine erstaunliche Sache in PHP-- wenn Sie mit JavaScript oder Java vertraut sind, können Sie über die Plus- unterzeichnen, um die Verkettung zu tun. In C ist es ein Schmerz im neck-- und tut mir so leid, in p-Set von sechs, Sie gehen zu tun zu haben sind this-- es ist ein Schmerz im Nacken um Zeichenfolgen zu verketten. Warum? Nun, weil, wenn du hast ein String, der so lange ist, und eine andere Zeichenfolge, die so lange ist, Sie nicht einfach anschließen können sie zusammen. Was halten Sie statt dessen müssen in C tun? Ja? ZIELGRUPPE: [unverständlich] DAVID MALAN: Sie müssen malloc Gedächtnis, oder verwenden Sie ein Array auf dem Stapel. Und Sie haben tatsächlich zu machen, dass Array groß genug dies zzgl diese passen, plus dem umgekehrten Schrägstrich Null. Dann verketten sie zusammen mit rühren Katze oder manuell mit einer for-Schleife, oder eine beliebige Anzahl von Techniken. Und wir zeigen Ihnen ein paar in p-Set von sechs. Es ist ein Schmerz im Nacken. Und das ist wirklich, was ich meine zu dies gegenüber this-- wie C im Vergleich zu PHP. Sie haben gerade erhalten viel mehr Infos Funktionalität kostenlos, so dass Sie konzentrieren können, idealerweise auf den Spaß Teil der Codierung, die Projekt, das Sie lösen wollen, anstatt dem niedrigen Niveau Minutien. Also das nur erzeugt header.php oder footer.php basierend auf welches ich nennen. Und in der Tat, wenn ich in index.php, Ankündigung alles, was Statt changed-- Aufruf machen Kopf- oder Fußzeile zu machen, Ich rufe zu machen, gefolgt von der Name der Vorlage, die ich tun möchte. Und Sie werden das sehen, auch, in Problem stellte sieben, wobei wir ermöglichen es Ihnen, die Verwendung gleiche Funktion, um Trauben zu machen und Bündeln von verschiedenen Web-Seiten. Also anstatt zu wohnen viel mehr auf diesen details-- Sie finden das wieder zu sehen Problem Set seven-- lassen Sie uns Jetzt bei Beginn einer Lösung zu einer interessantes Problem. Bisher nichts, was wir haben getan hat gespeicherten Daten. In der Tat, das einzige Mal, dass wir gespeichert haben etwas, das wir in dieser Klasse gemacht habe wird, wenn wir hatten eine sehr einfache Demo Weile zurück, wobei wir verwendeten Datei IO in C, und ich denke, dass ich in meinem Namen eingegeben haben, und Hannah Name und Maria den Namen, oder vielleicht Andy Name und dann gespeichert wir eine CSV file-- Comma Separated Values ​​Datei. Und wir fopen-- verwendet Ich denke, wir verwendet fprintf soweit ich mich erinnere, und wir gerettet eine Datei. Nun ist, dass die einfachste Form einer Datenbank. Wenn Sie eine Website für das machen wollen Frosh IMs Programm, wobei Studienanfänger kann für eine Sportart, die Sie idealerweise zu registrieren, wollen etwas mit diesen Daten zu tun. Letzte Woche haben wir nichts mit dem data-- wir gerade gesagt, Sie registriert sind, nicht wirklich. Oder vielleicht mailte ich das Proctor, und das war es. Aber es wäre schön, wenn ich könnte zu geben, die Proctor eine CSV-Datei, wie eine Excel-Datei. Oder noch besser, wäre es schön, wenn ich könnte legte Namen diejenigen Verbraucher, Wohnheim Namen und all das in eine Datenbank, nur lebt für immer, bis ich wählen, um die Daten zu löschen. Eine Datenbank, die ermöglicht mir, um Informationen abzufragen. Und in der Tat, das ist, was eine Datenbank ist. Wir stellen heute, und nächste Woche, auch, eine Technologie, genannt SQL-- ein Structured Query Sprache, die eine andere Sprache ist. Es ist im Wesentlichen ein Programmier Sprache, aber für Datenbanken. Und eine Datenbank für jetzt, denken Sie an wie ein super schickes Version von Microsoft Excel oder Google Tabellenkalkulationen, oder Apple Numbers. Es ist in der Regel ein Programm, das ermöglicht Sie eine ganze Reihe von Daten zu speichern, in Zeilen und Spalten, ganz wie Sie vielleicht in Excel. Aber was ist schön, vor allem, wenn wir sind nicht super vertraut mit Excel, was SQL können Sie tun, ist diese Abfrage Informationen durch Schreiben Zeilen Code wo Sie können, auch wenn Ihr Datenbank verfügt über eine Million Zeilen in es, man kann die Dinge super schnell zu finden. In der Tat ist insbesondere Excel schlecht großer Datenmengen. Und in der Tat bis zu einigen Vor Jahren, stellte sich heraus, Excel würde nur erlauben Ihnen, zu speichern bis zu 65.535 Zeilen data-- denen klingt wie eine Menge, aber die Zeit war ich ein Doktorand, und ich erinnere mich Stolper dies, weil ich zu erzeugen CSV-Dateien für meine Forschung und ich wollte sie schnell zu analysieren nur durch die Öffnung in Excel. Natürlich, mein Computer ist abgestürzt, denn ich hatte mehr als 65.000 Zeilen. Aber woher die 65.535 kommen aus? Was Microsoft tut, vermutlich? Wenn Sie gut mit Ihren Potenzen von zwei sind? Ja, wurden sie mit einer 16-Bit- Wert, um die Zeilennummer dar. Und zwei bis 16 65,536-- minus eins, denn wenn man Null-Index bedeutet, dass war die die meisten Anzahl von Zeilen ich haben könnte. Und es war nur eine Design-Entscheidung. Durch die Einsparung von 16 Bit, mich beschränkt sie 16.000 Zeilen anstelle von 4 Milliarden die ich könnte im Idealfall gehabt. Aber jetzt sind wir zu gehen präsentieren diese mehr in einem Web-Kontext. Und was ist schön zu SQL ist, dass selbst aber es ist ziemlich mächtig und ziemlich anspruchsvoll, es läuft wirklich bis zu vier Tastenbetätigungen, vier Schlüsselfunktionen, wenn Sie will-- wählen, zum Abrufen von Daten, die Suche für Daten; zu löschen oder die Löschung der Daten; Einsatz für das Hinzufügen von Zeilen in die Datenbank; und Aktualisierung. Also, wenn Sie jemals Google verwendet haben Tabellenkalkulationen, Apple-Zahlen, Microsoft Excel, die Sie ausgeführt haben, sowie wahrscheinlich alle dieser Operationen wie einem Menschen durch nur mit der Tastatur und mouse-- Einfügen von Daten, mit deinen Augen auswählen oder nach Daten, oder Aktualisieren von Daten oder Löschen von Daten. Also, was bedeutet das? Nun, in der CS50 vorinstalliert IDE ist ein Programm namens MySQL. Es ist ein freies Open-Source- Datenbank, die super beliebt ist. Book, zum Beispiel, verwendet er hierzu Tag unter anderem Werkzeuge, die sie verwenden. Und eine Menge sehr beliebte Websites verwenden es zu einem großen Teil, weil es schnell, und weil es kostenlos ist. Wenn auch sicherlich Alternativen existieren. Und einige von euch vielleicht mit plantschen Alternativen für Abschlussarbeiten. Dies ist ein Screenshot, inzwischen von ein webbasiertes Tool namens phpMyAdmin. Es ist ein Zufall, dass Diese Web-basierte Tool ist auch in einer Sprache verfasst, PHP, aber, was es tun soll wird uns eine web-basierte Schnittstelle zu einer Datenbank. Weil MySQL typischerweise etwas, historisch, Sie wäre nur mit interagieren mit einer Befehlszeile. Und es wäre super ärgerlich und arkane zu haben, , Textbefehle eingeben, um zu wählen Daten, Einfügen von Daten, und die Daten zu löschen. So dass einige Leute auf dem Internet schrieb ein web-basiertes Programm daß lassen Sie es uns zu verwalten die Daten in der Datenbank. Es ist wie Doppelklick auf Excel und Ausführen eines webbasierten Version davon. Und was wirst du dies für verwenden möchten letztlich nächste Woche, die noch nicht in p-Set von sechs, aber ist es, etwas zu bauen genannt CS50 Finanzen, das wird eine Datenbank haben, Benutzer mit Benutzernamen und Kennwörter, Dollar beläuft, dass sie haben in ihre Bankkonten. Es wird etwas, das Sie zu speichern verwenden die Symbole und die Mengen der Bestände, die Benutzer haben mit virtuellen gekauft Dollar, die Sie ihnen geben. Und es geht um den Benutzern zu ermöglichen um für Ihre Website registrieren, so dass auch Ihre Freunde einzustellen, können auf Ihre Website und tatsächlich zu registrieren, melden Sie sich an, und spielen, um und versuchen, Fehler im Code zu finden, und versuchen, Fehler in Ihre Website zu finden. Und sie werden einfach registrieren, indem Zugabe selbst effektiv über Code, den Sie schreiben, um Ihre Datenbank. Zum Beispiel, eine Quick Screenshot ist dies von welchem ​​eine Datenbank aussehen könnte. Dieses wurde aus einem im vergangenen Jahr solutions-- Das ist wie ein Mini-Excel Datei, in unserer Datenbank gespeichert sind, in dieser Software namens MySQL gespeichert. Auf der linken Seite, habe ich anscheinend gegeben jedem Anwender eine eindeutige Nummer. In der zweiten Spalte, ich gegeben haben jeder ein Benutzer meine eigene name-- darunter. Und auf der rechten Seite, Ich habe sie einen Hash gegeben. Nun ist dies eigentlich ein Passwort, aber es ist nicht ein Klartext-Passwort. Es ist ein verschlüsseltes Passwort, wenn Sie werden, oder eine Hash-Passwort. Was wir antworten bald kommen. Aber wenn Sie je gelesen habe ein Artikel darüber, wie Ihr Passwort zu einem bestimmten Bank oder einige Website beeinträchtigt gewesen sein könnte, es in der Regel bedeuten, kann eines von zwei Dingen. Also das ist nur ein Auszug aus sechs Nutzer. Alle von euch jetzt herausfinden können erfolgt über Hacking oder rissiger was Passwörter unserer sechs Personen sind. Aber wenn Sie jemals bekommen haben eine Warnung oder eine Entschuldigung von einem Unternehmen oder eine Website Sprichwort, sorry, brach ein Hacker in unsere Datenbank, Sie sollten wahrscheinlich ändern Passwort vergessen, was könnte das bedeuten? Nun, man könnte das bedeuten, Unternehmen mehr schwachsinnig gewesen, und wurde vergessen Speichern in einer Spalte wie diese, unverschlüsselt. Was bedeutet, den Gegner, , die die Datenbank gestohlen, buchstäblich kennt Ihre Benutzername und Passwort. Das ist die denkbar schlechteste Szenario. Und wie Sie in p-Set zu sehen sieben, so leicht zu vermeiden. Es gibt absolut keine Entschuldigung dafür, dass Form der Dummheit in der heutigen Internet. Two-- und wir werden einige Artikel finden um die Tatsache bezeugen, dass diese immer noch passiert, nonetheless-- zwei, vielleicht der Gegner stahlen diese Version der Datenbank. Welche ist immer noch Art von schlecht, denn jetzt sie wissen, dass ich sechs Kunden, Ich weiß, dass die Benutzernamen dieser sechs Kunden, und ich weiß, das verschlüsselte Versionen oder die gehashten Versionen Anzahl an sechs Kunden Passwörter. Aber jeder von euch, die vielleicht getan haben [? Hacker 2?] wo Sie geknackt Passwörter oder nahmen eine zu dieser Version des Problems zu suchen Set, warum ist es immer noch ein wenig besorgniserregend wenn der Gegner kennt Ihre Hash- Passwörter? ZIELGRUPPE: weil sie geben Sie die ganze Wörterbuch in die Hash-Funktion. Und wenn Sie Ihr Passwort ein Wörterbuch Wort, [? sie können einfach match--?] DAVID MALAN: Genau, der Widersacher kann nur Code schreiben, wie einige von euch hat für [? Hacker?] 2, wobei Sie überlaufen alle Wörter in dem Wörterbuch, oder alle möglichen Kombinationen von A bis Z und einem durch nine-- die wie eine Menge ertönt, und es ist. Aber für einen Computer, es ist verdammt schnell. Und war in der Tat, dass die Punkt [? Hacker 2,?] War In den Sachen, die zu nehmen buchstäblich sieht so aus, und Reverse Engineering was es eigentlich war. Also werden wir prüfen, wie wir können, speichern diese effizienter. Es stellte sich heraus, zum Glück in MySQL, gibt es werde Datentypen sein. Und einer der Spaß Teile zu Datenbank-Design, um ehrlich zu sein, ist eigentlich die Entscheidungen für sich selbst Wie sollten Sie die Daten dar? Sollten Sie stellen eine Telefonnummer als int, wie eine große Anzahl oder eine lange? Oder haben Sie es wirklich tun als eine Folge von Zeichen? Und es kann sehr werden nicht-triviale Auswirkungen dieser. In der Tat, eine der frühestens Spaß germane Geschichten ist, wenn Mark Zuckerberg baute Facebook wurde ursprünglich geschrieben, und ist immer noch weitgehend in PHP geschrieben. Und eine der größten Herausforderungen, sie früh wurde die Skalierung konfrontiert. Als sie gehalten Zugabe Schule nach Schule nach der Schule, nach meinem Wissen, einer der ursprünglichen Lösungen war im Wesentlichen zum Kopieren und Einfügen einige der Datenbanken und ein Teil des Codes, so dass Harvard war auf einem eigenen Server läuft, und MIT auf einem eigenen Server lief. Und das war, warum, für einige von euch, die sich vielleicht erinnern, Sie konnte nicht haben Freunde in anderen Netzwerken. Sie haben wahrscheinlich nicht zu haben Freunde MIT oder Harvard vor 10 Jahren oder so, aber man konnte nicht Netze umspannen für die teilweise aus diesem Grund. Und eine der größten Herausforderungen für die Mark und für Unternehmen wie Facebook ist eigentlich Umgang mit Hunderten und Tausende und Millionen der Anforderungen pro Sekunde. Also das, was wir beginnen reden über diese Woche sind wirklich relevant für sein Schreiben guter Software und Volksmund erfolgreiche Werkzeuge, können viele Benutzer zu handhaben. Also werden wir über Dinge zu sprechen wie Indizierung und Suche, aber das ist für heute. Wir werden Sie für mehr am Mittwoch zu sehen. [MUSIC - "Seinfeld" THEMA] DAVID MALAN: Sie können auf , und subtrahieren Sie von ihm. Und Sie müssen nicht mit Stick manche vorbestimmte Menge an Speicher. Nun, was ist, dass geht zu nennen? Sprecher 1: Nun, was ist los? Sprecher 2: Was meinen Sie damit? Er geben einen Vortrag. DAVID MALAN: Und wir können a verwenden Funktion namens malloc zu memory-- Sprecher 1: Warum werden die Arme bewegen? Sprecher 2: Nun that's-- Sie wissen, das ist normal. Es ist genau wie er gerade große Würste hängen dort. Sprecher 1: Das ist normal? Sprecher 2: Ja, ich denke wir einfach davon ausgehen, er versehentlich ersetzt sein Deodorant mit Sekundenkleber.