DAVID Malan: Εντάξει, είμαστε πίσω. Έτσι, για το συναρπαστικό Συμπερασματικά, το τελευταίο τμήμα μας σε web προγραμματισμό, την οποία νομίζαμε ότι θα χρησιμοποιήσετε ως γενικός όρος να συλλάβει μερικές υπόλοιπα θέματα. Έτσι, στο τέλος της ημέρα, εμείς θα το κάνουμε πραγματικότητα λίγο τα χέρια-για web προγραμματισμό με μια γλώσσα που ονομάζεται JavaScript. Και νομίζω ότι θα ρίξουμε μια ματιά σε κάτι που σχετίζονται με εικόνες και να ανακαλύψετε κάτι κρυφά κρυμμένα σε μια εικόνα, και, επίσης, ρίξτε μια ματιά στο Google API Χαρτών, προγραμματισμού εφαρμογών interface, ως κάτι εκπρόσωπος του τύπου του λογισμικού αυτό είναι όλο και ελεύθερα διαθέσιμο σήμερα. Αλλά γιατί να μην ρίξουμε μια ματιά σε ένα συστατικό για αυτόν τον κόσμο ότι έχουμε το είδος της ήταν λαμβάνοντας ως δεδομένο υπάρχει για κάποιο χρονικό διάστημα, μια βάση δεδομένων. Για την τελευταία ημέρα και ένα μισό που έχουμε αναλάβει ότι έχουμε πρόσβαση σε μια βάση δεδομένων, αλλά τι πρόβλημα λύνει μια βάση δεδομένων; Τι κάνει για μας; Τι είναι αυτό? Κοινό: [δεν ακούγεται] DAVID Malan: Συγκρατεί όλες τις πληροφορίες, Εντάξει, και τι είδους πληροφορίες μπορεί να σας βάλει σε αυτό; Κοινό: [δεν ακούγεται] DAVID Malan: Όλες οι πληροφορίες βάζετε σε αυτό, θα πάρετε πίσω. Αυτό είναι αλήθεια. Και σε ένα τυπικό web-based ιστοσελίδα ή web εφαρμογή, ποια είδη πληροφοριών, Συγκεκριμένα, μπορεί να σας βάλει μέσα; Κοινό: [δεν ακούγεται] DAVID Malan: Χρήστες. Έτσι τι είναι ο χρήστης; Κοινό: [δεν ακούγεται] DAVID Malan: OK, η οποία καταχωρήθηκε χρήστης της ιστοσελίδας. Και τι σημαίνει αυτό για πληροφορίες των χρηστών καταστήματος; Τι συνθέτει ένα χρήστη; Ένας χρήστης έχει τι; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, τα προσωπικά δεδομένων, και μου αρέσει αυτό. Ας είμαστε πιο ακριβείς. Έτσι ένας χρήστης έχει τυπικά ένα όνομα, τι άλλο θα μπορούσε ένας χρήστης να έχει; Κοινό: [δεν ακούγεται] DAVID Malan: Μια addr-- OK, έτσι το όνομα, το επώνυμο. Αυτό είναι καλό. Στην πραγματικότητα, ας καθορίσει ότι, επειδή πρόκειται να ανοίξει μια ευκαιρία για συζήτηση, ακόμη, περαιτέρω. Όνομα, επώνυμο, φύλο. Μια ταυτότητα κάποιου είδους. Τι άλλο? Άκουσα κάτι άλλο πριν, πάρα πολύ. Ένα μήνυμα ηλεκτρονικού ταχυδρομείου, ταχυδρομική διεύθυνση. Ας παύση εκεί και τώρα να εξετάσει δεν είναι αυτό που είμαστε αποθήκευση στη βάση δεδομένων, but-- και γιατί όχι, δεδομένου ότι είναι ίσως προφανές ότι τη στιγμή που θα εγγραφείτε σε ένα χρήστη, θέλετε να τους θυμόμαστε για κάποιο χρονικό διάστημα. Δεν το θέλουν να απλά να αποθηκεύονται στη μνήμη RAM και να forgotten-- έτσι ας επικεντρωθούμε στο πώς. Αποδεικνύεται ότι σε ο κόσμος των βάσεων δεδομένων, υπάρχει τουλάχιστον δύο τύπους αυτές τις μέρες. Κάτι που ονομάζεται μια βάση δεδομένων SQL, Structured Query Language, ή, cutely το όνομα, NoSQL, η οποία δεν είναι SQL. Και αυτός είναι παράδειγμα του τι θα μπορούσε να ονομάζεται ένα αντικείμενο με προσανατολισμό, ή ένα κατάστημα αντικείμενο, μια βάση δεδομένων ότι αποθηκεύει τα αντικείμενα, και όχι, δικαιολογία μένα, όπως θα δούμε σύντομα, σειρές. Έτσι, θα επικεντρωθούμε μόνο για μια στιγμή Η πρώτη από αυτές, δηλαδή, ένα SQL βάση δεδομένων, έστω και μόνο επειδή είναι τόσο εξοικειωμένοι ήδη, σε κανέναν που έχει χρησιμοποιήσει το Excel ή Φύλλα Google ή της Apple Αριθμούς ή οποιοδήποτε πρότυπο πρόγραμμα υπολογιστικών φύλλων, ή, ισοδύναμα, ή περισσότερα sophisticatedly, κάτι σαν τη Microsoft Access ή Oracle ή MySQL ή PostgreSQL, το σύνολο των οποίων είναι τα ονόματα των προϊόντων για εφαρμογές από τα ακόλουθα ιδέα. Μια σχεσιακή βάση δεδομένων είναι απλά κάτι που έχει γραμμές και στήλες. Και από γραμμές και στήλες, Εννοώ κυριολεκτικά κάτι όπως αυτό, έτσι ώστε όταν θα μπορούσε να έχει η το όνομα ενός πεδίου και τον τύπο του εδώ. Και στην πραγματικότητα, επιτρέψτε μου τώρα αρχίζουν να χαρτογραφήσει αυτά. Έτσι, στην πραγματικότητα, δεν ξέρω Γι 'αυτό επέστησε ένα ξεχωριστό γράφημα. Ας κρατήσουμε αυτό το απλό. Έχουμε εδώ το απαρχές της τραπέζι μας, όπου αυτό είναι το όνομα του πεδίου και αυτό είναι το είδος των δεδομένων, και με βάση το είδος εννοώ το εξής. Είναι ένας αριθμός, είναι ένα string, μια μικρή κλωστή, όπως μια λέξη, είναι μια σκέψη, είναι δυαδικά δεδομένα, όπως μια εικόνα; Και ας δώσουμε έμφαση αυτή εκτός για μια στιγμή. Έτσι, το όνομα, τον αριθμό, string, μεγάλο κομμάτι της text-- Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, έτσι εγχόρδων. Και σε ένα πλαίσιο δεδομένων, που θα συνήθως ονομάζουμε αυτό το πεδίο char. Θα πω μόνο char για τώρα, αλλά είμαστε πρόκειται να βελτιώσετε αυτό σε μια στιγμή. πεδίο χαρακτήρα. Επώνυμο είναι πιθανώς το ίδιο. Γένος? Άνδρες ή γυναίκες, έτσι ώστε να θα μπορούσε να είναι ένα πεδίο char. Θα μπορούσε να είναι είτε το απόσπασμα, unquote «Αρσενικό» ή απόσπασμα, εισαγωγικά "θηλυκό" ή θα μπορούσε να είναι m ή f. Αν θέλετε να είναι πιο περιεκτική, ίσως χρειαστεί ένα τρίτο τιμή ή κάποιο είδος άλλο τομέα συνολικά. Και έτσι θα μπορούσατε να χρησιμοποιήσετε αλήθεια ψευδείς. Το πεδίο θα μπορούσε να ονομαστεί αρσενικό, και τότε θα μπορούσαμε να πούμε αληθείς ή ψευδείς. Αλλά αυτό δεν σημαίνει απαραίτητα συλλάβει όλες τις πληροφορίες που μπορεί να θέλετε. Έτσι αποδεικνύεται ότι υπάρχει ένας άλλος τύπος του πεδίου που θα μπορούσαν να είναι χρήσιμα εδώ σε ένα τυπικό βάση δεδομένων, που ονομάζεται enum, όπου είναι ένα πεδίο χαρακτήρα, αλλά εσείς, ο σχεδιαστής, για να πάρετε απαριθμήσει τις πιθανές τιμές, όπως παραθέτω, εισαγωγικά "αρσενικό", απόσπασμα, εισαγωγικά "γυναικεία" και ούτω καθεξής. Έτσι ώστε ανεξάρτητα από την αξία είναι στη βάση δεδομένων σας, Είναι πράγματι βασίζονται σε χαρακτήρες, αλλά θα πρέπει να είναι μία από αυτές τις τιμές. Εμείς μάλλον δεν θα ήθελε ένα enum για το όνομα ή το επώνυμο. Διαφορετικά θα είχαμε να απαριθμήσει, όπως το όνομα προέρχεται από, κυριολεκτικά κάθε δυνατό όνομα και επώνυμο. Εντάξει, έτσι ID τι θα πρέπει να είναι ένα αναγνωριστικό; Ναι, έτσι ίσως ένας αριθμός. Έτσι, ας κολλήσει με ότι προς το παρόν, ο αριθμός. Και από τον αριθμό, τον αριθμό είναι λίγο πολύ ευρεία τώρα. Για το τέλος της δεύτερης μέρα, νιώθω σαν να είμαστε θα πρέπει να είναι λίγο πιο ακριβή. Αριθμός θα μπορούσε να σημαίνει, όπως, το θα μπορούσε να είναι κάτι σαν 1.236. Και αυτό δεν είναι πιθανόν να τι εννοούμε με ένα αναγνωριστικό. Τι ίσως να σημαίνει από ένα αναγνωριστικό; Κοινό: [δεν ακούγεται] DAVID Malan: Ω, εντάξει, έτσι ίσως δεν είναι ακόμη ένας αριθμός. Ίσως είναι πραγματικά ένα μοναδικό αναγνωριστικό αυτό είναι ένα string, όπως ένα όνομα χρήστη. Έτσι απολύτως, θα μπορούσε να είναι. Νομίζω ότι κάποιος ίσως σήμαινε αριθμητική, όμως. Ας μείνει με αυτό. Τι είδους αριθμό; Τι είναι πιο precise-- έναν ακέραιο. Έτσι ένας αριθμός όπως 0, 1, 2, 3, έτσι θα καλέσετε αυτό ένας ακέραιος. Και ακόμα και τότε, θα μπορούσα να nitpicking, είναι δεν είναι πραγματικά ακριβώς ένα γενικές ακέραιο θέλετε. Πιθανότατα δεν θέλουν αρνητικές τιμές, μόνο και μόνο επειδή, ακριβώς αισθάνεται περίεργα. Θέλετε πιθανώς θετικών ακεραίων. Έτσι, μπορείτε επίσης να εκφράσει ότι σε μια βάση δεδομένων, αλλά για τώρα, εμείς θα πούμε ακέραιο. E-mail? Αυτό είναι πιθανώς just-- τι; Κοινό: [δεν ακούγεται] DAVID Malan: Είναι ένα μήνυμα ηλεκτρονικού ταχυδρομείου, αλλά αυτό είναι χαρακτήρες, σωστά; Έχει μόνο ένα funky χαρακτήρα, όπως ένας "σε" σύμβολο ή κάτι άλλο, αλλά είναι ακόμα ένα πεδίο χαρακτήρα. Και ταχυδρομική διεύθυνση; πεδίο χαρακτήρα. Έτσι, αυτό είναι ένα ωραίο ξεκίνημα, αλλά ας είμαστε λίγο πιο ακριβείς τώρα. Έτσι αποδεικνύεται ότι το μια βάση δεδομένων, που συχνά έχουν τη δυνατότητα επιλογής πάνω από πιο εκλεπτυσμένη εκδόσεις από αυτά τα πράγματα. Στην πραγματικότητα, σε ένα τυπικό βάση δεδομένων SQL, SQL, ή γενικότερα, σχεσιακή βάση δεδομένων, βάσεις δεδομένων με σειρές και στήλες, που συχνά έχετε να καθορίζει όχι μόνο το είδος της field-- επιτρέψτε μου να κάνω κάποια here-- δωμάτιο αλλά και το μήκος. Έτσι, πόσο καιρό είναι ένα όνομα; Νομίζω, D-Α-V-Ι-D. Εντάξει, το πήρα εγώ πιθανώς ακριβώς προσβεβλημένος σαν μισό από τους ανθρώπους στην αίθουσα, δεξιά, δεδομένου ότι τα ονόματά σας είναι περισσότερο από πέντε γράμματα, έτσι πέντε φαίνεται λίγο εγωιστικό και αφελείς, έτσι τι είναι μια καλύτερη τιμή; 10, εντάξει, και νομίζω είμαστε OK σε ένα δωμάτιο. 13; 30; Γιατί δεν μπορώ να πάρω το προσέγγιση των προηγούμενων όταν μιλούσαν για συστοιχίες και τη μνήμη; Γιατί δεν μπορώ να πω σαν 1.000; Το όνομά Κανείς δεν πρόκειται να είναι μεγαλύτερη από 1.000. Απωθώ. Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, είναι σπάταλο, δεξιά, ιδιαίτερα αν οι περισσότεροι ονόματα είναι μόνο πέντε ή 10 ή 15 χαρακτήρες, ότι είναι πολύ σπάταλη. Έτσι, ξέρετε τι; Αυτό είναι το είδος της μια δύσκολη ερώτηση. Τώρα, μπορούμε βεβαίως να αναλύσουμε αγγλικά και τα ονόματα οποιαδήποτε άλλη γλώσσα της και να καταλάβω, καλά, ποια είναι η average-- μέσο όρο δεν έχει πραγματικά βοηθήσει ΕΜΕΙΣ-- ποια είναι η max είναι ίσως ό, τι θέλουμε πραγματικά. Αλλά αποδεικνύεται έχουμε ακόμη κάποια επιλογή για τον τύπο εδώ. Σε μια τυπική βάση δεδομένων SQL, μπορείτε έχουν κάτι που ονομάζεται χαρα τομέα και επίσης μια varchar, V-A-R, για τη μεταβλητή πεδίο char. Και η διαφορά είναι αυτό. Ένα πεδίο char, που ο σχεδιαστής, πρέπει να προσδιορίζουν εκ των προτέρων το ακριβές μήκος του πεδίου. Έτσι, ίσως το πρώτο όνομα όπως 20 αισθάνεται είδος ασφαλής. Μπορεί να χρειαστεί να κάνετε κάποια googling να να δούμε αν αυτό είναι αρκετό πραγματικά ασφαλής. Υπάρχει πιθανώς ένα όνομα με 21 χαρακτήρες, αλλά για τώρα, ας υποθέσουμε 20 είναι ασφαλές. Ένα πεδίο char θα σήμαινε σε μια βάση δεδομένων που είναι με τη χρήση 20 και πάντα 20 χαρακτήρες. Τώρα αν είναι μόνο D-Α-V-Ι-Α, 15 από αυτούς είναι ακριβώς πρόκειται να είναι κενό χαρακτήρες, αλλά είστε ακόμα χρησιμοποιώντας όλα τα 20 bytes. Ένα πεδίο varchar, αντιθέτως, σημαίνει ότι η χορδή πρέπει να είναι μέχρι 20 χαρακτήρες αλλά αν είναι μόνο πέντε, είστε μόνο πρόκειται να χρησιμοποιήσετε πέντε, ή ίσως έξι για ένα ιδιαίτερη αξία στο τέλος, όπως εκείνο 0 συζητήσαμε ότι σημαίνει το τέλος ενός χαρακτήρα ακολουθία στη μνήμη. Έτσι, όταν νομίζετε ότι μπορείτε να επιλέξετε char έναντι varchar, δεδομένου ότι το εμπόριο-off; Χαρ χρησιμοποιεί ότι πολλοί χαρακτήρες, varchar δεν χρησιμοποιεί περισσότερο από ότι πολλοί χαρακτήρες. Κοινό: [δεν ακούγεται] DAVID Malan: OK, όταν ξέρεις το το μήκος του string αρκετά συναρπαστικό να χρησιμοποιήσετε μόνο char, γιατί αν το ξέρεις, απλά να το βάλετε κάτω. Και ίσως αυτό είναι αλήθεια για ένα φερμουάρ κώδικα, στις ΗΠΑ, τουλάχιστον, 02138, αυτό είναι πάντα θα είναι πέντε χαρακτήρες μέχρι να προσθέσετε την παύλα τέσσερις. Αλλά μπορεί να έχετε κάποιες τιμές για που ξέρεις πάντα το μήκος. Ή ίσως κρατικά σύμβολα, όπως NY για τη Νέα Υόρκη, και MA για Μασαχουσέτης στις ΗΠΑ. Ίσως έχετε κάποιες καταστάσεις όπου αυτό είναι απολύτως λογικό, αλλά με αυτή τη λογική, γιατί είναι έχουμε ακόμη overthinking αυτό; Γιατί δεν μπορούμε απλά να χρησιμοποιήσετε varchar και στη συνέχεια απλά θα χρησιμοποιείτε πάντα δύο χαρακτήρες ούτως ή άλλως, ή χρησιμοποιείτε πάντα πέντε χαρακτήρες ούτως ή άλλως; Γιατί δεν είναι μόνο να σώσει varchar για τα πάντα, από τη λογική; Πρέπει να υπάρχει μια παγίδα. Κοινό: [δεν ακούγεται] DAVID Malan: Θα μπορούσε γράψω κάτι λάθος. Έτσι, αυτό είναι αλήθεια. Αλλά ακόμα και τότε, δεν μπορούν να χρησιμοποιήσουν περισσότερη μνήμη από ό, τι διαθέτουμε. Έχω ακόμα την τελική δηλαδή πάνω από το μήκος, έτσι ώστε να μην μπορεί κατά λάθος να αυτό το λάθος, αλλά μια καλή σκέψη. Είναι πιο λεπτές, αλλά είναι πολύ σχετικές στη συζήτησή μας, στην πραγματικότητα, των συστοιχιών και συνδεδεμένες λίστες νωρίτερα. Αποδεικνύεται ότι μια βάση δεδομένων, εάν γνωρίζει ότι όλες οι τιμές είναι ενός σταθερού μήκους, ακόμη και εάν ορισμένες από αυτές τις τιμές είναι κενό, είδος αισθητικά κενό, D-A-V-I-D και στη συνέχεια 15 κενά, αποδεικνύεται ότι αν κάθε πεδίο είναι το ίδιο μήκος, σαν μια σειρά είχε όλα του τα πράγματά του πλάτη με πλάτη με πλάτη με πλάτη, έτσι ώστε θα μπορούσατε απλά συν 1 για να φτάσουμε στην επόμενη αξία, ίδια ιδέα σε έναν πίνακα βάσης δεδομένων. Αν όλα του χαρακτήρα σας χορδές είναι το ίδιο μήκος, Έχετε ό, τι λέγεται τυχαίας προσπέλασης. Εάν όλες οι χορδές είναι μήκους 20, δεν το κάνετε μόνο κάνει συν 1 απλά κάνει συν 20, συν 20 συν 20 συν 20, και μπορείτε πολύ γρήγορα κύλιση ή αναζήτηση μέσω όλων των δεδομένων σας. Μια μεταβλητή πεδίο char, αντιθέτως, δεν έχει πάντα 20 χαρακτήρες. Θα μπορούσε να έχει 20 και, στη συνέχεια, 15 και στη συνέχεια 19 και στη συνέχεια 10, και έτσι αν θέλετε να αναζητήσετε μέσα από αυτό, δεν μπορείτε απλά τυφλά προσθέστε 20 bytes για να φτάσουμε στην επόμενη. Μπορείτε κυριολεκτικά να ψάξετε μέσα επειδή το άκρο της δομής των δεδομένων, αν θέλετε, είναι τραχύς. Το είδος του πηγαίνει μέσα και έξω με βάση σχετικά με το πραγματικό μήκος της συμβολοσειράς. Έτσι, όταν ξέρεις το μήκος, όπως Kareem λέει, χρησιμοποιήστε ένα πεδίο char, γιατί μπορείτε να αποκτήσετε ότι αποτελεσματικότητα της ύπαρξης μπορείτε να αναζητήσετε μέσα από αυτό πιο γρήγορα όταν ψάχνετε για τα δεδομένα σας, άλλο τρόπο να χρησιμοποιήσετε μια μεταβλητή. Δυστυχώς, δεν έχω καμία καλή απάντηση για πόσο καιρό το όνομα θα πρέπει να είναι, αλλά για κάτι τέτοιο ένα όνομα, θα έλεγα μια varchar είναι κοινή γιατί δεν πρόκειται να είναι ένα σταθερό μήκος για όλους. 20, δεν ξέρω, 20 αισθάνεται λίγο σφιχτό. Ας πούμε 50, 50. Δεν πραγματικά σας κοστίσει ότι πολύ περισσότερο να πω 50 αντί για 40, αλλά σε κάποιο σημείο, θα πρέπει να έχετε για να κάνει μια κλήση κρίσης. Πολύ συχνές, ειλικρινά, για [? ιστορικός ?] λόγους, ακόμα κι αν είναι υπερβολική, δηλαδή 255, επειδή πριν από λίγο καιρό, στη δημοφιλή συστήματα βάσεων δεδομένων, όπως MySQL, ένα δωρεάν εργαλείο ανοικτού κώδικα ότι πολλές εταιρείες όπως ακόμα και το Facebook χρησιμοποιείται, αυτό ήταν το μέγιστο προεπιλεγμένο έτσι ώστε οι άνθρωποι απλά πήγε με αυτό. Έτσι δεν είναι παράλογο, αλλά εμείς θα χρησιμοποιήσει λίγο περισσότερο τη διαίσθηση και να πω, σίγουρα 50, που είναι ίσως λίγο υπερβολικό. Το φύλο, μου αρέσει enum, και γι 'αυτό, επομένως, να απαριθμήσει αρσενικό ή θηλυκό, ή ίσως πιο αποτελεσματικά, m ή f ή κάποιο άλλο συμβολισμό, αλλά enum αισθάνεται σαν μια καλή επιλογή εκεί. Για να είμαι σαφής, το φύλο θα μπορούσε απλά να είναι μια varchar, και θα μπορούσαμε ακριβώς όλα συμφωνούν ως καλοί άνθρωποι, να θέσει πάντα τις ίδιες αξίες εκεί. Αρσενικό ή θηλυκό ή οτιδήποτε. Αλλά το πρόβλημα, στη συνέχεια, είναι ότι θα μπορούσαμε να κάνει ένα λάθος, όπως προτείνεται [δεν ακούγεται] νωρίτερα σε ένα διαφορετικό πλαίσιο. Αν κάνετε κάποιο λάθος, θα μπορούσαμε να πάρουμε λανθασμένες τιμές στη βάση δεδομένων μας. Έτσι, τι είναι καλό για τις βάσεις δεδομένων όπως Oracle και MySQL και άλλους, είναι ότι έχετε αυτό το τελευταίο στρώμα της άμυνας, όπου διαχειριστής DBA, η βάση δεδομένων σας, όποιος το σχεδιασμό αυτού του πίνακα όπως εμείς είναι προφορικά, θα μπορούσε να θέσει στη θέση του ένα enum ότι προστατεύει από ότι με τον καθορισμό αρσενικό, θηλυκό, και έτσι κανείς δεν αλλιώς δεν προγραμματιστής μπορεί κατά λάθος εισάγετε οποιαδήποτε άλλη τιμή. Έτσι, αυτό θα ήταν ένα καλό πράγμα. Αυτό είναι ένα χαρακτηριστικό. Έτσι, ένα αναγνωριστικό, υποθέτοντας ένα αριθμητικό αναγνωριστικό αυτό, κατά πάσα πιθανότητα θα πρέπει να είναι ένας θετικός ακέραιος. Και μερικές φορές έχουν ευκαιρία να συζητήσουν το μήκος. Δεν θα ήταν τυπικά καθορίσετε έναν αριθμό εδώ, θα πρέπει να καθορίσετε αντί αυτό είναι ένα int, ή μια μεγάλη int, δεδομένου ότι είναι συνήθως ονομάζεται. Αλλά συνήθως, ένας ακέραιος Θα ήταν, ας πούμε, 4 bytes. Και αν είναι 4 bytes, αυτό είναι το πόσα bits; Κοινό: [δεν ακούγεται] DAVID Malan: 32 bits. Έτσι, πόσοι χρήστες μπορούν να έχουμε στο βάση δεδομένων μας, αν όλα έχουν ένα αναγνωριστικό και αυτό το αναγνωριστικό πρέπει να είναι μοναδικό; 32 bits σημαίνει ότι έχουμε μοτίβα από ένα, δύο, τρία, τέσσερα, five-- Πώς, λοιπόν, πολλά διαφορετικά σχέδια από μηδενικά και αυτά που μπορεί να έχετε, αν υπάρχουν 32; Αυτό είναι το ίδιο πράγμα ρωτώντας τι είναι δύο στο 32; Είναι ένα μεγάλο αριθμό ότι Δεν μπορώ να πάρει δεξιά, αλλά ξέρω ότι είναι περίπου 4 δισ. Έτσι, αυτό σημαίνει πίνακα της βάσης δεδομένων σας μπορεί να έχουν τέσσερα δισεκατομμύρια χρήστες και αυτό είναι όλο. Έτσι, αυτό είναι μια ενδιαφέρουσα επίπτωση του σχεδιασμού. Ένα αξιοπρεπές αριθμός των εταιρειών αποφάσισαν, ίσως όχι τόσο πολύ για το τραπέζι τους χρήστες τους, επειδή έχουν 4000000000 χρήστες είναι ένα σπάνιο πρόβλημα. Αυτό είναι ένα είδος Facebook στιλ πρόβλημα, δεν είναι ένα τυπικό πρόβλημα της εταιρείας. Αλλά ίσως, αν έχετε αρχεία καταγραφής συναλλαγών ή κάποιο είδος των δεδομένων που συνεχώς παίρνει γραπτή στη βάση δεδομένων σας ότι απολύτως θα μπορούσε να έχει δισεκατομμύρια και τα δισεκατομμύρια των γραμμών, και μπορείτε να χρησιμοποιήσετε έναν ακέραιο για αυτό, τι πρόκειται να συμβεί το συντομότερο μπορείτε να πάρετε με τη σειρά τον αριθμό 4000000000 και στη συνέχεια να προσπαθήσετε να τοποθετήσετε το 4000000000ων και 1, να το πω έτσι; Είμαι απλούστευση των αριθμών λίγο. Μπορείτε να κόψετε πίσω, εννοείς Πρέπει να το χειριστεί με κάποιον τρόπο. Και τι ένας υπολογιστής θα συνήθως κάνουν, σκέφτομαι ακόμη και από σήμερα το πρωί, εάν έχετε μια τιμή 4-bit όπως 1, 1, 1, 1, η οποία, απλά για να δέσει το πρωί μαζί με το απόγευμα, τι αυτός ο αριθμός αντιπροσωπεύει το δυαδικό; Εντάξει, θα καταστήσει ευκολότερη. Τι κάνει αυτόν τον αριθμό αντιπροσωπεύουν σε δυαδική; Εντάξει, θα καταστήσει ευκολότερη, τι κάνει αυτό αντιπροσωπεύει το δυαδικό; Κοινό: Τρία. DAVID Malan: Τρεις, επειδή έχουμε αυτά column-- [ΓΈΛΙΟ] Μπά! Είχαμε τη στήλη αυτά και η στήλη δυάρια. Έτσι ας υποθέσουμε ότι, πράγματι, μας [? infield?] δεν ήταν 32 bits, αλλά ήταν δύο κομμάτια, μπορούμε μετράνε από τον αριθμό 0, 1, 2, 3 του χρήστη, και στη συνέχεια να είμαστε το είδος της πίσω στο χρήστη 00 και πάλι. Έτσι, αυτό είναι ό, τι συμβαίνει συνήθως. Αν έχετε ακούσει ποτέ το expression-- κατά πάσα πιθανότητα δεν έχουν, αλλά αν have-- υπερχείλιση ακεραίου, όπου μπορείτε κρατήσει το κτύπημα όλα τα κομμάτια σας να είναι οι μεγαλύτερες δυνατές τιμές, και στη συνέχεια να είστε έξω από bits, τι τυπικά θα συμβεί; Γιατί μπορώ να πω 00; Λοιπόν, αυτό είναι τρεις. Πώς μπορώ να αντιπροσωπεύουν το 4; Πώς μπορώ να εκπροσωπώ την για τον αριθμό 4 σε δυαδική; Κοινό: [δεν ακούγεται] DAVID Malan: ένα-- ναι, δεν λένε 100 per se, επειδή έχει το λάθος χροιά, αλλά 1-0-0. Έτσι ο αριθμός 1-0-0 είναι πράγματι σωστή, αλλά αν έχετε μόνο δύο κομμάτια, τι έχετε κάνει πραγματικά; Έχετε μεταφερθεί σε 00. Και πράγματι, αυτό είναι τι θα συμβεί. Στην πραγματικότητα, μπορείτε να σκεφτείτε γι 'αυτό είναι περισσότερο γνωστή. Αν θυμάστε, ό, τι, Πριν από 16 χρόνια, ο κόσμος έπρεπε να λήξει τη στιγμή το πρόβλημα Y2K συνέβη. Γιατί έγινε αυτό; Καλά οι περισσότεροι υπολογιστές, για λογικές αποφάσεις, είχαν την αποθήκευση αριθμών, όπως η το έτος 1975 ή το έτος 1999 χρησιμοποιώντας μόνο δύο ψηφία στη μνήμη του υπολογιστή. Έτσι, φυσικά, ό, τι συμβαίνει όταν φτάσετε στο έτος 2000, μπορείτε να πάτε σε αυτό, ή μάλλον, ναι. Έτσι, μπορείτε να πάτε με το έτος 2000, αλλά αν χρησιμοποιείτε μόνο δύο ψηφία φαίνεται όπως το έτος 00 και έτσι έχετε μεταφερθεί. Και αυτός είναι ο λόγος για πολλά συστήματα χρειάζεται να ενημερωθεί κατά το χρόνο. Έτσι, με ότι είπε, εταιρείες όπως η Facebook τρέξει μέχρι ενάντια σε αυτό. Έτσι, ο μόνος τρόπος για να χειριστεί το κατάσταση, ειλικρινά, είναι να το προβλέψουμε. Ή το καθαρότερο τρόπο να χειριστεί αυτή την κατάσταση είναι να προβλέψει έτσι ώστε να μην Πρέπει να κάνετε αλλαγές αργότερα. Έτσι, αντί των 8 bytes, ξέρετε τι; Πάω να είναι προνοητική εδώ, ακόμα κι αν είναι λίγο αισιόδοξος ότι θα πάμε να έχουν 4000000000 και 1 χρήστες στην ιστοσελίδα μας. Αλλά ας χρησιμοποιήσει 8 bytes, ή 64 bits, που γενικά θα είναι ονομάζεται ένα μεγάλο ακέραιο, πολύ τεχνική. Και αυτό ακριβώς σημαίνει ότι μπορείτε να έχετε ακόμα περισσότερα ψηφία στον αριθμό σας. Αλλά αυτό είναι ένα σημαντικό απόφαση του σχεδιασμού, γιατί αν επιλέξετε έναν αριθμό που έχει πολύ λίγα κομμάτια της εκφραστικότητας θα μπορούσε πραγματικά να δημιουργήσει ένα σφάλμα στο λογισμικό σας. Εντάξει, οπότε ας τυλίγουμε με e-mail και ταχυδρομική διεύθυνση. Έτσι, το ηλεκτρονικό ταχυδρομείο, πόσο καιρό θα πρέπει να μια διεύθυνση ηλεκτρονικού ταχυδρομείου είναι; 50. Δεν έχω πραγματικά καμία ιδέα, αλλά είναι μάλλον κάτι τέτοιο, γιατί αλλιώς κανείς δεν πρόκειται να μπορείτε να γράψετε εάν παίρνει πάρα πολύ καιρό, έτσι 50, ας πάει με αυτό για τώρα. Ταχυδρομική διεύθυνση, πόσο καιρό θα πρέπει να είναι; Κοινό: [δεν ακούγεται] DAVID Malan: Δεν είναι μόνο ένα ταχυδρομικό κώδικα, όμως. Ταχυδρομική διεύθυνση, άκουσα. Έτσι, αυτό είναι σαν 1 Πλατεία Brattle, κόμμα, Cambridge Mass., κόμμα, 02138. Και στην πραγματικότητα, επιτρέψτε μου να τραβήξει μέχρι ένα μικρό φύλλο εργασίας εδώ. Αυτό αισθάνεται σαν να είναι μια χαμένη ευκαιρία. Αν έχουμε 1 Πλατεία Brattle, κόμμα, Cambridge MA 02138, Νιώθω σαν να μπορούμε να κάνουμε κάτι καλύτερο από ό, τι ακριβώς ταχυδρομική διεύθυνση. Γιατί δεν μπορούμε να εκραγεί αυτό το λίγο; Τι θέλω να πω με; Τι πρέπει να έχουμε, αντί να έχει για τις γραμμές μας εδώ, ίσως; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, έτσι ας αποκαλούν street_number, και ένα χαρακτήρα υπογράμμισης είναι απλά ένα κοινό τρόπος με τι μοιάζει με ένα χώρο, αλλά δεν είναι, στην πραγματικότητα. Street, και στη συνέχεια city-- συγγνώμη; Κοινό: [δεν ακούγεται] DAVID Malan: Θα μπορούσαμε να το κάνουμε αυτό. Μία γραμμή, γραμμή δύο. Γιατί δεν θα κρατήσει απλό για τώρα, αλλά αυτό είναι απολύτως μια αποδεκτή απόφαση. Και τότε κατάσταση, και τότε ας είναι λίγο ΗΠΑ-centric για τώρα και μόλις κάνει ταχυδρομικό κώδικα, μόνο και μόνο επειδή αυτό θα οδηγήσει σε μια ενδιαφέρουσα λάθος ή πρόβλημα εδώ. Έτσι, ας υποθέσουμε ότι τώρα είναι η διεύθυνση μας. Είναι λίγο πιο ενοχλητικό ότι έχουμε όλα αυτά τα περισσότερα πεδία, αλλά τώρα μπορούμε να επισημάνετε τα πράγματα λίγο καλύτερα. Έτσι τώρα στο δρόμο αριθμό πιθανώς δεν θα πρέπει να είναι μια χαρα, θα πρέπει να είναι; Τι θα πρέπει να είναι; Κοινό: [δεν ακούγεται] DAVID Malan: Ίσως, ένας αριθμός σαν ένα ακέραιο και πάλι; Ένα μεγάλο ακέραιο; Πιθανότατα δεν ζουν σε 4 δισεκατομμύρια Main Street ή κάτι τρελό έτσι. Έτσι ακέραιος είναι πιθανόν ωραία, αλλά έχει κανείς έζησε ποτέ σε μια διεύθυνση όπως Πλατεία 1Α Brattle, ή 1 και 1/2; υπάρχουν αυτά τα πράγματα, δυστυχώς, ακόμη και αν δεν έχετε ζήσει εκεί, υπάρχουν αυτές οι ανωμαλίες όπως διαμέρισμα 1Α, 1Β, 1C. Έτσι, ξέρετε τι, πιθανότατα δεν θα πρέπει να πάει με ακέραιο, Αλλιώς θα πάμε να χάσει κάποιες πωλήσεις. πεδίο Char, ίσως; Δεν ξέρω πόσο καιρό. Είναι πιθανόν να μην πρόκειται να είναι τόσο πολύ, ώστε το 10 ή κάτι τέτοιο. Κανείς δεν πρόκειται να γράψω μεγαλύτερο αριθμό, ίσως. Αλλά και πάλι, θα πρέπει μάλλον να δίνουν περισσότερη σκέψη σε αυτό. Ίσως google, κάνετε κάποια έρευνα, αλλά θα πάμε με κότσια μας για τώρα. Δρόμοι, char, 50, δεν ξέρω. Σε κάποιο σημείο, κανείς δεν πρόκειται να το γράψει σε ένα φάκελο, πάρα πολύ, έτσι δεν υπάρχει πιθανώς μερικοί άνω φράγματα εκεί. Πόλη, το ίδιο, σίγουρα, έτσι char 50. Μέλος, μπορεί να είναι ΗΠΑ-centric για τώρα. Έτσι θα μπορούσε να είναι μια λίστα, έτσι ώστε το είδος μια κλήση κρίσης, κατάσταση. Θα μπορούσε να είναι σαν δύο χαρακτήρες. Έτσι, στην πραγματικότητα, ίσως, μου έλεγε char. Θέλω να πω ίσως varchar, απλά για κάποια αποτελεσματικότητα, αλλά θα επανέλθω σε ότι η απόφαση σε μια στιγμή. Θα μπορούσε να είναι μια χαρα μήκους 2 για τις κρατικές. Αν στις ΗΠΑ έχουν, όπως ΜΑ, Μασαχουσέτη, NY, Νέα Υόρκη, NJ, New Jersey, και ούτω καθεξής. Έτσι, θα μπορούσε να καθοριστεί σε αυτό. DC για την Ουάσιγκτον DC. Αλλά νομίζω, Olivier, σας πρότεινε μια άλλη προσέγγιση. Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, έτσι είναι μια λίγο ενοχλητικό να πληκτρολογήσετε, αλλά ένα enum θα μπορούσε να έχει περισσότερο νόημα, επειδή αυτό τον τρόπο, τουλάχιστον στις ΗΠΑ, θα μπορούσε να απαριθμήσει, εάν κουραστική, αλλά μπορείτε να το κάνετε μόνο μία φορά στη βάση δεδομένων σας και ποτέ ξανά πρέπει να σκεφτούμε αυτό, όλοι οι 50 κωδικοί δύο χαρακτήρων. Έτσι μου αρέσει enum. Ας κολλήσει με ότι υπάρχει, διότι το είδος της επιβάλλει μεγαλύτερη αυστηρότητα. Και τότε ταχυδρομικό κώδικα; Νομίζω ότι ο Andrew είχε μια σκέψη σε αυτό Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, πέντε ή εννέα. Ας κρατήσουμε μόνο απλό. Απλά κάνει πέντε για τώρα. Αλλά ίσως θα μπορούσα απλά κάνει έναν ακέραιο αριθμό, σωστά; Θα μπορούσα, αλλά ξέρετε τι έκανα αυτό το λάθος μια φορά, κατά κάποιο τρόπο. Πριν από χρόνια, ήμουν μετάβαση από Microsoft Outlook στο Gmail, και το Outlook έχει έναν τρόπο να εξάγουν όλες τις επαφές σας ως αρχείο Excel, ένα αρχείο CSV, κόμμα χωρίζονται αρχείο τιμές. Και έκανα το λάθος, εγώ σκέφτονται, διπλής αυτό κλικ, αφού την έχω κατεβάσει την εξαγωγή, σε βεβαιωθείτε ότι φαινόταν όπως περίμενα. Πρέπει να έχω χτυπήσει σώσει ή να αφήσετε αυτόματη αποθήκευση λάκτισμα ή κάτι τέτοιο. Διότι όταν εγώ τότε εισάγονται ότι στο Gmail, που όλοι εργάστηκαν. Αλλά για χρόνια, μέχρι σήμερα, και Το έκανα αυτό πέντε, πριν από 10 χρόνια, Είμαι ακόμα να βρουν φίλους που έχουν διευθύνσεις που μοιάζει με αυτό. Γιατί; Κοινό: [δεν ακούγεται] DAVID Malan: Χρειάστηκαν το 0, καλά, μάλλον, πήρε ολόκληρο το ταχυδρομικό κώδικα ως ένας αριθμός, και ως εκ τούτου είναι ένας κορυφαίος 0 που σημαίνει δεν έχει κανένα νόημα. Και έτσι 2138 φαίνεται να είναι ταχυδρομικό κώδικα μου. Και αυτό είναι, ειλικρινά, ένα ενοχλητικό Excel χαρακτηριστικό το οποίο νομίζω ότι από προεπιλογή, ακόμη και αν είναι γραφτό να απλά να είναι κείμενο, το Microsoft Excel αποφασίζει, επιτρέψτε μου να είναι χρήσιμες, Ω, βλέπω μόνο τους αριθμούς. Ας τα αντιμετωπίσουμε ως αριθμούς. Και περικόπτει τα αρχικά μηδενικά. Ορκίζομαι στο Θεό, κάθε ζευγάρι μήνες να βρω μια διεύθυνση, και από ένα είδος της ΙΨΔ, πάω πίσω και να προσθέσετε το 0, ακόμα κι αν ποτέ δεν στείλει τους ανθρώπους γράμματα ή τίποτα. Αλλά είμαι ακόμα να βρουν απομεινάρια αυτού. Έτσι, αυτό είναι να πω, είναι αυτό μια καλή ιδέα; Εντάξει, όχι, γιατί ο καθένας σε Μασαχουσέτη, στον τομέα αυτό, πρόκειται να έχουν o τους οδηγεί. Έτσι, ας πάμε με παρόμοια char, κατά πάσα πιθανότητα, πέντε. Και εδώ, συνειδητοποιήσουμε εμείς θα μπορούσε να χρησιμοποιήσει ένα enum και εμείς θα μπορούσε να απαριθμήσει 10.000 δυνατόν ταχυδρομικούς κώδικες, αλλά ότι αισθάνεται σαν να είναι πιθανώς διασχίζοντας μια γραμμή, όπως, οφέλη. Αν έχετε να εισόδου που πολλά δεδομένα στη βάση δεδομένων σας για την προστασία από κάτι. Έτσι char συνειδητοποίησε μπορείτε να πληκτρολογήσετε στην Η-Ε-Ι-L-O, όπως τον ταχυδρομικό σας κώδικα, η οποία δεν είναι, προφανώς, αριθμητική. Έτσι, δεν υπάρχει κανένας τρόπος, με Ένα τυπικό βάση δεδομένων, για να καθορίσετε μόνο αριθμητικά και μόνο πέντε χαρακτήρες, έτσι θα πάμε να έχουν να το κάνουμε αυτό στον κώδικα. Εμείς πάμε για να το κάνουμε αυτό σε PHP ή Java ή οτιδήποτε γλώσσα είμαστε χρησιμοποιώντας στο διακομιστή για να επιβάλουν αυτό το είδος του περιορισμού. Whoo! Εντάξει, έτσι οποιεσδήποτε ερωτήσεις ακριβώς ακόμα; Ας κάνουμε μια άλλη απόφαση του σχεδιασμού. Αποδεικνύεται ότι επίσης να πάρετε για να επιλέξετε, κατά το σχεδιασμό μιας βάσης δεδομένων SQL, ή τυπικό σχεσιακή database-- όπου και πάλι, σχεσιακή μόνο σημαίνει σειρές και στήλες, αυτό είναι το πώς μπορείτε να οργανώσετε data-- σας και να συνειδητοποιήσουμε ότι αυτό σημαίνει, Έχω παραπλανητική ότι, είμαι drawing-- αυτό Είναι αυτό που ονομάζεται το σχήμα για έναν πίνακα βάσης δεδομένων. Αυτό είναι σαν το προδιαγραφές για το table-- αλλά όταν έρχεται η ώρα πραγματικά να αποθηκεύουν τα δεδομένα, και εμείς θα κάνουμε αυτό ακριβώς το παράδειγμα εδώ. Πάω να ανοίξει το Excel, επειδή Excel θα μου δώσει γραμμές και στήλες. Και αυτό είναι ακριβώς ό, τι Oracle και MySQL και άλλα εργαλεία θα μου δώσει. Έτσι, είμαι απλώς πρόκειται να χρησιμοποιήσετε ότι για χάρη της συζήτησης του. Επιτρέψτε μου να πάει μπροστά και να ανοίξει ένα αντιπροσωπευτικό έγγραφο εδώ, μεγέθυνση σε λίγο. Έτσι, για παράδειγμα, κεφαλίδες μας είναι τώρα το όνομα, το επώνυμο, το φύλο, την ταυτότητα, ηλεκτρονικού ταχυδρομείου, αριθμός, δρόμος, κραυγών. Οδός, πόλη, πολιτεία, απλά για να ταιριάζει στην οθόνη. Έτσι τι αυτό σημαίνει είναι ότι όταν μια χρήστης καταχωρεί το πρώτο για την ιστοσελίδα μου, πρόκειται να είναι κάτι σαν David, Malan, m, ας πούμε 1, malan@harvard.edu, τον αριθμό του δρόμου θα είναι σαν 1 Πλατεία Brattle, Cambridge, MA, 02138, και στη συνέχεια ούτω καθεξής. Έτσι, όταν λέω ότι μια σχεσιακή βάση δεδομένων ή βάσης δεδομένων SQL είναι γραμμές και στήλες, Εννοώ αυτό. Ότι τα πραγματικά δεδομένα αποθηκεύονται σε γραμμές και στήλες. Αυτό είναι απλά μια σύμπτωση, ότι μιλούσαμε, και ήμουν ακριβώς την κατάρτιση έξω σε σειρές και στήλες. Αυτό είναι ακριβώς το σχήμα, ο πρωταρχικός ορισμός. Έτσι, από αυτά τα πεδία εδώ, ή ισοδύναμα, εκεί, τα οποία είναι τα πεδία που νομίζετε Είμαι πιθανό να ψάξετε για αν είμαι ένας χρήστης ή αν είμαι ο διαχειριστής της βάσης δεδομένων; Όπως, τι πεδία είμαι στην πραγματικότητα πρόκειται να ψάξετε για; Κοινό: [δεν ακούγεται] DAVID Malan: Το όνομα, ναι έτσι Μου αρέσει το γεγονός ερμήνευα-- ναι, ηλεκτρονικού ταχυδρομείου μπορεί να είναι αρκετά κοινό. Μας συγχωρείτε, είπατε όνομα. Έτσι maybe-- και πάλι, είμαστε είδος μιλάμε αφηρημένα. Δεν ξέρω γιατί θέλετε να ψάχνουν για ένα όνομα, αλλά ότι αισθάνεται λογικό αν ψάχνετε για έναν χρήστη. Ίσως αναφέρει, σίγουρα, ID. Και είναι ένα ολισθηρό κλίση, γιατί θα μπορούσα εφευρίσκω ένα σενάριο όπου ίσως το αφεντικό μου μου ζήτησε, πόσοι άνδρες έχουμε στην ιστοσελίδα μας; Πόσες γυναίκες έχουμε στην ιστοσελίδα μας; Και έτσι σε εκείνο το σημείο, ίσως να θέλετε να ψάξει στο πεδίο των φύλων, πάρα πολύ, και τίποτα άλλο. Έτσι, υπάρχει ένα trade-off εδώ. Και πάλι, δεν υπάρχει σωστή απάντηση, αλλά υπάρχουν είναι ένα χαρακτηριστικό στις περισσότερες βάσεις δεδομένων SQL γνωστό ως ευρετηρίαση, σύμφωνα με την οποία εσείς, ο σχεδιαστής, ο διαχειριστής της βάσης δεδομένων, πάρετε για να αποφασίσει εκ των προτέρων η οποία τα πεδία της βάσης δεδομένων θα πρέπει να βελτιστοποιήσει για τις αναζητήσεις στο. Θα μπορούσατε πολύ αφελώς λένε, τη βελτιστοποίηση αυτό, τη βελτιστοποίηση ότι, τη βελτιστοποίηση αυτό, βελτιστοποιήσει ότι και αυτό, και η βάση δεδομένων θα κάνετε κάποια μαγικό πράγμα κάτω από το κουκούλα, και να κάνουμε κάτι με τέτοιο τρόπο ότι την επόμενη φορά που θα αναζητήσετε σε οποιοδήποτε από αυτά τα πεδία, θα, στην πραγματικότητα, είναι ταχύτερη. Αυτό είναι δυνατόν. Το ίδιο δεν ακυρώνει. Αλλά πρέπει να υπάρχει μια τιμή που καταβάλλεται. Αν έχετε αφελώς, ή υπερ-ενθουσιασμό ας πούμε, ο δείκτης όλους αυτούς τους τομείς, να το πω έτσι, να τα κάνουμε όλα αποτελεσματικά με δυνατότητα αναζήτησης, Τι τιμή είστε πιθανώς να πληρώνουν; Κοινό: [δεν ακούγεται] DAVID Malan: Performance. Τι εννοείς? Λοιπόν απόδοση, τουλάχιστον στην πλαίσιο και είμαι συζητάμε, είναι καλύτερα τώρα. Αυτός είναι ο ορισμός της ευρετηρίασης. Θα κάνουν αναζητήσεις γρηγορότερα. Επομένως, ο χρόνος μειώνεται, να το πω έτσι. Κοινό: [δεν ακούγεται] DAVID Malan: Space. Έτσι και πάλι, αυτά είναι ένα κοινό εμπόριο. Μπορώ να επιταχύνει τις αναζητήσεις σας, αλλά είναι πρόκειται να σας κοστίσει περισσότερα bytes του χώρου. Γιατί; Λοιπόν, από προεπιλογή, αν έχουμε κανένα Αυτά τα κόκκινα αστέρια, κανένας από αυτούς τους δείκτες, όπως λέω, πώς μπορείτε να αναζητήσετε για ένα όνομα σε αυτή τη βάση δεδομένων; Ας επιστήσω μας προσοχή σε αυτό το παράδειγμα. Αν έχουμε Δαβίδ και Scully και Kareem και Arwa και άλλοι σε αυτές τις σειρές, για παράδειγμα. Έτσι, ας κάνουμε ακριβώς αυτό. Scully είναι εδώ, και στη συνέχεια, έχουμε Kareem, και Arwa, και όλοι οι άλλοι, αν δεν το κάνετε έχουν δείκτη ορίζεται, να το πω έτσι, το καλύτερο που μπορείτε να κάνετε είναι γραμμική αναζήτηση. Αν ψάχνετε για Arwa, δεν είμαστε πρόκειται να είναι σε θέση να άλμα προς τα δεξιά της γρήγορα. Εμείς πάμε για να ξεκινήσει κορυφή και να πάει σε όλη τη διαδρομή προς τα κάτω, δεν σε αντίθεση με την αρχική μας Mike Smith παράδειγμα. Αν, όμως, να πω, hey, βάση δεδομένων, δείκτη το πρώτο πεδίο όνομα, τότε πρόκειται να κάνει κάτι φανταχτερό και να υποστηρίξει κάτι σαν δυαδική αναζήτηση. Είναι πιθανόν να μην είναι δυαδική αναζήτηση per se. Βάσεις δεδομένων τείνουν να χρησιμοποιούν ένα άλλο δομή δεδομένων που ονομάζεται β-δέντρα, δεν πρέπει να συγχέεται με δυαδικά δέντρα, ότι ακριβώς κάνουν πιο γρήγορα να αναζητήσετε κάτι λογαριθμική στη φύση. Αλλά η τιμή που πληρώνετε για τη δημιουργία ότι χαρακτηριστικό, ότι η δομή των δεδομένων στη μνήμη, είναι πιο bytes. Έτσι, μπορεί να πάρει μερικά megabytes, μερικά gigabytes, ποιος ξέρει; Εξαρτάται από τα δεδομένα. Έτσι, σε κάποιο σημείο, θα πρέπει να αποφασίσει, είναι πιθανόν να μην είναι μια συνηθισμένη περίπτωση. Έτσι ποια είναι η πραγματική κοινή περιπτώσεις, αν πραγματικά έπρεπε να διαλέξω, τι θα μπορούσε να είναι το αγαπημένο σας τομέα; E-mail. Και μου αρέσει το email επειδή το email, θεωρητικά, θα πρέπει να είναι μοναδικό. Και έτσι συνήθως, όταν ξέρετε εκ των προτέρων ότι ένα από τα πεδία σας είναι ή θα είναι μοναδική, ότι τείνει να είναι ένα καλό πεδίο να ψάξει στο γιατί αυτόν τον τρόπο, όταν κάνετε αναζήτηση για κάτι, θα πάμε για να πάρει πίσω ένα ή μηδέν απαντήσεις και, στη συνέχεια, τελειώσατε. Δεν χρειάζεται να κρατήσετε ψάχνει για ακόμα άλλους. Και έτσι σε αυτή την περίπτωση εδώ, e-mail, εφ 'όσον δεν μπορείτε να καταχωρήσετε δύο φορές με την ίδια διεύθυνση ηλεκτρονικού ταχυδρομείου, είναι ένα καλό αποτέλεσμα. ID εξ ορισμού, στην κόσμο της επιστήμης των υπολογιστών, αν μιλάμε για ένα ID, που είχε καλύτερα να είναι μοναδικό. Αυτό είναι το είδος της χροιά της ταυτότητας ή αναγνωριστικό. Και το υπόλοιπο από αυτά μπορεί να είναι, ας τους αποκαλούν ωραίο να προνομιούχων, αλλά δεν είναι πραγματικά απαραίτητο. Και έτσι σε μια βάση δεδομένων, καθορίζετε ευρετήρια, αλλά μπορείτε να είστε ακόμα πιο ακριβείς. Μπορείτε να πείτε, hey, βάση δεδομένων, βεβαιωθείτε ότι κάθε ταυτότητα σε αυτόν τον πίνακα είναι μοναδική. Μην ακόμη και να αφήσουν έναν προγραμματιστή κατά λάθος θέσει σε δύο αντίτυπα email ή διπλές αριθμό ταυτότητας. Τόσο πολύ σαν enums μας προστατεύει Ομοίως, μπορείτε μπορεί να έχουν αυτές τις άμυνες χαμηλότερου επιπέδου. Και έτσι σχεδιασμό βάσεων δεδομένων, στην κάποια έννοια, είναι το είδος της διασκέδασης, γιατί το κάνετε αμυντικά. Μπορείτε είδος υποθέσουμε ότι εργάζεστε με φρικτό, φρικτό προγραμματιστές και θέλετε να βάλετε σε όσες άμυνες όπως μπορείτε να προστατεύσετε τα δεδομένα σας, αλλά ταυτόχρονα θέλετε να τους βοηθήσει να έχουν καλύτερη απόδοση επιλέγοντας το οποίο πεδία για να βελτιστοποιήσει για. Αλλά δεν μπορείτε να το κάνετε κατ 'ανάγκην ένα κενό, όπως έχουμε το είδος της είναι εδώ. Έχετε να γνωρίζουμε ποιες είναι αυτές οι κοινές περιπτώσεις είναι. Αν οι προγραμματιστές είναι εφαρμογή ένα βιβλίο διευθύνσεων, θα μπορούσε κάλλιστα να είναι σε θέση για να αναζητήσετε σχεδόν σε κάθε τομέα, μόνο από τη φύση της εφαρμογής. Έτσι ίσως ξοδεύετε ότι επιπλέον χώρο. Δεξιά, οποιεσδήποτε ερωτήσεις; Ναι. Κοινό: [δεν ακούγεται] DAVID Malan: Όχι. Κοινό: [δεν ακούγεται] DAVID Malan: OK. Κοινό: [δεν ακούγεται] DAVID Malan: Ω, έτσι ώστε να Μιλάμε με έναν τρόπο τώρα που είναι εντελώς γλώσσα αγνωστικιστής. Έτσι μιλάμε τώρα για το σχεσιακές βάσεις δεδομένων γενικότερα, ή SQL βάσεις δεδομένων γενικότερα. Κοινό: [δεν ακούγεται] DAVID Malan: Μια καλύτερη λέξη για να χρησιμοποιήσετε είναι, μπορεί να χρησιμοποιηθεί από οποιαδήποτε γλώσσα. Έτσι μπορώ να γράψω κώδικα JavaScript, C κώδικα, C ++ κώδικα, κώδικα Java, κωδικό Ruby, τα οποία μιλούν για μια βάση δεδομένων και να εκτελέσει ερωτήματα. Στην πραγματικότητα, αυτό δεν είναι ένα κακό segue σε ένα παράδειγμα ερωτήματος. Και πάλι, δεν πρόκειται να μπω σε Java ή C ++ ή οποιοδήποτε από αυτό πια, αλλά σε SQL, η γλώσσα με την οποία κρατώ Αναφέρομαι, Structured Query Language, Αυτό από μόνο του είναι μια γλώσσα προγραμματισμού, αλλά είναι προοριζόταν να χρησιμοποιηθεί για, δεν έκπληξη, δομημένη ερωτήματα ερώτημα. Με αυτό εννοώ αυτό. Ο τρόπος που θα επιλέξετε δεδομένων από μια βάση δεδομένων MySQL είναι κυριολεκτικά πληκτρολογήσετε στο πρόγραμμά σας κάτι σαν επιλέξτε αστέρι από τους χρήστες. Υποθέτω ότι αυτό το τραπέζι, εφεξής καλείται χρήστες. Θα μπορούσα να το ονομάσουμε οτιδήποτε θέλουμε, αλλά αυτό το είδος της νόημα. Και έτσι Select είναι μια πολύ κοινή ρήμα, αν θα σε SQL, κάνει ότι κυριολεκτικά αυτό. Τι νομίζετε αστέρων σημαίνει σε αυτό το πλαίσιο; Κοινό: [δεν ακούγεται] DAVID Malan: Λυπάμαι; Κοινό: [δεν ακούγεται] DAVID Malan: Δεν απαιτείται, είναι πιο περιεκτικό από αυτό, πραγματικά. Είναι η άγρια ​​κάρτα χαρακτήρα. Αστέρι σημαίνει τίποτα σχεδόν πάντα, έτσι αυτό σημαίνει, στην περίπτωση αυτή, επιλέξετε τα πάντα, από τη βάση δεδομένων. Έτσι, όταν το λέω αυτό, εννοώ δώσε μου πίσω κάθε στήλη από το τραπέζι μου που ονομάζεται χρήστες. Έτσι μου δώσει ένα σύνολο αποτελεσμάτων, όπως λέγεται. Με άλλα λόγια, να μου δώσει ένα αντίγραφο του υπολογιστικών φύλλων, είναι ό, τι έχω να σε. Αλλά αν είπα επιλέξτε αστέρι από τους χρήστες όπου ID ισούται με 1, πόσο μεγάλο θα πρέπει να σύνολο των αποτελεσμάτων μου είναι τότε; Ή ισοδύναμα, πόσες γραμμές θα πρέπει να Θα πρέπει να παραδοθεί πίσω από τη βάση δεδομένων; Πιθανώς μόνο ένα, αν έχω πράγματι αντιμετωπίζονται ID ως ένα μοναδικό αναγνωριστικό, και αν ο David έχει αυτό το μοναδικό αναγνωριστικό, Ι θα πρέπει να πάρει πίσω ένα και μόνο μία σειρά που περιέχει όλες τις πληροφορίες του Δαβίδ. Αν είπα αυτό όταν ID ισούται με 99, θα πάρει πίσω, Στο πλαίσιο αυτό, μηδέν σειρές, τουλάχιστον προς το παρόν. Ωστόσο, αν εγώ δεν ενδιαφέρονται πραγματικά για όλες αυτές τις πληροφορίες, Θα μπορούσα να πω, όπου ζει ο Δαβίδ; Επιλέξτε ταχυδρομικό κώδικα από Οι χρήστες όπου ID είναι 1. Αυτό θα επιλέξει για μένα μόνο φερμουάρ του Δαβίδ κώδικα και όχι το σύνολο της εν λόγω σειράς. Γιατί μπορεί να το κάνετε αυτό, αντί της το ερώτημα αστέρων, η άγρια ​​κάρτα; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, μπορώ να το μόνο που χρειάζεται. Έτσι, οι επιδόσεις είναι και πάλι η απάντηση εδώ. Γιατί να ζητήσει περισσότερα πληροφορίες από ό, τι χρειάζεστε, γιατί ακόμα και αν είναι εντάξει μαζί, μπορείτε ακόμα να αντιγράψετε αυτά τα δεδομένα, όπως φαίνεται, από τη βάση δεδομένων στο πρόγραμμά σας με κάποιο τρόπο, και αυτό είναι μόνο ανόητη, αν μόνο που χρειάζεται είναι πέντε από αυτές τις θέσεις, όχι το σύνολο της σειράς. Λοιπόν, πώς μπορώ να εισάγετε ένα χρήστη; Ας υποθέσουμε ότι ένας χρήστης έχει μόλις εγγραφεί για πρώτη φορά. Η σύνταξη θα δούμε συνήθως σαν αυτό. Τοποθετήστε σε χρήστες, και τότε θα λέγαμε αξίες, και στη συνέχεια θα λέγαμε τιμές όπως, ας πούμε, Lauren Scully, videographer μας εδώ. Και το επόμενο πεδίο είναι το φύλο. Γι 'αυτό και θα πω απόσπασμα, unquote "F", τότε έχουμε ένα αναγνωριστικό και Πάω να say-- ας προσποιούνται ότι δεν είναι πραγματικά εδώ, έτσι θα rewind στην ιστορία. Έτσι 2 θα είναι το ID της. Και τότε το επόμενο πεδίο εδώ είναι το email της. Γι 'αυτό πρόκειται να είναι όπως Lauren Scully και ούτω καθεξής, και εμείς θα dot απλά dot dot μακριά από εδώ. Τώρα θα πάρει λίγο κουραστική, αλλά το ερώτημα ένθετο Θα δούμε τελικά έτσι. Αν θέλω να απαλλαγούμε από Scully, uh-OH, ας διαγράφουν της, διαγράφει το λογαριασμό της, διαγραφή από τους χρήστες, όπου ID ισούται με 2, θα απαλλαγούμε από Scully. Ή μπορώ να πω ορίσετε τους χρήστες ενημέρωση, ας πούμε, τι θα μπορούσαμε να αλλάξουμε; Ας υποθέσουμε ότι κινείται. Σετ φερμουάρ ισούται 021-- nope, ότι η τρέχουσα φερμουάρ της. 90210. Το μόνο άλλο ταχυδρομικό κώδικα Ξέρω στον κόσμο. Έτσι ώστε να αλλάξει φερμουάρ της code-- πραγματικότητα, ότι δεν θα αλλάξει τον ταχυδρομικό κώδικα της. Τι έκανα ακριβώς κάνει; Ακόμη και αν η σύνταξη είναι μάλλον νέα. Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, μετακόμισα σε όλους στο Μπέβερλι Χιλς, Καλιφόρνια. Γι 'αυτό και θα πρέπει στην πραγματικότητα δηλαδή όπου ID ισούται με 2. Και ούτω καθεξής. Έτσι SQL είναι όλα σχετικά με αυτά είδη οδηγίες. Επιλέξτε, εισάγετε, διαγραφή, ενημέρωση, με αυτά τα κατηγορήματα στο τέλος Οι ρήτρες αυτές όπου, να το πω έτσι. Και υπάρχουν πολλά περισσότερα που μπορείτε κάνουμε, αλλά πραγματικά ακριβώς βράζει κάτω απλά, αν arcanely, εκφράζοντας τι θέλετε η βάση δεδομένων να κάνουμε. Και τότε η βάση δεδομένων Θα καταλάβω, όταν εισάγετε Lauren Scully σε η βάση δεδομένων, όπου για να την βάλει στη μνήμη έτσι ώστε να μπορούμε να πάρουμε πολύ γρήγορα της με βάση τη διεύθυνση ηλεκτρονικού ταχυδρομείου της ή με βάση τον αριθμό ταυτότητας ή τα παρόμοια. Ναι, Νταν. Κοινό: [δεν ακούγεται] DAVID Malan: Πραγματικά καλή ερώτηση. Θα αυτά τα σενάρια να αλλάξει από Microsoft Access με την Oracle σε MySQL σε PostgreSQL; Η σύντομη απάντηση είναι ότι εξαρτάται. Θεωρητικά, υπάρχει ένα πολύ σημαντική κοινό υποσύνολο της SQL τον οποίο μοιράζονται σε όλες τις από αυτές τις εφαρμογές. Ωστόσο, διάφοροι κατασκευαστές έχουν προστεθεί χαρακτηριστικά στις βάσεις δεδομένων τους για να κάνουν ορισμένα πράγματα πέρα από το πεδίο εφαρμογής αυτών των χαρακτηριστικών, ότι θα μπορούσε, στην πραγματικότητα, να σπάσει. Έτσι ο τρόπος προγραμματιστές αντιστάθμιση έναντι αυτού, είναι ότι, αντί να γράφει τις πρώτες SQL κώδικα, όπως γράφω εδώ, που αντί να χρησιμοποιούν μια βιβλιοθήκη, μια κοινή βιβλιοθήκη που η ίδια Είναι το είδος του υψηλότερου επιπέδου και αποσπάσματα μακριά ποιο προϊόν που χρησιμοποιείτε. Και αυτό σας δίνει λειτουργίες και οι διαδικασίες για να καλέσετε, έτσι ώστε να μην στην πραγματικότητα γράφουν πρώτες SQL. Θεωρητικά, λοιπόν, μπορείτε να αλλάξετε προϊόντων από την Oracle στη Microsoft ή το αντίστροφο ή τίποτα άλλο, και μπορείτε κυριολεκτικά αλλάξει τίποτα σχετικά με τον κωδικό σας. Η πραγματικότητα, όμως, είναι, μερικές φορές παραιτηθεί χαρακτηριστικά ως αποτέλεσμα. Μπορείτε να επιλέξετε ένα προϊόν, επειδή ότι έχεις αυτά τα χαρακτηριστικά προστιθέμενης αξίας, και είστε ακριβώς τώρα δεν τη χρήση τους συνειδητά. Και ανεκδοτολογικά, οι περισσότερες εταιρείες έχουν την τάση ποτέ να ξεφύγουμε από τη βάση δεδομένων τους. Έτσι, ενώ αυτό είναι ένα ωραίο να έχουν τη δυνατότητα, η πραγματικότητα είναι, αν είστε αναμόρφωση τη βάση δεδομένων σας, είστε ίσως κάνει τσαμπιά από άλλες αλλαγές ούτως ή άλλως, ότι δεν κάνει απαραιτήτως πρέπει να προβλέπουν ότι. Έτσι είναι αναμφισβήτητα πάνω-μηχανική του προβλήματος, αλλά αυτό εξαρτάται πραγματικά από το πλαίσιο. Αλλά στη θεωρία, SQL μοιράζεται σε αυτές διάφορα προϊόντα. Πραγματικά καλές ερωτήσεις. Ναι. Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, έτσι μπορείτε να σκεφτείτε μια βάση δεδομένων είναι απλά ένας διακομιστής, στο τέλος του η ημέρα, και στο εσωτερικό του εν λόγω εξυπηρετητή Είναι ένα σωρό πίνακες, σειρές και στήλες. Και όταν στέλνετε ένα ερώτημα, όπως αυτό από το πρόγραμμά σας, την ιστοσελίδα σας, γραμμένο σε Java, Ruby, Python, όποια και αν είναι, ο διακομιστής λαμβάνει την εντολή αυτή και την ερμηνεία σε κυριολεκτικά με τον ίδιο τρόπο συζητήσαμε νωρίτερα με ερμηνευμένες γλώσσες, και στη συνέχεια εκτελεί κάποια ενέργεια στο μηδέν ή περισσότερες σειρές στο μηδέν ή περισσότερους πίνακες. Κοινό: [δεν ακούγεται] DAVID Malan: Ακριβώς, ακριβώς. Έτσι, το ψευδοκώδικα για κάτι όπως αυτό θα μπορούσε να είναι αυτό. Στο αρχείο PHP σας ή να σας αρχείο Python ή αρχείο Java σας, θα έχετε ψευδοκώδικα κώδικα, ή Scratch-όπως τετράγωνα καθώς, εάν επισκέψεις χρήστη acme.com/register~~V για πρώτη φορά, στη συνέχεια, τοποθετήστε σε χρήστες και ούτω καθεξής. Και εμείς θα μεταφραστεί αυτό σε Πιο συγκεκριμένα κώδικα στο τέλος. Αλλά πραγματικά, έχουμε όλοι τα δομικά στοιχεία εδώ, ακόμα κι αν είμαστε παρακάμπτοντας μερικά από τα στάδια υλοποίησης. Επιτρέψτε μου λοιπόν να ψέγει με ό, τι θαυμάσια έκανε μόλις πριν από ένα χρόνο. Έχετε δημιουργήσει μια αρκετά πλήρης πίνακας για τους χρήστες. Βεβαίως, θα μπορούσαμε να εφαρμόσουν ότι σε λίγες διαφορετικούς τρόπους, αλλά έχετε στην πραγματικότητα μας οδήγησε κάτω από το path-- και εγώ λέτε, αλλά είναι μάλλον fault-- μου ένα αρκετά αναποτελεσματική εφαρμογή βάσης δεδομένων. Δεν είναι ομαλοποιηθεί. Και με ομαλοποιημένη εννοώ υπάρχει πρόκειται να είναι, πάροδο του χρόνου, μια σημαντική εφεδρεία, και ως εκ τούτου, η αναποτελεσματικότητα, ότι είναι σπατάλη χώρου. Με βάση μόνο αυτό που βλέπετε εδώ, μπορεί να προβλέπετε όπου αυτό το χάσιμο του χώρου πρόκειται να έρθει από την πάροδο του χρόνου, καθώς όλο και περισσότεροι χρήστες να εγγραφείτε για την ιστοσελίδα σας; Ποια στοιχεία θα μπορούσε να καταστεί περιττή; Κοινό: [δεν ακούγεται] DAVID Malan: Γιατί σημαίνει αυτό; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι. Και ας υποθέσουμε ότι για τους σκοπούς του σήμερα ότι αυτό είναι αλήθεια. Βγάζει, και έχουμε μάθει αυτό το δύσκολο τρόπο, ότι δεν είναι αλήθεια. Κάπως πολλές πόλεις έχουν, κατά κάποιο τρόπο, το ίδιο ταχυδρομικό κώδικα, που σπάει αυτό το υπέροχο διαίσθηση. Αλλά ας υποθέσουμε ότι είναι αλήθεια, γιατί είναι σχεδόν πάντα αλήθεια. Έτσι, ας υποθέσουμε ότι ένας ταχυδρομικός κώδικας είναι πάντα με την ίδια πόλη και το κράτος, το οποίο είναι το είδος της λογική υπόθεση, αλλά λανθασμένη, αποδεικνύεται. Αλλά μια λογική υπόθεση για τη σημερινή σκοπούς. Στη συνέχεια, ας υποθέσουμε ότι ζω στο Cambridge, ΜΑ, σύμφωνα με τον πίνακα του χρήστη, και ας υποθέσουμε ότι η Lauren Scully ζει στο Cambridge, MA, και ας υποθέσουμε ότι Kareem Ζει στο Cambridge, MA, και Arwa ζει στο Κέιμπριτζ, ΜΑ, όλοι μας στο 02138. Γιατί θυμόμαστε Cambridge, ΜΑ, 02138 και για τους τέσσερις από εμάς; Τι θα έπρεπε να αρκεί για να θυμόμαστε; Κοινό: [δεν ακούγεται] DAVID Malan: Ακριβώς το ταχυδρομικό κώδικα. Απλά ότι 02138 υπάρχει, γιατί Ξέρετε τι θα μπορούσαμε να κάνουμε; Θα μπορούσαμε να πάρουμε λίγο φανταχτερό εδώ και εδώ, ορίζουν έναν άλλο πίνακα όταν αυτό πρόκειται να είναι η το όνομα, αυτό πρόκειται να είναι ο τύπος, αυτό πρόκειται να είναι το το μήκος, και στο εξής, είμαι πρόκειται να καλέσει ο πίνακας αυτός πόλεις μου. Αυτό ονομάζεται, της Φυσικά, τραπέζι χρήστες μου. Και ναι, τι πρέπει να βάλω εδώ για το τραπέζι πόλεις μου, νομίζεις; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι. Έτσι, φερμουάρ και το κράτος και την πόλη. Και έτσι ο τύπος εδώ, εμείς θα πούμε αυτό πρόκειται να είναι μια χαρα 5 και πάλι, με την επιφύλαξη της συζήτησης του νωρίτερα. Αυτό θα είναι ένα enum, ίσως όπως πριν, και την πόλη θα είναι μια varchar 50. Και έτσι τώρα τι μπορώ να πάρω να διαγράψει από τον πίνακα να εξαλειφθεί αυτή η αναποτελεσματικότητα; Κοινό: [δεν ακούγεται] DAVID Malan: Νίκαια. Κράτος και την πόλη πάει μακριά, έτσι έχω τώρα εξαλειφθεί το ενδεχόμενο της αναποτελεσματικότητας για πλεονασμό θυμόμαστε, Cambridge, ΜΑ, Cambridge, ΜΑ, Cambridge, ΜΑ, Cambridge, MA, η οποία, ελπίζουμε δεν πρόκειται ποτέ να αλλάξει. Και ακόμα κι αν το κάνει, είναι minorly ενοχλητικό, τώρα ότι πρέπει να αλλάξει σε πολλαπλές σειρές, ενώ εδώ, θα μπορούσα απλά αλλάξτε το σε ένα μέρος. Τώρα ποιο είναι το trade-off, ίσως; Αυτό ήταν σούπερ βολικό. Είχε όλα τα δεδομένα μου όμορφα μαζί. Αλλά τι είναι σαφώς η περίπτωση τώρα; Κοινό: [δεν ακούγεται] DAVID Malan: Ακριβώς, και είμαι χαρούμε να σας χρησιμοποιείται η λέξη ενταχθούν, γιατί αυτό είναι στην πραγματικότητα η λέξη-κλειδί, στον κόσμο των σχεσιακών βάσεων δεδομένων σε SQL, είναι μια πραγματική λέξη που να πληκτρολογήσετε ή τουλάχιστον να μεταδώσει. Και στην πραγματικότητα, αυτό που τώρα πρέπει να κάνουμε για να επιλέξετε πλήρη στοιχεία του Δαβίδ είναι κάτι σαν επιλέξτε αστέρι από χρήστες, να συμμετάσχουν σε πόλεις, on-- και τώρα Πάω σε μόλις προχωρήσουμε σε μια δεύτερη γραμμή έτσι ώστε αυτή η fits-- users.zip ισούται cities.zip, όπου users.ID ισούται με 1. Λοιπόν τι συμβαίνει? Είναι άσχημο αναζητούν, αλλά μπορείτε να το είδος της διαβάσετε τα αριστερά προς τα δεξιά, από πάνω προς τα κάτω. Επιλέξτε αστέρων από τους χρήστες είναι η ίδια όπως και πριν, αλλά δεν είναι από τους χρήστες, per se. Είναι από τους χρήστες ενταχθούν πόλεις. Τι είμαι εγώ που ενώνει αυτά τα δύο πίνακες; Λοιπόν, προφανώς, η πίνακες χρήστες φερμουάρ τομέα, και η περίοδος αυτή είναι μόνο ειδική σύνταξη για να εκφράσει αυτή την ιδέα, και αυτό είναι οι πόλεις πίνακες φερμουάρ τομέα. Θέλω αυτά τα δύο να είναι ίση, αλλά θέλω να τελικά να επιλέξετε μόνον οι γραμμές όπου ID στον πίνακα των χρηστών ισούται με 1, το οποίο έτυχε να είναι δικό μου. Και ακριβώς για να είναι σαφής, μια προγραμματιστής, συνήθως όταν hardcode κάτι σαν τον αριθμό 1, διότι διαφορετικά η ιστοσελίδα μόνο υποστηρίζει ο David ή ο πρώτη χρήστη, αντ 'αυτού θα κάνω κάτι σαν ταυτότητα, όπου αυτό αντιπροσωπεύει ένα μεταβλητή, κάτι που μπορεί να αλλάξει με την πάροδο του χρόνου, παρόμοια στο πνεύμα με αυτό που είπα νωρίτερα με αυτά τα είδη των συμβόλων κράτησης θέσης. Αλλά για τώρα θα το hardcode εξίσου 1. Και ναι, τι σημαίνει αυτό; Λοιπόν, ένας ωραίος τρόπος για να απεικονίσει αυτό είναι ότι εάν αυτό το χέρι είναι ο πίνακας των χρηστών, και αυτό το χέρι είναι οι φερμουάρ τραπέζι, είμαστε είδος finding-- και οι άκρες των δακτύλων μου είναι zip εδώ, και οι άκρες των δακτύλων μου εδώ είναι zip, είστε το είδος του σύμπλεξη έτσι ώστε να μπορείτε να πάρετε πίσω την προκύπτουσα αρχικό πίνακα, με πραγματικά ενώνει οι δύο πίνακες σχετικά με την κοινή τομέα. Και αυτό δεν πρέπει να είναι φερμουάρ. Θα μπορούσε να είναι πιο τίποτ 'άλλο, αλλά zip είναι ωραίο, γιατί το ένα, είναι μικρή, δύο, είναι πάντα η ίδιο μήκος, οπότε δεν υπάρχει μια πραγματική απόδοση σε ό, τι Olivier προτείνεται εδώ με factoring από το φερμουάρ, και [Δεν ακούγεται] προτείνει ότι μπορούμε να απαλλαγούμε της πόλης και των κρατών. Έτσι, αυτό είναι η διαδικασία γνωστή ως κανονικοποίηση. Οποιεσδήποτε ερωτήσεις σχετικά με αυτό; Λοιπόν επιτρέψτε μου να επισημάνω αυτό είναι το είδος της ουσίας, ακόμα κι αν είναι αρκετά χαμηλό επίπεδο, αυτή η συζήτηση, που θα έλεγε κανείς ότι είστε το είδος του να πάρει χάνεται στα ζιζάνια, αυτό είναι μια εκδήλωση της άφθονης ευκαιρία για τους προγραμματιστές να είναι κακό. Και στην πραγματικότητα, ακόμα και όταν, σε μαθήματα που έχω διδάξει, όταν είχαμε, για παράδειγμα, άπειρους προπτυχιακό προγραμματιστές κατασκευή ιστοσελίδων, με την πρώτη ματιά, οι ιστοσελίδες μπορεί να φαίνονται τεράστια. Και έχουν όλα τα λειτουργικότητα ζητήσαμε, οι προγραμματιστές έκανε καλή δουλειά. Αλλά δεν ήξεραν απαραίτητα αρκετά σχετικά με το σχεδιασμό της βάσης δεδομένων ή δεν σκέφτονται σκληρά αρκετά σχετικά με τους τύπους των δεδομένων και τα είδη των χρηστών τους ιστοσελίδα επρόκειτο να έχουν, και βρίσκουμε, τότε, έξι μήνες αργότερα, αφού έχουν αποφοιτήσει ή μετακινηθεί σε, ότι γαμώτο, την ιστοσελίδα μας Είναι πραγματικά, πραγματικά αργό. Και δεν είμαι καν να μιλάμε για την κατοχή εκατομμύρια ή χιλιάδες χρήστες. Θέλω να πω μερικές εκατοντάδες χρήστες στην πανεπιστημιούπολη, οι οποίοι ήθελαν να, για παράδειγμα, κατάστημα για τα μαθήματα στο Την ίδια στιγμή, από όπου και αν χρησιμοποιώντας αυτή Κατάλογος πορεία εφαρμογή ανέφερα και το πράγμα είναι να πάρει πραγματικά επιβραδύνει, επειδή δεν υπήρχαν ευρετήρια. Δεν υπήρχαν κόκκινα αστέρια, έτσι ώστε να μιλούν, ή δεν είχε κατ 'ανάγκην συνυπολογίζονται τα κοινά στοιχεία που να πάρετε κάποια εξοικονόμηση χώρου. Και έτσι, όταν την εξέταση έναν προγραμματιστή ή πρόσωπο βάση δεδομένων ή τα παρόμοια, τα είδη των ερωτήσεων να σκέφτονται μέσα είναι ακόμη, κατά την αναθεώρηση κώδικα κάποιου, να πω, δεν είναι απαραίτητα δούμε μέσω όλων των κώδικά τους, αλλά λένε, ας δούμε μέσα από τους πίνακες της βάσης δεδομένων. Τι αποθήκευση; Και στη συνέχεια να πω, καλά, περιμένετε λεπτό, γιατί χρησιμοποιείτε έναν ακέραιο; Τι θα συμβεί αν έχουμε 4000000000 και 1 από αυτές τις γραμμές; Και αυτά τα είδη των ερωτήσεις είναι μια ευκαιρία με το είδος της ώθησης και να πάρετε μια αίσθηση του, όπου αν δεν είστε άνετα με αυτό ότι, έχοντας κάποιος πιο τεχνικά θέσουμε αυτά τα ερωτήματα, από το αν ή όχι το πρόσωπο που ξέρει πραγματικά την ουσία τους. Και αυτό είναι το είδος της πράγματα, επίσης, ότι οι άνθρωποι στο διαδίκτυο που είναι αυτοδίδακτος, ίσως μαθαίνουν λιγότερο συχνά, επειδή δεν έρχονται απαραίτητα σε όλη την τόσο πολύ, επειδή μπορείτε να πάρετε η βάση δεδομένων και τη λειτουργία, αλλά αν δεν έχετε διαβάσει επάνω σε σεμινάρια ή ήταν είπε για κανονικοποίηση της βάσης δεδομένων και την ευρετηρίαση και την απόδοση, αυτά είναι τα είδη των πραγμάτων που πρόκειται να σας βλάψει. Και μπορείτε να σκεφτείτε, ή μια κακή μηχανικός θα μπορούσε να πει, OH, καλά, έχουμε καλύτερες αμοιβές για ένα μεγαλύτερο βάση δεδομένων ή μια ταχύτερη βάση δεδομένων ή απλά να ρίξει χρήματα σε αυτό, κάθετα κλίμακα, δεν είναι απαραίτητα έτσι. Αν πάτε in-- και μπορείτε να πάτε στο μετά τις fact-- και να προσθέσετε ευρετήρια, και μπορεί να χρειαστούν μερικές ώρες για το βάση δεδομένων για τη δημιουργία αυτής της νέας δεδομένων δομή που αναφέρθηκε προηγουμένως, μπορείτε ακόμα να διορθώσετε αυτό μετά το γεγονός, ότι αυτό είναι όπου μπορείτε να αρχίζουν να διακρίνουν καλές σχεδιαστές από το κακό σχεδιαστές, όχι μόνο αισθητικά, αλλά η απόδοση-σοφός, καθώς και. Καμιά ερώτηση? Όχι? Έτσι, για NoSQL, η οποία ήταν ο άλλος τύπος της βάσης δεδομένων στην οποία αναφέρθηκα νωρίτερα, δεν έχετε γραμμές και στήλες. Αντ 'αυτού, θα έχετε κάτι ότι φαίνεται λίγο περισσότερο σαν αυτό. Πάω να χρησιμοποιούν κοινή σύνταξη. Άγκιστρα να συμβεί σε να χρησιμοποιηθεί εδώ αρκετά. Μπορεί να έχετε κάτι σαν πρώτο όνομα είναι David, μπορεί να έχετε την τελευταία όνομα είναι Malan, εισαγωγικά, μπορεί να έχετε ID is-- με συγχωρείτε, whoops-- ID είναι 1, ηλεκτρονικού ταχυδρομείου είναι malan@harvard.edu, και δεν θα το κάνω κόπο να πληκτρολογείτε το υπόλοιπο, και στη συνέχεια, μερικά άλλα πράγματα. Με άλλα λόγια, πρόκειται για μια αναπαράσταση κειμένου από αυτό που θα λέγαμε γενικά ένα αντικείμενο σε ένα πρόγραμμα υπολογιστή. Και ένα αντικείμενο είναι γενικά μόνο μια συλλογή από βασικά ζεύγη αξία. Έτσι και πάλι, αυτό το επαναλαμβανόμενο θέμα. Είδαμε ζευγάρια κλειδί αξία σε HTML, είδαμε βασικά ζεύγη αξία τώρα στο πλαίσιο των βάσεων δεδομένων, και εμείς είδε βασικά ζεύγη αξία στο πλαίσιο της, νομίζω, μια γλώσσα νωρίτερα σήμερα. Διατηρεί ανεβαίνει. Και πράγματι, αυτό είναι πραγματικά ποια δεδομένα βράζει κάτω, δεδομένα και μεταδεδομένα, ή οι τιμές και κλειδιά, αντίστοιχα. Έτσι, μια μη σχεσιακή βάση δεδομένων, κάτι που βασίζεται σε αντικείμενα, όπου μπορείτε απλά συστάδα δέντρων όλα μαζί και να το βάλετε στη μνήμη, θα ήταν γενικά απεικονίζεται ως, ή σκεφτεί, όπως αυτό. Και εγώ θα το αφήσω αυτό τώρα ως είδος εναλλακτικής προσέγγισης. Και ένας δεν είναι απαραίτητα καλύτερη από την άλλη. Στην πραγματικότητα, πολύ στη μόδα αυτές τις μέρες είναι συστήματα βάσεων δεδομένων όπως MongoDB και Ρέντη και μερικά και άλλα τέτοια εργαλεία, ελεύθερα διαθέσιμο, αλλά είναι όλο και πιο En Vogue. Εν μέρει επειδή προσφέρουν πρόσθετη χαρακτηριστικά κατά τη διάρκεια αυτών πίνακα προσεγγίσεις, αλλά και επειδή είναι λίγο πιο εύκολο στη χρήση, γιατί δεν έχετε να σκεφτείτε τόσο σκληρά για πολλά από αυτά τα σχεδιαστικές αποφάσεις. Έτσι συν και τα πλην. Έτσι συνειδητοποιούν υπάρχουν επιλογές πέρα από αυτό που μόλις περάσει το χρόνο επάνω. Ας το κάνουμε αυτό. Ας μετάβαση λίγο πίσω τώρα σε web προγραμματισμό, έτσι ώστε να έχουμε το είδος της συμπεράνουμε σήμερα με κάτι Αυτό είναι ένα μικρό hands-on, συμπληρώνοντας σε ορισμένες κενά από χθες. Επιτρέψτε μου να πάω σε αυτό το πρώτο. Έτσι, υπενθυμίζουν ότι χθες είχαμε κάποια κανονική HTML σελίδες που είχε αρχικά, μόνο HTML, και στη συνέχεια, δευτερευόντως είχε CSS, επικαλυπτόμενα φύλλα στυλ. Αυτή είναι μια νέα ετικέτα που δεν το κάναμε δείτε χθες, ή σταθώ, λεγόμενη ετικέτα σενάριο. Βγάζει μπορείτε να ενσωματώσετε στην πραγματικότητα μια γλώσσα που ονομάζεται JavaScript στον web σας σελίδα και να κάνει την ιστοσελίδα σας σελίδες κάνουμε κάτι. Λοιπόν, τι εννοώ με αυτό; Λοιπόν, επιτρέψτε μου να προχωρήσει και μόνο δανειστεί αυτόν τον κώδικα για μια στιγμή. Πάω να μπω σε Cloud9, δεν χρειάζεται να πάει εκεί τον εαυτό σας ακριβώς ακόμα, και Πάω να καλέσετε αυτό alert.HTML. Πάω να το επικολλήσετε στο αρχείο μου εδώ. Και ακριβώς για να αποσαφηνίσει τι έχω κάνει, ας να πάω σε αυτή τη διεύθυνση και να πάει να προειδοποιήσει, και μπορείτε να δείτε το Hello World. Αλλά αυτό είναι το είδος της απογοητευτικό. θέλω να κάνω κάτι λίγο διαφορετικά. Έτσι, Πάω να κάνω πραγματικά αυτό. Πάω να πάει εδώ e, και στο μεταξύ ετικέτες σενάριό μου, λένε alert ( 'Hello, world »)? έτσι ειδοποίηση είναι λίγο ατημέλητη, αλλά έχω HTML, εντός του οποίου είναι μια γλώσσα που ονομάζεται JavaScript, και αυτό είναι αυτό που ονομάζεται κλήση της συνάρτησης ή της διαδικασίας κλήσης. Αυτό είναι ένα ρήμα, κυριολεκτικά, στην περίπτωση αυτή, και είμαι επίκληση λειτουργικότητα κώδικα ότι κάποιος άλλος έγραψε. Έτσι ώστε η λειτουργικότητα είναι ένα συναγερμού, οπότε ας πάμε σε αυτή τη σελίδα τώρα και κάντε κλικ στο κουμπί reload, και τώρα σας δείτε ένα μικρό κομμάτι της διαδραστικότητας. Είναι το είδος της παλιάς σχολής και άσχημο. Αυτό το είδος της που θυμίζει το pop-ups, ίσως, του χτες αλλά έκανα κάτι λίγο περισσότερο προγραμματικό. Έτσι, περισσότερο από αυτό, ας κάνουμε κάτι πιο ενδιαφέρον. Επιτρέψτε μου να πάω εδώ και να απαλλαγούμε από αυτό. Και Πάω να πάει μπροστά και να δημιουργήσετε μια φόρμα όπως κάναμε χθες. Στην πραγματικότητα, ξέρετε τι; Πάω να μπω σε google.html, η οποία θα άρχισε χθες, η οποία έμοιαζε αυτό, μέσω του οποίου ψάξαμε για τη γάτα Αλλά παρατηρήσετε ότι υπάρχει το είδος της μια σφάλμα στην τρέχουσα έκδοση. Λειτουργεί για γάτες, αλλά ας υποθέσουμε ότι Δεν συνεργάζονται και να πληκτρολογώ τίποτα, και εγώ απλά πατήστε Υποβολή. Αυτό είναι το είδος της παράξενο συμπεριφορά. Μου πήρε με το πραγματικό Google, δεν μου δώσει ένα μήνυμα σφάλματος. Θα ήθελα να πω στον χρήστη θα πρέπει να μας δώσει μια τιμή. Λοιπόν, πώς θα μπορούσαμε να το κάνουμε αυτό; Λοιπόν επιτρέψτε μου να πάω πίσω στο Cloud9 και επιτρέψτε μου να πάω στην κορυφή της σελίδας μου και να προσθέσετε μια ετικέτα σενάριο όπως αυτό, όπου Πάω να πληκτρολογήσετε κάποιο κώδικα JavaScript. Και Πάω να κάνω το εξής. Αν (document.getelementByID-- και ανάκληση ότι μιλήσαμε για εκείνη την προγενέστερη, αυτή η λειτουργία. Τι ID μπορώ να θέλετε να πάρετε; Θέλω να πάρω q, και πάω να ας πούμε ισούται με τίποτα, όπως this-- στην πραγματικότητα επιτρέψτε μου να χρησιμοποιήσω διπλά εισαγωγικά μόνο για consistency-- ισούται με τίποτα, Στη συνέχεια alert ( "Παρακαλώ πληκτρολογήστε ένα ερώτημα») εδώ. Γι 'αυτό και ό, τι φαίνεται να είναι κάτι σαν μια κατάσταση. Έχουμε δει αυτή τη γενική ιδέα στο Scratch. Είναι σαν ένα από αυτά τα παζλ κομμάτια που έμοιαζαν με αυτό. Και τι λέω; Λοιπόν, εδώ κάτω, παρατηρήστε είμαι πρόκειται να κάνει τα εξής. Πάω να δώσει σε αυτό το έντυπο τομέα δεν είναι μόνο ένα όνομα q, το οποίο είναι αυτό που παίρνει πέρασε στο Google, αλλά είμαι πρόκειται να δώσει ένα τοπικό αναγνωριστικό, που ονομάζεται επίσης q. Αλλά θα μπορούσα να καλέσετε αυτό το κάτι που θα θέλουν, είμαι απλώς πρόκειται να το κρατήσετε απλό καθώς επίσης και το ονομάσουμε q, μόνο για λόγους απλότητας. Και τώρα πάω να κάνω κάτι λίγο περισσότερο. Σχετικά με τα πεδία της φόρμας εδώ, πάω να προσθέστε αυτό που ονομάζεται ένα πρόγραμμα χειρισμού συμβάντων. Την υποβολή, θέλω να καλέσω μια λειτουργία που ονομάζεται επικύρωση. Αυτό δεν υπάρχει ακόμα, αυτό λέξη, ή αυτό το ρήμα επικύρωση, γιατί αυτό που πάω να κάνω μέχρι τώρα εδώ είναι να προσθέσετε κάποιο κώδικα. Πάω να πω λειτουργία επικύρωση. Πάω να εσοχή αυτή και να προσθέσετε ένα άλλο σγουρά κηδεμόνα εδώ και ένα άλλο εδώ. Σκεφτείτε τι είναι αυτό που κάνει τώρα. Έχω now-- σκεφτείτε αυτό ως δημιουργούνται μου το κομμάτι του παζλ που δεν το έκανε στο παρελθόν υπάρχουν, και έχω ονομάζεται αυτό το παζλ κομμάτι το κομμάτι του παζλ επικύρωση. Ο σκοπός του στη ζωή είναι να εκτελέσει οι τέσσερις γραμμές κώδικα στο εσωτερικό του. Αν document.getElementById τόσο εννοιολογικά, ότι πρόκειται να πάει στο στοιχείο, το στοιχείο HTML του οποίου η μοναδική ιδέα είναι απλά q, και στη συνέχεια ακόμη και αν η σύνταξη φαίνεται λίγο παράξενο, ότι η ισότητα είναι ίση ακριβώς σημαίνει ίσων. Έτσι, αυτό σημαίνει ότι, εάν το στοιχείο με το μοναδικό αναγνωριστικό του q, όταν πάρει, δεν έχει καμία αξία, απλά ισούται απόσπασμα εισαγωγικά, τίποτα εκεί μέσα, τότε τι θέλω να κάνω; Θέλω να φωνάζω στο χρήστη. Και εμείς δεν θα πάει μεγάλη λεπτομέρεια εδώ. Πάω να επιστρέψει false. Αυτό είναι ένα λάθος. Αλλιώς, Πάω να επιστρέψουν αλήθεια. Έτσι, είτε θα εργαστεί ή όχι. Ψευδείς ή αλήθεια. Και τώρα, αν δεν είχα κάνει λάθη, επιτρέψτε μου να σώσει αυτό και να φορτώσετε εκ νέου αυτό. Και επιτρέψτε μου να διπλός έλεγχος ότι Δεν είχα, στην πραγματικότητα, να κάνει οποιαδήποτε λάθη, γι 'αυτό δεν φέρουν σε δύσκολη θέση τον εαυτό μου. Ας δούμε αν αυτό λειτουργεί. Έτσι τώρα Πάω να πληκτρολογήσετε γάτες. Εξακολουθεί να λειτουργεί, ή το μισό έργα, τουλάχιστον. Τώρα επιτρέψτε μου να φορτώσετε εκ νέου, και τώρα ας Θέλω να προσπαθήσω να υποβάλει χωρίς να πληκτρολογήσετε anything-- γαμώτο, το έσπασε. Μια στιγμή. Επιτρέψτε μου να ανοίξετε την κονσόλα, [Δεν ακούγεται] συνδεθείτε, επαναλάβετε τη φόρτωση της σελίδας. Επιτρέψτε μου να προσπαθήσω αυτό και πάλι. Ω, γαμώτο. Ξέχασα. Έκανα ένα τυπογραφικό λάθος. Θυμάμαι τι είναι. .αξία. Ήθελα να πω αν η αξία του στοιχείου του οποίου η ταυτότητα είναι q ισούται με αυτό, τότε φωνάζω στο χρήστη. Έτσι τώρα επιτρέψτε μου να κρατήσει και πάλι την αναπνοή μου. Ορίστε. Εκεί πάμε. Πληκτρολογείστε ένα ερώτημα. Γι 'αυτό δεν είμαι εγώ αφήσει μέσα. Μπορώ να είμαι το είδος του παιχνιδιάρικο με αυτό, και αντί για τον έλεγχο για καμία αξία, Μπορώ να πω κάτι σαν, Δεν χρειάζεται πια να ψάχνετε για τις γάτες, και τώρα μπορούμε απλά πιο παιχνιδιάρικα ας η αναζήτηση των χρηστών για τα σκυλιά, αν αυτός ή αυτή θέλει, ή αν πάω εδώ και αναζήτηση για τις γάτες, τώρα δεν μπορώ. Έτσι ποια είναι η takeaway εδώ; Έτσι, ένα, έχουμε εισαχθεί σε τον κόσμο μας της HTML και CSS, λειτουργικότητα προγραμματισμού. Μπορώ πραγματικά τώρα λαμβάνουν αποφάσεις σε κώδικα. Προηγουμένως, το μόνο που μπορούσα να κάνω είναι σήμανση κειμένου περιεχόμενο ή γραφικά περιεχόμενο και πείτε τι πρέπει να προσέξετε όπως και όπου να εμφανιστεί. Τώρα πραγματικά μπορώ να ρωτήσω ερωτήσεις της ιστοσελίδας και να λαμβάνουν αποφάσεις με βάση σε αυτό, και να ζητήσει από το χρήστη αν χρειαστεί να φωνάζω σε αυτόν ή αυτήν. Οπότε ας προσπαθήσουμε κάτι για τη δική μας με αυτό. Προχωρήστε, επιτρέψτε μου να ανοίξει την επόμενη διαφάνεια εδώ, και μόνο να επισημάνω ένα πράγμα. Ακριβώς όπως και με CSS, μπορούμε να συνυπολογίσει του κώδικα JavaScript σε ένα ξεχωριστό αρχείο, μπορείτε να κάνετε το ίδιο πράγμα με JavaScript όπως με CSS. Και μπορείτε να χρησιμοποιήσετε ότι η χρήση μιας πηγής αποδίδουν της ετικέτας σενάριο. Αλλά εμείς δεν θα περιπλέξει τα πράγματα για τώρα. Αντ 'αυτού, αν θα μπορούσατε πηγαίνετε να μην αυτή τη σελίδα, but-- επιτρέψτε μου να μετακινήσετε αυτό γύρω στο order-- πάνε, αν θα μπορούσατε, αυτήν τη σελίδα εδώ. Αυτή η διεύθυνση URL εδώ. Είναι στη σημερινή διαφάνειες. Μπορεί να χρειαστεί να φορτώσετε εκ νέου, διότι Έχω προσθέσει ένα ζευγάρι των πράγμα. Αλλά πάει εκεί όπου κάποιοι παζλ περιμένουν. Και αυτό θα μας δώσει την ευκαιρία, σε μια ελαφρώς πιο διασκεδαστικό πλαίσιο, να ανακατεύομαι με κάποια JavaScript. Και όταν φτάσετε εκεί, Θα εξηγήσω τι περιμένει. Πάρτε πράσινο. Ορισμός μπλε. Ορίζει πράσινο, θέτει κόκκινο. Ωχ. Συγνώμη. Αυτή είναι η έκταση της μας τεκμηρίωση για αυτή την πρόκληση. Και αυτό πρόκειται να λειτουργήσει ως εξής. Έτσι, ό, τι έχετε σε αυτό σελίδα είναι ένα σωρό παζλ εικόνα από έναν φιλαράκο στο Πανεπιστήμιο του Στάνφορντ. Έτσι, αυτό που βλέπετε εδώ είναι σχεδόν είδος ένα από αυτά τα μαγικά παζλ των ματιών, αλλά αν απλά κοιτάζω σε αυτό, τίποτα δεν πρόκειται να ξεπεταχτεί σε σας. Μάλλον, κάτι που είναι κρυμμένο σε αυτή την εικόνα. Και αυτό είναι κρυμμένο με τον ακόλουθο τρόπο. Εικόνες, όπως ίσως γνωρίζετε, μπορεί να είναι που αποτελείται από μόλις τρία χρώματα. Μερικά κόκκινο, κάποια μπλε και κάποια πράσινα. Και μπορούμε να κάνουμε όλα τα χρώματα του ουράνιου τόξου με την ανάμειξη αυτών των τριών χρωμάτων με κάποιο τρόπο. Έτσι, αυτό μοιάζει ως επί το πλείστον πράσινο και μπλε, αλλά όπως λέει εδώ ο Nick, Αυτό το παζλ σιδήρου εικόνα είναι ένα παζλ. Περιέχει μια εικόνα του κάτι διάσημη, ωστόσο, η εικόνα έχει διαστρεβλωθεί. Η διάσημη αντικείμενο είναι στα κόκκινα τιμές. Ωστόσο, η κόκκινη αξίες έχουν όλα έχουν χωριστεί από 10. Έτσι είναι πολύ μικρά κατά έναν παράγοντα 10. Έτσι με άλλα λόγια, ο Nick πήρε μια πρωτότυπη εικόνα, και αυτός αποκορεσμένο όλα του κόκκινου από αυτό, μειώνοντας την ποσότητα του κόκκινου μελάνι, αν θέλετε, σε αυτό. Οι μπλε και πράσινες αξίες είναι όλα ακριβώς νόημα, τυχαίες τιμές, γνωστός και ως ο θόρυβος που αποσκοπούν να συσκοτίσει την πραγματική εικόνα. Έτσι, αυτό που ο Νικ έκανε ήταν αυτός τονισμένο κάτω από το κόκκινο και, στη συνέχεια, που μόλις έριξε τυχαία ποσά του μπλε και του πράσινου στην εικόνα για το είδος των σκοτεινών τι είναι στην πραγματικότητα ακόμα εκεί. Θα πρέπει να αναιρέσετε αυτές οι στρεβλώσεις για να αποκαλύψει την εικόνα. Πρώτα, ορίστε το σύνολο των μπλε και πράσινο τιμές στο μηδέν για να τους βγάλουμε έξω από το δρόμο, και να δούμε το αποτέλεσμα. Έπειτα πολλαπλασιάσουμε κάθε κόκκινο αξία κατά 10, κλιμάκωση πίσω μέχρι περίπου της τελικής του αξίας. Ποια είναι η διάσημη αντικείμενο; Έτσι, όλοι σας έχετε αυτό το ορθογώνιο στο πρόγραμμα περιήγησής σας τώρα. Και παρατηρήσετε ότι υπάρχει κάποια μίζα κώδικα, να το πω έτσι. Αυτό είναι κώδικα JavaScript που Nick έχει γράψει για εσάς. Και παρατηρήσετε ότι υπάρχει μια γραμμή στη μέση που ξεκινά με μια κάθετο κάθετο, που είναι τι γενικά ονομάζεται ένα σχόλιο. Αυτό σημαίνει ότι είναι μια φράση για να τον προγραμματιστή ότι δεν έχει καμία λειτουργική έννοια. Είναι απλά μια οπτική ένδειξη στον άνθρωπο. Έτσι, μπορείτε να προχωρήσετε και να διαγράψετε μόνο αυτή τη γραμμή, και να είναι σούπερ, δεν είστε προσεκτικοί για να διαγράψετε ή να αλλάξετε οτιδήποτε άλλο. Και επιτρέψτε μου να σας καθοδηγήσει ό, τι αυτός ο κώδικας κάνει και εγώ θα το αφήσουμε για να καταλάβω το μυστικό της εικόνας. Αυτή η πρώτη γραμμή εδώ που έχω μόλις επισημασμένο σας δίνει την ακόλουθη. Από την αριστερή πλευρά, Έχετε ό, τι λέγεται μια μεταβλητή που ο Nick έχει αυθαίρετα, αλλά λογικά ονομάζεται im για την εικόνα. Στη δεξιά πλευρά του εν λόγω σύμβολο ισότητας, που λέει να μου δώσει μια νέα παραθέτω, εισαγωγικά "απλή εικόνα». Απλή εικόνα, σε αυτό το πλαίσιο Είναι αυτό που ονομάζεται μια τάξη, καθώς, Είναι σαν ένα είδος class-- τεχνικά ένα prototype-- αλλά πραγματικά, Αυτό μου δίνει ένα νέο αντικείμενο, τα περιεχόμενα των οποίων είναι το αρχείο, σιδήρου-puzzle.png. Με άλλα λόγια, ο Nick έχει δημιουργήσει αυτή η έννοια μιας απλής εικόνας έτσι ώστε να μπορούμε, για παιδαγωγικούς σκοπούς, παίζουν με την εικόνα και να αλλάξετε το κόκκινο της, πράσινο και μπλε αξίες. Και πώς θα το κάνουμε αυτό; Αυτή η κάπως αινιγματικά σύνταξη εδώ Είναι κάτι σαν μπλοκ επανάληψης ότι κάποιοι από εσάς είδε στο Scratch νωρίτερα σήμερα, όπου μπορείτε να επαναλάβετε 10 φορές. Σε αυτή την περίπτωση, ο Nick δεν έχει ενσωματωμένες έναν αριθμό, όπως 10. Αντ 'αυτού λέει, η προετοιμασία μια μεταβλητή που ονομάζεται x στο 0, ελέγξτε αν το x είναι μικρότερο από ό, τι το πλάτος της εικόνας. Και έτσι να είναι πιο σωστή, η εικόνα είναι η μεταβλητή, τελεία σημαίνει να πάει στο εσωτερικό του και να πάρει το πλάτος της, και στη συνέχεια, ανοίξτε παρένθεσης, κλειστά παρένθεσης είναι ακριβώς ο τρόπος ενός προγραμματιστή του λέγοντας ότι αυτό είναι μια λειτουργία. Αυτή είναι μια διαδικασία. Αυτή είναι η λειτουργικότητα κάποιος άλλος έγραψε. Χρησιμοποιήστε το και δώσε μου πίσω μια απάντηση. Και τότε x ++ είναι ένα φανταχτερό τρόπο λέγοντας, αφού έχετε κάνει αυτό μία φορά, αυξήσετε x κατά 1. Με άλλα λόγια, αυτή η είναι ο τρόπος ενός προγραμματιστή επάγουν μία θηλιά που είναι πρόκειται να επαναλάβει πάνω όλες τις στήλες σε μια εικόνα. Μια εικόνα είναι απλά ένα πλέγμα τελείες, γραμμές και στήλες από τελείες. Αυτός είναι ένας τρόπος για την επανάληψη πάνω από όλα από τις στήλες αυτές. Και στο εσωτερικό, Εν τω μεταξύ, είμαστε επανάληψη πάνω από τα ύψη, εδώ και εδώ και εδώ. Έτσι, αυτό είναι απλά ένας τρόπος traipsing, σχεδόν σαν ένα παλιό σχολείο γραφομηχανή, απλά να πάει πέρα ​​από το όλη εικόνα επαναληπτικά. Ακόμη και αυτό δεν είναι αρκετά εξ ολοκλήρου σαφές, μόλις λάβει την πίστη για τώρα, ότι οι εν λόγω τρεις γραμμές του κώδικα μαζί είναι πρόκειται να επιτρέψει σε σας για να εξετάσει επαναληπτικά σε κάθε pixel, κάθε τελεία στην εικόνα. Τι είναι ένα pixel; Λοιπόν, για να είμαστε σαφείς, αν κοιτάξουμε στο πρωτότυπο και μεγέθυνση, αν βάλετε πραγματικά τα μάτια σας στην οθόνη του υπολογιστή, αυτό είναι μόλις ένα σωρό τελείες, αρκετές χιλιάδες κουκίδες συσκευάζονται μαζί εκεί. Και έτσι αυτό που είσαι έτοιμος να κάνω; Κάθε μία από αυτές τις κουκκίδες, ένα τελικό ορισμό, είναι το αποτέλεσμα του τι είναι γενικά που ονομάζεται RGB, κόκκινο, πράσινο, μπλε, η οποία πάλι, μπορούν να συνδυαστούν για να να σας δώσει οποιοδήποτε αριθμό των χρωμάτων. Στην πραγματικότητα, αν θυμάστε από πολλά, πολλά χρόνια πριν, οθόνες προβολής, όπως αυτά τα πράγματα χρησιμοποιείται για να έχει όχι ένα φακό, αλλά τρεις. Ένας από αυτούς φτύσει κόκκινο φως, ένα από τα να φτύσει το πράσινο φως, ένας από αυτούς φτύσει μπλε φως. Και αν ήταν σε γυμνάσιο σαν να ήμουν όπου ήταν ποτέ ευθυγραμμιστεί σωστά, θα ήταν πάντα βλέποντας ταινίες ιστορία ότι ήταν ελαφρώς παραμορφωμένη, επειδή τα τρία χρώματα δεν ήταν συνδυάζοντας κατάλληλα. Αλλά αποδεικνύεται ότι κάθε μία από κόκκινο, πράσινο, μπλε και οι τιμές αυτές, μπορεί να έχει έναν αριθμό που συνδέονται με αυτά. Για παράδειγμα, 0 για το κόκκινο σημαίνει ότι δεν κόκκινο, 0 για το πράσινο σημαίνει ότι δεν υπάρχουν πράσινα, και 0 για το μπλε σημαίνει ότι δεν υπάρχει μπλε. Έτσι, αν δεν έχετε κόκκινο, όχι πράσινο, και όχι μπλε, τι χρώμα έχετε; Κοινό: [δεν ακούγεται] DAVID Malan: Θα Ελπίζουμε έτσι, είναι λευκό. Δυστυχώς, αυτή η operates-- συγγνώμη; Κοινό: [δεν ακούγεται] DAVID Malan: Έτσι μπορείτε πραγματικά έχουν μαύρο, σε αυτή την περίπτωση. Έτσι, εάν έχετε κανένα από αυτά χρώματα ενεργοποιημένη, έχετε μαύρα. Ωστόσο, αν έχετε, ας πούμε πολλά από αυτούς, όπως πολύ κόκκινο, 255 από αυτό, πολύ πράσινο και πολλά του μπλε, που είναι λευκό. Έτσι, αυτά είναι τα δύο άκρα. Έτσι, με αυτή τη λογική, αν έχω πολλά του κόκκινου και χωρίς πράσινο και όχι μπλε, Τι χρώμα είναι αυτό; Κοινό: [δεν ακούγεται] DAVID Malan: Δεξιά, προφανώς. Και τότε δεν κόκκινο, πολλά πράσινο, όχι μπλε, και στη συνέχεια αν have-- καλά, απλά θα τελειώσει αυτό, μόνο και μόνο επειδή, αλλά αυτό, φυσικά, τώρα, είναι μπλε. Και τώρα μπορείτε να συνδυάσετε αυτά τα χρώματα. Τώρα, ως ένα μέρος, αν κάποιος από εσάς έχει κάνει ποτέ κάποια πραγματική ιστοσελίδα του σχεδιασμού, ίσως στην πραγματικότητα δείτε σύμβολα όπως αυτό. FFF-- και στην πραγματικότητα, είναι πιθανότατα δεν είναι καν αυτό. Είναι FFFFFF. Όποιος δει ποτέ F και Ε του και Α through-- έτσι αποδεικνύεται, μιλήσαμε χθες για το δεκαδικό, και σήμερα, το είδος των περίπου δεκαδικά. Σήμερα μιλήσαμε για δυαδικό. Βγάζει, δεκαεξαδικό είναι ένα πολύ κοινό σύστημα βάσης για χρήση σε υπολογιστές. Binary είναι δύο, δεκαδικό ψηφίο είναι 10, εξάγωνο είναι 16. Και αποδεικνύεται, πώς το κάνουμε που μετράνε σε δεκαεξαδικό; Μηδέν, ένα, δύο, τρία, τέσσερα, πέντε, έξι, επτά, οκτώ, εννέα, τι θα χρησιμοποιήσετε μετά από εννέα; Ποιο είναι το επόμενο νούμερο; Έχουμε ήδη χρησιμοποιήσει το μηδέν. Χρειάζομαι 16 από αυτά. Μηδέν, ένα, δύο, τρία, τέσσερα, πέντε, έξι, επτά, οκτώ, εννέα, χρειάζεστε κάποια αυθαίρετη σύμβαση. Και τι η ανθρωπότητα αποφάσισε κάποια στιγμή Πριν από ότι μετά από εννέα έρχεται η επιστολή Α και Β και στη συνέχεια C. Έτσι, η τρόπο που μετράνε σε δεκαεξαδικό είναι μηδέν, ένα, δύο, τρία, τέσσερα, πέντε, έξι, επτά, οκτώ, εννέα, A, B, C, D, E, F, και ότι θα μετρήσει σας σε όλη τη διαδρομή, αποδεικνύεται, για 15. Έτσι το μηδέν έως το 15 είναι μηδέν μέσω ΣΤ Τώρα γιατί είναι ότι σημαντικό; Λοιπόν, όταν έχετε δύο F, το αυτό είναι το πώς θα εκφράσουν 255. Έτσι, τα πολυλογώ, σε ο κόσμος του Photoshop, ότι γραφικό λογισμικό σχεδιασμού, στον κόσμο του web development, όπου έχετε πολλά χρώματα, Φυσικά, για να παίξει με, συχνά οι προγραμματιστές θα εκφράζουν εκείνους σε δεκαεξαδικό, μόνο και μόνο επειδή τείνει να είναι λίγο πιο απλό. Ακόμα κι αν με την πρώτη ματιά είναι πολύ πιο περίπλοκη. Έτσι, σε κάθε περίπτωση, αυτό είναι σημαντικό γιατί Nick στο Πανεπιστήμιο του Στάνφορντ μας έδωσε έξι κομμάτια της λειτουργικότητας ότι, οι εκκολαπτόμενοι προγραμματιστές, θα έχουν πλέον τη δυνατότητα να χρησιμοποιήσει. Χτισμένο σε αυτή την ιστοσελίδα σελίδα είναι έξι λειτουργίες, έξι διαδικασίες που έγραψε ο Νικ. Τρεις από αυτούς θα σας πάρει έναν αριθμό, ένα κόκκινο, ένα πράσινο ή μπλε αξία. Τρεις από αυτούς θα θέσει αυτή την τιμή. Και αυτά τα υπογράμμισης είναι απλά σύμβολα κράτησης θέσης, οπότε θα πρέπει να γνωρίζετε τι είναι αυτά. Έτσι, με αυτές τις τρεις λειτουργίες, το πρώτο από αυτά τα πράγματα πρόκειται να είναι μια x-συντεταγμένη, και το δεύτερο από αυτά τα πράγματα πρόκειται να είναι ένα y-συντεταγμένη. Με άλλα λόγια, οι οποίες dot, το οποίο pixel θέλετε να πάρετε το πράσινο της, να πάρει το γαλάζιο του, να πάρει το κόκκινο της. Και στη συνέχεια εδώ, αυτό πρόκειται να είναι x, αυτό πρόκειται να είναι μια τιμή y, και αυτό πρόκειται να είναι ένας αριθμός. Ας κάνουμε το πρώτο γραμμή αυτή μαζί και τότε εγώ θα το αφήσουμε σε σας να προσπαθήσει να συναγάγει το υπόλοιπο. Έτσι σύμφωνα με τις οδηγίες σε αυτή τη σελίδα, χρειαζόμαστε για να αυξηθεί το κόκκινο κατά ένα συντελεστή 10, και εμείς πρέπει να αφαιρέσετε το πράσινο και αφαιρέστε το μπλε. Ας αρχίσουμε με τα τελευταία σενάρια. Έτσι, αν θέλω να, και θα πάω σε εσοχή με τη χρήση ορισμένων χώρων, αν θέλω να ρυθμίσετε το κόκκινο, το πράσινο ή το μπλε αξία, Πάω να κάνω το εξής. Εικόνα, im.setBlue, και στη συνέχεια με βάση τις οδηγίες μου εδώ, τι τα τρία πράγματα θα πρέπει να πληκτρολογήστε στο εσωτερικό των παρενθέσεων τώρα; Χρειάζομαι την τιμή του x, η y αξία, και τι αριθμό πρέπει να βάλω εδώ αν θέλετε να απαλλαγείτε του μπλε, με βάση αυτή την ιστορία εδώ; Απλά μηδέν. Αν θέλω καμία μπλε, είμαι απλά πρόκειται να το αλλάξει στο μηδέν. Τώρα, ας ανακεφαλαιώσουμε τι είναι αυτό που κάνει. Έχω εδώ σε αυτά κορυφή δεύτερη και τρίτη γραμμή, Έχω ισχυρίστηκε δύο βρόχους, ένθετων βρόχων, αν θα, ότι δεν πρόκειται να έχει ως αποτέλεσμα της προχωρώντας από αριστερά προς τα δεξιά, πάνω προς τα κάτω πάνω από το σύνολο των x αξίες και όλες οι τιμές y. Επειδή και πάλι, μια εικόνα μόνο ένα πλέγμα σειρών και στηλών. Έτσι, αυτό πρόκειται να πάρει απαλλαγούμε από όλα το μπλε. Επιτρέψτε μου να αφήσει στην επόμενη γραμμή για να σας. Πώς μπορώ να απαλλαγούμε από όλα το πράσινο; Κοινό: [δεν ακούγεται] DAVID Malan: Νίκαια. Κοινό: [δεν ακούγεται] DAVID Malan: Νίκαια. Και Πάω για σμίκρυνση, και μόλις λάβει φροντίδα του ότι δεν έχετε κάνει καμία typos. Και αν είστε άνετα με ό, τι έχετε κάνει, να προχωρήσει και κάντε κλικ στο κουμπί Εκτελέστε / Αποθηκεύστε και δείτε τι μπορείτε να πάρετε. Και πάλι, έχουμε κάνει μόνο τρεις αλλαγές. Διαγράψαμε ότι η πρώτη Σχολιάστε και το αντικατέστησε με αυτές τις δύο γραμμές κώδικα. Και είναι εντάξει αν χρειαστεί να χτυπήσει το κουμπί Run / Save ένα ζευγάρι φορές για να διορθώσετε κάτι. Και επιτρέψτε μου, επίσης, να κάνετε ζουμ σε μου κώδικα ώστε να μπορείτε να μεταγράψει. Καλά. Έτσι βλέπω τον Andrew έχει τι φαίνεται να είναι ένα λάθος. Έχει μόλις πήρε ένα μεγάλο μαύρο ορθογώνιο στην οθόνη του. Μήπως κάποιος άλλος έχει ένα μεγάλο μαύρο ορθογώνιο; Κοινό: Ναι. DAVID Malan: Μεγάλο μαύρο ορθογώνιο; ΟΚ, οπότε ας σκεφτούμε για το τι σημαίνει αυτό. Είπαμε ότι το μηδέν, μηδέν, μηδέν, οπότε δεν υπάρχει πράσινο, όχι κόκκινο, όχι μπλε, πρόκειται να σας δώσει το μαύρο. Και αποδεικνύεται ότι τα περισσότερα από φορητούς υπολογιστές μας απλά δεν έχουν αρκετή πιστότητα. Δεν μπορεί να είναι αρκετά πει εκεί είναι πραγματικά κάτι εκεί. Και αν το είδος της ίσως να κλίνει οθόνη σας προς τα εμπρός και πίσω, ίσως βλέπετε ένα κάτι εκεί; Ίσως, το είδος, το είδος του; Δεν είναι απόλυτα μαύρο. Κοινό: [δεν ακούγεται] DAVID Malan: Spoiler! Υπάρχει κάποια κόκκινη εκεί, αλλά θυμούνται από τις προδιαγραφές του προβλήματος, ο Νικ είναι πιο ήπια. Την αποκορεσμένο κάπως, αλλά όχι σε όλη τη διαδρομή προς το μηδέν. Έτσι, αν θέλουμε να μεγεθύνει το ποσό κόκκινο, επιτρέψτε μου να προτείνω αυτό το τέχνασμα. Επιτρέψτε μου να μεγεθύνετε στην οθόνη μου. Και επιτρέψτε μου να πάει μπροστά και να πω ποσό ίσο με im.getRed (x, y). Αυτή η γραμμή του κώδικα μου δίνει κάτι που ονομάζεται μια μεταβλητή. Έχω αυθαίρετα, αλλά, αναμφισβήτητα, εύλογα ονομάζεται μεταβλητή μου τι, προφανώς? Ποσό. Απλά ποσό. Θα μπορούσα να έχω ονομάζεται οτιδήποτε θέλω, αλλά είμαι χρησιμοποιώντας αυτή άλλη λειτουργία που περιέγραψα νωρίτερα για να πάρει την ποσότητα του κόκκινου σε x κόμμα y. Γιατί το κάνω αυτό; Τι θέλετε να κάνουμε εδώ; Θα πρέπει να add-- Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, ίσως πολλαπλασιάζεται με το 10. Και αν δεν το γνωρίζουν αυτό, είμαι πρόκειται να προχωρήσει και να το κάνουμε αυτό. Πάω να πάει μπροστά και να ας πούμε, θέλω την ποσότητα του κόκκινου Θέλω να είμαι ό, τι βρίσκεται στο κόκκινο, 10 φορές, και το αστέρι, ο αστερίσκος για σας πληκτρολόγιο είναι το-- δεν χρησιμοποιούν x. Χρησιμοποιήστε το αστέρι. Αυτό είναι το πώς μπορείτε να πολλαπλασιάσετε τα πράγματα στις περισσότερες γλώσσες προγραμματισμού. Έτσι, σύμφωνα με τη διαίσθηση Kareem του, αποθηκεύονται στη μεταβλητή αυτή ονομάζεται ποσό, είναι το πόσο κόκκινο θέλω σε xy θέση. Πώς, τώρα, μπορώ να κάνω ότι Pixel έχουν αυτόν τον αριθμό; Έχετε ήδη κάνει πριν από αυτό. Μπορείτε να ορίσετε το πράσινο και το μπλε σε καμία αξία, στο μηδέν. Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, καλά δεν το θέλουν σε 10. Έχετε ήδη έκανε τα μαθηματικά εδώ. Έτσι θα έχουμε την τιμή του κόκκινου, η οποία είναι ένας χαμηλός αριθμός, προφανώς. Είμαστε πολλαπλασιάζοντας από 10. Τι θέλετε να κάνετε με το μεταβλητό ποσό τώρα; Κοινό: [δεν ακούγεται] DAVID Malan: Νίκαια. Έτσι im.set-- τι; Κοινό: setRed. DAVID Malan: setRed, στο xy θέση. Ναι. Και ακριβώς ποσό. Με άλλα λόγια, μια μεταβλητή είναι μια προσωρινή κράτηση θέσης ότι μπορείτε να βάλετε ό, τι θέλετε στο. Εμείς τυχαίνει να είναι βάζοντας ένα αριθμός σε αυτό, αυτή τη στιγμή. Έχουμε αυτό πολλαπλασιάζεται με 10 για να το κάνει μεγαλύτερο. Και τώρα είμαι αντικαθιστώντας αυτή τη μεταβλητή ως το τρίτο επιχείρημα, ή είσοδος για να ρυθμίσετε το κόκκινο. Και έτσι ώστε τη στιγμή που θα ολοκληρώσετε ότι, και λαμβάνουν υπόψη των ερωτηματικά και παρενθέσεις. Προχωρήστε και κάντε κλικ run / αποθηκεύσετε ξανά, και θα Πρέπει να δείτε, μαγικά, τι ήταν στην πραγματικότητα εκεί. [? Arwa,?] Τι είναι εκεί; Ο Πύργος του Άιφελ στο ολοκληρωμένο κόκκινο, δεν είναι αρκετά σκοτεινό. θα πρέπει να είναι πιο εμφανής τώρα, ναι; ΕΝΤΆΞΕΙ. Και ο Andrew, δεν υπερβαίνει το μαύρο κουτί; Κοινό: [δεν ακούγεται] DAVID Malan: Εντάξει. Γι 'αυτό θα κρατήσει αυτό στην οθόνη. Αν θέλετε να παίξετε με αυτό αργότερα, εγώ θα αναδημιουργήσει αυτό για σας. Αλλά αυτός ο κώδικας εδώ έκανε ακριβώς αυτό. Γιατί δεν κάνουμε ένα άλλο. Επιτρέψτε μου να μετακινηθείτε προς τα κάτω ελαφρά. Έτσι, σε αυτή την περίπτωση, τον προβολέα πραγματικά δεν το κάνει δικαιοσύνη. Αλλά στις οθόνες σας, τότε μάλλον έχουν μια πολύ κόκκινο και πολύ μαύρο κουτί. Αυτό, επίσης, είναι ένα παζλ που δείχνει κάτι διάσημο. Ωστόσο, η εικόνα έχει διαστρεβλωθεί. Η αληθινή εικόνα, αυτή τη φορά, είναι στις μπλε και πράσινες αξίες. Ωστόσο, όλα έχουν χωριστεί κατά 20 έτσι οι τιμές είναι πολύ μικρές. Τα κόκκινα τιμές είναι μόνο τυχαίους αριθμούς, το θόρυβο. Αναίρεση αυτές οι στρεβλώσεις για να αποκαλύψει την πραγματική εικόνα. Έτσι Nick τότε σας λέει τι να κάνει. Ρυθμίστε τις κόκκινες τιμές στο μηδέν, και τότε μην χαλάσει αυτό που είναι. Στη συνέχεια, πολλαπλασιάστε το μπλε και πράσινο τιμές από 20. Έτσι είναι σχεδόν το ίδιο πρόγραμμα όπως και πριν, αλλά είστε αντιστροφή της διαδικασίας. Και θα βάλω τον κωδικό μου από πριν από την οθόνη σε περίπτωση θέλετε να επανέλθω σε αυτό ή να παίξετε περισσότερο με εκείνο το ένα. Επιτρέψτε μου να κάνετε ζουμ σε αυτό. Αλλά λύσει χαλκού εικόνα παζλ, νούμερο δύο. Κοινό: [δεν ακούγεται] DAVID Malan: Εντάξει, έτσι αυτό είμαι δεν πρόκειται να δώσει όσες συμβουλές. Γι 'αυτό και would-- OH, ας δείτε, έχετε ένα τυπογραφικό λάθος εδώ. Έτσι θυμηθείτε, αυτό εδώ πραγματικά πρέπει να πάει εκεί. Έτσι, αυτό που θα ήθελα να προτείνω, αν θέλετε να επικεντρωθεί σε αυτό, υπάρχει η απάντηση. Αν θέλετε να μεταγράψει αυτό, ότι θα πρέπει να πάρει την πρώτη εργάσιμη. Και τότε μπορείτε να χρησιμοποιήσετε ως έμπνευση για το δεύτερο. Όμορφη. Καλά. Και για την περίεργη, Αυτό είναι ένα απλό παράδειγμα της επιστήμης ή της τέχνης που ονομάζεται στεγανογραφία, η τέχνη της απόκρυψης πληροφοριών σε εικόνες. Συνήθως, οι εικόνες μπορεί να είναι υδατογραφημένο πολύ κατάφωρα με ένα λογότυπο στο κάτω μέρος γωνία, αλλά με σαφήνεια, θα μπορεί να είναι πολύ πιο εξελιγμένα γι 'αυτό και στην πραγματικότητα κρύψει άλλες εικόνες στις εικόνες κάπως με αυτήν την τεχνική. Πάρτε ένα άλλο 30 δευτερόλεπτα και στη συνέχεια θα τουλάχιστον ανακοινώσει το τι θα πρέπει να δείτε. Και εγώ θα αφήσει το τρίτο ένα ως άσκηση στο σπίτι, αν θέλετε περισσότερα από ένα αμφισβητήσει αυτό το Σαββατοκύριακο. Και νομίζω ότι ο Andrew θα μπορούσε έχουν πάρει την πρώτη. Ποια είναι η δεύτερη εικόνα, Andrew; Κοινό: Άγαλμα της Ελευθερίας. DAVID Malan: Άγαλμα της Ελευθερίας θα είναι η απάντηση αυτή τη φορά. Έτσι και πάλι, μόλις μερικές απλές παραδείγματα, ο στόχος της οποίας είναι να σας δώσει μια αίσθηση για το πώς έχουμε μεταφραστεί εικονογραφικό Scratch μπλοκ σε πιο ενοχλητικό και περισσότερα περίπλοκες κώδικα, αλλά το σύνολο των ιδεών εξακολουθούν να είναι ακριβώς το ίδιο, έστω και με την εισαγωγή τώρα της έννοιας της μεταβλητής, που είναι είναι σε θέση να αποθηκεύσει κάτι προσωρινά. Ας κάνουμε ένα ακόμη hands-on, απλά για να συνδεθείτε τώρα τις τελείες σε κάτι λίγο πιο πραγματικό κόσμο. Όταν είστε έτοιμοι, αν θα μπορούσατε πηγαίνετε σε αυτό το URL στην οθόνη. Αυτό είναι, επίσης, στο δικό σας αντίγραφο του διαφάνειες, developers.google.com/maps~~V. Ας κάνουν πραγματικά κάτι πραγματικό, να το πω έτσι, στο διαδίκτυο με τη χρήση του Google Maps API, ή διεπαφή προγραμματισμού εφαρμογών, με τον ακόλουθο τρόπο. Η Google, όπως και πολλές εταιρείες, παρέχει πολλές δωρεάν λειτουργικότητα που μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε το δικό σας δική ενδιαφέρουσες εφαρμογές. Στην πραγματικότητα, αν έχετε χρησιμοποιήσει ποτέ Uber να πάρετε ένα ταξί ή ένα αυτοκίνητο, ίσως γνωρίζετε ότι Uber έχει ένα χάρτη και αυτό δείχνει αυτοκίνητα σε αυτό. Δηλαδή, όσο καλύτερα μπορώ πω, το Google Maps API. Στην πραγματικότητα, χρησιμοποιώντας τους χάρτες της Google, αλλά Uber δεν είναι μια εταιρεία χαρτογράφησης, ούτε θα ήταν αυτό να είναι μια Ιδιαίτερο ενδιαφέρον πρόβλημα για να λύσει πάνω από τους πρόβλημα εξυπηρέτησης αυτοκινήτων. Και έτσι στέκεστε, πάλι, στους ώμους των άλλων, η Google σε αυτή την περίπτωση. Έτσι χρησιμοποιούν τους χάρτες της Google, αλλά το δικό τους Υπηρεσίες αυτοκινήτων και άλλα τέτοια χαρακτηριστικά. Έτσι θα πάμε να επωφεληθούν από αυτό για να κάνετε τα εξής. Και αν έχω πάει πάρα πολύ γρήγορα, μόλις μου τηλεφωνήσει πάνω σε μια στιγμή. Στην ευχάριστη θέση να ανακεφαλαιώσουμε μερικά από τα πράγματα εικόνας. Θα πρέπει να δείτε τον εαυτό σας σε μια σελίδα σαν αυτό. Τόσο ωραίο της Google, και ότι είναι μεταξύ των καλύτερων παρέχουν όχι μόνο APIs, αλλά χωρίς API που σας μπορούν να παίξουν με ή εμπορική χρήση. Κάνουν αρχίσει χρέωσης σας αν η χρήση σας είναι υψηλή, αλλά πήγα μπροστά εκ των προτέρων και να μας υπογράψει για ένα δωρεάν λογαριασμό ότι, ευτυχώς, 10 υπολογιστές Δεν θα μας αποκλείσει για ξαφνικά. Έτσι, ελπίζουμε ότι αυτή η επίδειξη θα λειτουργήσει. Και παρατηρήσετε ότι έχουν APIs για Android, iOS, υπηρεσίες web και web, όποια και αν είναι αυτό. Ας επικεντρωθούμε στο web. Έτσι, κάντε κλικ στο ροζ κουτί, web, και ότι θα σας οδηγήσει, ελπίζω, σε μια σελίδα εδώ. Και έχεις ένα σωρό APIs. Και αυτό μπορεί να είναι λίγο συντριπτική κατά την πρώτη, αλλά θα μας οδηγήσει μέσα από ό, τι θέλουμε. Στο πάνω αριστερό μέρος είναι οι Χάρτες Google Το JavaScript API, η API JavaScript. Έτσι προχωρήστε και κάντε κλικ σε αυτό το ένα. Και αυτό θα σας οδηγήσει τώρα στην επόμενη σελίδα, demos και δείγμα κώδικα. Επιτρέψτε μου σμίκρυνση εδώ. Και επιτρέψτε μου να μας to-- μετακινηθείτε προς τα κάτω εκεί που λέει γρήγορα βήματα εκκίνησης. Η οθόνη σας θα πρέπει να μοιάζει με τη δική μου. Και υπάρχουν δύο βήματα, να πάρετε ένα κλειδί και να αρχίσει να αναπτύσσει. Έχω ήδη κάνει το πρώτο βήμα για την μας, να πάρει το λεγόμενο κλειδί. Και αυτό είναι μια κοινή ιδέα. Ένα κλειδί API είναι γενικά μόνο ένα μεγάλο τυχαίο αριθμό ή κορδόνι ότι είστε υποτίθεται να επικολλήσετε στον κώδικά σας, έτσι ώστε η Google ξέρει ποιος είσαι, όταν χρησιμοποιείτε την υπηρεσία τους, API τους. δεν σημαίνει ότι είμαστε φορτίζεται τίποτα. Και τώρα, κάντε κλικ στο κουμπί, αντί ένα, κάντε κλικ αρχίσει να αναπτύσσει. Αν θα μπορούσατε κύμα μόλις μου πάνω αν δεν είστε σίγουροι πού βρισκόμαστε. Γι 'αυτό και θα το μηδέν μόλις η επιφάνεια, εδώ, αλλά τι Νόμιζα ότι θα ήταν συναρπαστικό είναι να έχουν πραγματικά όλους μας, χρησιμοποιώντας Cloud9 σε ένα παράθυρο και αυτό το σεμινάριο σε άλλο παράθυρο, αφήνει πραγματικά να αποκτήσετε το δικό μας την εφαρμογή και τη λειτουργία ότι ενσωματώνει μια προσαρμοσμένη Google χάρτη στη δική μας ιστοσελίδα, και στη συνέχεια προσθέτει μία ή δύο λειτουργίες. Αλλά εμείς θα το μηδέν μόλις η επιφάνεια του τι μπορούμε να κάνουμε. Έτσι απλά ένα γρήγορο έλεγχο λογική. Είναι ο καθένας σε αυτή τη σελίδα, API Google Maps JavaScript; Πρέπει να πω ξεκινήσατε. Εμείς δεν πρόκειται να περάσει από το όλο θέμα με κάθε μέσο. Εντάξει, σε μια άλλη καρτέλα, αν δεν το κάνετε έχουν ανοιχτό, πηγαίνουν σε Cloud9 και να πάρετε τον εαυτό σας σε μόλις μια νέα καρτέλα, τελικά. Έτσι και πάλι, c9.io από χθες, c9.io, και μόλις δημιουργήσετε ένα νέο αρχείο. Και να προχωρήσει και κλήση είναι ό, τι θέλετε. Κάλεσα ορυχείο map.html. Κλήση αυτό οτιδήποτε τελειώνει σε .html. Και θα πρέπει να είναι περίπου όπου είμαι σε αυτή τη διαδικασία μόνο με ένα αναβοσβήνει προτροπή σε ένα άδειο καρτέλα που ονομάζεται κάτι σαν map.html. Ή αρχείο, νέο αρχείο αυτή τη φορά. Και τώρα, πάνω σε ο API Google Maps JavaScript, θα παραλείψετε ανάγνωση μέσω όλων αυτού του κειμένου. Αλλά παρατηρήσετε ότι ο κόσμος γεια είναι μάλιστα παντού, μπορείτε να το δείτε τώρα. Γεια σας κόσμο έχει αυτό το μεγάλο πολύχρωμο παράδειγμα ένα σωρό HTML. Προχωρήστε και να αντιγράψετε και να επικολλήσετε μόνο ότι HTML, τόσο από τον τύπο doc στην κορυφή όλη τη διαδρομή προς το κλείσιμο ετικέτα HTML, πηγαίνετε μπροστά και να αντιγράψετε όλα ερμήνευα-- και πάλι, που είναι κάτω από τον κόσμο γεια example-- και να επικολλήσετε ότι σε σας καρτέλα Cloud9, έτσι ώστε τώρα στην οθόνη σας πρέπει να εξετάσουμε περίπου σαν τη δική μου. Και μπορείτε να το σώσει, αλλά μην το τοποθετήσετε ακριβώς ακόμα. Ας πρώτη ματιά τον κωδικό και να δούμε αν μπορούμε δεν μπορεί να συναγάγει ή να μάθουν από ό, τι είναι το Google είχε να μας τυφλά αντιγραφή και επικόλληση. Απλώς θέλουν να βοηθήσουν, κυριολεκτικά, να μας ξεκίνησε, αλλά δεν υπάρχει τόσο πολύ πολυπλοκότητα πραγματικά εκεί. Οποιεσδήποτε ερωτήσεις ακριβώς ακόμα; Είμαστε ασφαλές να προχωρήσουμε; ΕΝΤΆΞΕΙ. Τόσο γρήγορα, ας το κάνουμε μερικές γρήγορες ελέγχους υγιούς λειτουργίας. Γραμμή ένα από ό, τι δείτε, και ελπίζω, να σας Βλέπε, τι σημαίνει αυτό, doctype HTML; Kareem, θυμούνται; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι. Εδώ έρχεται HTML 5. Εν τω μεταξύ, γραμμή δύο για το οθόνη εδώ σημαίνει hey πρόγραμμα περιήγησης, εδώ έρχεται το πραγματικό HTML. Γραμμή τρεις είναι hey πρόγραμμα περιήγησης, εδώ έρχεται το κεφάλι. Γραμμή τέσσερις είναι, φυσικά, hey πρόγραμμα περιήγησης, έρχεται εδώ ο τίτλος. Τι γραμμή πέντε κάνω; Στην πραγματικότητα, αυτό δεν Πραγματικά κάνει τίποτα για μας. Σε αυτή την περίπτωση, απλά αλλάζει το μέγεθος η σελίδα σε μια προεπιλογή. Γραμμή έξι, δεν έχουμε μιλήσει, αλλά ορίζει την κωδικοποίηση χαρακτήρων. Υπάρχουν διάφοροι τρόποι για την κωδικοποίηση αρχείων, ειδικά για τις ξένες γλώσσες. UTF-8 μόνο τείνει να είναι η προεπιλογή. Έτσι τώρα θα δούμε στη γραμμή επτά έως 16, ορισμένοι CSS. Και ακόμα κι αν έχουμε δεν έχουμε δει όλα αυτά τα πράγματα πριν, μπορούμε να συμπεράνουμε είδος. Έτσι γραμμή οκτώ μέσα, hey πρόγραμμα περιήγησης, ισχύουν όλα από τα ακόλουθα για την οποία δύο ετικέτες, προφανώς? Το κείμενο HTML και το σώμα. Έτσι, το κόμμα είναι το νέο πράγμα εκεί. Και αυτό είναι μόνο ένας τρόπος προσδιορίζοντας πολλαπλές ετικέτες ταυτόχρονα. Στη συνέχεια έχουμε τα άγκιστρα. Έτσι, προφανώς, αυτό λέει το πρόγραμμα περιήγησης, κάνουν το ύψος της σελίδας 100%. Έτσι, ακόμη και αν υπάρχει πολύ λίγη περιεχόμενο, να κάνει ολόκληρη τη σελίδα, να κάνει το πράγμα να συμπληρώσετε τη σελίδα. Κάντε το χάρτη τελικά να συμπληρώσετε τη σελίδα. Περιθώριο, τι σημαίνει αυτό; Αυτό είναι συνήθως σαν αυθαίρετη λευκό χώρο γύρω από τις άκρες ότι ορισμένα σχεδιαστής του προγράμματος περιήγησης μόνο αποφάσισε θα πρέπει να υπάρχει, γιατί είδος κάνει τα πράγματα να φαίνονται καθαρότερα. Αλλά εμείς δεν το θέλουμε αυτό. Θέλουμε ο χάρτης θα όλη τη διαδρομή προς τα άκρα. Βάτες, παρόμοια στο πνεύμα με περιθώρια. Περιθώρια σημαίνει έξω, μέσα padding στο εσωτερικό, αλλά είναι το ίδιο είδος της συμφωνίας. Είναι ένα μικρό κομμάτι από ένα ρυθμιστικό ανάμεσα σε εσάς και τις άκρες. Και στη συνέχεια γραμμή 13 είναι μία καλή ευκαιρία για μια γρήγορη ανασκόπηση. Τι κάνει απότομη σημάδι χάρτη σημαίνει, ή hashtag χάρτη σημαίνει; Τι σημαίνει ότι αναφέρονται σε, κατ 'αρχήν; Κοινό: [δεν ακούγεται] DAVID Malan: Ακριβώς. Αυτό το ξενοδοχείο, αυτό το ξενοδοχείο CSS ισχύει για ένα μόνο πράγμα, η ετικέτα HTML ότι έχει ένα αναγνωριστικό της παραθέτω, εισαγωγικά «χάρτη». Και τώρα ας γρήγορα προς τα εμπρός, κύλισης στο κάτω μέρος του αρχείου, το οποίο δεν είναι πολύ μακριά, και ειδοποίηση στη γραμμή 19, αν το επικολλήσετε ακριβώς όπως έκανα, γραμμή 19 έχει μόνο ένα div, το οποίο είναι ένα διαίρεση της σελίδας, η οποία χθες ονομάζεται ένα ορθογώνιο περιοχή. Είναι πήρε τίποτα σε αυτό. Είναι μια ανοικτή ετικέτα, κοντά ετικέτα. Αλλά έχει ένα μοναδικό αναγνωριστικό. Έτσι, αυτό που φαίνεται να είναι που συμβαίνει εδώ είναι το Google ετοιμάζεται ιστοσελίδα μας για να έχουν μια πλήρη ύψους 100%, και δεν βάτες, χωρίς περιθώρια, διότι τι θα πάμε να βάλει μέσα αυτού του div, των οποίων μοναδικό αναγνωριστικό είναι χάρτη, είναι ένα πραγματικό ενσωματωμένο χάρτη. Και θέλουμε να συμπληρώσετε η σελίδα και όχι μόνο να είναι κάποιο μικρό ορθογώνιο στη μέση. Έτσι, γραμμή 14 τονίζει Ομοίως, η το ίδιο χάρτη θα πρέπει να έχει ύψος 100%. Έτσι, σήμερα παρατηρούμε ότι μεταξύ των γραμμών 20 και 28, αυτό είναι το JavaScript κώδικα. Και αυτό είναι, ακόμα κι αν είναι συντακτικά λίγο παράξενο, εκεί δεν είναι όλα τόσο πολύ συμβαίνει εδώ. Στη γραμμή 21, αυτό δηλώνει κάτι που ονομάζεται μια μεταβλητή. Αντί αποκαλώντας ανέρχεται, όπως κάναμε και πριν, είμαστε πιο συγκεκριμένα λέγοντας var, το οποίο σημαίνει απλά μεταβλητή. Θα μπορούσαμε να χρησιμοποιηθούν ότι σε Κωδικός Νικ, αλλά δεν το έκανε, γι ' δεν έκαναν τον κόπο να γίνει αυτό, είτε. Είναι μια μεταβλητή που ονομάζεται χάρτη, και στη συνέχεια υπάρχει μια λειτουργία που είναι προφανώς ονομάζεται initMap. Έτσι, αυτό είναι σαν το δικό μας έθιμο κομμάτι του παζλ στο Scratch. Δημιουργήσαμε ένα κομμάτι της λειτουργικότητα που ονομάζεται initMap, και μπορείτε να το είδος της συμπεράνουμε τι συμβαίνει εδώ. Από την αριστερή πλευρά, έχουμε μια μεταβλητή, έτσι θα πάμε να θέσει την ακόλουθη πράγμα μέσα σε αυτό το μεταβλητό, από δεξιά προς τα αριστερά. Η δεξιά πλευρά λέει, hey πρόγραμμα περιήγησης, να μου δώσει ένα νέο χάρτη του Google. Και google.maps.map είναι απλά ένα funky τρόπο του διευκρινίζοντας ότι αυτή τη λειτουργία ανήκει στους Χάρτες Google. Μετά τις παρενθέσεις, που έχουμε δει πριν από αυτό, hey πρόγραμμα περιήγησης, να πάρει μένα τα στοιχεία της σελίδας, η ετικέτα στη σελίδα του οποίου μοναδικό αναγνωριστικό is-- Κοινό: [δεν ακούγεται] DAVID Malan: --map. Και τι συμβαίνει, καθώς, Αυτή η γραμμή μαζί, γραμμή 23, ουσιαστικά λέει, hey πρόγραμμα περιήγησης, πηγαίνετε πάρετε μου ότι άδειο div στη σελίδα των οποίων μοναδικό αναγνωριστικό είναι χάρτης, γιατί θέλω να εισάγετε σε it-- ένεση σε αυτό, αν will-- ένα σωρό περιεχομένου που συμβαίνει να είναι προέρχονται από το διαδίκτυο, ακολούθως. Και της Google κάνει όλα αυτά για μας. Έτσι και πάλι, στο τέλος της ημέρας, έχουμε αυτό το παράδειγμα της αφαίρεσης. Δεν έχω καμία ιδέα για το τι ένας χάρτης είναι ή πώς να εφαρμόσουν ένα χάρτη API. Εμείς δεν χρειάζεται να. Πρέπει απλώς να πω το χάρτη πού να θέσει τον εαυτό της, και να αφήσει εκείνες τις υποκείμενες εφαρμογή λεπτομέρειες στο Google. Τώρα υπάρχει προφανώς δύο τμήματα δεδομένων ότι αυτό το παράδειγμα είναι παρέχοντας στο API της Google. Προφανώς το κέντρο του χάρτη, και το επίπεδο ζουμ, να το πω έτσι. Και όμως κάποιοι αναγνωρίζουν αυτά συντεταγμένες, γεωγραφικό πλάτος και μήκος; Μάλλον όχι, αλλά μπορούμε να πάμε πίσω προς το φροντιστήριο, κυριολεκτικά δείτε. Αλλά εμείς θα το δούμε σε λίγο. επίπεδο ζουμ είναι μια τιμή μεταξύ, εγώ δεν κάνω Ξέρετε, ένα στα 13 ή κάτι τέτοιο. Απλώς έχει να κάνει με το πόσο μακριά είστε μεγέθυνση ή σμίκρυνση, και αυτό είναι όλο. Και τώρα στο τέλος της η σελίδα, γραμμή προειδοποίηση 29-- είναι λίγο άσχημο, διότι το wraps-- αυτή τη γραμμή κώδικα είναι ό, τι κατεβάζει με το πρόγραμμα περιήγησης πραγματική API της Google. Όλα του κώδικα που της Google Οι μηχανικοί έχουν γράψει ότι η εφαρμογή όλο αυτό το χαρακτηριστικό της ενσωμάτωσης χάρτες. Τώρα, ας μην αλλάξει τίποτα. Εάν είστε μετά μαζί, να προχωρήσει και να απλά να αποθηκεύσετε το αρχείο, αν έχετε πράγματι ό, τι έχω. Πηγαίνετε στο URL του. Μπορείτε να κάνετε κλικ στο κουμπί Εκτέλεση επάνω στην κορυφή και ότι θα πει Σας το URL του web server σας και πάλι. Και θα σας οδηγήσει σε μια νέα καρτέλα. Εάν κάνετε κλικ στο κουμπί Open για map.html, και οι πιθανότητες είναι είστε πρόκειται να πάρει μια ειδοποίηση, ένα μήνυμα σφάλματος, ναι; Μήνυμα σφάλματος, μήνυμα σφάλματος; Έτσι, δυστυχώς, το σφάλμα μήνυμα δεν είναι ότι διαφωτιστικό εκτός και αν στην πραγματικότητα ανοίξετε το κονσόλα, ότι η ειδική καρτέλα μας διατηρείται το άνοιγμα χθες και λίγο νωρίτερα σήμερα. Αλλά εγώ σκόνταψε σε αυτό νωρίτερα, οπότε έχω ήδη καταλάβει ποια είναι η λύση. Στη σημερινή διαφάνειες, ή μάλλον, σε Cloud9, προειδοποίηση ότι εμείς δεν κάνουμε κάτι εσκεμμένα. Παρατηρήστε ότι αυτή η ετικέτα script στο γραμμή 29, αν διαβάσετε μέσα από αυτό, είναι σαν maps.googleapis.com/ κάτι, κάτι, κάτι, Στη συνέχεια παρατηρήσετε κάποιον, ένας από τους προγραμματιστές, έγραψε σε όλα τα κεφάλαια γράμματα, το κλειδί API σας. Εμείς πρέπει να επικολλήσετε κάτι εκεί. Και αυτό ήταν το βήμα Το έκανα για μας πριν, και πάλι θα μπορούσαν μαύρη λίστα μας αν ξαφνικά, 12 ή περισσότερους από εμάς αρχίσετε να χρησιμοποιείτε το ίδιο κλειδί, αλλά ας δούμε τι θα συμβεί. Έτσι, αν πάτε στο σημερινό διαφάνειες, ένα slide αργότερα, υπάρχει αυτό το πολύ funky εμφάνιση συμβολοσειρά κειμένου. Προχωρήστε και απλά αντιγράψτε αυτό και επικολλήσετε όπου λέει κλειδί API σας. Αυτό είναι το ένα θα υπογράψει για. Και σίγουρα δεν προσπαθούν πληκτρολογώντας το χέρι, διότι αισθάνεται γεμάτη με τυπογραφικά λάθη, ενδεχομένως. Έτσι απλά να αντιγράψετε και να επικολλήσετε αυτό. Και πρόκειται να κάνει τη γραμμή πλέον, αλλά τώρα, ακριβώς για να είναι σαφής, θα πρέπει να κοιτάξουμε λίγο πιο όπως αυτή, όπου το κλειδί δεν ισούται κεφαλαιοποιούνται φωνάζουν σε σας. Αποθηκεύστε τη σελίδα σας, πηγαίνετε πίσω στην άλλη καρτέλα, reload, και ελπίζουμε να δούμε ένα χάρτη πού; Κοινό: Αυστραλία. DAVID Malan: Αυστραλία. Έτσι, προφανώς, αυτά είναι η Συντεταγμένες GPS της Αυστραλίας. Και επιτρέψτε μου να περπατήσετε γύρω για μια στιγμή και να βοηθήσει όποιον δεν είναι αρκετά εκεί, αλλά επιτρέψτε μου να προτείνω, μέσω του Google, βρείτε το GPS συντεταγμένες της δικής σας πατρίδα ή τη δική πατρίδα σας. Και κατά πάσα πιθανότητα η Google μπορεί να μετατρέψει αυτό up, ή η Wikipedia μπορεί να σας πει. Αλλά να επιλέξουν δύο διαφορετικές τιμές για το γεωγραφικό πλάτος και μήκος, πάει πίσω και να επικολλήσετε τους, και Στη συνέχεια επαναλάβετε τη φόρτωση της σελίδας μετά από την αποθήκευση και δείτε αν μπορείτε να έχετε ένα χάρτης για τη δική σας πατρίδα. Και όταν τελειώσετε με ότι, η παρακολούθηση challenge-- και εγώ θα δώσω λίγο λιγότερο κατεύθυνση, σκόπιμα, έτσι ώστε να μπορείτε σκόπιμα Πρέπει να αγωνιστούμε για ένα ζευγάρι λεπτά με την τεκμηρίωση, αλλάξετε τον χάρτη να μην είναι αυτό καρτουνίστικη προεπιλογή, αλλά ένα δορυφορικό χάρτη. Έτσι μπορείτε να δείτε πραγματικά δορυφόρου εικόνες αντί για τα όμορφα χρώματα. Και η υπόδειξη θα σας δώσω είναι να αλλάξετε τον τύπο του χάρτη. Πηγαίνετε πίσω στο ότι να πάρει ξεκίνησε τη σελίδα για έμπνευση. Όπως ίσως θα έχετε φανεί, αν ψάχνετε, υπάρχουν τόσα πολλά περισσότερα πράγματα που μπορείτε να κάνετε. Μερικοί από εσάς έχετε ήδη αλλάξει τον τύπο του χάρτη. Αλλά μπορείτε να do-- για παράδειγμα, επιτρέψτε μου πάμε σε κάτι που κάναμε για το μάθημα Έχω teach-- maps.cs50.net. Ένας από τους προπτυχιακούς μας το έκανε αυτό. Εμείς κέντρο του χάρτη πάνω από το Harvard Yard και επικαλύπτει όλα αυτά τα ονόματα κτιρίου, και είχαμε τον προσθέσετε αυτό. Έτσι, αν θέλετε να αναζητήσετε, για παράδειγμα, Matthews Hall, έχουμε ένα μικρό drop-down μενού. Και νομίζω ότι με τη χρήση Bootstrap, το βιβλιοθήκη συζητήσαμε νωρίτερα για αυτό. Και αν κάνετε κλικ σε Matthews Hall, αμέσως άλματα το χάρτη σε ένα ορισμένο τοποθεσία, και το δείχνει σας μια εικόνα σε αυτό το μικρό pop-up. Αλλά ακόμη και αυτό το μικρό pop-up, δεν είχαμε εφαρμόσει. Αν μου μετακινηθείτε προς τα κάτω για να πάρει μας ξεκίνησε τη σελίδα και να αναζητήσουν πληροφορίες παράθυρα, θα δείτε ότι μερικά από τα λειτουργικότητα εσείς μπορεί να προσθέσει, αν και με λίγο πιο περίπλοκο, Είναι κάτι που ονομάζεται ένα παράθυρο πληροφοριών. Και αν κάνω κλικ ένα παράδειγμα εδώ, και αυτό είναι ό, τι είναι διασκεδαστικό, μπορείτε να κάνετε τα πράγματα όπως αυτό, κάνοντας κλικ σε ένα δείκτη και, στη συνέχεια, voila, πληροφορίες αναδύεται. Έτσι, δεν έχουμε αρκετά εισαχθεί αρκετά χαρακτηριστικά του JavaScript να ζωγραφίσει μια εικόνα του πώς ακριβώς θα μπορούσε να είναι καλωδιωμένοι όλα αυτά τα πράγματα μαζί, αλλά έχουμε το είδος της γδαρμένο από την επιφάνεια. Στην πραγματικότητα, αυτό που έκανα ακριβώς όταν Χτύπησα σε αυτό το δείκτη, ήταν προκαλώντας ένα συμβάν, μια αποκαλούμενη στο συμβάν κλικ. Και είμαστε πραγματικά είδαμε ένα εκδήλωση νωρίτερα σήμερα, η λεγόμενη υποβάλλουν εκδήλωση, όταν ήμασταν πρόληψη ο χρήστης από την αναζήτηση για τις γάτες. Έτσι έχουμε το είδος πήρε και διάλεξαν μεταξύ όλων αυτών των διαφόρων χαρακτηριστικών, για να σας δώσει μια αίσθηση, ελπίζουμε, από ό, τι μπορείτε πραγματικά κάνει με λίγο περισσότερη άνεση στον προγραμματισμό, και εντελώς δωρεάν πόρους. Καμιά ερώτηση? Όχι? Αυτή είναι η τελευταία ευκαιρία σας, τουλάχιστον σήμερα, την Παρασκευή, να πάρει κάτι από το στήθος σας έτσι ώστε να μπορείτε να περπατήσετε έξω από εδώ αυτοπεποίθηση και άνετο. Ναί. Κοινό: Γιατί δεν το κάνουν μπορείτε να προσθέσετε ένα ακόμη πράγμα; DAVID Malan: Ω Θεέ μου. Πρέπει να ξεκουραστεί αυτό το Σαββατοκύριακο, νομίζω. Άλλες ερωτήσεις; Κοινό: [δεν ακούγεται] DAVID Malan: Μπορείτε can-- σε Internet Explorer, Αναπαύσου εν ειρήνη, που χρησιμοποιείται για να είναι σε θέση να βάλει VB σενάριο, εικονική βασικό σενάριο, αλλά πραγματικά ποτέ δεν πιάστηκε σε. Έτσι, η σύντομη απάντηση είναι ακριβώς το JavaScript. Άλλες ερωτήσεις; Εντάξει, καλά, επιτρέψτε μου να το κάνουμε αυτό. Επιτρέψτε μου να αρπάξει τους συναδέλφους μας έξω. Έχουν κάποια αξιολόγηση μορφές που θέλουν όλοι να περάσουν μερικά λεπτά συμπλήρωση. Θέλουν να συλλέγει αυτή τη μορφή και οποιοδήποτε απαλλαγές που μπορεί να έχετε έξω. Θα έχουν επίσης πιστοποιητικά. Υποθέτω ότι υπάρχει ακόμα μερικά σνακ έξω. Επιτρέψτε μου να περάσουν αυτά τα έξω, και αν έχετε απορίες, εν τω μεταξύ, Θα περπατήσετε γύρω από περισσότερα χωριστά και μπορούμε να ξεκινήσετε. Ναι φυσικά. Κοινό: [δεν ακούγεται] DAVID Malan: Αυτό είναι Συνήθως αλήθεια αυτές τις μέρες. Σίγουρα με την ιστοσελίδα λογισμικό, που κλίνει για τους άλλους είσαι είτε αισθητικά χρησιμοποιώντας τα πράγματα όπως Bootstrap, έτσι ώστε να μην πρέπει να εφαρμόσουν το χαμηλό επίπεδο λεπτομέρειες του μενού και κουμπιά και όλα αυτά. Είσαι κλίνει σε κάποιον όπως το Google, έτσι ώστε να Δεν χρειάζεται να οικοδομήσουμε μια Uber των επιχειρήσεων και των επιχειρήσεων χαρτογράφηση, καθώς και κάθε αριθμός παρόμοιων εφαρμογές. Στην πραγματικότητα, συνδέσεις είναι δημοφιλής, πάρα πολύ. Αν έχετε χρησιμοποιήσει το Spotify ή οποιοσδήποτε αριθμός των δικτυακών τόπων, θα συνδεθείτε σε κάποιο ιστοσελίδες που χρησιμοποιούν το Facebook. Έτσι τι είναι ωραίο, υπάρχει είναι APIs για συνδέσεις στις μέρες μας, έτσι ώστε να μην έχουν για να έχετε το δικό σας τραπέζι χρήστες και όλων των δικών σας δεδομένων αναγκαστικά στον ίδιο βαθμό. Μπορείτε να αφήσετε το Facebook κάνει όλα της πολυπλοκότητας για σας. Έτσι είναι μια συναρπαστική στιγμή, Ειλικρινά, στον προγραμματισμό, γιατί υπάρχουν τόσες πολλές τρίτους υπηρεσίες που μπορείτε να χτίσετε πάνω από. Και πάλι, η τιμή που πληρώνετε είναι είτε οικονομικά ή downtime. Εάν η Google πηγαίνει κάτω, το ίδιο κάνει και Uber, αναμφισβήτητα, αλλά ίσως αυτό είναι ένα λογικές trade-off. Και πάλι, αυτό ήταν ένα από τα θέματα, Ας ελπίσουμε ότι, για τις τελευταίες δύο ημέρες, Είναι αυτοί οι συμβιβασμοί. Και σπάνια θα υπάρχει να είναι μια σωστή απάντηση. Είναι πραγματικά η καλύτερη δύο ή περισσότερες απαντήσεις. Περάστε αυτές γύρω. Και αυτοί οι λογαριασμοί Cloud9 θα συνεχιστεί στην εργασία, στη θεωρία, στο διηνεκές. Μπορείτε να βρείτε εάν περιμένετε μερικές μέρες ή μια εβδομάδα ή περισσότερο για να συνδεθείτε ξανά σε αυτά, μπορεί να πάρει σαν ένα ή πέντε λεπτά για να ανοίξει back up, αλλά αυτό είναι μόνο και μόνο επειδή βάζουν να κοιμηθεί για να σώσει τους πόρους.