1 00:00:00,000 --> 00:00:08,070 2 00:00:08,070 --> 00:00:10,430 >> R.J. AQUINO: Ας ξεκινήσουμε. 3 00:00:10,430 --> 00:00:12,310 Έτσι, αυτό είναι Quiz 1. 4 00:00:12,310 --> 00:00:14,890 Εδώ είναι μερικές πληροφορίες υψηλού επιπέδου. 5 00:00:14,890 --> 00:00:19,915 Η Σχετικά με τη σελίδα του κουίζ είναι αυτό URL, δεν είναι πλέον CS50.net, παρόλο που 6 00:00:19,915 --> 00:00:21,080 θα εξακολουθούν να εργάζονται. 7 00:00:21,080 --> 00:00:26,920 Είναι CS50.harvard.edu/quizzes/2013/1. 8 00:00:26,920 --> 00:00:31,070 Είναι η μεγάλη Σχετικά με τη σελίδα, σας λέω πού και πότε, δηλαδή την επόμενη Τετάρτη 9 00:00:31,070 --> 00:00:32,100 σε μια δέσμη των δωματίων. 10 00:00:32,100 --> 00:00:36,120 Και από την επόμενη Τετάρτη, I σημαίνει δύο ημέρες από τώρα. 11 00:00:36,120 --> 00:00:37,890 Όλες αυτές οι πληροφορίες είναι εκεί. 12 00:00:37,890 --> 00:00:39,110 Αλλά είναι αθροιστική. 13 00:00:39,110 --> 00:00:43,790 >> Έτσι, τα πάντα, από το πρώτο εξάμηνο του έτους είναι δυνητικά στο κουίζ, 14 00:00:43,790 --> 00:00:50,780 γιατί δεν μπορεί πραγματικά να κάνει την προηγμένη τα πράγματα σε C χωρίς εάν οι συνθήκες και 15 00:00:50,780 --> 00:00:51,920 για βρόχους και παρόμοια. 16 00:00:51,920 --> 00:00:55,580 Αλλά θα υπάρξει έμφαση στην υλικό που καλύπτεται από το Quiz 0, 17 00:00:55,580 --> 00:00:59,570 ξεκινώντας με structs και αρχείων I / O. Είναι συνήθως πιο 18 00:00:59,570 --> 00:01:01,620 προκλητικό από Κουίζ 0. 19 00:01:01,620 --> 00:01:03,870 Ο μέσος όρος βαθμολογίας είναι συνήθως χαμηλότερα. 20 00:01:03,870 --> 00:01:05,980 Μελέτη σκληρά. 21 00:01:05,980 --> 00:01:09,340 >> Ενώ εσείς μελετάτε, να είστε βέβαιος να χρησιμοποιήσει CS50/discuss να δημοσιεύσετε τις ερωτήσεις σας 22 00:01:09,340 --> 00:01:10,830 και να διαβάσετε τις ερωτήσεις άλλων ανθρώπων. 23 00:01:10,830 --> 00:01:13,550 Έτσι, αν δεν έχετε οποιεσδήποτε ερωτήσεις, συνδεθείτε και να διαβάσετε 24 00:01:13,550 --> 00:01:14,580 ερωτήσεις των φίλων σας. 25 00:01:14,580 --> 00:01:16,560 Είναι ίσως καλές ερωτήσεις. 26 00:01:16,560 --> 00:01:17,730 Και να λάβει τα κουίζ πρακτική. 27 00:01:17,730 --> 00:01:20,750 Έχουμε ήδη δώσει κουίζ για επτά ή οκτώ χρόνια. 28 00:01:20,750 --> 00:01:22,180 Είναι όλα σε απευθείας σύνδεση. 29 00:01:22,180 --> 00:01:25,540 Μελλοντικές ερωτήματα αυτά είναι παρόμοια σε παλιά ερωτήματα. 30 00:01:25,540 --> 00:01:26,550 Αυτό είναι το πώς θα τους κάνουν. 31 00:01:26,550 --> 00:01:27,740 >> Το κουίζ δεν υπάρχει ακόμα. 32 00:01:27,740 --> 00:01:28,670 Κανένας από εμάς έχουμε δει. 33 00:01:28,670 --> 00:01:32,496 Αλλά θα μοιάσει προηγούμενο κουίζ. 34 00:01:32,496 --> 00:01:36,500 Για αυτή τη συνεδρία αξιολόγησης, αυτό δεν είναι εξαντλητικό κατάλογο των θεμάτων. 35 00:01:36,500 --> 00:01:40,740 Μπορείτε όχι μόνο να παρακολουθήσουν αυτό και στη συνέχεια να είναι απόλυτα έτοιμος για το κουίζ. 36 00:01:40,740 --> 00:01:43,330 Διαφορετικά, δεν θα ήταν ότι ένα μεγάλο μέρος ενός κουίζ. 37 00:01:43,330 --> 00:01:46,270 Και αυτό επίσης δεν είναι κατ 'ανάγκην όλα όσα χρειάζεται να ξέρετε για κάθε 38 00:01:46,270 --> 00:01:46,970 συγκεκριμένο θέμα. 39 00:01:46,970 --> 00:01:50,520 Είναι γραφτό να σας εκθέσει στα πράγματα έχουμε καλύψει, να σας υπενθυμίσω αυτό που 40 00:01:50,520 --> 00:01:53,070 καλύπτονται, και ο τρόπος με τον το οποίο θα κάλυπτε. 41 00:01:53,070 --> 00:01:57,030 Αλλά θα πρέπει να προχωρήσει περαιτέρω και να βαθύτερα, όταν έχετε μελετήσει για να διπλό έλεγχο 42 00:01:57,030 --> 00:02:00,230 ότι ξέρετε τα πάντα για κάθε δεδομένη το θέμα και ότι έχετε συμπληρώσει 43 00:02:00,230 --> 00:02:03,320 όλες οι γωνίες που ήταν καλύπτονται στη διάλεξη. 44 00:02:03,320 --> 00:02:07,980 >> Οι σημειώσεις κουίζ σας πει να πάτε στο σημειώσεις γραφέα, το ρολόι βίντεο διάλεξη. 45 00:02:07,980 --> 00:02:10,155 Αυτός είναι ένας καλός τρόπος για να βεβαιωθείτε ότι έχετε καλύπτει όλες τις βάσεις σας. 46 00:02:10,155 --> 00:02:12,670 47 00:02:12,670 --> 00:02:17,340 Έτσι, το ξεκίνημα, όταν έκανα αυτά διαφάνειες, προσπάθησα να βάλω όπου βρήκα 48 00:02:17,340 --> 00:02:18,350 πληροφορίες. 49 00:02:18,350 --> 00:02:22,890 Έτσι, για το αρχείο Ι / Ο, για παράδειγμα, την εβδομάδα 7, Δευτέρα διάλεξη, και ο αποσπασμένος 50 00:02:22,890 --> 00:02:27,960 Τμήμα 6 και Πρόβλημα Set όλα έχουν πληροφορίες σχετικά με το αρχείο I / O. Έχω κάνει 51 00:02:27,960 --> 00:02:28,840 αυτό για κάθε θέμα. 52 00:02:28,840 --> 00:02:33,010 Έτσι, οι διαφάνειες τίτλου μπορεί να να είναι χρήσιμο σε εσάς. 53 00:02:33,010 --> 00:02:38,950 >> Έτσι, εδώ έχουμε File I / O. Θυμηθείτε, το Πρόβλημα Σετ 5, χρησιμοποιήσαμε fopen, fclose, 54 00:02:38,950 --> 00:02:41,210 fwrite, fread και fseek. 55 00:02:41,210 --> 00:02:48,090 Αφού ανακτηθεί 30ish αρχεία JPEG και έχοντας αλλάξει το μέγεθός τους και μπέρδεμα με 56 00:02:48,090 --> 00:02:50,320 bitmaps, θα πρέπει να είναι αρκετά εξοικειωμένοι με αυτές τις λειτουργίες 57 00:02:50,320 --> 00:02:51,830 και πώς λειτουργούν. 58 00:02:51,830 --> 00:02:54,420 Αν δεν είναι πλέον εξοικειωμένοι, σίγουρα επανεξετάσει τους. 59 00:02:54,420 --> 00:02:56,860 Και βεβαιωθείτε ότι έχετε κατανοήσει τι τα διάφορα επιχειρήματα, 60 00:02:56,860 --> 00:02:58,260 όταν έχεις συνηθίσει. 61 00:02:58,260 --> 00:03:03,620 >> Αλλά τα κοινά αρχείο σφάλματα που σχετίζονται με μπορεί να σας ζητηθεί για - 62 00:03:03,620 --> 00:03:07,270 καλά, αν έχετε ξεχάσει να ελέγξετε αν fopen πραγματικά εργάστηκαν πριν πάτε για 63 00:03:07,270 --> 00:03:08,350 τροποποιήσετε ένα αρχείο. 64 00:03:08,350 --> 00:03:09,760 Αυτό θα μπορούσε να είναι κακό. 65 00:03:09,760 --> 00:03:13,560 Εάν έχετε ξεχάσει να fclose ένα αρχείο ότι έχετε fopened, αυτό είναι παρόμοιο με 66 00:03:13,560 --> 00:03:14,400 μια διαρροή μνήμης. 67 00:03:14,400 --> 00:03:15,980 Αυτό είναι πολύ κακό. 68 00:03:15,980 --> 00:03:18,670 Και ξεχνώντας να ελέγξετε αν έχετε φτάσει στο τέλος του αρχείου πριν να 69 00:03:18,670 --> 00:03:19,790 αρχίσετε να γράφετε σε αυτό. 70 00:03:19,790 --> 00:03:22,320 >> Έτσι, αν σας πω, hey, είμαι σε το τέλος του αρχείου. 71 00:03:22,320 --> 00:03:23,750 Δώσε μου 5 περισσότερα bytes. 72 00:03:23,750 --> 00:03:27,370 Λοιπόν, αυτό είναι κατά πάσα πιθανότητα δεν πρόκειται να λειτουργούν με τον τρόπο που αναμένετε. 73 00:03:27,370 --> 00:03:30,930 Αυτό είναι πραγματικά αυτό για το αρχείο I / O, επειδή κάναμε τόσο πολύ από αυτό 74 00:03:30,930 --> 00:03:32,300 με που το πρόβλημα. 75 00:03:32,300 --> 00:03:36,000 Έτσι, αν έχετε καταλάβει τι συνέβαινε στο πρόβλημα Set 5, θυμηθείτε τα bitmats 76 00:03:36,000 --> 00:03:40,090 και τα αρχεία JPEG, τότε είστε πιθανώς όλοι οριστεί για το αρχείο I / O. Αν αυτό είναι ένα κομμάτι 77 00:03:40,090 --> 00:03:44,770 fuzzy, σίγουρα επανεξετάσει το πρόβλημα οριστεί και το σχετικό υλικό. 78 00:03:44,770 --> 00:03:51,110 >> Structs ήταν το θέμα που ήταν σχετικά με την γραμμή μεταξύ 0 και Quiz Quiz 1. 79 00:03:51,110 --> 00:03:53,090 Μήπως δεν είναι αρκετά να την περικοπή για Quiz 0. 80 00:03:53,090 --> 00:03:57,040 Έτσι, θα είναι σίγουρα στο Quiz 1, Εβδομάδα 7, τη Δευτέρα. 81 00:03:57,040 --> 00:03:58,150 Τι είναι ένα struct; 82 00:03:58,150 --> 00:04:00,250 Εδώ μπορούμε να δείξουμε ένα struct. 83 00:04:00,250 --> 00:04:03,140 Είναι σαν ένα νέο είδος. 84 00:04:03,140 --> 00:04:07,940 Είναι σαν ένα δοχείο για πολλά πεδία. 85 00:04:07,940 --> 00:04:12,970 >> Σε αυτή την περίπτωση, έχουμε δηλώσει struct σπουδαστών που έχει δύο πεδία - 86 00:04:12,970 --> 00:04:17,750 μια σειρά που είμαστε καλώντας το όνομα και ένα int που είμαστε καλώντας την ηλικία. 87 00:04:17,750 --> 00:04:21,450 Έτσι, όταν περνώ γύρω από φοιτητές ή Ι τροποποιήσει τους μαθητές, θα είμαι σε θέση να 88 00:04:21,450 --> 00:04:24,430 πρόσβαση το όνομά τους και την ηλικία τους. 89 00:04:24,430 --> 00:04:26,670 Ας δούμε λίγο κώδικα για αυτό. 90 00:04:26,670 --> 00:04:29,090 Εδώ βλέπουμε ότι έχω δηλωθεί ένας φοιτητής s, όπως ακριβώς 91 00:04:29,090 --> 00:04:30,300 Δηλώνω κάθε μεταβλητή - 92 00:04:30,300 --> 00:04:32,430 int x, int y, κ.λπ.. 93 00:04:32,430 --> 00:04:34,180 >> Εδώ είναι φοιτητής s. 94 00:04:34,180 --> 00:04:37,370 Ξεκινά με τίποτα στο χωράφι του. 95 00:04:37,370 --> 00:04:38,240 Οπότε ας τον καθορισμό τους. 96 00:04:38,240 --> 00:04:40,681 Μπορείτε να ορίσετε τα πεδία του struct με τελεία. 97 00:04:40,681 --> 00:04:43,780 Έτσι, έχω πει εδώ ότι s.name = RJ. 98 00:04:43,780 --> 00:04:46,470 Και s.age = 21. 99 00:04:46,470 --> 00:04:48,500 Μπορείτε επίσης να ενημερώσετε τα πεδία με τον ίδιο τρόπο που θα ενημερώσετε 100 00:04:48,500 --> 00:04:49,550 η τιμή μιας μεταβλητής. 101 00:04:49,550 --> 00:04:53,270 Γι 'αυτό θέλω να αλλάξω το όνομά μου από την RJ με δεν υπάρχουν περίοδοι που R.J. σήμανε το 102 00:04:53,270 --> 00:04:54,540 σωστό τρόπο. 103 00:04:54,540 --> 00:04:58,890 Θα ήταν s.name = RJ, το ίδιο όπως είπε αρχικά. 104 00:04:58,890 --> 00:05:00,030 Και τότε μπορείτε να έχουν πρόσβαση σε αυτά. 105 00:05:00,030 --> 00:05:00,930 >> Έτσι έχουμε τον καθορισμό τους. 106 00:05:00,930 --> 00:05:01,840 Έχουμε τους ενημέρωση. 107 00:05:01,840 --> 00:05:03,890 Μπορείτε επίσης να αποκτήσετε πρόσβαση σε αυτά στο πολύ ίδιο τρόπο. 108 00:05:03,890 --> 00:05:09,330 Έτσι, εδώ, είμαι εκτύπωση R.J. Είναι 21 ετών. 109 00:05:09,330 --> 00:05:14,700 Και είμαι πρόσβαση σε αυτές τις τιμές με s.name και s.age. 110 00:05:14,700 --> 00:05:17,040 Έτσι ώστε να είναι πρόσβαση structs με το συμβολισμό με την τελεία. 111 00:05:17,040 --> 00:05:17,850 Ναι, ερώτηση; 112 00:05:17,850 --> 00:05:21,176 >> ΚΟΙΝΟ: Υπάρχει κάποιος λόγος για την εκεί προηγούμενη διαφάνεια που δεν βάλατε 113 00:05:21,176 --> 00:05:24,848 φοιτητής στην επάνω γραμμή, όπως typedef φοιτητής struct και, στη συνέχεια, 114 00:05:24,848 --> 00:05:25,840 φοιτητής στο τέλος; 115 00:05:25,840 --> 00:05:29,040 >> R.J. AQUINO: Άρα το ερώτημα ήταν, για αυτή η διαφάνεια, έχουμε συνήθως δει 116 00:05:29,040 --> 00:05:32,400 typedef struct node και στη συνέχεια το πεδία του struct και 117 00:05:32,400 --> 00:05:34,250 τότε η λέξη κόμβου. 118 00:05:34,250 --> 00:05:37,790 Και πώς έρχονται εδώ δεν είχα να πω, typedef φοιτητής struct και στη συνέχεια το 119 00:05:37,790 --> 00:05:39,820 πεδία του struct και στη συνέχεια μαθητής; 120 00:05:39,820 --> 00:05:44,310 Ο λόγος είναι ότι δεν χρειάζεται να πρόσβαση το εσωτερικό του struct. 121 00:05:44,310 --> 00:05:46,270 Γι 'αυτό είναι εντάξει για να αφήσει χωρίς όνομα. 122 00:05:46,270 --> 00:05:49,210 Μπορώ να το αφήσω όπως μια ανώνυμη struct. 123 00:05:49,210 --> 00:05:53,130 >> Ο λόγος που το κάνουμε για συνδεδεμένες λίστες και τα πράγματα είναι επειδή μέσα που χρειάζεστε 124 00:05:53,130 --> 00:05:55,360 να γίνει αναφορά σε ένα αστέρι κόμβους struct. 125 00:05:55,360 --> 00:05:58,220 Έτσι, η struct πρέπει να έχει ένα όνομα, έτσι μπορείτε να έχετε πρόσβαση αργότερα. 126 00:05:58,220 --> 00:05:59,540 Είναι μια μικρή λεπτομέρεια. 127 00:05:59,540 --> 00:06:04,750 Αλλά θα δείτε συνήθως typedef struct άγκιστρα, αν δεν χρειάζεστε 128 00:06:04,750 --> 00:06:08,720 το όνομα και typedef struct κάποια ονομασία ακολουθούμενη από αγκύλες αν θα 129 00:06:08,720 --> 00:06:09,520 Πρέπει το όνομα. 130 00:06:09,520 --> 00:06:12,070 Έτσι, αυτό είναι μια καλή ερώτηση. 131 00:06:12,070 --> 00:06:17,000 >> Και στο σημείο αυτό, έχουμε την τάση να τροποποιήσετε structs και να περάσει γύρω από structs 132 00:06:17,000 --> 00:06:18,680 αναφορά, όχι με βάση την αξία. 133 00:06:18,680 --> 00:06:21,940 Γι 'αυτό θα πρέπει ακριβώς να περάσει γύρω από δείκτες σε structs αντί να περάσει γύρω από το 134 00:06:21,940 --> 00:06:23,150 Δομές οι ίδιοι. 135 00:06:23,150 --> 00:06:28,050 Έτσι, είστε πολύ συχνά πρόκειται να είναι χρησιμοποιώντας, στην περίπτωση αυτή, φοιτητής * ή 136 00:06:28,050 --> 00:06:34,150 struct node * ή κόμβο * αντί τους φοιτητές ή κόμβους. 137 00:06:34,150 --> 00:06:39,350 Τόσο εδώ, έχω πει, εντάξει, η μεταβλητή ptr πρόκειται να είναι η διεύθυνση του s. 138 00:06:39,350 --> 00:06:45,570 Είναι πρόκειται να είναι ο δείκτης στον μαθητή R.J. 139 00:06:45,570 --> 00:06:48,965 >> Έτσι, μπορούμε να πάρουμε σε αυτά τα πεδία το ίδιο όπως έχουμε τίποτα. 140 00:06:48,965 --> 00:06:51,460 Πρώτον, ID αναφορά το δείκτη για να πάρει το struct. 141 00:06:51,460 --> 00:06:55,530 Αυτό είναι * ptr και, στη συνέχεια, μια τελεία και μετά την ηλικία. 142 00:06:55,530 --> 00:06:58,790 Έτσι για να έχουν πρόσβαση στο χώρο, και έχω ενημερώσει τώρα σε 22, διότι, ας 143 00:06:58,790 --> 00:07:00,860 ας πούμε, ήταν τα γενέθλιά μου. 144 00:07:00,860 --> 00:07:03,990 Υπάρχει μια σύνταξη συντόμευση χρησιμοποιώντας το βέλος εδώ. 145 00:07:03,990 --> 00:07:07,060 Έτσι ptr βέλος ηλικία είναι απλά το ίδιο * ptr.age. 146 00:07:07,060 --> 00:07:10,150 147 00:07:10,150 --> 00:07:11,550 Τώρα, αυτό είναι κάτι που θα πρέπει να απομνημονεύουν και να θυμάστε. 148 00:07:11,550 --> 00:07:15,010 >> Μπορείτε να χρησιμοποιείται πολύ στη pset6, ο ορθογράφος από το chipset. 149 00:07:15,010 --> 00:07:18,350 Αλλά αυτό είναι πραγματικά ό, τι συμβαίνει σε κάτω από το καπό. 150 00:07:18,350 --> 00:07:20,500 Είναι dereferencing το δείκτη και στη συνέχεια να έχουν πρόσβαση. 151 00:07:20,500 --> 00:07:21,432 Ερώτηση; 152 00:07:21,432 --> 00:07:22,682 >> ΚΟΙΝΟ: [δεν ακούγεται]. 153 00:07:22,682 --> 00:07:25,860 154 00:07:25,860 --> 00:07:28,060 >> R.J. AQUINO: Τότε γιατί με τη χρήση δείκτες όπως structs αντί του 155 00:07:28,060 --> 00:07:29,500 Δομές οι ίδιοι; 156 00:07:29,500 --> 00:07:33,740 Ο λόγος θα ήταν αν είστε περαστικοί ένα struct σε μια λειτουργία, ίσως 157 00:07:33,740 --> 00:07:36,900 θέλουν να περάσουν γύρω από ακριβώς το 4 ή έτσι bytes που αποτελούν το δείκτη, όπως 158 00:07:36,900 --> 00:07:40,375 σε αντίθεση με την 30 ή δυνητικά 40 bytes που αποτελούν το struct. 159 00:07:40,375 --> 00:07:44,410 Έτσι περνά κάτι σε μια λειτουργία είναι ευκολότερη όταν το πράγμα 160 00:07:44,410 --> 00:07:48,230 είναι μικρότερο σε σύντομη. 161 00:07:48,230 --> 00:07:49,074 Ερώτηση; 162 00:07:49,074 --> 00:07:53,026 >> ΚΟΙΝΟ: Μπορεί να αναφερθεί σε αυτό στην αρχή, αλλά υπάρχουν 163 00:07:53,026 --> 00:07:56,000 άλλες διαφάνειες επάνω σε [δεν ακούγεται]; 164 00:07:56,000 --> 00:07:58,960 >> R.J. AQUINO: Οι διαφάνειες θα είναι μετά τη συνεδρίαση επανεξέτασης. 165 00:07:58,960 --> 00:08:00,210 Θα τις δημοσιεύσουμε στην ιστοσελίδα. 166 00:08:00,210 --> 00:08:02,450 167 00:08:02,450 --> 00:08:06,870 Έτσι, κινείται και κινείται σε ελαφρώς πιο γρήγορα, θα πάμε να μιλήσουμε για τα δεδομένα 168 00:08:06,870 --> 00:08:07,350 δομές. 169 00:08:07,350 --> 00:08:08,040 Υπάρχουν πολλά. 170 00:08:08,040 --> 00:08:10,080 Καλύψαμε ένα σωρό από αυτούς. 171 00:08:10,080 --> 00:08:12,500 Εδώ είναι τι πρέπει να καταλάβουν σχετικά με τη δομή των δεδομένων. 172 00:08:12,500 --> 00:08:15,590 >> Θα πρέπει πραγματικά να καταλάβουμε σε υψηλό επίπεδο αυτό κάθε δομή είναι. 173 00:08:15,590 --> 00:08:21,190 Μπορείτε να εξηγήσετε στα αγγλικά για να σας φίλο που δεν έχει λάβει CS50 πώς 174 00:08:21,190 --> 00:08:25,580 είμαστε οργάνωση των δεδομένων μας και γιατί έπαιρνα να χρησιμοποιούν κάτι με αυτόν τον τρόπο; 175 00:08:25,580 --> 00:08:26,990 Αυτό είναι ένα πράγμα. 176 00:08:26,990 --> 00:08:29,650 Πράγμα δύο, να κατανοήσουν η εφαρμογή. 177 00:08:29,650 --> 00:08:34,270 Έτσι καταλαβαίνουν πώς να χρησιμοποιούν αυτά τα πράγματα σε C. Και εμείς θα πρέπει να πηγαίνει πέρα ​​από αυτό. 178 00:08:34,270 --> 00:08:39,030 >> Και τότε το πράγμα τρεις θα γνωρίζουν την χρόνους εκτέλεσης και οι περιορισμοί της 179 00:08:39,030 --> 00:08:40,470 διάφορες δομές που χρησιμοποιείτε. 180 00:08:40,470 --> 00:08:44,059 Έτσι καταλαβαίνω γιατί θα πρέπει να χρησιμοποιήσετε ένα hash πίνακα αντί ενός πίνακα. 181 00:08:44,059 --> 00:08:49,570 Καταλάβετε πόσο γρήγορα, κατά μέσο όρο, πρόσβαση σε ένα πίνακα κατακερματισμού είναι. 182 00:08:49,570 --> 00:08:54,010 Κατανόηση του τι είναι εργασίες γρήγορα για συνδεδεμένη λίστα, αλλά αργή σε πίνακες και 183 00:08:54,010 --> 00:08:56,080 αντίστροφα. 184 00:08:56,080 --> 00:08:59,780 Έτσι για να καταλάβετε ότι, θα πρέπει να κατανοήσουν Big-O συμβολισμός μόνο για να ξέρετε 185 00:08:59,780 --> 00:09:01,310 πώς να μιλήσουμε για αυτά τα είδη των πραγμάτων. 186 00:09:01,310 --> 00:09:02,700 Και θα μιλήσουμε γι 'αυτό. 187 00:09:02,700 --> 00:09:06,040 >> Έτσι, το πρώτο πράγμα, συνδεδεμένες λίστες. 188 00:09:06,040 --> 00:09:07,770 Εδώ είναι μια εικόνα υψηλού επιπέδου από μια συνδεδεμένη λίστα. 189 00:09:07,770 --> 00:09:08,830 Έχουμε αποδείξει αυτό στην τάξη. 190 00:09:08,830 --> 00:09:11,670 Εμείς συνήθως έχουν 10 άτομα στέκεται στη σκηνή. 191 00:09:11,670 --> 00:09:16,790 Αλλά έχουμε μια σειρά κόμβων όπου κάθε κόμβος έχει κάποια αξία και ένα δείκτη 192 00:09:16,790 --> 00:09:18,610 στην επόμενη τιμή της. 193 00:09:18,610 --> 00:09:21,730 Έτσι για να πάρετε από έναν κόμβο στον επόμενο, θα απλώς να πω, να μου δώσει το επόμενο κόμβο. 194 00:09:21,730 --> 00:09:22,530 Έχετε ότι ο κόμβος. 195 00:09:22,530 --> 00:09:23,770 Δώσε μου το επόμενο κόμβο. 196 00:09:23,770 --> 00:09:24,400 Έχετε ότι ο κόμβος. 197 00:09:24,400 --> 00:09:28,790 Δώσε μου το επόμενο κόμβο και ούτω καθεξής έως ότου δεν υπάρχει αριστερό κόμβο. 198 00:09:28,790 --> 00:09:31,850 >> Έτσι ώστε να συνεχίσει να μιλήσουμε για το σε υψηλό επίπεδο. 199 00:09:31,850 --> 00:09:34,100 Είναι πολύ εύκολο να τοποθετήσετε τα πράγματα σε μια συνδεδεμένη λίστα. 200 00:09:34,100 --> 00:09:36,010 Αν δεν νοιάζονται για τη σειρά, μπορείτε να το παρατήσω 201 00:09:36,010 --> 00:09:36,840 ακριβώς στην αρχή. 202 00:09:36,840 --> 00:09:38,520 Αυτό είναι σταθερό χρόνο. 203 00:09:38,520 --> 00:09:39,900 Αλλά είναι δύσκολο να βρεθεί μια τιμή. 204 00:09:39,900 --> 00:09:43,060 Εάν προσπαθείτε να ρωτήσω, είναι επτά στη λίστα μου; 205 00:09:43,060 --> 00:09:44,740 Θα πρέπει να περάσουν κάθε αξία. 206 00:09:44,740 --> 00:09:45,680 Είναι αυτό το επτά; 207 00:09:45,680 --> 00:09:46,610 Είναι αυτό το επτά; 208 00:09:46,610 --> 00:09:47,770 Είναι αυτό το επτά; 209 00:09:47,770 --> 00:09:48,690 Είναι αυτό το επτά; 210 00:09:48,690 --> 00:09:49,830 Ξανά και ξανά. 211 00:09:49,830 --> 00:09:51,520 Και αυτό είναι O (n). 212 00:09:51,520 --> 00:09:53,800 Έτσι, κατά τη μελέτη για το κουίζ, Συγκρίνετε αυτό με τους πίνακες. 213 00:09:53,800 --> 00:09:57,010 214 00:09:57,010 --> 00:09:58,220 >> Είναι αυτό εντάξει; 215 00:09:58,220 --> 00:09:59,220 Τα φώτα έσβησαν αμυδρό. 216 00:09:59,220 --> 00:10:01,110 OK. 217 00:10:01,110 --> 00:10:02,400 Όταν είναι συνδεδεμένη λίστα καλύτερο; 218 00:10:02,400 --> 00:10:04,640 Όταν είναι μια σειρά καλύτερα; 219 00:10:04,640 --> 00:10:06,670 Έτσι, ας δούμε λίγο κώδικα. 220 00:10:06,670 --> 00:10:08,960 Εδώ είναι ένα κόμβο δυναμικού. 221 00:10:08,960 --> 00:10:09,770 Είναι ένα struct. 222 00:10:09,770 --> 00:10:12,220 Έχει έναν int n, η οποία Θα είναι τιμή μας. 223 00:10:12,220 --> 00:10:17,780 Και έχει έναν κόμβο struct * επόμενο, το οποίο είναι δείκτης μας στον επόμενο κόμβο. 224 00:10:17,780 --> 00:10:23,040 Έτσι, εδώ, μπορούμε να δούμε ότι συνέβη να έχουν θέσει int στον κόμβο μας. 225 00:10:23,040 --> 00:10:27,850 Αλλά αν αυτό ήταν μια συνδεδεμένη λίστα char αστέρια ή μια συνδεδεμένη λίστα των αρμάτων, εμείς 226 00:10:27,850 --> 00:10:28,820 συνολικά θα μπορούσε να το κάνει αυτό πάρα πολύ. 227 00:10:28,820 --> 00:10:33,110 >> Θυμηθείτε το pset6, είχατε πιθανώς ένα συνδεδεμένη λίστα των αστέρων char ή απλά 228 00:10:33,110 --> 00:10:34,360 στατικές συστοιχίες char. 229 00:10:34,360 --> 00:10:37,370 230 00:10:37,370 --> 00:10:39,040 Ας δούμε εδώ σε μια λειτουργία. 231 00:10:39,040 --> 00:10:43,570 Έτσι θέλουμε να τοποθετήσετε ένα νέο n σε συνδεδεμένη λίστα μας. 232 00:10:43,570 --> 00:10:48,940 Ξεκινάμε με ένα δείκτη κεφάλι που είναι ένας δείκτης προς αυτόν τον κόμβο που έχει το 233 00:10:48,940 --> 00:10:53,460 τιμή του η και ένα επόμενο ενός δείκτη που σημεία προς αυτόν τον κόμβο αποτελεί αξία 234 00:10:53,460 --> 00:10:57,760 n και δίπλα από μηδενική, διότι είναι ο τελευταίος κόμβος. 235 00:10:57,760 --> 00:11:00,440 Έτσι, προς το συμφέρον του χρόνου, θα το κάνω βάλει όλο τον κώδικα στην οθόνη. 236 00:11:00,440 --> 00:11:03,130 Και θα περάσεις μερικές γραμμές σε έναν χρόνο. 237 00:11:03,130 --> 00:11:05,790 >> Έτσι, εδώ είναι ο κώδικας. 238 00:11:05,790 --> 00:11:07,560 Ελπίζω να είναι αναγνώσιμο. 239 00:11:07,560 --> 00:11:11,275 Το πρώτο πράγμα που κάνουμε είναι έχουμε malloc ένα νέο κόμβο. 240 00:11:11,275 --> 00:11:15,105 Γι 'αυτό κάνει ένα δείκτη σε ένα νέο κόμβο που δεν έχουν αρκετά που τίποτα 241 00:11:15,105 --> 00:11:16,450 σε αυτό ακόμα. 242 00:11:16,450 --> 00:11:19,580 Εμείς βεβαιωθείτε ότι ο νέος κόμβος δεν είναι null. 243 00:11:19,580 --> 00:11:22,220 Διαφορετικά, θα πρέπει να παραιτηθεί. 244 00:11:22,220 --> 00:11:27,680 Έτσι, αφού ελέγξει ότι, τώρα ορίσετε τις τιμές στον κόμβο. 245 00:11:27,680 --> 00:11:31,520 Έτσι βάζουμε το νέο n σε n τομέα μας. 246 00:11:31,520 --> 00:11:36,050 Και θέσαμε το επόμενο δείκτη στο σημείο να το αρχικό κεφάλι, έτσι ώστε να μπορούμε να 247 00:11:36,050 --> 00:11:38,900 τώρα έχουν εισαχθεί αυτό κόμβο στη λίστα μας. 248 00:11:38,900 --> 00:11:44,600 >> Τέλος, έχουμε το παγκόσμιο σημείο της κεφαλής στο νέο κόμβο μας, έτσι ώστε αν επρόκειτο να 249 00:11:44,600 --> 00:11:50,300 ξεκινούν από το κεφάλι, θα είμαστε σε αυτό νέο πρώτο κόμβο αντί 250 00:11:50,300 --> 00:11:51,560 το παλιό πρώτο κόμβο. 251 00:11:51,560 --> 00:11:55,320 Και όταν αυτή η λειτουργία βγαίνει, η μεταβλητή νέος κόμβος δεν υπάρχει πια, 252 00:11:55,320 --> 00:11:57,130 επειδή ήταν τοπικά στη συνάρτηση. 253 00:11:57,130 --> 00:11:59,770 Έτσι, αυτή είναι η κατάσταση του κόσμου. 254 00:11:59,770 --> 00:12:03,570 Επικεφαλής του παγκόσμιου μας δείχνει νέα μας πρώτο κόμβο, η οποία επισημαίνει μας 255 00:12:03,570 --> 00:12:06,346 αρχική πρώτο κόμβο, το οποίο σημεία στον κόμβο μετά από αυτό. 256 00:12:06,346 --> 00:12:09,790 >> Αυτή ήταν η εισαγωγή. 257 00:12:09,790 --> 00:12:12,150 Ελπίζω ότι ήταν σχετικά εύκολο να ακολουθήσει. 258 00:12:12,150 --> 00:12:14,300 Σε περίπτωση αμφιβολίας, να σχεδιάσετε μια εικόνα. 259 00:12:14,300 --> 00:12:17,820 Έτσι, θεωρώ ότι μιλάμε για συνδεδεμένες λίστες και κοιτάζοντας 260 00:12:17,820 --> 00:12:19,870 κώδικας είναι πολύ δεν είναι χρήσιμη. 261 00:12:19,870 --> 00:12:23,790 Ότι, κοιτάζοντας μια εικόνα ενός συνδεδεμένου λίστα σας επιτρέπει να σκεφτώ, OH, τόσο 262 00:12:23,790 --> 00:12:24,970 Έχω αυτό το κόμβο εδώ. 263 00:12:24,970 --> 00:12:28,980 Αλλά αν μπορώ να ενημερώσω ότι το δείκτη, καταλήγει αποσυνδεθεί. 264 00:12:28,980 --> 00:12:34,340 Και έχω ξεχάσει, όπου ο κόμβος πηγαίνει. 265 00:12:34,340 --> 00:12:35,390 Και ο κώδικας βγαίνει. 266 00:12:35,390 --> 00:12:37,830 Και έχετε πολλαπλούς κόμβους που έχουν αποσυνδεθεί. 267 00:12:37,830 --> 00:12:39,970 Και να μην καταλήξετε με η λίστα που θέλετε. 268 00:12:39,970 --> 00:12:43,320 >> Έτσι, αν σχεδιάσετε την εικόνα και να το κάνουμε βήμα προς βήμα, ελπίζουμε, θα δείτε 269 00:12:43,320 --> 00:12:46,840 η σωστή σειρά των πραγμάτων από την άποψη της ενημέρωση τους δείκτες για να βεβαιωθείτε ότι 270 00:12:46,840 --> 00:12:48,830 ότι ο κατάλογος έρχεται μαζί. 271 00:12:48,830 --> 00:12:51,240 Εισαγωγή είναι σχετικά απλή. 272 00:12:51,240 --> 00:12:55,210 Μια πιο περίπλοκη θα είναι εισαγωγή σε έναν ταξινομημένο κατάλογο. 273 00:12:55,210 --> 00:12:59,980 Μια πιο πολύπλοκη λειτουργία είναι να διαγράψετε και να βρει, έτσι κοιτάζοντας μέσα από ένα κατάλογο 274 00:12:59,980 --> 00:13:03,030 να δούμε αν κάτι είναι εκεί. 275 00:13:03,030 --> 00:13:07,220 Ίσως να το έκανε αυτό στην pset6 όταν πήρε στον hash πίνακα σας και είπατε, 276 00:13:07,220 --> 00:13:10,460 καλά, είναι η λέξη μήλο σε συνδεδεμένη λίστα μου; 277 00:13:10,460 --> 00:13:11,440 >> Έτσι, μπορεί να έχετε ήδη κάνει. 278 00:13:11,440 --> 00:13:15,530 Αλλά σίγουρα, φρεσκάρω τη μνήμη σας και προσπαθήστε να βρείτε Νέα υλοποίηση και 279 00:13:15,530 --> 00:13:19,150 Νέα υλοποίηση διαγραφή για μια συνδεδεμένη λίστα. 280 00:13:19,150 --> 00:13:22,850 Fun πλευρά σημείωση, υπάρχουν επίσης διπλά συνδεδεμένη καταλόγων, όπου έχετε 281 00:13:22,850 --> 00:13:27,490 δείκτες που δείχνουν προς τα εμπρός και προς τα πίσω, έτσι ώστε να μπορείτε να πάτε στο 282 00:13:27,490 --> 00:13:29,270 επόμενο κόμβο και στο προηγούμενο κόμβο. 283 00:13:29,270 --> 00:13:33,860 Και υπήρχε μια ερώτηση σχετικά με το περσινό κουίζ αυτού του τύπου, μιλώντας 284 00:13:33,860 --> 00:13:36,190 περίπου διπλά συνδεδεμένες λίστες. 285 00:13:36,190 --> 00:13:40,070 >> Τώρα, αυτό είναι μια δομή που είστε σχετικά εξοικειωμένοι με, επειδή οι περισσότεροι 286 00:13:40,070 --> 00:13:42,520 από εσάς τους χρησιμοποιήσει πιθανώς σε pset6. 287 00:13:42,520 --> 00:13:45,680 Εδώ είναι ένα που είναι λίγο λιγότερο εξοικειωμένοι. 288 00:13:45,680 --> 00:13:51,020 Σαν δευτερεύουσα σημείωση, νομίζω ότι Quiz 1 είναι κυρίως πιο δύσκολο από ό, τι Quiz 0, διότι 289 00:13:51,020 --> 00:13:54,600 τα πράγματα που κάνετε, σας δεν έχουν κάνει τόσο πολύ. 290 00:13:54,600 --> 00:13:58,100 Για να το θέσω με άλλο τρόπο, για Quiz 0, είχατε γράψει πολλά C. Και εμείς 291 00:13:58,100 --> 00:13:58,880 ρωτήσατε για το C. 292 00:13:58,880 --> 00:14:02,310 >> Για Quiz 1, θα πάμε για να σας ρωτήσω σχετικά με PHP και JavaScript, τα οποία θα 293 00:14:02,310 --> 00:14:03,490 Δεν έχω γράψει τόσο μεγάλο. 294 00:14:03,490 --> 00:14:07,590 Εμείς πάμε για να σας ρωτήσω σχετικά με C-code που δεν έχετε γράψει τόσο μεγάλο, 295 00:14:07,590 --> 00:14:09,130 αυτό το προηγμένο υλικό C. 296 00:14:09,130 --> 00:14:11,520 Έτσι, σίγουρα, να εφαρμόσει την έχουμε πράγματα μίλησε για το διάλεξη που θα 297 00:14:11,520 --> 00:14:15,260 δεν πρέπει απαραίτητα να σχετικά με το πρόβλημα που. 298 00:14:15,260 --> 00:14:17,870 >> Μιλώντας εκ των οποίων, δεν έχετε γράψει μια στοίβα σε ένα πρόβλημα που. 299 00:14:17,870 --> 00:14:19,610 Αλλά ήταν στη διάλεξη. 300 00:14:19,610 --> 00:14:22,530 Εδώ είναι η εικόνα υψηλού επιπέδου στοίβες ότι δείχνουμε κάθε χρόνο. 301 00:14:22,530 --> 00:14:26,180 Είναι η στοίβα των δίσκων σε η τραπεζαρία Mather. 302 00:14:26,180 --> 00:14:30,570 Σε υψηλό επίπεδο, στοίβες είναι η τελευταία in, first out δομή δεδομένων. 303 00:14:30,570 --> 00:14:32,040 Αυτό σημαίνει ότι θα πάμε να βάλει τα πράγματα σε - 304 00:14:32,040 --> 00:14:36,400 1, 3, 7, 12, 14, αρνητικό μηδέν. 305 00:14:36,400 --> 00:14:39,180 Το ένα πράγμα που δεν θα μπορούσε να έχει είπε - αρνητικό 3, 0. 306 00:14:39,180 --> 00:14:40,250 Βάζετε όλα αυτά τα πράγματα μέσα 307 00:14:40,250 --> 00:14:42,940 Και το τελευταίο που μπαίνει στα είναι η πρώτη αυτό που πρόκειται να βγει. 308 00:14:42,940 --> 00:14:44,170 >> Έτσι, έχετε δύο πράξεις - 309 00:14:44,170 --> 00:14:45,260 ωθήσει και ποπ. 310 00:14:45,260 --> 00:14:49,180 Όλα τα βάζοντας στο ότι ήμουν χειρονομία όπως αυτό είναι ώθηση. 311 00:14:49,180 --> 00:14:52,020 Και στη συνέχεια, όταν θα φτάσει για να αρπάξει κάτι ή να φτάσει στην κορυφή για να αρπάξει 312 00:14:52,020 --> 00:14:53,940 κάτι, αυτό είναι ποπ. 313 00:14:53,940 --> 00:14:55,540 Έτσι θα πάμε να εφαρμόσει στοίβες. 314 00:14:55,540 --> 00:14:57,870 Και τους έδειξε σε διάλεξη χρήση πινάκων. 315 00:14:57,870 --> 00:14:59,550 Αλλά θα μπορούσατε να κάνετε χρησιμοποιώντας συνδεδεμένες λίστες. 316 00:14:59,550 --> 00:15:01,770 Μια στοίβα είναι ένα εννοιολογικό δεδομένων δομή, όχι σαν μια 317 00:15:01,770 --> 00:15:03,760 εφαρμογή-συγκεκριμένη. 318 00:15:03,760 --> 00:15:06,420 >> Λοιπόν, τι θα που μοιάζουν; 319 00:15:06,420 --> 00:15:07,970 Θα δούμε κάτι σαν αυτό. 320 00:15:07,970 --> 00:15:10,840 Θα έπρεπε ένα μέγεθος ακέραιο. 321 00:15:10,840 --> 00:15:16,000 Και θα έχετε μια σειρά από αξίες που είμαστε καλώντας τους δίσκους, γιατί αυτό είναι 322 00:15:16,000 --> 00:15:18,570 ποια είναι η εικόνα ήταν για την μας - int δίσκους - 323 00:15:18,570 --> 00:15:21,740 και στη συνέχεια κάποιες μέγιστη χωρητικότητα. 324 00:15:21,740 --> 00:15:27,100 Λοιπόν, τι θα ωθήσει μοιάζει; 325 00:15:27,100 --> 00:15:33,250 Λοιπόν, αν έχουμε μια στοίβα s, στη συνέχεια, να ωθήσει κάτι επάνω s, θα παίρναμε 326 00:15:33,250 --> 00:15:34,620 το μέγεθος του s. 327 00:15:34,620 --> 00:15:42,270 Και αυτό θα είναι το επόμενο ανοικτή θέση του πίνακα μας. 328 00:15:42,270 --> 00:15:50,510 Έτσι, αν έχουμε τρία πράγματα στο stack μας, Στη συνέχεια δίσκους 3 θα είναι το επόμενο 329 00:15:50,510 --> 00:15:54,290 ανοικτή θέση, επειδή το 0, 1, και 2 έχουν ήδη γεμίσει. 330 00:15:54,290 --> 00:16:01,790 >> Έτσι βάζουμε την τιμή σε s.trays [s.size], η τρίτη θέση. 331 00:16:01,790 --> 00:16:06,290 Και τότε θα αυξήσετε s.size να πούμε, hey, είχαμε τρία πράγματα πριν. 332 00:16:06,290 --> 00:16:07,400 Τώρα, έχουμε τέσσερις. 333 00:16:07,400 --> 00:16:10,180 Έτσι την επόμενη φορά που θα ωθήσει, είστε πρόκειται να τεθεί κάτι σε 4. 334 00:16:10,180 --> 00:16:15,560 Ή την επόμενη φορά που θα εμφανιστεί, θα πάμε για να δούμε σε 3 αντί για 4 ή οτιδήποτε άλλο. 335 00:16:15,560 --> 00:16:18,000 Και τότε θα επιστρέψει αλήθεια ας πούμε, hey, τα καταφέραμε. 336 00:16:18,000 --> 00:16:19,160 Αυτό λειτούργησε. 337 00:16:19,160 --> 00:16:22,060 Ως γενικός κανόνας, εάν μια συνάρτηση που είναι θα πρέπει να επιστρέψουν αλήθεια ή 338 00:16:22,060 --> 00:16:26,370 ψευδείς επιστρέφει πάντα αλήθεια, μπορείτε να έχουν κάνει κάτι λάθος. 339 00:16:26,370 --> 00:16:28,350 Έτσι κάνει αυτό το έργο; 340 00:16:28,350 --> 00:16:32,400 >> Λοιπόν, αυτό λειτουργεί μια χαρά για 1, και 2, και 3, και 4, και πέντε. 341 00:16:32,400 --> 00:16:34,640 Αλλά ας πούμε ότι έχω φτάσει ιδιότητά μου. 342 00:16:34,640 --> 00:16:38,750 Έχω στη συνέχεια να εκτελέσετε σε ένα πρόβλημα, διότι εάν το μέγεθος είναι το ίδιο με την ικανότητα, είμαι 343 00:16:38,750 --> 00:16:43,340 τώρα προσπαθεί να βάλει κάτι σε μια πίνακας όπου δεν έχω χώρο. 344 00:16:43,340 --> 00:16:46,980 Έτσι, μια μικρή ελέγχου για να διορθώσετε αυτό. 345 00:16:46,980 --> 00:16:51,630 Αν s.size ΙΚΑΝΟΤΗΤΑ ==, επιστρέφει false. 346 00:16:51,630 --> 00:16:54,130 Διαφορετικά, προχωρήστε και να κάνουμε ό, τι κάναμε. 347 00:16:54,130 --> 00:16:55,660 Λοιπόν, τι άλλο θα μπορούσαμε να ζητήσουμε περίπου για στοίβες; 348 00:16:55,660 --> 00:16:56,460 Τι άλλο πρέπει να μελετήσει; 349 00:16:56,460 --> 00:16:57,690 Τι άλλο πρέπει να ασκήσετε; 350 00:16:57,690 --> 00:17:01,030 >> Λοιπόν, για την εφαρμογή ποπ. 351 00:17:01,030 --> 00:17:02,370 Έχουμε ήδη έκανε ώθηση. 352 00:17:02,370 --> 00:17:04,280 Θα το διορθώσω αυτό. 353 00:17:04,280 --> 00:17:08,180 Μια εφαρμογή που δεν είναι πίνακας, όπου μπορείτε να χρησιμοποιήσετε μια συνδεδεμένη λίστα, ίσως. 354 00:17:08,180 --> 00:17:09,390 Η εφαρμογή μη-int. 355 00:17:09,390 --> 00:17:10,940 Κάναμε ints εδώ. 356 00:17:10,940 --> 00:17:11,880 Αλλά θα μπορούσε να ήταν επιπλέει. 357 00:17:11,880 --> 00:17:13,010 Θα μπορούσα να είμαι χορδές. 358 00:17:13,010 --> 00:17:14,290 Θα μπορούσε να ήταν char αστέρια. 359 00:17:14,290 --> 00:17:17,960 Κοιτάξτε το παρελθόν κουίζ για τα είδη των ερωτήσεις που έχουμε ζητήσει για στοίβες. 360 00:17:17,960 --> 00:17:20,000 >> Θα πω ότι καλύψαμε στοίβες γύρω το ίδιο όπως έχουμε αυτές καλύπτονται από το 361 00:17:20,000 --> 00:17:20,540 τα προηγούμενα χρόνια. 362 00:17:20,540 --> 00:17:24,400 Έτσι, τα ερωτήματα κουίζ θα πρέπει να είναι μια καλή ένδειξη. 363 00:17:24,400 --> 00:17:27,010 Προχωρώντας προς τα εμπρός, ακόμη πιο γρήγορα, ουρές. 364 00:17:27,010 --> 00:17:28,200 Είναι σαν στοίβες. 365 00:17:28,200 --> 00:17:29,960 Αλλά είναι first in, first out. 366 00:17:29,960 --> 00:17:33,530 Αν είσαι Βρετανός, ουρά η λέξη ίσως κάνει πολύ νόημα για εσάς. 367 00:17:33,530 --> 00:17:36,390 Διαφορετικά, μπορεί να έχετε ακούσει για αυτό ως μια γραμμή. 368 00:17:36,390 --> 00:17:38,120 Λειτουργούν σαν τη γραμμή στο κατάστημα της Apple. 369 00:17:38,120 --> 00:17:40,740 Το πρώτο πρόσωπο για να εμφανιστούν στις 3:00 το πρωί είναι η πρώτη 370 00:17:40,740 --> 00:17:42,880 πρόσωπο για να αγοράσει iPad του. 371 00:17:42,880 --> 00:17:44,260 >> Έτσι έχουμε δύο πράξεις - 372 00:17:44,260 --> 00:17:45,720 enqueue και dequeue. 373 00:17:45,720 --> 00:17:47,560 Τοποθέτηση στην ουρά βάζει κάποιος στη γραμμή. 374 00:17:47,560 --> 00:17:50,070 Dequeue τραβά την πρώτη πρόσωπο από τη γραμμή. 375 00:17:50,070 --> 00:17:52,640 Και πάλι, μπορούμε να εφαρμόσουμε αυτό με μία συστοιχία. 376 00:17:52,640 --> 00:17:54,880 Έτσι ποια είναι η struct μας έδειξε σε διάλεξη; 377 00:17:54,880 --> 00:17:57,660 Ήταν αυτό. 378 00:17:57,660 --> 00:17:59,300 Πάλι, οι αριθμοί. 379 00:17:59,300 --> 00:18:02,020 Και πάλι, το μέγεθος και αυτό το νέο μέτωπο πράγμα. 380 00:18:02,020 --> 00:18:04,880 Γιατί είναι κάτι που ονομάζεται το μέτωπο; 381 00:18:04,880 --> 00:18:07,050 Είναι ο δείκτης του επόμενου στοιχείο για dequeue. 382 00:18:07,050 --> 00:18:12,210 Είναι απλά κρατώντας εσωτερικά παρακολουθείτε ο πρώτος άνθρωπος για να δείξει, έτσι ώστε να 383 00:18:12,210 --> 00:18:15,005 μπορεί να τραβήξει έξω όταν χρειάζεται να. 384 00:18:15,005 --> 00:18:19,322 >> Σίγουρα δούμε σημειώσεις από τις διαλέξεις και να προσπαθήσουμε να εφαρμόσουν enqueue και dequeue 385 00:18:19,322 --> 00:18:21,700 κατά τη μελέτη για το κουίζ. 386 00:18:21,700 --> 00:18:23,190 Σημαντικά πράγματα να σκεφτώ. 387 00:18:23,190 --> 00:18:27,260 Αναδίπλωση γύρω, αν το μπροστινό συν το μέγεθος καταλήγει μεγαλύτερο από την ικανότητα. 388 00:18:27,260 --> 00:18:32,670 Και πάλι, αν δομή σας είναι πλήρης, θα πάμε να έχουν ένα πρόβλημα. 389 00:18:32,670 --> 00:18:34,780 Hash πίνακες που έχετε δει πριν. 390 00:18:34,780 --> 00:18:39,820 Οι περισσότεροι από εσάς ίσως εφαρμοστεί αυτά για pset6. 391 00:18:39,820 --> 00:18:44,210 Είναι μια δομή που έχει ως στόχο την O (1) σταθερό χρόνο εισαγωγής και O (1) 392 00:18:44,210 --> 00:18:46,430 συνεχή αναζήτηση του χρόνου. 393 00:18:46,430 --> 00:18:49,760 >> Σε CS50, υλοποιήσαμε αυτό ως μια σειρά από συνδεδεμένες λίστες. 394 00:18:49,760 --> 00:18:53,690 Το βασικό στοιχείο σε ένα πίνακα κατακερματισμού είναι η συνάρτηση κατακερματισμού. 395 00:18:53,690 --> 00:18:58,350 Έτσι μετατρέπει τη συμβολή σας, ας πούμε, λεξικό λέξη, σε αριθμό, 396 00:18:58,350 --> 00:18:59,560 η οποία πρόκειται να είναι ευρετήριό μας. 397 00:18:59,560 --> 00:19:01,410 Και θα χρησιμοποιήσει αυτό το ευρετήριο σε σειρά μας. 398 00:19:01,410 --> 00:19:05,374 Έτσι, εδώ είναι μια χαριτωμένη μικρή εικόνα από study.50.net. 399 00:19:05,374 --> 00:19:08,060 Έχουμε ρίξει όλες τις λέξεις σε hash λειτουργία μας. 400 00:19:08,060 --> 00:19:10,950 Και η συνάρτηση κατακερματισμού μας λέει πού να θέσει αυτά τα λόγια. 401 00:19:10,950 --> 00:19:15,650 >> Αυτό είναι μεγάλη στη γη, όπου υπάρχει μόνο μία λέξη για κάθε υποδοχή. 402 00:19:15,650 --> 00:19:20,480 Αλλά, όπως θυμάστε από pset6, υπάρχει είναι περισσότερες λέξεις από σχισμές. 403 00:19:20,480 --> 00:19:23,080 Έτσι τι συμβαίνει όταν πάρετε μια σύγκρουση; 404 00:19:23,080 --> 00:19:26,730 Αντί για την αποθήκευση ενός αξία, ας πούμε, πίνακα κατακερματισμού 3, θα 405 00:19:26,730 --> 00:19:27,990 αποθηκεύσετε μια συνδεδεμένη λίστα. 406 00:19:27,990 --> 00:19:32,900 Και έτσι αντί να πεπόνι εδώ, θα έχετε μια συνδεδεμένη λίστα, 407 00:19:32,900 --> 00:19:34,190 όπου ο πρώτος κόμβος είναι πεπόνι. 408 00:19:34,190 --> 00:19:35,260 Και ο επόμενος κόμβος είναι γάτα. 409 00:19:35,260 --> 00:19:38,970 Και ο τρίτος κόμβος είναι σύγκρουσης, ας πω, επειδή ξεκινήσει όλα αυτά τα λόγια 410 00:19:38,970 --> 00:19:41,110 με C. 411 00:19:41,110 --> 00:19:42,700 >> Έτσι, οι περισσότεροι από εσάς έκαναν αυτό για pset6. 412 00:19:42,700 --> 00:19:45,685 Εάν δεν κάνετε έναν πίνακα κατακερματισμού pset6 και θα προσπαθήσει κάτι σαν 413 00:19:45,685 --> 00:19:47,720 ένα trie, σίγουρα επανεξετάσει πίνακες κατακερματισμού. 414 00:19:47,720 --> 00:19:50,650 Αν το έκανα pset6, σίγουρα αναθεώρηση πίνακες κατακερματισμού. 415 00:19:50,650 --> 00:19:53,610 Και αν το έκανε για pset6 και δεν έκανε λειτουργήσει αρκετά δεξιά και 416 00:19:53,610 --> 00:19:56,150 είχε πολλά προβλήματα με αυτό, σίγουρα αναθεώρηση πίνακες κατακερματισμού. 417 00:19:56,150 --> 00:20:01,610 Έτσι, το μάθημα είναι πραγματικά σίγουρα αναθεώρηση πίνακες κατακερματισμού. 418 00:20:01,610 --> 00:20:07,130 >> Η συντριπτική μειοψηφία έχετε δοκιμάσει έξω προσπαθεί για pset6. 419 00:20:07,130 --> 00:20:08,570 Εικόνα υψηλού επιπέδου. 420 00:20:08,570 --> 00:20:15,150 Είναι κάτι σαν αυτό, όπου κάθε κόμβος έχει μια σειρά από τα παιδιά, όπου κάθε 421 00:20:15,150 --> 00:20:17,100 παιδί αντιστοιχεί σε ένα γράμμα. 422 00:20:17,100 --> 00:20:20,520 Και κάθε κόμβος λέει επίσης, hey, είμαι μια λέξη. 423 00:20:20,520 --> 00:20:25,933 Έτσι, σε αυτή την περίπτωση, η λέξη Maxwell, αν ακολουθήσετε το Μ στο Α έως το 424 00:20:25,933 --> 00:20:28,530 X-W-E-L-L και στη συνέχεια να ακολουθήσει μία περισσότερο. 425 00:20:28,530 --> 00:20:32,800 Και μπορείτε να πάρετε αυτό το σύμβολο, δέλτα, το οποίο που σημαίνει να σημαίνει αυτό είναι μια λέξη. 426 00:20:32,800 --> 00:20:34,780 Έτσι Maxwell είναι μια λέξη. 427 00:20:34,780 --> 00:20:38,430 Αυτά τα δέλτα είναι όλη σημασιοδοτικών ποια πράγματα είναι λέξεις και η οποία 428 00:20:38,430 --> 00:20:40,360 τα πράγματα δεν είναι. 429 00:20:40,360 --> 00:20:46,400 >> Έτσι, pset6, τα δεδομένα που είναι αποθηκευμένα παράλληλα με κάποιο από τους κόμβους μας ήταν "I am a 430 00:20:46,400 --> 00:20:52,630 λέξη. "Και το δροσερό πράγμα για προσπαθεί είναι να αποδείξει την εισαγωγή και 431 00:20:52,630 --> 00:20:55,080 αναζήτηση σε O (μήκος μιας λέξης). 432 00:20:55,080 --> 00:20:59,450 Έτσι απλά για να περάσει Maxwell, είναι Μ-Α-Χ-W-E-L-L. Έτσι επτά ή οκτώ - 433 00:20:59,450 --> 00:21:00,360 Δεν μπορώ να μετρήσω - 434 00:21:00,360 --> 00:21:03,920 βήματα για να φτάσουμε στο τέλος και να ελέγξει τα πράγματα έξω. 435 00:21:03,920 --> 00:21:06,800 Έτσι γρήγορη εφαρμογή εδώ. 436 00:21:06,800 --> 00:21:10,230 Rob πέρασε από μια συνδεδεμένη λίστα στην μεταθανάτια του. 437 00:21:10,230 --> 00:21:11,600 Έτσι, ελέγξτε ότι έξω. 438 00:21:11,600 --> 00:21:11,720 Λυπάμαι. 439 00:21:11,720 --> 00:21:13,240 Πήγε μέσω trie στην μεταθανάτια του. 440 00:21:13,240 --> 00:21:14,260 Έτσι, ελέγξτε ότι έξω. 441 00:21:14,260 --> 00:21:24,410 >> Αλλά έχετε ουσιαστικά κάθε κόμβος έχει 27 δείκτες στις επόμενες κόμβους και ένας 442 00:21:24,410 --> 00:21:27,050 Λογικό για είμαι μια λέξη. 443 00:21:27,050 --> 00:21:31,530 Αναχώρηση μεταθανάτια Rob για το πώς Αυτό πράγματι εφαρμόζεται. 444 00:21:31,530 --> 00:21:34,750 Τελική δομή μας, τα δέντρα μας και δυαδικά δέντρα αναζήτησης. 445 00:21:34,750 --> 00:21:41,530 Έτσι, αναζητούν σε αυτά, αυτά καλύπτονται πιο πρόσφατα Εβδομάδα 8, τη Δευτέρα. 446 00:21:41,530 --> 00:21:46,960 Ένα δέντρο είναι παρόμοια με μια trie, εκτός από εσάς δεν έχουν απαραιτήτως 27 κόμβους 447 00:21:46,960 --> 00:21:47,500 κάθε σημείο. 448 00:21:47,500 --> 00:21:52,820 Και δεν έχετε αυτά τα δεδομένα σε κάθε βήμα που σημαίνει αν η - 449 00:21:52,820 --> 00:21:54,030 η διαδρομή δεν έχει σημασία. 450 00:21:54,030 --> 00:22:00,870 Λαμβάνοντας υπόψη ότι η trie, η πορεία από πάνω προς τα κάτω, Maxwell, ήταν σημαντικό για μας. 451 00:22:00,870 --> 00:22:05,270 >> Όμως, κάθε κόμβος έχει πολλαπλά τα παιδιά, ίσως. 452 00:22:05,270 --> 00:22:07,290 Έχουμε λίγο περισσότερο λεξιλόγιο. 453 00:22:07,290 --> 00:22:09,530 Η ρίζα του δέντρου είναι στην κορυφή. 454 00:22:09,530 --> 00:22:12,520 Και μπορούμε να πούμε ότι η ίδια η bottommost κόμβους που δεν έχουν 455 00:22:12,520 --> 00:22:14,530 παιδιά είναι τα φύλλα. 456 00:22:14,530 --> 00:22:18,040 Έτσι, σαν ένα trie, ένα δέντρο είναι μια δομή κόμβων. 457 00:22:18,040 --> 00:22:21,490 Ένα κοινό είδος δέντρου που θα πάμε να μιλήσουμε για είναι ένα δυαδικό δέντρο, όπου 458 00:22:21,490 --> 00:22:26,040 κάθε κόμβος δεν έχει καθόλου παιδιά ή ένα παιδί ή δύο παιδιά. 459 00:22:26,040 --> 00:22:28,890 Έτσι, αυτή η εικόνα δεν είναι εδώ ένα δυαδικό δένδρο, επειδή 460 00:22:28,890 --> 00:22:32,890 κόμβος 3 έχει τρία παιδιά. 461 00:22:32,890 --> 00:22:38,140 >> Αλλά αν ήταν να αγνοήσουμε εκείνους, το υπόλοιπο από αυτό είναι ένα δυαδικό δένδρο, διότι 462 00:22:38,140 --> 00:22:43,200 αποδεικνύει την ιδιότητα ότι κάθε κόμβος έχει μηδέν, ένα, ή δύο παιδιά. 463 00:22:43,200 --> 00:22:46,400 Έτσι, πώς θα μπορούσαμε να εκφράσουμε αυτό στον κώδικα; 464 00:22:46,400 --> 00:22:51,460 Θα μπορούσαμε να έχουμε έναν κόμβο όπου κάθε κόμβος έχει ένας ακέραιος στο εσωτερικό του, καθώς 465 00:22:51,460 --> 00:22:55,590 ως δείκτης για το δέντρο στο αριστερό και έναν δείκτη για το δέντρο για το 466 00:22:55,590 --> 00:22:59,510 δεξιά, έτσι ώστε τα δύο παιδιά. 467 00:22:59,510 --> 00:23:00,880 Πώς είναι αυτό χρήσιμο; 468 00:23:00,880 --> 00:23:05,740 Λοιπόν, αν κάνουμε τους κανόνες σχετικά με το πού βάλει κόμβους, μπορούμε να κάνουμε πιο γρήγορες αναζητήσεις. 469 00:23:05,740 --> 00:23:10,630 >> Έτσι, υπάρχει μια έννοια της δυαδικής αναζήτησης δέντρο, όπου όλοι οι κόμβοι σχετικά με την 470 00:23:10,630 --> 00:23:14,420 αριστερό υποδένδρο έχουν μικρότερη αξία από τον κόμβο που ψάχνουμε. 471 00:23:14,420 --> 00:23:17,880 Και όλοι οι κόμβοι στο δεξί υποδένδρο έχουν μεγαλύτερη αξία 472 00:23:17,880 --> 00:23:18,660 από τον κόμβο ρίζα. 473 00:23:18,660 --> 00:23:20,670 Τώρα, που μοιάζει με πολλά λόγια. 474 00:23:20,670 --> 00:23:23,770 Πάω να το βάλει μέσα της διπλής εισαγωγικά και να σας δείξει μια εικόνα. 475 00:23:23,770 --> 00:23:27,010 Τόσο εδώ είναι ένα παράδειγμα ένα δυαδικό δένδρο αναζήτησης. 476 00:23:27,010 --> 00:23:28,770 Δείτε ότι ξεκινάμε με 10. 477 00:23:28,770 --> 00:23:31,780 Πάντα στα αριστερά της 10 είναι μικρότερο από ό, τι. 478 00:23:31,780 --> 00:23:33,130 Και πάντα προς τα δεξιά είναι μεγαλύτερο από αυτό. 479 00:23:33,130 --> 00:23:37,620 >> Αλλά περισσότερο από αυτό, κάθε κόμβος το δέντρο εκφράζει αυτή την ιδιότητα. 480 00:23:37,620 --> 00:23:42,110 Έτσι, ο κόμβος 7 έχει 3 έως το αριστερά και ένα 9 προς τα δεξιά. 481 00:23:42,110 --> 00:23:44,440 Έτσι, όλα αυτά είναι μικρότερα από 10. 482 00:23:44,440 --> 00:23:50,470 Αλλά κοιτάζοντας μόνο εκείνοι, το 7 έχει 3 προς τα αριστερά και 9 του προς τα δεξιά της. 483 00:23:50,470 --> 00:23:56,100 Και ομοίως στα δεξιά, έχει 15 14 προς τα αριστερά και 50 του προς τα δεξιά της. 484 00:23:56,100 --> 00:24:03,770 Έτσι, οι τρεις κόμβοι εκεί, 15, 14, και 50, είναι επίσης ένα έγκυρο δυαδικό δέντρο 485 00:24:03,770 --> 00:24:05,480 ή ένα έγκυρο δυαδικό δένδρο αναζήτησης. 486 00:24:05,480 --> 00:24:07,250 Και γιατί όλα αυτά είναι μεγαλύτερο από 10. 487 00:24:07,250 --> 00:24:08,960 Έτσι, τους επιτρέπεται να σχετικά με το δικαίωμα εκεί. 488 00:24:08,960 --> 00:24:09,940 Είναι μια ερώτηση εκεί; 489 00:24:09,940 --> 00:24:12,580 >> ΚΟΙΝΟ: Πώς θα αντιμετωπίσουμε όταν έχετε δύο εφτάρια; 490 00:24:12,580 --> 00:24:12,850 >> R.J. AQUINO: Ναι. 491 00:24:12,850 --> 00:24:16,550 Πώς μπορείτε να ασχοληθεί με δύο τιμές που είναι το ίδιο; 492 00:24:16,550 --> 00:24:21,465 Ορισμένα δυαδικά δένδρα αναζήτησης λέτε ότι αγνοήσει εις διπλούν, διότι ο στόχος είναι 493 00:24:21,465 --> 00:24:24,280 απλά να πω, έχω δει αυτά τα πράγματα μέχρι τώρα. 494 00:24:24,280 --> 00:24:28,120 Ορισμένα δυαδικά δένδρα αναζήτησης θα μπορούσαμε να πούμε έχουν μια μέτρηση στο εσωτερικό του κόμβου. 495 00:24:28,120 --> 00:24:32,000 Άλλοι μπορεί να πουν ότι τα πάντα για να η αριστερά είναι μικρότερη ή ίση με. 496 00:24:32,000 --> 00:24:33,470 Και πάντα προς τα δεξιά είναι μεγαλύτερο από. 497 00:24:33,470 --> 00:24:36,520 >> Εξαρτάται μόνο από ό, τι η το πρόβλημα είναι είστε επίλυση. 498 00:24:36,520 --> 00:24:40,840 Έτσι, σε ένα λεξικό, για παράδειγμα, μπορείτε δεν θα νοιάζονται για τα διπλότυπα. 499 00:24:40,840 --> 00:24:41,490 Θα τους πετάξει έξω. 500 00:24:41,490 --> 00:24:44,719 Αλλά κάποιο άλλο πρόβλημα που μπορεί να ενδιαφέρονται. 501 00:24:44,719 --> 00:24:49,242 >> ΚΟΙΝΟ: Είναι δυνατόν να έχουν α 1 στα αριστερά του 15, το οποίο 502 00:24:49,242 --> 00:24:50,590 είναι μικρότερο από 10; 503 00:24:50,590 --> 00:24:51,885 >> R.J. AQUINO: Όχι. 504 00:24:51,885 --> 00:24:56,570 Εάν το 14 εδώ ήταν ένα 1, αυτό θα δεν είναι έγκυρο δυαδικό δέντρο αναζήτησης, 505 00:24:56,570 --> 00:25:00,840 γιατί τα πάντα στα δεξιά του 10 πρέπει να είναι μεγαλύτερο από αυτό. 506 00:25:00,840 --> 00:25:02,300 Και θα δούμε γιατί. 507 00:25:02,300 --> 00:25:07,960 Εάν στη γη της αναζήτησης στόχος μου είναι να βρει 14, μπορώ να ξεκινήσω από τη ρίζα. 508 00:25:07,960 --> 00:25:08,500 Έτσι κοιτάζω. 509 00:25:08,500 --> 00:25:08,710 OK. 510 00:25:08,710 --> 00:25:10,670 Εμείς πάμε για να ξεκινήσει από τη ρίζα. 511 00:25:10,670 --> 00:25:12,500 Κοίτα 10. 512 00:25:12,500 --> 00:25:16,050 >> Λοιπόν, 14, ο στόχος μας, είναι μεγαλύτερο από 10. 513 00:25:16,050 --> 00:25:17,370 Γι 'αυτό πρέπει να είναι στα δεξιά. 514 00:25:17,370 --> 00:25:21,780 Αυτό είναι πολύ παρόμοιο με το σύνολο τηλέφωνο πράγμα βιβλίο κάναμε, το δυαδικό 515 00:25:21,780 --> 00:25:23,720 αναζήτηση εκεί. 516 00:25:23,720 --> 00:25:26,430 Αλλά αντί της δυαδικής αναζήτησης σε μια σειρά, είμαστε δυαδικό 517 00:25:26,430 --> 00:25:28,490 αναζήτηση σε αυτό το δέντρο. 518 00:25:28,490 --> 00:25:31,260 Έτσι είμαστε ακόμη ψάχνει για 14. 519 00:25:31,260 --> 00:25:32,480 Λοιπόν, 14 είναι μικρότερη από 15. 520 00:25:32,480 --> 00:25:36,430 Έτσι, αν αυτό είναι το δέντρο μας, θα πρέπει να είναι σε αυτήν την περιοχή εδώ. 521 00:25:36,430 --> 00:25:39,680 Πρέπει να είναι στα δεξιά του 10 και στα αριστερά του 15. 522 00:25:39,680 --> 00:25:42,250 >> Και έτσι έχουμε ελέγξει αυτό κόμβο. 523 00:25:42,250 --> 00:25:45,790 Και yay, βρήκαμε 14. 524 00:25:45,790 --> 00:25:46,760 Είμαι δεν πρόκειται να περπατήσει μέσα από αυτό. 525 00:25:46,760 --> 00:25:48,090 Αλλά εδώ είναι ο κώδικας. 526 00:25:48,090 --> 00:25:49,690 Είναι στην πραγματικότητα σχετικά απλή, 527 00:25:49,690 --> 00:25:52,630 γιατί αυτή είναι αναδρομική. 528 00:25:52,630 --> 00:25:55,420 Τι θα μπορούσαμε να σας ζητήσουμε να κάνετε ένα κουίζ; 529 00:25:55,420 --> 00:25:57,000 Θα μπορούσαμε να σας ζητήσω να γράψετε τον κωδικό αυτό. 530 00:25:57,000 --> 00:25:59,170 Θα μπορούσαμε να σας ζητήσουμε να δούμε αυτόν τον κώδικα και να τροποποιήσετε αυτόν τον κώδικα και να εξηγήσει τι 531 00:25:59,170 --> 00:26:00,210 το κάνει. 532 00:26:00,210 --> 00:26:00,390 Ναι. 533 00:26:00,390 --> 00:26:00,770 Ερώτηση; 534 00:26:00,770 --> 00:26:04,240 >> ΚΟΙΝΟ: Είναι αυτές οι διαφάνειες θα είναι διατίθενται όπως ήταν την τελευταία φορά; 535 00:26:04,240 --> 00:26:04,740 >> R.J. AQUINO: Ναι. 536 00:26:04,740 --> 00:26:06,460 Έτσι, αυτές οι διαφάνειες θα είναι σίγουρα να αναρτηθεί. 537 00:26:06,460 --> 00:26:08,640 >> ΚΟΙΝΟ: Είναι δημοσιεύτηκε στην πραγματικότητα αυτή τη στιγμή στην ιστοσελίδα. 538 00:26:08,640 --> 00:26:10,020 David έκανε ακριβώς αυτό. 539 00:26:10,020 --> 00:26:12,720 >> R.J. AQUINO: Οι διαφάνειες αυτή τη στιγμή στην ιστοσελίδα. 540 00:26:12,720 --> 00:26:16,420 Κατά πάσα πιθανότητα θα μπαλώσουν ένα ζευγάρι τα λάθη που διαπιστώθηκαν και να τα διορθώσετε. 541 00:26:16,420 --> 00:26:19,940 Αλλά υπάρχει ένα ρεύμα έκδοση στην ιστοσελίδα. 542 00:26:19,940 --> 00:26:21,820 Άλλα πράγματα που θα μπορούσαμε να σας ζητήσουμε να κάνετε - 543 00:26:21,820 --> 00:26:23,790 γράψτε ένθετο. 544 00:26:23,790 --> 00:26:27,490 Γράψτε μια επαναληπτική έκδοση του αναδρομική συνάρτηση που σας έδειξα 545 00:26:27,490 --> 00:26:32,520 ή να μιλήσουμε για αυτά τα πράγματα, όπως στην σκέψεις, στα λόγια, στις προτάσεις. 546 00:26:32,520 --> 00:26:35,760 Συγκρίνοντας τους χρόνους λειτουργίας και εξηγώντας τι θα θέλετε να χρησιμοποιήσετε ένα δυαδικό 547 00:26:35,760 --> 00:26:39,200 δέντρο αναζήτησης αντί για ένα hash πίνακα, για παράδειγμα. 548 00:26:39,200 --> 00:26:43,580 >> Έτσι, καταλαβαίνω αυτές τις δομές σε ένα αρκετά βαθύ επίπεδο. 549 00:26:43,580 --> 00:26:47,440 Κατανοήστε πώς να τα γράφουν, πώς να χρήση τους, πώς να μιλήσουμε γι 'αυτούς. 550 00:26:47,440 --> 00:26:50,270 Και θα πρέπει να ρυθμίσετε όλες. 551 00:26:50,270 --> 00:26:50,630 Ερώτηση; 552 00:26:50,630 --> 00:26:55,070 >> ΚΟΙΝΟ: Όταν είστε γραπτώς το δυαδικό δένδρο αναζήτησης, πώς το κάνεις 553 00:26:55,070 --> 00:27:01,460 προσδιορίσει τι αξία να καθιστούν ως τη ρίζα; 554 00:27:01,460 --> 00:27:06,120 >> R.J. AQUINO: Άρα το ερώτημα ήταν, τι αξίας κάνετε ως τη ρίζα; 555 00:27:06,120 --> 00:27:08,760 Ανάλογα με τον κωδικό σας, μπορεί να έχει μια παγκόσμια ρίζα. 556 00:27:08,760 --> 00:27:14,290 Έτσι, μπορεί να έχετε πιθανόν είχε pset6 ένα παγκόσμιο πίνακα κατακερματισμού. 557 00:27:14,290 --> 00:27:18,640 Ή θα μπορούσε να περάσει τη ρίζα στην ως επιχείρημα. 558 00:27:18,640 --> 00:27:23,810 Έτσι, αυτή η λειτουργία αναζήτησης εδώ παίρνει ένα επιχείρημα ένας κόμβος *. 559 00:27:23,810 --> 00:27:27,420 Και έτσι ό, τι κόμβος τυχαίνει να είναι κοιτάζοντας το ένα είστε θεραπεία 560 00:27:27,420 --> 00:27:31,510 ως root σας όταν περάσει μέσα 561 00:27:31,510 --> 00:27:32,320 Και είμαι έτοιμος. 562 00:27:32,320 --> 00:27:33,480 Αυτοί είναι οι διαφάνειες μου. 563 00:27:33,480 --> 00:27:35,940 Το επόμενο πρόσωπο που μπορεί να έρθει ανταλλαγής σε ένα φορητό υπολογιστή και μικρόφωνο. 564 00:27:35,940 --> 00:27:47,390 565 00:27:47,390 --> 00:27:49,760 >> ROB BOWDEN: Νομίζω ότι θα μπορούσε να έχει ερμήνευσε το εν λόγω ζήτημα με διαφορετικό τρόπο. 566 00:27:49,760 --> 00:27:53,826 Αλλά εγώ θα ερμηνευτεί ως, αν έχετε οι αριθμοί 1, 2, και 3, πώς μπορούμε να 567 00:27:53,826 --> 00:27:56,720 ξέρουν να κάνουν τη ρίζα 2 σε αντίθεση με 1 ή 3; 568 00:27:56,720 --> 00:27:59,480 Αν κάνουμε 2 ρίζα, τότε είναι ωραία 1 και 3, προς τα αριστερά και δεξιά. 569 00:27:59,480 --> 00:28:04,610 Αλλά αν 1 είναι η ρίζα, τότε είναι 1 έως το κορυφή, 2 το δικαίωμα, 3 προς τα δεξιά. 570 00:28:04,610 --> 00:28:10,880 Έτσι, από προεπιλογή, δεν ξέρετε τι πρέπει να κάνουν τη ρίζα. 571 00:28:10,880 --> 00:28:15,400 Και για κάθε αλγόριθμο είμαστε περιμένουμε να να σας δώσω, μόνο το πρώτο πράγμα που 572 00:28:15,400 --> 00:28:16,680 ένθετο θα είναι η ρίζα. 573 00:28:16,680 --> 00:28:19,890 Ή εμείς θα σας δώσουμε ένα δυαδικό δέντρο που υπάρχει ήδη που έχει μια ρίζα. 574 00:28:19,890 --> 00:28:24,760 Αλλά και άλλοι αλγόριθμοι τέτοιο ώστε, η ρίζα θα ενημερώσει, έτσι ώστε αν 575 00:28:24,760 --> 00:28:28,370 καταλήγουν στην κατάσταση όπου αυτό είναι 1, 2, 3, θα ενημερώνει αυτόματα να 576 00:28:28,370 --> 00:28:30,900 2 κάνει την νέα ρίζα, έτσι ώστε να είναι ακόμα ωραία βάση. 577 00:28:30,900 --> 00:28:33,750 578 00:28:33,750 --> 00:28:34,833 >> ANGELA LI: Cool. 579 00:28:34,833 --> 00:28:36,170 Γεια σας, παιδιά. 580 00:28:36,170 --> 00:28:37,810 Είμαι Angela. 581 00:28:37,810 --> 00:28:42,490 Και Πάω να τελειώσω C μας και στη συνέχεια να πάνε σε κάποια από την ιστοσελίδα μας 582 00:28:42,490 --> 00:28:43,120 τεχνολογιών - 583 00:28:43,120 --> 00:28:46,570 HTTP, HTML, CSS. 584 00:28:46,570 --> 00:28:49,610 Έτσι, το πρώτο πράγμα είναι ρυθμιστικό επιθέσεις υπερχείλισης. 585 00:28:49,610 --> 00:28:53,070 Έτσι, ας ρίξουμε μια ματιά σε αυτόν τον κωδικό. 586 00:28:53,070 --> 00:28:54,260 Είναι πολύ απλό. 587 00:28:54,260 --> 00:28:55,460 Υπάρχει μια συνάρτηση foo. 588 00:28:55,460 --> 00:28:56,990 Και δεν επιστρέφει τίποτα. 589 00:28:56,990 --> 00:29:00,950 Αλλά παίρνει σε ένα δείκτη σε μια σειρά που ονομάζεται μπαρ. 590 00:29:00,950 --> 00:29:04,920 >> Και πρόκειται να το δηλώσει ρυθμιστικό διάλυμα, το οποίο είναι ένας χαρακτήρας 591 00:29:04,920 --> 00:29:07,690 πίνακα που έχει 12 υποδοχές. 592 00:29:07,690 --> 00:29:11,730 Και χρησιμοποιεί memcpy, η οποία είναι απλά μια λειτουργίας που αντιγράφει από μία διεύθυνση 593 00:29:11,730 --> 00:29:12,910 σε ένα άλλο. 594 00:29:12,910 --> 00:29:19,400 Έτσι, αυτό προσπαθεί να αντιγράψει σε ρυθμιστικό μας, από όποια 595 00:29:19,400 --> 00:29:21,140 μπαρ δείχνοντας. 596 00:29:21,140 --> 00:29:24,640 Έτσι, οποιαδήποτε ιδέα τι είναι λάθος με αυτό τον κωδικό; 597 00:29:24,640 --> 00:29:27,568 598 00:29:27,568 --> 00:29:30,830 >> ΚΟΙΝΟ: Εάν η γραμμή είναι μεγαλύτερη από ό, τι C, που θα αντικαταστήσει. 599 00:29:30,830 --> 00:29:31,520 >> ANGELA LI: Ναι, ακριβώς. 600 00:29:31,520 --> 00:29:34,200 Δεν έχουμε καμία εγγύηση ότι το μπαρ πρόκειται να είναι μικρότερη από 12. 601 00:29:34,200 --> 00:29:36,080 Εμείς απλά έκανε κάποιο αυθαίρετο αριθμό 12. 602 00:29:36,080 --> 00:29:38,380 Και ήμασταν σαν, ας ελπίσουμε ότι εισόδου του χρήστη μας είναι λιγότερο από ό, τι 603 00:29:38,380 --> 00:29:40,440 12 χαρακτήρες. 604 00:29:40,440 --> 00:29:46,320 Έτσι, σε έναν ιδανικό κόσμο, εάν η είσοδος μας είναι πάντα όπως αναμένεται, τότε θα πάρουμε 605 00:29:46,320 --> 00:29:47,550 κάτι σαν, γειά σου. 606 00:29:47,550 --> 00:29:48,920 Αυτό είναι λιγότερο από 12 χαρακτήρες. 607 00:29:48,920 --> 00:29:51,870 Παίρνει διαβάσει σε char c. 608 00:29:51,870 --> 00:29:53,280 Και τότε θα κάνουμε κάτι με αυτό. 609 00:29:53,280 --> 00:29:54,800 Δεν έχει τόση σημασία. 610 00:29:54,800 --> 00:29:59,740 >> Αλλά ένα κακόβουλο άτομο θα μπορούσε να κάνει κάτι περισσότερο όπως αυτό, όπου 611 00:29:59,740 --> 00:30:04,760 να μας δώσει ό, τι μπαρ επισημαίνοντας, πρόκειται να επισημάνω σε αυτή την τεράστια ποικιλία 612 00:30:04,760 --> 00:30:06,280 μόλις Α. 613 00:30:06,280 --> 00:30:10,680 Και αυτός είναι ο τρόπος περισσότερο από 12. 614 00:30:10,680 --> 00:30:13,830 Έτσι πρόκειται να πάει όλος ο τρόπος εδώ κάτω στο σημείο όπου η επιστροφή 615 00:30:13,830 --> 00:30:15,420 διευθύνσεων που χρησιμοποιείται για να είναι. 616 00:30:15,420 --> 00:30:17,860 Έτσι, ας πούμε αυτή τη λειτουργία ονομάζεται foo. 617 00:30:17,860 --> 00:30:20,970 Ίσως foo κλήθηκε από κάποιο άλλο λειτουργία, η οποία κλήθηκε από το κύριο. 618 00:30:20,970 --> 00:30:24,890 Έτσι, όταν foo τρέχει, χρειάζεται να ξέρετε πού να επιστρέψουν. 619 00:30:24,890 --> 00:30:29,130 >> Αν foo κλήθηκε από μια συνάρτηση που ονομάζεται baz, πρέπει να ξέρετε ότι είναι 620 00:30:29,130 --> 00:30:30,250 Πρέπει να πάω πίσω στο baz. 621 00:30:30,250 --> 00:30:34,040 Και αυτό είναι ό, τι αυτή η διεύθυνση επιστροφής εδώ κάτω μας λέει. 622 00:30:34,040 --> 00:30:38,340 Αλλά αν το αντικαταστήσετε με κάποιο άλλο διεύθυνση, σε αυτή την περίπτωση, αυτό είναι ένα 623 00:30:38,340 --> 00:30:42,650 εκπροσώπηση της διεύθυνσης κατά τη πολύ αρχίζοντας από αυτό το ρυθμιστικό, στη συνέχεια, 624 00:30:42,650 --> 00:30:45,240 τι πραγματικά πρόκειται να συμβεί είναι ότι αντί να επιστρέψει πίσω στην baz, 625 00:30:45,240 --> 00:30:48,470 η οποία ονομάζεται λειτουργία μας, είναι ακριβώς πρόκειται να πάει στο μέτωπο του κωδικού αυτού. 626 00:30:48,470 --> 00:30:53,930 >> Και, εάν αυτό ήταν εκεί επειδή ένα κακόβουλος χάκερ μάγκα ήρθε και 627 00:30:53,930 --> 00:30:56,820 ένεση αυτό, τότε ίσως το ποσό αυτό Α δεν είναι πραγματικά Α. 628 00:30:56,820 --> 00:31:02,030 Και αυτό είναι πραγματικά ακριβώς προγραμματίσετε εκείνο διαλείμματα υπολογιστή σας ή κάτι. 629 00:31:02,030 --> 00:31:05,930 Έτσι για να είναι αμυντικός για αυτό το είδος της πράγμα, θα πρέπει ποτέ να υποθέσουμε ότι 630 00:31:05,930 --> 00:31:09,120 που εισάγει ο χρήστης είναι ένα ορισμένο ποσό των χαρακτήρων. 631 00:31:09,120 --> 00:31:13,310 Για παράδειγμα, όταν έκανες ορθογραφικός έλεγχος, σας είπαν ότι τα λόγια ήταν 632 00:31:13,310 --> 00:31:15,580 μόνο πρόκειται να είναι 40 χαρακτήρες μακράς μέγιστο. 633 00:31:15,580 --> 00:31:16,570 Και αυτό ήταν καλό. 634 00:31:16,570 --> 00:31:20,150 >> Αλλά αν όχι, τότε θα πρέπει να φροντίστε να διαβάσετε μόνο σε 45 635 00:31:20,150 --> 00:31:21,520 χαρακτήρες σε μια στιγμή. 636 00:31:21,520 --> 00:31:24,430 Διαφορετικά, μπορείτε να αντικαταστήσετε buffer σας. 637 00:31:24,430 --> 00:31:26,140 Οποιεσδήποτε ερωτήσεις σχετικά με αυτό. 638 00:31:26,140 --> 00:31:26,733 Ναι. 639 00:31:26,733 --> 00:31:28,850 >> ΚΟΙΝΟ: Μπορείς απλά να μιλήσετε λίγο περισσότερο γι 'αυτά; 640 00:31:28,850 --> 00:31:29,790 >> ANGELA LI: Συγγνώμη. 641 00:31:29,790 --> 00:31:31,040 Ναι. 642 00:31:31,040 --> 00:31:32,813 643 00:31:32,813 --> 00:31:35,870 >> ΚΟΙΝΟ: Το μικρόφωνο είναι μόνο για το βίντεο. 644 00:31:35,870 --> 00:31:37,640 Θα προσπαθήσω και έργο. 645 00:31:37,640 --> 00:31:39,900 Γεια σας, παιδιά. 646 00:31:39,900 --> 00:31:40,920 Sup? 647 00:31:40,920 --> 00:31:45,330 Οπότε ας πάμε πάνω από κάποια πράγματα στο Βιβλιοθήκη CS50, που έχετε χρησιμοποιήσει 648 00:31:45,330 --> 00:31:49,072 όλα εξάμηνο, ως επί το πλείστον για να πάρει την είσοδο του χρήστη. 649 00:31:49,072 --> 00:31:53,140 Όπως γνωρίζετε, έχετε συμπεριλάβει το CS50 βιβλιοθήκη με ακριβώς να κάνει CS50.h, η οποία 650 00:31:53,140 --> 00:31:55,660 περιέχει όλα τα πρωτότυπα των λειτουργίες που μπορείτε να χρησιμοποιήσετε, όπως 651 00:31:55,660 --> 00:31:58,640 GetString και GetInt, και GetFloat, κ.λπ.. 652 00:31:58,640 --> 00:32:02,870 Και υπάρχει αυτή η γραμμή στο CS50 βιβλιοθήκη η οποία καθορίζει μια σειρά, η οποία 653 00:32:02,870 --> 00:32:05,380 εσείς γνωρίζετε όλα από τώρα είναι απλά ένα char *. 654 00:32:05,380 --> 00:32:07,900 >> Αλλά ας ρίξουμε μια ματιά στο πώς λειτουργεί GetString. 655 00:32:07,900 --> 00:32:10,010 Αυτή είναι μια πολύ συνοπτική έκδοση. 656 00:32:10,010 --> 00:32:15,090 Μπορείτε να σηκώσει τα αρχεία της βιβλιοθήκης CS50 από, νομίζω, manuals.CS50.net. 657 00:32:15,090 --> 00:32:16,750 Και μπορείτε να διαβάσετε μέσω του η πραγματική λειτουργία. 658 00:32:16,750 --> 00:32:19,330 Αλλά και αυτό καλύπτει κάποιες από τα σημαντικά μέρη. 659 00:32:19,330 --> 00:32:23,870 Έτσι έχουμε δημιουργήσει κάποιο ρυθμιστικό με κάποια ιδιότητα. 660 00:32:23,870 --> 00:32:27,570 Και αυτό που κάνουμε είναι να έχουμε ένα χαρακτήρα σε μια στιγμή από το πρότυπο n. 661 00:32:27,570 --> 00:32:30,910 Αυτός είναι όπου ο χρήστης εισάγει κειμένου στην κονσόλα. 662 00:32:30,910 --> 00:32:33,430 >> Και έτσι θα πάμε να διαβάσετε σε ένα χαρακτήρα, εφ 'όσον δεν είναι μια νέα 663 00:32:33,430 --> 00:32:37,220 γραμμή και δεν είναι το τέλος του αρχείου, το οποίο είναι το τέλος του standard input. 664 00:32:37,220 --> 00:32:45,690 Και για κάθε χαρακτήρα που διαβάζουμε στο, αν ο χαρακτήρας καταλήγει προσθέτοντας 665 00:32:45,690 --> 00:32:50,120 με τον αριθμό των χαρακτήρων που έχουμε διαβάσει μέσα και ότι είναι κάτι περισσότερο από την ικανότητά μας, 666 00:32:50,120 --> 00:32:53,490 τότε αυτό που κάνουμε είναι απλά να αλλάξετε το μέγεθος μας buffer, ώστε να είναι διπλάσιο χρόνο. 667 00:32:53,490 --> 00:32:56,950 Έτσι και πάλι, αυτή η προστασία έναντι ρυθμιστικού διαλύματος επιθέσεις υπερχείλισης, επειδή μπορείτε να διαβάσετε στο 668 00:32:56,950 --> 00:32:58,315 ένα χαρακτήρα τη φορά. 669 00:32:58,315 --> 00:33:02,290 Και αν σε οποιοδήποτε σημείο μπορείτε να διαβάσετε στο πολύ πολλά, απλά επεκτείνετε την προσωρινή μνήμη σας. 670 00:33:02,290 --> 00:33:03,330 Μπορείτε να το πολλαπλασιάσετε επί δύο. 671 00:33:03,330 --> 00:33:05,510 Και τότε θα έχετε περισσότερο χώρο. 672 00:33:05,510 --> 00:33:09,120 >> Διαφορετικά, μπορείτε απλά να προσθέσω ένα χαρακτήρα για να αμβλυνθούν. 673 00:33:09,120 --> 00:33:15,080 Και αφού έχετε διαβάσει σε όλα τα χαρακτήρες, θα συρρικνωθεί το ρυθμιστικό 674 00:33:15,080 --> 00:33:18,510 πίσω στο κανονικό μέγεθος, να προσθέσετε μια null τερματισμού, και στη συνέχεια επιστρέφουν. 675 00:33:18,510 --> 00:33:21,880 676 00:33:21,880 --> 00:33:24,960 Τώρα, ας δούμε GetInt. 677 00:33:24,960 --> 00:33:27,700 Μπορεί εσείς να το διαβάσεις; 678 00:33:27,700 --> 00:33:30,710 Μπορώ να κάνετε ζουμ σε ένα κομμάτι. 679 00:33:30,710 --> 00:33:33,410 680 00:33:33,410 --> 00:33:34,660 Δεν ξέρω πώς λειτουργούν οι υπολογιστές. 681 00:33:34,660 --> 00:33:40,840 682 00:33:40,840 --> 00:33:41,270 Δεν πειράζει. 683 00:33:41,270 --> 00:33:42,520 Δεν μπορώ να μεγεθύνετε σωστά. 684 00:33:42,520 --> 00:33:47,500 685 00:33:47,500 --> 00:33:48,770 >> Αυτό είναι πραγματικά δύσκολο. 686 00:33:48,770 --> 00:33:49,180 Λυπάμαι. 687 00:33:49,180 --> 00:33:51,490 Ας δούμε αυτό. 688 00:33:51,490 --> 00:33:57,140 Έτσι τι GetInt κάνει είναι να διαβάζει το πρώτο σε μια σειρά από GetString, η οποία 689 00:33:57,140 --> 00:33:59,250 έχουμε σε εφαρμογή πριν. 690 00:33:59,250 --> 00:34:02,945 Και το σημαντικό μέρος να σημειωθεί εδώ είναι αν αυτή η ανταλλαγή που καταλήγει 691 00:34:02,945 --> 00:34:06,400 ανάγνωση είναι σαν να μην πραγματικά ένα string, τότε θα επιστρέψουν μόλις INT_MAX να 692 00:34:06,400 --> 00:34:09,409 αντιπροσωπεύουν την αποτυχία. 693 00:34:09,409 --> 00:34:12,645 Γιατί επιστρέφουμε INT_MAX αντί αρνητικής 1 ή 1; 694 00:34:12,645 --> 00:34:13,895 Οποιεσδήποτε ιδέες; 695 00:34:13,895 --> 00:34:16,853 696 00:34:16,853 --> 00:34:19,350 >> ΚΟΙΝΟ: [δεν ακούγεται] 1 αρνητική σε ένα. 697 00:34:19,350 --> 00:34:20,070 >> ANGELA LI: Ναι, ακριβώς. 698 00:34:20,070 --> 00:34:24,560 Έτσι, είστε πολύ πιο πιθανό να θέλουν απλά στην είσοδο 1 ή αρνητική 1, όταν σας ζητηθεί 699 00:34:24,560 --> 00:34:27,469 για νιοστή και ό, τι νιοστή Maxes. 700 00:34:27,469 --> 00:34:27,969 Είναι τεράστιο. 701 00:34:27,969 --> 00:34:29,690 Είστε κατά πάσα πιθανότητα δεν πρόκειται να τον χρησιμοποιήσει. 702 00:34:29,690 --> 00:34:32,690 Έτσι, αυτό είναι σαν μια σχεδιαστική απόφαση να βεβαιωθείτε ότι δεν έχετε κατά λάθος 703 00:34:32,690 --> 00:34:38,540 επιστρέψει ένα σφάλμα ή αν δεν επιστρέψετε 1, το οποίο μπορεί να αναλυθεί 704 00:34:38,540 --> 00:34:41,199 ως σωστή απάντηση. 705 00:34:41,199 --> 00:34:45,110 Έτσι, αν μια γραμμή δεν υπάρχει, επιστρέφουμε INT-MAX. 706 00:34:45,110 --> 00:34:48,090 Σε αντίθετη περίπτωση, χρησιμοποιούμε sscanf, η οποία είναι σαν scanf. 707 00:34:48,090 --> 00:34:49,449 Αλλά διαβάζει από ένα string. 708 00:34:49,449 --> 00:34:54,310 >> Και έχουμε αυτή τη σχηματοποιημένη χορδών, η οποία είναι% i% γ. 709 00:34:54,310 --> 00:34:57,440 Και προσπαθούμε και να ταιριάζει με αυτή με ό, τι ο χρήστης μας έδωσε. 710 00:34:57,440 --> 00:35:01,420 Θέλουμε τον αριθμό των συμφωνημένα πράγματα να είναι 1, πράγμα που σημαίνει ότι μόνο 711 00:35:01,420 --> 00:35:04,940 πραγματικά θέλετε να ταιριάζει με έναν ακέραιο που περιβάλλεται από λευκό ίσως 712 00:35:04,940 --> 00:35:06,840 χώρο, ίσως όχι. 713 00:35:06,840 --> 00:35:10,710 Σε αυτή την περίπτωση, αν βάλετε σε κάτι όπως bar, δεν ταιριάζει σε όλους, 714 00:35:10,710 --> 00:35:14,400 γιατί πρέπει να υπάρχει ένας ακέραιος κατά την έναρξη. 715 00:35:14,400 --> 00:35:17,060 Έτσι, ποτέ δεν γύρισε sscan 0. 716 00:35:17,060 --> 00:35:19,640 Έτσι ώστε να μην επιστρέψουν αυτό. 717 00:35:19,640 --> 00:35:23,850 >> Εναλλακτικά, αν έχετε θέσει σε κάτι όπως 1, 2, 3, Α, Β, C, ότι αγώνες 718 00:35:23,850 --> 00:35:27,180 τόσο ο ακέραιος αλλά ο χαρακτήρας μετά από αυτό. 719 00:35:27,180 --> 00:35:29,990 Έτσι sscanf θα επιστρέψει 2, η οποία Επίσης, δεν είναι ιδανική. 720 00:35:29,990 --> 00:35:34,620 Δεν θέλετε 1, 2, 3, A, Β, Γ να είναι μια έγκυρη int. 721 00:35:34,620 --> 00:35:36,990 Έτσι ώστε, επίσης, δεν λειτουργεί. 722 00:35:36,990 --> 00:35:38,530 Αλλά λένε βάζετε σε κάτι σαν 50. 723 00:35:38,530 --> 00:35:42,460 Αυτό θα ταιριάξει με το i%, πράγμα που σημαίνει θα πάρει το διαβάσετε σε n. 724 00:35:42,460 --> 00:35:44,790 Και τώρα, η θα περιέχει τον αριθμό 50. 725 00:35:44,790 --> 00:35:46,110 Και τότε μπορείτε να το επιστρέψετε. 726 00:35:46,110 --> 00:35:49,270 >> Διαφορετικά, θα χτυπήσει Επανάληψη. 727 00:35:49,270 --> 00:35:55,790 Και τότε πηγαίνει ακριβώς ξανά μέχρι μπορείτε να πάρετε μια σωστή είσοδο από το χρήστη. 728 00:35:55,790 --> 00:35:56,891 Οποιεσδήποτε ερωτήσεις σχετικά με αυτό; 729 00:35:56,891 --> 00:36:02,182 >> ΚΟΙΝΟ: Έτσι, εάν επρόκειτο να εκτυπώσετε η αξία του GetInt για [δεν ακούγεται] 730 00:36:02,182 --> 00:36:06,250 θα ήταν μόνο ο ακέραιος και max; 731 00:36:06,250 --> 00:36:07,440 >> ANGELA LI: Ναι. 732 00:36:07,440 --> 00:36:11,780 Έτσι, αν χρησιμοποιείτε GetInt, θα πρέπει να υποθέσουμε ότι δεν θέλετε να νιοστή max 733 00:36:11,780 --> 00:36:15,328 είναι μια έγκυρη είσοδο, γιατί θα πάμε να υποθέσουμε ότι αυτό ήταν κακό. 734 00:36:15,328 --> 00:36:27,740 >> ΚΟΙΝΟ: Αν δεν είχαμε char c και κάποιος έβαλε σε 1, 2, 3, Σαμ, θα είναι 735 00:36:27,740 --> 00:36:29,430 εξακολουθούν να εργάζονται για 1, 2, 3; 736 00:36:29,430 --> 00:36:29,750 >> ANGELA LI: Νομίζω ότι θα μπορούσε να λειτουργήσει. 737 00:36:29,750 --> 00:36:33,340 Αλλά δεν θέλετε να 123Sam να είναι μια έγκυρη εισόδου από ένα χρήστη. 738 00:36:33,340 --> 00:36:34,670 Αυτό δεν είναι πραγματικά μια int. 739 00:36:34,670 --> 00:36:36,840 Γι 'αυτό δεν φαίνεται δίκαιο να αναλύσει ως int. 740 00:36:36,840 --> 00:36:40,910 741 00:36:40,910 --> 00:36:42,160 OK. 742 00:36:42,160 --> 00:36:45,800 Σε αυτή την περίπτωση, ας την κίνηση του με το διαδίκτυο. 743 00:36:45,800 --> 00:36:49,120 Έτσι HTTP δεν είναι γλώσσα. 744 00:36:49,120 --> 00:36:56,060 HTTP είναι απλά το σύνολο των προτύπων για πώς μπορείτε να στείλετε τα πράγματα από πελάτες, 745 00:36:56,060 --> 00:36:57,280 ότι είναι, σε servers. 746 00:36:57,280 --> 00:36:59,730 Αυτό είναι άλλα άτομα στο διαδίκτυο. 747 00:36:59,730 --> 00:37:02,900 >> Έτσι HTTP σημαίνει Hypertext Πρωτόκολλο μεταφοράς. 748 00:37:02,900 --> 00:37:04,610 Είναι η καρδιά και η ψυχή ολόκληρου του ιστού. 749 00:37:04,610 --> 00:37:07,050 Το τμήμα hypertext μόνο αναφέρεται σε HTML. 750 00:37:07,050 --> 00:37:10,690 Η μεταφορά είναι πελάτες όπως θα στέλνουν αιτήματα 751 00:37:10,690 --> 00:37:13,060 εξυπηρετητές, τα οποία δίνουν απαντήσεις. 752 00:37:13,060 --> 00:37:16,380 Και το πρωτόκολλο είναι ακριβώς, πώς περιμένετε ένα διακομιστή να συμπεριφέρονται; 753 00:37:16,380 --> 00:37:19,960 Και πώς είστε υποτίθεται για να συμπεριφέρονται έτσι ώστε να μπορείτε να βελτιώσετε αυτό 754 00:37:19,960 --> 00:37:21,920 διαδικασία της επικοινωνίας; 755 00:37:21,920 --> 00:37:26,650 >> Έτσι, οι αιτήσεις HTTP μοιάζουν πολύ με αυτό. 756 00:37:26,650 --> 00:37:28,070 GET είναι ο τύπος της αίτησης. 757 00:37:28,070 --> 00:37:31,220 Εσείς έχετε δει αιτήσεις GET και τα αιτήματα POST. 758 00:37:31,220 --> 00:37:36,690 Αυτό το δεύτερο πράγμα εκεί, / μου, αυτό είναι μόνο το URI ή η διεύθυνση URL όπου μπορείτε 759 00:37:36,690 --> 00:37:38,140 θέλουν να πάνε μέσα στον ξενιστή. 760 00:37:38,140 --> 00:37:44,140 Έτσι, το αίτημα αυτό ζητά η σελίδα, όπως www.facebook.com / me. 761 00:37:44,140 --> 00:37:45,300 Και αυτό είναι ένα αίτημα GET. 762 00:37:45,300 --> 00:37:51,020 Και τότε αυτό το HTTP/1.1, αυτό είναι μόνο η έκδοση του HTTP που χρησιμοποιείτε. 763 00:37:51,020 --> 00:37:55,020 Είναι σχεδόν πάντα 1.1. 764 00:37:55,020 --> 00:37:56,880 >> Και έπειτα υπάρχει μια δέσμη άλλα πράγματα πάρα πολύ. 765 00:37:56,880 --> 00:38:02,510 Μπορείτε να δείτε πραγματικά αυτά, αν ανοίξει την κονσόλα σας όταν είστε 766 00:38:02,510 --> 00:38:03,770 την περιήγηση στο διαδίκτυο. 767 00:38:03,770 --> 00:38:07,290 Οι απαντήσεις είναι κάπως περισσότερο σαν αυτό. 768 00:38:07,290 --> 00:38:09,620 Το επάνω μέρος είναι, και πάλι, το τον τύπο του HTTP που χρησιμοποιείτε 769 00:38:09,620 --> 00:38:12,310 ακολουθείται από έναν κωδικό κατάστασης. 770 00:38:12,310 --> 00:38:14,700 Έτσι, 200 OK είναι όλα πήγαν. 771 00:38:14,700 --> 00:38:16,200 Εδώ είναι το περιεχόμενό σας. 772 00:38:16,200 --> 00:38:17,390 Το περιεχόμενό σας πρόκειται να ακολουθήσει. 773 00:38:17,390 --> 00:38:21,730 Και τότε θα σας πω τι είδους του περιεχομένου και άλλα πράγματα πάρα πολύ. 774 00:38:21,730 --> 00:38:24,620 >> Οι κωδικοί κατάστασης, υπάρχουν μερικά σημαντικά αυτά που πρέπει να ξέρετε. 775 00:38:24,620 --> 00:38:26,460 200 OK είναι σαν χρυσή όλα είναι καλά. 776 00:38:26,460 --> 00:38:28,490 Όλα τα έργα. 777 00:38:28,490 --> 00:38:29,710 403 Forbidden. 778 00:38:29,710 --> 00:38:32,910 Αυτό πιθανώς έχετε δει, αν έχετε ξεχάσει να chmod κάτι σωστά. 779 00:38:32,910 --> 00:38:34,510 Αυτό σημαίνει ότι δεν έχετε τα σωστά δικαιώματα για την 780 00:38:34,510 --> 00:38:36,210 πρόσβαση ότι στο διακομιστή. 781 00:38:36,210 --> 00:38:38,110 Είναι σαν, όχι, δεν μπορείτε να το δείτε. 782 00:38:38,110 --> 00:38:39,780 404 σημαίνει ότι το πράγμα δεν υπάρχει. 783 00:38:39,780 --> 00:38:40,400 Δεν βρέθηκε. 784 00:38:40,400 --> 00:38:41,640 Έχετε δει πιθανώς ότι πολλά. 785 00:38:41,640 --> 00:38:45,510 >> 500 Εσωτερικό σφάλμα διακομιστή είναι συνήθως σαν κάτι πήγε στραβά από την πλευρά της 786 00:38:45,510 --> 00:38:46,460 του διακομιστή. 787 00:38:46,460 --> 00:38:50,830 Έτσι, όταν υλοποιούσαν pset7, αν είχατε PHP λάθη, θα μπορούσε 788 00:38:50,830 --> 00:38:53,890 πραγματικά να πάτε στη σελίδα και να δείτε μια σωρό πράγματα PHP σφάλματος. 789 00:38:53,890 --> 00:38:56,900 Αλλά αυτό δεν συμβαίνει συνήθως, επειδή ιστοσελίδες δεν θέλουν πραγματικά να 790 00:38:56,900 --> 00:38:58,830 να σας πω γιατί το site τους έχει σπάσει. 791 00:38:58,830 --> 00:39:03,370 Θα πιθανώς ακριβώς επιστρέψει ένα 500 Εσωτερικό σφάλμα διακομιστή. 792 00:39:03,370 --> 00:39:06,120 >> Και έπειτα υπάρχει 418 Είμαι μια τσαγιέρα. 793 00:39:06,120 --> 00:39:07,910 Υπάρχει μια ολόκληρη ιστορία για γιατί αυτό είναι ένα πράγμα. 794 00:39:07,910 --> 00:39:09,860 Αλλά μπορείτε να διαβάσετε γι 'αυτό στον ελεύθερο χρόνο σας. 795 00:39:09,860 --> 00:39:11,450 Υπάρχει μια ολόκληρη δέσμη των άλλους κωδικούς κατάσταση πάρα πολύ. 796 00:39:11,450 --> 00:39:12,700 Αλλά αυτά είναι αυτά θα πρέπει να γνωρίζετε. 797 00:39:12,700 --> 00:39:15,660 798 00:39:15,660 --> 00:39:18,610 Ας μιλήσουμε για την HTML. 799 00:39:18,610 --> 00:39:22,180 HTML, θυμηθείτε, δεν είναι γλώσσα προγραμματισμού. 800 00:39:22,180 --> 00:39:23,510 Είναι μια γλώσσα σήμανσης. 801 00:39:23,510 --> 00:39:25,210 Αυτό σημαίνει ότι περιγράφει το περιεχόμενο. 802 00:39:25,210 --> 00:39:30,440 Θα σας λέει τι ένα έγγραφο HTML φαίνεται ομοειδών ή όχι τι μοιάζει 803 00:39:30,440 --> 00:39:32,230 αλλά το πώς είναι δομημένο. 804 00:39:32,230 --> 00:39:36,110 >> Έτσι ώστε να ορίζει μια δομή και σημασιολογία των ιστοσελίδων. 805 00:39:36,110 --> 00:39:37,830 Είναι σαν, αυτή είναι μια σκέψη. 806 00:39:37,830 --> 00:39:40,060 Αυτή είναι μια διατεταγμένη λίστα. 807 00:39:40,060 --> 00:39:42,360 Αυτό είναι σαν ένα τμήμα της σελίδας μου. 808 00:39:42,360 --> 00:39:43,260 Εδώ είναι ο τίτλος. 809 00:39:43,260 --> 00:39:44,310 Κάνει τέτοια πράγματα. 810 00:39:44,310 --> 00:39:48,770 Δεν το στυλ τίποτα από αυτά, γιατί αυτό είναι ό, τι κάνετε στο CSS. 811 00:39:48,770 --> 00:39:50,270 Και αυτό μοιάζει με μια σειρά ένθετων ετικετών. 812 00:39:50,270 --> 00:39:54,720 Έτσι για να χρησιμοποιήσουμε ένα παράδειγμα ενός πολύ βασικό Η σελίδα HTML, έχετε το DOCTYPE 813 00:39:54,720 --> 00:39:56,720 δήλωση μέχρι εκεί. 814 00:39:56,720 --> 00:40:00,940 >> Αυτή η δήλωση DOCTYPE είναι λέγοντας, είμαστε χρησιμοποιώντας HTML5. 815 00:40:00,940 --> 00:40:03,370 Στη συνέχεια, έχετε το μεγάλο ετικέτα HTML. 816 00:40:03,370 --> 00:40:05,230 Περιέχει ένα κεφάλι και ένα σώμα. 817 00:40:05,230 --> 00:40:06,970 Μέσα από το κεφάλι, έχετε τον τίτλο. 818 00:40:06,970 --> 00:40:12,950 Αυτό είναι ό, τι συμβαίνει στον τίτλο bar του browser σας. 819 00:40:12,950 --> 00:40:15,810 Έχουμε μια ετικέτα σύνδεσμο που συνδέει σε ένα εξωτερικό φύλλο στυλ. 820 00:40:15,810 --> 00:40:19,880 Και τότε έχουμε ένα σενάριο που τραβά από μια εξωτερική JavaScript, καθώς και. 821 00:40:19,880 --> 00:40:23,750 >> Και τότε μέσα στο σώμα μας είναι στην πραγματικότητα αυτό που παίρνει εμφανίζεται στην σελίδα. 822 00:40:23,750 --> 00:40:28,210 Έχουμε μια παράγραφο και στη συνέχεια ένα εικόνα μέσα σε αυτό το σημείο. 823 00:40:28,210 --> 00:40:32,000 Αυτή είναι μία εικόνα της γατάκια. 824 00:40:32,000 --> 00:40:35,840 Παρατηρήστε ότι η εικόνα tag κλείνει από μόνη της. 825 00:40:35,840 --> 00:40:41,760 Έτσι, αντί του ανοίγματος με μια εικόνα και στη συνέχεια να κάνει μια άλλη / εικόνας, 826 00:40:41,760 --> 00:40:47,500 Απλά έχουν αυτό το μικρό κάθετο εδώ, που κλείνει. 827 00:40:47,500 --> 00:40:53,670 Και η ετικέτα εικόνας έχει επίσης αυτό το πλήκτρο χαρακτηριστικό τιμή που ονομάζεται alt. 828 00:40:53,670 --> 00:40:56,970 Αυτό είναι το εναλλακτικό κείμενο που συμβαίνει όταν περνάτε από πάνω. 829 00:40:56,970 --> 00:41:03,170 >> Τα περισσότερα στοιχεία HTML έχουν κάποια τιμή κλειδιού πράγματα που μπορείτε να δώσετε, διάφορα 830 00:41:03,170 --> 00:41:04,420 προσαρμογής. 831 00:41:04,420 --> 00:41:06,230 832 00:41:06,230 --> 00:41:08,705 Ναι. 833 00:41:08,705 --> 00:41:09,955 >> ΚΟΙΝΟ: [δεν ακούγεται]. 834 00:41:09,955 --> 00:41:17,510 835 00:41:17,510 --> 00:41:19,680 >> ANGELA LI: Λοιπόν, γι 'αυτό είναι μια χαρακτηριστικό της ετικέτας. 836 00:41:19,680 --> 00:41:25,320 Έτσι, αν ήσασταν χρησιμοποιώντας jQuery, θα μπορούσατε κάνουν επιλέξτε image.getAttribute. 837 00:41:25,320 --> 00:41:27,930 Και τότε μπορείτε να ψάξετε για να πάρει το χαρακτηριστικό alt. 838 00:41:27,930 --> 00:41:31,040 Και θα σας δώσει τα γατάκια. 839 00:41:31,040 --> 00:41:37,400 Αν θυμάστε φόρμες σε HTML, είσοδος στοιχεία θα έχουν τα χαρακτηριστικά όνομα. 840 00:41:37,400 --> 00:41:41,870 Και αυτό είναι που χρησιμοποιεί η PHP για να στείλετε αιτήσεις, όταν υποβάλλεται ένα έντυπο. 841 00:41:41,870 --> 00:41:44,762 842 00:41:44,762 --> 00:41:50,064 >> ΚΟΙΝΟ: Μήπως σας αναφέρω κάτι σχετικά με το πώς, αν χρησιμοποιείτε Kittens.jpg ή 843 00:41:50,064 --> 00:41:54,410 κάτι που έχει τα ελλείποντα υποβάλουν φακέλους ή άλλα αρχεία; 844 00:41:54,410 --> 00:41:54,750 >> ANGELA LI: Ναι. 845 00:41:54,750 --> 00:41:57,010 Έτσι, αυτό είναι ό, τι λέγεται συγγενής μονοπάτι, γιατί δεν δίνω 846 00:41:57,010 --> 00:41:58,740 σας την πλήρη διαδρομή. 847 00:41:58,740 --> 00:42:05,160 Αυτό είναι όπως όταν σε C αν το κάνετε fopen κάποιο αρχείο, αν fopen hi.txt, ότι 848 00:42:05,160 --> 00:42:09,190 hi.txt αναμένεται να είναι στο ίδιο κατάλογο, αν δεν της δώσει μια πιο 849 00:42:09,190 --> 00:42:11,530 πολύπλοκη διαδρομή. 850 00:42:11,530 --> 00:42:14,900 >> ΚΟΙΝΟ: Έτσι μπορείτε να καθορίσετε η οποία φάκελο [δεν ακούγεται]; 851 00:42:14,900 --> 00:42:17,660 >> ANGELA LI: Ναι. 852 00:42:17,660 --> 00:42:19,370 Και μπορείτε να αναζητήσετε πώς να το κάνουμε αυτό. 853 00:42:19,370 --> 00:42:23,480 Αλλά αν ήθελε να πάρει έξω Kittens.jpg της μητρικής καταλόγου, θα ήθελα να κάνω 854 00:42:23,480 --> 00:42:24,730 .. / Kittens.jpg. 855 00:42:24,730 --> 00:42:29,680 856 00:42:29,680 --> 00:42:30,930 Ναι. 857 00:42:30,930 --> 00:42:32,960 858 00:42:32,960 --> 00:42:33,760 Λυπάμαι. 859 00:42:33,760 --> 00:42:34,045 Ναι. 860 00:42:34,045 --> 00:42:35,700 Ω άνθρωπος, ξέχασα την ερώτηση. 861 00:42:35,700 --> 00:42:36,460 Ποια ήταν η ερώτηση; 862 00:42:36,460 --> 00:42:39,570 Ω, το ερώτημα ήταν είναι, Kittens.jpg αναμένεται να είναι στον ίδιο κατάλογο; 863 00:42:39,570 --> 00:42:40,630 Και σε αυτή την περίπτωση, είναι. 864 00:42:40,630 --> 00:42:44,030 Αλλά μπορείτε επίσης να δώσει μια συγκεκριμένη πορεία τέτοια ώστε να μην χρειάζεται να είναι. 865 00:42:44,030 --> 00:42:47,100 866 00:42:47,100 --> 00:42:48,350 Καλό; 867 00:42:48,350 --> 00:42:50,190 868 00:42:50,190 --> 00:42:51,350 >> CSS. 869 00:42:51,350 --> 00:42:55,420 Έτσι, CSS, όπως HTML, δεν είναι μια γλώσσα προγραμματισμού. 870 00:42:55,420 --> 00:42:58,250 CSS είναι απλά μια σειρά από κανόνες styling. 871 00:42:58,250 --> 00:43:00,130 Ξεχωρίζει για Cascading Style Sheets. 872 00:43:00,130 --> 00:43:03,910 Και μπορείτε να το χρησιμοποιήσετε σε συνδυασμό με HTML σε σελίδες στιλ. 873 00:43:03,910 --> 00:43:08,140 Έτσι, υπάρχουν τρεις τρόποι μπορείτε να συμπεριλάβετε. 874 00:43:08,140 --> 00:43:11,950 Ένας τρόπος που μπορείτε να κάνετε είναι στο κεφάλι τμήμα του HTML σας, μπορείτε απλά να 875 00:43:11,950 --> 00:43:15,410 ανοίξετε ένα ύφος ετικέτα και στη συνέχεια να κολλήσει κάποια CSS κανόνες εκεί. 876 00:43:15,410 --> 00:43:16,759 Είναι αρκετά εντάξει. 877 00:43:16,759 --> 00:43:17,228 Ναι. 878 00:43:17,228 --> 00:43:21,449 >> ΚΟΙΝΟ: Μπορείτε να βάλετε εκείνες ετικέτες στυλ στο μεταξύ, ας 879 00:43:21,449 --> 00:43:22,860 ας πούμε, του σώματος και / σώμα. 880 00:43:22,860 --> 00:43:27,400 Και τότε θα είναι styling μόνο στο σώμα. 881 00:43:27,400 --> 00:43:28,840 >> ANGELA LI: Θα μπορούσατε. 882 00:43:28,840 --> 00:43:29,590 Θα λειτουργήσει. 883 00:43:29,590 --> 00:43:33,990 Αλλά δεν πρέπει, επειδή styling είναι το είδος των μεταδεδομένων που πρέπει να πάει σε 884 00:43:33,990 --> 00:43:35,890 ο επικεφαλής του εγγράφου σας. 885 00:43:35,890 --> 00:43:38,280 Φορέας πρέπει πραγματικά να περιέχει μόνο τι πραγματικά πρόκειται να 886 00:43:38,280 --> 00:43:39,420 εμφανίζονται στη σελίδα σας. 887 00:43:39,420 --> 00:43:42,155 >> ΚΟΙΝΟ: Έτσι θα έβαζα στυλ στο κεφάλι σου για το στυλ της 888 00:43:42,155 --> 00:43:43,930 ολόκληρη την ιστοσελίδα, έτσι δεν είναι; 889 00:43:43,930 --> 00:43:44,300 >> ANGELA LI: Ναι. 890 00:43:44,300 --> 00:43:50,470 Έτσι, βάζοντας το στυλ εδώ, αυτοί οι κανόνες CSS θα ισχύει για ολόκληρη τη σελίδα με βάση 891 00:43:50,470 --> 00:43:52,100 επιλογείς τους. 892 00:43:52,100 --> 00:43:57,090 Έτσι, ο καλύτερος τρόπος για να το κάνουμε είναι αντί έχουν ένα ύφος ετικέτα στο κεφάλι σας, 893 00:43:57,090 --> 00:44:00,430 Έχετε αυτό το σύνδεσμο για ένα εξωτερικό στυλ φύλλο, όπως σας έδειξα στην 894 00:44:00,430 --> 00:44:01,980 προηγούμενο παράδειγμα. 895 00:44:01,980 --> 00:44:05,920 Αυτό που κάνει είναι να προσπαθεί και βρίσκει το style.css αρχείο και στη συνέχεια να τραβά 896 00:44:05,920 --> 00:44:08,470 και χρησιμοποιεί ότι καθώς η στυλ για τη σελίδα. 897 00:44:08,470 --> 00:44:10,500 Και style.css σας θα ακριβώς μοιάζει με αυτό. 898 00:44:10,500 --> 00:44:13,330 Θα είναι απλώς ένα μάτσο CSS. 899 00:44:13,330 --> 00:44:16,210 >> Και τέλος, υπάρχει ένας άλλος τρόπος που μπορεί να περιλαμβάνουν CSS, η οποία πραγματικά 900 00:44:16,210 --> 00:44:17,480 δεν πρέπει ποτέ να κάνει. 901 00:44:17,480 --> 00:44:18,950 Πρόκειται για την κλήση inline styling. 902 00:44:18,950 --> 00:44:22,650 Και έτσι κάθε στοιχείο HTML μπορεί επίσης να να λάβει ένα χαρακτηριστικό στυλ. 903 00:44:22,650 --> 00:44:26,320 Και στη συνέχεια, σε αυτό το χαρακτηριστικό στυλ, μπορείτε να δώσετε κανόνες CSS. 904 00:44:26,320 --> 00:44:29,140 Έτσι, στην περίπτωση αυτή, ανεξάρτητα div είμαι καθορίζοντας ακριβώς εδώ, πρόκειται να 905 00:44:29,140 --> 00:44:32,580 έχουν ένα μαύρο φόντο και ένα λευκό χρώμα του κειμένου. 906 00:44:32,580 --> 00:44:35,620 Αλλά δεν πρέπει να το κάνετε αυτό, γιατί ό, τι αυτό δεν είναι αυτό που βάζει το στυλ σας 907 00:44:35,620 --> 00:44:36,850 μέσα στο HTML σας. 908 00:44:36,850 --> 00:44:40,530 >> Και ξέρω ότι έχουμε μιλήσει για την HTML είναι η δομή και CSS είναι το στυλ. 909 00:44:40,530 --> 00:44:42,790 Εάν το κάνετε αυτό, αναμιγνύει μαζί. 910 00:44:42,790 --> 00:44:44,550 Και δεν είναι πολύ καθαρό. 911 00:44:44,550 --> 00:44:45,800 Επομένως, μην το κάνεις αυτό. 912 00:44:45,800 --> 00:44:47,690 913 00:44:47,690 --> 00:44:52,100 Χρησιμοποιώντας ένα παράδειγμα CSS, μέχρι εκεί, απλά επιλέξτε το σώμα της HTML 914 00:44:52,100 --> 00:44:52,380 ντοκιμαντέρ. 915 00:44:52,380 --> 00:44:55,110 Και είμαστε σαν, όλα είναι πρόκειται να είναι Comic Sans. 916 00:44:55,110 --> 00:44:57,290 Επίσης, δεν συνιστούμε. 917 00:44:57,290 --> 00:44:59,940 Αλλά θα μπορούσατε να το κάνετε αυτό. 918 00:44:59,940 --> 00:45:03,140 >> Ο δεύτερος κανόνας εδώ, πρόκειται για να επιλέξετε το στοιχείο σχετικά με την 919 00:45:03,140 --> 00:45:04,880 σελίδα με ID κύριο. 920 00:45:04,880 --> 00:45:11,690 Έτσι, ανεξάρτητα από HTML στοιχείο, είπα ID = Κύριος, Πάω να του δώσετε μια 921 00:45:11,690 --> 00:45:16,020 Περιθώριο 20-pixel και να ευθυγραμμίσει τα πάντα, ολόκληρο το κείμενο, προς το κέντρο. 922 00:45:16,020 --> 00:45:19,030 Το τελευταίο πράγμα που επιλέγει με CSS τάξη. 923 00:45:19,030 --> 00:45:24,450 Έτσι, κάθε στοιχείο στη σελίδα που έδωσα μια κατηγορία τμήμα, Πάω να το κάνει 924 00:45:24,450 --> 00:45:26,602 ένα χρώμα φόντο το γαλάζιο. 925 00:45:26,602 --> 00:45:29,380 926 00:45:29,380 --> 00:45:30,040 Ναι. 927 00:45:30,040 --> 00:45:30,700 Αυτό είναι το μόνο που πήρα. 928 00:45:30,700 --> 00:45:30,890 Ερώτηση; 929 00:45:30,890 --> 00:45:34,020 >> ΚΟΙΝΟ: Τι σημαίνει το hashtag πριν από τα κύρια κάνω; 930 00:45:34,020 --> 00:45:36,310 >> ANGELA LI: Το ερώτημα είναι, τι κάνει το hashtag πριν από τα κύρια do; 931 00:45:36,310 --> 00:45:40,770 Σε αυτή την περίπτωση, το κλειδί κατακερματισμού σε CSS σημαίνει επιλέξτε με ID. 932 00:45:40,770 --> 00:45:47,490 Έτσι, αν είχα κάποιο στοιχείο HTML, όπως διαιρώντας = κύρια, αυτό το CSS επιλέγει τον κανόνα 933 00:45:47,490 --> 00:45:49,260 το πράγμα με ID κύριο. 934 00:45:49,260 --> 00:45:53,940 Και ομοίως, η περίοδος μπροστά ενότητα είναι να επιλέξετε από το CSS τάξη ή 935 00:45:53,940 --> 00:45:56,558 επιλέξτε ανά κατηγορία HTML. 936 00:45:56,558 --> 00:46:00,940 >> ΚΟΙΝΟ: Γιατί υπάρχει έχει πριν 6 σε χρώμα του φόντου; 937 00:46:00,940 --> 00:46:01,270 >> ANGELA LI: Ναι. 938 00:46:01,270 --> 00:46:03,360 Έτσι, το ερώτημα είναι, γιατί δεν υπάρχει ένα hash πριν 6; 939 00:46:03,360 --> 00:46:05,320 Αυτό είναι διαφορετικό από αυτό το hash. 940 00:46:05,320 --> 00:46:09,500 Αυτό σημαίνει ότι δίνετε ένα δεκαεξαδικό χρώμα. 941 00:46:09,500 --> 00:46:14,260 Έτσι hex χρώματα, αυτό ακριβώς αντιπροσωπεύει ένα χρώμα. 942 00:46:14,260 --> 00:46:17,860 Και να θυμάστε, όταν τρίκλινα RGB έκανες το από το chipset εγκληματολογίας; 943 00:46:17,860 --> 00:46:18,770 Αυτό είναι παρόμοιο. 944 00:46:18,770 --> 00:46:21,590 Τα δύο πρώτα ψηφία αντιπροσωπεύουν πόσο κόκκινο είναι το χρώμα. 945 00:46:21,590 --> 00:46:23,260 Η δεύτερη, που αντιπροσωπεύουν δύο πόσο πράσινο. 946 00:46:23,260 --> 00:46:25,450 Και η τρίτη αντιπροσωπεύει πόσο μπλε. 947 00:46:25,450 --> 00:46:30,060 Και το hash είναι αυτό πρόκειται να αντιπροσωπεύει ένα χρώμα. 948 00:46:30,060 --> 00:46:35,660 >> Έτσι, τίποτα από 0, 0, 0, 0, 0, 0 έως F, F, F, F, F, F είναι έγκυρη. 949 00:46:35,660 --> 00:46:39,550 Είναι κάποια έγκυρη χρώμα που μπορεί να να εμφανίζεται από το πρόγραμμα περιήγησής σας. 950 00:46:39,550 --> 00:46:39,790 Ερώτηση; 951 00:46:39,790 --> 00:46:43,590 >> ΚΟΙΝΟ: Ποια είναι η διαφορά μεταξύ χρήση από την ταυτότητα και την τάξη; 952 00:46:43,590 --> 00:46:46,470 >> ANGELA LI: Το ερώτημα είναι τι είναι η διαφορά μεταξύ 953 00:46:46,470 --> 00:46:48,950 χρήση από την ταυτότητα και την τάξη; 954 00:46:48,950 --> 00:46:54,390 Μπορείτε να έχετε μόνο ένα στοιχείο σε μια Έγγραφο HTML που έχει μια δεδομένη ταυτότητα. 955 00:46:54,390 --> 00:46:58,660 Έτσι, μόνο ένα πράγμα στη σελίδα μου επιτρέπεται να έχει ID κύριο. 956 00:46:58,660 --> 00:47:02,580 Έτσι, μπορείτε να το χρησιμοποιήσετε για αυτό είναι η μπάλα. 957 00:47:02,580 --> 00:47:03,850 Αυτή είναι η πλοήγηση. 958 00:47:03,850 --> 00:47:05,230 Αυτό είναι το υποσέλιδο. 959 00:47:05,230 --> 00:47:09,070 Τα μαθήματα είναι διαφορετικά, επειδή μπορείτε να εφαρμόζουν τις κατηγορίες ως πολλά στοιχεία HTML 960 00:47:09,070 --> 00:47:10,100 όπως θέλετε. 961 00:47:10,100 --> 00:47:15,860 >> Έτσι, για παράδειγμα, έκανα τμήμα τάξης, επειδή υπάρχει πιθανώς περισσότερα από ένα 962 00:47:15,860 --> 00:47:17,540 στη σελίδα μου. 963 00:47:17,540 --> 00:47:20,200 Είστε ακριβώς επιτρέπεται να έχουν ως πολλά στοιχεία σχετικά με την σελίδα με την ίδια 964 00:47:20,200 --> 00:47:23,190 κατηγορίας, αλλά μόνο ένα με ένα συγκεκριμένο Ιϋ. 965 00:47:23,190 --> 00:47:25,600 >> ΚΟΙΝΟ: Έτσι, η τελεία αντιπροσωπεύει η τάξη; 966 00:47:25,600 --> 00:47:26,090 >> ANGELA LI: Ναι. 967 00:47:26,090 --> 00:47:27,380 Μια κουκίδα αντιπροσωπεύει μια τάξη. 968 00:47:27,380 --> 00:47:29,990 969 00:47:29,990 --> 00:47:31,540 Cool. 970 00:47:31,540 --> 00:47:32,370 Αυτό είναι όλα τα έχω, παιδιά. 971 00:47:32,370 --> 00:47:33,544 Σας ευχαριστώ. 972 00:47:33,544 --> 00:48:13,380 >> [Χειροκροτήματα] 973 00:48:13,380 --> 00:48:14,290 >> ZAMYLA CHAN: Γεια, σε όλους. 974 00:48:14,290 --> 00:48:14,880 Είμαι Zamyla. 975 00:48:14,880 --> 00:48:18,830 Πάω να καλύπτει PHP, MVC, SQL και σήμερα. 976 00:48:18,830 --> 00:48:22,350 977 00:48:22,350 --> 00:48:26,110 Πολλά από τα υλικά που θα είμαι κάλυψη πρόκειται να είναι λίγο πολύ 978 00:48:26,110 --> 00:48:29,100 δεξιά από pset7. 979 00:48:29,100 --> 00:48:29,700 Εντάξει. 980 00:48:29,700 --> 00:48:31,180 Έτσι, ποια είναι η PHP; 981 00:48:31,180 --> 00:48:35,150 PHP σημαίνει PHP Hypertext Προεπεξεργαστή. 982 00:48:35,150 --> 00:48:38,740 Έτσι, από μόνη της, είναι ένα αναδρομικό το όνομα, το οποίο είναι αρκετά δροσερό. 983 00:48:38,740 --> 00:48:42,220 PHP είναι μια server-side scripting γλώσσα, και παρέχει το backend 984 00:48:42,220 --> 00:48:44,610 και οι λογικές βάσεις της ιστοσελίδας μας. 985 00:48:44,610 --> 00:48:48,520 >> Έτσι Angela μιλήσει πολύ για την HTML και CSS το οποίο θα καταστήσει τη δομή 986 00:48:48,520 --> 00:48:49,530 της ιστοσελίδας. 987 00:48:49,530 --> 00:48:53,210 Τι γίνεται όμως αν θέλετε να αλλάξετε ότι περιεκτικότητα σε δυναμικά ή αν διαφέρει 988 00:48:53,210 --> 00:48:55,240 με βάση το χρήστη ή ορισμένες προϋποθέσεις; 989 00:48:55,240 --> 00:48:57,060 Αυτός είναι όπου PHP μπαίνει 990 00:48:57,060 --> 00:49:02,610 Τώρα, τυπικά, η PHP μπορεί να διαρκέσει μερικά λιγότερα γραμμές για να εφαρμόσει το ίδιο πράγμα 991 00:49:02,610 --> 00:49:07,380 σε C. Αυτό συμβαίνει γιατί η PHP χειρίζεται τη μνήμη διαχείρισης για τον προγραμματιστή, 992 00:49:07,380 --> 00:49:11,170 σε αντίθεση με εμάς που έχει να malloc δωρεάν, τέτοια πράγματα. 993 00:49:11,170 --> 00:49:15,430 >> Αλλά δεδομένου ότι η PHP είναι μια ερμηνευτική γλώσσα, τυπικά, θα μπορούσε να εκτελέσει 994 00:49:15,430 --> 00:49:19,540 λίγο πιο αργά από ό, τι C, η οποία είναι ένα μεταγλωττισμένο γλώσσα. 995 00:49:19,540 --> 00:49:23,150 Επειδή είμαστε κινείται προγραμματισμού γλώσσες, ας ρίξουμε μια ματιά στο πώς η 996 00:49:23,150 --> 00:49:24,570 σύνταξη θα διαφέρουν. 997 00:49:24,570 --> 00:49:28,770 Ας είμαστε πολύ προσεκτικοί ώστε να μην μπερδεύονται με αυτό. 998 00:49:28,770 --> 00:49:33,750 Έτσι, με τη σύνταξη της PHP, αν είστε PHP κώδικα σας μέσα από ένα HTML 999 00:49:33,750 --> 00:49:40,430 αρχείο ή μέσα σε ένα αρχείο php. μόνη της, σας πρέπει να επισυνάψουν τον κώδικα στην ανοικτή 1000 00:49:40,430 --> 00:49:45,270 PHP και τα κλειστά ετικέτες PHP, όπως Επομένως, όπως και στην οθόνη. 1001 00:49:45,270 --> 00:49:46,660 >> Μεταβλητές στην PHP. 1002 00:49:46,660 --> 00:49:51,490 Κάθε μεταβλητή θα ξεκινήσει με το σύμβολο $ ακολουθούμενο από το όνομα του 1003 00:49:51,490 --> 00:49:53,150 μεταβλητή σας. 1004 00:49:53,150 --> 00:49:56,530 Τώρα, οι μεταβλητές στην PHP είναι χαλαρά δακτυλογραφημένο, πράγμα που σημαίνει ότι δεν χρειάζεστε 1005 00:49:56,530 --> 00:50:00,030 για να δείξει τι τον τύπο δεδομένων είναι όταν είστε αναγγέλναμε. 1006 00:50:00,030 --> 00:50:03,505 Ωστόσο, αυτό δεν σημαίνει ότι δεν έχουν κανένα τύπους καθόλου. 1007 00:50:03,505 --> 00:50:09,370 Έτσι, αν δηλώσετε μια μεταβλητή και μόλις που είναι ίσο με 1, και στη συνέχεια, δηλώνω 1008 00:50:09,370 --> 00:50:15,140 άλλη μεταβλητή, τίθεται ίση με "1" και στη συνέχεια άλλο ένα 1.0, αλλά, 1009 00:50:15,140 --> 00:50:19,410 ανάλογα με τον τύπο της ισότητας φορείς που χρησιμοποιούν, αν θέλετε να συγκρίνετε 1010 00:50:19,410 --> 00:50:21,830 σε όλους τους τύπους, τότε θα είναι ίση. 1011 00:50:21,830 --> 00:50:25,570 Αλλά αν θέλετε να είστε σίγουροι ότι η τύποι είναι ίσες, η PHP μπορεί να κάνει ακόμα 1012 00:50:25,570 --> 00:50:28,690 ότι, παρόλο που δεν δείχνουν τι τύπου είναι όταν 1013 00:50:28,690 --> 00:50:31,170 βεβαιωθείτε πρώτα το αρχείο. 1014 00:50:31,170 --> 00:50:33,990 >> Τώρα, σε PHP, παρόλο που είμαστε μετάβαση από τον προγραμματισμό 1015 00:50:33,990 --> 00:50:39,360 γλώσσες από C, έχουμε ακόμα μας έμπιστος αν η κατάσταση, ακριβώς όπως αυτό. 1016 00:50:39,360 --> 00:50:43,270 Έχουμε ακόμα, ενώ βρόχους μας, απλά όπως αυτό, όπου μπορείτε να βάλετε στο αρχείο σας 1017 00:50:43,270 --> 00:50:47,300 κατάσταση και στη συνέχεια το σώμα του βρόχου. 1018 00:50:47,300 --> 00:50:50,360 Και τότε έχουμε επίσης μας για το βρόχο, το οποίο συνήθως μοιάζει με αυτό. 1019 00:50:50,360 --> 00:50:55,330 Έτσι αν θέλετε να επαναλάβετε σε όλους εννέα psets και να υποβάλει και να καλέσετε ένα 1020 00:50:55,330 --> 00:50:58,960 submitPset λειτουργία, τότε μπορώ να το κάνω αυτό εδώ, το οποίο εσείς έχετε όλα 1021 00:50:58,960 --> 00:50:59,830 γίνεται από αυτό το σημείο. 1022 00:50:59,830 --> 00:51:01,080 Συγχαρητήρια, από τον τρόπο. 1023 00:51:01,080 --> 00:51:04,560 1024 00:51:04,560 --> 00:51:07,550 >> Για την κάμερα, οι άνθρωποι είπε, σας ευχαριστώ. 1025 00:51:07,550 --> 00:51:11,220 Τώρα, αν δεν θέλετε να χρησιμοποιήσετε μόνο αυτό για βρόχο, τότε η PHP πραγματικότητα και 1026 00:51:11,220 --> 00:51:13,580 Έχει πράγματα που ονομάζεται βρόγχους foreach. 1027 00:51:13,580 --> 00:51:22,210 Έτσι, αν είχα μια σειρά ακεραίων, 0 μέσω 8, αποθηκεύονται στις psets συστοιχία, 1028 00:51:22,210 --> 00:51:27,290 τότε θα μπορούσα να έχω έναν βρόχο foreach που επαναλαμβάνεται σε κάθε αριθμό σε psets. 1029 00:51:27,290 --> 00:51:30,640 Και τότε θα μπορούσα να ονομάσω το ίδιο λειτουργεί οκτώ φορές, 1030 00:51:30,640 --> 00:51:31,910 ακριβώς όπως έκανα πριν. 1031 00:51:31,910 --> 00:51:36,480 Έτσι, αυτό για κάθε βρόχο είναι ωραίο, διότι δεν έχετε να, αν δεν ξέρετε 1032 00:51:36,480 --> 00:51:39,470 το ακριβές μήκος του πίνακα που θα έχουν, στη συνέχεια, χρησιμοποιώντας αυτό το βρόχο foreach 1033 00:51:39,470 --> 00:51:42,800 θα φροντίσει για αυτό για σας. 1034 00:51:42,800 --> 00:51:45,410 >> Έτσι έκανα psets ως μια σειρά. 1035 00:51:45,410 --> 00:51:46,700 Ας δούμε σε αυτό. 1036 00:51:46,700 --> 00:51:51,290 Οι πίνακες στην PHP είναι συνήθως το ίδιο με αυτά που είχαμε στο C, όπου 1037 00:51:51,290 --> 00:51:52,960 μπορείτε να δηλώσετε έναν πίνακα. 1038 00:51:52,960 --> 00:51:59,200 Και εδώ, μπορώ να δηλώσω έναν άδειο πίνακα και στη συνέχεια να δημιουργήσουν δυναμικά με τη χρήση 1039 00:51:59,200 --> 00:52:00,850 δείκτες ως ακέραιοι. 1040 00:52:00,850 --> 00:52:04,140 Έτσι δείκτη 0, Πάω να αποθηκεύσετε ακέραιος αριθμός που ονομάζεται 1. 1041 00:52:04,140 --> 00:52:09,210 Στο δείκτη 1 της λίστας μου, θα πάω για να αποθηκεύσετε την τιμή 2. 1042 00:52:09,210 --> 00:52:12,670 Και στο τρίτο δείκτη, αλλά η δεύτερο αριθμό, Πάω να 1043 00:52:12,670 --> 00:52:14,870 αποθηκεύσετε τον αριθμό 12. 1044 00:52:14,870 --> 00:52:17,250 >> Τώρα, αυτό είναι καλό το ότι λειτουργεί λειτουργεί καλά. 1045 00:52:17,250 --> 00:52:21,310 Αλλά λένε ότι έχει σημασία για μένα αυτό που κρατά κάθε δείκτη. 1046 00:52:21,310 --> 00:52:24,500 Για μένα, ο δείκτης 0 σημαίνει πως πολλές γάτες που έχω. 1047 00:52:24,500 --> 00:52:27,400 Και ο δείκτης 1 σημαίνει πως πολλές κουκουβάγιες έχω. 1048 00:52:27,400 --> 00:52:29,450 Και το επόμενο σημαίνει πως πολλά σκυλιά. 1049 00:52:29,450 --> 00:52:34,140 Καλά, τότε να διευκρινιστεί ότι, αντί να πρέπει να θυμάστε 0 σχετίζεται με το 1050 00:52:34,140 --> 00:52:38,090 γάτες και 1 με τις κουκουβάγιες, μπορώ να χρησιμοποιήσω associative arrays, πράγμα που σημαίνει ότι 1051 00:52:38,090 --> 00:52:42,260 αντί των ακεραίων ως δείκτες μου, Μπορώ να χρησιμοποιήσω πραγματικά χορδές. 1052 00:52:42,260 --> 00:52:43,290 >> Έτσι αυτό είναι αρκετά χρήσιμο. 1053 00:52:43,290 --> 00:52:47,130 Και έχετε ουσιαστικά μόλις αντικατασταθεί οι ακέραιοι με χορδές. 1054 00:52:47,130 --> 00:52:50,074 Και εκεί έχετε ένα associative array. 1055 00:52:50,074 --> 00:52:51,930 Ναι. 1056 00:52:51,930 --> 00:52:55,800 >> ΚΟΙΝΟ: Υπάρχει ένας λόγος που υπάρχει εκεί ένα χαρακτήρα υπογράμμισης για το δεύτερο 1057 00:52:55,800 --> 00:52:58,750 μέρει, επειδή η λίστα μου έχει τον πίνακα. 1058 00:52:58,750 --> 00:53:01,330 >> ZAMYLA CHAN: Το ερώτημα ήταν, είναι υπάρχει ένας λόγος για τον οποίο υπάρχει μια 1059 00:53:01,330 --> 00:53:03,320 υπογραμμίζουν μεταξύ μου και η λίστα; 1060 00:53:03,320 --> 00:53:03,610 Όχι. 1061 00:53:03,610 --> 00:53:06,878 Αυτό είναι ακριβώς το πώς είμαι ονοματοδοσία μεταβλητή μου. 1062 00:53:06,878 --> 00:53:11,670 >> ΚΟΙΝΟ: Την πρώτη γραμμή, είναι μια λέξη. 1063 00:53:11,670 --> 00:53:12,560 >> ZAMYLA CHAN: Ζητώ συγγνώμη. 1064 00:53:12,560 --> 00:53:13,410 Θα το διορθώσω αυτό. 1065 00:53:13,410 --> 00:53:13,620 Ναι. 1066 00:53:13,620 --> 00:53:15,460 Θα πρέπει να είναι το ίδιο όνομα μεταβλητής. 1067 00:53:15,460 --> 00:53:16,710 Καλή ψαριά. 1068 00:53:16,710 --> 00:53:19,640 1069 00:53:19,640 --> 00:53:19,950 OK. 1070 00:53:19,950 --> 00:53:22,610 Οπότε ας προχωρήσουμε σε string συνένωση. 1071 00:53:22,610 --> 00:53:27,500 Αν ήθελα να πάρω δύο χορδές, τότε μπορώ να τα ενώσετε 1072 00:53:27,500 --> 00:53:28,550 με τον τελεστή τελεία. 1073 00:53:28,550 --> 00:53:32,440 Έτσι, αν έχω Milo ως πρώτο όνομα Μπανάνα και ως επώνυμο, τότε 1074 00:53:32,440 --> 00:53:35,430 συνένωση με τον τελεστή τελεία και στη συνέχεια, βάζοντας ένα χώρο μεταξύ 1075 00:53:35,430 --> 00:53:39,210 θα κάνει ένα string που περιέχει Milo Μπανάνα, η οποία, στη συνέχεια, μπορώ να επαναλάβω ή, 1076 00:53:39,210 --> 00:53:41,280 μάλλον, να εκτυπώσετε. 1077 00:53:41,280 --> 00:53:44,465 >> Μιλώντας ηχώ, ας μιλήσουμε για μερικές χρήσιμες - 1078 00:53:44,465 --> 00:53:44,920 ουπς. 1079 00:53:44,920 --> 00:53:46,030 Λυπάμαι. 1080 00:53:46,030 --> 00:53:52,920 Μερικές χρήσιμες λειτουργίες PHP. 1081 00:53:52,920 --> 00:53:56,240 Έτσι έχουμε το - 1082 00:53:56,240 --> 00:53:57,444 τεχνικές δυσκολίες. 1083 00:53:57,444 --> 00:53:58,694 Ένα δευτερόλεπτο. 1084 00:53:58,694 --> 00:54:16,960 1085 00:54:16,960 --> 00:54:19,550 Το έστειλα. 1086 00:54:19,550 --> 00:54:22,320 Προβλήματα PowerPoint. 1087 00:54:22,320 --> 00:54:29,200 Και είμαστε πίσω με λειτουργίες PHP. 1088 00:54:29,200 --> 00:54:32,010 1089 00:54:32,010 --> 00:54:35,150 Και είμαστε πίσω με λειτουργίες PHP. 1090 00:54:35,150 --> 00:54:39,890 >> Έτσι έχουμε το απαιτεί η λειτουργία, όπου αν περάσετε σε ένα αρχείο, εδώ είναι απλά 1091 00:54:39,890 --> 00:54:43,300 ένα παράδειγμα ενός αρχείου που Θα μπορούσε να περάσει μέσα 1092 00:54:43,300 --> 00:54:47,605 Στη συνέχεια, αυτό θα περιλαμβάνει τον κώδικα PHP από το αρχείο που μου δείχνουν. 1093 00:54:47,605 --> 00:54:49,940 Και θα αξιολογήσει ότι μέσα 1094 00:54:49,940 --> 00:54:54,450 Στη συνέχεια, έχουμε επίσης ηχώ, η οποία είναι παράλληλη με τις printf. 1095 00:54:54,450 --> 00:54:57,710 Exit είναι μια παράλληλη να σπάσει, το οποίο εξέρχεται από το μπλοκ 1096 00:54:57,710 --> 00:54:58,570 κώδικα που είστε μέσα 1097 00:54:58,570 --> 00:55:03,180 Και στη συνέχεια άδειο έλεγχοι εάν ένα δεδομένο μεταβλητή είναι σαν null ή μηδέν ή 1098 00:55:03,180 --> 00:55:08,482 ό, εξισώνεται με το να είναι άδειο. 1099 00:55:08,482 --> 00:55:09,438 Ναι. 1100 00:55:09,438 --> 00:55:15,341 >> ΚΟΙΝΟ: Για την αλληλουχία συμβολοσειρών φορέα dot μία, σε PHP, είναι ότι η 1101 00:55:15,341 --> 00:55:20,158 ίδιο με το JavaScript, όπου πρόκειται για τη χρήση το dot για την συνένωση σημαίνει συν; 1102 00:55:20,158 --> 00:55:27,440 Έτσι, για το πλήρες όνομα, θα μπορούσατε να έχετε δολάριο υπογράψει το πρώτο + + και στη συνέχεια να διαρκέσει; 1103 00:55:27,440 --> 00:55:27,720 >> ZAMYLA CHAN: Ναι. 1104 00:55:27,720 --> 00:55:32,150 Έτσι, το ερώτημα ήταν αν σε PHP εμείς μπορεί να χρησιμοποιήσει την ίδια αλληλουχία συμβολοσειρών 1105 00:55:32,150 --> 00:55:33,890 όπως σε JavaScript με τα συν. 1106 00:55:33,890 --> 00:55:35,410 Και ο Ιωσήφ θα μπει σε αυτό αργότερα. 1107 00:55:35,410 --> 00:55:36,620 Πιστεύω ότι έχει μια διαφάνεια σε αυτό. 1108 00:55:36,620 --> 00:55:37,570 Στην πραγματικότητα, τα πράγματα είναι διαφορετικά. 1109 00:55:37,570 --> 00:55:41,310 Έτσι, σε JavaScript, θα πρέπει να χρησιμοποιήσετε το συν για να ενώσετε χορδές. 1110 00:55:41,310 --> 00:55:43,280 Και στην PHP, θα πρέπει να χρησιμοποιήσετε τον τελεστή τελεία. 1111 00:55:43,280 --> 00:55:44,530 Έτσι είναι διαφορετική. 1112 00:55:44,530 --> 00:55:46,680 1113 00:55:46,680 --> 00:55:46,910 >> OK. 1114 00:55:46,910 --> 00:55:49,500 Έτσι τώρα που έχουμε καλύψει όλα Αυτό PHP, όπου δεν 1115 00:55:49,500 --> 00:55:50,490 πραγματικά να έρθει σε πρακτικό; 1116 00:55:50,490 --> 00:55:54,470 Λοιπόν, έρχεται σε βολικό όταν να το συνδυάσετε με HTML μας. 1117 00:55:54,470 --> 00:55:59,550 Έτσι, η PHP θα μας δώσει τη δύναμη να τροποποιήσει το περιεχόμενο HTML μιας σελίδας πριν από την 1118 00:55:59,550 --> 00:56:00,000 φόρτωση του. 1119 00:56:00,000 --> 00:56:04,270 Έτσι, με βάση διαφορετικές συνθήκες, συνήθως το συγκεκριμένο χρήστη που είναι 1120 00:56:04,270 --> 00:56:07,520 συνδεδεμένος, μπορούμε να εμφανίσουμε διαφορετικές πληροφορίες. 1121 00:56:07,520 --> 00:56:08,800 Λίντα, δεν έχετε μια ερώτηση; 1122 00:56:08,800 --> 00:56:15,510 >> ΚΟΙΝΟ: Μπορείτε να ενώσετε ακέραιος, επίσης; 1123 00:56:15,510 --> 00:56:16,760 >> ZAMYLA CHAN: Ναι, μπορείτε. 1124 00:56:16,760 --> 00:56:19,530 1125 00:56:19,530 --> 00:56:23,270 Άρα το ερώτημα ήταν αν μπορείτε ενώσετε ακέραιοι ή άλλων 1126 00:56:23,270 --> 00:56:28,920 variable.s τώρα, θα προχωρήσουμε σε MVC, η οποία Είναι ένα παράδειγμα που χρησιμοποιήσαμε στην 1127 00:56:28,920 --> 00:56:33,380 pset7 και πολλοί σχεδιαστές ιστοσελίδων χρησιμοποιούν για την οργάνωση του κώδικα στα αρχεία 1128 00:56:33,380 --> 00:56:34,490 στην ιστοσελίδα τους. 1129 00:56:34,490 --> 00:56:35,870 M ξεχωρίζει για το μοντέλο. 1130 00:56:35,870 --> 00:56:41,450 Και βασικά, τα αρχεία μοντέλο θα ασχοληθεί με αλληλεπιδράσεις με τη βάση δεδομένων. 1131 00:56:41,450 --> 00:56:44,640 Δείτε τα αρχεία, που αφορούν το την αισθητική της ιστοσελίδας. 1132 00:56:44,640 --> 00:56:47,550 Και οι λαβές Controller αιτήματα των χρηστών, αναλύει 1133 00:56:47,550 --> 00:56:49,230 δεδομένων, κάνει και άλλη λογική. 1134 00:56:49,230 --> 00:56:52,520 >> Σε pset7, συνδυάσαμε το μοντέλο και ο ελεγκτής. 1135 00:56:52,520 --> 00:56:55,880 Και εμείς απλά κάλεσε τους ελεγκτές και βάζουμε στο δημόσιο κατάλογο. 1136 00:56:55,880 --> 00:57:01,730 Και τα αρχεία άποψη, εμείς τα χρησιμοποιούν ως πρότυπα στον κατάλογο προτύπων. 1137 00:57:01,730 --> 00:57:07,260 Έτσι, το διάγραμμα αυτό εδώ αποτελεί επίσης το ίδιο είδος της διαίρεσης με το 1138 00:57:07,260 --> 00:57:10,510 μοντέλο και ο ελεγκτής σε μωβ εδώ στην αριστερή 1139 00:57:10,510 --> 00:57:12,770 η προβολή στα δεξιά. 1140 00:57:12,770 --> 00:57:16,020 Έτσι, αυτό είναι μια σχηματική ότι κάποιοι από εσάς μπορεί να δει σε ώρες γραφείου ή 1141 00:57:16,020 --> 00:57:19,130 διαγράμματα που ήμασταν σχέδιο, όπως σας ήταν αναφέρονται για το chipset σας. 1142 00:57:19,130 --> 00:57:25,030 >> Έτσι, εδώ, σε ένα δεδομένο ελεγκτή, ένα μοντέλο ελεγκτή, έχουμε λειτουργίες 1143 00:57:25,030 --> 00:57:30,490 που σχετίζονται με την αναζήτηση του SQL βάση δεδομένων, την εκτέλεση PHP λογική. 1144 00:57:30,490 --> 00:57:32,370 Ίσως θα κοιτάζω προς τα πάνω ένα απόθεμα στο Yahoo! 1145 00:57:32,370 --> 00:57:34,590 Οικονομικών. 1146 00:57:34,590 --> 00:57:37,390 Ή ίσως, θα κοιτάξω να να δούμε αν ένας χρήστης είχε υποβληθεί 1147 00:57:37,390 --> 00:57:40,250 αποτελούν ήδη προτού επισκεφτεί τη σελίδα σας. 1148 00:57:40,250 --> 00:57:43,390 Και τότε θα καταστήσει α αποτελούν εδώ. 1149 00:57:43,390 --> 00:57:48,210 Μετά από αυτή η μορφή είχε υποβληθεί από τον χρήστη, η ενέργεια που ήταν 1150 00:57:48,210 --> 00:57:53,470 καθορίζονται στο HTML tag της φόρμας θα έδειχνε τη σελίδα που 1151 00:57:53,470 --> 00:57:55,620 επιστρέφει τα δεδομένα σε. 1152 00:57:55,620 --> 00:57:59,460 >> Έτσι, όλες οι πληροφορίες θα είναι έστειλε πίσω στο χειριστήριό σας. 1153 00:57:59,460 --> 00:58:02,620 Στη συνέχεια, μπορείτε να κάνετε πιθανώς λίγο πιο λογική σε αυτό και ίσως να εκτελέσει μερικές 1154 00:58:02,620 --> 00:58:06,510 περισσότερα ερωτήματα στη βάση δεδομένων SQL και Στη συνέχεια, τέλος, να καταλήξουμε σε μια ωραία 1155 00:58:06,510 --> 00:58:11,930 συσκευασμένο σύνολο των πληροφοριών που θα κάνατε περάσει σε κάποιο άλλο πρότυπο 1156 00:58:11,930 --> 00:58:13,950 που εμφανίζεται τις πληροφορίες. 1157 00:58:13,950 --> 00:58:17,030 Τώρα, πώς μπορούμε πραγματικά να συσκευάζουν ότι οι πληροφορίες up; 1158 00:58:17,030 --> 00:58:23,980 Λοιπόν, έχουμε μια λειτουργία που ονομάζεται Render που ήταν στο αρχείο functions.php σε 1159 00:58:23,980 --> 00:58:29,950 pset7, όπου μπορείτε να περάσετε στο όνομα του ένα αρχείο, το όνομα του προτύπου. 1160 00:58:29,950 --> 00:58:32,160 >> Και τότε μπορείτε επίσης να περάσει στο ένα associative array. 1161 00:58:32,160 --> 00:58:37,150 Και έτσι ώστε associative array αντιπροσωπεύει τις διάφορες πληροφορίες που 1162 00:58:37,150 --> 00:58:39,040 που θέλετε να περάσετε μέσα 1163 00:58:39,040 --> 00:58:43,460 Τώρα, τι πρόκειται να είναι σταθερή σε Αυτά τα παραδείγματα είναι ότι τα πλήκτρα ή, 1164 00:58:43,460 --> 00:58:47,070 μάλλον, τα κλειδιά του συνεταιριστικού συστοιχίες, αυτά είναι ό, τι πρόκειται να είναι 1165 00:58:47,070 --> 00:58:51,050 αναμένεται να είναι σταθερή από το πρότυπο, γιατί ξέρει ότι χρειάζεται 1166 00:58:51,050 --> 00:58:53,990 κάτι που ονομάζεται μήνυμα ή κάλεσε το όνομά. 1167 00:58:53,990 --> 00:58:56,940 Και τότε τα πράγματα σχετικά με το δικαίωμα, η πραγματικές τιμές, οπότε σε αυτή την περίπτωση, οι οποίοι είναι 1168 00:58:56,940 --> 00:59:00,750 ένα καλό αγόρι και Milo, εκείνοι θα να είναι οι αξίες που αλλάζουν 1169 00:59:00,750 --> 00:59:05,610 ότι ο ελεγκτής αλλάζει κάθε φορά ή με βάση μια συγκεκριμένη κατάσταση και 1170 00:59:05,610 --> 00:59:07,120 ότι θα περάσει μέσα 1171 00:59:07,120 --> 00:59:12,790 >> Έτσι, εδώ σε πρότυπα, θα δούμε ότι χρησιμοποιείτε HTML ειδικούς χαρακτήρες, 1172 00:59:12,790 --> 00:59:16,370 πράγμα που σημαίνει κατά βάση απλώς ότι θέλουμε για να πάρει το string από ομοτίμους ότι η 1173 00:59:16,370 --> 00:59:17,580 χρήστης που έκανε 1174 00:59:17,580 --> 00:59:20,880 Και θέλουμε να υποκαταστήσει Μήνυμα εκεί. 1175 00:59:20,880 --> 00:59:26,110 Έτσι, λοιπόν, όταν στην πραγματικότητα δείτε το αρχείο, η ειδική 1176 00:59:26,110 --> 00:59:28,700 Οι πληροφορίες αυτές μεταβιβάζονται μέσα 1177 00:59:28,700 --> 00:59:33,850 Σημειώστε ότι το κλειδί το πώς να καταστήσει τα έργα είναι ότι τα κλειδιά του συνεταιριστικού 1178 00:59:33,850 --> 00:59:37,170 συστοιχίες, εκείνοι γίνει μεταβλητή ονόματα εδώ. 1179 00:59:37,170 --> 00:59:40,720 Και έτσι οι τιμές από αυτό το κλειδί στην associative array, στη συνέχεια γίνεται η 1180 00:59:40,720 --> 00:59:41,970 τιμή της μεταβλητής. 1181 00:59:41,970 --> 00:59:44,800 1182 00:59:44,800 --> 00:59:46,040 >> Τώρα, ας προχωρήσουμε σε SQL. 1183 00:59:46,040 --> 00:59:48,010 Ξεχωρίζει για Δομημένα Ερώτημα Γλώσσας. 1184 00:59:48,010 --> 00:59:50,460 Και έτσι αυτό είναι απλά ένας προγραμματισμός γλώσσα που σχεδιάστηκε 1185 00:59:50,460 --> 00:59:51,880 για τη διαχείριση των βάσεων δεδομένων. 1186 00:59:51,880 --> 00:59:56,860 Και ήρθε σε πρακτικό για μας ιστοσελίδα χρηματοδότηση pset7 μας. 1187 00:59:56,860 --> 01:00:00,510 Ουσιαστικά, είναι απλώς ένας εύκολος τρόπος για να παρακολούθηση και τη διαχείριση αντικειμένων και πινάκων 1188 01:00:00,510 --> 01:00:02,070 και τη σύνδεσή τους με το άλλο. 1189 01:00:02,070 --> 01:00:06,860 Τώρα, σκεφτείτε SQL βάση δεδομένων σας ουσιαστικά ως αρχείο Excel, ίσως, 1190 01:00:06,860 --> 01:00:10,040 με πολλαπλές καρτέλες φύλλων. 1191 01:00:10,040 --> 01:00:13,820 >> Έτσι, θα μπορούσατε να έχετε πολλούς πίνακες, ίσως, ότι συνδέεται με το ένα το άλλο. 1192 01:00:13,820 --> 01:00:19,420 Και σαν Excel, έχουμε πολλά η λειτουργικότητα που θέλουμε. 1193 01:00:19,420 --> 01:00:22,300 Για παράδειγμα, μπορούμε να επιλέξουμε ορισμένες σειρές. 1194 01:00:22,300 --> 01:00:24,110 Μπορούμε να εισάγετε πληροφορίες. 1195 01:00:24,110 --> 01:00:25,560 Μπορούμε να ενημερώσετε σειρές. 1196 01:00:25,560 --> 01:00:27,440 Και μπορούμε επίσης να διαγράψετε τα πράγματα. 1197 01:00:27,440 --> 01:00:30,920 1198 01:00:30,920 --> 01:00:36,560 >> Η SQL επιλογή έργων επιλέγοντας σειρές ή μια σειρά από συγκεκριμένες στήλες από ένα 1199 01:00:36,560 --> 01:00:39,640 βάση δεδομένων που ταιριάζουν με ένα συγκεκριμένο τα κριτήρια που αναφέρει. 1200 01:00:39,640 --> 01:00:44,930 Έτσι, εδώ όταν βλέπω select * from μάγους, όπου σπίτι = Ravenclaw, στη συνέχεια, 1201 01:00:44,930 --> 01:00:48,340 Είμαι επιλέγοντας *, πράγμα που σημαίνει ότι είμαι επιλέγοντας κάθε στήλη σε ότι 1202 01:00:48,340 --> 01:00:56,340 γραμμή από τον πίνακα οδηγούς, αλλά μόνο αν η στήλη σπίτι ισούται Ράβενκλοου. 1203 01:00:56,340 --> 01:00:57,840 Τώρα, αυτό είναι καθαρή ή SQL. 1204 01:00:57,840 --> 01:01:02,680 Έτσι, αν πήγα στο phpmyadmin, το οποίο είναι το συγκεκριμένο τρόπο που χρησιμοποιούμε για να διαχειριστούμε 1205 01:01:02,680 --> 01:01:07,040 SQL βάσεις δεδομένων μας, τότε θα μπορούσατε να τοποθετήσετε ότι στην ιστοσελίδα phpMyAdmin. 1206 01:01:07,040 --> 01:01:08,290 Και αυτό θα εκτελέσει. 1207 01:01:08,290 --> 01:01:11,280 >> Αλλά πραγματικά θέλουμε να κάνουμε ότι από την πλευρά της PHP. 1208 01:01:11,280 --> 01:01:12,580 Έτσι, πώς θα το κάνουμε αυτό; 1209 01:01:12,580 --> 01:01:20,180 Λοιπόν, θα χρησιμοποιήσετε τη λειτουργία αναζήτησης, το οποίο ουσιαστικά εκτελεί αυτό το ερώτημα SQL. 1210 01:01:20,180 --> 01:01:21,830 Χρησιμοποιώντας; 1211 01:01:21,830 --> 01:01:25,850 ως σύμβολο κράτησης θέσης, μπορούμε να περάσουμε σε ορισμένες τιμές σε string μας ότι 1212 01:01:25,850 --> 01:01:26,920 θέλετε να αντικαταστήσετε. 1213 01:01:26,920 --> 01:01:32,110 Έτσι, ίσως είμαι αποθήκευση διαφορετικών τιμές στο curr_house, η οποία 1214 01:01:32,110 --> 01:01:34,400 αντιπροσωπεύει το τρέχον σπίτι ότι θα πάω μέσα. 1215 01:01:34,400 --> 01:01:39,040 Έτσι, μπορώ να περάσω ότι ως σύμβολο κράτησης θέσης με το ερωτηματικό. 1216 01:01:39,040 --> 01:01:43,290 Και τότε εγώ θα εκτελέσει ουσιαστικά το ίδιο πράγμα όπως έκανα και πριν, εκτός από 1217 01:01:43,290 --> 01:01:45,550 τώρα, είμαι σε PHP. 1218 01:01:45,550 --> 01:01:51,300 >> Και το ερώτημα θα επιστρέψει ένα associative array. 1219 01:01:51,300 --> 01:01:53,470 Και Πάω να το αποθηκεύσετε σε σειρές. 1220 01:01:53,470 --> 01:01:56,880 Τώρα, το ερώτημα μπορεί πάντα αποτυγχάνουν. 1221 01:01:56,880 --> 01:02:02,870 Ίσως το ερώτημα SQL δεν μπόρεσε να εκτελέσει επειδή ο πίνακας δεν υπάρχει. 1222 01:02:02,870 --> 01:02:04,310 Ή ίσως, η στήλη δεν υπήρχε. 1223 01:02:04,310 --> 01:02:05,400 Κάτι πήγε στραβά. 1224 01:02:05,400 --> 01:02:08,170 Λοιπόν, σε αυτή την περίπτωση, θα θελήσετε να κάνετε βεβαιωθείτε ότι έχετε ελέγξει αν η 1225 01:02:08,170 --> 01:02:09,700 το ερώτημα επιστρέφει false. 1226 01:02:09,700 --> 01:02:15,590 Και αυτό είναι με τη χρήση του τριπλού ισούται με τη λειτουργία εκεί. 1227 01:02:15,590 --> 01:02:19,660 >> Και τότε ζητώ συγνώμη, που αποτελεί άλλο ένα Λειτουργία CS50, περνώντας ένα μήνυμα. 1228 01:02:19,660 --> 01:02:23,435 Και αν εξετάσουμε συγγνώμη, όλα είναι πραγματικά κάνει είναι να καταστήσει apology.php. 1229 01:02:23,435 --> 01:02:26,100 1230 01:02:26,100 --> 01:02:26,410 Ναι. 1231 01:02:26,410 --> 01:02:29,630 >> ΚΟΙΝΟ: Μπορείς να εξηγήσεις τι αυτό αστέρι κάνει μεταξύ επιλέξτε και από; 1232 01:02:29,630 --> 01:02:30,710 >> ZAMYLA CHAN: Ναι, απολύτως. 1233 01:02:30,710 --> 01:02:35,220 Έτσι, το αστέρι ανάμεσα σε επιλεγμένα και από σημαίνει ότι θέλω να επιλέξετε το σύνολο 1234 01:02:35,220 --> 01:02:37,440 ολόκληρη γραμμή από το τραπέζι μου. 1235 01:02:37,440 --> 01:02:41,900 Θα μπορούσα να έχω αναφέρονται επιλέξτε το όνομα, το έτος, το σπίτι. 1236 01:02:41,900 --> 01:02:46,160 Και θα πάρει, μόνον οι τρεις στήλες στο τραπέζι μου. 1237 01:02:46,160 --> 01:02:51,560 Αλλά αν πω επιλέξτε *, τότε εγώ θα πάρετε τα πάντα σε αυτή τη στήλη. 1238 01:02:51,560 --> 01:02:53,760 Στη συνέχεια, Πάω να πάτε στην πρώτη πλάτη. 1239 01:02:53,760 --> 01:02:57,656 >> ΚΟΙΝΟ: Έτσι, αυτό εξακολουθεί να είναι σε SQL, έτσι δεν είναι; 1240 01:02:57,656 --> 01:02:59,610 Είναι αυτό το ερώτημα ή είναι αυτή η PHP; 1241 01:02:59,610 --> 01:03:00,550 >> ZAMYLA CHAN: Είμαστε σε ένα ερώτημα. 1242 01:03:00,550 --> 01:03:01,940 Έτσι, αυτό είναι σε PHP. 1243 01:03:01,940 --> 01:03:06,280 Έτσι, χρησιμοποιώντας το ερώτημα λειτουργία PHP, είμαστε εκτέλεση ενός ερωτήματος SQL. 1244 01:03:06,280 --> 01:03:11,988 1245 01:03:11,988 --> 01:03:15,364 >> ΚΟΙΝΟ: Υπάρχει κάτι στην SQL case-sensitive, όπως επιλέξτε 1246 01:03:15,364 --> 01:03:17,834 ή μάγους ή το σπίτι; 1247 01:03:17,834 --> 01:03:20,050 >> ZAMYLA CHAN: Υπάρχει κάτι σε SQL πεζών-κεφαλαίων; 1248 01:03:20,050 --> 01:03:21,760 Πιστεύω πως ναι. 1249 01:03:21,760 --> 01:03:24,620 Πιστεύω ότι SELECT και FROM Και πού είναι case-sensitive. 1250 01:03:24,620 --> 01:03:25,535 Όχι; 1251 01:03:25,535 --> 01:03:27,500 >> ROB BOWDEN: Λοιπόν, αυτό είναι το αντίθετο. 1252 01:03:27,500 --> 01:03:32,030 Τα ονόματα των στηλών και τα μέσα του πίνακα, όλα αυτά είναι case-sensitive. 1253 01:03:32,030 --> 01:03:35,470 Αλλά οποιαδήποτε από τις λέξεις κλειδί MySQL, όπως SELECT, FROM και WHERE, αυτά δεν είναι 1254 01:03:35,470 --> 01:03:36,140 case-sensitive. 1255 01:03:36,140 --> 01:03:36,420 OK. 1256 01:03:36,420 --> 01:03:37,780 Έτσι, το αντίθετο από αυτό που είπα. 1257 01:03:37,780 --> 01:03:40,420 Έτσι, όλες οι λέξεις-κλειδιά MySQL - 1258 01:03:40,420 --> 01:03:42,670 επιλέξετε, από όπου - εκείνες δεν είναι case-sensitive. 1259 01:03:42,670 --> 01:03:44,630 Αλλά ό, τι άλλο είναι. 1260 01:03:44,630 --> 01:03:45,210 OK. 1261 01:03:45,210 --> 01:03:46,500 Μπορείτε στο μπροστινό μέρος. 1262 01:03:46,500 --> 01:03:52,041 >> ΚΟΙΝΟ: Αν έχω $ σειρές από την άποψη της περισσότερες από μία γραμμές, αυτό σημαίνει ότι είναι 1263 01:03:52,041 --> 01:03:53,640 απλά γίνεται ένα associative array; 1264 01:03:53,640 --> 01:03:59,550 >> ZAMYLA CHAN: Άρα το ερώτημα ήταν αν σειρές έχει περισσότερες από μία γραμμή σε αυτό, δεν 1265 01:03:59,550 --> 01:04:01,800 να γίνει ένα associative array; 1266 01:04:01,800 --> 01:04:05,680 Γι 'αυτό είναι μια σειρά από συνειρμική συστοιχίες ήδη. 1267 01:04:05,680 --> 01:04:10,730 Έτσι, ακόμα κι αν υπάρχει μόνο μία γραμμή επιστραφεί, τότε θα πρέπει να πάτε στο 1268 01:04:10,730 --> 01:04:12,690 δείκτης 0 από αυτό το αποτέλεσμα. 1269 01:04:12,690 --> 01:04:15,316 Και τότε θα έχουν αυτό πρώτη γραμμή. 1270 01:04:15,316 --> 01:04:17,482 Ναι, Belinda; 1271 01:04:17,482 --> 01:04:21,258 >> ΚΟΙΝΟ: Όταν χρησιμοποιείτε ===, αυτό είναι το μόνο παράδειγμα; 1272 01:04:21,258 --> 01:04:22,210 Ή είναι άλλοι εκεί; 1273 01:04:22,210 --> 01:04:26,815 >> ZAMYLA CHAN: Έτσι, στην περίπτωση αυτή, === είναι μια σύγκριση σε όλους τους τύπους. 1274 01:04:26,815 --> 01:04:29,870 1275 01:04:29,870 --> 01:04:34,050 Λυπάμαι. === Είναι μια σύγκριση που συγκρίνει τους τύπους. 1276 01:04:34,050 --> 01:04:37,620 Και στη συνέχεια == συγκρίνει σε όλους τους τύπους. 1277 01:04:37,620 --> 01:04:41,620 >> ΚΟΙΝΟ: Μπορείτε να εξηγήσετε τι σειρών είναι σε αυτή την κατάσταση; 1278 01:04:41,620 --> 01:04:45,120 Είναι σειρά των δεδομένων; 1279 01:04:45,120 --> 01:04:48,100 >> ZAMYLA CHAN: Στην επόμενη διαφάνεια, είμαι πρόκειται να εξηγήσω τι είναι σειρές. 1280 01:04:48,100 --> 01:04:49,890 Έτσι, αν δεν σας πειράζει που κατέχουν μακριά σε αυτό. 1281 01:04:49,890 --> 01:04:50,620 Και τότε στην πλάτη; 1282 01:04:50,620 --> 01:04:54,699 >> ΚΟΙΝΟ: Για λειτουργίες όπως το ερώτημα, απαλλάξουν και να ζητήσει συγγνώμη [δεν ακούγεται]; 1283 01:04:54,699 --> 01:04:59,050 1284 01:04:59,050 --> 01:05:03,050 >> ZAMYLA CHAN: Το ερώτημα ήταν κατά πόσον αυτές οι λειτουργίες - ερώτημα, συγγνώμη, 1285 01:05:03,050 --> 01:05:04,510 και να καταστήσει - 1286 01:05:04,510 --> 01:05:05,930 είναι κοινά σε όλη την PHP. 1287 01:05:05,930 --> 01:05:09,460 Αυτοί είναι αυτοί που CS50 έγραψε για pset7. 1288 01:05:09,460 --> 01:05:09,910 Και Jay; 1289 01:05:09,910 --> 01:05:15,333 >> ΚΟΙΝΟ: Όταν πρέπει να πω $ _SESSION, Είναι ότι μόνο για τις ταυτότητες; 1290 01:05:15,333 --> 01:05:17,310 Ή θα μπορούσε να σας πει ότι εδώ; 1291 01:05:17,310 --> 01:05:23,440 >> ZAMYLA CHAN: Άρα το ερώτημα ήταν, όταν χρησιμοποιούμε $ _SESSION, αυτό ήταν μια ειδική 1292 01:05:23,440 --> 01:05:25,290 καθολική μεταβλητή που χρησιμοποιούμε. 1293 01:05:25,290 --> 01:05:32,080 Εδώ η μεταβλητή αυτή θα είναι τοπική στη συνάρτησή μας. 1294 01:05:32,080 --> 01:05:36,588 Έτσι, είμαστε απλά δηλώνοντας μια νέα μεταβλητή. 1295 01:05:36,588 --> 01:05:38,460 >> ΚΟΙΝΟ: Πώς συγγνώμη εφαρμοστεί; 1296 01:05:38,460 --> 01:05:40,960 >> ZAMYLA CHAN: Το ερώτημα ήταν, πώς συγγνώμη εφαρμοστεί; 1297 01:05:40,960 --> 01:05:44,180 Και νομίζω ότι αυτό είναι στην πραγματικότητα μια αρκετά ορθής πρακτικής για σας παιδιά να πάνε σε 1298 01:05:44,180 --> 01:05:49,260 το τμήμα functions.php και να κοιτάξουμε συγγνώμη και να δούμε πώς θα μπορούσατε να έχετε 1299 01:05:49,260 --> 01:05:50,670 κάνει αυτό στον εαυτό σας. 1300 01:05:50,670 --> 01:05:55,620 Έτσι, μπορώ να αφήνω σε εσάς, αλλά μόνο λένε ότι αν κοιτάξετε συγγνώμη, 1301 01:05:55,620 --> 01:06:02,110 Στη συνέχεια παίρνει το μήνυμα που υποβάλλονται για να ζητήσει συγγνώμη, και στη συνέχεια 1302 01:06:02,110 --> 01:06:06,570 καθιστά αυτό το μήνυμα. 1303 01:06:06,570 --> 01:06:08,240 Οποιεσδήποτε άλλες ερωτήσεις; 1304 01:06:08,240 --> 01:06:08,710 Λατρεύω ερωτήσεις. 1305 01:06:08,710 --> 01:06:09,555 Έτσι, να τους κρατήσει έρχονται. 1306 01:06:09,555 --> 01:06:11,888 >> ΚΟΙΝΟ: [δεν ακούγεται] 1307 01:06:11,888 --> 01:06:13,840 echo ή εκτύπωσης από εκεί; 1308 01:06:13,840 --> 01:06:15,900 >> ZAMYLA CHAN: Το ερώτημα ήταν, δεν θα μπορούσε απλά έχουν βάλει 1309 01:06:15,900 --> 01:06:17,000 echo ή εκτύπωσης από εκεί. 1310 01:06:17,000 --> 01:06:19,710 Έτσι, αυτό θα κάνει κάτι ελαφρώς διαφορετική. 1311 01:06:19,710 --> 01:06:23,750 Αυτό θα εκτυπωθεί ερώτημα απέτυχε σε αυτό - 1312 01:06:23,750 --> 01:06:27,420 καλά, αυτή τη στιγμή, είμαστε στην πραγματικότητα ελεγκτή μας. 1313 01:06:27,420 --> 01:06:30,350 Έτσι δεν έχουμε στην πραγματικότητα HTML συσταθεί εδώ. 1314 01:06:30,350 --> 01:06:34,946 Ζήτα συγνώμη καθιστώντας apologize.php σας ανακατευθύνει στην πραγματικότητα να apology.php. 1315 01:06:34,946 --> 01:06:39,560 1316 01:06:39,560 --> 01:06:42,200 OK. 1317 01:06:42,200 --> 01:06:45,880 >> Έτσι τώρα, ας πάμε για να αντιμετωπίσει την ερώτηση από τις προηγούμενες για το τι 1318 01:06:45,880 --> 01:06:47,330 Είναι πραγματικά σειρές. 1319 01:06:47,330 --> 01:06:51,960 Λοιπόν, το ερώτημα θα επιστρέψει μια σειρά από γραμμές. 1320 01:06:51,960 --> 01:06:55,020 Και κάθε σειρά εκπροσωπείται από ένα associative array. 1321 01:06:55,020 --> 01:07:02,840 Έτσι, αν έχω εκτελεστεί ένα ερώτημα SQL και Έχω αποθηκεύσει το αποτέλεσμα της σε σειρές, στη συνέχεια, 1322 01:07:02,840 --> 01:07:07,850 χρησιμοποιώντας ένα βρόχο foreach, τότε η συστοιχία το όνομα είναι το πρώτο εκεί - σειρές. 1323 01:07:07,850 --> 01:07:13,170 Και στη συνέχεια, Πάω να καλέσετε κάθε σειρά εκεί $ γραμμή. 1324 01:07:13,170 --> 01:07:20,060 >> Έτσι επανάληψη πάνω από αυτό, μπορεί στη συνέχεια να πρόσβαση στήλη το όνομα του δεδομένη σειρά του, 1325 01:07:20,060 --> 01:07:22,340 έτος της στήλης και η στήλη το σπίτι. 1326 01:07:22,340 --> 01:07:28,010 Σημειώστε ότι δεν θα ήταν σε θέση να να το κάνετε αυτό με τις σειρές, επειδή ο δείκτης σειρές 1327 01:07:28,010 --> 01:07:29,290 το όνομα δεν υπάρχει. 1328 01:07:29,290 --> 01:07:31,970 Γραμμές είναι απλώς μια σειρά από associative arrays. 1329 01:07:31,970 --> 01:07:34,870 Έτσι, έχετε δύο επίπεδα. 1330 01:07:34,870 --> 01:07:37,170 Μόλις έχετε τη σειρά των γραμμών, θα πρέπει να μπει σε αυτό. 1331 01:07:37,170 --> 01:07:39,110 Και τότε μπορείτε να αποκτήσετε πρόσβαση στις στήλες. 1332 01:07:39,110 --> 01:07:41,636 Μήπως αυτό να καταστεί σαφές; 1333 01:07:41,636 --> 01:07:42,520 Ναι, μπροστά; 1334 01:07:42,520 --> 01:07:45,490 >> ΚΟΙΝΟ: [δεν ακούγεται] ανοίξει παρένθεση για [δεν ακούγεται]; 1335 01:07:45,490 --> 01:07:46,220 >> ZAMYLA CHAN: Με συγχωρείτε; 1336 01:07:46,220 --> 01:07:49,740 >> ΚΟΙΝΟ: Οι παρενθέσεις. 1337 01:07:49,740 --> 01:07:52,420 >> ZAMYLA CHAN: Αυτά εδώ; 1338 01:07:52,420 --> 01:07:58,520 Αυτό είναι που μου επιτρέπει να συμπεριλάβει αυτή η μεταβλητή. 1339 01:07:58,520 --> 01:07:58,670 Ναι. 1340 01:07:58,670 --> 01:08:01,900 >> ΚΟΙΝΟ: Όταν εκτυπώνετε, είσαι εκτύπωση στον κώδικα HTML; 1341 01:08:01,900 --> 01:08:03,110 >> ZAMYLA CHAN: Ναι. 1342 01:08:03,110 --> 01:08:07,720 Όταν εκτυπώνετε, αυτό εδώ είναι μέσα πρότυπό μου τώρα, έτσι 1343 01:08:07,720 --> 01:08:10,310 την άποψή μου για τη μέθοδο MVC. 1344 01:08:10,310 --> 01:08:12,750 Έτσι είμαι εκτύπωση στην HTML. 1345 01:08:12,750 --> 01:08:16,670 >> ΚΟΙΝΟ: Έτσι, αν πήγαμε σε προγραμματιστή εργαλεία μετά την εκτέλεση αυτή, θα μπορούσαμε να 1346 01:08:16,670 --> 01:08:17,160 ότι στην πραγματικότητα στον κώδικα; 1347 01:08:17,160 --> 01:08:18,410 >> ZAMYLA CHAN: Αυτό είναι ένα μεγάλο ερώτηση, ναι. 1348 01:08:18,410 --> 01:08:22,359 Έτσι, αν πήγε σε εργαλεία για την ανάπτυξη το Firefox χρησιμοποιώντας το Firebug ή 1349 01:08:22,359 --> 01:08:26,109 Chrome, τότε ναι, θα μπορούσε δείτε το συγκεκριμένο HTML. 1350 01:08:26,109 --> 01:08:28,470 Γι 'αυτό δεν θα δείξει $ γραμμή ["Όνομα"]. 1351 01:08:28,470 --> 01:08:32,524 Θα δείξει οποιοδήποτε εφαρμοστέο όνομα είναι σε αυτή τη γραμμή. 1352 01:08:32,524 --> 01:08:36,268 >> ΚΟΙΝΟ: Ακριβώς ένα γενικό ζήτημα, τι tr td και ορίζεται ως; 1353 01:08:36,268 --> 01:08:37,672 Γιατί θα έχουμε [δεν ακούγεται]; 1354 01:08:37,672 --> 01:08:41,850 1355 01:08:41,850 --> 01:08:44,814 >> ZAMYLA CHAN: Πίνακας σειρά tr, πίνακας στη συνέχεια td στήλη. 1356 01:08:44,814 --> 01:08:48,060 1357 01:08:48,060 --> 01:08:49,310 OK. 1358 01:08:49,310 --> 01:08:55,771 1359 01:08:55,771 --> 01:08:56,835 >> ΚΟΙΝΟ: Ναι, είναι δεδομένα πίνακα. 1360 01:08:56,835 --> 01:08:58,770 >> ZAMYLA CHAN: δεδομένα του πίνακα. 1361 01:08:58,770 --> 01:08:59,894 Ναι. 1362 01:08:59,894 --> 01:09:08,670 >> ΚΟΙΝΟ: Είναι μια σειρά στην οποία η γραμμή αντιμετωπίζεται σαν μια στήλη; 1363 01:09:08,670 --> 01:09:08,910 >> ZAMYLA CHAN: Συγγνώμη. 1364 01:09:08,910 --> 01:09:10,570 Μπορείτε να το επαναλάβετε; 1365 01:09:10,570 --> 01:09:14,450 >> ΚΟΙΝΟ: Πως θα απεικονίσει σειρές; 1366 01:09:14,450 --> 01:09:16,310 >> ZAMYLA CHAN: Πώς θα απεικονίσει σειρές σε τι είδους τρόπο; 1367 01:09:16,310 --> 01:09:21,796 Μιλάς γι 'αυτές σειρές εδώ ή οι σειρές tr; 1368 01:09:21,796 --> 01:09:22,630 >> ΚΟΙΝΟ: Οι σειρές. 1369 01:09:22,630 --> 01:09:25,229 >> ZAMYLA CHAN: Οι σειρές αυτές εδώ; 1370 01:09:25,229 --> 01:09:28,620 Θα απεικονίσει αυτό ως Εκτελώ το ερώτημά μου. 1371 01:09:28,620 --> 01:09:38,729 Και λέει, εντάξει, έχω είτε 0 έως n το ποσό των γραμμών που ταιριάζουν με τα κριτήρια 1372 01:09:38,729 --> 01:09:40,510 ότι είχε ερωτηματικά. 1373 01:09:40,510 --> 01:09:43,740 Έτσι, δεν έχω κάποιο αριθμό των γραμμών. 1374 01:09:43,740 --> 01:09:51,450 Έτσι, σειρές, οι σειρές $, καταστήματα έχουν μία από αυτές τις σειρές σε μία συστοιχία. 1375 01:09:51,450 --> 01:09:58,110 Έτσι, ακόμα κι αν είναι μόνο ένας από αυτούς, είναι ακόμα μια σειρά από γραμμές που ταιριάζουν. 1376 01:09:58,110 --> 01:10:03,010 >> Έτσι λοιπόν, για παράδειγμα, αυτό είναι παρόμοια με όταν σας παρατραβηγμένο 1377 01:10:03,010 --> 01:10:05,390 η μνήμη cache από τους χρήστες. 1378 01:10:05,390 --> 01:10:10,810 Και τα κριτήρια εκεί όπου ήταν ID ισούται με το ID της συνεδρίας. 1379 01:10:10,810 --> 01:10:14,250 Πραγματικά δεν υπάρχει μόνο μία γραμμή ότι θα μπορούσε να ταιριάζει με αυτό. 1380 01:10:14,250 --> 01:10:18,960 Αλλά ακόμα σειρές μόλις επέστρεψε μία σειρά. 1381 01:10:18,960 --> 01:10:22,620 Έτσι θα πρέπει να πάτε σε σειρές, δείκτη 0, ο δείκτης cache σε 1382 01:10:22,620 --> 01:10:26,195 πράγματι να cache σας. 1383 01:10:26,195 --> 01:10:29,650 >> ΚΟΙΝΟ: Είναι η λειτουργία εκτύπωσης στην απηχούν το ίδιο πράγμα; 1384 01:10:29,650 --> 01:10:30,670 >> ZAMYLA CHAN: Ναι. 1385 01:10:30,670 --> 01:10:31,190 Ναι. 1386 01:10:31,190 --> 01:10:33,304 Εκτυπώστε μια ηχώ του ίδιου. 1387 01:10:33,304 --> 01:10:42,400 >> ΚΟΙΝΟ: Είναι ο βρόχος foreach η μόνος τρόπος για να δείκτη σε σειρές; 1388 01:10:42,400 --> 01:10:46,110 >> ZAMYLA CHAN: Είναι ένας βρόχος foreach ο μόνος τρόπος που μπορείτε να 1389 01:10:46,110 --> 01:10:47,030 επαναλάβει στις γραμμές; 1390 01:10:47,030 --> 01:10:47,180 Όχι. 1391 01:10:47,180 --> 01:10:51,000 Μπορείτε επίσης να χρησιμοποιήσετε ένα για βρόχο, υπό την προϋπόθεση ότι γνωρίζετε το μήκος 1392 01:10:51,000 --> 01:10:53,024 του πίνακα της σειράς του. 1393 01:10:53,024 --> 01:10:58,500 >> ΚΟΙΝΟ: Μπορείτε να έχετε πρόσβαση χρησιμοποιώντας μια σειρά, όπως [δεν ακούγεται]; 1394 01:10:58,500 --> 01:11:01,640 >> ZAMYLA CHAN: Έτσι δεν μπορείτε να αποκτήσετε πρόσβαση χρησιμοποιώντας μόνο γραμμή, αν δεν έχετε ένα 1395 01:11:01,640 --> 01:11:05,160 βρόχο foreach υπό την προϋπόθεση ότι δεν έχετε δηλώσει γραμμή. 1396 01:11:05,160 --> 01:11:08,150 1397 01:11:08,150 --> 01:11:09,660 Ναι. 1398 01:11:09,660 --> 01:11:10,810 Ναι, στο λευκό. 1399 01:11:10,810 --> 01:11:13,990 >> ΚΟΙΝΟ: Λοιπόν, τι tr td και να κάνω; 1400 01:11:13,990 --> 01:11:16,790 >> ZAMYLA CHAN: Έτσι tr και td είναι ετικέτες HTML. 1401 01:11:16,790 --> 01:11:19,590 tr υποδεικνύει την αρχή από μια γραμμή πίνακα. 1402 01:11:19,590 --> 01:11:26,625 Και κάθε td δείχνει μια νέα στήλη πίνακα δεδομένων. 1403 01:11:26,625 --> 01:11:32,275 >> ΚΟΙΝΟ: Για μια οπτική του τι είναι μια σειρά είναι παρόμοια, απλά φανταστείτε τον SQL, πώς 1404 01:11:32,275 --> 01:11:33,510 έχουν μια σειρά. 1405 01:11:33,510 --> 01:11:35,980 [Δεν ακούγεται]. 1406 01:11:35,980 --> 01:11:36,390 >> ZAMYLA CHAN: Ναι. 1407 01:11:36,390 --> 01:11:37,630 Αυτό είναι ένα μεγάλο σημείο. 1408 01:11:37,630 --> 01:11:41,510 Μπορείτε να απεικονίσει τις γραμμές, όπως ακριβώς όπως σε έναν πίνακα του Excel, απλά 1409 01:11:41,510 --> 01:11:44,540 ο κατάλογος των γραμμών. 1410 01:11:44,540 --> 01:11:46,870 OK. 1411 01:11:46,870 --> 01:11:47,230 Εντάξει. 1412 01:11:47,230 --> 01:11:50,740 Έτσι, τώρα που έχουμε περάσει πάνω από επιλογή, αν δεν υπάρχουν άλλες ερωτήσεις, θα 1413 01:11:50,740 --> 01:11:52,970 πάει πάνω σε ένθετο. 1414 01:11:52,970 --> 01:11:58,220 Έτσι αν θέλετε να τοποθετήσετε σε κάποια τραπέζι και να εισαγάγετε ορισμένα στήλη 1415 01:11:58,220 --> 01:12:02,320 τιμές, θα μπορούσα να εισάγετε σε Ravenclaw κατά το έτος 7. 1416 01:12:02,320 --> 01:12:07,245 Αλλά μερικές φορές μπορεί να υπάρχουν εις διπλούν αξίες, όπως είδαμε στο pset7 όταν 1417 01:12:07,245 --> 01:12:09,240 είχαν την ενημέρωση του χαρτοφυλακίου μας. 1418 01:12:09,240 --> 01:12:15,610 >> Έτσι, στην περίπτωση αυτή, θέλουμε να χρησιμοποιήσουμε ON ΑΝΑΠΑΡΑΓΕΤΕ KEY UPDATE, έτσι ώστε να μην 1419 01:12:15,610 --> 01:12:18,280 αποθηκεύουν πολλαπλές σειρές με το ίδιο αξία, αλλά μάλλον ενημερώσετε. 1420 01:12:18,280 --> 01:12:21,780 1421 01:12:21,780 --> 01:12:25,560 Στη συνέχεια, έχουμε πραγματικά την ενημέρωση, που δεν αποτελεί ένθετο. 1422 01:12:25,560 --> 01:12:30,100 Είναι απλά μια ενημερωμένη έκδοση, όπου μπορείτε να ενημερώσετε σε ένα ορισμένο πίνακα με ένα δεδομένο 1423 01:12:30,100 --> 01:12:34,403 κριτήρια και στη συνέχεια, τελικά, να διαγράψετε, η οποία κάνει μια πολύ παρόμοιο πράγμα. 1424 01:12:34,403 --> 01:12:40,200 >> ΚΟΙΝΟ: Θα μπορούσατε να εν συντομία πάει πάνω από το διπλό κλειδί; 1425 01:12:40,200 --> 01:12:40,850 >> ZAMYLA CHAN: Ναι. 1426 01:12:40,850 --> 01:12:48,340 Ουσιαστικά εδώ, έχω INSERT INTO Gringotts, είναι, γαλέρες, οι αξίες αυτές. 1427 01:12:48,340 --> 01:12:56,900 Αλλά ID, προφανώς, είναι ένα μοναδικό κλειδί τιμή που έχει οριστεί σε MySQL πίνακα. 1428 01:12:56,900 --> 01:13:06,750 Έτσι, αν έχω ήδη ότι η ταυτότητα που έχει συσταθεί, τότε δεν μπορώ να εισαγάγετε μια νέα γραμμή. 1429 01:13:06,750 --> 01:13:10,961 Έτσι, αν δεν υπάρχει ήδη, τότε θα πρέπει να το ενημερώσετε. 1430 01:13:10,961 --> 01:13:16,040 1431 01:13:16,040 --> 01:13:17,722 Στη μέση στο λευκό. 1432 01:13:17,722 --> 01:13:21,570 >> ΚΟΙΝΟ: Έτσι εισαγωγή, ενημέρωση, διαγραφή, και επιλέξτε, είναι εκείνα όλα τα διαθέσιμα 1433 01:13:21,570 --> 01:13:22,875 σε τοπικό επίπεδο [δεν ακούγεται]; 1434 01:13:22,875 --> 01:13:27,320 1435 01:13:27,320 --> 01:13:29,630 >> ZAMYLA CHAN: Έτσι τοποθετήστε, ενημέρωση, διαγραφή και 1436 01:13:29,630 --> 01:13:31,120 επιλέξετε είναι όλα τα ερωτήματα SQL. 1437 01:13:31,120 --> 01:13:34,970 Έτσι, κάθε φορά που χρησιμοποιείτε SQL, θα έχετε τις διαθέσιμες. 1438 01:13:34,970 --> 01:13:38,226 1439 01:13:38,226 --> 01:13:40,706 >> ΚΟΙΝΟ: Επιστροφή στην τελευταία κουίζ - 1440 01:13:40,706 --> 01:13:44,178 υπήρχε μια ερώτηση που ασχολήθηκε με εάν είχατε ένα τραπέζι και ήθελε να 1441 01:13:44,178 --> 01:13:52,610 εισάγετε βαθμολογίες του τεστ σε ένα και εισάγετε το όνομά σας και έτσι δεν θα σας αφήσει 1442 01:13:52,610 --> 01:13:54,594 [Δεν ακούγεται] σκορ δοκιμασία του φίλου σας. 1443 01:13:54,594 --> 01:13:59,060 Πώς θα το κάνουμε αυτό με το ένθετο; 1444 01:13:59,060 --> 01:14:02,490 >> ZAMYLA CHAN: Έτσι, το ερώτημα ήταν περίπου μια προηγούμενη ενδιάμεση ερώτηση. 1445 01:14:02,490 --> 01:14:04,320 Δεν γνωρίζω εκ των οποίων ένα είναι σωστό τώρα. 1446 01:14:04,320 --> 01:14:06,790 Έτσι ίσως αργότερα, αν θέλετε να έρχονται και να μου δείξει, τότε μπορώ 1447 01:14:06,790 --> 01:14:08,155 σίγουρα να σας δώσει συμβουλές. 1448 01:14:08,155 --> 01:14:11,250 1449 01:14:11,250 --> 01:14:15,460 Αλλά μιλώντας για την εισαγωγή πράγματα, όπως λαμβάνοντας βαθμολογία κάποιου όταν 1450 01:14:15,460 --> 01:14:18,800 δεν πρέπει, ας μιλήσουμε για SQL ένεση επιθέσεις. 1451 01:14:18,800 --> 01:14:22,050 Έτσι, μια επίθεση SQL ένεση είναι ουσιαστικά όταν κάποιος παίρνει 1452 01:14:22,050 --> 01:14:27,680 πλεονέκτημα της χαμηλής ασφάλειας της τρόπο που παίρνετε στα δεδομένα. 1453 01:14:27,680 --> 01:14:35,660 >> Έτσι, εδώ, όπως ακριβώς και στη χρηματοδότηση CS50, όταν είστε συνδεδεμένοι, μπορούμε να μπούμε σε μια 1454 01:14:35,660 --> 01:14:39,510 όνομα χρήστη στην φόρμα σύνδεσης, το πρώτο πλαίσιο κειμένου, και 1455 01:14:39,510 --> 01:14:41,570 στη συνέχεια, πληκτρολογήστε έναν κωδικό πρόσβασης. 1456 01:14:41,570 --> 01:14:45,610 Ίσως κώδικα PHP μας μπορεί να μοιάζει κάτι σαν αυτό, όπου $ username 1457 01:14:45,610 --> 01:14:51,410 είναι το όνομα μετα-δεδομένων και τον κωδικό πρόσβασης κωδικό πρόσβασης μετά τα δεδομένα. 1458 01:14:51,410 --> 01:14:55,110 Και τότε ακριβώς εκτέλεση του ερωτήματος μας, ας πούμε, Εντάξει, καλά, το ερώτημά μας πρόκειται να 1459 01:14:55,110 --> 01:14:57,990 επιλέξτε από τους χρήστες μας, όπου το όνομα χρήστη είναι το 1460 01:14:57,990 --> 01:14:58,970 ένα που υπέβαλε. 1461 01:14:58,970 --> 01:15:06,870 Και το password είναι ο κωδικός, πράγμα που σημαίνει ότι οι κωδικοί πρόσβασης ταιριάζουν. 1462 01:15:06,870 --> 01:15:12,670 >> Τώρα, τι θα γίνει αν αντί πραγματικά υποβάλλοντας ένα πραγματικό κωδικό πρόσβασης, όπως 1463 01:15:12,670 --> 01:15:16,850 12345 και να μαντέψουν σε προεξοχή που λέει κωδικό και προσπαθεί να χαράξει τους 1464 01:15:16,850 --> 01:15:21,460 λογαριασμό, τι θα γίνει αν αντί υπέβαλαν αυτό. 1465 01:15:21,460 --> 01:15:24,380 Θα μπορούσαν ίσως να πληκτρολογήσετε μια εικασία σε έναν κωδικό πρόσβασης. 1466 01:15:24,380 --> 01:15:30,480 Και τότε θα τελειώσει το παραθέτω στη συνέχεια, πληκτρολογήστε ή 1 = 1. 1467 01:15:30,480 --> 01:15:35,160 Αυτό θα ρυθμό απευθείας στην SQL ερώτημα για να δούμε κάτι σαν αυτό. 1468 01:15:35,160 --> 01:15:38,200 Επιλέξτε από τους χρήστες, όπου το όνομα χρήστη = Αιχμές και τον κωδικό πρόσβασης 1469 01:15:38,200 --> 01:15:41,450 ισούται με κρίνο ή 1 = 1. 1470 01:15:41,450 --> 01:15:45,450 >> Έτσι, είτε ο κωδικός πρόσβασης έχει να είναι σωστή ή 1 = 1, 1471 01:15:45,450 --> 01:15:47,870 που είναι πάντα αλήθεια. 1472 01:15:47,870 --> 01:15:52,780 Έτσι, στην περίπτωση αυτή, βασικά, ο χρήστης μπορεί να να επωφεληθούν από αυτό και απλά συνδεθείτε 1473 01:15:52,780 --> 01:15:55,240 οι ίδιοι και να hack λογαριασμό κάποιου. 1474 01:15:55,240 --> 01:15:58,950 Έτσι, γι 'αυτό θέλουμε να αποφύγουμε κάποιος χρειάζεται να το κάνουμε αυτό. 1475 01:15:58,950 --> 01:16:03,890 Αλλά ευτυχώς, η λειτουργία ερωτήματος περνώντας τα σύμβολα κράτησης θέσης θα 1476 01:16:03,890 --> 01:16:04,800 φροντίσει αυτό για σας. 1477 01:16:04,800 --> 01:16:08,570 Επίσης, θα συνήθως δεν θέλουν υποχρεούται να υποβάλει τους κωδικούς πρόσβασης 1478 01:16:08,570 --> 01:16:09,310 οι ίδιοι. 1479 01:16:09,310 --> 01:16:14,115 Γι 'αυτό κατακερματίζεται ή κρυπτογραφημένα τους στη χρηματοδότηση CS50. 1480 01:16:14,115 --> 01:16:17,553 >> ΚΟΙΝΟ: Το παρελθόν κουίζ μίλησε για χορδές διαφυγής MySQL. 1481 01:16:17,553 --> 01:16:21,800 Μήπως πρέπει να ανησυχείτε γι 'αυτό; 1482 01:16:21,800 --> 01:16:22,670 >> ZAMYLA CHAN: Αυτή είναι μια καλή ερώτηση. 1483 01:16:22,670 --> 01:16:29,050 Οι χορδές διαφυγής MySQL είναι σίγουρα ένα λειτουργία που χρησιμοποιήθηκε στο ερώτημα μας. 1484 01:16:29,050 --> 01:16:30,420 Αλλά σίγουρα να εξετάσουμε αυτό. 1485 01:16:30,420 --> 01:16:32,950 Θα έλεγα ότι είναι δίκαιο παιχνίδι για να γνωρίζετε ότι θα πρέπει να καλέσετε ότι 1486 01:16:32,950 --> 01:16:34,370 λειτουργούν σε μια σειρά. 1487 01:16:34,370 --> 01:16:35,245 Ναι, Belinda; 1488 01:16:35,245 --> 01:16:38,606 >> ΚΟΙΝΟ: Πώς ξέρετε πότε είναι μονά εισαγωγικά ή διπλά εισαγωγικά; 1489 01:16:38,606 --> 01:16:43,516 Και επίσης, νιώθω σαν στο διάλεξη σας ανέφερε κάτι για να μην έχουν 1490 01:16:43,516 --> 01:16:48,426 η [δεν ακούγεται] ή κάτι ή το δεύτερο single απόσπασμα στο τέλος. 1491 01:16:48,426 --> 01:16:56,407 1492 01:16:56,407 --> 01:17:00,825 Νομίζω τόνισε στην ομιλία που είστε υποτίθεται για να έχει απόστροφο 1 1493 01:17:00,825 --> 01:17:04,290 και στη συνέχεια να μην έχουν αποστρόφους ή κάτι τέτοιο. 1494 01:17:04,290 --> 01:17:05,540 >> ΚΟΙΝΟ: [δεν ακούγεται]. 1495 01:17:05,540 --> 01:17:14,860 1496 01:17:14,860 --> 01:17:18,657 >> ΚΟΙΝΟ: Το θέμα είναι το τελευταίο single quote εκεί σε αυτό το δεύτερο πλαίσιο 1497 01:17:18,657 --> 01:17:19,391 δεν πρέπει να υπάρχει. 1498 01:17:19,391 --> 01:17:21,840 [Δεν ακούγεται] 1499 01:17:21,840 --> 01:17:26,730 Διότι όταν παίρνετε αυτό το τελευταίο single παραθέτω και να ταιριάζουν με αυτά για το περιεχόμενο 1500 01:17:26,730 --> 01:17:30,522 όταν ο κωδικός πρόσβασης είναι, αν έχετε ότι ερώτημα, υπάρχει μια μόνο προσφορά στο 1501 01:17:30,522 --> 01:17:31,340 το τέλος ήδη. 1502 01:17:31,340 --> 01:17:36,580 Θέλετε να χρησιμοποιήσετε αυτό το απλό εισαγωγικό όπως αυτή που βλέπει το ένα 1503 01:17:36,580 --> 01:17:37,574 [Δεν ακούγεται]. 1504 01:17:37,574 --> 01:17:42,820 Έτσι, αυτό που είναι πραγματικά σε αυτό το κείμενο πλαίσιο δεν θα πρέπει να έχουν αυτό. 1505 01:17:42,820 --> 01:17:44,070 >> ZAMYLA CHAN: Θα αλλάξει αυτό. 1506 01:17:44,070 --> 01:17:56,490 1507 01:17:56,490 --> 01:17:56,880 OK. 1508 01:17:56,880 --> 01:18:00,435 Αν δεν υπάρχουν οποιεσδήποτε ερωτήσεις, τότε εγώ θα περάστε το από τον Ιωσήφ να μιλήσει 1509 01:18:00,435 --> 01:18:04,332 για JavaScript, κ.λπ.. 1510 01:18:04,332 --> 01:18:09,540 >> [Χειροκροτήματα] 1511 01:18:09,540 --> 01:18:11,660 >> JOSEPH ONG: Γι 'αυτό και τρέχουν λίγο πίσω. 1512 01:18:11,660 --> 01:18:13,280 Έτσι, εάν έχετε να φύγει, αυτό είναι εντάξει. 1513 01:18:13,280 --> 01:18:16,540 Αλλά σας ζητάμε να κρατήσει το κεφάλι σας προς τα κάτω αν είστε στη μέση, έτσι ώστε να 1514 01:18:16,540 --> 01:18:19,560 δεν εμποδίζουν την κάμερα και χρησιμοποιείτε το πίσω έξοδο, αν έχετε να. 1515 01:18:19,560 --> 01:18:25,010 1516 01:18:25,010 --> 01:18:26,306 Είμαι ο Ιωσήφ από το δρόμο. 1517 01:18:26,306 --> 01:18:27,556 Γεια σας. 1518 01:18:27,556 --> 01:18:37,910 1519 01:18:37,910 --> 01:18:38,630 Δοκιμή, τη δοκιμή. 1520 01:18:38,630 --> 01:18:39,630 Dan, είναι ότι η καλή; 1521 01:18:39,630 --> 01:18:40,880 Cool. 1522 01:18:40,880 --> 01:18:44,460 1523 01:18:44,460 --> 01:18:47,600 >> Έτσι, το βίντεο θα αναρτηθεί σε απευθείας σύνδεση για εκείνους που 1524 01:18:47,600 --> 01:18:48,850 Πρέπει να φύγω τώρα. 1525 01:18:48,850 --> 01:18:51,350 1526 01:18:51,350 --> 01:18:52,600 Awkward. 1527 01:18:52,600 --> 01:18:56,300 1528 01:18:56,300 --> 01:18:57,510 OK. 1529 01:18:57,510 --> 01:18:59,730 Έτσι, η κριτική κουίζ. 1530 01:18:59,730 --> 01:19:00,980 Αυτή είναι μια γάτα. 1531 01:19:00,980 --> 01:19:03,150 1532 01:19:03,150 --> 01:19:07,170 Τώρα, JavaScript, τα οποία δεν είναι ίσως ως aww για κάποιους από εσάς παιδιά. 1533 01:19:07,170 --> 01:19:07,370 OK. 1534 01:19:07,370 --> 01:19:09,280 Έτσι, αυτή είναι η πρώτη, ανάκληση από τους Zamyla. 1535 01:19:09,280 --> 01:19:11,270 Να θυμάστε ότι η PHP είναι εκτελούνται στο διακομιστή. 1536 01:19:11,270 --> 01:19:15,230 Και πολλές φορές, εσείς έγραψε βρόχους στην PHP να εκτυπώσετε HTML, έτσι δεν είναι; 1537 01:19:15,230 --> 01:19:19,170 Έτσι, τη στιγμή που ο κώδικας αυτός εκτελεί, ότι HTML εξόδου που θα εκτυπώσετε 1538 01:19:19,170 --> 01:19:20,500 παίρνει αποστέλλεται στο χρήστη. 1539 01:19:20,500 --> 01:19:25,960 Και όταν αυτό συμβεί, όχι περισσότερο PHP μπορεί να να τρέξει, αν δεν κάνετε ανανέωση της σελίδας, των 1540 01:19:25,960 --> 01:19:27,660 Φυσικά, η οποία reexecutes την PHP. 1541 01:19:27,660 --> 01:19:30,080 Αλλά τη στιγμή που θα εκτυπώσετε αυτό το HTML, δεν μπορείς να πας πουθενά. 1542 01:19:30,080 --> 01:19:33,580 >> Έτσι ώστε HTML στέλνεται πάνω στο χρήστη, το οποίο είναι το πρόγραμμα περιήγησης εδώ, όπου 1543 01:19:33,580 --> 01:19:35,470 Milo χρησιμοποιεί τον υπολογιστή. 1544 01:19:35,470 --> 01:19:40,340 Και τόσο καλά, υπάρχουν πολλά πράγματα τη στιγμή που στέλνουμε HTML στον χρήστη. 1545 01:19:40,340 --> 01:19:43,350 Μερικές φορές θέλουμε να κάνουμε κάτι σαν όταν κάνετε κλικ πάνω σε κάτι, θέλουμε 1546 01:19:43,350 --> 01:19:47,350 κουτιά συναγερμού για να αναδυθεί, αυτά τα είδη των αλληλεπιδράσεις, όπως όταν πατάτε το πλήκτρο 1547 01:19:47,350 --> 01:19:50,740 κλειδί, όταν κάνετε κλικ σε κάτι το σελίδα, θέλω κάτι να συμβεί. 1548 01:19:50,740 --> 01:19:54,550 Λοιπόν, δεν μπορείτε να επιτρέπει την επανεκτέλεση PHP κώδικα μόλις οριστεί η HTML. 1549 01:19:54,550 --> 01:19:55,900 Λοιπόν, πώς το κάνεις αυτό; 1550 01:19:55,900 --> 01:19:59,930 >> Έχουμε εισαγάγει μια νέα γλώσσα που ονομάζεται JavaScript, που λειτουργεί στο πρόγραμμα περιήγησης 1551 01:19:59,930 --> 01:20:02,890 που σας επιτρέπει να κάνετε πράγματα σε HTML αφού λάβετε 1552 01:20:02,890 --> 01:20:04,020 από το διακομιστή. 1553 01:20:04,020 --> 01:20:07,050 Και αυτός είναι ο λόγος που το ένα client-side κλήση γλώσσα προγραμματισμού. 1554 01:20:07,050 --> 01:20:09,110 Λειτουργεί στον υπολογιστή σας - 1555 01:20:09,110 --> 01:20:11,400 ο πελάτης. 1556 01:20:11,400 --> 01:20:13,830 Οποιεσδήποτε ερωτήσεις σχετικά με αυτό το μέτρο; 1557 01:20:13,830 --> 01:20:15,650 Αυτό παράδειγμα νόημα για τους ανθρώπους; 1558 01:20:15,650 --> 01:20:16,010 OK. 1559 01:20:16,010 --> 01:20:16,790 Καλή. 1560 01:20:16,790 --> 01:20:17,340 Εντάξει. 1561 01:20:17,340 --> 01:20:20,850 Έτσι, το πρώτο πράγμα που πρέπει να σημειωθεί Είναι JavaScript δεν είναι η PHP. 1562 01:20:20,850 --> 01:20:23,010 >> Έχουν κάποια διαφορετική σύνταξη, την οποία θα πάμε σε. 1563 01:20:23,010 --> 01:20:24,530 Και έχουν πολύ διαφορετικές χρήσεις. 1564 01:20:24,530 --> 01:20:26,640 JavaScript, και πάλι, για σας πρόγραμμα περιήγησης, για τον πελάτη. 1565 01:20:26,640 --> 01:20:30,640 Διακομιστής τρέχει κάπου σε κάποιον άλλο υπολογιστή που στέλνει πληροφορίες 1566 01:20:30,640 --> 01:20:31,720 σε εσάς, σωστά; 1567 01:20:31,720 --> 01:20:36,730 Έτσι, αν σας ζητήσω να γράψετε κώδικα PHP σε μια ερώτηση εξετάσεις, δεν γράφουν 1568 01:20:36,730 --> 01:20:38,710 JavaScript και αντιστρόφως. 1569 01:20:38,710 --> 01:20:41,710 Θα χάσετε μόνο σημεία, και δεν θα ήταν σωστό. 1570 01:20:41,710 --> 01:20:43,690 >> Οπότε ας μπει σε κάποια διαφορές σύνταξη - 1571 01:20:43,690 --> 01:20:46,140 JavaScript στο αριστερό PHP και στα δεξιά. 1572 01:20:46,140 --> 01:20:48,670 Το πρώτο πράγμα που θα παρατηρήσετε με JavaScript, δηλώνουμε μεταβλητές με 1573 01:20:48,670 --> 01:20:49,440 η λέξη-κλειδί var - 1574 01:20:49,440 --> 01:20:53,590 V-Α-Κ. PHP χρησιμοποιείται το σύμβολο του δολαρίου, όπως Zamyla συζητήθηκε νωρίτερα. 1575 01:20:53,590 --> 01:20:57,570 Αν θέλετε να κηρύξει συνειρμική πίνακα, βλέπουμε το συντακτικό για 1576 01:20:57,570 --> 01:20:59,030 η δεξιά πλευρά με την PHP. 1577 01:20:59,030 --> 01:21:01,630 Στην αριστερή πλευρά, αντί χρησιμοποιείτε άγκιστρα. 1578 01:21:01,630 --> 01:21:03,280 Και στη συνέχεια τα κλειδιά σας στο αριστερό. 1579 01:21:03,280 --> 01:21:04,670 Στη συνέχεια, έχετε ένα κόλον. 1580 01:21:04,670 --> 01:21:06,560 Και τότε θα έχουν τις τιμές που θέλετε. 1581 01:21:06,560 --> 01:21:09,840 >> Έτσι, αυτό είναι το πώς θα το κάνουμε σε PHP στη δεξιά πλευρά με την εν λόγω δεύτερη 1582 01:21:09,840 --> 01:21:10,955 γραμμή που ξεκινά στο Μύλο. 1583 01:21:10,955 --> 01:21:14,540 Και αυτό είναι το πώς θα το κάνουμε με το αριστερή πλευρά σε JavaScript εάν θέλετε 1584 01:21:14,540 --> 01:21:16,110 αυτό που λέμε ένα αντικείμενο. 1585 01:21:16,110 --> 01:21:19,340 Και αντικείμενα JavaScript είναι μόνο συνειρμική συστοιχίες. 1586 01:21:19,340 --> 01:21:23,710 Έτσι, εάν θέλετε να έχετε πρόσβαση τομείς, PHP που χρησιμοποιείτε αυτήν τη σύνταξη βραχίονα. 1587 01:21:23,710 --> 01:21:27,170 Και με αυτόν τον τρόπο, μπορείτε να εκχωρήσετε εκ νέου αυτό το πεδίο ιδιοκτήτη να Lauren. 1588 01:21:27,170 --> 01:21:30,150 >> Λοιπόν, σε JavaScript, αν κάποιος θέλει να πρόσβαση σε ένα πεδίο και να το αλλάξετε, μπορείτε να 1589 01:21:30,150 --> 01:21:31,370 χρησιμοποιήστε τη σύνταξη τελεία. 1590 01:21:31,370 --> 01:21:33,860 Μπορείτε επίσης να χρησιμοποιήσετε τη σύνταξη βραχίονα. 1591 01:21:33,860 --> 01:21:35,550 Αλλά δεν μπορείτε να χρησιμοποιήσετε το σύνταξη τελεία σε PHP. 1592 01:21:35,550 --> 01:21:36,525 Αυτό δεν θα λειτουργήσει. 1593 01:21:36,525 --> 01:21:38,910 Λειτουργεί μόνο σε PHP. 1594 01:21:38,910 --> 01:21:42,060 Και τέλος, για την εκτύπωση της κονσόλα, μπορείτε να χρησιμοποιήσετε console.log, η οποία 1595 01:21:42,060 --> 01:21:43,720 εσείς χρησιμοποιείτε πολύ σε pset8. 1596 01:21:43,720 --> 01:21:45,260 Μπορείτε να console.log αυτό. 1597 01:21:45,260 --> 01:21:50,030 >> Αν θέλετε να εκτυπώσετε σε μια σειρά PHP, θα πρέπει να χρησιμοποιήσετε εκτύπωσης r. 1598 01:21:50,030 --> 01:21:53,240 Και στη δεξιά πλευρά, βλέπετε i hash αλφαριθμητικό εκεί. 1599 01:21:53,240 --> 01:21:54,070 Κάποιος ρώτησε νωρίτερα. 1600 01:21:54,070 --> 01:21:55,850 Χρησιμοποιώ ένα συν σε JavaScript. 1601 01:21:55,850 --> 01:21:59,800 Αν θέλω να ενώσετε κάτι σε PHP, μπορώ να χρησιμοποιήσω την τελεία. 1602 01:21:59,800 --> 01:22:00,800 Αυτά είναι διαφορετικά. 1603 01:22:00,800 --> 01:22:03,420 Αν γράφετε κώδικα PHP, δεν χρησιμοποιούν πλέον. 1604 01:22:03,420 --> 01:22:06,810 Αν είστε γραπτώς JavaScript κώδικα, δεν γράφουν μια τελεία. 1605 01:22:06,810 --> 01:22:08,230 Θα είναι λάθος. 1606 01:22:08,230 --> 01:22:09,640 Και θα είναι θλιβερή. 1607 01:22:09,640 --> 01:22:11,000 >> Έτσι σύνταξη διαφορές. 1608 01:22:11,000 --> 01:22:14,710 Γνωρίστε τη σύνταξη σας, γιατί αν πρέπει να συντάξει μια ερώτηση και θα χρησιμοποιούν τη σύνταξη 1609 01:22:14,710 --> 01:22:16,890 από λάθος γλώσσα, δεν θα λειτουργήσει. 1610 01:22:16,890 --> 01:22:19,520 Και θα είναι λάθος. 1611 01:22:19,520 --> 01:22:22,420 Ας μιλήσουμε για κάποια ελέγχου ροής διαφορές, τον τρόπο που χρησιμοποιείτε 1612 01:22:22,420 --> 01:22:24,040 βρόχους σε καθεμία από αυτές. 1613 01:22:24,040 --> 01:22:26,610 Zamyla πήγε πάνω από την δεξιά πλευρά. 1614 01:22:26,610 --> 01:22:27,780 Stuff στη δεξιά πλευρά πρέπει να είναι εξοικειωμένοι. 1615 01:22:27,780 --> 01:22:29,670 Ας δούμε στην αριστερή πλευρά. 1616 01:22:29,670 --> 01:22:34,830 >> Όταν χρησιμοποιείτε για ν βρόχο JavaScript, μεταβλητή βρόχου σας, var i εκεί, 1617 01:22:34,830 --> 01:22:37,210 βρόχος πάνω από τα πλήκτρα της συστοιχίας. 1618 01:22:37,210 --> 01:22:39,150 Έτσι, θα δείτε το όνομα, το σπίτι, και το ρόλο. 1619 01:22:39,150 --> 01:22:42,440 Αν έχω console.log i, παίρνω το όνομα, το σπίτι, και το ρόλο. 1620 01:22:42,440 --> 01:22:44,720 Αυτά είναι τα κλειδιά. 1621 01:22:44,720 --> 01:22:50,080 Στο JavaScript, ένας βρόχος foreach πηγαίνει πάνω από τις τιμές της παρούσας διάταξης. 1622 01:22:50,080 --> 01:22:52,040 Έτσι, θα παρατηρήσετε ότι είστε και οι δύο i. 1623 01:22:52,040 --> 01:22:56,000 Αλλά εδώ από την πλευρά της PHP, εκτυπώνει από Milo, CS50, και μασκότ. 1624 01:22:56,000 --> 01:22:57,390 Αυτοί είναι οι τιμές στην PHP. 1625 01:22:57,390 --> 01:23:00,180 >> Έτσι, αυτά είναι πώς αυτά τα δύο είναι διαφορετικά στις διάφορες γλώσσες. 1626 01:23:00,180 --> 01:23:02,970 Έτσι, εάν είστε χρησιμοποιώντας ένα foreach βρόχο, μην υποθέσετε ότι 1627 01:23:02,970 --> 01:23:03,760 σας δίνει τα κλειδιά. 1628 01:23:03,760 --> 01:23:08,010 Και αν χρησιμοποιείτε μια για ν βρόχου, δεν υποθέσουμε ότι σας δίνει τις τιμές. 1629 01:23:08,010 --> 01:23:10,420 Μήπως αυτό έχει νόημα μέχρι στιγμής; 1630 01:23:10,420 --> 01:23:13,630 Η επόμενη διαφάνεια πρόκειται να σας δείξω πώς μπορείτε να αποκτήσετε πρόσβαση στο αντίθετο 1631 01:23:13,630 --> 01:23:15,160 καθένα από αυτά. 1632 01:23:15,160 --> 01:23:18,550 >> Λοιπόν, αν έχετε το κλειδί JavaScript και θέλετε την τιμή έξω, 1633 01:23:18,550 --> 01:23:20,440 απλά δείκτη σε η συστοιχία με αυτό. 1634 01:23:20,440 --> 01:23:23,640 Έτσι Milo του i θα πάρει ό, τι θέλετε - τις τιμές. 1635 01:23:23,640 --> 01:23:25,260 Υπάρχει αυτή η διαφορετική σύνταξη σε PHP. 1636 01:23:25,260 --> 01:23:28,140 Αν θέλετε πραγματικά να το ξέρετε, εγώ δεν κάνω νομίζω ότι έχουμε το έδειξε σε σας ακόμα. 1637 01:23:28,140 --> 01:23:31,740 Αλλά αν σας ενδιαφέρει, μπορείτε να χρησιμοποιήσετε αυτή η πρόσθετη σύνταξη στα δεξιά 1638 01:23:31,740 --> 01:23:35,130 πλευρά που πραγματικά θα σας αφήσει να πάρετε το κλειδιά σε PHP όταν χρησιμοποιείτε ένα 1639 01:23:35,130 --> 01:23:35,880 βρόχο foreach. 1640 01:23:35,880 --> 01:23:39,640 Έτσι, μόνο ένα μικρό κομμάτι του trivia αν σας ενδιαφέρει. 1641 01:23:39,640 --> 01:23:42,630 >> Έτσι, αυτό είναι μόνο για να καταδειχθεί η διαφορές μεταξύ αυτών των δύο βρόχους. 1642 01:23:42,630 --> 01:23:47,060 Μην τα συγχέουμε όταν είστε προγραμματισμό μια ερώτηση. 1643 01:23:47,060 --> 01:23:49,774 Οποιεσδήποτε ερωτήσεις σχετικά με αυτό. 1644 01:23:49,774 --> 01:23:50,770 Cool. 1645 01:23:50,770 --> 01:23:51,310 Εντάξει. 1646 01:23:51,310 --> 01:23:52,250 JavaScript αντικείμενα. 1647 01:23:52,250 --> 01:23:53,040 Μίλησα γι 'αυτούς. 1648 01:23:53,040 --> 01:23:54,650 Είναι σαν συνειρμική συστοιχίες. 1649 01:23:54,650 --> 01:23:57,730 Το ένα πράγμα που θα ήθελα να σημειώσετε εδώ είναι ότι μια τιμή σε μια συσχετιστική 1650 01:23:57,730 --> 01:23:59,540 array μπορεί να είναι οτιδήποτε σε JavaScript. 1651 01:23:59,540 --> 01:24:02,240 >> Μπορεί ακόμη να είναι μια συνάρτηση, όπως εκεί. 1652 01:24:02,240 --> 01:24:04,600 Έχω μια λειτουργία που είναι μια τιμή ενός κλειδιού. 1653 01:24:04,600 --> 01:24:07,030 Και αν θέλετε να καλέσετε τη λειτουργία αυτή, Απλά μεταβείτε φλοιό. 1654 01:24:07,030 --> 01:24:08,490 Και τότε έβαλα τα παρενθέσεις μετά από αυτό. 1655 01:24:08,490 --> 01:24:09,790 Και αυτό λειτουργεί. 1656 01:24:09,790 --> 01:24:15,570 Υπάρχουν ερωτήσεις; 1657 01:24:15,570 --> 01:24:16,370 Όχι; 1658 01:24:16,370 --> 01:24:16,650 OK. 1659 01:24:16,650 --> 01:24:18,190 Καλή. 1660 01:24:18,190 --> 01:24:20,130 JavaScript, όπως η PHP, είναι χαλαρά πληκτρολογήσει. 1661 01:24:20,130 --> 01:24:20,970 Τι σημαίνει αυτό; 1662 01:24:20,970 --> 01:24:22,380 >> Θα έχει τους τύπους. 1663 01:24:22,380 --> 01:24:24,800 Αλλά όταν δηλώνετε μια JavaScript μεταβλητή, λέτε var i. 1664 01:24:24,800 --> 01:24:25,850 Δεν το λένε. 1665 01:24:25,850 --> 01:24:26,460 Αυτό δεν είναι ένα πράγμα. 1666 01:24:26,460 --> 01:24:28,000 Μπορείτε απλώς να πω ότι είναι μια μεταβλητή. 1667 01:24:28,000 --> 01:24:31,590 Και έπειτα το JavaScript θα χειριστεί το τύποι κάτω από την κουκούλα για εσάς. 1668 01:24:31,590 --> 01:24:34,390 Μπορούμε να το μετατρέπουν ελεύθερα μεταξύ τύπους εξαιτίας αυτού. 1669 01:24:34,390 --> 01:24:37,360 Γι 'αυτό και ξεκινά ως μια σειρά στην περίπτωση αυτή. 1670 01:24:37,360 --> 01:24:38,790 Και τότε έχω ένα string. 1671 01:24:38,790 --> 01:24:39,710 Και εγώ μπορώ να προσθέσω σε αυτό. 1672 01:24:39,710 --> 01:24:41,810 Και το επανεκχώρηση πίσω στο i. 1673 01:24:41,810 --> 01:24:43,640 >> Έτσι, σε αυτή την πρώτη γραμμή, i είναι ο αριθμός. 1674 01:24:43,640 --> 01:24:47,310 Στη δεύτερη γραμμή, i γίνεται τώρα μια συμβολοσειρά μετά να κάνω την αλλαγή. 1675 01:24:47,310 --> 01:24:52,820 Και εδώ, είμαι απλώς να συνενώσει ότι ο αριθμός πάνω στο κορδόνι. 1676 01:24:52,820 --> 01:24:56,210 Έτσι μπορείτε να δείτε ότι ακόμα κι αν ήταν ένα ακέραιος στο πρώτο μέρος, αυτό είναι το είδος 1677 01:24:56,210 --> 01:24:58,500 σαν να μετατραπεί σε ένα χορδών και, στη συνέχεια, προστίθενται 1678 01:24:58,500 --> 01:25:00,510 σε αυτή τη χορδή γεια. 1679 01:25:00,510 --> 01:25:02,340 Και αυτό είναι ό, τι εννοώ από το χαλαρό πληκτρολόγηση. 1680 01:25:02,340 --> 01:25:04,760 Αυτό είναι που θα μετατρέψει μεταξύ τύποι πολύ εύκολα. 1681 01:25:04,760 --> 01:25:08,840 Και δεν ρίξει τις προειδοποιήσεις σε θέλατε C κάνει. 1682 01:25:08,840 --> 01:25:12,420 >> Γι 'αυτό και τώρα περιέχει γεια 123 με την σειρά. 1683 01:25:12,420 --> 01:25:13,270 Επόμενο. 1684 01:25:13,270 --> 01:25:15,610 Μπορούμε επίσης ελεύθερα να συγκρίνετε μεταξύ των τύπων. 1685 01:25:15,610 --> 01:25:19,310 Έτσι, αν χρησιμοποιείτε ακριβώς ==, πολύ όπως σε PHP, JavaScript 1686 01:25:19,310 --> 01:25:20,480 κάνει ένα παρόμοιο πράγμα. 1687 01:25:20,480 --> 01:25:24,780 Η χορδή 123 είναι η ίδια με τον αριθμό 123 όταν χρησιμοποιείτε διπλά ίσων. 1688 01:25:24,780 --> 01:25:27,820 Όταν χρησιμοποιείται τριπλή ίσων, επίσης θέλει να βεβαιωθείτε ότι 1689 01:25:27,820 --> 01:25:29,240 ο τύπος είναι η ίδια. 1690 01:25:29,240 --> 01:25:31,960 Έτσι, γιατί αυτό είναι μια σειρά και αυτό είναι ένας αριθμός, έστω και αν είναι και οι δύο 1691 01:25:31,960 --> 01:25:35,280 123, όταν χρησιμοποιείτε το τριπλό ισούται, μπορείτε να πάρετε ψευδείς. 1692 01:25:35,280 --> 01:25:39,330 Στο διπλό ισούται με την περίπτωση, μπορείτε να πάρετε αλήθεια, επειδή διπλό ίσων δεν 1693 01:25:39,330 --> 01:25:40,020 νοιάζονται για το είδος. 1694 01:25:40,020 --> 01:25:42,500 Triple ίσων δεν ενδιαφέρεται για το είδος. 1695 01:25:42,500 --> 01:25:43,750 Ερωτήσεις; 1696 01:25:43,750 --> 01:25:45,790 1697 01:25:45,790 --> 01:25:48,390 OK. 1698 01:25:48,390 --> 01:25:52,870 >> Και ένα άλλο πράγμα για JavaScript είναι το πεδίο εφαρμογής είναι το είδος της παγκόσμιας εκτός αν είστε 1699 01:25:52,870 --> 01:25:53,460 σε μια λειτουργία. 1700 01:25:53,460 --> 01:25:55,660 Και λειτουργεί το ίδιο τρόπο σε PHP πραγματικότητα. 1701 01:25:55,660 --> 01:25:57,500 Οπότε ας πάμε μέσα από αυτό το παράδειγμα. 1702 01:25:57,500 --> 01:25:59,110 I i με 999. 1703 01:25:59,110 --> 01:26:00,900 Και στη συνέχεια να πάω σε αυτό για βρόχο. 1704 01:26:00,900 --> 01:26:06,110 Έτσι, αν είμαι εκτύπωση i έξω σ 'αυτό για βρόχο, περιμένω 0, 1, 2, 3, 4. 1705 01:26:06,110 --> 01:26:07,390 Έχω να i = 4. 1706 01:26:07,390 --> 01:26:10,770 Είναι προσαυξήσεις i τώρα σε 5 το τέλος του βρόχου for. 1707 01:26:10,770 --> 01:26:13,300 Και τότε θα ξεσπάσει από το βρόχο, διότι δεν πληρούν τις 1708 01:26:13,300 --> 01:26:14,550 εξαρτηθεί πια. 1709 01:26:14,550 --> 01:26:16,650 >> Τι νομίζετε ότι το επόμενο console.log εκτυπώνει; 1710 01:26:16,650 --> 01:26:20,570 1711 01:26:20,570 --> 01:26:24,790 Έτσι, αυτό είναι που θα κάνει η C. Στην C, γιατί αν έχετε σαν var i έξω 1712 01:26:24,790 --> 01:26:28,855 και έχετε var i μέσα σε ένα βρόχο, σαν ένα για βρόχο, τότε καθιστά τέτοια ώστε 1713 01:26:28,855 --> 01:26:30,690 είναι scoped ότι οι δύο i είναι διαφορετικές. 1714 01:26:30,690 --> 01:26:34,630 Στο JavaScript, αυτό θα είναι ακριβώς αντιμετωπίζουν ως το ίδιο i. 1715 01:26:34,630 --> 01:26:37,870 Παίρνω 5, διότι αυτή ήταν η αξία αφού εξέλθει από το βρόχο. 1716 01:26:37,870 --> 01:26:39,120 Έτσι, αυτά τα i είναι το ίδιο i. 1717 01:26:39,120 --> 01:26:42,620 1718 01:26:42,620 --> 01:26:44,130 Μήπως αυτό έχει νόημα; 1719 01:26:44,130 --> 01:26:45,720 >> Λοιπόν, είναι λογικό, από μια άποψη JavaScript. 1720 01:26:45,720 --> 01:26:49,510 Αλλά το ίδιο πρότυπο δεν μεταφέρουν στο C. Έχουν 1721 01:26:49,510 --> 01:26:50,310 διαφορετικούς κανόνες οριοθέτησης. 1722 01:26:50,310 --> 01:26:50,630 Ναι. 1723 01:26:50,630 --> 01:26:52,566 >> ΚΟΙΝΟ: [δεν ακούγεται] 1724 01:26:52,566 --> 01:26:54,990 έξω από τη συνάρτηση [δεν ακούγεται]; 1725 01:26:54,990 --> 01:26:58,340 >> JOSEPH ONG: Έτσι, εκτός της οποίας η λειτουργία; 1726 01:26:58,340 --> 01:27:00,810 Γι 'αυτό θα φτάσουμε σε αυτό σε μόλις ένα δευτερόλεπτο. 1727 01:27:00,810 --> 01:27:02,580 Έτσι καλούμε foo (i). 1728 01:27:02,580 --> 01:27:06,920 Αυτό περνά i σε foo, προσαυξήσεις , και στη συνέχεια καταγράφει. 1729 01:27:06,920 --> 01:27:07,750 Γι 'αυτό ήταν 5. 1730 01:27:07,750 --> 01:27:09,210 Έτσι γίνεται 6. 1731 01:27:09,210 --> 01:27:11,670 Αλλά τι μιλάω είναι ότι εγώ σε αυτή τη λειτουργία. 1732 01:27:11,670 --> 01:27:14,430 Επειδή είναι μια παράμετρος, είναι scoped για αυτή τη λειτουργία. 1733 01:27:14,430 --> 01:27:17,800 Έτσι, τη στιγμή που στην πραγματικότητα να βγούμε από αυτό λειτουργία, είναι τώρα πρόκειται να πάει 1734 01:27:17,800 --> 01:27:19,860 πίσω στην παλιά i. 1735 01:27:19,860 --> 01:27:23,000 Αυτό θ μόνο επειδή scoped ότι βρίσκεται σε λειτουργία. 1736 01:27:23,000 --> 01:27:24,200 Και έχουμε το πεδίο εφαρμογής και τις λειτουργίες. 1737 01:27:24,200 --> 01:27:29,080 Αλλά δεν έχουμε εκτός του πεδίου εφαρμογής των λειτουργιών σε JavaScript. 1738 01:27:29,080 --> 01:27:31,170 Μήπως αυτό έχει νόημα; 1739 01:27:31,170 --> 01:27:31,320 Ναι. 1740 01:27:31,320 --> 01:27:31,660 Ερώτηση. 1741 01:27:31,660 --> 01:27:34,030 >> ΚΟΙΝΟ: Same [δεν ακούγεται]; 1742 01:27:34,030 --> 01:27:34,500 >> JOSEPH ONG: Οπότε ναι. 1743 01:27:34,500 --> 01:27:36,260 Στην PHP, είναι το ίδιο είδος του πράγματος. 1744 01:27:36,260 --> 01:27:37,680 Υπάρχει μια μικρή λεπτότητα πραγματικότητα. 1745 01:27:37,680 --> 01:27:40,130 Αλλά μπορείτε να με ρωτήσετε για ότι μετά την αναθεώρηση. 1746 01:27:40,130 --> 01:27:43,930 Μπορείτε πραγματικά δεν χρειάζεται να γνωρίζετε η λεπτότητα του κουίζ. 1747 01:27:43,930 --> 01:27:47,600 Για όλες τις προθέσεις και τους σκοπούς, όπως μεταβλητές, παγκόσμια και PHP, εκτός 1748 01:27:47,600 --> 01:27:49,150 είναι σε μια λειτουργία, το ίδιο πράγμα το JavaScript. 1749 01:27:49,150 --> 01:27:49,480 Ναι. 1750 01:27:49,480 --> 01:27:52,890 >> ΚΟΙΝΟ: Γιατί είναι αυτό επέτρεψε στην JavaScript και δεν πού αλλού; 1751 01:27:52,890 --> 01:27:55,010 >> JOSEPH ONG: Γιατί λοιπόν επιτρέπεται σε JavaScript και όχι σε C; 1752 01:27:55,010 --> 01:27:58,180 Είναι απλά όποιος ήρθε με JavaScript αποφάσισε ότι αυτό ήταν εντάξει σε 1753 01:27:58,180 --> 01:27:59,510 JavaScript. 1754 01:27:59,510 --> 01:28:02,430 Έτσι είναι ακριβώς όπως μια γλώσσα προγραμματισμού σύμβασης, όπως θα λέγαμε. 1755 01:28:02,430 --> 01:28:02,580 Ναι. 1756 01:28:02,580 --> 01:28:04,480 >> ΚΟΙΝΟ: Γιατί, λοιπόν, να πάει 6-5; 1757 01:28:04,480 --> 01:28:08,280 >> JOSEPH ONG: Γι 'αυτό πήγε 6-5, γιατί όταν πέρασα εγώ σε foo, ότι 1758 01:28:08,280 --> 01:28:13,420 i εσωτερικό του foo τώρα ως πεδίο foo, επειδή το πεδίο εφαρμογής υπάρχει σε λειτουργίες 1759 01:28:13,420 --> 01:28:15,050 JavaScript. 1760 01:28:15,050 --> 01:28:18,720 Αλλά μόλις βγω από εδώ, γιατί έχει ως πεδίο στη λειτουργία, είμαι απλά 1761 01:28:18,720 --> 01:28:24,300 χρησιμοποιώντας την τακτική i που ήταν μέσα το υπόλοιπο του ελέγχου ροής. 1762 01:28:24,300 --> 01:28:25,210 Νόημα; 1763 01:28:25,210 --> 01:28:26,910 Μπορώ να προχωρήσουμε; 1764 01:28:26,910 --> 01:28:27,320 Εντάξει. 1765 01:28:27,320 --> 01:28:29,180 Cool. 1766 01:28:29,180 --> 01:28:31,890 >> Η αποδοχή αυτή είναι αντικείμενα περνιούνται με αναφορά. 1767 01:28:31,890 --> 01:28:33,990 Ξέρετε πώς όταν περνάτε μια σειρά σε C θα μπορούσε 1768 01:28:33,990 --> 01:28:35,810 στην πραγματικότητα να τροποποιήσει τον πίνακα; 1769 01:28:35,810 --> 01:28:37,350 Είναι το ίδιο πράγμα σε JavaScript. 1770 01:28:37,350 --> 01:28:42,960 Αν έχω περάσει ένα αντικείμενο, σε αυτή την περίπτωση, Milo πέρασε σε αυτή τη λειτουργία catify. 1771 01:28:42,960 --> 01:28:44,490 Milo ξεκινά. 1772 01:28:44,490 --> 01:28:46,310 Το όνομά του είναι Milo Μπανάνα. 1773 01:28:46,310 --> 01:28:51,670 Έχω περάσει αυτό το αντικείμενο σε μια συνάρτηση γιατί είναι ένα αντικείμενο, μια συνειρμική 1774 01:28:51,670 --> 01:28:53,730 συστοιχία σε JavaScript. 1775 01:28:53,730 --> 01:28:57,110 >> Όταν εκτελείτε μια λειτουργία σε αυτή τη λειτουργία, θα 1776 01:28:57,110 --> 01:28:58,560 πραγματικά αλλάξει το αντικείμενο. 1777 01:28:58,560 --> 01:29:01,720 Έτσι, αυτό θα συμβεί μόνο για τα αντικείμενα σε JavaScript, όπως ακριβώς συμβαίνει 1778 01:29:01,720 --> 01:29:09,230 για συστοιχίες εσωτερικό του ονόματος C. Έτσι Μάιλο πραγματικά θα γίνει γάτα τώρα. 1779 01:29:09,230 --> 01:29:10,090 Μήπως αυτό έχει νόημα; 1780 01:29:10,090 --> 01:29:11,840 Έτσι, αυτό λειτουργεί μόνο για τα αντικείμενα. 1781 01:29:11,840 --> 01:29:13,090 Τα αντικείμενα που ψηφίστηκε από αναφορά. 1782 01:29:13,090 --> 01:29:13,400 Ναι. 1783 01:29:13,400 --> 01:29:16,850 >> ΚΟΙΝΟ: Δηλαδή λέτε ότι σε αντίθεση με την μεταβλητή i. 1784 01:29:16,850 --> 01:29:17,240 >> JOSEPH ONG: Ναι. 1785 01:29:17,240 --> 01:29:20,330 Ποια μεταβλητή i was just ένας αριθμός, σωστά; 1786 01:29:20,330 --> 01:29:25,280 Είναι όπως στο C όταν περνάτε μια ακέραιο a, κάνει ένα αντίγραφο. 1787 01:29:25,280 --> 01:29:28,130 Και όταν περάσει μια σειρά, στην πραγματικότητα αλλάζει την πραγματική σειρά σε 1788 01:29:28,130 --> 01:29:32,870 Γ. Το ίδιο συμβαίνει και με JavaScript σε αυτή την περίπτωση. 1789 01:29:32,870 --> 01:29:34,070 Εντάξει. 1790 01:29:34,070 --> 01:29:38,134 Και την επόμενη, Milo είναι λυπηρό γιατί αυτός είναι τώρα μια γάτα. 1791 01:29:38,134 --> 01:29:40,790 1792 01:29:40,790 --> 01:29:45,060 Αυτό ήταν πραγματικά Milo μετά κάποια ταξίδι στον κτηνίατρο. 1793 01:29:45,060 --> 01:29:46,860 >> Επομένως, πώς θα χρησιμοποιήσουμε JavaScript σε μια ιστοσελίδα; 1794 01:29:46,860 --> 01:29:47,790 Μπορούμε να το συμπεριλάβουμε. 1795 01:29:47,790 --> 01:29:50,090 Αυτό είναι HTML κώδικα με τις ετικέτες ταινία. 1796 01:29:50,090 --> 01:29:51,300 Γι 'αυτό και έχουν ετικέτες ταινία εκεί. 1797 01:29:51,300 --> 01:29:54,820 Και μετά έβαλα κάποια JavaScript Κωδικός εντός των ετικετών σενάριο. 1798 01:29:54,820 --> 01:29:56,390 Και στη συνέχεια εκτελεί αυτό. 1799 01:29:56,390 --> 01:29:58,830 Όταν το κάνετε ακριβώς όπως αυτό, είναι ονομάζεται inline JavaScript. 1800 01:29:58,830 --> 01:30:02,400 Είναι το είδος του βρώμικο, γιατί η JavaScript είναι στην πραγματικότητα στην HTML. 1801 01:30:02,400 --> 01:30:07,010 >> Ένας καλύτερος τρόπος για να γίνει αυτό, πολύ καλύτερο, είναι να γράψετε JavaScript σας σε μια 1802 01:30:07,010 --> 01:30:10,920 εξωτερικό αρχείο και στη συνέχεια να παρέχουν η ετικέτα script με μια πηγή. 1803 01:30:10,920 --> 01:30:14,920 Και αυτό θα πάει σε αυτό το αρχείο JavaScript και να διαβάσετε τον κώδικα JavaScript από 1804 01:30:14,920 --> 01:30:15,960 ότι το αρχείο αντ 'αυτού. 1805 01:30:15,960 --> 01:30:18,820 Και με αυτό τον τρόπο, δεν έχετε πολλά JavaScript στις αρχές του σας 1806 01:30:18,820 --> 01:30:20,760 HTML αρχείο, το οποίο καθιστά πραγματικά βρώμικο. 1807 01:30:20,760 --> 01:30:21,860 Μπορείτε απλά να το βάλετε κάπου αλλού. 1808 01:30:21,860 --> 01:30:24,310 Και τότε θα το διαβάσετε από εκεί. 1809 01:30:24,310 --> 01:30:25,560 Μήπως αυτό έχει νόημα; 1810 01:30:25,560 --> 01:30:27,990 1811 01:30:27,990 --> 01:30:29,640 >> Θέματα τοποθέτησης. 1812 01:30:29,640 --> 01:30:32,620 Σε αυτή τη συγκεκριμένη περίπτωση, η σενάριο είναι πριν από το σώμα. 1813 01:30:32,620 --> 01:30:36,090 Έτσι, όταν εκτελώ ότι, υπάρχει τίποτα στο σώμα ακόμα. 1814 01:30:36,090 --> 01:30:39,920 Ίσως αυτό θα κάνει λίγο πιο αίσθηση όταν δείχνω αυτό το επόμενο μέρος. 1815 01:30:39,920 --> 01:30:43,210 Στην περίπτωση αυτή, το σενάριο έρχεται μετά από το div. 1816 01:30:43,210 --> 01:30:46,620 Έτσι φαίνεται στην πραγματικότητα το div στην πρώτη σελίδα. 1817 01:30:46,620 --> 01:30:49,470 Εδώ σε αυτό το μικρό κόκκινο κύκλο, βλέπετε εμφανίζεται το κείμενο. 1818 01:30:49,470 --> 01:30:51,810 Και τότε η ειδοποίηση εμφανίζεται. 1819 01:30:51,810 --> 01:30:54,890 >> Στην πρώτη περίπτωση, επειδή το σενάριο ήταν πριν από το div, η 1820 01:30:54,890 --> 01:30:56,170 ειδοποίηση εμφανίζεται για πρώτη φορά. 1821 01:30:56,170 --> 01:30:59,250 Και στη συνέχεια το div δείχνει μετά θα απορρίψει το πλαίσιο. 1822 01:30:59,250 --> 01:31:01,330 Έτσι, η εκτέλεση έχει σημασία. 1823 01:31:01,330 --> 01:31:02,290 Γι 'αυτό και θα κρατήσει αυτό κατά νου. 1824 01:31:02,290 --> 01:31:03,640 Αυτό θα είναι σημαντικό σε λίγο. 1825 01:31:03,640 --> 01:31:08,730 1826 01:31:08,730 --> 01:31:09,540 OK. 1827 01:31:09,540 --> 01:31:12,750 Τόσο καλά, πώς μπορείτε να περιμένετε μέχρι το ολόκληρη η σελίδα φορτώνεται, τότε, πριν να 1828 01:31:12,750 --> 01:31:13,580 εκτελέσει κάποιο κωδικό; 1829 01:31:13,580 --> 01:31:15,540 Θα μπει σε αυτό το λίγο λίγο πολύ αργότερα. 1830 01:31:15,540 --> 01:31:19,016 Αλλά απλώς διατηρούν αυτήν την τοποθέτηση θέματα στο μυαλό για το πότε θα 1831 01:31:19,016 --> 01:31:20,570 έρχονται σε μια άλλη διαφάνεια. 1832 01:31:20,570 --> 01:31:22,030 >> Έτσι έχουμε την ευκαιρία να DOM τώρα. 1833 01:31:22,030 --> 01:31:23,550 Και τι είναι DOM; 1834 01:31:23,550 --> 01:31:26,830 Έτσι, αν κοιτάξετε τον κώδικα HTML, είναι ακριβώς ένα μάτσο κειμένου στην οθόνη. 1835 01:31:26,830 --> 01:31:30,560 Έτσι, πώς JavaScript γνωρίζουν ότι αυτό είναι ένα στοιχείο HTML; 1836 01:31:30,560 --> 01:31:33,410 Έτσι πρέπει να έχουμε λίγη μνήμη εκπροσώπηση αυτή 1837 01:31:33,410 --> 01:31:34,930 δομή που έχουμε. 1838 01:31:34,930 --> 01:31:40,240 Και κάθε φορά που έχουμε αυτό στη μνήμη εκπροσώπηση σε JavaScript, καλούμε 1839 01:31:40,240 --> 01:31:41,750 ότι το DOM. 1840 01:31:41,750 --> 01:31:45,130 Και είναι απλά ένας τρόπος που οι άνθρωποι αποφάσισαν ότι θα πρέπει να αντιπροσωπεύει αυτό 1841 01:31:45,130 --> 01:31:46,400 HTML δομή όπως. 1842 01:31:46,400 --> 01:31:47,940 >> Και τι κάνει αυτό το DOM μοιάζει; 1843 01:31:47,940 --> 01:31:50,460 Λοιπόν, στην αναπαράσταση της μνήμης, παίρνουμε αυτό το κείμενο. 1844 01:31:50,460 --> 01:31:52,870 Και θα το μετατρέψει σε μνήμη εκπροσώπηση. 1845 01:31:52,870 --> 01:31:54,400 Έτσι, αυτό είναι το HTML. 1846 01:31:54,400 --> 01:31:58,090 Γι 'αυτό πρώτα να μάθετε ότι κάθε DOM δέντρο έχει ένα έγγραφο. 1847 01:31:58,090 --> 01:31:59,400 Μοιάζει με ένα δέντρο. 1848 01:31:59,400 --> 01:32:03,550 Και το έγγραφο περιέχει την HTML ετικέτα, στην πραγματικότητα τα πάντα 1849 01:32:03,550 --> 01:32:05,150 μέσα σ 'αυτό τώρα. 1850 01:32:05,150 --> 01:32:06,970 Η ετικέτα HTML έχει δύο παιδιά. 1851 01:32:06,970 --> 01:32:08,630 Έχει ένα κεφάλι. 1852 01:32:08,630 --> 01:32:12,380 Αυτό το κεφάλι, αν κοιτάξετε εσοχή εκεί πέρα ​​το πώς είναι δομημένο 1853 01:32:12,380 --> 01:32:14,960 μεταξύ των στενή ετικέτες, κεφάλι έχει ένα παιδί. 1854 01:32:14,960 --> 01:32:17,130 Το παιδί είναι ο τίτλος. 1855 01:32:17,130 --> 01:32:18,370 Ακριβώς. 1856 01:32:18,370 --> 01:32:21,000 >> Τώρα, έχουμε ένα παιδί το σώμα. 1857 01:32:21,000 --> 01:32:24,870 Και στη συνέχεια, ότι το σώμα έχει παιδί που ονομάζεται οικογένεια. 1858 01:32:24,870 --> 01:32:27,950 Και ότι η οικογένεια έχει τρία παιδιά - 1859 01:32:27,950 --> 01:32:29,550 παλαιότερο, μεσαία, και ο νεότερος. 1860 01:32:29,550 --> 01:32:31,960 Έτσι, θα πρέπει να γνωρίζετε πώς να σχεδιάσετε ένα διάγραμμα όπως αυτό, όταν σας ρωτήσω πώς 1861 01:32:31,960 --> 01:32:34,270 να σχεδιάσετε ένα διάγραμμα όταν δίνουμε Σας το HTML στα αριστερά. 1862 01:32:34,270 --> 01:32:36,350 Μάθετε πώς να παράγει το δέντρο DOM. 1863 01:32:36,350 --> 01:32:38,930 Και μέσα από αυτά τα πράγματα, υπάρχει μόνο κάποιο κείμενο, το οποίο έχω εκπροσωπούνται 1864 01:32:38,930 --> 01:32:40,180 όπως μικρά κουτιά. 1865 01:32:40,180 --> 01:32:42,750 1866 01:32:42,750 --> 01:32:47,980 >> Μήπως αυτή η δομή δέντρου DOM κάνει λογική και ποια είναι η DOM είναι; 1867 01:32:47,980 --> 01:32:49,300 Έτσι, τι κάνει στάση το p για; 1868 01:32:49,300 --> 01:32:51,850 Πάνω από εδώ, το p εκεί σε αυτό το tag αντιπροσωπεύει 1869 01:32:51,850 --> 01:32:54,510 παράγραφο ετικέτα στο HTML. 1870 01:32:54,510 --> 01:32:57,080 Έτσι, μπορείτε να το αναζητήσετε. 1871 01:32:57,080 --> 01:32:59,290 Αλλά αυτό σημαίνει απλώς ότι είναι κάποια χώρο για κάποιο κείμενο. 1872 01:32:59,290 --> 01:33:02,910 Και έχει κάποια εξ 'ορισμού CSS styling, επειδή είναι ένα tag παραγράφου. 1873 01:33:02,910 --> 01:33:05,130 Αλλά πραγματικά δεν ανησυχείτε για το μέρος πάρα πολύ. 1874 01:33:05,130 --> 01:33:07,510 Απλά ξέρω ότι είναι ένα σύμβολο κράτησης θέσης για κάποιο κείμενο. 1875 01:33:07,510 --> 01:33:08,480 Ναι. 1876 01:33:08,480 --> 01:33:10,200 Ερώτηση; 1877 01:33:10,200 --> 01:33:11,021 Ναι. 1878 01:33:11,021 --> 01:33:12,374 >> ΚΟΙΝΟ: Είπατε ακριβώς CSS. 1879 01:33:12,374 --> 01:33:15,492 Η οικογένεια και το hash hash όλα αυτά τα πράγματα είναι βασικά 1880 01:33:15,492 --> 01:33:17,400 εκπροσωπούν αναγνωριστικά σε CSS; 1881 01:33:17,400 --> 01:33:18,440 >> JOSEPH ONG: Ναι, ακριβώς. 1882 01:33:18,440 --> 01:33:20,380 Θα πάρω σε ό, τι αυτά τα hashes σημαίνει σε ένα δευτερόλεπτο. 1883 01:33:20,380 --> 01:33:23,480 Όταν η Angela πήγε πάνω από CSS, που μίλησε για CSS επιλογείς. 1884 01:33:23,480 --> 01:33:26,770 Αυτές είναι οι επιλογείς CSS που μιλούσε. 1885 01:33:26,770 --> 01:33:28,268 Ναι, Rob; 1886 01:33:28,268 --> 01:33:32,060 >> ROB BOWDEN: Θα ήθελα να σχολιάσω επίσης ότι DOM εσωτερικό του τίτλου ετικέτας 1887 01:33:32,060 --> 01:33:35,385 Είναι επίσης ένας κόμβος κειμένου. 1888 01:33:35,385 --> 01:33:36,070 >> JOSEPH ONG: Σωστά. 1889 01:33:36,070 --> 01:33:38,370 Έτσι, μέσα στην ετικέτα τίτλου, Έχω κάποια DOM κείμενο. 1890 01:33:38,370 --> 01:33:42,730 Έτσι, πραγματικά, ο τίτλος αυτός θα πρέπει να έχει σαν μικρό κουτί που έρχεται από αυτό επίσης. 1891 01:33:42,730 --> 01:33:45,740 Αλλά δεν πειράζει πραγματικά πάρα πολύ σε αυτή την περίπτωση. 1892 01:33:45,740 --> 01:33:49,620 Εμείς δεν ενδιαφέρονται πραγματικά για κόμβους κειμένου, όπως τους αποκαλούμε, πάρα πολύ. 1893 01:33:49,620 --> 01:33:50,270 Εντάξει, κάνουμε. 1894 01:33:50,270 --> 01:33:51,520 Προφανώς, το κάνουμε. 1895 01:33:51,520 --> 01:33:54,260 1896 01:33:54,260 --> 01:33:57,100 Και θα το διορθώσω ότι όταν Το ανεβάσω ξανά. 1897 01:33:57,100 --> 01:33:59,830 Μήπως αυτό έχει νόημα; 1898 01:33:59,830 --> 01:34:01,160 >> Επομένως, πώς θα συνεργαστεί με το DOM; 1899 01:34:01,160 --> 01:34:03,790 Κάθε φορά που θα ασχοληθεί με το DOM σε JavaScript, υπάρχουν δύο βήματα. 1900 01:34:03,790 --> 01:34:05,030 Μπορείτε να επιλέξετε ένα στοιχείο DOM. 1901 01:34:05,030 --> 01:34:06,580 Και τότε θα κάνουμε τα πράγματα σε αυτό. 1902 01:34:06,580 --> 01:34:11,480 Έτσι, στην περίπτωση αυτή, αφηρημένα, έχω επιλέγεται το μεσαίο στοιχείο. 1903 01:34:11,480 --> 01:34:14,530 Και στη συνέχεια ένα παράδειγμα του να κάνει πράγματα σε αυτό θα πρέπει να αλλάζει το κείμενο. 1904 01:34:14,530 --> 01:34:16,020 Αυτό χρησιμοποιείται για να είναι ο Μπομπ. 1905 01:34:16,020 --> 01:34:19,930 Τώρα, αυτό που έκανα ήταν να άλλαξα Bob να Milo σε αυτή την περίπτωση. 1906 01:34:19,930 --> 01:34:22,130 >> Επομένως, πώς θα το κάνετε πραγματικά αυτό; 1907 01:34:22,130 --> 01:34:23,440 Πώς μπορούμε να κάνουμε την επιλογή; 1908 01:34:23,440 --> 01:34:26,560 Και πώς να κάνουμε τα πράγματα να κάνουμε το πράγμα από τη στιγμή που έχω λάβει; 1909 01:34:26,560 --> 01:34:30,470 Λοιπόν, ο τρόπος που τα παιδιά έχουν μάθει σε αυτή την κατηγορία είναι με τη χρήση κάτι που 1910 01:34:30,470 --> 01:34:32,420 ονομάζεται jQuery. 1911 01:34:32,420 --> 01:34:33,910 Έτσι τι είναι jQuery; 1912 01:34:33,910 --> 01:34:37,220 jQuery είναι μια βιβλιοθήκη που κάνει JavaScript εύκολο να γράψει. 1913 01:34:37,220 --> 01:34:39,500 Έτσι, κάποιος πήρε το χρόνο και έγραψε jQuery. 1914 01:34:39,500 --> 01:34:41,530 >> jQuery είναι γραμμένο στην πραγματικότητα σε JavaScript. 1915 01:34:41,530 --> 01:34:44,550 Και τότε γιατί το έκαναν αυτό, έχουμε τώρα έχουν ένα σωρό λειτουργίες που 1916 01:34:44,550 --> 01:34:46,020 μπορούμε να χρησιμοποιήσουμε που κάνουν μας ζει πραγματικά εύκολο. 1917 01:34:46,020 --> 01:34:48,580 1918 01:34:48,580 --> 01:34:50,030 Έτσι τι είναι μερικά από τα πράγματα που κάνει; 1919 01:34:50,030 --> 01:34:51,650 Κάνει την επιλογή στοιχείων ευκολότερη. 1920 01:34:51,650 --> 01:34:54,020 Κάνει την αλλαγή HTML, προσθέτοντας τάξεις ευκολότερη. 1921 01:34:54,020 --> 01:34:55,360 Κάνει Ajax ευκολότερη. 1922 01:34:55,360 --> 01:34:58,230 Θα φτάσουμε σε αυτό σε ένα δευτερόλεπτο. 1923 01:34:58,230 --> 01:35:00,630 >> Και είναι ανάλογη με C βιβλιοθήκες. 1924 01:35:00,630 --> 01:35:03,090 Έτσι θα περιλαμβάνουν string.h, μπορείτε να strlen. 1925 01:35:03,090 --> 01:35:04,680 Μπορείτε να πάρετε strcpy, όλα αυτά τα πράγματα. 1926 01:35:04,680 --> 01:35:09,650 Όταν περιλαμβάνουν jQuery, μπορείτε να πάρετε ωραία τρόποι για να επιλέξετε τα στοιχεία για την αλλαγή 1927 01:35:09,650 --> 01:35:10,390 πράγματα, κ.λπ.. 1928 01:35:10,390 --> 01:35:12,990 Μπορείτε να πάρετε επιπλέον λειτουργικότητα που JavaScript δεν σας δίνει. 1929 01:35:12,990 --> 01:35:15,310 Έτσι δεν είναι jQuery JavaScript. 1930 01:35:15,310 --> 01:35:18,660 jQuery είναι μια βιβλιοθήκη που είναι γραμμένο σε JavaScript που κάνει JavaScript 1931 01:35:18,660 --> 01:35:20,440 πιο εύκολο να γράψει. 1932 01:35:20,440 --> 01:35:23,170 >> Έτσι jQuery δεν είναι ένας προγραμματισμός γλώσσας. 1933 01:35:23,170 --> 01:35:24,540 Αλλά JavaScript είναι. 1934 01:35:24,540 --> 01:35:27,420 1935 01:35:27,420 --> 01:35:27,590 κάνουν. 1936 01:35:27,590 --> 01:35:30,420 Σίγουρα μπορείτε να πάρετε την ορολογία σας δικαίωμα. 1937 01:35:30,420 --> 01:35:32,490 Οποιεσδήποτε ερωτήσεις; 1938 01:35:32,490 --> 01:35:33,882 Ναι. 1939 01:35:33,882 --> 01:35:35,132 Είναι αυτό μια ερώτηση; 1940 01:35:35,132 --> 01:35:37,910 1941 01:35:37,910 --> 01:35:38,350 Εντάξει. 1942 01:35:38,350 --> 01:35:40,080 Τόσο πώς μπορείτε να χρησιμοποιήσετε το jQuery; 1943 01:35:40,080 --> 01:35:42,390 Λοιπόν, όταν γράφετε κάποια JavaScript κώδικα και θα περιλαμβάνουν 1944 01:35:42,390 --> 01:35:45,570 jQuery στην κορυφή του αρχείου σας ως script του αρχείου, μπορείτε να χρησιμοποιήσετε το σύμβολο του δολαρίου 1945 01:35:45,570 --> 01:35:47,310 τώρα για να αποκτήσετε πρόσβαση σε jQuery. 1946 01:35:47,310 --> 01:35:49,860 Και αυτό είναι διαφορετικό από το σύμβολο του δολαρίου σε PHP. 1947 01:35:49,860 --> 01:35:51,590 >> Είναι το ίδιο σύμβολο που πληκτρολογείτε στο πληκτρολόγιό σας. 1948 01:35:51,590 --> 01:35:52,780 Αλλά σημαίνουν πολύ διαφορετικά πράγματα. 1949 01:35:52,780 --> 01:35:56,090 Σύμβολο του δολαρίου σε PHP σημαίνει αυτό είναι το πώς θα δηλώσετε μια μεταβλητή. 1950 01:35:56,090 --> 01:35:59,120 Στο JavaScript, όταν έχετε συμπεριλάβει jQuery, στέκεται για jQuery. 1951 01:35:59,120 --> 01:36:01,280 Έτσι, έχετε κατά νου ότι. 1952 01:36:01,280 --> 01:36:03,420 Λοιπόν, πώς θα μπορούσαμε να επιλέξετε DOM στοιχεία; 1953 01:36:03,420 --> 01:36:06,500 Λοιπόν, όταν το κάνετε το άσχημο JavaScript τρόπο, θα έχουν πρόσβαση στο 1954 01:36:06,500 --> 01:36:08,240 τεκμηριώνει την παγκόσμια μεταβλητή. 1955 01:36:08,240 --> 01:36:11,170 Και τότε μπορείτε να πάρετε το στοιχείο με ID οικογένεια. 1956 01:36:11,170 --> 01:36:15,270 Αυτό είναι πραγματικά μεγάλο και φλύαρος και δεν είναι πολύ ωραία. 1957 01:36:15,270 --> 01:36:18,190 >> Ή μπορείτε να πάρετε όλα τα στοιχεία που είναι μια ετικέτα p. 1958 01:36:18,190 --> 01:36:20,080 Αυτό λειτουργεί πάρα πολύ σε JavaScript. 1959 01:36:20,080 --> 01:36:22,470 Αλλά ποτέ δεν έδειξε η σύνταξη σας πάρα πολύ. 1960 01:36:22,470 --> 01:36:24,620 Αυτό που σας έδειξα ήταν jQuery. 1961 01:36:24,620 --> 01:36:28,720 Έτσι ώστε ολόκληρο επιλογέα μέχρι εκεί που εκφράστηκε σε JavaScript ακριβώς γίνεται 1962 01:36:28,720 --> 01:36:33,320 συμπυκνώνεται σε αυτό το πολύ ωραίο δολάριο υπογράψουν την οικογένεια hashtag. 1963 01:36:33,320 --> 01:36:38,480 Και $ p, εκεί ακριβώς όπου είναι έτσι. 1964 01:36:38,480 --> 01:36:41,690 Αν θέλετε να επιλέξετε όλες τις ετικέτες p μέσα σε μια οικογένεια, βάζουμε ένα χώρο 1965 01:36:41,690 --> 01:36:42,890 μεταξύ των δύο. 1966 01:36:42,890 --> 01:36:44,815 Και τώρα, έχουμε πάρει όλα τα p tags μέσα σε μια οικογένεια. 1967 01:36:44,815 --> 01:36:48,740 1968 01:36:48,740 --> 01:36:50,380 >> Και φαίνεται γνωστό; 1969 01:36:50,380 --> 01:36:52,880 Λοιπόν, Angela μίλησε για CSS επιλογείς. 1970 01:36:52,880 --> 01:36:54,200 Δώσε μου ένα δευτερόλεπτο. 1971 01:36:54,200 --> 01:36:57,230 Και έτσι, ώστε να επιλέξετε ένα στοιχείο, μπορείτε απλά να χρησιμοποιήσετε το ίδιο πράγμα όπως εσείς 1972 01:36:57,230 --> 01:36:58,530 θα κάνουμε με έναν επιλογέα CSS. 1973 01:36:58,530 --> 01:37:00,910 Αν βάλετε ένα hash μπροστά του, επιλέγει με ID. 1974 01:37:00,910 --> 01:37:02,220 Μια κουκίδα επιλέγει κατά τάξεις. 1975 01:37:02,220 --> 01:37:06,230 Αν έχετε μόνο το πράγμα, χωρίς να hashes ή τελείες, επιλέγει αυτές τις ετικέτες. 1976 01:37:06,230 --> 01:37:07,140 Ερωτήσεις. 1977 01:37:07,140 --> 01:37:07,470 Ναι; 1978 01:37:07,470 --> 01:37:11,510 >> ΚΟΙΝΟ: Όταν χρησιμοποιούμε τελεία μας HTML, είναι ότι δεν είναι jQuery; 1979 01:37:11,510 --> 01:37:13,520 >> JOSEPH ONG: Dot σε HTML μας Είναι ένα πράγμα JavaScript. 1980 01:37:13,520 --> 01:37:14,750 Δεν είναι ένα πράγμα jQuery. 1981 01:37:14,750 --> 01:37:17,620 Ο τρόπος εσείς να το μάθει με jQuery είναι να χρησιμοποιήσετε. html. 1982 01:37:17,620 --> 01:37:21,510 Και τότε πέρασε ανεξαρτήτως η HTML θα είναι. 1983 01:37:21,510 --> 01:37:23,480 Γι 'αυτό θα φτάσουμε σε αυτό σε λίγο μια δεύτερη πραγματικότητα. 1984 01:37:23,480 --> 01:37:27,800 Τόσο πώς κάνουμε τα πράγματα με το στοιχείο από τη στιγμή που την έχετε επιλέξει; 1985 01:37:27,800 --> 01:37:30,130 Έτσι, αυτό είναι ένα παράδειγμα της επιλέγοντας ένα στοιχείο. 1986 01:37:30,130 --> 01:37:32,280 Έτσι τώρα, θέλουμε να κάνουμε πράγματα για αυτό. 1987 01:37:32,280 --> 01:37:35,730 >> Έτσι, στην περίπτωση αυτή, επιτρέψτε μου να πάω πίσω στην προηγούμενη διαφάνεια. 1988 01:37:35,730 --> 01:37:37,360 Ήταν ο Bob πριν. 1989 01:37:37,360 --> 01:37:40,660 Και θέλω να το αλλάξουμε αυτό μέσα σε HTML στο Milo. 1990 01:37:40,660 --> 01:37:43,240 Καλώ λοιπόν τη λειτουργία HTML από το στοιχείο. 1991 01:37:43,240 --> 01:37:45,580 Η λειτουργία αυτή είναι HTML μια μέθοδος του στοιχείου. 1992 01:37:45,580 --> 01:37:47,430 Και τότε μου δώσει ό, τι Θέλω η HTML να είναι. 1993 01:37:47,430 --> 01:37:50,560 Και αυτό ακριβώς αντικαθιστά ό, τι υπάρχει στο εσωτερικό της ότι η ετικέτα με ό, τι μπορώ να δώσω. 1994 01:37:50,560 --> 01:37:50,830 Ναι. 1995 01:37:50,830 --> 01:37:51,170 Ερώτηση; 1996 01:37:51,170 --> 01:37:57,397 >> ΚΟΙΝΟ: Το hashtag χρησιμοποιείται μόνο για το jQuery. 1997 01:37:57,397 --> 01:37:59,313 [Δεν ακούγεται] 1998 01:37:59,313 --> 01:38:01,230 δεν θα την χρησιμοποιήσει. 1999 01:38:01,230 --> 01:38:01,960 >> JOSEPH ONG: Ναι, ακριβώς. 2000 01:38:01,960 --> 01:38:03,750 Αλλά μην ανησυχείτε πάρα πολύ για καθαρή JavaScript. 2001 01:38:03,750 --> 01:38:06,670 Απλά θέλω εσείς να επικεντρωθεί στο πώς μπορείτε Θα το κάνουμε με jQuery, γιατί 2002 01:38:06,670 --> 01:38:10,020 ότι πρόκειται να είναι το σημαντικό μέρος στο κουίζ. 2003 01:38:10,020 --> 01:38:10,400 Δεξιά. 2004 01:38:10,400 --> 01:38:10,880 Ακριβώς. 2005 01:38:10,880 --> 01:38:16,025 Έτσι θα δείτε ότι hashtag, έτσι ώστε να αντιστοιχεί για να επιλέξετε το στοιχείο με 2006 01:38:16,025 --> 01:38:18,310 το αναγνωριστικό μέση λόγω του ότι hashtag. 2007 01:38:18,310 --> 01:38:19,670 Hashtag σημαίνει ID. 2008 01:38:19,670 --> 01:38:22,870 Και αυτό το στοιχείο έχει ένα αναγνωριστικό της μέσης. 2009 01:38:22,870 --> 01:38:24,366 Έτσι, αυτό είναι το στοιχείο που επιλέξατε. 2010 01:38:24,366 --> 01:38:27,160 >> ΚΟΙΝΟ: [δεν ακούγεται]. 2011 01:38:27,160 --> 01:38:31,090 σύμβολο του δολαρίου hashtag [δεν ακούγεται]; 2012 01:38:31,090 --> 01:38:31,710 >> JOSEPH ONG: Έτσι, δεν έχει. 2013 01:38:31,710 --> 01:38:33,280 Το ερώτημα είναι αν μπορούμε να χρησιμοποιήσετε. Αξία. 2014 01:38:33,280 --> 01:38:36,445 Και. Αξία λειτουργεί μόνο σε στοιχεία ότι οι εισροές. 2015 01:38:36,445 --> 01:38:40,950 2016 01:38:40,950 --> 01:38:45,495 Στην jQuery, θα ήταν . Val, όχι. Αξίας. 2017 01:38:45,495 --> 01:38:49,080 Γι 'αυτό θα φτάσουμε σε ένα μικρό παράδειγμα που αποδεικνύει όλα αυτά σε συνδυασμό 2018 01:38:49,080 --> 01:38:49,850 σε ένα δευτερόλεπτο. 2019 01:38:49,850 --> 01:38:53,130 Αλλά νομίζω ότι αυτό εξυπηρετεί ένα μικρό απόσπασμα νόημα για τους ανθρώπους μέχρι στιγμής. 2020 01:38:53,130 --> 01:38:55,450 Θέλετε να αλλάξετε την HTML, καλέστε τη μέθοδο HTML. 2021 01:38:55,450 --> 01:38:56,432 Ναι. 2022 01:38:56,432 --> 01:38:58,200 >> ΚΟΙΝΟ: Μπορείτε να εξηγήσετε η μέθοδος και πάλι; 2023 01:38:58,200 --> 01:39:01,900 >> JOSEPH ONG: Έτσι, μια μέθοδος είναι απλά μια λειτουργία που ανήκει σε ένα, σε αυτή 2024 01:39:01,900 --> 01:39:04,590 περίπτωση, ένα από αυτά τα στοιχεία DOM, γιατί βλέπεις I 2025 01:39:04,590 --> 01:39:05,940 επιλέγεται το πρώτο στοιχείο. 2026 01:39:05,940 --> 01:39:07,320 Στην πραγματικότητα, επιτρέψτε μου να χρησιμοποιήσω το ποντίκι. 2027 01:39:07,320 --> 01:39:09,330 Έχω επιλέξει το πρώτο στοιχείο. 2028 01:39:09,330 --> 01:39:12,310 Και τότε κάλεσα αυτό το HTML λειτουργία που είχε. 2029 01:39:12,310 --> 01:39:15,710 Και επειδή αυτή η λειτουργία ανήκει στην αυτό το πράγμα, εμείς το ονομάζουμε μέθοδο. 2030 01:39:15,710 --> 01:39:19,480 Αυτό είναι μόνο ένα φανταχτερό όνομα για αυτό. 2031 01:39:19,480 --> 01:39:20,730 Πες το πάλι. 2032 01:39:20,730 --> 01:39:22,880 2033 01:39:22,880 --> 01:39:25,170 Έτσι θυμηθείτε, επιλέξαμε τώρα το στοιχείο. 2034 01:39:25,170 --> 01:39:27,810 Και έχουμε το βάλετε μέσα από το μεταβλητό στοιχείο. 2035 01:39:27,810 --> 01:39:28,600 Διορθώστε; 2036 01:39:28,600 --> 01:39:34,380 >> Έτσι, όταν θέλουμε να αλλάξουμε τον κώδικα HTML στο στο εσωτερικό, επειδή ήταν ο Bob πριν, 2037 01:39:34,380 --> 01:39:36,420 θέλετε να αλλάξετε αυτό το κείμενο σε Milo. 2038 01:39:36,420 --> 01:39:37,920 Έτσι καλούμε HTML. 2039 01:39:37,920 --> 01:39:41,610 Και θα το πω ποια είναι η HTML μέσα το στοιχείο αυτό θα πρέπει να είναι τώρα. 2040 01:39:41,610 --> 01:39:44,107 Και γι 'αυτό αλλάζει σε Milo, γιατί μου έδωσε Milo. 2041 01:39:44,107 --> 01:39:46,542 >> ΚΟΙΝΟ: Έτσι δουλεύουμε μαζί. 2042 01:39:46,542 --> 01:39:47,030 [Δεν ακούγεται] 2043 01:39:47,030 --> 01:39:47,390 >> JOSEPH ONG: Ναι, ναι. 2044 01:39:47,390 --> 01:39:48,180 Θα δουλεύουμε μαζί. 2045 01:39:48,180 --> 01:39:50,210 Έτσι, ένας από τους επιλέγει το πρώτο στοιχείο. 2046 01:39:50,210 --> 01:39:52,863 Και το δεύτερο που κάνει κάτι σε αυτό. 2047 01:39:52,863 --> 01:39:53,790 Ναι. 2048 01:39:53,790 --> 01:39:56,168 >> ΚΟΙΝΟ: [δεν ακούγεται]. 2049 01:39:56,168 --> 01:40:01,280 Εάν αυτή η μέθοδος είναι διαφορετική από σε μορφή HTML έχετε τη μέθοδο ισοδύναμη πραγματική. 2050 01:40:01,280 --> 01:40:01,560 >> JOSEPH ONG: Ναι. 2051 01:40:01,560 --> 01:40:03,370 Αυτό είναι μια διαφορετική μέθοδος. 2052 01:40:03,370 --> 01:40:04,670 Αυτό είναι μια διαφορετική μέθοδος. 2053 01:40:04,670 --> 01:40:07,860 Και μπορούμε να καλύψουμε ότι σε μόλις ένα δευτερόλεπτο όταν φτάσουμε σε ένα παράδειγμα. 2054 01:40:07,860 --> 01:40:12,000 Θέλω να βεβαιωθείτε ότι θα επιταχυνθεί επειδή είμαστε ο χρόνος. 2055 01:40:12,000 --> 01:40:15,360 Αλλά έχουμε τρέξει τρόπο την πάροδο του χρόνου τώρα. 2056 01:40:15,360 --> 01:40:15,490 OK. 2057 01:40:15,490 --> 01:40:16,430 Cool. 2058 01:40:16,430 --> 01:40:20,130 Έτσι, εάν θέλετε να προσθέσετε μια τάξη, δεν υπάρχει επίσης μια μέθοδο add τάξη. 2059 01:40:20,130 --> 01:40:24,300 Αυτό είναι μόνο ένα παράδειγμα του τι μπορείτε να κάνετε με jQuery. 2060 01:40:24,300 --> 01:40:25,950 Αυτό προσθέτει μόνο μια τάξη. 2061 01:40:25,950 --> 01:40:28,660 >> Αν θέλετε να το αφαιρέσετε, μπορείτε να καλέσετε αφαίρεση. 2062 01:40:28,660 --> 01:40:32,280 Αυτό είναι ακριβώς ένα άλλο πράγμα που μπορείτε να κάνετε. 2063 01:40:32,280 --> 01:40:35,680 Έτσι, περισσότερα παραδείγματα από πράγματα που μπορείτε να κάνετε. 2064 01:40:35,680 --> 01:40:37,510 Έτσι μπορώ να το θέσω απλά σε η κορυφή, όπως αυτό; 2065 01:40:37,510 --> 01:40:38,760 Μικρότερος αφαίρεση. 2066 01:40:38,760 --> 01:40:42,470 2067 01:40:42,470 --> 01:40:45,930 Αν απλά εκτελέσει το JavaScript στο η κορυφή του αρχείου μου, θα λειτουργήσει αυτό; 2068 01:40:45,930 --> 01:40:48,540 2069 01:40:48,540 --> 01:40:48,920 Δεξιά. 2070 01:40:48,920 --> 01:40:50,530 Επειδή η μέση δεν υπάρχει ακόμα. 2071 01:40:50,530 --> 01:40:51,840 Έτσι, αυτό δεν πρόκειται να λειτουργήσει. 2072 01:40:51,840 --> 01:40:52,800 Για την εκτέλεση. 2073 01:40:52,800 --> 01:40:55,040 Πηγαίνει στην κορυφή για πρώτη φορά. 2074 01:40:55,040 --> 01:40:55,540 Τι; 2075 01:40:55,540 --> 01:40:57,450 >> ΚΟΙΝΟ: Μικρότερος δεν υπάρχει ακόμα; 2076 01:40:57,450 --> 01:40:57,810 >> JOSEPH ONG: Ναι. 2077 01:40:57,810 --> 01:40:58,710 Οι νεαρότεροι δεν υπάρχει ακόμα. 2078 01:40:58,710 --> 01:40:59,600 Ακριβώς. 2079 01:40:59,600 --> 01:41:01,320 >> ΚΟΙΝΟ: Είπατε μέση. 2080 01:41:01,320 --> 01:41:01,510 >> JOSEPH ONG: Συγγνώμη. 2081 01:41:01,510 --> 01:41:02,720 Οι νεαρότεροι δεν υπάρχει ακόμα. 2082 01:41:02,720 --> 01:41:04,510 Και το άλλο πράγμα είναι ότι δεν έχουν περιλαμβάνεται το jQuery 2083 01:41:04,510 --> 01:41:06,580 αρχείο script src ρωτήσω. 2084 01:41:06,580 --> 01:41:07,960 Έτσι, αυτό δεν πρόκειται να λειτουργήσει. 2085 01:41:07,960 --> 01:41:09,580 Στην πραγματικότητα, εγώ δεν το κάνουμε αυτό σε η επόμενη διαφάνεια, η οποία είναι 2086 01:41:09,580 --> 01:41:10,700 υποτίθεται για να διορθωθεί αυτό, είτε. 2087 01:41:10,700 --> 01:41:14,120 Αλλά ο τρόπος που το κάνουμε αυτό είναι JavaScript είναι οδηγούμενο από τα γεγονότα. 2088 01:41:14,120 --> 01:41:17,410 Έτσι, αυτό που κάνουμε είναι να χρησιμοποιήσετε μια εκδήλωση Handler για να συμβεί αυτό. 2089 01:41:17,410 --> 01:41:19,510 Και γι 'αυτό επιλέξτε το έγγραφο που για πρώτη φορά. 2090 01:41:19,510 --> 01:41:23,810 Το λέω, εντάξει, όταν το έγγραφο είναι έτοιμο, επιτρέψτε μου να τρέξει μια λειτουργία. 2091 01:41:23,810 --> 01:41:25,470 Έτσι ώστε να είναι όλα αυτά που μέσα σύνταξη. 2092 01:41:25,470 --> 01:41:27,100 >> Έχω επιλέξει το έγγραφο. 2093 01:41:27,100 --> 01:41:29,530 Τώρα, όταν το έγγραφο βρίσκεται έτοιμο, εκτελέστε τη λειτουργία. 2094 01:41:29,530 --> 01:41:32,970 Και έτσι εδώ όταν το έγγραφο είναι έτοιμα, που σημαίνει ότι όλα τα HTML έχει 2095 01:41:32,970 --> 01:41:36,140 φορτωμένο, τότε εκτελείτε τη λειτουργία ότι αφαιρεί το στοιχείο αυτό. 2096 01:41:36,140 --> 01:41:40,270 Και τώρα, όταν τρέχω αυτή τη λειτουργία ότι πέρασα σε έτοιμη, είμαι 2097 01:41:40,270 --> 01:41:43,780 εγγυάται ότι όλα τα σχετικά με την HTML Η σελίδα θα υπάρχει για πρώτη φορά. 2098 01:41:43,780 --> 01:41:44,100 Ναι. 2099 01:41:44,100 --> 01:41:44,425 Ερώτηση; 2100 01:41:44,425 --> 01:41:48,200 >> ΚΟΙΝΟ: Ποια είναι η λέξη-κλειδί εκδήλωση κατά τη λειτουργία; 2101 01:41:48,200 --> 01:41:51,750 >> JOSEPH ONG: Έτσι, η λέξη-κλειδί εκδήλωση στο λειτουργία είναι μόνο μια παράμετρος που 2102 01:41:51,750 --> 01:41:53,490 παίρνει περάσει στη λειτουργία για κάθε περίπτωση. 2103 01:41:53,490 --> 01:41:55,470 Είναι απλά κάτι που μπορείτε να πάρετε δωρεάν. 2104 01:41:55,470 --> 01:41:59,320 Όταν χρησιμοποιείτε το κλειδί χειριστές σε pset8, το γεγονός αυτό θα μπορούσε να σας πω, για 2105 01:41:59,320 --> 01:42:01,350 παράδειγμα, το οποίο κλειδί πατήσατε για. 2106 01:42:01,350 --> 01:42:05,540 Στην περίπτωση αυτή, για ένα έτοιμο γεγονός, δεν είναι πραγματικά εξαιρετικά χρήσιμο. 2107 01:42:05,540 --> 01:42:08,640 Αλλά για ένα κλειδί κάτω περίπτωση, είναι πιο χρήσιμο, επειδή μπορείτε να πάρετε για να ξέρετε που 2108 01:42:08,640 --> 01:42:12,330 πλήκτρο που πιέζεται από το κλειδί πρόσβασης κώδικα από αυτό το αντικείμενο εκδήλωσης. 2109 01:42:12,330 --> 01:42:13,530 Διορθώστε; 2110 01:42:13,530 --> 01:42:15,160 Μήπως αυτό έχει νόημα; 2111 01:42:15,160 --> 01:42:16,280 OK. 2112 01:42:16,280 --> 01:42:16,580 Ναι. 2113 01:42:16,580 --> 01:42:17,150 Ερώτηση; 2114 01:42:17,150 --> 01:42:19,290 >> ΚΟΙΝΟ: Έτσι, μπορείτε να βάλετε το script tag κάτω κάτω; 2115 01:42:19,290 --> 01:42:19,940 >> JOSEPH ONG: Οπότε ναι. 2116 01:42:19,940 --> 01:42:21,500 Θα μπορούσατε να βάλετε το σενάριο ετικέτα κάτω κάτω. 2117 01:42:21,500 --> 01:42:23,090 Αλλά τότε γίνεται ακριβώς πραγματικά βρώμικο. 2118 01:42:23,090 --> 01:42:26,590 Και μας αρέσει να συγκεντρώνει όλες του κώδικά μας σε ένα μέρος. 2119 01:42:26,590 --> 01:42:28,290 Και αυτό θα μας επιτρέψει να το κάνουμε. 2120 01:42:28,290 --> 01:42:32,010 Θυμηθείτε νωρίτερα είπα ότι υπάρχει ένα καλύτερο τρόπος να εξασφαλιστεί ότι τα στοιχεία είναι 2121 01:42:32,010 --> 01:42:33,880 στη σελίδα προτού να εκτελέσει κώδικα; 2122 01:42:33,880 --> 01:42:36,079 Και αυτό είναι απλά ένα ωραίο τρόπο θα το επιτύχει αυτό. 2123 01:42:36,079 --> 01:42:37,329 >> ΚΟΙΝΟ: [δεν ακούγεται]. 2124 01:42:37,329 --> 01:42:41,710 2125 01:42:41,710 --> 01:42:42,230 >> JOSEPH ONG: Ναι. 2126 01:42:42,230 --> 01:42:43,460 Θα πρέπει ακόμα να, έτσι δεν είναι; 2127 01:42:43,460 --> 01:42:46,930 Επειδή θυμηθείτε, θα περιλαμβάνεται η αρχείο στο επάνω μέρος της σελίδας. 2128 01:42:46,930 --> 01:42:49,890 Έτσι πρόκειται να εκτελέσει για πρώτη φορά πριν μπορείτε να φτάσετε στο κάτω μέρος της σελίδας. 2129 01:42:49,890 --> 01:42:54,600 2130 01:42:54,600 --> 01:42:55,180 OK. 2131 01:42:55,180 --> 01:42:59,210 Έτσι, μπορείτε επίσης να προσθέσετε ένα διαφορετικό τον τύπο του χειρισμού συμβάντων. 2132 01:42:59,210 --> 01:43:00,640 Αυτός επεξεργάζεται μόνο κλικ. 2133 01:43:00,640 --> 01:43:03,910 Όταν κάνω κλικ στο νεότερος, τότε θα εμφανιστεί με μια προειδοποίηση. 2134 01:43:03,910 --> 01:43:05,440 Αυτό είναι απλά μια διαφορετική το είδος της εκδήλωσης. 2135 01:43:05,440 --> 01:43:08,840 Σε αντίθεση με την περίπτωση έτοιμο, μπορείτε τώρα χρησιμοποιήσετε το κλικ συμβάν όταν λαμβάνετε 2136 01:43:08,840 --> 01:43:10,190 κλικ σε ένα στοιχείο. 2137 01:43:10,190 --> 01:43:13,860 >> Και στην προκειμένη περίπτωση, να θυμάστε, το κλικ χειριστής συνδέεται με τη νεότερη. 2138 01:43:13,860 --> 01:43:16,080 Έτσι, αυτό συμβαίνει μόνο όταν Κάνω κλικ πάνω νεότερος. 2139 01:43:16,080 --> 01:43:19,510 Και στην άλλη μία, το έτοιμο εκδήλωση συνδέθηκε με το έγγραφο. 2140 01:43:19,510 --> 01:43:23,750 Έτσι, περιμένει το έγγραφο να είναι έτοιμη. 2141 01:43:23,750 --> 01:43:25,120 Νόημα; 2142 01:43:25,120 --> 01:43:26,190 Νομίζω ότι μπορώ να προχωρήσω. 2143 01:43:26,190 --> 01:43:26,610 Ναι. 2144 01:43:26,610 --> 01:43:26,980 Ερώτηση; 2145 01:43:26,980 --> 01:43:28,230 >> ΚΟΙΝΟ: [δεν ακούγεται]. 2146 01:43:28,230 --> 01:43:31,676 2147 01:43:31,676 --> 01:43:33,620 σε αυτή την περίπτωση μπορείτε να χρησιμοποιήσετε [δεν ακούγεται]. 2148 01:43:33,620 --> 01:43:36,650 >> JOSEPH ONG: Ω, ναι, επειδή σ 'αυτό περίπτωση, θα πρέπει να περιμένω για τους νεότερους 2149 01:43:36,650 --> 01:43:40,740 στοιχείο για να εμφανιστεί στην οθόνη το πριν μπορώ να επισυνάψω ένα χειριστή κλικ για να 2150 01:43:40,740 --> 01:43:43,062 αυτό, το οποίο είναι ο λόγος που το έβαλα μέσα του ένα έγγραφο έτοιμο. 2151 01:43:43,062 --> 01:43:45,780 2152 01:43:45,780 --> 01:43:46,840 OK. 2153 01:43:46,840 --> 01:43:52,390 Και την επόμενη, έτσι αυτό είναι ένα μεγάλο παράδειγμα της πώς θα συνδυάσετε τα πάντα. 2154 01:43:52,390 --> 01:43:55,930 Αυτό είναι μόνο ένα παράδειγμα επικύρωση φόρμα έχετε δει στη διάλεξη. 2155 01:43:55,930 --> 01:43:58,410 Πάρτε λοιπόν αυτό το βήμα προς βήμα, όπως θα περάσει μέσα από αυτό. 2156 01:43:58,410 --> 01:43:59,590 Και αυτό θα είναι απολύτως εντάξει. 2157 01:43:59,590 --> 01:44:01,400 Απλά διαβάζεται από πάνω προς τα κάτω. 2158 01:44:01,400 --> 01:44:03,030 >> Έχω ένα έντυπο στο κάτω μέρος. 2159 01:44:03,030 --> 01:44:07,590 Όταν το έγγραφο είναι έτοιμο, επισυνάπτω ένα υποβάλλουν χειριστή στη φόρμα, έτσι ώστε 2160 01:44:07,590 --> 01:44:12,910 όταν υποβάλετε το έντυπο, να πάρω τις τιμές μέσα σε κάθε μία από τις εισόδους. 2161 01:44:12,910 --> 01:44:14,560 Και μπορώ να ελέγξω αν είναι κενό. 2162 01:44:14,560 --> 01:44:17,090 Αν είναι κενό, θα επιστρέψει false, επειδή Δεν θέλω να υποβάλει τη φόρμα, 2163 01:44:17,090 --> 01:44:18,950 επειδή η μορφή είναι λάθος. 2164 01:44:18,950 --> 01:44:22,040 Εάν ο κωδικός πρόσβασης είναι κενός ή είναι λιγότερο από οκτώ χαρακτήρες, δεν υποβάλω 2165 01:44:22,040 --> 01:44:24,470 η μορφή, γιατί αυτό είναι επίσης λάθος. 2166 01:44:24,470 --> 01:44:28,150 Και η ψευδής δήλωση μόνο εμποδίζει η μορφή, από την υποβολή και 2167 01:44:28,150 --> 01:44:30,150 πρόκειται για μια νέα σελίδα. 2168 01:44:30,150 --> 01:44:31,310 >> Και ελπίζω, αυτό έχει νόημα. 2169 01:44:31,310 --> 01:44:34,650 Νομίζω ότι εσείς θα πρέπει να περπατήσετε μέσα από αυτό το βήμα προς βήμα κώδικας για τη δική σας. 2170 01:44:34,650 --> 01:44:38,350 Και μόλις καταλάβετε ποια είναι η επιλογή στοιχεία και να κάνουμε πράγματα για να 2171 01:44:38,350 --> 01:44:40,520 στην πραγματικότητα συνεπάγεται, αυτό θα κάνει πολύ νόημα για εσάς. 2172 01:44:40,520 --> 01:44:41,295 Ναι; 2173 01:44:41,295 --> 01:44:44,150 >> ΚΟΙΝΟ: Τι σημαίνει η name = όνομα σημαίνει; 2174 01:44:44,150 --> 01:44:48,530 >> JOSEPH ONG: Έτσι το όνομα = όνομα χρήστη και name = κωδικός πρόσβασης σημαίνει απλά κοιτάξτε το 2175 01:44:48,530 --> 01:44:50,730 χαρακτηριστικό ό, τι είστε επιλογή. 2176 01:44:50,730 --> 01:44:51,790 Και στη συνέχεια, ότι πρέπει να ταιριάζουν. 2177 01:44:51,790 --> 01:44:53,870 Οπότε πάμε σε εγγραφή. 2178 01:44:53,870 --> 01:44:56,240 Και τότε θα δούμε σε όλες τις εισόδους και την καταγραφή. 2179 01:44:56,240 --> 01:44:59,990 Και τότε θα πάρει το ένα, όπου το όνομα χαρακτηριστικό είναι ίση με το όνομα χρήστη. 2180 01:44:59,990 --> 01:45:04,040 Έτσι, η πρώτη επιλογέα επιλέγει μόνο η είσοδος όνομα χρήστη. 2181 01:45:04,040 --> 01:45:08,220 Και η δεύτερη επιλογέα επιλέγει μόνο τον κωδικό πρόσβασης, γιατί αυτές έχουν 2182 01:45:08,220 --> 01:45:12,240 χαρακτηριστικά που το όνομά τους, όπως αυτό που υποτίθεται ότι είναι. 2183 01:45:12,240 --> 01:45:12,575 Ερώτηση; 2184 01:45:12,575 --> 01:45:17,030 >> ΚΟΙΝΟ: Με την υποβολή, πώς η κάτω μέρος επιλύσει το πάνω μέρος; 2185 01:45:17,030 --> 01:45:19,350 >> JOSEPH ONG: Έτσι, αυτό συμβαίνει επειδή του χειρισμού συμβάντων. 2186 01:45:19,350 --> 01:45:23,000 Έτσι, είμαστε σε αναμονή για μια εκδήλωση υποβάλλει ότι απολύεται από τη φόρμα. 2187 01:45:23,000 --> 01:45:24,730 Και αυτό είναι το μόνο που είναι να υποβάλει. 2188 01:45:24,730 --> 01:45:26,080 Γιατί καλώ να υποβάλουν μέχρι εκεί; 2189 01:45:26,080 --> 01:45:28,870 Λέει, όταν υποβληθεί η φόρμα, Παίρνω μια εκδήλωση υποβάλει. 2190 01:45:28,870 --> 01:45:33,480 Έτσι, επιτρέψτε μου να υποκλέψει ότι και στη συνέχεια να εκτελέσετε αυτόν τον κώδικα αντ 'αυτού. 2191 01:45:33,480 --> 01:45:33,823 Ναι; 2192 01:45:33,823 --> 01:45:35,866 >> ΚΟΙΝΟ: Γιατί έχετε να έχουν εκδήλωση λειτουργία; 2193 01:45:35,866 --> 01:45:38,580 Γιατί δεν μπορείς απλά [δεν ακούγεται]; 2194 01:45:38,580 --> 01:45:41,140 >> JOSEPH ONG: Επειδή το JavaScript, σας πρέπει να δηλώνουν τις λειτουργίες. 2195 01:45:41,140 --> 01:45:42,910 Αυτό είναι ακριβώς πώς λειτουργεί σε JavaScript. 2196 01:45:42,910 --> 01:45:44,800 Θα πρέπει να πω ότι πρόκειται να εκτελέσετε μια λειτουργία. 2197 01:45:44,800 --> 01:45:47,290 Έτσι φαινόταν ότι λέει ότι είστε αναμένει μια λειτουργία εδώ, αντί να 2198 01:45:47,290 --> 01:45:48,260 μόνο άγκιστρα. 2199 01:45:48,260 --> 01:45:50,460 >> ΚΟΙΝΟ: Και η λειτουργία είναι ό, τι ακολουθεί; 2200 01:45:50,460 --> 01:45:50,650 >> JOSEPH ONG: Ναι. 2201 01:45:50,650 --> 01:45:52,790 Η λειτουργία αυτή είναι ό, τι είναι μέσα τα άγκιστρα μετά 2202 01:45:52,790 --> 01:45:53,630 ότι η λέξη-κλειδί της λειτουργίας. 2203 01:45:53,630 --> 01:45:54,045 Ναι; 2204 01:45:54,045 --> 01:45:55,295 >> ΚΟΙΝΟ: [δεν ακούγεται]. 2205 01:45:55,295 --> 01:46:00,180 2206 01:46:00,180 --> 01:46:00,660 >> JOSEPH ONG: Για υποβάλω; 2207 01:46:00,660 --> 01:46:03,520 >> ΚΟΙΝΟ: Όχι, για τη λειτουργία χωρίς την εκδήλωση. 2208 01:46:03,520 --> 01:46:03,770 >> JOSEPH ONG: Ναι. 2209 01:46:03,770 --> 01:46:05,610 Έτσι, χωρίς την εκδήλωση, μπορείτε να έχετε αυτό. 2210 01:46:05,610 --> 01:46:08,480 Αν δεν χρειάζεστε την εκδήλωση, τότε μπορείτε να παραλείψετε απλά. 2211 01:46:08,480 --> 01:46:12,220 Αλλά αν το κάνετε, τότε θα απλά το έβαλε εκεί. 2212 01:46:12,220 --> 01:46:12,520 Ναι. 2213 01:46:12,520 --> 01:46:13,190 Γρήγορη ερώτηση; 2214 01:46:13,190 --> 01:46:14,440 >> ΚΟΙΝΟ: [δεν ακούγεται]. 2215 01:46:14,440 --> 01:46:21,170 2216 01:46:21,170 --> 01:46:21,440 >> JOSEPH ONG: Ναι. 2217 01:46:21,440 --> 01:46:24,550 Γιατί αυτό που πρέπει να κάνετε, η document.ready λέει απλά περιμένετε για όλα 2218 01:46:24,550 --> 01:46:26,540 το HTML στη σελίδα για να φορτώσει πρώτα. 2219 01:46:26,540 --> 01:46:30,510 Και συνήθως, θέλετε τα στοιχεία σας στη θέση του, πριν να εκτελέσει οποιονδήποτε κώδικα. 2220 01:46:30,510 --> 01:46:31,030 Εντάξει. 2221 01:46:31,030 --> 01:46:32,180 Πρέπει να φτάσουμε σε Ajax. 2222 01:46:32,180 --> 01:46:33,110 Δεν έχουμε πολύ χρόνο. 2223 01:46:33,110 --> 01:46:35,170 Έτσι, τα πλεονεκτήματα και τα μειονεκτήματα. 2224 01:46:35,170 --> 01:46:37,450 JavaScript είναι πιο εύκολο δοκιμή γράψει με jQuery. 2225 01:46:37,450 --> 01:46:38,930 Αλλά jQuery είναι το είδος του αργή. 2226 01:46:38,930 --> 01:46:42,290 >> Είναι σαν PHP είναι πιο αργή από ό, τι C, επειδή έχει ερμηνευθεί. 2227 01:46:42,290 --> 01:46:45,690 Και jQuery είναι λίγο πιο αργή από ό, τι JavaScript, γιατί κάνει πολλά 2228 01:46:45,690 --> 01:46:46,630 τα πράγματα κάτω από το καπό. 2229 01:46:46,630 --> 01:46:48,660 Και έτσι, αν είστε με τη χρήση jQuery, είναι λίγο πιο αργή από ό, τι 2230 01:46:48,660 --> 01:46:51,630 JavaScript, μολονότι σας δίνει ωραία κομψότητα. 2231 01:46:51,630 --> 01:46:53,970 Και τέλος, Ajax. 2232 01:46:53,970 --> 01:46:59,170 Μέχρι στιγμής με τον Άγιαξ, δεν έχετε δει Ajax από την άποψη της pset7 ακόμα, επειδή 2233 01:46:59,170 --> 01:47:01,150 όταν το κάνετε, θα υποβάλει μια μορφή για παράθεση. 2234 01:47:01,150 --> 01:47:02,350 Φορτώνει μια νέα σελίδα. 2235 01:47:02,350 --> 01:47:04,440 Έτσι, μπορείτε να πάρετε αυτό το μεγάλο λευκό φλας στη σελίδα, ενώ η 2236 01:47:04,440 --> 01:47:06,820 δεύτερη σελίδα φορτώνει, σωστά; 2237 01:47:06,820 --> 01:47:08,780 >> Θα ήταν πολύ ωραίο αν δεν έχουν αυτό το flash. 2238 01:47:08,780 --> 01:47:11,600 Όπως το Facebook, αν απλά μεταβείτε στο το κάτω μέρος, προσθέτει νέο περιεχόμενο 2239 01:47:11,600 --> 01:47:13,490 χωρίς ανανέωση ολόκληρης της σελίδας. 2240 01:47:13,490 --> 01:47:15,420 Έτσι, κάτι τέτοιο θα ήταν ωραίο. 2241 01:47:15,420 --> 01:47:17,370 Πρόκειται για τον κώδικα JavaScript στην αριστερή πλευρά. 2242 01:47:17,370 --> 01:47:19,390 Μπορείτε να πάρετε ό, τι είναι μέσα από αυτή την είσοδο. 2243 01:47:19,390 --> 01:47:21,340 Μπορείτε να πάρετε τις πληροφορίες μετοχών από το Yahoo! 2244 01:47:21,340 --> 01:47:27,440 Και τότε θα κάνει μια μεγάλη σειρά που λέει, εντάξει, αυτό είναι το μήνυμα που θέλω 2245 01:47:27,440 --> 01:47:28,400 να εμφανιστεί στην οθόνη. 2246 01:47:28,400 --> 01:47:32,280 Και τότε θα θέσει αυτό το μήνυμα στο εσωτερικό κάποιου στοιχείου HTML που παίρνει 2247 01:47:32,280 --> 01:47:33,970 εμφανίζεται στην οθόνη. 2248 01:47:33,970 --> 01:47:35,540 >> Έτσι, αυτό είναι το μόνο που συμβαίνει εδώ. 2249 01:47:35,540 --> 01:47:39,410 Έτσι, βασικά, γιατί αυτό είναι το μόνο JavaScript και δεν χρειάζεται να τρέχει 2250 01:47:39,410 --> 01:47:42,980 PHP πια, αυτό θα βεβαιωθείτε ότι ότι η σελίδα δεν ανανεωθεί. 2251 01:47:42,980 --> 01:47:47,470 Έτσι, αυτό είναι μόνο μια αφηρημένη ιδέα ότι λέω εδώ τώρα. 2252 01:47:47,470 --> 01:47:50,630 Η αφηρημένη ιδέα είναι ότι αν το κάνετε όλα σε JavaScript, δεν έχετε ένα 2253 01:47:50,630 --> 01:47:52,330 ανανέωση της σελίδας. 2254 01:47:52,330 --> 01:47:53,800 Αλλά πώς θα το κάνετε πραγματικά αυτό; 2255 01:47:53,800 --> 01:47:56,230 >> Λοιπόν, στην πραγματικότητα, ας μιλήσουμε για ένα πρόβλημα με αυτήν την πρώτη. 2256 01:47:56,230 --> 01:47:59,340 Ένα πρόβλημα είναι σε JavaScript, εκτέλεση είναι σύγχρονη. 2257 01:47:59,340 --> 01:48:02,000 Έτσι, θα πρέπει να περιμένετε για ένα γραμμή για να τελειώσει προτού 2258 01:48:02,000 --> 01:48:03,370 εκτελέσει την επόμενη γραμμή. 2259 01:48:03,370 --> 01:48:06,130 Και τι θα γίνει αν πάω πάνω στο Yahoo!, και servers τους είναι πολύ αργή, και 2260 01:48:06,130 --> 01:48:08,790 τους παίρνει τρία δευτερόλεπτα για να να μου δώσει πίσω ότι πληροφορίες απόθεμα; 2261 01:48:08,790 --> 01:48:12,620 Όταν χτύπησα αυτή τη γραμμή των τιμών, εάν η εκτέλεση είναι σύγχρονη, καθώς είναι από 2262 01:48:12,620 --> 01:48:15,390 προεπιλογή, αυτό είναι ακριβώς πρόκειται να κάνουμε είναι να Ο φυλλομετρητής σας δεν πρόκειται να σταματήσει για 2263 01:48:15,390 --> 01:48:15,930 τρία δευτερόλεπτα. 2264 01:48:15,930 --> 01:48:18,900 Και δεν πρόκειται να είναι σε θέση να κάνει τίποτα, ενώ παίρνει τα δεδομένα. 2265 01:48:18,900 --> 01:48:20,010 Είναι πρόκειται να καταψυχθεί. 2266 01:48:20,010 --> 01:48:20,800 >> Και αυτό είναι κακό. 2267 01:48:20,800 --> 01:48:23,390 Δεν θέλετε ένα χρήστη να έχουν μια παγωμένη ιστοσελίδα. 2268 01:48:23,390 --> 01:48:24,170 Διορθώστε; 2269 01:48:24,170 --> 01:48:25,480 Αυτό είναι απλώς κακή. 2270 01:48:25,480 --> 01:48:26,770 Όλοι συμφωνούν; 2271 01:48:26,770 --> 01:48:29,270 Αν είστε περιήγηση στο Facebook και παγώνει και δεν μπορείτε να κάνετε τίποτα, 2272 01:48:29,270 --> 01:48:31,920 πάρει πραγματικά απογοητευμένοι. 2273 01:48:31,920 --> 01:48:34,960 Έτσι, η λύση είναι να κάνουμε κάτι ασύγχρονη αντ 'αυτού. 2274 01:48:34,960 --> 01:48:38,910 Έτσι, όλη αυτή η ασύγχρονη πράγμα λέει είναι, Πάω να ρωτήσω το εξής 2275 01:48:38,910 --> 01:48:40,280 URL για ορισμένα δεδομένα. 2276 01:48:40,280 --> 01:48:41,610 Και στη συνέχεια, Πάω να συνεχίσω. 2277 01:48:41,610 --> 01:48:45,330 Είμαι ακριβώς πρόκειται να κρατήσει την εκτέλεση ανεξάρτητα από τον κωδικό που ήταν μετά από αυτό. 2278 01:48:45,330 --> 01:48:49,290 >> Και στη συνέχεια, όταν τα δεδομένα είναι έτοιμη, τότε θα το επεξεργαστεί. 2279 01:48:49,290 --> 01:48:50,540 Αυτό είναι όλο αυτό λένε. 2280 01:48:50,540 --> 01:48:52,795 2281 01:48:52,795 --> 01:48:56,710 >> ΚΟΙΝΟ: Ajax κάνει ακριβώς Κωδικός ασύγχρονη; 2282 01:48:56,710 --> 01:48:58,560 >> JOSEPH ONG: Είναι μια ασύγχρονη τρόπος γοητευτικός δεδομένων. 2283 01:48:58,560 --> 01:49:01,230 Έτσι, το πρώτο πράγμα για Ajax είναι ότι μου επιτρέπει να πάρετε τα δεδομένα 2284 01:49:01,230 --> 01:49:03,170 από μια εξωτερική ιστοσελίδα. 2285 01:49:03,170 --> 01:49:07,045 Και το δεύτερο πράγμα είναι ότι σιγουρεύεται η σελίδα μου δεν σταματήσει, ενώ είμαι 2286 01:49:07,045 --> 01:49:07,970 γοητευτικός ότι τα δεδομένα. 2287 01:49:07,970 --> 01:49:09,600 Αυτό είναι το ασύγχρονο μέρος της. 2288 01:49:09,600 --> 01:49:13,040 Επειδή πηγαίνει κάπου αλλού, επειδή το λέω εγώ συνεχίζω επάνω ενώ 2289 01:49:13,040 --> 01:49:14,900 είναι γοητευτικός αυτά τα δεδομένα, ότι καθιστά ασύγχρονη. 2290 01:49:14,900 --> 01:49:17,170 Κρατάω εκτέλεσης. 2291 01:49:17,170 --> 01:49:18,960 >> Έτσι διατηρούν το ασύγχρονη ιδέα στο μυαλό. 2292 01:49:18,960 --> 01:49:22,010 Και εγώ θα σας δείξω τι η διαφορά. 2293 01:49:22,010 --> 01:49:23,920 Η σύγχρονη εκδοχή είναι στην αριστερή πλευρά. 2294 01:49:23,920 --> 01:49:26,240 Η ασύγχρονη έκδοση είναι στη δεξιά πλευρά. 2295 01:49:26,240 --> 01:49:29,170 Κοιτάξτε τους αριθμούς για να δείτε σε ποιες βήματα αντιστοιχούν σε ό, τι 2296 01:49:29,170 --> 01:49:30,610 εκτελεί σε κάθε γραμμή. 2297 01:49:30,610 --> 01:49:32,730 Εκεί, η ειδοποίηση εμφανίζεται για πρώτη φορά. 2298 01:49:32,730 --> 01:49:34,590 Γιατί να πάρει πληροφορίες μετοχών από το Yahoo! 2299 01:49:34,590 --> 01:49:37,250 διαρκεί τρία δευτερόλεπτα σβήσει για τρία δευτερόλεπτα. 2300 01:49:37,250 --> 01:49:39,880 Και τότε ειδοποιεί την τιμή μετά από αυτά τα τρία δευτερόλεπτα. 2301 01:49:39,880 --> 01:49:43,690 >> Έτσι τώρα, ότι δείχνει συναγερμού μέχρι εκείνη τη στιγμή - 2302 01:49:43,690 --> 01:49:44,610 τριών δευτερολέπτων μέσα 2303 01:49:44,610 --> 01:49:47,670 Και τότε ειδοποιούν μετά από αυτό. 2304 01:49:47,670 --> 01:49:48,930 Γι 'αυτό πηγαίνει ακριβώς βήμα προς βήμα. 2305 01:49:48,930 --> 01:49:51,200 Είναι σαν αυτό που εσείς θα δεχόταν, σωστά; 2306 01:49:51,200 --> 01:49:54,170 Με ασύγχρονη εκτέλεση, σας ειδοποιεί πρώτα. 2307 01:49:54,170 --> 01:49:57,410 Στη συνέχεια, μπορείτε να πάτε μακριά σε αυτό το URL. 2308 01:49:57,410 --> 01:49:59,530 Και λέτε, Πάω να απλώς να ρωτήσω για τα δεδομένα. 2309 01:49:59,530 --> 01:50:01,170 Και στη συνέχεια, Πάω να επεξεργαστεί αργότερα. 2310 01:50:01,170 --> 01:50:04,230 Έτσι, εκτελεί αμέσως την επόμενη γραμμή αφού κάνω ότι 2311 01:50:04,230 --> 01:50:05,710 ασύγχρονη αίτηση. 2312 01:50:05,710 --> 01:50:08,920 >> Έτσι, ένα 0,001 δευτερόλεπτα, θα δείτε hi συναγερμού. 2313 01:50:08,920 --> 01:50:10,960 Εκτελέστε αυτή τη λειτουργία, αντίο προειδοποίησης. 2314 01:50:10,960 --> 01:50:14,240 Και επειδή έκανα μια υπόσχεση που έχω θα επεξεργάζεται τα δεδομένα αργότερα, τι 2315 01:50:14,240 --> 01:50:17,920 που συμβαίνει είναι ότι τα δεδομένα όταν έρχεται πίσω τρία δευτερ λεπτα, στη συνέχεια, τρέχω ότι 2316 01:50:17,920 --> 01:50:21,380 λειτουργία που έχω εκεί. 2317 01:50:21,380 --> 01:50:21,870 Ναι; 2318 01:50:21,870 --> 01:50:25,750 >> ΚΟΙΝΟ: Μπορείτε να ορίσετε ή διευκρινίσει τι σημαίνει Ajax; 2319 01:50:25,750 --> 01:50:30,460 >> JOSEPH ONG: Έτσι Ajax είναι ένας τρόπος ότι αν Πρέπει δεδομένα όταν είμαι σε μια ιστοσελίδα και εγώ 2320 01:50:30,460 --> 01:50:34,690 Δεν θέλω να ανανεώσετε τη σελίδα και, στη συνέχεια Μπορώ να χρησιμοποιήσω αυτή την τεχνολογία που ονομάζεται Ajax. 2321 01:50:34,690 --> 01:50:40,630 Αυτό ουσιαστικά σημαίνει απλά, πηγαίνετε φέρω δεδομένα από μια άλλη ιστοσελίδα. 2322 01:50:40,630 --> 01:50:43,724 Και το κάνουμε με έναν τρόπο που μόνο δεν μπλοκάρει την ιστοσελίδα μου. 2323 01:50:43,724 --> 01:50:46,650 >> ΚΟΙΝΟ: Έτσι είναι ότι μια εγγενής μέρος της JavaScript ή jQuery; 2324 01:50:46,650 --> 01:50:50,590 >> JOSEPH ONG: Έτσι, κάποιος έγραψε ένα τρόπο για να γίνει Αυτό το javascript πριν από πολύ καιρό. 2325 01:50:50,590 --> 01:50:52,050 Σε ένα σημείο, δεν υπάρχει. 2326 01:50:52,050 --> 01:50:56,630 Και έτσι κάποιος εφηύρε την τεχνική να επιτρέπουν στα άτομα να ζητούν αυτά τα δεδομένα 2327 01:50:56,630 --> 01:50:57,680 με αυτό τον τρόπο. 2328 01:50:57,680 --> 01:50:59,550 Και έγραψαν κάποια πράγματα να το κάνει για εσάς. 2329 01:50:59,550 --> 01:51:01,605 Και jQuery σου δίνει ακριβώς αυτό πολύ καλός τρόπος για να το κάνουμε 2330 01:51:01,605 --> 01:51:03,112 με αυτό το $. πάρει λειτουργία. 2331 01:51:03,112 --> 01:51:07,200 2332 01:51:07,200 --> 01:51:09,480 ερωτήσεις; 2333 01:51:09,480 --> 01:51:11,560 Μπορώ να απαντήσει σε ερωτήσεις σχετικά Ajax αργότερα πάρα πολύ. 2334 01:51:11,560 --> 01:51:13,870 Θα είμαι εδώ. 2335 01:51:13,870 --> 01:51:16,390 >> Γι 'αυτό ας μας φέρω τα δεδομένα χωρίς ανανεώνοντας τη σελίδα. 2336 01:51:16,390 --> 01:51:18,200 Και ας μας το κάνετε αυτό στο ένα ασύγχρονο τρόπο που 2337 01:51:18,200 --> 01:51:19,450 δεν παγώσει τη σελίδα. 2338 01:51:19,450 --> 01:51:22,680 2339 01:51:22,680 --> 01:51:27,310 Πάρα πολύ καιρό, δεν είχε διαβάσει αν αυτό εξήγηση ήταν πολύ μεγάλο για σένα. 2340 01:51:27,310 --> 01:51:29,430 Έτσι, τελικά, cross-site scripting επιθέσεις. 2341 01:51:29,430 --> 01:51:30,910 Το είδαμε αυτό με Zamyla. 2342 01:51:30,910 --> 01:51:34,285 Εάν στη βάση δεδομένων μου κάποιος έχει αυτό το όνομα, ποια είναι αυτή η ετικέτα script, και εγώ 2343 01:51:34,285 --> 01:51:38,280 έχουν κάποιο κώδικα στη σελίδα μου που εκτυπώνεται τα ονόματα των ανθρώπων σε μια σειρά, ή να έχω 2344 01:51:38,280 --> 01:51:43,310 κάποιο κώδικα JavaScript που εισάγει αυτό το όνομα στη σελίδα, 2345 01:51:43,310 --> 01:51:45,680 τι HTML παίρνει παράγεται; 2346 01:51:45,680 --> 01:51:47,290 Λοιπόν, έχω να εκτυπώσετε την ετικέτα HTML. 2347 01:51:47,290 --> 01:51:48,390 Θα εκτυπώσετε όλες αυτές τις ετικέτες. 2348 01:51:48,390 --> 01:51:50,740 >> Παίρνω το μέρος όπου είμαι εκτύπωση έξω με τους φίλους μου. 2349 01:51:50,740 --> 01:51:52,980 Τυπώσω Lauren έξω. 2350 01:51:52,980 --> 01:51:54,200 Θα εκτυπώσετε Milo έξω. 2351 01:51:54,200 --> 01:51:56,810 Και τότε το όνομά μου στη βάση δεδομένων είναι σενάριο μετά 2352 01:51:56,810 --> 01:51:58,060 κολακευτικό κατάσταση στο Facebook. 2353 01:51:58,060 --> 01:52:00,740 2354 01:52:00,740 --> 01:52:04,330 Επειδή αυτό εισάγεται μέσα στη σελίδα γιατί μοιάζει JavaScript, όταν 2355 01:52:04,330 --> 01:52:07,930 αυτή η σελίδα παίρνει σταλεί στον χρήστη, παίρνει εκτελούνται ως το JavaScript. 2356 01:52:07,930 --> 01:52:10,800 Και έτσι αυτό είναι αυτό που αποκαλούμε cross-site scripting επίθεση. 2357 01:52:10,800 --> 01:52:14,570 Κάποιος βάζει κακόβουλες πληροφορίες της βάσης δεδομένων σας, που θα μπορούσε να αντιστοιχεί σε 2358 01:52:14,570 --> 01:52:17,080 ορισμένες πρόσθετες σπάγκο ή κάποια σειρά JavaScript. 2359 01:52:17,080 --> 01:52:20,130 >> Και όταν παίρνει εκτυπωθεί με την σελίδα με αυτό τον τρόπο, τότε τι 2360 01:52:20,130 --> 01:52:22,580 που συμβαίνει είναι ότι η κακή κώδικα εκτελείται ότι δεν είχε την πρόθεση 2361 01:52:22,580 --> 01:52:25,110 για να πάρει εκτελεστεί. 2362 01:52:25,110 --> 01:52:28,230 Και αυτό είναι όλο ένα cross-site scripting επίθεση είναι. 2363 01:52:28,230 --> 01:52:31,790 Και ο τρόπος που μπορείτε να πάρετε γύρω από αυτό είναι σαν Zamyla είπε. 2364 01:52:31,790 --> 01:52:34,340 Απλά τυλίξτε τα πράγματα σε HTML ειδικούς χαρακτήρες. 2365 01:52:34,340 --> 01:52:39,460 Και αυτό το HTML ειδικούς χαρακτήρες είναι ένα PHP λειτουργία που θα αποτρέψει αυτό το είδος 2366 01:52:39,460 --> 01:52:42,000 πράγμα από το να συμβεί σε σας αν έχετε ένα κακόβουλο 2367 01:52:42,000 --> 01:52:43,830 κορδόνι στη βάση δεδομένων σας. 2368 01:52:43,830 --> 01:52:47,650 Είναι ξεφεύγει απλά, έτσι ώστε να μην να ερμηνευθεί ως HTML. 2369 01:52:47,650 --> 01:52:50,960 Αντικαθιστά τα μικρά στηρίγματα με αυτό που αποκαλούμε οντότητες. 2370 01:52:50,960 --> 01:52:52,250 Και πήγαμε πάνω από αυτό στη διάλεξη πάρα πολύ. 2371 01:52:52,250 --> 01:52:55,800 Νομίζω λοιπόν ότι εσείς θα πρέπει να έχουν μια καλή κατανόηση σχετικά με αυτό. 2372 01:52:55,800 --> 01:52:57,420 Ερωτήσεις; 2373 01:52:57,420 --> 01:52:57,820 Ναι. 2374 01:52:57,820 --> 01:53:00,860 >> ΚΟΙΝΟ: Λοιπόν, πώς θα η [δεν ακούγεται]; 2375 01:53:00,860 --> 01:53:01,555 >> JOSEPH ONG: Πες το πάλι. 2376 01:53:01,555 --> 01:53:02,500 >> ΚΟΙΝΟ: Πώς θα την οθόνη - 2377 01:53:02,500 --> 01:53:02,860 >> JOSEPH ONG: Σωστά. 2378 01:53:02,860 --> 01:53:06,080 Έτσι έχετε κάτι που λέει, όταν Μπορώ να εγγραφώ, πληκτρολογήστε το όνομα μου. 2379 01:53:06,080 --> 01:53:09,390 Απλά πληκτρολογήστε σε αυτό το πεδίο, το όνομά μου είναι stript μετά κολακευτικό Facebook 2380 01:53:09,390 --> 01:53:11,570 κατάσταση κοντά tag script. 2381 01:53:11,570 --> 01:53:15,690 Και αυτό ακριβώς γίνεται τεθεί σε η βάση δεδομένων, επειδή δεν μπορώ να πω σε κάποιον 2382 01:53:15,690 --> 01:53:18,260 στον κόσμο δεν έχει ένα όνομα με ένα αριστερό βέλος σε αυτό ή το 2383 01:53:18,260 --> 01:53:19,036 script λέξη σε αυτό. 2384 01:53:19,036 --> 01:53:21,330 Αυτό δεν έχει νόημα. 2385 01:53:21,330 --> 01:53:24,560 Γι 'αυτό ακριβώς πρέπει να βεβαιωθείτε ότι αποστειρώνουν τα πράγματα πριν το εκτυπώσετε 2386 01:53:24,560 --> 01:53:25,420 έξω στη σελίδα. 2387 01:53:25,420 --> 01:53:27,140 >> ΚΟΙΝΟ: Έτσι, οι ειδικές κάρτες HTML αποτρέπει τις ετικέτες σενάριο; 2388 01:53:27,140 --> 01:53:28,710 >> JOSEPH ONG: Ναι. 2389 01:53:28,710 --> 01:53:29,960 Γι 'αυτό δεν εμποδίζει τις ετικέτες script. 2390 01:53:29,960 --> 01:53:32,320 Κάνει ακριβώς βέβαιος ότι η ετικέτες script δεν παίρνουν 2391 01:53:32,320 --> 01:53:35,120 ερμηνευθεί ως HTML ή - 2392 01:53:35,120 --> 01:53:35,400 ναι. 2393 01:53:35,400 --> 01:53:38,470 Αυτό ακριβώς έρχεται και τι είναι στην πραγματικότητα. 2394 01:53:38,470 --> 01:53:39,220 Εντάξει. 2395 01:53:39,220 --> 01:53:40,930 Έτσι, αυτό ήταν η αναθεώρηση κουίζ. 2396 01:53:40,930 --> 01:53:41,830 Cool. 2397 01:53:41,830 --> 01:53:45,088 >> [Χειροκροτήματα]