[Παίζει μουσική] DAVID Malan: Αυτό είναι το CS 50, και Αυτό είναι η αρχή της εβδομάδας εννέα. Και τι σκεφτήκαμε να κάνουμε σήμερα δεν είναι μόλις κλείσει το κεφάλαιο για την περασμένη εβδομάδα υλικό όπου εστιάσαμε στον server πλευρά web εφαρμογών με PHP και SQL, κάποια πράγματα βάσης δεδομένων. Θα μιλήσουμε για ένα κομμάτι της σήμερα ασφαλείας και, στη συνέχεια, μετάβαση σε μια πλευρά του client προγραμματισμού γλώσσας, γνωστό ως το JavaScript. Αλλά πρώτα, κάποια λύτρωση. Ίσως να θυμάστε ότι στις Τετάρτη, εξέθεσα για να γράψετε μια ιστοσελίδα που πήρε στην είσοδο χρήστη από μια μορφή html ότι στη συνέχεια αποθηκεύονται ότι τα ονόματα που εισάγει ο χρήστης, τηλέφωνο αριθμούς, και κινητών τηλεφώνων φορείς στη βάση δεδομένων. Και τότε είχα μια μικρή εντολή σενάριο γραμμή γραμμένο σε PHP ότι έπρεπε να επαναλάβει πάνω από τις σειρές στη βάση δεδομένων και να στείλει μηνύματα κειμένου. Παρά τις πολλές, πολλές προσπάθειες, εμείς δεν πάρει ότι η εργασία από το τέλος. Έτσι πέρασα όλη αυτή την εβδομάδα εργασίας για τον εν λόγω κώδικα για να μας περάσει από το σημείο όπου φύγαμε μακριά, σύμφωνα με την οποία όλα τα Πήρα από το τέλος της Τετάρτης Ήταν αυτό το μήνυμα κειμένου από Margo, όπως έχω παλέψει, ακολουθούμενο από ένα μήνυμα κειμένου από άλλο συμμαθητής, έχετε αυτό το Δαβίδ. Ακολουθούμενη από αυτό, θαυμάσια ενθαρρυντική. Συνέχισα, πολύ ενθαρρυντικό. Έχω σχεδόν το πήρα μέχρι then-- και αυτό είναι το σημείωμα που έληξε την Τετάρτη. Και τότε πραγματικά ίσως το αγαπημένο μου, Μια στιγμή αργότερα, αυτό ήρθε στο. Ανάθεμα live stream. Έτσι, σήμερα, μπορούμε να το διορθώσω αυτό με μια γρήγορη να δούμε τι έχω κάνει από τότε. Έτσι, όλα αυτού του κώδικα είναι διαθέσιμη σε απευθείας σύνδεση από την περασμένη εβδομάδα, την εβδομάδα οκτώ, πηγαίο κώδικα. Και θα δείτε ότι πήγα μέσα, και εγώ πραγματικά καθαριστεί λίγο τα πράγματα. Έχω εισήγαγε ένα ζευγάρι άλλα χαρακτηριστικά μιας βάσης δεδομένων SQL. Για παράδειγμα, αντί ακριβώς κάνουν φορέας της var char όπως νομίζω ότι έκανα σχετικά με τη μύγα περασμένη εβδομάδα. Εγώ αντί να ορίζεται ως ό, τι λέγεται ένα απαρίθμησης. Και κάποιοι από εσάς μπορεί να έχετε δει αυτό όπως διερευνηθούν Γ κλικΑπαρίθμηση είναι στην πραγματικότητα ένα χαρακτηριστικό της C, όπου μπορείτε απαριθμήσουμε ένα σωρό των σταθερών και να τους εκχωρήσετε τον αυτόματο αξίες, σαν ένα, δύο, τρία, τέσσερα χωρίς να χρειάζεται να σκληρά κωδικούς αριθμούς. Έτσι SQL υποστηρίζει το ίδιο, οπότε αν έχετε ένα πεδίο βάσης δεδομένων που μπορείτε μόνο θέλει να αναλάβει μία από τις πεπερασμένες τιμές, μπορείτε να καθορίσετε κυριολεκτικά όπως έχω κάνει εκεί για τέσσερις δημοφιλείς αεροπορικές εταιρείες των ΗΠΑ κινητό τηλέφωνο. Έτσι έκανα αυτό. Και έκανα μια σειρά αλλαγών ως καλά, το σημαντικότερο εκ των οποίων ήταν να πάρει το email εργασίας επειδή ανάκληση, ότι αυτό το πρόγραμμα βασίστηκε στην οποία γενικά ονομάζεται e-mail στο SMS πύλη, η οποία είναι ακριβώς ένα φανταχτερό τρόπο λέγοντας ότι η Verizon, και AT & T, και τα άλλα παιδιά υποστηρίξει ένα διακομιστή, σύμφωνα με την οποία εάν λάβει email, το μετατρέπει σε SMS και στέλνει ένα κείμενο μήνυμα σε κάποιο τηλέφωνο. Έτσι, αν το έκανα αυτό σωστά, εδώ είναι μια νέα και βελτιωμένη μορφή ότι πρόκειται να μιλήσουμε για νέο και βελτιωμένο κώδικα, το οποίο μπορείτε να παίξετε με online. Και αυτό θα κάνει ελπίζουμε μου τηλέφωνο μπιπ ακριβώς σε μια στιγμή. Έτσι, η πρώτη, Πάω να πληκτρολογήσετε το όνομα μου. Δεύτερον, δεν πάω για να γίνει αυτό αυτή τη φορά. Πάω να κάνω Επιθεωρήστε Element. Και αυτό είναι μόνο ένα μικρό πράγμα, έτσι δεν το κάνω δημιουργήσετε ώρες μετά την παραγωγή λειτουργούν όπως έκανα την τελευταία φορά. Τώρα υπάρχει αριθμός τηλεφώνου μου. Θα επιλέξετε Verizon. Και εδώ, ας γυρίσουμε σε αυτό το μικρόφωνο εδώ, και έχουν ως στόχο αυτό στο τηλέφωνό μου εδώ. Πάω να κάνετε κλικ στο Μητρώο, η οποία θα πρέπει ελπίζουμε το βάζουμε στην βάση δεδομένων. Τώρα είμαι πρόκειται να πάει η πρόγραμμα γραμμής εντολών, η οποία ανάκληση ονομαζόταν dot κάθετος κείμενο, και διασχίζουν τα δάχτυλά σας. Εδώ πάμε. [Dings PHONE] [Χειροκρότημα] DAVID Malan: Έτσι, πιο διασκεδαστικό από ό, τι this-- είναι διασκέδαση, φυσικά, αν έχω μπει σε αυτό. Αλλά είναι πιο διασκεδαστικό, σκέφτηκα, αν εμείς δημιουργήθηκε μία από εκείνες τις στιγμές ταινία όπου σαν κάτι πραγματικά κακό έχει συμβεί στον κόσμο, και όπως όλα τα NSA ανθρώπων κινητά τηλέφωνα αρχίσει να χτυπάει με μηνύματα κειμένου προειδοποιώντας τους για αυτό το γεγονός. Έτσι σκέφτηκα ότι θα δοκιμάσετε να αναδημιουργήσει το ίδιο και εδώ, σύμφωνα με την οποία δεν χρησιμοποιείτε μια βάση δεδομένων, Εγώ αντί για εκ των προτέρων έγραψε ένα πρόγραμμα που μοιάζει με αυτό. Αυτό είναι ένα index.php-- και έβαλα αυτόν τον κώδικα στο διαδίκτυο όπως well-- που προφανώς ακριβώς καθιστά form.php, χρησιμοποιώντας ένα στυλ πρότυπο MVC ότι εμείς μιλάμε για αναλυτικότερα στο σύνολο προβλήματος επτά. Αυτή η μορφή είναι αρκετά απλή. Είναι πρόκειται να υποβάλει ένα αρχείο που ονομάζεται here.php μέσω ταχυδρομείου. Και αυτό είναι προφανώς πρόκειται να ζητήσει για ένα όνομα και έναν αριθμό τηλεφώνου, και στη συνέχεια, μέσω των λεγόμενων Επιλέξτε το μενού, είναι πρόκειται να σας δώσει τουλάχιστον τέσσερα δημοφιλείς φορείς κινητών τηλεφώνων των ΗΠΑ, και, στη συνέχεια, να σας επιτρέψει να αποτελεσματικά να λάβει συμμετοχή κάνοντας κλικ εδώ. Και εδώ, εν τω μεταξύ, πρόκειται να δανειστώ κάποια του κώδικα από την τελευταία φορά. Και αν απλά άπαχο αυτό, θα δείτε ότι υπάρχει ένα σωρό έλεγχο σφαλμάτων. Αλλά η ομορφιά στο τέλος είναι ότι δεν είμαστε εγγράφως σε μια βάση δεδομένων σήμερα. Είμαστε κρατώντας το απλό και απλά στέλνοντας ελπίζουμε ένα μήνυμα κειμένου μέσω της λειτουργίας Ι έγραψε τη διάρκεια των τελευταίων ημερών κλήση Κείμενο, το οποίο είναι σε συναρτήσεις. php, η οποία είναι και πάλι διαθέσιμα στο διαδίκτυο. Έτσι, αν θέλετε να συμμετέχετε σε αυτό. Εμείς δεν πρόκειται να αποθηκεύει τίποτα. Πηγαίνετε σε αυτό το URL εδώ σε πραγματικό χρόνο. Μην υποβάλετε ακριβώς ακόμα, αλλά ας να δούμε αν μπορούμε να έχουμε ένα από αυτά ταινίας στιγμές όπου το κινητό τηλέφωνο του καθενός θα αρχίσει να ηχεί, ελπίζω μόνο φορά φέτος σε αντίθεση με το 2011 όπου αυτό πήγε στραβά φρικτά. Και τη στιγμή που θα πάτε σε αυτή τη διεύθυνση, θα πρέπει να δείτε ένα σούπερ απλή μορφή ότι αν έχετε ένα όνομα, ένα κινητό τηλέφωνο αριθμός, και ένας φορέας κινητό τηλέφωνο ότι ταιριάζει με τη λίστα εκεί, πηγαίνετε μπροστά και να συμπληρώσετε τη φόρμα. Αλλά δεν χτύπησε υποβάλει ακριβώς ακόμα. Η μορφή πρόκειται να μοιάζει με αυτό. Προχωρήστε και πληκτρολογήστε το όνομά σας, τον αριθμό τηλεφώνου. Oop, κάποιος πηγαίνει μπροστά από την καμπύλη. Είναι εντάξει. Εντάξει, ο καθένας έχει συμπληρώσει τη φόρμα. Αυτό θα πρέπει να εργαστούν για ένα τηλέφωνο, πάρα πολύ, αν θέλετε. Εντάξει, για τα σήματα σας, ετοιμαστείτε, πηγαίνετε. Πατήστε εδώ. Τι; Όχι. Ορκίζομαι στο Θεό, θα δοκιμαστεί αυτό σήμερα πολλές φορές. Μπορείτε να το έχεις; [Παρεμβάλλοντας ΦΩΝΕΣ] DAVID Malan: Εντάξει, ίσως λάθος του χρήστη. Αυτό είναι δύο. Δούλεψε για δύο από ένα μερικές εκατοντάδες, τρία, τέσσερα. Εντάξει, αυτό είναι καλό. Τέσσερις στους πέντε για ορθότητα πώς περίπου. Έτσι τι ακριβώς συνέβη; Έτσι, προφανώς, χωρίς να δει σας οθόνες, γιατί θα μπορούσε να έχει errored; Είναι πιθανόν ότι ήμασταν μόνο προσπαθώντας να κάνει πάρα πολλές συνδέσεις στο διακομιστή αλληλογραφίας του Χάρβαρντ σε όλα μια φορά από την ίδια διεύθυνση IP. Είμαι απλώς εικασία αφού δεν το έκανα έχουν την πολυτέλεια της δοκιμής αυτός ο κώδικας με μερικές 300 άνθρωποι εκ των προτέρων αλλά για τώρα συνειδητοποιούν ότι ότι θα πρέπει τουλάχιστον έχουν πάρει τη δουλειά που έχει γίνει αυτή τη φορά. Εντάξει, οπότε γιατί να είναι αυτό όλα τα πιο συναφές με το τι συμβαίνει; Λοιπόν πρώτα, μια γρήγορη δυο ανακοινώσεις. Έτσι, ένα, αν θέλετε να συμμετάσχετε Chang, και Νικ, και άλλοι σε γεύμα αυτή την Παρασκευή, κάνουν RSVP στη συνηθισμένη διεύθυνση URL εκεί. Αν σκέφτεστε της συγκέντρωσης ή να κάνει μια δευτερεύουσα στο CS, αν είστε ένας δευτεροετής φοιτητής, ή καινούριος, ή ακόμη και κατώτερος ή ανώτερος σε αυτό το σημείο και μπορεί ακόμα να αποσπάσουν στα μαθήματα, συνειδητοποιούν ότι το σχολείο της μηχανικής συγκεντρώνει για δωρεάν Μπεν και Του Jerry παγωτό και συμβουλές αυτή την Τετάρτη λίγο μετά το μάθημα στις 4:00 μ.μ. στο κτίριο CS στο Maxwell Dworkin. Εάν αυτό είναι πάρα πολύ γρήγορα στην οθόνη, απλά πηγαίνετε να cs50.harvard.edu για ένα link για την εκδήλωση του Facebook όπου μπορείτε να δείτε περισσότερες λεπτομέρειες. Εν τω μεταξύ, σκέφτηκα ότι θα διορθώσει ένα άλλο πράγμα που goofed την Τετάρτη. Βγάζει ότι ID Μάρκου στο Facebook δεν ήταν τρία. Ήταν τέσσερις. Βγάζει είχε περισσότερα τεστ λογαριασμούς από ό, τι θυμάμαι. Αλλά τι αισθάνθηκε αυτό σαν μια ευκαιρία να κάνετε είναι να σηκώσει ένα URL σαν αυτό. Έτσι αποδεικνύεται ότι το Facebook έχει ένα API, διεπαφή προγραμματισμού εφαρμογών, η οποία είναι ένας μηχανισμός με τον οποίο θα μπορεί να ζητήσει τα δεδομένα προγραμματισμού στο Facebook και να πάρετε πίσω μηχάνημα αναγνώσιμες πληροφορίες, δεν ιστοσελίδες αλλά απλώς πρώτων κείμενο, κάτι ονομάζεται το JavaScript Αντικείμενο σημειογραφία. Και στην πραγματικότητα, αν έχω επισκεφθεί αυτό URL, και μεγέθυνση, από προεπιλογή, Αυτό είναι Μάρκου δημοσίως προσβάσιμες πληροφορίες. Και η ενδιαφέρουσα λεπτομέρεια εδώ είναι ακριβώς ότι το id του Είναι πράγματι, νούμερο τέσσερα, η οποία θα συνειδητοποίησα μόλις το έκανα αυτό. Μπορείτε να το κάνετε αυτό στον εαυτό σας, αν γνωρίζετε Facebook το όνομα χρήστη σας, εάν έχετε ένα. Απλά πληκτρολογήστε επάνω στην κορυφή εκεί. Και όλα αυτά δεν είναι ιδιωτική. Είμαι απλά κάνει αυτό ακόμα στην κατάσταση ανώνυμης περιήγησης. Έτσι, δεν είμαι καν εισέλθει. Και βλέπετε ότι εγώ προφανώς ήταν αριθμός χρήστη 6454 στο Facebook, το οποίο δεν είναι πάρα πολύ κακό αυτές τις μέρες. Έτσι, ούτως ή άλλως, θα δείτε επίσης πρόσθετες πληροφορίες εκεί. Και η ωφέλιμη άποψη από αυτό είναι ότι να γράψουμε το δικό σας λογισμικό που κατά κάποιον τρόπο ενσωματώνει στοιχεία όπως αυτό στη δική σας εφαρμογή. Μπορείτε να εξουσιοδοτήσει τους χρήστες να συνδεθείτε στην ιστοσελίδα σας, δεν χρησιμοποιούν το δικό τους προσαρμοσμένο όνομα χρήστη και κωδικό πρόσβασης, αλλά ίσως Facebook Σύνδεση τους και να πάρει πληροφορίες, ακόμη και για τους φίλους τους, αν εγκρίνει τέτοια, ή παρόμοια. Έτσι, σημειώστε ότι CS50, πάρα πολύ, έχει κάποιες από τις δικές API της, ένα για τα δεδομένα Κατάλογος φυσικά, μερικά για τα μενού αγκαλιές στην τραπεζαρία αίθουσες, όλα τα κτίρια και τοποθεσίες στην πανεπιστημιούπολη έχουμε ένα API, καθώς και για ότι μπορείτε να ελέγξετε τον ίδιο τρόπο και να πάρει πίσω δεδομένων κειμένου που μπορείτε να ενσωματώσετε σε PHP, ή JavaScript, ή ακόμη, αν και λιγότερο συχνά, ένα C βασίζεται τελικό σχέδιο. Πράγματι μπροστά για την τελική έργο είναι μερικά ορόσημα. Έχεις ένα μήνυμα ηλεκτρονικού ταχυδρομείου από εμάς τις προάλλες. Συνειδητοποιήστε ότι η πρόταση αναμένεται την ερχόμενη Δευτέρα. Δεν είναι απαραίτητα δεσμευτική, αλλά θα δεν πρέπει να γίνεται η διδασκαλία τους συνανθρώπους σας έγκριση πριν από την πραγματοποίηση οποιεσδήποτε μετέπειτα αλλαγές. Και τότε μπροστά είναι ένα τον αριθμό των άλλων ορόσημα. Έτσι για να σας δώσουμε έμφαση, πάρα πολύ, με κάποιες δυνατότητες, έχουμε ένα μάτσο Αυτές οι λαμπτήρες απόχρωση. Και κάποιοι από εσάς παιδιά έχουν τώρα κάποια από αυτά στο δωμάτιο της εστίας σας, καθώς και. Και έχουν και αυτοί ένα API. Έτσι ανακαλέσετε όλα αυτά τα δυαδικά εβδομάδες λαμπτήρες Πριν όμως ότι η Dan Bradley και Ansel Duff δημιούργησε για εμάς. Χρησιμοποίησαν μια διεπαφή λογισμικού για Αυτή η λάμπα, η οποία αυτή τη στιγμή είναι συνδεδεμένο σε ηλεκτρική ενέργεια και στη συνέχεια, μέσω ασύρματης είναι συνδεδεμένο με ένα μικρό πράγμα κάλεσε την Γέφυρα εδώ κάτω, σαν ένα μικρό router ιδιόκτητο σε αυτή τη συγκεκριμένη συσκευή. Αλλά αποδεικνύεται αν ξέρω πώς να στείλετε μηνύματα HTTP, όπως όλοι κάνουμε τώρα, Μπορώ να στείλω ένα μήνυμα σαν αυτό να Αυτή η λάμπα για να το ενεργοποιήσετε ή να απενεργοποιήσετε ή να κάνει οποιοδήποτε αριθμό των άλλες εργασίες σε αυτό. Παρατηρήστε ότι δεν έχει πάρει, δεν είναι δημοσιεύσετε. Υπάρχει ένα άλλο που ονομάζεται πώλησης. Υπάρχει πράγματι μερικά άλλα τέτοια ρήματα. Αλλά παρατηρήσετε ότι υπάρχει ένα μονοπάτι εκεί, κάθετο API, κάθετος νέα προγραμματιστής, κάθετο φως, ένα κάθετο, κάθετος κατάσταση. Αυτό είναι προφανώς μόνο το μονοπάτι που η εταιρεία, η Philips, αποφασίσει ότι πρέπει να χτυπήσει με μια αίτηση HTTP αν θέλετε να αλλάξετε την κατάσταση του βολβού με τη χρήση HTTP 1.1. Στη συνέχεια παρατηρήσετε την κενή γραμμή. Και στη συνέχεια, τέλος, αυτό που μοιάζει με το είδος της μια σειρά από κάποιου είδους, Αυτό και πάλι θα πρέπει να ονομάζεται Τη JavaScript Αντικείμενο Συμβολισμός, ή Ιάσονα. Και αυτό που βλέπετε εδώ είναι ότι υπάρχουν τρία βασικά ζεύγη αξία. Ένα βασικό καλείται. Και η αξία του προφανώς πρόκειται να είναι αληθινό. Φωτεινότητα είναι 128, το οποίο είναι κάποιο είδος int. Και τότε ο χρόνος μετάβασης είναι μηδέν, η οποία είναι προφανώς πόσο καιρό πρόκειται να πάρει για να μετατρέψει αυτό το πράγμα επάνω. Μέχρι τώρα αυτή η λάμπα είναι σβηστή. Αλλά αν το κάνω ακριβώς this-- ας Θέλω να πάω σε ένα μικρό σκονάκι ότι Νταν που έχει συσταθεί στο advance-- και Πάω να προχωρήσει και να αντιγράψετε η ακόλουθη εντολή. Curl, όπως κάποιοι από εσάς θα μπορούσε να φανεί στο CS50 Συζητήστε είναι ένα βοηθητικό πρόγραμμα όπως το telnet όπως ότι μπορείτε να προσομοιώνουν τις αιτήσεις HTTP, Συγκεκριμένα βάζει. Μπορώ να στείλετε αυτά τα δεδομένα, συγκεκριμένα τι ακριβώς είδε μια στιγμή πριν από ειδικά σε αυτό το URL εδώ. Και τότε Curl πρόκειται να χειριστεί όλα τα απαιτούμενα κεφαλίδες και parsing εκεί. Έτσι, το μόνο που έχετε να κάνετε είναι να αντιγράψετε αυτό σε ένα παράθυρο τερματικού και, στη συνέχεια, πατήστε Enter. Και η λάμπα ανάβει. Και αυτό είναι όλα διέρχεται υπολογιστή μου ασύρματα κατά κάποιο τρόπο κάτω από τη γέφυρα, η οποία τότε μιλάμε για αυτή την λάμπα. Μπορώ να κάνω κάτι άλλο. Μπορώ να κάνω αυτό το πράγμα πάει το κόκκινο, για παράδειγμα. Για παράδειγμα, μπορώ να κάνω αυτό το πράγμα να πάει πράσινο. Μπορώ να το κάνει να πάει μπλε. Και παρατηρήσετε σε κάθε μία από αυτές περιπτώσεις, το μόνο που αλλάζω είναι η λεγόμενη τιμή απόχρωση σε πραγματικά δώσει λίγο χρώμα. Έτσι, επιτρέψτε μου να επικολλήσετε αυτό το ένα σε καθώς και. Τώρα είναι μπλε. Και μπορείτε να το κάνετε ακόμη πιό φανταχτερό πράγματα where-- ας πάμε σε πράσινο. Και θα μπορούσα να κάνω αυτό της φυσικά με το δικό μου κώδικα. Αλλά ακόμη και η ίδια η API υποστηρίζει funky πράξεις όπως αυτό, το οποίο θα ασχοληθείτε τώρα μας για τα επόμενα 30 δευτερόλεπτα. Έτσι, αυτό είναι μια γεύση του τι μπορεί να κάνει με ένα API, αυτό το ένα εκ των οποίων λαμπτήρες πυράκτωσης. Σημειώστε ότι CS50 έχει ένα ζευγάρι ζεύγη Google Glass αν θέλετε ήθελε να αντιμετωπίσει κάτι μαζί αυτές οι γραμμές, Arduino UNOS, η οποία είναι μικροσκοπικά υπολογιστές, κατ 'ουσίαν, σε μια μικρή πλακέτα κυκλώματος ότι μπορείτε να συνδεθείτε σύρματα και άλλα πράγματα και στην πραγματικότητα τον έλεγχο πραγματικό περιβάλλον σας. Και έπειτα υπάρχουν ένα ζευγάρι των νέων παιχνιδιών που έχουμε. Αυτή η μία κυριολεκτικά μόλις έφτασε η άλλη μέρα με το ταχυδρομείο, μια μυο περιβραχιόνιο. Και σκέφτηκα ότι είναι ένας τρόπος για να σας πάρει ενθουσιασμένος για έργα ότι μπορείτε να χρησιμοποιήσετε με Αυτό το υλικό θα να παίξει αυτό το σύντομο κλιπ που χρησιμοποιούν για να πειράζω τους λαούς ότι είμαστε τώρα ζει στο μέλλον. [Παίζει μουσική] DAVID Malan: Έτσι, μέσα σε λίγες εβδομάδες, θα επίσης μπορεί να είναι ότι δροσερό στην εύλογη CS50. Άλλη συσκευή που έχουμε έχουν ένα μάτσο ότι είμαστε στην ευχάριστη θέση να δανείζει για έργα ονομάζεται ένα χειριστήριο κίνησης. Αυτή είναι μια μικρή συσκευή USB μπορείτε να συνδέσετε σε έναν υπολογιστή που σας επιτρέπει να αλληλεπιδρούν με φορητό υπολογιστή σας, Mac ή PC, σαν να είχατε σαν μια κονσόλα Xbox Kinect και πραγματικά να κάνει κινήσεις του πολύ όπως βλέπουμε σε αυτό όραμα για το μέλλον. [Παίζει μουσική] DAVID Malan: Έτσι, ακόμη και αν έχετε καμία ιδέα για το πώς κάτι τέτοιο θα μπορούσε ενδεχομένως να εφευρεθεί ή εργασία σε επίπεδο υλικού, δεν έχει σημασία. Ακόμα και μετά από λίγους μόλις μήνες του CS50, και η κατανόηση του προγραμματισμού γενικότερα, και web προγραμματισμό περισσότερο πρόσφατα, και στη συνέχεια, επίσης, APIs, και HTTP, θα έχετε πρόσβαση μέσω APIs λογισμικού αν θέλουν να δανειστούν ένα από αυτά συσκευές για να μιλήσουμε πραγματικά για αυτό και δεν έχετε να ανησυχείτε για η υποκείμενη εφαρμογή λεπτομέρειες, οι οποίες είναι εντελώς συνεπής με αυτή την έννοια της διαστρωμάτωσης μια αφηρημένη έννοια που έχουμε δει τη διάρκεια του εξαμήνου. Έτσι, επίσης, τη διάρκεια του Σαββατοκύριακου, είδε ένα ζευγάρι κομμάτια των ειδήσεων. Πήγαινε πρώτα, πάνε σε σεμινάρια, αν Θα ήθελα να μάθω κάτι περισσότερα για οποιοδήποτε αριθμό θεμάτων. Δείτε το URL εκεί. Και αυτό εστάλη μου από τον Chang, που ξέρετε, ποιος εκτύπωση στρατό μας των ελεφάντων. Και ήταν ένας τίτλος ως εξής. Είμαι τρομοκρατημένος από νέα τηλεόραση μου. Γιατί είμαι φοβισμένος να γυρίσει αυτό πράγμα και θα ήθελα να είναι πάρα πολύ. Έτσι είμαστε τώρα στο σημείο στο εξάμηνο, πάρα πολύ, όπου ακόμα κι αν έχετε η παραμικρή κατανόησης του πώς λειτουργεί το διαδίκτυο, και το HTTP, και της ασφάλειας, τα πράγματα όπως αυτό θα πρέπει να αρχίσει να πιάσει το μάτι σας. Αλλά επίσης, θα καταλάβετε αν αυτά τα πράγματα είναι ή δεν είναι πραγματικές απειλές. Έτσι πήρα μερικά αποσπάσματα από αυτό το άρθρο εδώ. Και η ιστορία έχει ως εξής. Είμαι τώρα ο ιδιοκτήτης του ένα νέο Smart TV, το οποίο υπόσχεται να παραδώσει ροής περιεχομένου πολυμέσων, παιχνίδια, εφαρμογή, κοινωνικών μέσων μαζικής ενημέρωσης, καθώς και στο διαδίκτυο περιήγηση, OH και τηλεόραση πάρα πολύ. Το μόνο πρόβλημα είναι ότι είμαι τώρα φοβάται να το χρησιμοποιήσει, λέει ο συγγραφέας. Θα είναι, επίσης, αν μπορείτε να διαβάσετε μέσω του η πολιτική απορρήτου της σελίδας 46 για την τηλεόρασή σας. Η ποσότητα των δεδομένων, αυτό συλλέγει πράγμα είναι συγκλονιστικό. Καταγράφει πού, πότε, πώς, και για πόσο καιρό μπορείτε να χρησιμοποιήσετε την τηλεόραση. Θέτει tracking cookies, όπως έχουμε συζητήσει, και φάροι σχεδιαστεί για την ανίχνευση όταν έχετε είδαν συγκεκριμένο περιεχόμενο ή ένα συγκεκριμένο μήνυμα ηλεκτρονικού ταχυδρομείου αν θέλετε να ελέγξετε τα email στην τηλεόρασή σας. Καταγράφει τις εφαρμογές σας χρησιμοποιείτε, τις ιστοσελίδες που επισκέπτεστε, και πώς αλληλεπιδρούν με το περιεχόμενο, κάνει όλα αυτά μέσω της Smart TV σας. Επίσης, creepier yet-- ότι είναι addition-- μου έχει μια ενσωματωμένη κάμερα με αναγνώριση προσώπου. Ο σκοπός είναι να παράσχει τον έλεγχο χειρονομία για την τηλεόραση και σας δίνουν τη δυνατότητα να συνδεθείτε στο προσωπικό λογαριασμό, χρησιμοποιώντας το πρόσωπό σας. Από την άλλη πλευρά, οι εικόνες είναι αποθηκευτεί στην τηλεόραση αντί φορτωθεί σε ένα εταιρικό server. Από την άλλη πλευρά, το Διαδίκτυο σύνδεση καθιστά την όλη τηλεόρασης ευάλωτο σε χάκερ που έχουν αποδείξει την ικανότητα να πάρει τον πλήρη έλεγχο του μηχανήματος. Πιο ανησυχητικό, σαν να μην ήταν αρκετά έξυπνος, είναι το μικρόφωνο. Η τηλεόραση μπορεί να υπερηφανεύεται για μια φωνή δυνατότητα αναγνώρισης που επιτρέπει στους τηλεθεατές να ελέγχουν η οθόνη με φωνητικές εντολές. Αλλά η υπηρεσία έρχεται με μια μάλλον δυσοίωνη προειδοποίηση. Παρακαλούμε να γνωρίζετε ότι εάν ομιλούνται τα λόγια σας να περιλαμβάνει προσωπικές ή άλλες ευαίσθητες πληροφορίες, οι πληροφορίες θα είναι μεταξύ των δεδομένων που συλλέγουν και διαβιβάζονται σε τρίτους. Πήρε αυτό; Να μην πω προσωπικά ή ευαίσθητα πράγματα μπροστά από την τηλεόρασή σας. Έτσι, αυτό είναι πραγματικά για πραγματικό. Και είναι δύσκολο να μην δούμε αν πηγαίνετε στο Best Buy και τα παρόμοια για τηλεοράσεις αυτές τις μέρες. Είναι όλοι έξυπνος με κάποιο τρόπο. Και παίρνουν πιο έξυπνη και creepier. Και όπου και αν απλώς συλλογή δεδομένων με τρόπους που έχουμε μιλήσει για και στη συνέχεια το φόρτωμα μέσω HTTP ή κάποιο άλλο πρωτόκολλο για κάποιο διακομιστή. Έτσι, αυτό ήταν ένα διασκεδαστικό άρθρο σε αυτή την ιστοσελίδα online Εδώ, ο οποίος μίλησε για μια Ειδικότερα σφάλμα ή λάθος κωδικό ότι μπορούμε πραγματικά να δέσουν στη συζήτηση της περασμένης εβδομάδας. Έτσι, αυτός ο τίτλος ήταν ως Επομένως, η ιστορία πηγαίνει εδώ, Josh Breckman εργάστηκε για ένα Η εταιρεία που προσγειώθηκε μια σύμβαση να αναπτύξει μια διαχείριση περιεχομένου σύστημα, ή CMS, όπως και αν ονομάζεται, για ένα αρκετά μεγάλο ιστοσελίδα της κυβέρνησης. Μεγάλο μέρος του έργου που εμπλέκονται την ανάπτυξη ενός συστήματος διαχείρισης περιεχομένου έτσι ώστε οι εργαζόμενοι θα είναι σε θέση να χτίσουν και να διατηρήσουν το συνεχώς μεταβαλλόμενο περιεχόμενο για την περιοχή τους. Τα πράγματα πήγαν αρκετά καλά για λίγες ημέρες μετά πηγαίνει ζωντανά. Αλλά από την ημέρα έξι, τα πράγματα δεν πήγαν τόσο καλά. Όλο το περιεχόμενο για το ιστοσελίδα είχε εξαφανιστεί εντελώς. Και όλες οι σελίδες οδήγησε στην προεπιλογή, παρακαλούμε εισάγετε το περιεχόμενο της ιστοσελίδας. Ωχ. Josh κλήθηκε να διερευνήσει και να παρατηρήσει ότι ένα ιδιαίτερα ενοχλητικό εξωτερική διεύθυνση IP είχε πάει και να διαγραφούν όλα το περιεχόμενο του συστήματος. Η διεύθυνση IP δεν ανήκουν σε κάποιο εξωτερικό χάκερ λυγισμένα για την καταστροφή χρήσιμες κυβερνητικές πληροφορίες. Είναι αποφασισμένη να googlebot.com, Πολύ δικό του web crawling αράχνη της Google. Ωχ. Μετά από λίγη έρευνα και κρυπτογράφησης γύρω για να βρουν μια noncorrupt αντιγράφων ασφαλείας, Τζος διαπίστωσε το πρόβλημα. Ένας χρήστης είχε αντιγραφεί και επικολληθεί κάποιο περιεχόμενο από ένα σελίδα στην άλλη, συμπεριλαμβανομένων ένας Επεξεργασία υπερ-σύνδεσης για να επεξεργαστείτε το περιεχόμενο της σελίδας. Κανονικά αυτό δεν θα αποτελούσε ζήτημα από μια εξωτερική χρήστης θα Πρέπει να εισάγετε ένα όνομα και κωδικό πρόσβασης, αλλά το σύστημα ελέγχου ταυτότητας CMS, το σύστημα σύνδεσης, δεν λαμβάνει υπόψη εξελιγμένα hacking τεχνικές της Google αράχνη. Ωχ. Όπως αποδεικνύεται, η Google Spider δεν χρησιμοποιεί μπισκότα, πράγμα που σημαίνει ότι μπορεί παρακάμψει εύκολα μια επιταγή για το καταγράφεται στο σύνολο cookie για να είναι ψευδείς. Επίσης, δεν δίνουν προσοχή σε JavaScript, το οποίο θα έπρεπε κανονικά προτρέψει και να ανακατευθύνει τους χρήστες που δεν έχουν εισέλθει στον. Εκτιμά, ωστόσο, ακολουθούν κάθε υπερ-σύνδεση σε κάθε σελίδα διαπιστώσει, συμπεριλαμβανομένων εκείνων με Διαγραφή σελίδας στον τίτλο. Ωχ. Λοιπόν, τι σημαίνει αυτό σε περισσότερα τεχνικά, αλλά είναι αρκετά προσιτές όρους; Σημαίνει απλά ότι όλη την ιστοσελίδα τους, είχαν διευθύνσεις URL δεν σε αντίθεση με αυτό, ότι μπορείτε να δείτε το πρόβλημα που επτά. Ανάκληση στο πρόβλημα που επτά ή γνωρίζουν το πρόβλημα που επτά ότι είστε αμφισβητηθεί, μεταξύ άλλων, να πουλήσουν τα αποθέματα για λογαριασμό των χρηστών. Αλλά εφαρμογή του εν λόγω χαρακτηριστικό με τον τρόπο της πάρει μέσω υπερσυνδέσμων σε χρήστη σας interface, πιθανώς δεν είναι το πιο έξυπνο ιδέα γιατί αν το site σας είναι κάπως προσβάσιμες είτε από έναν άνθρωπο ποιος κλικ γύρω ή να αγοράσετε ένα bot, όπως το Google ή μια αράχνη όπως και αν ονομάζεται αυτό είναι μόνο σέρνεται στο διαδίκτυο προσπαθώντας να δείκτη το διαδίκτυο ως μια μηχανή αναζήτησης, θα μπορούσε πολύ εύκολα χτύπησε μέσω πάρετε αυτό το είδος της διεύθυνσης URL. Και αυτό είναι λειτουργικά ισοδύναμη με, σε αυτήν την περίπτωση, πώληση όλων των μετοχών της Google. Τώρα, ειλικρινά, αυτό είναι εντελώς όνειο ότι η CMS μεταχειρισμένα JavaScript και τα cookies για την εφαρμογή του συστήματος σύνδεσης της και να μην κάνει αυτή την πλευρά του διακομιστή, όπως εσείς κάνετε και θα σε Pset 7-- υπάρχει μια login.php file-- πάντα, πάντα, πάντα την ασφάλεια θα πρέπει να είναι γίνεται από την πλευρά του διακομιστή, όχι στην πλευρά του πελάτη διότι, όπως αυτό Το άρθρο προτείνει και ίσως τον εαυτό σας δείτε σε κάποιο σημείο, είναι ασήμαντο για έναν χρήστη, καλό ή κακό, απλά να απενεργοποιήσετε το JavaScript για να μην αναφέρουμε τα cookies. Έτσι ώστε να είναι καθημερινή WTF σας. Υπάρχει ένα ακόμα, το οποίο είναι ακριβώς το είδος των τρομακτικό, γι 'αυτό θα αναφέρω αν μόνο ως ένα μάθημα ζωής. Κάθε φορά που χρησιμοποιείτε μια εφαρμογή καλείται όπως Snapchat ή παρόμοια που λέει ότι αυτές οι φωτογραφίες διαρκούν μόνο για πέντε δευτερολέπτων, δέκα δευτερόλεπτα ή οτιδήποτε. Είναι εφήμερη Αυτό είναι καμία περίπτωση δεν συμβαίνει. Όπως δεν υπάρχει τρόπος, ψηφιακά, να εφαρμόσει κάποια μορφή βίντεο, ή εικόνας, κειμένου ή την ανταλλαγή αυτών ότι ο δικαιούχος στο άλλο άκρο δεν μπορεί με κάποιο τρόπο να αποθηκεύσετε τα δεδομένα. Στην πιο αφελή τρόπο, κάποιος θα μπορούσε να πάρει το τηλέφωνό τους. Και έχουν ένα δεύτερο παράθυρο 10 ενώ κοιτάζοντας κάποια θραύση για να πάρουμε κάποιο άλλο τηλέφωνο και να το φωτογραφίσω, προφανώς. Έτσι, μπορείτε να διατηρήσετε κάτι ψηφιακά με αυτόν τον τρόπο. Μερικοί από εσάς ξέρετε πώς να πάρει screenshots στο τηλέφωνό σας. Στην πραγματικότητα, αν δεν το γνωρίζουν αυτό, συνειδητοποιήσουμε ότι τουλάχιστον Snapchat, πιστεύω και άλλοι εφαρμογές αυτές τις μέρες, τουλάχιστον εσείς, αν το πείτε παραλήπτης έχει στην πραγματικότητα ληφθεί ένα στιγμιότυπο της εικόνας σας. Αλλά ακόμα χειρότερα, αυτό ήταν το snappening, ως κάποιος που επινοήθηκε πρόσφατα, όπου περίπου 100.000 ασφαλίσει είχε κυκλοφορήσει σε αυτό που ονομάζεται ένα αρχείο torrent σε διάφορες ιστοσελίδες τελικά. Και αυτά περιείχαν ένα σωρό των ιδιωτικών μηνυμάτων και μηνυμάτων. Αποδεικνύεται ότι οι περισσότεροι από τους καλοήθεις, έτσι δεν είναι ό, τι μπορείτε να φανταστείτε. Αλλά επειδή οι άνθρωποι είχαν χρησιμοποιείται μια ιστοσελίδα τρίτου, συνδεθείτε με Snapchat τους το όνομα χρήστη και τον κωδικό πρόσβασης και, στη συνέχεια, αποθήκευση όλων των ασφαλίσει τους σε αυτή την ιστοσελίδα τρίτους. Και ήταν αυτό το τρίτο πρόσωπο ιστοσελίδα που ήταν hacked, η οποία ακριβώς σήμαινε κάποιος βρει τον τρόπο να πάρετε όλες τις 100.000 συν αυτών των εικόνων στο δικό τους σκληρό δίσκο για την επακόλουθη ανταλλαγή. Ειλικρινά, εδώ, είναι είδος της όνειο ότι Snapchat υλοποιείται κατά τέτοιο τρόπο ώστε ένας τρίτος μπορεί να ταξινομήσετε της τομής τα δεδομένα και ότι δεν είναι δεμένα σε σας δική του εφαρμογή που τρέχει στο τηλέφωνο. Αλλά εδώ, επίσης, να συνειδητοποιήσουμε ότι αυτά τα πράγματα δεν θα πρέπει να σας πιάσει από έκπληξη, ή τουλάχιστον θα πρέπει να υπάρχει είναι ένα μάθημα ζωής εδώ. Αν θέλετε την τεχνική λεπτομέρειες, πηγαίνετε σε αυτό το URL εκεί ότι στη σημερινή διαφάνειες. Εντάξει, οποιεσδήποτε ερωτήσεις σχετικά με σημερινή μαθήματα ζωής στο CS; Γυρίστε ότι off. Τίποτα από όλα αυτά; Τίποτα από όλα αυτά; Έχω πολλούς ανθρώπους έλεγχο Snapchat τους ή κάτι τώρα. Εντάξει, έτσι SQL, Structured Query Language. Ας κλείσουμε αυτό. Και επίσης, μολονότι είμαστε ακριβώς το ξύσιμο Η επιφάνεια αυτής της γλώσσα, θα σας δώσουμε αρκετά της γλώσσας με τη μορφή της Pset 7 έτσι ώστε να μπορεί να αντιμετωπίσει κάποια αρκετά κοινή λειτουργικότητα. Αλλά συνειδητοποιούν ότι υπάρχουν ένα ζευγάρι πράγματα που δεν απαιτούν από εσάς, αλλά πρόκειται να είναι σημαντικό έρχονται τελευταία έργα και έρθει σίγουρα κάνει πραγματική ιστοσελίδες με πραγματικούς χρήστες Είναι αυτή η σχεδιαστική απόφαση. Αποδεικνύεται ότι σε μια βάση δεδομένων MySQL, μπορείτε έχουν τσαμπιά από επιλογές, όπως τους τύπους δεδομένων για τις στήλες σας και άλλα πράγματα, αλλά έχετε επίσης η επιλογή ενός λεγόμενου αποθήκευση κινητήρα για όλα τα δεδομένα σας, το είδος του συστήματος αρχείων, αν είστε εξοικειωμένοι, για όλα τα δεδομένα σας. Τι μορφή έχει αυτή τελικά αποθηκεύεται σε; Και η πιο κοινή, ίσως, υπήρξε MyISAM και InnoDB, τεχνικούς όρους ότι θα νοιάζονται για μόνο στο βαθμό που έχει κανείς και κανείς δεν έχει το ακόλουθο χαρακτηριστικό. Ας υποθέσουμε ότι έχετε ένα μικρό κοιτώνα ψυγείο. Και ας υποθέσουμε ότι εσείς και σας συγκάτοικο, που μοιράζονται αυτή ψυγείο, είναι πραγματικά λάτρης των ας πούμε το γάλα. Και αυτό είναι, στην πραγματικότητα, το πώς ιστορία ειπώθηκε για μένα δρόμο της επιστροφής μέσα στην ημέρα, όταν πήρα ένα μάθημα ονομάζεται CS 161 Λειτουργικά Συστήματα, η οποία Ομοίως διερευνά αυτό το θέμα. Έτσι έχετε αυτό το ψυγείο. Είσαι έξω από το γάλα. Και θα έρθει στο σπίτι, συγκάτοικος σας ακόμα σε τάξη ή οτιδήποτε άλλο, και αν αποφασίσετε Πάω να να βγει και να πάρει λίγο γάλα. Έτσι, μπορείτε να κλείσετε το ψυγείο, το μπλοκάρισμα το δωμάτιο κοιτώνα, πάμε απέναντι πλευρά του δρόμου στο CVS ή οπουδήποτε αλλού, και να πάρει στη γραμμή για να αγοράσουν λίγο γάλα. Εν τω μεταξύ, ο συγκάτοικός σου παίρνει το σπίτι από την τάξη, μπαίνει στο δωμάτιο της εστίας, ανοίγει το ψυγείο, επίσης, συνειδητοποιεί ooph, είμαστε έξω από το γάλα. Έτσι, αυτός ή αυτή κλείνει η ψυγείο και στη συνέχεια συμβαίνει να πάει στο άλλο CVS, η οποία συμβαίνει να είναι ένα τετράγωνο μακριά από τις άλλες CVS στην πλατεία, και παίρνει σε γραμμή εκεί για να πάρει λίγο γάλα. Τώρα, φυσικά, λίγα λεπτά αργότερα, μπορείτε και οι δύο να πάρει πίσω, και το χειρότερο όλων των πιθανών αποτελέσματα έχει συμβεί. Και οι δύο έχετε το γάλα. Και δεν το κάνετε πραγματικά όπως το γάλα τόσο πολύ. Έτσι, ένας από αυτούς είναι απλά πρόκειται να ξινίσει σε κάποιο σημείο. Έτσι τώρα έχετε ένα υπερβολικό ποσό του γάλακτος στο ψυγείο όλα αυτά επειδή ο λόγος; [Δεν ακούγεται] DAVID Malan: Ναι, δεν το κάνατε με κάποιο τρόπο να επικοινωνούν μεταξύ τους ότι ήταν να πάρει το γάλα. Έτσι με τον πιο απλό τρόπους στον ανθρώπινο κόσμο, πώς θα μπορούσε να αποφύγετε αυτό το ανόητο σενάριο από το να συμβεί τέτοια ότι μπορείτε μόνο να καταλήξετε με ένα. Κείμενο αυτούς, ναι καλό. Αλλά πώς αλλιώς; Post-it σημειώσεις. DAVID Malan: Μια Post-it σημείωση. Κάθε μορφή επικοινωνίας ότι λέει ο συγκάτοικός σας δεν πηγαίνουν στο ψυγείο για το γάλα. Πάω να πάει την ανανέωση για τη δική μου. Έτσι, θα πρέπει με κάποιο τρόπο να κλειδώσει αυτόν τον πόρο. Έτσι, μπορούμε να κάνουμε this-- μπορούμε είδους καταστρέψει την ιστορία και να μετατραπεί σε μια ιστορία CS οπότε σκεφτείτε αυτό ως ακριβώς όπως ένα μεταβλητή, η οποία αποθηκεύει κάποια αξία. Και τώρα, η αξία του γάλακτος είναι μηδέν, το οποίο δεν θέλετε σας συγκάτοικο για να επιθεωρήσει ότι η μεταβλητή και στη συνέχεια να λάβει μια απόφαση τον εαυτό του με βάση την κατάσταση της μεταβλητής αν είστε στη διαδικασία της την αλλαγή της κατάστασης αυτής της μεταβλητής. Έτσι, μία από τις γραμμές του SQL που εμείς θα δώσει στην Pset 7 προδιαγραφή είναι αυτό εδώ. Και εμείς δεν ξοδεύουν ένα τεράστιο το ποσό του χρόνου να μιλάμε για αυτό. Αλλά αποδεικνύεται, αν προσπαθείτε να αγοράσει κάποια αποθέματα στη χρηματοδότηση CS50 ότι έχετε ήδη μερικές μετοχές της, θα θέλουν να είναι σε θέση να κάνει μια σειρά πράγματα αμέσως μαζί. Θέλετε να είναι σε θέση να αποτελεσματικά, σε ένα υψηλό επίπεδο, ελέγχει κάθε δικαίωμα, εάν θέλω να αγοράσει περισσότερες μετοχές του δωρεάν, το έχουμε απόθεμα πενών μιλάμε για το spec, Θέλω να τον πρώτο έλεγχο πόσες μετοχές που έχω. Και ας υποθέσουμε ότι είναι πέντε. Και ας υποθέσουμε ότι θέλω να αγοράσει 10 περισσότερα, εγώ τελικά θέλουν να έχουν 15 μετοχές του αποθέματος. Έτσι έχω να κάνω δύο ερωτήσεις. Ποια είναι η κατάσταση της μεταβλητής; Ποια είναι η κατάσταση της σειράς; Πόσες μετοχές μπορώ σήμερα να έχει; Στη συνέχεια, θέλετε να πάτε μπροστά και να τον ενημερώνει. Έτσι, αυτό είναι το ανάλογο με το γάλα που μπορείτε να ελέγξετε τη σειρά, και στη συνέχεια θέλετε να ενημερώσετε γιατί αν θέλετε να αγοράσετε 10 μετοχές, δεν θέλετε να αλλάξετε η σειρά με 10, θα θέλετε να το αλλάξετε σε 5 συν 10 ή, φυσικά, 15. Αυτή η γραμμή κώδικα εξασφαλίζει ότι οι δύο αυτές εννοιολογικές ιδέες συμβαίνουν μαζί ή καθόλου. Κανείς, συμπεριλαμβανομένου κάποιου άλλου χρήστη οι οποίοι είναι συνδεδεμένοι στο ίδιο δικτυακό τόπο, μπορεί με κάποιο τρόπο να διακόψει Ο έλεγχος της γραμμής και η ενημέρωση της σειράς, η επιλογή και η ενημέρωση, αν θέλετε. Και η σύνταξη δεν είναι σούπερ προφανές, αλλά αυτή η μία γραμμή, καιρό είναι ότι είναι, εξασφαλίζει ότι τις δύο αυτές δραστηριότητες ελέγχει τη μεταβλητή ή ελέγξτε την σειρά και να ενημερώσετε η σειρά συμβεί ατομικά. Ω, εδώ πηγαίνουμε πάλι. Γραπτό μήνυμα στο κινητό μου. Ας γίνει αυτή η λίγο πιο συγκεκριμένη. Ας υποθέσουμε ότι δεν είστε εφαρμογή ψυγείο, και δεν έχετε την εφαρμογή Pset 7, αλλά μια πραγματική τράπεζα, ή ένα ΑΤΜ, ένα Αυτόματων Ταμειακών Μηχανή, σύμφωνα με την οποία με κάποιο τρόπο θέλουν να είναι σε θέση να ενδυναμώσει στους χρήστες να μεταφέρουν χρήματα από τον ένα λογαριασμό στον άλλο. ΟΚ, κρέμονται. Πάω να απενεργοποιήσετε αυτό τώρα, σας ευχαριστώ. Έτσι θέλουμε να προχωρήσουμε χρήματα από έναν αριθμό λογαριασμού σε διαφορετικό λογαριασμό αριθμός, συγκεκριμένα 100 $. Έτσι, αυτό είναι το είδος της μια αυθαίρετη παράδειγμα, σύμφωνα με την οποία εσείς, το ΑΤΜ, ίσως να θέλετε να εκτελέσει δύο SQL ερωτήματα, να αφαιρέσετε από ένα λογαριασμό, και να προσθέσετε στην άλλη λογαριασμό. Αλλά θέλετε να εξασφαλίσετε ότι αυτές δύο γραμμές τόσο συμβεί ή και καθόλου. Δεν θέλετε κάτι να πάρει διακοπεί. Δεν κάνουμε κάποιες έξυπνες κακός κάπως στέκεται στην Bank of America με δύο ΑΤΜ μπροστά από τον ίδιο και με κάποιο τρόπο Ταξινόμηση των πληκτρολογώντας το εντολές ταυτόχρονα, ελπίζω να προσπαθεί να αφαιρέσει $ 200 αντί των $ 100 και μόνο με 100 δολάρια πιστωθεί. Με λίγα λόγια, θέλετε αυτό να συμπεριφέρονται ακριβώς όπως θα περιμένατε. Και ο τρόπος που το κάνετε Αυτό σε SQL βάση δεδομένων είναι μπορείτε να το τυλίξετε σε ό, τι είναι ονομάζεται συναλλαγή. Κυριολεκτικά σε SQL, μπορείτε να καλέσετε CS50 του ερώτημα λειτουργία με παράθεση αυτού του unquote ξεκίνημα συναλλαγή. Στη συνέχεια, μπορείτε να εκτελέσετε οποιονδήποτε αριθμό από τα επόμενα ερωτήματα SQL, αλλά κανένας από αυτούς δεν λαμβάνουν Επίδραση επί της βάσης δεδομένων μέχρι να καλέσετε ερώτημα απόσπασμα unquote διαπράττουν, αν και πάλι με τη χρήση της PHP. Και με αυτόν τον τρόπο, μπορείτε να εξασφαλίσετε ότι ακόμη και αν έχετε 1.000 χρήστες όλων το χτύπημα της βάσης δεδομένων σας ταυτόχρονα, SQL θα υποσχεθώ ότι αυτά δύο ερωτήματα θα είναι υλοποιηθεί μία αμέσως μετά την άλλη. Ώστε να μην καταλήξετε με περίσσεια γάλα ή το λανθασμένο ποσό, τελικά, του χρήματος. Έτσι κρατήστε αυτό κατά νου, όχι τόσο για το chipset 7 αλλά και για την τελική έργων αν είστε πραγματικά προσπαθώντας να μετακινήσετε τα δεδομένα γύρω από σε πίνακες όπως ίσως εδώ. Αλλά ίσως ακόμα πιο απλή και προφανές να καταλάβουμε με ένα παράδειγμα είναι αυτό εδώ. Και κάποιος μας μέσω e-mail για Αυτή ακριβώς η άλλη ημέρα όταν είδε κάτι παρόμοιο σε απευθείας σύνδεση. Έτσι, με τις γνώσεις μου, το σύστημα pin δεν είναι ευάλωτη σε αυτή την επίθεση. Και δεν έχω ιδέα αν ακόμη χρήσεις η βάση δεδομένων SQL κάτω από την κουκούλα. Αλλά ας το χρησιμοποιήσει για η χάρη της συζήτησης. Εδώ είναι η οθόνη που Οι λαοί του Χάρβαρντ τείνουν για να δείτε όταν συνδέεστε με τους Αριθμός Χάρβαρντ αναγνωριστικό και το PIN τους. Και ας υποθέσουμε ότι το σύστημα pin ήταν εφαρμόζονται σε PHP και MySQL με ένα βάση δεδομένων, ο κώδικας ότι κάποιος θα μπορούσαν να έχουν γράψει χρόνια πριν θα μπορούσε να μοιάζει με αυτό. Πρώτον, να δηλώσει ένα μεταβλητή που ονομάζεται όνομα χρήστη. Και μόλις πάρει ότι από η superglobal POST. Στη συνέχεια, να πάρει μια άλλη μεταβλητή κάλεσε τον κωδικό πρόσβασης και να κάνουν το ίδιο. Και στη συνέχεια, μόλις εκτελέσει Αυτή η μακρά ερώτημα εδώ, Επιλέξτε αστέρι από τους χρήστες, όπου ισούται με το όνομα χρήστη τάδε και τον κωδικό πρόσβασης ισούται με τέτοια και τέτοια. Παρατηρήστε ότι η σγουρή τιράντες έχω χρησιμοποιήσει εδώ ακριβώς σημαίνει για την PHP, πηγαίνετε μπροστά και υποκατάστατο η αξία των δύο αυτών μεταβλητές εκεί. Δεν είναι απολύτως αναγκαία, αλλά τείνουν να αποφεύγουν λεπτές συντακτικά λάθη. Έτσι, αυτό φαίνεται εντελώς σωστά με την πρώτη ματιά. Και είναι. Θα μπορούσε να εφαρμόσει η σύστημα πείρου με αυτόν τον τρόπο. Αλλά ας υποθέσουμε ότι ένα σούπερ έξυπνο και κακόβουλο φοιτητής είσοδος αυτή ως pin του ή της. Έτσι έχω αφαιρεθεί η σφαίρα σημάδια εδώ στο mock up, και έχω πραγματικά αποκάλυψε ό, τι αυτός ή αυτή θα μπορούσε να είναι δακτυλογράφηση. Και αυτό είναι λίγο περίεργο. Αλλά τι πηδά έξω σε σας σε δυνητικά ανησυχητικό για την είσοδο του χρήστη, ακόμη και αν δεν έχετε ιδέα τι μια επίθεση SQL ένεση μέσα. Γιατί αυτό δείχνει λίγο απίθανος; Τι είναι αυτό; [Δεν ακούγεται] DAVID Malan: Η ή είναι λίγο ύποπτο. Στην πραγματικότητα, αυτό είναι μια λέξη-κλειδί από την SQL. Έτσι, αυτό δεν αποτελεί καλό οιωνό. Το γεγονός ότι δεν υπάρχει Όλα αυτά τα μονά εισαγωγικά there-- στην πραγματικότητα, ένας από τους ευκολότερους τρόπους για να σπάσει μερικά βάσεις δεδομένων πληκτρολογώντας σε ένα όνομα όπως O'Reilly ότι έχει μια απόστροφο σε αυτό γιατί αν ο άνθρωπος που έγραψε ο κώδικας πίσω από τα παρασκήνια δεν λαμβάνει υπόψη το γεγονός ότι υπάρχει μπορεί να είναι μονά εισαγωγικά σε ένα χρήστη εισόδου, και αυτός ή αυτή χρησιμοποιεί μονά εισαγωγικά στον κώδικά τους, κακά πράγματα μπορούν να συμβούν. Στην πραγματικότητα, ακόμα χειρότερα, να εξετάσει αυτό. Εάν αυτό ήταν και πάλι ο κώδικας ότι κάποιος στο Χάρβαρντ χρόνια Πριν έγραψε για τον πείρο σύστημα, παρατηρήστε τι είναι για να πάρει υποκατασταθεί για το όνομα χρήστη και τον κωδικό πρόσβασης αν ο χρήστης πληκτρολογεί ξανά skroob το όνομα χρήστη τους και, στη συνέχεια, ένα, δύο, τρία, τέσσερα, πέντε, απόσπασμα ή απόσπασμα unquote ένα ίσον παραθέσω ένα. Και να παρατηρήσετε τι είναι κλειδί εδώ είναι ο χρήστης δεν έχει ξεκίνησε τον κωδικό τους ή pin τους με ένα απόσπασμα. Και δεν το έχουν έληξε με ένα απόσπασμα γιατί αυτός ή αυτή Θεωρείται ότι αν η προγραμματιστής δεν ήταν τόσο απότομη, πρόκειται να έχουν εκείνες μονά εισαγωγικά στον κώδικά τους. Έτσι, εδώ είναι ο κώδικας. Και η υποκατάσταση ότι μπορεί να συμβεί τώρα είναι αυτό. Και έχω υπογράμμισε τι ο χρήστης έχει πληκτρολογήσει. Έτσι, πριν, μετά. Και να παρατηρήσετε τι είναι ελαφρώς ανησυχητικό τώρα για το δεξί μισό του SQL κώδικα; Είναι λίγο πιο πολύπλοκο, ομολογουμένως, από τα ερωτήματα που έχουμε δει. Αλλά αυτό δεν είναι δυνατόν να είναι ένα καλό πράγμα, αν είστε λέγοντας επιλέξτε αστέρων, το οποίο βρίσκεται επιλέξτε τα πάντα, από τον πίνακα του χρήστη Όπου username ισούται skroob και κωδικό ισούται με ένα, δύο, τρία, τέσσερα, πέντε ή ένα ισούται με ένα. Ποια είναι η λογική επίπτωση της τελευταίας αυτής ρήτρας προφανώς; Είναι απλά πάντα αλήθεια. Και επειδή έχουμε το είδος των μαντέψατε ή κατάλαβα από τη δοκιμή και το λάθος ότι ο προγραμματιστής που έγραψε αυτός ο κώδικας δεν έκανε προβλέψει ένα ανθρώπινο ή κακό πρόσωπο πληκτρολογώντας σε μονά εισαγωγικά, καθώς και, μπορούμε να συντακτικά συμπληρώστε το ερώτημα SQL με κάτι ανόητο αλλά κάτι που είναι συντακτικά λανθασμένη ότι αξιολογεί πάντα σε αληθινή. Έτσι, εάν αυτός ο κωδικός χρησιμοποιείται για να απαντήσει το ερώτημα αληθής ή ψευδής πρέπει Αυτός ο χρήστης επιτρέπεται να περάσει, η απάντηση είναι πάντα προφανώς πρόκειται για να είναι αληθινό, γιατί αυτό θα είναι πάντα για να επιλέξετε κάτι από τη βάση δεδομένων διότι ένα από τα φυσικά ισούται πάντα με ένα. Έτσι ποια είναι η λύση; Καλά στην Pset 7, εμείς στην πραγματικότητα αποφευχθεί αυτό όλοι μαζί. Θα σας δώσω ένα ερώτημα λειτουργία, και εμείς Σας ενθαρρύνουμε να χρησιμοποιείτε ερωτηματικά ως σύμβολα κράτησης θέσης, παρόμοια στο πνεύμα με printf του% s, αλλά αυτό που είναι βασικό για τα ερωτηματικά εδώ είναι αν πραγματικά διαβάσετε functions.php, όπου μας ερώτημα λειτουργία υλοποιείται, αυτά τα ερωτηματικά δραπέτευσε, σύμφωνα με την οποία κάτι δυνητικά επικίνδυνο σαν ένα ενιαίο απόσπασμα είναι ενεργοποιημένη σε δραπέτευσε και μόνη προσφορά. Έτσι, αυτό είναι ό, τι είναι πραγματικά συμβαίνει αν χρησιμοποιήστε τη λειτουργία ερώτημα CS50 ή οποιοδήποτε αριθμό δωρεάν βιβλιοθήκες τρίτων που κάνουν το ίδιο. Δεν έχει σημασία σε αυτή την περίπτωση, το πράσινο, εάν ο χρήστης έχει πληκτρολογήσει σε ένα ενιαίο απόσπασμα επειδή το ερώτημα λειτουργία που γράψαμε είναι πρόκειται να προσθέσει αντικάθετοι πριν Οποιαδήποτε τέτοια επικίνδυνη απόσπασμα. Έτσι, αυτό δεν είναι, σε Πράγματι, πρόκειται να είναι legit. Αυτό είναι σαν την πληκτρολόγηση σε ένα τρελό ψάχνετε κωδικό πρόσβασης που είναι, φυσικά, δεν πρόκειται να είναι skroob της πραγματικής κωδικό πρόσβασης. Έτσι, το πακέτο για CS50 είναι μία, απολύτως χρησιμοποιείτε πάντα κάτι όπως η λειτουργία ερωτήματος CS50 του ή το υποκείμενο βιβλιοθήκη, η οποία συμβαίνει να ονομάζεται ΠΟΠ. Αλλά ποτέ, ποτέ, Ποτέ δεν κάνουμε κώδικα όπως αυτό χωρίς διαφυγή ή τρίψιμο όπως λένε εισόδους σας. Και θα σε κάποιο σημείο κατά πάσα πιθανότητα συναντήσετε κάποια ιστοσελίδα όπως αυτή. Στην πραγματικότητα, φαίνεται να είναι η περίπτωση όπως στα αεροδρόμια και ξενοδοχεία σε μέρη όπου έχουν δωρεάν Wi-Fi πρόσβασης που θα πρέπει να συνδεθείτε στο, Αυτές οι ιστοσελίδες είναι πάντα φρικτά υλοποιηθεί. Και έτσι ένα είδος διασκέδασης άσκηση στο σπίτι, όχι για κακόβουλους σκοπούς ή περισσότερα μια διασκέδαση στο δρόμο άσκηση, είναι να πληκτρολογήσετε μόνο μια απόστροφο, μια και μόνη προσφορά, σε μία μορφή σε κάποια ιστοσελίδα και να δούμε τι θα συμβεί. Και αν ο διακομιστής συντρίβεται ή δίνει σας κάποιο είδος του μηνύματος λάθους, μπορεί κάλλιστα να είναι ότι κάποιος δεν έχει αναμενόμενο αυτό. Και τότε θα πρέπει να ειδοποιεί την κατάλληλη αρχές και να προχωρήσει περαιτέρω. Έτσι τώρα εσείς πρέπει να ελπίζουμε καταλάβετε λίγο περισσότερο geek χιούμορ εδώ. [Γέλια] DAVID Malan: Ξέρετε ότι είστε ένα geek. Για την επόμενη αρκετές χρόνια, θα θυμάστε ο οποίος λίγο πίνακες Bobby είναι λόγω του ότι αυτή η γελοιογραφία εδώ. Έτσι, να το έχουμε κατά νου, όπως εμείς πλαίσιο διακόπτη για μια τελευταία φορά σήμερα το JavaScript. Ξοδέψαμε σχετικά μικρή χρόνος για τη σύνταξη της PHP γιατί είναι πραγματικά Σούπερ παρόμοια με C. Και αρκετά ωραία, πάρα πολύ το JavaScript είναι εξαιρετικά παρόμοια με τη σύνταξη της C καθώς και όπως θα δούμε στη μόνο μια στιγμή και όπως θα δείτε αργότερα αυτή την εβδομάδα ειδικότερα. Τι μπορείτε να κάνετε με αυτή τη γλώσσα, όμως, είναι το πιο ισχυρό, ειδικά με τα API. Αλλά πρώτα μια γρήγορη περιήγηση. Έτσι, ένα, σε JavaScript, υπάρχει Δεν κύρια λειτουργία, η οποία είναι ωραία. Όπως και με την PHP, μπορείτε να γράψετε μόνο κωδικό. Όροι μοιάζει με αυτό. Και Boolean εκφράσεις θα μπορούσαν μοιάζει με αυτό ή σαν αυτό. Υπάρχουν διακόπτες, και θα μπορούσε να μοιάζει με αυτό. Τέσσερις βρόχους μοιάζει με αυτό. Ενώ βρόχους μοιάζει με αυτό. Κάντε whiles μοιάζει με αυτό. Και τότε συστοιχίες μοιάζουν Αυτό, πολύ παρόμοια με την PHP. Να σημειωθεί όμως, ότι το JavaScript σας να δηλώσει μια μεταβλητή δεν με ένα δολάριο υπογράψουν, όχι με έναν τύπο δεδομένων, αλλά κυριολεκτικά λέγοντας var για τη μεταβλητή πριν. Είναι πάρα πολύ χαλαρά πληκτρολογήσει το ότι έχει τύπων, αλλά δεν μπορείτε να τα δηλώσουν ρητά. Και τότε ένα κορδόνι, για παράδειγμα, μπορεί να μοιάζει όπως αυτό, αυτή η συμβολοσειρά καλείται στην παρούσα υπόθεση. Και στη συνέχεια ένα αντικείμενο. Και αυτά θα δούμε περισσότερα σε λίγο. Και ένα αντικείμενο είναι ίσως ένα από τα συνηθέστερα δει δομές δεδομένων σε ένα βασίζονται σε JavaScript πρόγραμμα επειδή επιτρέπει μπορείτε να συνδέσει αυθαίρετα βασικά ζεύγη αξία μόνο όπως συστοιχίες συνειρμική της PHP και ακριβώς όπως το δικό σας πίνακα κατακερματισμού ή να δοκιμάσετε όπως υλοποιήσαμε λίγες εβδομάδες πίσω. Ας δούμε πραγματικά τι μπορούμε να κάνουμε με το JavaScript. Και συγκεκριμένα, αυτό είναι ένας κατάλογος πλυντηρίων χαρακτηριστικά ότι τα προγράμματα περιήγησης έχουν ότι μας επιτρέπουν να συνδέσετε το JavaScript σε μια ιστοσελίδα με τον ακόλουθο τρόπο. Το JavaScript συχνά χρησιμοποιείται ως ένα πλευρά του πελάτη scripting γλώσσα. Δεν έχει συνταχθεί. Είναι πάρα πολύ ερμηνεύεται. Αλλά σε αντίθεση με την PHP, η οποία έχει σε λειτουργία στο διακομιστή, στον web server, ή βαθιά εσωτερικό του των πελατών, το JavaScript είναι διαφορετική σε αυτό το συνήθως εκτελείται στο πρόγραμμα περιήγησης. Έτσι, κάθε κώδικα JavaScript ξεκινήσετε τη σύνταξη για Pset 8, ή τελικό έργο σας, ή στον πραγματικό κόσμο είναι γενικά πηγαίνει πρέπει να αποθηκεύονται στο διακομιστή, απολύτως σε μια τελεία HTML ή τελεία JS για το αρχείο JavaScript. Όμως, το πρόγραμμα περιήγησης θα για να κατεβάσετε ότι το JavaScript κώδικα στο δικό σας παράδειγμα του Chrome, ή IE ή το Firefox, ή οτιδήποτε άλλο. Και ο κώδικας είναι πραγματικά πρόκειται να πάρει εκτελούνται μέσα από το δικό σας πρόγραμμα περιήγησης. Ακριβώς για να κάνουν αυτό το πιο πραγματικό, ας δούμε αυτό σε συγκεκριμένη μορφή. Δεν έχουμε ιδέα τι αυτός ο κώδικας κάνει χωρίς πραγματικά την ανάγνωση μέσα από αυτό. Αλλά επιτρέψτε μου να πάω στο Facebook.com χωρίς να συνδεθείτε. Επιτρέψτε μου να πάω να Επιθεωρήστε Element και να πάει να, ας πούμε, του Δικτύου και ανανεώστε την σελίδα. Και εμείς θα see-- επιτρέψτε μου να μετατοπίσει Ανανέωση της Σελίδα για να πάρετε όλα τα αιτήματα για νέες. Και η πρώτη αρχείο που βλέπω είναι CSS, CSS. Εδώ είναι η πρώτη Αρχείο JavaScript, και έχω Δεν έχω ιδέα τι κάνει αυτό, αλλά εδώ είναι μερικά από τα κώδικα JavaScript που οδηγεί στο Facebook. Δεν είναι καν πραγματικά ότι αποκαλύπτοντας για μεγέθυνση. Είναι εξακολουθεί να είναι εξίσου παράλογο. Αλλά θα δείτε ακόμα και κάτω κάτω, δεν υπάρχει ακόμα περισσότερα από αυτά τα αρχεία το JavaScript. Ωχ. Αυτό είναι ένα ping. Ας πάμε λίγο προς τα κάτω περαιτέρω, περαιτέρω, περαιτέρω. Υπάρχει μία. Υπάρχει μία. Υπάρχει μία. Έτσι, παρόλο που το Facebook, πίσω από το σκηνές, είναι γραμμένο εν μέρει σε PHP και το Facebook για τη δική του εκδοχή αυτής, υπάρχει ένα τεράστιο ποσό το JavaScript. Στην πραγματικότητα, οποιαδήποτε από τις κουβέντα που κάνετε στο Facebook, κάποια από τις ενημερώσεις inline χρονοδιάγραμμα που συμβαίνουν σε πραγματικό χρόνο, όλα αυτά οδηγείται από το JavaScript. Ναι; ΚΟΙΝΟ: Δεν είμαι σίγουρος αν αυτό είναι το Facebook, αλλά σκέφτηκα ότι το Facebook που αναπτύχθηκε δική τους in-house κωδικό γλώσσας; DAVID Malan: Έκαναν. Έτσι, γι 'αυτό και λέω μια διακύμανση των PHP που ονομάζεται Hip Hop ότι όντως πρόσθετα χαρακτηριστικά για τέτοια ώστε, όταν Mark εφάρμοσαν για πρώτη φορά το Facebook, ήταν γραμμένο σε PHP. Και έχει αυτό το είδος της παρέμεινε το είδος του μπροστινού άκρου γλώσσας που χρησιμοποιούν για πολύ της κωδικοποίησης τους, αλλά Δεν υπήρξε μια γλώσσα που είναι κλίμακες ιδιαίτερα καλά σε δισεκατομμύρια των ανθρώπων. Και έτσι έχουν προσθέσει τα δικά τους βελτιώσεις πίσω από τις σκηνές. Και η χρήση οποιουδήποτε αριθμού από άλλες γλώσσες για διάφορα κομμάτια της των υποδομών τους. Οπότε ναι, είναι μια διακύμανση της αυτό που σήμερα γνωρίζουμε ως PHP. Έτσι, ας ρίξουμε μια ματιά σε μερικά παραδείγματα για το πώς μπορούμε να χρησιμοποιήσουμε το JavaScript εδώ. Στο πηγαίο κώδικα του σήμερα, έχουμε ένα δέσμη των αρχείων, το πρώτο εκ των οποίων, ας ονομάζεται DOM μηδέν. Έτσι DOM μηδέν έχει ως εξής. Επιτρέψτε μου να πάω σε αυτόν τον κατάλογο και να ανοίξει domzero.html, η κορυφή του οποίου έχει ένα τύπο doc δήλωση, λέγοντας ότι εδώ έρχεται HTML 5. Και τώρα εδώ είναι μια ετικέτα HTML. Εδώ είναι η ετικέτα της κεφαλής. Και εδώ είναι ό, τι είναι νέο σήμερα. Έχουμε τώρα μια ετικέτα script στο εσωτερικό του κεφαλιού της σελίδας. Και αυτό το κάνει προφανώς πολύ λίγο, αλλά ειδοποίηση ότι έχω ορίζεται ένας σενάριο, ένα JavaScript. Και, παρεμπιπτόντως, δεδομένου ότι αυτό Είναι μια κοινή παρερμηνεία, Την Javascript δεν έχει απολύτως τίποτα να κάνει με τη Java, η γλώσσα ότι κάποιοι από εσάς μπορεί να έχουν μάθει σε APC. Ήταν περισσότερο από ένα μάρκετινγκ πράγμα από οτιδήποτε άλλο, ιππασία στο τρένο της Java χρόνια πριν. Αλλά το JavaScript, τίποτα να κάνει με Java, ακριβώς τον ίδιο τρόπο, και ενοχλητικά, συγκεχυμένα όνομά του. Έτσι, εδώ είναι το πώς θα κηρύξει λειτουργία σε JavaScript, κυριολεκτικά πω λειτουργία, τότε το όνομα της συνάρτησης, τότε οποιαδήποτε επιχειρήματα που θα μπορούσε να λάβει, ακριβώς όπως στην PHP. Βγάζει το JavaScript, μία από τις πιο ενοχλητικό λειτουργίες που υπάρχουν είναι σε εγρήγορση. Αυτό είναι ένα μικρό παράθυρο που θα εμφανιστεί και θα σας ειδοποιούν σε κάποιο κομμάτι των πληροφοριών. Είναι γενικά αποδοκιμαζόταν. Αλλά εμείς θα το χρησιμοποιήσει ως μας πρώτη άσκηση εδώ. Παρατηρήστε μερικά χαρακτηριστικά του το JavaScript. Μονά εισαγωγικά και διπλά εισαγωγικά στην πραγματικότητα, δεν έχει σημασία πια. Μονά εισαγωγικά και διπλά αποσπάσματα μπορούν να ανταλλαχθούν, ενώ σε C, θα πρέπει να χρησιμοποιήσετε διπλά εισαγωγικά για έγχορδα, και έχετε δύο μονά εισαγωγικά για χαρακτήρες. Στον κόσμο το JavaScript, πολλοί άνθρωποι, οι περισσότεροι άνθρωποι Χρησιμοποιήστε μονά εισαγωγικά γύρω από χορδές ακριβώς επειδή είναι μια υφολογική πράγμα. Αλλά τι είναι ο φορέας συν εδώ, το οποίο δεν έχουμε ξαναδεί; ΚΟΙΝΟ: Αλληλουχία. DAVID Malan: Αλληλουχία. Έτσι C δεν έχει ακόμη αυτό. PHP έχει το χειριστή τελεία, η οποία κάνει αυτό. Τη JavaScript έχει το χειριστή συν, η οποία συγκεχυμένα είναι ακριβώς όπως η Java. Τώρα τι συμβαίνει εδώ; Έτσι, εδώ είναι όπου ένα βασικό κατανόηση αυτής της εικόνας ρίξαμε ένα ζευγάρι ημέρες πριν από την έναρξη του παιχνιδιού. Να θυμάστε, όταν είχαμε μια απλή έκδοση ενός HTML page-- αυτό ακριβώς είπε, γεια κόσμο. Και τότε επέστησε ένα δέντρο προς τα δεξιά, η οποία είχε ένα μάτσο ορθογώνια και γραμμές συνδέοντας τους σαν ένα οικογενειακό δέντρο. Έτσι, αυτό είναι το λεγόμενο DOM ή Μοντέλου Αντικειμένου Εγγράφου. Και αποδεικνύεται ότι μπορείτε να αποκτήσετε πρόσβαση ορθογώνια σε αυτό το δέντρο με τη σύνταξη όπως τα ακόλουθα. Μπορείτε κυριολεκτικά να πω έγγραφο, το οποίο είναι ένα ειδικές παγκόσμια μεταβλητή σε ένα πρόγραμμα JavaScript πρόγραμμα που έχει μια λειτουργία που συνδέονται με αυτό ότι μπορείτε να αποκτήσετε πρόσβαση παρόμοιο με ένα struct, αλλά απλά λένε τελεία και στη συνέχεια το όνομα της συνάρτησης, πάρετε το στοιχείο με ID. Το στοιχείο που θέλω να πάρετε είναι προφανώς παραθέσω εισαγωγικά όνομα. Και τότε θέλω να πάρω την αξία του. Τώρα είμαστε να πάρει μπροστά από τον εαυτό μας. Δεν είμαι καν σίγουρος τι όλα αυτά είναι σχετικά. Ας γρήγορα προς τα εμπρός για την HTML για η σελίδα, η οποία είναι εξαιρετικά απλή. Ανακοίνωση που έχω οριστεί Μια φόρμα εδώ κάτω. Ανακοίνωση έχω δώσει μια μοναδική ID, ακόμα κι αν δεν έχετε χρησιμοποιήσει αυτό το χαρακτηριστικό πριν. Αλλά αυτό υπάρχει σε μορφή HTML. Μπορείτε μοναδικά μπορεί να εντοπίσει κάποιο κομμάτι της HTML με ένα αναγνωριστικό σαν αυτό. Παρατηρήστε τώρα this-- αποδεικνύεται HTML υποστηρίζει, ανά εν λόγω κατάλογο πλυντηρίων Πριν από μια στιγμή, μια ολόκληρη μάτσο χειρισμού συμβάντων. Και αυτό το πρόγραμμα χειρισμού συμβάντων λέει υποβάλει. Σχετικά με την υποβολή του χρήστη αυτού μορφή, καλέστε τον παρακάτω κώδικα. Και ο κώδικας που πρόκειται να κληθεί ή να εκτελεστεί είναι ακριβώς αυτό, η ελληνική λειτουργία που ακολουθείται από ανακριβούς δήλωσης. Οτιδήποτε άλλο θα πρέπει να να είναι αρκετά εξοικειωμένοι. Εδώ είναι μια είσοδος του τύπου κειμένου, του οποίου η ID, σε αυτήν την περίπτωση, πρόκειται να είναι το όνομα. Δεν έχουμε έναν πραγματικό όνομα χαρακτηριστικού Αυτό time-- και ένα κουμπί υποβολής. Έτσι, η σελίδα που μοιάζει με αυτό. Και η προκύπτουσα συμπεριφορά, θα δείτε, μοιάζει με αυτό. Η σελίδα αυτή τοπικούς οικοδεσπότες λέει, γειά σου Δαβίδ, σχεδόν ένα αισθητικά ευχάριστο τρόπος για να χαιρετήσει έναν χρήστη. Αλλά τι πραγματικά συμβαίνει; Λοιπόν, σκεφτείτε τι είναι αυτό. Αυτό είναι ένα πεδίο κειμένου. Και σύμφωνα με το HTML εδώ, έχω να δοθεί ένα μοναδικό αναγνωριστικό ονομάζεται απόσπασμα εισαγωγικά όνομα. Εν τω μεταξύ, έχω πει όταν ο χρήστης υποβάλλει την παρούσα μορφή πατώντας Enter ή κλικ στο Υποβολή κουμπί, καλέστε τη λειτουργία που ονομάζεται Greet και στη συνέχεια επιστρέφει false. Ας εξετάσουμε αυτές αντίστροφη. Ειδοποίηση όταν κάνω κλικ στο Υποβολή, η URL αυτής της σελίδας δεν αλλάζει. Το εικονίδιο του προγράμματος περιήγησης δεν αρχίσει να γυρίζει. Εγώ δεν πάω πουθενά, και αυτό είναι κυριολεκτικά γιατί είπα return false. Επιστροφή Λάθος βραχυκυκλώματα ή στάσεις η προεπιλεγμένη συμπεριφορά του μορφή. Έτσι ώστε, στη συνέχεια, μας αφήνει με Αυτή η μια τελευταία ερώτηση. Τι Greet κάνουμε; Λοιπόν, προφανώς Χαιρετήστε καλεί μια λειτουργία που ονομάζεται Ειδοποίησης, περνάει σε ένα μακρά επιχείρημα που είναι το αποτέλεσμα της συνένωση μαζί ένα μάτσο substrings, γεια χώρο κόμμα, τότε ό, τι αυτό επιστρέφει. Έτσι, το έγγραφο είναι σαν ένα παγκόσμιο μεταβλητή σε αυτή τη ρίζα του δέντρου, καλώντας μια ειδική λειτουργία, Αλλιώς τώρα γνωστή ως μέθοδος. Μια λειτουργία που είναι μέσα από μια μεταβλητή είναι ονομάζεται μέθοδος αντί για μια λειτουργία. Έτσι πάρτε το στοιχείο με ID. Ποιο στοιχείο κάνετε θέλουν να πάρουν με ID της; Παράθεση εισαγωγικά το όνομα και τότε η αξία ειδικά. Έτσι με άλλα λόγια, ότι ο κωδικός απλά βρίσκει το πεδίο κειμένου του οποίου η ταυτότητα είναι το όνομα και στη συνέχεια να παίρνει την αξία του. Έτσι, εάν επρόκειτο να αλλάξει αυτό και να πω Davin αντί του Δαβίδ, και κάντε κλικ στην επιλογή Υποβολή, τώρα είμαστε έχουν ένα χαιρετισμό για Davin. Εντάξει, οπότε όλα ωραία και καλά. Αλλά ας δούμε αν μπορούμε να κάνουμε Αυτό είναι λίγο καθαρότερο από μόνο τη σύνταξη κώδικα, όπως αυτό είναι γενικά θα πρέπει να αποδοκιμάζεται. Αυτό πρόκειται να δούμε χειρότερες. Αλλά ποια είναι η πρώτη διαφορά που μπορείτε να σημειώσετε εδώ σε αυτή την έκδοση, εκτός από το όνομα αλλάζει σε ένα DOM; Τι δομικά μοιάζει διαφορετικό για αυτό σε σχέση με την άλλη; Ναι; ΚΟΙΝΟ: Είναι η μορφή κορυφή του σεναρίου τώρα; DAVID Malan: Ναι, η μορφή είναι στην κορυφή του σεναρίου για κάποιο περίεργο λόγο. Έτσι, αυτό είναι το πρώτο πράγμα ότι πηδά έξω σε μένα, πάρα πολύ. Και ευτυχώς, τουλάχιστον, Αυτό το μέρος είναι πανομοιότυπα. Έτσι, το μόνο πράγμα που φαίνεται να είναι διαφορετική είναι αυτό. Έτσι, εδώ είναι ό, τι είναι τακτοποιημένο περίπου το JavaScript 2. Και αυτό καθιστά δύσκολο να καταλάβετε με την πρώτη ματιά, ειδικά για την τελική έργων αν ψάχνετε σε δείγμα κώδικα σε απευθείας σύνδεση, αλλά βράζει κάτω σε μερικά βασικά συντακτικά χαρακτηριστικά. Εδώ πάλι είναι ότι παγκόσμια μεταβλητή έγγραφο. Εδώ πάλι είναι ότι η μέθοδος ή η λειτουργία ότι λέει να πάρει το στοιχείο με ID. Αυτή τη φορά θέλω να να πάρει το αναγνωριστικό που ονομάζεται demo. Πού είναι αυτό; Αυτό είναι προφανώς το δικαίωμά Εδώ, η ίδια η μορφή. Και τώρα παρατηρήσετε ότι προφανώς αν μου να πάρει πίσω αυτόν τον κόμβο από το δέντρο που αντιπροσωπεύει την μορφή μόνη της, δεν είναι ένα πεδίο κειμένου, Αποδεικνύεται ότι η μορφή, ότι κόμβου ή ορθογώνιο από το δέντρο, έχει τι θα καλέσουμε ένα ακίνητο, πολύ, πολύ, πολύ παρόμοια το πνεύμα του σε ένα struct στη Γ Είναι απλά ένα μέλος των δεδομένων στο εσωτερικό αυτού του ορθογωνίου. Έτσι έχω τη μορφή εδώ, και είμαι επισυνάπτοντας, ή είμαι ανάθεση, σε On του Υποβολή χειριστή ή μάλλον Στις Υποβολή ακίνητο η παρακάτω λειτουργία. Και αυτό είναι, μακράν, το πιο τρελό πράγμα που μέχρι στιγμής συντακτικά. Αποδεικνύεται σε JavaScript και PHP, και ειλικρινά για το θέμα αυτό σε C, ακόμα κι αν δεν το κάνετε, μπορείτε να προσθέσετε ανώνυμος, ανώνυμα, ή AKA λάμδα λειτουργίες που δεν έχουν όνομα αλλά μπορεί να λέγεται παρόλα αυτά. Έτσι, αυτό που κάνω εδώ είναι ότι είμαι ανάθεση Αυτό Υποβολή στην ιδιοκτησία, η οποία είναι εντός αυτού του κόμβου του δέντρου DOM μου, ένα λειτουργία, ο δείκτης λειτουργία αν θέλετε. Αυτή η λειτουργία δεν έχει όνομα, αλλά ότι δεν κάνει σημασία, διότι θα δούμε σε μια στιγμή πώς να το ονομάσουμε. Όταν η λειτουργία αυτή ονομάζεται, Αυτός ο κώδικας δέχεται εκτελεστεί, τότε ψευδείς επιστρέφεται ακριβώς όπως πριν. Αλλά παρατηρήστε τι έχω κάνει. Σε αυτό το σημείο η ιστορία, έχω μια φόρμα. Έχει ένα μοναδικό αναγνωριστικό που ονομάζεται demo. Εδώ κάτω, έχω μια ετικέτα script που εκτελεί τον παρακάτω κώδικα. Αποδίδει σε αυτόν τον κόμβο στο το δέντρο να είναι στο Υποβολή ιδιοκτησίας η λειτουργία αυτή εδώ. Και μόνο από τη φύση του πώς λειτουργούν τα προγράμματα περιήγησης, όταν εγώ τώρα κάντε κλικ στο Υποβολή ή να πατήσετε το Enter, ότι η λειτουργία πρόκειται να πάρει ονομάζεται. Δεν χρειάζεται ένα όνομα, γιατί ποιος το καλό νοιάζεται για το τι λέγεται. Η μόνη φορά που πρόκειται ποτέ να πάρει ονομάζεται είναι όταν υποβάλετε τη φόρμα. Δεν υπάρχει καμία ανάγκη για μένα, η ανθρώπινη έργου, για να καλέσετε πραγματικά οπουδήποτε αλλού. Τώρα απλά ως ένα teaser, ως εάν αυτός δεν είχαν το μυαλό κάμψης αρκετά, μπορούμε να κάνουμε ακόμα και αυτό φαίνονται πιο αινιγματικά χρησιμοποιώντας ένα σούπερ δημοφιλής βιβλιοθήκη που ονομάζεται jQuery. Στην πραγματικότητα jQuery και JavaScript συχνά συγχέονται. Και τι θα κάνουμε την Τετάρτη είναι η αρχή χρησιμοποιώντας αυτή τη γλώσσα και αυτές τις βιβλιοθήκες για την κατασκευή όλο και ασύγχρονη και δυναμικές εφαρμογές όπως χάρτη πάρει εφαρμογές, εφαρμογές ότι η ενημέρωση της ιστοσελίδας σε πραγματικό χρόνο, πολύ όπως το Facebook ή Gchat κάνει, και περιορίζεται πλέον στους εαυτούς μας να Υποβολή χτύπημα από ένα get ή απλά μετά μόνο. Γι 'αυτό και θα σας δούμε την Τετάρτη. [Παίζει μουσική]