[Παίζει μουσική] DAVID Malan: Αυτό είναι CS50, και αυτή είναι η αρχή της εβδομάδας οκτώ. Και είμαστε τόσο ενθουσιασμένοι να καλωσορίσω πίσω, μεγάλη έκπληξη, τη δική του Ραμόν CS50 Galvan, μια ανερχόμενη ανώτερος ο οποίος έχει δαπάνες τους τελευταίους αρκετούς μήνες από τον Ιούλιο στο Λος Άντζελες, στο Χόλιγουντ, κυριολεκτικά εργάζεται πάνω σε ένα ολοκαίνουργιο τηλεόραση εκπομπή με τίτλο Αποικία, ο δημιουργός των οποίων είναι στην πραγματικότητα ο ίδιος στυπτηρία Χάρβαρντ. Και έτσι είμαστε πολύ ενθουσιασμένοι για να δείτε αυτό το Το ντεμπούτο του δικτύου ΗΠΑ εφέτος τον Ιανουάριο. Έτσι, μείνετε συντονισμένοι για αυτό, καθώς και για Ramon περισσότερα για τις επόμενες εβδομάδες. Γνωρίζουμε τώρα ότι το τέλος είναι κοντά. Και αυτό σημαίνει ότι δεν υπάρχει όλα αυτά πολύ αριστερά CS50, λυπημένος να πω. Έχουμε μόλις τρεις πρόβλημα σύνολα left-- υπάρχει πρόβλημα που six-- που είναι σε τα χέρια σας τώρα ή θα είναι σύντομα, αναμένεται αργότερα αυτό το week-- έχει ως στόχο να γεφυρώσει μας κόσμους της γραμμής εντολών, όπου έχουμε περάσει το μεγαλύτερο μέρος του χρόνου μας χρησιμοποιώντας C, και ο κόσμος του web προγραμματισμό. Λοιπόν, θα δείτε πολλές ιδέες δανείστηκε από το έργο γραμμή εντολών, αλλά και πολλά νέα και ενδιαφέρουσες ιδέες που επίσης πρόκειται να είναι σχετικός για κινητές εφαρμογές και για την τεχνολογία, γενικότερα, με την οποία οι τύποι είναι όλοι εξοικειωμένοι σήμερα για φορητούς υπολογιστές και τα τηλέφωνα και τα παρόμοια. Έτσι θα εφαρμόσει όχι μια ιστοσελίδα, ή μια ιστοσελίδα per se, αλλά ένα πραγματικό web server. Θα γράψει το υπόλοιπο του web server γραμμένο σε C, των οποίων ο σκοπός της ζωής είναι να λαμβάνει αιτήσεις HTTP, τα εν λόγω εικονική φακέλους κρατάμε μιλάμε περίπου, και στην πραγματικότητα να αντιδράσουν, είτε με ορισμένες στατικές content-- σαν μια κουκίδα HTML αρχείου ή μια τελεία ή JPEG οποιοσδήποτε άλλος αριθμός των αρχείων, ή ακόμα και ένα αρχείο PHP το οποίο σας web διακομιστής πρόκειται να ερμηνεύσει την PHP κώδικα και φτύσει τα αποτελέσματα. Τώρα, έχουμε να σας παρέχεται με αρκετά ένα κομμάτι του πλαισίου για it-- πράγματι η Κώδικα Διαχείρισης του Δικτύου για το πρόβλημα που έξι είναι πάνω από 1.000 γραμμές, ένα πολλά από τα οποία είναι τα σχόλια, να fair-- αλλά αυτό είναι πραγματικά σημαίνει να είναι μια ευκαιρία να λερώσετε τα χέρια σας καταδύσεις σε ένα αρκετά μεγάλο έργο ότι έχουμε πολύ συγκεκριμένα σκαλισμένα κομμάτια για σας, έτσι ώστε πραγματικά όταν βγείτε και CS50 εισάγετε τον πραγματικό κόσμο του προγραμματισμού και θέλουν να ανακατεύομαι σε οποιοσδήποτε αριθμός των έργων, θα έχετε πολύ μεγαλύτερη άνεση κατεβάζοντας κάποια πηγή κώδικας, μερικές ανοικτού κώδικα προβάλει στο διαδίκτυο, και καταδύσεις και κάνοντας αλλαγές που βλέπετε την τακτοποίηση. Πρόβλημα που επτά θα είναι περίπου κάνοντας τη δική web-based εφαρμογή σας ότι χρειάζεται δυναμική είσοδο και παράγει δυναμικό παραγωγής υπό μορφή μιας ιστοσελίδας etrade.com-όπως. Και το πρόβλημα που οκτώ θα επικεντρωθεί ακόμα άλλη γλώσσα γνωστή ως JavaScript. Εν τω μεταξύ, η τελική έργο είναι στον ορίζοντα. Το λεγόμενο προ-πρόταση οφείλεται σε μια εβδομάδα από σήμερα. Προ-proposal-- σύμφωνα με τις προδιαγραφές, που βρίσκεται στο website-- CS50 της είναι ένα όμορφο περιστασιακή ευκαιρία για μπορείτε να στείλετε ένα e-mail αρκετά περιεκτική στη διδασκαλία τους συναδέλφους σας απλά για να τον ειδοποιήσουν ή της για το τι σκέφτεστε, να τον ή την χρησιμοποιούν ως αντηχείο. Και έχουν μια λογική check-- αν σκέφτεστε για το δάγκωμα μακριά πάρα πολύ πολύ ή ίσως πολύ λίγο, ή ίσως δεν έχετε ιδέα απολύτως και θέλουν να συμμετάσχουν σε μια συνομιλία. Στη συνέχεια είναι μια πρόταση και αναφορά της κατάστασης, η λεγόμενη CS50 hackathon εδώ Cambridge για το Χάρβαρντ και το Γέιλ φοιτητών όσο. Το τελικό σχέδιο της εφαρμογή είναι κατόπιν. Και τότε ένα CS50 δίκαιη εδώ, στο Cambridge, καθώς και άλλη μία στο New Haven. Έτσι την πρόταση, ρίξτε μια ματιά στο η ιστοσελίδα για τα στοιχεία αυτά. Αλλά το πιο συναρπαστικό, πάρα πολύ, είναι ένα ευκαιρία να λερώσετε τα χέρια σας, και το μυαλό σας ανοικτό σε μια ολόκληρη σωρό θέματα και εργαλεία και τεχνικές που είναι βοηθητικές με πυρήνα διδακτέα ύλη του μαθήματος, αλλά παρ 'όλα αυτά σχετίζονται. Και, επίσης, πέτρες υπέροχο να περπατήσει κάνει πραγματικά δροσερό τελικό έργα που υπερβαίνουν κατά πολύ το υλικό που έχουμε καλύπτονται επίσημα στο πρόβλημα θέτει ή σε διάλεξη. Έτσι, πηγαίνετε στην ιστοσελίδα CS50 για το σύνολο ρόστερ των σεμιναρίων. Εάν δεν έχετε δηλώσει ακόμα, ότι το πρόστιμο. Προχωρήστε και να εγγραφείτε ακόμα και εμείς θα συνέχεια με μια ζωντανή σύνδεση συνεχούς ροής, η ημέρα και η ώρα είναι στην ιστοσελίδα. Και όλα θα είναι καταγράφονται και να θέσει σε απευθείας σύνδεση αν δεν μπορείτε να κάνετε το συγκεκριμένες ημέρες και ώρες. Όσο για το τι βρίσκεται μπροστά thereafter-- καλά, Φυσικά, υπάρχει η hackathon CS50. Αυτή η φωτογραφία, ανάκληση, από την εβδομάδα μηδέν λαμβάνεται περίπου τέσσερις ένα βράδυ στην διάρκεια των προηγούμενων ετών. Η εύλογη CS50, η οποία και πάλι θα πραγματοποιηθεί και στις δύο πόλεις. Και τότε, μόνο να φυτέψει η σπόροι, έστω κι αν ακόμα έχουν ένα μήνα συν στα αριστερά του εξαμήνου, εάν θα θέλατε να επανενωθούν με τη διδασκαλία του CS50 προσωπικό, και θέλετε να ξεκινήσετε σκέφτεστε να γίνετε CA, ή τη διδασκαλία τους συναδέλφους, γνωρίζουμε ότι θα αρχίσουμε να μιλάμε περισσότερο γι 'αυτό αργότερα αυτό το εξάμηνο. Αλλά απεικονίζεται εδώ το μεγαλύτερο μέρος της ομάδας του τρέχοντος έτους. Και έτσι, PHP-- και ήμουν τόσο λυπημένος την περασμένη εβδομάδα ότι [? Allyse?] Ευγενικά πήγε στην προσπάθεια του να πάρει μας αυτά τα υπέροχα σκηνικά ότι δεν καταλήγουν να χρησιμοποιούν, έτσι ώστε να πραγματικά μόνο φαινόταν χαζό ότι είχαμε ένα φτυάρι για να κάθεται εδώ όλα τελευταία ημέρα Τετάρτη, και ένα μικρό κουτάλι. Αλλά αυτό ήταν μεταφορική μου τρόπο προσπαθεί να ζωγραφίσει η εικόνα του γιατί είμαστε μετάβαση από C σε μια γλώσσα όπως η PHP. Και το ίδιο θα μπορούσε να ειπωθεί και για οποιαδήποτε αριθμός των languages-- Java, Python, Ruby ή τσαμπιά από others-- αλλά ότι σε C, για παράδειγμα, γράφοντας ένα πρόγραμμα σε C μπορεί να είναι τυπικά, όπως λαμβάνοντας ένα κουτάλι σαν αυτό και σκάψιμο μια τρύπα στο έδαφος, στην άμμο ή χώμα. PHP σας επιτρέπει να λάβει πολύ μεγαλύτερο δαγκώματα έξω από το πρόβλημα, γράφοντας πολύ λιγότερο κώδικα χρησιμοποιώντας ένα πολύ μικρότερο εργαλείο, επειδή υπάρχει τόσο πολύ περισσότερο λειτουργικότητα συναρμολογήθηκαν σε. Τώρα, αν ήμασταν πραγματικά δραματική, θα είχαμε κάτι να φτυάρι εδώ, αλλά έτσι είναι. Εν τω μεταξύ, ο άλλος αλληγορία καταλήξαμε Είναι, βέβαια, θα μπορούσατε χρησιμοποιήστε κάτι σαν κλειδί να καταλήξουν σε κάτι σαν ένα καρφί. Αλλά φυσικά, το δικαίωμα εργαλείο για τη χρήση θα να είναι όχι τόσο το γλώσσα που ονομάζεται C-- και τώρα απλά ενοχλημένος [? Sanders,?] Κατά πάσα πιθανότητα, θα το διορθώσουμε later-- έτσι το κατάλληλο εργαλείο για να χρησιμοποιήσει συχνά Δεν πρόκειται να είναι Αυτό το εργαλείο χαμηλότερο επίπεδο. Και πράγματι, C δεν είναι μια γλώσσα που οι περισσότεροι από εσάς πρόκειται ποτέ να χρησιμοποιήσει, ή θα πρέπει αναγκαστικά να το χρησιμοποιήσετε ξανά. Και στην πραγματικότητα, ένα μικρό secret-- η μοναδική φορά Μπορώ να χρησιμοποιήσω τον εαυτό μου C είναι λίγο πολύ μεταξύ Σεπτέμβριο και Δεκέμβριο κάθε φθινόπωρο εξάμηνο. Και αυτό γιατί εμείς να το χρησιμοποιήσετε ως μια ευκαιρία για να διδάξει τις βασικές αρχές του προγραμματισμού, και μαζί με αυτό τον υπολογιστή βασικές αρχές της επιστήμης, των δεδομένων δομές, οι αλγόριθμοι και η like-- αλλά πολύ γρήγορα θα σας δείτε τώρα ότι η σύνταξη και οι ιδέες στις οποίες βασίζεται C είναι τόσο υπέροχα να μεταφερθούν σε πιο σύγχρονη υψηλότερου επιπέδου γλώσσες, όπως PHP και Python και Perl και Java και Objective-C-- στην πραγματικότητα, δεν είναι τόσο πολύ Στόχος-C-- αλλά Swift, οι νεότερες Γλώσσες που πολλοί από εσάς θα τότε ανακατεύομαι με εσάς τελικό σχέδιο. Έτσι, χωρίς άλλη καθυστέρηση, ας πραγματικότητα χρησιμοποιήσετε το PHP για την επίλυση ορισμένων προβλημάτων. Υπενθυμίζεται ότι νωρίς, τελευταία εβδομάδα, εμείς απλά χρησιμοποιείται CS50 IDE, γράψαμε ένα μικρό πρόγραμμα dinky ότι μόλις είπε, "Hello world". Και τότε εγώ θα αποθηκευτεί σε ένα αρχείο που ονομάζεται hello.php. Και τότε έτρεξα αυτή την εντολή. Και γιατι? Στα αγγλικά, τι συμβαίνει εδώ; Τι έκανα όταν Έτρεξα αυτή την εντολή; Ναι; Κοινό: Υπάρχει κάποια λειτουργία PHP ότι διαβάζει τι in-- αντιλαμβάνεται ότι. DAVID Malan: Καλή, υπάρχει κάποια λειτουργία PHP-- και επιτρέψτε μου να γίνω πιο συγκεκριμένος, υπάρχει ένα πρόγραμμα που ονομάζεται PHP, γνωστός και ως Ένας διερμηνέας, που καταλαβαίνει τα περιεχόμενα του hello.php, και ερμηνεύει πάνω προς τα κάτω, αριστερά προς τα δεξιά, και κάνει ό, τι λένε αυτές οι εντολές. Οι εντολές σε hello.php, φυσικά, Είναι ακριβώς προμηθεύονται code-- λειτουργίες και μεταβλητών και βρόχους και τα παρόμοια, ότι εμείς οι ίδιοι έχουν αρχίσει να γράφει στην PHP. Αλλά σε αντίθεση με C, η οποία είναι ένα μεταγλωττισμένο γλώσσα, PHP μπορείτε απλά να το γράψω, και να το εκτελέσετε. Μπορείτε να παραλείψετε αυτό το βήμα μεσάζων της μετατρέποντας το σε μηδενικά και μονάδες, και στη συνέχεια εκτελείται. Και έτσι αυτό είναι ένα θετικό στοιχείο της αυτό; Γιατί παρακάμπτοντας το βήμα; Γιατί πιο σύγχρονες γλώσσες τείνουν να παραλείψετε αυτό το βήμα; Ποιο ήταν το όφελος; Ή απλά διαισθητικά; Ακόμα κι αν δεν έχετε γράψει πολλά PHP πριν, τι είναι ωφέλιμο για να μην την κατάρτιση τον κωδικό σας νομίζετε; Κανένα? Δεν διάπραξη; Ξύσιμο το κεφάλι σας; Ναι. Κοινό: Πιο δυναμικό. DAVID Malan: Πιο δυναμική; Τι εννοεις? Κοινό: [δεν ακούγεται] DAVID Malan: Εντάξει, καλά, έτσι ανάλογα με την είσοδο, δεν χρειάζεται να το υπολογίσουν κάθε φορά. Και είναι πραγματικά, όπως απλό όσο αυτό that-- είναι το σημείο της συνεχιζόμενης να καταρτίζουν τον κωδικό σας; Αυτό είναι μόνο ένα βήμα που είναι making-- αυτό απαιτείται, για το παρελθόν πολλές εβδομάδες, δύο φορές πιο πολλά βήματα όπως ακριβώς τρέχει το πρόγραμμά σας. Ήταν χρήσιμο να δει ότι εσείς δείτε κάποια μηνύματα λάθους και ούτω καθεξής, αλλά είναι ακόμα ακριβώς ένα ενοχλητικό βήμα. Και έτσι οι προγραμματιστές συνειδητοποίησε την πάροδο του χρόνου, γιατί να μην το κάνουμε εμείς αρχίσετε να γράφετε γλώσσες που δεν κάνουν Χρειάζομαι ότι αρκετά μηχανικό βήμα, έτσι ώστε να μπορεί να γράψει μόνο κωδικό σας και να τρέξει. Αλλά ποια ήταν η τιμή ότι είδαμε πληρώσαμε την περασμένη εβδομάδα, με ένα συγκεκριμένο παράδειγμα; Ναι; Ταχύτητα. Έτσι [? τι είναι;] διερμηνείς λίγο πιο αργά, από το ότι τα μηδενικά και αυτοί ωραίο και γρήγορο για έναν υπολογιστή να καταλάβει, γιατί η Επεξεργαστή Intel, ή ό, τι είναι, μόνο καταλαβαίνει τι συμβαίνει σχετικά με αυτά τα πρότυπα των bits. Εκτιμώντας διερμηνέα είναι ένα πρόγραμμα που πραγματικά πρέπει να διαβάσει την πηγή Ascii κώδικας που έχετε γράψει, και να το μετατρέψει, να το πω έτσι, ή καταλάβω πώς το μετατρέπει τελικά σε μηδενικά και μονάδες. Γι 'αυτό παίρνει λίγο κομμάτι από ένα χτύπημα απόδοσης. Γι 'αυτό είναι ένα κομμάτι από ένα trade-off. Τώρα, αν το κάνουμε αυτό εδώ, επιτρέψτε μου να να προχωρήσει και να κάνει ένα παράδειγμα ως εξής. Αν πάω εδώ, νέο αρχείο, θα πάω για να σώσει αυτό πάλι είναι hello.php. Και τώρα είμαι πρόκειται να πάει μπροστά και να πει, "εκτύπωση hello world" - και υπενθυμίζουν ότι μπορώ να χρησιμοποιήσω εκτύπωσης, δεν το κάνω πρέπει να χρησιμοποιούν το έντυπο-F. Και τώρα εδώ κάτω, αν το κάνω PHP των hello.php, huh-- μου δεν φαίνεται να έχουν ερμηνεύσει. Τι έκανα λάθος; Κοινό: Οι γωνιώδεις βραχιόλια. DAVID Malan: Ναι, θα πρέπει να έχετε η γωνία βραχίονα επάνω στην κορυφή. Έτσι είναι το είδος των ενοχλητικό, αλλά μπορείτε να το συνηθίσεις γρήγορα. Αν έχω να γράψω κώδικα PHP, Ι γενικά πρέπει να πει το πρόγραμμα, ή να πείτε στον διερμηνέα, hey PHP, εδώ έρχεται κάποια κώδικα PHP. Και στη συνέχεια για το καλό μέτρο, θα ήθελα Κλείστε αυτό δεν με αυτό, αλλά μάλλον με γωνία μόνο ερωτηματικό βραχίονα, έτσι ώστε τώρα εδώ κάτω, αν τρέχω αυτό και πάλι, τώρα Έχω πάρει το επιθυμητό αποτέλεσμα. Τώρα ας κάνουμε μια μικρή βελτιστοποίησης, ακριβώς έτσι ώστε να έχετε δει πριν. Αυτό είναι το είδος των ενοχλητικό ότι Πρέπει να τρέξει PHP χώρο hello.php, επειδή στο παρελθόν I θα μπορούσε απλά γράψτε dot κάθετος όνομα του προγράμματος, το οποίο είναι το είδος της Νίκαιας. Είναι το είδος του μια καλύτερη εμπειρία του χρήστη. Έτσι αποδεικνύεται μπορείτε να το κάνετε αυτό στην PHP με την following-- μου μπορεί να χρησιμοποιήσει αυτό το αρκετά κρυπτική ξόρκι στην κορυφή εδώ, η οποία είναι γενικά ονομάζεται δουλεία, όπου αυτό είναι μια απότομη σύμβολο, να το πω έτσι, αυτό είναι ένα κτύπημα ή ένα θαυμαστικό. Και αυτό τώρα είναι η διαδρομή προς ένα πρόγραμμα σε ένα τυπικό σύστημα Linux και καλείται το περιβάλλον, ή env. Και αυτό line-- μακρά ιστορία short-- μία γραμμή μόνο λέει, hey υπολογιστή, βρείτε την PHP διερμηνέα για μένα στο περιβάλλον, βρείτε στη μνήμη σας, να το πω έτσι. Και τι είναι ωραίο τώρα, είναι ότι αν πάω εδώ κάτω, Μπορώ να κάνω dot κάθετος γεια dot php, or-- χμμ. Δεν έχετε δικαίωμα πρόσβασης. Λοιπόν, θα δείτε ακόμα περισσότερα από αυτό με το πρόβλημα που επτά, αν δεν έχουν ήδη, με δικαιώματα. Αποδεικνύεται ότι χρειάζομαι να εκτελέσει την εντολή αυτή που ονομάζεται [? chamod;] για την αλλαγή mode-- ένα συν x hello.php. Χρειάζομαι [δεν ακούγεται] αυτό ένα πρόσθετο βήμα, το οποίο λέει ο υπολογιστής μου, κάνουν hello.php εκτελέσιμο. Και τώρα δείτε τι happens-- dot κάθετο hello.php, τρέχει μόνο. Δεν χρειάζεται να καθορίσετε ο διερμηνέας πια. Και εγώ μπορεί να το κάνει ακόμα πιο όμορφη, ακόμα, αν μπορώ να μετονομάσω αυτό το πράγμα. Αν μου hello.php προχωρήσουμε σε απλά Hello-- τόσο την ανακοίνωση στην επάνω αριστερή γωνία, το όνομα του προγράμματος είναι Πράγματι, τώρα μόλις Γεια σας. Τώρα μπορώ να κάνω να φαίνεται σαν ένα πρόγραμμα C, ακόμη κι αν είναι γραμμένο σε PHP-- ή οποιοσδήποτε αριθμός ειλικρινά των άλλων γλωσσών. Έτσι οριακή βελτίωση, καμία λειτουργική διαφορά. Αλλά είναι λίγο περιέργεια τώρα, έτσι ώστε να μπορείτε να γράψετε προγράμματα σε οποιαδήποτε γλώσσα, και ο χρήστης δεν πρέπει να γνωρίζουν ή με νοιάζει τι είναι αυτά. Λοιπόν, ας ρίξουμε μια ματιά σε ένα πιο αναγκάζοντας παράδειγμα τώρα ότι εγώ χτυπημένη εκ των προτέρων. Και αυτό ονομάζεται quote.php. Και είναι διαθέσιμα στο διαδίκτυο. Και παρατηρήσετε ότι είναι αρκετά short-- αλλά είναι ένα πρόγραμμα γραμμής εντολών που είναι πρόκειται να κοιτάζω προς τα πάνω τις τιμές των μετοχών για μένα, το οποίο είναι πραγματικά συμβαίνει να είναι συναφές με το πρόβλημα που επτά. Ας δούμε λοιπόν τι κάνω. Στην κορυφή Έχω την ανοικτό στήριγμα ερωτηματικό PHP. Στη συνέχεια, έχω αυτή τη γραμμή, οπότε είμαι απαιτεί ένα αρχείο που ονομάζεται functions.php-- θα πάμε να δούμε περισσότερα για αυτό σε λίγο, αλλά αυτό είναι σαν Γ έκδοση απότομη περιλαμβάνουν, Που θες να πας περιλαμβάνουν ένα άλλο αρχείο. PHP καλεί το απαιτούν, αν και έχει επίσης μια λειτουργία περιλαμβάνουν. Και αποδεικνύεται ότι είναι function.php απλά κάτι που έγραψα πριν το μάθημα. Έβαλα στον ίδιο κατάλογο, επειδή Ήθελα να συνυπολογίσει κάποιο κώδικα ότι θα μπορούσαμε να θέλουμε να χρησιμοποιήσει αλλού. Εν τω μεταξύ, μπορείτε πιθανώς συμπεράνουμε τι συμβαίνει εδώ. Αυτό είναι λίγο διαφορετικό από C-- αλλά τι εννοώ με εξασφάλιση της σωστής χρήσης; Μετάφραση αυτό πιο τεχνικά. Κάτω από ποιες συνθήκες είμαι την παραίτηση από το πρόγραμμα, ή την έξοδο; Ναι; Κοινό: Όταν δεν έχετε δύο επιχειρήματα της γραμμής εντολών. DAVID Malan: Όταν δεν έχω με εντολή επιχειρήματα της γραμμής. Και να θυμάστε ότι ένας από αυτούς επιχειρήματα είναι το ίδιο το όνομα του προγράμματος. Και το δεύτερο θα είναι μια άλλη λέξη που πληκτρολογείτε μετά την προτροπή. Έτσι ακριβώς όπως η C, αυτό είναι ο τρόπος μου τον έλεγχο, έκανε ο χρήστης να συνεργάζονται και να εκτελέστε το πρόγραμμα, όπως είχα την πρόθεση; Τώρα, υπάρχει κάτι λίγο διαφορετικό με C-- πρώτα απ 'όλα έχουν αυτό το σύμβολο του δολαρίου, και τι κάνει ένα δολάριο υπογράφουν δηλώνουν στην PHP; Απλά μια μεταβλητή. Αυτό είναι all-- απλά μια μεταβλητή που ακολουθείται από Ό, τι θέλετε να το ονομάσετε πραγματικά. Παρατηρήστε ότι υπάρχει κάτι λείπει από το πρόγραμμα PHP μου, όπως ακριβώς έλειπε τελευταία εβδομάδα, έναντι C, το οποίο είναι αυτό; Μια τύπους, αλλά και κάτι άλλο. Δεν υπάρχει κάτι function-- κύρια λειτουργία. Δεν υπάρχει καμία κύρια λειτουργία. Μπορείτε απλά να αρχίσετε να γράφετε κωδικό σας, χωρίς να χρειάζεται να ανησυχείτε για ένα αρκετά αυθαίρετο συμβατικότητα της ονομασίας κάποια προεπιλογή Η κύρια λειτουργία. Έτσι arg C είναι ακριβώς πραγματικά μια καθολική μεταβλητή ότι ο διερμηνέας θέτει στη διάθεση μου. Τώρα, αυτό είναι ενδιαφέρον. Έτσι κοιτάζω προς τα πάνω τα πράγματα. Σύμβολο του δολαρίου των αποθεμάτων είναι σχετικά με την αριστερά, αυτό είναι μεταβλητό μου. Στη δεξιά πλευρά, υπάρχει προφανώς μια συνάρτηση σε PHP καλείται αναζήτησης που Περνώ τελευταία γραμμή εντολών μου επιχείρημα to-- ό, τι η λέξη είναι. Και θα δούμε πώς αυτό λειτουργεί σε μια στιγμή. Και στη συνέχεια, τέλος, είμαι αναφέρουν την τιμή. Είμαι εκτύπωση ενός μερίδιο της τάδε. Και να θυμάστε, αυτό είναι το τρόπο σε PHP-- έναν τρόπο PHP-- όπου δεν έχετε να κάνετε το σύμβολο του δολαρίου S πια. Μπορείτε να χρησιμοποιήσετε μόνο άγκιστρα και συνδέστε σε κάποια μεταβλητή. Δεν χρειάζεται να ανησυχείτε για χρησιμοποιώντας printf με τον ίδιο τρόπο. Και, παρεμπιπτόντως, όταν βάζετε μια μεταβλητή εσωτερικό του διπλά εισαγωγικά σαν αυτό, χρησιμοποιείτε ένα φανταχτερό τεχνική μεταβλητή που ονομάζεται παρεμβολή. Σημαίνει απλώς συνδέστε τη μεταβλητή εδώ. Και, παρεμπιπτόντως, κάποιοι από εσάς που έρχονται από άλλα περιβάλλοντα προγραμματισμού, δεν μπορείτε να χρησιμοποιείτε μονά εισαγωγικά γύρω από χορδές για να το κάνουμε αυτό. Θα πρέπει να χρησιμοποιήσετε διπλά εισαγωγικά για μεταβλητή παρεμβολή στην εργασία. Αλλιώς θα κυριολεκτικά δείτε τα άγκιστρα. Έτσι, τέλος, ας πάμε μπροστά και να τρέξει αυτό. Επιτρέψτε μου να κάνουν τις τελικές μου λίγο μεγαλύτερο. Επιτρέψτε μου να πάμε μπροστά και να τρέξει εσωτερικό του καταλόγου προσφορά μου. [? CDsource?] [? Είμαι;] [? προσφορά;] απόσπασμα PHP PHP τελεία, και Πάω να ψάξετε για κάτι όπως GOOG, η οποία είναι το σύμβολο ticker της, και ένα μερίδιο από τη νέα επωνυμία της, Αλφάβητο Inc, κοστίζει $ 717, από σήμερα. Εντάξει, αν θέλουμε να εκτελέστε ξανά, ο καθένας έχουν άλλη ταινία μετοχών θέλουν να κοιτάζω προς τα πάνω; Η Microsoft Νομίζω ότι είναι αυτό, MSFT-- $ 53. Νομίζω ότι το Yahoo είναι ίσως ότι. Και το Facebook είναι ότι. Λοιπόν, τι είναι αυτό το πρόγραμμα κάνει; Η μαγεία μοιάζει να είναι ενσωματωμένο στην εν λόγω λειτουργία αναζήτησης. Ας ρίξουμε μια γρήγορη ματιά. Αποδεικνύεται ότι δεν έρχεται με την PHP, είναι σε functions.php. Και εμείς δεν θα περάσει αυτό με μεγάλη λεπτομέρεια, αλλά παρατηρήσετε τη λέξη κλειδί εδώ είναι ότι στη γραμμή των έξι functions.php-- Έχω κυριολεκτικά να πω λειτουργία. Έχω να καθορίσετε το όνομα της λειτουργίας μου. Στη συνέχεια προσδιορίζει οποιοδήποτε επιχειρήματα, ή παραμέτρους, Θέλω η λειτουργία να take-- καμία τύπων. Και τότε θα την εφαρμόσουν. Και εγώ θα κύμα το χέρι μου στην εφαρμογή, δεδομένου ότι είναι σε αρκετά προχωρημένο στάδιο δικαιώματος τώρα, αλλά θα το δούμε και πάλι στην πραγματικότητα σε μια εβδομάδα στο πρόβλημα που επτά. Αλλά μπορώ να καθαρίσει αυτό επάνω, πάρα πολύ. Ι περιλαμβάνονται επίσης σε σημερινό κώδικα μια έκδοση της προσφορά, η οποία δεν έχει κανένα αρχείο PHP τελεία. Διότι αυτό είναι κατά πάσα πιθανότητα, η κορυφή του προγράμματος που ονομάζεται απλά παραθέτω; Ότι η λεγόμενη shebang-- η αρκετά κρυπτική ξόρκι που λέει βρείτε PHP και, στη συνέχεια, εκτελέσετε στον κώδικα μου εδώ. Εντάξει, έτσι ώστε να φέρνει μας όπου είχαμε μείνει τελευταία time-- έστω και με μερικά πιο προχωρημένα παραδείγματα. Οποιεσδήποτε ερωτήσεις μέχρι στιγμής περίπου PHP ή ό, τι κάνουμε; No-- εντάξει. Ναι; Κοινό: Μέσα από το Αρχεία HTML, κάντε you-- [? εσυ ?] [? απλά καλέστε;] α [δεν ακούγεται] PHP αρχείο; DAVID Malan: Καλή ερώτηση. Σε ένα πλαίσιο ιστού, το οποίο είμαστε κυριολεκτικά για τη μετάβαση σε, που δεν χρησιμοποιούν τη λεγόμενη shebang στην κορυφή, επειδή ο ιστός server-- συχνά πρόγραμμα που ονομάζεται Apache ή Microsoft IIS, Internet Information Server, ή οποιοσδήποτε αριθμός άλλο λογισμικό web server, ξέρει ότι όταν βλέπει ένα αρχείο dot PHP, ότι θα πρέπει να τρέξετε το διερμηνευτή σε αυτό. Δεν φαίνεται εκείνη τη πρώτη γραμμή. Έτσι, αυτή την πρώτη γραμμή τέχνασμα Είναι ακριβώς όταν είστε γράφοντας γραμμή εντολών programs-- πράγμα που δεν θα το κάνουμε σούπερ συχνά, αλλά ο δικός μας τρόπος γεφύρωσης Γ παραδείγματα μας σήμερα PHP μας. Ας πράγματι γεφυρώσει τον κόσμο από τον κόσμο γραμμής εντολών στο διαδίκτυο σύμφωνα με τα παρακάτω. Επιτρέψτε μου να προχωρήσει και να συντάξει εδώ για μια στιγμή. Έτσι, αν έχουμε έναν web server, ή μάλλον αν έχουμε το laptop μου εδώ, η οποία θα συντάξει σαν αυτό. Και εδώ έχουμε το διαδίκτυο σε κάποια μορφή. Και στη συνέχεια, εδώ, έχουμε ένας διακομιστής σε ένα building-- αυτό είναι το πώς το Διαδίκτυο works-- και εδώ είναι ένας server με κάποια φώτα ίσως. Τι πραγματικά συμβαίνει μεταξύ αυτών των δύο συνδέσεων; Έτσι, σε αυτό το κτίριο είναι ένα web server. Αυτό είναι απλά ένας υπολογιστής ότι τρέχει κάποια λειτουργίας system-- ίσως το ελεύθερο λογισμικό που ονομάζεται Apache, το οποίο CS50 IDE είναι σε λειτουργία. Έτσι μπορείτε πραγματικά να σκεφτείτε αυτό το κτήριο ως το κτίριο στο το οποίο είναι αποθηκευμένο CSt0 IDE. Αυτός είναι όπου όλοι σας έχετε λογαριασμούς, όπου όλοι σας έχετε το δικό σας web server τρέχουν, όλοι σας έχετε το δικό σας μοναδικό διευθύνσεις URL, καθώς αρχίσαμε να συζητήσουμε, και θα δείτε περισσότερα στο Π έθεσε έξι. Εδώ είναι το laptop μου κάπου αλλού στο διαδίκτυο. Και έτσι όταν επισκέπτεστε μια διεύθυνση URL που ανήκει για μένα, ότι η κυκλοφορία στο διαδίκτυο θα πάνω στον server, το διακομιστή παραλαμβάνει HTTP request-- σαν να πάρει index.html και είναι απαντώντας στην εν λόγω ιστοσελίδα. Έτσι, αυτό είναι το γενικό πρότυπο. Εκτιμώντας τα πάντα μέχρι τώρα και σήμερα, τα πάντα συνέβαινε μόνο στην όρια αυτού του κτιρίου. Ήμουν που χρησιμοποιούν φορητό υπολογιστή μου, αλλά Ήμουν συνδέεται με CS50 IDE, έτσι ώστε όλα αυτά τα προγράμματα που έτρεχα ήταν μέσα από αυτόν τον διακομιστή, το ίδιο. Αλλά τώρα, ας αρχίσουμε την επαναχρησιμοποίηση PHP για να γράψει μερικά πραγματικά προγράμματα που εξυπηρετούνται από έναν web server. Και για να το κάνουμε αυτό, είμαι πρόκειται να πάει σε ένα σωρό παραδείγματα ότι εισαγάγει αυτή την ιδέα εδώ. Έτσι, αυτό είναι το είδος του ένα φανταχτερό τρόπο περιγράφει ένα παράδειγμα προγραμματισμού. Και στην πραγματικότητα, όπως μπορείτε να βγείτε CS50 ή να εργάζονται για την τελική έργων, ή να λάβει κάποια συνέχεια σε τάξη, θα αρχίσετε για να δείτε ότι το world-- ιδιαίτερα έχοντας μεγαλώσει με γλώσσες όπως η C που είναι εξαιρετικά χαμηλή level-- συνειδητοποιούν ότι υπάρχει καλύτερη τρόπους γραφής λογισμικού. Υπάρχουν ορισμένες σχέδια που μπορείτε να ακολουθήσετε, ορισμένους τρόπους οργάνωσης των αρχείων σας και τους τρόπους της ονοματοδοσίας λειτουργίες σας, έτσι ώστε τα πολυλογώ, ο κόσμος έχει καταλήξει με ένα σωρό ακρωνύμια και τα ονόματα για τους τρόπους του προγραμματισμού. Αυτά είναι μόνο τεχνικές που μπορείτε να χρησιμοποιήσετε. Και ένας από αυτούς ονομάζεται MVC, για Μοντέλο Προβολή ελεγκτή. Και αυτό είναι μόνο για τώρα, μια υπερβολικά περίπλοκη τρόπος για να πούμε πώς θα πρέπει να lay out μια ιστοσελίδα που βασίζεται σε PHP, στην περίπτωσή μας. Πώς μπορείτε να οργανώσετε τα αρχεία σας, Πώς να οργανώσετε τη λογική σας, με τρόπο που καθιστά ευκολότερο να γράφετε πιο περίπλοκη ιστοσελίδες; Και πράγματι, θα γρήγορα φτάσετε εκεί με ρ-set επτά. Έτσι, στον κόσμο του MVC, θα πάμε για να δείτε ότι ο κώδικας μπορεί γενικά να χαρακτηριστεί είτε ως κωδικός μοντέλου, ή τον κωδικό του ελεγκτή, ή η προβολή κώδικα. Και Πάω να υπεραπλουστεύσουμε ως follows-- ο ελεγκτής είναι η εγκεφάλους του προγράμματός σας, αυτό είναι όπου όλα τα ενδιαφέρουσα λογική συμβαίνει. Έτσι, ό, τι έχουμε ήδη γραπτώς μέχρι στιγμής στην τάξη, Είναι κάτι σαν ελεγκτή code-- αυτό είναι που ελέγχει το πρόγραμμά σας, θηλιές σας, σας συνθήκες, οι λειτουργίες σας και μεταβλητές και όλα αυτά. Απόψεις, τώρα, πρόκειται να είναι μια μικρή πιο εμφανής στον κόσμο του διαδικτύου. Μια άποψη είναι η αισθητική της ιστοσελίδας σας. Είναι αυτό που ο χρήστης sees-- τις εικόνες, οι πίνακες HTML, οι ετικέτες HTML, και όλα τα του ότι, το σύνολο των αφράτο αισθητικής πράγματα που δεν είναι και τόσο δύσκολο να γράψω, αλλά είναι ακριβώς αυτό που παράγουν, είναι η λεγόμενη όψη, η αισθητική. Και το μοντέλο, σε τελική ανάλυση, πρόκειται να stuff-- βάση δεδομένων η οποία θα ξεκινήσει την κατάδυση σε όλα το πιο αυτή την Τετάρτη. Έτσι ελεγκτής είναι η λογική, θέα είναι η αισθητική πράγματα, και το μοντέλο πρόκειται να είναι, όπου αποθηκεύουμε τα πραγματικά στοιχεία μας. Ας ρίξουμε μια ματιά σε αυτό πιο συγκεκριμένα με το ακόλουθο παράδειγμα. Πάω να μπω σε κατάλογο μου εδώ της σημερινής πηγή code-- τα οποία είναι διαθέσιμα στο διαδίκτυο. Και Πάω να μπω σε έκδοση μηδέν. Και εδώ is-- ας την κλήση έκδοση μηδέν της ιστοσελίδας του CS50. Δεν υπάρχει πολύς καθόλου εδώ. Είναι μια πολύ απλή ιστοσελίδα που είναι πιθανώς χρησιμοποιώντας ό, τι HTML tags-- μόνο Υποθέτω ότι από το παρελθόν παραδείγματα; Τι είναι αυτό? H1-- πιθανότατα για το μεγάλο τολμηρή τον τίτλο, ότι το λογότυπο επάνω στην κορυφή, CS50. Και τι άλλο είναι στο παιχνίδι; Ναι; Κοινό: Μη αριθμημένη λίστα. DAVID Malan: Μη αριθμημένη list-- έτσι ώστε η Ετικέτα UL και ίσως μια-δυο LI ετικέτες. Και αν δεν θυμάστε αυτές, ειλικρινά δεν πειράζει. Αυτά είναι αφράτα είδος λεπτομέρειες εφαρμογής της HTML ότι μπορείτε γρήγορα να αναζητήσετε και είστε πίσω στο δρόμο σας. Θα επικεντρωθεί περισσότερο σχετικά με τον προγραμματισμό ιδέες που είναι οι πιο ζουμερό κομμάτια. Έτσι, ας ρίξουμε μια γρήγορη εξετάσουμε την HTML-- και μάλιστα αν έχω ανοίξει την πηγή άποψη εδώ, yup, Αυτό είναι ακριβώς ό, τι συμβαίνει εδώ. Υπάρχει μια ετικέτα UL. Χτισμένο στο εσωτερικό του που είναι να LI ετικέτες. Και τότε θα δανειστεί το URL της πραγματικής αναλυτικό πρόγραμμα εδώ. Και στη συνέχεια, στο lectures.php είναι προφανώς ένα άλλο που δημιουργούνται δυναμικά σελίδα ότι πρόκειται να έχει, ας see-- αχ, οι δύο πρώτες εβδομάδες της διάλεξης. Έτσι εβδομάδα μηδέν και μία εβδομάδα, ας δείτε this-- αν δείτε τη σελίδα πηγή, Επίσης, εξαιρετικά απλή. Αυτά οδηγούν σε δύο σελίδες που ονομάζεται week0.php, και week1.php. Έτσι, θεωρούν τώρα τι συμβαίνει. Όταν κάνω κλικ στο week0.php, φορητό υπολογιστή μου κάνει αίτηση για week0.php. Ο web server, γνωστός και ως, CS50 IDE, λαμβάνει τον εικονικό φάκελο. Είναι για να δει ένα μήνυμα όπως, να πάρει week0.php. Στη συνέχεια την ερμηνεία του αρχείου, κορυφή προς τα κάτω, από αριστερά προς right-- το αρχείο που ονομάζεται και week0.php-- φτύσιμο τα αποτελέσματα. Έτσι, στο εσωτερικό αυτού του αρχείου, week0.php, πρέπει να είναι η λογική ελεγκτή που παράγει Αυτό το HTML, και θα δούμε σύντομα αυτό. Αλλά για τώρα, επιτρέψτε μου κάντε κλικ στην εβδομάδα μηδέν, και τώρα έχουμε Τετάρτη και Παρασκευή, και τώρα έχουμε τις διαφάνειες αργά από εβδομάδα μηδέν. Και μπορείτε να ανακαλέσετε αυτό από τον τρόπο πίσω όταν. Έτσι, αυτό είναι όλο αυτό το δικτυακό τόπο κάνει. Ας εξετάσουμε πώς έχει κάνει αυτό. Πάω να πάει πίσω στο πηγαίο κώδικα εδώ, σε CS50 IDE, και θα πάω να ανοίξει index.php. Στην κορυφή αυτού του αρχείου είναι ένα μάτσο σχόλια. Και στη συνέχεια στη μέση αυτού του αρχείου αυτό, Αποδεικνύεται, δεν είναι απολύτως κώδικα PHP. Διότι, αν δεν έχετε κάποιο από τα ελεύθερο βραχίονα ετικέτες ερωτηματικό PHP, είστε ελεύθεροι να τεθεί μόνο HTML. Διότι ποια είναι η PHP διερμηνέας πρέπει να κάνουν, είναι όταν διαβάζει αυτό το file-- πάνω προς τα κάτω, από αριστερά προς right-- ερμηνεύει μόνο τον κωδικό που βλέπει μεταξύ αυτές οι αγκύλες ερωτηματικό. Και κάτι άλλο που δεν αναγνωρίζουν ως PHP, το φτύνει ακριβώς έξω. Και HTML είναι μεταξύ τα πράγματα θα φτύσει ακριβώς έξω. Έτσι, αυτό το αρχείο θα μπορούσε να έχει κληθεί index.html, αλλά είμαι πάντα ονοματοδοσία dot PHP ως ένα σκαλοπάτι. Lectures.php-- παρόμοια απογοητευτικό, είναι μερικά μόνο HTML. Week0.php, ομοίως μερικά μόνο HTML. Αλλά τώρα ας βάλουμε σχετικά με την παροιμιώδη μηχανική καπέλο, και να εξετάσει πώς μπορούμε να βελτιώσουμε αυτό. Δεν είναι δύσκολο να το κάνετε αυτό, αλλά εγώ το είδος της ανατεθεί σε αντιγραφή και επικόλληση. Και στην πραγματικότητα, αν κάνω δύο εβδομάδες, θα ξέρω τι είμαι κατά πάσα πιθανότητα πρόκειται να κάνει; Πάω να πάει στο week1.php, είμαι Θα επισημάνω τα πάντα. Πάω να το αντιγράψετε, να το επικολλήσετε σε ένα νέο αρχείο που ονομάζεται week2.php, τσίμπημα ορισμένες διευθύνσεις URL, και είναι στο δρόμο μου. Έτσι, με βάση αυτό που έχουμε δει σε C ήδη, Αυτό δεν αισθάνεται δεξιά, ελπίζω. Αντιγραφή, επικόλληση σπάνια η σωστή λύση. Τι μπορούμε λοιπόν να ξεκινήσετε να κάνουμε για να βελτιώσουμε αυτό; Πού είναι οι ευκαιρίες για καλύτερο σχεδιασμό; Μέχρι τη στιγμή που έχω να εβδομάδα οκτώ, πρόκειται να είναι πραγματικά ενοχλητικό αν θέλετε να αλλάξετε η γραμματοσειρά του κάθε ένα από τα σελίδες μου, ή αν θέλω να αλλάξει η δομή της διάταξης. Πού είναι λοιπόν η ευκαιρία για καλύτερο σχεδιασμό; Λοιπόν, ας εξετάσουμε τι είναι κοινές σε όλα από αυτά τα αρχεία. Εδώ είναι μία εβδομάδα, είναι εδώ εβδομάδα μηδέν, εδώ είναι lectures.php, εδώ είναι index.php-- ποιος είναι ο ίδιος και τι είναι διαφορετικό, σε γενικές γραμμές, σε κάθε ένα από αυτά τα αρχεία; Ναι; Κοινό: [δεν ακούγεται] DAVID Malan: Εντάξει, καλά. Έτσι, υπάρχει ένα σχέδιο, σίγουρα, σύμφωνα με την οποία κάθε φορά που μπορώ να επιλέξω εγώ διάλεξη, Θα πρέπει να παράγει μια πολύ παρόμοια αναζητούν τη σελίδα. Και έτσι ίσως μπορώ να αξιοποιήσουν το γεγονός ότι πραγματικά, σκόπιμα αριθμητικά ευρετήριο lectures-- μας αν μπορώ να βάλω ακόμα περισσότερο λέξεις στην απάντησή σας. Και αυτό είναι το μόνο πράγμα που, πραγματικά, ότι αλλάζει μεταξύ εβδομάδα ένα-- και επιτρέψτε μου να μετακινηθείτε προς τα κάτω έτσι είναι περίπου στο ίδιο place-- τόσο εδώ είναι η εβδομάδα μηδέν, χονδρικά στην κορυφή. Εδώ είναι μια εβδομάδα, την εβδομάδα μηδέν, μία εβδομάδα, την εβδομάδα μηδέν. Εντάξει, κυριολεκτικά, αν γνωρίζετε κανένα απολύτως πρόγραμμα, αυτό είναι τώρα ακριβώς όπως ένα μοτίβο που ταιριάζουν παιχνίδι. Έτσι τι είναι διαφορετικό; Ναι; Κοινό: [δεν ακούγεται] DAVID Malan: Καλό, έτσι ώστε ο τίτλος αλλάζει, πάντα τόσο λίγο. Zero πρόκειται, φυσικά, σε μία. Το ίδιο πράγμα συμβαίνει στην ετικέτα H1. Και εμείς δεν το βλέπουμε τόσο εύκολα, επειδή οι διευθύνσεις URL είναι λίγο μακριά. Αλλά αυτές οι διευθύνσεις URL αλλάζουν ελαφρώς. Αλλά αυτό δεν αλλάζει είναι, τολμώ λένε, τα περισσότερα από τα περιεχόμενα του page-- η ετικέτα HTML είναι το ίδιο, το κεφάλι είναι το ίδιο, ο τίτλος είναι σχεδόν η ίδια, το σώμα είναι η ίδια, και σχεδόν όλα τα άλλα είναι η ίδια, εκτός από αυτά τα μικρά τσιμπήματα. Πώς, λοιπόν, μπορούμε να πάμε για factoring μερικά από αυτό έξω; Και επιτρέψτε μου να προτείνω ακριβώς ότι στην επόμενη έκδοση. Έτσι, εδώ στην έκδοση ενός, έχω την ακριβή ίδια αρχεία, καθώς και ένα ζευγάρι των άλλων. Εδώ είναι index.php-- και ακόμη και αν δεν έχετε δει ποτέ πριν PHP, τι είμαι εγώ μάλλον κάνει για να λύσει αυτό problem-- με βάση αυτά που βλέπετε εδώ; Ναι, είναι ότι μια μικρή δέσμευση; Κανένα? Ναι, να συνεχιστεί. Κοινό: [δεν ακούγεται] DAVID Malan: Ναι. Κοινό: [δεν ακούγεται] DAVID Malan: Θα πρέπει να κάνετε μιλούν λίγο πιο δυνατά. Κοινό: [δεν ακούγεται] DAVID Malan: Εντάξει, καλά. Και εγώ think-- ήταν είναι δύσκολο να ακούσω you-- αλλά εγώ σκεφτείτε τι παίρνετε σε είναι ότι οι ετικέτες που ήταν κοινά επάνω στην κορυφή, και οι ετικέτες που ήταν κοινές για την κάτω, τώρα έχουν υπολογιστεί έξω, ή υποβιβαστεί σε ποια αρχεία; Header.php και footer.php-- και θα πάμε να προβεί σε ορισμένες τσιμπήματα αντιμετωπίζουν το πρόβλημα που μόλις εκφράστηκαν σχετικά με την αλλαγή των αριθμών, για παράδειγμα, αν άκουσα καλά. Αλλά αυτό φαίνεται να είναι η ουσία του. Αν υπήρχε ένα τεράστιο ποσό απολύσεων στην κορυφή της σελίδας, και ένα τεράστιο ποσό πλεονασμού στο κάτω μέρος, ας κυριολεκτικά highlight και κόψτε έξω αυτό το περιεχόμενο, το βάζουμε σε ένα ξεχωριστό file-- ακριβώς όπως η ιδέα της CSS, όπου θα συνυπολογίζονται έξω πολύ παρόμοια αισθητική, βάλτε σε ένα ξεχωριστό αρχείο τελεία PHP, χρησιμοποιήστε το απαιτούν mechanism-- οποία Είναι σαν ντο δίεση include-- οποία είναι ουσιαστικά σαν να λέμε να πάτε πιάσε τα περιεχόμενα του header.php, και να αντιγράψετε και να επικολλήσετε τους εδώ. Αλλά τι σημαίνει αυτό είναι ότι τώρα στο index.php, έχω αυτές τις δύο γραμμές. Σε lectures.php, θα ήθελα επίσης Οι δύο αυτές γραμμές. Σε week0.php, θα ήθελα επίσης Οι δύο αυτές γραμμές. Έτσι τώρα, αν θέλετε να αλλάξετε ο τίτλος του όλες τις σελίδες μου, ή θέλω να αλλάξει η θεμελιώδη δομή, Μπορώ να το αλλάξω τώρα σε ένα μόνο σημείο, ή δύο places-- κεφαλίδα και υποσέλιδο, αντίστοιχα. Τώρα εκκίνησης του κώδικα, προκειμένου να εξετάσουν λίγο πιο αινιγματικά, σωστά; Αλλά αν σκεφτείτε τι η σελίδα είναι doing-- αν είμαι ζητώντας week0.php, όπως ακριβώς και για την κατάρτιση πάνω here-- όταν ζητείται week0.php, τι σημαίνει αυτό? Κυριολεκτικά, το αρχείο αυτό είναι ζήτησε από το πρόγραμμα περιήγησης. Α.κ.α. στο ίντερνετ server-- CS50 ID-- αρπάζει αυτό αρχείο, week0.php, και διαβάζει αυτό πάνω προς τα κάτω, αριστερά προς τα δεξιά. Σε μία γραμμή, συναντά αμέσως ανοικτό στήριγμα ερωτηματικό PHP, απαιτείται κεφαλίδα dot PHP, και έτσι ποια είναι η PHP διερμηνέα does-- ότι είναι ενσωματωμένη στο διαδίκτυο server, γιατί προπαραμετροποιηθεί αυτό για you-- πηγαίνει αυτόματα σε header.php, αντιγράφει τα περιεχόμενα, επικολλά εδώ. Στη συνέχεια, όμως οι συναντήσεις διερμηνέα ερωτηματικό κοντά βραχίονα, έτσι όλα γίνονται σκέψης. Τώρα φτύνει απλά τυφλά από δύο γραμμές μέσω επτά, επειδή είναι απλώς πρώτων HTML. Παίρνει να παρατάξει οκτώ, και το κάνει αυτό ίδια μαγεία again-- το άνοιγμα του αρχείου, αρπάζοντας το περιεχόμενο, και απαιτώντας από αυτούς ή επικόλληση τους το δικαίωμα στη συνέχεια και εκεί. Αλλά εγώ αναφέρθηκα σε ένα σφάλμα. Αυτό είναι μια μερική βήμα προς τα πίσω, γιατί αν κοιτάξουμε στο header.php, Έχω το είδος του κόψει μια γωνιά. Τι χαρακτηριστικό εγώ παραιτηθεί για να αποκτήσουν αυτό συζητήσιμο καλύτερο σχεδιασμό; Ναι; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, έχω το είδος του κόψει μια μη τετριμμένη γωνία. Μπορείτε επεσήμανε ότι αυτό που αλλάζει ήταν ο τίτλος, ο αριθμός στον τίτλο, και ο αριθμός στο Η1. Έτσι, η λύση μου ήταν, εντάξει, ας μετονομάσετε τη σελίδα, και να μην ασχοληθεί με αυτό απολύτως πρόβλημα. Έτσι, αυτό είναι μια μερική οπισθοδρόμηση για σίγουρος. Αλλά αυτό που είναι αξιοσημείωτο εδώ είναι ότι αυτό που έχω κάνει άλλως συνυπολογίζονται όλα με την κοινή πράγματα. Και σε footer.php, πρόσεξα ότι συνυπολογίζονται από όλα αυτά, αν και μικρότερο, κοινά πράγματα. Γι 'αυτό πρέπει με κάποιο τρόπο να είναι πλέον σε θέση να κάνουμε ένα ακόμη βήμα προς τα εμπρός, και να διορθώσετε ότι τα θέματα του τίτλου. Ας το κάνουμε αυτό. Επιτρέψτε μου να μπω σε δεύτερη εκδοχή μου εδώ, το οποίο, και πάλι, έχει τα ίδια αρχεία εκτός για μία νέα προσθήκη. Και αυτό είναι λίγο πιο φλύαρη, αλλά ας δούμε αν μπορούμε μπορεί να πειράζω εκτός τι συμβαίνει εδώ. Έτσι, αντί να απαιτούν header.php, και footer.php, Μου φαίνεται να απαιτεί μόνο μία file-- ονομάζεται, φυσικά, helpers.php. Και επιτρέψτε μου να προβλέπουν τώρα, τι είναι μέσα από helpers.php είναι απλώς ένα μάτσο λειτουργίες ότι έγραψα, ακριβώς όπως και πριν. Αλλά εγώ αυτό που ονομάζεται helpers.php. Τώρα προφανώς, σε γραμμή τρία και 10, είμαι καλώντας δύο functions-- καθιστούν κεφαλίδα, υποσέλιδο καθιστούν. Εκείνοι που δεν έρχονται με PHP, έγραψα αυτές που ο ίδιος. Και τα έβαλα σε helpers.php. Τώρα, έχουμε δει μόνο την ακόλουθη σύνταξη μία φορά, και ήταν εξαιρετικά σύντομη. Αλλά αυτό είναι προφανώς ένα επιχείρημα να καταστήσει κεφαλίδα, τη λειτουργία. Γιατί ξέρω ότι; Καλά εδώ είναι μια στενή παρένθεσης, εδώ είναι μια ανοιχτή παρένθεσης. Και φυσικά, όπως και στη C, κάτι μεταξύ αυτών παρένθεση είναι ένα input-- ή επιχείρημα για την λειτουργία του. Ποιος είναι ο τύπος δεδομένων του επιχειρήματος αυτού, με βάση αυτά που έχετε επισημάνει; Τι κάνουν αυτές οι αγκύλες δείχνουν, με βάση την προηγούμενη εβδομάδα; Ναι, είναι ένα array-- Συγκεκριμένα μια συνειρμική σειρά. Και αυτή η σύνταξη ομολογουμένως είναι λίγο funky, Αλλά αυτό είναι μόνο περνώντας σε ένα βασικό ζευγάρι αξίας. Το κλειδί είναι, απόσπασμα unquote τον τίτλο, και η τιμή είναι CS50. Αν το είχαμε κάνει αυτό σε C, θα μπορούσε, αντί μοιάζουν περισσότερο με αυτό, μόνο απόσπασμα unquote CS50-- ή στην πραγματικότητα θα ήταν σγουρά τιράντες, ή κάτι τέτοιο σε C, όπου το κλειδί είναι μηδέν, και η τιμή είναι CS50. Αλλά και πάλι, σε PHP, ακόμη και αν η σύνταξη είναι, και πάλι, λίγο παράξενο, σας επιτρέπει να περάσει σε λέξεις αντί για αριθμούς να συνδέσει τα πλήκτρα με αξίες. Έτσι τι σημαίνουν όλα αυτά; Αν πάω σε helpers.php, ας ρίξουμε μια ματιά σε αυτή τη λειτουργία. renderHeader.php, μάλλον renderHeader είναι η λειτουργία μου, και ξέρω ότι επειδή βλέπω η λέξη-κλειδί λειτουργία εδώ. Αυτό είναι το νέο C-- από αυτό προφανώς παίρνει ένα επιχείρημα που ονομάζεται data-- αλλά θα μπορούσα να έχω αυτό που ονομάζεται τίποτα, αλλά μου ζήτησε τα δεδομένα, ακριβώς για να είναι ένα μικρό και clean-- απλά ρίξτε μια εικασία, ιδίως εάν έχετε προγραμματιστεί σε κάποιο άλλο γλώσσα υψηλού επιπέδου πριν, κάτι Γ παραπάνω, εννοιολογικά. Τι σημαίνει ίση ανοιχτό βραχίονα αγκύλη πιθανώς σημαίνει; Ή τι μπορεί να σημαίνει αυτό; Δεν έχω δει αυτό σε C. Ναι; Ένα άδειο πίνακα. Συγκεκριμένα, αυτό σημαίνει ότι αν ο χρήστης δεν καλούν renderHeader με ένα επιχείρημα, είμαι ακόμη σε εξέλιξη να έχουν ένα επιχείρημα που ονομάζεται δεδομένων, αλλά προκαθορισμένη τιμή του είναι πρόκειται να είναι μια κενή σειρά. Έτσι είναι απλά ένα ωραίο ευκολία. Δεν έχω να φωνάζει στον χρήστη, ή λέτε ότι χρησιμοποιείται η λειτουργία μου λάθος. Μπορώ να δώσω στον χρήστη μια προεπιλεγμένη αξία, αν δεν με νοιάζει ιδιαίτερα. Τώρα αυτή η λειτουργία, είμαι πρόκειται να κυματίσει τα χέρια μου. Αλλά αυτή η λειτουργία επιτρέπει απόσπασμα μας για να περάσουν αυτές τις μεταβλητές στα δεδομένα σε header.php με τον ακόλουθο τρόπο. Και αυτό είναι το τελευταίο κομμάτι, Νομίζω ότι, από funky σύνταξη. Εδώ είναι η δική μου εκδοχή νέα από το header.php-- συνήθιζε να λέει, κυριολεκτικά, ανοιχτό βραχίονα τίτλο CS50, και ότι ήταν. Και ίδιο πράγμα για το Η1. Τώρα λέει προφανώς κάτι αρκετά funky. Και επιτρέψτε μου να απλουστευθεί αυτή για μια στιγμή ως ακολούθως. Αυτό είναι ό, τι έχω άλλαξε τον τίτλο μου να είναι. Ωστόσο, είναι να πάρει λίγο άσχημο με συνεχώς ανοιχτή παρένθεση με την PHP, και στη συνέχεια χρησιμοποιήστε τη λειτουργία εκτύπωσης. Αποδεικνύεται ότι η PHP έχει ένα στενογραφία σημειογραφία για αυτό, το οποίο είναι ακριβώς ένα σύμβολο της ισότητας, η οποία είναι τεχνικά ένα λειτουργία που ονομάζεται ηχώ αντί της εκτύπωσης, αλλά είναι το ίδιο πράγμα, αποτελεσματικά. Αυτό μοιάζει λίγο καλύτερα. Είναι απλά μια συντακτική ζάχαρη, αν θέλετε, ότι κάνει κωδικό μου φαίνονται λίγο καλύτερα. Αλλά αποδεικνύεται, και θα δούμε πάλι αυτό πριν από καιρό, θα πρέπει να καλέσετε αυτό ενοχλητικά μακρά λειτουργία που ονομάζεται HTML ειδικούς χαρακτήρες σε PHP, διότι αποδεικνύεται υπάρχουν ορισμένες εισροές ώστε ο χρήστης να μπορεί να μας δώσει, ή ότι οι χρήστες μπορεί να μας δώσει, που πρόκειται να σπάσει την ιστοσελίδα μας. Αλλά θα δούμε ότι την επόμενη εβδομάδα με JavaScript. Αλλά για τώρα, απλά να ξέρετε ότι Αυτό το αρχείο, headers.php, απλά παίρνει τον τίτλο που Πέρασα, το κάνει βεβαιωθείτε ότι είναι ασφαλές να εγχυθεί σε μια ιστοσελίδα σελίδα, και το φτύνει έξω ως τίτλο μου και ως Η1 μου. Έτσι, αν πάω σε αυτή την έκδοση τώρα, παρατηρήσετε ότι οι διαλέξεις έχει τον τίτλο του πίσω, εβδομάδα μηδέν έχει τον τίτλο του πίσω, και Πράγματι, η HTML είμαι δημιουργίας είναι ταυτόσημο με αυτό που η πρώτη μου έκδοση was-- εκτός από τα κενά μου, γιατί έχω αρχίσει μορφοποίηση κωδικό μου λίγο διαφορετικά. Αλλά έχω δημιουργούνται όλα ο κώδικας νοιάζομαι. Επιτρέψτε μου λοιπόν να σταματήσουμε για μόνο μια στιγμή και να δούμε Αν υπάρχει κάποια ερωτήματα ή σύγχυση που έχω δημιουργήσει. Εντάξει, ας στρίψει λίγο πιο δύσκολο εδώ για να δούμε αν υπάρχει μια ευκαιρία για βελτίωση. Helpers.php είχε επίσης αυτό λειτουργία, που ονομάζεται renderFooter. Και τι είναι αξιοσημείωτο για την renderHeader, και renderFooter; Και πάλι, για τους σκοπούς του σήμερα, γνωρίζουμε ότι η λειτουργία είναι μόνο απόσπασμα ο τρόπος μου πέρασμα επιχειρήματα σε header.php και footer.php. Συγνώμη; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, έχω μόνο άλλαξε το απαιτούν γραμμή. Έτσι κυριολεκτικά, έχω διαπράξει την αμαρτία των αντιγραφή και επικόλληση, για άλλη μια φορά. Δεν είναι ένας τεράστιος αριθμός των γραμμών, αλλά έρχονται on-- αν είμαι αντιγραφή και επικόλληση τα πάντα απλά για να αλλάξει μια μικρή λέξη, και η μια μικρή λέξη που δείχνει ο Alan είναι έξω υποσημειώσεις εδώ, έναντι header εδώ. Διαφορετικά, τα πάντα είναι πανομοιότυπες, με εξαίρεση, Φυσικά, τα ονόματα της συνάρτησης. Λοιπόν, τι θα μπορούσαμε να κάνουμε καλύτερα; Και επιτρέψτε μου να ανοίξει αυτή την έκδοση Εδώ, σύμφωνα με την οποία σε helpers.php, Γιατί δεν μπορώ απλά να πάρετε μια λίγο πιο έξυπνος γι 'αυτό; Γράψτε ελαφρώς πιο περίπλοκη κώδικα, αλλά καλέστε την καθιστούν; Έτσι, ό, τι έχω αλλάξει ριζικά; Παίρνει ένα επιχείρημα now-- δύο επιχειρήματα, τα δεδομένα ακόμα. Και τότε ποιο είναι το πρώτο Το όνομά πιθανώς χρησιμοποιείται για την, με βάση αυτά που διαβάζετε εδώ; Ακόμη και αν ορισμένοι από τη σύνταξη εξακολουθεί να είναι νέος. Τι είναι το σύμβολο του δολαρίου πρότυπο; Συγνώμη; Κοινό: κεφαλίδα ή υποσέλιδο. DAVID Malan: κεφαλίδα ή υποσέλιδο. Έτσι προφανώς, αποφάσισα ότι αν το μόνο πράγμα που αλλάζει είναι το πρότυπο που θέλω να print-- και από το πρότυπο Εννοώ αυτό είναι πρότυπο για κώδικα που θέλω να εξόδου, αλλά θέλω να συνδέσετε κάποια values-- οπότε αν αυτό είναι μόνο η κεφαλιά ή το υποσέλιδο, γιατί δεν μπορώ να παραμετροποιήσετε ότι και να καλέσει το σύμβολο του δολαρίου επιχείρημα πρότυπο? Και τότε αυτό το funky σύνταξη μου επιτρέπει για να δημιουργήσουν μια διαδρομή σε μια μεταβλητή εδώ. Έτσι, το σύμβολο του δολαρίου διαδρομή είναι μια μεταβλητή. Τι σημαίνει αυτό σύνταξη κάνετε, αν είστε εξοικειωμένοι; Ναι; Κοινό: [δεν ακούγεται] DAVID Malan: Ακριβώς. Εάν το πρότυπο είναι, απόσπασμα unquote, κεφαλίδα, ή εάν το πρότυπο είναι, απόσπασμα εισαγωγικά, υποσέλιδο, ότι υπάρχει γραμμή ότι έχω τόνισε, γραμμή οκτώ, είναι απλά να πάρει αυτό το όνομα, όπως η επικεφαλίδα, και τη συνένωση με τελεία PHP. Έτσι δεν είχαμε αυτόν τον τελεστή σε C. Αυτός ο τελεστής τελεία είναι ένα καταπληκτικό πράγμα PHP-- αν είστε εξοικειωμένοι με JavaScript ή Java, μπορείτε να χρησιμοποιήσετε το συν εγγραφείτε για να κάνετε αλληλουχία. Στην C, είναι ένας πόνος στην neck-- και λυπάμαι τόσο, σε π-set έξι, εσείς πρόκειται να πρέπει να κάνετε this-- είναι ένας πόνος στο λαιμό να ενώσετε χορδές. Γιατί; Λοιπόν, γιατί αν έχεις μια σειρά που είναι αυτό το διάστημα, και μια άλλη συμβολοσειρά που είναι αυτό το διάστημα, δεν μπορείτε απλά να τους συνδέσετε μαζί. Τι αντί έχετε να κάνετε σε C; Ναι; Κοινό: [δεν ακούγεται] DAVID Malan: Θα πρέπει να malloc μνήμη, ή να χρησιμοποιήσετε μια σειρά στη στοίβα. Και θα πρέπει πραγματικά να κάνουν ότι αρκετά μεγάλη σειρά για να χωρέσει αυτό συν αυτό, καθώς και η ανάστροφη κάθετο μηδέν. Στη συνέχεια, τα ενώσετε μαζί χρησιμοποιώντας ανακατεύετε γάτα ή χειροκίνητα με ένα βρόχο for, ή οποιοδήποτε αριθμό από τεχνικές. Και θα σας δείξουμε ένα ζευγάρι στην π-set έξι. Είναι ένας πόνος στο λαιμό. Και αυτό είναι πραγματικά αυτό που θέλω να πω για Αυτή έναντι this-- όπως η C σε σχέση με την PHP. Μπορείτε απλά να πάρετε πολύ περισσότερα λειτουργικότητα για δωρεάν, έτσι ώστε να μπορείτε να εστιάσετε, ιδανικά, στη διασκέδαση μέρος της κωδικοποίησης, το έργο που θέλετε να λύσει, παρά τις μικρολεπτομέρειες χαμηλό επίπεδο. Έτσι, αυτό δημιουργεί μόνο header.php ή footer.php βάσει των οποίων ένα καλώ. Και πράγματι, αν πάω στο index.php, προειδοποίηση το μόνο που changed-- Αντί καλώντας καθιστούν κεφαλίδα ή το υποσέλιδο καθιστούν, Είμαι καλώντας καθιστούν, που ακολουθείται από το όνομα του προτύπου που θέλω να κάνω. Και θα το δείτε, επίσης, στο πρόβλημα που επτά, σύμφωνα με την οποία θα σας επιτρέψει να χρησιμοποιήσετε το ίδια λειτουργία για να κάνουν τσαμπιά και τσαμπιά από διάφορες ιστοσελίδες. Έτσι, αντί να σταθούμε πάρα πολύ περισσότερο σε αυτές τις details-- το οποίο θα δείτε και πάλι σε σετ πρόβλημα seven-- ας ρίξουμε μια ματιά στο τώρα στην αρχή μιας λύσης σε ένα πιο ενδιαφέρον πρόβλημα. Μέχρι στιγμής, τίποτα δεν έχουμε έχει γίνει αποθηκευμένα δεδομένα. Στην πραγματικότητα, η μόνη φορά που έχουμε αποθηκεύσει ποτέ κάτι που έχουμε κάνει σε αυτή την κατηγορία είναι όταν είχαμε ένα πολύ απλό demo λίγο πίσω, οπότε χρησιμοποιήσαμε το αρχείο IO σε C, και νομίζω ότι θα πληκτρολογήσει το όνομά μου, και Το όνομά της Hannah, και το όνομα της Μαρίας, ή ίσως το όνομα του Andy, και τότε θα σωθεί μια file-- CSV αρχείο διαχωρισμένο με κόμματα. Και χρησιμοποιήσαμε fopen-- νομίζω χρησιμοποιήσαμε fprintf από όσο θυμάμαι, και σώσαμε ένα αρχείο. Τώρα, αυτό είναι το απλούστερο μορφή μιας βάσης δεδομένων. Αν θέλετε να κάνετε μια ιστοσελίδα για την Πρόγραμμα Frosh ΔΥ, όπου οι πρωτοετείς μπορούν να εγγραφούν για ένα άθλημα, που στην ιδανική περίπτωση θέλουν να κάνουν κάτι με αυτά τα δεδομένα. Την περασμένη εβδομάδα, δεν κάναμε τίποτα με την data-- που μόλις είπα, είστε εγγεγραμμένος, δεν είναι πραγματικά. Ή ίσως θα αποσταλεί το κοσμήτορας, και αυτό ήταν. Αλλά θα ήταν ωραίο αν μπορούσα που δίνουν επιτηρητής ένα αρχείο CSV, σαν ένα αρχείο Excel. Ή ακόμα καλύτερα, θα ήταν ήταν ωραίο αν θα μπορούσα βάλουν τα ονόματά των καταναλωτών αυτών και dorm ονόματα και όλα αυτά σε μια βάση δεδομένων που απλά ζει για πάντα, μέχρι να επιλέξετε να διαγράψετε τα δεδομένα. Μια βάση δεδομένων που επιτρέπει την μου για την αναζήτηση πληροφοριών. Και πράγματι, αυτό είναι ό, τι είναι μια βάση δεδομένων. Έχουμε εισαγάγει σήμερα, και την επόμενη εβδομάδα, πάρα πολύ, μια τεχνολογία ονομάζεται SQL-- ένα Structured Query Γλώσσα, η οποία είναι μια άλλη γλώσσα. Είναι ουσιαστικά ένας προγραμματισμός γλώσσα, αλλά για τις βάσεις δεδομένων. Και μια βάση δεδομένων για τώρα, απλά θεωρούμε ως ένα σούπερ φανταχτερό έκδοση του Microsoft Excel, ή το Google Λογιστικά φύλλα, ή Αριθμοί της Apple. Είναι γενικά ένα πρόγραμμα που επιτρέπει μπορείτε να αποθηκεύσετε ένα σωρό δεδομένων σε σειρές και στήλες, αρκετά όπως ίσως στο Excel. Αλλά τι είναι ωραίο, ειδικά αν δεν είμαστε σούπερ εξοικειωμένοι με το Excel, τι SQL σας επιτρέπει να κάνετε είναι το ερώτημα αυτό πληροφορίες με το γράψιμο γραμμές κώδικα όπου μπορείτε, ακόμα κι αν σας βάση δεδομένων έχει ένα εκατομμύριο σειρές σε αυτό, μπορείτε να βρείτε τα πράγματα σούπερ γρήγορο. Στην πραγματικότητα, το Excel είναι ιδιαίτερα κακό σε μεγάλα σύνολα δεδομένων. Και στην πραγματικότητα, μέχρι μερικά χρόνια πριν, αποδείχθηκε Excel θα σας επιτρέψει να αποθηκεύσετε έως 65.535 σειρές των οποίων data-- Ακούγεται σαν μια παρτίδα, αλλά η Τότε ήμουν ένας απόφοιτος σπουδαστής, και θυμάμαι να γλιστρήσουν πάνω αυτό γιατί μου έκανε την παραγωγή Αρχεία CSV για την έρευνα μου και εγώ ήθελε να τους αναλύσει γρήγορα με ακριβώς το άνοιγμα στο Excel. Φυσικά, μόλις ο υπολογιστής μου συνετρίβη, γιατί είχα πάνω από 65.000 σειρές. Αλλά από πού προήλθε η 65.535 προέρχονται από; Τι κάνει η Microsoft, προφανώς; Αν είσαι καλός με τις δυνάμεις σας από δύο; Ναι, ήταν χρησιμοποιώντας ένα 16-bit τιμή να αντιπροσωπεύουν τον αριθμό σειράς. Και τα δύο να είναι 16 65,536-- μείον ένα, γιατί αν μηδέν δείκτης σημαίνει ότι ήταν το πιο αριθμός των σειρών θα μπορούσα να έχω. Και ήταν απλά μια σχεδιαστική απόφαση. Με την αποθήκευση 16 bit, μου περιορίζεται 16.000 σειρές, αντί των 4 δισεκατομμυρίων, η οποία θα μπορούσε να έχει ιδανικά. Αλλά για τώρα, θα πάμε να εισαγάγει αυτό περισσότερο σε ένα πλαίσιο ιστού. Και τι είναι καλό για τον SQL είναι ότι ακόμη και αν και είναι αρκετά ισχυρό και αρκετά σοφιστικέ, πραγματικά βράζει σε τέσσερις βασικές λειτουργίες, τέσσερις βασικές λειτουργίες, αν will-- επιλέξετε, για την ανάκτηση των δεδομένων, αναζήτηση για τα δεδομένα? διαγραφή ή διαγραφή δεδομένων? εισάγετε για την προσθήκη γραμμών στη βάση δεδομένων? και την ενημέρωση. Έτσι, αν έχετε χρησιμοποιήσει ποτέ το Google Υπολογιστικά φύλλα, η Apple αριθμοί, Microsoft Excel, έχουν εκτελεστεί, πιθανότατα, όλα των πράξεων αυτών ως άνθρωπο με χρησιμοποιώντας μόνο το πληκτρολόγιο και mouse-- σας εισαγωγή δεδομένων, χρησιμοποιώντας τα μάτια σας για να επιλέξετε ή να αναζητήσετε δεδομένα, ή δεδομένα ενημέρωσης, ή να διαγράψετε τα δεδομένα. Λοιπόν, τι σημαίνει αυτό; Λοιπόν, προ-εγκατεστημένο σε CS50 IDE είναι ένα πρόγραμμα που ονομάζεται MySQL. Είναι ένα ελεύθερο, ανοικτού κώδικα βάση δεδομένων που είναι εξαιρετικά δημοφιλής. Facebook, για παράδειγμα, χρησιμοποιεί σε αυτό ημέρα, μεταξύ άλλων εργαλείων που χρησιμοποιούν. Και πολύ πολύ δημοφιλείς ιστοσελίδες χρησιμοποιούν αυτό σε μεγάλο βαθμό επειδή είναι γρήγορο, και επειδή είναι δωρεάν. Αν και σίγουρα υπάρχουν εναλλακτικές λύσεις. Και κάποιοι από εσάς μπορεί να ανακατεύομαι με εναλλακτικές λύσεις για την τελική έργων. Αυτό είναι ένα στιγμιότυπο, εν τω μεταξύ, του ένα εργαλείο web-based ονομάζεται phpMyAdmin. Είναι τυχαίο το γεγονός ότι Αυτό το web-based εργαλείο είναι επίσης γραμμένο σε μια γλώσσα, PHP, αλλά αυτό που είναι γραφτό να κάνουμε είναι να μας δώσει μια web-based διεπαφή με μια βάση δεδομένων. Επειδή η MySQL είναι συνήθως κάτι, ιστορικά, μπορείτε θα αλληλεπιδρούν με μόνο με μια γραμμή εντολών. Και θα ήταν σούπερ ενοχλητικό και απόκρυφες να έχουν για να πληκτρολογήσετε εντολές κειμένου για να επιλέξετε δεδομένων, εισαγωγή δεδομένων και διαγραφή δεδομένων. Έτσι μερικοί άνθρωποι στο διαδίκτυο έγραψε ένα web-based πρόγραμμα ότι απλά αφήστε μας να διαχειρίζονται τα δεδομένα στη βάση δεδομένων μας. Είναι σαν διπλό κλικ στο Excel, και τρέχει ένα web-based έκδοση αυτών. Και τι πρόκειται να χρησιμοποιήσετε αυτό για τελικά την επόμενη εβδομάδα, όχι σε π-set έξι, αλλά να χτίσει κάτι που ονομάζεται CS50 Οικονομικών, η οποία πρόκειται να έχει μια βάση δεδομένων χρήστες, με ονόματα χρήστη και κωδικούς πρόσβασης, δολάριο ποσά που έχουν στους τραπεζικούς τους λογαριασμούς. Είναι πρόκειται να είναι κάτι που χρησιμοποιείτε για να αποθηκεύσετε τα σύμβολα και οι ποσότητες των αποθεμάτων που οι χρήστες έχουν αγοράσει χρήση εικονικών δολάρια που θα δώσει σε αυτούς. Και αυτό πρόκειται να επιτρέψει στους χρήστες για να εγγραφείτε για την ιστοσελίδα σας, έτσι ώστε ακόμη και τους φίλους σας να συντονιστείτε στον ιστοχώρο σας και στην πραγματικότητα εγγραφή, συνδεθείτε, και παίζουν και προσπαθήστε να βρείτε σφάλμα στον κώδικα σας, και να προσπαθήσουμε να βρούμε σφάλματα στην ιστοσελίδα σας. Και απλά θα εγγραφούν προσθέτοντας τον εαυτό τους, αποτελεσματικά, μέσω του κωδικού που γράφετε στη βάση δεδομένων σας. Για παράδειγμα, αυτό είναι ένας γρήγορος screenshot του τι είναι μια βάση δεδομένων που μπορεί να μοιάζει. Αυτό ήταν από μία από solutions-- του περασμένου έτους αυτό είναι σαν ένα μίνι Excel αρχείο, αποθηκεύεται στη βάση δεδομένων μας, αποθηκεύονται σε αυτό το λογισμικό που ονομάζεται MySQL. Από την αριστερή πλευρά, έχω προφανώς δίνεται σε κάθε χρήστη ένα μοναδικό αριθμό. Στη δεύτερη στήλη, έχω δώσει ο καθένας ένας χρήστης name-- δική μου ανάμεσα τους. Και από την δεξιά πλευρά, Τους έχω δώσει μια hash. Τώρα αυτό είναι πραγματικά ένα κωδικό πρόσβασης, αλλά δεν είναι ένα απλό κωδικό κείμενο. Είναι ένα κρυπτογραφημένο κωδικό πρόσβασης, εάν θα σας, ή ένα hash τον κωδικό πρόσβασης. Ποια θα επανέλθουμε σύντομα. Αλλά αν έχετε διαβάσει ποτέ ένα άρθρο σχετικά με το πώς κωδικό σας σε κάποια τράπεζα ή μερικά δικτυακός τόπος μπορεί να έχει παραβιαστεί, αυτό μπορεί να σημαίνει γενικά ένα από τα δύο πράγματα. Έτσι, αυτό είναι απλά ένα απόσπασμα από έξι χρήστες. Όλοι τώρα μπορείτε να υπολογίσετε έξω μέσω hacking ή σκάσιμο τι κωδικούς έξι άνθρωποι μας είναι. Αλλά αν έχετε πάρει ποτέ μια προειδοποίηση ή μια συγνώμη από μια εταιρεία ή ιστοσελίδα ρητό, Συγγνώμη, ένας χάκερ έσπασε στη βάση δεδομένων μας, μάλλον θα πρέπει να αλλάξετε σας κωδικός πρόσβασης, τι θα μπορούσε να σημαίνει; Λοιπόν, ένα, θα μπορούσε να σημαίνει η Η εταιρεία έχει περισσότερους βλακώδης, και έχει αποθήκευση κωδικό σας σε μια στήλη σαν αυτό, χωρίς κρυπτογράφηση. Πράγμα που σημαίνει τον αντίπαλο, που έκλεψε τη βάση δεδομένων, κυριολεκτικά ξέρει σας username και password. Αυτό είναι το χειρότερο δυνατό σενάριο. Και όπως θα δείτε στο ρ-σετ επτά τόσο εύκολο να αποφευχθεί. Δεν υπάρχει απολύτως καμία δικαιολογία γι 'αυτό μορφή βλακείας στη σημερινή διαδίκτυο. Two-- και θα βρούμε μερικά άρθρα να καταθέσει το γεγονός ότι αυτή εξακολουθεί να συμβαίνει, nonetheless-- δύο, ίσως ο αντίπαλος έκλεψε αυτήν την έκδοση της βάσης δεδομένων. Ποιο είναι ακόμα κάπως άσχημα, διότι τώρα ξέρουν ότι έχω έξι πελάτες, Ξέρω τα ονόματα χρήστη αυτών των έξι πελάτες, και ξέρω ότι το κρυπτογραφημένο εκδόσεις, ή οι κατακερματισμένες εκδόσεις, των κωδικών πρόσβασης των έξι αυτών των πελατών. Αλλά κάποιος από εσάς που θα μπορούσαν να έχω κάνει [? Hacker 2;] όπου μπορείτε ραγισμένα τους κωδικούς πρόσβασης, ή πήρε μια ματιά σε αυτό εκδοχή του προβλήματος σύνολο, γιατί είναι ακόμα λίγο ανησυχητικό αν ο αντίπαλος γνωρίζει κατακερματισμού σας κωδικούς πρόσβασης; Κοινό: επειδή θα μπορούσε να εισάγετε ολόκληρο λεξικό στη συνάρτηση κατακερματισμού. Και αν ο κωδικός σας είναι ένα λεξικό λέξη, [? μπορούν απλά match--;] DAVID Malan: Ακριβώς, ο αντίπαλος μπορεί να γράψει κώδικα ακριβώς όπως κάποιοι από εσάς έκανε για [? Hacker?] 2, σύμφωνα με την οποία θα επαναλάβει πάνω όλες τις λέξεις στο λεξικό, ή όλοι οι πιθανοί συνδυασμοί των Α έως Z και μία μέσω nine-- το οποίο ακούγεται σαν μια παρτίδα, και αυτό είναι. Αλλά για έναν υπολογιστή, είναι αρκετά καταριέται γρήγορα. Και στην πραγματικότητα, ότι ήταν το σημείο [; Hacker 2,?] Ήταν να λάβουν τα πράγματα ότι κυριολεκτικά μοιάζει με αυτό, και η αποσυμπίληση ό, τι πραγματικά ήταν. Έτσι, θα δούμε πώς μπορούμε να αποθηκεύσετε αυτό πιο αποτελεσματικά. Βγάζει, ευτυχώς σε MySQL, υπάρχουν θα είναι τα είδη δεδομένων. Και ένα από τα μέρη για διασκέδαση σχεδιασμός βάσεων δεδομένων, για να είμαι ειλικρινής, είναι στην πραγματικότητα αποφασίζουν για τον εαυτό σας πώς θα πρέπει να αντιπροσωπεύουν τα δεδομένα; Θα πρέπει να αντιπροσωπεύουν έναν αριθμό τηλεφώνου, όπως ένας int, σαν ένα μεγάλο αριθμό, ή ένα μακρύ; Ή μήπως το κάνουμε πραγματικότητα ως μια ακολουθία των χαρακτήρων; Και μπορεί να υπάρχουν πολύ μη-τετριμμένη επιπτώσεις αυτού. Στην πραγματικότητα, ένα από τα νωρίτερο, διασκέδαση σχετικός ιστορίες είναι όταν Mark Zuckerberg έχτιζε Facebook, γράφτηκε αρχικά σε, και εξακολουθεί να είναι σε μεγάλο βαθμό γραμμένο σε PHP. Και μία από τις μεγαλύτερες προκλήσεις που αντιμετώπισαν στην αρχή ήταν κλιμάκωση. Όταν κράτησαν την προσθήκη μετά το σχολείο σχολείο μετά το σχολείο, στη γνώση μου, μία από τις αρχικές λύσεις ήταν ουσιαστικά να αντιγράψετε και να επικολλήσετε ορισμένες από τις βάσεις δεδομένων και μερικά από τον κώδικα, έτσι ώστε Χάρβαρντ ήταν τρέχει σε δικό του server, και το MIT έτρεχε σε δικό του server. Και αυτή ήταν η αιτία, για μερικούς από εσάς θα θυμάστε, δεν θα μπορούσατε να έχετε φίλους σε άλλα δίκτυα. Πιθανώς δεν έχετε φίλους στο ΜΙΤ ή του Χάρβαρντ 10 περίπου χρόνια πριν, αλλά δεν θα μπορούσε να εκταθεί δίκτυα για το λόγο αυτό εν μέρει. Και μία από τις μεγαλύτερες προκλήσεις για την Mark και για εταιρείες όπως το Facebook είναι ουσιαστικά να χειρίζονται εκατοντάδες και χιλιάδες και τα εκατομμύρια των αιτήσεων ανά δευτερόλεπτο. Έτσι, τα πράγματα θα αρχίσουμε μιλάμε για αυτή την εβδομάδα Τα πραγματικά πρόκειται να είναι συναφές με γράψιμο καλό λογισμικό, και γενικά επιτυχή εργαλεία που μπορεί να χειριστεί πολλούς χρήστες. Έτσι, θα μιλήσουμε για τα πράγματα όπως η δεικτοδότηση και την αναζήτηση, αλλά αυτό είναι για σήμερα. Θα σας δούμε για περισσότερα την Τετάρτη. [ΜΟΥΣΙΚΗ - "Seinfeld" ΘΕΜΑ] DAVID Malan: Μπορείτε να να αυτό, και να αφαιρέσετε από αυτήν. Και δεν έχετε να κολλήσετε με μερικοί προκαθορισμένο ποσό της μνήμης. Λοιπόν, τι είναι αυτό πρόκειται να ονομάζεται; ΟΜΙΛΗΤΗΣ 1: Λοιπόν, τι συμβαίνει; ΟΜΙΛΗΤΗΣ 2: Τι εννοείς; Έχει δώσει μια διάλεξη. DAVID Malan: Και μπορούμε να χρησιμοποιήσουμε ένα λειτουργία που ονομάζεται malloc να memory-- ΟΜΙΛΗΤΗΣ 1: Γιατί δεν τα χέρια του κινούνται; ΟΜΙΛΗΤΗΣ 2: Καλά that's-- Ξέρετε, αυτό είναι φυσιολογικό. Είναι ακριβώς σαν να έχει μόλις μεγάλα λουκάνικα κρέμονται εκεί. ΟΜΙΛΗΤΗΣ 1: Αυτό είναι φυσιολογικό; ΟΜΙΛΗΤΗΣ 2: Ναι, Νομίζω ότι εμείς μόλις αναλάβει ο ίδιος κατά λάθος αντικαταστάθηκε αποσμητικό του με σούπερ κόλλα.