1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Εβδομάδα 9] 2 00:00:02,570 --> 00:00:04,740 [David J. Malan - Πανεπιστήμιο του Χάρβαρντ] 3 00:00:04,740 --> 00:00:07,170 [Αυτό είναι CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 Εντάξει. Καλώς ήρθατε και πάλι. Αυτό είναι CS50, και αυτή είναι η αρχή της εβδομάδας 9. 5 00:00:12,350 --> 00:00:16,600 Σήμερα, έχουμε επικεντρωθεί κυρίως στο σχεδιασμό, δεν είναι πλέον στο πλαίσιο του Γ 6 00:00:16,600 --> 00:00:20,010 αλλά στο πλαίσιο της PHP και ένα κομμάτι της SQL και ένα κομμάτι της JavaScript, 7 00:00:20,010 --> 00:00:23,730 ιδιαίτερα προς το τέλος του τόσο PSET 7 και επίσης τελικό έργο σας. 8 00:00:23,730 --> 00:00:26,310 Στην πραγματικότητα, εάν είστε σε εκείνο το σημείο στο τελικό σχέδιο σας 9 00:00:26,310 --> 00:00:30,100 όπου κατά πάσα πιθανότητα από μια ώρα ή έτσι πριν σας τουλάχιστον άρχισαν να δώσει κάποια σκέψη 10 00:00:30,100 --> 00:00:33,730 στο τελικό σχέδιο σας και σκέφτεστε θα θέλατε να συνεργαστεί με 1 ή 2 συμμαθητές, 11 00:00:33,730 --> 00:00:36,150 αν έχετε πρόβλημα σύνδεσης με τα εν λόγω συμμαθητές, 12 00:00:36,150 --> 00:00:40,570 διστάσετε να συμπληρώσετε τη φόρμα στο cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 Είναι απλά σας ρωτά ποιος είσαι, τι είδους έργο σκέφτεστε, 14 00:00:42,880 --> 00:00:44,870 όπου ζείτε μόνο για οργανωτικούς λόγους. 15 00:00:44,870 --> 00:00:49,510 Και στη συνέχεια, αν θέλετε να κρατήσει ένα μάτι για την επόμενη εβδομάδα ή έτσι το URL φύλλο εκεί, 16 00:00:49,510 --> 00:00:53,520 μπορείτε να δείτε στη συνέχεια, ένα read-only έκδοση του Google doc 17 00:00:53,520 --> 00:00:56,010 στην οποία είμαστε συλλογή αυτών των πληροφοριών. 18 00:00:56,010 --> 00:00:58,930 Έτσι, εάν θέλετε να συνεργαστεί με κάποιον, με όλα τα μέσα διστάσετε να φτάσει στους ανθρώπους 19 00:00:58,930 --> 00:01:00,480 μέσω του εν λόγω μηχανισμού. 20 00:01:00,480 --> 00:01:02,690 Αλλά η πλειοψηφία των λαοί κάνουν σόλο δουλειά. Αυτό είναι εντελώς καλά. 21 00:01:02,690 --> 00:01:06,120 Έτσι, δεν αισθάνονται ότι αυτό είναι σε καμία περίπτωση υποχρεωτική. 22 00:01:06,120 --> 00:01:09,680 Την Παρασκευή ήταν μόνο εγώ και μερικοί από την ομάδα εδώ, 23 00:01:09,680 --> 00:01:11,100 άδειο θέατρο ως επί το πλείστον. 24 00:01:11,100 --> 00:01:14,600 Υπήρχαν 3 τουρίστες κάθονται εκεί, έτσι ώστε να ήταν λίγο δύσκολη. 25 00:01:14,600 --> 00:01:18,970 Αυτό που μιλήσαμε ήταν βάσεις δεδομένων και μιλήσαμε για PSET 7 α λίγο. 26 00:01:18,970 --> 00:01:22,200 Και αν δεν συμβεί για να πιάσει ότι στο βίντεο ακριβώς ακόμα, αυτό είναι εντάξει. 27 00:01:22,200 --> 00:01:26,770 Θα προσπαθήσω να καθορίσει οποιουσδήποτε όρους που διαφορετικά θα θεωρήσουμε δεδομένο 28 00:01:26,770 --> 00:01:28,840 βασίζεται σε διάλεξη της Παρασκευής. 29 00:01:28,840 --> 00:01:32,550 >> Σήμερα, όμως, θα πάμε να προσπαθήσουμε να φτάσετε στο σημείο 30 00:01:32,550 --> 00:01:34,990 όχι μόνο να είναι σε θέση να κάνει κάτι σαν PSET 7 31 00:01:34,990 --> 00:01:37,360 αλλά πραγματικά να κατανοήσει τι συμβαίνει κάτω από την κουκούλα, 32 00:01:37,360 --> 00:01:41,910 ιδιαίτερα κάποιες από τις αφαιρέσεις που έχουμε θέσει σε εφαρμογή στο αρχείο functions.php 33 00:01:41,910 --> 00:01:45,780 για να κάνουν τη ζωή σας λίγο πιο εύκολη, αλλά, έτσι ώστε να κατανοήσουν τελικά 34 00:01:45,780 --> 00:01:48,760 έτσι ώστε όταν οι ρόδες βγει σε λίγες εβδομάδες μπορείτε ακόμα να επιβιώσουν 35 00:01:48,760 --> 00:01:53,750 στον πραγματικό κόσμο και να κάνουμε αυτά τα πράγματα χωρίς πλαίσιο CS50 κάτω από σας. 36 00:01:53,750 --> 00:01:57,500 Αυτό $ _SESSION, για όσους από εσάς είναι εξοικειωμένοι 37 00:01:57,500 --> 00:02:01,960 ή που ήδη πιάσει το βίντεο την Παρασκευή, ό, τι δεν ΣΥΝΕΔΡΙΑ ας κάνουμε 38 00:02:01,960 --> 00:02:04,330 σε PHP με βάση web εφαρμογή; 39 00:02:04,330 --> 00:02:09,650 Αυτό είναι ένα superglobal μεταβλητή, που σημαίνει ότι είναι παρόμοιες στο πνεύμα με GET και POST 40 00:02:09,650 --> 00:02:13,970 και μερικοί άλλοι, αλλά τι είναι αυτό το πράγμα χρήσιμο για; 41 00:02:13,970 --> 00:02:18,320 >> Τι είναι ΣΥΝΕΔΡΙΑ χρησιμοποιείται για; Ναι. [Φοιτητής] Σύνδεση μέσα 42 00:02:18,320 --> 00:02:21,040 Συγνώμη; [Φοιτητής] Σύνδεση Σύνδεση μέσα Πράγματι μέσα. 43 00:02:21,040 --> 00:02:25,100 Σε PSET 7 είμαστε χρήση αυτής της superglobal ΣΥΝΕΔΡΙΑ να διευκολυνθεί η καταγραφή μέσα 44 00:02:25,100 --> 00:02:28,600 Και τι είναι ωραίο για αυτό το superglobal είναι ότι πρόκειται για ένα associative array. 45 00:02:28,600 --> 00:02:33,190 Ένας associative array, ανάκληση, είναι απλώς μια σειρά, αλλά δεν είναι πλέον δείκτες των οποίων πρέπει να είναι αριθμοί 46 00:02:33,190 --> 00:02:37,670 σαν 012. Μπορούν να είναι αριθμοί ή μπορούν να είναι ακόμα και χορδές. 47 00:02:37,670 --> 00:02:44,890 Και έτσι αν έχετε βουτήξει σε PSET 7 ακόμα, ίσως θυμάστε ότι είμαστε αποθήκευση ενός κλειδιού ονομάζεται ID 48 00:02:44,890 --> 00:02:50,330 μέσα από αυτό το associative array των οποίων η αξία είναι κάτι σαν 123 - 49 00:02:50,330 --> 00:02:53,780 Όποια και αν είναι η στιγμή είστε συνδεδεμένοι στο όνομα χρήστη είναι. 50 00:02:53,780 --> 00:02:59,470 Το κίνητρο για αυτό είναι ότι ακόμη και μετά ο χρήστης έχει επισκεφθεί localhost 51 00:02:59,470 --> 00:03:02,720 ή στην ιστοσελίδα μου γενικότερα και στη συνέχεια να έχετε συνδεθεί, 52 00:03:02,720 --> 00:03:07,320 ακόμα κι αν δεν κάνετε κλικ σε ένα σύνδεσμο ή να επιστρέψετε στην ιστοσελίδα μου για 5 λεπτά 53 00:03:07,320 --> 00:03:10,730 ή ακόμα και μια ώρα ή ακόμη και μια ημέρα, αλλά αφήνουν παράθυρο του browser τους ανοιχτό, 54 00:03:10,730 --> 00:03:14,370 μέσω αυτής της superglobal μπορώ να θυμόμαστε ότι έχετε εισέλθει 55 00:03:14,370 --> 00:03:21,140 >> Με άλλα λόγια, αυτό μου επιτρέπει να αποθηκεύετε λίγο μακροπρόθεσμα κάτι που θέλω για ένα χρήστη. 56 00:03:21,140 --> 00:03:24,390 Και μπορείτε να σκεφτείτε πραγματικά σαν την ενσάρκωση του ένα καλάθι αγορών. 57 00:03:24,390 --> 00:03:27,740 Μέρη όπως το Amazon προφανώς αφήσει να βάλει τα πράγματα σε ένα καλάθι αγορών, 58 00:03:27,740 --> 00:03:32,230 αλλά HTTP, το πρωτόκολλο, το οποίο τροφοδοτεί το Web, είναι σκάφος άνευ εθνικότητας 59 00:03:32,230 --> 00:03:34,230 με την έννοια ότι όταν επισκέπτεστε μια ιστοσελίδα, 60 00:03:34,230 --> 00:03:37,290 ως επί το πλείστον δεν έχετε κάποια σταθερή σύνδεση με το δίκτυο 61 00:03:37,290 --> 00:03:39,270 μεταξύ του προγράμματος περιήγησης και διακομιστή. 62 00:03:39,270 --> 00:03:42,190 Από τη στιγμή που έχετε κατεβάσει την HTML και τα αρχεία JPEG και τα αρχεία GIF και όλα αυτά, 63 00:03:42,190 --> 00:03:48,200 η σύνδεση πηγαίνει μακριά και έχετε μόνο ένα αντίγραφο της HTML και εταζέρα από το διακομιστή. 64 00:03:48,200 --> 00:03:53,000 Αλλά αν ο διακομιστής θέλει να θυμάται κάτι για σας, 65 00:03:53,000 --> 00:03:57,580 η επιβάρυνση είναι στο διακομιστή για να καταγράψει πραγματικά αυτές τις πληροφορίες. 66 00:03:57,580 --> 00:04:00,130 Και έτσι ο προγραμματιστής που έχει τον έλεγχο του διακομιστή 67 00:04:00,130 --> 00:04:04,400 μπορεί να βάλει τίποτα που θέλετε μέσα από αυτό το superglobal associative array 68 00:04:04,400 --> 00:04:06,850 και θα είναι εκεί την επόμενη φορά που ο χρήστης έρχεται πίσω, 69 00:04:06,850 --> 00:04:12,070 είτε πρόκειται για λεπτά ή ακόμη και μέρες αργότερα, εκτός και αν κλείσετε το παράθυρο του browser τους, 70 00:04:12,070 --> 00:04:14,360 στο οποίο ΣΥΝΕΔΡΙΑ σημείο εξαφανίζεται. 71 00:04:14,360 --> 00:04:17,779 Έτσι είναι εφήμερη αποθήκευση, είναι μη-επίμονο, και είναι γραφτό να πάει μακριά 72 00:04:17,779 --> 00:04:22,360 μόλις ο χρήστης κλείσει browser τους - όχι μόνο ότι καρτέλα, συχνά ολόκληρο το πρόγραμμα περιήγησης, 73 00:04:22,360 --> 00:04:24,930 αυτόν τον τρόπο καταγραφής αποτελεσματικά το χρήστη έξω. 74 00:04:24,930 --> 00:04:28,000 Λοιπόν, πώς είναι αυτό το πράγμα που εφαρμόζεται στην πράξη; 75 00:04:28,000 --> 00:04:31,360 Ας ρίξουμε μια γρήγορη ματιά σε ένα απλό παράδειγμα είδαμε την Παρασκευή. 76 00:04:31,360 --> 00:04:33,340 Για όσους δεν είναι εξοικειωμένοι, ήταν τόσο απλό όσο αυτό. 77 00:04:33,340 --> 00:04:35,910 Αυτή είναι μια ιστοσελίδα με μοναδικό σκοπό στη ζωή είναι να μου πείτε 78 00:04:35,910 --> 00:04:38,000 πόσες φορές έχω επισκεφτεί αυτή τη σελίδα. 79 00:04:38,000 --> 00:04:41,670 Αυτή είναι η πρώτη φορά εδώ τη Δευτέρα ότι θα επισκεφθεί, έτσι ώστε να λέει 0 φορές. 80 00:04:41,670 --> 00:04:46,940 >> Αλλά αν αρχίσω επαναφόρτωση αυτής της σελίδας, λέει 1 φορά, 2, 3, 4, 5, 81 00:04:46,940 --> 00:04:49,800 και αυτό τελικά θα κρατήσει μόνο για καταμέτρηση επάνω, επάνω, επάνω, επάνω, επάνω 82 00:04:49,800 --> 00:04:53,130 για κάθε φορά που πραγματικά κάντε κλικ στο κουμπί Ανανέωση για αυτό. 83 00:04:53,130 --> 00:04:58,830 Λοιπόν, πώς είναι αυτή η εργασία; Επιτρέψτε μου να πάω μέσα από αυτό το αρχείο ονομάζεται counter.php. 84 00:04:58,830 --> 00:05:02,490 Το επάνω μέρος του είναι όλα τα σχόλια μπλε, αλλά το ενδιαφέρον κομμάτι είναι εδώ. 85 00:05:02,490 --> 00:05:06,670 Στις γραμμή 13 καλούμε session_start αυτή τη λειτουργία, 86 00:05:06,670 --> 00:05:09,600 και ότι είναι κυριολεκτικά το μόνο που πρέπει να κάνετε αν θέλετε να έχετε πρόσβαση 87 00:05:09,600 --> 00:05:13,610 σε αυτή την ειδική superglobal ονομάζεται $ _SESSION. 88 00:05:13,610 --> 00:05:17,430 Αυτό καθιστά δυνατή, και θα δούμε σε μια στιγμή πώς είναι ότι όλα είναι δυνατά. 89 00:05:17,430 --> 00:05:20,350 Στη γραμμή 16 ειδοποίηση τι κάνω. 90 00:05:20,350 --> 00:05:25,960 Εάν το κλειδί, που ονομάζεται μετρητής - με άλλα λόγια, η τιμή του δείκτη - "μετρητή" 91 00:05:25,960 --> 00:05:32,310 υπάρχει στο εσωτερικό αυτού του πίνακα ονομάζεται ΣΥΝΕΔΡΙΑ, τότε τι κάνω με αυτό στη γραμμή κάτω; 92 00:05:32,310 --> 00:05:36,650 Ποια είναι η γραμμή 18 κάνει; 93 00:05:36,650 --> 00:05:40,360 >> [Ακούγεται ανταπόκριση των φοιτητών] Τι είναι αυτό; [Φοιτητής] Αποθήκευση του αξία. Καλή. 94 00:05:40,360 --> 00:05:45,800 Είναι αποθήκευση του αξία που είναι σε ΣΥΝΕΔΡΙΑ τώρα σε μια νέα τοπική προσωρινή μεταβλητή, 95 00:05:45,800 --> 00:05:48,250 $ Μετρητή σε όλα τα πεζά γράμματα. 96 00:05:48,250 --> 00:05:50,770 Παρατηρήστε ότι η PHP είναι ήδη είναι λίγο τεμπέλης εδώ. 97 00:05:50,770 --> 00:05:55,550 Προσέξτε δεν έχουμε καμία αναφορά int ή float ή string ή κάτι τέτοιο 98 00:05:55,550 --> 00:06:00,480 επειδή η PHP είναι ασθενώς δακτυλογραφημένα, σύμφωνα με την οποία δεν χρειάζεται να καθορίσετε τον τύπο μιας μεταβλητής, 99 00:06:00,480 --> 00:06:03,310 και σε αυτή την περίπτωση εδώ δεν έχω δηλώσει ακόμα ακόμα. 100 00:06:03,310 --> 00:06:08,980 Είμαι δηλώνοντας ότι μέσα από αυτά τα άγκιστρα και σε αντίθεση με C, αυτό είναι πραγματικά εντάξει. 101 00:06:08,980 --> 00:06:13,800 Δεν έχει σημασία πόσο βαθιά ένθετα δήλωση μιας μεταβλητής στην PHP είναι - 102 00:06:13,800 --> 00:06:16,650 στο εσωτερικό του κηδεμόνα σγουρά, μέσα από σγουρά στήριγμα και τα παρόμοια - 103 00:06:16,650 --> 00:06:21,230 θα εκείνη τη στιγμή υπάρχουν για το υπόλοιπο του προγράμματος, 104 00:06:21,230 --> 00:06:22,680 προς το καλύτερο ή προς το χειρότερο. 105 00:06:22,680 --> 00:06:26,930 Έτσι, γίνεται αμέσως παγκόσμια μόλις την ορίζουν ως κάνουμε εδώ. 106 00:06:26,930 --> 00:06:31,620 >> Διαφορετικά, αν δεν βρίσκω ότι υπάρχει κάτι στο superglobal ΣΥΝΕΔΡΙΑ, 107 00:06:31,620 --> 00:06:34,680 Είμαι προφανώς την προετοιμασία αυτής της μεταβλητής σε αντίθεση με 0, 108 00:06:34,680 --> 00:06:37,580 έτσι απλά υποθέτοντας ο χρήστης δεν ήταν ποτέ εδώ πριν. 109 00:06:37,580 --> 00:06:40,030 Και τότε αυτό βέβαια είναι που αυξάνει τον μετρητή πώς; 110 00:06:40,030 --> 00:06:44,480 Είμαι ενημέρωση την τιμή που είναι μέσα από αυτό το associative array 111 00:06:44,480 --> 00:06:49,530 θέτοντας το ίσο με ό, τι είναι σήμερα μετρητής + 1. 112 00:06:49,530 --> 00:06:53,520 Αν μετακινηθείτε προς τα κάτω εδώ στο HTML της σελίδας, είναι πραγματικά αρκετά απλή. 113 00:06:53,520 --> 00:06:58,920 Το μόνο που έχω στο σώμα αυτής της σελίδας, "Έχετε επισκεφθεί αυτόν τον ιστότοπο έτσι-και-έτσι φορές." 114 00:06:58,920 --> 00:07:00,350 Και αυτό είναι ένα κατασκεύασμα PHP. 115 00:07:00,350 --> 00:07:06,080 Αν το κάνετε 00:07:12,600 Είναι πραγματικά ισοδυναμεί με κάτι σαν printf, που έχουμε δει πολλές φορές σε C, 117 00:07:12,600 --> 00:07:15,940 αν και όπως ίσως γνωρίζετε ήδη από το spec σε PSET 7, 118 00:07:15,940 --> 00:07:20,160 εκτύπωσης είναι επίσης μια λειτουργία που απλά τυπώνει κάτι, δεν χρησιμοποιεί πραγματικά κωδικούς μορφή, 119 00:07:20,160 --> 00:07:23,270 και μπορείτε να πείτε πραγματικά ηχώ, καθώς και. 120 00:07:23,270 --> 00:07:27,460 Είναι όλα πάντα τόσο ελαφρώς διαφορετική, ακόμη και αν το καθαρό αποτέλεσμα είναι τελικά το ίδιο. 121 00:07:27,460 --> 00:07:31,270 Έτσι η χρήση του το σύμβολο του ίσον είναι ακριβώς το είδος του ένα κομψό τρόπο για να γίνει αυτό 122 00:07:31,270 --> 00:07:34,910 πιο συνοπτικά από ό, τι θα μπορούσε αλλιώς να είναι σε θέση να. 123 00:07:34,910 --> 00:07:38,370 Έτσι, αυτό είναι όλο αυτό το site κάνει. Εκτυπώνει την τιμή του μετρητή. 124 00:07:38,370 --> 00:07:40,550 Πώς είναι όλα αυτά πραγματικά συμβαίνει; 125 00:07:40,550 --> 00:07:43,250 Μπορείτε να ανακαλέσετε μια εβδομάδα ή έτσι πριν αρχίσαμε να ψάχνουμε κάτω από την κουκούλα 126 00:07:43,250 --> 00:07:47,910 πώς μια ιστοσελίδα λειτουργεί με τη χρήση αυτής της καρτέλας Επιθεωρητή. 127 00:07:47,910 --> 00:07:51,900 >> Chrome έχει αυτό τόσο στην έκδοση για Mac, την έκδοση των Windows, ακόμα και την έκδοση του Linux, 128 00:07:51,900 --> 00:07:59,510 και Firefox και Internet Explorer έχουν παρόμοια μηχανισμούς μέσω των οποίων έχετε αυτό το ενσωματωμένο πρόγραμμα εντοπισμού σφαλμάτων 129 00:07:59,510 --> 00:08:01,400 μέσα από τον browser. 130 00:08:01,400 --> 00:08:03,040 Ας ρίξουμε μια ματιά στα παρακάτω. 131 00:08:03,040 --> 00:08:06,960 Έχουμε ένα σωρό καρτέλες εδώ, και υπενθυμίζουν ότι το ένα είναι πιο αριστερό στοιχεία, 132 00:08:06,960 --> 00:08:10,700 και δεν έχει σημασία πόσο godawful η HTML και JavaScript είναι σε μια σελίδα, 133 00:08:10,700 --> 00:08:15,710 Υπενθυμίζω ότι με την καρτέλα Στοιχεία μπορείτε να περιηγηθείτε στην πραγματικότητα το HTML ιεραρχικά 134 00:08:15,710 --> 00:08:17,050 και ωραία και τακτοποιημένα. 135 00:08:17,050 --> 00:08:19,370 Έτσι, εάν προσπαθείτε να μάθετε από μια ιστοσελίδα όπως το Google ή το Facebook 136 00:08:19,370 --> 00:08:22,370 πραγματικά ή οποιοδήποτε δικτυακό τόπο, συνειδητοποιούν ότι είστε πιθανώς καλύτεροι 137 00:08:22,370 --> 00:08:26,360 κοιτάζοντας τον πηγαίο κώδικα με αυτόν τον τρόπο, σε αντίθεση με την προβολή της πρώτης πηγής, 138 00:08:26,360 --> 00:08:29,580 το οποίο μπορεί να είναι ένα χάος, όπως έχουμε δει ειδικά στο χώρο της Google. 139 00:08:29,580 --> 00:08:32,220 Έτσι, αν αντί κάντε κλικ στην καρτέλα Δίκτυο εδώ, 140 00:08:32,220 --> 00:08:34,830 ας δούμε τι συμβαίνει όταν επισκέπτομαι αυτή τη σελίδα. 141 00:08:34,830 --> 00:08:38,669 Καταρχάς, επιτρέψτε μου να σβήσω τη μνήμη cache μου. 142 00:08:38,669 --> 00:08:43,570 Πάω να μπω σε Ρυθμίσεις στο Chrome και στη συνέχεια να πάνε στην Ιστορία 143 00:08:43,570 --> 00:08:46,420 Καταργήστε και στη συνέχεια όλων των δεδομένων περιήγησης. 144 00:08:46,420 --> 00:08:48,170 Μπορεί να χρησιμοποιηθεί για να κάνει αυτό για άλλους σκοπούς, [γέλια] 145 00:08:48,170 --> 00:08:51,990 αλλά όταν πρόκειται για την ανάπτυξη ιστοσελίδων, είναι πραγματικά χρήσιμο - 146 00:08:51,990 --> 00:08:55,980 αν είστε γέλιο ξέρετε. [Γέλια] 147 00:08:55,980 --> 00:08:59,310 Είναι πραγματικά πολύ χρήσιμο κατά την ανάπτυξη ιστοσελίδων, διότι η πραγματικότητα είναι 148 00:08:59,310 --> 00:09:04,100 τα πράγματα όπως τα cookies και τα πράγματα όπως cached αρχεία HTML, JavaScript προσωρινά αποθηκευμένα αρχεία 149 00:09:04,100 --> 00:09:06,390 μπορεί πραγματικά να γίνει ένας μεγάλος πονοκέφαλος, γιατί αν για οποιοδήποτε λόγο 150 00:09:06,390 --> 00:09:11,500 το πρόγραμμα περιήγησης αποφασίζει να cache κάποιο αρχείο και όμως έχετε κάνει αλλαγές σε αυτό το αρχείο στο διακομιστή 151 00:09:11,500 --> 00:09:14,670 αλλά το πρόγραμμα περιήγησης δεν έχει πραγματικά συνειδητοποιήσει ότι το αρχείο έχει αλλάξει 152 00:09:14,670 --> 00:09:19,060 και ως εκ τούτου δεν πραγματικά να επαναλάβετε τη λήψη ακόμα και όταν κάνετε κλικ στο κουμπί Ανανέωση, 153 00:09:19,060 --> 00:09:23,210 ένα από τα πιο αλάνθαστος τρόπους για να βεβαιωθείτε ότι μόνο η βλάβη δεν είναι με τον κωδικό σας, 154 00:09:23,210 --> 00:09:26,480 είναι με τη συμπεριφορά του προγράμματος περιήγησης, είναι να πάει εδώ στο πρόγραμμα περιήγησής σας 155 00:09:26,480 --> 00:09:29,950 και απλώς καθαρίστε όλη την ιστορία, έτσι ώστε δεν υπάρχει καμία σύγχυση. 156 00:09:29,950 --> 00:09:33,210 >> Και στη συνέχεια, αν θέλετε πραγματικά να είναι παρανοϊκός, κλείστε το πρόγραμμα περιήγησης, κάντε επανεκκίνηση, 157 00:09:33,210 --> 00:09:35,660 και στη συνέχεια, βεβαιωθείτε ότι όλα λειτουργούν όπως αναμένεται. 158 00:09:35,660 --> 00:09:38,820 Έτσι, με λίγα λόγια, απαλοιφή της προσωρινής μνήμης είναι καλό όταν κάνουμε ανάπτυξη. 159 00:09:38,820 --> 00:09:40,690 Έτσι, εδώ έχουμε την καρτέλα Δίκτυο. 160 00:09:40,690 --> 00:09:46,020 Εγώ στο παρελθόν είχε επισκεφθεί το χώρο 9 φορές, αλλά επιτρέψτε μου να προχωρήσει τώρα και κάντε κλικ στο κουμπί Ανανέωση. 161 00:09:46,020 --> 00:09:47,500 Και είμαι πίσω στο 0. 162 00:09:47,500 --> 00:09:52,100 Ας δούμε πώς πραγματικά είναι ότι αυτό superglobal ΣΥΝΕΔΡΙΑ έχει τεθεί σε εφαρμογή. 163 00:09:52,100 --> 00:09:55,990 Πάω να κάνετε κλικ στο αιτήσεως 1 HTTP που έγινε, 164 00:09:55,990 --> 00:09:58,810 και αυτό το παράθυρο εντοπισμού σφαλμάτων μου επιτρέπει να δούμε μέσα από αυτό. 165 00:09:58,810 --> 00:10:01,970 Εδώ βλέπω μόνο την απάντηση από το διακομιστή, η οποία δεν είναι ενδιαφέρουσα. 166 00:10:01,970 --> 00:10:04,030 Έχω δει αυτό σε οποιοδήποτε αριθμό τρόπων. 167 00:10:04,030 --> 00:10:06,350 Αλλά αυτό που είναι ενδιαφέρον είναι τεχνικά οι κεφαλίδες. 168 00:10:06,350 --> 00:10:11,770 Αν μετακινηθείτε προς τα κάτω εδώ και να επικεντρωθεί στις επικεφαλίδες και κάντε κλικ στο αίτημα πηγή άποψη, 169 00:10:11,770 --> 00:10:14,400 τι Πάω να δω είναι κυριολεκτικά το αίτημα HTTP 170 00:10:14,400 --> 00:10:17,250 που μόλις πέρασε από το πρόγραμμα περιήγησης μου στο διακομιστή, 171 00:10:17,250 --> 00:10:21,400 GET είναι η λέξη κλειδί και έπειτα / counter.php είναι το όνομα του αρχείου, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 ακριβώς είναι η έκδοση του HTTP ότι ο φυλλομετρητής μου χρησιμοποιεί. 173 00:10:25,670 --> 00:10:31,070 Αυτή η γραμμή εδώ είναι μια μικρή υπενθύμιση από το πρόγραμμα περιήγησης στο διακομιστή ποιο είναι το όνομα του διακομιστή είναι 174 00:10:31,070 --> 00:10:33,020 ότι θέλει να μιλήσει. 175 00:10:33,020 --> 00:10:38,200 Και τότε το υπόλοιπο αυτό είναι μερικές φορές ενδιαφέρον, αλλά δεν έχει σημασία αυτή τη στιγμή. 176 00:10:38,200 --> 00:10:40,090 >> Αυτό είναι ακριβώς το είδος του μια περιέργεια. 177 00:10:40,090 --> 00:10:43,530 Αινιγματικές αν και αυτή η σειρά είναι, ανά πάσα στιγμή browser σας επισκέπτεται μια ιστοσελίδα 178 00:10:43,530 --> 00:10:47,110 έχει ενημερώσει τον server τι browser που χρησιμοποιείτε 179 00:10:47,110 --> 00:10:50,040 και τι λειτουργικό σύστημα που χρησιμοποιείτε και ποια έκδοση αυτών. 180 00:10:50,040 --> 00:10:52,650 Έτσι, αν έχετε αναρωτηθεί ποτέ πώς ιστοσελίδες όπως το CNN και εταζέρα 181 00:10:52,650 --> 00:10:56,860 ξέρετε τι τα ποσοστά είναι χρήστες Mac για τους χρήστες του διαδικτύου, PC, 182 00:10:56,860 --> 00:11:00,820 Χρήστες του IE, οι χρήστες Chrome και τα παρόμοια, είναι επειδή όλα τα προγράμματα περιήγησης μας 183 00:11:00,820 --> 00:11:04,300 λένε κάθε ενιαίο δικτυακό τόπο εκεί έξω ό, τι είμαστε. 184 00:11:04,300 --> 00:11:07,410 Δεν περιέχει απαραίτητα προσωπικά στοιχεία, 185 00:11:07,410 --> 00:11:13,060 αλλά το κάνει πείτε στον διακομιστή τι διεύθυνση IP σας είναι και τι πρόγραμμα περιήγησης και το λειτουργικό σύστημα που χρησιμοποιείτε. 186 00:11:13,060 --> 00:11:14,720 Έτσι, αυτό είναι όπου οι πληροφορίες αυτές είναι. 187 00:11:14,720 --> 00:11:19,960 Αλλά τι είναι πιο ενδιαφέρουσα τώρα, όταν πρόκειται για αυτές τις συνεδρίες είναι η κεφαλίδα απόκρισης. 188 00:11:19,960 --> 00:11:22,530 Επιτρέψτε μου να δείτε κάντε κλικ στο κουμπί δίπλα στην πηγή απάντηση. 189 00:11:22,530 --> 00:11:24,590 Αυτό που είναι ενδιαφέρον εδώ είναι μερικά πράγματα. 190 00:11:24,590 --> 00:11:27,580 1, πήραμε πίσω έναν κωδικό κατάστασης 200. 191 00:11:27,580 --> 00:11:29,840 Εμείς ποτέ δεν βλέπουν αυτόν τον κωδικό κατάστασης, διότι αυτό σημαίνει ότι όλα είναι καλά. 192 00:11:29,840 --> 00:11:32,920 Σημαίνει κυριολεκτικά εντάξει σε αντίθεση με κάτι άλλο. 193 00:11:32,920 --> 00:11:36,380 Τι είναι ένας αριθμός που βλέπουμε ορισμένες φορές αυτό είναι κακό; [Φοιτητής] 404. 194 00:11:36,380 --> 00:11:39,860 404, το αρχείο δεν βρέθηκε, 403 ίσως να σκοντάψει επάνω ήδη, 195 00:11:39,860 --> 00:11:43,660 το οποίο είναι απαγορευμένο, το οποίο σημαίνει ότι μπορείτε να ξεχάσει κάτι chmod, κατά πάσα πιθανότητα. 196 00:11:43,660 --> 00:11:45,190 Και υπάρχει ένα σωρό άλλοι. 197 00:11:45,190 --> 00:11:47,760 >> Εδώ κάτω, αυτό είναι λίγο τρελό. 198 00:11:47,760 --> 00:11:52,340 Πραγματικά μόλις έγραψα αυτό το αρχείο λίγα λεπτά πριν από την επικόλληση στο gedit. 199 00:11:52,340 --> 00:11:57,100 Γιατί αυτή τη σελίδα λήγουν το 1981 πριν από πραγματικά υπήρχε Web; 200 00:11:58,010 --> 00:12:00,730 Τι συμβαίνει εκεί; 201 00:12:00,730 --> 00:12:04,390 >> [Ακούγεται ανταπόκριση των φοιτητών] Η σφραγίδα του χρόνου. Αλλά γιατί; 202 00:12:06,110 --> 00:12:09,120 Είναι κάπως αυθαίρετη, αλλά αυτό είναι πραγματικά χρήσιμο. 203 00:12:09,120 --> 00:12:15,500 Αυτό λέει στον browser μου είναι η PHP αρχείο που μόλις ζητηθεί έχει ήδη λήξει. 204 00:12:15,500 --> 00:12:18,580 Στην πραγματικότητα, έληξε πριν από 30 χρόνια. 205 00:12:18,580 --> 00:12:20,260 Αλλά τι σημαίνει αυτό πραγματικά σημαίνει; 206 00:12:20,260 --> 00:12:22,500 Σημαίνει απλά την επόμενη φορά που ο χρήστης επισκέπτεται αυτήν τη σελίδα, 207 00:12:22,500 --> 00:12:25,540 είτε από την επαναφόρτωση ή πληκτρολογώντας τη διεύθυνση URL στη γραμμή διευθύνσεων, 208 00:12:25,540 --> 00:12:28,010 βεβαιωθείτε ότι έχετε πάει και να φέρω ένα νέο αντίγραφο του. 209 00:12:28,010 --> 00:12:30,840 Αυτό είναι το είδος του ένα παράδειγμα του busting cache, 210 00:12:30,840 --> 00:12:33,790 μια ηλίθια λέξη που σημαίνει απλά προσπαθούν να αποθαρρύνουν browsers 211 00:12:33,790 --> 00:12:37,260 από πραγματικά caching HTML που είναι ήδη σταλεί από ένα διακομιστή 212 00:12:37,260 --> 00:12:41,490 έτσι ώστε να μην χτυπήσει κατά λάθος reload και στη συνέχεια να δούμε την ίδια έκδοση του αρχείου. 213 00:12:41,490 --> 00:12:43,730 Θέλετε πραγματικά το διακομιστή να στείλει ένα νέο αντίγραφο. 214 00:12:43,730 --> 00:12:47,440 Έτσι, το γεγονός ότι είναι μόλις 1981 σημαίνει ότι αυτό είναι ό, τι η συσκευή είναι η επιλογή 215 00:12:47,440 --> 00:12:50,280 σαν μια αυθαίρετη ημερομηνία στο παρελθόν. 216 00:12:50,280 --> 00:12:53,380 Αλλά η πραγματική ζουμερά γραμμή είναι τώρα αυτό. 217 00:12:53,380 --> 00:12:57,550 Ακόμη και πριν από 50 είστε πιθανώς αόριστα εξοικειωμένοι με τα cookies. 218 00:12:57,550 --> 00:13:01,820 Από αυτή τη στιγμή, ιδίως μεταξύ εκείνων ή λιγότερο άνετα στο μεταξύ, 219 00:13:01,820 --> 00:13:04,120 τι είναι ένα cookie για την κατανόηση σας τώρα 220 00:13:04,120 --> 00:13:06,980 παρόλο που είμαστε έτοιμοι να κάνουν την κατανόησή σας πιο τεχνικό; 221 00:13:08,150 --> 00:13:10,070 Τι είναι ένα cookie; Ναι. 222 00:13:10,070 --> 00:13:13,890 [Φοιτητής] Πληροφορίες για το χρήστη, όπως και αν έχετε γράψει το όνομα χρήστη ή κάτι τους. 223 00:13:13,890 --> 00:13:17,370 >> Καλή. Είναι πληροφορίες για τον χρήστη, αν έχετε πληκτρολογήσει το όνομα χρήστη τους ήδη. 224 00:13:17,370 --> 00:13:21,190 Τα cookies είναι ένας τρόπος όπου διακομιστές μπορεί να θυμηθεί κάτι για κάποιον χρήστη. 225 00:13:21,190 --> 00:13:25,810 Και αυτό είναι ένα cookie πραγματικά είναι ένα αρχείο κειμένου ή κάποια ακολουθία των bytes 226 00:13:25,810 --> 00:13:28,340 Αυτό είναι που φυτεύτηκαν από τον server στο εσωτερικό του browser σας, 227 00:13:28,340 --> 00:13:31,960 και μέσα από αυτό το αρχείο ή μεταξύ των bytes είναι ένα είδος αναγνώρισης. 228 00:13:31,960 --> 00:13:35,640 Ίσως είναι κυριολεκτικά το όνομα χρήστη σας, αλλά τις περισσότερες φορές είναι κάτι πιο αινιγματικό το μέλλον 229 00:13:35,640 --> 00:13:43,700 σαν αυτό το πράγμα εδώ - bo8dal3ct και ούτω καθεξής - αυτό πραγματικά μεγάλη αλφαριθμητική συμβολοσειρά 230 00:13:43,700 --> 00:13:47,050 Αυτό είναι πραγματικά ακριβώς σημαίνει να είναι ένα μοναδικό αναγνωριστικό για εσάς. 231 00:13:47,050 --> 00:13:49,790 Ή μπορείτε να σκεφτείτε από το ως ένα είδος εικονικής σφραγίδα χέρι. 232 00:13:49,790 --> 00:13:53,020 Αν πάτε σε κάποιο κλαμπ ή ένα πάρκο ψυχαγωγίας, να θυμάστε ότι έχετε πράγματι καταβληθεί 233 00:13:53,020 --> 00:13:55,850 και πάει στο, βάζουν ένα μικρό κόκκινο αυτοκόλλητο στο χέρι σας κάποιου είδους, 234 00:13:55,850 --> 00:13:59,270 και ότι θυμίζει τους ανθρώπους στο μετρητή που έχετε ήδη καταβληθεί 235 00:13:59,270 --> 00:14:01,340 και μπορείτε να έρχονται και να φεύγουν όπως σας παρακαλώ. 236 00:14:01,340 --> 00:14:04,250 Τα cookies είναι λίγο παρόμοια στο πνεύμα με αυτό. 237 00:14:04,250 --> 00:14:08,070 Την πρώτη φορά που επισκέφθηκα την ιστοσελίδα, όπως έκανα ακριβώς μετά την εκκαθάριση της προσωρινής μνήμης μου, 238 00:14:08,070 --> 00:14:11,620 ο web server, η συσκευή σε αυτή την περίπτωση, βάλτε μια σφραγίδα στο χέρι μου 239 00:14:11,620 --> 00:14:15,030 του οποίου το όνομα είναι PHPSESSID, σύνοδος ID, 240 00:14:15,030 --> 00:14:18,260 των οποίων η αξία είναι αυτό πραγματικά μεγάλη αλφαριθμητική συμβολοσειρά. 241 00:14:18,260 --> 00:14:22,470 >> Έτσι, αυτό είναι τώρα το είδος του ζωγραφίζεται στο χέρι μου, έτσι ώστε την επόμενη φορά που χτύπησα reload 242 00:14:22,470 --> 00:14:25,230 ή επισκεφθείτε το χέρι αυτήν τη διεύθυνση URL σε ένα πρόγραμμα περιήγησης, 243 00:14:25,230 --> 00:14:29,230 browser μου με τον ορισμό του HTTP πρόκειται να παρουσιάσει τη σφραγίδα χέρι 244 00:14:29,230 --> 00:14:31,940 ξανά και ξανά και ξανά. 245 00:14:31,940 --> 00:14:34,550 Έτσι, ακόμη και αν ο διακομιστής δεν είναι απαραίτητο ξέρω ποιος είμαι, 246 00:14:34,550 --> 00:14:39,610 ότι τουλάχιστον ξέρω ότι είμαι ο ίδιος χρήστης ή τουλάχιστον, πιο συγκεκριμένα, το ίδιο πρόγραμμα περιήγησης. 247 00:14:39,610 --> 00:14:45,660 Και έτσι αυτό είναι τελικά το πώς η superglobal ΣΥΝΕΔΡΙΑ υλοποιείται. 248 00:14:45,660 --> 00:14:51,200 Ο διακομιστής δεν έχει ιδέα ποιος είσαι, όταν επανεξετάσει μια ιστοσελίδα για τη δεύτερη ή την τρίτη φορά 249 00:14:51,200 --> 00:14:53,410 εκτός αν παρουσιάσει αυτή την σφραγίδα χέρι. 250 00:14:53,410 --> 00:14:55,530 Και μόλις σας παρουσιάζουμε αυτό το χέρι σφραγίδα, 251 00:14:55,530 --> 00:14:59,370 ο web server πηγαίνει κατ 'ουσίαν, σε μια μικρή βάση δεδομένων της δικής του 252 00:14:59,370 --> 00:15:06,040 και ελέγχους, εντάξει, έχω δει μόνο τη σφραγίδα χέρι του χρήστη bo8dal3ct και ούτω καθεξής. 253 00:15:06,040 --> 00:15:09,850 Επιτρέψτε μου να δούμε τι πληροφορίες ο προγραμματιστής έχει αποθηκεύσει 254 00:15:09,850 --> 00:15:12,380 εσωτερικό του superglobal για αυτόν τον χρήστη, 255 00:15:12,380 --> 00:15:17,000 και στη συνέχεια, επιτρέψτε μου να βεβαιωθείτε ότι τα δεδομένα είναι και πάλι μέσα από την ΣΥΝΕΔΡΙΑ superglobal 256 00:15:17,000 --> 00:15:19,830 έτσι ώστε ο προγραμματιστής μπορεί εκ νέου πρόσβαση σε αυτά τα δεδομένα 257 00:15:19,830 --> 00:15:23,360 ακόμη και αν αυτό ορίστηκε μερικά λεπτά ή ώρες πριν. 258 00:15:23,360 --> 00:15:26,150 Έτσι με άλλα λόγια, τα μπισκότα, το οποίο πήρε μια κακή ραπ για κάποιο χρονικό διάστημα 259 00:15:26,150 --> 00:15:29,990 λόγω της ανασφάλειες σε προγράμματα περιήγησης και μπορούν να παραβιάζουν πραγματικά προστασία της ιδιωτικής ζωής μας και όλα αυτά, 260 00:15:29,990 --> 00:15:31,900 έχουν πραγματικά μεγάλη χρησιμότητα διότι χωρίς αυτούς 261 00:15:31,900 --> 00:15:36,110 θα πρέπει να είναι συνεχώς σε σύνδεση σε κάθε σελίδα που επισκέπτεστε Facebook 262 00:15:36,110 --> 00:15:40,680 ή κάθε Gmail e-mail μπορείτε να διαβάσετε αν ο browser δεν έχουν κάποιο τρόπο να θυμόμαστε 263 00:15:40,680 --> 00:15:43,320 ότι έχετε ήδη πιστοποιηθεί. 264 00:15:43,320 --> 00:15:46,640 >> Έτσι, με αυτόν τον τρόπο τα cookies στέλνονται πέρα ​​δώθε πέρα ​​από το σύρμα. 265 00:15:46,640 --> 00:15:52,470 Μια άλλη περιέργεια σχετικά με τα cookies, ειδικά εδώ, είναι ότι αυτό είναι εντελώς σε απλό κείμενο. 266 00:15:52,470 --> 00:15:54,930 Δεν υπάρχει καμία κρυπτογράφηση συμβαίνει εδώ καθόλου, 267 00:15:54,930 --> 00:15:57,240 και μάλιστα είμαι με τη χρήση HTTP αυτή τη στιγμή. 268 00:15:57,240 --> 00:16:00,890 Ένα από τα αγαπημένα μας στιγμές σε CS50, η οποία είναι τώρα πριν 2 χρόνια, 269 00:16:00,890 --> 00:16:04,750 ήταν γύρω από την εποχή ένα εργαλείο που ονομάζεται Firesheep βγήκε. 270 00:16:04,750 --> 00:16:08,320 Αυτό ήταν ένα ελεύθερο κομμάτι του λογισμικού που έγινε από έναν ερευνητή ασφαλείας 271 00:16:08,320 --> 00:16:13,250 ως μια κλήση αφύπνισης για την κοινότητα να πω πόσο atrociously εφαρμογή 272 00:16:13,250 --> 00:16:17,900 ορισμένους μηχανισμούς ελέγχου ταυτότητας στο Διαδίκτυο ήταν. 273 00:16:17,900 --> 00:16:22,880 Έτσι, για κάποιο χρονικό διάστημα, το Facebook ήταν σχεδόν εξ ολοκλήρου μέσω HTTP, HTTPS όχι. 274 00:16:22,880 --> 00:16:25,640 Και ακόμα κι αν δεν έχετε καμία ιδέα για το πώς λειτουργεί το crypto, S είναι ασφαλής 275 00:16:25,640 --> 00:16:27,950 έτσι ώστε να σημαίνει ότι υπάρχει τουλάχιστον κάποια που εμπλέκει και κρυπτογράφηση. 276 00:16:27,950 --> 00:16:30,610 Facebook δεν χρησιμοποιείται για την κρυπτογράφηση ονόματα χρήστη και κωδικούς πρόσβασης, 277 00:16:30,610 --> 00:16:33,560 αλλά μόλις κοίταξε σας σπρώχνει ή τα μηνύματά σας ή τις ζωοτροφές ειδήσεις σας, 278 00:16:33,560 --> 00:16:35,360 όλα αυτά ήταν χωρίς κρυπτογράφηση. 279 00:16:35,360 --> 00:16:37,870 Έτσι ήταν μέχρι το Gmail μόλις ένα χρόνο πριν ή 2. 280 00:16:37,870 --> 00:16:41,100 Κάθε φορά που θα συνδεθείτε, ναι, αυτοί που χρησιμοποιούνται ασφαλή κρυπτογράφηση, 281 00:16:41,100 --> 00:16:44,300 αλλά στη συνέχεια δεν το έκαναν. Και γιατί μπορεί να συμβαίνει αυτό; 282 00:16:44,300 --> 00:16:49,210 Γιατί δεν χρησιμοποιούν μόνο κρυπτογραφία όλη την ώρα σε περιπτώσεις χρήσης, όπως αυτό; 283 00:16:49,210 --> 00:16:53,700 Τι είναι αυτό; Νομίζω ότι άκουσα κάτι. [Φοιτητής] ταχύτητας. 284 00:16:53,700 --> 00:16:56,250 Ταχύτητα, έτσι δεν είναι; Υπάρχουν τρόποι γύρω από αυτό. 285 00:16:56,250 --> 00:16:59,610 Αλλά αν σας ακριβώς το είδος των σκέφτομαι λογικά, αν κάτι κρυπτογράφηση, 286 00:16:59,610 --> 00:17:01,820 που έχετε να κάνετε τουλάχιστον μια λίγη περισσότερη δουλειά. 287 00:17:01,820 --> 00:17:05,460 Σε PSET 2 όταν έχετε εφαρμόσει Καίσαρα ή Vigenere ή ακόμα και Crack, 288 00:17:05,460 --> 00:17:07,760 εκτύπωση μόνο ένα string είναι σχετικά εύκολη. 289 00:17:07,760 --> 00:17:12,040 Η κρυπτογράφηση και στη συνέχεια να εκτυπώσετε μια σειρά ελάχιστα απαιτεί λίγο περισσότερη δουλειά. 290 00:17:12,040 --> 00:17:14,520 >>  Για σούπερ δημοφιλείς ιστοσελίδες όπως το Google και το Facebook, 291 00:17:14,520 --> 00:17:18,839 αν έχετε να κάνετε περισσότερη δουλειά για κάθε χρήστη για κάθε ιστοσελίδα που επισκέπτονται, 292 00:17:18,839 --> 00:17:20,520 που διαρκεί μόλις περισσότερο χρόνο CPU. 293 00:17:20,520 --> 00:17:22,920 Και αν χρειάζεστε περισσότερο χρόνο της CPU, μπορεί να χρειαστεί περισσότερους servers, 294 00:17:22,920 --> 00:17:24,270 το οποίο σημαίνει ότι μπορεί να χρειαστεί περισσότερα χρήματα. 295 00:17:24,270 --> 00:17:27,579 Και έτσι για πολλά χρόνια αυτό ακριβώς πραγματικά δεν ήταν βέλτιστων πρακτικών. 296 00:17:27,579 --> 00:17:31,440 Οι άνθρωποι θα χρησιμοποιούν κρυπτογράφηση SSL μόνο όταν χρειάζεται να. 297 00:17:31,440 --> 00:17:34,960 Αλλά αποδείχθηκε, όπως και αυτή με τους συναδέλφους Firesheep γίνει σούπερ σαφής, 298 00:17:34,960 --> 00:17:37,920 όταν παιδιά που βρίσκονται στο Facebook τώρα - 299 00:17:37,920 --> 00:17:39,880 Από περιέργεια, για να δούμε αν θα fess επάνω. 300 00:17:39,880 --> 00:17:42,620 Αν είστε στο Facebook τώρα σε κάποια καρτέλα, ακόμα και αν δεν είναι συνοικοδομήθηκαν, 301 00:17:42,620 --> 00:17:46,610 είναι η διεύθυνση URL HTTP ή HTTPS σας; 302 00:17:46,610 --> 00:17:50,560 [Πολλαπλά τους μαθητές] Σ. S; [Γέλια] 303 00:17:50,560 --> 00:17:55,510 Εντάξει. Κάθε HTTP; Μόλις 1; Εντάξει. 304 00:17:55,510 --> 00:17:58,940 Έτσι, όλοι μας μπορεί να χαράξει Facebook υπόψη το γεγονός ότι ο τύπος αυτήν τη στιγμή. 305 00:17:58,940 --> 00:18:04,100 Για το μεγαλύτερο μέρος αυτό έχει γίνει ενεργοποιημένη από προεπιλογή, τουλάχιστον σε ορισμένες ιστοσελίδες. 306 00:18:04,100 --> 00:18:08,120 Και τα πολυλογώ, αν την κυκλοφορία Ιστού σας δεν είναι κρυπτογραφημένη, 307 00:18:08,120 --> 00:18:12,960 όχι μόνο η HTML πάει μπροστά και πίσω σε όλη την WiFis χωρίς κρυπτογράφηση, 308 00:18:12,960 --> 00:18:16,760 γι 'αυτό τα πράγματα όπως μπισκότα πηγαίνουν πέρα ​​δώθε σε όλο τον αέρα 309 00:18:16,760 --> 00:18:18,940 χωρίς κανενός είδους κρυπτογράφηση. 310 00:18:18,940 --> 00:18:23,540 Έτσι, εάν έχετε μόνο ένα κομμάτι του προγραμματισμού καταλαβαίνω ή λίγο Googling δεξιοτήτων 311 00:18:23,540 --> 00:18:27,410 να βρείτε δωρεάν λογισμικό που το κάνει αυτό, το μόνο που έχετε να κάνετε είναι να καθίσετε σε Starbucks 312 00:18:27,410 --> 00:18:30,680 ή να καθίσετε σε ένα αεροδρόμιο όπου υπάρχει γενικά WiFi χωρίς κρυπτογράφηση 313 00:18:30,680 --> 00:18:36,070 και απλά να παρακολουθήσετε για λέξεις-κλειδιά όπως Set-Cookie: ή PHPSESSID 314 00:18:36,070 --> 00:18:39,300 γιατί αν έχετε την τεχνική καταλαβαίνω για να παρακολουθήσουν μόνο το WiFi 315 00:18:39,300 --> 00:18:43,010 για όλα τα bits που ρέουν σε όλο τον αέρα για αυτό το μοτίβο, 316 00:18:43,010 --> 00:18:50,840 μπορείτε στη συνέχεια να πω ότι PHPSESSID άντρα που συμβαίνει να είναι bo8dal και ούτω καθεξής. 317 00:18:50,840 --> 00:18:53,890 Και πάλι, αν είστε αρκετά τεχνικές γνώσεις ή έχουν το δικαίωμα εργαλείο, 318 00:18:53,890 --> 00:18:58,890 μπορείτε στη συνέχεια να αναμορφώσουν μόνο το δικό του browser σας για να αρχίσει να υποβάλλει την εν λόγω σφραγίδα χέρι 319 00:18:58,890 --> 00:19:05,030 να Facebook.com, και το Facebook πρόκειται ακριβώς να υποθέσουμε ότι είστε ο τύπος 320 00:19:05,030 --> 00:19:09,880 γιατί όλοι ξέρουν δεν είναι ποιος είσαι, αλλά ότι έχετε αυτό το μοναδικό αναγνωριστικό. 321 00:19:09,880 --> 00:19:14,650 Έτσι, αν κλέψει αυτό το μοναδικό αναγνωριστικό και να το παρουσιάσει με τον web server όπως το δικό σας, 322 00:19:14,650 --> 00:19:16,860 είναι ακριβώς πρόκειται να σας δείξω ειδήσεις αυτού του ατόμου 323 00:19:16,860 --> 00:19:18,980 ή του ατόμου μηνύματα ή σπρωξίματα. 324 00:19:18,980 --> 00:19:23,190 >> Και θα ήθελα Google τώρα πώς να ενεργοποιήσετε HTTPS για το Facebook ίσως. 325 00:19:23,190 --> 00:19:25,150 Αλλά είναι πραγματικά τόσο απλό. 326 00:19:25,150 --> 00:19:27,660 Και έτσι το Facebook και το Google και τα παρόμοια έχουν πάρει πραγματικά καλός σε αυτό, 327 00:19:27,660 --> 00:19:31,870 αλλά κρατήστε ένα μάτι έξω όλα τα παραπάνω για κάθε ιστοσελίδες που επισκέπτεστε που δεν χρησιμοποιούν HTTP 328 00:19:31,870 --> 00:19:35,020 και να έχουν κάποιο είδος των ευαίσθητων πληροφοριών σχετικά με αυτές, 329 00:19:35,020 --> 00:19:37,490 είτε πρόκειται για οικονομικές ή προσωπικές ή τα παρόμοια. 330 00:19:37,490 --> 00:19:43,180 Εάν δεν χρησιμοποιείτε αυτό, πολύ πιθανόν να τα cookies, όπως αυτό είναι πολύ εύκολα να κλαπεί 331 00:19:43,180 --> 00:19:46,270 και στη συνέχεια, πλαστά, και αυτό είναι ακριβώς ό, τι έκανε Firesheep. 332 00:19:46,270 --> 00:19:48,250 Εσείς δεν χρειάζεται να είναι ένας προγραμματιστής. 333 00:19:48,250 --> 00:19:51,680 Το μόνο που είχε να κάνει ήταν να έχουν μια σύνδεση στο Internet, κατεβάστε αυτό το δωρεάν εργαλείο, 334 00:19:51,680 --> 00:19:56,490 και τι θα κάνετε είναι να συνδεθείτε και στη συνέχεια θα σας δείξει τα ονόματα του Facebook 335 00:19:56,490 --> 00:20:00,170 από όλους στην Sanders, σε αυτή τη συγκεκριμένη διαδήλωση, γύρω σας 336 00:20:00,170 --> 00:20:03,260 και το μόνο που είχε να κάνει ήταν κάντε κλικ στο όνομά τους και το λογισμικό αυτοματοποιηθεί η διαδικασία 337 00:20:03,260 --> 00:20:05,970 του sniffing αυτό το cookie, παρουσιάζοντάς το στο Facebook ως τη δική σας, 338 00:20:05,970 --> 00:20:07,990 και, voila, εσείς έχετε εισέλθει 339 00:20:07,990 --> 00:20:11,190 Έτσι, αυτό είναι άλλο ένα από εκείνα τα "δεν το κάνετε αυτό" επίσημα. 340 00:20:11,190 --> 00:20:14,660 Αν έχετε δικό σας οικιακό δίκτυο και θέλετε να πειραματιζόμαστε, με όλα τα μέσα, 341 00:20:14,660 --> 00:20:17,530 αλλά αυτό δεν συνειδητοποιούν διασχίσουν τη γραμμή σε ένα πανεπιστημιακό περιβάλλον. 342 00:20:17,530 --> 00:20:20,030 >> Αλλά ο στόχος εδώ είναι πραγματικά να τονίσω όχι πώς να το κάνουμε αυτό 343 00:20:20,030 --> 00:20:22,320 αλλά πώς να υπερασπίσει ενάντια σε αυτά τα είδη των πραγμάτων. 344 00:20:22,320 --> 00:20:26,180 Και η τετριμμένη λύση εδώ, παρόλο που η ίδια είναι εσφαλμένη, 345 00:20:26,180 --> 00:20:31,360 είναι να μειωθεί πραγματικά χρήση των χώρων που δεν χρησιμοποιούν HTTPS συνεχώς. 346 00:20:31,360 --> 00:20:34,520 Έτσι sites όπως το Facebook και η Google έχουν όλο και checkboxes 347 00:20:34,520 --> 00:20:36,200 όπου μπορείτε να επιλέξετε σε αυτό το είδος του πράγματος, 348 00:20:36,200 --> 00:20:40,000 και οι τράπεζες είχαν αυτό εδώ και χρόνια για παρόμοιους λόγους. 349 00:20:40,000 --> 00:20:43,580 Έτσι, μόνο ένα μικρό κομμάτι από ένα παράγοντα φόβο, αν μπορούμε. Αλλά αυτό είναι το με λίγα λόγια. 350 00:20:43,580 --> 00:20:46,420 Αυτό είναι το πώς ένας διακομιστής θυμάται ποιος είσαι. 351 00:20:46,420 --> 00:20:50,760 Και από τη στιγμή που μπορεί να θυμηθεί ποιος είσαι, μπορούν να θυμηθούν τίποτα για σας 352 00:20:50,760 --> 00:20:56,140 ότι ο προγραμματιστής έχει αποθηκεύσει στο εσωτερικό αυτής της ειδικής superglobal ονομάζεται $ _SESSION. 353 00:20:56,140 --> 00:20:59,750 Και για PSET 7 είμαστε χρησιμοποιώντας επιπόλαια απλά να θυμάστε ένα int, 354 00:20:59,750 --> 00:21:02,260 δηλαδή το μοναδικό αναγνωριστικό του χρήστη που έχει συνδεθεί, 355 00:21:02,260 --> 00:21:05,880 έτσι ώστε να γνωρίζουμε που έχουν πάει εκεί πριν. 356 00:21:05,880 --> 00:21:12,450 Οποιεσδήποτε ερωτήσεις σχετικά με τις συνεδρίες τότε ή μπισκότα ή τα παρόμοια; 357 00:21:12,450 --> 00:21:15,130 Firesheep δεν λειτουργεί τόσο καλά πια, 358 00:21:15,130 --> 00:21:18,310 και θα πρέπει να βάλετε τον υπολογιστή σας σε ένα ειδικό promiscuous mode 359 00:21:18,310 --> 00:21:20,700 έτσι είστε πραγματικά να ακούτε για την κυκλοφορία εκτός από τον εαυτό σας. 360 00:21:20,700 --> 00:21:23,940 Έτσι, εάν κάνετε λήψη του παρόντος Firesheep, συνειδητοποιούν ότι δεν είναι τόσο εύκολο 361 00:21:23,940 --> 00:21:26,850 όπως ήταν κάποτε να αποδειχθεί. 362 00:21:26,850 --> 00:21:29,070 Εντάξει. Και δεν το κάνω σε Sanders. Κάν 'το σπίτι. 363 00:21:29,070 --> 00:21:30,890 Βάσεις Δεδομένων. 364 00:21:30,890 --> 00:21:33,580 Ένα από τα πράγματα που κάναμε στην PSET 7 πολύ σκόπιμα 365 00:21:33,580 --> 00:21:37,780 ήταν να σας δώσω ένα δείγμα πίνακα της βάσης δεδομένων για τους χρήστες που έχει μερικά αναγνωριστικά χρήστη, 366 00:21:37,780 --> 00:21:41,020 μερικά ονόματα χρηστών, και μερικές κρυπτογραφημένους κωδικούς πρόσβασης σ 'αυτό. 367 00:21:41,020 --> 00:21:44,520 Και όπως θα δείτε, αν δεν το έχετε κάνει ήδη, εσείς πρόκειται να πρέπει να αλλάξετε τον πίνακα λίγο. 368 00:21:44,520 --> 00:21:47,710 Θα πάμε να πρέπει να προσθέσετε κάποια cache σε κάθε ένα από τους χρήστες σε αυτόν τον πίνακα, 369 00:21:47,710 --> 00:21:51,130 και εσείς πρόκειται να πρέπει να προσθέσετε μια άλλη ιστορία τραπέζι, ένα τραπέζι χαρτοφυλάκια, 370 00:21:51,130 --> 00:21:53,310 ή ίσως το ονομάσουμε κάτι άλλο. 371 00:21:53,310 --> 00:21:56,740 Αλλά από την άποψη του να σκεφτόμαστε πώς να το κάνουμε αυτό, ας ανοίξει αυτό το εργαλείο 372 00:21:56,740 --> 00:22:00,570 οποία χρησιμοποιήσαμε την Παρασκευή, αλλά αν δεν είναι εξοικειωμένοι, η συσκευή έρχεται με ένα εργαλείο 373 00:22:00,570 --> 00:22:04,680 που ονομάζεται phpMyAdmin που συμπτωματικά γραμμένο σε PHP, 374 00:22:04,680 --> 00:22:07,950 αλλά ο σκοπός του στη ζωή, αφού συνδεθείτε εδώ ως jharvard με βαθύ κόκκινο χρώμα, 375 00:22:07,950 --> 00:22:15,160 είναι να μου δώσει ένα φιλικό προς το χρήστη τρόπος για την προβολή και την αλλαγή της βάσης δεδομένων μου. 376 00:22:15,160 --> 00:22:18,040 >> Η βάση δεδομένων που τρέχω στη συσκευή ονομάζεται MySQL. 377 00:22:18,040 --> 00:22:23,420 Αυτό είναι πολύ δημοφιλής, και είναι μια δωρεάν βάση δεδομένων ανοικτού κώδικα που είναι θαυμάσια εύκολο στη χρήση, 378 00:22:23,420 --> 00:22:25,620 με ειδικά μπροστά τελειώνει σαν αυτό. 379 00:22:25,620 --> 00:22:29,350 Αυτό το εργαλείο σας επιτρέπει να κάνω, για παράδειγμα, είναι σακί γύρω τραπέζια. 380 00:22:29,350 --> 00:22:30,890 Επιτρέψτε μου να προχωρήσει και να το κάνουμε αυτό. 381 00:22:30,890 --> 00:22:36,580 Την Παρασκευή έχουμε δημιουργήσει έναν πίνακα που ονομάζεται μαθητές που ήταν εξαιρετικά απλή. 382 00:22:36,580 --> 00:22:41,680 Είχε 3 στήλες - id, όνομα και email - και εγώ το χέρι εισάγεται ένα ζευγάρι των σειρών 383 00:22:41,680 --> 00:22:44,420 όπως ο David και ο Mike στο συγκεκριμένο παράδειγμα. 384 00:22:44,420 --> 00:22:47,290 Ας ρίξουμε αυτό το λίγο περισσότερο, και ας υποθέσουμε ότι θέλουμε να θυμόμαστε περισσότερο 385 00:22:47,290 --> 00:22:49,660 όχι μόνο το όνομα και e-mail για ένα χρήστη. 386 00:22:49,660 --> 00:22:53,090 Επιτρέψτε μου κάντε κλικ εδώ Δομή στην κορυφή. 387 00:22:53,090 --> 00:22:55,440 Και πάλι, η PSET σας καθοδηγεί στα απαραίτητα βήματα εδώ, 388 00:22:55,440 --> 00:22:58,150 οπότε μην ανησυχείτε αν μερικά από αυτό είναι λίγο γρήγορη. 389 00:22:58,150 --> 00:22:59,690 Στη συνέχεια, Πάω να κάνετε κλικ εδώ. 390 00:22:59,690 --> 00:23:02,270 Πάω να προσθέσετε κάποια αριθμός των στηλών μετά από e-mail 391 00:23:02,270 --> 00:23:04,130 επειδή θέλω να προσθέσω κάτι σαν σπίτι. 392 00:23:04,130 --> 00:23:06,640 Ξέχασα να καταγράψει το σπίτι ενός μαθητή. 393 00:23:06,640 --> 00:23:11,400 Επιτρέψτε μου να κάντε κλικ στο κουμπί Μετάβαση, και τώρα έχουμε αυτή τη μορφή, που δυστυχώς είναι λίγο μεγάλη από αριστερά προς τα δεξιά, 394 00:23:11,400 --> 00:23:13,710 αλλά Πάω να καλέσει το όνομα αυτού του σπιτιού τομέα, 395 00:23:13,710 --> 00:23:16,050 και τότε ο τύπος που έχω τώρα να επιλέξουν. 396 00:23:16,050 --> 00:23:18,870 Έτσι, ας ρίξουμε μια σύντομη συζήτηση σχετικά με τους διάφορους τύπους σε MySQL 397 00:23:18,870 --> 00:23:24,590 διότι ενώ η PHP είναι ασθενώς δακτυλογραφημένα και το είδος του παίζει γρήγορα και χαλαρά με τους τύπους, 398 00:23:24,590 --> 00:23:29,430 σε μια βάση δεδομένων ειδικά είναι εξαιρετικά σημαντικό να χρησιμοποιήσετε πραγματικά την πληκτρολόγηση προς όφελός σας 399 00:23:29,430 --> 00:23:33,260 επειδή ένα από τα πράγματα MySQL και άλλες μηχανές βάση δεδομένων μπορεί να κάνει για σας 400 00:23:33,260 --> 00:23:37,910 είναι να εξασφαλίσουμε ότι δεν θα βάλει ψεύτικες δεδομένα στη βάση δεδομένων σας. 401 00:23:37,910 --> 00:23:41,850 Αυτό είναι το είδος του ελέγχου σφαλμάτων ελεύθερη στη διάθεσή σας. 402 00:23:41,850 --> 00:23:46,250 >> Για το σπίτι που προφανώς δεν θέλουν να είναι ένα int, το οποίο είναι ένα 32-bit τιμή σε MySQL. 403 00:23:46,250 --> 00:23:49,810 Κάναμε μιλήσουμε λίγο για την Παρασκευή varchar, που σημαίνει μεταβλητού μήκους char. 404 00:23:49,810 --> 00:23:54,720 Τι είναι αυτό; Αυτό σας δίνει τη δυνατότητα να καθορίσετε ότι θέλετε αυτό να είναι μια σειρά από κάποιου είδους. 405 00:23:54,720 --> 00:23:56,840 Μπορείτε πραγματικά δεν γνωρίζουν εκ των προτέρων πόσο καιρό είναι, 406 00:23:56,840 --> 00:24:00,100 έτσι θα πούμε αυθαίρετα ένα όνομα σπίτι μπορεί να είναι 255 χαρακτήρες, 407 00:24:00,100 --> 00:24:04,190 αλλά θα μπορούσε να πάει με 32, 64 - οποιοδήποτε αριθμό πραγματικά. 408 00:24:04,190 --> 00:24:10,700 Αλλά το πλεονέκτημα της χρήσης ενός varchar σε ένα πεδίο που ονομάζεται char είναι αυτό; 409 00:24:10,700 --> 00:24:15,110 Απλά διαισθητικά αν μετακινηθείτε προς τα κάτω εδώ, παρατηρούμε ότι υπάρχει char και varchar υπάρχει. 410 00:24:15,110 --> 00:24:19,520 Varchar είναι μεταβλητού μήκους char? Char είναι ένα σταθερό μήκος char. 411 00:24:19,520 --> 00:24:24,730 Έτσι, με βάση μόνο τον ορισμό αυτό, τι είναι το πλεονέκτημα ή μειονέκτημα του κάθε ένα από αυτά; 412 00:24:24,730 --> 00:24:30,490 Με άλλα λόγια, ποιος νοιάζεται για τη διάκριση, ή γιατί πρέπει να σας νοιάζει; 413 00:24:31,660 --> 00:24:35,750 >> Ναι. [Φοιτητής] varchar έχει μεγαλύτερη ευελιξία, αλλά καταλαμβάνει περισσότερο χώρο στη μνήμη. 414 00:24:35,750 --> 00:24:40,730 Καλή. Varchar καταλαμβάνει περισσότερο - Ας δούμε. Δεν είμαι σίγουρος αν έχω ακούσει αυτό το δικαίωμα. 415 00:24:40,730 --> 00:24:42,360 Μπορείτε να πείτε ότι για μια ακόμη φορά; 416 00:24:42,360 --> 00:24:45,850 [Φοιτητής] είπα varchar έχει πιθανότατα μεγαλύτερη ευελιξία, αλλά καταλαμβάνει περισσότερο χώρο στη μνήμη. 417 00:24:45,850 --> 00:24:51,170 Ενδιαφέρουσες. Εντάξει. Varchar δίνει πιθανώς έχετε μεγαλύτερη ευελιξία, αλλά καταλαμβάνει περισσότερο χώρο στη μνήμη. 418 00:24:51,170 --> 00:24:53,220 Το τελευταίο δεν είναι απαραίτητα αλήθεια. 419 00:24:53,220 --> 00:24:56,290 Εξαρτάται από το πλαίσιο, αλλά ας επανέλθουμε σε αυτό. 420 00:24:56,290 --> 00:25:03,230 >> [Ακούγεται ανταπόκριση των φοιτητών] Ακριβώς. 421 00:25:03,230 --> 00:25:06,900 Είναι στην πραγματικότητα η υπόθεση ότι θα char συνήθως χρησιμοποιούν περισσότερη μνήμη 422 00:25:06,900 --> 00:25:10,950 επειδή ένας char, όπως σε C, είναι σαν μια σειρά, είναι μια σειρά από χαρακτήρες. 423 00:25:10,950 --> 00:25:13,690 Έτσι, αν σας πω μια χαρα τομέα μήκους 255, 424 00:25:13,690 --> 00:25:16,910 η βάση δεδομένων είναι κυριολεκτικά θα σας δώσει 255 χαρακτήρες. 425 00:25:16,910 --> 00:25:22,290 Και αν το σπίτι καταλήγει να είναι MATHER και 6 χαρακτήρες συνολικά, 426 00:25:22,290 --> 00:25:25,090 σπαταλάτε πάνω από 200 χαρακτήρες. 427 00:25:25,090 --> 00:25:29,640 >> Έτσι, ένα varchar αποτελεσματικά χρησιμοποιεί μόνο όσους χαρακτήρες είναι απαραίτητο 428 00:25:29,640 --> 00:25:31,590 μέχρι ένα ανώτατο ποσό. 429 00:25:31,590 --> 00:25:35,470 Αλλά η τιμή που πληρώνετε είναι πραγματικά επιδόσεις, ενδεχομένως. 430 00:25:35,470 --> 00:25:39,740 Εάν γνωρίζετε εκ των προτέρων ότι όλοι χορδές σας θα είναι 8 χαρακτήρες - 431 00:25:39,740 --> 00:25:43,090 Για παράδειγμα, ας υποθέσουμε ότι χρειάζεστε κωδικούς πρόσβασης μήκους 8 - 432 00:25:43,090 --> 00:25:47,350 η άνω πλευρά του χρησιμοποιώντας ένα char τομέα με την ευκαιρία, αν και όχι συχνά, 433 00:25:47,350 --> 00:25:51,100 είναι να προσδιορίσετε ένα συγκεκριμένο μήκος για κάτι σαν τον κωδικό πρόσβασης 434 00:25:51,100 --> 00:25:53,300 γιατί τώρα η βάση δεδομένων μπορεί να είναι ακόμη πιο έξυπνη. 435 00:25:53,300 --> 00:25:58,160 Αν ξέρει ότι κάθε char τομέα, κάθε χορδή σε μια στήλη είναι το ίδιο μήκος, 436 00:25:58,160 --> 00:26:00,780 μπορείτε να πάρετε πίσω τη λειτουργία της τυχαίας πρόσβασης. 437 00:26:00,780 --> 00:26:05,110 Μπορείτε να ρίξουν μια ματιά στα διάφορα πεδία char πίνακα της βάσης δεδομένων σας 438 00:26:05,110 --> 00:26:07,940 επειδή πιστεύω μιας βάσης δεδομένων ως γραμμές και στήλες. 439 00:26:07,940 --> 00:26:11,670 Έτσι, εάν κάθε μία από τις συμβολοσειρές έχει το ίδιο μήκος, 440 00:26:11,670 --> 00:26:17,820 Γνωρίζατε ότι το πρώτο είναι στο byte 0, η επόμενη θα είναι σε byte των 8 441 00:26:17,820 --> 00:26:20,240 και στη συνέχεια 16 και στη συνέχεια 24 και ούτω καθεξής. 442 00:26:20,240 --> 00:26:24,500 Έτσι, αν όλοι οι χορδές έχουν το ίδιο μήκος, μπορείτε να πηδούν γύρω από πολύ πιο αποτελεσματικά. 443 00:26:24,500 --> 00:26:26,710 Έτσι, αυτό μπορεί να είναι ένα πλεονέκτημα όσον αφορά τις επιδόσεις, 444 00:26:26,710 --> 00:26:29,420 αλλά συνήθως δεν έχουν την πολυτέλεια να γνωρίζει εκ των προτέρων, 445 00:26:29,420 --> 00:26:32,170 έτσι ένα varchar είναι ο τρόπος να πάει. 446 00:26:32,170 --> 00:26:36,030 Εδώ είναι μια άλλη λεπτομέρεια που ακόμα και έτρεξε στο Facebook τελικά. 447 00:26:36,030 --> 00:26:39,670 Ints είναι μεγάλη, και εμείς είδος τους χρησιμοποιήσει από προεπιλογή κάθε φορά που θέλουμε έναν αριθμό, 448 00:26:39,670 --> 00:26:41,750 αλλά αυτό είναι μόνο 32 bit. 449 00:26:41,750 --> 00:26:46,210 >> Και παρόλο Facebook δεν έχει αρκετά 4 δισεκατομμύρια χρήστες τώρα, 450 00:26:46,210 --> 00:26:48,680 υπάρχει σίγουρα κάποιοι άνθρωποι εκεί έξω με πολλαπλούς λογαριασμούς 451 00:26:48,680 --> 00:26:50,960 ή λογαριασμούς που έχουν ανοιχτεί και στη συνέχεια κλείνει, 452 00:26:50,960 --> 00:26:55,130 Facebook και έτσι πιστεύω ότι η ίδια πριν από μερικά χρόνια είχε τη μετάβαση από int 453 00:26:55,130 --> 00:27:00,010 να, όπως εύστοχα αποκαλείται, bigint, το οποίο απέχει μόλις 64 bits αντ 'αυτού. 454 00:27:00,010 --> 00:27:02,230 Έτσι, αυτό είναι πάρα πολύ μια σχεδιαστική απόφαση. 455 00:27:02,230 --> 00:27:06,570 Θα είναι απίστευτα τυχερός αν τελικά το έργο σας μετατρέπει την εκκίνηση, 456 00:27:06,570 --> 00:27:10,010 έχει 4 δισ. ευρώ και 1 χρήστες, ή να δώσει, 457 00:27:10,010 --> 00:27:13,200 περίπτωση κατά την οποία με τη χρήση ints μπορεί να είναι λίγο κοντόφθαλμη. 458 00:27:13,200 --> 00:27:16,230 Αλλά στην πραγματικότητα, οι χρήστες τραπέζι σας είναι πιθανώς πρόστιμο με ints. 459 00:27:16,230 --> 00:27:19,340 Αλλά για κάτι σαν PSET 7, όπως το τραπέζι ιστορία σας, 460 00:27:19,340 --> 00:27:23,700 μπορεί να έχετε χιλιάδες, εκατομμύρια χρήστες, αν εξελιχθεί σε etrade.com. 461 00:27:23,700 --> 00:27:26,020 Έτσι, ενώ μπορεί να μην έχει περισσότερα από 4 δισεκατομμύρια χρήστες, 462 00:27:26,020 --> 00:27:30,070 οι χρήστες έχετε να έχετε περισσότερα από 4 δισεκατομμύρια συναλλαγές το χρόνο - 463 00:27:30,070 --> 00:27:33,200 αγοράζει και πωλεί τα πράγματα και στην ιστορία τους. 464 00:27:33,200 --> 00:27:38,090 Έτσι, αν κάνουμε πρόβλεψη - και πάλι, αυτά είναι καλά να έχουμε προβλήματα, αν έχετε αυτό το πολύ στοιχεία - 465 00:27:38,090 --> 00:27:40,920 αν το κάνετε προβλέπουν τα δεδομένα που υπερβαίνουν το μέγεθος ενός int, 466 00:27:40,920 --> 00:27:47,740 Θα με κάτι σαν bigint είναι μια κατεύθυνση αρκετά συχνά δεν εγκρίθηκε από τους σχεδιαστές 467 00:27:47,740 --> 00:27:49,710 επειδή οι άνθρωποι εικόνα που δεν πρόκειται να είναι ένα πρόβλημα, 468 00:27:49,710 --> 00:27:51,930 αλλά αυτό είναι εύκολο να διαλέξετε κάτι μεγαλύτερο από αυτό. 469 00:27:51,930 --> 00:27:55,380 Δεκαδικός που χρησιμοποιούμε σε PSET 7, το οποίο καθορίζει σταθερή ακρίβεια 470 00:27:55,380 --> 00:27:59,840 ώστε να μπορείτε να αποφύγετε τα ζητήματα που αφορούν άρματα και δίκλινα και reals και τα παρόμοια. 471 00:27:59,840 --> 00:28:02,440 >> Και έπειτα υπάρχει κάποια άλλα πεδία εδώ. Θα κύμα τα χέρια μας σε αυτά σε κάποιο βαθμό. 472 00:28:02,440 --> 00:28:07,270 Αλλά ημερομηνίες, ώρες έχουν όλα ένα καθορισμένο σχήμα, σε MySQL, 473 00:28:07,270 --> 00:28:10,830 και το πλεονέκτημα της αποθήκευσης ημερομηνίες ως ημερομηνίες και όχι varchars 474 00:28:10,830 --> 00:28:15,730 σημαίνει ότι η βάση δεδομένων μπορεί να διαμορφώσετε τους πραγματικά σε διάφορες μορφές, 475 00:28:15,730 --> 00:28:18,800 αν μια μορφή ευρωπαϊκή ή αμερικανική μορφή ή τα παρόμοια - με όποιον τρόπο θέλετε - 476 00:28:18,800 --> 00:28:22,700 πολύ πιο αποτελεσματικά από ό, τι αν ήταν μόνο μερικές γενικές varchar. 477 00:28:22,700 --> 00:28:25,150 Και έπειτα υπάρχει κάποια άλλη δυαδικό, varbinary, σταγόνες. 478 00:28:25,150 --> 00:28:28,580 Αυτά είναι δυαδικό μεγάλα αντικείμενα, και μπορείτε επίσης να αποθηκεύσετε δυαδικά δεδομένα 479 00:28:28,580 --> 00:28:30,750 καθώς και τα γεωμετρικά δεδομένα σε μια βάση δεδομένων. 480 00:28:30,750 --> 00:28:34,350 Αλλά για μας θα συνήθως ενδιαφέρονται για ints και varchars και τα παρόμοια. 481 00:28:34,350 --> 00:28:36,230 Ας τελειώσουμε αυτό το παράδειγμα με το σπίτι. 482 00:28:36,230 --> 00:28:40,030 Σπίτι Πάω να πω αυθαίρετα θα είναι 255 χαρακτήρες. 483 00:28:40,030 --> 00:28:42,850 Στη συνέχεια, η προεπιλεγμένη τιμή που θα μπορούσαμε να το κάνουμε αυτό. 484 00:28:42,850 --> 00:28:47,440 Θα μπορούσαμε από προεπιλογή θέσει ο καθένας στο σπίτι Mather, για παράδειγμα. 485 00:28:47,440 --> 00:28:49,710 Αυτό είναι το πώς θα μπορούσαμε να διευκρινιστεί ότι η βάση δεδομένων 486 00:28:49,710 --> 00:28:52,460 θα πρέπει να διασφαλίζουν ότι κάποιος έχει πάντα αξία. Αλλά εγώ θα το αφήσω αυτό να είναι. 487 00:28:52,460 --> 00:28:55,270 Στην πραγματικότητα, για τους ανθρώπους που ζουν από την πανεπιστημιούπολη και όχι σε ένα σπίτι, 488 00:28:55,270 --> 00:28:59,590 ίσως πραγματικά θέλετε να ορίσετε ότι η προκαθορισμένη τιμή για το σπίτι είναι NULL, 489 00:28:59,590 --> 00:29:04,890 και τότε θα πρέπει να ελέγξετε αυτό το πλαίσιο και τη βάση δεδομένων πει ότι είναι εντάξει αν το σπίτι του χρήστη είναι NULL. 490 00:29:04,890 --> 00:29:07,270 >> Και πάλι, αυτό είναι ένα άλλο αμυντικό μηχανισμό που μπορεί να θέσει σε εφαρμογή 491 00:29:07,270 --> 00:29:10,590 έτσι δεν χρειάζεται καν να το θέσει σε κώδικα PHP σας κατ 'ανάγκην. 492 00:29:10,590 --> 00:29:14,630 Η βάση δεδομένων θα εξασφαλίσει ότι τα πράγματα είναι ή δεν είναι NULL. 493 00:29:14,630 --> 00:29:17,310 Και στη συνέχεια, τέλος, χαρακτηριστικά. 494 00:29:17,310 --> 00:29:18,920 Κανένα από αυτά δεν είναι πραγματικά σχετικό. 495 00:29:18,920 --> 00:29:22,880 Binary, ανυπόγραφο - κανένα από αυτά είναι κατάλληλα για ένα varchar. 496 00:29:22,880 --> 00:29:24,220 Δείκτης. 497 00:29:24,220 --> 00:29:27,320 Ξέρει κανείς ή να θυμηθεί ή να έχουν μια εικασία ως προς το τι είναι ένας δείκτης 498 00:29:27,320 --> 00:29:29,510 για κάτι τέτοιο σπίτι; 499 00:29:29,510 --> 00:29:35,240 Αυτό είναι πάρα πολύ στην πραγματικότητα μια σημαντική και σχετικά εύκολη σχεδιαστική απόφαση. 500 00:29:35,240 --> 00:29:39,200 Για όσους δεν έχουν δει ακόμη, την Παρασκευή μιλήσαμε για λίγο για πρωτεύοντα κλειδιά. 501 00:29:39,200 --> 00:29:43,240 Σε ένα πίνακα βάσης δεδομένων, ένα πρωτεύον κλειδί είναι το πεδίο ή στήλη 502 00:29:43,240 --> 00:29:46,270 που προσδιορίζει μοναδικά γραμμές του πίνακα. 503 00:29:46,270 --> 00:29:49,150 Έτσι, στο σημερινό πίνακα έχουμε ταυτότητες, έχουμε τα ονόματα και email. 504 00:29:49,150 --> 00:29:52,050 Ποια από αυτά είναι ο καλύτερος υποψήφιος για να είναι ένα πρωτεύον κλειδί, 505 00:29:52,050 --> 00:29:55,810 ο ρόλος του οποίου είναι να προσδιορίσει μοναδικά σειρές; 506 00:29:55,810 --> 00:29:57,530 Πιθανώς ID. 507 00:29:57,530 --> 00:29:59,930 Αναμφισβήτητα, θα μπορούσε επίσης να χρησιμοποιήσει ό, τι όμως; 508 00:29:59,930 --> 00:30:02,860 Ίσως θα μπορούσατε να χρησιμοποιήσετε e-mail, γιατί θεωρητικά είναι μοναδική 509 00:30:02,860 --> 00:30:05,380 εκτός εάν οι άνθρωποι μοιράζονται τους λογαριασμούς ηλεκτρονικού ταχυδρομείου. 510 00:30:05,380 --> 00:30:09,980 Αλλά η πραγματικότητα είναι ότι αν χρησιμοποιείτε μια αριθμητική ταυτότητα, όπως 1234, 511 00:30:09,980 --> 00:30:14,170 αυτό είναι μόνο 32 bits, ενώ μια διεύθυνση ηλεκτρονικού ταχυδρομείου μπορεί να είναι αυτό πολλές bytes ή αυτό πολλά bytes. 512 00:30:14,170 --> 00:30:16,610 Έτσι, από την άποψη της αποτελεσματικότητας για μοναδικά αναγνωριστικά, 513 00:30:16,610 --> 00:30:19,270 τείνει να είναι καλή πρακτική να χρησιμοποιούν μόνο ένα int 514 00:30:19,270 --> 00:30:23,090 ακόμη και αν έχετε κάποια σειρά υποψήφιος που θα μπορούσατε να χρησιμοποιήσετε αναμφισβήτητα. 515 00:30:23,090 --> 00:30:26,760 >> Για κάτι σαν σπίτι, αυτό δεν θα πρέπει να είναι ένα πρωτεύον κλειδί 516 00:30:26,760 --> 00:30:30,770 γιατί τότε μόνο 1 άτομο θα μπορούσε να ζήσει σε Mather και 1 άτομο σε Currier και τα παρόμοια. 517 00:30:30,770 --> 00:30:32,790 Ομοίως, αυτό δεν πρέπει να είναι μοναδικό. 518 00:30:32,790 --> 00:30:37,830 Η διαφορά μεταξύ πρωτογενούς και μοναδικό είναι ότι στην περίπτωση του τρέχοντος πίνακα μας, 519 00:30:37,830 --> 00:30:42,620 ID θα είναι η κύρια, αλλά δεν είναι e-mail για την πρωτοβάθμια λόγος που μόλις αναφέραμε - 520 00:30:42,620 --> 00:30:44,740 απόδοση - αλλά θα πρέπει ακόμα να είναι μοναδικό. 521 00:30:44,740 --> 00:30:47,200 Έτσι, μπορείτε να επιβάλουν ακόμα μοναδικότητα χωρίς να κάνει τον ισχυρισμό 522 00:30:47,200 --> 00:30:49,520 ότι πρόκειται για ένα εξαιρετικά σημαντικό πρωτογενή τομέα. 523 00:30:49,520 --> 00:30:52,610 Αλλά αυτό είναι πολύ χρήσιμο: Δείκτης. 524 00:30:52,610 --> 00:30:56,180 Εάν γνωρίζετε εκ των προτέρων για το τελικό σχέδιο σας, για PSET 7, ή σε γενικές γραμμές, 525 00:30:56,180 --> 00:30:59,480 ότι στον τομέα αυτό το σπίτι πρόκειται να είναι κάτι που ψάχνετε σε ένα πολύ 526 00:30:59,480 --> 00:31:01,910 χρησιμοποιώντας την επιλογή λέξεων-κλειδιών ή κάτι άλλο, 527 00:31:01,910 --> 00:31:05,180 τότε μπορείτε να πείτε προληπτικά τη βάση δεδομένων για να κάνει τα μαγικά του 528 00:31:05,180 --> 00:31:10,510 και βεβαιωθείτε ότι δημιουργεί στη μνήμη όλα τα φανταχτερά δομών δεδομένων που είναι αναγκαία 529 00:31:10,510 --> 00:31:13,770 να επισπεύσει αναζητήσεις με βάση το σπίτι. 530 00:31:13,770 --> 00:31:17,860 Ίσως θα χρησιμοποιήσει έναν πίνακα κατακερματισμού, ίσως θα χρησιμοποιήσει μια συνδεδεμένη λίστα. 531 00:31:17,860 --> 00:31:21,260 Στην πραγματικότητα, τείνει να χρησιμοποιήσει ένα δέντρο, συχνά μία δομή που ονομάζεται Β-δέντρο - 532 00:31:21,260 --> 00:31:24,090 δεν είναι ένα δυαδικό δέντρο, αλλά ένα Β-δέντρο - το οποίο είναι ένα πολύ μεγάλο δέντρο 533 00:31:24,090 --> 00:31:27,370 ότι μπορείτε να δείτε σε μια κατηγορία όπως CS124, τα δεδομένα κατηγορίας δομές. 534 00:31:27,370 --> 00:31:31,800 Αλλά με λίγα λόγια, δεν χρειάζεται να ανησυχείτε γι 'αυτό, όταν χρησιμοποιεί το έξυπνο λογισμικό βάσης δεδομένων. 535 00:31:31,800 --> 00:31:35,890 Μπορείτε να πείτε απλά, "Δείκτης αυτό το πεδίο ώστε να μπορώ να ψάξει για πιο αποτελεσματικά." 536 00:31:35,890 --> 00:31:40,250 >> Αν αφήσετε αυτό το off και την προσπάθειά σας να κάνετε αναζήτηση για όλους στη βάση δεδομένων που ζει σε Mather, 537 00:31:40,250 --> 00:31:42,710 θα περιέλθει σε γραμμική αναζήτηση. 538 00:31:42,710 --> 00:31:45,360 Και αν έχετε 6.000 προπτυχιακούς όλα ζουν σε κάποιο σπίτι, 539 00:31:45,360 --> 00:31:47,900 θα πάμε να ψάξει ολόκληρο τον πίνακα για να βρείτε τις Matherites, 540 00:31:47,900 --> 00:31:52,190 ενώ αν πεις Δείκτης, ελπίζω ότι θα είναι κάτι κοντά σε μια λογαριθμική αναζήτηση 541 00:31:52,190 --> 00:31:54,510 να βρείτε αυτά τα είδη των φοιτητών. 542 00:31:54,510 --> 00:31:56,750 Αυτό είναι μόνο ένα ελεύθερο χαρακτηριστικό γνώρισμα για να ενεργοποιήσετε, 543 00:31:56,750 --> 00:31:59,530 ακόμη και αν δεν έρχονται σε μια τιμή περίπου ποσό του χώρου. 544 00:31:59,530 --> 00:32:02,690 Τέλος, auto-increment, αυτό το πεδίο AI, 545 00:32:02,690 --> 00:32:05,830 πράγμα που σημαίνει απλά αν είναι μια int και δεν θέλετε να φροντίζετε τον εαυτό σας να αυξήσετε το 546 00:32:05,830 --> 00:32:07,570 κάθε φορά που υπάρχει ένα νέο χρήστη, ελέγξτε ότι, 547 00:32:07,570 --> 00:32:11,910 και κάθε χρήστης που παίρνει εισαχθεί θα πάρει αυτόματα μια νέα ταυτότητα. 548 00:32:11,910 --> 00:32:15,620 Ας κλικ στο κουμπί Αποθήκευση, και τώρα ας βρούμε σφάλμα με αυτό το σχέδιο. 549 00:32:15,620 --> 00:32:20,200 Αν πάω στο Περιήγηση, ειδοποίηση ότι τόσο ο Mike και το σπίτι μου είναι NULL. 550 00:32:20,200 --> 00:32:22,420 Μπορώ να χρησιμοποιήσω το phpMyAdmin για να επεξεργαστείτε αυτό το χέρι. 551 00:32:22,420 --> 00:32:25,110 Μπορώ να πάω στο εδώ και πληκτρολογήστε Mather και στη συνέχεια πατήστε Enter, 552 00:32:25,110 --> 00:32:27,740 και τώρα παρατηρήσετε το τραπέζι είναι διαφορετικό. 553 00:32:27,740 --> 00:32:29,270 Αλλά παρατηρήσετε θα μπορούσα να κάνω κάτι άλλο επίσης. 554 00:32:29,270 --> 00:32:33,530 ID Δαβίδ είναι 1, έτσι ώστε το phpMyAdmin είναι και πάλι μόνο ένα διοικητικό εργαλείο? 555 00:32:33,530 --> 00:32:35,970 αυτό δεν είναι κάτι που οι χρήστες σας πρόκειται ποτέ να δούμε. 556 00:32:35,970 --> 00:32:38,810 Έτσι, αν κάνω κλικ αντί του SQL καρτέλα επάνω στην κορυφή - 557 00:32:38,810 --> 00:32:41,450 και πάλι, PSET 7 θα σας παρουσιάσουμε περισσότερα από αυτά τα ερωτήματα - 558 00:32:41,450 --> 00:32:45,260 Μπορώ να εκτελέσει αυτόματα την εντολή SQL δομημένη γλώσσα επερωτήσεων 559 00:32:45,260 --> 00:32:56,410 Χρήστες UPDATE SET σπίτι = 'Pfoho' ΟΠΟΥ id = 1. 560 00:32:56,410 --> 00:33:00,830 Αυτά τα ερωτήματα SQL είναι αρκετά ωραία, αρκετά αναγνώσιμο από αριστερά προς τα δεξιά. 561 00:33:00,830 --> 00:33:04,350 Ενημέρωση του πίνακα των χρηστών, που το πεδίο που ονομάζεται σπίτι για να Pfoho 562 00:33:04,350 --> 00:33:06,830 όπου ID του χρήστη είναι 1. 563 00:33:06,830 --> 00:33:11,480 Ή θα μπορούσα να κάνω ακόμη και όπου email = "malan@harvard.edu». 564 00:33:11,480 --> 00:33:14,860 Εφ 'όσον η οποία προσδιορίζει με μοναδικό τρόπο, που θα λειτουργεί τόσο καλά. 565 00:33:14,860 --> 00:33:18,810 Αλλά ID τείνει να είναι υψηλότερες επιδόσεις, οπότε ας το κάνουμε αυτό. 566 00:33:18,810 --> 00:33:22,950 Ας κάνουμε κλικ Go. Εντάξει, lecture.users δεν υπάρχει. Τι είναι το λάθος μου; 567 00:33:22,950 --> 00:33:26,220 Ποια είναι η πραγματικότητα που ονομάζεται πίνακας εδώ; 568 00:33:26,220 --> 00:33:28,770 Λέγεται φοιτητές μόνο και μόνο επειδή αυτό είναι ό, τι κάναμε μέχρι εδώ πάνω αριστερά. 569 00:33:28,770 --> 00:33:31,860 Λέγεται μαθητές και όχι τους χρήστες. Έτσι, κάντε κλικ στο κουμπί Μετάβαση τώρα. 570 00:33:31,860 --> 00:33:34,330 1 σειρά επηρεάζεται. Ερώτημα ολοκληρώθηκε σε 0,01 δευτερόλεπτα. 571 00:33:34,330 --> 00:33:38,010 Αν κάνω κλικ στο κουμπί Αναζήτηση τώρα, τώρα ζει στην Malan Pfoho. 572 00:33:38,010 --> 00:33:42,070 Έτσι, αυτό είναι μια άλλη γεύση του SQL, αλλά η PSET θα σας καθοδηγήσει λίγο περισσότερο από αυτό. 573 00:33:42,070 --> 00:33:44,710 >> Υπάρχει μια ηλίθια απόφαση που έχω ήδη κάνει εδώ. 574 00:33:44,710 --> 00:33:47,820 Θα έλεγα ότι αυτό το σχέδιο είναι ανεπαρκές δεδομένων 575 00:33:47,820 --> 00:33:51,650 επειδή οι περισσότεροι άνθρωποι ήθελα να προσθέσω στο τραπέζι των φοιτητών, 576 00:33:51,650 --> 00:33:54,730 η περισσότεροι από εμάς θα αρχίσουμε να προσθέτουμε, την περισσότερες από τις ΤΡ Αρχίζω την προσθήκη, 577 00:33:54,730 --> 00:33:58,320 θα πάμε να αρχίσουμε να βλέπουμε τι απώλειες θέσεων εργασίας σε αυτόν τον πίνακα; 578 00:34:00,840 --> 00:34:06,020 >> Ναι. [Φοιτητής] Βλέποντας ότι είναι σε φοιτητές, είμαστε με τον ίδιο [δεν ακούγεται] 579 00:34:06,020 --> 00:34:07,360 Το ίδιο - Σωστά, ακριβώς. 580 00:34:07,360 --> 00:34:10,400 Έτσι, αν 400 άτομα ζουν σε Mather, ή να δώσει, 581 00:34:10,400 --> 00:34:15,000 τελικά ο πίνακας αυτός θα έχει 400 σειρές που λένε "Mather," "Mather," 582 00:34:15,000 --> 00:34:16,590 "Mather," "Mather," "Mather". 583 00:34:16,590 --> 00:34:19,820 Χάνουμε όλων αυτών των bytes, και υπάρχει ένα ζευγάρι των takeaways εκεί. 584 00:34:19,820 --> 00:34:23,080 1, υπάρχει η τρελή περίπτωση γωνία, όπου αν κάποιος πληρώνει πολλά χρήματα 585 00:34:23,080 --> 00:34:25,949 και μετονομάζει Mather, τώρα πρέπει να αλλάξει ολόκληρο τον πίνακα της βάσης δεδομένων μας. 586 00:34:25,949 --> 00:34:29,730 Αυτό δεν πρόκειται να συμβεί συχνά, αν και Pfoho λεγόταν κάποτε Βόρεια Βουλή πριν από 15 χρόνια, 587 00:34:29,730 --> 00:34:32,310 γι 'αυτό που συμβαίνει. Αλλά αυτό δεν είναι όλα ότι συναρπαστικό. 588 00:34:32,310 --> 00:34:36,000 Πιο συναρπαστικό από μια υπόθεση όπως η γωνία του να χρειάζεται να ενημερώσετε τα δεδομένα σε μεγάλες ποσότητες 589 00:34:36,000 --> 00:34:41,150 για μια βάση δεδομένων είναι γιατί είστε αποθήκευση MATHER ξανά και ξανά και ξανά και ξανά; 590 00:34:41,150 --> 00:34:43,020 Αυτό είναι ένα πολύ χαρακτήρες, 6 χαρακτήρες. 591 00:34:43,020 --> 00:34:45,500 Μπορεί να μην το κάνουμε ακόμα καλύτερο από ότι, ειδικά για Pforzheimer; 592 00:34:45,500 --> 00:34:48,320 Σίγουρα μπορούμε να κάνουμε καλύτερα από ότι πολλοί χαρακτήρες. 593 00:34:48,320 --> 00:34:51,790 Γιατί να μην συνδέσει μόνο έναν μοναδικό αναγνωριστικό σε κάθε σπίτι 594 00:34:51,790 --> 00:34:55,020 και να αποθηκεύουν ότι για κάθε χρήστη; Ας προσπαθήσουμε αυτό. 595 00:34:55,020 --> 00:35:00,610 Αντί απλά να χρησιμοποιήσετε τον πίνακα οι μαθητές, επιτρέψτε μου να ανεβαίνουν στη βάση δεδομένων διάλεξη μου εδώ στο πάνω αριστερά. 596 00:35:00,610 --> 00:35:02,600 Σημειώστε εδώ λέει Δημιουργία πίνακα. 597 00:35:02,600 --> 00:35:04,550 Επιτρέψτε μου να δημιουργήσετε έναν νέο πίνακα που ονομάζεται σπίτια. 598 00:35:04,550 --> 00:35:08,880 Ο αριθμός των στηλών πρόκειται να είναι 2. Enter. 599 00:35:08,880 --> 00:35:11,200 Τώρα έχω 2 πεδία. 600 00:35:11,200 --> 00:35:14,600 Πάω να καλέσετε αυτό το όνομα, και αυτό πρόκειται να είναι ένα varchar μήκους 255, 601 00:35:14,600 --> 00:35:18,770 >> αλλά αυτό είναι αρκετά αυθαίρετη. Επιτρέψτε μου να θέσω αυτό εδώ κάτω από την σύμβαση. 602 00:35:18,770 --> 00:35:22,840 Έτσι, τίθεται ένα αναγνωριστικό εδώ. Ας δώσουμε σε κάθε σπίτι ένα μοναδικό αναγνωριστικό. 603 00:35:22,840 --> 00:35:25,360 Ας δώσουμε σε κάθε σπίτι ένα όνομα. 604 00:35:25,360 --> 00:35:30,980 Ας διευκρινιστεί ότι η αναγνωριστικό θα είναι ανυπόγραφο μόνο κατά συνθήκη να χρησιμοποιούν μόνο θετικούς αριθμούς. 605 00:35:30,980 --> 00:35:35,020 Ας πάμε μπροστά και να δώσει σε αυτό μια αυτόματη αύξηση πεδίο για τώρα. 606 00:35:35,020 --> 00:35:38,160 Και χρειαζόμαστε κάτι άλλο; 607 00:35:38,160 --> 00:35:41,010 Ας πάμε μπροστά και κάντε κλικ στο κουμπί Αποθήκευση. 608 00:35:41,010 --> 00:35:42,480 Τώρα έχω ένα δεύτερο πίνακα. 609 00:35:42,480 --> 00:35:45,860 Σημειώστε ως μέρος αυτό είναι το ελαφρώς κρυπτική εντολή SQL 610 00:35:45,860 --> 00:35:50,280 ότι θα έπρεπε να πληκτρολογήσετε με μη αυτόματο τρόπο, εάν δεν χρησιμοποιείτε ένα εργαλείο διαχείρισης όπως το phpMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Έτσι, ένας άλλος λόγος που το χρησιμοποιούμε. 612 00:35:51,990 --> 00:35:55,480 Είναι θαυμάσια χρήσιμο είδος της παιδαγωγικής, επειδή μπορείτε να κάνετε κλικ γύρω από 613 00:35:55,480 --> 00:36:01,050 και να καταλάβω πώς λειτουργούν τα πράγματα απλά με αντιγραφή και επικόλληση phpMyAdmin τι έκανε. 614 00:36:01,050 --> 00:36:04,150 Αλλά η εντολή Δημιουργία πίνακα είναι αυτό που μόλις εκτελεστεί, και εδώ είναι το τραπέζι μου. 615 00:36:04,150 --> 00:36:11,370 Επιτρέψτε μου τώρα να προχωρήσει και η χρήση πρώτων SQL αντί υπεραπλουστεύουμε κάνοντας κλικ στην καρτέλα Εισαγωγή. 616 00:36:11,370 --> 00:36:15,040 Επιτρέψτε μου να μην INSERT INTO σπίτια, 617 00:36:15,040 --> 00:36:22,230 και θα πάω να πω το όνομα του σπιτιού πρόκειται να έχει μια αξία του «Mather». 618 00:36:22,230 --> 00:36:24,790 Αυτό είναι όλο. Αυτή η σύνταξη είναι λίγο πιο αινιγματικό. 619 00:36:24,790 --> 00:36:26,660 Αυτό είναι το όνομα των πεδίων που θέλετε να εισαγάγετε. 620 00:36:26,660 --> 00:36:30,390 Αυτές είναι οι αξίες που θέλουμε να εισαχθεί σε αυτούς τους τομείς. Επιτρέψτε μου να κάντε κλικ στο κουμπί Μετάβαση. 621 00:36:30,390 --> 00:36:34,410 1 εισάγεται σειρά ολοκληρώθηκε σε 0,02 δευτερόλεπτα. Επιτρέψτε μου να κάντε κλικ στο κουμπί Αναζήτηση τώρα. 622 00:36:34,410 --> 00:36:42,020 >> Παρατηρήστε αν κάνω κλικ στο κουμπί Αναζήτηση, υπάρχει Mather, του οποίου η ταυτότητα είναι η αυτοματοποίηση ο αριθμός 1. 623 00:36:42,020 --> 00:36:45,000 Επιτρέψτε μου να κάνω άλλο ένα. Επιτρέψτε μου να πάω στην καρτέλα SQL. 624 00:36:45,000 --> 00:36:52,950 INSERT INTO σπίτια. Το όνομα του σπιτιού πρόκειται να έχει μία τιμή Pfoho και ούτω καθεξής. 625 00:36:52,950 --> 00:36:56,350 Go. Και μπορώ να συνεχίσω να το κάνω αυτό ξανά και ξανά και ξανά. 626 00:36:56,350 --> 00:36:59,470 Ή αν έχετε βαρεθεί με τη χρήση phpMyAdmin, μπορείτε να χρησιμοποιήσετε μόνο την καρτέλα Εισαγωγή 627 00:36:59,470 --> 00:37:01,000 και δεν πρέπει να πληκτρολογήσετε την πρώτη SQL. 628 00:37:01,000 --> 00:37:04,690 Μπορείτε να κτυπήσει ακριβώς έξω πιο γρήγορα από την πληκτρολόγηση, για παράδειγμα, Currier, Enter, 629 00:37:04,690 --> 00:37:07,610 και τώρα αν κλικ στο κουμπί Αναζήτηση, υπάρχει Currier με την ταυτότητα του 3. 630 00:37:07,610 --> 00:37:09,920 Έτσι, αυτό είναι ό, τι εννοούμε με τον όρο auto-increment. 631 00:37:09,920 --> 00:37:12,280 Τώρα, όμως, πρέπει να διορθώσετε κάτι στους μαθητές. 632 00:37:12,280 --> 00:37:16,240 Σε ό, τι οι μαθητές θα πρέπει ο τύπος δεδομένων του πεδίου είναι σπίτι τώρα; 633 00:37:16,240 --> 00:37:19,450 Θα πρέπει να είναι ένα int, έτσι δεν είναι; 634 00:37:19,450 --> 00:37:23,950 Έτσι, ο στόχος εδώ είναι να συνυπολογίσει, αλλιώς γνωστή ως φυσιολογικό, οι πίνακες 635 00:37:23,950 --> 00:37:27,940 έτσι ώστε να μην αποθηκεύουν πληροφορίες πλεονασμό σε οποιοδήποτε από τους πίνακες μου. 636 00:37:27,940 --> 00:37:31,130 Και πάλι, ο δρόμος που ήταν εδώ για πρόκειται να πει Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather, Mather, Pfoho, Pfoho, Pfoho, Pfoho, η οποία είναι πολύ περιττή 638 00:37:34,220 --> 00:37:36,240 όσον αφορά τη σπατάλη των χαρακτήρων. 639 00:37:36,240 --> 00:37:40,820 Επιτρέψτε μου λοιπόν να προχωρήσει και να το αλλάξετε αυτό, κάνοντας κλικ Δομή, 640 00:37:40,820 --> 00:37:44,620 και επιτρέψτε μου να προχωρήσει και να ελέγξετε έξω από το γήπεδο σπίτι, κάντε κλικ στο κουμπί Αλλαγή, 641 00:37:44,620 --> 00:37:46,990 και τώρα είμαι πρόκειται να αλλάξει αυτό να είναι ένα int. 642 00:37:46,990 --> 00:37:49,490 255 είναι πλέον άνευ αντικειμένου. 643 00:37:49,490 --> 00:37:54,010 Επιτρέψτε μου να προχωρήσει και να πω ότι είναι καλό, αν είναι ακόμα NULL. Αποθήκευση. 644 00:37:54,010 --> 00:37:55,870 Τώρα οι μαθητές πίνακας έχει τροποποιηθεί με επιτυχία, 645 00:37:55,870 --> 00:37:59,090 παρατηρήσετε και πάλι το σπίτι είναι ένα int. 646 00:37:59,090 --> 00:38:02,220 Ως μέρος, αγνοούν τον αριθμό σε παρένθεση, όταν πρόκειται για ints. 647 00:38:02,220 --> 00:38:03,770 >> Αυτό γίνεται για λόγους κληρονομιά. 648 00:38:03,770 --> 00:38:06,920 Πίσω στην ημέρα, όταν δεν έχετε GUIs, θα έπρεπε αντ 'αυτού ένα περιβάλλον γραμμής εντολών, 649 00:38:06,920 --> 00:38:11,580 οι 10 και 11 αντίστοιχα που αναφέρονται πόσοι χαρακτήρες θα πρέπει να δείξει 650 00:38:11,580 --> 00:38:13,950 στο παράθυρο τερματικού για να εμφανιστούν πραγματικά πεδία. 651 00:38:13,950 --> 00:38:19,150 Δεν έχει τίποτα να κάνει με το μήκος κομμάτι του πραγματικού τομέα, έτσι θα αγνοούν ότι για τώρα. 652 00:38:19,150 --> 00:38:20,990 Τώρα πρέπει να πάω σε αυτό το τραπέζι. 653 00:38:20,990 --> 00:38:24,610 Και αν Ντέιβιντ ζει σε Mather, σπίτι δεν πρέπει να είναι 0, 654 00:38:24,610 --> 00:38:27,350 η οποία είναι μια προεπιλεγμένη τιμή int που βρίσκεται πλησιέστερα στην τιμή NULL. 655 00:38:27,350 --> 00:38:29,810 Θα πρέπει να ζουν στο σπίτι 1. 656 00:38:29,810 --> 00:38:36,870 Ας πούμε ότι αυθαίρετα Mike ζει σε Pfoho, ώστε το σπίτι αριθμός 2. 657 00:38:36,870 --> 00:38:40,160 Τώρα τραπέζι μου φαίνεται λίγο πιο αινιγματικό. 658 00:38:40,160 --> 00:38:41,960 Αλλά σκεφτείτε την αποτελεσματικότητα. 659 00:38:41,960 --> 00:38:44,860 Είμαι χρησιμοποιώντας τώρα μόνο 32 bits για τον προσδιορισμό του σπιτιού, 660 00:38:44,860 --> 00:38:49,530 το οποίο σημαίνει ότι υπάρχει μόνο 1 κανονικό ορισμό του σπιτιού μου και Mather Pfoho 661 00:38:49,530 --> 00:38:52,090 και ότι είναι στο τραπέζι σπίτια. 662 00:38:52,090 --> 00:38:55,880 Έτσι, αν θέλω να επανέλθει τώρα αυτούς τους πίνακες, σκεφτείτε το αυτό τον τρόπο. 663 00:38:55,880 --> 00:39:01,980 Εδώ έχω μαθητές μου τραπέζι, και στη δεξιά πλευρά υπάρχει αυτοί οι αριθμοί, 1 και 2. 664 00:39:01,980 --> 00:39:04,180 1 είναι Mather, 2 είναι Pfoho. 665 00:39:04,180 --> 00:39:08,580 Έχουμε τα ίδια νούμερα σε αυτό το άλλο πίνακα, ο οποίος ονομάζεται σπίτια, 666 00:39:08,580 --> 00:39:11,020 1 και 2 και 3 για τα 3 σπίτια. 667 00:39:11,020 --> 00:39:14,990 Αυτό που θέλουμε τώρα να κάνουμε είναι να έχουμε τη δυνατότητα στον κώδικα, PHP και SQL, 668 00:39:14,990 --> 00:39:18,800 να ταξινομήσετε από επανέλθει αυτούς τους πίνακες, όπου και αν αυτοί είναι οι φοιτητές και αυτά είναι τα σπίτια, 669 00:39:18,800 --> 00:39:22,050 θέλουμε να συνδυάσουμε τους με κάποιο τρόπο, έτσι ώστε 1 γραμμές με 1, 670 00:39:22,050 --> 00:39:25,670 2 γραμμές με 2, και έτσι ώστε να μπορούμε να καταλάβουμε πού David 671 00:39:25,670 --> 00:39:28,000 και όπου ο Mike και όπου όλοι οι άλλοι ζει. 672 00:39:28,000 --> 00:39:31,850 Για να γίνει αυτό μπορούμε να εκτελέσουμε ένα ερώτημα SQL, όπως το παρακάτω. 673 00:39:31,850 --> 00:39:40,470 SELECT * FROM μαθητές JOIN Σπίτια - 674 00:39:40,470 --> 00:39:43,000 Και τώρα ποια πεδία θέλουμε να ενταχθούν στην; 675 00:39:43,000 --> 00:39:49,520 Έτσι students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> Μια περίεργη, αλλά αυτό το μέρος σημαίνει δημιουργήσει κυριολεκτικά ένα νέο προσωρινό πίνακα 677 00:39:54,150 --> 00:39:56,690 αυτό είναι το αποτέλεσμα της ένωσης φοιτητών και σπίτια. 678 00:39:56,690 --> 00:40:00,340 Και πώς θέλετε να συνδυάσετε τις άκρες των δαχτύλων μου εδώ; 679 00:40:00,340 --> 00:40:05,280 Ορισμός του πεδίου σπίτι ίση με των σπιτιών των μαθητών πεδίο ID. 680 00:40:05,280 --> 00:40:10,220 Και αν εγώ τώρα κάντε κλικ στο κουμπί Μετάβαση, παίρνω πίσω ακριβώς αυτό που ήλπιζε να. 681 00:40:10,220 --> 00:40:15,890 Ο David είναι σε Mather, ο Mike είναι σε Pfoho, και βλέπω επίσης τα μοναδικά αναγνωριστικά. 682 00:40:15,890 --> 00:40:18,640 Αλλά το θέμα είναι τώρα έχω μια πλήρη πίνακα. 683 00:40:18,640 --> 00:40:23,020 Και έτσι το πακέτο εδώ για PSET 7 ή πραγματικά για το τελικό σχέδιο: 684 00:40:23,020 --> 00:40:25,830 Αν διαπιστώσετε ότι είστε αποθήκευση κάθε κομμάτι των πληροφοριών πλεονασμό, 685 00:40:25,830 --> 00:40:28,850 είτε πρόκειται για ένα σπίτι, ίσως είναι μια πόλη, πολιτεία, και ZIP 686 00:40:28,850 --> 00:40:32,050 Π.Κ. όπου μπορεί συνήθως, αλλά όχι πάντα να χρησιμοποιηθεί ως ένα μοναδικό αναγνωριστικό, 687 00:40:32,050 --> 00:40:35,810 να περάσουν από την άσκηση διανοητικά και στη συνέχεια με κάτι σαν το phpMyAdmin 688 00:40:35,810 --> 00:40:40,660 του factoring από ότι τα κοινά στοιχεία γιατί ειδικά η ιστοσελίδα σας γίνεται πιο καλά χρησιμοποιούνται 689 00:40:40,660 --> 00:40:45,440 και πιο δημοφιλής, αυτό είναι το πώς μπορείτε να βεβαιωθείτε ότι όλα είναι εξαιρετικά γρήγορη, 690 00:40:45,440 --> 00:40:51,930 δίνοντας τη βάση δεδομένων όσες συμβουλές ως προς τη μοναδικότητα του δυνατού. 691 00:40:51,930 --> 00:40:53,860 Αυτό ήταν ένα πολύ. 692 00:40:53,860 --> 00:40:59,010 Οποιεσδήποτε ερωτήσεις; Εντάξει. Ας ρίξουμε μια 5-λεπτά διάλειμμα εκεί και να ανασυνταχθούν. 693 00:41:01,600 --> 00:41:03,540 Εντάξει. 694 00:41:03,540 --> 00:41:08,680 Το ακόλουθο είναι ένα παράδειγμα που χρησιμοποιήθηκε πριν από μερικά χρόνια, όταν πήρα CS161, 695 00:41:08,680 --> 00:41:10,960 το οποίο είναι το λειτουργικό συστήματα κλάσης στο κολέγιο 696 00:41:10,960 --> 00:41:15,160 η οποία είναι γνωστή για την καταπληκτική αλλά ένα τρελό ποσό της εργασίας, 697 00:41:15,160 --> 00:41:19,810 και επικεντρώνεται πραγματικά σε μερικά από τα χαμηλού επιπέδου προβλήματα που προκύπτουν σε λειτουργικά συστήματα 698 00:41:19,810 --> 00:41:22,700 και, επίσης, ακόμη και στον κόσμο των βάσεων δεδομένων. 699 00:41:22,700 --> 00:41:27,040 >> Η ιστορία που ειπώθηκε από τον καθηγητή μου, Margo Seltzer, εκείνη τη χρονιά ήταν ως εξής. 700 00:41:27,040 --> 00:41:30,990 Ας υποθέσουμε ότι έχετε ένα μικρό ψυγείο dorm για εσάς και συγκάτοικός σας 701 00:41:30,990 --> 00:41:34,030 και οι δύο από σας αρέσει πολύ το γάλα. 702 00:41:34,030 --> 00:41:36,360 Έτσι έρχεστε κατ 'οίκον από την τάξη μια μέρα, ο συγκάτοικός σας δεν είναι ακόμα εκεί, 703 00:41:36,360 --> 00:41:39,650 ανοίγετε το ψυγείο, και έχετε συνειδητοποιήσει, "Ω, γαμώτο, είμαστε έξω από το γάλα." 704 00:41:39,650 --> 00:41:42,070 Έτσι, μπορείτε κλείστε το ψυγείο, μπορείτε να περπατήσετε κατά μήκος του δρόμου για να CVS 705 00:41:42,070 --> 00:41:45,830 και να πάρει όλο και περισσότερο σε μεγάλες ουρές για να αγοράσουν λίγο γάλα στο CVS. 706 00:41:45,830 --> 00:41:48,470 Εν τω μεταξύ, ο συγκάτοικός σας έρχεται σπίτι από του ή της κατηγορίας, 707 00:41:48,470 --> 00:41:51,690 έρχεται στο δωμάτιο, ανοίγει το ψυγείο πραγματικά θέλουν λίγο γάλα, 708 00:41:51,690 --> 00:41:54,130 Ανοίγει το ψυγείο και, "Γαμώτο, δεν το γάλα." 709 00:41:54,130 --> 00:41:57,890 Έτσι, αυτός ή αυτή κλείνει το ψυγείο, βόλτες έξω από την πόρτα, και να πηγαίνει για τα ζωικά υποπροϊόντα 710 00:41:57,890 --> 00:42:00,910 ή κάπου αλλού εκτός από το CVS όπου δεν πρόκειται να προσκρούουν μεταξύ τους 711 00:42:00,910 --> 00:42:02,790 για να πάει να πάρει λίγο γάλα. 712 00:42:02,790 --> 00:42:04,820 Φυσικά, λίγα λεπτά αργότερα, οι δύο από σας να πάρετε πίσω στο σπίτι 713 00:42:04,820 --> 00:42:07,740 και τώρα έχετε δύο φορές τόσο πολύ γάλα όπως πραγματικά ήθελε. 714 00:42:07,740 --> 00:42:10,670 Και είναι το γάλα, τώρα πρόκειται να πάει άσχημα, επειδή σας αρέσει το γάλα 715 00:42:10,670 --> 00:42:14,200 αλλά δεν το κάνετε πραγματικά, όπως το γάλα, έτσι και τώρα έχετε πολύ γάλα, έτσι πρόκειται να ξινίσει. 716 00:42:14,200 --> 00:42:16,830 Αυτό είναι ένα απαίσιο, απαίσιο κατάσταση. 717 00:42:16,830 --> 00:42:22,920 Τι θα μπορούσε να λύσει αυτήν την δυσάρεστη κατάσταση, αν ήταν το πρώτο σπίτι συγκάτοικο; Ναι. 718 00:42:22,920 --> 00:42:25,970 [Φοιτητής] Θα πρέπει να έχουν αφήσει ένα σημείωμα. [Γέλια] 719 00:42:25,970 --> 00:42:28,090 Καλή. Θα πρέπει να έχουν αφήσει ένα σημείωμα. 720 00:42:28,090 --> 00:42:32,320 Θα πρέπει να έχετε βάλει ένα Post-it σημείωμα ή σαν να λέμε, "Gone για το γάλα» 721 00:42:32,320 --> 00:42:36,830 και στη συνέχεια ο συγκάτοικός σας εννοιολογικά θα έχουν κλειδωθεί έξω από ότι πραγματικά κάνει. 722 00:42:36,830 --> 00:42:38,010 Ή θα μπορούσατε να πάτε 1 βήμα παραπέρα. 723 00:42:38,010 --> 00:42:41,060 Μπορείτε να κλειδώσετε κυριολεκτικά το ψυγείο με κάποιο είδος του λουκέτου, 724 00:42:41,060 --> 00:42:44,870 και τώρα ο συγκάτοικός σας θα κυριολεκτικά να κλειδωθεί έξω από το ψυγείο. 725 00:42:44,870 --> 00:42:48,520 Αν γενικεύσουμε πίσω τον προγραμματισμό, 726 00:42:48,520 --> 00:42:51,610 μπορείτε να σκεφτείτε σχεδόν από το ψυγείο ως κάποιο είδος της μεταβλητής ή ενός struct, 727 00:42:51,610 --> 00:42:53,500 ένα είδος δοχείου για πληροφορίες. 728 00:42:53,500 --> 00:42:58,290 Το πρόβλημα εδώ είναι βασικά ότι και οι δύο θα είχαν τη δυνατότητα να επιθεωρήσει 729 00:42:58,290 --> 00:43:02,370 ή να διαβάσει την κατάσταση αυτής της δομής δεδομένων, 730 00:43:02,370 --> 00:43:08,050 αλλά το είδαν σε διαφορετικές χρονικές στιγμές και ακόμα δυο σας έκανε μια απόφαση 731 00:43:08,050 --> 00:43:11,920 με βάση την κατάσταση του κόσμου σε αυτές τις διαφορετικές χρονικές στιγμές. 732 00:43:11,920 --> 00:43:15,570 Έτσι θα είχε κλειδώσει το ψυγείο, θα είχατε τουλάχιστον αποφεύγεται ο συγκάτοικός σας 733 00:43:15,570 --> 00:43:19,070 από το να έχουν τη δυνατότητα να επιθεωρήσει την κατάσταση του κόσμου, 734 00:43:19,070 --> 00:43:22,530 έτσι ώστε αυτός ή αυτή δεν θα μπορούσε να κάνει την ίδια απόφαση. 735 00:43:22,530 --> 00:43:25,780 Έτσι, βάσεις δεδομένων, όπως αποδεικνύεται, έχουν αυτό το πρόβλημα συνεχώς. 736 00:43:25,780 --> 00:43:31,050 >> Ας δούμε αν μπορούμε να κατασκευάσουμε ένα σενάριο. 737 00:43:31,050 --> 00:43:34,310 Ας υποθέσουμε ότι είστε ένα είδος κακός και πηγαίνετε στην Bank of America 738 00:43:34,310 --> 00:43:37,950 ή ένα από τα άλλα μέρη της πλατείας που έχουν ένα ζευγάρι ΑΤΜ πλάι πλάι, 739 00:43:37,950 --> 00:43:41,200 και με κάποιο τρόπο θα βρει τον τρόπο να αντιγράψετε μια κάρτα ΑΤΜ - δεν είναι όλα αυτά σκληρά. 740 00:43:41,200 --> 00:43:42,730 Είναι απλά μια μαγνητική ταινία. 741 00:43:42,730 --> 00:43:45,180 Και έτσι ό, τι θέλετε να δοκιμάσετε να κάνετε είναι να παίξετε αυτό το παιχνίδι 742 00:43:45,180 --> 00:43:49,060 σύμφωνα με την οποία βάζετε 1 κάρτα σε 1 μηχανή, μια άλλη κάρτα στην άλλη μηχανή, 743 00:43:49,060 --> 00:43:51,980 και που ουσιαστικά θέλουν να προσπαθήσουν να αποσύρουν τα χρήματα ταυτόχρονα, 744 00:43:51,980 --> 00:43:54,930 επειδή φαντάζομαι ότι η ιστορία έχει ως εξής. 745 00:43:54,930 --> 00:43:57,350 Η μηχανή στα αριστερά παίρνει την κάρτα σας και το PIN σας, 746 00:43:57,350 --> 00:44:00,240 και στη συνέχεια, λέτε, "Δώσε μου $ 100." 747 00:44:00,240 --> 00:44:04,790 Το ΑΤΜ είναι προγραμματισμένος να κάνει πρώτα μια επιλογή στη βάση δεδομένων του ή το ισοδύναμο - 748 00:44:04,790 --> 00:44:10,780 ό, τι είναι βάση δεδομένων που χρησιμοποιεί - για να δείτε αυτός ο χρήστης έχει τουλάχιστον $ 100 στο λογαριασμό του; 749 00:44:10,780 --> 00:44:16,180 Αν ναι, τότε φτύσει τα $ 100 και $ 100 αφαιρέσουμε από την ισορροπία τους. 750 00:44:16,180 --> 00:44:20,470 Αλλά βέβαια, αν υπάρχει πολλαπλές μηχανές εδώ ή πολλαπλούς τρόπους ελέγχου 751 00:44:20,470 --> 00:44:23,560 η κατάσταση αυτού του κόσμου, το θησαυροφυλάκιο της τράπεζας, για να δείτε πόσα χρήματα έχετε, 752 00:44:23,560 --> 00:44:26,780 ας υποθέσουμε ότι μόνο από τύχη τη μηχανή στα αριστερά και η δεξιά 753 00:44:26,780 --> 00:44:30,140 τόσο κάνει αυτή την ερώτηση σε περίπου την ίδια χρονική στιγμή. 754 00:44:30,140 --> 00:44:34,160 >> Και αυτό μπορεί να συμβεί σίγουρα. ΑΤΜ είναι υπολογιστές αυτές τις μέρες. 755 00:44:34,160 --> 00:44:37,670 Έτσι, αν η μηχανή στα αριστερά λέει, "Ναι, έχετε τουλάχιστον $ 100," 756 00:44:37,670 --> 00:44:42,150 Εν τω μεταξύ, η μηχανή στα δεξιά λέει, "Ναι, έχετε τουλάχιστον $ 100," 757 00:44:42,150 --> 00:44:47,420 τότε και οι δύο από αυτούς να προχωρήσει μέχρι το τέλος των προγραμμάτων τους και πραγματικά να φτύσει τα $ 100 758 00:44:47,420 --> 00:44:50,820 και να πει, "Προηγουμένως είχατε $ 200." 759 00:44:50,820 --> 00:44:54,890 "Επιτρέψτε μου να ενημερώσετε τη μεταβλητή τώρα είναι $ 100 αριστερά στο λογαριασμό." 760 00:44:54,890 --> 00:44:58,780 Όμως, αν και οι δύο από αυτούς έχουν ελεγχθεί το υπόλοιπο του λογαριασμού σας και διαπιστώθηκε ότι είναι 200 ​​δολάρια 761 00:44:58,780 --> 00:45:02,000 και οι δύο από αυτούς στη συνέχεια, κάντε τα μαθηματικά και να πω 200 έως 100, 762 00:45:02,000 --> 00:45:06,990 οι μηχανές έχουν δυνητικά φτύσει δύο $ 100 λογαριασμούς σε κάθε μηχάνημα, 763 00:45:06,990 --> 00:45:11,360 αλλά έχουν ενημερωθεί μόνο ποσό υπόλοιπο του λογαριασμού σας να είναι $ 100. 764 00:45:11,360 --> 00:45:15,130 Με άλλα λόγια, έχετε πάρει από $ 200, αλλά επειδή επιθεώρησε το κράτος του κόσμου 765 00:45:15,130 --> 00:45:18,840 ταυτόχρονα και στη συνέχεια να κάνει μια απόφαση με βάση την αξία, 766 00:45:18,840 --> 00:45:21,930 δεν μπορεί να κάνει τα μαθηματικά τελικά σωστά. 767 00:45:21,930 --> 00:45:25,520 Έτσι, σε μια κατάσταση πάρα πολύ τράπεζα θέλετε πραγματικά να έχουν κάποιο είδος του lockout 768 00:45:25,520 --> 00:45:28,450 έτσι ώστε το συντομότερο έχετε ελέγξει την κατάσταση κάποιων μεταβλητών 769 00:45:28,450 --> 00:45:31,220 αυτό είναι πολύ σημαντικό, όπως και το υπόλοιπο του λογαριασμού σας, 770 00:45:31,220 --> 00:45:36,070 μην αφήνετε κανέναν να λαμβάνουν αποφάσεις με βάση ότι μέχρι να γίνει αυτό το πράγμα σας, 771 00:45:36,070 --> 00:45:38,920 όπου σε αυτή την περίπτωση είναι το ΑΤΜ στα αριστερά. 772 00:45:38,920 --> 00:45:41,160 Κλείδωμα όλους τους άλλους έξω. 773 00:45:41,160 --> 00:45:44,650 Μπορείτε να επιτύχετε αυτό το αποτέλεσμα πραγματικά σε μια-δυο διαφορετικούς τρόπους. 774 00:45:44,650 --> 00:45:48,660 >> Ο πιο απλός τρόπος με τον MySQL είναι μια γραμμή του SQL που σας δώσαμε 775 00:45:48,660 --> 00:45:52,030 στο σύνολο προδιαγραφών πρόβλημα που μοιάζει ακριβώς με αυτό. 776 00:45:52,030 --> 00:45:57,420 Τοποθετήστε στο τραπέζι - ό, τι λέγεται - μια ταυτότητα, ένα σύμβολο, και μια μετοχή, μια σειρά από μετοχές, 777 00:45:57,420 --> 00:45:59,660 τις ακόλουθες τιμές, για παράδειγμα. 778 00:45:59,660 --> 00:46:03,370 Αν δεν έχετε διαβάσει το spec ακόμα, αυτό είναι ένα παράδειγμα που περιλαμβάνουν πώς πηγαίνετε για 779 00:46:03,370 --> 00:46:07,340 αγορά 10 μετοχών της απόθεμα πενών για τον Πρόεδρο Skroob, 780 00:46:07,340 --> 00:46:10,340 αναγνωριστικό χρήστη του οποίου συμβαίνει να είναι ο αριθμός 7; 781 00:46:10,340 --> 00:46:14,070 Αυτό λέει INSERT INTO τραπέζι το ακόλουθο αναγνωριστικό, το σύμβολο, και τον αριθμό των μετοχών 782 00:46:14,070 --> 00:46:18,200 της 7, «DVN.V ', και 10. 783 00:46:18,200 --> 00:46:21,510 Αλλά - αλλά, αλλά, αλλά - η δεύτερη γραμμή είναι το σημαντικό. 784 00:46:21,510 --> 00:46:26,310 ΓΙΑ διπλό κλειδί μετοχές UPDATE = + ΑΞΙΕΣ μετοχές (μετοχές). 785 00:46:26,310 --> 00:46:28,350 Έτσι, εντελώς αινιγματικά το μέλλον με την πρώτη ματιά. 786 00:46:28,350 --> 00:46:31,990 Αλλά το γεγονός ότι αυτό το ερώτημα SQL, αν και αναδιπλώνεται σε 2 γραμμές, 787 00:46:31,990 --> 00:46:35,920 είναι 1 μεγάλο ερώτημα, αυτό σημαίνει ότι είναι ατομική 788 00:46:35,920 --> 00:46:41,000 με την έννοια ότι αυτό το ερώτημα θα πρέπει είτε να εκτελεστεί όλα μαζί ή καθόλου. 789 00:46:41,000 --> 00:46:45,100 Και με τον ορισμό της MySQL, αυτό είναι το πώς θα εφαρμοστεί αυτό το ερώτημα. 790 00:46:45,100 --> 00:46:51,010 Είναι εξ ορισμού στο εγχειρίδιο σίγουρη εκτελέσει μονομιάς ή καθόλου. 791 00:46:51,010 --> 00:46:54,020 Το κίνητρο γι 'αυτό είναι ως ακολούθως. 792 00:46:54,020 --> 00:46:58,540 Αν σε αυτή την περίπτωση που προσπαθείτε να αγοράσει 10 μετοχές του αποθέματος, 793 00:46:58,540 --> 00:47:02,260 είναι το είδος της ίδιας ιστορίας, όπως το γάλα, είναι το είδος της ίδιας ιστορίας, όπως το ΑΤΜ. 794 00:47:02,260 --> 00:47:04,970 >> Αν δεν κάνετε το λάθος του χρησιμοποιώντας τη σύνταξη 795 00:47:04,970 --> 00:47:09,610 αλλά, αντίθετα, επιλέγοντας από τη βάση δεδομένων για να δείτε πόσες μετοχές του εν λόγω απόθεμα πενών 796 00:47:09,610 --> 00:47:13,750 Πρόεδρος Skroob δεν έχουν, και ας υποθέσουμε ότι έχει 10 μετοχές, 797 00:47:13,750 --> 00:47:19,330 και στη συνέχεια κάποιες κλάσμα του δευτερολέπτου αργότερα, στη συνέχεια, κάνετε μια δήλωση UPDATE, 798 00:47:19,330 --> 00:47:24,810 η οποία είναι μια άλλη δήλωση SQL που λέει να προχωρήσει και να προστεθούν ακόμη 10 μετοχές 799 00:47:24,810 --> 00:47:28,700 σε τρέχουσες 10 του, έτσι ώστε ιδανικά το σύνολο είναι 20, 800 00:47:28,700 --> 00:47:33,490 το πρόβλημα είναι επειδή σε συστήματα βάσεων δεδομένων σήμερα και επειδή σε υπολογιστές σήμερα 801 00:47:33,490 --> 00:47:35,990 έχετε πολλαπλούς επεξεργαστές, πολλαπλούς πυρήνες - 802 00:47:35,990 --> 00:47:38,920 Με άλλα λόγια, οι υπολογιστές μπορούν κυριολεκτικά να κάνει πολλά πράγματα ταυτόχρονα - 803 00:47:38,920 --> 00:47:44,270 δεν υπάρχει καμία εγγύηση ότι SELECT σας και UPDATE σας σε αυτή την περίπτωση 804 00:47:44,270 --> 00:47:46,150 πρόκειται να συμβεί πλάτη με πλάτη. 805 00:47:46,150 --> 00:47:49,140 Έτσι, ένα κακό σενάριο θα ήταν να κάνετε το SELECT 806 00:47:49,140 --> 00:47:51,670 για να δείτε πόσες μετοχές του εν λόγω απόθεμα πενών δεν έχουν Skroob, 807 00:47:51,670 --> 00:47:54,710 και στη συνέχεια, μόλις κατά τύχη ένα άλλο ερώτημα βάσης δεδομένων εκτελείται - 808 00:47:54,710 --> 00:47:57,740 ίσως Skroob του σε άλλο παράθυρο του browser προσπαθεί να αγοράσει 10 μετοχές 809 00:47:57,740 --> 00:48:00,700 σε ένα άλλο παράθυρο εντελώς, μοιάζει πολύ με το ΑΤΜ - 810 00:48:00,700 --> 00:48:05,410 και ας υποθέσουμε ότι ένα άλλο ερώτημα παίρνει στο μεταξύ SELECT και του UPDATE. 811 00:48:05,410 --> 00:48:10,210 Θα μπορούσε να είναι η περίπτωση που Skroob χάνει τώρα κάποια αριθμού των μετοχών 812 00:48:10,210 --> 00:48:14,340 επειδή μια άλλη διαδικασία ελέγχου την κατάσταση του κόσμου του, 813 00:48:14,340 --> 00:48:17,800 ή παίρνει περισσότερες μετοχές από ό, τι θα έπρεπε. 814 00:48:17,800 --> 00:48:23,250 Δεν θα υπεισέλθω σε λεπτομέρειες για το τι ακριβώς αυτές οι συγκεκριμένες γραμμές η ιστορία θα ήταν, 815 00:48:23,250 --> 00:48:28,380 αλλά το θέμα είναι αν θα πρέπει να ελέγξετε την τιμή μεταβλητών και στη συνέχεια να λάβει μια απόφαση, 816 00:48:28,380 --> 00:48:32,500 αν υπάρχει κίνδυνος κάποιος άλλος να κάνει κάτι ανάμεσα σε αυτές τις 2 καταστάσεις, 817 00:48:32,500 --> 00:48:36,220 όπως μπορεί να συμβεί σε συστήματα πολλαπλών επεξεργαστών, σε συστήματα πολλαπλών πυρήνων, 818 00:48:36,220 --> 00:48:41,220 υπολογιστές με την δυνατότητα να κάνετε πολλά πράγματα ταυτόχρονα, κακά πράγματα μπορούν να συμβούν 819 00:48:41,220 --> 00:48:44,530 όπως τραπεζικούς λογαριασμούς που χρεώνεται λανθασμένα, αγοράζοντας δύο φορές περισσότερο γάλα, 820 00:48:44,530 --> 00:48:46,730 ή στην περίπτωση αυτή η λάθος αριθμό μετοχών. 821 00:48:46,730 --> 00:48:48,370 Αλλά υπάρχει ένας ευκολότερος τρόπος για να σκεφτεί για αυτό. 822 00:48:48,370 --> 00:48:53,290 >> Αποδεικνύεται ότι η SQL υποστηρίζει επίσης, εάν ρυθμίσετε το τραπέζι σας σωστά, 823 00:48:53,290 --> 00:48:56,920 κάτι που ονομάζεται συναλλαγών, το οποίο θα έλεγα είναι στην πραγματικότητα ακόμα πιο εύκολο να κατανοήσουν 824 00:48:56,920 --> 00:49:00,650 από αυτό, αλλά δεν είναι ένα 1-επένδυση, γι 'αυτό είναι πραγματικά μια λίγο πιο περίπλοκη. 825 00:49:00,650 --> 00:49:04,960 Υπάρχει κυριολεκτικά μια δήλωση SQL που ονομάζεται ΣΥΝΑΛΛΑΓΗΣ START. 826 00:49:04,960 --> 00:49:08,300 Ακριβώς όπως υπάρχει SELECT, UPDATE, INSERT, DELETE, και JOIN και ένα σωρό άλλοι, 827 00:49:08,300 --> 00:49:10,970 υπάρχουν λέξεις-κλειδιά όπως ΣΥΝΑΛΛΑΓΗΣ START. 828 00:49:10,970 --> 00:49:13,560 Και τι θα κάνουμε στη συνέχεια, στο πλαίσιο της PSET 7 - 829 00:49:13,560 --> 00:49:17,270 δεν χρειάζεται να το κάνετε αυτό για PSET 7? αυτό είναι ρητά παραιτήθηκαν ώστε να μην είναι απαραίτητο, 830 00:49:17,270 --> 00:49:18,830 αλλά για την τελική έργα μπορεί να είναι χρήσιμο - 831 00:49:18,830 --> 00:49:22,820 αν σας καλέσει ένα ερώτημα του ΣΥΝΑΛΛΑΓΗ ΕΝΑΡΞΗ και στη συνέχεια ένα άλλο ερώτημα 832 00:49:22,820 --> 00:49:25,620 και στη συνέχεια ένα άλλο ερώτημα και στη συνέχεια ένα άλλο, ένα άλλο, και άλλο, 833 00:49:25,620 --> 00:49:31,860 αυτά τα ερωτήματα δεν θα εκτελεστεί στην πραγματικότητα μέχρι να καλέσετε το SQL δήλωση COMMIT, 834 00:49:31,860 --> 00:49:37,220 σε ποιο σημείο, είτε πρόκειται για 2 ή 20 δηλώσεις δηλώσεις, όλοι θα πρέπει να εκτελούνται ταυτόχρονα, 835 00:49:37,220 --> 00:49:42,770 πράγμα που σημαίνει κανένας άλλος δεν μπορεί να αγοράσει κατά λάθος πάρα πολύ γάλα ή χρεωστική πάρα πολλά χρήματα 836 00:49:42,770 --> 00:49:46,340 ή να αγοράσετε πάρα πολλές μετοχές, επειδή όλα τα ερωτήματά σας θα εκτελέσει 837 00:49:46,340 --> 00:49:48,410 πλάτη με πλάτη με πλάτη με πλάτη. 838 00:49:48,410 --> 00:49:51,580 Και αυτό είναι εξαιρετικά σημαντικό, ειδικά όταν κάνεις κάτι σαν αυτό. 839 00:49:51,580 --> 00:49:54,900 Αυτό είναι ένα αυθαίρετο παράδειγμα που λέει ας ενημερώσει τον τραπεζικό λογαριασμό 840 00:49:54,900 --> 00:50:00,200 θέτοντας μια ισορροπία ίσο με ισορροπία - $ 1000 όπου ο αριθμός του λογαριασμού είναι 2. 841 00:50:00,200 --> 00:50:04,260 Και τότε η δεύτερη δήλωση είναι τώρα ας καταθέσει ότι $ 1000 842 00:50:04,260 --> 00:50:07,310 σε κάποιον άλλο τραπεζικό λογαριασμό του οποίου ο λογαριασμός αριθμός είναι 1. 843 00:50:07,310 --> 00:50:10,400 >> Με άλλα λόγια, αυτό είναι ένα τέλειο παράδειγμα για το πού θέλετε να βεβαιωθείτε 844 00:50:10,400 --> 00:50:13,590 ότι και οι δύο από αυτές τις δηλώσεις συμβεί ή καθόλου 845 00:50:13,590 --> 00:50:15,450 γιατί αλλιώς ο πελάτης θα πάρει βιδώνεται 846 00:50:15,450 --> 00:50:17,670 και θα πάμε για να πάρει τα χρήματά τους και να μην καταθέσει αλλού, 847 00:50:17,670 --> 00:50:20,470 ή η τράπεζα πρόκειται να πάρει βιδώνεται όπου θα πάμε για να καταθέσετε τα χρήματα 848 00:50:20,470 --> 00:50:23,140 αλλά δεν αφαιρεί στην πραγματικότητα από το λογαριασμό του χρήστη. 849 00:50:23,140 --> 00:50:25,810 Έτσι θέλετε και οι δύο από αυτούς να εκτελούν από κοινού. 850 00:50:25,810 --> 00:50:29,140 Έτσι αρχίζει τις συναλλαγές κόσμου. 851 00:50:29,140 --> 00:50:31,360 Έτσι, αυτό είναι κάτι για να κρατήσει στο πίσω μέρος του μυαλού σας, 852 00:50:31,360 --> 00:50:34,710 όχι τόσο για τους σκοπούς της μόλις ένα τελικό σχέδιο, 853 00:50:34,710 --> 00:50:36,700 αλλά αν θέλετε να λάβει την τελική του έργου σας κάπου, 854 00:50:36,700 --> 00:50:39,040 αν θέλετε να ξεκινήσει κάποια επιχείρηση γύρω από αυτό, 855 00:50:39,040 --> 00:50:41,270 αν θέλετε να λύσετε το πρόβλημα κάποια ομάδα φοιτητών στην πανεπιστημιούπολη 856 00:50:41,270 --> 00:50:45,210 και στην πραγματικότητα έχουν μια ζωντανή, ενεργή ιστοσελίδα, αυτά είναι το είδος της ανεπαίσθητες σφάλματα που μπορεί να προκύψουν 857 00:50:45,210 --> 00:50:49,480 αν δεν σκέφτονται αρκετά μέσα από αυτό μπορεί να συμβεί εάν 2 άτομα 858 00:50:49,480 --> 00:50:54,190 προσπαθούν να έχουν πρόσβαση στο δικτυακό τόπο σας κυριολεκτικά την ίδια χρονική στιγμή, 859 00:50:54,190 --> 00:50:56,890 σύμφωνα με την οποία τα ερωτήματά τους θα μπορούσε να πάρει διαφορετικά συνυφασμένα. 860 00:50:58,840 --> 00:51:01,420 >> Έτοιμο για κάποιο JavaScript, ένα τρέιλερ τους; 861 00:51:01,420 --> 00:51:04,320 Αυτή είναι η τελευταία μας γλώσσα για το εξάμηνο. Εντάξει. 862 00:51:04,320 --> 00:51:09,940 Ευτυχώς, JavaScript φαίνεται πολύ, πολύ, πολύ παρόμοια με τις 2 γλώσσες, C και PHP, 863 00:51:09,940 --> 00:51:11,140 έχουμε κάνει μέχρι τώρα. 864 00:51:11,140 --> 00:51:14,340 Δεν υπάρχει καμία JavaScript στο PSET 7, αλλά αυτό είναι ένα εξαιρετικά χρήσιμο εργαλείο 865 00:51:14,340 --> 00:51:18,840 όταν πρόκειται να κάνει web-based τελικό έργων ή πολύ απλά web προγραμματισμό γενικότερα. 866 00:51:18,840 --> 00:51:20,950 Έτσι, μια γρήγορη επισκόπηση του κάτι που ονομάζεται DOM. 867 00:51:20,950 --> 00:51:23,600 Εδώ είναι μια εξαιρετικά απλή ιστοσελίδα που πραγματικά ακριβώς λέει γειά σου, τον κόσμο 868 00:51:23,600 --> 00:51:25,970 τόσο στον τίτλο και στο σώμα. 869 00:51:25,970 --> 00:51:29,270 Καθώς η οδόντωση έχει προτείνοντας για κάποιο χρονικό διάστημα, 870 00:51:29,270 --> 00:51:31,380 υπάρχει πράγματι μια ιεραρχία σε ιστοσελίδες. 871 00:51:31,380 --> 00:51:34,220 Θα μπορούσα να επιστήσω την ίδια απόσπασμα της HTML, όπως ένα δέντρο, 872 00:51:34,220 --> 00:51:37,470 σκέψης πίσω στις συζητήσεις μας δομών δεδομένων σε C, ως εξής. 873 00:51:37,470 --> 00:51:40,710 Δεν έχω κάποια ιδιαίτερη κόμβο ρίζα ονομάζεται ο κόμβος έγγραφο, 874 00:51:40,710 --> 00:51:43,650 και θα δούμε το ανάλογο σε αυτό JavaScript ακριβώς σε μια στιγμή. 875 00:51:43,650 --> 00:51:48,330 Το πρώτο παιδί και μόνο το παιδί της ότι σε αυτή την περίπτωση είναι η ετικέτα HTML. 876 00:51:48,330 --> 00:51:49,880 Δεν υπάρχει καμία άμεση χαρτογράφηση της doctype. 877 00:51:49,880 --> 00:51:53,170 Αυτό είναι ένα ιδιαίτερο πράγμα, γι 'αυτό θα πρέπει να αγνοούμε αυτό ακριβώς, όταν πρόκειται για αυτό το DOM, 878 00:51:53,170 --> 00:51:55,810 Αυτό το αντικείμενο Document δέντρο μοντέλου. 879 00:51:55,810 --> 00:51:59,530 Σημειώστε ότι η ετικέτα HTML, το οποίο έχω απεικονίζεται αυθαίρετα ως ένα ορθογώνιο, 880 00:51:59,530 --> 00:52:02,890 έχει 2 παιδιά: το κεφάλι και το σώμα. 881 00:52:02,890 --> 00:52:04,840 >> Αυτοί είναι που ομοίως ως ορθογώνια. 882 00:52:04,840 --> 00:52:08,970 Είναι νόημα σχηματικά ότι η κεφαλή είναι στα αριστερά του σώματος. 883 00:52:08,970 --> 00:52:11,960 Το συμπέρασμα είναι ότι το κεφάλι έρχεται πρώτη στο δέντρο. 884 00:52:11,960 --> 00:52:14,910 Έτσι, υπάρχει πραγματικά μια παραγγελία σε ένα δέντρο, όταν θα συντάξει σαν αυτό, 885 00:52:14,910 --> 00:52:17,460 ακόμη και αν τα σχήματα και οτιδήποτε είναι αυθαίρετες. 886 00:52:17,460 --> 00:52:20,360 Επικεφαλής έχει εν τω μεταξύ ένα παιδί που ονομάζεται τίτλο, 887 00:52:20,360 --> 00:52:25,170 και ο τίτλος έχει πραγματικά το παιδί της, το οποίο είναι "γειά σου, τον κόσμο", 888 00:52:25,170 --> 00:52:32,210 Σκοπίμως η οποία επέστησε ως οβάλ εδώ για να κάνει λίγο διαφορετικό από το ορθογώνιο. 889 00:52:32,210 --> 00:52:37,420 Αυτά τα στοιχεία είναι ορθογώνια, ενώ γειά σου, ο κόσμος είναι πραγματικά ένας κόμβος κειμένου. 890 00:52:37,420 --> 00:52:39,850 Έτσι είναι ένας κόμβος στο δέντρο, αλλά αυτό είναι ένα διαφορετικό είδος του κόμβου 891 00:52:39,850 --> 00:52:41,730 γι 'αυτό επέστησε αυθαίρετα διαφορετικά. 892 00:52:41,730 --> 00:52:45,000 Ομοίως, δεν έχει το σώμα ενός παιδιού που ονομάζεται γεια σου, τον κόσμο, καθώς και, 893 00:52:45,000 --> 00:52:47,910 τόσο διαφορετικό κόμβο ακόμα κι αν είναι συμπτωματικά το ίδιο κείμενο, 894 00:52:47,910 --> 00:52:52,100 αλλά έχω που χρησιμοποιούν το ίδιο σχήμα. Έτσι, ποιος νοιάζεται; 895 00:52:52,100 --> 00:52:56,820 Λοιπόν, τι είναι ωραίο για HTML είναι ότι δεν έχουν αυτή την ιεραρχική φύση. 896 00:52:56,820 --> 00:53:01,010 Και τι είναι ωραίο για JavaScript και ιδιαίτερα οι βιβλιοθήκες που είναι ελεύθερα διαθέσιμα 897 00:53:01,010 --> 00:53:07,120 και δημοφιλή, όπως jQuery, μπορείτε να περιηγηθείτε τη δομή δέντρου τόσο εκπληκτικά εύκολο. 898 00:53:07,120 --> 00:53:11,790 Οποιοδήποτε από τα πράγματα που κάναμε σε C με δείκτες και δέντρα διέρχονται αναδρομική ανάκτηση και στους κόμβους 899 00:53:11,790 --> 00:53:15,300 αριστερά προς τα δεξιά παιδί παιδί, ξαφνικά μπορούμε να ταξινομήσουμε από θεωρούμε δεδομένο 900 00:53:15,300 --> 00:53:19,450 όπως είναι εκπληκτικά διαφωτιστική, αν όχι λίγο απογοητευτικό 901 00:53:19,450 --> 00:53:22,470 αλλά δεν είναι σχεδόν ένας αποτελεσματικός τρόπος για να πάει για τον προγραμματισμό. 902 00:53:22,470 --> 00:53:24,470 Και έτσι με αυτά τα υψηλότερα επίπεδα γλώσσες όπως η JavaScript 903 00:53:24,470 --> 00:53:28,340 θα είμαστε σε θέση να περιηγηθείτε αυτό το δέντρο πολύ πιο διαισθητικά. 904 00:53:28,340 --> 00:53:30,430 >> Και πράγματι, η σύνταξη θα είναι αρκετά εξοικειωμένοι. 905 00:53:30,430 --> 00:53:32,950 Αν δεν έχετε δει ποτέ πριν το JavaScript, αυτό είναι μια πολύ ωραία αναφορά 906 00:53:32,950 --> 00:53:35,910 από τα Mozilla λαοί, οι άνθρωποι που κάνουν τον Firefox, 907 00:53:35,910 --> 00:53:38,370 γι 'αυτό μη διστάσετε να περιηγηθείτε ότι όποτε σας βολεύει. 908 00:53:38,370 --> 00:53:41,590 Τι θα βρείτε - και οι διαφάνειες είναι ίδιες με αυτό που χρησιμοποιείται τις προάλλες - 909 00:53:41,590 --> 00:53:44,030 Ομοίως, το κύριο έχει φύγει. 910 00:53:44,030 --> 00:53:47,010 Έτσι, όταν γράφετε ένα πρόγραμμα σε JavaScript, δεν υπάρχει κύρια λειτουργία. 911 00:53:47,010 --> 00:53:48,690 Μπορείτε απλά να αρχίσετε να γράφετε κώδικα. 912 00:53:48,690 --> 00:53:51,660 Αλλά μια βασική διάκριση μεταξύ JavaScript και PHP και C 913 00:53:51,660 --> 00:53:55,890 είναι ότι ενώ PHP C και μέχρι στιγμής έχουν εκτελεστεί πλευρά του διακομιστή 914 00:53:55,890 --> 00:53:59,180 από τη συσκευή στην περίπτωση αυτή ή πιο γενικά από ένα διακομιστή, 915 00:53:59,180 --> 00:54:04,270 JavaScript από τον σχεδιασμό είναι συνήθως εκτελείται από ένα πρόγραμμα περιήγησης. 916 00:54:04,270 --> 00:54:08,440 Με άλλα λόγια, μπορείτε να γράψετε κώδικα JavaScript, καθώς είμαστε έτοιμοι να, 917 00:54:08,440 --> 00:54:13,080 σε έναν διακομιστή στη συσκευή, αλλά θα το περιλάβει μεταξύ σας HTML, CSS μεταξύ σας, 918 00:54:13,080 --> 00:54:16,100 GIFs μεταξύ σας και PNGs σας και σας αρχεία JPEG 919 00:54:16,100 --> 00:54:19,170 έτσι ώστε όταν ο χρήστης επισκέπτεται την ιστοσελίδα σας, αν είστε με τη χρήση JavaScript, 920 00:54:19,170 --> 00:54:21,770 ότι ο κώδικας JavaScript έρχεται από τον server στον browser, 921 00:54:21,770 --> 00:54:24,540 και αυτό είναι το πρόγραμμα περιήγησης που εκτελεί στην πραγματικότητα. 922 00:54:24,540 --> 00:54:27,960 Έτσι, αυτό το νόημα έχει επιπτώσεις ακόμη και για την πνευματική ιδιοκτησία. 923 00:54:27,960 --> 00:54:32,600 Είναι χαζό να σκεφτείτε ακόμη και για την προστασία IP σας όταν πρόκειται για κώδικα JavaScript 924 00:54:32,600 --> 00:54:37,560 επειδή από τη φύση της γλώσσας παίρνει συνήθως εκτελούνται πλευρά του προγράμματος περιήγησης. 925 00:54:37,560 --> 00:54:40,360 >> Μπορείτε να συσκοτίσετε, το οποίο σημαίνει ότι μπορείτε να κάνετε το βλέμμα τρελό και άσχημο 926 00:54:40,360 --> 00:54:45,400 χωρίς κενά, απαίσια ονόματα μεταβλητών, ώστε να είναι πιο δύσκολο για τους ανθρώπους να κλέψει IP σας, 927 00:54:45,400 --> 00:54:48,120 αλλά το κλειδί είναι ότι εκτελείται πλευρά του προγράμματος περιήγησης. 928 00:54:48,120 --> 00:54:51,790 Ακόμα κι αν ως μέρος JavaScript μπορεί να χρησιμοποιηθεί πλευρά του server, 929 00:54:51,790 --> 00:54:54,480 η πιο συνηθισμένη περίπτωση χρήσης αυτή τη στιγμή βρίσκεται ακόμα στο πρόγραμμα περιήγησης. 930 00:54:54,480 --> 00:54:59,800 Και εδώ είναι αυτό που μοιάζει με. Εδώ είναι ένα if-else if-else κατασκευή ακριβώς όπως η C, όπως ακριβώς και PHP. 931 00:54:59,800 --> 00:55:02,420 Εδώ είναι μια Boolean έκφραση όταν "ή" 2 πράγματα μαζί. 932 00:55:02,420 --> 00:55:04,330 Εδώ είναι όταν "και" 2 πράγματα μαζί. 933 00:55:04,330 --> 00:55:08,300 Εδώ είναι μια δήλωση switch, το οποίο είναι παρόμοιο με PHP 934 00:55:08,300 --> 00:55:10,810 δεδομένου ότι μπορείτε να μεταβείτε σε διαφορετικούς τύπους των αξιών. 935 00:55:10,810 --> 00:55:15,180 Loops έχουν ομοίως για βρόχους εδώ, το οποίο είναι δομημένες με τον ίδιο σε ό, τι έχουμε δει μέχρι σήμερα. 936 00:55:15,180 --> 00:55:18,110 Ενώ βρόχους? Έχουμε κάνει, ενώ βρόχοι. 937 00:55:18,110 --> 00:55:20,290 Μεταβλητές, πάντα τόσο ελαφρώς διαφορετική. 938 00:55:20,290 --> 00:55:24,560 Μπορείτε να το κάνετε δηλώνουν μεταβλητές όπως κάνετε σε PHP και C, 939 00:55:24,560 --> 00:55:27,860 αλλά είναι εξίσου JavaScript ασθενώς δακτυλογραφημένα. 940 00:55:27,860 --> 00:55:32,730 Δεν καθορίσετε int ή float ή string ή κάτι τέτοιο συνήθως. 941 00:55:32,730 --> 00:55:34,240 Μπορείτε να καθορίσετε var. 942 00:55:34,240 --> 00:55:38,040 Δεν χρειάζεται να καθορίσετε var, αλλά έχει συνέπειες αν δεν το κάνουν. 943 00:55:38,040 --> 00:55:42,000 Συνήθως, αν παραλείψετε var, μπορείτε να δημιουργήσετε μια τυχαία μεταβλητή παγκόσμια αντί των τοπικών. 944 00:55:42,000 --> 00:55:46,420 Έτσι, επιτρέψτε μου να προτείνω ότι σχεδόν πάντα να πω var και στη συνέχεια το όνομα της μεταβλητής. 945 00:55:46,420 --> 00:55:48,740 Δεν είναι ένας τύπος, είναι ακριβώς για τη μεταβλητή var. 946 00:55:48,740 --> 00:55:52,930 Αυτό θα ήταν ένα παράδειγμα, αν πρόκειται για 123 ή "Hello, world". 947 00:55:52,930 --> 00:55:58,910 Οι πίνακες είναι παρόντες και συντακτικά όμοια με PHP. 948 00:55:58,910 --> 00:56:03,690 Θα πω var αριθμούς και στη συνέχεια μπορώ να χρησιμοποιήσω αγκύλες και πάλι να δηλώσετε μια μεταβλητή 949 00:56:03,690 --> 00:56:08,870 των οποίων ο τύπος είναι σειρά που έχει αυτά τα συγκεκριμένα νούμερα σε αυτό διαχωρίζονται με κόμματα. 950 00:56:08,870 --> 00:56:11,740 Και στη συνέχεια, τέλος, αυτό είναι το μόνο που πραγματικά έχει διαφορετική εμφάνιση. 951 00:56:11,740 --> 00:56:16,700 Υπενθυμίζουμε ότι στην PHP θα είχαμε εφαρμόσει ένα associative array για έναν φοιτητή 952 00:56:16,700 --> 00:56:20,220 όπως Zamyla που να μοιάζει με αυτό, όπου η μεταβλητή ονομάζεται φοιτητής. 953 00:56:20,220 --> 00:56:23,370 Οι αγκύλες σημαίνουν εδώ έρχεται μια σειρά. 954 00:56:23,370 --> 00:56:28,500 >> Το γεγονός ότι δεν είμαι με τη χρήση αριθμητικών δεικτών, αλλά χορδές - id, σπίτι, και το όνομα - 955 00:56:28,500 --> 00:56:30,990 σημαίνει ότι αυτό είναι ένα associative array, 956 00:56:30,990 --> 00:56:34,490 και αυτά τα βέλη με το σύμβολο του ίσον και η γωνία βραχίονα 957 00:56:34,490 --> 00:56:37,310 σημαίνει ότι το κλειδί είναι "id", η τιμή είναι 1? 958 00:56:37,310 --> 00:56:39,310 το κλειδί είναι "σπίτι", η τιμή είναι Winthrop σπίτι? 959 00:56:39,310 --> 00:56:41,800 το κλειδί είναι "όνομα", η τιμή είναι Zamyla Chan. 960 00:56:41,800 --> 00:56:47,110 Έτσι, υπάρχει 3 κλειδιών μέσα από αυτό το associative array, καθένα από τα οποία έχει τη δική του αξία. 961 00:56:47,110 --> 00:56:52,880 Έχουμε δει ότι σε PSET 7, ή σύντομα θα, σε JavaScript ίδια ιδέα, 962 00:56:52,880 --> 00:56:55,220 αλλά πρόκειται να μοιάσει με αυτό. 963 00:56:55,220 --> 00:57:00,070 Έτσι var μαθητή - χωρίς σύμβολο του δολαρίου και δεν αναφέρει τον τύπο, αλλά ακόμα var - 964 00:57:00,070 --> 00:57:05,860 ισούται με και στη συνέχεια ανοίξτε άγκιστρα επειδή σε JavaScript όταν έχετε ζεύγη κλειδιών αξία, 965 00:57:05,860 --> 00:57:08,900 που χρησιμοποιείτε στην πραγματικότητα κάτι που ονομάζεται ένα αντικείμενο. 966 00:57:08,900 --> 00:57:13,490 Και όσοι από εσάς έλαβε APCS ή κάτι παρόμοιο θα μπορούσε να υπενθυμίσει αντικείμενα από την Ιάβα 967 00:57:13,490 --> 00:57:15,140 ή παρόμοιες γλώσσες. 968 00:57:15,140 --> 00:57:17,880 JavaScript δεν είναι Java, πρώτα απ 'όλα. 969 00:57:17,880 --> 00:57:21,600 Ήταν μια σκόπιμη απόφαση χρόνου σχεδιασμού πριν να χτυπήσει από κάτι άλλο που ήταν δημοφιλής, 970 00:57:21,600 --> 00:57:25,640 όνομά του, ακόμα και αν δεν έχει καμία σχέση με την θεμελιώδη ίδια Java. 971 00:57:25,640 --> 00:57:31,490 JavaScript έχει αντικείμενα, και να τους δημιουργούν μέσω του κηδεμόνα σημειογραφία σγουρά. 972 00:57:31,490 --> 00:57:36,710 Αντικείμενα σε JavaScript είναι λίγο πολύ ισοδύναμη με associative arrays στην PHP 973 00:57:36,710 --> 00:57:40,030 όταν πρόκειται για την αποθήκευση δεδομένων στο εσωτερικό τους. 974 00:57:40,030 --> 00:57:44,100 >> Αλλά ακόμη πιο δυναμικά σε JavaScript μπορεί να σας συνδέσει πολύ εύκολα λειτουργίες 975 00:57:44,100 --> 00:57:48,040 μέσα από ένα αντικείμενο, και αν μπορείτε να το κάνετε αυτό σε άλλες γλώσσες, 976 00:57:48,040 --> 00:57:50,040 Είναι αρκετά ένα κοινό πρότυπο, όπως θα δούμε. 977 00:57:50,040 --> 00:57:54,380 Εν ολίγοις, αυτό το αντικείμενο αντιπροσωπεύει ένα μαθητή, ο οποίος είναι ιδιαίτερα Zamyla, 978 00:57:54,380 --> 00:58:00,380 και είναι παρόμοια εννοιολογικά, απλά συντακτικά διαφορετικό από αυτό. 979 00:58:00,380 --> 00:58:03,840 Ας χρησιμοποιήσουμε πραγματικά JavaScript σε ένα αρχείο. 980 00:58:03,840 --> 00:58:05,570 Αποδεικνύεται ότι υπάρχει μια ετικέτα script. 981 00:58:05,570 --> 00:58:08,180 Έχουμε δει μια ετικέτα στυλ και έχουμε δει άλλες ετικέτες HTML. 982 00:58:08,180 --> 00:58:11,510 Η ετικέτα script πραγματικά θα περιέχει κάποιο κώδικα JavaScript. 983 00:58:11,510 --> 00:58:15,500 Επιτρέψτε μου να πάω στη συσκευή, όπου έχουμε κάποια πηγαίο κώδικα προ-made. 984 00:58:15,500 --> 00:58:18,700 Δεν το έχω ακόμα δημοσιεύτηκε στην ιστοσελίδα του, αλλά θα το κάνω μετά το μάθημα. 985 00:58:18,700 --> 00:58:21,770 Ας ανοίξουμε αυτό το ένα, blink.html. 986 00:58:21,770 --> 00:58:27,560 Επιστροφή στη δεκαετία του 1990, υπήρξε κυριολεκτικά μια ετικέτα HTML που ονομάζεται ετικέτα αναβοσβήνουν, 987 00:58:27,560 --> 00:58:30,340 και αυτό ήταν ένα από τα πιο υπέροχα υπερκατανάλωση ετικέτες στο Διαδίκτυο 988 00:58:30,340 --> 00:58:36,140 σύμφωνα με την οποία θα ήθελα να επισκεφθείτε κάποια ιστοσελίδα της δεκαετίας του 1990 στυλ και να αρχίσουμε να βλέπουμε το κείμενο να αναβοσβήνει σας αρέσει αυτό, 989 00:58:36,140 --> 00:58:39,810 τα αποτελέσματα της ετικέτας μαρκήσιο, η οποία είχε το κείμενο πηγαίνει όπως αυτό. 990 00:58:39,810 --> 00:58:45,070 Μία από τις λίγες φορές που ο κόσμος έχει πραγματικά συμφώνησαν σε ένα πρότυπο web, 991 00:58:45,070 --> 00:58:48,250 ο καθένας σε όλους τους τομείς σκότωσε την ετικέτα αναλαμπή πριν από μερικά χρόνια. 992 00:58:48,250 --> 00:58:52,860 Αλλά μπορούμε να το αναστήσει με JavaScript ως μια επίδειξη της δύναμης που έχετε 993 00:58:52,860 --> 00:58:56,660 όταν μπορείτε να γράψετε ένα πρόγραμμα μέσα από μια ιστοσελίδα. 994 00:58:56,660 --> 00:59:00,240 Πρώτα ας προσπεράσουν τη νέα πράγματα και να επικεντρωθεί μόνο στην παλιά. 995 00:59:00,240 --> 00:59:01,780 >> Εδώ είναι η παλιά πράγματα σε αυτό το παράδειγμα. 996 00:59:01,780 --> 00:59:06,350 Έχω μια ετικέτα HTML, μια ετικέτα κεφάλι, και μια ετικέττα τίτλου. 997 00:59:06,350 --> 00:59:11,210 Στη συνέχεια, έχω μια ετικέτα σώμα εδώ με ένα div, το οποίο ανάκληση είναι απλά ένα ορθογώνιο τμήμα της σελίδας 998 00:59:11,210 --> 00:59:14,720 ότι έχω δώσει ένα μοναδικό αναγνωριστικό αυθαίρετα του "χαιρετισμού" να, 999 00:59:14,720 --> 00:59:18,320 ακριβώς έτσι έχω έναν τρόπο μοναδικό που αναφέρεται σε αυτό, το οποίο έχει κάποια πολύ απλό κείμενο: 1000 00:59:18,320 --> 00:59:20,220 γειά σου, τον κόσμο. 1001 00:59:20,220 --> 00:59:23,940 Τώρα, επιτρέψτε μου να μετακινηθείτε προς τα επάνω προς την κορυφή του αυτό το αρχείο και δείτε τι νέο υπάρχει. 1002 00:59:23,940 --> 00:59:27,710 Το πρώτο πράγμα που είναι νέο κορυφαίο up είναι η ετικέτα script, 1003 00:59:27,710 --> 00:59:31,280 και στο εσωτερικό της προκήρυξης ετικέτα script έχω δηλώσει μια λειτουργία. 1004 00:59:31,280 --> 00:59:34,610 Για να δηλώσετε μια λειτουργία JavaScript, αρκετά παρόμοια με την PHP, 1005 00:59:34,610 --> 00:59:37,930 που κυριολεκτικά γράψετε λειτουργία τότε το όνομα της συνάρτησης, παρενθέσεις, 1006 00:59:37,930 --> 00:59:40,400 και ίσως κάποια επιχειρήματα και αν χρειαστεί υπάρχει. 1007 00:59:40,400 --> 00:59:43,510 Στη συνέχεια, έχω σγουρά κηδεμόνα μου, ως συνήθως, και τώρα έχουμε κάποια ελαφρά νέο κωδικό, 1008 00:59:43,510 --> 00:59:45,230 αλλά ας δούμε τι σημαίνει αυτό. 1009 00:59:45,230 --> 00:59:48,670 Έτσι var div, αυτό σημαίνει απλά να μου δώσει μια μεταβλητή που ονομάζεται div. 1010 00:59:48,670 --> 00:59:50,530 Θα μπορούσα να έχω αυτό που ονομάζεται foo, αλλά ήθελα να αποκαλείται div 1011 00:59:50,530 --> 00:59:52,620 για λόγους που θα είναι σαφές σε ένα δευτερόλεπτο. 1012 00:59:52,620 --> 00:59:57,480 Στη συνέχεια, βγάζει σε JavaScript - και αυτό είναι ενσωματωμένο κώδικα JavaScript στην ιστοσελίδα μου - 1013 00:59:57,480 --> 01:00:01,760 υπάρχει μια ειδική παγκόσμια μεταβλητή του είδους που ονομάζεται έγγραφο. 1014 01:00:01,760 --> 01:00:04,780 JavaScript είναι στην πραγματικότητα μια αντικειμενοστραφής γλώσσα. 1015 01:00:04,780 --> 01:00:07,230 Δεν θα υπεισέλθω σε λεπτομέρειες σε 50 ως προς το τι σημαίνει αυτό, 1016 01:00:07,230 --> 01:00:11,180 αλλά τώρα γνωρίζουμε ότι ένα αντικείμενο είναι λίγο πολύ σαν ένα struct. 1017 01:00:11,180 --> 01:00:14,740 Όπως είδαμε τον τρόπο πίσω, όταν σε μία από τις πρώτες πρόβλημα θέτει 1018 01:00:14,740 --> 01:00:17,150 όπου βάζουμε πολλές πληροφορίες σε ένα struct, 1019 01:00:17,150 --> 01:00:21,330 ομοίως έχει καταγράψει μια ειδική struct που έρχεται με το πρόγραμμα περιήγησης, 1020 01:00:21,330 --> 01:00:24,810 έρχεται με οποιαδήποτε ιστοσελίδα. Δεν είναι κάτι που έχω δημιουργήσει. 1021 01:00:24,810 --> 01:00:28,210 Μέσα από αυτή τη δομή του εγγράφου, όμως, δεν έχετε μόνο τα δεδομένα 1022 01:00:28,210 --> 01:00:30,010 αλλά έχετε επίσης λειτουργίες. 1023 01:00:30,010 --> 01:00:34,090 >> Και κάθε φορά που έχετε μια λειτουργία μέσα από μια δομή, μέσα από ένα αντικείμενο, 1024 01:00:34,090 --> 01:00:36,490 αυτό λέγεται μέθοδος. Αλλά είναι το ίδιο πράγμα. 1025 01:00:36,490 --> 01:00:40,110 Μια μέθοδος είναι μια λειτουργία που τυχαίνει να είναι μέσα από κάτι άλλο. 1026 01:00:40,110 --> 01:00:42,990 Έτσι, αυτό σημαίνει ότι αυτή η ειδική καθολική μεταβλητή που ονομάζεται έγγραφο 1027 01:00:42,990 --> 01:00:47,690 έχει μια λειτουργία που ονομάζεται getElementById που κάνει κυριολεκτικά ότι. 1028 01:00:47,690 --> 01:00:52,460 Θα σας πάρει ένα στοιχείο από το DOM, Document Object Model δέντρο, 1029 01:00:52,460 --> 01:00:55,520 των οποίων η ταυτότητα είναι σε αυτή την περίπτωση χαιρετισμό. 1030 01:00:55,520 --> 01:00:59,200 Με άλλα λόγια, όλο αυτό το διάστημα που περάσαμε στις δομές δεδομένων μπαίνει στο παιχνίδι εδώ. 1031 01:00:59,200 --> 01:01:01,400 Αυτή η εικόνα του DOM που είχαμε πριν από λίγο, 1032 01:01:01,400 --> 01:01:06,100 ακόμη και αν η σελίδα είναι λίγο διαφορετική, αν είχα ένα div σε αυτή την εικόνα, 1033 01:01:06,100 --> 01:01:11,180 document.getElementById τι θα επιστρέψει σε μένα θα είναι αποτελεσματικά ένας δείκτης 1034 01:01:11,180 --> 01:01:15,440 στο ορθογώνιο στο δέντρο, μια αναφορά στο ορθογώνιο στο δέντρο. 1035 01:01:15,440 --> 01:01:18,410 Έτσι, αυτό είναι τι σημαίνει πραγματικά να καλέσετε μία από αυτές τις λειτουργίες. 1036 01:01:18,410 --> 01:01:21,960 Σε αυτή την περίπτωση και πάλι είναι ένα div. Δεν είναι ένα σώμα ή ένα τίτλο. 1037 01:01:21,960 --> 01:01:26,480 Ας δούμε λοιπόν τι θα κάνω στη συνέχεια, με την παρούσα div τώρα που το έχω μέσα από αυτό που ονομάζεται μεταβλητή div. 1038 01:01:26,480 --> 01:01:32,580 Αποδεικνύεται με JavaScript έχετε τη δυνατότητα να τσιμπιά το CSS της σελίδας σας δυναμικά. 1039 01:01:32,580 --> 01:01:39,060 Μέχρι τώρα, όλα τα CSS έχουμε κάνει, αν και περιορισμένη, είναι τα χαρακτηριστικά στυλ, 1040 01:01:39,060 --> 01:01:41,730 ή όπου αλλού έχουμε θέσει CSS; 1041 01:01:42,730 --> 01:01:45,810 Ι το είδος της χάλασε το ένα. Στην ετικέτα στυλ στην κορυφή του αρχείου. 1042 01:01:45,810 --> 01:01:49,180 Ή τρίτη θέση έχει μέσα; 1043 01:01:50,710 --> 01:01:54,590 >> Ένα εξωτερικό αρχείο, κάτι. Css. 1044 01:01:54,590 --> 01:01:56,730 Έτσι, αυτές είναι οι 3 θέσεις που έχουμε κάνει μέχρι στιγμής CSS, 1045 01:01:56,730 --> 01:01:59,310 αλλά η σύλληψη είναι ότι έχουμε σκληρό κωδικοποιούνται όλα. 1046 01:01:59,310 --> 01:02:04,060 Μπορείτε αποφάσισε όπως περιστέρι σε PSET 7, αποφασίσαμε πριν διαλέξεις τι CSS μας θα είναι. 1047 01:02:04,060 --> 01:02:07,380 Αλλά αν θέλετε να αλλάξετε το CSS σας, μπορείτε να το κάνετε πραγματικά ότι 1048 01:02:07,380 --> 01:02:09,370 Μόλις έχετε μια πραγματική γλώσσα προγραμματισμού. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - όχι γλώσσες προγραμματισμού. JavaScript είναι. 1050 01:02:13,910 --> 01:02:18,200 Έτσι, αποδεικνύεται ότι το συντομότερο έχετε ένα από αυτά τα τετράγωνα από το δέντρο 1051 01:02:18,200 --> 01:02:23,050 ονομάζεται DOM, η ίδια έχει κάποια στοιχεία στο εσωτερικό του. 1052 01:02:23,050 --> 01:02:27,820 Έτσι, το div που μόλις άρπαξε από το δέντρο έχει τι θα καλέσουμε ένα ακίνητο στο εσωτερικό του 1053 01:02:27,820 --> 01:02:34,390 ονομάζεται το στυλ, και η ιδιοκτησία έχει το ίδιο στυλ μια ιδιότητα που ονομάζεται ορατότητα. 1054 01:02:34,390 --> 01:02:37,330 Θα ήθελα να ξέρω αυτό μόνο με την αναζήτηση ενός χρήστη εγχειρίδιο του CSS. 1055 01:02:37,330 --> 01:02:41,160 Αποδεικνύεται ότι υπάρχει μια προβολή CSS ιδιότητα που κάνει ό, τι λέει. 1056 01:02:41,160 --> 01:02:44,530 Κάνει κάτι ορατό ή όχι, ορατή ή όχι. 1057 01:02:44,530 --> 01:02:46,810 Και πώς θα γίνει αυτό είναι αυτό. 1058 01:02:46,810 --> 01:02:50,510 Ρωτάω προγραμματισμού αν η προβολή αυτού του div κρύβεται, 1059 01:02:50,510 --> 01:02:53,390 τι μπορώ να αλλάξω το να; Ορατό. 1060 01:02:53,390 --> 01:02:58,840 Αλλιώς, αν η ορατότητα αυτής της σελίδας δεν είναι κρυφό, λογικά θα κάνουν το κρυφό. 1061 01:02:58,840 --> 01:03:04,070 Δεν έχω καμία ιδέα γιατί είναι ορατές και κρυφές και δεν είναι ορατά και αόρατα. 1062 01:03:04,070 --> 01:03:06,000 Αυτό ήταν μια κακή απόφαση σχεδιασμού κατά μήκος του τρόπου. 1063 01:03:06,000 --> 01:03:09,530 Αλλά αυτά είναι πράγματι αντίθετα σε CSS: ορατές και κρυφές. 1064 01:03:09,530 --> 01:03:15,520 Όλα αυτά δεν είναι αυτό σημαίνει ότι αλλάζει το CSS του αρχείου μου και να σβήνουν, εντός και εκτός 1065 01:03:15,520 --> 01:03:16,870 για αυτή τη συγκεκριμένη div. 1066 01:03:16,870 --> 01:03:20,630 Αλλά και πάλι, αυτό είναι μια συνάρτηση που ονομάζεται αναλαμπή. Πότε είναι η λειτουργία που ονομάζεται αναλαμπή; 1067 01:03:20,630 --> 01:03:24,080 Αποδεικνύεται ότι υπάρχει μια άλλη ειδική καθολική μεταβλητή που ονομάζεται παράθυρο, 1068 01:03:24,080 --> 01:03:28,220 παρόμοια στο πνεύμα με το έγγραφο, αλλά ότι το έγγραφο αναφέρεται στην ιστοσελίδα σας, 1069 01:03:28,220 --> 01:03:31,700 όπως το δέντρο DOM, η HTML που αποστέλλονται από το διακομιστή, 1070 01:03:31,700 --> 01:03:35,250 παράθυρο αναφέρεται στην χρώμιο γύρω από αυτό, η γραμμή διευθύνσεων, η γραμμή τίτλου, 1071 01:03:35,250 --> 01:03:37,880 και όλα αυτά τα πράγματα γύρω από την ιστοσελίδα σας. 1072 01:03:37,880 --> 01:03:42,800 >> Και αποδεικνύεται ότι το αντικείμενο παράθυρο έχει μια ειδική λειτουργία στο εσωτερικό του ζητούσε setInterval 1073 01:03:42,800 --> 01:03:44,360 ότι κάνει ό, τι λέει. 1074 01:03:44,360 --> 01:03:48,600 Θα οριστεί ένα χρονικό διάστημα - σε αυτήν την περίπτωση κάθε 500 χιλιοστά του δευτερολέπτου - 1075 01:03:48,600 --> 01:03:52,270 και, ρίξτε μια εικασία, τι προτίθεται να πράξει κάθε 500 χιλιοστά του δευτερολέπτου; 1076 01:03:52,270 --> 01:03:55,240 Είναι πρόκειται να εκτελέσει αυτή τη λειτουργία αναβοσβήνει. 1077 01:03:55,240 --> 01:03:58,560 Και τι ωραίο εδώ είναι ότι θα μπορούσαμε να είχαμε κάνει αυτό σε C, ακόμη και αν ποτέ δεν κάναμε. 1078 01:03:58,560 --> 01:04:01,580 C δεν έχουν κάτι που ονομάζεται δείκτες λειτουργία, όπου μπορείτε να περάσετε λειτουργίες γύρω από 1079 01:04:01,580 --> 01:04:03,140 ως επιχειρήματα. 1080 01:04:03,140 --> 01:04:07,620 Ομοίως, στο JavaScript να περάσετε το όνομα μιας συνάρτησης σε μια άλλη λειτουργία. 1081 01:04:07,620 --> 01:04:10,630 Και παρατηρήσετε τι κάνω. Δεν το κάνω αυτό. 1082 01:04:10,630 --> 01:04:14,380 Αν έβαλα παρενθέσεις μετά την αναλαμπή, αυτό θα σήμαινε ότι καλείτε τη λειτουργία αναβοσβήνει. 1083 01:04:14,380 --> 01:04:17,430 Αν παραλείψουμε τους, αυτό σημαίνει ότι εδώ είναι η λειτουργία αναλαμπής 1084 01:04:17,430 --> 01:04:21,330 έτσι ώστε setInterval να το ονομάσουμε κάθε 500 χιλιοστά του δευτερολέπτου. 1085 01:04:21,330 --> 01:04:28,200 Έτσι, το τελικό αποτέλεσμα, φρικτό και αν είναι, είναι ότι αν πάω σε localhost και να πάει να blink.html, 1086 01:04:28,200 --> 01:04:32,120 Τώρα έχω αυτό συμβαίνει ξανά και ξανά. 1087 01:04:32,120 --> 01:04:34,950 Και αν πραγματικά Ελέγξτε Element, ας δούμε αν μπορούμε να δούμε αυτό. 1088 01:04:34,950 --> 01:04:38,550 Επιτρέψτε μου να Επιθεωρήστε Element, επιτρέψτε μου να μετακινηθείτε προς τα κάτω ακριβώς λίγο, 1089 01:04:38,550 --> 01:04:44,320 επιτρέψτε μου να επιλέξει στοιχεία πάνω από εδώ, και να παρατηρήσετε το DOM εσωτερικό του επιθεωρητή Chrome. 1090 01:04:44,320 --> 01:04:48,840 Είναι κυριολεκτικά αλλάζει πέρα ​​δώθε κάθε 500 χιλιοστά του δευτερολέπτου. 1091 01:04:48,840 --> 01:04:55,660 Αν πάμε στο φίλο μας Nate, 1092 01:04:55,660 --> 01:05:00,020 αν έχετε αναρωτηθεί ποτέ πώς αυτό λειτουργεί, παρόμοια ιδέα με ένα διάστημα, 1093 01:05:00,020 --> 01:05:04,810 αλλά Nate κάνει πραγματικά πολύ αποτελεσματική χρήση του χρώματος στη συγκεκριμένη περίπτωση εδώ. 1094 01:05:04,810 --> 01:05:07,350 Έτσι, ό, τι περισσότερο μπορούμε πραγματικά να κάνουμε με αυτό; 1095 01:05:07,350 --> 01:05:09,990 Ας ανοίξουμε ένα άλλο παράδειγμα και να δοκιμάσετε κάτι 1096 01:05:09,990 --> 01:05:12,940 αυτό είναι προγραμματιστικά ακόμη πιο χρήσιμο από ό, τι να κάνει τα πράγματα αναβοσβήνουν. 1097 01:05:12,940 --> 01:05:17,990 Επιτρέψτε μου να πάω σε μορφές κατάλογο μας σήμερα και να πάει σε form0. 1098 01:05:17,990 --> 01:05:20,820 Αυτό ήταν το πιο άσχημο δυνατή μορφή που θα μπορούσε να καταλήξει με, 1099 01:05:20,820 --> 01:05:23,290 και επιτρέψτε μου να σας δείξω ακριβώς τι μοιάζει σε ένα πρόγραμμα περιήγησης. 1100 01:05:23,290 --> 01:05:28,960 >> Επιτρέψτε μου να πάω σε localhost / μορφές, και αυτό είναι form0. 1101 01:05:28,960 --> 01:05:33,400 Αυτό είναι ένα εξαιρετικά άσχημο HTML μορφή που έχει μερικά πεδία για το email, τον κωδικό πρόσβασης, 1102 01:05:33,400 --> 01:05:37,190 κωδικό πρόσβασης, και στη συνέχεια ένα μικρό κουτάκι για να συμφωνήσει με κάποιους όρους και προϋποθέσεις. 1103 01:05:37,190 --> 01:05:41,350 Η σύλληψη είναι αν επισκεφτείτε αυτή τη φόρμα και δεν θέλω να σας δώσω τη διεύθυνση ηλεκτρονικού ταχυδρομείου μου, 1104 01:05:41,350 --> 01:05:44,730 Δεν θέλω να συμφωνείτε με τους όρους και τις προϋποθέσεις ίσως, μπορώ να κάντε κλικ στην επιλογή Εγγραφή 1105 01:05:44,730 --> 01:05:46,920 και αυτό μου δίνει τη δυνατότητα μέσω ούτως ή άλλως. 1106 01:05:46,920 --> 01:05:50,800 Αυτό συμβαίνει για να υποβάλει ένα ηλίθιο αρχείο PHP που ονομάζεται dump.php. 1107 01:05:50,800 --> 01:05:58,420 Το μόνο που κάνει είναι να εκτυπώσετε τα περιεχόμενα της $ _GET μόνο για διαγνωστικούς σκοπούς. 1108 01:05:58,420 --> 01:06:01,580 Αυτό ήταν ό, τι υποβλήθηκε από τον χρήστη μόλις τώρα. 1109 01:06:01,580 --> 01:06:05,010 Αλλά ας υποθέσουμε ότι πραγματικά θέλετε να επικυρώσετε την υποβολή φόρμα του χρήστη. 1110 01:06:05,010 --> 01:06:06,530 Επιτρέψτε μου να πάω στην έκδοση 1. 1111 01:06:06,530 --> 01:06:11,420 Αυτό είναι form1.html. Φαίνεται αισθητικά εξίσου κακό, αλλά παρατηρήσετε πώς είναι φανταχτερό. 1112 01:06:11,420 --> 01:06:15,450 Αν κάνω κλικ στο Εγγραφή χωρίς συνεργασία, έχω φώναξε. 1113 01:06:15,450 --> 01:06:17,320 "Πρέπει να δώσετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας." 1114 01:06:17,320 --> 01:06:21,670 Εντάξει. Έτσι, επιτρέψτε μου να το δοκιμάσω. Έτσι malan@harvard.edu. Δεν χρειάζεστε έναν κωδικό πρόσβασης. 1115 01:06:21,670 --> 01:06:25,100 Εγγραφή. "Πρέπει να δώσετε έναν κωδικό πρόσβασης." Εντάξει. 1116 01:06:25,100 --> 01:06:28,470 Γι 'αυτό και θα παρέχει έναν κωδικό πρόσβασης των βυσσινί. Εγγραφή. 1117 01:06:28,470 --> 01:06:32,300 "Οι κωδικοί πρόσβασης δεν ταιριάζουν." Έχω τώρα να πληκτρολογήσετε βυσσινί εδώ. 1118 01:06:32,300 --> 01:06:35,710 Έκανα κατά λάθος ότι ελέγχεται. Εγγραφή. 1119 01:06:35,710 --> 01:06:39,860 "Θα πρέπει να συμφωνήσετε με τους όρους και τις προϋποθέσεις." Εντάξει. Συμφωνώ εκεί. Εγγραφή. 1120 01:06:39,860 --> 01:06:43,700 Και τώρα μου δείχνει το διαγνωστικό έξοδο εκεί. 1121 01:06:43,700 --> 01:06:45,630 >> Λοιπόν, τι ακριβώς συνέβη; 1122 01:06:45,630 --> 01:06:48,330 Είχαμε αυτή την ικανότητα για την επικύρωση υποβολές μορφή. 1123 01:06:48,330 --> 01:06:51,420 Στην πραγματικότητα, αν έκανε βουτιά σε PSET 7, υπάρχει μια λειτουργία συγγνώμη 1124 01:06:51,420 --> 01:06:54,620 που το καθιστά αρκετά εύκολο να φωνάζω στο χρήστη με ένα μήνυμα στην οθόνη. 1125 01:06:54,620 --> 01:06:57,580 Είμαι χρησιμοποιώντας ένα ελαφρώς διαφορετικό μηχανισμό, η λειτουργία ειδοποίησης, 1126 01:06:57,580 --> 01:07:03,690 η οποία δεν είναι μια λειτουργία που είναι χαμογέλασε μετά από αυτό κάνει πολύ άσχημο μηνύματα των χρηστών. 1127 01:07:03,690 --> 01:07:05,710 Αλλά ας δούμε τι κάνω εδώ. 1128 01:07:05,710 --> 01:07:09,620 Αυτό είναι form1.html, και παρατηρώ ότι έχω κάποια αρκετά εξοικειωμένοι σύνταξη: 1129 01:07:09,620 --> 01:07:12,920 ετικέτα του σώματος, ετικέτα μορφή, χαρακτηριστικό δράσης, χαρακτηριστικό τρόπο. 1130 01:07:12,920 --> 01:07:17,050 Αλλά παρατηρήσετε έχω δώσει μορφή μου ένα μοναδικό αναγνωριστικό για την ευκολία. 1131 01:07:17,050 --> 01:07:19,190 Στη συνέχεια, έχω ένα email πεδίο του οποίου ο τύπος είναι το κείμενο, 1132 01:07:19,190 --> 01:07:23,780 ένα πεδίο του κωδικού πρόσβασης του οποίου ο τύπος είναι ο κωδικός, το πεδίο επιβεβαίωσης του οποίου ο τύπος είναι ο κωδικός, 1133 01:07:23,780 --> 01:07:28,070 και στη συνέχεια ένα πλαίσιο ελέγχου του οποίου το όνομα είναι η συμφωνία πάνω από εδώ, ο τύπος είναι πλαίσιο ελέγχου. 1134 01:07:28,070 --> 01:07:30,380 Και μετά έχω ένα κουμπί submit. 1135 01:07:30,380 --> 01:07:33,050 Αλλά παρατηρήσετε στην κορυφή ό, τι έχω περισσότερο. 1136 01:07:33,050 --> 01:07:35,810 Πρώτον, υπάρχει μία άλλη χρήση της ετικέτας σεναρίου. 1137 01:07:35,810 --> 01:07:40,520 Αν έχετε κάποιο κώδικα JavaScript σε άλλο αρχείο, όπως ακριβώς και με CSS μπορείτε να τη συμπεριλάβετε. 1138 01:07:40,520 --> 01:07:44,530 Και να το κάνεις αυτό με πηγή το σενάριο, και στη συνέχεια να παρατηρήσετε είμαι συνδέει προφανώς 1139 01:07:44,530 --> 01:07:50,349 να googleapis.com σε μια πολύ μεγάλη διαδρομή, αλλά το όνομα του αρχείου του οποίου τελειώνει σε jquery.min 1140 01:07:50,349 --> 01:07:52,420 για ελάχιστο. js. 1141 01:07:52,420 --> 01:07:55,969 jQuery είναι ένα σούπερ δημοφιλής βιβλιοθήκη για JavaScript που κάνει ακριβώς το JavaScript 1142 01:07:55,969 --> 01:07:58,230 όλο και πιο φιλική προς το χρήστη να χρησιμοποιήσει. 1143 01:07:58,230 --> 01:08:00,610 Είναι πράγματι γίνει ένα de facto πρότυπο. 1144 01:08:00,610 --> 01:08:04,090 Έτσι ακόμα κι αν αυτό που είστε έτοιμος να δείτε δεν είναι καθαρό το JavaScript per se, 1145 01:08:04,090 --> 01:08:09,340 είναι μια βιβλιοθήκη στην κορυφή της JavaScript μοιάζει πολύ με την βιβλιοθήκη CS50 είναι ένα στρώμα 1146 01:08:09,340 --> 01:08:13,670 στην κορυφή του χαμηλού επιπέδου κώδικα C? η πραγματικότητα είναι σχεδόν όλοι στο Internet που χρησιμοποιεί. 1147 01:08:13,670 --> 01:08:18,030 Έτσι, αυτά δεν είναι βοηθητικές ρόδες. Αυτό είναι ακριβώς βέλτιστη πρακτική αυτές τις μέρες. 1148 01:08:18,030 --> 01:08:22,830 Τώρα παρατηρήσετε κάτω από αυτό είναι δική μου ετικέτα script, και παρατηρήστε τι έχω κάνει εδώ. 1149 01:08:22,830 --> 01:08:27,450 Αποδεικνύεται ότι jQuery κάνει κάτι λίγο φαντασία. 1150 01:08:27,450 --> 01:08:29,660 JavaScript έχει σύμβολα δολαρίου, αλλά είναι χωρίς νόημα. 1151 01:08:29,660 --> 01:08:32,870 >> Είναι σαν το γράμμα Α ή Β ή Γ. 1152 01:08:32,870 --> 01:08:36,670 jQuery έχει υιοθετήσει απλώς τη σύμβαση ή το είδος των τοποθετημένη αξίωση στο γεγονός 1153 01:08:36,670 --> 01:08:40,280 ότι θα είναι $ ειδικό σύμβολο τους. 1154 01:08:40,280 --> 01:08:44,950 Έτσι, μόλις φορτώσει αυτό το παγκόσμιο αρχείο JavaScript εδώ με την ετικέτα script, 1155 01:08:44,950 --> 01:08:49,080 έχετε πρόσβαση σε μια ειδική παγκόσμια μεταβλητή που λέγεται $. 1156 01:08:49,080 --> 01:08:53,009 Είναι πιο σωστά ονομάζεται jQuery, αλλά αυτό δεν φαίνεται σχεδόν τόσο προκλητική όσο $. 1157 01:08:53,009 --> 01:08:56,250 Αλλά $ δεν έχει ιδιαίτερη σημασία. Στην PHP είχε ιδιαίτερη σημασία. 1158 01:08:56,250 --> 01:08:58,440 Θα έπρεπε να το έχετε μπροστά σε μια μεταβλητή. 1159 01:08:58,440 --> 01:09:01,670 Αυτό είναι μόνο ένα σέξι πράγμα που πήραν επάνω. 1160 01:09:01,670 --> 01:09:03,389 Τι συμβαίνει εδώ; 1161 01:09:03,389 --> 01:09:08,830 Παρατηρήστε Είμαι περνώντας στο jQuery λειτουργία καθολική μεταβλητή έγγραφό μου 1162 01:09:08,830 --> 01:09:10,860 και τότε είμαι καλώντας. έτοιμος. 1163 01:09:10,860 --> 01:09:15,480 Τι jQuery δεν είναι ουσιαστικά σας επιτρέπει να πάρετε κάποια πράγματα βανίλια JavaScript 1164 01:09:15,480 --> 01:09:17,889 όπως και το αντικείμενο εγγράφου, το αντικείμενο παράθυρο, 1165 01:09:17,889 --> 01:09:20,790 και αν πρέπει να το δώσετε σε jQuery με την λειτουργία - 1166 01:09:20,790 --> 01:09:24,429 και πάλι, να είναι σαφής, αυτό είναι μια λειτουργία που ονομάζεται jQuery - 1167 01:09:24,429 --> 01:09:28,240 αυτό που κάνει είναι να επιστρέφει σε μια ειδική έκδοση του εγγράφου 1168 01:09:28,240 --> 01:09:30,700 η οποία έχει περισσότερες λειτουργίες που σχετίζονται με αυτό. 1169 01:09:30,700 --> 01:09:34,760 Έτσι, στις πρώτες JavaScript δεν υπάρχει έτοιμο λειτουργία, 1170 01:09:34,760 --> 01:09:37,810 αλλά αν περάσουν έγγραφο με το jQuery λειτουργία πρώτα, 1171 01:09:37,810 --> 01:09:40,960 επιστρέφει σε μια ειδική έκδοση του αντικειμένου εγγράφου 1172 01:09:40,960 --> 01:09:43,030 που έχει πιο φανταχτερά χαρακτηριστικά. 1173 01:09:43,030 --> 01:09:48,230 Και γι 'αυτό οι άνθρωποι αρέσει. Κάνει ακριβώς τα πράγματα πιο εύκολο να κάνουμε, όπως είμαστε για να δούμε. 1174 01:09:48,230 --> 01:09:49,820 Έτσι, αυτό που κάνει αυτή τη γραμμή του κώδικα σημαίνει; 1175 01:09:49,820 --> 01:09:52,690 Αυτή η γραμμή κώδικα σημαίνει εδώ, όταν το έγγραφο είναι έτοιμο - 1176 01:09:52,690 --> 01:09:56,830 Με άλλα λόγια, όταν το πρόγραμμα περιήγησης γίνεται ανάγνωση αυτού του αρχείου πάνω προς τα κάτω - 1177 01:09:56,830 --> 01:09:59,200 να προχωρήσει και να εκτελέσει την ακόλουθη λειτουργία. 1178 01:09:59,200 --> 01:10:03,540 Αυτό που είναι πραγματικά ενδιαφέρον σε JavaScript - και η PHP έχει αυτό, καθώς και - 1179 01:10:03,540 --> 01:10:05,450 είναι ανώνυμη λειτουργίες. 1180 01:10:05,450 --> 01:10:10,560 Στο JavaScript μπορείτε να δηλώσετε λειτουργίες που δεν έχουν όνομα, αλλά έχουν ένα σώμα. 1181 01:10:10,560 --> 01:10:12,570 Παρατηρήστε τι συμβαίνει εδώ. 1182 01:10:12,570 --> 01:10:16,220 >> Πρόκειται για μια λειτουργία που ονομάζεται έτοιμος, και αυτό σημαίνει απλά να κάνετε τα εξής 1183 01:10:16,220 --> 01:10:20,220 όταν ολόκληρη η ιστοσελίδα είναι έτοιμη, όταν είναι όλα έχουν διαβάζονται από το διακομιστή. 1184 01:10:20,220 --> 01:10:23,090 Τι θέλετε να κάνετε; Θέλω να εκτελέσει ένα κομμάτι του κώδικα. 1185 01:10:23,090 --> 01:10:27,120 Παρατηρήστε ότι δεν θέλουμε να εκτελέσει αυτόν τον κώδικα αμέσως. 1186 01:10:27,120 --> 01:10:34,350 Αν παραλειφθεί αυτή, αυτό θα σήμαινε να αρχίσει αμέσως την εκτέλεση αυτών των γραμμών του κώδικα. 1187 01:10:34,350 --> 01:10:39,040 Αλλά το γεγονός ότι εγώ λέω όχι, όχι, όχι, τυλίξτε το σε μια ανώνυμη συνάρτηση, όπως αυτό 1188 01:10:39,040 --> 01:10:43,000 μέσα δεν το εκτελέσει ακόμα? ονομάσουμε τελικά. 1189 01:10:43,000 --> 01:10:45,430 Είδαμε πριν από λίγο στο προηγούμενο παράδειγμα φόρμα μας. 1190 01:10:45,430 --> 01:10:49,990 Ποια λειτουργία δεν λέμε τελικά, 500 χιλιοστά του δευτερολέπτου αργότερα; Blink. 1191 01:10:49,990 --> 01:10:51,480 Έτσι, η ίδια ιδέα. 1192 01:10:51,480 --> 01:10:53,950 Και πάλι, ακόμη και αν αυτό φαίνεται λίγο παράξενο, μόλις λάβει τώρα για την πίστη 1193 01:10:53,950 --> 01:10:57,060 να δηλώσει ότι μια ανώνυμη συνάρτηση που ονομάζεται τελικά, 1194 01:10:57,060 --> 01:11:01,720 μπορείτε να γράψετε απλά λειτουργία () { 1195 01:11:01,720 --> 01:11:05,380 Λοιπόν, τι κώδικα θα πάμε να εκτελέσει τελικά; Το παρακάτω. 1196 01:11:05,380 --> 01:11:10,460 Αυτό φαίνεται πάρα πολύ λίγο νέο, αλλά αυτό σημαίνει ότι εδώ είναι το jQuery λειτουργία, 1197 01:11:10,460 --> 01:11:13,430 και αυτό είναι τώρα μια συντόμευση. 1198 01:11:13,430 --> 01:11:18,830 Αυτό το απόσπασμα του κώδικα HTML στο κάτω μέρος της οθόνης βέβαια έχει κάποια αναπαράσταση δέντρων. 1199 01:11:18,830 --> 01:11:21,730 Δεν είναι αυτό. Αυτή η σελίδα είναι πιο ενδιαφέρουσα από ό, τι αυτή γειά σου, τον κόσμο παράδειγμα. 1200 01:11:21,730 --> 01:11:25,210 Αλλά υπάρχει κάποιο δέντρο που αντιστοιχεί σε αυτό το HTML. 1201 01:11:25,210 --> 01:11:28,910 Θα ήταν ένας πόνος στο λαιμό να πρέπει να εφαρμόσει κάποιο είδος αναδρομική συνάρτηση 1202 01:11:28,910 --> 01:11:34,380 να ξεκινούν από τον κόμβο ρίζα και στη συνέχεια να βρει τον κόμβο του οποίου είναι η εγγραφή ID. 1203 01:11:34,380 --> 01:11:38,340 Έτσι, αυτό που κάνει jQuery εξαιρετικά εύκολο για μας είναι κυριολεκτικά αυτό. 1204 01:11:38,340 --> 01:11:43,000 Πήγαινε και φέρε μου ανεξαρτήτως div μορφή ή οτιδήποτε άλλο, όποια και αν είναι HTML στοιχείο 1205 01:11:43,000 --> 01:11:45,820 έχει ένα αναγνωριστικό της εγγραφής. 1206 01:11:45,820 --> 01:11:52,440 Αυτό είναι ισοδύναμο με document.getElementById («καταχώριση»). 1207 01:11:52,440 --> 01:11:54,170 >> Γιατί οι άνθρωποι όπως jQuery; 1208 01:11:54,170 --> 01:12:00,110 Επειδή είναι μικρότερη για να πληκτρολογήσετε. Αλλά αυτό είναι το μόνο που είναι. Είναι η ίδια ιδέα. 1209 01:12:00,110 --> 01:12:02,630 Φέρε μου την ετικέτα του οποίου είναι η εγγραφή ID. 1210 01:12:02,630 --> 01:12:06,300 Και όταν αυτή η ετικέτα, η οποία συμβαίνει να είναι μια μορφή, υποβάλλεται, 1211 01:12:06,300 --> 01:12:08,300 να προχωρήσει και να εκτελέσει αυτόν τον κώδικα. 1212 01:12:08,300 --> 01:12:11,320 Έτσι, ας ρίξουμε μια ματιά στο πώς τώρα κάνουμε την επικύρωση μορφή. 1213 01:12:11,320 --> 01:12:15,950 Η σύνταξη είναι ομολογουμένως αινιγματικό στην αρχή, αλλά τι συμβαίνει; 1214 01:12:15,950 --> 01:12:21,050 Αν αυτή η γραμμή του κώδικα είναι αλήθεια, είμαι πρόκειται να φωνάζω στο χρήστη να παράσχει του ή την διεύθυνση ηλεκτρονικού ταχυδρομείου. 1215 01:12:21,050 --> 01:12:22,970 Έτσι ποια είναι αυτή η γραμμή του κώδικα; 1216 01:12:22,970 --> 01:12:25,560 $ Σημαίνει jQuery. Τώρα παρατηρήσετε αυτό. 1217 01:12:25,560 --> 01:12:27,920 Αυτό είναι το είδος του όπως CSS. 1218 01:12:27,920 --> 01:12:33,370 Αν έχετε βουτήξει σε CSS ακόμη, θα ξέρετε ότι αυτό σημαίνει ότι το στοιχείο των οποίων είναι η εγγραφή ID. 1219 01:12:33,370 --> 01:12:39,840 Ο χώρος σημαίνει βρει ένα παιδί ή έναν απόγονο της εγγραφής του οποίου το όνομα είναι η είσοδος. 1220 01:12:39,840 --> 01:12:42,970 Και τότε αυτό το πράγμα σε αγκύλες είναι ένα μικρό φίλτρο. 1221 01:12:42,970 --> 01:12:47,010 Και ακόμα κι αν αυτό φαίνεται αινιγματικό, αυτό σημαίνει απλά πηγαίνετε στη φόρμα των οποίων είναι η εγγραφή ID, 1222 01:12:47,010 --> 01:12:51,230 πηγαίνετε στο εσωτερικό στοιχείο εισόδου του ότι το όνομα του οποίου είναι e-mail, 1223 01:12:51,230 --> 01:12:55,440 και στη συνέχεια να πάρει την αξία του, ανεξάρτητα από την αξία του συμβαίνει να είναι - 1224 01:12:55,440 --> 01:12:59,670 asdf αν αυτό είναι το μόνο που μπορώ δακτυλογραφημένες ή malan@harvard.edu αν αυτό είναι ό, τι πληκτρολογείτε. 1225 01:12:59,670 --> 01:13:05,250 Έτσι, αν η τιμή του πεδίου e-mail == τίποτα της φόρμας, φωνάζω στο χρήστη. 1226 01:13:05,250 --> 01:13:09,700 Αλλιώς, αν η τιμή του πεδίου κωδικού πρόσβασης == τίποτα, φωνάζω στο χρήστη. 1227 01:13:09,700 --> 01:13:19,520 >> Αλλιώς, αν η τιμή του πεδίου κωδικού πρόσβασης δεν ισούται με την τιμή του πεδίου επιβεβαίωση, 1228 01:13:19,520 --> 01:13:22,850 που ήταν το άλλο στοιχείο φόρμας, φωνάζω στο χρήστη. 1229 01:13:22,850 --> 01:13:25,680 Και στη συνέχεια, τέλος - και αυτό έχει πάρα πολύ κάποια νέα σύνταξη της δικής του, 1230 01:13:25,680 --> 01:13:29,270 αλλά από τη στιγμή που έχετε δει, είναι τουλάχιστον λίγο πιο λογικό - 1231 01:13:29,270 --> 01:13:34,060 αλλιώς, αν η μορφή της οποίας είναι η εγγραφή ID έχει ένα στοιχείο εισόδου του οποίου το όνομα είναι η συμφωνία 1232 01:13:34,060 --> 01:13:39,720 και να ελέγχεται, να προχωρήσει και να φωνάζω στο χρήστη. 1233 01:13:39,720 --> 01:13:42,520 Γι 'αυτό και εντελώς παραδεχτώ αυτό είναι εντελώς συντριπτική με την πρώτη ματιά. 1234 01:13:42,520 --> 01:13:46,530 Είναι μια πολύ νέα σύνταξη. Αλλά όλα jQuery ακολουθεί αυτά τα είδη των προτύπων. 1235 01:13:46,530 --> 01:13:49,880 Και ειλικρινά, εγώ δεν γνωρίζουν καν αυτό υπήρχε μέχρι πριν από λίγα λεπτά. 1236 01:13:49,880 --> 01:13:53,640 Έψαξα στο Google, «Πώς μπορείτε να ελέγξετε αν ένα κουτάκι ελέγχεται σε jQuery;" 1237 01:13:53,640 --> 01:13:55,680 και αυτή είναι η σύνταξη, γιατί υπάρχουν διάφοροι τρόποι για να γίνει αυτό 1238 01:13:55,680 --> 01:13:58,010 με τις πραγματικές πρώτες κώδικα JavaScript. 1239 01:13:58,010 --> 01:14:01,030 Έτσι, η πρώτη σελίδα του Set Πρόβλημα 7 τονίζει, 1240 01:14:01,030 --> 01:14:04,500 PSET 7 είναι πάρα πολύ μια άσκηση στην bootstrapping τον εαυτό σας 1241 01:14:04,500 --> 01:14:08,650 όπου έχουμε υπό τον όρο, ελπίζω ένα εννοιολογικό πλαίσιο με το οποίο για την αντιμετώπιση της PSET. 1242 01:14:08,650 --> 01:14:12,280 >> Αλλά, όπως συμβαίνει συχνά με το web design, είναι στο χέρι σας πραγματικά να σακί γύρω, 1243 01:14:12,280 --> 01:14:16,680 ενσωματώσει τμήματα κώδικα και παραδείγματα από το διαδίκτυο εφ 'όσον τους αναφέρω 1244 01:14:16,680 --> 01:14:17,960 σύμφωνα με τους όρους σε αυτό το πρώτο φύλλο, 1245 01:14:17,960 --> 01:14:21,460 και να συνειδητοποιήσουν ότι η εκμάθηση HTML, CSS, JavaScript, ακόμη και SQL 1246 01:14:21,460 --> 01:14:26,020 είναι πραγματικά γραφτό να γίνει αυτό στο σπίτι άσκηση καθώς αρχίζουμε να λάβει αυτές τις ρόδες μακριά. 1247 01:14:26,020 --> 01:14:29,150 Και συνειδητοποιούν ότι υπάρχει πάρα πολύ τόσα πολλά άλλα πράγματα που μπορείτε να κάνετε με ένα πρόγραμμα περιήγησης. 1248 01:14:29,150 --> 01:14:33,790 Μέσα από τα περισσότερα από αυτά τα στοιχεία υπάρχουν και άλλα πράγματα που ονομάζονται χειρισμού συμβάντων. 1249 01:14:33,790 --> 01:14:37,140 Και ακόμα κι αν εμείς απλά κοίταξε αυτά ονομάζονται onsubmit και onready, 1250 01:14:37,140 --> 01:14:40,310 μπορείτε να κάνετε πράγματα όπως onkeydown, onkeyup, 1251 01:14:40,310 --> 01:14:43,410 όπως όταν ο χρήστης αγγίζει ένα πλήκτρο, μπορείτε να ακούσετε γι 'αυτό και το κλειδί επάνω. 1252 01:14:43,410 --> 01:14:45,940 Το Gmail έχει συντομεύσεις πληκτρολογίου. 1253 01:14:45,940 --> 01:14:49,490 Πώς το Google εφαρμόζει τις συντομεύσεις πληκτρολογίου, όπως C για συνθέτουν; 1254 01:14:49,490 --> 01:14:54,120 Ακούν για εκδηλώσεις, όπως και αν ονομάζεται, όπως onkeypress ή onkeyup και onkeydown. 1255 01:14:54,120 --> 01:14:56,360 Αν έχετε ποτέ κυμαινόταν το ποντίκι σας πάνω από κάποιο μενού 1256 01:14:56,360 --> 01:15:00,180 και ξαφνικά, voila, εμφανίζεται ένα μενού ή το γραφικό αλλάζει χρώμα, 1257 01:15:00,180 --> 01:15:01,920 πώς θα το κάνουμε αυτό; 1258 01:15:01,920 --> 01:15:06,940 Αντί να ακούσουν για onready ή onsubmit, μπορείτε να ακούσετε για onmouseover ή onMouseOut. 1259 01:15:06,940 --> 01:15:10,920 >> Έτσι, με λίγα λόγια, με αυτά τα πολύ απλά βασικά που έχουμε αρχίσει να το μηδέν στην επιφάνεια του σήμερα 1260 01:15:10,920 --> 01:15:13,940 και θα βουτήξετε σε περαιτέρω για την Τετάρτη, έχετε, όλο και περισσότερο, 1261 01:15:13,940 --> 01:15:17,530 εξουσία για να εφαρμόσει τα είδη των πραγμάτων που είστε ήδη εξοικειωμένοι με. 1262 01:15:17,530 --> 01:15:21,620 Ας τελειώνει εκεί, και θα συνεχίσουμε αυτή την Τετάρτη. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]