1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVID MALAN: Εντάξει. 3 00:00:12,360 --> 00:00:15,970 Αυτό είναι CS50, και αυτό είναι το τέλος της εβδομάδας εννέα. 4 00:00:15,970 --> 00:00:18,560 Είναι μια λαίλαπα πάνω τις τελευταίες ημέρες. 5 00:00:18,560 --> 00:00:21,580 Και το πρόβλημα που επτά, αν είστε στο γόνατο βαθιά σε αυτό, συνειδητοποιούν ότι υπάρχει μια αρκετά 6 00:00:21,580 --> 00:00:23,340 bit νέο που υπάρχει εκεί. 7 00:00:23,340 --> 00:00:26,660 Αλλά ας δούμε αν δεν μπορούμε να συναρμολογήσουν όλα μαζί εδώ εν συντομία 8 00:00:26,660 --> 00:00:29,230 πριν από τότε προσανατολίζονταν μακριά ακόμα Μια άλλη κατεύθυνση και βλέποντας 9 00:00:29,230 --> 00:00:30,510 πού αλλού μπορούμε να πάμε. 10 00:00:30,510 --> 00:00:32,630 >> Έτσι λοιπόν και σήμερα, έχουμε μιλήσει για HTML. 11 00:00:32,630 --> 00:00:33,740 Έχουμε μιλήσει για CSS. 12 00:00:33,740 --> 00:00:34,705 Έχουμε μιλήσει για την PHP. 13 00:00:34,705 --> 00:00:36,520 Έχετε αρχίσει να βιώσουν SQL. 14 00:00:36,520 --> 00:00:38,360 Σήμερα, θα μιλήσουμε λίγο περίπου JavaScript. 15 00:00:38,360 --> 00:00:41,230 Αλλά πώς όλα αυτά τα ανόμοια γλώσσες ταιριάζουν μεταξύ τους; 16 00:00:41,230 --> 00:00:44,970 >> Έτσι μιλήσαμε την περασμένη εβδομάδα σχετικά με το έννοια της ύπαρξης ενός διακομιστή. 17 00:00:44,970 --> 00:00:48,470 Έτσι, ας συντάξει ακριβώς αυτό το ορθογώνιο ως web server εδώ. 18 00:00:48,470 --> 00:00:52,200 Και ενός web server εξυπηρετεί σίγουρα αρχεία. 19 00:00:52,200 --> 00:00:54,640 Και μερικά από αυτά τα αρχεία μπορεί να είναι HTML αρχεία. 20 00:00:54,640 --> 00:00:58,270 Έτσι, ένα από τα πράγματα που ένας διακομιστής web μπορεί να φτύσει μπορεί να είναι ένα αρχείο που 21 00:00:58,270 --> 00:01:01,290 εμείς απλώς θα αντλήσει όπως αυτό περιέχει HTML. 22 00:01:01,290 --> 00:01:04,786 Έτσι, σε απλή γλώσσα, αυτό HTML δεν σας επιτρέπει να κάνετε; 23 00:01:04,786 --> 00:01:06,036 >> ΚΟΙΝΟ: Page φαίνονται ωραία. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVID MALAN: OK, κάνει μια σελίδα να φαίνονται ωραία, αν και νομίζω ότι έχω αποδείξει 26 00:01:12,310 --> 00:01:13,370 ότι διαφορετικά. 27 00:01:13,370 --> 00:01:18,250 Έτσι HTML σας αφήνει να τοποθετήσετε σελίδες δομικά, και σας επιτρέπει να 28 00:01:18,250 --> 00:01:22,410 είδος αισθητικά σηματοδοτήσει μια σελίδα, επισημάνετε στατικό περιεχόμενο, έτσι ώστε να 29 00:01:22,410 --> 00:01:23,640 μπορείτε να δείτε στη συνέχεια με ένα web browser. 30 00:01:23,640 --> 00:01:24,690 >> Αλλά αυτό είναι το κλειδί. 31 00:01:24,690 --> 00:01:26,130 Είναι στατικό περιεχόμενο. 32 00:01:26,130 --> 00:01:28,590 Μπορείτε να γράψετε, μπορείτε να αποθηκεύσετε, και στη συνέχεια να το στείλει. 33 00:01:28,590 --> 00:01:31,130 Και ο web server εξυπηρετεί συνέχεια επάνω τους επισκέπτες σας. 34 00:01:31,130 --> 00:01:35,700 >> Αλλά εμείς στυλιζαρίσματος τα πράγματα με ένα διαφορετικό γλώσσα εντελώς. 35 00:01:35,700 --> 00:01:40,150 Αρχίσαμε να χρησιμοποιήσετε ένα χαρακτηριστικό στυλ σε ορισμένες ετικέτες. 36 00:01:40,150 --> 00:01:43,400 Και το χαρακτηριστικό στυλ ας που πράγματα όπως το μέγεθος της γραμματοσειράς και το χρώμα. 37 00:01:43,400 --> 00:01:46,460 Και πιθανώς έχετε αρχίσει να ανακαλύψουν, ή σύντομα θα είναι για την τελική 38 00:01:46,460 --> 00:01:50,160 έργα ενδεχομένως, ακόμη άλλες ιδιότητες που μπορείτε να χρησιμοποιήσετε στο CSS. 39 00:01:50,160 --> 00:01:54,710 Και έτσι σε απλή γλώσσα, αυτό τότε πραγματικά δεν CSS κάνουμε; 40 00:01:54,710 --> 00:01:57,810 Αυτά είναι μόνο παραδείγματα αυτής. 41 00:01:57,810 --> 00:02:00,730 Τι αφήσω να το κάνεις HTML δεν φαίνεται να από ό, τι 42 00:02:00,730 --> 00:02:02,606 έχουμε δει μέχρι τώρα; 43 00:02:02,606 --> 00:02:04,850 >> ΚΟΙΝΟ: Ορισμός στυλ από τον εαυτό σας. 44 00:02:04,850 --> 00:02:06,700 >> DAVID MALAN: Ορισμός στυλ από τον εαυτό σας. 45 00:02:06,700 --> 00:02:10,280 Έτσι καθορίζουν τα πράγματα όπως τα μαθήματα, όπως σας μπορεί να έχουν συναντήσει, ή αποκλειστικά 46 00:02:10,280 --> 00:02:13,800 εντοπίσει τους κόμβους σε ένα έγγραφο, ώστε ότι μπορείτε να τα στυλιζάρω. 47 00:02:13,800 --> 00:02:16,890 Όμως, πιο συγκεκριμένα, θα έλεγα ότι CSS πραγματικά σας επιτρέπει να πάρετε τα πράγματα η 48 00:02:16,890 --> 00:02:20,790 τελευταίο μίλι και σας επιτρέπει να καθορίσετε πολύ ακριβέστερα την αισθητική, 49 00:02:20,790 --> 00:02:24,340 λαμβάνοντας υπόψη ότι η HTML ως επί το πλείστον επιτρέπει Σας δομή σελίδες σας. 50 00:02:24,340 --> 00:02:27,310 >> Και ακόμα κι αν υπάρχουν κάποιες προκαθορισμένες ρυθμίσεις, όπως είδαμε την ετικέτα για 51 00:02:27,310 --> 00:02:30,690 μια επικεφαλίδα ετικέτα, η οποία σε γενικές γραμμές κάνει τα πράγματα μεγάλο και τολμηρό. 52 00:02:30,690 --> 00:02:34,250 Αυτό είναι ένα πολύ γενικός ορισμός της ετικέτας - μεγάλες και τολμηρές. 53 00:02:34,250 --> 00:02:35,260 Ποιο είναι το μέγεθος της γραμματοσειράς είναι αυτό; 54 00:02:35,260 --> 00:02:36,080 Τι χρώμα είναι αυτό; 55 00:02:36,080 --> 00:02:36,890 Πόσο τολμηρό είναι αυτό; 56 00:02:36,890 --> 00:02:39,830 Και CSS σας επιτρέπει πιο λεπτή μελωδία πράγματα όπως αυτό. 57 00:02:39,830 --> 00:02:42,150 Καθώς και τη διάταξη, όπως μερικοί από εσάς έχετε δει. 58 00:02:42,150 --> 00:02:45,180 >> Και ειλικρινά, CSS είναι λίγο του ένα βρώμικο γλώσσας. 59 00:02:45,180 --> 00:02:48,370 Είναι πολύ ισχυρή, δεδομένου ότι μπορείτε να κάνετε κυριολεκτικά κάθε ιστοσελίδα που έχετε 60 00:02:48,370 --> 00:02:51,880 δει στο διαδίκτυο σήμερα με αυτό, αλλά είναι το είδος του πόνου στο λαιμό. 61 00:02:51,880 --> 00:02:54,440 Και κάποιοι από εσάς έχετε χτυπούσαν το κεφάλι σας ενάντια στους τοίχους ήδη απλά για να κάνουμε 62 00:02:54,440 --> 00:02:58,560 κάτι ηλίθιο, όπως το κέντρο ένα μενού το πρόβλημα που επτά, αν έχετε πάρει την 63 00:02:58,560 --> 00:02:59,470 αυτό το σημείο ήδη. 64 00:02:59,470 --> 00:03:01,530 >> Αλλά συνειδητοποιούν, αυτά τα πράγματα πάρει ευκολότερη την πάροδο του χρόνου. 65 00:03:01,530 --> 00:03:02,820 Θα αρχίσετε να παρατηρείτε τα πρότυπα. 66 00:03:02,820 --> 00:03:06,020 Και πάλι, η Google θα είναι ο φίλος σας για τους διάφορους τρόπους με τους οποίους μπορείτε να 67 00:03:06,020 --> 00:03:07,220 επιλύσει τέτοιου είδους προβλήματα. 68 00:03:07,220 --> 00:03:11,520 >> Και τολμώ να πω με CSS, HTML και περισσότερα Σε γενικές γραμμές, μπορείτε να λύσετε τα προβλήματα στο 69 00:03:11,520 --> 00:03:15,910 πολλοί περισσότεροι τρόποι, το σύνολο των οποίων θα μπορούσε πολύ καλά να είναι σωστό, από ό, τι θα μπορούσατε 70 00:03:15,910 --> 00:03:18,900 σε κάτι σαν C, ακόμα και τώρα PHP ή JavaScript. 71 00:03:18,900 --> 00:03:21,080 Υπάρχουν απλά πολλές διαφορετικές τρόπους για να θέσει τα πράγματα. 72 00:03:21,080 --> 00:03:22,570 >> Αλλά αυτό άρχισε να βρώμικο, είπαμε. 73 00:03:22,570 --> 00:03:26,480 Ακριβώς το είδος της συνεύρεση HTML σας και CSS σας με το χαρακτηριστικό ύφος ήταν 74 00:03:26,480 --> 00:03:27,590 λίγο ατημέλητη. 75 00:03:27,590 --> 00:03:31,460 Και έτσι αντί να πει, το είδος της αφηρημένα μιλώντας, ότι θα πρέπει να 76 00:03:31,460 --> 00:03:34,050 τουλάχιστον να αρχίσουν να παράγοντα out CSS σας πιθανώς. 77 00:03:34,050 --> 00:03:37,430 Δεν είναι χαρακτηριστικά το στυλ σας, αλλά τουλάχιστον χρησιμοποιήσετε την ετικέτα στυλ μέσα σε ό, τι 78 00:03:37,430 --> 00:03:38,840 μέρος της ιστοσελίδας; 79 00:03:38,840 --> 00:03:39,560 >> Κοινό: Head. 80 00:03:39,560 --> 00:03:40,120 >> DAVID MALAN: Στο κεφάλι. 81 00:03:40,120 --> 00:03:43,270 Μέχρι τώρα, είχαμε μόνο τον τίτλο μέχρι εκεί, αλλά μπορείτε επίσης να προσθέσετε ένα στυλ 82 00:03:43,270 --> 00:03:47,230 tag, και μπορείτε να βάλετε CSS σας περίπου μιλώντας προς το επάνω μέρος της σελίδας. 83 00:03:47,230 --> 00:03:52,550 Στη συνέχεια, όμως πήραμε τα πράγματα ένα βήμα πιο πέρα και εμείς υπολογιστεί ότι περισσότερες 84 00:03:52,550 --> 00:03:54,130 σε ένα ξεχωριστό αρχείο. 85 00:03:54,130 --> 00:03:57,240 >> Και έτσι αυτά τα δύο αρχεία ήταν κάπως τώρα που συνδέονται. 86 00:03:57,240 --> 00:03:59,550 Και πράγματι, ήταν η ετικέτα που το έκανε αυτό. 87 00:03:59,550 --> 00:04:02,920 Και αυτό ήταν ένας από τους πρωταρχικούς κίνητρα για factoring out CSS μας 88 00:04:02,920 --> 00:04:04,057 ακόμη περισσότερο; 89 00:04:04,057 --> 00:04:05,280 >> Κοινό: Επαναχρησιμοποίηση. 90 00:04:05,280 --> 00:04:05,785 >> DAVID MALAN: Επαναχρησιμοποίηση. 91 00:04:05,785 --> 00:04:06,150 Σωστά; 92 00:04:06,150 --> 00:04:09,470 Μπορεί να έχετε δει σε p-set επτά ήδη ότι πολλές από τις σελίδες, η 93 00:04:09,470 --> 00:04:12,260 αγορά της σελίδας, η πώληση της σελίδας, η σελίδα του χαρτοφυλακίου, είναι κατά πάσα πιθανότητα 94 00:04:12,260 --> 00:04:13,550 δομημένη κάπως παρόμοια. 95 00:04:13,550 --> 00:04:17,579 Υπάρχει μια CS50 logo χρηματοδότηση στην κορυφή εκτός και αν έχετε αποφασίσει να το αλλάξετε. 96 00:04:17,579 --> 00:04:19,839 Υπάρχει ένα υποσέλιδο, στο κάτω μέρος των σελίδων. 97 00:04:19,839 --> 00:04:24,315 Και CSS σας επιτρέπει στη συνέχεια να το συνυπολογίσει αυτό σε ένα ξεχωριστό αρχείο, έτσι ώστε αν 98 00:04:24,315 --> 00:04:27,780 θέλετε να αλλάξετε κάτι σε παγκόσμιο επίπεδο σε όλο το site σας, μπορείτε πραγματικά 99 00:04:27,780 --> 00:04:29,390 απλά να το αλλάξετε σε ένα μέρος. 100 00:04:29,390 --> 00:04:32,750 >> Αλλά υπάρχει μια τιμή που πληρώνετε δυνητικά με έχουν υπολογιστεί από το 101 00:04:32,750 --> 00:04:38,380 CSS από το HTML αρχείο μου σε ένα ξεχωριστό υποβάλλουν αναφορά με την 102 00:04:38,380 --> 00:04:40,650 tag, που είδαμε τη Δευτέρα. 103 00:04:40,650 --> 00:04:43,850 Τι θα μπορούσε να είναι το μειονέκτημα αυτό; 104 00:04:43,850 --> 00:04:48,830 Η σκέψη πίσω πριν από μία εβδομάδα για το πότε είμαστε μιλάμε για HTTP και TCP / IP και πώς 105 00:04:48,830 --> 00:04:52,070 το διαδίκτυο λειτουργεί. 106 00:04:52,070 --> 00:04:53,530 Κάτι εδώ; 107 00:04:53,530 --> 00:04:54,730 >> ΚΟΙΝΟ: Παίρνει περισσότερο χρόνο. 108 00:04:54,730 --> 00:04:55,470 >> DAVID MALAN: Παίρνει περισσότερο χρόνο. 109 00:04:55,470 --> 00:04:56,750 Γιατί; 110 00:04:56,750 --> 00:04:59,450 >> ΚΟΙΝΟ: [δεν ακούγεται]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID MALAN: Ναι. 112 00:04:59,750 --> 00:05:01,240 Γι 'αυτό χρειάζεται αναμφισβήτητα λίγο περισσότερο χρόνο. 113 00:05:01,240 --> 00:05:04,290 Επειδή ένα, το CSS είναι προφανώς όχι στο ίδιο αρχείο. 114 00:05:04,290 --> 00:05:06,920 Έτσι τώρα θα πρέπει να μην κάνει μία, αλλά δύο αιτήματα. 115 00:05:06,920 --> 00:05:11,230 Και κάθε μία από τις αιτήσεις αυτές, όπως είδαμε στο Chrome στο λεγόμενο Επιθεωρητή, 116 00:05:11,230 --> 00:05:15,740 και κοιτάξαμε την καρτέλα του δικτύου, κάθε αυτών των αρχείων απαιτεί ένα HTTP 117 00:05:15,740 --> 00:05:18,360 αίτημα, το οποίο είδαμε παίρνει κάποια ποσότητα του χρόνου. 118 00:05:18,360 --> 00:05:19,290 Τώρα, ίσως δεν είναι πολλά. 119 00:05:19,290 --> 00:05:20,670 Ίσως είναι μόνο 20 χιλιοστά του δευτερολέπτου. 120 00:05:20,670 --> 00:05:22,260 Ίσως είναι 200 ​​χιλιοστά του δευτερολέπτου. 121 00:05:22,260 --> 00:05:25,530 >> Αλλά σκεφτείτε για μια σελίδα, όπως το Facebook, ή CNN, ή το Google, το οποίο είναι πολύ 122 00:05:25,530 --> 00:05:28,060 μεγαλύτερα από τα παραδείγματα που έχουμε κοίταξε μέχρι στιγμής. 123 00:05:28,060 --> 00:05:32,070 Οι σελίδες αυτές μπορεί να έχουν δεκάδες αρχεία, καθένα από τα οποία μπορεί να απαιτήσει 124 00:05:32,070 --> 00:05:33,550 λήψη ενός αρχείου. 125 00:05:33,550 --> 00:05:35,800 Έτσι, τα πράγματα μπορεί ενδεχομένως να αρχίσει να επιβραδύνει. 126 00:05:35,800 --> 00:05:39,280 >> Και ειδικά αυτές τις μέρες, όταν όλοι έχουν τα κινητά τηλέφωνα στις τσέπες μας και 127 00:05:39,280 --> 00:05:43,010 Στις πιο αργές συνδέσεις, χρειάζεται να περιμένετε μερικά χιλιοστά του δευτερολέπτου, λίγα 128 00:05:43,010 --> 00:05:46,110 περισσότερα χιλιοστά του δευτερολέπτου για πρόσθετες αρχεία μπορεί πραγματικά να είναι αργή. 129 00:05:46,110 --> 00:05:50,430 Latency είναι η λέξη που περιγράφει την το είδος της αναμονής ότι έχετε ότι 130 00:05:50,430 --> 00:05:53,110 αντιμετωπίσετε κατά την αναμονή για κάποιο κομμάτι των πληροφοριών. 131 00:05:53,110 --> 00:05:54,430 >> Αλλά υπάρχει και η άλλη πλευρά. 132 00:05:54,430 --> 00:05:56,600 Γι 'αυτό δεν είναι όλο το είδος των α - 133 00:05:56,600 --> 00:05:58,170 στην πραγματικότητα είναι ένα κομμάτι από μια τραμπάλα εδώ. 134 00:05:58,170 --> 00:06:02,970 Απαισιόδοξη τώρα, αλλά τι μπορούν να κάνουν browsers αν είσαι έξυπνος, προκειμένου να αποφευχθεί 135 00:06:02,970 --> 00:06:08,870 να χρειάζεται να ζητήσει από την ίδια styles.css το αρχείο και πάλι μπορεί να είναι να κάνει τι; 136 00:06:08,870 --> 00:06:09,390 >> Cache αυτό. 137 00:06:09,390 --> 00:06:10,370 Έτσι, προσωρινή αποθήκευση - 138 00:06:10,370 --> 00:06:11,690 Ο-Α-Ο-Η-Ε - 139 00:06:11,690 --> 00:06:15,810 γενικά σημαίνει εδώ μόνο για να σώσει την αρχείο που ζήτησε την πρώτη φορά, και 140 00:06:15,810 --> 00:06:17,440 Στη συνέχεια ελέγξτε cache σας για αυτό. 141 00:06:17,440 --> 00:06:20,400 Βεβαιωθείτε ότι είστε το είδος του περιέκτη αποθήκευσης, και αν έχετε ήδη ένα 142 00:06:20,400 --> 00:06:24,520 αντίγραφο της styles.css, ακόμη και αν κάποιο άλλο σελίδα στην p-set, ή οποιοδήποτε δικτυακό τόπο, 143 00:06:24,520 --> 00:06:28,560 ζητεί και πάλι, ακριβώς για να δώσει το χρήστη το ίδιο αποθηκευμένο αντίγραφο. 144 00:06:28,560 --> 00:06:30,140 Μην ενοχλείστε ζητά. 145 00:06:30,140 --> 00:06:32,560 >> Απαισιόδοξη εκεί, όμως, όπως κάποιοι από εσάς έχουν σκοντάψει πάνω στο p-set. 146 00:06:32,560 --> 00:06:35,870 Αν κάνετε μια αλλαγή στον server και μπορείτε να επιστρέψετε στο πρόγραμμα περιήγησης και 147 00:06:35,870 --> 00:06:39,250 reload, μερικές φορές το πρόγραμμα περιήγησης κάνει Είστε υπέρ και δεν ενοχλεί 148 00:06:39,250 --> 00:06:43,660 εκ νέου λήψη του αρχείου styles.css σας διότι, έλα, τι είναι οι πιθανότητες 149 00:06:43,660 --> 00:06:47,620 ότι αυτά τα στυλ που χρησιμοποιεί το Facebook πρόκειται να αλλάξει από ώρα σε ώρα ή 150 00:06:47,620 --> 00:06:48,140 μέρα με τη μέρα; 151 00:06:48,140 --> 00:06:48,800 Είναι αρκετά χαμηλή. 152 00:06:48,800 --> 00:06:52,260 Μπορεί να αλλάξει με την πάροδο του χρόνου, αλλά δεν από το λεπτό ή από την ώρα. 153 00:06:52,260 --> 00:06:55,810 >> Έτσι, ένα τέχνασμα, απλά FYI όταν κάνει web ανάπτυξης, συχνά κρατήστε πατημένο το πλήκτρο 154 00:06:55,810 --> 00:06:59,500 το πλήκτρο shift, για παράδειγμα, και στη συνέχεια κάντε κλικ στο κουμπί φορτώσετε στον browser σας, και που θα 155 00:06:59,500 --> 00:07:03,280 συνήθως λένε την επαναφόρτωση του προγράμματος περιήγησης τα πάντα, ακόμα και αν έχετε ήδη 156 00:07:03,280 --> 00:07:04,180 στην κρυφή μνήμη. 157 00:07:04,180 --> 00:07:06,630 Έτσι και πάλι, upsides και μειονεκτήματα, αλλά όλοι τους 158 00:07:06,630 --> 00:07:08,260 τελικά αποφάσεις σχεδιασμού. 159 00:07:08,260 --> 00:07:11,520 >> Μέχρι τώρα, δεν είχαμε μόνο τερματίσετε την ιστορία εδώ. 160 00:07:11,520 --> 00:07:15,790 Αν εγώ τώρα πάω πίσω και πίσω και πίσω και πίσω, αρχίσαμε να εισαγάγει όχι μόνο 161 00:07:15,790 --> 00:07:18,060 HTML, αλλά η PHP. 162 00:07:18,060 --> 00:07:20,786 Έτσι, σε απλή γλώσσα, αυτό δεν PHP ας κάνουμε; 163 00:07:20,786 --> 00:07:22,770 >> ΚΟΙΝΟ: [δεν ακούγεται]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID MALAN: Τι είναι αυτό; 165 00:07:24,258 --> 00:07:25,250 >> ΚΟΙΝΟ: Καθιέρωση λογική στον κώδικα. 166 00:07:25,250 --> 00:07:26,620 >> DAVID MALAN: Ναι, να εισαγάγει λογική στον κώδικά σας. 167 00:07:26,620 --> 00:07:29,570 Έτσι, αυτό είναι μια αληθινή γλώσσα προγραμματισμού με βρόχους, και τις μεταβλητές, και 168 00:07:29,570 --> 00:07:32,620 λειτουργίες και τις συνθήκες, και όλα τα πράγματα που έχουμε χρησιμοποιήσει δρόμο της επιστροφής 169 00:07:32,620 --> 00:07:33,780 όταν από το μηδέν. 170 00:07:33,780 --> 00:07:36,780 Και PHP, έχουμε δει, μπορεί να χρησιμοποιηθεί είτε στη γραμμή εντολών - το 171 00:07:36,780 --> 00:07:39,190 δεν πρέπει να έχει τίποτα να κάνει με το διαδίκτυο, ακόμη και αν αυτό είναι 172 00:07:39,190 --> 00:07:43,150 πραγματικά τις ρίζες της και ό, τι τείνει να είναι καλό και ευνοϊκό για - 173 00:07:43,150 --> 00:07:47,130 αλλά μπορείτε να χρησιμοποιήσετε το PHP απλώς από τη φύση το γεγονός ότι έχει μια εκτύπωση () 174 00:07:47,130 --> 00:07:49,660 λειτουργία, και μια printf (λειτουργία), ή μια ηχώ (λειτουργία). 175 00:07:49,660 --> 00:07:52,440 Υπάρχει τσαμπιά τρόποι που μπορείτε να εκτυπώσετε κείμενο με την PHP. 176 00:07:52,440 --> 00:07:56,540 >> Ως εκ τούτου, μπορείτε να χρησιμοποιήσετε αυτόν τον προγραμματισμό γλώσσα στην έξοδο ακριβώς 177 00:07:56,540 --> 00:07:58,460 τι λέγαμε πριν. 178 00:07:58,460 --> 00:08:01,360 Μπορείτε να δημιουργήσετε δυναμικά HTML σας. 179 00:08:01,360 --> 00:08:02,300 Ίσως όχι όλα. 180 00:08:02,300 --> 00:08:06,460 Ίσως σκληρά πράγματα κώδικα, όπως το κεφαλίδα και το υποσέλιδο, και το λογότυπο, 181 00:08:06,460 --> 00:08:07,950 και τα φύλλα στυλ σας, και όλα αυτά. 182 00:08:07,950 --> 00:08:11,190 Αλλά για κάτι σαν p-έθεσε επτά, όπου είστε το χειρισμό των αποθεμάτων και 183 00:08:11,190 --> 00:08:14,690 δείχνει το χαρτοφυλάκιο του χρήστη, η οποία είναι πρόκειται να αλλάξει δυναμικά, θα μπορούσε να 184 00:08:14,690 --> 00:08:18,960 σίγουρα χρησιμοποιούν PHP και τη λογική που δίνει σας ως γλώσσα προγραμματισμού για να 185 00:08:18,960 --> 00:08:22,320 εξόδου υποσύνολα δυναμικά της σελίδας. 186 00:08:22,320 --> 00:08:25,900 >> Έτσι, όταν μιλάμε για δυναμικές ιστοσελίδες, ή web προγραμματισμό, που είναι 187 00:08:25,900 --> 00:08:27,200 τι είστε πραγματικά μιλάμε. 188 00:08:27,200 --> 00:08:31,450 Χρησιμοποιώντας μια γλώσσα όπως η PHP, ή τα πράγματα ονομάζεται Python, Ruby ή, ή Java, ή 189 00:08:31,450 --> 00:08:35,900 ακόμη άλλες γλώσσες, για την αναζήτηση μιας βάσης δεδομένων συχνά, ή άλλο διακομιστή, και 190 00:08:35,900 --> 00:08:38,580 στη συνέχεια να φτύσει έξω δυναμικά HTML. 191 00:08:38,580 --> 00:08:42,470 >> Τώρα το τελικό αποτέλεσμα, ως ένα μέρος, είναι ότι η HTML από τις περισσότερες ιστοσελίδες, 192 00:08:42,470 --> 00:08:45,970 συμπεριλαμβανομένης της p-έθεσε επτά σας, είναι πιθανώς πρόκειται να είναι ένα τεράστιο χάος, αν 193 00:08:45,970 --> 00:08:48,060 Αν κοιτάξει κανείς την πηγή κώδικα σε ένα πρόγραμμα περιήγησης. 194 00:08:48,060 --> 00:08:49,010 Αυτό δεν είναι μια μεγάλη υπόθεση. 195 00:08:49,010 --> 00:08:51,550 Σε αυτό το σημείο, όταν νοιαζόμαστε για στυλ, νοιαζόμαστε για το 196 00:08:51,550 --> 00:08:52,740 πράγματα που γράφετε. 197 00:08:52,740 --> 00:08:56,240 Εμείς δεν θα νοιάζονται για την ουσία ότι αυτό εξόδους κωδικό σας. 198 00:08:56,240 --> 00:08:59,520 Γι 'αυτό μην ανησυχείτε για εσοχή εδώ αν είναι PHP που είναι 199 00:08:59,520 --> 00:09:01,190 στην πραγματικότητα έξοδο πράγματα. 200 00:09:01,190 --> 00:09:04,430 Μετά από όλα, το πρόγραμμα περιήγησης δεν θα με νοιάζει, και ένα ανθρώπινο δεν θα πρέπει να ψάχνει 201 00:09:04,430 --> 00:09:05,400 στην πηγή έτσι κι αλλιώς. 202 00:09:05,400 --> 00:09:09,000 Εμείς το προσωπικό, για παράδειγμα, θα να ψάχνει σε PHP σας. 203 00:09:09,000 --> 00:09:13,440 >> Έτσι, επιτρέψτε μου να σας δώσω ένα γρήγορο παράδειγμα τώρα γιατί αλλιώς αυτό μπορεί να είναι χρήσιμο. 204 00:09:13,440 --> 00:09:18,620 Έτσι, ειλικρινά, δεν μπορώ να θυμηθώ την τελευταία φορά που χρησιμοποίησα C για να λύσει ένα πρόβλημα στην 205 00:09:18,620 --> 00:09:19,620 ο πραγματικός κόσμος. 206 00:09:19,620 --> 00:09:22,330 Ήταν πιθανότατα απόφοιτος του σχολείου, όταν Έπρεπε να χρησιμοποιήσει μια γλώσσα που 207 00:09:22,330 --> 00:09:26,710 ήταν αρκετά χαμηλό επίπεδο και μου έδωσε το ευκαιρία να κάνουμε κάτι πολύ υψηλή 208 00:09:26,710 --> 00:09:30,720 εκτελεί πραγματικά να σώσει όσες CPU κύκλους, όπως θα μπορούσα, σε μεγάλο βαθμό 209 00:09:30,720 --> 00:09:33,990 γιατί ήμουν με τεράστια σύνολα δεδομένων, και σε κάθε κύκλο CPU υπολογίζονται. 210 00:09:33,990 --> 00:09:37,750 Και ειλικρινά, ακόμα και σε πράγματα όπως τα κινητά τηλέφωνα αυτές τις μέρες και άλλες συσκευές 211 00:09:37,750 --> 00:09:39,910 όπου δεν έχετε αρκετά ως πολύ μνήμη και δεν έχετε αρκετά ως 212 00:09:39,910 --> 00:09:44,160 πολύ CPU, με ταχύτερες γλώσσες εξακολουθεί να είναι ελκυστική. 213 00:09:44,160 --> 00:09:47,290 >> Όμως στον πραγματικό κόσμο, όταν απλά θέλετε να ρίξει κάποιο πρόγραμμα, μαζί με 214 00:09:47,290 --> 00:09:50,340 αναλύσει κάποια δεδομένα, ή έχετε συλλέξει ένα σωρό εγγραφές για 215 00:09:50,340 --> 00:09:53,330 κάποια ομάδα φοιτητών και θέλετε να είναι πολύ γρήγορα να αυτοματοποιήσει την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου 216 00:09:53,330 --> 00:09:56,240 μία προς μία σε κάθε ένα από αυτά καταχωρίζοντες, θα πάμε για να φθάσει για 217 00:09:56,240 --> 00:09:59,240 μια γλώσσα υψηλού επιπέδου από το C να το πω έτσι. 218 00:09:59,240 --> 00:10:04,060 Κάτι σαν PHP ή Python ή Ruby, ή μισή ντουζίνα άλλοι που υπάρχουν 219 00:10:04,060 --> 00:10:04,550 αυτές τις μέρες. 220 00:10:04,550 --> 00:10:07,200 Αλλά αυτοί οι τρεις είναι πιθανώς το πιο trendy τώρα. 221 00:10:07,200 --> 00:10:10,840 >> Και τι σημαίνει αυτό είναι ότι μπορείτε να ανοίξετε μέχρι ένα πρόγραμμα επεξεργασίας κειμένου όπως το gedit ή 222 00:10:10,840 --> 00:10:14,030 πιο οτιδήποτε άλλο και στη συνέχεια, μόλις αρχίσει γράφοντας κώδικα χωρίς να χρειάζεται να ανησυχείτε 223 00:10:14,030 --> 00:10:17,800 σχετικά με την κατάρτιση, χωρίς να χρειάζεται να πραγματικά ανησυχούν για τη διαχείριση της μνήμης, 224 00:10:17,800 --> 00:10:20,820 έχοντας κατά νου όμως ότι ένα μικρό προχειρότητα τελικά θα επανέλθει 225 00:10:20,820 --> 00:10:24,790 να σας δαγκώσει αν το σύνολο δεδομένων γίνεται μεγαλύτερες ή το πρόβλημα παίρνει μεγάλες. 226 00:10:24,790 --> 00:10:27,230 Αλλά τι σημαίνει αυτό για μας είναι η ακόλουθη. 227 00:10:27,230 --> 00:10:29,860 >> Επιτρέψτε μου να πάμε μπροστά και να τρέξει ορθογράφος από το πρόβλημα που έχει έξι. 228 00:10:29,860 --> 00:10:33,480 Έτσι, αυτό είναι trie-based εφαρμογή μου που θα χρησιμοποιηθούν για το μεγάλο 229 00:10:33,480 --> 00:10:35,500 διοικητικού συμβουλίου, όπου δεν πάει τόσο καλά. 230 00:10:35,500 --> 00:10:38,720 Θα έρθει πίσω στο χρόνο μιας εβδομάδας και επανεξετάσουμε όσους δεν καταλήγουν στην κορυφή του 231 00:10:38,720 --> 00:10:40,430 μεγάλο πλοίο σε τελευταία διάλεξη μας. 232 00:10:40,430 --> 00:10:44,520 Αλλά για τώρα, επιτρέψτε μου να πάει μπροστά και απλά τρέχει λύση μου στο κείμενο, και εμείς θα κάνουμε 233 00:10:44,520 --> 00:10:48,460 το King James Bible, και εδώ είμαστε. 234 00:10:48,460 --> 00:10:51,080 >> Έτσι, αυτά είναι όλα τα δήθεν ανορθόγραφες λέξεις από 235 00:10:51,080 --> 00:10:52,240 το King James Bible. 236 00:10:52,240 --> 00:10:55,560 Και την εφαρμογή μου πήρε μισό δευτερόλεπτο στο σύνολο. 237 00:10:55,560 --> 00:10:58,270 Έτσι, δεν είναι πολύ κακό για το θέμα αυτό συγκεκριμένο υπολογιστή. 238 00:10:58,270 --> 00:11:01,540 Αλλά σκεφτείτε πόσο κώδικα που είχα να γράψω. 239 00:11:01,540 --> 00:11:02,880 Σκεφτείτε πόσο κωδικό που έπρεπε να γράψω. 240 00:11:02,880 --> 00:11:06,170 Σκεφτείτε πόσες ώρες αφιερώσατε στο D-αίθουσα ή dorm σας ή οπουδήποτε 241 00:11:06,170 --> 00:11:07,890 στην πραγματικότητα κωδικοποίησαν αυτή τη λύση. 242 00:11:07,890 --> 00:11:11,850 >> Λοιπόν, αν έχω πραγματικά ένα υψηλότερο επίπεδο γλώσσα όπως PHP, να λαμβάνει γνώση των 243 00:11:11,850 --> 00:11:13,350 τι μπορώ να κάνω εδώ. 244 00:11:13,350 --> 00:11:16,410 Πρώτον, ας υποθέσουμε ότι αυτό είναι αντί κώδικα της διανομής σας. 245 00:11:16,410 --> 00:11:17,790 Αυτό είναι ένα αρχείο που ονομάζεται ορθογράφος. 246 00:11:17,790 --> 00:11:20,220 Είναι διαθέσιμο ως μέρος της σημερινής Κώδικα Διαχείρισης του Δικτύου. 247 00:11:20,220 --> 00:11:22,670 Και Πάω να κύμα το χέρι μου στο πιο από τις λεπτομέρειες, αλλά αυτή είναι η πραγματικότητα 248 00:11:22,670 --> 00:11:25,500 ένα ενδιαφέρον παράδειγμα για το πώς μπορείτε να λιμάνι μια γλώσσα 249 00:11:25,500 --> 00:11:28,870 όπως η C πάνω σε PHP. 250 00:11:28,870 --> 00:11:33,420 Άνοιξα κυριολεκτικά δύο παράθυρα κειμένου, ένα με C δική μου εκδοχή της speller.c, 251 00:11:33,420 --> 00:11:36,960 και εγώ μόλις άρχισε να μεταφράζει το σε μου κατευθυνθείτε προς PHP και πληκτρολογώντας τη χρήση 252 00:11:36,960 --> 00:11:38,840 Το πλησιέστερο ισοδύναμο λειτουργίες. 253 00:11:38,840 --> 00:11:40,100 >> Έτσι, κάποια από αυτά τα πράγματα είναι διαφορετικά. 254 00:11:40,100 --> 00:11:43,730 Είδαμε τελευταία φορά ότι η PHP δεν χρησιμοποιεί περιλαμβάνουν αρκετά τον ίδιο τρόπο. 255 00:11:43,730 --> 00:11:47,050 Χρησιμοποιεί απαιτούν συνήθως, αν περιλαμβάνουν υπάρχει. 256 00:11:47,050 --> 00:11:50,330 Ορίστε είναι λίγο διαφορετικό από το # Define σε C, αλλά αυτό είναι 257 00:11:50,330 --> 00:11:51,890 πώς μπορούμε να κάνουμε μια σταθερή. 258 00:11:51,890 --> 00:11:55,860 $ Argc αποδεικνύεται υπάρχει στην PHP, έτσι έχουμε ξαναδεί. 259 00:11:55,860 --> 00:11:58,650 Αυτά είναι μόνο μεταβλητές, όλα που αρχίζουν με το σύμβολο του δολαρίου. 260 00:11:58,650 --> 00:12:00,590 Θυμηθείτε αυτά είναι απλώς ένα μάτσο των πλωτών σημεία. 261 00:12:00,590 --> 00:12:03,970 >> Έτσι, τα πολυλογώ, είστε ευπρόσδεκτοι να ξεφυλλίσετε αυτό αν και περίεργη, αυτό είναι 262 00:12:03,970 --> 00:12:10,010 σχεδόν μια γραμμή-προς-γραμμή μετατροπής της C έκδοση του speller.c σε PHP. 263 00:12:10,010 --> 00:12:12,630 Και θα μπορούσατε να το κάνετε αυτό και πάλι για μισή ντουζίνα άλλες γλώσσες. 264 00:12:12,630 --> 00:12:14,910 >> Αλλά αυτό που είναι ενδιαφέρον είναι αυτό. 265 00:12:14,910 --> 00:12:16,910 Ή τι είναι ειλικρινά απογοητευτικό είναι αυτό. 266 00:12:16,910 --> 00:12:20,790 Επιτρέψτε μου να πάω μπροστά και να πληκτρολογήσετε για dictionary.php, και ισχυρίζονται ότι είμαι 267 00:12:20,790 --> 00:12:23,670 πρόκειται να πάει μπροστά και εκ νέου εφαρμογή πρόβλημα που έθεσε έξι εδώ. 268 00:12:23,670 --> 00:12:27,530 >> Οπότε ας προτείνει, πρώτον, ότι σε αυτό το αρχείο, το οποίο θα υλοποιηθεί σε 269 00:12:27,530 --> 00:12:30,550 PHP, οπότε επιτρέψτε μου να ανοίξει ετικέτες μου έτσι. 270 00:12:30,550 --> 00:12:34,780 Επιτρέψτε μου να δώσω στον εαυτό μου μια παγκόσμια μεταβλητή, $ μέγεθος παίρνει μηδέν. 271 00:12:34,780 --> 00:12:36,710 Και Πάω να δώσει τον εαυτό μου ένα hash table. 272 00:12:36,710 --> 00:12:38,110 Θα χρησιμοποιήσετε ένα πίνακα κατακερματισμού για αυτό το πράγμα. 273 00:12:38,110 --> 00:12:42,070 Πώς μπορώ να δηλώσει ένα hash πίνακα στην PHP; 274 00:12:42,070 --> 00:12:42,990 Έγινε. 275 00:12:42,990 --> 00:12:43,980 OK. 276 00:12:43,980 --> 00:12:48,870 >> Έτσι άνοιγμα παρένθεσης κλείσιμο παρένθεσης αντιπροσωπεύει ό, τι σε PHP, όπως έχουμε δει; 277 00:12:48,870 --> 00:12:51,850 Μια σειρά, αλλά μια σειρά που θα μπορούσε είναι ένας associative array. 278 00:12:51,850 --> 00:12:54,320 Ένας associative array είναι μια δομή δεδομένων που 279 00:12:54,320 --> 00:12:55,860 συνεργάτες κλειδιά με τιμές. 280 00:12:55,860 --> 00:12:59,430 >> Τώρα, με τον απλούστερο αριθμητικά ευρετήριο array, αυτά τα κλειδιά είναι αυτό; 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Μηδέν, ένα, δύο, τρία, έτσι δεν είναι; 283 00:13:03,960 --> 00:13:08,780 Παλιά τα πράγματα πίσω από το σχολείο C. Αλλά μπορεί επίσης να είναι χορδές, όπως foo και bar, 284 00:13:08,780 --> 00:13:12,210 ή Maxwell, ή οποιαδήποτε τέτοια string. 285 00:13:12,210 --> 00:13:14,240 Έτσι μπορώ να μόχλευσης που ακριβώς σε μια στιγμή. 286 00:13:14,240 --> 00:13:17,550 >> Επιτρέψτε μου να πάμε μπροστά και να κηρύξει μια λειτουργία, όπως - 287 00:13:17,550 --> 00:13:19,020 ας κάνουμε φορτίο () πρώτα. 288 00:13:19,020 --> 00:13:20,690 Έτσι, το φορτίο λειτουργίας (). 289 00:13:20,690 --> 00:13:23,440 Και PHP είναι λίγο διαφορετικό σε ότι πληκτρολογείτε κυριολεκτικά τη λειτουργία, αλλά 290 00:13:23,440 --> 00:13:24,930 δεν πληκτρολογήσετε ένα είδος επιστροφής. 291 00:13:24,930 --> 00:13:28,760 Πάω να πάει μπροστά και να πω ότι η φορτίο () λειτουργία θα πρέπει να λάβει 292 00:13:28,760 --> 00:13:31,000 επιχείρημα $ λεξικό, απλά όπως η έκδοση C έκανε. 293 00:13:31,000 --> 00:13:32,510 Κάνω ότι από τη μνήμη. 294 00:13:32,510 --> 00:13:34,910 >> Και εγώ προτείνω ότι είμαι πρόκειται να το κάνουμε αυτό. 295 00:13:34,910 --> 00:13:37,080 Είμαι απλώς πρόκειται να κάνει foreach. 296 00:13:37,080 --> 00:13:40,710 Πάω να καλέσετε μια λειτουργία που ονομάζεται αρχείου (), περνώντας στο όνομα του ότι 297 00:13:40,710 --> 00:13:44,990 αρχείο, το οποίο είναι η μεταβλητή $ $ Λεξικό ως λέξη. 298 00:13:44,990 --> 00:13:49,410 Και τότε μέσα μου για το βρόχο εδώ, είμαι πρόκειται να πάει μπροστά και να αποθηκεύουν κατά τη γνώμη μου 299 00:13:49,410 --> 00:13:57,440 $ $ Πίνακα που μαθευτεί αλήθεια. 300 00:13:57,440 --> 00:13:57,918 Έγινε. 301 00:13:57,918 --> 00:14:01,264 Περίμενε. 302 00:14:01,264 --> 00:14:02,422 Έγινε. 303 00:14:02,422 --> 00:14:02,760 OK. 304 00:14:02,760 --> 00:14:04,970 >> Αυτό είναι το φορτίο (λειτουργία) λένε στην PHP. 305 00:14:04,970 --> 00:14:05,865 Τώρα, γιατί αυτό το έργο; 306 00:14:05,865 --> 00:14:07,010 Και είμαι το είδος της εξαπάτησης εδώ. 307 00:14:07,010 --> 00:14:09,980 >> Έτσι, το ένα, εμείς είδαμε foreach εν συντομία την τελευταία φορά. 308 00:14:09,980 --> 00:14:13,680 Σημαίνει απλώς ότι μπορείτε να επαναλάβετε σε μια σειρά χωρίς να ενοχλεί με i 309 00:14:13,680 --> 00:14:16,150 και τα η και συν συν, και όλα αυτά. 310 00:14:16,150 --> 00:14:21,350 Λεξικό είναι φυσικά το όνομα του αρχείου, κάτι σαν μικρές ή μεγάλες, οι δύο 311 00:14:21,350 --> 00:14:22,830 λεξικά χρησιμοποιήσαμε την τελευταία φορά. 312 00:14:22,830 --> 00:14:26,715 Το αρχείο είναι μια λειτουργία που ανοίγει το κείμενο αρχείο, διαβάζει στη γραμμή, και 313 00:14:26,715 --> 00:14:29,840 τα χέρια σας πίσω μια τεράστια ποικιλία, καθένα από τα στοιχεία της οποίας είναι ένα 314 00:14:29,840 --> 00:14:31,340 γραμμή από το αρχείο. 315 00:14:31,340 --> 00:14:36,040 Έτσι, αυτό είναι ο συνδυασμός της fopen, και fread, και ενώ βρόχο, και fclose, 316 00:14:36,040 --> 00:14:37,080 και όλα αυτά. 317 00:14:37,080 --> 00:14:40,150 Τέλος, η λέξη σημαίνει απλά ότι η μεταβλητή Πάω να έχουν πρόσβαση σε 318 00:14:40,150 --> 00:14:41,890 σε κάθε επανάληψη σε αυτό το βρόχο. 319 00:14:41,890 --> 00:14:46,910 >> Έτσι, με λίγα λόγια, αυτό σημαίνει επένδυση εδώ ανοίξει το αρχείο του οποίου το όνομα είναι 320 00:14:46,910 --> 00:14:50,750 λεξικό, η μεταβλητή, επαναλάβετε σε την γραμμή, και κάθε φορά που θα πάρετε 321 00:14:50,750 --> 00:14:54,290 μια γραμμή, κατάστημα σε μια μεταβλητή που ονομάζεται λέξη, και στη συνέχεια να κάνουμε κάτι με τη λέξη. 322 00:14:54,290 --> 00:14:55,280 Τι θέλω να κάνω; 323 00:14:55,280 --> 00:14:58,110 Θέλω να βάλω λέξη στον πίνακα κατακερματισμού μου. 324 00:14:58,110 --> 00:15:00,860 >> Λοιπόν, μπορώ να βάλω κάτι στο μου hash πίνακα ακριβώς όπως και στη C 325 00:15:00,860 --> 00:15:02,140 χρησιμοποιώντας αγκύλες. 326 00:15:02,140 --> 00:15:03,660 Αυτό είναι το όνομα για τον πίνακα hash μου. 327 00:15:03,660 --> 00:15:07,180 Θα πάω με τον δείκτη σε εκείνο το hash πίνακας σε αυτήν την τοποθεσία. 328 00:15:07,180 --> 00:15:08,920 Έτσι, δεν περικλείουν το μηδέν, δεν περικλείουν ένα. 329 00:15:08,920 --> 00:15:11,990 Quote Στήριγμα unquote κάτι, ό, τι αυτή η λέξη είναι. 330 00:15:11,990 --> 00:15:15,200 Και ακριβώς όπως μπορεί να έχετε στο δικό σας trie κατακερματισμού εργασίας τραπέζι, απλά κατάστημα 331 00:15:15,200 --> 00:15:17,650 ουσιαστικά ένα Boolean, εμμέσως ή ρητά. 332 00:15:17,650 --> 00:15:18,260 Έγινε. 333 00:15:18,260 --> 00:15:20,000 Είμαι αποθήκευση η αξία αληθινός. 334 00:15:20,000 --> 00:15:23,150 >> Τώρα υπάρχει μια-δυο πράγματα Είμαι πλημμελείς εδώ. 335 00:15:23,150 --> 00:15:27,720 Τεχνικά, υπάρχει μετάβαση να είναι μια ενοχλητικό νέα γραμμή, / n, στο τέλος του 336 00:15:27,720 --> 00:15:28,820 κάθε μία από αυτές τις λέξεις. 337 00:15:28,820 --> 00:15:31,770 Έτσι, μάλλον θα πρέπει να καλέσετε μια συνάρτηση PHP ονομάζεται μπριζόλα (), η οποία θα 338 00:15:31,770 --> 00:15:33,460 κυριολεκτικά ψιλοκόψτε ότι μακριά. 339 00:15:33,460 --> 00:15:35,020 Και εγώ πρέπει πραγματικά να κάνουμε ένα άλλο πράγμα. 340 00:15:35,020 --> 00:15:38,380 Θα πρέπει πιθανώς να αυξήσετε το μέγεθος σε κάθε επανάληψη, έτσι είμαι παρακολούθηση 341 00:15:38,380 --> 00:15:39,560 σε παγκόσμιο επίπεδο από ό, τι είναι. 342 00:15:39,560 --> 00:15:43,180 Και ειλικρινά, και αυτό είναι ένα από τα stupider πτυχές της PHP, αν είστε 343 00:15:43,180 --> 00:15:46,950 χρησιμοποιώντας μια καθολική μεταβλητή, θα πρέπει να έχετε να πω ρητά ότι είστε. 344 00:15:46,950 --> 00:15:51,670 Έτσι, Πάω να πληκτρολογήσετε στην πραγματικότητα σε παγκόσμιο επίπεδο $ Μέγεθος, η παγκόσμια $ τραπέζι, και τώρα 345 00:15:51,670 --> 00:15:52,690 η λειτουργία μου είναι πλήρης. 346 00:15:52,690 --> 00:15:57,475 >> Έτσι, δεν είναι τόσο απλό όπως και πριν, αλλά ίσως να πήρε λιγότερο χρόνο από ό, τι το C 347 00:15:57,475 --> 00:15:58,220 έκδοση, ίσως; 348 00:15:58,220 --> 00:15:58,730 OK. 349 00:15:58,730 --> 00:16:00,390 >> Έτσι τώρα ας κάνουμε τον έλεγχο (λειτουργία). 350 00:16:00,390 --> 00:16:04,300 Ας δούμε αν αυτό τουλάχιστον πήρε το ώρες στο τέλος που μας πήρε στο C. Έτσι, 351 00:16:04,300 --> 00:16:06,500 επιτρέψτε μου να πάει μπροστά και να κηρύξει ελέγχετε ως συνάρτηση. 352 00:16:06,500 --> 00:16:09,070 Λαμβάνει στη λέξη επιχείρημα, το οποίο είναι πρόκειται να προέλθει από ορθογράφος. 353 00:16:09,070 --> 00:16:13,410 Και είμαι απλώς πρόκειται να ελέγξετε αν το ακόλουθη μεταβλητή isset, τραπέζι 354 00:16:13,410 --> 00:16:18,400 βραχίονα strtolower της λέξης - 355 00:16:18,400 --> 00:16:20,590 ας ισορροπήσει όλα παρενθέσεις μου - 356 00:16:20,590 --> 00:16:24,275 στη συνέχεια επιστρέφουν αλήθεια. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 Αλλιώς - 359 00:16:28,460 --> 00:16:30,330 ότι ήταν πραγματικά ο σκληρός μέρος αυτού του προγράμματος. 360 00:16:30,330 --> 00:16:31,940 Αλλιώς, επιστρέφει false. 361 00:16:31,940 --> 00:16:32,630 Έγινε. 362 00:16:32,630 --> 00:16:33,460 Αυτός είναι ο έλεγχος (). 363 00:16:33,460 --> 00:16:34,520 >> Τώρα, γιατί αυτό το έργο; 364 00:16:34,520 --> 00:16:37,040 Λοιπόν, ένα έχω περάσει σε μια λέξη, το οποίο είναι ένα string. 365 00:16:37,040 --> 00:16:41,400 Δύο, Φεύγω εσωτερικό του κατακερματισμού πίνακα, ο οποίος ονομάζεται $ πίνακα. 366 00:16:41,400 --> 00:16:45,470 Είμαι αυτό που αναγκάζει σε πεζά καλώντας μια λειτουργία αρκετά παρόμοια tolower () σε 367 00:16:45,470 --> 00:16:48,580 C, αλλά αυτό δεν κάνει ολόκληρη τη λέξη, όχι ένα ενιαίο χαρακτήρα. 368 00:16:48,580 --> 00:16:52,680 Και αν αυτό έχει οριστεί, με άλλα λόγια εκεί έχει οριστεί μια τιμή, με άλλα λόγια, 369 00:16:52,680 --> 00:16:54,880 αν είναι αλήθεια, τότε ναι, αυτό είναι μια λέξη. 370 00:16:54,880 --> 00:16:56,530 Επειδή έβαλα εκεί με το φορτίο (). 371 00:16:56,530 --> 00:16:59,100 Και αν όχι, θα πάω να επιστρέψει false. 372 00:16:59,100 --> 00:17:00,090 >> Τώρα οι άλλοι είναι εύκολη. 373 00:17:00,090 --> 00:17:03,570 Μέγεθος λειτουργία (), πώς μπορώ να κάνω αυτό; 374 00:17:03,570 --> 00:17:05,230 Κάνω ουσιαστικά επιστροφή $ μέγεθος. 375 00:17:05,230 --> 00:17:07,770 Αλλά εγώ τεχνικά πρέπει να κάνει αυτό το ενοχλητικό πράγμα. 376 00:17:07,770 --> 00:17:10,640 Και στην πραγματικότητα μέχρι ακούω, έκοβα μια γωνία πάρα πολλά. 377 00:17:10,640 --> 00:17:12,920 Πραγματικά πρέπει να κάνουμε την παγκόσμια $ πίνακα. 378 00:17:12,920 --> 00:17:16,260 >> Αλλά αυτό που είπε, ξεφορτώσουν). 379 00:17:16,260 --> 00:17:17,380 Ξεφορτώσουν () είναι καταπληκτική. 380 00:17:17,380 --> 00:17:20,500 Εκφόρτωσης λειτουργία (). 381 00:17:20,500 --> 00:17:23,990 Πώς μπορώ να θέλουν να εφαρμόσουν εκφόρτωσης (); 382 00:17:23,990 --> 00:17:25,079 Έγινε. 383 00:17:25,079 --> 00:17:25,450 OK. 384 00:17:25,450 --> 00:17:28,900 >> Έτσι ξεφορτώσουν (), η διαχείριση μνήμης είναι εντελώς ληφθεί μέριμνα για εσάς 385 00:17:28,900 --> 00:17:31,800 κάτι σαν PHP και πολλά γλωσσών υψηλότερου επιπέδου. 386 00:17:31,800 --> 00:17:32,600 Έτσι, αυτό είναι καταπληκτικό. 387 00:17:32,600 --> 00:17:36,080 Όπως και γιατί η κόλαση δεν περάσαμε το παρελθόν συν οκτώ εβδομάδες στο γράψιμο C 388 00:17:36,080 --> 00:17:41,030 προφανώς πολύ αργοί, πραγματικά το χρόνο καταναλώνουν προβλήματα με δεκάδες ώρες 389 00:17:41,030 --> 00:17:42,530 της εργάζονται κάτω από τις ζώνες μας; 390 00:17:42,530 --> 00:17:46,110 >> Λοιπόν, για ένα πράγμα, αυτό μπορεί να λειτουργήσει πρόστιμο για τα μικρά προγράμματα. 391 00:17:46,110 --> 00:17:47,840 Είναι σίγουρα επιτάχυνε μου χρόνο ανάπτυξης. 392 00:17:47,840 --> 00:17:49,790 Αλλά ας δούμε τι θα συμβεί στον πραγματικό κόσμο. 393 00:17:49,790 --> 00:17:52,370 >> Επιτρέψτε μου να μπω σε αυτόν τον κατάλογο σε ένα παράθυρο τερματικού. 394 00:17:52,370 --> 00:17:53,370 Δεν υπάρχει ορθογράφος. 395 00:17:53,370 --> 00:17:56,570 Και παρατηρήσετε ως μέρος, και ίσως έχουν αντιμετωπίσει αυτό το πρόβλημα που 396 00:17:56,570 --> 00:17:58,190 έξι ή επτά πρόβλημα που. 397 00:17:58,190 --> 00:18:01,610 Δεν χρειάζεται να είναι απολύτως τέλος PHP αρχεία με. php. 398 00:18:01,610 --> 00:18:05,250 Αν βάλετε μια γραμμή σαν την πρώτη σε ένα η κορυφή, αυτό είναι μια ειδική γραμμή 399 00:18:05,250 --> 00:18:10,980 της σύνταξης που σημαίνει ουσιαστικά βρείτε το πρόγραμμα που ονομάζεται PHP και να το χρησιμοποιήσετε για να 400 00:18:10,980 --> 00:18:12,270 ερμηνεύσει αυτό το αρχείο. 401 00:18:12,270 --> 00:18:15,410 Μέχρι τώρα κανείς δεν ξέρει πραγματικά ότι Τρέχω ένα πρόγραμμα PHP. 402 00:18:15,410 --> 00:18:19,860 Μπορώ να το τρέξω όπως ακριβώς και αν ήταν κάτι που καταρτίζονται C. 403 00:18:19,860 --> 00:18:20,650 >> Αλλά εδώ είναι το πράγμα. 404 00:18:20,650 --> 00:18:21,600 Στην πραγματικότητα, ας το κάνουμε πάλι. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 Υπάρχει ορθογράφος. 407 00:18:25,390 --> 00:18:26,720 OK, 0,44 δευτερόλεπτα. 408 00:18:26,720 --> 00:18:28,080 Πήρε πιο γρήγορα αυτή τη φορά. 409 00:18:28,080 --> 00:18:29,745 >> Τώρα ας πάμε στην έκδοση της PHP. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Προσεγμένο. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 Σκεφτείτε όμως πόσο χρόνο Έσωσα σε ώρες γραφείου. 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 OK. 416 00:18:57,790 --> 00:19:01,020 >> Έτσι 3,59 δευτερόλεπτα, η οποία στην πραγματικότητα δεν ακούγεται ούτε ακριβή. 417 00:19:01,020 --> 00:19:03,710 Αλλά αυτό είναι επειδή τα πολυλογώ, όταν εκτυπώνετε ένα τεράστιο ποσό 418 00:19:03,710 --> 00:19:06,840 πράγματα στην οθόνη, ότι ίδια επιβραδύνει τα πράγματα. 419 00:19:06,840 --> 00:19:11,260 Τι έγινε πραγματικά το CPU στο συσκευή ήταν 3,59 δευτερόλεπτα, σε 420 00:19:11,260 --> 00:19:15,260 αντίθεση με την C, η οποία έλαβε 0,44 δευτερόλεπτα πιο πρόσφατα. 421 00:19:15,260 --> 00:19:17,620 Αυτό είναι πραγματικά μια τάξη μέγεθος διαφορετικό. 422 00:19:17,620 --> 00:19:20,280 >> Επομένως, ποια είναι η τιμή που προέρχονται από; 423 00:19:20,280 --> 00:19:21,790 Γιατί είναι τόσο αργή; 424 00:19:21,790 --> 00:19:24,220 Γιατί η PHP εκτελεί τόσο άσχημα; 425 00:19:24,220 --> 00:19:25,242 Danielle; 426 00:19:25,242 --> 00:19:26,550 >> ΚΟΙΝΟ: Δεν έκανε πραγματικά χρησιμοποιήστε ένα hash table. 427 00:19:26,550 --> 00:19:27,710 >> DAVID MALAN: Δεν είχα πραγματικά χρησιμοποιήστε ένα hash table. 428 00:19:27,710 --> 00:19:28,760 Γι 'αυτό το είδος έκανε. 429 00:19:28,760 --> 00:19:29,870 Έτσι είναι ένα associative array. 430 00:19:29,870 --> 00:19:33,650 Το πιο πιθανό, αν οι άνθρωποι της PHP πολύ έξυπνο, που χρησιμοποιούνται κάτω από το 431 00:19:33,650 --> 00:19:39,520 κουκούλα ένα πραγματικό hash εφαρμοστεί πίνακα σε κάτι όπως η C ή C + +. 432 00:19:39,520 --> 00:19:41,290 Αλλά. 433 00:19:41,290 --> 00:19:42,760 Ναι. 434 00:19:42,760 --> 00:19:44,010 >> ΚΟΙΝΟ: [δεν ακούγεται]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> DAVID MALAN: Ναι. 437 00:19:47,080 --> 00:19:50,780 Έτσι, κάθε μία από τις λειτουργίες που έγραψα τώρα - στην πραγματικότητα, μπορεί να σας πω ότι για μια ακόμη φορά ένα 438 00:19:50,780 --> 00:19:51,480 λίγο πιο δυνατά; 439 00:19:51,480 --> 00:19:54,509 >> Κοινό: Κάθε μία από τις λειτουργίες που που περιλαμβάνεται έχει μια πολύ πιο πλήρη 440 00:19:54,509 --> 00:19:56,610 χωρητικότητα από ό, τι - 441 00:19:56,610 --> 00:19:57,550 >> DAVID MALAN: Οπότε αυτό είναι πολύ αληθινό. 442 00:19:57,550 --> 00:20:01,490 Υπάρχει μια πολύ πιο γενικά ότι είμαστε δεν είναι πραγματικά βλέποντας εστιάζοντας μόνο σε 443 00:20:01,490 --> 00:20:03,730 dictionary.php, που έγραψα. 444 00:20:03,730 --> 00:20:08,020 Αντίθετα, υπάρχει μια ολόκληρη διερμηνέα πηγαίνει στο παρασκήνιο. 445 00:20:08,020 --> 00:20:12,040 Πράγματι, όταν έτρεξα αυτό το πρόγραμμα, δεν έτρεχε καταρτίζονται μηδενικά και μονάδες 446 00:20:12,040 --> 00:20:14,290 σχεδιαστεί για Intel CPU μου. 447 00:20:14,290 --> 00:20:19,270 Αντ 'αυτού, λειτουργεί γραμμή προς γραμμή PHP κώδικα που μοιάζει ακριβώς 448 00:20:19,270 --> 00:20:20,350 σαν να πληκτρολογήσει. 449 00:20:20,350 --> 00:20:22,475 Και έτσι κάθε φορά που χρησιμοποιείτε ένα ερμηνεύεται γλώσσα, 450 00:20:22,475 --> 00:20:23,850 πραγματικά να κάνουμε πληρώσει αυτό το τίμημα. 451 00:20:23,850 --> 00:20:27,010 Είναι πρόκειται να πάρει κάποιο χρόνο για να διαβάσετε top αρχείο σας προς τα κάτω, από αριστερά προς 452 00:20:27,010 --> 00:20:30,740 δεξιά, και στη συνέχεια να εκτελέσει κάθε γραμμή ξανά και ξανά. 453 00:20:30,740 --> 00:20:34,250 >> Τώρα, στην πραγματικότητα, ειδικά στο διαδίκτυο, μπορείτε να επιταχύνει πραγματικά τη διαδικασία αυτή 454 00:20:34,250 --> 00:20:38,660 από την προσωρινή αποθήκευση των αποτελεσμάτων της PHP κώδικας ερμηνεύεται. 455 00:20:38,660 --> 00:20:41,640 Και αυτό είναι λογικό στο διαδίκτυο, διότι εάν δεν έχετε έναν χρήστη, όπως 456 00:20:41,640 --> 00:20:46,300 μου εδώ, αλλά 1.000 ή 10.000 χρήστες, στη συνέχεια, ίσως η πρώτη φορά που το αρχείο είναι 457 00:20:46,300 --> 00:20:49,050 πρόσβαση είναι αργή, αλλά στη συνέχεια Είναι πολύ πιο γρήγορα. 458 00:20:49,050 --> 00:20:51,000 >> Αλλά αυτό πάρα πολύ, και πάλι, είναι ένα εμπόριο off. 459 00:20:51,000 --> 00:20:53,870 Και για κάτι σαν ερευνητικά δεδομένα που, ή ακόμα και κάτι μεγάλο, όπως 460 00:20:53,870 --> 00:20:58,330 αυτό, οι χρήστες σας τελικά θα αρχίζουν να αισθάνονται ότι η επιβράδυνση. 461 00:20:58,330 --> 00:21:02,670 >> Έτσι, με λίγα λόγια, ερμηνευμένες γλώσσες είναι πολύ της μόδας, πολύ δημοφιλής, και 462 00:21:02,670 --> 00:21:06,710 ειλικρινά είναι ίσως οι γλώσσες θα πρέπει να φτάσουν κατά την επίλυση προβλημάτων 463 00:21:06,710 --> 00:21:08,200 μετά την CS50. 464 00:21:08,200 --> 00:21:12,720 Αλλά συνειδητοποιούν πόσο είστε πραγματικά λαμβάνοντας ως δεδομένο κάτω από το καπό 465 00:21:12,720 --> 00:21:15,910 πραγματικά οι τελευταίες αρκετές εβδομάδες στην hash πίνακες, και τα δέντρα, και προσπαθεί, 466 00:21:15,910 --> 00:21:20,770 που χρησιμοποιούνται τελικά στην πραγματικότητα εφαρμόσουν τα πράγματα όπως τα ανοιχτά βραχίονα, 467 00:21:20,770 --> 00:21:24,200 αγκύλη, το οποίο μπορούμε τώρα ευγνωμοσύνη θεωρούμε δεδομένο. 468 00:21:24,200 --> 00:21:26,360 >> Έτσι, ας ρίξουμε μια ματιά τώρα σε αυτό το πλαίσιο ιστού. 469 00:21:26,360 --> 00:21:29,890 Και ανέφερα την τελευταία φορά ότι υπάρχει ένα μάτσο superglobals σε PHP που 470 00:21:29,890 --> 00:21:32,490 είναι πραγματικά δεν έχει σημασία στη γραμμή εντολών. 471 00:21:32,490 --> 00:21:36,210 Είναι πιο σημαντικές στο πλαίσιο χρήση της PHP σε ένα πλαίσιο web. 472 00:21:36,210 --> 00:21:41,220 Έτσι τρέχοντας την PHP σε έναν web server, προκειμένου να δημιουργήσει πράγματα όπως HTML. 473 00:21:41,220 --> 00:21:44,540 >> Και έχουμε μια ματιά στο $ _GET και $ _POST, και αυτό είναι όπου αυτόματα χρηστών 474 00:21:44,540 --> 00:21:49,100 είσοδος καταλήγει απλά αν υποβάλει μορφή σε ένα αρχείο με κατάληξη. php σε μια ιστοσελίδα 475 00:21:49,100 --> 00:21:50,460 διακομιστή όπως η συσκευή. 476 00:21:50,460 --> 00:21:53,310 Αλλά ας δούμε εν συντομία $ _COOKIE Και $ _SESSION. 477 00:21:53,310 --> 00:21:56,670 >> Με άλλα λόγια, ό, τι είναι ένα cookie, όπως μπορείτε να το καταλάβετε, στο πλαίσιο της 478 00:21:56,670 --> 00:21:58,220 χρησιμοποιώντας το διαδίκτυο; 479 00:21:58,220 --> 00:21:59,450 >> ΚΟΙΝΟ: αρχείο στον υπολογιστή. 480 00:21:59,450 --> 00:21:59,920 >> DAVID MALAN: Ναι. 481 00:21:59,920 --> 00:22:03,500 Είναι ένα αρχείο στον υπολογιστή του χρήστη φυτεύτηκαν από οποιονδήποτε ιστότοπο 482 00:22:03,500 --> 00:22:04,410 τυχαίνει να επισκεφθείτε. 483 00:22:04,410 --> 00:22:07,334 Έτσι, όταν θα πάτε στο Facebook, όταν θα πάτε να bankofamerica.com, όταν θα πάτε 484 00:22:07,334 --> 00:22:10,330 στο google.com, όταν θα πάτε σχεδόν σε κάθε ιστοσελίδα στον κόσμο αυτές τις μέρες, 485 00:22:10,330 --> 00:22:14,850 συμπεριλαμβανομένων cs50.net, ένα cookie που φυτεύτηκαν στον υπολογιστή σας, το οποίο είναι 486 00:22:14,850 --> 00:22:19,800 είτε μια τιμή που είναι αποθηκευμένη στη μνήμη RAM σε σας υπολογιστή στη μνήμη του προγράμματος περιήγησης σας ή 487 00:22:19,800 --> 00:22:22,800 Μερικές φορές μάλιστα ένα αρχείο που είναι αποθηκευμένο στο σκληρό σας δίσκο. 488 00:22:22,800 --> 00:22:26,960 >> Και αυτό που συνήθως αποθηκεύονται σε αυτό το αρχείο δεν είναι το όνομα χρήστη σας, δεν σας 489 00:22:26,960 --> 00:22:31,060 κωδικό πρόσβασης, συνήθως δεν είναι κάτι ευαίσθητα, εκτός εάν η ιστοσελίδα δεν είναι τόσο 490 00:22:31,060 --> 00:22:35,040 καλά με την ασφάλειά τους, αλλά μάλλον είναι ένα μεγάλο μοναδικό αναγνωριστικό μεταξύ 491 00:22:35,040 --> 00:22:35,680 άλλα πράγματα. 492 00:22:35,680 --> 00:22:38,920 Είναι ένα μεγάλο τυχαίο αριθμό που φυτεύτηκαν στον υπολογιστή σας υπολογιστή, αλλά μπορείτε να σκεφτείτε ως 493 00:22:38,920 --> 00:22:42,740 ένα είδος εικονικής σφραγίδα χέρι σαν από μια λέσχη ή κάποιο πάρκο ψυχαγωγίας που 494 00:22:42,740 --> 00:22:47,160 επιτρέπει το προσωπικό, οι ιδιοκτήτες που υπηρεσία, για να θυμηθούμε ποιος είσαι. 495 00:22:47,160 --> 00:22:51,030 Έτσι, αν το μεγάλο τυχαίος αριθμός είναι σαν 12345678, αν και αυτό είναι προφανώς 496 00:22:51,030 --> 00:22:54,180 δεν είναι τυχαίο, σκεφτείτε ότι η σφραγίδα χέρι ότι όταν επισκέπτεστε 497 00:22:54,180 --> 00:22:57,930 facebook.com για πρώτη φορά, σφραγίζουν τον αριθμό στο χέρι σας. 498 00:22:57,930 --> 00:23:01,510 Και τότε γιατί μιλάτε HTTP, θα είναι ένα πρόγραμμα περιήγησης, και επειδή το Facebook 499 00:23:01,510 --> 00:23:06,440 προφανώς μιλά την ίδια ως web διακομιστή, το πρωτόκολλο HTTP αναφέρει ότι 500 00:23:06,440 --> 00:23:09,930 κάθε φορά που στη συνέχεια επισκεφτείτε facebook.com, είτε πρόκειται για ένα δεύτερο 501 00:23:09,930 --> 00:23:13,560 αργότερα, μία ώρα αργότερα, ακόμη και την επόμενη μέρα, εφ 'όσον δεν έχετε ρητά 502 00:23:13,560 --> 00:23:17,050 αποσυνδεθεί, η οποία ουσιαστικά Είναι σαν το πλύσιμο των χεριών σας. 503 00:23:17,050 --> 00:23:20,280 HTTP λέει ότι θα πρέπει να παρουσιάσει σας χέρι σφραγίδα κάθε φορά 504 00:23:20,280 --> 00:23:22,020 επιστροφή στην εν λόγω ιστοσελίδα. 505 00:23:22,020 --> 00:23:24,390 >> Τι Facebook κάνει τότε είναι που ματιά σε αυτό σφραγίδα χέρι και 506 00:23:24,390 --> 00:23:26,850 λένε, OH, 123456789. 507 00:23:26,850 --> 00:23:30,260 Δεν ξέρω με την πρώτη ματιά ότι αυτό είναι ο David Malan στο Cambridge, 508 00:23:30,260 --> 00:23:34,690 Massachusetts, αλλά μπορούν να ελέγχουν τους βάση δεδομένων και να πει, OH, το πρόσωπο 509 00:23:34,690 --> 00:23:39,930 για του οποίου ο υπολογιστής θα φυτευτεί 123456789 είναι ο David Malan από Cambridge, 510 00:23:39,930 --> 00:23:40,440 Μασαχουσέτη. 511 00:23:40,440 --> 00:23:46,000 Ας δείξουμε ότι χρήστη, τότε το προφίλ του σελίδας ή Ειδησεογραφία του. 512 00:23:46,000 --> 00:23:49,660 >> Αλλά υπάρχει ένα πρόβλημα εδώ, αν αυτό είναι το πώς λειτουργεί πραγματικά το διαδίκτυο. 513 00:23:49,660 --> 00:23:51,390 Ας ρίξουμε μια ματιά σε ένα γρήγορο παράδειγμα. 514 00:23:51,390 --> 00:23:55,190 Ας πραγματικά να πάμε να πούμε facebook.com. 515 00:23:55,190 --> 00:23:58,130 Αλλά πριν θα μπορούσαμε να πάμε εκεί, ας Θέλω να προχωρήσει και να ανοίξει του Chrome 516 00:23:58,130 --> 00:23:59,790 Επιθεωρητής εδώ κάτω. 517 00:23:59,790 --> 00:24:01,140 Επιτρέψτε μου να δούμε την καρτέλα δικτύου. 518 00:24:01,140 --> 00:24:06,020 Και τώρα ας προχωρήσουμε και πληκτρολογήστε σε https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 Και το κάνω αυτό, έτσι ώστε δεν βλέπουμε όλες αυτές τις ανακατευθύνσεις και των αποβλήτων 520 00:24:09,410 --> 00:24:10,660 χρόνο ψάχνοντας μέσω αυτών. 521 00:24:10,660 --> 00:24:12,690 Επιτρέψτε μου να πατήστε enter. 522 00:24:12,690 --> 00:24:13,130 >> Εντάξει. 523 00:24:13,130 --> 00:24:14,580 Βλέπουμε ένα σωρό των αιτήσεων. 524 00:24:14,580 --> 00:24:15,640 Έρχεται το Facebook. 525 00:24:15,640 --> 00:24:16,930 Υπάρχει μια ολόκληρη δέσμη των αρχείων. 526 00:24:16,930 --> 00:24:19,290 Και εδώ, ανά αναφορά μου τελευταία φορά λανθάνουσα κατάσταση, που είναι 527 00:24:19,290 --> 00:24:21,240 πολλές αιτήσεις HTTP. 528 00:24:21,240 --> 00:24:23,700 Αλλά το πρώτο είναι πιθανώς η πιο ενδιαφέρουσα. 529 00:24:23,700 --> 00:24:26,420 >> Οπότε ας μετακινηθείτε προς τα κάτω εδώ, και Θα μεγέθυνση σε ένα δευτερόλεπτο. 530 00:24:26,420 --> 00:24:29,090 Αυτό πρόκειται να είναι το είδος της ένα χάος, αλλά ας δούμε. 531 00:24:29,090 --> 00:24:31,660 Facebook μας μια αποστολή σωρό πράγματα. 532 00:24:31,660 --> 00:24:33,490 >> Αλλά στάσου, ενδιαφέρουσα. 533 00:24:33,490 --> 00:24:37,880 Είναι φύτευση όχι μία, αλλά τέσσερις χέρι σφραγίδες πάνω στο χέρι μου εδώ. 534 00:24:37,880 --> 00:24:40,400 Set-cookie, το Set-cookie, το set-μπισκότο, set-μπισκότο. 535 00:24:40,400 --> 00:24:44,030 Και υπάρχουν μερικά χαρακτηριστικά εδώ. 536 00:24:44,030 --> 00:24:46,170 Όλοι τους αναφέρουμε μερικά το είδος της λήξης. 537 00:24:46,170 --> 00:24:50,090 Και αυτό μοιάζει με το Facebook ελπίζει να μου το θυμηθείτε μέχρι το 2015. 538 00:24:50,090 --> 00:24:53,670 Έτσι, αυτό είναι πιθανώς το χρόνο κατά τον οποίο Θα πρέπει να αποσυνδεθείτε ή απλώς θα 539 00:24:53,670 --> 00:24:55,710 αυτόματα υποθέτουν ότι είμαι δεν έρχονται πίσω. 540 00:24:55,710 --> 00:24:57,840 Έτσι, αυτό είναι πραγματικά ένα αξιοπρεπές χρονικό διάστημα. 541 00:24:57,840 --> 00:24:59,170 >> Και υπάρχουν και κάποια άλλα πράγματα που συμβαίνουν εδώ. 542 00:24:59,170 --> 00:25:03,036 Αυτό το cookie φαίνεται να είναι δια της βίας διαγράφεται λέγοντας ότι έληξε το 1970 543 00:25:03,036 --> 00:25:04,460 πριν υπήρχε cookies. 544 00:25:04,460 --> 00:25:06,510 Έτσι, ο browser είναι ακριβώς πρόκειται να αναλάβει OK, αυτό είναι σαν να 545 00:25:06,510 --> 00:25:07,910 το πλύσιμο των χεριών σφραγίδα. 546 00:25:07,910 --> 00:25:11,240 >> Τώρα, όμως, όταν το πρόγραμμα περιήγησης μου κάνει μια μεταγενέστερη αίτηση - 547 00:25:11,240 --> 00:25:14,340 επιτρέψτε μου να προχωρήσει και να το κάνουμε αυτό ξανά και reload. 548 00:25:14,340 --> 00:25:18,170 Τώρα, επιτρέψτε μου να μετακινηθείτε προς τα πίσω το top αίτηση και πηγαίνετε προς τα κάτω 549 00:25:18,170 --> 00:25:20,760 εδώ, να ζητήσει κεφαλίδες. 550 00:25:20,760 --> 00:25:21,390 Παρατηρήστε αυτό. 551 00:25:21,390 --> 00:25:25,280 Έτσι τώρα είμαι κάτω δεν κεφαλίδες απόκρισης, αλλά παρατηρήσετε ότι λέει κεφαλίδες αίτησης. 552 00:25:25,280 --> 00:25:29,220 Και να παρατηρήσετε ότι ο φυλλομετρητής μου ως μέρος της αιτήσεώς της, μετά το χτύπημα reload έχει 553 00:25:29,220 --> 00:25:32,780 αποστέλλονται τουλάχιστον τα ακόλουθα πληροφορίες. 554 00:25:32,780 --> 00:25:34,670 Δεν έχει οριστεί-cookie, αλλά μπισκότο. 555 00:25:34,670 --> 00:25:38,750 Έτσι, αυτή είναι η γραμμή, η κεφαλίδα HTTP, ώστε να μιλήσει, όπου browser μου είναι ένα είδος 556 00:25:38,750 --> 00:25:43,340 χωρίς να μου το γνωρίζουν παρουσίαση το χέρι μου για την επιθεώρηση του Facebook. 557 00:25:43,340 --> 00:25:46,020 >> Έτσι, αυτά τα cookies μπορεί να είναι χρησιμοποιείται στη συνέχεια για ό, τι; 558 00:25:46,020 --> 00:25:49,420 Για να θυμηθείτε ποιοι είστε, ή να θυμηθείτε πώς πολλές φορές έχετε πάει εκεί, ή 559 00:25:49,420 --> 00:25:50,280 τίποτα. 560 00:25:50,280 --> 00:25:52,742 >> Έτσι, εδώ είναι counter.php. 561 00:25:52,742 --> 00:25:53,780 Και επιτρέψτε μου να μεγεθύνετε την γραμματοσειρά. 562 00:25:53,780 --> 00:25:58,380 Και κάθε φορά που επαναφορτώστε τη σελίδα, σημείωση Είναι να θυμόμαστε πόσες φορές 563 00:25:58,380 --> 00:25:59,250 Έχω πάει εκεί. 564 00:25:59,250 --> 00:26:00,570 Λοιπόν, αυτό δεν είναι όλα αυτά εντυπωσιακά. 565 00:26:00,570 --> 00:26:03,140 Ας κλείσει αυτό το tab, και τώρα ας πάμε πίσω στο 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> Ω, αυτό είναι ενδιαφέρον. 568 00:26:08,970 --> 00:26:10,960 Εξακολουθεί να θυμόμαστε, ακόμη και αν και έχω κλείσει την καρτέλα. 569 00:26:10,960 --> 00:26:14,010 Και ειλικρινά, αν κλείσετε το πρόγραμμα περιήγησης, εάν εφαρμοστεί με τον σωστό τρόπο, θα 570 00:26:14,010 --> 00:26:18,950 θα μπορούσε να εξακολουθεί να θυμόμαστε ότι αυτός ο χρήστης είναι που αυτός ή αυτή ήταν η πρώτη φορά, και 571 00:26:18,950 --> 00:26:22,840 μόνο μία φορά πάω στο μενού του Chrome, η οποία εδώ είναι εδώ, και να πάει σε 572 00:26:22,840 --> 00:26:25,990 Ιστορία, και κάντε κλικ στο κουμπί Εκκαθάριση δεδομένων περιήγησης, όπως κάποιοι από εσάς μπορεί να έχετε στο 573 00:26:25,990 --> 00:26:33,050 παρελθόν, μόνο τότε θα τα cookies σας πραγματικά να διαγραφούν κατά τη διάρκεια web 574 00:26:33,050 --> 00:26:33,970 ανάπτυξης. 575 00:26:33,970 --> 00:26:35,340 >> Έτσι, αν πάμε - 576 00:26:35,340 --> 00:26:37,080 ας κλείνω gedit εδώ. 577 00:26:37,080 --> 00:26:38,910 Και αν πάμε τώρα σε αυτό το αρχείο. 578 00:26:38,910 --> 00:26:44,210 Επιτρέψτε μου να μπω σε μας vhosts / localhost / δημόσια, και επιτρέψτε μου να κάνω 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Σημειώστε ότι αυτό είναι ένα αρκετά απλό πρόγραμμα. 581 00:26:48,350 --> 00:26:50,250 Είναι μια πολύ απλή ιστοσελίδα. 582 00:26:50,250 --> 00:26:51,770 >> Έτσι, η αρχή του αρχείου είναι απλά σχόλια. 583 00:26:51,770 --> 00:26:54,930 Αλλά εδώ είναι μια νέα γραμμή που θα μπορεί να έχουμε δει ήδη σε p-έθεσε επτά, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 Αυτή είναι μια γραμμή κώδικα PHP που λέει ουσιαστικά το web server, κάνουν 586 00:27:00,380 --> 00:27:03,400 Φροντίστε να σφραγίζουν τα χέρια και να κάνουν Βεβαιωθείτε ότι έχετε ελέγξει το χέρι γραμματόσημα. 587 00:27:03,400 --> 00:27:06,810 Αυτό είναι το μόνο που κάνει γραμμή, και κάνει όλα αυτή τη διαδικασία για μας. 588 00:27:06,810 --> 00:27:09,510 Στη συνέχεια παρατηρήσετε Έχω μόνο δύο υποκαταστήματα εδώ. 589 00:27:09,510 --> 00:27:14,150 Αν το κλειδί μετρητή μέσα σ 'αυτό ειδική global μεταβλητή που ονομάζεται 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Βρίσκεται - με άλλα λόγια, αν υπάρχει κάποια αξία εκεί - 591 00:27:18,010 --> 00:27:22,440 ας το πάρει και να το αποθηκεύσετε σε ένα τοπικό μεταβλητή $ μετρητή. 592 00:27:22,440 --> 00:27:27,000 Αλλιώς, ας αναθέσει $, σε αντίθεση η προεπιλεγμένη τιμή 0. 593 00:27:27,000 --> 00:27:30,320 >> Τώρα εδώ είναι μια πτυχή της PHP που είναι ταυτόχρονα ευλογία και κατάρα. 594 00:27:30,320 --> 00:27:32,080 PHP είναι λίγο ατημέλητη. 595 00:27:32,080 --> 00:27:35,160 Έτσι, ενώ στην C, ποια θα ήταν η πεδίο της καταπολέμησης έχουν 596 00:27:35,160 --> 00:27:36,725 είτε εδώ ή εδώ; 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> Θα έχουν περιοριστεί σε αυτές τις αγκύλες. 599 00:27:41,690 --> 00:27:42,090 Μαντέψτε τι; 600 00:27:42,090 --> 00:27:46,920 Στην PHP, υπάρχει ακόμα, εκτός από εκείνες άγκιστρα, εδώ, και εδώ, 601 00:27:46,920 --> 00:27:49,120 και εδώ, και εδώ, και ακόμη και κάτω. 602 00:27:49,120 --> 00:27:52,400 Έτσι λέω αυτό είναι μια ευλογία, με την έννοια ότι δεν έχετε να σκεφτείτε ως 603 00:27:52,400 --> 00:27:54,070 σκληρά όπως κάναμε πριν μερικές εβδομάδες. 604 00:27:54,070 --> 00:27:56,880 Αλλά είναι επίσης ένα κομμάτι από ένα κατάρα σε αυτό δεν έχει σημασία, όπου μπορείτε να χρησιμοποιήσετε μια μεταβλητή σε 605 00:27:56,880 --> 00:28:00,020 PHP, τουλάχιστον σε ένα πρόγραμμα όπως αυτό, είναι παγκοσμίως προσβάσιμο 606 00:28:00,020 --> 00:28:01,170 καλύτερο ή το χειρότερο. 607 00:28:01,170 --> 00:28:06,130 Έτσι, θα πρέπει να έχετε κατά νου ότι τώρα μεταβλητές σας δεν μπορεί να είναι απροσδιόριστη. 608 00:28:06,130 --> 00:28:07,640 Ίσως έχετε ορίζεται αλλού. 609 00:28:07,640 --> 00:28:09,460 >> Αλλά τι θα πάω να κάνω τελικά; 610 00:28:09,460 --> 00:28:13,160 Πάω να αποθηκεύουν στο εσωτερικό της σφαιρικής μεταβλητή ως αξία του 611 00:28:13,160 --> 00:28:17,060 μετρητή κλειδί το αποτέλεσμα της κάνει μετρητή συν 1. 612 00:28:17,060 --> 00:28:18,910 Έτσι, αυτό είναι μόνο η αριθμητική που κάνει το 613 00:28:18,910 --> 00:28:20,590 προσαύξησης αυτού του μετρητή. 614 00:28:20,590 --> 00:28:24,850 Και το γεγονός ότι είμαι αποθήκευση ότι αξία πίσω εδώ μέσα είναι να 615 00:28:24,850 --> 00:28:29,970 κατ 'ουσίαν, την ενημέρωση της βάσης δεδομένων για να να θυμάστε ότι 123456789 χρήστης έχει 616 00:28:29,970 --> 00:28:31,010 εδώ δύο φορές. 617 00:28:31,010 --> 00:28:33,780 Και όταν το κάνω και πάλι την επόμενη φορά που θα επαναλάβετε τη φόρτωση της σελίδας, πρόκειται να ελέγξει 618 00:28:33,780 --> 00:28:36,710 σφραγίδα το χέρι μου και να πω, OH, 123456789 χρήστης έχει πλέον 619 00:28:36,710 --> 00:28:38,410 εδώ τρεις φορές. 620 00:28:38,410 --> 00:28:43,390 >> Και έτσι τι PHP και παρόμοιες γλώσσες κάνουν για μας είναι ότι είναι υπολογίζοντας 621 00:28:43,390 --> 00:28:47,720 πώς και πού και για πόσο καιρό για την αποθήκευση τιμών σε αυτή την ειδική 622 00:28:47,720 --> 00:28:48,830 superglobal. 623 00:28:48,830 --> 00:28:52,750 Και αυτό Superglobal την επόμενη φορά που θα επισκεφθείτε την σελίδα είναι είδος μαγείας 624 00:28:52,750 --> 00:28:57,440 προ-πυκνοκατοικημένη, γεμάτη με τις αξίες που υπήρχαν την τελευταία φορά που επισκέφθηκε, 625 00:28:57,440 --> 00:29:02,310 αν αυτό ήταν πριν από ένα δευτερόλεπτο, μια εβδομάδα Πριν, ή το 2013 και είμαστε τώρα μιλάμε 626 00:29:02,310 --> 00:29:03,790 περίπου το 2015. 627 00:29:03,790 --> 00:29:07,600 PHP και το φροντίζουν web server όλα αυτά για εσάς. 628 00:29:07,600 --> 00:29:08,850 >> ΚΟΙΝΟ: [δεν ακούγεται]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVID MALAN: μεταβλητές στην PHP είναι ουσιαστικά πάντα παγκόσμιας εκτός αν 631 00:29:15,760 --> 00:29:18,400 δηλώνουν τους μέσα από μια συνάρτηση, και στη συνέχεια να είναι σε τοπικό επίπεδο, 632 00:29:18,400 --> 00:29:19,420 η λειτουργία μόνο. 633 00:29:19,420 --> 00:29:22,300 Αλλά επειδή δεν έχω γράψει κάποια λειτουργίες, είναι πλέον αποτελεσματικά 634 00:29:22,300 --> 00:29:25,090 παγκόσμια καθ 'όλη το αρχείο μου εδώ. 635 00:29:25,090 --> 00:29:26,040 >> ΚΟΙΝΟ: Είναι ένας τρόπος υπάρχει για να γίνουν οι τοπικές; 636 00:29:26,040 --> 00:29:28,470 >> DAVID MALAN: Υπάρχει κάποια τρόπος για να κάνει τους τοπικούς; 637 00:29:28,470 --> 00:29:30,680 Μόνο από την πρώτη συσκευασία τους σε λειτουργίες. 638 00:29:30,680 --> 00:29:32,790 Η οποία στην τελευταία έκδοση του PHP, μπορείτε να το κάνετε αυτό με 639 00:29:32,790 --> 00:29:34,130 μια ανώνυμη συνάρτηση. 640 00:29:34,130 --> 00:29:35,930 Αλλά περισσότερα για αυτό στο πλαίσιο της JavaScript. 641 00:29:35,930 --> 00:29:37,260 Όμως, η σύντομη απάντηση είναι όχι. 642 00:29:37,260 --> 00:29:40,888 Η μεγαλύτερη απάντηση είναι ναι. 643 00:29:40,888 --> 00:29:42,380 Νίκαια. 644 00:29:42,380 --> 00:29:43,380 Καλή ερώτηση κουίζ. 645 00:29:43,380 --> 00:29:43,930 Εντάξει. 646 00:29:43,930 --> 00:29:47,760 >> Έτσι, τέλος, η ίδια η σελίδα είναι πραγματικά αρκετά απλή. 647 00:29:47,760 --> 00:29:51,470 Σημειώστε ότι από τη στιγμή που βγείτε από τη λειτουργία PHP, ανάκληση ότι όλα αυτά τα πράγματα κάτω 648 00:29:51,470 --> 00:29:53,700 παρακάτω είναι ακριβώς πρόκειται να πάρει σούβλα από τις πρώτες στον browser. 649 00:29:53,700 --> 00:29:57,050 Ποια είναι καλό, γιατί δεν θέλετε να στείλετε ο χρήστης κάποια HTML, αλλά θέλω 650 00:29:57,050 --> 00:29:59,140 να ενημερώσετε δυναμικά αυτό το HTML. 651 00:29:59,140 --> 00:30:03,930 Και ένας τρόπος που μπορώ να το κάνετε αυτό είναι να ταξινομήσετε πολύ γρήγορα πέσει πίσω σε PHP 652 00:30:03,930 --> 00:30:07,730 λειτουργία, η χρήση ανοικτού βραχίονα ερωτηματικό σύμβολο της ισότητας, και στη συνέχεια την έξοδο του αξία 653 00:30:07,730 --> 00:30:08,650 του μετρητή. 654 00:30:08,650 --> 00:30:12,360 >> Ή αν αυτό φαίνεται λίγο αινιγματικό, αυτό σύμβολο της ισότητας είναι στην πραγματικότητα μόνο μερικά 655 00:30:12,360 --> 00:30:16,190 συντακτική ζάχαρη γι 'αυτό printf ($ counter). 656 00:30:16,190 --> 00:30:19,160 Αλλά ειλικρινά, αυτό είναι λίγο άσχημο και λίγο ενοχλητικό να πληκτρολογήσετε. 657 00:30:19,160 --> 00:30:23,660 Έτσι, PHP προσφέρει πολύ όμορφα αυτό το χαρακτηριστικό όπου μπορείτε να το πω πιο 658 00:30:23,660 --> 00:30:25,450 συνοπτικά με τον ίδιο τρόπο. 659 00:30:25,450 --> 00:30:26,940 >> Έτσι τι συμβαίνει κάτω η κουκούλα; 660 00:30:26,940 --> 00:30:31,210 Ας δούμε γρήγορα στο δίκτυο καρτέλα εδώ για counter.php. 661 00:30:31,210 --> 00:30:35,090 Και επιτρέψτε μου να πάει μπροστά και το πρώτο ας ξεκαθαρίσουμε τα cookies. 662 00:30:35,090 --> 00:30:38,670 Ας σαφή δεδομένα περιήγησης, δεδομένου η αρχή του χρόνου. 663 00:30:38,670 --> 00:30:39,680 Τώρα, ας πάμε πίσω εδώ. 664 00:30:39,680 --> 00:30:41,340 Τώρα ας ξαναφορτώστε τη σελίδα. 665 00:30:41,340 --> 00:30:42,170 Και είμαι πίσω στο μηδέν. 666 00:30:42,170 --> 00:30:44,810 Επειδή η σφραγίδα χέρι μου έχει πλυθεί, Θα ήθελα τώρα να πάρετε ένα νέο cookie. 667 00:30:44,810 --> 00:30:48,780 >> Πράγματι, αν εξετάσουμε την καρτέλα του δικτύου και εξετάσουμε κεφαλίδες απόκρισης, ανακοίνωση 668 00:30:48,780 --> 00:30:51,960 ότι η συσκευή με την αποστολή ένα cookie του οποίου το όνομα είναι κάπως 669 00:30:51,960 --> 00:30:55,820 αυθαίρετα, αλλά το είδος της λογικά, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 Και μου στέλνει αυτό πραγματικά μεγάλο τυχαίο αριθμό. 671 00:30:58,440 --> 00:30:59,440 Δεν είναι αρκετά. 672 00:30:59,440 --> 00:31:00,390 Δεν είναι αρκετά δεκαεξαδικό. 673 00:31:00,390 --> 00:31:03,600 Είναι ένα είδος της αλφαριθμητική συμβολοσειρά, αλλά προφανώς είναι τυχαία. 674 00:31:03,600 --> 00:31:06,830 Και αυτή είναι η σφραγίδα χέρι, έτσι ώστε να μιλούν ότι είμαι αναφέρεται σε. 675 00:31:06,830 --> 00:31:11,960 >> Εν τω μεταξύ, αν κάνω κλικ reload και, στη συνέχεια, εξετάσουμε αυτή τη δεύτερη γραμμή για το δεύτερο μου 676 00:31:11,960 --> 00:31:17,600 αίτηση, ανακοίνωση τώρα που το αίτημά μου κεφαλίδες περιλαμβάνουν PHPSESSID ισούται με αυτό, 677 00:31:17,600 --> 00:31:19,390 δεν έχει οριστεί-cookie, αλλά μόνο μπισκότο. 678 00:31:19,390 --> 00:31:22,950 Και αυτό είναι παρουσίαση του προγράμματος περιήγησής μου χαρτοσήμου χέρι μου. 679 00:31:22,950 --> 00:31:28,820 >> Έτσι τώρα ως ένα τρέιλερ, και θα μιλήσουμε περισσότερο γι 'αυτό σε μια εβδομάδα ή έτσι, αλλά 680 00:31:28,820 --> 00:31:31,590 με ποιο τρόπο αυτό θα κάνει ευάλωτες, ο λογαριασμός σας στο Facebook 681 00:31:31,590 --> 00:31:34,137 ευάλωτα, και άλλα τέτοια λογαριασμούς ευάλωτη; 682 00:31:34,137 --> 00:31:35,510 >> ΚΟΙΝΟ: Αν κάποιος έχει το cookie σας. 683 00:31:35,510 --> 00:31:36,750 >> DAVID MALAN: Ναι, αν κάποιος έχει το cookie σας. 684 00:31:36,750 --> 00:31:39,920 Εννοώ πραγματικά, σαν κάποιοι από εσάς μπορεί να έχουν δοκιμάσει, όπως μια λέσχη ή ένα 685 00:31:39,920 --> 00:31:44,030 λούνα παρκ, αν δοκιμάσετε κάτι όπως αυτό για να αντιγράψετε τη σφραγίδα, αν και 686 00:31:44,030 --> 00:31:47,560 προς τα πίσω πάνω στο χέρι ενός άλλου ατόμου, και τότε αυτός ή αυτή παρουσιάζει ως 687 00:31:47,560 --> 00:31:53,250 δική τους, αν πραγματικά δεν φαίνονται ταυτόσημα, 123456789, τότε ο ιστός 688 00:31:53,250 --> 00:31:57,980 server είναι προφανώς ακριβώς πρόκειται να εμπιστεύονται ότι ο χρήστης είναι εσύ. 689 00:31:57,980 --> 00:32:01,450 >> Και αυτό είναι πράγματι ένα θεμελιώδες απειλή κάθε φορά που χρησιμοποιούν cookies 690 00:32:01,450 --> 00:32:05,420 γιατί αν κάποιος διακωμωδεί ακριβώς έτσι να μιλούν μπισκότο σας, στοιχεία από ό, τι 691 00:32:05,420 --> 00:32:08,660 είναι, είτε με αληθινά αντιγραφή κοιτάζοντας τον υπολογιστή σας 692 00:32:08,660 --> 00:32:09,890 και να είναι όπως, OK. 693 00:32:09,890 --> 00:32:14,520 Μπισκότο David είναι JJ3JIK και ούτω καθεξής, και τότε είναι αρκετά έξυπνος για να ξέρω 694 00:32:14,520 --> 00:32:18,080 πώς να είδος στείλετε χειροκίνητα ότι cookie από ένα πρόγραμμα περιήγησης ή από ένα 695 00:32:18,080 --> 00:32:22,350 πρόγραμμα που γράφουν, θα μπορούσαν εντελώς συνδεθείτε σε μια ιστοσελίδα όπως εσείς. 696 00:32:22,350 --> 00:32:28,560 Δεν είναι ότι σκληρά για να προσποιούνται ότι είναι κάποιος άλλος, αν δεν επανεξετάσουμε p-set 697 00:32:28,560 --> 00:32:30,790 δύο, η οποία εισήγαγε αυτό; 698 00:32:30,790 --> 00:32:32,065 >> ΚΟΙΝΟ: Κρυπτογραφία. 699 00:32:32,065 --> 00:32:33,860 >> DAVID MALAN: Ένα μικρό κομμάτι της κρυπτογραφίας. 700 00:32:33,860 --> 00:32:36,550 Απλή κρυπτογραφία, τουλάχιστον στην βασική έκδοση, αλλά crypto 701 00:32:36,550 --> 00:32:36,870 παρ 'όλα αυτά. 702 00:32:36,870 --> 00:32:37,410 λιγότερο. 703 00:32:37,410 --> 00:32:41,440 Έτσι αποδεικνύεται αν κρυπτογραφήσετε όλα αυτές οι κεφαλίδες, χρησιμοποιώντας κάτι που 704 00:32:41,440 --> 00:32:48,770 θα μπορούσε σήμερα γνωρίζουμε περισσότερο γνωστή ως SSL, secure socket layer, ή https:// διευθύνσεις URL, 705 00:32:48,770 --> 00:32:51,890 Στη συνέχεια όλα αυτά τα πράγματα είμαστε Ματιές πραγματικά κρυπτογραφημένα, 706 00:32:51,890 --> 00:32:54,800 πράγμα που σημαίνει ότι είναι σαν να Δεν μπορεί να διαβάσει τη σφραγίδα χέρι. 707 00:32:54,800 --> 00:32:59,350 Μόνο facebook.com μπορεί, ή google.com, ή στην περίπτωση αυτή, η συσκευή μπορεί 708 00:32:59,350 --> 00:33:00,550 διαβάστε την εν λόγω σφραγίδα χέρι. 709 00:33:00,550 --> 00:33:04,020 >> Τραγικά όμως, και πάλι, αυτό είναι πάρα πολύ κατάλληλο με την ουσία NSA 710 00:33:04,020 --> 00:33:06,410 των καθυστερήσεων, ακόμη SSL είναι εύθραυστα. 711 00:33:06,410 --> 00:33:09,850 Και δεν είναι πραγματικά ότι σκληρά να σπάσει ακόμη και η κρυπτογράφηση. 712 00:33:09,850 --> 00:33:12,040 Όχι τόσο από την πυρόλυση την κρυπτογράφηση, αλλά από την εξαπάτηση του 713 00:33:12,040 --> 00:33:15,720 πρόγραμμα περιήγησης στο αποκρυπτογράφηση τα δεδομένα πρόωρα. 714 00:33:15,720 --> 00:33:17,880 Αλλά και πάλι, θα σας πειράζω με ότι πριν από καιρό. 715 00:33:17,880 --> 00:33:21,242 Για τώρα, απλά πρέπει να φοβόμαστε. 716 00:33:21,242 --> 00:33:23,070 Είναι τραγικό το είδος της αληθινής. 717 00:33:23,070 --> 00:33:23,760 >> Εντάξει. 718 00:33:23,760 --> 00:33:27,910 Έτσι, όταν το κάνει αυτό μας αφήνει τώρα; 719 00:33:27,910 --> 00:33:29,010 Λοιπόν, ας το κάνουμε. 720 00:33:29,010 --> 00:33:31,790 Ας πάμε μπροστά και να πάρει μια γρήγορη teaser πριν πάρουμε ένα διάλειμμα. 721 00:33:31,790 --> 00:33:33,790 Και νομίζω ότι θα καθυστερήσει λίγο περισσότερο σήμερα, αλλά θα πάμε να βουτήξει 722 00:33:33,790 --> 00:33:37,850 κάτι καινούργιο και σέξι, η οποία θα σας ανοίξουν την όρεξη για ακόμη περισσότερα. 723 00:33:37,850 --> 00:33:38,950 Έτσι, αυτό είναι το teaser. 724 00:33:38,950 --> 00:33:41,520 >> Έτσι, SQL, αρχίσαμε να μιλάμε για ποτέ τόσο σύντομο χρονικό διάστημα την τελευταία φορά. 725 00:33:41,520 --> 00:33:44,670 Θα πραγματικά να λερώσετε τα χέρια σας με ορισμένα από αυτά σε ρ-σετ επτά. 726 00:33:44,670 --> 00:33:46,480 Και σε απλή γλώσσα, αυτό σημαίνει SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 κάνει για σας; 729 00:33:49,850 --> 00:33:50,310 Τι είναι αυτό; 730 00:33:50,310 --> 00:33:51,546 Ναι. 731 00:33:51,546 --> 00:33:53,240 >> ΚΟΙΝΟ: Ας έχετε πρόσβαση στα στοιχεία. 732 00:33:53,240 --> 00:33:53,360 >> DAVID MALAN: Ναι. 733 00:33:53,360 --> 00:33:55,120 Είναι ας έχετε πρόσβαση στα στοιχεία σε μια βάση δεδομένων. 734 00:33:55,120 --> 00:33:56,710 Structured Query Language. 735 00:33:56,710 --> 00:33:59,890 Και αυτό είναι ουσιαστικά ένα γλώσσα προγραμματισμού. 736 00:33:59,890 --> 00:34:03,400 Υπάρχουν χαρακτηριστικά της είναι ότι εμείς ακόμα δεν θα χρησιμοποιήσει στην τάξη. 737 00:34:03,400 --> 00:34:04,710 Αλλά μπορείτε να αποτελεσματικά ορίσετε συναρτήσεις. 738 00:34:04,710 --> 00:34:06,870 Λέγονται αποθηκεύονται διαδικασίες SQL. 739 00:34:06,870 --> 00:34:09,860 Αλλά θα κρατήσει αρκετά απλή και μόνο χρησιμοποιήσετε ορισμένες βασικές λειτουργίες 740 00:34:09,860 --> 00:34:14,320 όπως η επιλογή των δεδομένων, εισαγωγή δεδομένων, ενημέρωση των δεδομένων, καθώς και τη διαγραφή δεδομένων. 741 00:34:14,320 --> 00:34:17,400 >> Και μπορείτε πραγματικά να σκεφτείτε μια βάση δεδομένων, όπως μια βάση δεδομένων SQL, όπως ακριβώς 742 00:34:17,400 --> 00:34:18,800 είναι το Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Επειδή SQL αναφέρεται σε μια σχεσιακή βάσης δεδομένων, όπου 744 00:34:21,989 --> 00:34:23,480 σχέση σημαίνει απλά πίνακες. 745 00:34:23,480 --> 00:34:24,739 Γραμμές και στήλες. 746 00:34:24,739 --> 00:34:27,929 Έτσι, οτιδήποτε μπορείτε να βάλετε σε ένα υπολογιστικό φύλλο όπως αυτό ή το Google Docs, 747 00:34:27,929 --> 00:34:32,460 θα μπορούσε να θέσει σε μια βάση δεδομένων SQL δηλώνοντας ένα τραπέζι. 748 00:34:32,460 --> 00:34:34,800 >> Τώρα, πώς μπορείτε πραγματικά να αποκτήσετε πρόσβαση οι πληροφορίες; 749 00:34:34,800 --> 00:34:38,239 Λοιπόν, με εντολές ή ερωτήματα όπως αυτό. 750 00:34:38,239 --> 00:34:40,199 SELECT, INSERT, UPDATE και DELETE. 751 00:34:40,199 --> 00:34:44,489 Και για το μεγαλύτερο μέρος, αυτά είναι η τέσσερις μόνο συστατικά που θα πρέπει να 752 00:34:44,489 --> 00:34:47,370 κάνει κάτι πολύ δυναμικά το πρόβλημα που επτά. 753 00:34:47,370 --> 00:34:49,940 >> Τώρα, πίσω στην ημέρα, θα κάνατε στην πραγματικότητα αλληλεπιδρούν με μια βάση δεδομένων σε μια 754 00:34:49,940 --> 00:34:52,730 μαύρο και άσπρο παράθυρο τερματικού σε Μια φωτεινή προτροπή σαν αυτό. 755 00:34:52,730 --> 00:34:56,370 Και η βάση δεδομένων που τρέχετε για το συσκευή ονομάζεται MySQL, η οποία είναι 756 00:34:56,370 --> 00:34:58,560 ελεύθερη και ανοικτή μηχανή βάσεων δεδομένων πηγής. 757 00:34:58,560 --> 00:35:02,240 Αν έχετε το Google και να διαβάσετε το Wikipedia το άρθρο, θα ξέρετε ότι το όνομα είναι 758 00:35:02,240 --> 00:35:05,060 ένα κομμάτι της μετάβασης για ορισμένες εκδόσεις του Linux. 759 00:35:05,060 --> 00:35:10,460 Maria βάση δεδομένων είναι στην πραγματικότητα ένα πιρούνι έτσι ώστε να μιλάμε για MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Μεγάλη ιστορία σύντομη, Oracle αγόρασε την MySQL. 761 00:35:12,740 --> 00:35:13,870 Oracle είναι μια μεγάλη εταιρεία. 762 00:35:13,870 --> 00:35:17,010 Οι άνθρωποι έχουν ανησυχούν ότι θα δεν παραμένουν αρκετά ως open source, 763 00:35:17,010 --> 00:35:20,930 έτσι αυτό είναι απλώς ένα αντίγραφο της MySQL που είναι εξακολουθούν να είναι ελεύθερα, ακόμα ανοικτή πηγή, και 764 00:35:20,930 --> 00:35:23,550 εγκατασταθεί στο Fedora Linux από προεπιλογή. 765 00:35:23,550 --> 00:35:26,130 >> Αλλά αυτό είναι το είδος του πόνου στην λαιμό να εξοικειωθούν με 766 00:35:26,130 --> 00:35:27,310 βάση δεδομένων με αυτόν τον τρόπο. 767 00:35:27,310 --> 00:35:30,560 Έτσι έχουμε συμπεριλάβει στη συσκευή CS50 ένα δωρεάν εργαλείο ανοικτού κώδικα που ονομάζεται 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Μόνο τυχαίο το γεγονός ότι είναι γραμμένο σε PHP. 770 00:35:33,940 --> 00:35:36,450 Δεν υπάρχει θεμελιώδης χρειάζονται για την PHP εδώ. 771 00:35:36,450 --> 00:35:40,090 Αλλά αυτό είναι μόνο ένα web-based εργαλείο που θα κατεβάσει δωρεάν, εγκατεστημένο σε 772 00:35:40,090 --> 00:35:43,850 η συσκευή, που μας επιτρέπει να έχουμε μια γραφική διεπαφή χρήστη με το οποίο 773 00:35:43,850 --> 00:35:48,610 να διερευνήσει το p-set επτά δεδομένων με η οποία για τη δημιουργία νέων βάσεων δεδομένων, 774 00:35:48,610 --> 00:35:51,980 ας πούμε για ίδια τελική έργο σας αν θέλετε αρέσει, και τελικά, να δημιουργήσουν 775 00:35:51,980 --> 00:35:55,900 δυναμικές ιστοσελίδες όπως CS50 Οικονομικών που σας επιτρέπουν να αναλύουμε τα δεδομένα και 776 00:35:55,900 --> 00:35:58,140 ενημέρωση των δεδομένων δυναμικά. 777 00:35:58,140 --> 00:36:01,420 >> Δεν πάμε να πρέπει να χρησιμοποιήσετε μόνο ένα απλό αρχείο κειμένου ή CSV. 778 00:36:01,420 --> 00:36:05,950 Μπορείτε να χρησιμοποιήσετε πραγματικά μια έξυπνη βάση δεδομένων προγράμματος, ώστε να μπορείτε να εκτελέσετε περισσότερες 779 00:36:05,950 --> 00:36:10,240 σύνθετα ερωτήματα από την απλή ανάγνωση τα πάντα γραμμικά. 780 00:36:10,240 --> 00:36:14,150 >> Έτσι, για παράδειγμα, αυτό είναι ό, τι δίνουμε σας έξω από το κουτί για το p-set επτά. 781 00:36:14,150 --> 00:36:18,280 Αυτό είναι ένας πίνακας με φαινομενικά τουλάχιστον τρεις στήλες, μία από τις οποίες είναι 782 00:36:18,280 --> 00:36:21,450 όνομα χρήστη, ένα εκ των οποίων είναι hash, και το άλλο των οποίων είναι αναγνωριστικό. 783 00:36:21,450 --> 00:36:26,200 >> Αλλά το ενδιαφέρον πράγμα, και μόνο για δώσουμε έμφαση μια σκέψη εδώ, το όνομα χρήστη 784 00:36:26,200 --> 00:36:29,270 είναι πιθανώς ήδη μοναδικό, έτσι δεν είναι; 785 00:36:29,270 --> 00:36:31,190 Θέλω να πω, οι περισσότεροι οποιαδήποτε ιστοσελίδα, εάν έχετε ένα όνομα χρήστη, υπάρχει 786 00:36:31,190 --> 00:36:32,370 δεν μπορεί να είναι δύο Caesars. 787 00:36:32,370 --> 00:36:33,440 Δεν μπορούν να υπάρχουν δύο Malans. 788 00:36:33,440 --> 00:36:34,950 Δεν μπορούν να υπάρχουν δύο jharvards. 789 00:36:34,950 --> 00:36:35,600 Μοναδική του. 790 00:36:35,600 --> 00:36:38,610 Σε αντίθετη περίπτωση, δεν ξέρουν που jharvard είναι στην πραγματικότητα. 791 00:36:38,610 --> 00:36:42,710 Λοιπόν, τι θα μπορούσε να είναι το κίνητρο για επίσης έχοντας μια τρίτη στήλη στα αριστερά 792 00:36:42,710 --> 00:36:46,970 εκεί που ονομάζεται ID, το οποίο μοιάζει με ένα αριθμός που είναι παρόμοια μοναδικό; 793 00:36:46,970 --> 00:36:51,300 Νιώθω λίγο περιττή για μένα με την πρώτη ματιά. 794 00:36:51,300 --> 00:36:54,910 Γιατί μπορεί να είναι συναρπαστικό να έχουμε όχι μόνο μοναδικά ονόματα, 795 00:36:54,910 --> 00:36:56,837 αλλά και μοναδικούς αριθμούς; 796 00:36:56,837 --> 00:36:59,460 >> Κοινό: Θα μπορούσαν να έχουν το ίδιο password. 797 00:36:59,460 --> 00:37:01,720 >> DAVID MALAN: Οι άνθρωποι μπορεί να έχουν το ίδιο password, σίγουρα. 798 00:37:01,720 --> 00:37:03,900 Αυτό θα μπορούσε να συμβεί απολύτως. 799 00:37:03,900 --> 00:37:08,270 Αλλά αν έχουν αυτό το μοναδικό όνομα χρήστη, I Θα έλεγα ότι αυτό δεν είναι πραγματικά 800 00:37:08,270 --> 00:37:11,630 το θέμα, γιατί αν πληκτρολογήσετε τους όνομα χρήστη, το μόνο που πρέπει να ελέγξετε τους 801 00:37:11,630 --> 00:37:15,060 κωδικό πρόσβασης, κατακερματισμού αυτής τους. 802 00:37:15,060 --> 00:37:15,970 Γιατί αλλιώς; 803 00:37:15,970 --> 00:37:17,950 >> ΚΟΙΝΟ: Ταχύτερη αναζήτηση. 804 00:37:17,950 --> 00:37:18,680 >> DAVID MALAN: Ταχύτερη αναζήτηση. 805 00:37:18,680 --> 00:37:19,548 Γιατί; 806 00:37:19,548 --> 00:37:21,460 >> ΚΟΙΝΟ: ID είναι μόνο μία. 807 00:37:21,460 --> 00:37:24,040 >> DAVID MALAN: ID είναι μόνο ένα χαρακτήρα, ή για να είμαι πιο ακριβής, είναι ένας αριθμός, 808 00:37:24,040 --> 00:37:26,910 έτσι είναι πιθανώς 32 bits ή κάτι τέτοιο. 809 00:37:26,910 --> 00:37:30,270 Ότι το όνομα, προφανώς Jason Hirschhorn είναι μέχρι εκεί είναι το είδος της 810 00:37:30,270 --> 00:37:33,900 γελοία καιρό, και πρόκειται να μου πάρει πολύ περισσότερο χρόνο σε string 811 00:37:33,900 --> 00:37:40,910 συγκρίνουν H-Ι-Κ-S-C-Η-Η-Ο-Κ-Ν, και ίσως α / 0 ή κάτι τέτοιο, προκειμένου 812 00:37:40,910 --> 00:37:45,100 να αναζητήσετε Jason, σε αντίθεση με μόνο λέγοντας μου δώστε το αριθμό των χρηστών δύο. 813 00:37:45,100 --> 00:37:46,510 Αυτό είναι 32 bits. 814 00:37:46,510 --> 00:37:48,550 Είναι ένα ενιαίο INT ότι θα πρέπει να συγκρίνετε. 815 00:37:48,550 --> 00:37:52,150 Και πράγματι, αυτό είναι ακριβώς γιατί βάσεις δεδομένων τείνουν να εκχωρήσετε μοναδικά αναγνωριστικά για να 816 00:37:52,150 --> 00:37:53,710 σειρές σε αυτές. 817 00:37:53,710 --> 00:37:56,280 >> Τώρα τα δεδομένα ποια άλλα είδη υπάρχουν Εκτός από INT και προφανώς 818 00:37:56,280 --> 00:37:57,160 χορδές σαν αυτό; 819 00:37:57,160 --> 00:37:59,700 Λοιπόν, για να είναι πιο σωστή, SQL βάσεις δεδομένων, όπως 820 00:37:59,700 --> 00:38:02,060 MySQL, έχουν ΧΑΡ πεδία. 821 00:38:02,060 --> 00:38:05,320 Και ΧΑΡ λίγο παραπλανητικά δεν είναι μια ενιαία ΧΑΡ. 822 00:38:05,320 --> 00:38:10,290 Ένα πεδίο CHAR σε μια βάση δεδομένων MySQL είναι έναν ή περισσότερους χαρακτήρες, αλλά είναι ένα 823 00:38:10,290 --> 00:38:11,780 σταθερό αριθμό χαρακτήρων. 824 00:38:11,780 --> 00:38:15,710 >> Έτσι, για παράδειγμα, αν πάω πάνω να phpMyAdmin, όπως μπορεί να έχετε ήδη, ή 825 00:38:15,710 --> 00:38:21,340 σύντομα θα είναι ένα πρόβλημα που επτά, και πάω στη βάση δεδομένων μου, και μόνο για διασκέδαση, 826 00:38:21,340 --> 00:38:25,700 ας δημιουργήσουμε ένα νέο πίνακα με το όνομα δοκιμή μόνο με δύο στήλες. 827 00:38:25,700 --> 00:38:27,160 Θα στη συνέχεια κάντε κλικ στο κουμπί Μετάβαση. 828 00:38:27,160 --> 00:38:30,070 Και αυτό θα γίνει αρκετά εξοικειωμένοι, ιδίως σε ό, πειραματιζόμαστε 829 00:38:30,070 --> 00:38:31,130 γύρω από τη δική σας. 830 00:38:31,130 --> 00:38:34,140 Εδώ θα μπορούσα να πληκτρολογήστε το αναγνωριστικό για να δημιουργήσετε ένα νέο πίνακα τύπου int. 831 00:38:34,140 --> 00:38:37,770 Αλλά εδώ να πληκτρολογήσετε το όνομα χρήστη για να αναδημιουργήσει ότι νωρίτερα πίνακα. 832 00:38:37,770 --> 00:38:40,700 Και παρατηρήσετε έχω ένα σωρό από είδη για να διαλέξετε. 833 00:38:40,700 --> 00:38:43,610 >> Και αυτό είναι πάρα πολύ γιατί phpMyAdmin το είδος της Νίκαιας. 834 00:38:43,610 --> 00:38:46,770 Είναι το είδος της αυτο-διδασκαλία σε ότι σας μπορεί να είναι ακριβώς το είδος του σημείου, και κάντε κλικ στο κουμπί, και 835 00:38:46,770 --> 00:38:50,730 εξετάσουμε αναπτυσσόμενο μενού, και να συναγάγει από ότι αυτό εξουσίες SQL σας δίνει. 836 00:38:50,730 --> 00:38:54,090 >> Και πράγματι, αν μπορώ να επιλέξω ΧΑΡ, εγώ τότε πρέπει να καθορίσετε το μήκος, ή πώς 837 00:38:54,090 --> 00:38:55,940 πολλές αξίες, πόσα ΧΑΡΑΚΤήρων. 838 00:38:55,940 --> 00:39:00,090 Έτσι, πολύ κοινές αξίες είναι τα πράγματα όπως 255, αλλά ότι είναι λίγο μεγάλη. 839 00:39:00,090 --> 00:39:02,250 Συνήθως είναι οκτώ για ένα όνομα χρήστη. 840 00:39:02,250 --> 00:39:03,590 Αλλά αυτό είναι λίγο μικρό αυτές τις μέρες. 841 00:39:03,590 --> 00:39:05,430 Έτσι, αυτό είναι μια απόφαση σχεδιασμού. 842 00:39:05,430 --> 00:39:08,630 Είναι 8 max χαρακτήρες, 32, 255, 1000; 843 00:39:08,630 --> 00:39:09,830 Είναι πραγματικά μέχρι σας. 844 00:39:09,830 --> 00:39:12,350 Αλλά μια CHAR πεδίο είναι ένας σταθερός αριθμός. 845 00:39:12,350 --> 00:39:16,420 Έτσι, επιλέγουν πολύ λίγα και είστε το είδος του βιδώνονται αν θέλετε ένα μεγαλύτερο όνομα. 846 00:39:16,420 --> 00:39:19,132 Επιλέξτε πάρα πολλά και ό, τι είναι το μειονέκτημα; 847 00:39:19,132 --> 00:39:20,820 >> ΚΟΙΝΟ: [δεν ακούγεται]. 848 00:39:20,820 --> 00:39:21,620 >> DAVID MALAN: Είναι σπατάλη. 849 00:39:21,620 --> 00:39:24,835 Ακριβώς όπως και στην C, αν έχετε ένα μεγαλύτερο κομμάτι της μνήμης από ό, τι χρειάζεστε, είστε 850 00:39:24,835 --> 00:39:27,190 απλά χάσιμο χρόνου και σπατάλη χώρου. 851 00:39:27,190 --> 00:39:31,430 Έτσι, ως εναλλακτική λύση, υπάρχει VARCHAR, η οποία επιλύει αυτό το πρόβλημα με 852 00:39:31,430 --> 00:39:36,390 θεραπεία μήκος όχι ως ένα σταθερό μήκος, αλλά ως μέγιστο μήκος, και χρησιμοποιώντας ένα 853 00:39:36,390 --> 00:39:40,990 μεταβλητό αριθμό των χαρακτήρων, η οποία κατόπιν τείνει να χρησιμοποιεί μόνο όσες ΧΑΡΑΚΤήρων όπως σας 854 00:39:40,990 --> 00:39:42,710 πραγματικά ανάγκη. 855 00:39:42,710 --> 00:39:43,670 Αυτό ακούγεται τέλειο. 856 00:39:43,670 --> 00:39:45,640 >> Γιατί δεν μπορούμε να απαλλαγούμε από το ΧΑΡ δεδομένα στη συνέχεια, πληκτρολογήστε; 857 00:39:45,640 --> 00:39:48,500 Τι θα μπορούσε να είναι το μειονέκτημα της χρησιμοποιώντας VARCHARs, το οποίο ακούγεται 858 00:39:48,500 --> 00:39:51,644 σαν να είναι μια ωραία νίκη; 859 00:39:51,644 --> 00:39:52,596 Ναι; 860 00:39:52,596 --> 00:39:53,846 >> ΚΟΙΝΟ: [δεν ακούγεται]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVID MALAN: Εντάξει, καλά. 863 00:39:57,790 --> 00:40:01,101 Έτσι, αν όλα τα δεδομένα σας είναι η ίδια μήκος, ποια είναι η ανησυχία; 864 00:40:01,101 --> 00:40:05,250 >> ΚΟΙΝΟ: Επειδή είστε σπατάλη δεδομένα λέγοντάς τους όλους. 865 00:40:05,250 --> 00:40:09,060 >> DAVID MALAN: Έτσι, αν όλα τα δεδομένα σας είναι το ίδιο μήκος, όμως, θα έλεγα 866 00:40:09,060 --> 00:40:12,300 ότι καθορίζοντας ένα μέγιστο μήκος για VARCHAR δεν είναι διαφορετική από την 867 00:40:12,300 --> 00:40:16,070 καθορίζοντας ένα σταθερό μήκος για ΧΑΡ ​​αν γνωρίζετε τον αριθμό αυτό εκ των προτέρων. 868 00:40:16,070 --> 00:40:19,500 Αλλά υπάρχει, πράγματι, και θα ταξινομήσετε του απόσπασμα από την απάντηση αυτή την πραγματικότητα 869 00:40:19,500 --> 00:40:22,610 ότι εξακολουθεί να υπάρχει ένα μέγιστο, η οποία θα μπορούσε να είναι ενοχλητικό, ειδικά αν 870 00:40:22,610 --> 00:40:25,920 αντιμετωπίζουν το όνομα ενός ατόμου που είναι ασυνήθιστα μεγάλη που δεν 871 00:40:25,920 --> 00:40:26,860 πρόβλεψη. 872 00:40:26,860 --> 00:40:31,420 Και είναι επίσης λίγο λιγότερο αποτελεσματική πραγματικά να ψάξετε για VARCHARs ως 873 00:40:31,420 --> 00:40:35,620 αντίθεση με την αναζήτηση ΧΑΡΑΚΤήρων, ιδίως για μεγάλα τραπέζια που έχουν πολλά και 874 00:40:35,620 --> 00:40:36,510 πολλά δεδομένα. 875 00:40:36,510 --> 00:40:40,060 Έτσι και εδώ, θεματικές είναι και πάλι Δεν προφανής επιλογή. 876 00:40:40,060 --> 00:40:42,870 >> Έτσι απλά για να σας δώσει μια αίσθηση των άλλων τύπους δεδομένων που θα μπορούσαν να ενδιαφέρουν 877 00:40:42,870 --> 00:40:45,400 είτε για την p-set επτά ή σε το μέλλον, υπάρχει INT. 878 00:40:45,400 --> 00:40:47,270 Υπάρχει BIGINT, η οποία είναι σαν πολύ καιρό. 879 00:40:47,270 --> 00:40:48,880 Τείνει να είναι 64 bits. 880 00:40:48,880 --> 00:40:51,640 Υπάρχει DECIMAL, τα οποία θα δείτε στο Το σύνολο πρόβλημα, το οποίο είναι ένα πολύ 881 00:40:51,640 --> 00:40:55,300 απάντηση καθαρότερο για τα προβλήματα που αντιμετώπισε με φλοτέρ και πλωτά 882 00:40:55,300 --> 00:40:55,980 ανακρίβεια σημείο. 883 00:40:55,980 --> 00:40:57,390 Και έπειτα υπάρχει DATETIME. 884 00:40:57,390 --> 00:41:01,530 Υπάρχει κυριολεκτικά ένας τύπος δεδομένων που έχει να μοιάζει με ένα έτος, το μήνα, την ημέρα, 885 00:41:01,530 --> 00:41:03,730 και μια ώρα, λεπτό και το δεύτερο. 886 00:41:03,730 --> 00:41:07,470 >> Αλλά SQL βάσεις δεδομένων έχουν επίσης τα πράγματα θα καλέσουμε ευρετήρια. 887 00:41:07,470 --> 00:41:11,630 Και ένας δείκτης είναι κάτι που καθορίσετε κατά τη δημιουργία του πίνακα 888 00:41:11,630 --> 00:41:15,720 κάνουν αναζητήσεις και άλλες λειτουργίες πιο αποτελεσματική. 889 00:41:15,720 --> 00:41:18,550 Συγκεκριμένα, υπάρχει κάτι που ονομάζεται Ο πρωταρχικός δείκτης που θα μπορούσατε 890 00:41:18,550 --> 00:41:19,440 δηλώνουν ως εξής. 891 00:41:19,440 --> 00:41:22,330 >> Το κάναμε αυτό για σας με το χρήστες του πίνακα που σας δίνουμε. 892 00:41:22,330 --> 00:41:26,160 Να σημειωθεί όμως αν ήταν το χέρι αναδημιουργία Ο πίνακας χρήστες εδώ δίνοντας 893 00:41:26,160 --> 00:41:27,110 ένα όνομα των χρηστών. 894 00:41:27,110 --> 00:41:28,125 Έχω ήδη καθορίσει ID. 895 00:41:28,125 --> 00:41:29,330 I καθορίζεται INT. 896 00:41:29,330 --> 00:41:32,000 Έχω καθορίσει το όνομα χρήστη με έως 32 χαρακτήρες. 897 00:41:32,000 --> 00:41:36,140 Αλλά αν συνεχίσετε την κύλιση σε αυτό το αρκετά μεγάλο παράθυρο, παρατηρούμε ότι υπάρχει μια 898 00:41:36,140 --> 00:41:38,260 σωρό άλλα πράγματα που μπορείτε να καθορίσετε. 899 00:41:38,260 --> 00:41:40,950 >> Ένα, μπορώ να καθορίσετε τις ιδιότητες όπως, ξέρετε τι, αυτή 900 00:41:40,950 --> 00:41:42,190 INT θα πρέπει να μην είναι υπογεγραμμένο. 901 00:41:42,190 --> 00:41:45,510 Δεν θέλω αρνητικούς αριθμούς, οπότε ας κάνουν UNSIGNED. 902 00:41:45,510 --> 00:41:48,660 Null δεν είναι σχετική εδώ, διότι Θέλω σε κάθε χρήστη να 903 00:41:48,660 --> 00:41:49,640 έχουν ένα μοναδικό αριθμό. 904 00:41:49,640 --> 00:41:50,830 Δεν θέλω να είναι null. 905 00:41:50,830 --> 00:41:52,330 >> Αλλά αυτό είναι ενδιαφέρον. 906 00:41:52,330 --> 00:41:57,780 Μπορώ να καθορίσετε ότι το ID είναι είτε η πρωτεύον κλειδί αυτής της βάσης δεδομένων, ή να είναι 907 00:41:57,780 --> 00:42:00,620 μοναδικά, ή είναι ευρετήριο, ή το πλήρες κείμενο. 908 00:42:00,620 --> 00:42:05,630 Έτσι, για τους σκοπούς του σήμερα, μεγάλη ιστορία σύντομη, ΔΗΜΟΤΙΚΟ σημαίνει ότι αυτό θα 909 00:42:05,630 --> 00:42:10,570 είναι τόσο εννοιολογικά και τεχνικά το πεδίο που χρησιμοποιούμε για τη μοναδική 910 00:42:10,570 --> 00:42:12,140 ταυτοποίηση χρηστών. 911 00:42:12,140 --> 00:42:16,140 >> Έτσι, όταν έχουμε να αναζητήσετε χρήστες, αυτό είναι το είδος από την υπόσχεση να τους δούμε αποτελείται κυρίως από 912 00:42:16,140 --> 00:42:17,370 ότι το μοναδικό αναγνωριστικό. 913 00:42:17,370 --> 00:42:21,930 Και η βάση δεδομένων θα εξασφαλίσει ότι εάν έχουν έναν αριθμό χρηστών 3, δεν μπορείτε να 914 00:42:21,930 --> 00:42:25,400 σωματικά τοποθετήστε έναν άλλο χρήστη με τον ίδιο αριθμό 3. 915 00:42:25,400 --> 00:42:28,380 Η βάση δεδομένων απλά θα αρνηθούν για να αποθηκεύσετε τις αλλαγές σας. 916 00:42:28,380 --> 00:42:32,310 Ποιο είναι ένα καλό πράγμα, επειδή μπορείτε να προστατεύσει τον εαυτό σας από τον εαυτό σας. εαυτός 917 00:42:32,310 --> 00:42:34,270 >> Εναλλακτικά, για το όνομα χρήστη. 918 00:42:34,270 --> 00:42:37,670 Έτσι, η δεύτερη σειρά, ανάκληση, είναι το πεδίο το όνομα χρήστη. 919 00:42:37,670 --> 00:42:41,860 Έτσι, η δεύτερη γραμμή είναι εδώ το όνομα χρήστη, όπως κάναμε για την άκρα αριστερά εκεί. 920 00:42:41,860 --> 00:42:43,940 >> Λοιπόν, τι άλλο θα μπορούσε να θέλω να προσδιορίσω; 921 00:42:43,940 --> 00:42:47,840 Δεν μου επιτρέπεται, σύμφωνα με το SQL, για να καθορίσετε δύο πρωτεύοντα κλειδιά. 922 00:42:47,840 --> 00:42:50,750 μπορείτε να καθορίσετε ένα κοινό κλειδί, όπου μπορείτε εξετάσουμε δύο πεδία, αλλά δεν μπορούν 923 00:42:50,750 --> 00:42:52,260 μεμονωμένα είναι πρωτεύοντα κλειδιά. 924 00:42:52,260 --> 00:42:54,750 Έτσι, αυτό είναι έξω από το θέμα. 925 00:42:54,750 --> 00:42:56,040 Έτσι, ποιο θα μπορούσε να θέλω να επιλέξω; 926 00:42:56,040 --> 00:42:59,710 >> Λοιπόν, ΜΟΝΑΔΙΚΟ είναι παρόμοιες στο πνεύμα με μια πρωτεύον κλειδί, όπου μπορείτε να το αναφέρετε 927 00:42:59,710 --> 00:43:03,570 πεδίου πρέπει να είναι μοναδικό, αλλά είναι Δεν πρόκειται να είναι το ένα 928 00:43:03,570 --> 00:43:04,410 Μπορώ να χρησιμοποιήσω όλη την ώρα. 929 00:43:04,410 --> 00:43:08,450 Και δεν πρόκειται να χρησιμοποιήσετε αυτό το ένα όλα ο χρόνος για ποιο λόγο και πάλι; 930 00:43:08,450 --> 00:43:10,490 Είναι πιο αργή δυνητικά εάν είναι ένα μεγάλο όνομα. 931 00:43:10,490 --> 00:43:11,740 Είναι απλά ένα χάσιμο χρόνου. 932 00:43:11,740 --> 00:43:16,140 >> INDEX, εν τω μεταξύ, διευκρινίζει ότι είναι δεν πρόκειται να είναι μοναδική, αλλά θα ήθελα 933 00:43:16,140 --> 00:43:19,470 μπορείτε να απασχοληθεί σε μαγικό σας κάτω από το κουκούλα για να γίνει πιο γρήγορα για μένα να 934 00:43:19,470 --> 00:43:21,420 αναζήτηση σε αυτόν τον τομέα. 935 00:43:21,420 --> 00:43:23,320 Έτσι, αυτό μάλλον δεν είναι σχετική εδώ. 936 00:43:23,320 --> 00:43:26,500 Για όνομα, θα έλεγα ότι ΜΟΝΑΔΙΚΗ είναι μια καλή απάντηση. 937 00:43:26,500 --> 00:43:31,200 Αλλά ας υποθέσουμε ότι έχουμε κάνει τους χρήστες πιο ενδιαφέρουσα από ό, τι ακριβώς ονόματα χρηστών, 938 00:43:31,200 --> 00:43:32,430 hashes, και αριθμούς ταυτότητας. 939 00:43:32,430 --> 00:43:33,860 Τι θα συμβεί αν δώσουμε στους λαούς πλήρη ονόματα; 940 00:43:33,860 --> 00:43:37,700 Τι θα συμβεί αν τους δώσαμε διευθύνσεις και άλλα δεδομένα σχετικά με αυτά; 941 00:43:37,700 --> 00:43:43,360 >> Λοιπόν, αν καθορίσετε ότι μια στήλη σε μια βάση δεδομένων στο ευρετήριο, αυτό σημαίνει ότι 942 00:43:43,360 --> 00:43:47,730 MySQL ή Oracle, ή οποιαδήποτε άλλη βάση που χρησιμοποιείτε, θα πρέπει να εργαστεί μαγεία της 943 00:43:47,730 --> 00:43:51,300 και να χρησιμοποιούν κάποιο είδος της φαντασίας δεδομένων δομή, όπως ένα δέντρο ή ένα trie, ή 944 00:43:51,300 --> 00:43:55,940 hash πίνακα, ή κάτι για να εγγυηθεί ότι όταν ψάχνετε για δεδομένα χρησιμοποιώντας 945 00:43:55,940 --> 00:43:58,150 επιλέξτε στο συγκεκριμένο τομέα - 946 00:43:58,150 --> 00:44:01,310 σαν να μου δείξει σε όλους ότι ζει στην Oxford Street. 947 00:44:01,310 --> 00:44:02,540 Ένα ερώτημα όπως αυτό. 948 00:44:02,540 --> 00:44:06,250 Αν έχετε καθορίσει εκ των προτέρων ότι θέλετε ένα ευρετήριο σε αυτό το πεδίο, η 949 00:44:06,250 --> 00:44:09,050 αναζητήσεις θα ήταν πολύ, πολύ πιο γρήγορα. 950 00:44:09,050 --> 00:44:12,090 >> Εάν δεν καθορίσετε ένα ευρετήριο, το καλύτερο μπορείτε να κάνετε είναι μια γραμμική αναζήτηση, αν 951 00:44:12,090 --> 00:44:13,030 δεν είναι ταξινόμηση. 952 00:44:13,030 --> 00:44:16,220 Αλλά αν ορίσετε INDEX, την έξυπνη άνθρωποι που έκαναν τη βάση δεδομένων - 953 00:44:16,220 --> 00:44:19,340 ανθρώπους σαν εσάς που ξέρετε τώρα τα δέντρα και προσπαθεί και πίνακες κατακερματισμού - 954 00:44:19,340 --> 00:44:23,220 θα δημιουργήσει αυτόματα μια τέτοια δεδομένα δομή στη μνήμη RAM για να βεβαιωθείτε ότι 955 00:44:23,220 --> 00:44:26,050 αυτές οι αναζητήσεις είναι πολύ πιο γρήγορα. 956 00:44:26,050 --> 00:44:29,660 >> FULLTEXT εν τω μεταξύ είναι συναφείς στο πνεύμα, αλλά σας επιτρέπει να κάνετε μπαλαντέρ 957 00:44:29,660 --> 00:44:35,480 αναζητήσεις, όπως μου δείξει σε όλους ότι ζει σε δρόμους που ξεκινούν με το 958 00:44:35,480 --> 00:44:36,960 O επιστολή για οποιονδήποτε λόγο. 959 00:44:36,960 --> 00:44:38,850 Μπορείτε να κάνετε τις αναζητήσεις μπαλαντέρ όπως αυτό. 960 00:44:38,850 --> 00:44:45,880 Ή, πιο επιτακτική πράγματα όπως δείχνουν Θέλω ο καθένας που έχει τη λέξη - 961 00:44:45,880 --> 00:44:49,400 δείξε μου κάθε πρόσωπο του οποίου το όνομα αρχίζει με ένα συγκεκριμένο γράμμα. 962 00:44:49,400 --> 00:44:51,880 Μπορείτε να αναζητήσετε λέξεις-κλειδιά με αυτόν τον τρόπο. 963 00:44:51,880 --> 00:44:52,630 Εντάξει. 964 00:44:52,630 --> 00:44:55,760 >> Έτσι, οι δυνατότητες σχεδιασμού ενδέχεται να υπάρχουν. 965 00:44:55,760 --> 00:44:57,740 Υπάρχουν άλλοι που θα είμαι κύμα τα χέρια μου. 966 00:44:57,740 --> 00:45:00,530 Αποδεικνύεται ότι μπορείτε να έχετε διαφορετικές μηχανές αποθήκευσης. 967 00:45:00,530 --> 00:45:04,390 Και αυτό είναι και πιο απόκρυφες ό, τι χρειαζόμαστε σίγουρα για το πρόβλημα που επτά. 968 00:45:04,390 --> 00:45:06,920 Από προεπιλογή, εσείς χρησιμοποιείτε κάτι που λέγεται InnoDB. 969 00:45:06,920 --> 00:45:10,910 Θα δείτε αναφορά σε αυτό το κάπου στο interface phpMyAdmin είναι πιο πιθανό. 970 00:45:10,910 --> 00:45:14,130 Αλλά να ξέρετε ότι υπάρχουν και άλλες σχεδιασμός αποφάσεις που είναι πιθανόν να 971 00:45:14,130 --> 00:45:18,030 ενδιαφέρον έρθει τελικών σχεδίων, αν κάνετε κάτι web-based. 972 00:45:18,030 --> 00:45:19,330 >> Αλλά ας το κάνουμε. 973 00:45:19,330 --> 00:45:23,130 Ας πάμε μπροστά και να θέσουμε αυτή σχετικά με την οθόνη ως ένα τρέιλερ για μια ιστορία 974 00:45:23,130 --> 00:45:26,330 συμμετοχή σας, ένα συγκάτοικο, και ένα ποτήρι γάλα. 975 00:45:26,330 --> 00:45:28,240 Ας ρίξουμε μια δύο λεπτά ή έτσι σπάσει εδώ. 976 00:45:28,240 --> 00:45:31,060 Και αν μπορείτε να κολλήσετε γύρω, ας έρθει πίσω, να δούμε λίγο περισσότερο σε SQL, και 977 00:45:31,060 --> 00:45:35,160 τότε ένα κομμάτι της JavaScript με p-που οκτώ στο μυαλό. 978 00:45:35,160 --> 00:45:36,120 >> Εντάξει. 979 00:45:36,120 --> 00:45:40,420 Έτσι, πάμε να σκεφτόμαστε ένα γωνιά περίπτωση που μπορεί πολύ εύκολα να προκύψουν 980 00:45:40,420 --> 00:45:44,240 στο πλαίσιο της βάσης δεδομένων χρησιμοποιώντας ένα ή ειλικρινά, ακόμη και με τη χρήση του πραγματικού κόσμου τα πράγματα 981 00:45:44,240 --> 00:45:46,280 όπως ΑΤΜ για να πάρουν τα χρήματα. 982 00:45:46,280 --> 00:45:47,640 Έτσι, εδώ είναι ένα ψυγείο. 983 00:45:47,640 --> 00:45:50,040 Ας υποθέσουμε ότι έχετε ένα πάρα πολύ σε dorm σας ή το σπίτι σας. 984 00:45:50,040 --> 00:45:54,990 Και έχεις ένα συγκάτοικο, και οι δύο από Σας αρέσει το γάλα, για παράδειγμα. 985 00:45:54,990 --> 00:45:57,210 >> Έτσι θα έρθει στο σπίτι από την τάξη μία ημέρα. 986 00:45:57,210 --> 00:45:58,490 Αυτός ή αυτή δεν είναι ακόμα πίσω. 987 00:45:58,490 --> 00:45:59,180 Μπορείτε να ανοίξετε το ψυγείο. 988 00:45:59,180 --> 00:46:00,870 Θέλετε πραγματικά ένα μεγάλο ποτήρι γάλα. 989 00:46:00,870 --> 00:46:01,820 Δεν υπάρχει γάλα. 990 00:46:01,820 --> 00:46:02,920 Οπότε τι κάνεις; 991 00:46:02,920 --> 00:46:03,840 Μπορείτε να κλείσετε το ψυγείο. 992 00:46:03,840 --> 00:46:04,670 Μπορείτε πιάσε τα κλειδιά σας. 993 00:46:04,670 --> 00:46:05,930 Θα βγούμε έξω στην πλατεία. 994 00:46:05,930 --> 00:46:09,240 Και μπορείτε να πάρετε στη γραμμή στο CVS σε εκείνους πράγματα εαυτό checkout, η οποία είναι πάντα 995 00:46:09,240 --> 00:46:11,180 να διαρκέσει περισσότερο από ό, τι στην πραγματικότητα έχοντας ταμίες. 996 00:46:11,180 --> 00:46:11,820 Εν πάση περιπτώσει. 997 00:46:11,820 --> 00:46:15,490 >> Έτσι, λοιπόν, εν τω μεταξύ, dot dot dot, σας συγκάτοικος έρχεται στο σπίτι και αυτός ή αυτή 998 00:46:15,490 --> 00:46:17,440 παρομοίως έχει μια μεγάλη επιθυμία για λίγο γάλα. 999 00:46:17,440 --> 00:46:20,380 Έτσι, αυτός ή αυτή ανοίγει το ψυγείο, κοιτάζει στο εσωτερικό, και ω, γαμώτο. 1000 00:46:20,380 --> 00:46:21,160 Δεν γάλα. 1001 00:46:21,160 --> 00:46:24,750 Έτσι, ο ίδιος ή η ίδια κεφάλια έξω, συμβαίνει να πάει στο άλλο CVS, η οποία ήταν μόνο μια 1002 00:46:24,750 --> 00:46:27,900 τετράγωνο μακριά για κάποιο λόγο, και αυτός ή παίρνει στη γραμμή για να αγοράσουν λίγο γάλα. 1003 00:46:27,900 --> 00:46:30,480 >> Εν τω μεταξύ, θα έρθει στο σπίτι, αυτός ή έρχεται στο σπίτι, και τι κάνουν 1004 00:46:30,480 --> 00:46:31,980 που τελικά έχει; 1005 00:46:31,980 --> 00:46:33,080 Δύο φορές περισσότερο γάλα. 1006 00:46:33,080 --> 00:46:34,620 Αλλά δεν σας αρέσει πραγματικά γάλα τόσο πολύ. 1007 00:46:34,620 --> 00:46:37,300 Έτσι τώρα έχετε τόσο πολύ γάλα που τώρα ένας από αυτούς είναι ακριβώς πρόκειται να πάει ξινή 1008 00:46:37,300 --> 00:46:37,820 τελικά. 1009 00:46:37,820 --> 00:46:39,370 Έτσι, αυτό είναι μια πραγματικά κακή πρόβλημα. 1010 00:46:39,370 --> 00:46:39,900 Σωστά; 1011 00:46:39,900 --> 00:46:41,990 >> Έτσι, τι έχει συμβεί; 1012 00:46:41,990 --> 00:46:44,810 Έτσι, ουσιαστικά, αυτό είναι το είδος από ένα γελοίο παράδειγμα. 1013 00:46:44,810 --> 00:46:48,580 Αλλά κάτω από την κουκούλα, τι είχαμε συμβεί εδώ είναι δύο από σας που ελέγχθηκαν 1014 00:46:48,580 --> 00:46:52,390 η κατάσταση με κάποιο κομμάτι του μνήμη, το ψυγείο. 1015 00:46:52,390 --> 00:46:54,420 Και οι δυο σας ελέγξει την κατάσταση κάποιας μεταβλητής. 1016 00:46:54,420 --> 00:46:57,360 Εσείς οι δύο επέστησε ένα συμπέρασμα ότι στη συνέχεια ενήργησε αναλόγως. 1017 00:46:57,360 --> 00:47:01,420 Αλλά δυστυχώς, ενώ η συγκάτοικός σας ήταν στο κατάστημα, η κατάσταση που 1018 00:47:01,420 --> 00:47:05,670 μεταβλητή αλλάξει, αυτός ή αυτή ήρθε πίσω και τώρα θέλει να αλλάξει την κατάσταση, αλλά 1019 00:47:05,670 --> 00:47:07,480 είναι ήδη αλλάξει σε αυτόν ή αυτήν. 1020 00:47:07,480 --> 00:47:11,120 Και φυσικά, αυτός ή αυτή δεν θα έχει πάει στο κατάστημα, αν ήξεραν 1021 00:47:11,120 --> 00:47:13,010 ότι θα ήταν ήδη καθ 'οδόν. 1022 00:47:13,010 --> 00:47:16,430 >> Έτσι, στον πραγματικό κόσμο, πώς θα μπορούσε να σας αποφύγετε αυτό το πρόβλημα, με την προϋπόθεση να έχουν 1023 00:47:16,430 --> 00:47:18,940 ψυγείο, έχετε έναν συγκάτοικο, και πραγματικά σας αρέσει το γάλα? 1024 00:47:18,940 --> 00:47:19,760 >> ΚΟΙΝΟ: επικοινωνία. 1025 00:47:19,760 --> 00:47:20,580 >> DAVID MALAN: Επικοινωνία. 1026 00:47:20,580 --> 00:47:21,160 OK. 1027 00:47:21,160 --> 00:47:22,500 Αλλά πώς μπορεί να σας επικοινωνούν; 1028 00:47:22,500 --> 00:47:23,990 >> ΚΟΙΝΟ: Αφήστε μια σημείωση. 1029 00:47:23,990 --> 00:47:25,480 >> DAVID MALAN: Αφήστε μια σημείωση, έτσι δεν είναι; 1030 00:47:25,480 --> 00:47:28,025 Πάντα να αφήσει ένα σημείωμα για οι οπαδοί του show. 1031 00:47:28,025 --> 00:47:31,580 Εντάξει, έτσι ώστε πάντα να αφήσει ένα σημείωμα, ή θέσει πραγματικά σαν ένα λουκέτο ή κάτι 1032 00:47:31,580 --> 00:47:35,440 στο ψυγείο που κρατά σας συγκάτοικο από τον έλεγχο της κατάστασης 1033 00:47:35,440 --> 00:47:36,540 αυτή η μεταβλητή. 1034 00:47:36,540 --> 00:47:40,800 >> Τώρα, γιατί μπορεί αυτό να είναι συναφές με set πρόβλημα επτά, ή σε ΑΤΜ. 1035 00:47:40,800 --> 00:47:46,780 Λοιπόν, φανταστείτε έναν κόσμο σε ένα ΑΤΜ, όπου ίσως να είναι σε θέση να πάει μέχρι ένα ΑΤΜ 1036 00:47:46,780 --> 00:47:48,920 μηχάνημα εδώ, και ένα άλλο ΑΤΜ εδώ. 1037 00:47:48,920 --> 00:47:50,680 Και αυτό συμβαίνει αρκετά συχνά. 1038 00:47:50,680 --> 00:47:54,150 Και ας υποθέσουμε ότι είχατε δύο κάρτες ΑΤΜ, η οποία είναι δυνατόν να επιτευχθεί. 1039 00:47:54,150 --> 00:47:57,420 Και μπορείτε να συνδεθείτε σε δύο μηχανήματα ουσιαστικά ταυτόχρονα, ελπίζουμε 1040 00:47:57,420 --> 00:47:58,660 ενώ κανείς δεν ψάχνει. 1041 00:47:58,660 --> 00:48:01,260 Και τότε θα πληκτρολογήσετε το PIN σας περίπου ταυτόχρονα. 1042 00:48:01,260 --> 00:48:06,280 Και στη συνέχεια, κάνετε ένα ερώτημα ισορροπίας για να δούμε πόσα χρήματα έχετε. 1043 00:48:06,280 --> 00:48:08,920 Και ας πούμε ότι έχετε 100 € αριστερά στο λογαριασμό σας. 1044 00:48:08,920 --> 00:48:13,310 Έτσι, ουσιαστικά ταυτόχρονα, πω ένα, μηδέν, μηδέν, πληκτρολογήστε. 1045 00:48:13,310 --> 00:48:16,000 Και ελπίζω να πάρει πίσω κάποια χρήματα. 1046 00:48:16,000 --> 00:48:18,440 >> Αλλά πόσα χρήματα μπορεί να σας πάρει πίσω; 1047 00:48:18,440 --> 00:48:21,710 Τώρα υπολογιστές στο τέλος της ημέρας, ειδικά αν μιλάμε για 1048 00:48:21,710 --> 00:48:27,360 servers, δεν κάνουν απαραίτητα πράγματα με τη σειρά που είναι αναμενόμενο. 1049 00:48:27,360 --> 00:48:30,860 >> Έτσι, ας υποθέσουμε τι συμβαίνει, εξαιτίας της όποια και αν είναι τα ζητήματα της ταχύτητας του δικτύου εκεί 1050 00:48:30,860 --> 00:48:34,530 είναι, ή θέματα CPU υπάρχουν, ή κάτι τέτοιο, ας υποθέσουμε ότι η 1051 00:48:34,530 --> 00:48:38,530 πρώτο ATM ελέγχει την ισορροπία σας και βλέπει, OH, αυτό το άτομο έχει $ 100. 1052 00:48:38,530 --> 00:48:41,840 Αλλά τότε γίνεται έξαλλος γιατί ίσως ένα αντίγραφο ασφαλείας που συμβαίνει και γι 'αυτό είναι 1053 00:48:41,840 --> 00:48:42,500 επιβραδύνεται. 1054 00:48:42,500 --> 00:48:45,080 Ή ίσως κατά τον έλεγχο, το δίκτυο σύνδεσης πήρε λίγο πιο αργά, επειδή 1055 00:48:45,080 --> 00:48:45,910 Αυτό ακριβώς συμβαίνει. 1056 00:48:45,910 --> 00:48:47,100 Είναι φυσικές συσκευές. 1057 00:48:47,100 --> 00:48:49,330 Έτσι εν τω μεταξύ, ο δεύτερος ΑΤΜ είναι ζητώντας από την ίδια ερώτηση. 1058 00:48:49,330 --> 00:48:53,030 Πόσα χρήματα έχει ο David έχει; 100 δολάρια είναι η απάντηση. 1059 00:48:53,030 --> 00:48:58,930 Αλλά επειδή η πρώτη ΑΤΜ δεν έχει ακόμη έστειλε το μήνυμα αφαιρούμε $ 100, και 1060 00:48:58,930 --> 00:49:03,000 ΑΤΜ έχουν ελεγχθεί θησαυροφυλάκιο της τράπεζας, βλέπουμε ότι υπάρχει 100 δολάρια εκεί, και τώρα 1061 00:49:03,000 --> 00:49:07,160 και οι δύο μηχανές είναι δυνητικά πρόκειται να φτύσει μια απάντηση. 1062 00:49:07,160 --> 00:49:12,240 >> Τώρα, αυτό είναι μεγάλη για σας κατά κάποιο τρόπο αν αυτό που κάνει η τράπεζα τελικά 1063 00:49:12,240 --> 00:49:17,200 είναι να αλλάξετε το ποσό μείον 100 από θέτοντας τη μεταβλητή ίση με σας 1064 00:49:17,200 --> 00:49:21,570 τραπεζικό λογαριασμό ίση με 0, σε αντίθεση να κάνει μείον 100. 1065 00:49:21,570 --> 00:49:24,410 Τώρα, στη χειρότερη περίπτωση για την τράπεζα - 1066 00:49:24,410 --> 00:49:27,470 ή στην καλύτερη για την τράπεζα, εν τω μεταξύ, θα σας δώσει $ 200, και 1067 00:49:27,470 --> 00:49:31,690 τραπεζικό λογαριασμό σας δείχνει τώρα αρνητική $ 100, το οποίο πραγματικά δεν έχει 1068 00:49:31,690 --> 00:49:32,950 σας ωφελήσει καθόλου. 1069 00:49:32,950 --> 00:49:36,500 Αλλά το θέμα είναι ότι αυτή η φυλή προϋπόθεση για να πάρει δύο συγκάτοικοι 1070 00:49:36,500 --> 00:49:40,660 γάλα, ή για δύο ΑΤΜ προσπαθώντας να πάρουν μετρητά και να αλλάξετε την κατάσταση ενός θόλου 1071 00:49:40,660 --> 00:49:44,510 την ίδια στιγμή υπάρχει οποιαδήποτε φορά που έχετε μια βάση δεδομένων. 1072 00:49:44,510 --> 00:49:48,290 >> Τώρα το πρόβλημα που επτά, αυτό το θέμα τίθεται υπό την έννοια ότι αν έχετε αγοράσει ένα 1073 00:49:48,290 --> 00:49:52,110 μερίδιο των μετοχών του Facebook, και στη συνέχεια για παράδειγμα, μπορείτε να αγοράσετε ένα δεύτερο μερίδιο 1074 00:49:52,110 --> 00:49:55,160 Facebook μετοχών, θα πρέπει να κάνετε μια απόφαση ως προγραμματιστής. 1075 00:49:55,160 --> 00:49:58,710 Προκειμένου να αποφασίσουν πώς να ενημερώσετε το δεδομένων, οι πιθανότητες είναι εσείς πρόκειται να 1076 00:49:58,710 --> 00:50:02,250 έχουν μία σειρά για το εν λόγω απόθεμα, και αυτό είναι ένας τρόπος για να το εφαρμόσει. 1077 00:50:02,250 --> 00:50:06,640 Και θα πάμε να έχουν ένα μερίδιο της FB, το οποίο είναι αποθέματά τους σύμβολο 1078 00:50:06,640 --> 00:50:10,120 γι 'αυτό το όνομα, ή αυτόν τον χρήστη ID, το μοναδικό αναγνωριστικό. 1079 00:50:10,120 --> 00:50:12,340 >> Αλλά η ίδια ιστορία μπορεί να συμβεί εδώ. 1080 00:50:12,340 --> 00:50:15,800 Αν κάνετε μια SELECT σε SQL, όπως θα δείτε το πρόβλημα που επτά όταν βλέπετε, 1081 00:50:15,800 --> 00:50:18,460 oh, ο David έχει μία μετοχή Διαθέσιμο Facebook. 1082 00:50:18,460 --> 00:50:23,240 Επιτρέψτε μου να αλλάξει τώρα αυτό να είναι δύο μετοχές, γιατί θέλει να αγοράσει ένα 1083 00:50:23,240 --> 00:50:24,120 δεύτερο μερίδιο. 1084 00:50:24,120 --> 00:50:27,860 Αλλά ας υποθέσουμε ότι ο David είχε στην πραγματικότητα δύο περιήγησης παράθυρα ανοιχτά, ή να υποθέσουμε ότι 1085 00:50:27,860 --> 00:50:32,150 Είναι ένα κοινό λογαριασμό με δύο συζύγων, και οι δυο τους προσπαθούν να εκτελέσει 1086 00:50:32,150 --> 00:50:36,770 την ίδια λειτουργία, υπάρχει, επίσης, η υπάρχει το δυναμικό για μια απόφαση να είναι 1087 00:50:36,770 --> 00:50:39,670 γίνεται με βάση την προηγούμενη κατάσταση του κόσμου - 1088 00:50:39,670 --> 00:50:41,290 ο λογαριασμός έχει μία μετοχή - 1089 00:50:41,290 --> 00:50:45,630 και οι δύο άνθρωποι, ή και τα δύο servers, τώρα προσπαθήστε να πω την αυξάνει σε δύο μετοχές. 1090 00:50:45,630 --> 00:50:49,020 Αλλά σε αυτή την περίπτωση, μπορεί να έχετε χρεωθεί με τα χρήματα και για τις δύο μετοχές, αλλά 1091 00:50:49,020 --> 00:50:50,830 αυξάνεται μόνο εκείνη τη φορά. 1092 00:50:50,830 --> 00:50:54,730 >> Έτσι, με λίγα λόγια, το θεμελιώδες πρόβλημα εδώ, όπως και με το αστείο για την έξοδο από την 1093 00:50:54,730 --> 00:50:58,750 Σημειώστε, ή να βάλει λουκέτο σε αυτό, είναι εάν δύο άνθρωποι, ή δύο νήματα - 1094 00:50:58,750 --> 00:50:59,930 θυμηθείτε να το μηδέν - 1095 00:50:59,930 --> 00:51:03,220 να επιθεωρήσει την κατάσταση κάποιας μεταβλητής και στη συνέχεια να προσπαθήσουμε να αλλάξουμε αυτή τη μεταβλητή, 1096 00:51:03,220 --> 00:51:07,950 αλλά αυτά τα δύο πράγματα δεν συμβαίνουν σε η Ταυτόχρονα όμως μπορεί να διακοπεί 1097 00:51:07,950 --> 00:51:11,500 από άλλα πράγματα που συμβαίνουν, τα δεδομένα μπορούν να μπει σε μία πολύ περίεργη κατάσταση. 1098 00:51:11,500 --> 00:51:15,450 Και μπορείτε να ωφελήσει ή να υποστούν κατά την έννοια του παραδείγματος χρημάτων. 1099 00:51:15,450 --> 00:51:18,110 >> Έτσι, σε σύνολο επτά προβλήματος, σας δίνουμε αυτό μία γραμμή κώδικα, οι οποίες καιρό 1100 00:51:18,110 --> 00:51:21,000 πολυλογώ, λύνει αυτό πρόβλημα στην MySQL. 1101 00:51:21,000 --> 00:51:24,950 Αυτή η πολύ μεγάλη διδασκαλίας που δεν χωράει ακόμα και σε μία γραμμή για το 1102 00:51:24,950 --> 00:51:30,370 οθόνη εδώ εξασφαλίζει ότι η λειτουργία σας είναι αυτό που ονομάζεται ατομική. 1103 00:51:30,370 --> 00:51:33,720 Συμβαίνει όλα με τη μία, ή αυτό δεν συμβαίνει καθόλου. 1104 00:51:33,720 --> 00:51:37,530 Αυτή η πολύ μεγάλη φράση δεν μπορεί να να διακόπτεται εν μέρει. 1105 00:51:37,530 --> 00:51:39,840 >> Και αυτό που κάνει είναι κυριολεκτικά τι λέει. 1106 00:51:39,840 --> 00:51:44,200 Εισαγωγή σε κάποιο τραπέζι την ακόλουθη τρεις τομείς οι συγκεκριμένες τιμές, 1107 00:51:44,200 --> 00:51:47,280 αλλά σε αντίγραφο κλειδί, δεν κάνουν ένα ένθετο. 1108 00:51:47,280 --> 00:51:48,280 Κάντε μια ενημέρωση. 1109 00:51:48,280 --> 00:51:52,450 Έτσι, αυτό είναι σαν να κάνει μια SELECT και ένα INSERT, ώστε να μιλούν ταυτόχρονα. 1110 00:51:52,450 --> 00:51:55,150 Και αυτό είναι το κλειδί που είναι πιθανόν να που αναφέρεται εδώ; 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Αποδεικνύεται, και θα δείτε αυτό πρόβλημα που spec επτά, διότι 1113 00:52:01,380 --> 00:52:06,040 έχουμε κηρύξει να υπάρχει ένα μοναδικό κλειδί σε αυτό το συγκεκριμένο τραπέζι τέτοια ώστε 1114 00:52:06,040 --> 00:52:08,480 δεν μπορείτε να έχετε πολλαπλές σειρές για τον ίδιο χρήστη με το 1115 00:52:08,480 --> 00:52:10,150 ίδια δεκάρα σύμβολο μετοχής - 1116 00:52:10,150 --> 00:52:13,780 σε αυτό το παράδειγμα εδώ, είναι DVN.V μια ανόητη απόθεμα πενών ότι εμείς 1117 00:52:13,780 --> 00:52:14,980 ανατρέξτε στο spec. 1118 00:52:14,980 --> 00:52:17,860 Επειδή έχουμε δηλώσει ότι είναι μοναδική, αυτό σημαίνει ότι αν 1119 00:52:17,860 --> 00:52:23,580 προσπαθήσετε να τοποθετήσετε ένα αντίγραφο σειρά, είστε αντί να πηγαίνει να ενημερώσει χωρίς 1120 00:52:23,580 --> 00:52:27,020 οποιοσδήποτε άλλος που έχει την ευκαιρία να αλλάξει η κατάσταση του κόσμου, είτε. 1121 00:52:27,020 --> 00:52:29,400 Έτσι, με λίγα λόγια, αυτό εξασφαλίζει τα πράγματα είναι ατομική. 1122 00:52:29,400 --> 00:52:32,530 >> Γενικότερα όμως, οι βάσεις δεδομένων όπως MySQL - 1123 00:52:32,530 --> 00:52:35,460 και δεν χρειάζεται αυτή τη δυνατότητα για p-έθεσε επτά, αλλά κρατήστε το στο μυαλό για 1124 00:52:35,460 --> 00:52:36,200 το μέλλον - 1125 00:52:36,200 --> 00:52:38,870 υποστηρίξουν τα λεγόμενα των συναλλαγών, όπου μπορείτε να πείτε 1126 00:52:38,870 --> 00:52:40,990 START ΣΥΝΑΛΛΑΓΩΝ κυριολεκτικά. 1127 00:52:40,990 --> 00:52:43,270 Στη συνέχεια μπορείτε να εκτελέσετε δύο προτάσεις SQL. 1128 00:52:43,270 --> 00:52:45,710 Και μια πρόταση SQL, όπως θα δείτε σε π-έθεσε επτά, φαίνεται λίγο 1129 00:52:45,710 --> 00:52:46,750 κάτι σαν αυτό. 1130 00:52:46,750 --> 00:52:48,820 Ενημερώστε έναν πίνακα που ονομάζεται λογαριασμό. 1131 00:52:48,820 --> 00:52:52,550 Ρυθμίστε την στήλη ισορροπίας ίση με ό, τι η στήλη ισορροπία σήμερα 1132 00:52:52,550 --> 00:52:57,280 είναι μείον 1.000 όπου ο αριθμός, το αριθμό λογαριασμού, όπως το ID του χρήστη, 1133 00:52:57,280 --> 00:53:00,830 ισούται με 2, και στη συνέχεια να ενημερώσετε λογαριασμό dot dot dot. 1134 00:53:00,830 --> 00:53:04,350 >> Έτσι, σε απλή γλώσσα, αυτό που κάνει αυτά τα δύο ερωτήματα φαίνεται να κάνει στην 1135 00:53:04,350 --> 00:53:05,840 πραγματικό κόσμο νόημα των τραπεζών; 1136 00:53:05,840 --> 00:53:07,440 >> ΚΟΙΝΟ: Μεταφορά στην εξοικονόμηση. 1137 00:53:07,440 --> 00:53:08,020 >> DAVID MALAN: Ακριβώς. 1138 00:53:08,020 --> 00:53:10,470 Τη μεταφορά κεφαλαίων από ένα λογαριασμό στον άλλο. 1139 00:53:10,470 --> 00:53:14,400 Και αυτό είναι άλλο ένα παράδειγμα όπου πραγματικά θέλουν αυτά τα δύο πράγματα να συμβούν 1140 00:53:14,400 --> 00:53:15,570 ή μη συμβεί. 1141 00:53:15,570 --> 00:53:18,880 Δεν θέλετε κάτι για να πάρει στο μέσα από αυτά και ενδεχομένως να χαλάσουν 1142 00:53:18,880 --> 00:53:22,220 τα μαθηματικά, ή χάλι πόσο χρήματα έχετε, ή πόσο 1143 00:53:22,220 --> 00:53:23,170 τα χρήματα η τράπεζα έχει. 1144 00:53:23,170 --> 00:53:26,890 Έτσι, αυτό που είναι πραγματικά καλό για τις συναλλαγές στην MySQL είναι ότι, και 1145 00:53:26,890 --> 00:53:30,160 βάσεις δεδομένων γενικότερα, είναι ότι και έξυπνους ανθρώπους που έχουν υλοποιηθεί 1146 00:53:30,160 --> 00:53:33,670 αυτά τα χαρακτηριστικά να καταλάβω πώς να κάνει βέβαιος ότι και οι δύο από αυτά τα πράγματα να συμβούν 1147 00:53:33,670 --> 00:53:35,120 ή καθόλου. 1148 00:53:35,120 --> 00:53:38,580 >> Και αν είστε πραγματικά φιλοδοξούν να κάνουν μια ιστοσελίδα που χρησιμοποιείται από τους ανθρώπους για 1149 00:53:38,580 --> 00:53:41,490 πανεπιστημιούπολη, οι άνθρωποι στον πραγματικό κόσμο, κάνοντας κάτι με την έννοια εκκίνησης, 1150 00:53:41,490 --> 00:53:43,300 αυτά είναι τα είδη σχεδιαστικές αποφάσεις που 1151 00:53:43,300 --> 00:53:45,020 γίνει ποτέ τόσο σημαντική. 1152 00:53:45,020 --> 00:53:48,240 Διαφορετικά, θα αρχίσετε να χάσετε τα δεδομένα, χάνουν χρήστες, ή στη χειρότερη περίπτωση, όπως 1153 00:53:48,240 --> 00:53:51,800 έχουμε δει εδώ, δυνητικά χάνουν χρήματα. 1154 00:53:51,800 --> 00:53:56,180 Έτσι και πάλι, περισσότερα για αυτό το πρόβλημα που επτά, καθώς και ίσως για μερικά από 1155 00:53:56,180 --> 00:53:57,530 σας στην τελική έργα. 1156 00:53:57,530 --> 00:54:01,870 >> Οπότε ας αλλάξουμε αυτή την εικόνα που είχαμε πριν από λίγο μόνο σε ένα ακόμη τρόπο. 1157 00:54:01,870 --> 00:54:04,070 Επιτρέψτε μου λοιπόν να δούμε πραγματικά αν μπορώ - 1158 00:54:04,070 --> 00:54:06,030 nope, που έφυγε. 1159 00:54:06,030 --> 00:54:06,690 Εκεί είναι. 1160 00:54:06,690 --> 00:54:09,020 >> Έτσι, αυτό είναι όπου άφησε την τελευταία φορά. 1161 00:54:09,020 --> 00:54:12,390 Και αποδεικνύεται ότι θα πάμε να πετάξει ένα πράγμα στο μίγμα εδώ - 1162 00:54:12,390 --> 00:54:14,510 μια γλώσσα που ονομάζεται JavaScript. 1163 00:54:14,510 --> 00:54:18,060 Έτσι το JavaScript ταιριάζει πραγματικά σε αυτό το κομμάτι - 1164 00:54:18,060 --> 00:54:22,086 και δεν είχα αρκετά αφήνουν αρκετό χώρο, έτσι αυτό δεν είναι πλέον σε κλίμακα. 1165 00:54:22,086 --> 00:54:23,900 Εντάξει, αυτό είναι πραγματικά θλιβερό. 1166 00:54:23,900 --> 00:54:27,075 Εντάξει, έτσι ώστε να είναι JavaScript. 1167 00:54:27,075 --> 00:54:27,340 Εντάξει. 1168 00:54:27,340 --> 00:54:28,760 Είμαι πραγματικά κάνει το μεγάλο κακό. 1169 00:54:28,760 --> 00:54:29,390 Εντάξει. 1170 00:54:29,390 --> 00:54:34,790 >> Έτσι JavaScript είναι μια άλλη προγραμματισμού γλώσσας, και η τελευταία μας, αν αυτό βοηθάει 1171 00:54:34,790 --> 00:54:37,770 διαβεβαιώσει ότι δεν υπάρχει πολύ περισσότερο πυροσβεστική κρουνούς εδώ. 1172 00:54:37,770 --> 00:54:41,100 Έτσι JavaScript είναι επίσης μια ερμηνεύεται γλώσσα, που σημαίνει ότι δεν 1173 00:54:41,100 --> 00:54:42,670 μεταφράσει σε μηδενικά και μονάδες. 1174 00:54:42,670 --> 00:54:43,690 Μπορείτε απλά να το τρέξει. 1175 00:54:43,690 --> 00:54:47,680 Αλλά τι είναι θεμελιωδώς διαφορετική με JavaScript συνήθως είναι ότι θα 1176 00:54:47,680 --> 00:54:49,815 μην τρέξει στον web server σας. 1177 00:54:49,815 --> 00:54:52,570 Δεν παίρνει εκτελούνται στο Συσκευή per se. 1178 00:54:52,570 --> 00:54:57,490 Αντίθετα, παίρνει κατεβάσει από έναν χρήστη μέσω HTTP στο πρόγραμμα περιήγησής τους - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, ό - 1180 00:55:00,260 --> 00:55:03,860 και αυτό είναι το πρόγραμμα περιήγησης που εκτελεί αυτή συγκεκριμένη γλώσσα προγραμματισμού. 1181 00:55:03,860 --> 00:55:08,000 >> Έτσι για να είναι σαφής, PHP μέχρι στιγμής έχει εκτελούνται είτε στη γραμμή εντολών σε 1182 00:55:08,000 --> 00:55:11,290 μαύρο και άσπρο παράθυρο μας, σε ένα διακομιστή όπως και η συσκευή, ένας υπολογιστής 1183 00:55:11,290 --> 00:55:14,490 ήθελα τη συσκευή, ή είναι ήδη εκτελείται από έναν web server 1184 00:55:14,490 --> 00:55:15,860 εκτελείται σε έναν υπολογιστή. 1185 00:55:15,860 --> 00:55:20,490 Αλλά το θέμα εδώ είναι ότι η PHP μέχρι στιγμής έχει εκτελεστεί server-side, έτσι 1186 00:55:20,490 --> 00:55:24,820 ο χρήστης και το πρόγραμμα περιήγησης του χρήστη δεν βλέπει ποτέ μια γραμμή κώδικα PHP. 1187 00:55:24,820 --> 00:55:28,530 >> Στην πραγματικότητα, αν ποτέ ανοίξει ένα πρόγραμμα περιήγησης για ιστοσελίδα ή άλλο σας και 1188 00:55:28,530 --> 00:55:32,400 δείτε πραγματικά κώδικα PHP στο παράθυρό σας, κάποιος έχει σκάτωσε. 1189 00:55:32,400 --> 00:55:34,950 Επειδή δεν είναι γραφτό να γίνει αποστέλλονται σε ένα πρόγραμμα περιήγησης άμεσα. 1190 00:55:34,950 --> 00:55:38,150 Είναι υποτίθεται ότι πρέπει να εκτελεστεί και να μετατραπεί σε κάτι σαν HTML. 1191 00:55:38,150 --> 00:55:40,120 >> Αλλά JavaScript είναι ουσιαστικά το αντίθετο. 1192 00:55:40,120 --> 00:55:44,350 Είναι γραφτό να τρέχουν συνήθως στο εσωτερικό του παραθύρου του browser του χρήστη. 1193 00:55:44,350 --> 00:55:46,840 Και τι είδους ιστοσελίδες χρησιμοποιούν JavaScript στη συνέχεια αυτές τις μέρες; 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Όπως κυριολεκτικά σε κάθε δημοφιλή ιστοσελίδα. 1196 00:55:52,180 --> 00:55:55,430 Κάθε ιστοσελίδα που εσείς πιθανότατα χρησιμοποιούν καθημερινά χρησιμοποιούν JavaScript για την 1197 00:55:55,430 --> 00:55:57,330 απλούστερη και ακόμη και η πιο σέξι χαρακτηριστικά. 1198 00:55:57,330 --> 00:55:59,800 >> Έτσι, κάτι σαν το Facebook Συνομιλία εάν χρησιμοποιήσετε αυτό. 1199 00:55:59,800 --> 00:56:01,040 Πώς αυτό πραγματικά εργασία; 1200 00:56:01,040 --> 00:56:05,090 Λοιπόν μέχρι στιγμής, όλα τα πράγματα έχουμε γίνεται με HTML και PHP υποθέτει ότι 1201 00:56:05,090 --> 00:56:08,750 θα τραβήξει ένα URL, και πατήσετε Enter, και θα δείτε κάποιο περιεχόμενο HTML. 1202 00:56:08,750 --> 00:56:11,970 Και κάνετε κλικ στο σύνδεσμο, που αλλάζει το URL, αλλάζει η σελίδα, και επαναφορτίσεις 1203 00:56:11,970 --> 00:56:12,740 κάποια νέα περιεχόμενο. 1204 00:56:12,740 --> 00:56:16,340 Κάντε κλικ άλλη διεύθυνση URL ή να υποβάλει μια φόρμα, πάρει χτυπημένα σε άλλη σελίδα και 1205 00:56:16,340 --> 00:56:17,420 θα δείτε κάποια νέα περιεχόμενο. 1206 00:56:17,420 --> 00:56:22,710 >> Αλλά χρησιμοποιώντας κάτι σαν το Facebook Chat, ή Gchat, ή το Google Maps, σπάνια 1207 00:56:22,710 --> 00:56:27,350 όμως η όλη σελίδα ανανεώσετε τέτοια ώστε μπορείτε να δείτε μια λευκή οθόνη στιγμιαία και 1208 00:56:27,350 --> 00:56:28,470 Στη συνέχεια νέο περιεχόμενο. 1209 00:56:28,470 --> 00:56:32,610 Αντίθετα, οι ιστοσελίδες σήμερα είναι δυναμικά να πάρει ενημερώθηκε και πάλι 1210 00:56:32,610 --> 00:56:35,570 ξανά και ξανά όλο το είδος του πίσω από τα παρασκήνια. 1211 00:56:35,570 --> 00:56:38,560 Και αποδεικνύεται ότι όταν πάτε να κάτι σαν το Facebook, ή Gchat, 1212 00:56:38,560 --> 00:56:43,050 ή το Gmail, και οι ενημερώσεις της σελίδας αυτόματα χωρίς επαναφόρτωση της 1213 00:56:43,050 --> 00:56:47,630 ολόκληρη την οθόνη, τι συνέβη είναι ότι Ο φυλλομετρητής σας έχει κάνει είδος κρυφά 1214 00:56:47,630 --> 00:56:49,410 συμπληρωματικές αιτήσεις HTTP - 1215 00:56:49,410 --> 00:56:52,740 όχι για ολόκληρες σελίδες web, αλλά μόνο για μικρά κομμάτια των δεδομένων, όπως η 1216 00:56:52,740 --> 00:56:55,740 άμεσο μήνυμα ότι ο φίλος σας μόλις σας, ή την ενημέρωση κατάστασης που αποστέλλονται 1217 00:56:55,740 --> 00:56:58,210 κάποιον που μόλις σας, ή το τιτίβισμα αποστέλλονται ότι κάποιος που μόλις στείλατε. 1218 00:56:58,210 --> 00:57:02,120 Είναι απλά κάνει λίγο αιτήσεις για δεδομένων, και στη συνέχεια, χρησιμοποιώντας JavaScript, αυτό 1219 00:57:02,120 --> 00:57:06,370 γλώσσα προγραμματισμού, να αλλάξουμε ό, τι η ιστοσελίδα μοιάζει χωρίς το 1220 00:57:06,370 --> 00:57:09,860 διακομιστή βοηθά, χωρίς το διακομιστή δημιουργώντας αυτό το HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Έτσι, εν ολίγοις, JavaScript μπορεί να χρησιμοποιηθεί στη συνέχεια για να πάρει όχι μόνο τα νέα δεδομένα από 1222 00:57:13,820 --> 00:57:16,750 ο server χωρίς επαναφόρτωση ένα ολόκληρο σελίδα ή την υποβολή μιας φόρμας. 1223 00:57:16,750 --> 00:57:20,060 Μπορεί επίσης να χρησιμοποιηθεί για την αλλαγή το λεγόμενο DOM - 1224 00:57:20,060 --> 00:57:21,520 έγγραφο μοντέλο αντικειμένου - 1225 00:57:21,520 --> 00:57:24,620 το οποίο είναι ακριβώς το φανταχτερό τρόπο για λέγοντας ότι το δέντρο της HTML 1226 00:57:24,620 --> 00:57:26,220 που είδαμε την τελευταία φορά. 1227 00:57:26,220 --> 00:57:31,640 >> Έτσι για να καθησυχάσει, JavaScript είναι συντακτικά τόσο όμοια με C, καθώς και. 1228 00:57:31,640 --> 00:57:32,820 Δεν υπάρχει καμία κύρια λειτουργία. 1229 00:57:32,820 --> 00:57:35,430 Απλά αρχίστε να γράφετε τον κώδικα και θα πάρει εκτελεστεί, ή 1230 00:57:35,430 --> 00:57:36,900 ερμηνεύεται πιο σωστά. 1231 00:57:36,900 --> 00:57:38,660 Προϋποθέσεις θα μοιάζει με αυτό. 1232 00:57:38,660 --> 00:57:41,230 Δεν διαφέρει από το C ή PHP για εκείνο το θέμα. 1233 00:57:41,230 --> 00:57:43,890 Boolean εκφράσεις ή-ed μαζί θα μοιάζει με αυτό. 1234 00:57:43,890 --> 00:57:45,590 Anded μαζί μοιάζει με αυτό. 1235 00:57:45,590 --> 00:57:47,750 >> Διακόπτες θα μοιάζει με αυτό. 1236 00:57:47,750 --> 00:57:49,440 Για βρόχους θα μοιάζει με αυτό. 1237 00:57:49,440 --> 00:57:51,060 Ενώ οι βρόχοι θα μοιάζει με αυτό. 1238 00:57:51,060 --> 00:57:53,316 Κάντε while loops θα μοιάζει με αυτό. 1239 00:57:53,316 --> 00:57:54,780 >> Αυτό είναι νέο. 1240 00:57:54,780 --> 00:57:58,753 Έτσι, JavaScript δεν έχει foreach κατασκευή per se, αλλά αυτό το κατασκεύασμα 1241 00:57:58,753 --> 00:58:03,870 για i μεταβλητή array, και εγώ σε αυτό περίπτωση γίνεται μια τιμή του δείκτη. 1242 00:58:03,870 --> 00:58:06,880 Γι 'αυτό είναι λίγο διαφορετικό από αυτό foreach, αν και οι νέες εκδόσεις του 1243 00:58:06,880 --> 00:58:10,280 JavaScript βγαίνουν όλη την ώρα, έτσι ώστε ακόμη και αυτά τα χαρακτηριστικά της γλώσσας 1244 00:58:10,280 --> 00:58:10,880 εξελίσσονται. 1245 00:58:10,880 --> 00:58:16,920 >> Και ως ένα μέρος, JavaScript αυτές τις μέρες μπορεί επίσης να χρησιμοποιηθεί σε ένα διακομιστή όπως ακριβώς 1246 00:58:16,920 --> 00:58:19,920 PHP χρησιμοποιώντας ένα πλαίσιο που αποκαλείται Node.js. 1247 00:58:19,920 --> 00:58:24,670 Ένας από CS50 του TFs, Kevin, οδήγησε μια σεμινάριο για Node.js που είναι διαθέσιμες στο 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 Έτσι, εάν είστε περίεργοι, να ξέρετε ότι μπορούν να χρησιμοποιήσουν αυτό από την πλευρά του διακομιστή ως 1250 00:58:28,830 --> 00:58:33,870 καλά, αλλά αυτό είναι μια αρκετά πρόσφατη τάση, αλλά ένα ισχυρό σε αυτό. 1251 00:58:33,870 --> 00:58:35,270 >> Αυτό είναι λίγο διαφορετική. 1252 00:58:35,270 --> 00:58:37,910 Πρόκειται για μια σειρά σε JavaScript. 1253 00:58:37,910 --> 00:58:40,115 Και αυτό που φαίνεται ως διαφορετικά έναντι C ή PHP; 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Υπάρχουν μερικές γρήγορες ιστορίες μπορούμε να πούμε εδώ. 1256 00:58:47,420 --> 00:58:49,367 Τι λείπει σε σχέση με PHP; 1257 00:58:49,367 --> 00:58:51,652 >> ΚΟΙΝΟ: [δεν ακούγεται]. 1258 00:58:51,652 --> 00:58:52,110 >> DAVID MALAN: Ναι; 1259 00:58:52,110 --> 00:58:53,322 Λυπούμαστε, λένε πάλι; 1260 00:58:53,322 --> 00:58:54,740 >> ΚΟΙΝΟ: Δεν δηλώνοντας ο τύπος της μεταβλητής. 1261 00:58:54,740 --> 00:58:56,390 >> DAVID MALAN: Δεν είμαστε δηλώνοντας ο τύπος της μεταβλητής. 1262 00:58:56,390 --> 00:58:59,630 Έτσι, στην πραγματικότητα αρκετά όπως PHP, δεν είμαστε προσδιορίζοντας τα είδη αυτής της μεταβλητής. 1263 00:58:59,630 --> 00:59:02,670 Αντίθετα, είμαστε πιο γενικά λέγοντας var για τη μεταβλητή. 1264 00:59:02,670 --> 00:59:06,690 Δεν έχουμε ενόχληση της PHP της σύμβολο του δολαρίου, η οποία ενώ είναι κουραστικό να 1265 00:59:06,690 --> 00:59:09,160 τύπος, κάνει πιο σαφές ότι κάτι που είναι μια μεταβλητή. 1266 00:59:09,160 --> 00:59:11,830 Ότι, εδώ, είμαστε είδος πίσω Προσέγγιση της C με ένα απλό τηλεφώνημα ενός 1267 00:59:11,830 --> 00:59:14,500 μεταβλητή με το όνομα που θέλουμε για να δώσει, όπως αριθμούς. 1268 00:59:14,500 --> 00:59:17,170 Και επίσης, όπως PHP, έχουμε αγκύλες για το 1269 00:59:17,170 --> 00:59:19,170 τιμές μέσα σε αυτό το φάσμα. 1270 00:59:19,170 --> 00:59:22,490 >> Έτσι μεταβλητές JavaScript, επίσης, θα μπορούσε να μοιάζει με αυτό. 1271 00:59:22,490 --> 00:59:26,900 Προσέξτε εδώ πρόκειται για μια σειρά που ονομάζεται s, αλλά όπως έχουμε που δεν κατονομάζονται 1272 00:59:26,900 --> 00:59:28,750 ότι είναι ένα string. 1273 00:59:28,750 --> 00:59:33,160 Εδώ όμως είναι ένα χαρακτηριστικό που δεν υπάρχουν με τον ίδιο ακριβώς τρόπο σε PHP, 1274 00:59:33,160 --> 00:59:34,460 αλλά λίγο παρόμοια. 1275 00:59:34,460 --> 00:59:36,530 Αυτό είναι ένα αντικείμενο σε JavaScript. 1276 00:59:36,530 --> 00:59:42,110 Και τα αντικείμενα είναι το είδος του ελβετικού στρατού Μαχαίρι μιας δομής δεδομένων στο εν σας 1277 00:59:42,110 --> 00:59:43,900 μπορείτε να τα χρησιμοποιήσετε για οποιοδήποτε αριθμό πραγμάτων. 1278 00:59:43,900 --> 00:59:46,860 >> Εδώ, για παράδειγμα, είμαστε δηλώνοντας μια μεταβλητή που ονομάζεται απόσπασμα. 1279 00:59:46,860 --> 00:59:49,110 Ο τύπος του εν λόγω μεταβλητής Είναι ένα αντικείμενο. 1280 00:59:49,110 --> 00:59:53,550 Μπορείτε να σκεφτείτε αυτό ως ένα struct C που έχει τα κλειδιά και τις αξίες. 1281 00:59:53,550 --> 00:59:55,250 Σύμβολο είναι ένα κλειδί. 1282 00:59:55,250 --> 00:59:57,350 FB είναι μια αξία, προφανώς ένα σύμβολο μετοχής. 1283 00:59:57,350 --> 00:59:57,930 Κόμμα. 1284 00:59:57,930 --> 01:00:02,180 Η τιμή είναι ένα άλλο κλειδί, και η αξία του είναι προφανώς κινητής υποδιαστολής, ή 1285 01:00:02,180 --> 01:00:06,510 Αριθμός γενικότερα στην JavaScript, από 49,26 δολάρια. 1286 01:00:06,510 --> 01:00:09,030 >> Έτσι, η PHP δεν έχει - 1287 01:00:09,030 --> 01:00:12,980 δεν είδαμε στην PHP αντικείμενα αρκετά σαν αυτό, αλλά είδα ένα αναλογικό, 1288 01:00:12,980 --> 01:00:14,093 ποιο ήταν αυτό; 1289 01:00:14,093 --> 01:00:14,980 >> ΚΟΙΝΟ: [δεν ακούγεται]. 1290 01:00:14,980 --> 01:00:16,110 >> DAVID MALAN: συστοιχίες Associative. 1291 01:00:16,110 --> 01:00:19,990 Έτσι, λαμβάνοντας υπόψη ότι η PHP έχει associative arrays του οποίου η σύνταξη είναι πάντα τόσο ελαφρώς 1292 01:00:19,990 --> 01:00:20,370 διαφορετικά - 1293 01:00:20,370 --> 01:00:21,780 είδαμε τις αγκύλες. 1294 01:00:21,780 --> 01:00:23,860 Είδαμε τα περίεργα σύμβολα βέλη. 1295 01:00:23,860 --> 01:00:27,330 JavaScript έχει αντικείμενα, αλλά αυτό είναι ως επί το πλείστον μια σημασιολογική διαφορά και 1296 01:00:27,330 --> 01:00:29,260 διαφορετική συνώνυμο για τώρα. 1297 01:00:29,260 --> 01:00:35,060 Ωστόσο, ως ένα μέρος, η PHP έχει επίσης αντικείμενα με τέτοιο τρόπο ώστε Java και άλλα 1298 01:00:35,060 --> 01:00:37,810 γλώσσες έχουν αντικείμενα σε object-oriented προγραμματισμό. 1299 01:00:37,810 --> 01:00:40,440 Αλλά θα χρησιμοποιήσουμε αυτά τα απλά για τους τύπους δεδομένων για τώρα. 1300 01:00:40,440 --> 01:00:42,170 Αντικείμενα και πίνακες συνειρμική. 1301 01:00:42,170 --> 01:00:44,140 >> Αυτό και μόνο θα μπορούσε να το κάνει λίγο πιο σαφής. 1302 01:00:44,140 --> 01:00:45,890 Εδώ είναι γιατί ένα αντικείμενο είναι χρήσιμη. 1303 01:00:45,890 --> 01:00:48,760 Όταν θέλετε να δηλώσει ένας φοιτητής, όπως Zamyla, μπορούμε πραγματικά 1304 01:00:48,760 --> 01:00:52,630 ενθυλακώνουν να το πω έτσι μέσα από αυτό αντικείμενο με αγκύλες όπως ακριβώς 1305 01:00:52,630 --> 01:00:55,060 πριν από ένα σωρό κλειδιά και τις αξίες εδώ. 1306 01:00:55,060 --> 01:00:59,150 Έχουμε μια ταυτότητα, ένα σπίτι και ένα όνομα για Zamyla, που ακολουθείται από ένα ερωτηματικό ως 1307 01:00:59,150 --> 01:01:00,690 συνηθισμένο στο τέλος. 1308 01:01:00,690 --> 01:01:04,840 >> Κάτω και εδώ, αυτό είναι ελαφρώς διαφορετικά, αλλά επίσης και πολύ ισχυρό 1309 01:01:04,840 --> 01:01:05,690 αυτές τις μέρες. 1310 01:01:05,690 --> 01:01:08,780 Εδώ είναι μια σειρά, και ξέρω ότι επειδή υπάρχει μια αγκύλη up 1311 01:01:08,780 --> 01:01:11,090 top και μια αγκύλη στο κάτω μέρος. 1312 01:01:11,090 --> 01:01:16,050 Και αυτό είναι μια σειρά από ποια δεδομένα πληκτρολογήστε προφανώς σε JavaScript; 1313 01:01:16,050 --> 01:01:21,260 Αυτή είναι μια συστοιχία φαίνεται σαν τρία αντικείμενα. 1314 01:01:21,260 --> 01:01:24,580 Και ξέρω ότι είναι μόνο ένα αντικείμενο λόγω των άγκιστρα. 1315 01:01:24,580 --> 01:01:28,760 Και παρατηρήσετε ότι υπάρχει ανοικτό άγκιστρο, κάποια πράγματα, κοντά σγουρά στήριγμα, κόμμα, 1316 01:01:28,760 --> 01:01:31,180 Στη συνέχεια κάποιοι περισσότερο, κόμμα, και, στη συνέχεια, λίγο περισσότερο. 1317 01:01:31,180 --> 01:01:33,800 Έτσι ώστε να είναι τρία επιχειρήματα χωρίζονται από δύο κόμματα. 1318 01:01:33,800 --> 01:01:36,810 >> Έτσι, αυτό είναι μια σειρά από τρία αντικείμενα. 1319 01:01:36,810 --> 01:01:39,940 Και κάθε ένα από αυτά τα αντικείμενα φαίνεται να είναι μέλος του φοιτητή ή του προσωπικού μερικών 1320 01:01:39,940 --> 01:01:42,370 ταξινόμησης, το καθένα με ένα αναγνωριστικό, το σπίτι, και το όνομα. 1321 01:01:42,370 --> 01:01:45,060 Αλλά έχω αυτό το κάτι που ονομάζεται που ονομάζεται JSON - 1322 01:01:45,060 --> 01:01:47,450 JavaScript Object Notation. 1323 01:01:47,450 --> 01:01:52,060 Και αυτό είναι μια μορφή δεδομένων που όντως είναι τόσο πολύ δημοφιλής και 1324 01:01:52,060 --> 01:01:55,100 μόδα αυτές τις μέρες ότι αν γράψετε ένα εφαρμογή που χρησιμοποιεί το Facebook 1325 01:01:55,100 --> 01:01:59,150 API, το Twitter API, πραγματικά σχεδόν κάθε API εκεί έξω αυτές τις μέρες, 1326 01:01:59,150 --> 01:02:02,820 συμπεριλαμβανομένων ορισμένων από τις δικές CS50, η δεδομένα που μπορείτε να πάρετε πίσω δεν είναι σε 1327 01:02:02,820 --> 01:02:04,720 old school μορφή CSV. 1328 01:02:04,720 --> 01:02:06,780 >> Επειδή υπενθυμίζουν ότι CSV είναι εξαιρετικά απλή. 1329 01:02:06,780 --> 01:02:10,230 Είναι ακριβώς στήλες διαχωρίζονται με κόμμα. 1330 01:02:10,230 --> 01:02:13,190 Δεδομένων JSON σας δίνει περισσότερες μεταδεδομένων. 1331 01:02:13,190 --> 01:02:17,800 Είναι συνεργάτες ένα κλειδί με κάθε τιμή, ώστε δεν πρέπει να υποθέσουμε ότι μόνο 1332 01:02:17,800 --> 01:02:22,460 η μηδενική στήλη είναι μία τιμή, στήλη το ένα είναι ένα άλλο, στήλη δύο είναι ένα άλλο. 1333 01:02:22,460 --> 01:02:26,790 Τα πάντα σε ένα αντικείμενο JSON εδώ είναι είδος της αυτο-περιγραφή, γιατί κάθε 1334 01:02:26,790 --> 01:02:30,940 ένα από τα ονόματα σε αυτό το αρχείο έχει κυριολεκτικά όνομα μπροστά του ως 1335 01:02:30,940 --> 01:02:32,510 string με. 1336 01:02:32,510 --> 01:02:34,950 >> Έτσι, ας ρίξουμε μια ματιά σε ένα μερικά παραδείγματα εδώ. 1337 01:02:34,950 --> 01:02:36,800 Επιτρέψτε μου να πάω στη συσκευή. 1338 01:02:36,800 --> 01:02:41,000 Και επιτρέψτε μου να μπω σε vhost μας κατάλογο στο δημόσιο. 1339 01:02:41,000 --> 01:02:45,590 Και επιτρέψτε μου να μπω σε ο JavaScript κατάλογο. 1340 01:02:45,590 --> 01:02:49,610 Και ας πάμε μπροστά και να ανοίξει dom-0.html, όπου DOM σημαίνει απλώς 1341 01:02:49,610 --> 01:02:51,010 έγγραφο μοντέλο αντικειμένου. 1342 01:02:51,010 --> 01:02:53,490 Είναι η ουσία δέντρο στο οποίο Αναφέρθηκα νωρίτερα. 1343 01:02:53,490 --> 01:02:54,950 >> Και επιτρέψτε μου να προτείνω το εξής. 1344 01:02:54,950 --> 01:02:57,720 Εδώ είναι μια ιστοσελίδα του οποίου το σώμα είναι αρκετά απλή. 1345 01:02:57,720 --> 01:03:00,170 Έτσι και εδώ κάτω στον πυθμένα, παρατηρήσετε Έχω μια φόρμα. 1346 01:03:00,170 --> 01:03:01,500 Έχουμε δει αυτά στο παρελθόν. 1347 01:03:01,500 --> 01:03:07,600 Έχει δύο εισόδους, μία από τις οποίες έχει ένα ID του ονόματος, μία από τις οποίες έχει έναν τύπο 1348 01:03:07,600 --> 01:03:09,830 υποβάλλουν, και η πρώτη ένας τύπος είναι το κείμενο. 1349 01:03:09,830 --> 01:03:11,900 Έτσι, αυτό ακούγεται πραγματικά πολύ απλό. 1350 01:03:11,900 --> 01:03:13,090 >> Ας πάμε εδώ. 1351 01:03:13,090 --> 01:03:15,390 Ας πάμε πίσω σε αυτήν τη σελίδα εδώ. 1352 01:03:15,390 --> 01:03:21,030 Ας πάμε σε localhost, και να πάει σε Κατάλογος JavaScript μας, και να πάει σε 1353 01:03:21,030 --> 01:03:24,640 dom-0, και εδώ έχουμε αυτή τη μορφή. 1354 01:03:24,640 --> 01:03:26,550 Έτσι, αυτό είναι προφανώς όλη αυτή η σελίδα κάνει. 1355 01:03:26,550 --> 01:03:28,740 Έχει ένα πεδίο με όνομα ένα κουμπί Υποβολή. 1356 01:03:28,740 --> 01:03:30,340 Αλλά δεν πρόκειται να χρησιμοποιήσετε το PHP εδώ. 1357 01:03:30,340 --> 01:03:34,310 Πάω να κάνω ό, τι πλευρά του πελάτη έτσι ώστε να μιλήσει σε JavaScript ως εξής. 1358 01:03:34,310 --> 01:03:39,100 >> Παρατηρήστε ότι έχω όντως δοθεί το όνομα στον τομέα της εισόδου μια μοναδική 1359 01:03:39,100 --> 01:03:42,350 αναγνωριστικό, το οποίο θα είναι πράγματι σώσε με λίγο χρόνο σε μια στιγμή. 1360 01:03:42,350 --> 01:03:45,480 Και παρατηρήσετε έχω εισαχθεί μια άλλη ετικέτα στο κεφάλι της ιστοσελίδας μου, η 1361 01:03:45,480 --> 01:03:46,565  tag. 1362 01:03:46,565 --> 01:03:50,120 >> Έτσι είναι με αυτή την έννοια ότι το JavaScript είναι μια γλώσσα προγραμματισμού client-side. 1363 01:03:50,120 --> 01:03:55,020 Στην περίπτωση αυτή, ακριβώς όπως CSS, έχω βάλει κατ 'ευθείαν στο εσωτερικό του HTML μου. 1364 01:03:55,020 --> 01:03:58,810 Αλλά παρατηρήσετε έχω δηλώσει λειτουργία που μοιάζει λίγο σαν PHP 1365 01:03:58,810 --> 01:04:01,530 συντακτικά, αλλά αυτό είναι πραγματικά JavaScript, γιατί και πάλι, είναι 1366 01:04:01,530 --> 01:04:03,920 client-side στο πρόγραμμα περιήγησης. 1367 01:04:03,920 --> 01:04:07,590 Και ρίξτε μια εικασία τι αυτό πρόκειται να κάνει, ακόμα κι αν μερικά από τη σύνταξη 1368 01:04:07,590 --> 01:04:09,338 εδώ είναι νέα. 1369 01:04:09,338 --> 01:04:11,760 >> ΚΟΙΝΟ: Υποδεχτείτε όποιος. 1370 01:04:11,760 --> 01:04:14,020 >> DAVID MALAN: Δεν πρόκειται να πω ένα γεια σε όποιον επισκέπτεται αυτή τη σελίδα. 1371 01:04:14,020 --> 01:04:15,120 Λοιπόν, πώς; 1372 01:04:15,120 --> 01:04:18,070 >> Έτσι παρατηρούμε, αποδεικνύεται σε JavaScript υπάρχει μια ειδοποίηση (λειτουργία). 1373 01:04:18,070 --> 01:04:22,840 Αυτή είναι μια πολύ θλιβερή είδος της λειτουργίας που πραγματικά ακριβώς τείνει να ενοχλήσει τους χρήστες. 1374 01:04:22,840 --> 01:04:25,440 Δεν είναι αυτό που πρέπει πραγματικά να χρησιμοποιήσετε συνήθως, αλλά είναι μια γρήγορη και βρώμικη 1375 01:04:25,440 --> 01:04:27,710 τρόπο το είδος της εκτύπωσης κάτι σε έναν χρήστη με γραφικά 1376 01:04:27,710 --> 01:04:29,180 διεπαφή, όπως ένα πρόγραμμα περιήγησης. 1377 01:04:29,180 --> 01:04:31,400 Σημειώστε εδώ ότι έχω ένα κορδόνι σε μονά εισαγωγικά. 1378 01:04:31,400 --> 01:04:36,010 Αποδεικνύεται ότι σε αντίθεση με C, JavaScript μπορεί πραγματικά να χρησιμοποιείτε μεμονωμένα 1379 01:04:36,010 --> 01:04:38,730 εισαγωγικά, και ειλικρινά αυτό είναι ακριβώς το είδος της σύμβασης μεταξύ στυλιστικές 1380 01:04:38,730 --> 01:04:41,180 JavaScript προγραμματιστές να χρησιμοποιήσει μονά εισαγωγικά. 1381 01:04:41,180 --> 01:04:43,750 PHP, που πραγματικά έχουν ελαφρώς διαφορετικό νόημα. 1382 01:04:43,750 --> 01:04:45,810 Αλλά για τώρα, απλά να ξέρετε ότι αυτός είναι ο μόνος λόγος. 1383 01:04:45,810 --> 01:04:49,270 Η σύμβαση σε JavaScript είναι συχνά χρησιμοποιήστε μονά εισαγωγικά, αλλά θα μπορούσαμε να χρησιμοποιήσουμε 1384 01:04:49,270 --> 01:04:50,950 διπλά εισαγωγικά και στα δύο μέρη, καθώς και. 1385 01:04:50,950 --> 01:04:52,610 >> Έτσι, αυτό είναι ενδιαφέρον. 1386 01:04:52,610 --> 01:04:56,430 Θυμηθείτε την τελευταία φορά που είχαμε ότι εικόνα στην οθόνη που επέστησε ένα δένδρο 1387 01:04:56,430 --> 01:04:59,720 όπου είχατε τον κόμβο HTML, και η κεφάλι κόμβο, και τον κόμβο του σώματος, 1388 01:04:59,720 --> 01:05:00,800 και στη συνέχεια κάποιο κείμενο. 1389 01:05:00,800 --> 01:05:04,700 Αλλά υπήρχε ένα ειδικό κόμβο κατά τη κορυφή που κάλεσα το έγγραφο. 1390 01:05:04,700 --> 01:05:08,260 Λοιπόν, αποδεικνύεται σε JavaScript, οποιαδήποτε φορά που θα γράψετε ένα πρόγραμμα σε JavaScript 1391 01:05:08,260 --> 01:05:11,040 σε ένα πρόγραμμα περιήγησης, έχετε πρόσβαση σε μια ειδική global μεταβλητή. 1392 01:05:11,040 --> 01:05:14,130 Παρόμοιες στο πνεύμα με superglobals της PHP, αυτό ονομάζεται στην 1393 01:05:14,130 --> 01:05:16,050 όλα τα πεζά έγγραφο. 1394 01:05:16,050 --> 01:05:21,480 >> Είναι σαν ένα struct, αλλά αυτό το struct Επίσης, έχει λειτουργίες στο εσωτερικό του. 1395 01:05:21,480 --> 01:05:23,790 Έτσι, ένα struct Γ έχει μόνο τυπικά στοιχεία. 1396 01:05:23,790 --> 01:05:29,060 Αλλά ένα αντικείμενο JavaScript, όπως αυτό τεχνικά, επίσης, έχει λειτουργίες, 1397 01:05:29,060 --> 01:05:31,830 αλλιώς γνωστή ως μέθοδοι, στο εσωτερικό του. 1398 01:05:31,830 --> 01:05:35,750 Και μπορείτε να καλέσετε μια συνάρτηση μέσα αυτό το αντικείμενο κυριολεκτικά κάνει τους 1399 01:05:35,750 --> 01:05:39,610 όνομα, τελεία, και στη συνέχεια το όνομα του η λειτουργία, ή πάλι η μέθοδος. 1400 01:05:39,610 --> 01:05:41,160 Είναι απλά ένα συνώνυμο, πραγματικά. 1401 01:05:41,160 --> 01:05:42,450 >> Και τι σημαίνει αυτή η λειτουργία να κάνω; 1402 01:05:42,450 --> 01:05:43,840 Μπορείτε είδος του να μαντέψετε από το όνομά του. 1403 01:05:43,840 --> 01:05:45,590 Πάρτε στοιχείο με ID. 1404 01:05:45,590 --> 01:05:50,040 Έτσι, αυτό πρόκειται να αναζητήσετε την ιστοσελίδα, αναζήτηση εκείνο το δέντρο, που αναζητούν 1405 01:05:50,040 --> 01:05:55,210 όποια κόμβο, AKA στοιχείο, έχει μοναδικό αναγνωριστικό του απόσπασμα unquote όνομα. 1406 01:05:55,210 --> 01:05:56,560 Και τότε τι θα πάω να κάνω; 1407 01:05:56,560 --> 01:06:00,350 Πάω να πάρετε την τιμή στο εσωτερικό της ότι ο κόμβος στο δέντρο, και θα πάω 1408 01:06:00,350 --> 01:06:02,580 με κάποιο τρόπο να πω γεια σε αυτό το όνομα. 1409 01:06:02,580 --> 01:06:05,360 >> Πάρτε λοιπόν μια εικασία, ακόμα κι αν δεν έχετε δει αυτό ακόμα, τι να κάνει η συν 1410 01:06:05,360 --> 01:06:07,396 σύμβολα εδώ και εδώ ίσως; 1411 01:06:07,396 --> 01:06:08,230 >> ΚΟΙΝΟ: Ενώσετε. 1412 01:06:08,230 --> 01:06:09,220 >> DAVID MALAN: Ενώσετε. 1413 01:06:09,220 --> 01:06:11,290 Δεξιά, και αυτά είναι μόνο είδος αποφάσεις σχεδιασμού 1414 01:06:11,290 --> 01:06:12,280 οι άνθρωποι που χρόνια πριν. 1415 01:06:12,280 --> 01:06:15,190 Στην PHP, ενώσετε τα πράγματα με τελείες. 1416 01:06:15,190 --> 01:06:18,800 Στο C, να πηδούν μέσα από στεφάνες και αρκετές καλέστε λειτουργίες όπως strcopy () ή 1417 01:06:18,800 --> 01:06:20,600 strcat () ή άλλες παρόμοιες λειτουργίες. 1418 01:06:20,600 --> 01:06:22,060 Αλλά σε JavaScript, μπορείτε να χρησιμοποιήσετε πλεονεκτήματα. 1419 01:06:22,060 --> 01:06:24,770 Έτσι, αυτό είναι ακριβώς η συνένωση τρεις χορδές - 1420 01:06:24,770 --> 01:06:27,850 Γεια σας, ένα όνομα, και στη συνέχεια ένα θαυμαστικό. 1421 01:06:27,850 --> 01:06:30,390 >> Έτσι, πότε και γιατί είναι αυτή η λειτουργία κάλεσε όμως; 1422 01:06:30,390 --> 01:06:33,150 Λοιπόν, πάρτε μια εικασία από την HTML στο κάτω μέρος. 1423 01:06:33,150 --> 01:06:35,810 Γιατί είναι χαιρετήσει () καλείται, ή πότε; 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> Προφανώς, όσο καλύτερα μπορώ να πω, σχετικά με υποβάλλουν, όταν υποβάλλεται αυτή τη μορφή, 1426 01:06:44,030 --> 01:06:47,200 Πάω να κάνω ό, τι είναι μέσα από αυτά τα αποσπάσματα. 1427 01:06:47,200 --> 01:06:50,900 Και συγκεκριμένα, Πάω να καλέσετε χαιρετώ () και, στη συνέχεια, επιστρέφει false. 1428 01:06:50,900 --> 01:06:53,090 >> Λοιπόν, ας δούμε ποια είναι η καθαρή επίπτωση εδώ είναι η πρώτη. 1429 01:06:53,090 --> 01:06:58,290 Επιτρέψτε μου λοιπόν να προχωρήσει και πληκτρολογήστε σε, ας πούμε, Λόρεν, Υποβολή. 1430 01:06:58,290 --> 01:06:59,440 Γεια Λόρεν. 1431 01:06:59,440 --> 01:07:02,990 Ας δούμε αν ίσως αυτό ήταν μόνο ένας τυχερός εφαρμογή. 1432 01:07:02,990 --> 01:07:03,200 Όχι. 1433 01:07:03,200 --> 01:07:05,990 Έτσι, είναι πληκτρολογώντας ό, τι όνομα Εγώ πραγματικά τοποθετήθηκαν εκεί. 1434 01:07:05,990 --> 01:07:07,970 >> Αλλά παρατηρήστε τι δεν αλλάζει. 1435 01:07:07,970 --> 01:07:10,360 Η διεύθυνση URL είναι ακόμα dom-0.html. 1436 01:07:10,360 --> 01:07:11,820 Δεν υπάρχει register.php. 1437 01:07:11,820 --> 01:07:13,110 Δεν υπάρχει δεύτερο αρχείο. 1438 01:07:13,110 --> 01:07:14,930 Δεν υπάρχει καμία χαρακτηριστικό δράση. 1439 01:07:14,930 --> 01:07:19,720 Έτσι τι είναι αυτό το ψεύτικο επιστροφή προφανώς κάνεις; 1440 01:07:19,720 --> 01:07:23,660 Γιατί είμαι καλώντας χαιρετώ () και, στη συνέχεια, επιστροφή ψευδείς ίσως; 1441 01:07:23,660 --> 01:07:26,420 Τι συμβαίνει συνήθως όταν κάνετε κλικ Υποβολή σε μια φόρμα που ακόμα έχουμε 1442 01:07:26,420 --> 01:07:27,854 δει την περασμένη εβδομάδα? 1443 01:07:27,854 --> 01:07:29,900 >> ΚΟΙΝΟ: [δεν ακούγεται]. 1444 01:07:29,900 --> 01:07:30,860 >> DAVID MALAN: Πηγαίνει κάπου, έτσι δεν είναι; 1445 01:07:30,860 --> 01:07:32,720 Πηγαίνει σε κάποια διεύθυνση URL προορισμού. 1446 01:07:32,720 --> 01:07:34,120 Αλλά δεν θέλω να συμβεί εδώ. 1447 01:07:34,120 --> 01:07:37,620 Θέλω η ιστοσελίδα μου είναι εντελώς δυναμική, όπως το Gmail, όπου όταν είστε 1448 01:07:37,620 --> 01:07:38,650 εκεί, μπορείτε να μείνετε εκεί. 1449 01:07:38,650 --> 01:07:42,900 Η διεύθυνση URL δεν αλλάζει με έναν τρόπο που δηλώνει το σύνολο σελίδα ξαναφορτώνει. 1450 01:07:42,900 --> 01:07:46,680 Αντίθετα, θέλω απλώς να αλλάξει κάτι όπως εκτύπωση κάτι 1451 01:07:46,680 --> 01:07:48,320 εδώ στην οθόνη. 1452 01:07:48,320 --> 01:07:49,630 >> Λοιπόν επιτρέψτε μου να το καθαρίσω αυτό μέχρι λίγο. 1453 01:07:49,630 --> 01:07:55,370 Επιτρέψτε μου να ανοίξει δεν dom-0, αλλά επιτρέψτε μου να ανοίξει dom-2. 1454 01:07:55,370 --> 01:07:57,350 Ακριβώς έτσι που έχετε δει κάποια σύνταξη εδώ. 1455 01:07:57,350 --> 01:08:02,080 >> Αποδεικνύεται ότι αυτό που μόλις δεν χρησιμοποιεί πρώτες JavaScript. 1456 01:08:02,080 --> 01:08:04,420 Έτσι, αυτό είναι πραγματικά η γλώσσα JavaScript. 1457 01:08:04,420 --> 01:08:07,340 Κάποιοι από εσάς ίσως γνωρίζετε μια βιβλιοθήκη που ονομάζεται jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Έτσι jQuery δεν είναι το ίδιο πράγμα όπως JavaScript. 1459 01:08:09,980 --> 01:08:14,110 Είναι απλά μια βιβλιοθήκη που πραγματικά έξυπνη τύπος έγραψε και διαδόθηκε όπως 1460 01:08:14,110 --> 01:08:18,100 ότι σχεδόν ο καθένας στον κόσμο τώρα χρησιμοποιεί jQuery, όταν χρησιμοποιεί JavaScript. 1461 01:08:18,100 --> 01:08:20,890 Και με την πρώτη ματιά, ειλικρινά, μοιάζει λίγο πιο αινιγματικό. 1462 01:08:20,890 --> 01:08:24,990 Αλλά θα βρείτε, ειδικά αν πάτε υπάρχουν για την τελική έργο σας με την ιστοσελίδα 1463 01:08:24,990 --> 01:08:29,029 ανάπτυξη, θα διαπιστώσετε ότι αυτό το καθαρίζει τα πράγματα και σας εξοικονομεί αρκετά 1464 01:08:29,029 --> 01:08:30,229 λίγες γραμμές κώδικα. 1465 01:08:30,229 --> 01:08:33,189 >> Οπότε ας ματιά στο πώς αυτή η μορφή εργασίας. 1466 01:08:33,189 --> 01:08:35,664 Παρατηρήστε τι δεν μπορώ να αφαιρέσω προφανώς από την HTML μου; 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Δεν υπάρχει χειριστής για να υποβάλουν να το πω έτσι. 1469 01:08:40,630 --> 01:08:41,470 Δεν υπάρχει καμία ιδιότητα. 1470 01:08:41,470 --> 01:08:43,359 Γιατί ξέρετε, τι Δεν μου άρεσε πραγματικά; 1471 01:08:43,359 --> 01:08:45,640 Ένιωσα σαν να έπεφταν σε παλιές συνήθειες εκεί. 1472 01:08:45,640 --> 01:08:49,340 Ακριβώς όπως είχε αρχίσει να αισθάνονται ατημέλητη να μπερδεύονται τόσο με CSS 1473 01:08:49,340 --> 01:08:52,149 HTML, επειδή είστε το είδος της ρίψης διαφορετικές γλώσσες σε όλο τον 1474 01:08:52,149 --> 01:08:56,180 θέση, ομοίως έκανε αυτό αρχίσετε να αισθάνεστε σαν ένα κακό δρόμο για να πάει κάτω, όπου 1475 01:08:56,180 --> 01:09:01,069 Βάζω κώδικα JavaScript μέσα μου HTML αντί factoring έξω. 1476 01:09:01,069 --> 01:09:02,279 >> Έτσι, αυτό είναι το μάθημα εδώ. 1477 01:09:02,279 --> 01:09:05,080 Σε dom-2.html, είμαι το factoring έξω. 1478 01:09:05,080 --> 01:09:07,399 Και κάνω τα πράγματα λίγο διαφορετικά. 1479 01:09:07,399 --> 01:09:09,630 Για τώρα, θα πάω στο κύμα τα χέρια μου σε ό, τι αυτό κάνει πραγματικά 1480 01:09:09,630 --> 01:09:10,590 κάτω από το καπό. 1481 01:09:10,590 --> 01:09:14,210 Αλλά ακριβώς για υποθέσουμε τώρα ότι το πρώτο γραμμή κώδικα σε αυτήν τη βιβλιοθήκη 1482 01:09:14,210 --> 01:09:18,170 ονομάζεται jQuery σημαίνει ακριβώς όταν η το έγγραφο είναι έτοιμο, κάντε τα εξής. 1483 01:09:18,170 --> 01:09:20,080 >> Επειδή οι ιστοσελίδες μπορεί να πάρει κάποιο χρόνο για να φορτώσει. 1484 01:09:20,080 --> 01:09:23,029 Ίσως να είναι σε μια αργή internet σύνδεσης, και θα μπορούσε να περιστρέφεται 1485 01:09:23,029 --> 01:09:25,290 και γυρίζοντας, και, τέλος, είναι γεμάτο. 1486 01:09:25,290 --> 01:09:29,060 Αυτή η γραμμή κώδικα λέει απλά περιμένετε μέχρι ολόκληρη η σελίδα είναι έτοιμο, το έγγραφο 1487 01:09:29,060 --> 01:09:31,189 είναι έτοιμο, πριν από την εκτέλεση αυτού του κώδικα. 1488 01:09:31,189 --> 01:09:34,390 >> Και σήμερα παρατηρούμε ότι, αυτό είναι πιθανώς η πιο χρήσιμη πρώτη 1489 01:09:34,390 --> 01:09:36,189 πάρει μακριά από jQuery. 1490 01:09:36,189 --> 01:09:42,140 Αυτή η γραμμή εδώ είναι πολύ παρόμοια σε πνεύμα σε αυτό το πολύ μακρύτερη γραμμή εδώ. 1491 01:09:42,140 --> 01:09:46,920 Ότι, στον τομέα του ακατέργαστου κώδικα JavaScript, εκεί υπάρχει ένα έγγραφο παγκόσμιο αντικείμενο που 1492 01:09:46,920 --> 01:09:50,460 έχει μια λειτουργία που ονομάζεται getElementById (), οι άνθρωποι που έγραψε 1493 01:09:50,460 --> 01:09:55,720 jQuery απλοποιημένη ότι για να πω σύμβολο του δολαρίου, και στη συνέχεια στο εσωτερικό του 1494 01:09:55,720 --> 01:10:00,250 παρενθέσεις βάλει δύο εισαγωγικά, και στη συνέχεια βάλετε ένα σύμβολο hash που ακολουθείται από το 1495 01:10:00,250 --> 01:10:02,250 μοναδικό αναγνωριστικό που θέλετε να πάρετε. 1496 01:10:02,250 --> 01:10:06,170 Έτσι, αυτό είναι ισοδύναμο με document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> Εν τω μεταξύ,. Υποβάλουν μόνο μέσα στο υποβολή όποια μορφή και είστε 1498 01:10:11,090 --> 01:10:14,240 αναφέρεται στα αριστερά, πηγαίνετε μπροστά και να εκτελέσει αυτό. 1499 01:10:14,240 --> 01:10:16,600 Αλλά αυτό είναι τώρα η περιέργεια πάρα πολύ. 1500 01:10:16,600 --> 01:10:19,560 Πού είναι το περίεργο αυτό Έχω επισημανθεί εδώ; 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Δεν είναι μόνο αυτό το είδος της συντακτικά νέα, υπάρχει και κάτι που λείπει. 1503 01:10:28,594 --> 01:10:29,558 >> Απευθύνεται: Είναι ακριβώς λέγεται συνάρτηση; 1504 01:10:29,558 --> 01:10:31,970 Δεν λέγεται ειδοποίηση; 1505 01:10:31,970 --> 01:10:32,440 >> DAVID MALAN: Ναι. 1506 01:10:32,440 --> 01:10:35,450 Λοιπόν, έτσι συναγερμού () είναι κάτω εδώ, για να είμαστε δίκαιοι. 1507 01:10:35,450 --> 01:10:39,520 Αλλά δεν υπάρχει καμία αναφορά ενός όνομα, όπως γνωρίζετε, foo ή 1508 01:10:39,520 --> 01:10:40,980 κάτι εδώ. 1509 01:10:40,980 --> 01:10:43,830 Και πράγματι, αυτό είναι ένα από τα χαρακτηριστικά γνωρίσματα της JavaScript που είναι αρκετά 1510 01:10:43,830 --> 01:10:45,370 ισχυρό, αλλά και αρκετά νέα. 1511 01:10:45,370 --> 01:10:47,460 Και PHP έχει πράγματι αυτό επίσης. 1512 01:10:47,460 --> 01:10:49,500 >> Επιτρέψτε μου να προχωρήσει και να κάνει κάτι πραγματικά γρήγορα. 1513 01:10:49,500 --> 01:10:52,030 Επιτρέψτε μου να προχωρήσει και να θέσει αυτό έξω εδώ. 1514 01:10:52,030 --> 01:10:52,600 Επιτρέψτε μου να το κάνω αυτό. 1515 01:10:52,600 --> 01:10:53,690 Λειτουργία. 1516 01:10:53,690 --> 01:10:56,455 Ας το ονομάσουμε αυτό το χειριστή (). 1517 01:10:56,455 --> 01:10:58,290 Μια συνάρτηση handler ώστε να μιλήσουν. 1518 01:10:58,290 --> 01:11:00,110 Κάτι που χειρίζεται κάποια λειτουργία. 1519 01:11:00,110 --> 01:11:02,700 Επιτρέψτε μου να καθαρίσει εσοχή μου. 1520 01:11:02,700 --> 01:11:04,380 Και το βάλω εδώ. 1521 01:11:04,380 --> 01:11:06,090 Και θέσω εδώ. 1522 01:11:06,090 --> 01:11:06,470 Ναι. 1523 01:11:06,470 --> 01:11:07,060 OK. 1524 01:11:07,060 --> 01:11:10,300 >> Έτσι, τώρα έχω μια λειτουργία που ονομάζεται χειρισμού () που πραγματικά δεν ξέρω 1525 01:11:10,300 --> 01:11:10,890 τι κάνει ακόμα. 1526 01:11:10,890 --> 01:11:12,710 Απλώς εξακολουθεί να έχει αυτό το πράγμα. 1527 01:11:12,710 --> 01:11:13,900 Ουπς. 1528 01:11:13,900 --> 01:11:15,820 Πήρε πάρα πολύ. 1529 01:11:15,820 --> 01:11:18,490 Ας το κάνουμε αυτό. 1530 01:11:18,490 --> 01:11:18,990 Εντάξει. 1531 01:11:18,990 --> 01:11:20,240 Λυπάμαι. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 Εντάξει. 1534 01:11:23,690 --> 01:11:24,720 Επιτρέψτε μου να το κάνω αυτό. 1535 01:11:24,720 --> 01:11:25,020 OK. 1536 01:11:25,020 --> 01:11:27,040 Αυτό φαίνεται ωραία και ίσια διαβιβάσει τώρα. 1537 01:11:27,040 --> 01:11:29,090 Επιτρέψτε μου να το κάνω αυτό. 1538 01:11:29,090 --> 01:11:29,860 Κάνετε αυτό. 1539 01:11:29,860 --> 01:11:30,950 Και OK. 1540 01:11:30,950 --> 01:11:33,080 Έτσι τώρα, ας βάλουμε αυτό εδώ. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Δεν υπάρχει πλέον προγραμματισμός σχετικά με τη μύγα. 1543 01:11:37,270 --> 01:11:37,900 OK. 1544 01:11:37,900 --> 01:11:40,000 >> Έτσι τώρα, ας πάμε πίσω στο όπου η ιστορία άρχισε. 1545 01:11:40,000 --> 01:11:43,530 Προηγουμένως, είπα ότι αυτή η γραμμή εδώ σημαίνει ότι όταν το έγγραφο είναι έτοιμο, πάμε 1546 01:11:43,530 --> 01:11:44,380 μπροστά και να το κάνουμε αυτό. 1547 01:11:44,380 --> 01:11:45,660 Τι θέλω να κάνω; 1548 01:11:45,660 --> 01:11:49,070 Λοιπόν συγκεκριμένα, θέλω να πάω μπροστά και να κάνουμε το εξής. 1549 01:11:49,070 --> 01:11:53,700 Εκτελέστε αυτήν τη γραμμή κώδικα, και στη συνέχεια αυτό που θέλω να κάνετε είναι να καλέσετε αυτό 1550 01:11:53,700 --> 01:11:56,370 λειτουργεί όταν υποβληθεί η φόρμα. 1551 01:11:56,370 --> 01:11:57,730 >> Τώρα αυτό είναι αυτό που είναι ενδιαφέρον. 1552 01:11:57,730 --> 01:11:59,170 Αυτό δεν είναι η ίδια συνάρτηση. 1553 01:11:59,170 --> 01:12:02,540 Σημείωση Δεν βάζω παρενθέσεις εδώ κατά τον συνήθη τρόπο. 1554 01:12:02,540 --> 01:12:06,800 Είμαι κυριολεκτικά περνώντας μια λειτουργία που ονομάζεται χειριστή () σε μια άλλη λειτουργία 1555 01:12:06,800 --> 01:12:10,800 καλείται να υποβάλει () ως επιχείρημα αν και είναι σαν μια μεταβλητή. 1556 01:12:10,800 --> 01:12:14,290 Και αυτό είναι ένα από τα χαρακτηριστικά των JavaScript, είναι οι ίδιοι λειτουργίες 1557 01:12:14,290 --> 01:12:15,710 είναι πραγματικά αντικείμενα μόνο. 1558 01:12:15,710 --> 01:12:18,350 Στην πραγματικότητα, είναι πραγματικά ακριβώς μεταβλητές κάποιου είδους. 1559 01:12:18,350 --> 01:12:21,340 Και αν το όνομα της συνάρτησης είναι χειριστή (), δεν υπάρχει κανένας λόγος δεν μπορώ 1560 01:12:21,340 --> 01:12:23,390 και να τα ως επιχείρημα εδώ. 1561 01:12:23,390 --> 01:12:27,530 Και αυτό σημαίνει ότι, όταν το έντυπο με το αναγνωριστικό του demo είναι 1562 01:12:27,530 --> 01:12:29,320 υποβάλλονται, καλέστε αυτή τη λειτουργία. 1563 01:12:29,320 --> 01:12:32,770 >> Αλλά τώρα, αν μπορώ να αναιρέσω όλα αυτά, Τότε γιατί εγώ ίσως να κάνουν 1564 01:12:32,770 --> 01:12:34,850 Πριν από αυτή την στιγμή; 1565 01:12:34,850 --> 01:12:36,840 Λοιπόν, αυτό είναι μια ανώνυμη συνάρτηση. 1566 01:12:36,840 --> 01:12:41,080 Διότι, ειλικρινά, κατάλαβα γιατί είμαι ενοχλεί να χάνουμε χρόνο το χαρακτηρισμό 1567 01:12:41,080 --> 01:12:45,540 συνάρτηση που ονομάζεται χειριστής () μόνο για να καλέσετε αυτό σε ένα και μόνο ένα μέρος; 1568 01:12:45,540 --> 01:12:48,640 Αν δεν χρειάζεται το όνομα, και δεν μου πρέπει να το καλέσετε περισσότερες από μία θέση, 1569 01:12:48,640 --> 01:12:51,200 ας εφαρμόσουν τη λειτουργία ακριβώς εκεί που το χρειάζεστε. 1570 01:12:51,200 --> 01:12:55,190 Και έτσι JavaScript και PHP υποστηρίζει αυτό ονομάζονται ανώνυμες λειτουργίες που 1571 01:12:55,190 --> 01:12:57,900 επιτρέψτε μου να κάνει ακριβώς αυτό εδώ. 1572 01:12:57,900 --> 01:12:59,570 >> Αλλά είμαστε ακριβώς το ξύσιμο της επιφάνειας. 1573 01:12:59,570 --> 01:13:02,430 Ας δώσουμε έμφαση με μόνο ένα ζευγάρι τελευταία παραδείγματα εδώ. 1574 01:13:02,430 --> 01:13:04,600 >> Αν πάω σε quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Σημειώστε ότι αυτό είναι πραγματικά ένα PHP λειτουργία, ένα πρόγραμμα PHP, ότι έγραψα 1577 01:13:11,870 --> 01:13:15,270 ότι αναμένει μια παράμετρος που ονομάζεται HTTP σύμβολο, και μπορώ να περάσει 1578 01:13:15,270 --> 01:13:16,730 μια τιμή, όπως FB. 1579 01:13:16,730 --> 01:13:20,010 Και αν θέλουμε πραγματικά να δούμε την πηγή κώδικα, αυτή είναι η διερεύνηση μια δωρεάν ιστοσελίδα 1580 01:13:20,010 --> 01:13:23,680 που ονομάζεται Yahoo Finance, ακριβώς όπως π-set επτά, και αυτό είναι που επιστρέφουν σε μένα 1581 01:13:23,680 --> 01:13:26,580 κάτι προφανώς η format γνωστό είναι JSON - 1582 01:13:26,580 --> 01:13:28,010 JavaScript Object Notation. 1583 01:13:28,010 --> 01:13:28,810 Είναι απλά ένα αντικείμενο. 1584 01:13:28,810 --> 01:13:32,500 Ανακοίνωση για τα άγκιστρα, τα αποσπάσματα, του παχέος εντέρου, και τα κόμματα. 1585 01:13:32,500 --> 01:13:34,720 >> Τώρα Εν τω μεταξύ, αυτό είναι αρκετά δροσερό. 1586 01:13:34,720 --> 01:13:38,520 Επειδή ίσως μπορώ να χρησιμοποιήσω ένα προγραμματισμό γλώσσα για να δημιουργήσετε τις διευθύνσεις URL 1587 01:13:38,520 --> 01:13:40,370 που μοιάζει με αυτό δυναμικά, έτσι δεν είναι; 1588 01:13:40,370 --> 01:13:43,340 Μπορώ να το αλλάξετε αυτό στο Google και να πάρετε πίσω της Google 1589 01:13:43,340 --> 01:13:47,930 των τιμών των μετοχών των $ 1,017.55. 1590 01:13:47,930 --> 01:13:49,640 Ας δούμε, λοιπόν, αν δεν μπορούμε να χρησιμοποιήσουμε αυτό τώρα. 1591 01:13:49,640 --> 01:13:56,590 >> Επιτρέψτε μου να πάω σε ajax-0 εδώ, η οποία μοιάζει με το ακόλουθο. 1592 01:13:56,590 --> 01:13:59,750 Είναι απλά μια ιστοσελίδα που έχει μια φόρμα με ένα κουμπί. 1593 01:13:59,750 --> 01:14:05,860 Επιτρέψτε μου εδώ να προχωρήσει και πληκτρολογήστε YHOO για το σύμβολο της μετοχής της Yahoo, κάντε κλικ στο Λήψη 1594 01:14:05,860 --> 01:14:10,530 Παρέθεσε, και σήμερα παρατηρούμε ότι έχω πάρει μια ειδοποίηση με 32.86. 1595 01:14:10,530 --> 01:14:14,050 >> Επιτρέψτε μου να πραγματικά να πάει σε ένα πιό φανταχτερό έκδοση από αυτή τη σελίδα, την έκδοση δύο, και 1596 01:14:14,050 --> 01:14:17,530 πληκτρολογήστε ας πούμε Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Get Quote. 1598 01:14:18,410 --> 01:14:19,850 Και σήμερα παρατηρούμε, δεν ειδοποίηση. 1599 01:14:19,850 --> 01:14:22,770 Παρατηρήστε εκεί που λέει τιμή να προσδιοριστεί; 1600 01:14:22,770 --> 01:14:27,060 Υπάρχει η απλούστερη των παραδειγμάτων που παραπέμπει σε ποιο Gchat, και το Facebook 1601 01:14:27,060 --> 01:14:30,070 Συνομίλησε, και το Gmail, και άλλα τέτοια οι ιστοσελίδες που κάνουν με την πραγματικότητα 1602 01:14:30,070 --> 01:14:31,290 την αλλαγή της ιστοσελίδας. 1603 01:14:31,290 --> 01:14:31,800 >> Παρατηρήστε αυτό. 1604 01:14:31,800 --> 01:14:33,120 Επιτρέψτε μου να ξαναφορτώσετε την σελίδα. 1605 01:14:33,120 --> 01:14:35,080 Επιτρέψτε μου να ανοίξει Επιθεωρητή του Chrome. 1606 01:14:35,080 --> 01:14:36,890 Επιτρέψτε μου να πάω προς τα στοιχεία καρτέλα εδώ κάτω. 1607 01:14:36,890 --> 01:14:42,310 Τώρα, προσέξτε, αν μεγεθύνετε εδώ κάτω και ανοίξετε αυτό επάνω, παρατηρούμε ότι αυτό είναι μου 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - έγγραφο μοντέλο αντικειμένου μου. 1609 01:14:44,500 --> 01:14:45,920 Αυτό είναι HTML μου. 1610 01:14:45,920 --> 01:14:48,750 Αλλά σήμερα παρατηρούμε ότι, ακόμη και αν πρόκειται να είναι λίγο δύσκολο να το δούμε σε δύο 1611 01:14:48,750 --> 01:14:52,080 μέρη ταυτόχρονα, εάν πληκτρολογήσετε στο FB μέχρι εδώ, δείτε το κάτω μέρος 1612 01:14:52,080 --> 01:14:54,110 της οθόνης και μόνο. 1613 01:14:54,110 --> 01:14:57,720 >> Είναι πραγματικά αλλάζει HTML μου σχετικά με τη μύγα. 1614 01:14:57,720 --> 01:15:01,670 Και το κάνει αυτό πολύ απλά κάνοντας κάτι σαν αυτό. 1615 01:15:01,670 --> 01:15:06,800 Αν έχω ανοίξει ajax-2, ανακοίνωση για την εφαρμογή κάτι τόσο προκλητική όσο 1616 01:15:06,800 --> 01:15:09,560 ότι, ακόμα κι αν είναι πολύ άσχημο, αλλά τόσο περίπλοκο όσο αυτό 1617 01:15:09,560 --> 01:15:11,910 λειτουργικά, έχει μερικά HTML στο κάτω μέρος. 1618 01:15:11,910 --> 01:15:13,810 Αλλά πρόσεξα ότι χρησιμοποιείται για να μαρκάρει. 1619 01:15:13,810 --> 01:15:16,640 Εμείς δεν έχουμε χρησιμοποιηθεί πριν από αυτό, αλλά αυτό είναι σαν, αλλά δεν ισχύει 1620 01:15:16,640 --> 01:15:17,840 τα πάντα σε μια νέα γραμμή. 1621 01:15:17,840 --> 01:15:20,830 Κάνει ακριβώς ένα ορθογώνιο περιοχή στην ίδια γραμμή, κατ 'ουσίαν. 1622 01:15:20,830 --> 01:15:22,870 >> Παρατηρήστε ότι έδωσα ταυτότητα των τιμών. 1623 01:15:22,870 --> 01:15:26,800 Και αποδεικνύεται χρησιμοποιώντας το ίδιο JavaScript βιβλιοθήκη, έχω μια λειτουργία 1624 01:15:26,800 --> 01:15:30,440 ονομάζεται quote () που ονομάζεται όποτε την υποβολή της φόρμας. 1625 01:15:30,440 --> 01:15:31,800 Και αυτό που κάνω είναι αυτό. 1626 01:15:31,800 --> 01:15:35,730 Είμαι δηλώνοντας μια μεταβλητή σε JavaScript ονομάζεται url, εξοικονομώντας την τιμή 1627 01:15:35,730 --> 01:15:38,650 σύμβολο quote.php; =. 1628 01:15:38,650 --> 01:15:44,220 Με άλλα λόγια, εγώ αρχίζω να προετοιμάσει μια αίτηση HTTP, και στη συνέχεια 1629 01:15:44,220 --> 01:15:49,250 Είμαι συνενώσει σε ότι με ένα συν ανεξάρτητα από το στοιχείο με το αναγνωριστικό 1630 01:15:49,250 --> 01:15:54,190 σύμβολο είναι, η οποία ανακοίνωση είναι ότι πεδίο κειμένου κάτω δεξιά εδώ. 1631 01:15:54,190 --> 01:15:56,630 Έτσι ακριβώς όπως είχαμε μορφές στο παρελθόν. 1632 01:15:56,630 --> 01:16:01,450 >> Και τότε αποδεικνύεται στην jQuery, αν κλήση. val (), η οποία καλεί μια val 1633 01:16:01,450 --> 01:16:05,900 λειτουργία, μια λειτουργία αξία, που παίρνει ό, τι ο χρήστης έχει πληκτρολογήσει μέσα 1634 01:16:05,900 --> 01:16:08,920 Και τότε όλα της κίνησης του δικτύου που συμβαίνει είναι αυτό. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> Και ως ένα μέρος, το σύμβολο του δολαρίου είναι απλά μια σημειογραφία. 1637 01:16:13,720 --> 01:16:16,860 Είναι πραγματικά jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Πάρτε μου να JSON από αυτό το URL, και όταν το αίτημα έρχεται πίσω, καλέστε αυτό 1639 01:16:21,520 --> 01:16:26,550 λειτουργία και να περάσει σε όσο το επιχείρημα Όποια και αν ήρθε πίσω από το διακομιστή. 1640 01:16:26,550 --> 01:16:31,205 >> Έτσι, με άλλα λόγια, αν πάω πίσω στο περιήγησης, και να πάω πίσω στο quote.php, 1641 01:16:31,205 --> 01:16:35,590 τι browser μου κάνει είναι να πάρει Αυτό το κομμάτι των δεδομένων. 1642 01:16:35,590 --> 01:16:38,930 Και όταν πηγαίνω σε αυτήν την ιστοσελίδα εδώ, παρατηρήσετε αν αντί να πάει στο δίκτυο 1643 01:16:38,930 --> 01:16:43,820 καρτέλα και να τον διαγράψετε, και στη συνέχεια πληκτρολογήστε κάτι σαν GOOG για το Google και τον 1644 01:16:43,820 --> 01:16:46,340 Quote, ανακοίνωση η σελίδα δεν έχει αλλάξει. 1645 01:16:46,340 --> 01:16:50,990 Αλλά ένα αίτημα HTTP έγινε, και τι Επέστρεψα εδώ, αν κοιτάξουμε το 1646 01:16:50,990 --> 01:16:56,130 η απάντηση είναι ένα σωρό JSON ότι έχουμε πρόσβαση τελικά με 1647 01:16:56,130 --> 01:16:58,070 Αυτή η απλή γραμμή εδώ. 1648 01:16:58,070 --> 01:17:00,150 >> Τα δεδομένα είναι ό, τι είχε πάρει από το διακομιστή. 1649 01:17:00,150 --> 01:17:02,120 Η τιμή είναι το όνομα του κλειδί με νοιάζει. 1650 01:17:02,120 --> 01:17:05,230 Έτσι data.price μου δίνει αυτό. 1651 01:17:05,230 --> 01:17:07,540 >> Τώρα, εν τω μεταξύ, και αυτό είναι το τελευταίο παράδειγμα. 1652 01:17:07,540 --> 01:17:09,280 Μπορείτε να κάνετε ακόμα περισσότερα με τη σελίδα. 1653 01:17:09,280 --> 01:17:12,440 Μία πραγματικότητα, και τα δύο. 1654 01:17:12,440 --> 01:17:14,780 Μπορούμε να φέρουμε πίσω την tag, αν θυμάστε αυτό. 1655 01:17:14,780 --> 01:17:15,850 Αυτό είναι JavaScript. 1656 01:17:15,850 --> 01:17:17,110 Μπορούμε να το κάνουμε αυτό. 1657 01:17:17,110 --> 01:17:17,690 Πολύ συναρπαστικό. 1658 01:17:17,690 --> 01:17:18,800 Θα το αφήσουμε ως δραματική στιγμή. 1659 01:17:18,800 --> 01:17:21,590 >> Αλλά το πιο συναρπαστικό, μπορείτε να κάνουμε τα πράγματα όπως αυτό. 1660 01:17:21,590 --> 01:17:25,940 Αν πάω στο geolocation-1, αποδεικνύεται ότι το Chrome ξέρει ότι βρισκόμαστε σε 1661 01:17:25,940 --> 01:17:30,672 γεωγραφικού πλάτους 42.37. -71.10. 1662 01:17:30,672 --> 01:17:32,940 Έτσι, υπάρχει ακόμα εκεί στη διάθεσή σας. 1663 01:17:32,940 --> 01:17:34,290 Αλλά περισσότερα για αυτό την επόμενη εβδομάδα. 1664 01:17:34,290 --> 01:17:35,540 Τα λέμε τη Δευτέρα. 1665 01:17:35,540 --> 01:17:37,558