1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [Παίζει μουσική] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 ΧΑΝΑ: Γεια, σε όλους. 5 00:00:12,700 --> 00:00:15,866 Ευχαριστώ παιδιά τόσο πολύ για την έξοδο στο αηδιαστικό καιρός για ένα κουίζ 6 00:00:15,866 --> 00:00:16,910 επανεξετάσει συνεδρία. 7 00:00:16,910 --> 00:00:20,020 Όπως εσείς γνωρίζετε, κουίζ η μία είναι αυτή την Τετάρτη. 8 00:00:20,020 --> 00:00:22,209 Έτσι θα πάμε να πάει μέσα από μια δέσμη θεμάτων. 9 00:00:22,209 --> 00:00:24,000 Davin: Γεια σου, μπορώ να πω κάτι πραγματικά γρήγορα; 10 00:00:24,000 --> 00:00:25,215 ΧΑΝΑ: Ναι, Davin πηγαίνει να πω κάτι πραγματικά γρήγορα. 11 00:00:25,215 --> 00:00:25,780 Davin: Συγγνώμη. 12 00:00:25,780 --> 00:00:29,490 Απλά πραγματικά γρήγορα, αν έχετε απορίες σχετικά με το κουίζ, μπορείτε να πάτε σε απευθείας σύνδεση. 13 00:00:29,490 --> 00:00:32,420 Πηγαίνετε στο 2014 κουίζ ένα, για το κουίζ. 14 00:00:32,420 --> 00:00:34,680 Είναι πήρε εφοδιαστικής για Πού να πάτε, πότε να πάει. 15 00:00:34,680 --> 00:00:38,100 Αν είστε εγγεγραμμένος ταυτόχρονα, είμαστε πρόκειται να έχουμε ένα κουίζ μακιγιάζ στις 5:30. 16 00:00:38,100 --> 00:00:40,350 Ή αν μου έστειλε ένα ζήτημα, έχετε κάποιο άλλο πρόβλημα. 17 00:00:40,350 --> 00:00:42,640 Αλλά 5:30 είναι το make-up φορά την Τετάρτη. 18 00:00:42,640 --> 00:00:44,540 Αλλά αν έχετε ερωτήσεις, γενικές ερωτήσεις, 19 00:00:44,540 --> 00:00:45,748 σε απευθείας σύνδεση έχει όλα τα logistics. 20 00:00:45,748 --> 00:00:47,690 Έτσι, ελέγξτε πρώτα εκεί. 21 00:00:47,690 --> 00:00:49,070 >> ΧΑΝΑ: Awesome. 22 00:00:49,070 --> 00:00:53,030 Τόσο εδώ είναι η μεγάλη λίστα θεμάτων ότι θα πάμε για να περάσει σήμερα. 23 00:00:53,030 --> 00:00:57,390 Πάω να καλύψει το σύνολο της C πράγματα, η οποία είναι ότι η πρώτη στήλη. 24 00:00:57,390 --> 00:01:00,710 Έτσι τα πράγματα που έχουμε C καλύπτονται μετά κουίζ μηδέν. 25 00:01:00,710 --> 00:01:05,459 Αρχίζοντας με μια συνδεδεμένη λίστα, το οποίο περιλαμβάνει δείκτες. 26 00:01:05,459 --> 00:01:07,668 >> Εντάξει, έτσι είδαμε αυτό κατά την τελευταία συνεδρίαση επανεξέτασης, 27 00:01:07,668 --> 00:01:10,000 έτσι Πάω να περάσουν αυτό είναι λίγο πιο γρήγορα. 28 00:01:10,000 --> 00:01:13,500 Απλά σηκώστε το χέρι σας, αν θέλεις να να επιβραδύνουν ή να αντιμετωπίσουν κάτι ακόμη. 29 00:01:13,500 --> 00:01:17,150 Αλλά χρησιμοποιούμε συνδεδεμένες λίστες, επειδή αρχίσαμε σε C με συστοιχίες. 30 00:01:17,150 --> 00:01:20,920 Και συστοιχίες είναι μεγάλη, αλλά η το πρόβλημα είναι ότι έχουν ένα σταθερό μέγεθος. 31 00:01:20,920 --> 00:01:24,925 Συνδεδεμένες λίστες μας επιτρέπουν να δημιουργούμε δυναμικά μεγέθους δομών δεδομένων. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> Και έχουμε βασικές λειτουργίες μας, εισαγωγή, τη διαγραφή και αναζήτηση. 34 00:01:32,320 --> 00:01:36,780 Και μπορούμε να κάνουμε ένθετο χειρότερη περίπτωση σταθερό χρόνο 35 00:01:36,780 --> 00:01:39,140 αν εμείς απλά το έθεσε από την αρχή. 36 00:01:39,140 --> 00:01:45,220 Διαγραφή και αναζήτηση, το χειρότερο περίπτωση μεγάλων ω του χρόνου n. 37 00:01:45,220 --> 00:01:47,140 Έτσι και πάλι, μόνο και μόνο για να αναστρέψετε Μέσα από τις φωτογραφίες, 38 00:01:47,140 --> 00:01:50,860 Ξέρω ότι είδαμε αυτά τελευταία φορά, αλλά εμείς θέλετε να παρακολουθείτε συνδεδεμένη λίστα μας 39 00:01:50,860 --> 00:01:53,440 με την παρακολούθηση των επικεφαλής της συνδεδεμένης λίστας μας. 40 00:01:53,440 --> 00:01:55,580 Επειδή γνωρίζουμε ότι κάθε ένα από τους κόμβους μας 41 00:01:55,580 --> 00:01:58,610 είναι ακριβώς πρόκειται να επισημαίνουν την επόμενο κόμβο σε συνδεδεμένη λίστα μας. 42 00:01:58,610 --> 00:02:00,460 >> Έτσι, αυτό είναι το πώς μπορούμε να παρακολουθείτε. 43 00:02:00,460 --> 00:02:02,910 Ακόμα κι αν αυτά δεν είναι συνεχής κομμάτια της μνήμης, 44 00:02:02,910 --> 00:02:07,410 μπορούμε να τα βρούμε με απλά μετά από τα διάφορα βέλη. 45 00:02:07,410 --> 00:02:09,800 Εδώ είναι η δομή μας για μία συνδεδεμένη λίστα κόμβων. 46 00:02:09,800 --> 00:02:11,440 Είδαμε αυτό το τελευταίο χρονικό διάστημα. 47 00:02:11,440 --> 00:02:13,080 Έχουμε struct node μας. 48 00:02:13,080 --> 00:02:14,340 Και αυτό έχει δύο ιδιότητες. 49 00:02:14,340 --> 00:02:17,020 Νούμερο ένα, το πραγματικό τιμή που θέλετε να αποθηκεύσετε. 50 00:02:17,020 --> 00:02:18,290 Σε αυτήν την περίπτωση, είναι ένας ακέραιος αριθμός. 51 00:02:18,290 --> 00:02:21,100 Θα μπορούσε να είναι ένα string, θα μπορούσε είναι μια χαρα, ό, τι θέλετε. 52 00:02:21,100 --> 00:02:24,710 Και τότε, θα πρέπει να παρακολουθείτε ο επόμενος κόμβος στη συνδεδεμένη λίστα μας. 53 00:02:24,710 --> 00:02:29,797 Έτσι, αυτό πρόκειται να είναι ένα δείκτης στον επόμενο κόμβο. 54 00:02:29,797 --> 00:02:31,880 Αν απλά κάναμε αναζήτησης, όπως είπα και πριν, 55 00:02:31,880 --> 00:02:34,900 που θα πρέπει να ακολουθήσετε τα βέλη σας προς τα κάτω. 56 00:02:34,900 --> 00:02:40,720 Εισαγωγή, θα παρακολουθείτε από όπου το υπόλοιπο του καταλόγου σας. 57 00:02:40,720 --> 00:02:44,150 Και θέλετε να ανακατευθύνετε το κεφάλι να επισημάνω το νέο στοιχείο μας, η οποία 58 00:02:44,150 --> 00:02:46,640 σε αυτή την περίπτωση είναι ένα, και, στη συνέχεια, κάποιος θα επισημάνει 59 00:02:46,640 --> 00:02:49,480 για το υπόλοιπο της συνδεδεμένης λίστας. 60 00:02:49,480 --> 00:02:52,996 Έτσι και πάλι, ξέρω ότι αυτό είναι ένα μικρό κομμάτι της επανάληψης από το μηδέν κουίζ. 61 00:02:52,996 --> 00:02:55,370 Έτσι πρέπει να είμαστε πολύ προσεκτικοί σχετικά με τη σειρά με την οποία θα 62 00:02:55,370 --> 00:03:00,390 κάνει αυτές τις επισημάνσεις, ώστε να μην κάνουμε χαθούν τα ίχνη του στο πίσω μέρος της λίστας. 63 00:03:00,390 --> 00:03:04,122 Εντάξει, οποιεσδήποτε ερωτήσεις με μόνο μεμονωμένα συνδεδεμένες λίστες; 64 00:03:04,122 --> 00:03:06,060 Φοβερό, ΟΚ, δροσερό. 65 00:03:06,060 --> 00:03:09,410 >> Μέχρι τώρα, θα πάμε για να πάει σε κάτι μόλις λίγο πιο περίπλοκη, 66 00:03:09,410 --> 00:03:10,920 διπλά συνδεδεμένες λίστες. 67 00:03:10,920 --> 00:03:13,680 Έτσι, εκτός από τη διατήρηση κομμάτι του επόμενου κόμβου, 68 00:03:13,680 --> 00:03:16,220 θέλουμε επίσης να παρακολουθείτε του προηγούμενου κόμβου. 69 00:03:16,220 --> 00:03:19,580 Και αυτό μας επιτρέπει να, αν είμαστε σε κάποιο σημείο σε συνδεδεμένη λίστα μας, 70 00:03:19,580 --> 00:03:23,110 όχι μόνο να πάει προς τα εμπρός, αλλά Επίσης επαναλάβει προς τα πίσω. 71 00:03:23,110 --> 00:03:25,220 Διότι όπως είδαμε στο ένα μεμονωμένα συνδεδεμένη λίστα, 72 00:03:25,220 --> 00:03:27,980 αν ήμασταν σε κάποιο κόμβο, και ξαφνικά, αποφασίσαμε, 73 00:03:27,980 --> 00:03:30,160 στην πραγματικότητα, θέλω να πάω να το δικαίωμα κόμβο πριν από μένα, 74 00:03:30,160 --> 00:03:32,034 θα έπρεπε να πάνε όλα το δρόμο της επιστροφής προς το κεφάλι 75 00:03:32,034 --> 00:03:35,710 και διέτρεξε μέχρι να βρεθεί ο κόμβος που ψάχνατε. 76 00:03:35,710 --> 00:03:37,680 >> Έτσι, αυτό κάνει τα πράγματα λίγο πιο εύκολο, όπως είμαστε 77 00:03:37,680 --> 00:03:39,670 προσπαθεί να επαναλάβει μέσω συνδεδεμένη λίστα μας. 78 00:03:39,670 --> 00:03:47,870 Αλλά αυτό απαιτεί από εμάς να παρακολουθείτε ένα περισσότερα δείκτη, έτσι ένα ακόμη αστέρι κόμβο. 79 00:03:47,870 --> 00:03:50,830 Εντάξει, έτσι και εδώ έρχεται το διασκεδαστικό μέρος. 80 00:03:50,830 --> 00:03:55,600 Εμείς πάμε για να ασκήσετε την εφαρμογή αφαίρεση για διπλά συνδεδεμένες λίστες. 81 00:03:55,600 --> 00:03:58,660 Έτσι, αυτό είναι κάτι που είναι εντελώς δίκαιη παιχνίδι για το κουίζ. 82 00:03:58,660 --> 00:04:00,750 Εμφανίστηκε στο παρελθόν κουίζ. 83 00:04:00,750 --> 00:04:04,220 Έτσι σίγουρα να παρασκευάζονται να κωδικοποιήσει λίγο στο Γ 84 00:04:04,220 --> 00:04:07,900 Μην ξεχνάτε ότι με όλα αυτό το διασκεδαστικό PHP και JavaScript, 85 00:04:07,900 --> 00:04:10,560 εξακολουθούμε να έχουμε να θυμόμαστε να κάνουμε Γ Έτσι βούρτσα επάνω σε αυτό 86 00:04:10,560 --> 00:04:12,146 εάν αισθάνεστε σκουριασμένο. 87 00:04:12,146 --> 00:04:14,580 >> Εντάξει, ας δούμε αν μπορούμε να το κάνουμε αυτό. 88 00:04:14,580 --> 00:04:16,312 Εντάξει, δροσερό. 89 00:04:16,312 --> 00:04:18,600 Έτσι θα πάμε να δοκιμάσετε να επεξεργαστείτε ακριβώς εδώ, 90 00:04:18,600 --> 00:04:20,707 και ελπίζουμε ότι αυτό πηγαίνει όπως είχε προγραμματιστεί. 91 00:04:20,707 --> 00:04:23,915 Εντάξει, δεν θέλει κανείς να μου δώσει μια πρόταση για το πώς θα πρέπει να αρχίσω; 92 00:04:23,915 --> 00:04:27,030 Η μόνη υπόθεση είμαι αποφάσεων είναι ότι έχω ήδη 93 00:04:27,030 --> 00:04:30,180 έχουν μια δομή που ορίζεται, η που μου έδειξε στην τελευταία σελίδα, 94 00:04:30,180 --> 00:04:31,420 την τελευταία διαφάνεια. 95 00:04:31,420 --> 00:04:39,250 Και είμαι αποθήκευση του επικεφαλής της συνδέονται μου Λίστα με κάποιο δείκτη που ονομάζεται λίστα. 96 00:04:39,250 --> 00:04:42,190 Υπάρχει κάποιος που θέλει να πάρει άρχισε; 97 00:04:42,190 --> 00:04:45,410 >> ΚΟΙΝΟ: Μπορείτε να δημιουργήσετε ένα νέο κόμβος να καλέσετε μέσα στη λίστα; 98 00:04:45,410 --> 00:04:46,410 >> ΧΑΝΑ: Awesome, έτσι θα πάμε να δημιουργήσουμε 99 00:04:46,410 --> 00:04:47,951 ένας νέος κόμβος να ανιχνεύσουμε μέσα από τη λίστα. 100 00:04:47,951 --> 00:04:48,570 Μου αρέσει αυτό. 101 00:04:48,570 --> 00:04:50,799 Θα καλέσω ακριβώς το δείκτη, αν αυτό είναι εντάξει. 102 00:04:50,799 --> 00:04:52,340 Και πού θα πρέπει αρχικά να ξεκινήσει; 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> ΚΟΙΝΟ: Πιθανώς ο επικεφαλής της λίστας. 105 00:04:59,840 --> 00:05:00,590 ΧΑΝΑ: Όμορφη. 106 00:05:00,590 --> 00:05:03,670 Θέλουμε να ξεκινήσουμε από την κεφαλή, η οποία Είπα πρόκειται να αποθηκευτεί στη λίστα. 107 00:05:03,670 --> 00:05:04,170 Awesome. 108 00:05:04,170 --> 00:05:05,220 Μέχρι στιγμής, όλα καλά. 109 00:05:05,220 --> 00:05:08,260 Και τώρα, ο στόχος μας είναι να διέτρεξε τη λίστα 110 00:05:08,260 --> 00:05:12,870 μέχρι να βρούμε τον κόμβο με n αξία που θέλετε να διαγράψετε. 111 00:05:12,870 --> 00:05:13,540 Εντάξει; 112 00:05:13,540 --> 00:05:15,910 >> Έτσι, τώρα είναι το μέρος όπου θέλουμε να μετακινηθείτε μέσα. 113 00:05:15,910 --> 00:05:19,488 Μπορεί κανείς να προτείνει μια τρόπος για να μετακινηθείτε μέσα; 114 00:05:19,488 --> 00:05:20,979 >> ΚΟΙΝΟ: Ένας βρόχος. 115 00:05:20,979 --> 00:05:21,840 >> ΧΑΝΑ: Ένας βρόχος. 116 00:05:21,840 --> 00:05:22,620 Το λατρεύω. 117 00:05:22,620 --> 00:05:25,550 Συγκεκριμένα, μπορούμε να δοκιμάσουμε ένα βρόχο while. 118 00:05:25,550 --> 00:05:30,919 ΟΚ, και γνωρίζουμε ότι έχουμε φτάσει στο τέλος της λίστας μας, όπου αυτό; 119 00:05:30,919 --> 00:05:32,210 ΚΟΙΝΟ: Όταν ο δείκτης είναι άκυρη. 120 00:05:32,210 --> 00:05:33,418 ΧΑΝΑ: Όταν ο δείκτης είναι άκυρη. 121 00:05:33,418 --> 00:05:34,320 Όμορφη, μου αρέσει αυτό. 122 00:05:34,320 --> 00:05:35,110 Εντάξει, δροσερό. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Έτσι, συγγνώμη αν οριοθέτησης τιράντες μου είναι είδος πτώση από την οθόνη. 125 00:05:43,190 --> 00:05:44,090 Μας έφερε πίσω. 126 00:05:44,090 --> 00:05:46,610 Εντάξει, δροσερό. 127 00:05:46,610 --> 00:05:48,690 Ποιο είναι το επόμενο; 128 00:05:48,690 --> 00:05:51,950 >> Έτσι, ξέρουμε ότι θέλετε να διαγράψετε ο κόμβος που έχει τιμή Ν. 129 00:05:51,950 --> 00:05:56,340 Ας βρούμε την περίπτωση όπου θα βρείτε πραγματικά κόμβο μας. 130 00:05:56,340 --> 00:05:57,840 Λοιπόν, πώς θα μπορώ να ελέγξω αυτό; 131 00:05:57,840 --> 00:06:02,210 Θα ήθελα απλώς να πω εάν το δείκτη, και στη συνέχεια, αν μου θέλετε να πάρετε την τιμή από το δείκτη, 132 00:06:02,210 --> 00:06:08,940 Εγώ απλά arrow Ν, ισούται με n, την παράμετρο 133 00:06:08,940 --> 00:06:14,490 ότι δώσαμε σε αυτή τη λειτουργία, η κόμβο που θέλετε να διαγράψετε πραγματικά. 134 00:06:14,490 --> 00:06:17,090 Οποιεσδήποτε ερωτήσεις μέχρι εδώ; 135 00:06:17,090 --> 00:06:18,360 Εντάξει. 136 00:06:18,360 --> 00:06:24,140 Εντάξει, έτσι και τώρα ας συντάξει μια γρήγορη εικόνα στο διοικητικό συμβούλιο, προκειμένου να απεικονίσει αυτό. 137 00:06:24,140 --> 00:06:30,710 >> Οπότε ας πούμε ότι υπάρχει υπέροχη κόμβο μας. 138 00:06:30,710 --> 00:06:34,480 Και αυτό έχει μια τιμή, θα πω μόνο τέσσερα. 139 00:06:34,480 --> 00:06:40,340 Και αυτό υποδεικνύει την επόμενη κόμβος σε συνδεδεμένη λίστα μας. 140 00:06:40,340 --> 00:06:42,220 Και δεν υπάρχει τίποτα πριν από αυτό. 141 00:06:42,220 --> 00:06:45,800 Έτσι έχουμε τα προηγούμενα μας επισημαίνοντας τίποτα. 142 00:06:45,800 --> 00:06:48,110 Σε αυτή την περίπτωση, θα δείχνουν προς τα πίσω. 143 00:06:48,110 --> 00:06:50,960 Εντάξει, ακριβώς τη σύσταση μου συνδεδεμένη λίστα εδώ. 144 00:06:50,960 --> 00:06:53,630 Και έχουμε μια λίστα που δείχνει σε αυτή τη δομή για να αρχίσει με. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Θα αντλήσουν ένα ακόμη για λόγους πληρότητας. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 ΟΚ. 149 00:07:06,117 --> 00:07:07,480 Θα επισημάνω αυτό προς τα εμπρός. 150 00:07:07,480 --> 00:07:09,550 Και εγώ θα επισημάνω ότι ένα πίσω. 151 00:07:09,550 --> 00:07:10,360 Ωχ, συγνώμη. 152 00:07:10,360 --> 00:07:12,710 Ναι, πήρα αυτό προς τα πίσω. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Κάν 'το και πάλι. 155 00:07:16,967 --> 00:07:18,330 Εντάξει, εκεί πηγαίνουμε. 156 00:07:18,330 --> 00:07:19,910 Εντάξει, το πήρα. 157 00:07:19,910 --> 00:07:21,780 Εντάξει, εδώ είναι εικόνα μας. 158 00:07:21,780 --> 00:07:24,860 >> Εντάξει, έτσι θέλουμε να εξετάσουμε δύο περιπτώσεις. 159 00:07:24,860 --> 00:07:27,330 Η πρώτη περίπτωση είναι αν η κόμβο που θέλετε να διαγράψετε 160 00:07:27,330 --> 00:07:29,420 είναι κατά την έναρξη της λίστας μας. 161 00:07:29,420 --> 00:07:34,070 Και στη συνέχεια, η δεύτερη περίπτωση που θέλουμε πρέπει να εξεταστεί είναι αν είναι πουθενά αλλού. 162 00:07:34,070 --> 00:07:37,660 Καταλαβαίνω ότι αυτό είναι ένα εντελώς βρώμικο σχέδιο με όλες διαγραφή μου, 163 00:07:37,660 --> 00:07:40,400 αλλά ελπίζουμε ότι θα προσπαθήσουμε να ξεκαθαρίσουμε αυτό με κάποιο κωδικό. 164 00:07:40,400 --> 00:07:45,450 >> Εντάξει, ας καλύπτουν την περίπτωση όπου βρήκαμε τον κόμβο μας, 165 00:07:45,450 --> 00:07:48,900 και είναι κατά πολύ έναρξη της συνδεδεμένης λίστας μας. 166 00:07:48,900 --> 00:07:50,810 Κάποιος να μου δώσει μια υπόδειξη εδώ ως προς το τι 167 00:07:50,810 --> 00:07:54,684 Θα πρέπει να κάνετε για να αφαιρέσετε πραγματικά κόμβο μας; 168 00:07:54,684 --> 00:07:55,970 Είναι λίγο δύσκολο. 169 00:07:55,970 --> 00:07:56,470 Εντάξει; 170 00:07:56,470 --> 00:07:59,628 >> ΚΟΙΝΟ: Θα πρέπει να λάβει η κόμβο που θα είναι πριν από την 171 00:07:59,628 --> 00:08:01,794 και να καταστεί το σημείο να το ένα που θα ήταν μετά από αυτό, 172 00:08:01,794 --> 00:08:03,004 και να λάβει τον κόμβο που θα ήταν μετά από αυτό και να 173 00:08:03,004 --> 00:08:04,554 το σημείο στον κόμβο πριν από αυτό. 174 00:08:04,554 --> 00:08:05,220 ΧΑΝΑ: Ακριβώς. 175 00:08:05,220 --> 00:08:10,640 Εντάξει, έτσι αυτό είναι η περίπτωση where-- έχουμε δύο περιπτώσεις. 176 00:08:10,640 --> 00:08:14,100 Έχουμε την περίπτωση κατά την οποία το κόμβο που ψάχνουμε για 177 00:08:14,100 --> 00:08:18,270 είναι το μέτωπο της λίστας. 178 00:08:18,270 --> 00:08:23,110 OK, και στη συνέχεια η περίπτωση που που περιγράφονται είναι διαφορετικά, έτσι δεν είναι; 179 00:08:23,110 --> 00:08:24,500 Είναι κάπου αλλού στον κατάλογο. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Έτσι είπε, θα πρέπει να δείτε το προηγούμενο κόμβο, 182 00:08:32,840 --> 00:08:36,500 και να κάνει το προηγούμενο κόμβο σημείο στον επόμενο κόμβο. 183 00:08:36,500 --> 00:08:40,510 Ας πούμε ότι είμαστε προσπαθούν να πάρουν πέντε 184 00:08:40,510 --> 00:08:43,059 σε πολύ βρώμικο σχέδιο μου εδώ. 185 00:08:43,059 --> 00:08:47,530 Θέλουμε να βεβαιωθείτε ότι Τέσσερα σημεία τώρα σε έξι. 186 00:08:47,530 --> 00:08:49,590 Τέσσερα σημεία δίπλα σε έξι. 187 00:08:49,590 --> 00:08:52,150 Και έξι για τα προηγούμενα σημεία σε τέσσερις. 188 00:08:52,150 --> 00:08:53,960 Αυτός είναι ο στόχος μας εδώ, έτσι δεν είναι; 189 00:08:53,960 --> 00:08:56,150 Αυτό είναι αυτό που νομίζετε μόλις είπε εκεί. 190 00:08:56,150 --> 00:08:58,450 >> Εντάξει, ας πάρει το πρώτο κομμάτι. 191 00:08:58,450 --> 00:09:02,300 Ας κάνουμε το έχει η προηγούμενο δείκτη προηγούμενο. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Έτσι, θα πρέπει να επισημάνω σε ό, τι τέσσερις είναι το επόμενο βήμα; 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Ακριβώς, στην περίπτωση αυτή, έξι. 196 00:09:14,900 --> 00:09:18,470 Γι 'αυτό και πρέπει να πούμε δείκτη, το επόμενο. 197 00:09:18,470 --> 00:09:20,600 Εντάξει; 198 00:09:20,600 --> 00:09:21,150 Εντάξει. 199 00:09:21,150 --> 00:09:24,870 Οπότε ας απαλλαγούμε από αυτό το άσχημο εικόνα και προσπαθήστε να σχεδιάσετε μια ελαφρώς καλύτερο ένα. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Έχουμε λίστα κεφάλι μας εδώ. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 Και αυτό δείχνει στον πρώτο κόμβο συνδεδεμένη λίστα μας, που είπαμε είναι τέσσερα. 204 00:09:42,740 --> 00:09:45,620 Εδώ είναι το δεύτερο κόμβο μας, πέντε. 205 00:09:45,620 --> 00:09:47,307 Και τρίτο κόμβο μας, έξι. 206 00:09:47,307 --> 00:09:50,265 Απλά προσπαθεί να επιστήσει την ίδια ακριβώς εικόνα, λίγο πιο καθαρά. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 Εντάξει, έτσι τέσσερα δίπλα επισημαίνει αρχικά σε πέντε. 209 00:09:56,280 --> 00:09:58,620 Πέντε δίπλα σημεία σε έξι. 210 00:09:58,620 --> 00:10:00,170 Έξι είναι τα προηγούμενα σημεία σε πέντε. 211 00:10:00,170 --> 00:10:02,470 Και τα πέντε προηγούμενα σημεία του σε τέσσερις. 212 00:10:02,470 --> 00:10:03,360 Τόσο πολύ καλύτερο! 213 00:10:03,360 --> 00:10:04,530 Εντάξει, δροσερό. 214 00:10:04,530 --> 00:10:07,770 >> Μέχρι τώρα, αυτό που κάναμε μόλις εδώ, αυτή η γραμμή του κώδικα, 215 00:10:07,770 --> 00:10:12,680 που λέει δείκτη προηγούμενο επόμενη, έτσι τι σημαίνει αυτό; 216 00:10:12,680 --> 00:10:17,540 Αυτό σημαίνει ότι αν ψάχνουμε σε πέντε, μεταβείτε στο προηγούμενο κόμβο, 217 00:10:17,540 --> 00:10:21,970 και αυτό είναι το επόμενο βήμα θα πρέπει τώρα σημείο σε πέντε δίπλα. 218 00:10:21,970 --> 00:10:27,840 Έτσι, κατ 'ουσίαν, αυτό που κάνει είναι ότι τη διαγραφή αυτού του βέλους 219 00:10:27,840 --> 00:10:29,640 και καθιστώντας προχωρήσετε κατευθείαν πάνω από πέντε. 220 00:10:29,640 --> 00:10:31,360 Είναι σαφές; 221 00:10:31,360 --> 00:10:33,200 Ξέρω ότι μπορεί να είναι λίγο ατελής. 222 00:10:33,200 --> 00:10:34,480 Βλέπω κάποια νεύματα της κεφαλής. 223 00:10:34,480 --> 00:10:35,390 Αυτό είναι καλό. 224 00:10:35,390 --> 00:10:36,670 Εντάξει, δροσερό. 225 00:10:36,670 --> 00:10:39,590 Τώρα, ποιο είναι το επόμενο βήμα; 226 00:10:39,590 --> 00:10:42,060 >> Έχω να επαναφέρετε την επόμενη. 227 00:10:42,060 --> 00:10:45,297 Τώρα, ποια άλλα βέλος χρειάζεται να αλλάξει; 228 00:10:45,297 --> 00:10:46,130 Αυτός ακριβώς εδώ. 229 00:10:46,130 --> 00:10:47,560 Έξι το προηγούμενο. 230 00:10:47,560 --> 00:10:50,620 Δεν θέλουμε έξι το προηγούμενο να επισημάνω πέντε πια. 231 00:10:50,620 --> 00:10:54,580 Θέλουμε να επισημάνω τέσσερα. 232 00:10:54,580 --> 00:10:56,190 Μήπως η εικόνα νόημα; 233 00:10:56,190 --> 00:10:58,370 Έτσι τώρα μπορούμε να πάρουμε πραγματικά πέντε έξω. 234 00:10:58,370 --> 00:10:59,370 Ας πάρει αυτό το κομμάτι. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Τι πρέπει να κάνω πριν επαναφορά του προηγούμενου έξι σε τέσσερα; 237 00:11:11,180 --> 00:11:14,360 Οποιεσδήποτε ιδέες εκεί; 238 00:11:14,360 --> 00:11:17,369 >> ΚΟΙΝΟ: Ελευθερώστε τον κόμβο μεταξύ τους θέτοντας σε κενή; 239 00:11:17,369 --> 00:11:17,910 ΧΑΝΑ: Cool. 240 00:11:17,910 --> 00:11:21,100 Σίγουρα, ο τελικός στόχος μας είναι πρόκειται να είναι να ελευθερώσει το κόμβο. 241 00:11:21,100 --> 00:11:22,490 Έτσι μπορούμε να κάνουμε αυτό το δικαίωμα εδώ. 242 00:11:22,490 --> 00:11:23,540 Δωρεάν δείκτη. 243 00:11:23,540 --> 00:11:24,810 Απολύτως. 244 00:11:24,810 --> 00:11:29,160 Αλλά ακόμη και πριν από αυτό, ας just-- δεξιά στόχος μας 245 00:11:29,160 --> 00:11:38,730 εδώ είναι να θέσει το δείκτη του επόμενου προηγούμενο ίσο με το δείκτη του προηγούμενου. 246 00:11:38,730 --> 00:11:40,760 Ξέρω ότι αυτό είναι πέφταμε. 247 00:11:40,760 --> 00:11:45,440 Εντάξει, ας take-- δροσερό. 248 00:11:45,440 --> 00:11:46,990 Μπορούν όλοι να δείτε αυτό το συμπέρασμα; 249 00:11:46,990 --> 00:11:47,840 Ή μήπως είναι σούπερ μικροσκοπικό; 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Έτσι, πριν εκτελέσει Αυτή η γραμμή εδώ, θέλουμε 252 00:11:54,300 --> 00:11:58,375 για να βεβαιωθείτε ότι δείκτης επόμενο δεν είναι μηδενική. 253 00:11:58,375 --> 00:12:00,500 Διότι, αν ο δείκτης είναι το επόμενο null, τι είδους σφάλματος 254 00:12:00,500 --> 00:12:02,727 θα πάρω όταν προσπαθώ να αναφορά σε ένα κενό δείκτη; 255 00:12:02,727 --> 00:12:03,560 ΚΟΙΝΟ: ακολ σφάλμα. 256 00:12:03,560 --> 00:12:05,660 ΧΑΝΑ: Ένα σφάλμα SEG, όμορφη. 257 00:12:05,660 --> 00:12:09,690 Εντάξει, οπότε αν αυτό δεν είναι null, τότε μπορούμε να ρυθμίσουμε. 258 00:12:09,690 --> 00:12:14,420 Και έχουμε έξι σημείο και πάλι σε τέσσερα. 259 00:12:14,420 --> 00:12:17,440 Ερωτήσεις μέχρι αυτό το σημείο; 260 00:12:17,440 --> 00:12:17,940 Ναι; 261 00:12:17,940 --> 00:12:19,814 >> ΚΟΙΝΟ: Στο πρώτο σας εάν δήλωση, κάνατε 262 00:12:19,814 --> 00:12:23,817 σημαίνει να έχει το βέλος δίπλα, ή [δεν ακούγεται]; 263 00:12:23,817 --> 00:12:25,150 ΧΑΝΑ: Εννοούσα δείκτη βέλους Ν. 264 00:12:25,150 --> 00:12:30,270 Έτσι, βασικά, αυτό που προσπαθώ να κάνω είναι να λένε, τον τρέχοντα κόμβο που είμαι 265 00:12:30,270 --> 00:12:34,100 επανάληψη πάνω, η τρέχουσα κόμβο που Είμαι κοιτάζοντας, είμαι αποθήκευση στο δείκτη. 266 00:12:34,100 --> 00:12:37,630 Και θέλω να ξέρω δείκτη του τιμή, η οποία στην περίπτωση αυτή είναι n. 267 00:12:37,630 --> 00:12:39,500 Και θέλω να δω, είναι ο κόμβος Ψάχνω 268 00:12:39,500 --> 00:12:42,790 για τον κόμβο είμαι με στόχο να διαγραφεί; 269 00:12:42,790 --> 00:12:47,657 Έτσι, γι 'αυτό έχουμε εδώ δείκτη n. 270 00:12:47,657 --> 00:12:49,857 >> ΚΟΙΝΟ: Έτσι το βέλος πηγαίνει στο n, μπορείτε να ορίσετε την τιμή 271 00:12:49,857 --> 00:12:52,058 και να το αποθηκεύσετε σε έναν κόμβο που ονομάζεται n; 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> ΧΑΝΑ: Έτσι είναι σαν να είμαι που διέρχεται από αυτό το συνδεδεμένη λίστα 274 00:12:58,820 --> 00:13:00,310 και δείχνοντας πέντε. 275 00:13:00,310 --> 00:13:03,600 Αν θέλω να πάρω αυτήν την τιμή, εάν Θέλω να πάρω αυτόν τον αριθμό, 5, 276 00:13:03,600 --> 00:13:06,400 Έχω να κάνω δείκτη βέλους Ν. 277 00:13:06,400 --> 00:13:06,900 Cool; 278 00:13:06,900 --> 00:13:07,900 Ναι. 279 00:13:07,900 --> 00:13:11,200 >> ΚΟΙΝΟ: είναι Ν το όνομα της μεταβλητής; 280 00:13:11,200 --> 00:13:11,700 ΧΑΝΑ: Ναι. 281 00:13:11,700 --> 00:13:14,870 Έτσι, αν αναστρέψετε τα πίσω κατά ένα διαφανειών, n είναι το όνομα 282 00:13:14,870 --> 00:13:18,660 της αξίας εσωτερικό του κόμβος σε συνδεδεμένη λίστα μας. 283 00:13:18,660 --> 00:13:21,510 Και ξέρω ότι μπορεί να πάρει λίγο κάποια σύγχυση, επειδή εμείς επίσης 284 00:13:21,510 --> 00:13:24,680 καλούν το πράγμα ότι θέλουμε να διαγράψετε Ν. 285 00:13:24,680 --> 00:13:26,717 Έτσι, αυτό είναι όπου η μία γραμμή προέρχεται. 286 00:13:26,717 --> 00:13:27,671 Ναι; 287 00:13:27,671 --> 00:13:31,010 >> ΚΟΙΝΟ: Τι έχετε [Δεν ακούγεται] πώς λειτουργούν; 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Ένας δείκτης [δεν ακούγεται]; 290 00:13:35,780 --> 00:13:37,520 >> ΧΑΝΑ: Σίγουρα. 291 00:13:37,520 --> 00:13:40,027 Μιλάτε about-- ποια γραμμή; 292 00:13:40,027 --> 00:13:41,526 ΚΟΙΝΟ: Η τελευταία γραμμή [δεν ακούγεται]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> ΧΑΝΑ: Σίγουρα, εντάξει. 295 00:13:45,250 --> 00:13:48,540 Ας ρίξουμε μια ματιά στην εικόνα προκειμένου να προσπαθήσουμε να εξηγήσουμε αυτό. 296 00:13:48,540 --> 00:13:51,030 Λυπάμαι, για το φωτογραφική μηχανή, το ερώτημα ήταν 297 00:13:51,030 --> 00:13:54,580 μπορούμε να εξηγήσουμε το δείκτη βέλος δίπλα δείκτη προηγούμενο. 298 00:13:54,580 --> 00:14:01,510 Εντάξει, ας πούμε ότι είμαστε σε πέντε και στόχος μας είναι να διαγράψετε πέντε. 299 00:14:01,510 --> 00:14:07,240 Έτσι δείκτης επόμενη, ποια από αυτές τις τρεις κόμβους πάει να μας δώσει; 300 00:14:07,240 --> 00:14:10,840 Αυτό μας φέρνει στο έκτο κόμβο, έτσι δεν είναι; 301 00:14:10,840 --> 00:14:16,490 >> Εντάξει, έτσι και τώρα ζητάμε για τα προηγούμενα τα έξι του. 302 00:14:16,490 --> 00:14:17,060 Εντάξει; 303 00:14:17,060 --> 00:14:20,210 Και είμαστε επαναφορά αυτό να είναι ίσο με τέσσερα, 304 00:14:20,210 --> 00:14:23,214 η οποία έτυχε να είναι πέντε της προηγούμενης. 305 00:14:23,214 --> 00:14:25,180 Ξέρω, είναι σούπερ δύσκολο να παρακολουθείτε. 306 00:14:25,180 --> 00:14:29,286 Θα ήθελα να συστήσω πραγματικά να σας επιστήσω εικόνες εάν έχετε μια ερώτηση σαν αυτό. 307 00:14:29,286 --> 00:14:30,242 Ναι; 308 00:14:30,242 --> 00:14:32,617 >> ΚΟΙΝΟ: είναι ο λόγος που δεν έχουμε ένα [δεν ακούγεται]; 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> ΧΑΝΑ: Ακριβώς. 311 00:14:38,570 --> 00:14:44,800 Άρα το ερώτημα ήταν, γιατί Δεν πρέπει να ελέγξετε εδώ; 312 00:14:44,800 --> 00:14:48,160 Γιατί δεν πρέπει να ελέγξουμε ότι δείκτης προηγούμενα δεν είναι ίση με null; 313 00:14:48,160 --> 00:14:50,070 Και αυτό συμβαίνει γιατί έχουμε ήδη διαχωριστεί 314 00:14:50,070 --> 00:14:52,490 στην περίπτωση που ο δείκτης του από την αρχή. 315 00:14:52,490 --> 00:14:54,060 Πολύ καλή ερώτηση. 316 00:14:54,060 --> 00:14:56,880 Οτιδήποτε άλλο σχετικά με αυτό; 317 00:14:56,880 --> 00:14:57,380 Εντάξει, δροσερό. 318 00:14:57,380 --> 00:14:58,360 Οπότε ας το τελειώσουμε. 319 00:14:58,360 --> 00:14:59,890 Είμαστε σχεδόν εκεί. 320 00:14:59,890 --> 00:15:01,310 >> Έτσι, ό, τι και αν είναι στο κεφάλι; 321 00:15:01,310 --> 00:15:03,360 Τι θα συμβεί αν αντί προσπαθώντας να διαγράψετε πέντε, 322 00:15:03,360 --> 00:15:06,240 πραγματικά θέλαμε να διαγράψει τέσσερα; 323 00:15:06,240 --> 00:15:07,270 Τι θα πρέπει να κάνω; 324 00:15:07,270 --> 00:15:09,610 Λοιπόν, θέλω να επαναφέρετε το κεφάλι μου σε ό, τι; 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Φώναξε έξω; 327 00:15:15,585 --> 00:15:16,710 ΚΟΙΝΟ: Η μία μετά. 328 00:15:16,710 --> 00:15:17,460 ΧΑΝΑ: Όμορφη. 329 00:15:17,460 --> 00:15:26,430 Εντάξει, έτσι θέλουμε λίστα να δείχνει σε ό, τι δείκτη επόμενο κόμβο μας είναι. 330 00:15:26,430 --> 00:15:29,040 Καλή. 331 00:15:29,040 --> 00:15:30,810 Και μόνο για την πληρότητα του χάρη, εμείς θα 332 00:15:30,810 --> 00:15:35,590 θέλετε να ελέγξετε ότι όσο λίστα μας δεν είναι μηδενική, όσο λίστα μας δεν είναι 333 00:15:35,590 --> 00:15:42,730 άδειο, τότε θα θέλετε να ρυθμίσετε προηγούμενο ίσο μας για μηδενική. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Ερώτηση μέχρι στιγμής; 336 00:15:50,230 --> 00:15:53,205 Ένα βήμα μακριά from--; 337 00:15:53,205 --> 00:15:55,530 >> Κοινό: Θα ήταν αν κατάλογος δεν είναι ίση με null; 338 00:15:55,530 --> 00:15:56,950 >> ΧΑΝΑ: Ναι, είσαι εντελώς δεξιά. 339 00:15:56,950 --> 00:15:58,130 Λυπάμαι πολύ. 340 00:15:58,130 --> 00:16:00,040 Είναι η λίστα δεν είναι ίση με null. 341 00:16:00,040 --> 00:16:01,915 Awesome. 342 00:16:01,915 --> 00:16:04,245 Προσπαθώντας να φέρει όλα αυτά στην οθόνη. 343 00:16:04,245 --> 00:16:06,870 Είναι το είδος του πτώση. 344 00:16:06,870 --> 00:16:07,730 Συγγνώμη, παιδιά. 345 00:16:07,730 --> 00:16:11,874 Και τελευταίο αλλά όχι λιγότερο σημαντικό, όλα έχουμε να κάνουμε είναι η επιστροφή. 346 00:16:11,874 --> 00:16:12,840 ΟΚ. 347 00:16:12,840 --> 00:16:15,400 Αυτό ήταν πολύ στριμωγμένος σε πραγματικά γρήγορα. 348 00:16:15,400 --> 00:16:16,800 Πάρτε ένα δευτερόλεπτο για να κοιτάξει πάνω από αυτό. 349 00:16:16,800 --> 00:16:18,216 Πείτε μου αν έχετε οποιεσδήποτε ερωτήσεις. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Ναι; 352 00:16:20,732 --> 00:16:26,940 >> ΚΟΙΝΟ: Εάν η λίστα είναι ο κεφάλι, then-- περιμένετε, Nevermind. 353 00:16:26,940 --> 00:16:27,700 >> ΧΑΝΑ: Εντάξει, καλά. 354 00:16:27,700 --> 00:16:30,987 Έτσι, αυτό είναι αν η λίστα είναι στο κεφάλι, θα το αφαιρέσετε σε ό, τι έχουμε τοποθετηθεί. 355 00:16:30,987 --> 00:16:31,486 Ναι; 356 00:16:31,486 --> 00:16:33,777 >> ΚΟΙΝΟ: Μπορείτε να εξηγήσετε η πρώτη δήλωση αν πάλι; 357 00:16:33,777 --> 00:16:36,149 Εάν ο δείκτης για το η είναι ίσο με ν? 358 00:16:36,149 --> 00:16:36,690 ΧΑΝΑ: Σίγουρα. 359 00:16:36,690 --> 00:16:42,780 Έτσι, ο στόχος μας από όλη αυτή την λειτουργία για να διαγράψετε τον κόμβο που έχει αξία ν. 360 00:16:42,780 --> 00:16:47,460 Έτσι, εάν βρούμε, όπως είμαστε επανάληψη μέσω του καταλόγου μας, 361 00:16:47,460 --> 00:16:51,770 ο κόμβος με τιμή n, που είναι το ένα που θέλετε να διαγράψετε. 362 00:16:51,770 --> 00:16:57,286 Έτσι, το σύνολο της διαγραφής συμβαίνει μέσα από αυτό το μεγάλο if. 363 00:16:57,286 --> 00:16:58,593 Μήπως αυτό έχει νόημα; 364 00:16:58,593 --> 00:16:59,480 Cool. 365 00:16:59,480 --> 00:16:59,990 Ναι; 366 00:16:59,990 --> 00:17:02,864 >> ΚΟΙΝΟ: Ίσως απλά δεν μπορείτε να δείτε αυτό, αλλά δεν θα πρέπει να έχετε επίσης μια γραμμή 367 00:17:02,864 --> 00:17:06,024 για κύλιση μέσα στη λίστα; 368 00:17:06,024 --> 00:17:06,690 ΧΑΝΑ: Awesome. 369 00:17:06,690 --> 00:17:10,896 Ας θέσουμε αυτό το λίγο, και θα ρίξει το δικαίωμα αυτό στο κάτω μέρος. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Ίσως το διοικητικό συμβούλιο θα έχουμε ήταν ελαφρώς καλύτερη ιδέα. 372 00:17:15,490 --> 00:17:17,829 Λοιπόν, πώς θα μπορώ να μετακινήσετε το δείκτη προς τα εμπρός; 373 00:17:17,829 --> 00:17:20,184 >> ΚΟΙΝΟ: Δείκτης ισούται με το δείκτη του συν ένα. 374 00:17:20,184 --> 00:17:21,599 >> ΧΑΝΑ: Όμορφη. 375 00:17:21,599 --> 00:17:25,050 Και αυτό μας επιτρέπει να να συνεχίσει την επανάληψη μέσα. 376 00:17:25,050 --> 00:17:26,251 ΟΚ. 377 00:17:26,251 --> 00:17:27,750 ΚΟΙΝΟ: Δεν θα υπάρξει ένα άλλο; 378 00:17:27,750 --> 00:17:29,028 ΧΑΝΑ: Για άλλη μια φορά; 379 00:17:29,028 --> 00:17:32,444 ΚΟΙΝΟ: Δεν θα υπάρξει ένας άλλος μετά το μεγάλο παλιό, αν 380 00:17:32,444 --> 00:17:35,519 δήλωση [δεν ακούγεται]; 381 00:17:35,519 --> 00:17:36,310 ΧΑΝΑ: Ποιο μέρος; 382 00:17:36,310 --> 00:17:38,350 Λυπάμαι. 383 00:17:38,350 --> 00:17:41,800 >> ΚΟΙΝΟ: Η διάσχιση, δεν θα πρέπει να υπάρχει ένα άλλο; 384 00:17:41,800 --> 00:17:43,550 ΧΑΝΑ: Μπορείτε απολύτως θα μπορούσε να έχει άλλο. 385 00:17:43,550 --> 00:17:46,930 Επειδή έχω δικαίωμα επιστροφής εκεί, δεν χρειάζεται ένα άλλο. 386 00:17:46,930 --> 00:17:48,760 Αλλά ναι, καλή ερώτηση. 387 00:17:48,760 --> 00:17:50,170 Εντάξει, ναι; 388 00:17:50,170 --> 00:17:52,878 ΚΟΙΝΟ: Μπορούμε να σκεφτούμε δείκτη που κινείται μέσα από τη λίστα 389 00:17:52,878 --> 00:17:56,610 ως λήψη επί της αξίας κάθε κόμβου στη λίστα; 390 00:17:56,610 --> 00:18:00,650 Ή θα πρέπει να σκεφτείτε από το ως είδος της εξωτερικής στη λίστα; 391 00:18:00,650 --> 00:18:02,350 >> ΧΑΝΑ: Είτε το ένα είναι ωραία, νομίζω. 392 00:18:02,350 --> 00:18:05,880 Ο τρόπος που μπορώ να φανταστώ είναι Το λέω, εντάξει, είμαι δείκτη. 393 00:18:05,880 --> 00:18:06,520 Και αυτό είναι εγώ. 394 00:18:06,520 --> 00:18:07,150 Αυτό είναι το χέρι μου. 395 00:18:07,150 --> 00:18:09,960 Πάω να επισημάνω στο διαφορετικό τα πράγματα που θέλω να μετακινηθείτε μέσα. 396 00:18:09,960 --> 00:18:12,270 Πρώτον, Πάω να επισημάνω με τον επικεφαλής της λίστας. 397 00:18:12,270 --> 00:18:14,144 Και αυτό μου λέει είμαι πρόκειται να επισημάνω τέσσερα. 398 00:18:14,144 --> 00:18:18,060 Και έτσι μου, που είναι εξωτερικές στη λίστα, Μπορώ να επισημάνω σε κάθε ένα από αυτά τα στοιχεία. 399 00:18:18,060 --> 00:18:19,520 Γι 'αυτό και θεωρώ τον εαυτό μου ως δείκτη. 400 00:18:19,520 --> 00:18:21,645 ΚΟΙΝΟ: Έτσι, όταν διαγράφετε ένα από αυτά τα στοιχεία, 401 00:18:21,645 --> 00:18:23,404 μπορείτε να διαγράψετε τον εαυτό σας, να το πω έτσι. 402 00:18:23,404 --> 00:18:24,070 ΧΑΝΑ: Ακριβώς. 403 00:18:24,070 --> 00:18:25,920 Έτσι, μπορείτε να διαγράψετε το πράγμα είστε δείχνοντας. 404 00:18:25,920 --> 00:18:28,340 Έτσι, στο παράδειγμα που είδαμε όπου είμαστε 405 00:18:28,340 --> 00:18:31,670 προσπαθώντας να διαγράψετε πέντε, όταν είμαι επισημαίνοντας πέντε, 406 00:18:31,670 --> 00:18:34,200 Θέλω να διαγράψετε το πράγμα είμαι δείχνοντας. 407 00:18:34,200 --> 00:18:35,870 Ακριβώς δεξιά. 408 00:18:35,870 --> 00:18:36,577 Ναι; 409 00:18:36,577 --> 00:18:39,410 ΚΟΙΝΟ: Έχουμε λάβει μέριμνα για το περίπτωση όπου το η δεν είναι στη λίστα; 410 00:18:39,410 --> 00:18:40,460 ΧΑΝΑ: Αν το n δεν είναι στη λίστα; 411 00:18:40,460 --> 00:18:43,501 Το μόνο που θα συμβεί είναι ότι είστε πρόκειται να επαναλάβει μέσω και επαναλέγω 412 00:18:43,501 --> 00:18:47,616 μέσα, και στη συνέχεια, θα πάμε για να φτάσετε στο δείκτη είναι μηδενική, 413 00:18:47,616 --> 00:18:48,990 και στη συνέχεια θα πάμε να γίνουν. 414 00:18:48,990 --> 00:18:50,812 >> ΚΟΙΝΟ: Έτσι, δεν έχουμε να επιστρέψει τίποτα; 415 00:18:50,812 --> 00:18:51,520 ΧΑΝΑ: Θα μπορούσαμε. 416 00:18:51,520 --> 00:18:54,500 Ο τρόπος που αν ορίζεται αυτό λειτουργία, θα ήθελα απλώς να πω ότι επιστρέφει 417 00:18:54,500 --> 00:18:55,770 ακυρώνονται ανεξάρτητα. 418 00:18:55,770 --> 00:18:58,360 Αλλά θα μπορούσαμε να έχουμε κάτι όπως την επιστροφή του έναν ακέραιο, 419 00:18:58,360 --> 00:19:00,920 και έχουν επιστρέψει αρνητικό 1 αν αποτύχει. 420 00:19:00,920 --> 00:19:03,070 Κάτι σαν αυτό. 421 00:19:03,070 --> 00:19:04,494 Ερωτήσεις with-- ναι; 422 00:19:04,494 --> 00:19:05,410 ΚΟΙΝΟ: [δεν ακούγεται]; 423 00:19:05,410 --> 00:19:05,993 ΧΑΝΑ: Συγνώμη; 424 00:19:05,993 --> 00:19:07,419 ΚΟΙΝΟ: [δεν ακούγεται]; 425 00:19:07,419 --> 00:19:07,960 ΧΑΝΑ: Σίγουρα. 426 00:19:07,960 --> 00:19:11,730 Έτσι, αυτό είναι το actual-- φορά έχουμε γίνεται όλη αυτή η δουλειά του κινείται 427 00:19:11,730 --> 00:19:16,530 Όλα αυτά τα βέλη γύρω, ολόκληρη μας Στόχος ήταν να απαλλαγούμε από τον κόμβο 428 00:19:16,530 --> 00:19:18,230 ότι ψάχνουμε για. 429 00:19:18,230 --> 00:19:21,610 Έτσι, στην περίπτωση αυτή, ελευθερώνοντας δείκτη, αν είμαι επισημαίνοντας πέντε, 430 00:19:21,610 --> 00:19:24,670 είναι σαν τη διαγραφή αυτού του μεσαίου κόμβου. 431 00:19:24,670 --> 00:19:27,250 Αυτό είναι το ελεύθερο μέρος του δείκτη. 432 00:19:27,250 --> 00:19:29,090 Νόημα αυτό; 433 00:19:29,090 --> 00:19:31,390 >> ΚΟΙΝΟ: Έτσι καν σκεφτεί κάνατε δεν [δεν ακούγεται]; 434 00:19:31,390 --> 00:19:36,060 >> ΧΑΝΑ: Γι 'αυτό και ανέλαβε στην αρχή είχαμε κάποια λίστα που ήταν already-- 435 00:19:36,060 --> 00:19:37,220 είχαν βάλει μαζί. 436 00:19:37,220 --> 00:19:39,761 Έτσι, προκειμένου να κατασκευαστεί αυτό κατάλογος, που must've [δεν ακούγεται]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Cool. 439 00:19:42,750 --> 00:19:44,490 Οτιδήποτε άλλο με αυτό; 440 00:19:44,490 --> 00:19:46,386 Ναι; 441 00:19:46,386 --> 00:19:49,204 >> ΚΟΙΝΟ: Τι θα συμβεί αν η λίστα δεν ισούται με τη μηδενική γραμμή; 442 00:19:49,204 --> 00:19:49,704 [Δεν ακούγεται]; 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 ΧΑΝΑ: Δικαίωμα εδώ; 445 00:19:53,080 --> 00:19:53,840 Κοινό: Ναι. 446 00:19:53,840 --> 00:19:57,370 ΧΑΝΑ: Εντάξει, όλα τα κάνω είναι ότι είμαι απλώς να διασφαλίσουμε 447 00:19:57,370 --> 00:20:03,250 ότι, προτού προσπαθήσω να λίστα dereference, Πριν προσπαθήσουμε να έχετε πρόσβαση στο προηγούμενο, 448 00:20:03,250 --> 00:20:07,210 Θέλω να βεβαιωθείτε ότι δεν είναι null έτσι δεν παίρνω ένα σφάλμα SEG. 449 00:20:07,210 --> 00:20:08,400 Cool. 450 00:20:08,400 --> 00:20:10,820 >> Εντάξει, ξέρω ότι αυτό ήταν αρκετά πολλά για να περάσει. 451 00:20:10,820 --> 00:20:14,950 Έτσι, αυτή η διαφάνεια θα είναι στη διάθεση σας. 452 00:20:14,950 --> 00:20:17,341 Έτσι, μπορείτε να πάτε μέσα από αυτό με περισσότερες λεπτομέρειες. 453 00:20:17,341 --> 00:20:17,841 Ναι; 454 00:20:17,841 --> 00:20:19,749 >> ΚΟΙΝΟ: Γιατί η λίστα [δεν ακούγεται]; 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 ΧΑΝΑ: Σίγουρα. 457 00:20:24,670 --> 00:20:27,390 Έτσι λίστα σημεία πραγματικά να Το στοιχείο αυτό ακριβώς εδώ, 458 00:20:27,390 --> 00:20:29,200 Το πρώτο στοιχείο στη λίστα. 459 00:20:29,200 --> 00:20:30,748 Έτσι, δεν μπορεί να έχει ένα προηγούμενο. 460 00:20:30,748 --> 00:20:31,736 Ναι; 461 00:20:31,736 --> 00:20:35,194 >> ΚΟΙΝΟ: Μήπως το σημείο δείκτη στην ίδια διεύθυνση στη μνήμη; 462 00:20:35,194 --> 00:20:38,404 Μήπως να δείχνουν το ίδιο διεύθυνση στη μνήμη ως κόμβο 463 00:20:38,404 --> 00:20:40,640 ότι είναι επισημαίνοντας; 464 00:20:40,640 --> 00:20:43,865 >> ΧΑΝΑ: Ναι, επισημαίνει σε αυτόν τον κόμβο στη μνήμη. 465 00:20:43,865 --> 00:20:47,190 >> ΚΟΙΝΟ: Δεξιά, έτσι όταν [δεν ακούγεται]; 466 00:20:47,190 --> 00:20:50,580 >> ΧΑΝΑ: Κατά μία έννοια, ναι. 467 00:20:50,580 --> 00:20:51,280 ΟΚ. 468 00:20:51,280 --> 00:20:52,997 Εντάξει, ας προχωρήσουμε μαζί με αυτό. 469 00:20:52,997 --> 00:20:55,330 Και αν έχετε περισσότερες ερωτήσεις, κολλήσει γύρω στο τέλος, 470 00:20:55,330 --> 00:20:57,130 και μπορούμε να πάμε μέσα από αυτό και πάλι. 471 00:20:57,130 --> 00:20:58,120 Εντάξει, δροσερό. 472 00:20:58,120 --> 00:21:00,490 Τώρα, έχουμε την ευκαιρία να προχωρήσουμε να hash πίνακες, προσπαθεί, 473 00:21:00,490 --> 00:21:04,940 και τα δέντρα, τα οποία έχεις σούπερ εξοικειωθούν με π-set πέντε, ορθογράφο. 474 00:21:04,940 --> 00:21:11,020 >> Έτσι hash πίνακας είναι απλά ένας συστοιχία με μεμονωμένα συνδεδεμένες λίστες 475 00:21:11,020 --> 00:21:14,050 ή διπλά συνδεδεμένες λίστες έρχεται από αυτό. 476 00:21:14,050 --> 00:21:16,380 Έτσι έχουμε κάποιο είδος συνειρμική σειρά. 477 00:21:16,380 --> 00:21:21,280 Και πώς ξέρουμε ποια από αυτά τα συστοιχίες κουβάδες για να μπει, 478 00:21:21,280 --> 00:21:24,137 χρησιμοποιούμε μια συνάρτηση κατακερματισμού. 479 00:21:24,137 --> 00:21:26,470 Έτσι, σε αυτή την περίπτωση, μπορεί κανείς μάντεψε τη συνάρτηση κατακερματισμού 480 00:21:26,470 --> 00:21:28,636 θα πρέπει να βασίζεται μόνο σε ορισμένα της εισόδου και εξόδου; 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> ΚΟΙΝΟ: αριθμός γράμμα της αλφαβήτου. 483 00:21:33,194 --> 00:21:33,860 ΧΑΝΑ: Ακριβώς. 484 00:21:33,860 --> 00:21:36,160 Τους βάζει μόνο σε αλφαβητική σειρά. 485 00:21:36,160 --> 00:21:39,280 Ό, τι αρχίζει με ένα Α τοποθετείται εντός του πρώτου κάδου. 486 00:21:39,280 --> 00:21:43,340 Τα πάντα με μια Β έχει προστεθεί στο δευτερόλεπτα κουβάς, ούτω καθεξής, και ούτω καθεξής. 487 00:21:43,340 --> 00:21:45,620 Φοβερό, εντάξει. 488 00:21:45,620 --> 00:21:48,980 Και μια συνάρτηση κατακερματισμού είναι οποιαδήποτε συνάρτηση που παίρνει σε μια λέξη 489 00:21:48,980 --> 00:21:51,910 και θα σας πω τι κάδος ανήκει σε. 490 00:21:51,910 --> 00:21:55,150 Έτσι οποία η είσοδος σε μας σειρά ανήκει στην. 491 00:21:55,150 --> 00:21:58,080 >> Έτσι, κάθε φορά που δίνω μου Συνάρτηση κατακερματισμού μια λέξη, 492 00:21:58,080 --> 00:22:00,660 θα πρέπει να μου πείτε το ίδιο τοποθετήστε κάθε φορά. 493 00:22:00,660 --> 00:22:03,270 Έτσι, αν χρησιμοποιήσουμε τη συνάρτηση κατακερματισμού από την προηγούμενη διαφάνεια 494 00:22:03,270 --> 00:22:05,950 όπου είμαστε διαλογή από το το πρώτο γράμμα της αλφαβήτου, 495 00:22:05,950 --> 00:22:08,230 κάθε φορά που δίνω μου hash λειτουργία "μήλο" 496 00:22:08,230 --> 00:22:10,180 θα πρέπει πάντα να μου δώσει πίσω το 0. 497 00:22:10,180 --> 00:22:12,890 Έτσι, αν έχω ένα μήλο να θέσει σε πίνακα κατακερματισμού μου, 498 00:22:12,890 --> 00:22:17,700 αν δώσω "μήλο" στο συνάρτηση κατακερματισμού μου, θα έπρεπε να λέει, πάει να το θέσω σε κάδο 0. 499 00:22:17,700 --> 00:22:19,980 Αν Ψάχνω για μια μήλο στον πίνακα κατακερματισμού μου 500 00:22:19,980 --> 00:22:24,340 και λέω, όπου επικρατεί μήλο ζωντανά, ρωτάτε συνάρτηση κατακερματισμού σας. 501 00:22:24,340 --> 00:22:26,900 Και λέει, πάει στον κάδο 0. 502 00:22:26,900 --> 00:22:29,150 Εντάξει; 503 00:22:29,150 --> 00:22:32,660 Ερωτήσεις με συναρτήσεις κατακερματισμού; 504 00:22:32,660 --> 00:22:34,570 Awesome. 505 00:22:34,570 --> 00:22:37,320 >> Εδώ είναι μια ελαφρώς πιο λεπτομερή εξήγηση 506 00:22:37,320 --> 00:22:39,570 από ό, τι μια συνάρτηση κατακερματισμού μπορεί να μοιάζει. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Εντάξει. 509 00:22:42,960 --> 00:22:45,960 Τώρα, το πρόβλημα με χασίς λειτουργίες είναι σε έναν ιδανικό κόσμο, 510 00:22:45,960 --> 00:22:48,870 θα είχαμε μόνο μία πράγμα σε κάθε κάδο. 511 00:22:48,870 --> 00:22:50,900 Αλλά στην πραγματικότητα, δεν υπάρχει όχι μία μόνο λέξη 512 00:22:50,900 --> 00:22:54,280 που ξεκινά με Α δεν υπάρχει μόνο μια λέξη που αρχίζει με Β Έτσι, 513 00:22:54,280 --> 00:22:56,960 στην περίπτωση αυτή, αν ξαφνικά να πάρει "μούρο" 514 00:22:56,960 --> 00:22:58,710 και θέλουμε να το βάλετε σε πίνακα κατακερματισμού μας, 515 00:22:58,710 --> 00:23:03,640 και βλέπουμε, OH, όχι, μπανάνα είναι ήδη εκεί, τι θα κάνουμε; 516 00:23:03,640 --> 00:23:05,900 >> Λοιπόν, έχουμε δύο επιλογές. 517 00:23:05,900 --> 00:23:07,990 Η πρώτη επιλογή είναι γραμμική ανίχνευση, η οποία 518 00:23:07,990 --> 00:23:11,100 σημαίνει απλά πηγαίνετε να βρείτε Η επόμενη άδειο κουβά. 519 00:23:11,100 --> 00:23:14,100 Πηγαίνετε να βρείτε στην επόμενη κενή καταχώρηση πίνακα. 520 00:23:14,100 --> 00:23:15,750 Και απλά βάλτε "μούρο" εκεί. 521 00:23:15,750 --> 00:23:18,880 Έτσι ξέρω ότι είναι υποτίθεται ότι πάει με μπανάνα σε ένα κουβά. 522 00:23:18,880 --> 00:23:22,155 Αλλά μόλις το βάλετε στο κάδο τρία, επειδή κάδο τρία είναι άδειο. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Μια άλλη επιλογή είναι πιθανώς τι θα εφαρμόσουν 525 00:23:26,680 --> 00:23:29,220 σε π-set σας, όπου μπορείτε είχε Ξεχωριστές αλυσίδες. 526 00:23:29,220 --> 00:23:33,990 Έτσι, κάθε κάδων σας, καθένα από τα στοιχεία πίνακα σας, 527 00:23:33,990 --> 00:23:38,410 κατέχει όχι μόνο ένα λόγια, αλλά στην πραγματικότητα κατέχει ένα δείκτη σε μια λίστα λέξεων. 528 00:23:38,410 --> 00:23:41,880 Έτσι ώστε, αν είχατε μπανάνα στον πίνακα κατακερματισμού σας 529 00:23:41,880 --> 00:23:44,740 και ξαφνικά ήθελε για να προσθέσετε το μούρο, κανένα πρόβλημα. 530 00:23:44,740 --> 00:23:51,110 Απλά προσθέστε μούρων στο τέλος, ή να η αρχή της συνδεδεμένης λίστας σας. 531 00:23:51,110 --> 00:23:54,040 Εντάξει, φοβερό. 532 00:23:54,040 --> 00:23:58,490 Ερωτήσεις με χασίς πίνακες πριν προχωρήσουμε σε; 533 00:23:58,490 --> 00:23:59,850 >> Εντάξει. 534 00:23:59,850 --> 00:24:01,070 Δέντρα και προσπαθεί. 535 00:24:01,070 --> 00:24:07,980 Εντάξει, έτσι αυτό ήταν μια άλλη επιλογή για την εφαρμογή του λεξικού. 536 00:24:07,980 --> 00:24:09,100 Θα μπορούσε να γίνει μια δοκιμή. 537 00:24:09,100 --> 00:24:13,420 Γι 'αυτό είναι ένα ιδιαίτερο είδος του δέντρου που συμπεριφέρεται σαν ένα πίνακα κατακερματισμού πολυεπίπεδη. 538 00:24:13,420 --> 00:24:16,862 Έτσι θα δείτε την εικόνα όπου έχετε έναν πίνακα που 539 00:24:16,862 --> 00:24:19,320 επισημαίνει σε μια δέσμη των συστοιχιών ότι το σημείο σε μια δέσμη των συστοιχιών 540 00:24:19,320 --> 00:24:20,390 ότι το σημείο σε μια δέσμη των συστοιχιών. 541 00:24:20,390 --> 00:24:23,140 Και θα δούμε ακριβώς τι θα μοιάζει με μια μελλοντική διαφάνεια. 542 00:24:23,140 --> 00:24:26,070 Και γενικότερα, ένα δέντρο είναι απλά οποιαδήποτε δομή δεδομένων 543 00:24:26,070 --> 00:24:29,710 στο οποίο τα δεδομένα είναι οργανώνονται σε κάποια ιεραρχία. 544 00:24:29,710 --> 00:24:32,610 Έτσι, όταν είδαμε έχουμε κάποιο είδος της κατανόησης 545 00:24:32,610 --> 00:24:36,130 του ανωτάτου επιπέδου, ένα επόμενο επίπεδο, ένα επόμενο επίπεδο, το επόμενο επίπεδο. 546 00:24:36,130 --> 00:24:39,690 Έτσι, αυτό είναι ίσως το πιο ξεκάθαρο με μερικά ειδικά παραδείγματα. 547 00:24:39,690 --> 00:24:40,880 Έτσι, εδώ είναι το δέντρο μας. 548 00:24:40,880 --> 00:24:42,970 Μπορείτε να δείτε ότι έχει συγκεκριμένα επίπεδα 549 00:24:42,970 --> 00:24:45,480 ότι θα ξεκινήσει με αυτόν τον κόμβο ρίζα, ένα. 550 00:24:45,480 --> 00:24:47,640 Και μπορούμε να πάμε κάτω από το δέντρο μας. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Ένα δυαδικό δέντρο είναι μια συγκεκριμένο είδος δέντρου. 553 00:24:53,910 --> 00:24:56,770 Και η μόνη προδιαγραφή για ένα δυαδικό δένδρο 554 00:24:56,770 --> 00:25:01,130 είναι ότι κάθε κόμβος διαθέτει το πολύ σε δύο φύλλα. 555 00:25:01,130 --> 00:25:03,960 Έτσι δεν πρόκειται να δείτε οποιαδήποτε του εν λόγω κόμβοι έχουν τρία ή τέσσερα 556 00:25:03,960 --> 00:25:06,880 ή κάποιο άλλο αριθμό φύλλων. 557 00:25:06,880 --> 00:25:11,310 Και τότε ακόμα πιο συγκεκριμένα είναι ένα δυαδικό δένδρο αναζήτησης 558 00:25:11,310 --> 00:25:18,010 όπου κάθε κόμβος στα αριστερά του κόμβος πρόκειται να έχει μια τιμή μικρότερη. 559 00:25:18,010 --> 00:25:21,180 Και κάθε τιμή για το το δικαίωμα πρόκειται να είναι μεγαλύτερο. 560 00:25:21,180 --> 00:25:26,900 Έτσι, αν δείτε 44, είναι η ρίζα μας, προς τα αριστερά, 11, 22, και 33 561 00:25:26,900 --> 00:25:28,940 απέχουν λιγότερο από ρίζα μας. 562 00:25:28,940 --> 00:25:33,890 Και στα δεξιά είναι όλα αριθμούς bigger-- 66, 55, και 77. 563 00:25:33,890 --> 00:25:37,380 Και αυτή η ιδιότητα ισχύει σε κάθε επίπεδο του δέντρου. 564 00:25:37,380 --> 00:25:42,690 >> Έτσι, όταν κατεβαίνουμε 22, 11, και 33, 11 ακόμα 565 00:25:42,690 --> 00:25:46,950 είναι μικρότερη από 22 και 33 είναι μεγαλύτερο από 22. 566 00:25:46,950 --> 00:25:50,160 Και αυτό καθιστά ευκολότερη την αναζήτηση γιατί αν ψάχνουμε για έναν αριθμό, 567 00:25:50,160 --> 00:25:53,877 γνωρίζουμε ποια ακριβώς υποκατάστημα για να ακολουθήσουν τα κάτω. 568 00:25:53,877 --> 00:25:56,210 Έτσι, αυτό θα πρέπει να σας υπενθυμίσω ένα λίγο δυαδική αναζήτηση. 569 00:25:56,210 --> 00:25:56,967 Ναι; 570 00:25:56,967 --> 00:25:58,835 >> ΚΟΙΝΟ: Έτσι, όταν είστε περιγράφοντας δυαδικό, 571 00:25:58,835 --> 00:26:00,587 είπατε ότι έχει το πολύ δύο φύλλα; 572 00:26:00,587 --> 00:26:01,170 ΧΑΝΑ: MM-HM. 573 00:26:01,170 --> 00:26:02,580 ΚΟΙΝΟ: Θα μπορούσε να έχει λιγότερο; 574 00:26:02,580 --> 00:26:03,121 ΧΑΝΑ: Ναι. 575 00:26:03,121 --> 00:26:06,720 Ας πούμε, για παράδειγμα, μπορείτε δεν έχει ακόμη ορισμένα πράγματα 576 00:26:06,720 --> 00:26:11,791 και δεν μπορούσε να καλύψει όλες σας φύλλα, είναι μια χαρά, αν κάποιος έχει ένα. 577 00:26:11,791 --> 00:26:12,290 Εντάξει; 578 00:26:12,290 --> 00:26:12,789 Awesome. 579 00:26:12,789 --> 00:26:15,930 Οποιεσδήποτε άλλες ερωτήσεις σχετικά με τα δέντρα; 580 00:26:15,930 --> 00:26:16,670 ΟΚ. 581 00:26:16,670 --> 00:26:20,110 >> Επιστροφή στην προσπαθειών μας ως μιλούσα περίπου λίγο νωρίτερα, 582 00:26:20,110 --> 00:26:23,900 πώς έχουμε αυτές τις συστοιχίες πολλαπλών επιπέδων. 583 00:26:23,900 --> 00:26:26,280 Έτσι, σε αυτή την περίπτωση, θα ξεκινήσει στην κορυφή. 584 00:26:26,280 --> 00:26:29,030 Και μπορούμε να ακολουθήσουμε οποιαδήποτε δεδομένη λέξη προς τα κάτω. 585 00:26:29,030 --> 00:26:30,780 Ας πούμε ότι θέλαμε να ψάξουν για Τούρινγκ. 586 00:26:30,780 --> 00:26:34,380 Ξεκινάμε Τ, να ακολουθήσει τα κάτω σε μια σειρά που περιέχει U, 587 00:26:34,380 --> 00:26:37,350 και ακολουθούν τα κάτω μέχρι να φτάσουν αυτό το μικρό δέλτα που 588 00:26:37,350 --> 00:26:39,060 μας λέει, ναι, έχετε βρει μια λέξη. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Σαφή για προσπαθεί; 591 00:26:44,120 --> 00:26:48,138 Οτιδήποτε για να πάω εκεί; 592 00:26:48,138 --> 00:26:48,908 Ναι; 593 00:26:48,908 --> 00:26:51,866 ΚΟΙΝΟ: Μήπως το σύμβολο του δέλτα πρέπει να καταλαμβάνουν χώρο στο εσωτερικό της δοκιμή; 594 00:26:51,866 --> 00:26:54,532 ΧΑΝΑ: Ναι, γι 'αυτό δεν αναγκαστικά χρειάζεται καν να είναι ένα δέλτα. 595 00:26:54,532 --> 00:26:57,760 Αλλά χρειαζόμαστε κάποιο τρόπο να πείτε μας computer-- συγγνώμη, 596 00:26:57,760 --> 00:27:01,130 έτσι ώστε να γνωρίζουμε ότι TUR δεν είναι μια λέξη. 597 00:27:01,130 --> 00:27:04,180 Γιατί, ας πούμε, δεν είχαμε η έννοια αυτή του δέλτα, η έννοια αυτή 598 00:27:04,180 --> 00:27:09,850 συγχαρητήρια, βρήκατε μια λέξη, θα περάσει και να επαναλάβει Τ-U-R, 599 00:27:09,850 --> 00:27:11,300 και στη συνέχεια να πω, φοβερό, το βρήκα! 600 00:27:11,300 --> 00:27:12,670 Πρέπει να είναι μια λέξη. 601 00:27:12,670 --> 00:27:13,720 Αλλά δεν είναι πραγματικά. 602 00:27:13,720 --> 00:27:15,310 Θέλουμε ολόκληρη Turing να είναι μια λέξη. 603 00:27:15,310 --> 00:27:17,760 Έτσι πρέπει να έχουμε κάτι στο τέλος που λέει, συγχαρητήρια, 604 00:27:17,760 --> 00:27:19,051 έχετε βρει μια νόμιμη λέξη. 605 00:27:19,051 --> 00:27:21,680 ΚΟΙΝΟ: Έτσι, αν είχε σαν 26 γράμματα του αλφαβήτου, 606 00:27:21,680 --> 00:27:24,560 Θα έχετε πραγματικά 27 πλήκτρα σε δοκιμή σας; 607 00:27:24,560 --> 00:27:26,010 >> ΧΑΝΑ: Awesome, ναι. 608 00:27:26,010 --> 00:27:28,210 Έτσι, στην πραγματικότητα, νομίζω ότι θα είναι στην επόμενη διαφάνεια. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Όπου και αν έχετε ένα κόμβος στην προσπάθεια σας, είστε 611 00:27:32,880 --> 00:27:35,800 πρόκειται να έχει 27 παιδιά αντί για 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Όλες οι ερωτήσεις με αυτό; 614 00:27:40,050 --> 00:27:40,550 Ναι; 615 00:27:40,550 --> 00:27:44,569 ΚΟΙΝΟ: Γιατί προσπαθεί αναλάβουν τόσο πολύ χώρο [δεν ακούγεται] as you go? 616 00:27:44,569 --> 00:27:47,629 Γιατί θεωρείται ότι είναι [δεν ακούγεται]; 617 00:27:47,629 --> 00:27:48,170 ΧΑΝΑ: Σίγουρα. 618 00:27:48,170 --> 00:27:48,790 Ας πάμε πίσω. 619 00:27:48,790 --> 00:27:52,350 Το ερώτημα είναι, γιατί είναι προσπαθεί τόσο πολύ μεγαλύτερο 620 00:27:52,350 --> 00:27:54,620 από κάτι σαν ένα πίνακα κατακερματισμού. 621 00:27:54,620 --> 00:27:57,790 Έτσι, για κάθε ένα από αυτά τα επίπεδα, ακόμα και αν δεν είστε προσοχή εδώ, 622 00:27:57,790 --> 00:28:01,250 πρέπει να έχετε όλες τις 26 χαρακτήρες. 623 00:28:01,250 --> 00:28:04,420 Και ο λόγος που δεν μπορείτε λένε, ω, αλλά όπως και για Τούρινγκ, εγώ 624 00:28:04,420 --> 00:28:07,570 Δεν χρειάζεται να έχουν οποιαδήποτε από αυτές ίδια πράγματα σχετικά με το επίπεδο του U. Καλά, 625 00:28:07,570 --> 00:28:11,390 αν ξαφνικά θέλετε να προσθέσετε κάτι που ήταν σαν Τ-Η, 626 00:28:11,390 --> 00:28:14,800 που θα πρέπει να έχουν το Δυνατότητα προσθήκης αυτή τη λέξη. 627 00:28:14,800 --> 00:28:17,330 Έτσι, για κάθε γράμμα, θα πάμε για να έχουν 628 00:28:17,330 --> 00:28:19,730 να έχετε μια δέσμη των συστοιχίες έρχεται από αυτό. 629 00:28:19,730 --> 00:28:24,060 Έτσι, μπορείτε να δείτε πώς θα παίρνατε πραγματικά μεγάλη, πολύ γρήγορα. 630 00:28:24,060 --> 00:28:26,560 Οποιεσδήποτε άλλες ερωτήσεις; 631 00:28:26,560 --> 00:28:28,980 Εντάξει. 632 00:28:28,980 --> 00:28:29,832 Ναι; 633 00:28:29,832 --> 00:28:33,210 >> ΚΟΙΝΟ: Όταν προσπαθεί ταχύτερα από τους πίνακες κατακερματισμού; 634 00:28:33,210 --> 00:28:36,280 >> ΧΑΝΑ: Όταν προσπαθεί ταχύτερα από τους πίνακες κατακερματισμού; 635 00:28:36,280 --> 00:28:39,120 Έτσι, αν είχατε ένα πραγματικά κακή συνάρτηση κατακερματισμού. 636 00:28:39,120 --> 00:28:41,840 Ας πούμε ότι ήμουν όπως, εδώ είναι συνάρτηση κατακερματισμού σας. 637 00:28:41,840 --> 00:28:43,660 Δεν έχει σημασία ποια λέξη μπορείτε να μου δώσετε, είμαι πάντα 638 00:28:43,660 --> 00:28:47,740 πρόκειται να το βάλετε στο φάσμα 0. 639 00:28:47,740 --> 00:28:52,000 Και έτσι καταλήγουμε με απλά βάζοντας πάντα σε ένα μεγάλο μακρύ συνδεδεμένη λίστα. 640 00:28:52,000 --> 00:28:58,740 Και έτσι μια αναζήτηση χρόνο θα πάρει στη χειρότερη περίπτωση n αν είναι στο τέλος της λίστας μας. 641 00:28:58,740 --> 00:29:03,150 Με τη δοκιμή, εμείς απλά πρέπει να επαναλάβει μέσα από τα γράμματα της λέξης. 642 00:29:03,150 --> 00:29:07,080 Έτσι, ακόμη και αν προστεθεί ένα μάτσο περισσότερες λέξεις για να προσπαθήσουμε μας, 643 00:29:07,080 --> 00:29:09,620 δεν θα μας πάρει πια να βρούμε μια συγκεκριμένη λέξη. 644 00:29:09,620 --> 00:29:11,750 >> Το μόνο που έχουμε να κάνουμε είναι, για παράδειγμα, στην περίπτωση αυτή, 645 00:29:11,750 --> 00:29:17,170 ας πούμε ψάχνουμε για ζουμ, θα πρέπει ακριβώς να μετακινηθείτε πάνω 646 00:29:17,170 --> 00:29:19,840 Ζ-Ο-Ο-Μ, τέσσερα γράμματα. 647 00:29:19,840 --> 00:29:22,250 Έτσι, αυτό είναι μόνο η το μήκος της λέξης ζουμ. 648 00:29:22,250 --> 00:29:25,400 Δεν έχει σημασία πόσες περισσότερες λέξεις που βάζουμε σε αυτό το προσπαθήσουμε. 649 00:29:25,400 --> 00:29:30,225 Μπορούμε πάντα να το πάρει σε αυτά τα τέσσερα βήματα. 650 00:29:30,225 --> 00:29:31,215 Awesome. 651 00:29:31,215 --> 00:29:32,205 Ναι; 652 00:29:32,205 --> 00:29:34,185 >> ΚΟΙΝΟ: Έτσι [δεν ακούγεται] είναι ένας πίνακας, σωστά; 653 00:29:34,185 --> 00:29:35,322 >> ΧΑΝΑ: MM-HM. 654 00:29:35,322 --> 00:29:37,155 ΚΟΙΝΟ: Αν είστε ψάχνει για [δεν ακούγεται], 655 00:29:37,155 --> 00:29:40,929 θα πρέπει να περάσουν από σειρά σας για να βρείτε [δεν ακούγεται]; 656 00:29:40,929 --> 00:29:41,470 ΧΑΝΑ: Σίγουρα. 657 00:29:41,470 --> 00:29:44,000 ΚΟΙΝΟ: Θεωρεί ότι δεν λαμβάνουν περισσότερο χρόνο; 658 00:29:44,000 --> 00:29:46,370 ΧΑΝΑ: Αν Πάω να λένε ότι η σειρά μου είναι πάντα 659 00:29:46,370 --> 00:29:49,250 πρόκειται να είναι Α, Β, C, D, Ε, ΣΤ, Ζ, μπλα μπλα μπλα, 660 00:29:49,250 --> 00:29:51,630 Έτσι, αν πάντα ξέρω ότι είναι με την ίδια ακριβώς σειρά, 661 00:29:51,630 --> 00:29:53,880 αν πάντα ξέρω ότι είναι με αλφαβητική σειρά, 662 00:29:53,880 --> 00:29:57,860 Θέλω μόνο να πω είναι O αριθμός έτσι και έτσι στο αλφάβητο. 663 00:29:57,860 --> 00:29:59,620 Απλά άλμα σε αυτό το μέρος. 664 00:29:59,620 --> 00:30:01,860 Επειδή θυμάμαι, με συστοιχίες, μπορούμε να έχουμε πρόσβαση 665 00:30:01,860 --> 00:30:06,590 οποιοδήποτε στοιχείο αυτού του πίνακα σε συνεχή χρόνο, αν ξέρουμε πού ψάχνουμε. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Ναι; 668 00:30:09,580 --> 00:30:12,005 >> ΚΟΙΝΟ: Την προηγούμενη σύρετε [δεν ακούγεται] 27, 669 00:30:12,005 --> 00:30:14,430 αλλά 26 για την πρώτη. 670 00:30:14,430 --> 00:30:15,400 >> ΧΑΝΑ: Συγνώμη; 671 00:30:15,400 --> 00:30:18,800 >> ΚΟΙΝΟ: δεν είναι η πρώτη ένα 0, οπότε δεν θα ήταν 26; 672 00:30:18,800 --> 00:30:24,900 >> ΧΑΝΑ: Σίγουρα, έτσι ώστε όταν λέμε 27, ότι είναι πρόκειται να μας δώσει δείκτες από 0 έως 26. 673 00:30:24,900 --> 00:30:28,220 Αλλά αν πραγματικά μετράνε εκείνα που βρίσκονται εκτός, πρόκειται να είναι 27. 674 00:30:28,220 --> 00:30:30,007 Καλή ερώτηση. 675 00:30:30,007 --> 00:30:30,590 Οτιδήποτε άλλο; 676 00:30:30,590 --> 00:30:31,200 Ναι; 677 00:30:31,200 --> 00:30:34,420 >> ΚΟΙΝΟ: Έτσι είναι οι προσπάθειες πιο αργή από ό, τι πίνακες κατακερματισμού; 678 00:30:34,420 --> 00:30:37,920 >> ΧΑΝΑ: Σουτ πρόκειται να είναι, σε θεωρία, πιο γρήγορα από τους πίνακες κατακερματισμού 679 00:30:37,920 --> 00:30:39,760 αλλά καταλαμβάνουν περισσότερο μνήμη. 680 00:30:39,760 --> 00:30:40,534 Ναι; 681 00:30:40,534 --> 00:30:41,450 ΚΟΙΝΟ: [δεν ακούγεται]; 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> ΧΑΝΑ: Λυπάμαι, εγώ δεν μάθατε. 684 00:30:47,484 --> 00:30:48,400 ΚΟΙΝΟ: [δεν ακούγεται]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0 έως 25 σας δίνει 26. 687 00:30:54,100 --> 00:30:56,958 >> ΧΑΝΑ: 0 έως 25 θα να σας δώσω 26, δεξιά. 688 00:30:56,958 --> 00:30:58,457 >> ΚΟΙΝΟ: Και τότε [δεν ακούγεται]. 689 00:30:58,457 --> 00:30:59,040 ΧΑΝΑ: Δεξιά. 690 00:30:59,040 --> 00:31:04,760 Έτσι, ο αριθμός είμαστε διευκρινίζοντας είναι ο αριθμός των πράγματα στη σειρά μας. 691 00:31:04,760 --> 00:31:07,260 Έτσι, αν έχουμε 27, είναι πρόκειται να μας δώσει το 0 692 00:31:07,260 --> 00:31:10,620 έως 26, η οποία θα δώσει εμάς δωματίου για, στην περίπτωση αυτή, 693 00:31:10,620 --> 00:31:12,770 Δεν είμαι συμπεριλαμβανομένων μια απόστροφο. 694 00:31:12,770 --> 00:31:17,040 Έτσι παίρνουμε από 0 έως 25 ετών είναι τα πρώτα 26 γράμματα του αλφαβήτου, 695 00:31:17,040 --> 00:31:18,990 ή όλα τα 26 γράμματα της αλφαβήτου. 696 00:31:18,990 --> 00:31:21,190 Και στη συνέχεια, ότι η τελευταία πράγμα, κατά την είσοδό τους 26, είναι 697 00:31:21,190 --> 00:31:24,598 πρόκειται να είναι ο έλεγχος σήμα, ή το δέλτα. 698 00:31:24,598 --> 00:31:26,960 Οτιδήποτε άλλο; 699 00:31:26,960 --> 00:31:29,130 Awesome. 700 00:31:29,130 --> 00:31:30,020 Ξεχάσατε τον χώρο μου. 701 00:31:30,020 --> 00:31:31,020 Εντάξει, δροσερό. 702 00:31:31,020 --> 00:31:33,240 >> Γι 'αυτό και ήδη έθιξε αυτό. 703 00:31:33,240 --> 00:31:37,430 Αλλά το μεγάλο εμπόριο off μεταξύ προσπαθεί και πίνακες κατακερματισμού 704 00:31:37,430 --> 00:31:39,720 είναι ότι προσπαθεί να παρέχει, σε Θεωρητικά, η συνεχής αναζήτηση 705 00:31:39,720 --> 00:31:42,890 φορές, αλλά χρησιμοποιούν ένα σωρό μνήμη. 706 00:31:42,890 --> 00:31:46,495 Εντάξει, τώρα έχουμε ελαφρώς λιγότερο περίπλοκες δομές, 707 00:31:46,495 --> 00:31:49,640 και εμείς θα πρέπει να γίνει με C, και εμείς θα προχωρήσουμε δεξιά κατά μήκος. 708 00:31:49,640 --> 00:31:51,930 >> Έτσι, στοίβες, είδαμε αυτό σε διάλεξη όπου μπορείτε 709 00:31:51,930 --> 00:31:55,020 έχουν κάτι σαν μια στοίβα των δίσκων όπου 710 00:31:55,020 --> 00:31:57,330 το τελευταίο πράγμα που βάζετε στη στοίβα πρόκειται 711 00:31:57,330 --> 00:31:59,500 να είναι το πρώτο πράγμα που απογειώνονται. 712 00:31:59,500 --> 00:32:02,880 Έτσι, αυτό είναι αυτό που καθορίζει πραγματικά μια στοίβα είναι ότι το τελευταίο πράγμα που θα θέσει σε 713 00:32:02,880 --> 00:32:06,080 πρόκειται να είναι η πρώτη πράγμα που απογειώνονται. 714 00:32:06,080 --> 00:32:09,279 Και η ορολογία που χρησιμοποιούμε αν θα πάμε να βάλουμε κάτι, 715 00:32:09,279 --> 00:32:12,070 αν θα πάμε να προσθέσετε κάτι στο στοίβα μας, λέμε ότι πιέζει. 716 00:32:12,070 --> 00:32:14,970 Και αν πάρουμε κάτι μακριά, καλούμε βρεθώ. 717 00:32:14,970 --> 00:32:17,080 Και αν θέλουμε να εφαρμόσουν μια στοίβα, εμείς 718 00:32:17,080 --> 00:32:20,660 πρέπει να είναι σίγουρος για να παρακολουθείτε τόσο το μέγεθος και η ικανότητα. 719 00:32:20,660 --> 00:32:24,940 Έτσι ώστε ο συνολικός αριθμός των στοιχείων μπορούμε κατέχει και ο σημερινός αριθμός των στοιχείων 720 00:32:24,940 --> 00:32:27,880 ότι διεξάγουμε. 721 00:32:27,880 --> 00:32:29,885 >> Και πολύ Ομοίως, έχουμε ουρές. 722 00:32:29,885 --> 00:32:34,510 Και η μόνη διαφορά είναι αντί με στοίβες, 723 00:32:34,510 --> 00:32:37,630 είπαμε το τελευταίο πράγμα που έχουμε θέσει για Είναι το πρώτο πράγμα που απογειώνονται. 724 00:32:37,630 --> 00:32:40,940 Έτσι, με ουρές, η το πρώτο πράγμα που θα τεθεί σε 725 00:32:40,940 --> 00:32:43,129 πρόκειται να είναι ο πρώτο πράγμα που βγάζουμε. 726 00:32:43,129 --> 00:32:45,420 Έτσι, αυτό είναι σαν αν είστε πραγματικά παράταξη σε ένα κατάστημα 727 00:32:45,420 --> 00:32:48,140 και εσείς να βοηθήσει, τότε το πρώτο πρόσωπο στη γραμμή 728 00:32:48,140 --> 00:32:50,880 θα πρέπει να είναι το πρώτο πρόσωπο για να βοηθήσει. 729 00:32:50,880 --> 00:32:52,220 Έτσι, αυτό θα ήταν μια ουρά. 730 00:32:52,220 --> 00:32:55,880 >> Πρέπει, λοιπόν, να παρακολουθείτε το μέγεθος, την ικανότητα, και το κεφάλι αφού είμαστε 731 00:32:55,880 --> 00:33:01,130 πρόκειται να πάρει ο καθένας από το μέτωπο του καταλόγου αντί της πλάτης. 732 00:33:01,130 --> 00:33:03,480 Ερωτήσεις σχετικά με αυτό; 733 00:33:03,480 --> 00:33:06,330 Οποιεσδήποτε ερωτήσεις C που σας ενοχλεί; 734 00:33:06,330 --> 00:33:09,590 Δομές δεδομένων, καμιά από αυτές τις διασκεδαστικά πράγματα; 735 00:33:09,590 --> 00:33:10,530 Εντάξει, δροσερό. 736 00:33:10,530 --> 00:33:14,120 Γι 'αυτό και θα το παραδώσει στο Alison να άλμα σε λίγο περισσότερο προγραμματισμό. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Ω, θα δούμε. 738 00:33:15,965 --> 00:33:17,370 Θα δούμε πόσο καλά κάνω εδώ. 739 00:33:17,370 --> 00:33:21,410 Εντάξει, Πάω να προσπαθήσουμε και να πετάξει μέσα αυτά τα πράγματα, ρε παιδιά. 740 00:33:21,410 --> 00:33:24,540 Hannah πήγε πολύ σε βάθος για όλα τα πράγματά της. 741 00:33:24,540 --> 00:33:26,900 Πάω να προσπαθήσουμε να δώσουμε σας μια γρήγορη επισκόπηση έκρηξη 742 00:33:26,900 --> 00:33:31,290 έτσι ώστε να μπορέσουμε να φτάσουμε στην Davin με όλα οι διασκέδαση JavaScript και ασφάλεια πράγματα 743 00:33:31,290 --> 00:33:33,380 ότι ίσως πράγματι θέλω να ακούσω περισσότερα σχετικά. 744 00:33:33,380 --> 00:33:36,600 >> Εντάξει, όπως είπε ο Χάνα, αν έχετε οποιεσδήποτε ερωτήσεις, 745 00:33:36,600 --> 00:33:39,170 Πάω πολύ γρήγορα, παρακαλώ, επιτρέψτε μου να ξέρω. 746 00:33:39,170 --> 00:33:42,114 Θα απαντήσει σε ερωτήσεις, όπως απαιτείται. 747 00:33:42,114 --> 00:33:45,280 Έτσι για να ξεκινήσει, θα πάμε για να ξεκινήσει με ίσως ένα από τα πρώτα πράγματα 748 00:33:45,280 --> 00:33:48,730 μάθατε με το web προγραμματισμού, τα δικαιώματα. 749 00:33:48,730 --> 00:33:52,720 Έτσι chmod, εσείς πρέπει να πάει εκμαγεία σε αυτό με όλο το Διαδίκτυο 750 00:33:52,720 --> 00:33:54,870 προγραμματισμού που έχετε έχει κάνει τον τελευταίο καιρό. 751 00:33:54,870 --> 00:33:57,320 Είναι βασικά ακριβώς μια εντολή ότι αλλάζει τα δικαιώματα 752 00:33:57,320 --> 00:34:00,779 ή τα δικαιώματα πρόσβασης των αντικειμένων του συστήματος αρχείων μας. 753 00:34:00,779 --> 00:34:02,570 Φυσικά, στην πραγματικότητα δείτε αυτά, αν είστε 754 00:34:02,570 --> 00:34:04,910 έχει κανένα πρόβλημα με αυτά κατά τη διάρκεια πρόβλημα σύνολα σας, 755 00:34:04,910 --> 00:34:11,460 μπορεί να έχετε χρησιμοποιήσει ls -l, η οποία είναι μεγάλη, να πάρει το είδος άποψη του, όπως αυτό, 756 00:34:11,460 --> 00:34:14,209 όπου μπορείτε πραγματικά να δείτε όλα τα δικαιώματα για ένα αρχείο. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> Και πραγματικά, είμαστε ακριβώς πρόκειται να πάει μέσω της αρκετά γρήγορα μόλις αρκετά 759 00:34:20,732 --> 00:34:21,940 πολύ τι σημαίνει το καθένα από αυτά. 760 00:34:21,940 --> 00:34:24,481 Έτσι έχουμε d εδώ, η οποία ακριβώς σημαίνει για τον κατάλογο. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Προφανώς εδώ, βλέπουμε rwx, η οποία είναι αναγνώσιμη, εγγράψιμο, και εκτελέσιμο. 763 00:34:31,739 --> 00:34:37,090 Αυτά θα μπορούσαν επίσης να παρασταθούν ως bits, η οποία θα μπει στην επόμενη σελίδα. 764 00:34:37,090 --> 00:34:40,699 Έτσι, κάθε τριάδα που είδαμε εδώ, γι 'αυτό είναι τρεις τριάδες. 765 00:34:40,699 --> 00:34:48,120 Έχουμε RWX, r τίποτα x και r x τίποτα γι 'αυτό το πρώτο αρχείο. 766 00:34:48,120 --> 00:34:49,690 Είναι αυτή η γενική δομή. 767 00:34:49,690 --> 00:34:50,940 >> Έτσι έχουμε κάποιο κατάλογο. 768 00:34:50,940 --> 00:34:53,999 Έχουμε κάποια ομάδα χρηστών με αυτά τα δικαιώματα. 769 00:34:53,999 --> 00:34:57,040 Κάποια ομάδα που έχει αυτά τα δικαιώματα, και έναν κόσμο που έχει άδεια. 770 00:34:57,040 --> 00:34:59,420 Μπορείτε να τα φανταστείτε σαν μια τριάδα. 771 00:34:59,420 --> 00:35:01,130 Μπορείτε να σκεφτείτε αυτά τα τρία κομμάτια. 772 00:35:01,130 --> 00:35:04,060 Έτσι, μπορούν να κρατήσουν τις τιμές οπουδήποτε από μηδέν έως 773 00:35:04,060 --> 00:35:07,350 έως 7, η οποία είναι γιατί μερικές φορές Σας είχαμε να κάνουμε chmod 774 00:35:07,350 --> 00:35:17,510 600 αντί του chmod rw οτιδήποτε άλλο. 775 00:35:17,510 --> 00:35:19,170 Θα μπει σε ένα παράδειγμα εκεί. 776 00:35:19,170 --> 00:35:24,260 Αλλά βασικά, μπορείτε να σκεφτείτε από αυτά, είτε απλά rwx, 777 00:35:24,260 --> 00:35:28,520 ή μπορείτε να σκεφτείτε τους όπως μερικοί αριθμός όπου αυτό πρώτη εδώ 778 00:35:28,520 --> 00:35:31,480 παριστά έναν αριθμό μεταξύ 0 και 7, αυτή η δεύτερη 779 00:35:31,480 --> 00:35:33,970 παριστά έναν αριθμό μεταξύ 0 και 7, και το τρίτο 780 00:35:33,970 --> 00:35:38,245 αντιπροσωπεύει έναν αριθμό μεταξύ 0 και 7, εντάξει; 781 00:35:38,245 --> 00:35:42,700 >> r έχει τιμή 4. w έχει μία τιμή από 2, και το χ 782 00:35:42,700 --> 00:35:49,230 έχει τιμή 1, η οποία είναι ο λόγος για αυτό άδεια εδώ θα chmod 700. 783 00:35:49,230 --> 00:35:53,520 Επειδή στην προκειμένη περίπτωση εδώ, αυτό θα λέει έχουν το πρώτο bit εκεί γυρνάει στο. 784 00:35:53,520 --> 00:35:55,380 Έτσι έχουμε 4 για ανάγνωση. 785 00:35:55,380 --> 00:35:58,730 Το δεύτερο κομμάτι γυρνάει στο για W, η οποία είναι 2, έτσι και τώρα έχουμε 6. 786 00:35:58,730 --> 00:36:02,070 Και το τρίτο κομμάτι γυρνάει σε για το Χ, το οποίο είναι 1, έτσι ώστε να πάρει επτά. 787 00:36:02,070 --> 00:36:04,820 Και φυσικά, η ομάδα μας και ο κόσμος μας είναι κάθε 0. 788 00:36:04,820 --> 00:36:07,770 Έτσι, αυτό είναι επίσης η ισοδύναμο chmod 700. 789 00:36:07,770 --> 00:36:12,081 Και εγώ θα προσπαθήσω σίγουρα να κατανοήσουν τη χαρτογράφηση μεταξύ αυτών. 790 00:36:12,081 --> 00:36:14,080 Δεν είμαι σίγουρος αν έχει καταλήξουμε σε ένα κουίζ πριν, 791 00:36:14,080 --> 00:36:18,590 αλλά θα ήταν μια ερώτηση που ήθελα να ρωτήσω. 792 00:36:18,590 --> 00:36:22,110 >> Λίγο ακόμα και θα περαιτέρω σε chmod εδώ, εδώ 793 00:36:22,110 --> 00:36:27,730 είναι η πολύ γενική δομή μιας κλήσης chmod. 794 00:36:27,730 --> 00:36:29,500 Έτσι, φυσικά, έχουμε chmod εδώ. 795 00:36:29,500 --> 00:36:34,410 Οι αναφορές, τι αναφέρεται αυτό να είναι που δίνουμε αυτά τα δικαιώματα σε 796 00:36:34,410 --> 00:36:36,570 ή που θα βασίζεται σε αυτές τις δικαιώματα μακριά από. 797 00:36:36,570 --> 00:36:44,330 Έτσι έχουμε ένα εδώ στα δικαιώματα, όπως δώσαμε σας chmod a Plus X, 798 00:36:44,330 --> 00:36:45,440 όπως θα δούμε σύντομα. 799 00:36:45,440 --> 00:36:48,460 ένα μόνο σημαίνει δώσει αυτές τις συγκεκριμένες δικαιώματα σε όλους. 800 00:36:48,460 --> 00:36:49,600 Δώστε τους σε όλους. 801 00:36:49,600 --> 00:36:55,370 Έτσι, θα μπορούσε κάλλιστα να έχει U Plus X ή ζ συν x ή o Plus X ή πολλαπλές 802 00:36:55,370 --> 00:36:55,870 αυτών. 803 00:36:55,870 --> 00:36:59,280 Έτσι ώστε το πρώτο μέρος είναι πάντοτε πρόκειται να είναι αναφορές. 804 00:36:59,280 --> 00:37:03,220 Ποιος δίνουμε αυτά τα δικαιώματα σε, ή ποιοι είμαστε εμείς τη λήψη τους μακριά από? 805 00:37:03,220 --> 00:37:04,850 >> Το δεύτερο είναι ο φορέας εκμετάλλευσης. 806 00:37:04,850 --> 00:37:07,350 Έτσι, εσείς έχετε ασχοληθεί περισσότερο με συν. 807 00:37:07,350 --> 00:37:12,140 Αυτό δίνει δικαιώματα όποιος κι αν είσαι να τους δίνει, 808 00:37:12,140 --> 00:37:14,840 ενώ μείον, λογικά, να τους απομακρύνει. 809 00:37:14,840 --> 00:37:16,880 Έτσι, τίποτα δεν είναι πολύ φοβερό εκεί. 810 00:37:16,880 --> 00:37:23,060 Και τότε τρόπων μεταφοράς είναι αυτό που μιλήσαμε με την ανάγνωση, τη γραφή, ή εκτέλεσης. 811 00:37:23,060 --> 00:37:29,070 Έτσι, ένα συν x σημαίνει να δώσει εκτελέσιμο δικαιώματα σε όλους. 812 00:37:29,070 --> 00:37:33,430 Και στη συνέχεια, φυσικά, επί της οποίας συγκεκριμένο αρχείο ή κατάλογο. 813 00:37:33,430 --> 00:37:33,980 Εντάξει; 814 00:37:33,980 --> 00:37:36,010 Όλοι καλό με chmod; 815 00:37:36,010 --> 00:37:37,850 Δεν είναι και τόσο άσχημα; 816 00:37:37,850 --> 00:37:42,417 >> Εντάξει, έτσι HTML, κάποιος από εσάς είναι αρκετά παλιά to-- MySpace ηλικία; 817 00:37:42,417 --> 00:37:44,750 Έστειλα αυτό το τμήμα μου, και κυριολεκτικά μισοί από τους ανθρώπους 818 00:37:44,750 --> 00:37:45,790 με κοίταξε σαν να ήμουν τρελός. 819 00:37:45,790 --> 00:37:47,498 Και ήμουν όπως, παιδιά, Δεν είμαστε τόσο παλιά. 820 00:37:47,498 --> 00:37:48,910 Έλα. 821 00:37:48,910 --> 00:37:53,360 Έτσι HyperText Markup Language, Είναι ειλικρινά μόνο ένας τρόπος για να 822 00:37:53,360 --> 00:37:57,990 για να εμφανίσετε ορισμένα πράγματα στο διαδίκτυο. 823 00:37:57,990 --> 00:37:59,210 Γι 'αυτό είναι μια γλώσσα σήμανσης. 824 00:37:59,210 --> 00:38:00,640 Δεν είναι μια scripting γλώσσα. 825 00:38:00,640 --> 00:38:02,160 Δεν υπάρχει καμία λογική σε αυτό. 826 00:38:02,160 --> 00:38:05,710 Είναι απλά να αλλάξει ο τρόπο κάτι εμφανίζεται. 827 00:38:05,710 --> 00:38:07,670 Εντάξει, έτσι ώστε να είναι ένα σημαντικό διάκριση που κάνει. 828 00:38:07,670 --> 00:38:12,030 Θεωρείται μια γλώσσα σήμανσης, δεν είναι μια scripting γλώσσα. 829 00:38:12,030 --> 00:38:15,100 >> Έτσι, εδώ έχουμε ετικέτες HTML μας. 830 00:38:15,100 --> 00:38:20,390 Σε αυτή τη διαφάνεια είναι ίσως το μεγαλύτερο μέρος της αυτοί που θα πρέπει να είναι εξοικειωμένοι με 831 00:38:20,390 --> 00:38:22,390 και είναι πραγματικά άνετα. 832 00:38:22,390 --> 00:38:25,700 Έτσι, προφανώς, έχουμε ετικέτα HTML μας, η οποία 833 00:38:25,700 --> 00:38:29,930 ορίζει ότι τα πάντα στο μεταξύ αυτών των δύο θα είναι HTML. 834 00:38:29,930 --> 00:38:33,070 Έχουμε κάποια σύνδεση, η οποία προφανώς θα σας δώσει 835 00:38:33,070 --> 00:38:34,990 ένα σύνδεσμο προς μια εξωτερική ιστοσελίδα. 836 00:38:34,990 --> 00:38:37,520 Κάποια τίτλο, μέσα στο κεφάλι μας εδώ. 837 00:38:37,520 --> 00:38:40,020 Και έχουμε το σώμα μας με Η1, η οποία είναι μια κεφαλίδα, 838 00:38:40,020 --> 00:38:42,260 γι 'αυτό θα το κάνουν όμορφο και τολμηρές και μεγαλύτερα. 839 00:38:42,260 --> 00:38:46,040 Και στη συνέχεια, έχουμε κάποια ρ, η οποία είναι μια παράγραφο. 840 00:38:46,040 --> 00:38:49,000 Θα πρέπει πιθανώς να ξέρετε και να είναι εξοικειωμένος με τα πράγματα 841 00:38:49,000 --> 00:38:54,030 όπως το πώς μπορείτε να εισαγάγετε μια εικόνα, είναι Υπάρχουν άλλες κατηγορίες επικεφαλίδα; 842 00:38:54,030 --> 00:38:57,240 Σίγουρα θα είναι άνετα με div. 843 00:38:57,240 --> 00:39:00,840 Έτσι, αυτές έχουν την πλειοψηφία των ετικετών ότι θα πρέπει να είναι εξοικειωμένοι με. 844 00:39:00,840 --> 00:39:04,370 Αλλά φυσικά, όπως με τα πάντα σε CS 50, ο κατάλογος δεν είναι εξαντλητικός. 845 00:39:04,370 --> 00:39:08,200 Έτσι, βεβαιωθείτε ότι έχετε ανανεώσει τις επ 'αυτού. 846 00:39:08,200 --> 00:39:13,260 >> CSS, έτσι CSS, αν κάποιος από εσάς να παρακολουθήσετε σεμινάριο μου από πριν από δύο εβδομάδες, 847 00:39:13,260 --> 00:39:16,250 Είναι πραγματικά μόνο ένας τρόπος για το στυλ της ιστοσελίδας σας; 848 00:39:16,250 --> 00:39:18,950 Εντάξει, έτσι έχουμε κάποια γλώσσα σήμανσης. 849 00:39:18,950 --> 00:39:23,220 HTML, που φροντίζει μόνο του κειμένου και όπου θα μπορούσε να είναι στη σελίδα. 850 00:39:23,220 --> 00:39:25,760 Αλλά CSS είναι πραγματικά αυτό που κάνει είναι αρκετά. 851 00:39:25,760 --> 00:39:30,690 Θα μπορούσατε να έχετε αυτά στο HTML σας αρχείων, αλλά όπως εμείς θα μιλήσουμε αργότερα, 852 00:39:30,690 --> 00:39:32,660 Είμαι σχεδόν σίγουρος ότι θα μπορούσε είναι η επόμενη διαφάνεια, το 853 00:39:32,660 --> 00:39:35,620 αποτελεί κοινή πρακτική, και στην πραγματικότητα πρακτική που πραγματικά ενθαρρύνει, 854 00:39:35,620 --> 00:39:40,670 για να κρατήσει τους χώρισαν όταν εμείς μιλήσουμε για MVC και όλο αυτό το παράδειγμα. 855 00:39:40,670 --> 00:39:42,490 Αυτό είναι πραγματικά αυτό που την τροφοδοτεί. 856 00:39:42,490 --> 00:39:46,110 >> Έτσι, CSS είναι απλά ένας τρόπος για να κάνει τα πράγματα φαίνονται αρκετά. 857 00:39:46,110 --> 00:39:50,500 Τα πράγματα εδώ, όπως σώματος και #title και .info, 858 00:39:50,500 --> 00:39:54,340 αυτές ονομάζονται επιλογείς και τι κάνουν είναι να επιλέξετε συγκεκριμένα πράγματα 859 00:39:54,340 --> 00:39:59,260 μέσα σε αρχείο HTML και εφαρμόζονται ανεξάρτητα από το ύφος, 860 00:39:59,260 --> 00:40:04,090 ανεξάρτητα από το είδος των πραγμάτων που θέλετε, για το συγκεκριμένο στοιχείο της ιστοσελίδας σας 861 00:40:04,090 --> 00:40:04,590 σελίδα. 862 00:40:04,590 --> 00:40:08,820 Εδώ λοιπόν, έχουμε ένα χρώμα του φόντου και το χρώμα 863 00:40:08,820 --> 00:40:12,450 και μια οικογένεια γραμματοσειρών που είναι να εφαρμόζεται σε ό, τι είναι στο σώμα. 864 00:40:12,450 --> 00:40:15,530 Έτσι, αν κοιτάξαμε πίσω εδώ, αυτό δεν θα ισχύει για τον τίτλο. 865 00:40:15,530 --> 00:40:22,340 Θα ισχύει μόνο για ό, τι είναι σε αυτούς τους επιλογείς σώμα, εντάξει; 866 00:40:22,340 --> 00:40:25,250 >> Με τον τίτλο εδώ, αυτό είναι πρόκειται να είναι το ίδιο πράγμα, 867 00:40:25,250 --> 00:40:28,410 το χρώμα του κειμένου είναι μπλε θα είναι μόνο 868 00:40:28,410 --> 00:40:33,870 να επηρεάσει ό, τι είναι μέσα Οι επιλογείς τίτλο. 869 00:40:33,870 --> 00:40:36,580 Καθώς και πληροφορίες εδώ, το κείμενο θα είναι ροζ, 870 00:40:36,580 --> 00:40:38,600 Ό, τι και πληροφορίες, που είναι ακριβώς εδώ. 871 00:40:38,600 --> 00:40:40,860 Έτσι, το μόνο πράγμα που θα είναι ροζ σε αυτή τη σελίδα 872 00:40:40,860 --> 00:40:44,100 είναι σήμερα, Δευτέρα, 17 Νοεμβρίου 2014. 873 00:40:44,100 --> 00:40:48,770 Εντάξει, έτσι CSS είναι απλά ένας τρόπος για να έχουν περισσότερο έλεγχο over-- ναι; 874 00:40:48,770 --> 00:40:51,850 >> ΚΟΙΝΟ: Γιατί έχετε να χρησιμοποιήσετε το χασίς με τίτλο; 875 00:40:51,850 --> 00:40:55,170 >> ΧΑΝΑ: Επόμενη διαφάνεια, υπόσχομαι! 876 00:40:55,170 --> 00:40:56,810 Θα φτάσουμε εκεί. 877 00:40:56,810 --> 00:40:59,830 Έτσι, αυτό είναι ο λόγος που πρέπει να χρησιμοποιήσετε hash. 878 00:40:59,830 --> 00:41:03,429 Έτσι επιλογείς αναλάβει τρεις κύριες μορφές που μιλάμε σε σας παιδιά για. 879 00:41:03,429 --> 00:41:05,595 Θα fyou θέλετε να μάθετε περισσότερα, υπάρχει αφθονία εκεί έξω. 880 00:41:05,595 --> 00:41:07,540 Υπάρχει μεγάλη τεκμηρίωση CSS. 881 00:41:07,540 --> 00:41:12,680 Υπάρχει ένα όνομα ετικέτας, η οποία έχει να κάνει με απλά φυσιολογικό ετικέτες σας σε μορφή HTML. 882 00:41:12,680 --> 00:41:17,210 Έτσι, h1, σ, div, Η2, αυτά τα είδη των πραγμάτων. 883 00:41:17,210 --> 00:41:20,320 Και μπορούμε να αναφέρουμε μόνο αυτά που είναι. 884 00:41:20,320 --> 00:41:22,650 Έτσι, όπως βλέπουμε εδώ με το σώμα, είναι μια κανονική ετικέτα. 885 00:41:22,650 --> 00:41:26,660 Έτσι, μπορούμε να βάλουμε μόνο το σώμα, όταν μιλάμε στο αρχείο CSS μας. 886 00:41:26,660 --> 00:41:29,730 >> Με τον τίτλο, το σύνολο λόγος που έχουν αυτό το κλειδί είναι ότι έχουμε ό, τι είναι 887 00:41:29,730 --> 00:41:31,010 θεωρείται ένα αναγνωριστικό. 888 00:41:31,010 --> 00:41:35,400 Έτσι, η ταυτότητα θα πρέπει πάντα να είναι μοναδικό στην HTML σελίδα σας 889 00:41:35,400 --> 00:41:37,930 έτσι ώστε όταν είστε αναφέρεται σε αυτό, σας 890 00:41:37,930 --> 00:41:41,990 ξέρετε ότι είστε μόνο αναφορά σε ένα συγκεκριμένο πράγμα. 891 00:41:41,990 --> 00:41:46,270 Έτσι, σε αυτή την περίπτωση εδώ, με μας h1 εδώ, CS 50 συνεδρία κριτική, 892 00:41:46,270 --> 00:41:47,810 έχουμε ένα αναγνωριστικό του τίτλου. 893 00:41:47,810 --> 00:41:54,280 Έτσι, προκειμένου να αναφερθώ μόνο σε ότι κομμάτι της HTML μας, κάνουμε έναν τίτλο κατακερματισμού. 894 00:41:54,280 --> 00:41:58,080 Ακριβώς με τη Σύμβαση, οι ταυτότητες που ορίζονται με ένα hash μπροστά τους. 895 00:41:58,080 --> 00:42:01,650 Κατά τον ίδιο τρόπο, βλέπουμε Πληροφορίες εδώ είναι μια κατηγορία. 896 00:42:01,650 --> 00:42:06,070 Και έτσι τάξη με CSS είναι ορίζεται ως μια τελεία κατηγορία 897 00:42:06,070 --> 00:42:08,895 ή dot όποια και αν είναι η κατηγορία. 898 00:42:08,895 --> 00:42:10,850 Έτσι, σε αυτή την περίπτωση εδώ, είναι πληροφορίες. 899 00:42:10,850 --> 00:42:13,090 >> Έτσι, το παίρνω πίσω. 900 00:42:13,090 --> 00:42:16,200 Και οι δύο θα είναι ροζ για CSS μας εδώ 901 00:42:16,200 --> 00:42:18,430 επειδή και οι δύο έχουν μια κατηγορία πληροφορίες. 902 00:42:18,430 --> 00:42:23,070 Και στο CSS αρχείο μας, έχουμε ορίσει ότι τίποτα με μια κατηγορία πληροφοριών 903 00:42:23,070 --> 00:42:24,120 θα πρέπει να είναι ροζ. 904 00:42:24,120 --> 00:42:25,968 Μήπως αυτό έχει νόημα; 905 00:42:25,968 --> 00:42:27,435 Ναι; 906 00:42:27,435 --> 00:42:30,731 >> ΚΟΙΝΟ: Αν ήταν να κάνει πάντα στο λευκό σώμα, 907 00:42:30,731 --> 00:42:32,814 και στη συνέχεια προσπαθήστε να κάνετε κάτι στο εσωτερικό του μπλε, 908 00:42:32,814 --> 00:42:34,770 θα ήταν αυτό να προκαλέσει προβλήματα; 909 00:42:34,770 --> 00:42:37,310 >> ΧΑΝΑ: Έτσι είναι CSS επικαλυπτόμενα φύλλα στυλ. 910 00:42:37,310 --> 00:42:40,730 Έτσι, ό, τι είναι προς το κάτω θα υπερισχύουν. 911 00:42:40,730 --> 00:42:44,080 Έτσι, αν κάνουμε κάτι με το σώμα, και θα κάνει τα πάντα λευκό, 912 00:42:44,080 --> 00:42:49,300 και, στη συνέχεια, αργότερα, μπορείτε να αλλάξετε τον τίτλο ή μπορείτε να αλλάξετε το κείμενο μέσα στο σώμα, 913 00:42:49,300 --> 00:42:50,560 διαγράφει αυτό. 914 00:42:50,560 --> 00:42:55,360 Έτσι, τίποτα προς το κάτω θα υπερισχύουν. 915 00:42:55,360 --> 00:42:56,730 Ναι; 916 00:42:56,730 --> 00:42:59,627 >> ΚΟΙΝΟ: Και τα αναγνωριστικά είναι μοναδικά, Οι τάξεις όμως μπορεί να είναι περισσότερο; 917 00:42:59,627 --> 00:43:00,210 ΧΑΝΑ: Δεξιά. 918 00:43:00,210 --> 00:43:06,320 Έτσι ταυτότητες θα πρέπει να είναι μοναδικό, και τα μαθήματα μπορούν να αναφέρονται ως πολλά πράγματα όπως θα θέλατε. 919 00:43:06,320 --> 00:43:07,580 Οποιεσδήποτε άλλες ερωτήσεις; 920 00:43:07,580 --> 00:43:09,800 Ναι. 921 00:43:09,800 --> 00:43:11,210 >> ΚΟΙΝΟ: [δεν ακούγεται]. 922 00:43:11,210 --> 00:43:13,509 Αναρωτιέμαι αν αυτό κάνει τη διαφορά. 923 00:43:13,509 --> 00:43:15,217 ΧΑΝΑ: Λυπάμαι, ποια ήταν η ερώτηση; 924 00:43:15,217 --> 00:43:18,960 ΚΟΙΝΟ: Υπάρχει μικρή "F" και το κεφάλαιο "Φ" 925 00:43:18,960 --> 00:43:21,440 ΧΑΝΑ: Έτσι, η διαφορά μεταξύ μικρών "f" και το κεφάλαιο "F" 926 00:43:21,440 --> 00:43:22,606 δεν θα πρέπει να κάνει τη διαφορά. 927 00:43:22,606 --> 00:43:26,330 Έτσι, το "f" θα είναι 15 ή τον άλλο τρόπο. 928 00:43:26,330 --> 00:43:28,130 Cool, τίποτα άλλο; 929 00:43:28,130 --> 00:43:29,930 Όλοι καλό, CSS; 930 00:43:29,930 --> 00:43:30,850 Ναι; 931 00:43:30,850 --> 00:43:31,790 >> ΚΟΙΝΟ: Συγγνώμη. 932 00:43:31,790 --> 00:43:35,550 Μπορεί να έχετε μια τάξη και ένα αναγνωριστικό; 933 00:43:35,550 --> 00:43:38,030 >> ΧΑΝΑ: Ναι, μπορείτε. 934 00:43:38,030 --> 00:43:40,420 Τα πράγματα μπορεί να έχουν και μια τάξη και ένα αναγνωριστικό. 935 00:43:40,420 --> 00:43:44,670 Και ήθελα να συστήσω ιδιαίτερα δοκιμή αυτών για τη δική σας. 936 00:43:44,670 --> 00:43:50,480 CSS θα μάθετε καλύτερα απλά κάνοντας κάτι, πολύ απλή ιστοσελίδα, 937 00:43:50,480 --> 00:43:53,440 κατάρτιση κάποια CSS, και μόνο βλέπουμε πώς αλληλεπιδρούν μεταξύ τους. 938 00:43:53,440 --> 00:43:56,970 Και θα κερδίσει ένα πολύ καλό, διαισθητική αίσθηση για το πώς λειτουργεί. 939 00:43:56,970 --> 00:43:58,810 >> Εντάξει, σε όλους καλή με CSS; 940 00:43:58,810 --> 00:44:01,280 Είστε όλοι πρόκειται να κάνει όμορφες ιστοσελίδες με CSS τώρα. 941 00:44:01,280 --> 00:44:05,460 Εντάξει, βέλτιστες πρακτικές, απλά πράγματα που πρέπει να έχετε κατά νου, τα πράγματα 942 00:44:05,460 --> 00:44:09,810 that-- αυτός είναι ο λόγος που αράζουν σας για το σχεδιαστή και εταζέρα. 943 00:44:09,810 --> 00:44:11,820 Έτσι, κλείστε όλες τις ετικέτες HTML σας. 944 00:44:11,820 --> 00:44:14,840 Έτσι, εάν έχετε ένα ανοικτό αμάξωμα, θα πρέπει να υπάρξει στενή σώμα. 945 00:44:14,840 --> 00:44:18,180 Εάν έχετε ένα ανοιχτό σημείο, θα πρέπει να υπάρξει στενή παράγραφο. 946 00:44:18,180 --> 00:44:19,555 Ελέγξτε για να δείτε τη σελίδα σας επικυρώνει. 947 00:44:19,555 --> 00:44:23,330 Εσείς θα πρέπει να είναι πολύ εξοικειωμένοι με αυτό από ρ-set επτά 948 00:44:23,330 --> 00:44:26,350 με CS 50 χρηματοδότηση με το επικύρωσης W3. 949 00:44:26,350 --> 00:44:28,340 Και όπως είπα και πριν, ένα από τα μεγάλα παραδείγματα μας 950 00:44:28,340 --> 00:44:33,780 χωρίζει το στυλ σας με CSS από σήμανση σας, η οποία είναι η HTML. 951 00:44:33,780 --> 00:44:36,900 Και τότε, φυσικά, έχουμε αυτό το μεγάλο XKCD εδώ κάτω. 952 00:44:36,900 --> 00:44:38,280 Yay, κωμική ανακούφιση! 953 00:44:38,280 --> 00:44:41,340 >> Εντάξει, το πρωτόκολλο TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Μεταξύ αυτών και HTTP, Βασικά είναι δύο πρωτόκολλα. 955 00:44:44,650 --> 00:44:46,810 Έτσι, θα μπορούσατε απλά σκεφτείτε τους ως ένα σύνολο κανόνων 956 00:44:46,810 --> 00:44:50,110 που διέπουν τον τρόπο τα πράγματα κινούνται σε ολόκληρο το Διαδίκτυο. 957 00:44:50,110 --> 00:44:53,410 Έτσι, ελέγχου κιβωτίου ταχυτήτων πρωτόκολλο ή στο πρωτόκολλο του Ίντερνετ, 958 00:44:53,410 --> 00:44:57,280 Είναι απλά ένας τρόπος για να βεβαιωθείτε ότι ότι τα δεδομένα που παίρνει πού πηγαίνει 959 00:44:57,280 --> 00:45:00,030 και ότι γνωρίζουμε αν είμαστε πάντα λείπουν δεδομένα. 960 00:45:00,030 --> 00:45:03,520 Έτσι, αν εσείς νομίζετε πίσω σε διάλεξη μερικές εβδομάδες πριν με τον David 961 00:45:03,520 --> 00:45:06,980 όπου είχαμε τέσσερις φακέλους, που ήταν όλες αριθμημένες σαν ένα από τα τέσσερα, 962 00:45:06,980 --> 00:45:11,300 δύο από τα τέσσερα, τρία από τα τέσσερα, τέσσερα από τέσσερα, αυτό είναι απλά ένα σύνολο κανόνων. 963 00:45:11,300 --> 00:45:13,830 Είπαμε, εντάξει, όταν είμαστε στέλνοντας περισσότερα από ένα πακέτο, 964 00:45:13,830 --> 00:45:16,610 πρόκειται να αριθμούν με ποιο αριθμό είναι 965 00:45:16,610 --> 00:45:19,040 και πόσα σύνολο που ο χρήστης θα πρέπει να πάρετε. 966 00:45:19,040 --> 00:45:22,540 >> Και αυτό ακριβώς λέει όποιος λαμβάνει τα δεδομένα εάν 967 00:45:22,540 --> 00:45:26,120 έχουν πάρει τα πάντα ή αν κάτι χάθηκε στην πορεία. 968 00:45:26,120 --> 00:45:28,840 Και πρέπει να το ζητήσετε ξανά. 969 00:45:28,840 --> 00:45:31,140 Αυτό είναι πραγματικά ακριβώς ένα σύνολο κανόνων. 970 00:45:31,140 --> 00:45:33,650 Αυτό είναι το πώς μπορείτε να σκεφτείτε από το, εντάξει; 971 00:45:33,650 --> 00:45:37,700 Και, επίσης, καθορίζει το λιμάνι, το οποίο εσείς can-- ξέρω κατά τη διάρκεια της διάλεξης, 972 00:45:37,700 --> 00:45:39,170 είχαν έναν ολόκληρο κατάλογο των λιμένων. 973 00:45:39,170 --> 00:45:41,630 Αλλά εμείς δεν τα έχουμε εδώ τώρα. 974 00:45:41,630 --> 00:45:45,290 >> Έτσι πρωτόκολλο μεταφοράς υπερκειμένου είναι, και πάλι, αυτό είναι ένα άλλο πρωτόκολλο. 975 00:45:45,290 --> 00:45:48,630 Έτσι, αυτό είναι ένα άλλο σύνολο κανόνων που διέπουν, στην περίπτωση αυτή, 976 00:45:48,630 --> 00:45:51,130 πώς υπερκείμενο μεταφέρεται. 977 00:45:51,130 --> 00:45:54,340 Έτσι, επιτρέπει μόνο σε προγράμματα περιήγησης να μιλήσει σε διακομιστές web. 978 00:45:54,340 --> 00:45:56,910 Και όπως είπαμε εδώ, είναι όπως τα ανθρώπινα χειραψίας. 979 00:45:56,910 --> 00:46:00,480 Είναι απλά ένας τρόπος για να κυβερνήσει πώς ο web server είναι 980 00:46:00,480 --> 00:46:02,690 πρόκειται να αλληλεπιδράσουν με το πρόγραμμα περιήγησής σας. 981 00:46:02,690 --> 00:46:05,660 Και έχουμε μόνο μερικά παραδείγματα. 982 00:46:05,660 --> 00:46:09,100 Έχουμε κάποια αιτήματα εδώ όπου GET είναι η μέθοδος. 983 00:46:09,100 --> 00:46:13,760 Έχουμε HTTP 1.1, το οποίο είναι Η έκδοση του πρωτοκόλλου για εμάς. 984 00:46:13,760 --> 00:46:17,230 Και στη συνέχεια, ο ξενιστής, το οποίο είναι αυτό είμαστε στην πραγματικότητα προσπαθεί να αποκτήσει πρόσβαση. 985 00:46:17,230 --> 00:46:21,800 Και τότε, όπως βλέπετε εδώ, εμείς να πάρετε κάποια απάντηση με αυτό το 200 986 00:46:21,800 --> 00:46:25,032 ΟΚ ως κωδικός απόκρισης HTTP μας. 987 00:46:25,032 --> 00:46:27,240 Έχουμε μια μεγάλη λίστα Πάω για να τραβήξει επάνω σε ένα δευτερόλεπτο 988 00:46:27,240 --> 00:46:29,430 ότι εσείς θα πρέπει να είναι εξοικειωμένοι με. 989 00:46:29,430 --> 00:46:35,750 Και έχουμε αυτού του είδους το περιεχόμενο κειμένου / HTML, η οποία ακριβώς λέει τι είδους δεδομένα 990 00:46:35,750 --> 00:46:39,990 είμαστε λήψη από το διακομιστή, εντάξει; 991 00:46:39,990 --> 00:46:44,230 Αυτή υποδοχής και αυτός ο τύπος περιεχομένου αποτελούν μέρος της κεφαλίδες HTTP. 992 00:46:44,230 --> 00:46:49,610 Μπορείτε να έχετε όσο το δυνατόν λιγότερα ή τόσο λίγα όπως αναγκαία για το περιεχόμενο του τι 993 00:46:49,610 --> 00:46:50,580 έχουμε να κάνουμε με. 994 00:46:50,580 --> 00:46:53,371 Μερικές φορές θα έχετε μια πολύ πληροφορίες που προέρχονται από το διακομιστή σας. 995 00:46:53,371 --> 00:46:56,040 Ίσως να ζητάτε πολλά των πληροφοριών από το χρήστη. 996 00:46:56,040 --> 00:46:57,600 Αυτό ποικίλλει ανάλογα με το πλαίσιο. 997 00:46:57,600 --> 00:47:01,144 Αν κοιτάξετε CS 50 Μελέτη, υπάρχει πολύ περισσότερο σε αυτό. 998 00:47:01,144 --> 00:47:03,060 Αλλά έχουμε πολλά να πάρει μέσα, έτσι Πάω 999 00:47:03,060 --> 00:47:05,760 να πηγαίνετε δεξιά μπροστά, αν αυτό είναι εντάξει μαζί σας; 1000 00:47:05,760 --> 00:47:07,960 Cool. 1001 00:47:07,960 --> 00:47:08,460 Περίμενε. 1002 00:47:08,460 --> 00:47:11,182 Έχω σίγουρα ότι όλη τη λίστα of-- huh! 1003 00:47:11,182 --> 00:47:13,140 Δεν ξέρω γιατί αυτό είναι σε όλη τη διαδρομή εδώ. 1004 00:47:13,140 --> 00:47:15,660 Νόμιζα ότι κυριολεκτικά μετακινηθεί αυτό, ενώ ήμουν sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> Davin: Θέλετε να το διδάξει; 1006 00:47:16,540 --> 00:47:17,420 Ή θέλεις να το διδάξει; 1007 00:47:17,420 --> 00:47:20,010 >> ΚΟΙΝΟ: σκέφτηκα ότι θα μπορούσαμε να τους δείξουμε ακριβώς για να αρχίσει με. 1008 00:47:20,010 --> 00:47:22,210 Θέλω να πω, μπορείτε να πάτε σε τα περαιτέρω, αλλά εγώ 1009 00:47:22,210 --> 00:47:26,030 θεωρούν ότι είναι πιο λογικό από τότε που ήταν απλά μιλάμε για HTTP καταστάσεις. 1010 00:47:26,030 --> 00:47:28,200 Έτσι, εδώ είναι όλη η λίστα. 1011 00:47:28,200 --> 00:47:31,730 Υποθέτω ότι αυτό που πρόκειται να συμβεί είναι Davin πρόκειται να πάει σε αυτά αργότερα. 1012 00:47:31,730 --> 00:47:35,330 Αλλά υπάρχει μια ολόκληρη λίστα, ένα προεπισκόπηση της γεύσης για να έρθει. 1013 00:47:35,330 --> 00:47:41,640 Εντάξει, θα πάμε να blow-- αυτό πρόκειται να είναι ένα μάθημα PHP crash σαν κανένα άλλο. 1014 00:47:41,640 --> 00:47:44,874 >> Έτσι, PHP, Hypertext Preprocessor, είναι ένα αναδρομικό backronym, 1015 00:47:44,874 --> 00:47:46,540 πράγμα που σημαίνει ότι ονομάστηκε κάτι άλλο. 1016 00:47:46,540 --> 00:47:49,050 Και τότε ήταν σαν, αυτό δεν έχει νόημα. 1017 00:47:49,050 --> 00:47:52,210 Έτσι απλά το όνομα it-- και αυτό ήταν ένα αρκτικόλεξο, 1018 00:47:52,210 --> 00:47:54,840 έτσι ακριβώς έκανε PHP Hypertext Preprocessor, η οποία 1019 00:47:54,840 --> 00:47:55,980 απλά δεν έχει κανένα νόημα. 1020 00:47:55,980 --> 00:47:57,714 Διασκέδαση ιστορία. 1021 00:47:57,714 --> 00:47:58,880 Είναι μια γλώσσα προγραμματισμού. 1022 00:47:58,880 --> 00:48:02,360 Έτσι, όσο τονίζω ότι HTML δεν είναι μια γλώσσα προγραμματισμού, 1023 00:48:02,360 --> 00:48:05,350 Είναι μια γλώσσα σήμανσης, PHP είναι μια γλώσσα προγραμματισμού. 1024 00:48:05,350 --> 00:48:07,422 Πώς ξέρετε ότι αυτό είναι επειδή υπάρχει λογική. 1025 00:48:07,422 --> 00:48:08,380 Υπάρχουν υποθετικοί. 1026 00:48:08,380 --> 00:48:12,750 Έχουμε μεταβλητές, ενώ εμείς δεν έχουν κανένα από αυτά τα πράγματα σε μορφή HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Εντάξει, τότε έχουμε αυτό το μικρό λίγο εδώ ότι είναι σαν μια γεύση της PHP. 1028 00:48:16,960 --> 00:48:20,510 Έτσι, βασικά, τα ονόματα των μεταβλητών ξεκινήστε με το σύμβολο του δολαρίου. 1029 00:48:20,510 --> 00:48:21,500 Πολλοί άνθρωποι σαν αυτό. 1030 00:48:21,500 --> 00:48:22,371 Υπενθυμίζει μας χρήματα. 1031 00:48:22,371 --> 00:48:22,995 Είναι όλα υπέροχα. 1032 00:48:22,995 --> 00:48:25,280 Όλοι θέλουμε την PHP. 1033 00:48:25,280 --> 00:48:28,020 Γι 'αυτό και δεν προσδιορίζουν ένα Τύπος μεταβλητής πια. 1034 00:48:28,020 --> 00:48:29,995 Προσδιορίζεται κατά το χρόνο εκτέλεσης. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 Ο διερμηνέας θα είναι όπως, Ω, θα τρέξει μόνο μέσα, 1037 00:48:35,890 --> 00:48:39,565 και ανάλογα με το πλαίσιο, Θα δούμε τι τύποι των τύπων 1038 00:48:39,565 --> 00:48:41,560 Αυτές οι μεταβλητές πρέπει να έχουν. 1039 00:48:41,560 --> 00:48:42,815 Δεν υπάρχει καμία κύρια λειτουργία. 1040 00:48:42,815 --> 00:48:43,690 Τα πράγματα θα τρέξει μόνο. 1041 00:48:43,690 --> 00:48:47,851 Εσείς με την εισαγωγή σας σε σας τελευταία π-set, θα παρατηρήσετε αυτό. 1042 00:48:47,851 --> 00:48:49,350 Δεν ήταν πραγματικά μια κύρια λειτουργία. 1043 00:48:49,350 --> 00:48:52,070 Απλά έγραψε ό, τι θα ήθελε να συμβεί. 1044 00:48:52,070 --> 00:48:53,280 Και αυτό ακριβώς το είδος της συνέβη. 1045 00:48:53,280 --> 00:48:56,760 Έτσι, αυτό είναι η PHP για εσάς. 1046 00:48:56,760 --> 00:48:59,180 >> Οι πίνακες είναι πολύ παρόμοια. 1047 00:48:59,180 --> 00:49:01,270 Έχουμε ακόμα αυτό το στήριγμα. 1048 00:49:01,270 --> 00:49:05,940 Εδώ, έχουμε κάποια μεταβλητή ονομάζεται ARR, και είναι ίση 1049 00:49:05,940 --> 00:49:08,540 to-- έχουμε την κανονική μας βραχίονα σημειογραφία. 1050 00:49:08,540 --> 00:49:10,630 Και έχουμε κάποια βασική τιμή. 1051 00:49:10,630 --> 00:49:14,630 Και η μεγάλη διαφορά μεταξύ του C και PHP συστοιχίες 1052 00:49:14,630 --> 00:49:19,330 είναι ότι μπορούμε να έχουμε αυτό το associate-- μπορούμε να συσχετίσουμε τις τιμές σε κλειδιά. 1053 00:49:19,330 --> 00:49:22,440 Έτσι, αντί να έχουμε μια συστοιχία ευρετήριο 1054 00:49:22,440 --> 00:49:26,630 από τον αριθμό ή τη θέση του εν λόγω στοιχείου στη συστοιχία, 1055 00:49:26,630 --> 00:49:29,060 μπορούμε να το συνδέσει πραγματικά με ένα κλειδί. 1056 00:49:29,060 --> 00:49:36,700 Πού μπορούμε να πούμε, εντάξει, θέλω ανεξαρτήτως τιμή σχετίζεται με φρούτα. 1057 00:49:36,700 --> 00:49:39,280 Και ίσως έχουμε φρούτα πήγε στην μπανάνα. 1058 00:49:39,280 --> 00:49:41,760 Έτσι θα επιστρέψει μπανάνα για εμάς. 1059 00:49:41,760 --> 00:49:44,100 >> Αλλά βασικά, το πιο ισχυρό πράγμα σχετικά με αυτό 1060 00:49:44,100 --> 00:49:47,960 είναι ότι αν εσείς θυμάστε το demo από διάλεξη όπου βασικά 1061 00:49:47,960 --> 00:49:53,050 ξαναέγραψε ορθογράφος σε PHP, και was-- αναζήτηση ήταν πραγματικά ακριβώς ήθελε, 1062 00:49:53,050 --> 00:49:55,007 δεν υπάρχει αυτό το κλειδί; 1063 00:49:55,007 --> 00:49:56,590 Αυτό είναι πραγματικά το είδος της εξουσίας του. 1064 00:49:56,590 --> 00:49:58,560 Δεν χρειάζεται να επαναλάβει μέσω του πίνακα σας. 1065 00:49:58,560 --> 00:50:00,311 Δεν χρειάζεται να γνωρίζετε Τι χώρο θα είναι σε. 1066 00:50:00,311 --> 00:50:01,976 Θα μπορούσε να είναι στο τέλος ή την αρχή. 1067 00:50:01,976 --> 00:50:04,790 Εφ 'όσον γνωρίζετε το κλειδί που είναι συνδεδεμένες με την αξία, 1068 00:50:04,790 --> 00:50:09,740 PHP μπορεί να φτύσει ακριβώς αυτή την τιμή δεξιά πίσω έξω σε σας, εντάξει; 1069 00:50:09,740 --> 00:50:12,960 >> Και τότε, επίσης, μόλις έχουν μόνο και μόνο επειδή εμείς 1070 00:50:12,960 --> 00:50:16,750 μπορούν να έχουν ζεύγη κλειδιών αξία δεν σημαίνει ότι πρέπει να. 1071 00:50:16,750 --> 00:50:19,180 Μπορείτε επίσης να δημιουργήσετε μόνο μια κανονική σειρά, όπως εδώ, 1072 00:50:19,180 --> 00:50:21,540 στο κάτω μέρος, όπου είναι μόνο ένα, δύο, τρία, τέσσερα. 1073 00:50:21,540 --> 00:50:22,510 Αυτοί είναι οι αξίες μας. 1074 00:50:22,510 --> 00:50:25,320 Και στην πραγματικότητα, τα κλειδιά τους είναι οι δείκτες. 1075 00:50:25,320 --> 00:50:26,830 Έτσι, το κλειδί για ένα θα είναι μηδενική. 1076 00:50:26,830 --> 00:50:28,610 Το κλειδί για δύο θα είναι ένα. 1077 00:50:28,610 --> 00:50:31,910 Ούτω καθεξής και ούτω καθεξής, εκτός μπορείτε να εκχωρήσετε ρητά ένα κλειδί, 1078 00:50:31,910 --> 00:50:34,630 θα μπορούσαμε να υποθέσουμε ότι η τιμή είναι ακριβώς δείκτη τους. 1079 00:50:34,630 --> 00:50:37,290 Μήπως αυτό έχει νόημα για όλους; 1080 00:50:37,290 --> 00:50:38,070 Δεν υπάρχουν ερωτήσεις; 1081 00:50:38,070 --> 00:50:38,930 Awesome. 1082 00:50:38,930 --> 00:50:44,420 >> Εντάξει, foreach είναι ένας τρόπος για να διέτρεξε τη συστοιχίες σας. 1083 00:50:44,420 --> 00:50:47,490 Έτσι έχουμε κάτι εδώ, μόνο η γενική δομή. 1084 00:50:47,490 --> 00:50:51,020 Έτσι foreach, το όνομα του σειρά μας, καθώς ό, τι 1085 00:50:51,020 --> 00:50:53,930 θέλετε να καλέσετε το καθένα στοιχείο σε σειρά σας, 1086 00:50:53,930 --> 00:50:57,270 και μπορούμε να κάνουμε κάτι με το στοιχείο αυτό ή με την εν λόγω αξία. 1087 00:50:57,270 --> 00:50:58,680 Έτσι έχουμε ένα παράδειγμα εδώ. 1088 00:50:58,680 --> 00:51:05,770 Έχουμε μια συνειρμική πίνακα με αυτές τις δύο εισόδους 1089 00:51:05,770 --> 00:51:10,080 με μπαρ που σχετίζονται με την foo και QUX που σχετίζονται με Baz. 1090 00:51:10,080 --> 00:51:12,180 Έτσι, τα πλήκτρα είναι foo και Baz. 1091 00:51:12,180 --> 00:51:13,650 Οι τιμές είναι μπαρ και QUX. 1092 00:51:13,650 --> 00:51:18,560 Έτσι foreach, έχουμε σειρά μας εδώ, όπως το ζεύγος κλειδιών αξία. 1093 00:51:18,560 --> 00:51:21,560 Αυτό μας επιτρέπει να έχουν πρόσβαση τόσο το κλειδί και τιμή. 1094 00:51:21,560 --> 00:51:23,680 Ίσως θέλετε ακριβώς το τιμή, στην οποία περίπτωση 1095 00:51:23,680 --> 00:51:27,640 θα μπορούσατε να κάνετε ακριβώς όπως ARR ως $ αξία, και τότε θα 1096 00:51:27,640 --> 00:51:30,640 Τα απλά πρόσβαση στην αξία όπως μπορείτε να μετακινηθείτε μέσα. 1097 00:51:30,640 --> 00:51:32,600 Αλλά ίσως, για κάποια λόγο, θέλετε το κλειδί, 1098 00:51:32,600 --> 00:51:35,460 η οποία είναι ο λόγος που επέλεξα αυτό το παράδειγμα αντ 'αυτού. 1099 00:51:35,460 --> 00:51:40,240 Έτσι μπορείτε πραγματικά να χειριστείτε κλειδί και την αξία σε αυτή την περίπτωση. 1100 00:51:40,240 --> 00:51:41,070 Εντάξει; 1101 00:51:41,070 --> 00:51:41,905 Ερώτηση; 1102 00:51:41,905 --> 00:51:44,279 >> ΚΟΙΝΟ: Αν θέλατε να απλά να χειριστείτε το κλειδί, θα 1103 00:51:44,279 --> 00:51:45,910 που έχετε να κάνετε foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Δεξιά. 1105 00:51:47,360 --> 00:51:50,560 Έτσι, αν θέλετε να χειρίζονται μόνο το κλειδί, 1106 00:51:50,560 --> 00:51:53,680 θα χρειαστεί ακόμα αυτό σύνταξη γιατί αν απλά 1107 00:51:53,680 --> 00:51:56,930 έχουν ARR ως κάτι, ως ένα πράγμα, αυτό είναι 1108 00:51:56,930 --> 00:52:00,070 πρόκειται να υποθέσουμε ότι θέλετε η τιμή, δεν είναι το κλειδί. 1109 00:52:00,070 --> 00:52:06,780 Έτσι, αν έχετε ποτέ ακριβώς όπως ARR, όπως, ίσως αυτό είναι σαν $ στοιχείο, 1110 00:52:06,780 --> 00:52:11,670 πρόκειται να υποθέσουμε ότι κάνεις μόνο για την αξία σε κάθε σημείο. 1111 00:52:11,670 --> 00:52:13,879 Αν θέλετε ρητά να να κάνει κάτι με το κλειδί, 1112 00:52:13,879 --> 00:52:16,170 ακόμη και αν δεν πρόκειται να κάνει τίποτα με την αξία, 1113 00:52:16,170 --> 00:52:18,430 θα πρέπει να έχετε αυτή τη δομή ότι έχουμε εδώ 1114 00:52:18,430 --> 00:52:22,330 όπου ζητάς ρητά τόσο για το κλειδί και την τιμή. 1115 00:52:22,330 --> 00:52:24,170 Μεγάλη ερώτηση. 1116 00:52:24,170 --> 00:52:25,940 Οτιδήποτε άλλο; 1117 00:52:25,940 --> 00:52:27,490 Cool. 1118 00:52:27,490 --> 00:52:29,911 >> Εντάξει, PHP και HTML. 1119 00:52:29,911 --> 00:52:31,410 Ω, είμαστε πίσω στην π-set επτά ξανά. 1120 00:52:31,410 --> 00:52:35,380 Έτσι, αυτό θα πρέπει να κοιτάξουμε λίγο εξοικειωμένοι. 1121 00:52:35,380 --> 00:52:41,760 Έτσι, αυτό είναι κάποια απλή μορφή HTML ότι έχει κάποιο όνομα εισόδου γεια. 1122 00:52:41,760 --> 00:52:43,820 Και βλέπουμε έχουμε μέθοδος μας GET. 1123 00:52:43,820 --> 00:52:47,430 Και αν θυμηθούμε από p-σειρά μας, όταν υποβάλλεται το έντυπο αυτό, 1124 00:52:47,430 --> 00:52:58,130 στέλνει μια σειρά που ονομάζεται $ _GET που έχει όλα αυτά τα δεδομένα ή τις μεταβλητές από 1125 00:52:58,130 --> 00:53:00,490 η μορφή που θα πρέπει να είναι χειραγωγείται σε PHP μας. 1126 00:53:00,490 --> 00:53:03,320 Έτσι, στην περίπτωση αυτή, ο χρήστης θα θέσει στο όνομά τους. 1127 00:53:03,320 --> 00:53:04,370 Το υποβάλετε. 1128 00:53:04,370 --> 00:53:07,810 Και βλέπουμε ότι έχουμε κάποια σειρά εδώ. 1129 00:53:07,810 --> 00:53:09,080 Έχουμε σειρά GET μας. 1130 00:53:09,080 --> 00:53:11,510 Και έχουμε πρόσβαση το όνομα. 1131 00:53:11,510 --> 00:53:15,070 >> Έτσι ώστε να λέει, εντάξει, να μου δώσει το τιμή που είναι συνδεδεμένες με το όνομα, 1132 00:53:15,070 --> 00:53:16,550 όνομα του οποίου είναι το κλειδί εδώ. 1133 00:53:16,550 --> 00:53:21,400 Και αυτό χάρτες απευθείας σε ό, τι είπαμε το όνομα εισόδου μας είναι. 1134 00:53:21,400 --> 00:53:28,960 Έτσι, αυτό που σας δίνει το κλειδί σε ό, τι πρόκειται να είναι σε σειρά σας εδώ. 1135 00:53:28,960 --> 00:53:31,220 Μήπως αυτό έχει νόημα για όλους; 1136 00:53:31,220 --> 00:53:32,070 Ναι; 1137 00:53:32,070 --> 00:53:36,240 >> ΚΟΙΝΟ: Μήπως το όνομα Αποκτήστε αναφέρονται στο μωβ γραμμή σε [δεν ακούγεται]; 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: Αναφέρεται σε αυτό εδώ. 1139 00:53:37,740 --> 00:53:43,840 Έτσι, αυτό το πεδίο εδώ, αναφέρεται σε αυτό το όνομα εδώ. 1140 00:53:43,840 --> 00:53:47,800 Έτσι, αυτό θα μπορούσε να ονομαστεί όπως τον αριθμό του τηλεφώνου, ή οτιδήποτε άλλο. 1141 00:53:47,800 --> 00:53:51,790 Αυτό το όνομα λέει στην πραγματικότητα, τι σας καλεί αυτό το πεδίο; 1142 00:53:51,790 --> 00:53:53,600 Πώς θα πας να αναφέρονται σε αυτόν τον τομέα; 1143 00:53:53,600 --> 00:53:57,670 Και αυτό το όνομα είναι στην πραγματικότητα αρέσει, είμαστε λέγοντας ότι αυτό το πεδίο καλείται όνομα. 1144 00:53:57,670 --> 00:53:59,224 Αυτό είναι το πώς θα πάμε να έχουν πρόσβαση. 1145 00:53:59,224 --> 00:54:02,070 >> ΚΟΙΝΟ: Έτσι είναι σαν, το όνομα εισόδου ισούται με τον Bob, and-- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: Δεξιά, τότε θα πάρει Bob εκεί κάτω. 1147 00:54:04,380 --> 00:54:06,090 Ακριβώς. 1148 00:54:06,090 --> 00:54:07,800 Όλοι δροσερό; 1149 00:54:07,800 --> 00:54:10,990 Εντάξει, έτσι ώστε να πάρει σε σχέση με μετά, αυτοί είναι οι δύο βασικοί τρόποι 1150 00:54:10,990 --> 00:54:14,880 ότι έχουμε περάσει τα δεδομένα σε ένα αίτημα HTTP. 1151 00:54:14,880 --> 00:54:17,370 Εσείς πρέπει να έχετε δει τα δύο αυτά ελπίζουμε. 1152 00:54:17,370 --> 00:54:20,940 Έτσι, με GET, οι πληροφορίες περνά διαμέσου του URL. 1153 00:54:20,940 --> 00:54:23,490 Έτσι, αν ποτέ το Google αναζητήσεις, το YouTube, θα 1154 00:54:23,490 --> 00:54:25,130 ίσως παρατηρήσετε κάποια ερωτηματικό. 1155 00:54:25,130 --> 00:54:28,230 Και στη συνέχεια, όλες οι λέξεις ότι μόλις βάλει εκεί. 1156 00:54:28,230 --> 00:54:31,410 Και Ταχυδρομείων περνά τα δεδομένα στο σώμα του μηνύματος HTTP. 1157 00:54:31,410 --> 00:54:36,922 Έτσι, σε αντίθεση με πάρει, θα εξετάσει το είδος του ότι τα δεδομένα είναι κρυμμένο από τον χρήστη. 1158 00:54:36,922 --> 00:54:38,630 Αλλά τι είναι πραγματικά σημαντικό να κατανοήσουμε 1159 00:54:38,630 --> 00:54:44,040 είναι ότι αυτό εξακολουθεί να είναι εξίσου ανασφαλής και να πάρει. 1160 00:54:44,040 --> 00:54:48,780 Η αναλογία που μου αρέσει να χρησιμοποιήσετε είναι αν Έχετε αριθμό του τραπεζικού σας λογαριασμού 1161 00:54:48,780 --> 00:54:52,795 και μπορείτε να το γράψετε στο εξωτερικό του ένα φάκελο, ότι είναι αρκετά ασφαλές. 1162 00:54:52,795 --> 00:54:55,920 Αν ήταν να το γράψετε σε ένα κομμάτι του χαρτί και να το βάλετε μέσα στο φάκελο, 1163 00:54:55,920 --> 00:54:58,850 είναι ακόμα πολύ ανασφαλείς, διότι το μόνο που έχετε να κάνετε είναι να ανοίξετε ότι μέχρι 1164 00:54:58,850 --> 00:55:03,480 και να εξετάσουμε τα πραγματικά περιεχόμενα του μηνύματος για να το δω αυτό. 1165 00:55:03,480 --> 00:55:08,310 Έτσι, αυτό είναι "κρυφή", και οι άνθρωποι σαν να νομίζω ότι είναι ασφαλές, αλλά αυτό δεν είναι πραγματικά. 1166 00:55:08,310 --> 00:55:11,000 Και είμαι βέβαιος ότι θα Davin μπει σε αυτό περισσότερο, ίσως. 1167 00:55:11,000 --> 00:55:12,850 Αλλά είναι ένα σημαντικό διάκριση να κάνουν 1168 00:55:12,850 --> 00:55:15,820 και κάτι πραγματικά καλό να κατανοήσουμε. 1169 00:55:15,820 --> 00:55:19,220 >> Εντάξει, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Όλα τα πράγματα που έχουμε δει μέχρι πρόσφατα! 1171 00:55:22,220 --> 00:55:25,400 Έτσι, αυτό είναι βασικά ακριβώς σχεδιαστεί, Προφανώς, για τη διαχείριση των δεδομένων. 1172 00:55:25,400 --> 00:55:30,560 Εσείς είχε πολλή εμπειρία με Αυτό σε τραπέζια σας με την PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 Και υπάρχουν τέσσερις κοινές ερωτήσεις ότι θέλουμε εσείς να ξέρετε. 1174 00:55:34,100 --> 00:55:37,304 Έτσι, δεν υπάρχει ενημέρωση, ένθετο, επιλέξετε και να διαγράψετε. 1175 00:55:37,304 --> 00:55:38,970 Έτσι, βεβαιωθείτε ότι γνωρίζετε πολύ καλά εκείνοι. 1176 00:55:38,970 --> 00:55:40,960 Εμείς πάμε για να πάει μέσα από αυτά πολύ γρήγορα. 1177 00:55:40,960 --> 00:55:44,340 >> Έτσι, ενημέρωση, πραγματικά, και τι ίσως νομίζετε ότι κάνει, 1178 00:55:44,340 --> 00:55:46,740 ενημερώνει μόνο τα δεδομένα στη βάση δεδομένων σας. 1179 00:55:46,740 --> 00:55:48,750 Έτσι έχουμε κάποιο παράδειγμα εδώ. 1180 00:55:48,750 --> 00:55:53,310 Αυτή είναι η γενική δομή ενός ερωτήματος ενημέρωσης. 1181 00:55:53,310 --> 00:55:56,150 Γι 'αυτό και την ενημέρωση του πίνακα ότι μιλάμε. 1182 00:55:56,150 --> 00:56:00,520 Και θέλουμε να θέσουμε ορισμένες αξίες, ορισμένες στήλες 1183 00:56:00,520 --> 00:56:02,600 ίση με συγκεκριμένες τιμές. 1184 00:56:02,600 --> 00:56:07,500 Έτσι, αυτό ενημερώνει απλώς τον πίνακα, αλλάζοντας τιμές σε όλες τις σειρές σε αυτήν την περίπτωση. 1185 00:56:07,500 --> 00:56:13,690 Έτσι, σε αυτό εδώ κάτω, ένα πραγματικό παράδειγμα, έχουμε insert-- συγνώμη. 1186 00:56:13,690 --> 00:56:17,630 Προχωρημένο στάδιο, ώστε διαφάνεια χωρίς εμένα να το συνειδητοποιούμε. 1187 00:56:17,630 --> 00:56:22,230 >> Έτσι, ο πίνακας αυτός ενημερώσεις που Στ1 ίση να VAL1 όπου σπίτι ισούται με «Currier." 1188 00:56:22,230 --> 00:56:25,300 Τι αυτό κάνει είναι αλλάζει μόνο, μόνο 1189 00:56:25,300 --> 00:56:28,130 ενημερώνει αυτές τις τιμές σε συγκεκριμένες θέσεις. 1190 00:56:28,130 --> 00:56:32,300 Έτσι, σε αυτή την πρώτη, αλλάζει αυτά τιμές για τα πάντα στο τραπέζι σας, 1191 00:56:32,300 --> 00:56:32,860 Εντάξει; 1192 00:56:32,860 --> 00:56:35,820 Είναι πρόκειται να αλλάξει αυτό στήλη για κάθε είσοδο, 1193 00:56:35,820 --> 00:56:37,020 για κάθε σειρά. 1194 00:56:37,020 --> 00:56:40,840 Αλλά αυτό το οποίο, θα μπορούσατε σκεφτείτε το σαν ένα προκριματικό. 1195 00:56:40,840 --> 00:56:44,020 Έτσι είναι μόνο πρόκειται να αλλάξει είναι σε πολύ συγκεκριμένες θέσεις. 1196 00:56:44,020 --> 00:56:47,840 Έτσι, σε π-set επτά, όταν ίσως ενημερώνεται το ποσό των μετρητών 1197 00:56:47,840 --> 00:56:53,050 ότι ο χρήστης σας είχε, θα έπρεπε ίσως μερικοί όπου αναγνωριστικό ισούται αναγνωριστικό περιόδου, σωστά; 1198 00:56:53,050 --> 00:56:55,280 >> Επειδή δεν θέλετε να αλλάξετε το ποσό των μετρητών 1199 00:56:55,280 --> 00:56:57,630 για κάθε άτομο που χρησιμοποιούσε την ιστοσελίδα σας. 1200 00:56:57,630 --> 00:57:00,480 Θα ήθελε να το αλλάξει για ένα συγκεκριμένο πρόσωπο, το πρόσωπο αυτό είναι 1201 00:57:00,480 --> 00:57:02,410 όποιος χρησιμοποιούσε εκείνη τη στιγμή. 1202 00:57:02,410 --> 00:57:04,320 Σωστά; 1203 00:57:04,320 --> 00:57:07,510 Εντάξει, έτσι τοποθετήστε, ένθετο ορισμένες τιμές σε πίνακες. 1204 00:57:07,510 --> 00:57:11,650 Αυτό είναι όπως όταν είστε δημιουργώντας ένα νέο χρήστη. 1205 00:57:11,650 --> 00:57:14,240 Η γενική δομή εδώ είναι να τοποθετήσετε σε όποιο τραπέζι 1206 00:57:14,240 --> 00:57:15,680 μιλάμε. 1207 00:57:15,680 --> 00:57:18,910 Αξίες, που είναι οι αξίες που θέλουμε πραγματικά να εισάγετε. 1208 00:57:18,910 --> 00:57:23,060 Εντάξει, έτσι όπως βλέπουμε εδώ, εμείς έχουν εισαχθεί στο τραπέζι. 1209 00:57:23,060 --> 00:57:27,790 Αυτό είναι συγκεκριμένες στήλες με αντιστοιχούσε τιμές τους. 1210 00:57:27,790 --> 00:57:29,940 Έτσι, αυτό λέει, ένθετο μια νέα σειρά που περιέχει 1211 00:57:29,940 --> 00:57:33,660 τιμές VAL1 και Val2 κάτω Αυτές οι ειδικές στήλες. 1212 00:57:33,660 --> 00:57:39,240 >> Έτσι, ίσως το μόνο που θέλετε να συμπληρώσετε από το ήμισυ τα πράγματα σε αυτή τη σειρά. 1213 00:57:39,240 --> 00:57:41,150 Αυτό είναι ό, τι αυτό το μέρος εδώ σας επιτρέπει να κάνετε. 1214 00:57:41,150 --> 00:57:43,280 Σας επιτρέπει πραγματικά προσδιορίσει ποιο μέρος. 1215 00:57:43,280 --> 00:57:44,244 Ναι; 1216 00:57:44,244 --> 00:57:52,150 >> ΚΟΙΝΟ: Μπορεί το μόνο που [δεν ακούγεται] κυττάρων στη σειρά [δεν ακούγεται]; 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: Αν έχετε μόνο συμπληρώσετε ορισμένα τμήματα της γραμμής σας, 1218 00:57:55,000 --> 00:57:57,480 το υπόλοιπο αυτών των κυττάρων είναι απλά άδειο. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Εφ 'όσον μπορείτε να τους επιτρέπουν να να είναι άδειο, δεν είναι ένα πρόβλημα. 1221 00:58:05,660 --> 00:58:09,570 Αν προσπαθήσετε να αποκτήσετε πρόσβαση σε αυτά, είναι πρόκειται να επιστρέψει κάποιο κενό στοιχείο. 1222 00:58:09,570 --> 00:58:13,850 Αλλά είναι σημαντικό να γνωρίζουμε ότι σε ορισμένες πίνακες, 1223 00:58:13,850 --> 00:58:16,690 θα πρέπει να επιτρέπεται να είναι μηδενική. 1224 00:58:16,690 --> 00:58:18,890 Μπορεί να έχετε τρέξει σε ένα πρόβλημα κατά τη διάρκεια της π-set σας 1225 00:58:18,890 --> 00:58:21,320 γιατί δεν είχαμε αφήσει κανένα των αξιών σας είναι άκυρη. 1226 00:58:21,320 --> 00:58:26,110 Αλλά μπορείτε να καθορίσετε ένα προαιρετική τιμή στον πίνακα σας. 1227 00:58:26,110 --> 00:58:29,640 >> Εντάξει, επιλέξτε, έτσι αυτό είναι μόνο ένας τρόπος για να πάρει 1228 00:58:29,640 --> 00:58:33,790 συγκεκριμένα δεδομένα από έναν πίνακα σε κάποια αναγνωριστικό που θέλετε. 1229 00:58:33,790 --> 00:58:37,990 Έτσι, επιλέξτε αστέρι από το τραπέζι όπου COL ισούται με κάτι σημαίνει απλά, 1230 00:58:37,990 --> 00:58:43,820 δώσε μου όλα τα δεδομένα που σχετίζονται όπου αυτή η συγκεκριμένη στήλη είναι αλήθεια. 1231 00:58:43,820 --> 00:58:49,020 Έτσι, το αστέρι σε αυτή την περίπτωση θα να επιστρέψει ολόκληρη τη σειρά σας, εντάξει; 1232 00:58:49,020 --> 00:58:54,880 >> Και τότε, σε αυτή την περίπτωση, επιλέξτε αστέρι από τραπέζι ακριβώς σας δίνει ολόκληρο τον πίνακα. 1233 00:58:54,880 --> 00:58:58,940 Και στη συνέχεια, διαγράψτε προφανώς, απλά διαγράφει τη γραμμή από τον πίνακα. 1234 00:58:58,940 --> 00:59:01,320 Έτσι διαγράψει από τον πίνακα, όποιο τραπέζι είμαστε 1235 00:59:01,320 --> 00:59:06,830 αναφορά, όπου κάποια ειδική αναγνωριστικό ή κάποια συνθήκη είναι αληθής. 1236 00:59:06,830 --> 00:59:07,720 Ναι; 1237 00:59:07,720 --> 00:59:08,700 >> ΚΟΙΝΟ: Ερώτηση. 1238 00:59:08,700 --> 00:59:10,699 Γιατί με το διπλό εισαγωγικά, και αν 1239 00:59:10,699 --> 00:59:13,600 κάνει διπλά εισαγωγικά ή μονά εισαγωγικά, δεν θα κάνει τη διαφορά; 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: Διπλά εισαγωγικά ή μονά εισαγωγικά δεν κάνει τη διαφορά στον SQL. 1241 00:59:18,235 --> 00:59:19,610 Νόμιζα ότι είδα ένα άλλο ζήτημα. 1242 00:59:19,610 --> 00:59:20,814 Ναι; 1243 00:59:20,814 --> 00:59:25,070 >> ΚΟΙΝΟ: Δεν επηρεάζει ό, τι παίρνει δραπέτευσε από το ερώτημα αυτό; 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: Rob; 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Τι εννοείτε όταν λέτε διέφυγε από το ερώτημα αυτό; 1246 00:59:31,410 --> 00:59:36,870 >> ΚΟΙΝΟ: Αν κάποιος έχει ένα ένα ερώτημα με τη μορφή of-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Αν κάποιος ήταν να θέσει ένα ενιαίο απόσπασμα στο, 1248 00:59:39,862 --> 00:59:43,560 τότε εφ 'όσον είστε απολύμανση εισόδου σας, τότε δεν έχει σημασία. 1249 00:59:43,560 --> 00:59:46,205 Αλλά αν είστε με τη χρήση ενός ενιαίου παραθέτω και είστε σωστά 1250 00:59:46,205 --> 00:59:47,914 διαφυγή των εισροών σας, τότε ναι, θα χρειαστεί 1251 00:59:47,914 --> 00:59:51,079 να θέσει ένα ενιαίο απόσπασμα προκειμένου να σπάσει κωδικό σας. αν χρησιμοποιείτε διπλά εισαγωγικά, 1252 00:59:51,079 --> 00:59:53,580 που χρειάζονται για να τεθεί ένα διπλό αναφέρω για να σπάσουν τον κωδικό σας. 1253 00:59:53,580 --> 00:59:56,163 Αλλά όσο να ξεφύγουν τα πράγματα σωστά, δεν έχει σημασία. 1254 00:59:56,163 --> 00:59:59,220 Είναι ακριβώς πρόκειται να μεταφραστεί στο σωστό σύμβολο ούτως ή άλλως. 1255 00:59:59,220 --> 01:00:02,332 >> ΚΟΙΝΟ: Τι σημαίνει διαφυγή; 1256 01:00:02,332 --> 01:00:04,040 ALISON: Λοιπόν, όπως απολύμανση και διαφυγής. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Οι εξετάσεις που έχουμε, η μεγάλη XKCD κόμικ ότι σηκώσει όπου έχετε, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: Είναι η τελευταία διαφάνεια. 1261 01:00:16,670 --> 01:00:18,500 ALISON: Είναι η τελευταία διαφάνεια, πραγματικά; 1262 01:00:18,500 --> 01:00:20,200 Θεέ μου. 1263 01:00:20,200 --> 01:00:21,780 Εκεί πάμε, τέλεια. 1264 01:00:21,780 --> 01:00:27,900 Εντάξει, τόσο βασικά, μπορείτε να κάνετε την ένεση κάτι σε αυτό το ερώτημα SQL 1265 01:00:27,900 --> 01:00:30,560 όπου σπάει σας κώδικα, ή όπως ο David έδειξε 1266 01:00:30,560 --> 01:00:38,460 στην τάξη, αν έχουμε κάποια ενιαία Απόσπασμα 1 ισούται με 1 και αν ο κώδικας μας, 1267 01:00:38,460 --> 01:00:41,230 απλά να αντιγράψετε άμεσα ότι, και έχουμε μια τελική και μόνη προσφορά, 1268 01:00:41,230 --> 01:00:44,740 αυτό που συμβαίνει είναι παίρνουμε κάποια έκφραση που 1269 01:00:44,740 --> 01:00:48,680 αληθής, ότι θα ας κάποιος εισέλθετε στην βάση δεδομένων μας 1270 01:00:48,680 --> 01:00:51,720 και να πάρετε δεδομένα που δεν θέλουν να πάρουν. 1271 01:00:51,720 --> 01:00:54,240 Έτσι απολύμανση των εισόδων απλά σημαίνει να διασφαλίσουμε 1272 01:00:54,240 --> 01:00:57,680 ότι δραπετεύουν αυτά χαρακτήρες και για τον ορισμό τους 1273 01:00:57,680 --> 01:01:01,720 ως χαρακτήρες και όχι τα πράγματα ότι πρέπει να επιτραπεί 1274 01:01:01,720 --> 01:01:04,990 που πρέπει να ληφθούν κυριολεκτικά ως πρόταση SQL μας. 1275 01:01:04,990 --> 01:01:09,980 >> Έτσι, το μεγάλο πράγμα που είπαμε ότι εσείς θα πρέπει να χρησιμοποιείτε 1276 01:01:09,980 --> 01:01:13,650 ήταν HTML ειδικούς χαρακτήρες, το οποίο είναι κάτι 1277 01:01:13,650 --> 01:01:15,730 ότι ίσως να θέλετε να ρίξετε μια ματιά στο. 1278 01:01:15,730 --> 01:01:17,240 ΟΚ, διαγράψτε. 1279 01:01:17,240 --> 01:01:19,450 Οι τύποι δεδομένων, όλα αυτά θα είναι σε απευθείας σύνδεση. 1280 01:01:19,450 --> 01:01:23,510 Δεδομένου ότι έχουμε 15 λεπτά ακόμα, είμαι ακριβώς πρόκειται να πάει δεξιά μέσα από αυτό. 1281 01:01:23,510 --> 01:01:28,500 PHP και SQL, βασικά αυτό είναι μόλις είχαμε μια λειτουργία ερώτημα που 1282 01:01:28,500 --> 01:01:31,520 συνέβαλαν στην προστασία έναντι Αυτές οι κακόβουλες επιθέσεις. 1283 01:01:31,520 --> 01:01:33,970 Έτσι, κάθε φορά που χρησιμοποιείτε ερώτημα, κάναμε σίγουροι 1284 01:01:33,970 --> 01:01:36,560 ότι τα πράγματα έχουν εξυγιανθεί και εταζέρα. 1285 01:01:36,560 --> 01:01:41,070 >> MVC είναι μόνο ένα παράδειγμα σχεδίασης, έτσι μοντέλο, θέα, ελεγκτή. 1286 01:01:41,070 --> 01:01:44,200 Είναι απλά ένας τρόπος για να κρατήσει τα πράγματα ωραίο και χωρίσουν με τον ίδιο τρόπο 1287 01:01:44,200 --> 01:01:47,100 ότι έχουμε την τάση να παράγοντα έξω κώδικα σε λειτουργίες. 1288 01:01:47,100 --> 01:01:53,390 Αυτό είναι απλά ένα πλαίσιο σχεδιασμού ιστοσελίδων που σας επιτρέπει να κάνετε το ίδιο πράγμα. 1289 01:01:53,390 --> 01:01:54,760 Πάω να παρακάμψετε αυτό. 1290 01:01:54,760 --> 01:01:58,530 >> Αυτό είναι κάτι που εγώ θα ήταν σούπερ άνετα με. 1291 01:01:58,530 --> 01:02:01,132 Είναι ένα μεγάλο μικρό τραπέζι εκεί. 1292 01:02:01,132 --> 01:02:03,090 Σας δίνει τη λειτουργία παράδειγμα του μοντέλου. 1293 01:02:03,090 --> 01:02:05,473 Είμαι απλά να περάσει αυτό γιατί πραγματικά θέλουν Davin να είναι σε θέση να μιλήσει. 1294 01:02:05,473 --> 01:02:07,140 Εάν έχετε οποιεσδήποτε ερωτήσεις, παρακαλώ αισθανθείτε ελεύθερος. 1295 01:02:07,140 --> 01:02:07,931 Θα είμαι εδώ μετά. 1296 01:02:07,931 --> 01:02:10,360 Μόλις έρθει να μου μιλήσει. 1297 01:02:10,360 --> 01:02:13,380 Με αυτό, έχουμε HTTP καταστάσεις. 1298 01:02:13,380 --> 01:02:16,270 Και Davin που πρόκειται να φυσήξει μέσω αυτού σε 15 λεπτά. 1299 01:02:16,270 --> 01:02:17,560 Αυτό πρόκειται να είναι μεγάλη. 1300 01:02:17,560 --> 01:02:18,893 >> Davin: Εντάξει. 1301 01:02:18,893 --> 01:02:20,312 Χμ, μικρόφωνο σας; 1302 01:02:20,312 --> 01:02:22,210 Ναι. 1303 01:02:22,210 --> 01:02:23,336 Λυπάμαι. 1304 01:02:23,336 --> 01:02:24,460 ALISON: τρόπος για να προετοιμαστεί. 1305 01:02:24,460 --> 01:02:25,335 Davin: Όχι, είμαι έτοιμος. 1306 01:02:25,335 --> 01:02:25,860 Είμαι έτοιμος. 1307 01:02:25,860 --> 01:02:28,790 Ας το κάνουμε αυτό. 1308 01:02:28,790 --> 01:02:29,290 Είναι έτοιμος. 1309 01:02:29,290 --> 01:02:30,041 ΟΚ. 1310 01:02:30,041 --> 01:02:30,540 Λυπάμαι. 1311 01:02:30,540 --> 01:02:31,664 Θα χυθεί καφέ για τον εαυτό μου. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Δεν ξέρω αν είμαι περισσότερο αναστατωμένος ότι φαίνομαι ανόητος, 1314 01:02:38,210 --> 01:02:40,600 ή ότι δεν έχω πια τον καφέ. 1315 01:02:40,600 --> 01:02:44,480 Τέλος πάντων, απλά μια γρήγορη ανακοίνωση σχετικά με το φύλλο εσείς έχετε. 1316 01:02:44,480 --> 01:02:47,994 Έτσι, αυτό το φύλλο εσείς έχετε δεν είναι ο επίσημος τι είναι για το κουίζ. 1317 01:02:47,994 --> 01:02:49,660 Αυτή είναι η επίσημη τι στο κουίζ. 1318 01:02:49,660 --> 01:02:52,520 Επίσης, στην ιστοσελίδα της, λέμε που, εντάξει, αυτό θα είναι το κουίζ. 1319 01:02:52,520 --> 01:02:55,020 Έτσι, στο μικρό σκονάκι έχετε, δεν είναι επίσημο. 1320 01:02:55,020 --> 01:02:56,690 Και υπάρχουν λάθη σε αυτό. 1321 01:02:56,690 --> 01:03:01,490 Έτσι, καλύτερα να μην τυφλά το χρησιμοποιήσετε. 1322 01:03:01,490 --> 01:03:04,390 Οπότε ναι, αυτό είναι αυτό. 1323 01:03:04,390 --> 01:03:05,980 Ας μπει σε αυτό το πραγματικά γρήγορα. 1324 01:03:05,980 --> 01:03:07,420 >> Έτσι καταστάσεις HTTP. 1325 01:03:07,420 --> 01:03:10,430 Λοιπόν, τι συμβαίνει όταν η ιστοσελίδα, όλα είναι εντάξει. 1326 01:03:10,430 --> 01:03:11,144 Όλα είναι ΟΚ. 1327 01:03:11,144 --> 01:03:13,310 Τα πάντα έρχεται πίσω στο σας με τον τρόπο που θέλετε να. 1328 01:03:13,310 --> 01:03:15,370 Μπορείτε να πάρετε ένα 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, όπου έχουμε δει ότι πριν 301; 1330 01:03:19,250 --> 01:03:20,890 Περιμένετε, τι συμβαίνει; 1331 01:03:20,890 --> 01:03:23,250 Λυπάμαι. 1332 01:03:23,250 --> 01:03:24,980 Είδαμε i διάλεξη κασσίτερου κατά τη διάρκεια της ασφάλειας. 1333 01:03:24,980 --> 01:03:30,690 Έτσι, κατά τη διάρκεια της ασφάλειας, έτσι ώστε αν ο David πληκτρολογήσει στο http και στη συνέχεια προσπάθησε να πάει στο cs50.net, 1334 01:03:30,690 --> 01:03:31,940 θα πάμε να δούμε 301 κινήθηκε. 1335 01:03:31,940 --> 01:03:32,440 Γιατί; 1336 01:03:32,440 --> 01:03:35,570 Επειδή πρόκειται να ανακατευθύνει μπορείτε αυτόματα να HTTPS μας. 1337 01:03:35,570 --> 01:03:38,649 >> Έτσι μετακόμισε 301, μόλις αυτό είναι βασικά μια ανακατεύθυνση. 1338 01:03:38,649 --> 01:03:40,190 Και μπορείτε να το σκεφτείτε σαν αυτό. 1339 01:03:40,190 --> 01:03:43,790 Οποιαδήποτε από τις καταστάσεις που ξεκινούν με 2, η αυτά είναι σαν, εντάξει, όλα είναι εντάξει. 1340 01:03:43,790 --> 01:03:46,530 Οποιαδήποτε από τις καταστάσεις που ξεκινούν με 3, αυτά είναι ανακατεύθυνση. 1341 01:03:46,530 --> 01:03:49,571 Καταστάσεις που αρχίζουν με 4, ότι μέσα υπάρχει κάποιο είδος λάθους πελάτη. 1342 01:03:49,571 --> 01:03:52,440 Καταστάσεις που αρχίζουν με 5, ότι είναι κάποιο είδος του σφάλματος διακομιστή. 1343 01:03:52,440 --> 01:03:54,680 Έτσι, το είδος των χωρίσει Οι καταστάσεις όπως αυτή. 1344 01:03:54,680 --> 01:03:59,120 Έτσι δεν είναι 304 δεν έχουν τροποποιηθεί, έτσι ώστε σε σας server.c π-σύνολα, γι 'αυτό ας λέτε 1345 01:03:59,120 --> 01:04:00,600 φορτωμένο cat.html. 1346 01:04:00,600 --> 01:04:03,360 Τα πάντα έρχεται πίσω, μπορείτε να πάρετε 200s, εντάξει, μεγάλη. 1347 01:04:03,360 --> 01:04:04,540 >> Ας πούμε ότι έχετε να την ανανεώσετε. 1348 01:04:04,540 --> 01:04:07,310 Λοιπόν, μέσα σε αυτό cat.html, έχετε ένα JPEG. 1349 01:04:07,310 --> 01:04:09,520 Λοιπόν, αυτό δεν είναι JPEG πρόκειται να πάρει reloaded. 1350 01:04:09,520 --> 01:04:12,140 Δεν πρόκειται να δημοσιεύσετε ένα άλλο GET αίτηση στον server, 1351 01:04:12,140 --> 01:04:13,980 και στη συνέχεια να πάρει όλες τις πληροφορίες πίσω. 1352 01:04:13,980 --> 01:04:17,560 Δεν πρόκειται απλά be-- ότι η εικόνα είναι πρόκειται να αποθηκευτεί προσωρινά στον υπολογιστή σας. 1353 01:04:17,560 --> 01:04:19,540 Και έτσι η εικόνα θα είναι 304. 1354 01:04:19,540 --> 01:04:20,720 Έτσι δεν έχουν τροποποιηθεί. 1355 01:04:20,720 --> 01:04:24,600 Αν, λοιπόν, έχετε κλείσει, σαφής μπισκότα, και στη συνέχεια, ανανεώστε 1356 01:04:24,600 --> 01:04:27,490 και να προσπαθήσει να φορτώσει αυτή τη σελίδα και πάλι, θα πάμε να δούμε 200s. 1357 01:04:27,490 --> 01:04:28,910 Δεν πρόκειται να δούμε ότι 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, κακή αίτημα, το πραγματικό γρήγορη, όπως αν 1359 01:04:32,340 --> 01:04:34,880 επρόκειτο να στείλει ένα JSON αντικείμενο στο διακομιστή 1360 01:04:34,880 --> 01:04:38,090 και το αντικείμενο JSON σας ήταν εσφαλμένη, θα δείτε κάτι σαν αυτό. 1361 01:04:38,090 --> 01:04:39,000 403, απαγορεύεται. 1362 01:04:39,000 --> 01:04:40,330 Πότε θα δούμε ένα απαγορευμένο; 1363 01:04:40,330 --> 01:04:41,394 Μάλλον Μάλλον; 1364 01:04:41,394 --> 01:04:42,060 ΚΟΙΝΟ: Chmod. 1365 01:04:42,060 --> 01:04:42,950 Davin: Chmod, ναι. 1366 01:04:42,950 --> 01:04:44,730 Έτσι, δεν έχετε ορίσει δικαιώματα σωστά. 1367 01:04:44,730 --> 01:04:45,577 404, δεν βρέθηκε. 1368 01:04:45,577 --> 01:04:46,410 Είναι απλά δεν είναι εκεί. 1369 01:04:46,410 --> 01:04:48,670 Έτσι, αν πληκτρολογήσετε λάθος διεύθυνση URL. 1370 01:04:48,670 --> 01:04:53,500 500, εσωτερικό σφάλμα διακομιστή, ο διακομιστής πιθανόν να μην έχει ρυθμιστεί σωστά. 1371 01:04:53,500 --> 01:04:56,260 Κάτι όχι στο τέλος σας, αλλά κάτι από την πλευρά του διακομιστή. 1372 01:04:56,260 --> 01:04:57,240 Και 503; 1373 01:04:57,240 --> 01:04:59,502 Πολλοί άνθρωποι είδαν 503s στο τελευταίο π-σετ. 1374 01:04:59,502 --> 01:05:00,460 Πότε θα συμβεί αυτό; 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Άκουσα ψιθύρους. 1377 01:05:05,660 --> 01:05:07,767 >> ΚΟΙΝΟ: Όταν το Google αποφασίζει είστε ένα ρομπότ. 1378 01:05:07,767 --> 01:05:10,350 Davin: Ναι, όταν η Google αποφασίζει είστε ένα ρομπότ, μπορείτε να πάρετε 503s. 1379 01:05:10,350 --> 01:05:11,560 Έτσι, αυτό είναι μια υπερφόρτωση. 1380 01:05:11,560 --> 01:05:14,620 Εάν έχετε ζητήσει από το διακομιστή πάρα πολύ, είναι συνήθως παροδική. 1381 01:05:14,620 --> 01:05:15,560 Και οι περισσότεροι από εσάς θα παρατηρήσατε. 1382 01:05:15,560 --> 01:05:16,185 Έτσι είδα 503. 1383 01:05:16,185 --> 01:05:19,282 Μπορεί να έχετε λάβει ένα μικρό διάλειμμα, τότε οι 503s πήγε μακριά, 1384 01:05:19,282 --> 01:05:20,490 και όλα ήταν εντάξει. 1385 01:05:20,490 --> 01:05:26,640 >> Gabe: Real γρήγορα, όταν εσείς δεν έχετε 500 σε μάλλον που αυτό το τελευταίο πρόβλημα; 1386 01:05:26,640 --> 01:05:27,954 Ναι; 1387 01:05:27,954 --> 01:05:30,906 >> ΚΟΙΝΟ: Συνήθως, εάν η server έχει ένα αρχείο άστοχες 1388 01:05:30,906 --> 01:05:34,650 ή [δεν ακούγεται] τους μηχανή [δεν ακούγεται]. 1389 01:05:34,650 --> 01:05:38,870 >> Gabe: Έτσι θα μπορούσε να είναι μια διαμόρφωση θέμα στην PHP σας στον server σας. 1390 01:05:38,870 --> 01:05:42,250 Αλλά θα μπορούσε να είναι απλώς κάτι σαν ένα ερωτηματικό που ξέχασε σας. 1391 01:05:42,250 --> 01:05:44,130 Αν είστε πληκτρολογώντας PHP, κάποια εσφαλμένη σύνταξη 1392 01:05:44,130 --> 01:05:46,000 μπορεί να σας πάρει κάτι τέτοιο. 1393 01:05:46,000 --> 01:05:46,960 Εντάξει; 1394 01:05:46,960 --> 01:05:48,610 >> Davin: Cool. 1395 01:05:48,610 --> 01:05:51,180 Θέλεις να κάνουν ακριβώς μέχρι AJAX; 1396 01:05:51,180 --> 01:05:52,950 >> Gabe: [δεν ακούγεται]. 1397 01:05:52,950 --> 01:05:53,450 Davin: Εντάξει. 1398 01:05:53,450 --> 01:05:54,230 Έτσι ποια είναι η DOM; 1399 01:05:54,230 --> 01:05:55,290 Τι σημαίνει για το DOM; 1400 01:05:55,290 --> 01:05:56,990 >> ΚΟΙΝΟ: Έγγραφο μοντέλο αντικειμένου. 1401 01:05:56,990 --> 01:05:57,490 Davin: Νίκαια. 1402 01:05:57,490 --> 01:06:00,775 Και γιατί δεν μας αρέσει; 1403 01:06:00,775 --> 01:06:02,670 Awesome. 1404 01:06:02,670 --> 01:06:06,651 Δεξιά, γι 'αυτό ακριβώς μας επιτρέπει να έχουν πρόσβαση η HTML, πρόσβαση στη σελίδα μας πολύ γρήγορα. 1405 01:06:06,651 --> 01:06:07,150 Γιατί; 1406 01:06:07,150 --> 01:06:09,980 Επειδή είμαστε θεραπεία μας σελίδα, θεραπεία ετικέτες HTML μας, 1407 01:06:09,980 --> 01:06:11,730 θεραπεία τα πάντα σαν να είναι αντικείμενα. 1408 01:06:11,730 --> 01:06:13,710 Αν είμαστε να τους μεταχειρίζονται σαν να είσαι αντικείμενα, τότε τι μπορούμε να κάνουμε; 1409 01:06:13,710 --> 01:06:15,210 Λοιπόν, μπορούμε να καλέσουμε τις λειτουργίες τους. 1410 01:06:15,210 --> 01:06:16,460 Και αυτό είναι σημαντικό γιατί; 1411 01:06:16,460 --> 01:06:19,200 Λοιπόν, επειδή θα πάμε να χρησιμοποιήσετε Την Javascript για να ενημερώσετε HTML μας, 1412 01:06:19,200 --> 01:06:20,500 ενημερώσετε αυτά τα αντικείμενα. 1413 01:06:20,500 --> 01:06:23,869 Έτσι, αν τα μεταχειριζόμαστε σαν αντικείμενα, Στη συνέχεια, μπορείτε να καλέσετε τις λειτουργίες τους. 1414 01:06:23,869 --> 01:06:26,660 Πάω να μπει σε αυτό το λίγο περισσότερο όταν πάω σε ένα JavaScript, 1415 01:06:26,660 --> 01:06:30,510 αλλά έχετε όλοι δει σαν document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Έτσι έγγραφο σας στοιχείο, να πάρει το στοιχείο με ID, 1417 01:06:32,870 --> 01:06:35,087 έτσι ώστε να πάμε να δούμε για κάποιο αναγνωριστικό σε μια ετικέτα HTML. 1418 01:06:35,087 --> 01:06:36,920 Και στη συνέχεια, μπορείτε να κάνετε κάτι άλλο σε αυτό. 1419 01:06:36,920 --> 01:06:40,089 Για παράδειγμα, όπως document.body, Στη συνέχεια μπορείτε να προσθέσετε παιδί. 1420 01:06:40,089 --> 01:06:41,630 Έτσι θα πάμε να βρούμε το έγγραφο. 1421 01:06:41,630 --> 01:06:42,340 Έχετε το έγγραφο. 1422 01:06:42,340 --> 01:06:43,629 Θα πάμε για να βρει το σώμα. 1423 01:06:43,629 --> 01:06:44,420 Μπορείτε βρήκε το σώμα. 1424 01:06:44,420 --> 01:06:46,545 Και τότε, θα πάμε να καλέσει κάποια λειτουργία σε αυτό. 1425 01:06:46,545 --> 01:06:50,312 Έτσι επισυνάπτει παιδί, και μπορείτε να προσθέσετε κάποια HTML στο άκρο μέσα στο σώμα σας. 1426 01:06:50,312 --> 01:06:52,520 Έτσι, βασικά, είστε ακριβώς κατεργασία σαν ένα αντικείμενο. 1427 01:06:52,520 --> 01:06:54,515 Είσαι θεραπεία HTML ετικέτες σαν ένα αντικείμενο. 1428 01:06:54,515 --> 01:06:57,071 Και το κάνει πολύ εύκολο και γρήγορα να πάτε μέσω αυτών. 1429 01:06:57,071 --> 01:06:59,070 Αλλά σας επιτρέπει επίσης να καλέσετε λειτουργίες τους 1430 01:06:59,070 --> 01:07:04,410 ώστε να μπορείτε να χειριστείτε και να αλλάξετε τα στοιχεία. 1431 01:07:04,410 --> 01:07:10,162 >> Gabe: Με δεδομένο αυτό, γιατί είναι τέτοια JavaScript ένα ωραίο γλώσσα για να αλληλεπιδρούν με την HTML; 1432 01:07:10,162 --> 01:07:12,870 Οι πιθανότητες είναι, όταν οι άνθρωποι επιλέγουν η γλώσσα του προγράμματος περιήγησης, 1433 01:07:12,870 --> 01:07:14,990 για την πλευρά του πελάτη, JavaScript είναι πραγματικά ωραίο, 1434 01:07:14,990 --> 01:07:16,765 Είναι πολύ καλός στο χειρισμό αντικειμένων. 1435 01:07:16,765 --> 01:07:20,620 Και τα αντικείμενα είναι το είδος του αρέσει τα αντικείμενα που εμφανίζονται στην HTML, 1436 01:07:20,620 --> 01:07:23,940 γι 'αυτό είναι πολύ εύκολο για το JavaScript να κάνει αυτό το είδος του χειρισμού. 1437 01:07:23,940 --> 01:07:24,440 Davin: Νίκαια. 1438 01:07:24,440 --> 01:07:25,670 Έτσι, εδώ είναι μόνο ένα παράδειγμα. 1439 01:07:25,670 --> 01:07:29,020 Πιστεύω λοιπόν ότι σε ένα κουίζ του προηγούμενου έτους, ή ίσως και πριν από δύο χρόνια, εμείς 1440 01:07:29,020 --> 01:07:30,840 σας ζητηθεί να δημιουργήσετε ένα δέντρο. 1441 01:07:30,840 --> 01:07:32,660 Έτσι, αυτό είναι ακριβώς ό, τι θα κάνετε. 1442 01:07:32,660 --> 01:07:34,255 Έτσι, μπορείτε να ξεκινήσετε με το έγγραφο. 1443 01:07:34,255 --> 01:07:36,130 Και τότε βασικά Απλά κοιτάξτε τις ετικέτες. 1444 01:07:36,130 --> 01:07:38,100 Έτσι, αν δει κανείς, εμείς ξεκινήστε με μια ετικέτα HTML. 1445 01:07:38,100 --> 01:07:41,660 Και στη συνέχεια, μπορείτε να πάρετε ενδείξεις για το πώς να κάνετε αυτό με βάση την εσοχή. 1446 01:07:41,660 --> 01:07:43,870 Έτσι, το είδος της κεφαλής του διακλαδίζεται. 1447 01:07:43,870 --> 01:07:46,242 Μέσα στο κεφάλι, έχουμε μια άλλη ετικέτα για τον τίτλο. 1448 01:07:46,242 --> 01:07:47,450 Έτσι, λοιπόν, έχουμε μια ετικέττα τίτλου. 1449 01:07:47,450 --> 01:07:49,760 Και μέσα από αυτό, έχουμε κάποια χορδή. 1450 01:07:49,760 --> 01:07:52,210 Και έτσι εμείς εκπροσωπούμε ένα string σε έναν κύκλο. 1451 01:07:52,210 --> 01:07:54,010 Και όλες οι ετικέτες που βρίσκονται σε πλατείες. 1452 01:07:54,010 --> 01:07:56,270 >> Και αν δει κανείς, αν εμείς σκεφτείτε το σαν ένα δέντρο, 1453 01:07:56,270 --> 01:07:58,730 και ας πούμε ότι η HTML είναι ένας γονέας, τότε το κεφάλι και το σώμα 1454 01:07:58,730 --> 01:07:59,772 πρόκειται να είναι αδέλφια. 1455 01:07:59,772 --> 01:08:01,813 Είναι και οι δύο θα είναι τα παιδιά του εν λόγω γονέα. 1456 01:08:01,813 --> 01:08:03,620 Έτσι, επειδή είναι δύο αδέλφια, που είναι 1457 01:08:03,620 --> 01:08:06,590 πρόκειται να είναι το είδος του δίπλα στο κάθε άλλη στο μοντέλο μας δέντρο. 1458 01:08:06,590 --> 01:08:08,590 Και στη συνέχεια, μπορείτε βασικά κάνουν ακριβώς το ίδιο πράγμα. 1459 01:08:08,590 --> 01:08:13,512 Έτσι, δεν είναι δύσκολο, αλλά έχουμε ζητήσει ερωτήματα όπως αυτό πριν στο κουίζ. 1460 01:08:13,512 --> 01:08:15,220 Gabe: Μήπως κάποιος απορίες μέχρι στιγμής; 1461 01:08:15,220 --> 01:08:16,357 Είναι καλό; 1462 01:08:16,357 --> 01:08:16,856 Davin: Cool. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, εντάξει, τα καλά πράγματα. 1465 01:08:21,600 --> 01:08:24,069 Έτσι το JavaScript, τι είναι το JavaScript; 1466 01:08:24,069 --> 01:08:28,370 Λοιπόν, το JavaScript is-- είναι περίπλοκο, αλλά αυτά 1467 01:08:28,370 --> 01:08:30,727 είναι μερικά από τα κυριώτερα σημεία ότι θα πρέπει να έχετε κατά νου. 1468 01:08:30,727 --> 01:08:31,810 Κατ 'αρχάς, είναι χαλαρά πληκτρολογήσει. 1469 01:08:31,810 --> 01:08:33,529 Τι σημαίνει αυτό; 1470 01:08:33,529 --> 01:08:35,596 Έτσι PHP was-- ναι, τι συμβαίνει; 1471 01:08:35,596 --> 01:08:39,854 >> ΚΟΙΝΟ: Δεν χρειάζεται να ρητά κατάσταση τι είδους μεταβλητή είναι. 1472 01:08:39,854 --> 01:08:40,479 Davin: Τέλεια. 1473 01:08:40,479 --> 01:08:43,270 Έτσι, ο ίδιος είπε ότι δεν χρειάζεται να αναφέρει ρητά τον τύπο της μεταβλητής. 1474 01:08:43,270 --> 01:08:44,160 Αυτό είναι ακριβώς σωστό. 1475 01:08:44,160 --> 01:08:49,700 Έτσι, σε C, αν είχα int i ισούται με 50, Στη συνέχεια σε PHP, είναι ακριβώς όπως αυτό, $ i, 1476 01:08:49,700 --> 01:08:50,550 ισούται με 50. 1477 01:08:50,550 --> 01:08:54,319 Στη συνέχεια, το JavaScript, ποια θα ήταν η κλήση είναι; 1478 01:08:54,319 --> 01:08:55,260 Var, σωστά; 1479 01:08:55,260 --> 01:08:56,566 Θα ήθελα να είναι σαν var i ισούται με 50. 1480 01:08:56,566 --> 01:08:58,649 Αλλά δεν χρειάζεται να είναι όπως, εντάξει, αυτό είναι ένα int. 1481 01:08:58,649 --> 01:09:00,350 Εντάξει, αυτό είναι ένα string. 1482 01:09:00,350 --> 01:09:01,731 Δεν χρειάζεται να το κάνουμε αυτό. 1483 01:09:01,731 --> 01:09:02,939 Είναι μια ερμηνευμένη γλώσσα. 1484 01:09:02,939 --> 01:09:04,904 Λοιπόν, τι σημαίνει αυτό; 1485 01:09:04,904 --> 01:09:06,340 >> ΚΟΙΝΟ: Δεν καταρτίζονται. 1486 01:09:06,340 --> 01:09:10,470 >> Davin: Τι δεν καταρτίζονται σημαίνει; 1487 01:09:10,470 --> 01:09:11,392 Ναι; 1488 01:09:11,392 --> 01:09:15,336 >> ΚΟΙΝΟ: Δεν έχετε για την αναδιάρθρωση του κώδικα 1489 01:09:15,336 --> 01:09:18,294 για να πάρει έτοιμο για ο υπολογιστής για να το τρέξει. 1490 01:09:18,294 --> 01:09:23,144 Είναι μόλις ληφθεί κατά το χρόνο της εκτέλεση και ο υπολογιστής [δεν ακούγεται]. 1491 01:09:23,144 --> 01:09:25,560 Davin: Ναι, γι 'αυτό πρόκειται να διέρχονται μέσω διερμηνέα. 1492 01:09:25,560 --> 01:09:26,750 Αλλά είστε ακριβώς δεξιά. 1493 01:09:26,750 --> 01:09:28,319 Έτσι, ποτέ δεν πρόκειται για να το υπολογίσουν, σωστά; 1494 01:09:28,319 --> 01:09:30,399 Όταν κάνατε σας PHP και JavaScript κώδικα, 1495 01:09:30,399 --> 01:09:31,365 ποτέ δεν ονομάζεται μεταγλώττιση. 1496 01:09:31,365 --> 01:09:33,779 Ποτέ δεν ζήτησε κάτι σαν κάνει ή κάτι τέτοιο. 1497 01:09:33,779 --> 01:09:34,800 Αυτό συμβαίνει γιατί έχει ερμηνευθεί. 1498 01:09:34,800 --> 01:09:37,319 Έτσι, κάθε φορά που περνά μέσα από το πρόγραμμα περιήγησης, περνά μέσω διερμηνέα. 1499 01:09:37,319 --> 01:09:40,370 Και αυτό πρόκειται να το ερμηνεύσει ακριβώς σε πραγματικό χρόνο αμέσως για σας. 1500 01:09:40,370 --> 01:09:43,770 Έτσι ποια είναι τα θετικά και τα αρνητικά να έχουν μια ερμηνευμένη γλώσσα 1501 01:09:43,770 --> 01:09:45,258 και έχοντας ένα μεταγλωττισμένο γλώσσα; 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Έτσι compiling-- ναι, τι συμβαίνει; 1504 01:09:50,540 --> 01:09:52,444 >> ΚΟΙΝΟ: Ερμηνεύθηκε είναι πιο αργή. 1505 01:09:52,444 --> 01:09:53,319 Davin: Με ποια έννοια; 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> Κοινό: Αφού μεταγλώττιση, δεν έχετε 1508 01:09:59,091 --> 01:10:04,400 να κάνει οποιαδήποτε επιπλέον μέτρα για να εκτελέσει αυτό, ενώ αυτό το [δεν ακούγεται]. 1509 01:10:04,400 --> 01:10:05,570 >> Davin: Δεξιά, τέλεια. 1510 01:10:05,570 --> 01:10:08,386 Έτσι, αυτό που είπατε είναι βασικά ότι η μεταγλώττιση, 1511 01:10:08,386 --> 01:10:10,760 κατά τη μεταγλώττιση, έχετε ένα Πολλοί εκ των προτέρων το κόστος, έτσι δεν είναι; 1512 01:10:10,760 --> 01:10:11,760 Θα πάμε για να το υπολογίσουν. 1513 01:10:11,760 --> 01:10:13,750 Αλλά μετά θα το υπολογίσουν, ο compiler πρόκειται να βελτιστοποιήσετε. 1514 01:10:13,750 --> 01:10:14,840 Είναι πρόκειται να είναι γρήγορη. 1515 01:10:14,840 --> 01:10:16,170 Είναι πρόκειται να βασικά είναι τόσο γρήγορα όσο μπορεί να είναι. 1516 01:10:16,170 --> 01:10:18,830 Με τη διερμηνεία, ποτέ δεν έχουν αυτό το αρχικό κόστος. 1517 01:10:18,830 --> 01:10:22,260 Μάλλον, πρόκειται να είναι ελαφρώς πιο αργή κάθε φορά που θα το ερμηνεύσει. 1518 01:10:22,260 --> 01:10:24,940 Και θα πάμε να πρέπει να ερμηνεύουν κάθε φορά. 1519 01:10:24,940 --> 01:10:27,114 Έτσι, αντί να έχει αυτό ένα χρονικό κόστος, τώρα είστε 1520 01:10:27,114 --> 01:10:29,530 Θα πρέπει να το ερμηνεύσει κάθε φορά που η σελίδα καθιστά. 1521 01:10:29,530 --> 01:10:31,890 >> Έτσι, οι διερμηνείς είναι καλό γιατί δεν χρειάζεται να το υπολογίσουν, 1522 01:10:31,890 --> 01:10:33,980 αλλά είναι κακό σε αυτό κάθε φορά που γίνεται φόρτωση της σελίδας, είναι 1523 01:10:33,980 --> 01:10:35,771 πρόκειται να πρέπει να ερμηνεύσουμε αυτή τη JavaScript. 1524 01:10:35,771 --> 01:10:40,520 Και πρόκειται να τρέξει λίγο πιο αργά ό, τι αν ήταν να το υπολογίσουν. 1525 01:10:40,520 --> 01:10:43,044 Σας επιτρέπει να communicate-- Περίμενε. 1526 01:10:43,044 --> 01:10:44,960 Χρησιμοποιείται για να χειραγωγήσουν τον περιεχόμενο και την εμφάνιση. 1527 01:10:44,960 --> 01:10:46,043 Εμείς απλά μίλησε γι 'αυτό. 1528 01:10:46,043 --> 01:10:47,250 Χρησιμοποιεί το DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, θα μπει σε AJAX σε λίγο. 1530 01:10:49,930 --> 01:10:51,520 Και στη συνέχεια, είναι πλευρά του πελάτη. 1531 01:10:51,520 --> 01:10:53,110 Έτσι PHP είναι πλευρά του server. 1532 01:10:53,110 --> 01:10:54,360 JavaScript είναι την πλευρά του πελάτη. 1533 01:10:54,360 --> 01:10:57,780 Τι είναι θετικοί σε αυτό; 1534 01:10:57,780 --> 01:10:58,280 Είναι λέει. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Είναι πιο γρήγορα, σωστά; 1537 01:11:02,780 --> 01:11:05,282 Επειδή δεν έχετε to-- είναι πιο γρήγορο. 1538 01:11:05,282 --> 01:11:07,490 Δεν χρειάζεται να επικοινωνούν με κάποια άλλη συσκευή. 1539 01:11:07,490 --> 01:11:08,790 Εάν είστε ακριβώς για σας πελάτη, ποτέ δεν είσαι 1540 01:11:08,790 --> 01:11:11,280 πρόκειται να πρέπει να πάει και να δούμε τι είναι στο διακομιστή 1541 01:11:11,280 --> 01:11:13,150 και στη συνέχεια να υποβάλει σχετική έκθεση ή κάτι τέτοιο. 1542 01:11:13,150 --> 01:11:15,410 Έτσι πλευρά του πελάτη τείνει να είναι λίγο πιο γρήγορα. 1543 01:11:15,410 --> 01:11:17,910 >> Gabe: Ναι, αλλά αυτό δεν σημαίνει ότι η PHP είναι 1544 01:11:17,910 --> 01:11:20,440 ταχύτερα από ό, τι το JavaScript ή κάτι παρόμοιο. 1545 01:11:20,440 --> 01:11:23,270 Τρέχουν είδος του στην ίδια ταχύτητα επειδή είναι τόσο 1546 01:11:23,270 --> 01:11:24,490 ερμηνευμένες γλώσσες. 1547 01:11:24,490 --> 01:11:26,680 Το πράγμα που είναι αργή εδώ είναι το αίτημα. 1548 01:11:26,680 --> 01:11:28,870 Έτσι είστε πραγματικά πρόκειται σε όλη τη διαδρομή πάνω από τη Βραζιλία 1549 01:11:28,870 --> 01:11:31,460 να πάρετε κάποιες πληροφορίες που ζει εκεί. 1550 01:11:31,460 --> 01:11:34,590 Αλλά η PHP και JavaScript, που είδος εκτελούνται στην ίδια ταχύτητα. 1551 01:11:34,590 --> 01:11:37,930 Δεν είναι ότι το ένα είναι ταχύτερα από ό, τι το άλλο. 1552 01:11:37,930 --> 01:11:40,600 Αυτό, επίσης, τέχνασμα ερώτηση εδώ. 1553 01:11:40,600 --> 01:11:47,338 Έτσι, το JavaScript δεν γίνεται ποτέ κώδικα μηχανής, αληθής ή ψευδής; 1554 01:11:47,338 --> 01:11:48,590 >> ΚΟΙΝΟ: Λάθος. 1555 01:11:48,590 --> 01:11:49,090 Gabe: Λάθος. 1556 01:11:49,090 --> 01:11:51,298 Πρέπει να γίνει μηχανή Κωδικός επειδή κώδικα μηχανής είναι 1557 01:11:51,298 --> 01:11:53,210 Το μόνο πράγμα που το μηχάνημα καταλαβαίνει. 1558 01:11:53,210 --> 01:11:55,800 Ακόμα κι αν δεν είναι καταρτίζονται, εξακολουθεί να γίνεται κώδικα μηχανής 1559 01:11:55,800 --> 01:11:59,120 επειδή ο διερμηνέας είναι απλά ένα πρόγραμμα που πηγαίνει γραμμή προς γραμμή 1560 01:11:59,120 --> 01:12:02,170 και μετατρέπει αυτή τη γραμμή σε κάτι που ο υπολογιστής κατανοεί. 1561 01:12:02,170 --> 01:12:02,825 Εντάξει; 1562 01:12:02,825 --> 01:12:03,325 Cool. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> Davin: Εδώ είναι μόνο ένα πολύ βασικό Hello World πρόγραμμα JavaScript. 1565 01:12:12,890 --> 01:12:15,590 Έτσι, δεν ξέρω if-- έχετε δει αυτό. 1566 01:12:15,590 --> 01:12:17,630 Αλλά έχετε μόνο HTML εδώ. 1567 01:12:17,630 --> 01:12:21,020 Και αντί για την πραγματική εισαγωγή η JavaScript στις ετικέτες σενάριο, 1568 01:12:21,020 --> 01:12:22,810 έτσι θα κανονικά το βάλετε στο κεφάλι. 1569 01:12:22,810 --> 01:12:24,030 Έχετε ετικέτες σενάριο. 1570 01:12:24,030 --> 01:12:24,870 Μπορείτε να πέσει εκεί. 1571 01:12:24,870 --> 01:12:28,350 Όλοι έχουμε κάνει εδώ έχουμε συνδέονται in-- έτσι έχουμε συνδέονται σε ένα αρχείο JavaScript 1572 01:12:28,350 --> 01:12:29,137 σαν αυτό. 1573 01:12:29,137 --> 01:12:30,470 Και όλοι έχετε κάνει αυτό, έτσι δεν είναι; 1574 01:12:30,470 --> 01:12:34,740 Έτσι, όταν ήταν με τη χρήση jQuery και underscore.js στο τελευταίο π-σετ, 1575 01:12:34,740 --> 01:12:38,700 δεν έχετε τόνους κώδικα σε ετικέτες script σας, μέσα στο κεφάλι σας. 1576 01:12:38,700 --> 01:12:41,415 Θα μπορούσατε να το κάνετε αυτό, αλλά, αντίθετα, είστε απλά συνδέοντάς σε. 1577 01:12:41,415 --> 01:12:43,540 Και εσείς το συνδέει σε Ακριβώς όπως κάνετε με CSS. 1578 01:12:43,540 --> 01:12:50,186 Γι 'αυτό ακριβώς κάνει πιο εύκολο να διαβάσει, έτσι κωδικός σας δεν είναι σαν μακρύς 1.000 γραμμές 1579 01:12:50,186 --> 01:12:52,310 με τους τόνους του λειτουργίες που δεν μπορεί να χρησιμοποιεί. 1580 01:12:52,310 --> 01:12:53,518 >> Αντ 'αυτού, μπορείτε απλά να συνδέσετε σε. 1581 01:12:53,518 --> 01:12:55,050 Είναι το compartmentalizes. 1582 01:12:55,050 --> 01:13:00,110 Είναι σαν να γράφει κάποιο αρχείο κεφαλίδας, και στη συνέχεια, συμπεριλαμβανομένης της εν λόγω αρχείο κεφαλίδας στην Γ 1583 01:13:00,110 --> 01:13:01,620 Σκεφτείτε το σαν αυτό. 1584 01:13:01,620 --> 01:13:02,680 Έτσι, αυτό που κάνει αυτό το κάνει; 1585 01:13:02,680 --> 01:13:04,560 Λοιπόν, αυτό πρόκειται να τρέξει. 1586 01:13:04,560 --> 01:13:05,410 Είναι πρόκειται να προειδοποιήσει. 1587 01:13:05,410 --> 01:13:08,020 Έτσι θα πάμε να πάρετε μια μικρή pop up που ονομάζεται παγκόσμια γεια. 1588 01:13:08,020 --> 01:13:11,420 Γρήγορη ερώτηση, απλά ελέγχου ασφαλείας, έτσι ώστε να δείτε εδώ στο σώμα, 1589 01:13:11,420 --> 01:13:13,160 λένε σώμα, HTML εδώ. 1590 01:13:13,160 --> 01:13:14,080 Τι έρχεται πρώτο; 1591 01:13:14,080 --> 01:13:16,864 Μπορώ να δω το σώμα, HTML εδώ, ή μπορώ να δω την ειδοποίηση για πρώτη φορά; 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> ΚΟΙΝΟ: ειδοποίησης. 1594 01:13:20,820 --> 01:13:21,470 >> Davin: Δεξιά. 1595 01:13:21,470 --> 01:13:22,110 Λέει σε εγρήγορση. 1596 01:13:22,110 --> 01:13:22,610 Γιατί; 1597 01:13:22,610 --> 01:13:24,470 >> ΚΟΙΝΟ: Επειδή σας πάει από πάνω προς τα κάτω. 1598 01:13:24,470 --> 01:13:25,600 >> Davin: Ναι. 1599 01:13:25,600 --> 01:13:26,100 Τέλεια. 1600 01:13:26,100 --> 01:13:29,207 Έτσι, λέει, θα πάτε από πάνω προς τα κάτω μέρος, η οποία είναι απολύτως σωστή. 1601 01:13:29,207 --> 01:13:30,790 Θα πάμε για να πάει από πάνω προς τα κάτω. 1602 01:13:30,790 --> 01:13:34,790 Και σε JavaScript, jQuery, έχετε ένα λειτουργία που είναι σαν onload, ή έτοιμα, 1603 01:13:34,790 --> 01:13:38,030 και ότι λέει, εντάξει, περιμένετε έως ότου όλη αυτή η HTML έχει φορτωθεί. 1604 01:13:38,030 --> 01:13:39,580 Και στη συνέχεια, καλέστε το JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Επειδή δεν έχουμε εδώ ότι, η το πρώτο πράγμα που πρόκειται να συμβεί 1606 01:13:42,190 --> 01:13:43,920 Είναι πρόκειται να πάει από πάνω προς τα κάτω. 1607 01:13:43,920 --> 01:13:46,310 Είναι πρόκειται να χτυπήσει ότι JS κλήση, πρόκειται να προειδοποιήσει. 1608 01:13:46,310 --> 01:13:49,510 Μετά από αυτό κάνετε κλικ στο κουμπί OK, ότι η ειδοποίηση πάει μακριά. 1609 01:13:49,510 --> 01:13:53,600 Στη συνέχεια, πρόκειται να δείξει σας το σώμα HTML εδώ. 1610 01:13:53,600 --> 01:13:54,590 Νίκαιας. 1611 01:13:54,590 --> 01:14:00,880 >> Εντάξει, έτσι απλά πραγματικά γρήγορα, γράψιμο σε JavaScript είναι εξαιρετικά γρήγορη. 1612 01:14:00,880 --> 01:14:02,710 Προκειμένου να δηλώσουν μια μεταβλητή, το όνομα var. 1613 01:14:02,710 --> 01:14:07,070 Έτσι, σε C, έχετε int i, έχετε να δηλώσουν τι είδους τύπος είναι. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript, var. 1616 01:14:08,755 --> 01:14:09,630 Μιλήσαμε για αυτό. 1617 01:14:09,630 --> 01:14:11,020 Εντάξει, ας πάμε. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, ίδιο πράγμα. 1619 01:14:12,510 --> 01:14:14,230 Το ίδιο πράγμα. 1620 01:14:14,230 --> 01:14:18,165 Δηλώσεις λειτουργία, έτσι ακριβώς όπως έχετε δει σε C. 1621 01:14:18,165 --> 01:14:21,290 Το μόνο πράγμα διαφορετικό είναι έτσι όταν μπορείτε να πάρετε σε άλλες γλώσσες προγραμματισμού, 1622 01:14:21,290 --> 01:14:24,780 όπως όταν παίρνετε 51 επόμενο εξάμηνο και κάνεις με OCaml, 1623 01:14:24,780 --> 01:14:26,690 μπορείτε να ασχοληθεί με ανώνυμο λειτουργίες. 1624 01:14:26,690 --> 01:14:28,240 Έτσι, αυτό είναι ακριβώς αυτό που έχετε εδώ. 1625 01:14:28,240 --> 01:14:31,560 Έτσι θέλετε να βάλετε στο άθροισμα, κάποιο είδος του ποσού αξίας. 1626 01:14:31,560 --> 01:14:33,870 Αλλά θα μπορούσε να κάνει μόνο μία φορά. 1627 01:14:33,870 --> 01:14:37,310 Έτσι, δεν θέλετε να το ονομάσουμε λειτουργία άθροισμα, να δώσει μια δήλωση της συνάρτησης. 1628 01:14:37,310 --> 01:14:39,830 Αντ 'αυτού, μπορείτε απλά να το χρησιμοποιήσετε ως ανώνυμη συνάρτηση. 1629 01:14:39,830 --> 01:14:42,469 Και έχετε δει αυτό το πολύ. 1630 01:14:42,469 --> 01:14:44,510 Θα δείτε ένα παράδειγμα Αυτό σε μερικές διαφάνειες. 1631 01:14:44,510 --> 01:14:45,597 Ναι, θα δούμε. 1632 01:14:45,597 --> 01:14:46,430 Gabe: Καλή ερώτηση. 1633 01:14:46,430 --> 01:14:50,660 Πότε μπορεί να θέλετε να χρησιμοποιήσετε μια ανώνυμη συνάρτηση εδώ; 1634 01:14:50,660 --> 01:14:54,111 Βασικά, όταν θέλεις κάτι, σαν ένα γεγονός, για να συμβεί αυτό. 1635 01:14:54,111 --> 01:14:55,860 Έτσι, όταν το ποντίκι είναι κλικ, για παράδειγμα, 1636 01:14:55,860 --> 01:14:57,790 θέλετε κάποια λειτουργία να ονομάζεται. 1637 01:14:57,790 --> 01:15:00,570 Έτσι περνάτε στην εκδήλωση χειρισμού, περνάτε στην εκδήλωση, 1638 01:15:00,570 --> 01:15:02,870 είδος, η λειτουργία που Θέλετε να ονομάζεται. 1639 01:15:02,870 --> 01:15:04,710 Και τι περνάτε είναι όπως, στο τέλος 1640 01:15:04,710 --> 01:15:08,757 της ημέρας, μόλις ένας δείκτης για η εντολή, προς την λειτουργία. 1641 01:15:08,757 --> 01:15:11,090 Έτσι δεν είναι σαν να περνάτε το σύνολο κώδικας, όπως 1642 01:15:11,090 --> 01:15:12,173 ένα δείκτη προς τη λειτουργία. 1643 01:15:12,173 --> 01:15:17,871 Και τότε, όταν κάποιος κάνει κλικ στο ποντίκι, τότε η λειτουργία φώναξαν. 1644 01:15:17,871 --> 01:15:22,340 >> Davin: Πίνακες, έτσι ώστε να έχουν μια δήλωση σειρά. 1645 01:15:22,340 --> 01:15:23,990 Στη συνέχεια, μια σειρά για να βάλει τα πράγματα σε. 1646 01:15:23,990 --> 01:15:25,769 Ρεάλ γρήγορη, τι αυτό θα εκτυπώσετε; 1647 01:15:25,769 --> 01:15:27,060 Ποιο θα είναι το τρίτο στοιχείο είναι; 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> ΚΟΙΝΟ: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> Davin: Δεξιά, θα ήταν "JS". 1651 01:15:33,940 --> 01:15:35,760 Περιμένετε, πάει πίσω. 1652 01:15:35,760 --> 01:15:37,100 Ποιο είναι το μήκος; 1653 01:15:37,100 --> 01:15:38,117 >> ΚΟΙΝΟ: Τρία. 1654 01:15:38,117 --> 01:15:38,950 Davin: Τρεις, σωστά; 1655 01:15:38,950 --> 01:15:40,210 Ακριβώς ό, τι νομίζετε. 1656 01:15:40,210 --> 01:15:42,072 Εντάξει, τώρα πάει. 1657 01:15:42,072 --> 01:15:43,530 Πίνακες, μπορείτε να προσθέσετε τα πράγματα για αυτούς. 1658 01:15:43,530 --> 01:15:45,395 Έτσι, μπορείτε να πάτε πέρα αρχική όρια τους. 1659 01:15:45,395 --> 01:15:46,740 Απλά κάτι που πρέπει να θυμάστε. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, είναι μια μικρή λίγο πιο επιεικής από την άποψη των πραγμάτων 1661 01:15:49,760 --> 01:15:50,570 όπως αυτό. 1662 01:15:50,570 --> 01:15:54,260 Αντικείμενα, μοιάζει πολύ structs σε C, πάρα πολύ 1663 01:15:54,260 --> 01:15:56,590 όπως συνειρμική συστοιχίες στην PHP. 1664 01:15:56,590 --> 01:15:58,720 Έχετε όλοι είχαν την εμπειρία με αυτό. 1665 01:15:58,720 --> 01:16:01,880 Έτσι, JSON, όταν περνώντας JSON εμπρός και πίσω σε π-set οκτώ, 1666 01:16:01,880 --> 01:16:03,260 αυτό είναι το αντικείμενο σας. 1667 01:16:03,260 --> 01:16:06,290 >> Οπότε ναι, παραδείγματος χάριν, το πραγματικό γρήγορο παράδειγμα. 1668 01:16:06,290 --> 01:16:07,880 Εδώ είναι ένα αντικείμενο. 1669 01:16:07,880 --> 01:16:12,700 Ο τρόπος που η αναφορά αυτή αντικείμενο, έτσι απλά πραγματικά γρήγορα, 1670 01:16:12,700 --> 01:16:18,630 ας πούμε Ήθελα να βρω έξω, εντάξει, αυτό είναι το μάθημα; 1671 01:16:18,630 --> 01:16:20,681 Και έτσι το όνομα του αντικειμένου εδώ είναι CS50. 1672 01:16:20,681 --> 01:16:23,180 Και τότε, αν είχα μια συνειρμική σειρά, πώς θα το κάνω αυτό; 1673 01:16:23,180 --> 01:16:24,580 Θα είμαι με ένα κλειδί, σωστά; 1674 01:16:24,580 --> 01:16:26,030 Έτσι, δεν έχω το όνομα της συστοιχίας. 1675 01:16:26,030 --> 01:16:30,160 Έχω βραχίονα, εισαγωγικά, κλειδί, τέλος εισαγωγικά, τέλος βραχίονα, 1676 01:16:30,160 --> 01:16:33,610 και ότι θα αναφέρει ότι στοιχείο μέσα συνειρμική σειρά μου. 1677 01:16:33,610 --> 01:16:37,646 Πώς μπορώ να κάνω αναφορά Φυσικά μέσα αντικείμενο μου; 1678 01:16:37,646 --> 01:16:39,170 Ξέρει κανείς; 1679 01:16:39,170 --> 01:16:40,622 >> ΚΟΙΝΟ: [δεν ακούγεται]. 1680 01:16:40,622 --> 01:16:41,784 >> Davin: Τι συμβαίνει; 1681 01:16:41,784 --> 01:16:42,700 Κοινό: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 Davin: Σωστά, ναι. 1683 01:16:43,510 --> 01:16:45,320 Έτσι CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Έτσι, ο τρόπος που τα πράγματα αναφορά μέσα σε ένα αντικείμενο JSON είναι με μια τελεία. 1685 01:16:48,770 --> 01:16:53,114 >> ΚΟΙΝΟ: Μπορείτε επίσης να χρησιμοποιήσετε τη σύνταξη του πίνακα. 1686 01:16:53,114 --> 01:16:54,050 >> Davin: Εντάξει, εντάξει. 1687 01:16:54,050 --> 01:16:57,544 >> Gabe: Μπορείτε επίσης να χρησιμοποιήσετε το CS50 βραχίονα, string, όπως εισαγωγικά. 1688 01:16:57,544 --> 01:16:59,210 ΚΟΙΝΟ: Νομίζω ότι είναι ταυτόσημη με την PHP. 1689 01:16:59,210 --> 01:17:00,293 Gabe: Είναι το ίδιο πράγμα. 1690 01:17:00,293 --> 01:17:02,487 Davin: Πρόστιμο! 1691 01:17:02,487 --> 01:17:03,945 Αλλά θα δείτε αυτό σε άλλα μέρη. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Ναι, έτσι συνεχίζω. 1694 01:17:10,480 --> 01:17:13,330 Αυτό είναι αυτό που μόλις είπα. 1695 01:17:13,330 --> 01:17:17,840 Έτσι, σε ένα παράδειγμα JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 Έτσι, αυτό είναι DOM μου, σωστά; 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Ρεάλ γρήγορα, έτσι έχω μια κεφάλι, γειά σου κόσμος, σώμα. 1699 01:17:25,410 --> 01:17:26,160 Έχω ένα κουμπί. 1700 01:17:26,160 --> 01:17:27,870 Λέει "σπρώχνεις", γι 'αυτό θέλω να την προωθήσουν. 1701 01:17:27,870 --> 01:17:29,745 Και θέλω να κάνω κάτι όταν κάνετε κλικ. 1702 01:17:29,745 --> 01:17:31,220 Δεξιά, το επόμενο. 1703 01:17:31,220 --> 01:17:34,630 >> Δεξιά, έτσι αυτό είναι το JavaScript μου. 1704 01:17:34,630 --> 01:17:37,790 Έτσι jQuery είναι απλά ένας ευκολότερος τρόπος για να γράψει το JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Έτσι, αυτό, και τι Πάω να δείξει την επόμενη, θα είναι jQuery, 1706 01:17:40,920 --> 01:17:41,930 είναι ταυτόσημα. 1707 01:17:41,930 --> 01:17:43,990 Έτσι θα κάνουν τα ίδια πράγματα. 1708 01:17:43,990 --> 01:17:45,974 Απλά jQuery τείνει να είναι λίγο πιο εύκολη. 1709 01:17:45,974 --> 01:17:47,140 Οι άνθρωποι έχουν την τάση να αρέσει περισσότερο. 1710 01:17:47,140 --> 01:17:48,390 Έχει πολλές λειτουργίες. 1711 01:17:48,390 --> 01:17:49,830 Έτσι, οι άνθρωποι τείνουν να χρησιμοποιούν jQuery. 1712 01:17:49,830 --> 01:17:53,270 Μπορείτε όλοι χρησιμοποιούνται jQuery στο τελευταίο π-σετ. 1713 01:17:53,270 --> 01:17:54,270 Λοιπόν, τι θα κάνουμε αυτό; 1714 01:17:54,270 --> 01:17:56,580 Αυτό που θα JavaScript-- έτσι Αυτό είναι απλά το JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Τι θα κάνετε αυτό; 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Τι θα κάνει; 1718 01:18:03,450 --> 01:18:04,890 >> Έτσι το πρώτο, θα δείτε το παράθυρο onload. 1719 01:18:04,890 --> 01:18:05,390 Σωστά; 1720 01:18:05,390 --> 01:18:06,640 Γι 'αυτό και δεν βλέπω ότι πριν. 1721 01:18:06,640 --> 01:18:09,380 Έτσι, αυτό πρόκειται να περιμένει μέχρι το σύνολο φορτία παράθυρο. 1722 01:18:09,380 --> 01:18:12,770 Έτσι πρόκειται να περιμένει μέχρι το φορτίο HTML, όλες οι εικόνες 1723 01:18:12,770 --> 01:18:13,770 πριν κάνει οτιδήποτε. 1724 01:18:13,770 --> 01:18:16,050 Ας πούμε DOM μας έχει φορτωθεί. 1725 01:18:16,050 --> 01:18:17,270 Τα πάντα είναι εκεί. 1726 01:18:17,270 --> 01:18:19,080 Τότε τι πρόκειται να συμβεί; 1727 01:18:19,080 --> 01:18:19,922 Ναι; 1728 01:18:19,922 --> 01:18:22,880 >> ΚΟΙΝΟ: Εμφανίζεται Button. 1729 01:18:22,880 --> 01:18:25,201 >> Davin: Το κουμπί είναι ήδη εκεί. 1730 01:18:25,201 --> 01:18:26,700 Ναι, έτσι το κουμπί είναι ήδη εκεί. 1731 01:18:26,700 --> 01:18:31,190 Αλλά αυτό πρόκειται να πει, Εντάξει, αν κάνω κλικ στο κουμπί, 1732 01:18:31,190 --> 01:18:33,650 έτσι ώστε το κουμπί είναι ήδη εκεί, όπως και η ετικέτα HTML. 1733 01:18:33,650 --> 01:18:35,980 Περιμένετε, πάει πίσω πραγματικά γρήγορα. 1734 01:18:35,980 --> 01:18:39,470 Αυτή η ετικέτα δεξιά εδώ είναι πρόκειται να είναι ένα κουμπί ήδη. 1735 01:18:39,470 --> 01:18:40,810 Υπάρχει ήδη ένα κουμπί. 1736 01:18:40,810 --> 01:18:44,120 Στη συνέχεια, όμως, το JavaScript ετικέτα, ακριβώς εδώ, 1737 01:18:44,120 --> 01:18:46,160 λέει, εντάξει, θέλω για να πάρετε το στοιχείο με ID, 1738 01:18:46,160 --> 01:18:50,300 έτσι κουμπί αναζήτησης ακριβώς λέει, εντάξει, θέλω για τη χαρτογράφηση αυτή τη μεταβλητή σε αυτό το κουμπί. 1739 01:18:50,300 --> 01:18:53,120 Έτσι, η μεταβλητή αυτή είναι απλώς μια ευκολότερος τρόπος για να αποκτήσετε πρόσβαση σε αυτό το κουμπί. 1740 01:18:53,120 --> 01:18:57,300 Και λέω, εντάξει, αν κάνω κλικ ότι κουμπί, οπότε αν μπορώ κλικ σε αυτό το στοιχείο, 1741 01:18:57,300 --> 01:18:59,560 και αυτό το στοιχείο αναφέρεται σε το κουμπί, αν το κλικ, 1742 01:18:59,560 --> 01:19:00,875 Στη συνέχεια θέλω να καλέσετε μια συνάρτηση. 1743 01:19:00,875 --> 01:19:03,500 Εδώ είναι ένα από αυτά τα ανώνυμα λειτουργίες μιλούσαμε για. 1744 01:19:03,500 --> 01:19:04,840 >> Απλά καλέστε κάποια λειτουργία. 1745 01:19:04,840 --> 01:19:08,840 Μέσα σε εκείνο λειτουργία, βασικά κάτι που έχουμε δει πολλά, σε εγρήγορση. 1746 01:19:08,840 --> 01:19:10,477 Κάνετε κλικ στο κουμπί αναζήτησης. 1747 01:19:10,477 --> 01:19:12,060 Είναι πρόκειται να έχουν βασικά ένα κουμπί. 1748 01:19:12,060 --> 01:19:13,040 Μπορείτε να κάνετε κλικ. 1749 01:19:13,040 --> 01:19:14,040 Μπορείτε να πάρετε αυτό το σήμα. 1750 01:19:14,040 --> 01:19:14,850 Χ έξω. 1751 01:19:14,850 --> 01:19:15,754 Έτσι μπράβο. 1752 01:19:15,754 --> 01:19:16,254 Ναι; 1753 01:19:16,254 --> 01:19:21,980 >> ΚΟΙΝΟ: Έτσι, αν βάλετε το σενάριο [Δεν ακούγεται], το σενάριο ετικέτα στο HTML σας; 1754 01:19:21,980 --> 01:19:24,300 >> Davin: Μπορείτε να βάλετε το σενάριο ευθεία ετικέτα στο κεφάλι 1755 01:19:24,300 --> 01:19:30,667 γιατί έχετε αυτή την onload. 1756 01:19:30,667 --> 01:19:32,000 Είναι, επίσης, ότι έχετε ένα κλικ. 1757 01:19:32,000 --> 01:19:34,166 Έτσι πρόκειται να περιμένει μέχρι κάνετε κλικ για κάτι. 1758 01:19:34,166 --> 01:19:37,470 Αλλά onload είναι ακριβώς για να είναι ασφαλής, να κάνει βεβαιωθείτε ότι όλα τα φορτία στο HTML σας 1759 01:19:37,470 --> 01:19:38,170 εκ των προτέρων. 1760 01:19:38,170 --> 01:19:39,247 Ναι; 1761 01:19:39,247 --> 01:19:40,330 Θέλετε να πείτε κάτι; 1762 01:19:40,330 --> 01:19:41,080 >> Gabe: [δεν ακούγεται]. 1763 01:19:41,080 --> 01:19:42,485 Davin: Ναι. 1764 01:19:42,485 --> 01:19:45,426 >> ΚΟΙΝΟ: Έτσι onload αποφεύγει τον ορισμό της μεταβλητής κουμπί αναζήτηση 1765 01:19:45,426 --> 01:19:49,930 με απλά λέγοντας document.getElementById κουμπί αναζήτησης τελεία [δεν ακούγεται]. 1766 01:19:49,930 --> 01:19:52,320 >> Davin: Σίγουρα, αλλά στη συνέχεια, κορδόνι σας παίρνει μόνο τεράστια. 1767 01:19:52,320 --> 01:19:55,553 Ακριβώς, έτσι αυτό είναι μόνο για να καταστήσει ευκολότερο για σας, ναι. 1768 01:19:55,553 --> 01:19:56,053 Ναι; 1769 01:19:56,053 --> 01:19:57,886 >> ΚΟΙΝΟ: Όταν κάναμε δημιουργούν window.onload; 1770 01:19:57,886 --> 01:19:58,951 Ή document.ready; 1771 01:19:58,951 --> 01:20:00,590 >> Davin: Ναι, υπάρχει. 1772 01:20:00,590 --> 01:20:02,094 Ναι, είναι, έλεγξα εκεί. 1773 01:20:02,094 --> 01:20:03,710 >> Gabe: Όχι για αυτούς να νοιάζονται για. 1774 01:20:03,710 --> 01:20:06,970 >> Davin: Εντάξει, έτσι Πάω να σας πω έτσι κι αλλιώς. 1775 01:20:06,970 --> 01:20:11,005 Έτσι, βασικά, μόνο σε γενικές γραμμές, έτσι window.onload περιμένει μέχρι DOM σας, όλα 1776 01:20:11,005 --> 01:20:12,180 HTML, τα φορτία. 1777 01:20:12,180 --> 01:20:13,513 Θα περιμένει μέχρι να φορτώσουν οι εικόνες. 1778 01:20:13,513 --> 01:20:14,930 Θα περιμένει μέχρι φορτία πάντα. 1779 01:20:14,930 --> 01:20:18,410 document.ready, απλά περιμένει μέχρι φορτία DOM σας. 1780 01:20:18,410 --> 01:20:22,190 Μόλις η HTML είναι όλα εκεί, άπαξ DOM σας είναι εκεί, αρχίζει να τρέχει. 1781 01:20:22,190 --> 01:20:23,400 Αυτή είναι η μόνη διαφορά. 1782 01:20:23,400 --> 01:20:24,700 >> Gabe: Γρήγορη λογική δείτε εδώ. 1783 01:20:24,700 --> 01:20:29,060 Έτσι, αυτό μπορεί να δει το είδος του σαν μια γραμμή κώδικα, έτσι δεν είναι; 1784 01:20:29,060 --> 01:20:33,600 Επειδή είναι window.onload ισούται με ένα σωρό πράγματα. 1785 01:20:33,600 --> 01:20:39,030 Όταν JavaScript διαβάζει αυτό, αλήθεια ή ψευδής, η λειτουργία παίρνει εκτελεστεί. 1786 01:20:39,030 --> 01:20:40,020 Λάθος. 1787 01:20:40,020 --> 01:20:40,920 Εντάξει; 1788 01:20:40,920 --> 01:20:44,470 Αυτό που συμβαίνει εδώ, απλά είστε περαστικοί Αυτή η λειτουργία ως ανώνυμο λειτουργίες 1789 01:20:44,470 --> 01:20:45,300 να window.onload. 1790 01:20:45,300 --> 01:20:48,480 Και τότε, όταν θα έμπαινε να μπορούν όντως να εκτελεστεί; 1791 01:20:48,480 --> 01:20:49,600 Όταν τα φορτία παράθυρο. 1792 01:20:49,600 --> 01:20:50,420 Αυτό είναι ένα γεγονός. 1793 01:20:50,420 --> 01:20:52,460 Έτσι, αυτό είναι το jus t πράγμα είμαστε μίλησα προηγουμένως, σωστά; 1794 01:20:52,460 --> 01:20:54,580 Έτσι, όταν η εκδήλωση θα συμβεί, η λειτουργία συμβαίνει. 1795 01:20:54,580 --> 01:20:55,746 Ίδιο πράγμα με το onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> Davin: Εντάξει, έτσι ώστε κάποιος πήρε μακριά η document.ready. 1798 01:21:03,130 --> 01:21:04,698 Αλλά αυτό θα είναι το ακριβές same-- 1799 01:21:04,698 --> 01:21:06,864 ΚΟΙΝΟ: Το σύμβολο του δολαρίου, ότι είναι μια document.ready. 1800 01:21:06,864 --> 01:21:07,710 Αυτή είναι μια συντόμευση. 1801 01:21:07,710 --> 01:21:08,501 >> Davin: Ω, αυτό είναι; 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 Εντάξει, έτσι ώστε αυτό το μέσο document.ready, συντόμευση. 1804 01:21:15,500 --> 01:21:19,660 Αλλά αυτό είναι το ίδιο όπως window.onload εκτός από το μικρό διαφορά 1805 01:21:19,660 --> 01:21:20,680 Σας είπα περίπου. 1806 01:21:20,680 --> 01:21:21,870 Και αυτό είναι το jQuery. 1807 01:21:21,870 --> 01:21:25,190 Έτσι, αυτό είναι ακριβώς το ίδιο thing-- αυτό είναι JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Αυτό just-- μερικοί άνθρωποι σκέφτονται αυτό ως ένα πιο ελαφρύ, κομψή εκδοχή 1809 01:21:29,500 --> 01:21:32,370 ότι έχει πολλές λειτουργίες ότι θα πρέπει πιθανώς να χρησιμοποιείτε. 1810 01:21:32,370 --> 01:21:34,500 Έτσι, αυτό κάνει ακριβώς το ίδιο πράγμα. 1811 01:21:34,500 --> 01:21:37,110 >> Έτσι τα πράγματα με το είδος του επισημάνω. 1812 01:21:37,110 --> 01:21:40,364 Έτσι, στο άλλο παράδειγμα, είχε document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 έτσι είχαμε αυτή τη μακρά συμβολοσειρά που πρόκειται να πάρει 1814 01:21:42,280 --> 01:21:44,290 το στοιχείο από ό, τι αναγνωριστικό που έχει. 1815 01:21:44,290 --> 01:21:46,470 Αυτό έχει αντικατασταθεί από την παρούσα πρόσκληση εδώ. 1816 01:21:46,470 --> 01:21:50,860 Έτσι, μπορείτε να δείτε το σύμβολο του δολαρίου, τότε θα δείτε απόσπασμα, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag είναι πάντα μια επιλογή. 1818 01:21:52,370 --> 01:21:54,730 Λέει, εντάξει, αυτό έχει να κάνει με ένα αναγνωριστικό. 1819 01:21:54,730 --> 01:21:56,120 Τι είναι ο επιλογέας για μια τάξη; 1820 01:21:56,120 --> 01:21:57,190 >> ΚΟΙΝΟ: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> Davin: Dot, δεξιά. 1822 01:21:57,960 --> 01:22:01,950 Εάν είστε ακριβώς πρόκειται να επιλέξτε μια ετικέτα, τότε τι είναι; 1823 01:22:01,950 --> 01:22:03,310 Είναι ακριβώς η ετικέτα, ακριβώς. 1824 01:22:03,310 --> 01:22:05,560 Και θα μπορούσατε να χρησιμοποιήσετε ότι εδώ, όπως καλά. 1825 01:22:05,560 --> 01:22:08,560 >> Gabe: Και με βάση την ετικέτα, εννοούμε σαν div, για παράδειγμα, ή το κεφάλι. 1826 01:22:08,560 --> 01:22:11,500 >> Davin: Ή σώμα ή ρ ή κάτι τέτοιο, ναι. 1827 01:22:11,500 --> 01:22:14,390 Μέχρι εδώ, εντάξει, αντί να λέει document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 Αυτό είναι ακριβώς το ίδιο ακριβώς πράγμα. 1829 01:22:16,500 --> 01:22:17,990 Ακριβώς σε jQuery, είναι πιο κοντή. 1830 01:22:17,990 --> 01:22:19,860 Έτσι είναι απλούστερη. 1831 01:22:19,860 --> 01:22:23,420 Έτσι λοιπόν, όχι περισσότερο onclick, απλά κάντε κλικ στο κουμπί. 1832 01:22:23,420 --> 01:22:26,320 λειτουργία jQuery, καλέστε αυτή τη λειτουργία. 1833 01:22:26,320 --> 01:22:27,580 Ειδοποίησης είναι ακριβώς το ίδιο. 1834 01:22:27,580 --> 01:22:29,452 Γι 'αυτό είναι λίγο μικρότερες, ή λίγο 1835 01:22:29,452 --> 01:22:32,410 μικρότερη, λίγο bit-- άνθρωποι σκέφτονται είναι λίγο πιο εύκολο να γράψει, 1836 01:22:32,410 --> 01:22:34,600 λίγο πιο εύκολο να καταλάβει. 1837 01:22:34,600 --> 01:22:35,640 Αλλά αυτό είναι το jQuery. 1838 01:22:35,640 --> 01:22:37,887 Πολλοί άνθρωποι παίρνουν μια μικρή λίγο σύγχυση και ανήσυχος 1839 01:22:37,887 --> 01:22:40,220 και νομίζουν ότι, εντάξει, jQuery είναι διαφορετική από ό, τι το JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Θα πρέπει να θυμόμαστε αυτά δύο διαφορετικά πράγματα. 1841 01:22:42,136 --> 01:22:42,740 Δεν είναι. 1842 01:22:42,740 --> 01:22:45,315 Θέλω να πω, είναι διαφορετική σύνταξη. 1843 01:22:45,315 --> 01:22:46,970 Αλλά jQuery είναι JavaScript. 1844 01:22:46,970 --> 01:22:50,050 Είναι απλά μια φαινομενικά καλύτερη έκδοση που 1845 01:22:50,050 --> 01:22:51,967 θα μπορούσε να είναι πιο εύκολο να καταλαβαίνω ότι οι άνθρωποι χρησιμοποιούν. 1846 01:22:51,967 --> 01:22:53,716 Gabe: Ναι, να είναι ειλικρινής, ότι το σύμβολο του δολαρίου 1847 01:22:53,716 --> 01:22:57,240 ότι βλέπετε στην jQuery, αυτό είναι μόνο η όνομα της συνάρτησης που ορίζει jQuery. 1848 01:22:57,240 --> 01:22:58,614 Δεν έχει κάτι το ιδιαίτερο. 1849 01:22:58,614 --> 01:23:03,140 Είναι ότι είναι ακριβώς το όνομα της συνάρτησης, Ακριβώς όπως και εσείς θα μπορούσε να καθορίσει το σύμβολο του δολαρίου. 1850 01:23:03,140 --> 01:23:05,670 >> Davin: Ναι, έτσι μιλήσει για αυτό. 1851 01:23:05,670 --> 01:23:06,680 Μερικά χρήσιμα πράγματα. 1852 01:23:06,680 --> 01:23:10,414 Έψαχνα πίσω στα παλιά κουίζ. 1853 01:23:10,414 --> 01:23:13,080 Στα τελευταία δύο κουίζ, έχουν έπρεπε να χρησιμοποιήσει τα πράγματα όπως αυτό. 1854 01:23:13,080 --> 01:23:15,230 Έτσι document.ready, έτσι βεβαιωθείτε ότι όλα είναι 1855 01:23:15,230 --> 01:23:17,410 φορτωμένο πριν ξεκινήσετε να κάνετε πράγματα. 1856 01:23:17,410 --> 01:23:20,120 Επιλέξτε ένα αναγνωριστικό, ή επιλέξτε μια κατηγορία, θα έπαιρνα μόνο 1857 01:23:20,120 --> 01:23:24,020 είναι απόσπασμα dot κάποια κατηγορία, τέλος παραθέτω. 1858 01:23:24,020 --> 01:23:26,580 Υποβολή, οπότε αν είστε υποβάλει μια φόρμα και κλήση 1859 01:23:26,580 --> 01:23:28,830 Αυτή η λειτουργία μετά τη μορφή υποβάλλει. 1860 01:23:28,830 --> 01:23:34,210 Αξία, οπότε ας πούμε ότι είχα μια μορφή υποβολή, όπως ένα όνομα χρήστη, ένα μήνυμα ηλεκτρονικού ταχυδρομείου, 1861 01:23:34,210 --> 01:23:34,950 οτιδήποτε. 1862 01:23:34,950 --> 01:23:36,010 Είχα ένα πλαίσιο κειμένου. 1863 01:23:36,010 --> 01:23:37,670 Έτσι γράφω σε αυτό το πλαίσιο κειμένου. 1864 01:23:37,670 --> 01:23:42,170 Λοιπόν, αν θέλετε να πάρετε την τιμή έξω από αυτό το πλαίσιο κειμένου, μπορείτε να χρησιμοποιήσετε dot val. 1865 01:23:42,170 --> 01:23:44,050 Και τότε, εδώ κάτω, dot HTML είναι η ίδια 1866 01:23:44,050 --> 01:23:47,710 είναι σαν κουκίδα έγγραφο getElementByID dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Έτσι, αυτό πρόκειται να επιστρέψει Σας το HTML από αυτό το αναγνωριστικό. 1868 01:23:50,890 --> 01:23:55,080 Εδώ, μπορείτε να χρησιμοποιήσετε μόνο μερικά Ταυτότητα ή όποια και αν είναι τελεία HTML. 1869 01:23:55,080 --> 01:23:56,930 Αυτό θα πάρει το HTML από αυτό το στοιχείο. 1870 01:23:56,930 --> 01:24:00,130 Αν ήθελε να αλλάξει στη συνέχεια ότι HTML, μπορείτε να το περάσει κάτι. 1871 01:24:00,130 --> 01:24:05,600 Έτσι, θα ήθελα να είναι σαν κουκίδα HTML, και στη συνέχεια, στο εσωτερικό, εισαγωγικά, νέα HTML ή κάτι τέτοιο. 1872 01:24:05,600 --> 01:24:07,490 >> Gabe: Εντάξει, έτσι AJAX. 1873 01:24:07,490 --> 01:24:10,347 Μου αρέσει πολύ να κατανοήσουν AJAX πραγματικά καλά. 1874 01:24:10,347 --> 01:24:12,430 Έτσι σας θέλω τα παιδιά να καταλαβαίνω AJAX πραγματικά καλά. 1875 01:24:12,430 --> 01:24:14,221 Διότι αν το κάνετε, είστε λίγο πολύ θα 1876 01:24:14,221 --> 01:24:16,810 να κατανοεί ο, τιδήποτε έχει να κάνει με το HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript διότι όλα έρχεται μαζί σε AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX δεν είναι μια γλώσσα. 1879 01:24:25,130 --> 01:24:27,000 AJAX είναι μια τεχνική. 1880 01:24:27,000 --> 01:24:31,690 Και χρησιμοποιεί πολλά διαφορετικά εργαλεία. 1881 01:24:31,690 --> 01:24:35,090 AJAX σημαίνει ασύγχρονη XML JavaScript. 1882 01:24:35,090 --> 01:24:36,730 Έτσι, η μέθοδος, η γλώσσα, τα στοιχεία. 1883 01:24:36,730 --> 01:24:40,610 >> Έτσι, η κύρια γλώσσα που χρησιμοποιούμε σε AJAX για να προκαλέσει τα πάντα 1884 01:24:40,610 --> 01:24:42,830 και να χειριστεί τα πάντα αργότερα είναι JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Γι 'αυτό σχετίζεται πολύ κοντά στο JavaScript. 1886 01:24:45,160 --> 01:24:49,810 Και τότε είναι ασύγχρονη γιατί εμείς δεν το κάνουμε 1887 01:24:49,810 --> 01:24:51,980 όλα με τη μία όταν είμαστε φόρτωση της σελίδας. 1888 01:24:51,980 --> 01:24:57,190 Αυτό είναι το πράγμα που μπορούμε να κάνει τα πράγματα είδος του παράλληλα. 1889 01:24:57,190 --> 01:24:59,725 Η κύρια ιδέα πίσω AJAX είναι ότι θέλετε 1890 01:24:59,725 --> 01:25:02,170 να πάρετε κάποιες συγκεκριμένες πληροφορίες. 1891 01:25:02,170 --> 01:25:06,450 Για παράδειγμα, όταν πληκτρολογείτε νέα όνομα χρήστη κατά την εγγραφή σας ένα όνομα χρήστη, 1892 01:25:06,450 --> 01:25:08,520 όνομα χρήστη μου είναι abc123. 1893 01:25:08,520 --> 01:25:11,671 Και έπειτα, στο τέλος της μορφή, πρέπει να κάνετε κλικ στο Υποβολή. 1894 01:25:11,671 --> 01:25:14,420 Και έπρεπε να πάει στο διακομιστή, και, στη συνέχεια, ελέγξτε αν στη βάση δεδομένων, 1895 01:25:14,420 --> 01:25:15,594 abc123 είναι ήδη εκεί. 1896 01:25:15,594 --> 01:25:18,510 Και αν είναι ήδη εκεί, λέει, όνομα χρήστη ήδη στη βάση δεδομένων. 1897 01:25:18,510 --> 01:25:21,010 Και αυτοί, θα πρέπει να συμπληρώσετε ολόκληρη τη φόρμα ξανά. 1898 01:25:21,010 --> 01:25:23,110 Και ήταν πραγματικά, πραγματικά κακός. 1899 01:25:23,110 --> 01:25:25,440 >> Και τότε οι άνθρωποι λένε, Εντάξει, γιατί δεν μπορούμε απλά να 1900 01:25:25,440 --> 01:25:29,560 κάνει ένα μικρό αίτημα HTTP για να ελέγξετε μόνο για να δούμε αν αυτός ο χρήστης είναι στη βάση δεδομένων 1901 01:25:29,560 --> 01:25:32,080 πριν ο χρήστης έπρεπε να υποβάλουν ολόκληρη τη φόρμα; 1902 01:25:32,080 --> 01:25:36,350 Έτσι, για παράδειγμα, όταν η χρήστης τελειώσει την πληκτρολόγηση abc123, 1903 01:25:36,350 --> 01:25:39,660 ας πάμε στο διακομιστή λίγο bit και μόλις πάρει μια αληθινή ή ψεύτικη 1904 01:25:39,660 --> 01:25:43,080 από τον server για να δούμε αν αυτό είναι ένα έγκυρο όνομα χρήστη ή όχι. 1905 01:25:43,080 --> 01:25:49,250 Εντάξει, έτσι ώστε να είναι ένα από τα κύρια χρήσεις του AJAX σήμερα ακόμη. 1906 01:25:49,250 --> 01:25:52,130 >> Davin: So Real γρήγορη, σε μια κλήση Αίας jQuery, 1907 01:25:52,130 --> 01:25:54,770 θα μπορούσε να σημαίνει ότι θα θέλουν να είναι σύγχρονη. 1908 01:25:54,770 --> 01:25:56,330 Δεν πρέπει να το κάνετε αυτό. 1909 01:25:56,330 --> 01:25:57,640 Αλλά μπορείτε να το κάνετε αυτό. 1910 01:25:57,640 --> 01:25:59,277 Και αν το έκανες αυτό, τι θα συμβεί; 1911 01:25:59,277 --> 01:26:01,610 Λοιπόν, για παράδειγμα, όταν είστε να πάρει ειδήσεις ή οτιδήποτε άλλο, 1912 01:26:01,610 --> 01:26:05,464 Ο φυλλομετρητής σας πρόκειται ακριβώς να περιμένω μέχρι που ολόκληρη η κλήση είναι πλήρης 1913 01:26:05,464 --> 01:26:08,130 αντί να αφήσει να κάνετε άλλες τα πράγματα αμέσως μετά κάνετε κλικ. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> Gabe: Δεν περνώντας πια. 1916 01:26:17,115 --> 01:26:19,681 Θεέ μου. 1917 01:26:19,681 --> 01:26:20,180 Συγγνώμη! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Yup. 1920 01:26:23,601 --> 01:26:25,350 "Στο παρελθόν, η πελάτη που απαιτούνται για την αίτηση 1921 01:26:25,350 --> 01:26:26,840 Το σύνολο του περιεχομένου του δικτυακού τόπου. " 1922 01:26:26,840 --> 01:26:28,210 Αυτό είναι ό, τι είπα. 1923 01:26:28,210 --> 01:26:30,070 Μας επιτρέπει να στείλετε επιπλέον GET ή POST 1924 01:26:30,070 --> 01:26:32,140 αιτήσεις χωρίς να χρειάζεται να φορτώσετε εκ νέου το πρόγραμμα περιήγησης μας. 1925 01:26:32,140 --> 01:26:34,806 Έτσι, στο τέλος της ημέρας, είμαστε πράγματι ένας αιτήσεις HTTP 1926 01:26:34,806 --> 01:26:35,740 εδώ με τη χρήση JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Επειδή πριν, χρησιμοποιήσαμε μόνο το JavaScript για να αλλάξετε τον κώδικα HTML που ήδη ήρθε. 1928 01:26:39,700 --> 01:26:43,110 Και τώρα, μπορούμε να το χρησιμοποιήσουμε για τη διασύνδεση με το web servers, καθώς και. 1929 01:26:43,110 --> 01:26:46,140 Ο τρόπος με τον αυτό συμβαίνει είναι ότι έχουμε τον πελάτη. 1930 01:26:46,140 --> 01:26:47,340 Davin είναι πελάτης. 1931 01:26:47,340 --> 01:26:50,797 Και αυτός έχει όλα τα JavaScript τρέχει επειδή HTML είναι χαζός. 1932 01:26:50,797 --> 01:26:51,630 JavaScript είναι έξυπνος. 1933 01:26:51,630 --> 01:26:54,690 Έτσι Davin Davin έχει έξυπνες του μέρος και χαζή μέρος του. 1934 01:26:54,690 --> 01:26:57,590 Αυτός πρόκειται να χρησιμοποιήσετε την έξυπνη μέρος του τώρα. 1935 01:26:57,590 --> 01:27:00,860 Αυτός πρόκειται να χρησιμοποιήσει το JavaScript να ζητήσει, για παράδειγμα, 1936 01:27:00,860 --> 01:27:04,340 αν abc123 είναι σε η βάση δεδομένων ή όχι. 1937 01:27:04,340 --> 01:27:08,450 >> Έτσι Davin, παρακαλώ, απλά στείλτε μου ένα αίτημα HTTP. 1938 01:27:08,450 --> 01:27:09,197 Σας ευχαριστώ. 1939 01:27:09,197 --> 01:27:10,530 Έτσι ακριβώς έστειλε ένα αίτημα HTTP. 1940 01:27:10,530 --> 01:27:11,270 Βλέπεις αυτό; 1941 01:27:11,270 --> 01:27:14,700 Και αυτό είναι ακριβώς με τον ίδιο τρόπο ότι κάθε αίτηση HTTP αποστέλλεται. 1942 01:27:14,700 --> 01:27:16,830 Το πρόγραμμα περιήγησης, το Google Chrome ή κάτι, είναι 1943 01:27:16,830 --> 01:27:19,570 Θα δείτε ότι Davin του προσπαθώντας να στείλετε ένα αίτημα HTTP, 1944 01:27:19,570 --> 01:27:20,930 πρόκειται να βοηθήσει hm λίγο. 1945 01:27:20,930 --> 01:27:23,950 Και αυτό πρόκειται να πάει όλη τη διαδρομή προς το διακομιστή. 1946 01:27:23,950 --> 01:27:27,370 Τώρα, ο διακομιστής θα έχει Εδώ PHP, ή οποιαδήποτε άλλη γλώσσα. 1947 01:27:27,370 --> 01:27:29,990 Ακριβώς όπως σε μια κανονική αίτηση HTTP. 1948 01:27:29,990 --> 01:27:31,950 Είναι λίγο πολύ μια κανονική αίτηση HTTP. 1949 01:27:31,950 --> 01:27:33,658 >> Και στη συνέχεια, ο διακομιστής πρόκειται να πω, εντάξει, 1950 01:27:33,658 --> 01:27:37,270 Davin μου θέλει να ελέγξει κατά πόσον αυτό abc123 είναι στη βάση δεδομένων. 1951 01:27:37,270 --> 01:27:38,310 Να μιλήσετε με το μοντέλο. 1952 01:27:38,310 --> 01:27:41,310 Το μοντέλο λέει ότι δεν είναι. abc123 είναι ένα καλό όνομα χρήστη. 1953 01:27:41,310 --> 01:27:47,940 Και τότε, ο web server θα χρησιμοποιήσετε το PHP για να καταστήσει κάποια μορφή αρχείου. 1954 01:27:47,940 --> 01:27:52,280 Θα μπορούσε να είναι κυριολεκτικά ένα αρχείο ότι περιέχει «ναι» σε αυτό, ή ένα "όχι, 1955 01:27:52,280 --> 01:27:53,315 ή κάτι τέτοιο. 1956 01:27:53,315 --> 01:27:54,190 Θα μπορούσε να είναι οποιοδήποτε αρχείο. 1957 01:27:54,190 --> 01:27:57,080 >> Θα μπορούσε να είναι σαν να είμαι πρόκειται να στείλετε Davin μια εικόνα του μια πάπια 1958 01:27:57,080 --> 01:28:01,200 αν είναι στη βάση δεδομένων και στείλετε μια εικόνα ενός χάμστερ 1959 01:28:01,200 --> 01:28:02,420 αν δεν είναι στη βάση δεδομένων. 1960 01:28:02,420 --> 01:28:04,294 Αυτό θα είναι το είδος του χαζή, αλλά αυτό θα λειτουργήσει. 1961 01:28:04,294 --> 01:28:07,030 Εντάξει, έτσι μπορώ να στείλω μια πάπια να Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin πήρε μια πάπια. 1963 01:28:08,150 --> 01:28:13,330 Και τώρα, ποιος θα να χειριστεί την πάπια; 1964 01:28:13,330 --> 01:28:16,390 Έξυπνο μέρος Davin και πάλι, έτσι το JavaScript, σωστά; 1965 01:28:16,390 --> 01:28:18,620 JavaScript έστειλε η αίτημα, και JavaScript 1966 01:28:18,620 --> 01:28:22,300 πρόκειται να λάβει το αίτημα και να ερμηνεύσει σε κάποια μορφή. 1967 01:28:22,300 --> 01:28:26,630 >> Και με αυτή την έννοια, πρόκειται να να πω, εντάξει, αν πάπια τότε είμαι καλός. 1968 01:28:26,630 --> 01:28:30,770 Αν χάμστερ, τότε θα πάω να πω, όχι, το όνομα χρήστη που ήδη 1969 01:28:30,770 --> 01:28:31,970 υπάρχει στη βάση δεδομένων. 1970 01:28:31,970 --> 01:28:33,845 Αλλά συνήθως, δεν είστε πρόκειται να στείλει μια πάπια. 1971 01:28:33,845 --> 01:28:36,740 Θα πάμε για να στείλετε κάτι λίγο πιο έξυπνοι. 1972 01:28:36,740 --> 01:28:40,320 Και αυτό που χρησιμοποιούμε είναι το XML. 1973 01:28:40,320 --> 01:28:42,690 Και πιο πρόσφατα, χρησιμοποιούμε JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON είναι ακριβώς το JavaScript Αντικείμενο σημειογραφία, η οποία 1975 01:28:45,629 --> 01:28:47,670 είναι βασικά μπορείτε να πάρετε μια ολόκληρο το αντικείμενο JavaScript. 1976 01:28:47,670 --> 01:28:50,820 Και μπορείτε να το βάλετε σε ένα αρχείο, όπως ακριβώς ότι αντικείμενο CS50 που εσείς είδατε. 1977 01:28:50,820 --> 01:28:53,090 Μπορείτε να το βάλετε σε ένα αρχείο, και μπορείτε να το στείλετε πάνω σε Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Έτσι, στην περίπτωση αυτή, θα ήθελα κάνει ένα αντικείμενο το JavaScript 1979 01:28:55,850 --> 01:28:59,570 και απλώς να πω, υπάρχει χρήστη, ναι. 1980 01:28:59,570 --> 01:29:01,630 Ή υπάρχει χρήστη, όχι. 1981 01:29:01,630 --> 01:29:02,810 Και να το στείλετε πίσω σε αυτόν. 1982 01:29:02,810 --> 01:29:03,830 Και γιατί το JSON; 1983 01:29:03,830 --> 01:29:07,330 Επειδή το πρόσωπο ποιος λαμβάνει αυτό είναι 1984 01:29:07,330 --> 01:29:10,030 πρόκειται να χρησιμοποιήσει το JavaScript να χειριστεί την ανταπόκριση. 1985 01:29:10,030 --> 01:29:14,970 Και το JavaScript λειτουργεί τόσο καλά, επειδή λέγεται το JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Σωστά; 1987 01:29:15,470 --> 01:29:19,660 Έτσι, μπορεί απλά να καλέσετε μια συνάρτηση και να πάρει αυτό το ωραίο αντικείμενο από την απάντηση. 1988 01:29:19,660 --> 01:29:22,890 Και στη συνέχεια, ότι πρόκειται να ξέρω αν ότι ο χρήστης είναι στη βάση δεδομένων ή όχι. 1989 01:29:22,890 --> 01:29:25,230 >> Έτσι βλέπετε, όλα αυτά έρχονται μαζί στο web server, 1990 01:29:25,230 --> 01:29:28,450 και, στη συνέχεια, υπάρχει ένα HTTP στο αίτημα και μία απάντηση HTTP και τα πάντα. 1991 01:29:28,450 --> 01:29:30,600 Έτσι, βεβαιωθείτε ότι σας παιδιά κατανοήσουμε αυτή την κλήση AJAX 1992 01:29:30,600 --> 01:29:37,260 επειδή σας βοηθά να κατανοήσετε όλα των εννοιών μιλάμε. 1993 01:29:37,260 --> 01:29:40,260 >> Έτσι, εδώ είναι ένα παράδειγμα του AJAX με jQuery. 1994 01:29:40,260 --> 01:29:42,130 Και εδώ, το κάνουμε με έρθετε JSON. 1995 01:29:42,130 --> 01:29:45,660 Γι 'αυτό και δεν προσπαθείτε να πάρετε μια εικόνα του μια γάτα εδώ, ή μια πάπια. 1996 01:29:45,660 --> 01:29:48,110 Προσπαθούμε να πάρετε ένα αρχείο JSON. 1997 01:29:48,110 --> 01:29:51,184 Και τότε θα περιμένουμε μέχρι έχει κάνει, τελεία γίνει. 1998 01:29:51,184 --> 01:29:52,850 Αυτό σημαίνει ότι είμαι σε αναμονή για την απάντηση. 1999 01:29:52,850 --> 01:29:54,180 Μπορεί να πάρει λίγο χρόνο. 2000 01:29:54,180 --> 01:29:56,360 Στη συνέχεια, θα δείτε μια μικρή φόρτωσης. 2001 01:29:56,360 --> 01:29:59,340 Αν θέλετε να το κάνετε αυτό στην ιστοσελίδα σας. 2002 01:29:59,340 --> 01:30:01,440 Έτσι dot γίνει, και, στη συνέχεια, τι συμβαίνει όταν το κάνει; 2003 01:30:01,440 --> 01:30:04,040 Περνάτε σε ένα ανώνυμο λειτουργία, όπως ακριβώς είδαμε πριν. 2004 01:30:04,040 --> 01:30:07,800 Επειδή γίνεται είναι ένα γεγονός, απλά όπως το πάτημα ενός ποντικιού ή οτιδήποτε άλλο, 2005 01:30:07,800 --> 01:30:08,710 για jQuery. 2006 01:30:08,710 --> 01:30:13,710 Έτσι θα περάσει σε αυτή τη λειτουργία με δεδομένων, κειμένου, την κατάσταση και jqXHR. 2007 01:30:13,710 --> 01:30:15,790 Και βασικά, αυτό είναι μόλις μερικές μεταβλητές 2008 01:30:15,790 --> 01:30:22,160 ότι μπορείτε να χρησιμοποιήσετε αργότερα για να έχουν η κατάσταση του αιτήματος HTTP, 2009 01:30:22,160 --> 01:30:24,470 τα δεδομένα που πρόκειται να στείλετε πίσω σε σας. 2010 01:30:24,470 --> 01:30:28,740 Έτσι, θα μπορεί αργότερα να ερμηνεύσει και να κάνουμε κάτι σημαντικό με αυτό. 2011 01:30:28,740 --> 01:30:30,240 Και αν αυτό αποτύχει, όταν θα μπορούσε να αποτύχει; 2012 01:30:30,240 --> 01:30:33,780 Λοιπόν, όταν η αίτηση HTTP δίνει Είσαι ένα 500 ή κάτι τέτοιο. 2013 01:30:33,780 --> 01:30:37,420 Στη συνέχεια, πρόκειται να σας πω το κατάσταση, το είδος της αποτυχίας που ήταν, 2014 01:30:37,420 --> 01:30:38,420 και όλα τα είδη των πραγμάτων. 2015 01:30:38,420 --> 01:30:40,630 Θα πρέπει να βεβαιωθείτε να χειριστεί και τις δύο περιπτώσεις, 2016 01:30:40,630 --> 01:30:42,770 Αλλιώς το πρόγραμμα πηγαίνει τρελό. 2017 01:30:42,770 --> 01:30:45,820 >> Davin: Οπότε ναι, αυτό είναι ακριβώς τι είδατε την τελευταία π-set σας. 2018 01:30:45,820 --> 01:30:49,720 Η πραγματική κλήση AJAX είναι σε πάρει JSON. 2019 01:30:49,720 --> 01:30:50,587 Αυτή είναι η κλήση. 2020 01:30:50,587 --> 01:30:52,920 Και τότε, τελεία γίνει είναι σαν ελέγχει αν είναι επιτυχής. 2021 01:30:52,920 --> 01:30:55,620 Αν είναι επιτυχής, θέλετε να κάνει κάτι με τα δεδομένα. 2022 01:30:55,620 --> 01:30:59,290 Μπορείτε να πάρετε πίσω από ότι JSON δεδομένα αιτήματος. 2023 01:30:59,290 --> 01:31:00,600 Αυτό είναι αυτό που παίρνετε πίσω. 2024 01:31:00,600 --> 01:31:04,470 Έτσι, αν θυμάστε από την π-set σας, πολλοί από σας ήταν σαν στήριγμα δεδομένων i 2025 01:31:04,470 --> 01:31:06,302 ή οτιδήποτε άλλο, σύνδεση τελεία ή τον τίτλο. 2026 01:31:06,302 --> 01:31:08,260 Ό, τι έρχεται πίσω από την εν λόγω JSON, ανεξαρτήτως 2027 01:31:08,260 --> 01:31:11,020 τα πεδία είναι σε αυτό το αντικείμενο JSON, αυτό είναι αυτό που παίρνετε πίσω. 2028 01:31:11,020 --> 01:31:12,394 Τα δεδομένα είναι αυτό που παίρνετε πίσω. 2029 01:31:12,394 --> 01:31:15,510 Κατάσταση κειμένου, απλά κάτι που σας επιτρέπει να γνωρίζετε τι συνέβη. 2030 01:31:15,510 --> 01:31:20,570 Και τότε, η jqXHR, αυτό είναι μόνο η jQuery αίτημα XML HTTP. 2031 01:31:20,570 --> 01:31:21,990 Αυτό είναι ακριβώς όπως ένα αντικείμενο. 2032 01:31:21,990 --> 01:31:23,932 Και στη συνέχεια να αποτύχει, όπως ακριβώς είπε ο Gabe. 2033 01:31:23,932 --> 01:31:27,140 Gabe: Σε λίγο μας παράδειγμα abc123 ακριβώς για να ελέγξει αν αυτό είναι στη βάση δεδομένων 2034 01:31:27,140 --> 01:31:32,260 ή όχι, τα δεδομένα θα είναι κάτι που θα θα κάνει, αν υπάρχει τελεία δεδομένων όνομα χρήστη, 2035 01:31:32,260 --> 01:31:37,720 Ποιο είναι αυτό που σας PHP δημιουργήθηκε για σας, αν υπάρχει όνομα χρήστη dot δεδομένα, τότε 2036 01:31:37,720 --> 01:31:40,880 Πάω να ειδοποιεί τον χρήστη το όνομα υπάρχει ήδη. 2037 01:31:40,880 --> 01:31:44,300 Αλλιώς, είμαι απλώς πρόκειται να αφήσει το χρήστης να προχωρήσει τη συμπλήρωση του εντύπου. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 Εντάξει, ασφάλεια, δροσερό. 2040 01:31:50,820 --> 01:31:52,060 >> Davin: Θέλετε να μου; 2041 01:31:52,060 --> 01:31:54,500 >> Gabe: Μου αρέσει αυτό το ένα. 2042 01:31:54,500 --> 01:31:57,680 Έτσι, κάτι που φαίνεται οικείο. 2043 01:31:57,680 --> 01:31:59,750 Είμαστε σχεδόν τελειώσει. 2044 01:31:59,750 --> 01:32:02,670 Έτσι, αυτό είναι ακριβώς το παράδειγμα εσείς είδαμε στην τάξη. 2045 01:32:02,670 --> 01:32:04,860 Θα χρησιμοποιούσατε argv1 εδώ. 2046 01:32:04,860 --> 01:32:06,460 Αυτό είναι σαν ένα επιχείρημα της γραμμής εντολών. 2047 01:32:06,460 --> 01:32:09,270 Και είμαστε ΜΕΜ αντιγραφής που σε ένα ρυθμιστικό διάλυμα του μεγέθους 12. 2048 01:32:09,270 --> 01:32:12,560 Ποιο είναι το πρόβλημα εδώ; 2049 01:32:12,560 --> 01:32:13,660 Υπερχείλιση! 2050 01:32:13,660 --> 01:32:15,400 Επειδή έχουμε ένα buffer μεγέθους 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 μπορεί να έχουν μέγεθος από δύο δισεκατομμύρια. 2052 01:32:18,400 --> 01:32:19,960 Εμείς δεν κάνουμε κανένα όριο ελέγχου. 2053 01:32:19,960 --> 01:32:24,970 Έτσι, μπορούμε να αντιγράψετε πολλή μνήμη. 2054 01:32:24,970 --> 01:32:28,630 Και θα είναι ιδιαίτερα άσχημα γι 'αυτό. 2055 01:32:28,630 --> 01:32:32,600 Τι θα μπορούσαμε να το κάνουμε αυτό είναι πολύ, πολύ σημαίνει σε αυτή την περίπτωση; 2056 01:32:32,600 --> 01:32:33,278 Ναι; 2057 01:32:33,278 --> 01:32:36,528 ΚΟΙΝΟ: Μέρος των δύο δισεκατομμυρίων πράγματα περιέχει εκτελέσιμο κώδικα που επιστρέφει 2058 01:32:36,528 --> 01:32:38,127 [Δεν ακούγεται]. 2059 01:32:38,127 --> 01:32:38,710 Gabe: Ακριβώς. 2060 01:32:38,710 --> 01:32:41,110 Έτσι, αυτό είναι το είδος του πράγμα που οι άνθρωποι χρησιμοποιούν 2061 01:32:41,110 --> 01:32:43,344 να jailbreak iPhone, για παράδειγμα. 2062 01:32:43,344 --> 01:32:44,260 Έτσι, αυτό το είδος του πράγματος. 2063 01:32:44,260 --> 01:32:48,610 Επειδή μπορείτε να κάνετε απλά τη συσκευή εκτελέσει οποιοδήποτε κώδικα που σας αρέσει. 2064 01:32:48,610 --> 01:32:50,247 Η ενημέρωση κώδικα, έτσι ώστε η λύση είναι εύκολη. 2065 01:32:50,247 --> 01:32:51,330 Ακριβώς ελέγξτε για τα όρια. 2066 01:32:51,330 --> 01:32:53,455 Μπορείτε να ελέγξετε για μηδενική επειδή μπορούμε πάντα να ελέγχετε για μηδενική 2067 01:32:53,455 --> 01:32:54,940 όταν έχουμε να κάνουμε με χορδές. 2068 01:32:54,940 --> 01:32:57,840 Και τότε, θα λάβει η μήκος συμβολοσειράς πριν. 2069 01:32:57,840 --> 01:33:00,150 Και αν το κορδόνι μήκος είναι μια έγκυρη συμβολοσειρά 2070 01:33:00,150 --> 01:33:03,700 μήκος, το οποίο είναι εντός 0 και 12, τότε είμαστε καλοί. 2071 01:33:03,700 --> 01:33:07,144 >> Davin: Αν δεν έχετε ελέγξει για null, πραγματικά γρήγορα, τι θα συμβεί; 2072 01:33:07,144 --> 01:33:07,810 Θα SEG σφάλμα. 2073 01:33:07,810 --> 01:33:10,850 Γιατί θα SEG σφάλμα; 2074 01:33:10,850 --> 01:33:12,510 Επειδή είστε καλώντας strlen για μηδενική. 2075 01:33:12,510 --> 01:33:13,010 Gabe: Ναι. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Σωστό ή λάθος, χρησιμοποιώντας ένα κωδικός πρόσβασης είναι μια καλή ιδέα. 2078 01:33:19,630 --> 01:33:20,430 >> ΚΟΙΝΟ: Λάθος. 2079 01:33:20,430 --> 01:33:21,150 >> Gabe: Λάθος. 2080 01:33:21,150 --> 01:33:23,870 Χρησιμοποιήστε πολλούς κωδικούς πρόσβασης, καθώς και μεγάλα, τα μεγάλα. 2081 01:33:23,870 --> 01:33:26,050 Εικονίδια Λουκέτο την εξασφάλιση της ασφάλειας. 2082 01:33:26,050 --> 01:33:27,080 >> ΚΟΙΝΟ: Λάθος. 2083 01:33:27,080 --> 01:33:27,749 >> Gabe: Λάθος. 2084 01:33:27,749 --> 01:33:28,790 Αυτό δεν σημαίνει τίποτα. 2085 01:33:28,790 --> 01:33:30,480 Είναι απλά ένα εικονίδιο. 2086 01:33:30,480 --> 01:33:32,824 SSL προστατεύει από μια άνθρωπος στη μέση επίθεση. 2087 01:33:32,824 --> 01:33:33,490 ΚΟΙΝΟ: Λάθος. 2088 01:33:33,490 --> 01:33:34,110 Gabe: Λάθος. 2089 01:33:34,110 --> 01:33:35,355 Εντάξει, έτσι ώστε όλα αυτά είναι ψευδή. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Νίκαιας. 2092 01:33:39,490 --> 01:33:40,220 [Δεν ακούγεται] 2093 01:33:40,220 --> 01:33:42,500 Θέλετε να μιλήσουμε γι 'αυτό; 2094 01:33:42,500 --> 01:33:43,259 Η σειρά σου. 2095 01:33:43,259 --> 01:33:45,050 Davin: Είδη επιθέσεων, άνθρωπος στη μέση. 2096 01:33:45,050 --> 01:33:47,134 Τι είναι ένας άνθρωπος στη μέση επίθεση; 2097 01:33:47,134 --> 01:33:48,050 ΚΟΙΝΟ: [δεν ακούγεται]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 Davin: Αν στείλετε ένα HTTP αίτημα, θα μπορούσαν να κάνουν αυτό, σωστά; 2100 01:33:54,020 --> 01:33:57,890 Αλλά αν είστε αποστολή HTTPS, που κατά πάσα πιθανότητα δεν θα είναι σε θέση να το κάνουμε αυτό. 2101 01:33:57,890 --> 01:33:59,952 Υπάρχουν πολλά σημεία κατά μήκος της σύνδεσης σας. 2102 01:33:59,952 --> 01:34:00,660 Έχετε δρομολογητές. 2103 01:34:00,660 --> 01:34:01,746 Έχετε διακομιστές DNS. 2104 01:34:01,746 --> 01:34:04,120 Αν κάποιος είναι σε θέση να σωματικά δείτε τι αποστολής, 2105 01:34:04,120 --> 01:34:06,140 έτσι κάποιος είναι σε θέση να πραγματικά να πάρει μεταξύ σας, 2106 01:34:06,140 --> 01:34:08,840 ο πελάτης και ο διακομιστής, και είναι είναι σε θέση να δείτε τι αποστολής, 2107 01:34:08,840 --> 01:34:10,298 Αυτό είναι ένας άνθρωπος στη μέση επίθεση. 2108 01:34:10,298 --> 01:34:14,287 Έτσι για να δούμε τι προσπαθείτε να πάρετε από ο server, ή είναι σε θέση να see-- χειρότερα, 2109 01:34:14,287 --> 01:34:16,620 να είστε σε θέση να δείτε μπισκότα ή κάτι τέτοιο. 2110 01:34:16,620 --> 01:34:19,290 >> Έτσι, για παράδειγμα, εάν δεν είστε χρησιμοποιώντας το SSL, ο ίδιος 2111 01:34:19,290 --> 01:34:21,900 να είναι σε θέση να δείτε συνεδρία cookies ID σας. 2112 01:34:21,900 --> 01:34:25,460 Και αυτό ονομάζεται αεροπειρατεία συνόδου γιατί βλέπει τα cookies ID σας, 2113 01:34:25,460 --> 01:34:28,317 και τότε είναι σε θέση να πάει στο ότι ιστοσελίδα και να υποκρινόμαστε να σας είναι. 2114 01:34:28,317 --> 01:34:31,150 Διότι όπως ακριβώς σε PHP, να θυμάστε όταν είμαστε συνδεδεμένοι, τι κάνουμε; 2115 01:34:31,150 --> 01:34:33,340 Θέτουμε αναγνωριστικό περιόδου ίσο με ταυτότητα. 2116 01:34:33,340 --> 01:34:34,810 Έτσι ώστε να προσδιορίζει. 2117 01:34:34,810 --> 01:34:38,300 Αυτός είναι ο λόγος για τον οποίο μπορείτε να δείτε το χαρτοφυλάκιό σας και το χαρτοφυλάκιο δεν παρουσιάζονται σε όλους άλλου. 2118 01:34:38,300 --> 01:34:42,320 >> Λοιπόν, αν είμαι σε θέση να πάρετε αυτό το cookie, τότε μπορώ να συνδεθώ σε αυτή τη σελίδα. 2119 01:34:42,320 --> 01:34:45,380 Και τότε, μπορώ να δω μόνο τα πράγματά σας και αρχίσουν να αγοράζουν και να πωλούν τα πράγματα. 2120 01:34:45,380 --> 01:34:46,800 Έτσι, αυτό είναι αεροπειρατεία συνόδου. 2121 01:34:46,800 --> 01:34:50,810 Αλλά δεν θα πρέπει να είναι σε θέση to--, έτσι ώστε να μπορεί να χρησιμοποιήσει ο άνθρωπος στη μέση επίθεση 2122 01:34:50,810 --> 01:34:52,290 ακόμη και αν χρησιμοποιείτε SSL. 2123 01:34:52,290 --> 01:34:53,520 Αλλά δεν θα πρέπει να είναι σε θέση να. 2124 01:34:53,520 --> 01:34:56,580 Αν χρησιμοποιείτε το SSL, δεν μπορείτε αεροπειρατείας συνεδρία. 2125 01:34:56,580 --> 01:34:58,927 Γιατί; 2126 01:34:58,927 --> 01:35:01,135 Επειδή είναι όλα κρυπτογραφημένα, έτσι δεν είναι; αν είναι κρυπτογραφημένα, 2127 01:35:01,135 --> 01:35:03,509 και είμαι ακόμα ένας άνθρωπος στην μέση, έχω ακόμα να πάρετε τα δεδομένα σας. 2128 01:35:03,509 --> 01:35:04,279 Αυτό είναι μια χαρά. 2129 01:35:04,279 --> 01:35:05,070 Αλλά είναι κρυπτογραφημένα. 2130 01:35:05,070 --> 01:35:07,750 Γι 'αυτό και δεν μπορεί να το χρησιμοποιήσει πραγματικά. 2131 01:35:07,750 --> 01:35:09,840 Έτσι, αυτό είναι δύο. 2132 01:35:09,840 --> 01:35:11,544 >> Ρεάλ γρήγορη, cross-site αίτημα πλαστογραφία. 2133 01:35:11,544 --> 01:35:13,960 Αυτό είναι μόνο αν υπάρχει ένας σύνδεσμος και ο σύνδεσμος κάνει κάτι 2134 01:35:13,960 --> 01:35:14,890 ότι δεν νομίζετε ότι πρέπει να κάνει. 2135 01:35:14,890 --> 01:35:18,150 Έτσι, για παράδειγμα, εάν η σύνδεση ήταν πρόκειται να αγοράσουν μετοχές ή να πουλήσει τα αποθέματα, 2136 01:35:18,150 --> 01:35:19,360 και δεν ξέρατε ότι. 2137 01:35:19,360 --> 01:35:22,040 Μπορείτε κλικ στο σύνδεσμο, απέστειλε αίτημα, αγόρασε 2138 01:35:22,040 --> 01:35:24,240 ή πωλείται κάτι που που δεν θέλατε να κάνετε. 2139 01:35:24,240 --> 01:35:25,120 Αυτό είναι αυτό. 2140 01:35:25,120 --> 01:35:30,720 >> Cross Site Scripting για, έτσι και εδώ, είστε περνώντας μέσω μεταβλητή q, 2141 01:35:30,720 --> 01:35:33,510 αντί να περάσει σε κάποιο είδος της αξίας, ίσως το q είναι σαν ένα όνομα. 2142 01:35:33,510 --> 01:35:36,560 Έτσι, αντί να περάσει ίσων q Davin ή κάτι τέτοιο, 2143 01:35:36,560 --> 01:35:38,740 Εάν δεν θέλετε να χρησιμοποιήσετε HTML ειδικούς χαρακτήρες, αν 2144 01:35:38,740 --> 01:35:43,100 δεν μπορούν να αποφύγουν αυτό για να βεβαιωθείτε ότι είναι Εντάξει, τότε θα μπορούσε να περάσει σε αντ 'αυτού, 2145 01:35:43,100 --> 01:35:46,910 ας πούμε εδώ λέω εκτύπωσης ή κάτι τέτοιο, 2146 01:35:46,910 --> 01:35:51,070 τότε θα μπορούσε να περάσει εδώ μια κλήση σενάριο. 2147 01:35:51,070 --> 01:35:53,140 >> Έτσι λοιπόν, αντί του απλά να πάρει μια μεταβλητή, 2148 01:35:53,140 --> 01:35:54,960 Στη συνέχεια θα ήθελα να εκτελέσει αυτό το σενάριο κλήση. 2149 01:35:54,960 --> 01:35:57,065 Έτσι, μέσα σε αυτό το σενάριο καλέσετε, τι κάνει; 2150 01:35:57,065 --> 01:36:00,190 Τοποθεσία dot έγγραφο, που πρόκειται να να αλλάξει τη θέση του εγγράφου. 2151 01:36:00,190 --> 01:36:02,290 Έτσι, Πάω να ανακατευθύνει κάπου αλλού. 2152 01:36:02,290 --> 01:36:08,170 Αυτό λέγεται κακός σε αυτό το παράδειγμα, πολύ καλή. 2153 01:36:08,170 --> 01:36:10,536 Δεν μπορούσα να σκεφτώ τη λέξη. 2154 01:36:10,536 --> 01:36:12,410 Και τότε, τι είναι ακόμη χειρότερο είναι ότι θα πάω 2155 01:36:12,410 --> 01:36:16,832 τότε που μπισκότο, το οποίο είναι μερικά μεταβλητή που έχω σε αυτή την ιστοσελίδα. 2156 01:36:16,832 --> 01:36:19,040 Πάω να ορίσετε ίση στο μπισκότο dot έγγραφο. 2157 01:36:19,040 --> 01:36:20,660 Ως εκ τούτου, θα πάω για να κλέψουν τα cookies. 2158 01:36:20,660 --> 01:36:22,951 Και Πάω να ανακατευθύνει κάποιες πληροφορίες σε μια ιστοσελίδα 2159 01:36:22,951 --> 01:36:25,120 ότι δεν πρέπει να έχουν πρόσβαση. 2160 01:36:25,120 --> 01:36:29,250 Και όλα αυτά συμβαίνουν επειδή είστε Δεν διαφεύγει αυτό που έχετε δει. 2161 01:36:29,250 --> 01:36:29,910 Ναι; 2162 01:36:29,910 --> 01:36:32,160 >> ΚΟΙΝΟ: Έτσι απλά για να καταστήσει σαφές, είναι 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com ότι είναι ευάλωτες σε αυτό. 2164 01:36:37,550 --> 01:36:39,300 Έτσι, μπορεί να εμφανιστεί ο σύνδεσμος σε οποιαδήποτε δεδομένη σελίδα. 2165 01:36:39,300 --> 01:36:42,200 Κάποιος κάνει κλικ σε αυτό, πηγαίνει στο vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Έχετε ένα cookie στον vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Ας πούμε ότι το Facebook είναι ευάλωτα, έτσι facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Έχετε στο Facebook μπισκότο σας. 2169 01:36:48,310 --> 01:36:50,925 Αυτό που κάνει, είστε πρόκειται να facebook.com, 2170 01:36:50,925 --> 01:36:53,990 αυτό είναι άμεσα αναπροσανατολισμό μπορείτε να badguy.com, 2171 01:36:53,990 --> 01:36:57,182 αλλά συμπεριλαμβανομένων των πληροφοριών από τα cookies σας. 2172 01:36:57,182 --> 01:36:59,310 Γι 'αυτό είναι μια γρήγορη ανακατεύθυνση, αλλά το Facebook μπισκότο σας 2173 01:36:59,310 --> 01:37:02,572 συμπεριλαμβάνεται με αυτή την ανακατεύθυνση, και αυτό είναι το πώς αυτοί [δεν ακούγεται]. 2174 01:37:02,572 --> 01:37:04,280 Gabe: Ναι, υπάρχει μερικά πολύ μέση πράγματα 2175 01:37:04,280 --> 01:37:06,070 ότι οι άνθρωποι μπορούν να κάνουν αν υπάρχει αυτό. 2176 01:37:06,070 --> 01:37:09,190 Για παράδειγμα, εάν το Facebook επιτρέπονται όλοι να αλλάξετε το όνομα χρήστη σας, 2177 01:37:09,190 --> 01:37:11,680 και δεν έκαναν οποιαδήποτε έλεγχοι λογική, έτσι ώστε να 2178 01:37:11,680 --> 01:37:16,810 θα μπορούσε να εισαχθεί ένα πράγμα JavaScript που αλλάζει την εικόνα σας σε ένα χάμστερ. 2179 01:37:16,810 --> 01:37:22,590 Και αυτό εισάγει το ίδιο το JavaScript σε όλους όσους τις απόψεις σας σελίδα. 2180 01:37:22,590 --> 01:37:26,400 Έτσι, όλοι όσοι τις απόψεις σας σελίδα έχει το ίδιο πράγμα το όνομα χρήστη. 2181 01:37:26,400 --> 01:37:30,104 Και επειδή είναι ένας ιός, εξαπλώνεται με γεωμετρική πρόοδο. 2182 01:37:30,104 --> 01:37:32,270 Davin: Θα παραλείψετε το τελευταίο ένα, και στη συνέχεια να τελειώσουμε. 2183 01:37:32,270 --> 01:37:34,120 Έτσι, αυτό είναι απλώς άλλο ένα παράδειγμα. 2184 01:37:34,120 --> 01:37:36,120 Έτσι, αυτό είναι ότι δεν είναι διαφυγή πίνακα του SQL τους. 2185 01:37:36,120 --> 01:37:37,090 Έτσι, μπορείτε να το ρίξετε. 2186 01:37:37,090 --> 01:37:38,805 Έτσι θέλετε να ξεφύγουν τα πράγματα. 2187 01:37:38,805 --> 01:37:44,010 Ότι ήταν το προηγούμενο παράδειγμα με το σταυρό Scripting ιστοσελίδα. 2188 01:37:44,010 --> 01:37:45,430 Συγγνώμη τρέξαμε λίγο αργά. 2189 01:37:45,430 --> 01:37:46,870 Αύριο, συγνώμη! 2190 01:37:46,870 --> 01:37:48,560 Αύριο, έχουμε ώρες γραφείου. 2191 01:37:48,560 --> 01:37:50,870 Έτσι, ώρες γραφείου στο Cabbot 8:00-11:00. 2192 01:37:50,870 --> 01:37:55,240 Οι ώρες γραφείου είναι αυστηρά για ερωτήσεις κουίζ. 2193 01:37:55,240 --> 01:37:56,587