[Παίζει μουσική] DAVID Malan: Εντάξει, αυτό είναι CS50. Αυτό είναι το τέλος της εβδομάδας οκτώ. Και σήμερα, έχουμε αρχίσει να συμπληρώσετε κάποια κομμάτια όταν πρόκειται για την οικοδόμηση τα πράγματα στο διαδίκτυο. Έτσι, υπενθυμίζουν ότι τη Δευτέρα ξοδεύουμε πολύ περισσότερο χρόνο σε PHP, η οποία είναι αυτή η δυναμική γλώσσα προγραμματισμού που μας δίνει τη δυνατότητα εξόδου, μεταξύ άλλων, πράγματα, HTML και άλλα τέτοιου είδους περιεχόμενο ότι θα θέλουν να δουν. Αλλά δεν έχουμε πραγματικά κοίταξε πώς θα πάμε να αποθηκεύει πληροφορίες. Πράγματι, σχεδόν κανέναν από το σούπερ Ενδιαφέρουσες ιστοσελίδες που επισκέπτεστε σήμερα έχουν κάποιο είδος της βάσης δεδομένων στο πίσω άκρο, έτσι δεν είναι; Facebook αποθηκεύει σίγουρα πολλά δεδομένα για όλους μας και όλα τα καταστήματα του Gmail του e-mail σας. Και έτσι, πολλοί άλλοι ιστότοποι δεν είναι μόνο στατικό περιεχόμενο που είναι πληροφοριακό. Είναι πραγματικά δυναμική με κάποιο τρόπο. Μπορείτε να συνεισφέρουν, ενημερώνει οι σελίδες για τους άλλους ανθρώπους. Μπορείτε να πάρετε τα μηνύματα, μπορείτε να στείλετε μηνύματα, και ούτω καθεξής. Έτσι, σήμερα, θα εξετάσουμε πιο προσεκτικά τα θεμέλια του έργου ότι θα βουτήξει στο επόμενο εβδομάδα, CS50 Οικονομικών, η οποία είναι πραγματικά πρόκειται να σας έχουμε χτίσει κάτι που δεν σε C, αλλά στην PHP. Μια ιστοσελίδα που μοιάζει κάτι σαν αυτό που επιτρέπει να αγοράζουν και να πωλούν τα αποθέματα που είναι πραγματικά πρόκειται να βασιστεί σε πραγματικό χρόνο στοιχεία για τα αποθέματα από το Yahoo Finance. Και έτσι, τελικά, θα έχετε την ψευδαίσθηση για τον εαυτό σας και για τους χρήστες ότι είστε πραγματικά αγοράζουν και να πωλούν τα αποθέματα και να πάρει σχεδόν σε πραγματικό χρόνο ενημερώσεις, διαχείριση ενός χαρτοφυλάκιο, τα οποία όλα θα απαιτεί την ύπαρξη, τελικά, μια βάση δεδομένων των χρηστών. Έτσι, με δικά σας λόγια, ειδικά αν δεν είστε σούπερ εξοικειωμένοι με τον υπολογιστή επιστήμη ή βάσεις δεδομένων, ό, τι Ξέρετε μια βάση δεδομένων για να αυτή τη στιγμή, σε nontechnical όρους; Τι είναι αυτό? Πώς θα την περιέγραφες με συγκάτοικο ή έναν φίλο; Κοινό: [δεν ακούγεται] πληροφοριών [δεν ακούγεται] DAVID Malan: Έτσι, ένας κατάλογος των πληροφοριών, ή store-- έναν κατάλογο πληροφοριών ότι ίσως να θέλετε να αποθηκεύσετε για κάτι, όπως ένα χρήστη. Και τι κάνουν οι χρήστες να έχουν που συνδέονται με αυτά; Αν είστε ένας χρήστης στο Facebook ή το Gmail, ποια είναι τα χαρακτηριστικά ότι όλοι μας οι χρήστες έχουν; Όπως, τι θα μπορούσε να είναι μερικά από τα στήλες στο φύλλο εργασίας στην οποία θα αναφέρθηκε τελευταία φορά; Επειδή και πάλι, μπορείτε να σκεφτείτε μια βάση δεδομένων πραγματικά σαν ένα φανταχτερό αρχείο Excel ή το Google Υπολογιστικό φύλλο ή αρχείο της Apple αριθμοί. Λοιπόν, τι νομίζεις της όταν σκέφτεστε ένα χρήστη; Τι έχουν; Τι είναι αυτό? Κοινό: Ένα όνομα. DAVID Malan: Ένα όνομα. Έτσι, αν το όνομα, όπως ο David Malan θα είναι το όνομα κάποιου χρήστη. Τι άλλο μπορεί ένας χρήστης να έχει; Κοινό: Ένα αναγνωριστικό. DAVID Malan: Ένα αναγνωριστικό. Έτσι, σαν ένα αριθμό ταυτότητας, όπως το Harvard σας ID σας ή του Yale Net ID ή τα παρόμοια. Τι άλλο θα μπορούσε να έχει ένας χρήστης; Κοινό: Κωδικός πρόσβασης. DAVID Malan: Ο κωδικός πρόσβασης, ίσως μια διεύθυνση, ίσως ένας αριθμός τηλεφώνου, ίσως μια διεύθυνση ηλεκτρονικού ταχυδρομείου. Έτσι, υπάρχει τσαμπιά από πεδία και αυτό θα μπορούσε το είδος του να βγει εκτός ελέγχου γρήγορα μόλις ξεκινήσετε συνειδητοποιώντας, OH, ας αποθηκεύσετε αυτή και ας αποθηκεύσετε αυτό και αυτό. Αλλά πώς μπορούμε πραγματικά να κάνουμε αυτό; Έτσι και πάλι, το νοητικό μοντέλο να έχουν για σήμερα όπως εμείς βουτήξει πραγματική SQL, Structured Query Language, είναι μια βάση δεδομένων που μοιάζει με αυτό. Είναι απλά γραμμές και στήλες. Και μπορείτε να φανταστείτε φύλλα Google ή οποιοδήποτε αριθμό άλλων προγραμμάτων. Αλλά τι είναι το κλειδί για την MySQL, η οποία είναι η λογισμικό βάσης δεδομένων που πρόκειται να χρησιμοποιήσετε, η ελεύθερα ανοιχτά available-- χρήσεις Facebook αυτό και οποιοδήποτε αριθμό άλλων websites-- βάση δεδομένων αποθηκεύει τα πράγματα relationally. Και μια σχεσιακή βάση δεδομένων Σημαίνει απλώς ότι ένα κυριολεκτικά αποθηκεύει τα δεδομένα του σε σειρές και στήλες. Είναι τόσο απλό όσο αυτός. Έτσι, ακόμη και κάτι σαν χρησμό ότι μπορεί να έχετε ακούσει γενικά είναι μια σχεσιακή βάση δεδομένων. Και κάτω από την κουκούλα του, αποθηκεύει δεδομένα σε γραμμές και στήλες. Και η Oracle θα χρεώνει ένα πολλά χρήματα για να το κάνουμε αυτό, λαμβάνοντας υπόψη ότι η MySQL τέλη Σας τίποτα για την ίδια. Έτσι, SQL πρόκειται να μας δώσει τουλάχιστον τέσσερις πράξεις. Η δυνατότητα να επιλέξετε τα δεδομένα, όπως η ανάγνωση δεδομένων, εισαγωγή, τη διαγραφή, και ενημέρωση δεδομένων. Με άλλα λόγια, αυτά είναι Πραγματικά, οι τέσσερις βασικές πράξεις που πρόκειται να μας επιτρέψει να αλλάξουμε πράγματα σε αυτές τις γραμμές και στήλες. Το εργαλείο που θα χρησιμοποιήσουμε σήμερα ιδιαίτερα να μάθουν SQL και να παίξει μαζί του και πάλι ονομάζεται PHP MyAdmin. Είναι web-based εργαλείο. Σύνολο τυχαίο το γεγονός ότι αυτό είναι γραμμένο σε PHP. Αλλά πρόκειται να μας δώσει μια γραφική διεπαφή χρήστη, έτσι ώστε να μπορούμε πραγματικά να δημιουργούν αυτές τις γραμμές και στήλες και στη συνέχεια να τους μιλήσω μέσω του κωδικού. Έτσι, ας τώρα να αρχίσουμε να αυτό που νομίζω ότι είναι ειλικρινά το είδος της διαδικασίας της διασκέδασης την κατασκευή και την πίσω πλευρά των δικτυακών τόπων, τα μέρη ότι οι χρήστες δεν Βλέπετε, αλλά σίγουρα ενδιαφέρονται για, γιατί αυτό είναι μάλλον για τα δεδομένα πρόκειται. Έτσι, παρόμοια με C και ένα λίγο λιγότερο όπως PHP, SQL, ή μια βάση δεδομένων που υποστηρίζει SQL, έχει τύπους, τουλάχιστον αυτά τα δεδομένα και τσαμπιά από τους άλλους. ΧΑΡ, VARCHAR, INT, BIGINT, Δεκαδικό και DATETIME. Και υπάρχει μια ολόκληρη σωρό άλλα χαρακτηριστικά, αλλά ας το κάνουμε αυτό με την τον τρόπο της πραγματικής παράδειγμα. Πάω να μπω σε CS50 IDE όπου, εκ των προτέρων, έχω εισέλθει και έχω επισκεφθεί, επίσης, μια διεύθυνση URL για αυτό το εργαλείο που ονομάζεται PHP MyAdmin. Και στο πρόβλημα που επτά, θα το πω ακριβώς πώς να φτάσουμε σε αυτό το περιβάλλον επισης. Από την πάνω αριστερή γωνία, παρατηρήσετε ότι λέει διάλεξη. Και αυτό σημαίνει απλά ότι εκ των προτέρων, έχω δημιουργήσει μια κενή βάση δεδομένων που ονομάζεται διάλεξη ότι δεν έχει φύλλα σε αυτό ακόμα. Δεν υπάρχει καμία γραμμές και στήλες. Επειδή το πρώτο πράγμα που θα πάμε να κάνουμε έχει αρχίσει να δημιουργήσετε έναν πίνακα ότι πρόκειται για την αποθήκευση των χρηστών μας. Έτσι, κυριολεκτικά πάνω εδώ στα δεξιά, είμαι πρόκειται να πει τη βάση δεδομένων Θέλω ένα πίνακα που ονομάζεται Χρήστες. Έτσι, αυτό είναι σαν το αρχείο το οποίο θέλουν να αποθηκεύουν όλα τα δεδομένα μου. Και πόσες στήλες; Λοιπόν, ας το κρατήσουμε απλό για τώρα. Θέλω μόνο να αποθηκεύσετε σαν ένα το όνομα χρήστη και ένα όνομα για ένα χρήστη. Θα αρχίσετε μικρό. Θέλω, λοιπόν, δύο στήλες συνολικά. Και Πάω να προχωρήσει και κάντε κλικ στο κουμπί Μετάβαση. Και στη συνέχεια, για αυτά τα στήλες, τι Πάω να do-- εάν αυτό το internet cooperates-- όλα τα δικαιώματα, έτσι θα πάμε να δοκιμάσουμε ξανά. Πάω να δημιουργήσετε έναν πίνακα που ονομάζεται Οι χρήστες με δύο στήλες, κάντε κλικ στο κουμπί Μετάβαση, εντάξει. Τώρα έχουμε πραγματικά γρήγορα. Σας ευχαριστώ, πολύ καλά κάνει. Εντάξει, έτσι τι θέλουμε οι στήλες αυτές να ονομάζεται; Έτσι, ένας πρόκειται να κληθεί Όνομα Χρήστη. Έτσι, το μόνο που βλέπω here-- και το περιβάλλον ειλικρινά παίρνει λίγο άσχημο τελικά, μόλις αρχίσετε να πληκτρολογείτε σε όλα αυτά τα δεδομένα. Αλλά τι είναι ωραίο είναι ότι το είδος του παραδόξως, είμαι δημιουργώντας στήλες, αλλά το εργαλείο έχει ανόητα τους που ορίζονται στις γραμμές έτσι ώστε να μπορώ να διαμορφώσετε αυτές τις στήλες. Έτσι, υπάρχουν δύο κενά υπάρχουν κάτω από το Όνομα. Και ένας από αυτούς τους τομείς Ι θέλουν να ονομάζονται Όνομα Χρήστη, και η άλλη στον τομέα θέλω να καλέσει το όνομα. Και τώρα έχω να επιλέξετε τύπους δεδομένων για αυτά τα πράγματα. Έτσι, ενώ στο Excel και φύλλα Google, αν θέλετε μια στήλη, μπορείτε κυριολεκτικά απλά πληκτρολογήστε το όνομα ή Όνομα Χρήστη, πατήστε Enter. Ίσως το κάνουν έντονη γραφή μόνο για λόγους σαφήνειας, αλλά αυτό είναι όλο. Δεν καθορίζετε το τύποι των στηλών. Τώρα, σε φύλλα Google ή το Excel, μπορείτε θα μπορούσε να καθορίσετε τον τρόπο καθίσταται η δεδομένων. Θα μπορούσατε να πάτε στο μενού Format, και να καθορίσετε δείξτε αυτό σαν σύμβολο του δολαρίου, δείχνουν αυτό σαν μια Μιατιμήκινητήςυποδιαστολής. Έτσι, είναι συναφείς στο πνεύμα με ότι αυτό που είμαστε έτοιμοι να το κάνουμε, αλλά αυτό είναι πραγματικά πρόκειται να αναγκάσει τα δεδομένα να είναι ένας ορισμένος τύπος. Τώρα, παρόλο που πριν από λίγο μου είπε ότι υπάρχει μόνο λίγοι τύποι δεδομένων, υπάρχει πράγματι μια πάρα πολύ, και είναι σε διάφορους βαθμούς εξειδίκευσης. Και ως ένα μέρος, μπορείτε μπορεί να κάνει ακόμη και φανταχτερά πράγματα όπως γεωμετρίες αποθήκευσης μέσα από μια βάση δεδομένων. Μπορείτε να αποθηκεύσετε τα πράγματα όπως συντεταγμένες του GPS και στην πραγματικότητα να βρει, μαθηματικά, σημεία που βρίσκονται κοντά στους άλλους. Αλλά θα πάμε να κρατήσει αυτό το σούπερ απλό και να φτάσει μέχρι εδώ, όλα οι λεγόμενες τύπους χορδή. Έτσι, εδώ είναι μια λίστα των α σωρό επιλογές. ΧΑΡ, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. Και αυτό είναι το είδος της συντριπτικής. Και, δυστυχώς, κάπως παραδόξως C, α ΧΑΡ ​​δεν είναι πραγματικά ένα ΧΑΡ. Εάν έχετε ορίσει σε μια βάση δεδομένων ότι ο τύπος δεδομένων σας είναι ΧΑΡ, αυτό σημαίνει ότι ναι, είναι ένα ΧΑΡ, αλλά είναι ένα ή περισσότερα χαρ. Και θα πρέπει να καθορίσετε πόσα Chars θέλετε. Έτσι, τι είναι ένα τυπικό μήκος για ένα όνομα χρήστη; Υπάρχει ένα όριο συνήθως; Κοινό: [δεν ακούγεται] DAVID Malan: 16 ίσως; Κάτι τέτοιο. Ξέρετε, στην πίσω ημέρα, χρησιμοποιείται για να είναι οκτώ. Μερικές φορές είναι 16, μερικές φορές Είναι ακόμη περισσότερο από αυτό. Και έτσι, αυτό δεν σημαίνει να μου δώσει ένα ΧΑΡ. Αυτό σημαίνει ότι πρέπει να καθορίσετε το μήκος του πεδίου, και τώρα μπορώ να πω κάτι σαν 16. Και υπάρχει ένας συμβιβασμός εδώ. Έτσι, θα δούμε σε μια στιγμή αυτό σημαίνει ότι το ένα, Κάθε όνομα χρήστη πρέπει να είναι 16 χαρακτήρες. Αλλά περιμένετε ένα λεπτό, Μ-Α-Ι-Α-Ν. Αν αυτό είναι όνομα χρήστη μου και είμαι μόνο με τη χρήση πέντε, Τι θα προτείνατε ότι η βάση δεδομένων να κάνουν για τις άλλες 11 χαρακτήρες που Έχω κρατήσει χώρο για; Τι θα εκανες? Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, μόνο τα κάνουν όλα null. Κάντε τους χώρους. Αλλά μάλλον μηδενική, έτσι, ένα πολλά μηδενικά ανάποδη. Έτσι, από τη μία πλευρά, έχουμε τώρα φρόντισε ώστε το όνομα χρήστη μου δεν μπορεί να είναι πάνω από 16 χαρακτήρες. Και η άλλη πλευρά του ότι είναι ότι αν είχα ένα πραγματικά μεγάλο όνομα ή ήθελαν ένα πραγματικά μεγάλο το όνομα χρήστη, όπως κάποιοι από εσάς παιδιά μπορεί να έχουν σε αυτό το κολέγιο ή σε Yale.edu, δεν μπορείτε να έχετε ένα. Και έτσι στην πραγματικότητα, αν έχετε καταγραφεί ποτέ για μια ιστοσελίδα και θα έχετε φώναξε σε λένε τον κωδικό πρόσβασής σας είναι πάρα πολύ καιρό ή το όνομα χρήστη σας είναι πάρα πολύ καιρό, είναι απλώς και μόνο επειδή ένας προγραμματιστής, όταν διαμόρφωση της βάσης δεδομένων του, αποφάσισε ότι αυτό το πεδίο θα δεν μπορεί να υπερβαίνει αυτό το μήκος είναι. Εντάξει, έτσι τι εάν προχωρούμε για να αναφέρουμε; Πόσο καιρό θα πρέπει να το Το όνομά τυπικό άνθρωπο είναι; Πόσους χαρακτήρες, 16; Υποθέτω ότι θα μπορούσε βρείτε κάποιον σε αυτό το δωμάτιο όπου από την πρώτη του ή της συν τελευταία όνομα είναι μεγαλύτερο από 16 χαρακτήρες. Έτσι, τι είναι καλύτερο από αυτό, 17; 18; 25; Bigger; 30; Κοινό: [δεν ακούγεται] DAVID Malan: 5000, Θεέ μου. Έτσι, αυτό είναι πιθανώς μια αξιοπρεπή άνω όριο, ας πούμε. Και εδώ έχουμε το είδος της έχουν να κάνει μια κλήση κρίσης. Όπως, δεν υπάρχει σωστή απάντηση εδώ. Άπειρο δεν είναι αρκετά πιθανό, γιατί είμαστε τελικά πρόκειται να have-- είμαστε πρόκειται να τρέξει έξω από τη μνήμη. Έτσι, πρέπει να κάνουμε μια απόφαση κλήση σε κάποιο σημείο. Πολύ συχνές ήταν, για παράδειγμα, να use-- και επιτρέψτε μου να καθορίσετε ΧΑΡ εδώ όπως before-- 255 ήταν κυριολεκτικά η ανώτατο όριο σε αυτό το λογισμικό βάσης δεδομένων πριν από χρόνια. Και έτσι, πολλά των ανθρώπων Θα ήθελα απλώς να πω, μια χαρά. 255 είναι το όριο. Ας απλά χρησιμοποιήστε το μέγιστο. Και αυτό είναι αρκετά γελοίο. Όπως, αν κάποιος είναι πληκτρολόγηση αναφέρουμε για 200 συν χαρακτήρες, ότι λίγο γελοίο. Όμως, να θυμάστε ότι δεν είναι ASCII το μόνο σύστημα για τους χαρακτήρες. Και έτσι, ιδιαίτερα σε μια πολλές ασιατικές γλώσσες όπου υπάρχει χαρακτήρες δεν μπορούμε εκφράζουν στα πλήκτρα, όπως των ΗΠΑ μου πληκτρολόγιο, ορισμένοι χαρακτήρες πραγματικότητα διαρκέσει έως 16 bits αντί των οκτώ bits. Και έτσι, αυτή η πραγματικότητα δεν είναι και τόσο παράλογο ότι χρειαζόμαστε περισσότερη χώρο, αν θέλουμε να χωρέσει μεγαλύτερο χαρακτήρες από την ίδια ΗΠΑ centric αυτά που έχουμε την τάση να συζητήσουν. Έτσι, χρειαζόμαστε κάποιο άνω όριο. Δεν ξέρω ποιο είναι το καλύτερο είναι, αλλά 255 είναι γενικά ένας κοινός. 25 είναι χαμηλό. 16, 32 αισθάνονται χαμηλή. Θα ήθελα να σφάλουν προς την πλευρά κάτι υψηλότερο. Αλλά υπάρχει ένας συμβιβασμός, όπως πάντα. Ποια είναι η, ίσως, προφανείς εμπόριο off της επιφυλάσσει 255 χαρακτ για το όνομα του καθενός στη βάση δεδομένων μου; Κοινό: [δεν ακούγεται] DAVID Malan: Τι είναι αυτό; Κοινό: [δεν ακούγεται] DAVID Malan: Είναι μια πολλή μνήμη, έτσι δεν είναι; M-Α-L-Α-N. Έχω χάσει λίγο 250 χαρακτήρες ακριβώς για να αποθηκεύσετε το όνομά μου αμυντικά, μόνο σε περίπτωση που κάποιος στην τάξη έχει ένα πραγματικά μεγάλο όνομα. Αυτό που φαίνεται σαν μια αδικαιολόγητη δίλημμα. Έτσι, αποδεικνύεται ότι ο SQL, Αυτή η γλώσσα της βάσης δεδομένων, υποστηρίζει πραγματικά κάτι που ονομάζεται VARCHAR, ή ασταθούς ΧΑΡ. Και αυτό είναι το είδος της Νίκαιας στην οποία αναφέρεται το συγκεκριμένο Σας επιτρέπει να καθορίσετε όχι ένα σταθερό πλάτος, αλλά μάλλον, ένα μεταβλητό πλάτος. Και πιο συγκεκριμένα, μέγιστο πλάτος του πεδίου. Έτσι, αυτό σημαίνει ότι ένα όνομα μπορεί δεν μπορεί να είναι πάνω από 250 χαρακτήρες, αλλά σίγουρα μπορεί να είναι λιγότεροι. Και η βάση δεδομένων θα είναι έξυπνοι. Εάν έχετε θέσει σε Μ-Α-Ι-Α-Ν, πρόκειται μόνο να χρησιμοποιήσει πέντε, ίσως έξι bytes για ομοειδή μία οπίσθια null χαρακτήρα, και να μην ξοδεύουν ένα επιπρόσθετο 249 ή 250 bytes άσκοπα. Έτσι, αυτό φαίνεται σαν να πρέπει να έχουν αρχίσει με αυτή την ιστορία. Αλλά υπάρχει πάντα μια ανταλλαγή. Έτσι, από τη μία πλευρά, ένα όνομα χρήστη που έχω καθορίζονται πρόκειται να κωδικοποιηθεί σκληρά σε 16, και ίσως αυτό δεν ήταν το δικαίωμα κλήσης, ίσως είναι, αλλά γιατί να μην χρησιμοποιούν VARCHARs για τα πάντα; Υπάρχει για κάποιο λόγο. Γιατί να μην χρησιμοποιήσουμε VARCHARs για κάθε τομέα της οποίας το μήκος δεν ξέρεις εκ των προτέρων αν αυτό φαίνεται να είναι ένα μεγάλο πράγμα, σωστά; Χρησιμοποιείτε μόνο όσο χώρο θα πρέπει μέχρι αυτό το όριο; Κοινό: Βραδύτερη. DAVID Malan: ορθογραφικού ελέγχου; Κοινό: Κάνει πιο αργά; DAVID Malan: Ω, είναι πιο αργή. Καλό, αυτό είναι σχεδόν πάντα η απάντηση, ειλικρινά. Όπως, ποιο είναι το δίλημμα; Είτε κοστίζει περισσότερο χώρο ή ότι κοστίζει περισσότερο χρόνο. Έτσι, στην περίπτωση αυτή, θα μπορούσε να είναι πιο αργή. Γιατί; Κοινό: [δεν ακούγεται] καθορισμό [δεν ακούγεται]. DAVID Malan: Καλή. Έτσι, μπορείτε να ανακαλέσετε από ακόμη PSED5, παίζοντας με την προσέγγισή σας στο λεξικό, αν έχετε να κατανέμει δυναμικά μνήμη ή να διατηρήσουν καλλιέργεια ενός ρυθμιστικού διαλύματος, ότι μπορεί στην πραγματικότητα να είναι αργή. Αν πρέπει να καλέσετε malloc κάτω από την κουκούλα και ίσως αυτό είναι που κάνει MySQL, έτσι Σίγουρα ότι θα μπορούσε να είναι η περίπτωση. Και αν νομίζετε τρόπο Επιστροφή στην PSet-- ή ακόμα και δύο εβδομάδες, όταν κάναμε τα πράγματα όπως δυαδική αναζήτηση ή ακόμα και γραμμική αναζήτηση, ένα από τα ωραία πράγματα για κάθε λέξη σε μια βάση δεδομένων ή κάθε λέξη σε μια στήλη είναι ακριβώς το ίδιο μήκος, ακόμη και εάν ένα σωρό από αυτούς τους χαρακτήρες είναι κενό, είναι ότι μπορείτε να χρησιμοποιήσετε τυχαίας προσπέλασης των δεδομένων σας, σωστά; Εάν γνωρίζετε ότι κάθε λέξη είναι 16 χαρακτήρες μακριά, μπορείτε να χρησιμοποιήσετε το δείκτη αριθμητική, έτσι ώστε να μιλούν και να πάτε σε μας 16, 32, 48, 64, και μπορείτε να μεταβείτε μόνο άμεσα χρησιμοποιώντας αριθμητική σε οποιαδήποτε από τις λέξεις στη βάση δεδομένων σας. Ενώ αν πρόκειται για μια VARCHAR, τι αντ 'αυτού πρέπει να κάνετε; [Κουδούνισμα τηλεφώνου] Αν είναι ένα VARCHAR, μπορείτε δεν μπορούν να χρησιμοποιήσουν τυχαίας προσπέλασης. Τι θα πρέπει να αναζητήσουμε ή να κάνετε; Ναι; Κοινό: [δεν ακούγεται] DAVID Malan: Κοίτα μέσω της whole-- ίχνος όλη τη λίστα ψάχνουν για αυτό, πιο πιθανό; Τι είδους ιδιαίτερη αξία; Κοινό: [δεν ακούγεται] DAVID Malan: Κοιτώντας για τις μηδενικές εξολοθρευτές που οριοθετούν το διαχωρισμό των λέξεων. Έτσι και πάλι, μια ανταλλαγή, και δεν υπάρχει σωστή απάντηση. Αλλά αυτό είναι όπου, ιδιαίτερα όταν οι χρήστες σας να πάρετε για να είναι πολλά και το φορτίο σας στους διακομιστές σας, η αριθμός των ανθρώπων που χρησιμοποιούν αυτό παίρνει υψηλή, αυτά είναι πραγματικά μη τετριμμένη αποφάσεις. Έτσι, μπορούμε να αφήσουμε αυτές ως αυτό, αλλά ας μετακινηθείτε προς τα κάτω πάνω προς τα δεξιά εδώ. Τώρα, υπάρχει ένα ζευγάρι των στηλών όπου θα πρέπει να κάνει μια κλήση κρίσης. Έχει νόημα να επιτραπεί χρήστη το όνομα, το όνομα του χρήστη ή του χρήστη Όνομα, για να είναι μηδενική; Δηλαδή, ακριβώς κενό. Αισθάνεται λίγο παράλογη, έτσι είμαι Δεν πρόκειται να ελέγξει αυτά τα κουτιά. Αλλά τελικά σε μια της βάσης δεδομένων, μπορείτε να πείτε, κάποιος μπορεί προαιρετικά να έχει αυτή την τιμή. Αυτή η στήλη δεν έχει να είναι πραγματικά εκεί. Τώρα, υπάρχει αυτό το drop down μενού. Και παρατηρήσετε είμαι ακόμα στην πρώτη σειρά εκεί, έτσι είμαι μιλάμε για το όνομα τώρα. Και αποδεικνύεται ότι μια βάση δεδομένων, σε αντίθεση με μια απλή απλή υπολογιστικό φύλλο, έχει ισχυρά χαρακτηριστικά ονομάζεται ευρετήρια. Και ένας δείκτης είναι ένας τρόπος να λέει ο βάση δεδομένων εκ των προτέρων ότι η ανθρώπινη Είμαι πιο έξυπνος από εσάς. Ξέρω τι είδους ερωτήματα, επιλέξτε ή εισάγετε ή να διαγράψετε ή ενημέρωσης, ότι ο κωδικός μου θα τελειώσει να μην κάνουμε σε αυτή τη βάση δεδομένων. Θέλω να διαβάσω πολλά δεδομένα. Θέλω να εισάγετε πολλά δεδομένα. Θέλω να συνεχώς διαγράψει πολλά δεδομένα. Αν ξέρω ότι θα πάω να είναι πρόσβαση σε ένα πεδίο όπως Όνομα Χρήστη πολύ, Μπορώ να πω προληπτικά η βάση δεδομένων, ξέρω περισσότερα από ό, τι, και θέλω να αποφασίσει ότι θα πρέπει ο δείκτης αυτό το πεδίο. Όταν ευρετηρίαση ένα πεδίο ή μια στήλη σημαίνει ότι η βάση δεδομένων εκ των προτέρων πρέπει να δανειστεί μερικές ιδέες από, όπως, εβδομάδα τέσσερα και πέντε και έξι από CS50 και πράγματι δημιουργία κάτι σαν μια δυαδική αναζήτηση δέντρο ή κάτι γενικά ονομάζεται ένα δέντρο Β ότι θα μάθετε σε μια κατηγορία όπως CS124 στο Χάρβαρντ, μια κατηγορία αλγορίθμων, ή οποιοδήποτε αριθμό από άλλα μέρη. Η βάση δεδομένων και η έξυπνη οι άνθρωποι που θα εφαρμοστεί θα καταλάβω πώς να αποθηκεύσετε ότι ο πίνακας των πληροφοριών στη μνήμη, έτσι ώστε οι έρευνες και άλλες εργασίες είναι εξαιρετικά γρήγορη. Δεν χρειάζεται να το κάνουμε. Δεν χρειάζεται να εφαρμόσουν γραμμική αναζήτηση ή δυαδική αναζήτηση ή ταξινόμηση με συγχώνευση ή επιλογή είδος, τίποτα από αυτά. Η βάση δεδομένων το κάνει για σας, αν σας πω ότι προληπτικά στο δείκτη αυτό το πεδίο. Και μπορείτε να δείτε πάρα πολύ, δεν υπάρχει κάποια άλλα χαρακτηριστικά μπορούμε να πούμε, η βάση δεδομένων για την επιβολή. Τι μπορεί να σημαίνει αυτό, αν μπορώ να επιλέξω Μοναδικό από αυτό το μενού, απλά διαισθητικά; Ναι; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, η το όνομα χρήστη πρέπει να είναι μοναδική. Είναι αυτό ένα καλό πράγμα ή ένα κακό πράγμα για μια βάση δεδομένων, για ένα δικτυακό τόπο με τους χρήστες; Θα πρέπει να είναι το μοναδικό όνομα χρήστη; Ναι, κατά πάσα πιθανότητα. Αν αυτό είναι ό, τι η πεδίο που χρησιμοποιούμε για να συνδεθείτε, που πραγματικά δεν θέλουν να τους ανθρώπους που έχουν η ίδια αίσθηση ή το ίδιο όνομα χρήστη. Έτσι, μπορούμε να έχουμε το βάση δεδομένων, έτσι ώστε επιβάλουν ότι τώρα στον κώδικα PHP μου ή οποιαδήποτε άλλη γλώσσα, Δεν έχω να, για παράδειγμα, ελέγξτε σημαίνει απαραίτητα αυτό το όνομα χρήστη υπάρχουν πριν άφησα κάποιον να εγγραφώ; Η βάση δεδομένων δεν θα αφήσει δύο άτομα που ονομάζεται David ή Malans εγγραφείτε σε αυτή την περίπτωση. Και, παρεμπιπτόντως, ακόμα κι αν αυτό μενού σας επιτρέπει να επιλέξετε μόνο ένα, ένα μοναδικό ευρετήριο είναι ένα που είναι αναπροσαρμόζονται για γρήγορη απόδοση, αλλά επιβάλλει και μοναδικότητα. Και θα επανέλθουμε σε αυτό το άλλα δύο σημαίνουν ακριβώς σε μια στιγμή. Εν τω μεταξύ, αν πάω να δεύτερη σειρά μου, η οποία είναι το όνομα του χρήστη, θα πρέπει να καθορίσετε ότι το όνομα πρέπει να είναι μοναδικό; Όχι, γιατί θα μπορούσε σίγουρα have-- δεν υπάρχει δύο David Malans σε αυτό το δωμάτιο, το πιο πιθανό. Αλλά αν επιλέξετε ένα διαφορετικό όνομα, θα μπορούσαμε να έχουμε σίγουρα συγκρούσεις. Σκεφτείτε πίσω στο hash πίνακες και τα παρόμοια. Έτσι, εμείς σίγουρα δεν θέλουμε για να κάνετε το πεδίο μοναδικό όνομα. Έτσι, είμαστε ακριβώς πρόκειται να φύγει ότι η παύλα, παύλα, παύλα, τίποτα. Και Πάω να φύγει ό, τι άλλο μόνο του. Πράγματι, οι περισσότεροι από αυτούς τους τομείς δεν θα πρέπει να νοιάζονται για. Και όταν είμαι έτοιμος να σώσει αυτό, αν το διαδίκτυο συνεργάζεται, Ι κλικ στο κουμπί Αποθήκευση, και πολύ, πολύ, πολύ σιγά-σιγά έχει η βάση δεδομένων να σωθεί. Και τώρα είμαι πίσω σε αυτό διεπαφή, η οποία κατά γενική ομολογία, είναι συντριπτική κατά την πρώτη ματιά. Αλλά όλα Πάω να κάνουμε είναι να κάντε κλικ στη λέξη Χρήστες πάνω αριστερά. Πάω να πάει εδώ, κάντε κλικ στην επιλογή Οι χρήστες, καθώς και από προεπιλογή, έχει εκτελέσει κάποια SQL, αλλά περισσότερα για αυτό σε μια στιγμή. Εδώ είναι μόνο μια περίληψη του τι έκανα. Και για να μην ανησυχείτε ότι βλέπετε αναφέρω της Λατινικής και της σουηδικής εδώ. Αυτά είναι μόνο η προεπιλεγμένη ρυθμίσεις, επειδή αρχικά MySQL, ή PHP MyAdmin, ένα από τα δύο συμβεί για να γραφτεί από κάποιους σουηδικού λαού. Αλλά είναι άσχετο στην περίπτωσή μας εδώ. Εντάξει, τόσο γιατί είναι αυτό όλα τα ενδιαφέροντα; Αποδεικνύεται, μπορώ να εισαγάγετε δεδομένα σε μια βάση δεδομένων με το γράψιμο κώδικα. Και είμαι προχωρήσει και να στο αρχείο μου εδώ, είμαι πρόκειται να προχωρήσει και να προσποιούνται όπως Αυτό συνδέεται με καλώδιο σε αυτή τη βάση δεδομένων, η οποία δεν είναι αυτή τη στιγμή, αλλά θα είναι όταν φτάνουμε στο πρόβλημα που επτά. Και Πάω να πάει μπροστά και να εκτελέσει μια λειτουργία που ονομάζεται ερώτημα, που θα σας δώσει στο πρόβλημα ορίσετε τον κωδικό διανομής επτά του, ότι χρειάζεται τουλάχιστον ένα επιχείρημα, το οποίο απέχει μόλις ένα string. Μια σειρά από SQL κώδικα. Έτσι, είστε έτοιμος να μάθετε πώς να γράφετε δομημένη γλώσσα ερωτημάτων. Αν θέλω να εισαγάγετε μια νέα γραμμή μέσα μου βάση δεδομένων επειδή κάποιος έχει υποβάλει μια μορφή τον κωδικό μου, θα ήθελα κυριολεκτικά γράφετε εισάγετε σε χρήστες την ακόλουθη πεδία: όνομα χρήστη, κόμμα, το όνομα, τις αξίες, και τώρα θα πρέπει να εισάγετε κάτι σαν Malan, και παραθέτω, εισαγωγικά «Δαβίδ Malan.» Και τωρα ακόμη και για όσους δεν είναι εξοικειωμένοι με τον SQL, γιατί είμαι χρησιμοποιώντας μονά εισαγωγικά στο εσωτερικό αυτού του πράσινου χορδών; Τι θα μπορούσε να είναι ο λόγος εδώ; Ανακοίνωση Είμαι συν-ανάμειξη δύο γλώσσες. Ερώτημα είναι μια συνάρτηση της PHP, αλλά παίρνει ένα επιχείρημα. Και αυτό το επιχείρημα πρέπει να είναι η ίδια γραμμένο σε άλλη γλώσσα που ονομάζεται SQL, Structured Query Language. Έτσι, ό, τι έχω Μόλις επισημανθεί εδώ Είναι αυτή η γλώσσα που ονομάζεται SQL. Έτσι, τι είναι με τα μονά εισαγωγικά, ακριβώς όπως ένα γρήγορο έλεγχο λογική; Προχώρα. Είναι χορδές. Έτσι, παραθέτω, εισαγωγικά Malan και παραθέτω, εισαγωγικά David Malan είναι χορδές. Και ακριβώς σκέφτεται τώρα διαισθητικά, γνωρίζοντας τι ξέρετε για C και PHP, γιατί εγώ δεν το κάνετε αυτό, το οποίο συνήθως μεταχειρισμένα διπλά εισαγωγικά για έγχορδα; Γιατί δεν θέλω να το κάνω αυτό; Ναι; Κοινό: [δεν ακούγεται] DAVID Malan: Ακριβώς. Επειδή είμαι ήδη χρησιμοποιούν διπλά εισαγωγικά στο δρόμο εκτός του επιχειρήματος στη λειτουργία PHP, Θα ήθελα να συγχέουμε μόνο το διερμηνέα. Δεν θα ξέρετε, δεν πρόκειται να πάει μαζί; Μήπως αυτά πάνε μαζί; Μήπως αυτά πάνε μαζί; Έτσι, αντί να εναλλάσσονται. Ή θα μπορούσα να κάνω κάτι τέτοιο, ανάστροφη κάθετο απόσπασμα ή απόσπασμα ανάποδη. Ειλικρινά, ότι μόλις αρχίσει να πάρει πολύ δυσανάγνωστο και άσχημο. Αλλά αυτό θα επιτευχθεί το ίδιο αποτέλεσμα, όπως καλά. Έτσι, αν ήμουν στη θέση να εκτελέσει αυτό Τώρα, το ερώτημα, ας δούμε τι θα συμβεί. Πάω να πάει μπροστά τώρα και μάλλον από το να εκτελεί τον κώδικα PHP, η οποία Εκεί θα παίξετε στο πρόβλημα που επτά, Πάω να πάει αντί για την PHP MyAdmin. Και εγώ το χέρι πηγαίνει για να μεταβείτε στην καρτέλα SQL, και επιτρέψτε μου να μεγεθύνετε την διεπαφή. Και Πάω να επικολλήσετε σε το πράγμα που μόλις πληκτρολογήσατε. Και το χρώμα κωδικοποίησης έχει άλλαξε λίγο τώρα, μόνο και μόνο επειδή οι μορφές του προγράμματος τα πράγματα λίγο διαφορετικά. Να σημειωθεί όμως ότι όλα τα έχω κάνει Είναι έχω πει, τοποθετήστε σε χρήστες. Έχω διευκρινίζεται, στη συνέχεια, σε ένα κόμμα διαχωρίζεται παρένθεση λίστα τα δύο πεδία που θέλετε να εισάγετε, και τότε έχω κυριολεκτικά εν λόγω τιμές ακολουθείται από ένα άλλο παρένθεσης, και στη συνέχεια οι δύο τιμές Θέλω να plug-in, και τώρα για το καλό μέτρο, Θα βάλω ένα ερωτηματικό στο τέλος. Έτσι, αυτό δεν είναι C. Αυτό δεν είναι PHP. Αυτό είναι τώρα το SQL, και είμαι το επικόλληση σε αυτό το web-based interface που είναι ακριβώς πρόκειται να με αφήσει, μόλις κάνω κλικ Go, εκτελέσει αυτό το ερώτημα στη βάση δεδομένων τρέχουν μέσα του CS50 IDE. Έτσι, αυτό είναι καλό. Ανακοίνωση που αναφέρουν ότι μία σειρά εισαχθεί, πήγε σούπερ γρήγορο, 0,0054 δευτερόλεπτα για να εισάγετε τα δεδομένα. Έτσι, αυτό ακούγεται αρκετά υγιής. Επαναμορφοποίησε ερώτημα μου για μένα εδώ μόνο για να το δείτε σε είδος χρωματικό κώδικα έκδοση. Αλλά τώρα αν κάνω κλικ Αναζήτηση, παρατηρώ ότι, ακόμη και αν και υπάρχει πολλή ακαταστασία στο η οθόνη, το τραπέζι μου έχει τώρα δύο σειρές. Έτσι, επιτρέψτε μου να προχωρήσει και να κάνει ένα άλλο. Αντί γι 'αυτό, επιτρέψτε μου να πηγαίνετε στην καρτέλα SQL και πάλι. Και αυτή τη φορά θα εισάγετε κάτι σαν Rob και το όνομά του θα είναι ο Rob Bowden. Bowden. Ας κάντε κλικ στο κουμπί Αποθήκευση. Ωχ, μάλλον πάει. Κάντε κλικ στο Αναζήτηση και πάλι, και σήμερα παρατηρούμε ότι έχω δύο σειρές. Έτσι, αυτό είναι απλώς ένας τρόπος πιο περίπλοκη τρόπος ανοίγματος Google Spreadsheets και απλά πληκτρολογώντας μια γραμμή σε μια στήλη. Αλλά αυτό που είναι βασικό είναι ότι τώρα έχουμε την σύνταξη με την οποία να γράφουν κώδικα, έτσι ώστε εν τέλει, θα μπορούσαμε να κάνετε κάποια και αυτό. Ανάκληση που υποστηρίζει PHP σούπερ καθολικές μεταβλητές. Τι είναι μέσα από δολαρίου υπογράψουν υπογράμμισης έρθετε σε PHP; Πήραμε μια ματιά σε ένα ή δύο απλά παραδείγματα. Και σε PSet6, ανάκληση έχετε γεια dot PHP που χρησιμοποιεί αυτή τη μεταβλητή. Τι συμβαίνει εκεί; Ή τι είναι αυτό; Λίγο πιο δυνατά. Κοινό: [δεν ακούγεται] DAVID Malan: Είναι ένα χιόνι σπόρων προς σπορά του πίνακα, ο οποίος είναι μόνο ένα φανταχτερό τρόπο λέγοντας μια συστοιχία που έχει βασικά ζευγάρια αξίας. Και τα κλειδιά δεν είναι αριθμητικό. Είναι λέξεις ή χορδές. Και συγκεκριμένα, τι είναι εκείνα τα βασικά ζεύγη τιμών; Από πού προέρχονται από; Συγνώμη; Κοινό: [δεν ακούγεται] DAVID Malan: Όχι; Όταν κάνετε αυτά τα βασικά τιμή ζευγάρια προέρχονται από; Πες το ξανά? Και πάλι; Είμαι ο μόνος που κάτι επ 'ακροατηρίου συζήτηση; [Γέλια] Αυτό είναι σωστό, ναι; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, προέρχονται από τη συμβολοσειρά ερωτήματος. Έτσι, αν πίσω στο χρόνο για να όταν έχουμε παίξει με το Google και έχουμε πάει στο Google.com κάθετο αναζήτηση ερωτηματικό q ισούται με γάτες, εάν επρόκειτο να πατήστε Enter και, αν Google υλοποιήθηκαν σε PHP, PHP κώδικα που έγραψε Google θα έχουν πρόσβαση σε σύμβολο του δολαρίου υπογραμμίζουν πάρει μέσα από τα οποία είναι ένα κλειδί που ονομάζεται Q και μια τιμή ονομάζεται γάτες ώστε να μπορεί στη συνέχεια να χρησιμοποιήσουν χρησιμοποιείται για να κάνει μια πραγματική έρευνα με. Έτσι, στην πραγματικότητα, αυτό που πρόκειται να κάνουμε τώρα είναι να πάμε πίσω στο PHP κώδικα μου ότι θα δείτε και πάλι σε περισσότερα από PSet7. Και αντί να συνδέσετε στο σκληρό κωδικοποιημένες τιμές οι οποίες δεν φαίνεται σαν ένα πολύ δυναμική ιστοσελίδα, Πάω να σας δώσω ένα τρέιλερ του τι πραγματικά κωδικός σας θα κάνετε. Θα θέσει σε δύο ερωτηματικά όπως αυτό. Δεν ξέρω ποιο είναι το όνομα είναι. Δεν ξέρω ποια είναι η Το όνομά πρόκειται να είναι, αλλά ξέρω ότι μπορώ να τους πάρει δυναμικά. Έτσι, αν ο κώδικας που γράφουμε τώρα είναι ο κώδικας που εκτελείται στους διακομιστές της Google, ή αν αυτό είναι γειά σου dot PHP, η οποία έρχεται με PSet6, Πάω να περάσει σε η λειτουργία ερωτήματος ακριβώς όπως printf, δύο άλλα επιχειρήματα. GET, παραθέτω, εισαγωγικά το όνομα χρήστη, και GET, παραθέτω, εισαγωγικά όνομα. Και τώρα, παρατηρήστε τι το γενική δομή είναι εδώ. Έχω στα αριστερά πλευρά της πρόσκλησης, Η λειτουργία αυτή ονομάζεται ερώτημα σε PHP. Εξακολουθώ να έχω ως πρώτη επιχείρημα, απλά μια σειρά κειμένου. Αλλά αυτό κομμάτι κειμένου είναι γραμμένο σε μια γλώσσα που ονομάζεται SQL. Και ειλικρινά, δεν είναι μια μεγάλη γλώσσα. Είμαστε μόνο πρόκειται να μιλήσουμε για αυτό επίσημα σήμερα, πραγματικά. Και στη συνέχεια στο πρόβλημα που επτά, υπάρχει σχετικά μερικά χαρακτηριστικά που είμαστε πρόκειται για τη μόχλευση. Τα ερωτηματικά, όμως, σημαίνει συνδέστε μια τιμή εδώ και βύσμα στο άλλο αξίας εδώ. Και προειδοποίηση, έχω παραλείψει τι από όλο τον quote-- βλασφημία it-- γύρω από το απόσπασμα σηματοδοτεί αυτή τη φορά. Έχω παραλείψει την προσφορά σημάδια γύρω από το ερωτηματικό, Δυστυχώς, αυτή τη φορά γύρω. Έτσι, τι είναι καλό για αυτό λόγω χαρακτηριστικό σήμα το οποίο PHP τείνει να υποστηρίζει, Ruby και Python και άλλες γλώσσες, Αυτό σημαίνει απλά συνδέστε σε ορισμένες εκτιμούν εδώ και ξέρετε τι; Θα καταλάβω αν θέλετε να χρησιμοποιήσετε μονά εισαγωγικά ή διπλά εισαγωγικά. Δεν με ενοχλεί με αυτά πνευματικά πληκτικός λεπτομέρειες. Αλλά, βεβαιωθείτε ότι είναι σωστό έτσι ώστε ο κωδικός μου είναι, τελικά, λειτουργική και ασφαλής, η οποία θα έχει νόημα πριν από καιρό. Τώρα, πόσα επιχειρήματα συνολικά, μόνο και μόνο για να να είναι σαφής, είναι η λειτουργία λήψης ερώτημα; Όποιος θέλει να ψηφίσει για περισσότερο από δύο; Τρία; Σίγουρα, γιατί; Γιατί τα τρία; Κοινό: [δεν ακούγεται] DAVID Malan: Ακριβώς. Το πρώτο μέρος είναι η σειρά. Το δεύτερο επιχείρημα είναι το σύμβολο του δολαρίου υπογραμμίζουν GET βραχίονα όνομα χρήστη. Και το τρίτο επιχείρημα είναι η ίδιο πράγμα, αλλά μόνο το όνομα. Έτσι με άλλα λόγια, τώρα αν είχα μια μορφή web ότι έπρεπε σε πεδία κειμένου, ένα για το όνομα του χρήστη, ένα για το όνομά του, απλά όπως θα δείτε σε μια ιστοσελίδα κατά την εγγραφή σας κάποια ιστοσελίδα, αυτό μπορεί να είναι ο κωδικός στο πίσω τέλος ότι κάνει στην πραγματικότητα η εισαγωγή τώρα στη βάση δεδομένων. Τώρα αντίθετα, ας fast forward. Ας υποθέσουμε ότι ένας χρήστης είναι τώρα συνδεθείτε και θέλετε να γράφουν κώδικα PHP που ελέγχει κατά πόσον το πρόσωπο που μόλις εισέλθει είναι στην πραγματικότητα ένας χρήστης, μπορείτε να χρησιμοποιούν αρκετά απλή σύνταξη. Μπορείτε να πείτε SELECT, ας πούμε Star, όπου αστέρι σημαίνει τα πάντα. Δεν ξέρω τι μου θέλουν, έτσι απλά να μου δώσει όλες οι στήλες από τον πίνακα κάλεσε τους χρήστες, όπου, και αυτό είναι ωραίο. Επιλέξτε υποστηρίζει ό, τι είναι ονομάζεται κατηγόρημα, το οποίο είναι σαν ένα τρόπο πρόκρισης ό, τι θέλετε. Όταν το όνομα χρήστη ισούται παραθέτω, εισαγωγικά Malan. Έτσι κι εδώ, έχω ενσωματωμένο μέσα στο επιχείρημα σε λειτουργία PHP, μια γραμμή κώδικα SQL. Και ότι αυτή η SQL κώδικα χρόνος είναι κυριολεκτικά πηγαίνει για να αναζητήσετε το απόσπασμα, πελάτη στο Malan. Τώρα που δεν είναι όλα τόσο χρήσιμα, έτσι Πάω να παρακάμψετε ότι και Πάω να θέσει μακριά Αυτή η συμβουλή από Brady, και να πάει και plug-in, αντί ένα ερωτηματικό εδώ. Έτσι, ακριβώς για να είναι σαφές, τι πρέπει δεύτερο επιχείρημά μου να αν κάποιος έχει μόλις εισέλθει και εγώ θέλετε να ελέγξετε αν αυτός ή αυτή είναι στην πραγματικότητα χρήστης; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι. Ακούω σύμβολο του δολαρίου υπογράμμισης Get Quote, εισαγωγικά το όνομα χρήστη. Και αυτό θα πρέπει να επιστρέψει σε μένα κάποια από τις γραμμές βάσης δεδομένων μου ότι έχουν ένα όνομα χρήστη Malan. Τώρα ελπίζω, είμαι πρόκειται να πάρει πίσω μηδέν εάν δεν Malan είναι εδώ, ή ένα αν έχει. Δεν πρέπει να πάρετε πίσω δύο ή τρία ή τέσσερα. Γιατί; Κοινό: [δεν ακούγεται] DAVID Malan: Είπα μοναδικό, σωστά; Απλό λόγο. Επειδή είπα ότι έχεις να είναι μοναδικό, απλώς λογικά, μπορείτε να έχετε μόνο μηδέν ή ένα Malans σε αυτή τη συγκεκριμένη πίνακα βάσης δεδομένων. Τώρα, ως ένα μέρος, ακριβώς έτσι έχετε δει ότι, ακόμη κι αν συνεχίσετε να χρησιμοποιείτε GET και παρόλο PSet6 χρησιμοποιούνται μόνο GET, μπορείτε σίγουρα να έχετε POST. Και υπενθυμίζουν ότι Post είναι ένα άλλο τεχνική για την υποβολή πληροφοριών από μια μορφή, αλλά δεν εμφανίζεται στη διεύθυνση URL. Είναι λίγο πιο ασφαλές σίγουρα για πράγματα όπως usernames και passwords, η οποία θα PSet7, στην πραγματικότητα, να συνεπάγεται. Έτσι, ας το κάνουμε αυτό σε PHP MyAdmin και να δούμε τι θα συμβεί. Πάω να πάει στην καρτέλα MySQL. Και παρατηρήσετε ότι η προεπιλεγμένη τιμή για PHP MyAdmin, ακριβώς για να προσπαθήσει να είναι χρήσιμη, είναι να επιλέξετε αστέρι από τους χρήστες, όπου το ένα. Λοιπόν, το ένα είναι πάντα αλήθεια, έτσι αυτό έχει την ανόητη αποτελεσματική μόλις επιλέξετε τα πάντα. Αλλά Πάω να είναι λίγο πιο σχολαστικός και με το χέρι πληκτρολογήσετε SELECT αστέρων από τους χρήστες. Τώρα τεχνικά, μπορείτε να αναφέρετε το όνομα των πινάκων. Είναι σπάνιο ότι θα πρέπει να, αλλά παρατηρήσετε αυτά δεν είναι κανονική εισαγωγικά σας στο πληκτρολόγιο ΗΠΑ. Αυτή είναι η λεγόμενη βαρεία, η οποία είναι γενικά στο πάνω αριστερό χέρι γωνία του πληκτρολογίου σας. Αλλά είναι σπάνιο ότι θα πρέπει πραγματικά να ασχοληθείτε με αυτό, γι 'αυτό θα παραλείψουμε τους ακριβώς έτσι κι αλλιώς. Έτσι τώρα, επιτρέψτε μου να προχωρήσει και να πάει να χτυπήσει. Και πόσες γραμμές θα πρέπει να πάρω πίσω όταν επιλέγω αστέρι από τους χρήστες; Κοινό: [δεν ακούγεται] DAVID Malan: Ο αριθμός των γραμμών, σίγουρα. Αλλά πόσοι σε αυτό σκυρόδεμα ιστορία τώρα; Δύο, επειδή δεν υπήρχε μένα και ήταν εκεί Rob. Έτσι, αν κάνω κλικ Πηγαίνετε, βλέπω ότι οπτικά Έχω πάρει πίσω, πράγματι, δύο σειρές. Υπάρχει πολλή ακαταστασία σχετικά με την οθόνη, αλλά βλέπω μόνο δύο σειρές. Αντίθετα, αν το κάνω αυτό και πάλι και να κάνουμε ΕΠΙΛΟΓΗ αστέρι από τους χρήστες, όπου το όνομα χρήστη ισούται με απόσπασμα, unquote Malan, τώρα αν κάνω κλικ Go, Είμαι μόνο πρόκειται να πάρει πίσω μια σειρά. Και τέλος, αν το κάνω κάτι τέτοιο, ας υποθέσουμε ότι εγώ δεν νοιάζονται για να πάρει τα πάντα, το οποίο είναι το είδος της νόημα τώρα, επειδή υπάρχουν μόνο δύο στήλες. Δεν είναι σαν να είμαι επιλέγοντας μια τεράστια ποσότητα δεδομένων. Ας υποθέσουμε ότι έχω προχωρήσει και Επιλέγετε όνομα από χρήστες, όπου το όνομα χρήστη ισούται με Malan, τι είναι καλό για τον SQL ειλικρινά, είναι ότι πραγματικά κάνει ακριβώς τι θα πει να κάνουμε. Είναι αρκετά σύντομη, αλλά μπορείτε κυριολεκτικά απλά πείτε ό, τι θέλετε να κάνετε. Επιλέξτε το όνομα από τους χρήστες, όπου ισούται με το όνομα χρήστη Malan. Και είναι πραγματικά τόσο σαφής. Έτσι, τώρα αν χτύπησα Go, πόσα γραμμές είμαι πρόκειται να πάρει πίσω; Ένα, επειδή είναι απλά Malan, ελπίζω. Ή μηδέν, αν αυτός δεν είναι εκεί, αλλά ένα μέγιστο. Και πόσες στήλες θα πάρω πίσω; Πόσες στήλες; Αυτή τη φορά, είμαι απλώς πρόκειται για να πάρει ένα, γιατί δεν είχα επιλέξτε αστέρων, το οποίο είναι το παν. Τώρα είμαι απλά επιλέγοντας το όνομα, γι ' μόλις πάρει πίσω μία στήλη και μία σειρά. Και μοιάζει κάπως κατάλληλα γελοίο, απλά ψάχνουν σούπερ μικρό σαν αυτό. Έτσι, τι πραγματικά συμβαίνει; Όταν εκτελείτε ένα SQL ερώτημα χρησιμοποιώντας επιλέξτε, τι παίρνετε πίσω από τη βάση δεδομένων Είναι σαν ένα προσωρινό πίνακα με γραμμές και στήλες, ίσως, αλλά ότι παραλείπουν τίποτα που πράγματι δεν έχει επιλεγεί από εσάς. Έτσι, είναι σαν αν κάποιος είχε ένα μεγάλο υπολογιστικό φύλλο από όλους τους μαθητές εγγραφεί για κάποια ομάδα των φοιτητών, και λέτε, να μου δώσει όλο του το καινούριο που έχετε εγγραφεί για την ομάδα των φοιτητών μας, ό, τι Ο συνάδελφός σας στην φοιτητική ομάδα μπορεί να κάνει είναι θα μπορούσαν απλά το χέρι Σας ολόκληρο το φύλλο. Αυτό είναι σαν να λέμε επιλέξτε αστέρων. Και είναι λίγο ενοχλητικό, αν που ήθελε μόνο το καινούριο. Και έτσι, αν αντί να πει, Επιλέξτε αστέρι από πίνακα της βάσης δεδομένων όπου έτους ισούται παραθέτω, εισαγωγικά καινούριος, είναι σαν φίλος σου στην ομάδα των σπουδαστών κυριολεκτικά και υπογράμμισε αντιγραφούν μόνο οι σειρές καινούριο, επικολληθεί τους σε ένα νέο Google Υπολογιστικό φύλλο ή ένα αρχείο Excel, και να σας επιστραφεί το με αποτέλεσμα μόνο το αρχείο. Αυτό είναι το μόνο που πρόκειται σε εννοιολογικά εδώ. Έτσι, στο τέλος, μπορούμε να κάνουμε μερικά αρκετά φανταχτερά πράγματα αποθηκεύοντας τα πράγματα όπως τα ονόματα χρήστη και τους κωδικούς πρόσβασης και τα παρόμοια. Αλλά, φαίνεται, θα πρέπει να κάνουμε λίγο διαφορετικά από αυτό. Δεν είναι ότι οι έξυπνοι μόνο αποθηκεύσετε ένα όνομα χρήστη και έναν κωδικό πρόσβασης. Κάποιος νωρίτερα, νομίζω εδώ κάτω, πρότεινε ένα αναγνωριστικό. Τώρα ένα αναγνωριστικό θα μπορούσε να είναι σαν ένα Χάρβαρντ ταυτότητα ή Net ID του Yale, αλλά θα μπορούσε να είναι ακόμη απλούστερο στην περίπτωση της βάσης δεδομένων μας. Και πράγματι, η κοινή υπόθεση είναι να έχουν μια άλλη στήλη. Και Πάω να πάει μπροστά και να επεξεργαστείτε το τραπέζι μου. Και αν παίζουν με Αυτή η διεπαφή για PSet7, θα δείτε ότι μπορείτε να ελέγξετε αυτό το κουμπί εδώ και να προσθέσετε ένα πεδίο στην αρχή του πίνακα. Και τώρα αν κάνω κλικ Πηγαίνετε, πρόκειται να μου δώσει μία από αυτές τις μορφές από τις προηγούμενες. Πάω να προσθέσετε ένα πεδίο που ονομάζεται αναγνωριστικό. Και Πάω να το αριθμητικό τύπο κάνουν. Έχω ένα σωρό τιμών για αριθμών. Είμαι ακριβώς πρόκειται να επιλέξετε ένα INT και Δεν ανησυχούν για τις διαφορετικές μεγέθη. Δεν έχω να καθορίσετε ένα μήκος ή μια τιμή, επειδή πρόκειται να είναι 32 bits δεν έχει σημασία τι. Χαρακτηριστικά, δεν είδαμε πριν. Οποιοδήποτε ενδιαφέρον για κάποιο από αυτά επιλογές του μενού αυτή τη φορά; Για INT; Τι έκανες προτείνει; Κανένα? Μήπως κάποια από αυτά έχουν νόημα; Ναι. Ναι, ανυπόγραφο, σωστά; Σε γενικές γραμμές, αν θα πάμε για να δώσει καθένα ένα μοναδικό αριθμό, ο οποίος Είναι όπου αυτή η ιστορία είναι πρόκειται, πραγματικά το μόνο που θέλουν ένα πρόσωπο να έχει τον αριθμό σαν μηδέν και ένα και δύο και τρία και τέσσερα. Δεν χρειάζεται να ασχοληθεί με αρνητικούς αριθμούς. Φαίνεται ακριβώς όπως αδικαιολόγητη πολυπλοκότητα. Θέλω τέσσερα δισεκατομμύρια δυνατές τιμές, Δεν τέσσερα δισεκατομμύρια δυνατές τιμές, γι 'αυτό ακριβώς διπλασιαστεί η χωρητικότητα INT μου. Παρεμπιπτόντως, αν θέλετε να συσχετίσουν αυτό σε κάτι όπως το Facebook, πίσω στο είδος της ημέρας μου, όταν Facebook για πρώτη φορά έξω, Πιστεύω ότι αυτό που ήταν χρησιμοποιώντας στη βάση δεδομένων MySQL τους για να αποθηκεύσετε ένα χρήστη αναγνωριστικό, ήταν απλά μια INT. Αλλά φυσικά, υπάρχει πολύς των πραγματικών ανθρώπων στον κόσμο. Υπάρχουν πολλά πλαστά Facebook λογαριασμών στον κόσμο. Και έτσι τελικά, ξεχειλίζει Facebook το μέγεθος ενός INT, ένα από τέσσερα δισεκατομμύρια αξίας. Αυτός είναι ο λόγος, αν κοιτάξετε γύρω και υπάρχει ιστοσελίδες ότι μπορεί να σας πει τι μοναδικό αναγνωριστικό σας είναι. Και αν ποτέ δεν έχετε επιλέξει ένα όνομα χρήστη στο Facebook, θα δείτε το μοναδικό αναγνωριστικό. Νομίζω ότι είναι το προφίλ dot PHP ID ερωτηματικό ισούται με κάτι. Αυτό είναι τώρα κάτι σαν ένα μεγάλο INT, ή ένα πολύ μεγάλο, αν θέλετε, η οποία είναι μία τιμή 64-bit ή κάτι συγκρίσιμο. Έτσι, ακόμα και στον πραγματικό κόσμο κάνει αυτά ζητήματα τελικά μερικές φορές σημασία. Και αποδεικνύεται εδώ, αν είμαι δίνοντας σε όλους τους χρήστες μου ένα μοναδικό αναγνωριστικό, Θέλω να είμαι σούπερ σαφείς και ελάχιστα κάνουν μοναδικό αυτό το πεδίο. Αλλά τελικά υπάρχει ένα κομμάτι της ονοματολογίας σήμερα πολύ αυτό είναι ένα πρωτεύον κλειδί. Εάν σχεδιάζετε μια βάση δεδομένων τραπέζι και γνωρίζετε εκ των προτέρων ότι μία από τις στήλες στον εν λόγω πίνακα πρέπει και θα προσδιορίσει μοναδικά σειρές στον πίνακα, που θέλετε να προσδιορίζει το και πείτε τη βάση δεδομένων, Αυτό είναι πρωτεύον κλειδί μου. Μπορεί να υπάρχουν αντίγραφα σε άλλους τομείς, αλλά λέω τη βάση δεδομένων ότι αυτή η είναι ο πρωταρχικός μου, το πιο σημαντικό τομέα μου, ότι είναι εγγυημένη για να είναι μοναδική. Τώρα, αυτό φαίνεται περιττή. Είμαι τώρα προτείνει ότι εμείς προσθέσετε, κάνοντας κλικ εδώ Αποθήκευση, α called-- τομέα και θα πάω να προχωρήσει και κάντε κλικ στο AI, Θα επανέλθουμε για να ότι σε μια στιγμή, Αποθήκευση. Προτείνω τώρα που τραπέζι μου μοιάζει με αυτό. Έχω ένα πεδίο που ονομάζεται αναγνωριστικό INT, ένα πεδίο που ονομάζεται ΧΑΡ Όνομα Χρήστη, ένα πεδίο που ονομάζεται VARCHAR όνομα, αλλά ταυτότητας, αν είναι πρωτοβάθμια και ως εκ τούτου το μοναδικό, γιατί εγώ απλά τα απόβλητα φορά εισάγει αυτό ουσιαστικά είναι μια δεύτερη μοναδική πεδίο που ονομάζεται αναγνωριστικό που είναι ένας int; Όνομα Χρήστη, ανάκληση, ήταν ήδη μοναδική, είπαμε. Έτσι απλά, λογικά, δεν χρειάζεται οποιαδήποτε εμπειρία στις βάσεις δεδομένων για το λόγο μέσα από αυτό, γιατί μπορεί να έχω εισαχθεί ένας int ως μοναδικό αναγνωριστικό μου, καθώς; Τι this-- ξαναπώ; Κοινό: [δεν ακούγεται] DAVID Malan: Τυχαία η πρόσβαση είναι πιο εύκολη, γιατί; Κοινό: [δεν ακούγεται] DAVID Malan: Ναι, είναι απλά πρόσβαση σε αριθμούς. Έτσι, αν νομίζετε ότι αυτό πραγματικά είναι ένας πίνακας, όπως και μια συστοιχία, τώρα έχω μοναδικών αναγνωριστικών ότι μπορώ να ρίξουν μια ματιά. Και καλύτερα από ότι εξακολουθεί είναι ότι Πόσο μεγάλη είναι η INT θα είναι και πάλι; 32 bit και τέσσερα byte. Πόσο μεγάλο είναι το ψευδώνυμο μου θα είναι; Κατ 'ανώτατο όριο; 16 bytes. Έτσι, αν είστε πραγματικά νοιάζονται για η απόδοση του κωδικού σας, Αναπολώ PSet5, θα προτιμούσατε να ψάξει για μια τιμή τεσσάρων byte ή 16 byte τιμή, σωστά; Είναι πραγματικά τόσο απλό. Έχετε να κάνετε τέσσερις φορές ως πολύ δουλειά για να αναζητήσετε ονόματα γιατί αυτά είναι 16 bytes. Έτσι, θα πρέπει να κυριολεκτικά συγκρίνετε τα 16 bytes να είναι βέβαιος ότι ναι, αυτό είναι το όνομα χρήστη που θέλω. Ενώ για ένα INT, μπορείτε να το κάνουμε με μόλις τέσσερα bytes. Και ως ένα μέρος για εκείνους ενδιαφέρονται για το υλικό του υπολογιστή, αποδεικνύεται μπορούν να χωρέσουν κάτι σαν ένα INT ή μια τιμή 32-bit σε κάτι που ονομάζεται μητρώο σε έναν υπολογιστή CPU, το οποίο σημαίνει ότι είναι σούπερ, σούπερ γρήγορο, ακόμη και στη χαμηλότερη το επίπεδο του υλικού του υπολογιστή. Έτσι, υπάρχει μόνο πλεονεκτήματα όλων των γύρω. Λοιπόν, τι σημαίνει αυτό? Στην πραγματικότητα, όταν σχεδιάζετε ένα πίνακα βάσης δεδομένων, σχεδόν όλος ο χρόνος θα πας να μην έχουν μόνο τα στοιχεία που σας ενδιαφέρει, αλλά και κάτι σαν ένα μοναδικό αναγνωριστικό επειδή αυτό πρόκειται να ας κάνουμε άλλα πράγματα. Και ας σκοντάψει επάνω ένα πρόβλημα εδώ. Ας υποθέσουμε ότι οι χρήστες δεν έχουν μόνο ονόματα και ονόματα, αλλά έχουν επίσης τα πράγματα όπως πόλεις και τα κράτη και τους ταχυδρομικούς κώδικες, τουλάχιστον εδώ στις ΗΠΑ. Έτσι, Πάω να πάει μπροστά και απλά να πω γρήγορα, να μου δώσει τρεις περισσότερες στήλες στο τέλος του πίνακα. Και αυτό πρόκειται να είναι Σίτι, Αυτό πρόκειται να είναι μέλος, και αυτό πρόκειται να είναι Ταχ. Τώρα τύποι Πόλη, ποια δεδομένα θα πρέπει αυτό να είναι, ίσως; VARCHAR; Δεν ξέρω ποια είναι η μεγαλύτερο όνομα της πόλης είναι. Κάπου στην Αμερική, δεν υπάρχει πιθανώς κάποια γελοία μεγάλη λέξη, οπότε ας πάει με 255, κάπως ιστορικά ή αυθαίρετα. Κράτος, τι θέλετε να κάνετε; Απόφαση κλήση, σωστά; Τι είναι ίσως η πιο αποτελεσματική; Πόσους χαρακτήρες; Ίσως μόνο δύο, αν μπορούμε να ξεφύγει με κάνει ακριβώς, όπως, ΜΑ για Μασαχουσέτης και ούτω καθεξής. Έτσι, Πάω να πάει μια τιμή ΧΑΡ των δύο. Ταχυδρομικός κώδικας είναι ενδιαφέρουσα. Βρισκόμαστε στο 02138, ούτως ώστε προτείνει θα πρέπει να χρησιμοποιήσουμε ό, τι; Είναι μια INT, σωστά; Int, int, μικρή; Σύντομη θα μπορούσε να λειτουργήσει. Κανένα? ΧΑΡ ή πέντε, αλλά θέλω μια INT. Γιατί να σπρώξετε προς τα πίσω σε ένα INT; Πείστε μου από αυτό. Τι είναι ηλίθιο για έναν int, η ιδέα μου; Ναι. Κοινό: Πάρτε περισσότερη μνήμη. DAVID Malan: Πάρτε περισσότερη μνήμη. Τέσσερα bytes, αλλά είστε προτείνοντας ένα ταχυδρομικό κώδικα ως πέντε bytes ή κάποιος ήταν ως ΧΑΡ, που αισθάνεται σαν ρε, αυτό δεν είναι πραγματικά η υπόθεση. Λοιπόν, διασκέδαση ιστορία. Πριν από χρόνια, όταν χρησιμοποιούσα Microsoft Outlook για το ηλεκτρονικό ταχυδρομείο μου, Εγώ τελικά ήθελε να μεταβείτε στο Gmail. Και έτσι, εξάγονται όλα μου επαφών από το Outlook σε ένα αρχείο CSV. Τιμές διαχωρισμένες με κόμμα, η οποία ακριβώς σήμαινε ότι είχε όλους τους φίλους μου ονόματα και τελευταία ονόματα και τους αριθμούς τηλεφώνου και ταχυδρομικοί κώδικες και όλα αυτά. Και τότε έκανα το λάθος άνοιγμά στο Excel, το οποίο είναι ένα πρόγραμμα υπολογιστικών φύλλων το οποίο κατανοεί τα αρχεία CSV όπως είδαμε. Στη συνέχεια, όμως, πρέπει να έχω χτυπήσει, όπως, Command Control S ή σε ένα σημείο. Και προφανώς το Excel κατά το χρόνο είχε ένα χαρακτηριστικό το οποίο οποιαδήποτε στιγμή είδε έναν αριθμό, προσπάθησε να είναι χρήσιμη. Και αν ο αριθμός που ξεκίνησε με μηδενικά, θα ήταν απλώς να απαλλαγούμε από αυτά. Γιατί χρειάζεται να οδηγεί μηδενικά για ακεραίων; Είναι χωρίς νόημα, από μαθηματική άποψη. Δεν είναι χωρίς νόημα στην Ταχυδρομική συστήματος. Έτσι, είχα για χρόνια, σε αυτήν την ημέρα, ακόμα έχουν φίλους ότι όταν η σπάνια περίπτωση που θα πρέπει κάποιος είναι αντιμετωπίσει αυτές τις μέρες, Θα δείτε ότι έχω ακόμα έχετε κάποιο φίλο στο Cambridge, Μασαχουσέτη, 2138. Και είναι ενοχλητικό εάν είστε προσπαθώντας να ταξινομήσετε του προγραμματισμού δημιουργούν φακέλους ή απλά να το σημειώνω. Και αυτό είναι λόγω αυτού του λόγου, Επέλεξα το λάθος τύπο δεδομένων. Έτσι, μου αρέσει η ιδέα σας. Ας χρησιμοποιήσουμε ένα πεδίο ΧΑΡ. Πέντε χαρακτήρες, εκτός από υπάρχει μια περίπτωση γωνία. Αν εξακολουθείτε να στείλετε e-mail, Μερικές φορές zip κωδικούς αυτές τις μέρες, από όπου και αν, όπως, συν τέσσερα. Έτσι, χρειαζόμαστε μια παύλα και, στη συνέχεια, χρειαζόμαστε τέσσερις περισσότερους αριθμούς. Έτσι, για να είμαι ειλικρινής, θα μπορούσε πάει πολλούς διαφορετικούς τρόπους. Για τώρα, θα πάω για να κρατήσει το απλό και είμαι μόνο πρόκειται να πω ότι είναι μια πέντε ΧΑΡ αξία και είμαστε πρόκειται να παρακάμψετε το σύνολο του ταμπλό συν τέσσερα. Αλλά αυτά είναι τα είδη της τήρησης ισορροπιών. Και μπορείτε να σκεφτείτε το ίδια προβλήματα που προκύπτουν με αριθμούς τηλεφώνου ή άλλους τομείς. Και τώρα, αυτό είναι πράγματι ανόητη δρόμο για να πάει κάτω. Ας υποθέσουμε ότι τόσο Rob και εγώ και η Hannah και η Μαρία και [; Davon;] και ο Andy και άλλοι για το προσωπικό όλων των ζώντων στο Κέιμπριτζ της Μασαχουσέτης, 02138. Αυτό πραγματικά αισθάνομαι ηλίθιος που είμαι προσθήκη στους χρήστες τραπέζι μου, πόλη, πολιτεία, και φερμουάρ. Γιατί; Κοινό: [δεν ακούγεται] DAVID Malan: Πείτε ξανά; Κοινό: [δεν ακούγεται] DAVID Malan: Είναι πάντα πρόκειται να πάνε μαζί, έτσι δεν είναι; Όταν αποδεικνύεται, συνηθίζαμε να σκεφτούμε Αυτό συνέβαινε μέχρι που περιοριστικώς έψαξε το σύνολο των ΗΠΑ, και αποδεικνύεται ότι υπάρχει είναι μερικές ασυνέπειες όπου πολλαπλές πόλεις έχουν ο ίδιος φερμουάρ, το οποίο είναι παράξενο. Όμως, αν θέλουμε να προβλέπουν ότι για τώρα 02138 είναι πάντα Cambridge της Μασαχουσέτης, γιατί στον κόσμο θα αποθηκεύσετε σε τη βάση δεδομένων σας Cambridge και MA και 02138 για μένα και για την Hannah και για τον Rob και για [? Davon?] Και για τους άλλους που ζουν εδώ στο Cambridge, είναι απολύτως περιττή. Πρέπει να ξεφύγουμε με ακριβώς την αποθήκευση τι; Ακριβώς το ταχυδρομικό κώδικα. Στη συνέχεια, όμως, αν θέλουμε να αποθηκεύσει μόνο η ταχυδρομικό κώδικα, θέλω, πιθανώς, για την ιστοσελίδα μου να γνωρίζουν πού είναι 02138. Έτσι, χρειάζομαι ένα άλλο τραπέζι. Και αυτό είναι εντάξει. Και στην πραγματικότητα, αυτό είναι ένα από τα διεργασιών σχεδιασμού του σχεδιασμού πινάκων ότι θα κάνετε στο PSet7, καθώς σύμφωνα με την οποία Θέλετε να συνυπολογίσει κοινά στοιχεία. Ακριβώς όπως έχουμε ήδη factoring έξω κοινό κώδικα και factoring κοινούς στυλ από CSS, εδώ πάρα πολύ στη βάση δεδομένων, αν χρειάζομαι μόνο για τη μοναδική 02138 εντοπισμό πατρίδα κάποιου, Δεν αποθηκεύουμε Cambridge, Mass για κάθε καταριέται χρήστη στο τραπέζι σας. Αντ 'αυτού, έχουν ένα ξεχωριστό πίνακα που ονομάζεται Φερμουάρ που θα πρέπει να έχουν ό, τι στήλες; Πιθανώς ένα πεδίο ID, μόνο και μόνο επειδή, για οι αρχές μιλάμε για τώρα. Πιθανώς ένα πεδίο φερμουάρ για 02138. Και τότε ίσως ό, τι άλλες στήλες; Πόλη και κράτους, αλλά έχουν μόνο ένα σειρά για 02138, μία γραμμή για 02139, μία σειρά για 90210. Και αυτό είναι κυριολεκτικά όλοι οι ταχυδρομικοί κώδικες ξέρω. Έτσι τώρα, τι μπορείτε να κάνετε; Αυτό είναι προβληματικό, επειδή τώρα έχω δύο πίνακες. Έτσι, οι χρήστες μου είναι ως επί το πλείστον εδώ, αλλά οι πληροφορίες κατάσταση της πόλης τους εδώ. Έτσι, αποδεικνύεται με τον SQL, υπάρχει στην πραγματικότητα ένας τρόπος για να μπει πληροφορίες, και θα δείτε αυτό το PSET. Αλλά τελικά μπορείς κάνει κάτι τέτοιο. ΕΠΙΛΟΓΗ αστέρι από τους χρήστες, JOIN φερμουάρ ON Οι χρήστες dot φερμουάρ ισούται με φερμουάρ dot φερμουάρ. Ποια είναι λίγο φλύαρο, ομολογουμένως, αλλά αυτό μόνο Επιλέξτε σημαίνει τα πάντα, από το διαδικασία λήψης των χρηστών τραπέζι μου και φερμουάρ τραπέζι μου. Ενώστε τους, από τη μία τομέα έχουν στη στήλη. Έτσι, κυριολεκτικά κάνουν κάτι όπως αυτό και να μου δώσει πίσω ένα νέο προσωρινό πίνακα ότι είναι ευρύτερο, αυτό είναι το μεγαλύτερο, που έχει όλα τα στήλες από τα δύο. Και αυτό, πολύ απλά, θα είναι η σύνταξη για να κάνει κάτι τέτοιο. Έτσι, υπάρχει αυτό το μέλλον, αλλά εκεί πρόκειται να είναι άλλες σχεδιαστικές αποφάσεις εσείς θα έχουν να κάνουν, όχι μόνο με τους δείκτες αλλά και τρέχει σε προκλήσεις. Στην πραγματικότητα, υπάρχει μια πρόκληση σε οποιοδήποτε σχέδιο της βάσης δεδομένων σύμφωνα με την οποία μερικές φορές δύο άνθρωποι μπορεί να θέλουν να έχουν πρόσβαση στις ίδιες γραμμές της βάσης δεδομένων τραπέζι. Έτσι, αυτό είναι κάτι που θα αντιμετωπίζουν στην PSet7, καθώς και. Αλλά σκέφτηκα ότι θα δούμε ένα επίθεση που είναι δυνατό με SQL. Ποια είναι μερικά από τα προβλήματα που μπορεί να προκύψουν; Έτσι, θα συναντήσετε αυτό PSet7. Και θα σας πω ποια είναι η ολοκληρωτική κωδικοποίησης λύση για αυτό το πρόβλημα είναι. Αλλά αν πάρετε ένα υψηλότερο επίπεδο τάξης, ειδικά σε λειτουργικά συστήματα, θα πάμε να αντιμετωπίσετε θέμα της ατομικότητας, το πρόβλημα της προσπαθεί να κάνει πολλαπλές πράγματα ταυτόχρονα χωρίς διακοπή. Και σκέφτηκα να εισαγάγει αυτό ιδέα για PSet7 με μια αλληγορία ότι εγώ έμαθα στη Μάργκο Λειτουργικά Συστήματα CS164 Seltzer του κλάση χρόνια. Ας υποθέσουμε ότι έχετε ένα από αυτά τα κοιτώνα ψυγεία στο δωμάτιο dorm ή το σπίτι σας, και έχετε μια πραγματική τάση για το γάλα. Και έτσι, θα έρθει στο σπίτι από τα μαθήματα μια μέρα, μπορείτε να ανοίξετε το ψυγείο. Ω, γαμώτο. Δεν υπάρχει γάλα στο ψυγείο. Έτσι, μπορείτε να κλείσετε το ψυγείο, κλειδώσει την πόρτα, ασφαλίστε dorm σας, με τα πόδια γύρω από τη γωνία στο CVS, να πάρει στη γραμμή, και να αρχίσει να ελέγξει έξω για λίγο γάλα. Και πρόκειται να πάρει λίγο χρόνο, Διότι εκείνοι βλασφημία αυτόματου δανεισμού μετρητές πάρει για πάντα για να χρησιμοποιήσει έτσι κι αλλιώς. Έτσι, εν τω μεταξύ, ο συγκάτοικός σας έρχεται στο σπίτι. Αυτός ή αυτή θέλει πραγματικά το γάλα, καθώς και. Έρχονται μέσα στο δωμάτιο της εστίας, ανοίξτε το ψυγείο, ω, αυτό καταριέται. Δεν υπάρχει περισσότερο γάλα. Έτσι, αυτός ή αυτή, επίσης, πηγαίνει γύρω από τη γωνία. Αλλά τώρα, αφού υπάρχει σαν δύο ή τρία ή τέσσερα CVSes κοντινή απόσταση, που τυχαίνει να πάει σε ένα από τα διαφορετικά αυτά στην πλατεία. Και έτσι τώρα, λίγα λεπτά αργότερα, οι δύο από σας έρθουν στο σπίτι και ugh, το χειρότερο πρόβλημα ποτέ. Τώρα έχετε πάρα πολύ γάλα επειδή πρόκειται να πάει ξινή. Και σας αρέσει το γάλα, αλλά θα Δεν μου αρέσει πραγματικά το γάλα. Μέχρι τώρα, αυτό ήταν ένα ακριβό λάθος, διότι οι δύο από σας έκανε μια απόφαση με βάση την κατάσταση κάποια μεταβλητή που ήταν στη διαδικασία της να αλλάξει από εσάς, ο εμπνευστής της την ευκαιρία να πάρει το γάλα. Έτσι, αυτό που είναι ίσως μια ανθρώπινη λύση σε αυτό το πρόβλημα; Κοινό: [δεν ακούγεται] DAVID Malan: Αφήστε μια σημείωση, έτσι δεν είναι; Να αφήνετε πάντα ένα σημείωμα, αν είστε εξοικειωμένοι με αυτό το show. Ναι, υπάρχουν δυο μας. Έτσι, πάντα να αφήσει ένα σημείωμα, ή κυριολεκτικά κλειδώνει το ψυγείο με κάποιο είδος ή λουκέτο κάτι πέρα ​​από την κορυφή έτσι. Αλλά αυτό είναι πραγματικά πρόκειται να είναι βασικό πρόβλημα με το σχεδιασμό βάσεων δεδομένων, ειδικά όταν μπορεί να έχετε πολλαπλά προγράμματα περιήγησης, πολλαπλά φορητούς υπολογιστές, πολλαπλών χρηστών όλοι προσπαθούν να ενημερώσετε τις πληροφορίες ταυτόχρονα. Ιδιαίτερα ευαίσθητες πληροφορίες όπως οικονομικές πληροφορίες, σύμφωνα με την οποία με χρηματιστηριακές συναλλαγές δικτυακό τόπο, όπως θα είναι η αξιοποίηση, τι και αν θέλετε να ελέγξετε πόσα χρήματα Έχετε και στη συνέχεια, αν έχετε αρκετό, αγοράσουν κάποιο απόθεμα; Αλλά τι γίνεται αν κάποιος άλλος που έχει ένα κοινό λογαριασμό με εσάς είναι ταυτόχρονα προσπαθούν να αγοράσει κάποια απόθεμα; Έτσι, αυτός ή αυτή είναι ο έλεγχος το υπόλοιπο του λογαριασμού, τόσο από εσάς να πάρει πίσω το ίδιο απάντηση, δεν υπάρχει γάλα. Ή και τα δύο του μπορείτε να πάρετε πίσω την απάντηση, έχετε $ 100 στο λογαριασμό. Και οι δυο σας να προσπαθήσει να πάρει την απόφαση να αγοράσει μία μετοχή της εταιρείας κάποιο απόθεμα. Και τώρα, τι συμβαίνει; Έχετε δύο μετοχές; Δεν έχετε μετοχές; Προβλήματα όπως το ότι μπορεί να προκύψουν. Έτσι, θα συναντήσετε αυτό. SQL ένεση επιθέσεις, ευτυχώς, είναι κάτι που θα σας βοηθήσει με, αλλά αυτά είναι atrociously κοινή αυτές τις μέρες ακόμα. Έτσι, αυτό είναι μόνο ένα παράδειγμα. Κάνω καμία αξίωση ότι Σύστημα Harvard PIN είναι ευάλωτα σε αυτή τη συγκεκριμένη επίθεση. Προσπαθήσαμε. Αλλά, ξέρετε ότι εμείς έχουν ένα πεδίο όπως αυτό. Και Net ID Γέιλ έχει μια παρόμοια κοιτάζοντας την οθόνη αυτές τις μέρες. Και αποδεικνύεται, ότι ίσως η PIN συστήματος υλοποιείται σε PHP. Και αν were-- είναι not-- που θα μπορούσε να έχει κώδικα που μοιάζει με αυτό. Έχουν δύο μεταβλητές. Δώσε μου το username και το password από τη θέση σούπερ παγκόσμια μεταβλητή ότι μιλήσαμε νωρίτερα. Ίσως Χάρβαρντ έχει ένα ερώτημα όπως SELECT αστέρι από τους χρήστες όπου όνομα χρήστη είναι ίση με εκείνη και τον κωδικό πρόσβασης εξισωθεί με αυτό. Και παρατηρώ ότι είμαι μόνο συνδέοντάς το με τη χρήση η σγουρά στήριγμα συμβολισμός από την άλλη την ημέρα, πράγμα που σημαίνει απλά συνδέστε σε μια τιμή εδώ. Δεν είμαι χρησιμοποιώντας το ερώτηση τεχνική σήμα. Δεν έχω καμία δεύτερη ή τρίτο επιχειρήματα. Είμαι απλά κυριολεκτικά κατασκευάζοντας το string τον εαυτό μου. Το πρόβλημα, όμως, είναι ότι αν κάποιος ήθελε μια scroob, η οποία είναι μια αναφορά σε μια ταινία, καταγράφει με κάτι σαν αυτό, και έχω απομακρυνθεί τις τελείες που συνήθως καλύπτει μέχρι κωδικούς πρόσβασης, τι και αν είναι ιδιαίτερα κακόβουλο και τον κωδικό πρόσβασης του ίσως είναι 12345, Σύμφωνα με την ταινία που ονομάζεται "Spaceballs" αλλά κριτικά τύπους α μόνη προσφορά μετά από πέντε, τότε κυριολεκτικά η λέξη ή στο χώρο, και στη συνέχεια να παραθέσω, εισαγωγικά ένα ισούται με ένα απόσπασμα, Να σημειωθεί όμως ότι παραλείπεται τι; Έχει παραληφθεί το απόσπασμα σχετικά με το δικαίωμα και αυτός είναι παραλείπεται το απόσπασμα στο αριστερό. Διότι, αν αυτό εισβολέας τεκμήριο της scroob είναι ότι οι άνθρωποι που έγραψαν αυτός ο κώδικας PHP δεν ήταν τόσο φωτεινό, ίσως το μόνο που έχουν κάποια ενιαία εισαγωγικά γύρω από την παρεμβολή μιας μεταβλητής σε άγκιστρα; Και έτσι ίσως, θα μπορούσε το είδος από την ολοκλήρωση της σκέψης τους γι 'αυτούς, αλλά με έναν τρόπο που πρόκειται να τον αφήσει να αποκτήσουν πρόσβαση στο σύστημα PIN. Με άλλα λόγια, ας υποθέσουμε ότι αυτό είναι ο κώδικας και τώρα συνδέστε σε ό, τι scroob πληκτρολογήσει. Και είναι το κόκκινο, γιατί είναι κακό. Και το βασικό κείμενο είναι αυτό που πληκτρολογήσατε, scroob μπορούν να ξεγελάσουν σέρβερ του Χάρβαρντ στην κατασκευή ενός ερώτημα SQL συμβολοσειρά που μοιάζει με αυτό. Κωδικός ισούται με 12345 ή ένα ισούται με ένα. Το αποτέλεσμα της οποίας, λογικά, είναι ότι αυτό θα συνδεθείτε scroob αν ο κωδικός του είναι 12345 ή εάν ένα ίσον ένα, το οποίο είναι φυσικά πάντα αλήθεια, πράγμα που σημαίνει scroob παίρνει πάντα. Και έτσι, ο τρόπος για να διορθωθεί αυτό, όπως και σε πολλές περιπτώσεις, θα ήταν να γράψω πιο αμυντικά. Για να χρησιμοποιήσετε κάτι σαν μας πραγματική λειτουργία του ερωτήματος, το οποίο θα δείτε στο PSet7, όπου θα συνδέσετε κάτι σαν ερωτηματικά εδώ. Και η ομορφιά της Λειτουργία ερώτημα που εμείς να σας δώσω είναι να υπερασπίζεται εναντίον αυτών λεγόμενη SQL ένεση επιθέσεις, όπου κάποιος εξαπάτηση κωδικό σας σε ενέσιμη δική του SQL κώδικα. Διότι αυτό το ερώτημα λειτουργία δίνουμε θα κάνετε στην πραγματικότητα, εάν χρησιμοποιείτε τη σύνταξη ερωτηματικό και ένα δεύτερο και ένα τρίτο επιχείρημα εδώ, είναι ό, τι έκανε το προσθέσετε στη εισόδου ώστε ο χρήστης να παρέχεται; Όσοι ανάστροφη κάθετο εισαγωγικά. Έτσι, δραπετεύει κάθε δυνητικά επικίνδυνη χαρακτήρων. Αυτό φαίνεται παράξενο σήμερα, αλλά δεν είναι ευάλωτη επειδή δεν αλλάξετε τη λογική πια γιατί όλο αυτό τον κωδικό είναι τώρα μια και μόνη προσφορά που δεν είναι, Στην πραγματικότητα, τον κωδικό πρόσβασης scroob του. Έτσι, έχει υπάρξει κάποια αστεία γι 'αυτό όλα αυτά τα χρόνια. Έτσι, αυτό ήταν μια φωτογραφία που τραβήχτηκε κάποια Geek σε ένα πάρκινγκ σύμφωνα με την οποία ίσως γνωρίζετε ότι κάποιες πόλεις και τα κράτη προσπαθούν να σαρώσετε την άδειά σας πιάτο σας ή με το εισιτήριό σας χρεώσουμε αν περάσει χωρίς, όπως, το πράγμα Ε-Ζ Pass. Έτσι, το πρόσωπο αυτό τεκμαίρεται ότι ίσως οι άνθρωποι που γράφουν το σύστημα Ε-Ζ Πέρασμα δεν ήταν τόσο φωτεινά, και ίσως απλά συνεχόμενα μαζί μια σειρά, έτσι ώστε αυτός ή αυτή δεν θα μπορούσε κακόβουλα όχι μόνο να ολοκληρώσει τη σκέψη τους, αλλά στην πραγματικότητα εκτελεί μια κακή εντολή, το οποίο δεν έχω αναφερθεί ακόμη, αλλά μπορείτε να μαντέψετε. Ότι εκτός από την διαγραφή και εισαγάγετε και να ενημερώσετε και να επιλέξετε, υπάρχει επίσης μια λέξη-κλειδί που ονομάζεται πτώση, η οποία κυριολεκτικά θα διαγράψει τα πάντα στη βάση δεδομένων, η οποία είναι ιδιαίτερα κακή. Μπορούμε να εστιάσετε σε αυτό, αν είναι λίγο δύσκολο να δούμε. Αυτό, τώρα, είναι ένα διάσημο καρτούν ότι είναι θαυμάσια έξυπνος τώρα και κατανοητό. [Γέλια] Ναι, δροσερό. Είδος geeking έξω. Έτσι, αυτά, λοιπόν, είναι SQL ένεση επιθέσεις. Και είναι τόσο εύκολο να αποφευχθεί με τη χρήση το σωστό κωδικό ή τα δεξιά βιβλιοθήκες. Και θα δείτε στην PSet7, ότι είναι γιατί σας δίνουμε τη λειτουργία του ερωτήματος. Έτσι, ένα ζευγάρι των teasers ότι σκεφτήκαμε να σας δώσω εδώ στην μας υπολειπόμενα λεπτά μαζί. Έτσι, όπως θυμάστε από το μηδέν εβδομάδα, εμείς εισήγαγε αυτές τις δύο λαμπτήρες που είναι ωραίο, όχι μόνο επειδή ότι είναι πολύ και είναι πολύχρωμα, αλλά επειδή υποστηρίζουν κάτι ονομάζεται ένα API, μια Αίτηση Διασύνδεση Προγραμματισμού και σε CS50 μέχρι σήμερα, έχουμε επικεντρώθηκε κυρίως στη GET και POST, αλλά αποδεικνύεται υπάρχει άλλη ρήματα HTTP PUT όπως. Και στην πραγματικότητα, αυτό ήταν μια διαφάνεια από το μηδέν εβδομάδα σύμφωνα με την οποία αν γράφετε κώδικα που στέλνει a la PSet6 ένα αίτημα HTTP που Μοιάζει με αυτό με αυτό το κομμάτι του κειμένου στο κάτω μέρος, η οποία ονομάζεται JSON, ή JavaScript Object Notation ότι θα μιλήσουμε για την επόμενη εβδομάδα, μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε ή αλλαγή το χρώμα των φώτων, όπως εκείνες. Έτσι, εάν CS50 έχει επίσης εκτός από κάποια αυτών των ηλεκτρικών λαμπτήρων εδώ στο New Haven αν θέλετε να δανειστείτε τους για την τελική έργων, Επίσης, κάποια Microsoft Συγκροτήματα, τα οποία είναι σαν ρολόγια που φοράτε γύρω από τον καρπό σας ότι έχουν ομοίως ένα API, έτσι ώστε να μπορεί να γράψει το δικό σας λογισμικό για αυτούς. Έχουμε ένα λογαριασμό με Κωδικός iOS της Apple έτσι ότι αν έχετε ένα Apple Παρακολουθήστε ή ένα iPhone ή ένα iPad ή ένα iPod, μπορείτε να γράψετε κωδικό που στην πραγματικότητα λειτουργεί με εκείνους. Έχουμε ένα σωρό της Arduinos, οι οποίες είναι μικροσκοπικά υπολογιστές χωρίς τις περιπτώσεις, κατ 'ουσίαν, ότι μπορείτε να συνδεθείτε μέσω USB, συνήθως στο δικό σας Mac ή PC, γράφουν κώδικα που τρέχει σε αυτές τις φυσικές συσκευές που έχουν συχνά τους αισθητήρες έτσι ώστε να μπορούν να αλληλεπιδρούν με τον πραγματικό κόσμο. Έχουμε ένα σωρό των συσκευών Leap Motion, τα οποία είναι συσκευές USB για Mac και Υπολογιστές, εδώ και πάλι, στο New Haven. Και αν το συνδέσετε με τον υπολογιστή Mac σας, μπορείτε πραγματικά να ελέγξει τον υπολογιστή σας γράφοντας λογισμικό ότι με υπέρυθρες ακτίνες, υπολογίζει πού είναι ανθρώπινα χέρια σας, ακόμη και χωρίς να αγγίξετε το πληκτρολόγιο σας. Σκεφτήκαμε να μοιραστούμε μια γρήγορη διαβλέψει σε αυτό, για παράδειγμα. [Παίζει μουσική] Έτσι, έχουμε μια ολόκληρη σωρό από αυτά τα πράγματα, πάρα πολύ, που ονομάζεται Myo μπρατσάκια το οποίο βάζετε πάνω από το αντιβράχιο σας και, στη συνέχεια, μπορείτε να ελέγχετε την πραγματική κόσμος ή ο εικονικός κόσμος σαν αυτό. [Παίζει μουσική] Ή, έχουμε επίσης κάποια Google Χαρτόνι, το οποίο είναι κυριολεκτικά, όπως, ένα κουτί από χαρτόνι θα μπορούσε να θέσει σε σας πρόσωπο, αλλά διαφάνεια στο τηλέφωνό σας σε αυτό έτσι ώστε να τεθεί το ποτήρι σας τηλέφωνο πολύ κοντά στα μάτια σας. Και το Google χαρτόνι αρκετά φθηνό σε $ 10 ή $ 20. Και έχει λίγο φακοί ότι ελαφρώς εκτός βάρδιας η εικόνα στην οθόνη για τον άνθρωπο σας μάτια για να σας δώσει μια αίσθηση του βάθους έτσι ώστε να έχετε πραγματικά ένα 3D περιβάλλον μπροστά σας. Έχουμε επίσης κάποια Samsung Gear, η οποία είναι η πιο ακριβή έκδοση αυτού, αλλά ότι μπορεί παρομοίως να ολισθαίνει σε ένα Android τηλέφωνο και να σας δώσει την ψευδαίσθηση of-- ή δίνουν την εμπειρία της εικονικής πραγματικότητας. Και στην τελική δύο λεπτά μας, σκεφτήκαμε να προσπαθήσουμε να το κάνουμε αυτό. Αν μπορώ να προβάλει ό, τι έχει Colton εδώ μόνο για να σας ανοίξουν την όρεξη, επιτρέψτε μου να προχωρήσει και να ρίξει επάνω στη μεγάλη οθόνη εδώ. Επιτρέψτε μου να σκοτώσει τα φώτα. Colton, θέλεις να πάμε μπροστά και να θέσει στο κινητό σας για μια στιγμή και έλα πάνω στην μέση της σκηνής; Και θέλετε να project-- Αυτό είναι ό, τι βλέπει Colton. Τώρα, η σύνδεση Wi-Fi σε εδώ είναι δεν είναι τόσο ισχυρή για τη συγκεκριμένη συσκευή ότι αυτό είναι εξαιρετικά συναρπαστικό, αλλά είναι κυριολεκτικά Colton σε αυτό το μαγικό μέρος φουτουριστικό. Βλέπει μόνο μία εικόνα. Βλέπετε το αριστερό και το δεξί του μάτι ότι ο εγκέφαλός του είναι συρραφή μαζί σε ένα τρισδιάστατο το περιβάλλον στο πρόσωπό του. Έχει μόλις επιλεγεί μια επιλογή μενού εδώ. Και έτσι πάλι, φοράει αυτά τα ακουστικά με ένα τηλέφωνο της Samsung για το ότι είναι ασύρματα προεξέχει πάνω από το κεφάλι για να μας. Τώρα είστε στον Άρη, νομίζω; COLTON: Νομίζω πως ναι. Δεν είμαι σίγουρος [δεν ακούγεται]. [Γέλια] DAVID Malan: Βγάζει Ο Άρης έχει αυτά τα μενού. COLTON: [δεν ακούγεται] μερικά δροσερά θέσεις, αν θέλουμε να πάμε to-- DAVID Malan: Πού θέλουμε να πάμε; COLTON: [δεν ακούγεται] DAVID Malan: Και ας δούμε όπου Colton, μας παίρνετε τώρα. COLTON: [δεν ακούγεται] DAVID Malan: Λοιπόν, υπάρχουν τόσα πολλά διαφορετικά μέρη που μπορείτε να πάρετε τον εαυτό σας. Υπάρχει FAPIs μέσω του οποίου μπορείτε να γράφετε παιχνίδια ή αλληλεπιδράσεις τρέχουν, σε τελική ανάλυση, στο τηλέφωνο. Έτσι, μπορείτε πραγματικά μόνο γράφει ένα κινητό τηλέφωνο app. Αλλά χάρη στο λογισμικό και οι δυνατότητες γραφικών, τώρα Colton είναι σε αυτό το μικροσκοπικό εξοχικό σπίτι. Και με κίνδυνο συντριπτική τους εαυτούς μας, Colton και εγώ θα μείνω για ενώ στο τέλος της ταξικής εδώ σήμερα αν θέλετε να έρθει και να παίξει. Και εμείς θα τους φέρει πίσω την επόμενη εβδομάδα, καθώς και. Χωρίς περαιτέρω, φασαρία αυτό είναι για σήμερα. Θα σας δούμε την επόμενη εβδομάδα. [ΜΟΥΣΙΚΗ - Ragga TWINS, «κακός άνθρωπος»]