1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [Jouer de la musique] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Salut, tout le monde. 5 00:00:12,700 --> 00:00:15,866 Merci les gars tellement pour sortir dans le temps dégoûtant pour une quizz 6 00:00:15,866 --> 00:00:16,910 session d'examen. 7 00:00:16,910 --> 00:00:20,020 Comme vous le savez les gars, quizz on est ce mercredi. 8 00:00:20,020 --> 00:00:22,209 Donc, nous allons aller à travers un tas de sujets. 9 00:00:22,209 --> 00:00:24,000 DAVIN: Hey, je peux dire quelque chose de réel rapide? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Ouais, ça va Davin à-dire quelque chose de réel rapide. 11 00:00:25,215 --> 00:00:25,780 DAVIN: Désolé. 12 00:00:25,780 --> 00:00:29,490 Juste réel rapide, si vous avez des questions sur le questionnaire, vous pouvez aller en ligne. 13 00:00:29,490 --> 00:00:32,420 Aller à 2014 quizz une, sur le quiz. 14 00:00:32,420 --> 00:00:34,680 Il est obtenu à propos de la logistique où aller, quand y aller. 15 00:00:34,680 --> 00:00:38,100 Si vous êtes inscrit simultanément, nous sommes va avoir un quiz de maquillage à 05h30. 16 00:00:38,100 --> 00:00:40,350 Ou si vous me avez envoyé un problème, vous avez une autre question. 17 00:00:40,350 --> 00:00:42,640 Mais 05:30 est le maquillage temps mercredi. 18 00:00:42,640 --> 00:00:44,540 Mais si vous avez des questions, questions générales, 19 00:00:44,540 --> 00:00:45,748 en ligne a toute la logistique. 20 00:00:45,748 --> 00:00:47,690 Il ya donc d'abord vérifier. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 Alors, voici la grande liste de sujets que nous allons passer par aujourd'hui. 23 00:00:53,030 --> 00:00:57,390 Je vais couvrir l'ensemble de la C des trucs, qui est que la première colonne. 24 00:00:57,390 --> 00:01:00,710 Ainsi, le C choses que nous couverte après quizz zéro. 25 00:01:00,710 --> 00:01:05,459 A partir d'une liste chaînée, qui inclut des pointeurs. 26 00:01:05,459 --> 00:01:07,668 >> Très bien, alors nous avons vu ce à la dernière session d'examen, 27 00:01:07,668 --> 00:01:10,000 Je vais donc passer par ce est un peu plus rapide. 28 00:01:10,000 --> 00:01:13,500 Juste levez la main si vous me voulez ralentir ou parler de quelque chose plus loin. 29 00:01:13,500 --> 00:01:17,150 Mais nous utilisons des listes chaînées parce nous avons commencé en C avec des tableaux. 30 00:01:17,150 --> 00:01:20,920 Et les tableaux sont grands, mais le problème, ce est qu'ils ont une taille fixe. 31 00:01:20,920 --> 00:01:24,925 Les listes chaînées nous permettent de créer dimensionnés dynamiquement les structures de données. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> Et nous avons nos opérations de base, insérer, supprimer, et la recherche. 34 00:01:32,320 --> 00:01:36,780 Et nous pouvons faire insert dans pire des cas de temps constant 35 00:01:36,780 --> 00:01:39,140 si nous suffit de le mettre dès le début. 36 00:01:39,140 --> 00:01:45,220 Suppression et de consultation, le pire oh grand cas de n temps. 37 00:01:45,220 --> 00:01:47,140 Encore une fois, juste pour retourner à travers ces images, 38 00:01:47,140 --> 00:01:50,860 Je sais que nous avons vu ces derniers temps, mais nous voulez garder une trace de notre liste chaînée 39 00:01:50,860 --> 00:01:53,440 en gardant la trace de la tête de notre liste chaînée. 40 00:01:53,440 --> 00:01:55,580 Parce que nous savons que chacun de nos noeuds 41 00:01:55,580 --> 00:01:58,610 va juste pour pointer vers le noeud suivant dans notre liste chaînée. 42 00:01:58,610 --> 00:02:00,460 >> Ce est ainsi que nous suivons. 43 00:02:00,460 --> 00:02:02,910 Même si ce ne sont pas morceaux continues de mémoire, 44 00:02:02,910 --> 00:02:07,410 nous pouvons les trouver simplement en suivant les différentes flèches. 45 00:02:07,410 --> 00:02:09,800 Voici notre structure pour un nœud de liste chaînée. 46 00:02:09,800 --> 00:02:11,440 Nous avons vu la dernière fois. 47 00:02:11,440 --> 00:02:13,080 Nous avons notre noeud struct. 48 00:02:13,080 --> 00:02:14,340 Et il a deux propriétés. 49 00:02:14,340 --> 00:02:17,020 Numéro un, la réelle valeur que nous voulons stocker. 50 00:02:17,020 --> 00:02:18,290 Dans ce cas, ce est un nombre entier. 51 00:02:18,290 --> 00:02:21,100 Il pourrait être une chaîne, il pourrait un char, ce que vous voulez. 52 00:02:21,100 --> 00:02:24,710 Et puis, nous devons garder une trace de le noeud suivant dans notre liste chaînée. 53 00:02:24,710 --> 00:02:29,797 Donc cela va être un pointeur vers le nœud suivant. 54 00:02:29,797 --> 00:02:31,880 Si vous ne avez fait que recherche, comme je l'ai dit avant, 55 00:02:31,880 --> 00:02:34,900 vous auriez à suivre vos flèches vers le bas. 56 00:02:34,900 --> 00:02:40,720 Insertion, vous garder la trace d'où le reste de votre liste est. 57 00:02:40,720 --> 00:02:44,150 Et vous souhaitez rediriger la tête pour pointer vers notre nouvel élément, qui 58 00:02:44,150 --> 00:02:46,640 dans ce cas est une, puis on va pointer 59 00:02:46,640 --> 00:02:49,480 pour le reste de la liste chaînée. 60 00:02:49,480 --> 00:02:52,996 Encore une fois, je sais que ce est un peu peu d'une répétition du test zéro. 61 00:02:52,996 --> 00:02:55,370 Nous devons donc être très prudent sur l'ordre dans lequel on 62 00:02:55,370 --> 00:03:00,390 faire ces pointages de sorte que nous ne le faisons pas perdre la trace de l'arrière de la liste. 63 00:03:00,390 --> 00:03:04,122 OK, avec des questions tout seuls listes liée? 64 00:03:04,122 --> 00:03:06,060 Impressionnant, OK, cool. 65 00:03:06,060 --> 00:03:09,410 >> Alors maintenant, nous allons aller sur quelque chose juste un peu plus compliqué, 66 00:03:09,410 --> 00:03:10,920 doublement chaînée listes. 67 00:03:10,920 --> 00:03:13,680 Donc, en plus de garder piste du noeud suivant, 68 00:03:13,680 --> 00:03:16,220 nous voulons aussi garder la trace du noeud précédent. 69 00:03:16,220 --> 00:03:19,580 Et cela nous permet de, si nous sommes à un certain moment dans notre liste chaînée, 70 00:03:19,580 --> 00:03:23,110 non seulement aller de l'avant, mais itérer aussi vers l'arrière. 71 00:03:23,110 --> 00:03:25,220 Parce que, comme nous avons vu dans une liste chaînée, 72 00:03:25,220 --> 00:03:27,980 si nous étions à un noeud, et tout d'un coup, nous avons décidé, 73 00:03:27,980 --> 00:03:30,160 en fait, je veux aller à le droit de noeud devant moi, 74 00:03:30,160 --> 00:03:32,034 vous auriez à aller le chemin du retour à la tête 75 00:03:32,034 --> 00:03:35,710 et itérer jusqu'à ce que vous avez trouvé le nœud que vous recherchez. 76 00:03:35,710 --> 00:03:37,680 >> Donc, cela rend les choses un peu plus facile que nous sommes 77 00:03:37,680 --> 00:03:39,670 essayer de parcourir grâce à notre liste chaînée. 78 00:03:39,670 --> 00:03:47,870 Mais elle nous oblige à garder une trace de l'un plus pointeur, donc une plus noeud étoiles. 79 00:03:47,870 --> 00:03:50,830 Très bien, alors voici la partie la plus amusante. 80 00:03:50,830 --> 00:03:55,600 Nous allons pratiquer la mise en œuvre retirer des listes doublement chaînées. 81 00:03:55,600 --> 00:03:58,660 Donc, ce est quelque chose qui est jeu totalement équitable pour le quiz. 82 00:03:58,660 --> 00:04:00,750 Il a montré sur des quiz dernières. 83 00:04:00,750 --> 00:04:04,220 Donc certainement être préparé pour coder un peu en C. 84 00:04:04,220 --> 00:04:07,900 Ne oubliez pas que, avec tout ce plaisir PHP et JavaScript, 85 00:04:07,900 --> 00:04:10,560 nous avons encore de se rappeler C. Donc faire rafraîchir que 86 00:04:10,560 --> 00:04:12,146 si vous vous sentez rouillé. 87 00:04:12,146 --> 00:04:14,580 >> Très bien, nous allons voir si nous pouvons le faire. 88 00:04:14,580 --> 00:04:16,312 OK, cool. 89 00:04:16,312 --> 00:04:18,600 Nous allons donc essayer pour modifier le droit ici, 90 00:04:18,600 --> 00:04:20,707 et je espère que cela se passe comme prévu. 91 00:04:20,707 --> 00:04:23,915 Tous droits, personne ne veut me donner une suggestion quant à la façon dont je devrais commencer? 92 00:04:23,915 --> 00:04:27,030 La seule hypothèse que je suis décision est que je ai déjà 93 00:04:27,030 --> 00:04:30,180 ont une structure définie, le celui que je ai montré sur la dernière page, 94 00:04:30,180 --> 00:04:31,420 sur la dernière diapositive. 95 00:04:31,420 --> 00:04:39,250 Et je stocker la tête de mon liée Liste dans certaines pointeur appelé liste. 96 00:04:39,250 --> 00:04:42,190 Quelqu'un veut-il me lancez? 97 00:04:42,190 --> 00:04:45,410 >> AUDIENCE: Pouvez-vous créer un nouveau noeud à appeler dans la liste? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, afin nous allons créer 99 00:04:46,410 --> 00:04:47,951 un nouveau noeud à ramper à travers la liste. 100 00:04:47,951 --> 00:04:48,570 J'aime ça. 101 00:04:48,570 --> 00:04:50,799 Je vais l'appeler pointeur si ce est OK. 102 00:04:50,799 --> 00:04:52,340 Et où faut-il commencer à l'origine? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> AUDIENCE: Probablement au la tête de la liste. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Belle. 106 00:05:00,590 --> 00:05:03,670 Nous voulons commencer à la tête, qui Je ai dit va être stocké dans la liste. 107 00:05:03,670 --> 00:05:04,170 Impressionnant. 108 00:05:04,170 --> 00:05:05,220 Jusqu'ici, tout va bien. 109 00:05:05,220 --> 00:05:08,260 Et maintenant, notre objectif est de parcourir la liste 110 00:05:08,260 --> 00:05:12,870 jusqu'à ce qu'on trouve le nœud avec valeur n que nous voulons supprimer. 111 00:05:12,870 --> 00:05:13,540 D'ACCORD? 112 00:05:13,540 --> 00:05:15,910 >> Donc, est maintenant la partie où nous voulons pour parcourir. 113 00:05:15,910 --> 00:05:19,488 Quelqu'un peut-il suggérer une moyen d'itérer à travers? 114 00:05:19,488 --> 00:05:20,979 >> PUBLIC: Une boucle. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: Une boucle. 116 00:05:21,840 --> 00:05:22,620 J'aime cela. 117 00:05:22,620 --> 00:05:25,550 Plus précisément, nous pouvons essayer une boucle while. 118 00:05:25,550 --> 00:05:30,919 OK, et nous savons que nous avons atteint la fin de notre liste lorsque ce? 119 00:05:30,919 --> 00:05:32,210 AUDIENCE: Lorsque pointeur est nul. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Lorsque pointeur est nul. 121 00:05:33,418 --> 00:05:34,320 Belle, je l'aime. 122 00:05:34,320 --> 00:05:35,110 OK, cool. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Donc désolé si ma sélection est accolade type de tomber hors de l'écran. 125 00:05:43,190 --> 00:05:44,090 Nous avons apporté de nouveau. 126 00:05:44,090 --> 00:05:46,610 OK, cool. 127 00:05:46,610 --> 00:05:48,690 Quelle est la prochaine? 128 00:05:48,690 --> 00:05:51,950 >> Donc, nous savons que nous voulons supprimer le noeud qui a une valeur n. 129 00:05:51,950 --> 00:05:56,340 Donc, nous allons trouver le cas où nous trouvons en fait notre noeud. 130 00:05:56,340 --> 00:05:57,840 Alors, comment aurais-je vérifier cela? 131 00:05:57,840 --> 00:06:02,210 Je dirais simplement si le pointeur, puis si je vouloir obtenir la valeur de pointeur, 132 00:06:02,210 --> 00:06:08,940 Je ne flèche N, est égal à n, le paramètre 133 00:06:08,940 --> 00:06:14,490 que nous avons donné à cette fonction, le noeud que nous voulons effectivement supprimer. 134 00:06:14,490 --> 00:06:17,090 Des questions jusqu'à ici? 135 00:06:17,090 --> 00:06:18,360 Bien. 136 00:06:18,360 --> 00:06:24,140 OK, alors maintenant nous allons tracer un portrait rapide sur la carte afin de visualiser cela. 137 00:06:24,140 --> 00:06:30,710 >> Donc, disons il ya notre belle noeud. 138 00:06:30,710 --> 00:06:34,480 Et il a une valeur, je vais juste dire quatre. 139 00:06:34,480 --> 00:06:40,340 Et il pointe à la prochaine noeud dans notre liste chaînée. 140 00:06:40,340 --> 00:06:42,220 Et il n'y a rien devant elle. 141 00:06:42,220 --> 00:06:45,800 Donc, nous avons notre précédente pointant à rien. 142 00:06:45,800 --> 00:06:48,110 Dans ce cas, nous signalons arrière. 143 00:06:48,110 --> 00:06:50,960 OK, juste la mise en place de mon liste chaînée ici. 144 00:06:50,960 --> 00:06:53,630 Et nous avons une liste qui pointe à cette structure pour commencer. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Je attire un de plus pour Par souci d'exhaustivité. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 D'ACCORD. 149 00:07:06,117 --> 00:07:07,480 Je insiste sur ce point en avant. 150 00:07:07,480 --> 00:07:09,550 Et je signale que l'un retour. 151 00:07:09,550 --> 00:07:10,360 Oops, désolé. 152 00:07:10,360 --> 00:07:12,710 Ouais, eu cette arrière. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Faites-le à nouveau. 155 00:07:16,967 --> 00:07:18,330 OK, là nous allons. 156 00:07:18,330 --> 00:07:19,910 Tous droits, il a obtenu. 157 00:07:19,910 --> 00:07:21,780 OK, voici notre photo. 158 00:07:21,780 --> 00:07:24,860 >> OK, donc nous voulons considérer deux cas. 159 00:07:24,860 --> 00:07:27,330 Le premier cas est si le noeud nous voulons supprimer 160 00:07:27,330 --> 00:07:29,420 est au tout début de notre liste. 161 00:07:29,420 --> 00:07:34,070 Et puis, le second cas que nous voulons à considérer est si ce est ne importe où ailleurs. 162 00:07:34,070 --> 00:07:37,660 Je comprends que ce est un tout dessin désordre avec tout mon effacement, 163 00:07:37,660 --> 00:07:40,400 mais je espère que nous allons essayer de que ce soit clair avec du code. 164 00:07:40,400 --> 00:07:45,450 >> OK, donc nous allons couvrir le cas où nous avons trouvé notre noeud, 165 00:07:45,450 --> 00:07:48,900 et ce est à tout le commencer de notre liste chaînée. 166 00:07:48,900 --> 00:07:50,810 Quiconque me donner un suggestion ici à ce que 167 00:07:50,810 --> 00:07:54,684 Je dois faire pour effacer réellement notre noeud? 168 00:07:54,684 --> 00:07:55,970 Ce est un peu délicat. 169 00:07:55,970 --> 00:07:56,470 D'ACCORD? 170 00:07:56,470 --> 00:07:59,628 >> AUDIENCE: Vous devez prendre la noeud qui serait avant 171 00:07:59,628 --> 00:08:01,794 et le faire pointer sur la celle qui serait après, 172 00:08:01,794 --> 00:08:03,004 et de prendre le nœud qui serait après et de faire 173 00:08:03,004 --> 00:08:04,554 pointer vers le nœud devant elle. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Exactement. 175 00:08:05,220 --> 00:08:10,640 OK, donc ce est le cas where-- nous avons deux cas. 176 00:08:10,640 --> 00:08:14,100 Nous avons le cas où le noeud que nous sommes à la recherche 177 00:08:14,100 --> 00:08:18,270 est l'avant de la liste. 178 00:08:18,270 --> 00:08:23,110 OK, puis le cas que vous décrit est contraire, non? 179 00:08:23,110 --> 00:08:24,500 Ce est quelque part ailleurs dans la liste. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Donc, vous l'avez dit, nous devons regarder le noeud précédent, 182 00:08:32,840 --> 00:08:36,500 et de faire le nœud précédent pointer sur le noeud suivant. 183 00:08:36,500 --> 00:08:40,510 Donc, disons que nous sommes essayer de prendre sur cinq 184 00:08:40,510 --> 00:08:43,059 dans mon dessin très salissant ici. 185 00:08:43,059 --> 00:08:47,530 Nous voulons faire en sorte que Quatre points maintenant à six. 186 00:08:47,530 --> 00:08:49,590 Points suivants de quatre à six. 187 00:08:49,590 --> 00:08:52,150 Et les points précédents de six à quatre. 188 00:08:52,150 --> 00:08:53,960 Ce est notre but ici, non? 189 00:08:53,960 --> 00:08:56,150 Ce est ce que je pense que vous venez de dire là-bas. 190 00:08:56,150 --> 00:08:58,450 >> OK, alors allons-y que première pièce. 191 00:08:58,450 --> 00:09:02,300 Faisons le avoir la pointeur précédent précédent. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Donc de quatre prochaine devrait pointer vers quoi? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Justement, dans ce cas, six. 196 00:09:14,900 --> 00:09:18,470 Donc, nous devrions dire pointeur, à côté. 197 00:09:18,470 --> 00:09:20,600 D'ACCORD? 198 00:09:20,600 --> 00:09:21,150 Bien. 199 00:09:21,150 --> 00:09:24,870 Alors débarrassons de cette image laide et essayer de dessiner un peu plus joli. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Nous avons notre tête de liste. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 Et qui pointe vers le premier noeud notre liste chaînée, qui nous dit, ce est quatre. 204 00:09:42,740 --> 00:09:45,620 Voici notre deuxième noeud, cinq. 205 00:09:45,620 --> 00:09:47,307 Et notre troisième noeud, six. 206 00:09:47,307 --> 00:09:50,265 Juste essayer de dessiner exactement la même image, juste un peu plus propre. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, donc de quatre prochaines des points à l'origine à cinq. 209 00:09:56,280 --> 00:09:58,620 Points suivants de cinq à six. 210 00:09:58,620 --> 00:10:00,170 Points précédents de six à cinq. 211 00:10:00,170 --> 00:10:02,470 Et les points précédents de cinq à quatre. 212 00:10:02,470 --> 00:10:03,360 Tellement plus agréable! 213 00:10:03,360 --> 00:10:04,530 OK, cool. 214 00:10:04,530 --> 00:10:07,770 >> Alors maintenant, ce que nous avons fait tout ici, cette ligne de code, 215 00:10:07,770 --> 00:10:12,680 qui dit pointeur précédente prochaine, alors qu'est-ce que cela signifie? 216 00:10:12,680 --> 00:10:17,540 Cela signifie que si nous cherchons à cinq, aller à la nœud précédent, 217 00:10:17,540 --> 00:10:21,970 et ce est la prochaine étape devrait maintenant Point à cinq Next. 218 00:10:21,970 --> 00:10:27,840 Donc, essentiellement, ce que ce est faire Ce est l'effacement est cette flèche 219 00:10:27,840 --> 00:10:29,640 et d'en faire sauter à droite sur cinq. 220 00:10:29,640 --> 00:10:31,360 Est-ce clair? 221 00:10:31,360 --> 00:10:33,200 Je sais que cela peut être un peu sommaire. 222 00:10:33,200 --> 00:10:34,480 Je vois des hochements de tête. 223 00:10:34,480 --> 00:10:35,390 C'est bon. 224 00:10:35,390 --> 00:10:36,670 OK, cool. 225 00:10:36,670 --> 00:10:39,590 Maintenant, quelle est la prochaine étape? 226 00:10:39,590 --> 00:10:42,060 >> Je ai réinitialiser la prochaine. 227 00:10:42,060 --> 00:10:45,297 Maintenant, quel autre flèche dois-je changer? 228 00:10:45,297 --> 00:10:46,130 Celui-ci ici. 229 00:10:46,130 --> 00:10:47,560 Six de précédente. 230 00:10:47,560 --> 00:10:50,620 Nous ne voulons pas de six précédente au point plus à cinq. 231 00:10:50,620 --> 00:10:54,580 Nous voulons qu'il pointe à quatre. 232 00:10:54,580 --> 00:10:56,190 Est-ce que l'image de sens? 233 00:10:56,190 --> 00:10:58,370 Alors maintenant, nous pouvons effectivement prendre cinq sur. 234 00:10:58,370 --> 00:10:59,370 Alors soyons ce morceau. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Que dois-je faire avant réinitialiser six de précédente à quatre? 237 00:11:11,180 --> 00:11:14,360 Toutes les idées là-bas? 238 00:11:14,360 --> 00:11:17,369 >> AUDIENCE: Libérer le noeud entre les en le définissant à null? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Cool. 240 00:11:17,910 --> 00:11:21,100 Certainement, notre objectif final est va être de libérer le noeud. 241 00:11:21,100 --> 00:11:22,490 Donc, nous pouvons le faire ici. 242 00:11:22,490 --> 00:11:23,540 Pointeur gratuit. 243 00:11:23,540 --> 00:11:24,810 Absolument. 244 00:11:24,810 --> 00:11:29,160 Mais même avant cela, nous allons just-- notre droit de buts 245 00:11:29,160 --> 00:11:38,730 ici, ce est de mettre pointeur à côté précédente égale à pointeur précédente. 246 00:11:38,730 --> 00:11:40,760 Je sais que ce est se recouverte. 247 00:11:40,760 --> 00:11:45,440 OK, nous allons take-- cool. 248 00:11:45,440 --> 00:11:46,990 Tout le monde peut voir cette ligne de fond? 249 00:11:46,990 --> 00:11:47,840 Ou est-ce superbe petit? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Donc, avant de nous exécutons cette ligne ici, nous voulons 252 00:11:54,300 --> 00:11:58,375 pour se assurer que pointeur est à côté pas nulle. 253 00:11:58,375 --> 00:12:00,500 Parce que si le pointeur est à côté null, ce type d'erreur 254 00:12:00,500 --> 00:12:02,727 vais-je recevoir lorsque je essaie de référence à un pointeur nul? 255 00:12:02,727 --> 00:12:03,560 AUDIENCE: Seg faute. 256 00:12:03,560 --> 00:12:05,660 HANNAH: Un défaut de seg, belle. 257 00:12:05,660 --> 00:12:09,690 OK, si ce ne est pas null, alors nous pouvons réinitialiser. 258 00:12:09,690 --> 00:12:14,420 Et nous avons à nouveau six points à quatre. 259 00:12:14,420 --> 00:12:17,440 Questions jusqu'à ce point? 260 00:12:17,440 --> 00:12:17,940 Oui? 261 00:12:17,940 --> 00:12:19,814 >> AUDIENCE: Dans votre première if, avez-vous 262 00:12:19,814 --> 00:12:23,817 signifie d'avoir la flèche prochaine, ou [inaudible]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: Je voulais dire pointeur flèche n. 264 00:12:25,150 --> 00:12:30,270 Donc, fondamentalement, ce que je essaie de faire ce est de dire, le noeud courant que je suis 265 00:12:30,270 --> 00:12:34,100 itérer, le noeud courant Je regarde, je stocker dans pointeur. 266 00:12:34,100 --> 00:12:37,630 Et je veux savoir pointeur de valeur, qui dans ce cas est n. 267 00:12:37,630 --> 00:12:39,500 Et je veux voir, ce est le nœud que je suis à la recherche 268 00:12:39,500 --> 00:12:42,790 pour le nœud que je vise à supprimer? 269 00:12:42,790 --> 00:12:47,657 Donc, ce est pourquoi nous avons ici pointeur n. 270 00:12:47,657 --> 00:12:49,857 >> Auditoire: Alors, la flèche va à n, vous définissez la valeur 271 00:12:49,857 --> 00:12:52,058 et de le stocker dans un nœud appelé n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: Donc, ce est comme si je suis passer par cette liste chaînée 274 00:12:58,820 --> 00:13:00,310 et pointant à cinq. 275 00:13:00,310 --> 00:13:03,600 Si je veux obtenir cette valeur, si Je veux obtenir ce nombre, 5, 276 00:13:03,600 --> 00:13:06,400 Je ai à faire pointeur flèche n. 277 00:13:06,400 --> 00:13:06,900 Cool? 278 00:13:06,900 --> 00:13:07,900 Ouais. 279 00:13:07,900 --> 00:13:11,200 >> AUDIENCE: est N le nom de la variable? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Oui. 281 00:13:11,700 --> 00:13:14,870 Donc, si nous Back Flip une diapositive, n est le nom 282 00:13:14,870 --> 00:13:18,660 de la valeur à l'intérieur de la noeud dans notre liste chaînée. 283 00:13:18,660 --> 00:13:21,510 Et je sais que cela peut être un peu peu confus parce que nous aussi 284 00:13:21,510 --> 00:13:24,680 appellent la chose que nous voulons supprimer n. 285 00:13:24,680 --> 00:13:26,717 Donc ce est là que une ligne vient. 286 00:13:26,717 --> 00:13:27,671 Ouais? 287 00:13:27,671 --> 00:13:31,010 >> Public: Qu'est-ce que vous avez [Inaudible] comment ils fonctionnent? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Un pointeur [inaudible]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Bien sûr. 291 00:13:37,520 --> 00:13:40,027 Parlez-vous about-- quelle ligne? 292 00:13:40,027 --> 00:13:41,526 PUBLIC: La dernière ligne [inaudible]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Bien sûr, OK. 295 00:13:45,250 --> 00:13:48,540 Alors regardons à l'image dans pour tenter d'expliquer ce phénomène. 296 00:13:48,540 --> 00:13:51,030 Je suis désolé, pour le caméra, la question était 297 00:13:51,030 --> 00:13:54,580 pouvons-nous expliquer pointeur Arrow Next pointeur précédente. 298 00:13:54,580 --> 00:14:01,510 OK, alors disons que nous sommes à cinq et notre objectif est de supprimer cinq. 299 00:14:01,510 --> 00:14:07,240 Donc pointeur à côté, qui de ces trois nœuds ne nous donnent que? 300 00:14:07,240 --> 00:14:10,840 Cela nous amène à la sixième noeud, non? 301 00:14:10,840 --> 00:14:16,490 >> OK, maintenant que nous demandons pour de six précédente. 302 00:14:16,490 --> 00:14:17,060 D'ACCORD? 303 00:14:17,060 --> 00:14:20,210 Et nous réinitialisation cette égal à quatre, 304 00:14:20,210 --> 00:14:23,214 qui se trouvait être de cinq précédente. 305 00:14:23,214 --> 00:14:25,180 Je sais, ce est super difficile de garder la trace. 306 00:14:25,180 --> 00:14:29,286 Je recommande vraiment vous dessinez photos si vous obtenez une question comme ça. 307 00:14:29,286 --> 00:14:30,242 Oui? 308 00:14:30,242 --> 00:14:32,617 >> PUBLIC: La raison pour laquelle nous ne avons pas un [inaudible]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Exactement. 311 00:14:38,570 --> 00:14:44,800 Donc la question est, pourquoi faire nous pas besoin de vérifier ici? 312 00:14:44,800 --> 00:14:48,160 Pourquoi avons-nous pas besoin de vérifier que pointeur précédente ne est pas égal à null? 313 00:14:48,160 --> 00:14:50,070 Et ce est parce que nous avons déjà séparé 314 00:14:50,070 --> 00:14:52,490 le cas si le pointeur de au tout début. 315 00:14:52,490 --> 00:14:54,060 Très bonne question. 316 00:14:54,060 --> 00:14:56,880 Rien d'autre à ce sujet? 317 00:14:56,880 --> 00:14:57,380 OK, cool. 318 00:14:57,380 --> 00:14:58,360 Alors finissons vers le haut. 319 00:14:58,360 --> 00:14:59,890 Nous y sommes presque. 320 00:14:59,890 --> 00:15:01,310 >> Alors, que se il est à la tête? 321 00:15:01,310 --> 00:15:03,360 Et si au lieu de essayez de supprimer cinq, 322 00:15:03,360 --> 00:15:06,240 nous voulions vraiment supprimer quatre? 323 00:15:06,240 --> 00:15:07,270 Qu'est-ce que je dois faire? 324 00:15:07,270 --> 00:15:09,610 Eh bien, je veux réinitialiser ma tête à quoi? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Shout It Out? 327 00:15:15,585 --> 00:15:16,710 AUDIENCE: celle d'après. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Belle. 329 00:15:17,460 --> 00:15:26,430 OK, donc nous voulons liste à pointant à tout ce que notre pointeur nœud suivant est. 330 00:15:26,430 --> 00:15:29,040 Bon. 331 00:15:29,040 --> 00:15:30,810 Et juste pour l'exhaustivité de amour, nous le ferions 332 00:15:30,810 --> 00:15:35,590 vouloir vérifier que tant que notre liste ne est pas nul, aussi longtemps que notre liste ne est pas 333 00:15:35,590 --> 00:15:42,730 vide, alors nous voulons mettre notre précédente égale à nulle. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Question jusqu'ici? 336 00:15:50,230 --> 00:15:53,205 Une étape de--? 337 00:15:53,205 --> 00:15:55,530 >> AUDIENCE: Serait-il si la liste ne est pas égal à null? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Oui, vous avez tout à fait raison. 339 00:15:56,950 --> 00:15:58,130 Je suis tellement désolé. 340 00:15:58,130 --> 00:16:00,040 Est-liste ne est pas égale à null. 341 00:16:00,040 --> 00:16:01,915 Impressionnant. 342 00:16:01,915 --> 00:16:04,245 Essayer de mettre tout cela sur l'écran. 343 00:16:04,245 --> 00:16:06,870 Ce est une sorte de tomber. 344 00:16:06,870 --> 00:16:07,730 Désolé, les gars. 345 00:16:07,730 --> 00:16:11,874 Et last but not least, tous les nous avons à faire est de retour. 346 00:16:11,874 --> 00:16:12,840 D'ACCORD. 347 00:16:12,840 --> 00:16:15,400 Ce était beaucoup bourré en très rapidement. 348 00:16:15,400 --> 00:16:16,800 Prenez une seconde pour passer en revue ceci. 349 00:16:16,800 --> 00:16:18,216 Dites-moi si vous avez des questions. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Ouais? 352 00:16:20,732 --> 00:16:26,940 >> AUDIENCE: Si la liste est à la tête, alors-- attendre, tant pis. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, bon. 354 00:16:27,700 --> 00:16:30,987 Donc, ce est si la liste est à la tête, nous enlevons à tout ce que nous avons inséré. 355 00:16:30,987 --> 00:16:31,486 Ouais? 356 00:16:31,486 --> 00:16:33,777 >> AUDIENCE: Pouvez-vous expliquer la première instruction if nouveau? 357 00:16:33,777 --> 00:16:36,149 Si le pointeur de n est égale à n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Bien sûr. 359 00:16:36,690 --> 00:16:42,780 Donc notre objectif de cette fonction est toute pour supprimer le noeud qui a une valeur n. 360 00:16:42,780 --> 00:16:47,460 Donc, si nous trouvons, comme nous sommes itérer notre liste, 361 00:16:47,460 --> 00:16:51,770 le noeud avec la valeur n, qui est celui que nous voulons supprimer. 362 00:16:51,770 --> 00:16:57,286 Donc tout se passe de la suppression l'intérieur de ce grand if. 363 00:16:57,286 --> 00:16:58,593 Est-ce que cela a du sens? 364 00:16:58,593 --> 00:16:59,480 Cool. 365 00:16:59,480 --> 00:16:59,990 Ouais? 366 00:16:59,990 --> 00:17:02,864 >> AUDIENCE: Peut-être que vous ne pouvez pas voir , mais ne vous devez également une ligne 367 00:17:02,864 --> 00:17:06,024 pour faire défiler la liste? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Disons soulever cette question un peu, et nous jetterons ce droit dans le fond. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Peut-être que le conseil serait avez été un peu meilleure idée. 372 00:17:15,490 --> 00:17:17,829 Alors, comment aurais-je déplacer le pointeur de l'avant? 373 00:17:17,829 --> 00:17:20,184 >> AUDIENCE: Pointeur égale pointeur plus un. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Belle. 375 00:17:21,599 --> 00:17:25,050 Donc, cela nous permet de continuer itération à travers. 376 00:17:25,050 --> 00:17:26,251 D'ACCORD. 377 00:17:26,251 --> 00:17:27,750 AUDIENCE: Ne serait-il y avoir une autre? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Une fois de plus? 379 00:17:29,028 --> 00:17:32,444 AUDIENCE: aurait-il pas une autre après la grande vieille si 380 00:17:32,444 --> 00:17:35,519 déclaration [inaudible]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Quelle partie? 382 00:17:36,310 --> 00:17:38,350 Je suis désolé. 383 00:17:38,350 --> 00:17:41,800 >> AUDIENCE: Le parcours, ne devrait pas y avoir un autre? 384 00:17:41,800 --> 00:17:43,550 HANNAH: Vous absolument pourrait avoir un autre. 385 00:17:43,550 --> 00:17:46,930 Parce que je ai le droit de retour là, vous ne avez pas besoin d'un autre. 386 00:17:46,930 --> 00:17:48,760 Mais oui, bonne question. 387 00:17:48,760 --> 00:17:50,170 OK, oui? 388 00:17:50,170 --> 00:17:52,878 AUDIENCE: Pouvons-nous penser de pointeur qui se déplace dans la liste 389 00:17:52,878 --> 00:17:56,610 que de prendre de la valeur de chaque noeud dans la liste? 390 00:17:56,610 --> 00:18:00,650 Ou devrions-nous penser que ce est sorte d'externe à la liste? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Soit on est très bien, je pense. 392 00:18:02,350 --> 00:18:05,880 La façon dont je imagine que ce est Je dis, OK, je suis pointeur. 393 00:18:05,880 --> 00:18:06,520 Et ce est moi. 394 00:18:06,520 --> 00:18:07,150 Ce est ma main. 395 00:18:07,150 --> 00:18:09,960 Je vais pointer vers les différents choses que je veux pour parcourir. 396 00:18:09,960 --> 00:18:12,270 D'abord, je vais pointer à la tête de la liste. 397 00:18:12,270 --> 00:18:14,144 Et qui me dit que je suis va pointer à quatre. 398 00:18:14,144 --> 00:18:18,060 Et moi, étant externe à la liste, Je peux signaler à chacun de ces éléments. 399 00:18:18,060 --> 00:18:19,520 Donc, je pense à moi comme pointeur. 400 00:18:19,520 --> 00:18:21,645 Auditoire: Alors, lorsque vous supprimez l'un de ces éléments, 401 00:18:21,645 --> 00:18:23,404 vous vous supprimez, pour ainsi dire. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Exactement. 403 00:18:24,070 --> 00:18:25,920 Donc vous supprimez la chose vous pointez. 404 00:18:25,920 --> 00:18:28,340 Ainsi, dans l'exemple que nous avons vu où nous en sommes 405 00:18:28,340 --> 00:18:31,670 essayez de supprimer cinq, quand je fais remarquer à cinq, 406 00:18:31,670 --> 00:18:34,200 Je veux supprimer le chose que je suis pointant vers. 407 00:18:34,200 --> 00:18:35,870 Exactement. 408 00:18:35,870 --> 00:18:36,577 Oui? 409 00:18:36,577 --> 00:18:39,410 AUDIENCE: Avons-nous pris soin de la cas où n ne est pas dans la liste? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Si n est pas dans la liste? 411 00:18:40,460 --> 00:18:43,501 Tout ce qui va arriver, ce est que vous êtes aller pour parcourir et itérer 412 00:18:43,501 --> 00:18:47,616 travers, puis, vous allez pour se rendre à pointeur étant nul, 413 00:18:47,616 --> 00:18:48,990 et puis vous allez faire. 414 00:18:48,990 --> 00:18:50,812 >> Auditoire: Alors, avons-nous de retourner quelque chose? 415 00:18:50,812 --> 00:18:51,520 HANNAH: Nous pourrions. 416 00:18:51,520 --> 00:18:54,500 La façon dont il est défini cette fonction, je dis juste qu'il retourne 417 00:18:54,500 --> 00:18:55,770 annuler indépendamment. 418 00:18:55,770 --> 00:18:58,360 Mais vous pourriez avoir quelque chose comme retournant un entier, 419 00:18:58,360 --> 00:19:00,920 et faites-le revenir 1 négative si elle échoue. 420 00:19:00,920 --> 00:19:03,070 Quelque chose comme ça. 421 00:19:03,070 --> 00:19:04,494 Questions with-- oui? 422 00:19:04,494 --> 00:19:05,410 AUDIENCE: [inaudible]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Désolé? 424 00:19:05,993 --> 00:19:07,419 AUDIENCE: [inaudible]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Bien sûr. 426 00:19:07,960 --> 00:19:11,730 Voilà donc le actual-- une fois que nous avons fait tout ce travail de se déplacer 427 00:19:11,730 --> 00:19:16,530 toutes ces flèches autour, toute notre objectif était de se débarrasser du noeud 428 00:19:16,530 --> 00:19:18,230 que nous recherchons. 429 00:19:18,230 --> 00:19:21,610 Donc dans ce cas, libérant pointeur, si je fais remarquer à cinq, 430 00:19:21,610 --> 00:19:24,670 ce est comme l'effacement de ce noeud milieu. 431 00:19:24,670 --> 00:19:27,250 Ce est la partie de pointeur libre. 432 00:19:27,250 --> 00:19:29,090 Ce sens? 433 00:19:29,090 --> 00:19:31,390 >> Auditoire: Alors même pensé vous ne avez pas [inaudible]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Donc, nous avons supposé au début nous avons eu quelques liste qui était already-- 435 00:19:36,060 --> 00:19:37,220 ils avaient mis cela ensemble. 436 00:19:37,220 --> 00:19:39,761 Ainsi, afin de construire cette liste, Ils ont dû [inaudible]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Cool. 439 00:19:42,750 --> 00:19:44,490 Autre chose avec cela? 440 00:19:44,490 --> 00:19:46,386 Oui? 441 00:19:46,386 --> 00:19:49,204 >> AUDIENCE: Que faire si la liste ne est pas égal la ligne nulle? 442 00:19:49,204 --> 00:19:49,704 [Inaudible]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Juste ici? 445 00:19:53,080 --> 00:19:53,840 AUDIENCE: Ouais. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, tout ce que je fais est que je suis seulement de se assurer 447 00:19:57,370 --> 00:20:03,250 avant que je essaie à la liste de déréférencement, avant que je essaie d'accéder à la précédente, 448 00:20:03,250 --> 00:20:07,210 Je tiens à vous assurer que ce ne est pas null si je ne obtiens pas un défaut de seg. 449 00:20:07,210 --> 00:20:08,400 Cool. 450 00:20:08,400 --> 00:20:10,820 >> OK, je sais que ce était tout à fait beaucoup à passer à travers. 451 00:20:10,820 --> 00:20:14,950 Donc cette diapositive sera mis à votre disposition. 452 00:20:14,950 --> 00:20:17,341 Ainsi, vous pouvez passer par là plus en détail. 453 00:20:17,341 --> 00:20:17,841 Oui? 454 00:20:17,841 --> 00:20:19,749 >> AUDIENCE: Pourquoi la liste [inaudible]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Bien sûr. 457 00:20:24,670 --> 00:20:27,390 Donc, la liste fait vraiment cet élément ici, 458 00:20:27,390 --> 00:20:29,200 le premier élément dans la liste. 459 00:20:29,200 --> 00:20:30,748 Donc, il ne peut pas avoir un précédent. 460 00:20:30,748 --> 00:20:31,736 Oui? 461 00:20:31,736 --> 00:20:35,194 >> Public: Est-ce que le point de pointeur à la même adresse dans la mémoire? 462 00:20:35,194 --> 00:20:38,404 Est-il pointer vers le même adresse en mémoire que le noeud 463 00:20:38,404 --> 00:20:40,640 qu'il pointe vers? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Oui, il pointe à ce noeud dans la mémoire. 465 00:20:43,865 --> 00:20:47,190 >> AUDIENCE: Bon, alors lorsque vous [inaudible]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: Dans un sens, oui. 467 00:20:50,580 --> 00:20:51,280 D'ACCORD. 468 00:20:51,280 --> 00:20:52,997 Très bien, passons pair avec cela. 469 00:20:52,997 --> 00:20:55,330 Et si vous avez d'autres questions, rester à la fin, 470 00:20:55,330 --> 00:20:57,130 et nous pouvons aller à travers elle à nouveau. 471 00:20:57,130 --> 00:20:58,120 OK, cool. 472 00:20:58,120 --> 00:21:00,490 Maintenant, nous arrivons à passer aux différentes tables, essais, 473 00:21:00,490 --> 00:21:04,940 et les arbres, que vous avez de super familier avec en p-set de cinq, Speller. 474 00:21:04,940 --> 00:21:11,020 >> Donc tableau hachage est juste une tableau avec les listes simplement liés 475 00:21:11,020 --> 00:21:14,050 ou doublement chaînée listes à venir hors de lui. 476 00:21:14,050 --> 00:21:16,380 Donc, nous avons une sorte de tableau associatif. 477 00:21:16,380 --> 00:21:21,280 Et comment nous savoir lequel de ces tableaux seaux d'entrer dans, 478 00:21:21,280 --> 00:21:24,137 nous utilisons une fonction de hachage. 479 00:21:24,137 --> 00:21:26,470 Donc dans ce cas, quelqu'un peut-il deviner ce que la fonction de hachage 480 00:21:26,470 --> 00:21:28,636 serait juste, fondée sur un certain d'entrée et de sortie? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> PUBLIC: numéro de lettre de l'alphabet. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Exactement. 484 00:21:33,860 --> 00:21:36,160 Il les met seulement dans l'ordre alphabétique. 485 00:21:36,160 --> 00:21:39,280 Tout ce qui commence par une A est placé dans le premier compartiment. 486 00:21:39,280 --> 00:21:43,340 Tout d'un B est mis dans le deuxième godet, ainsi de suite, et ainsi de suite. 487 00:21:43,340 --> 00:21:45,620 Impressionnant, OK. 488 00:21:45,620 --> 00:21:48,980 Et une fonction de hachage est tout fonction qui prend en un mot 489 00:21:48,980 --> 00:21:51,910 et vous dire ce que il appartient au godet. 490 00:21:51,910 --> 00:21:55,150 Alors, qui l'entrée dans notre tableau, il appartient à. 491 00:21:55,150 --> 00:21:58,080 >> Donc, chaque fois que je donne ma hachage fonctionner un mot, 492 00:21:58,080 --> 00:22:00,660 il faut me dire la même placer à chaque fois. 493 00:22:00,660 --> 00:22:03,270 Donc, si nous utilisons la fonction de hachage de la diapositive précédente 494 00:22:03,270 --> 00:22:05,950 où nous sommes le tri par le première lettre de l'alphabet, 495 00:22:05,950 --> 00:22:08,230 chaque fois que je donne ma fonction de hachage "pomme" 496 00:22:08,230 --> 00:22:10,180 il devrait toujours me rendre 0. 497 00:22:10,180 --> 00:22:12,890 Donc, si je ai une pomme de mettre dans ma table de hachage, 498 00:22:12,890 --> 00:22:17,700 si je donne "pomme" à ma fonction de hachage, il devrait dire, allez le mettre dans un seau 0. 499 00:22:17,700 --> 00:22:19,980 Si je suis à la recherche d'un pomme dans ma table de hachage 500 00:22:19,980 --> 00:22:24,340 et je dis, où la force de pomme en direct, vous demandez à votre fonction de hachage. 501 00:22:24,340 --> 00:22:26,900 Et il dit, aller à Bucket 0. 502 00:22:26,900 --> 00:22:29,150 Bien? 503 00:22:29,150 --> 00:22:32,660 Questions avec les fonctions de hachage? 504 00:22:32,660 --> 00:22:34,570 Impressionnant. 505 00:22:34,570 --> 00:22:37,320 >> Voici un peu plus explication détaillée 506 00:22:37,320 --> 00:22:39,570 de ce qu'est une fonction de hachage pourrait ressembler. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Bien. 509 00:22:42,960 --> 00:22:45,960 Maintenant, le problème avec hachage fonctions est dans un monde idéal, 510 00:22:45,960 --> 00:22:48,870 nous ne aurions une chose dans chaque seau. 511 00:22:48,870 --> 00:22:50,900 Mais en réalité, il ya pas un seul mot 512 00:22:50,900 --> 00:22:54,280 qui commence par A. Il n'y a pas un seul mot qui commence par B. Donc, 513 00:22:54,280 --> 00:22:56,960 dans ce cas, si l'on obtenir soudainement "baies" 514 00:22:56,960 --> 00:22:58,710 et nous voulons le mettre dans notre table de hachage, 515 00:22:58,710 --> 00:23:03,640 et nous voyons, oh, non, la banane est déjà là, qu'est-ce qu'on va faire? 516 00:23:03,640 --> 00:23:05,900 >> Eh bien, nous avons deux options. 517 00:23:05,900 --> 00:23:07,990 La première option est sondage linéaire, qui 518 00:23:07,990 --> 00:23:11,100 signifie simplement aller chercher la prochaine seau vide. 519 00:23:11,100 --> 00:23:14,100 Allez trouver le prochain tableau entrée vide. 520 00:23:14,100 --> 00:23:15,750 Et il suffit de mettre "baie" il. 521 00:23:15,750 --> 00:23:18,880 Donc, je sais que ce est censé aller à la banane dans le seau une. 522 00:23:18,880 --> 00:23:22,155 Mais il suffit de mettre dans le seau trois, parce seau trois est vide. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Une autre option est probablement ce que vous implémentez 525 00:23:26,680 --> 00:23:29,220 dans votre p-jeu, où vous eu chaînage séparé. 526 00:23:29,220 --> 00:23:33,990 Donc, chacun de vos seaux, chacun de vos éléments de tableau, 527 00:23:33,990 --> 00:23:38,410 non seulement détient une mots, mais en fait, détient un pointeur vers une liste de mots. 528 00:23:38,410 --> 00:23:41,880 Alors que si vous aviez la banane dans votre table de hachage 529 00:23:41,880 --> 00:23:44,740 et que vous vouliez tout d'un coup ajouter baies, pas de problème. 530 00:23:44,740 --> 00:23:51,110 Il suffit d'ajouter des baies à la fin, ou le début, de votre liste chaînée. 531 00:23:51,110 --> 00:23:54,040 OK, impressionnant. 532 00:23:54,040 --> 00:23:58,490 Questions avec hachage tables avant de continuer? 533 00:23:58,490 --> 00:23:59,850 >> Bien. 534 00:23:59,850 --> 00:24:01,070 Les arbres et les essais. 535 00:24:01,070 --> 00:24:07,980 OK, donc ce était une autre option pour la mise en oeuvre du dictionnaire. 536 00:24:07,980 --> 00:24:09,100 Vous auriez pu faire un essai. 537 00:24:09,100 --> 00:24:13,420 Donc, ce est un type spécial de arbre qui se comporte comme une table de hachage multi-niveaux. 538 00:24:13,420 --> 00:24:16,862 Donc, vous verrez l'image où vous avez un tableau 539 00:24:16,862 --> 00:24:19,320 rappelle à tout un tas de tableaux ce point à un tas de tableaux 540 00:24:19,320 --> 00:24:20,390 ce point à un tas de tableaux. 541 00:24:20,390 --> 00:24:23,140 Et nous verrons exactement ce que ressemblerait sur une lame avenir. 542 00:24:23,140 --> 00:24:26,070 Et, plus généralement, un arbre est ne importe quelle structure de données 543 00:24:26,070 --> 00:24:29,710 dans lequel les données organisée en un certain hiérarchie. 544 00:24:29,710 --> 00:24:32,610 Alors, où nous avons vu que nous avons une sorte de compréhension 545 00:24:32,610 --> 00:24:36,130 d'un haut niveau, un niveau supérieur, un niveau supérieur, un niveau supérieur. 546 00:24:36,130 --> 00:24:39,690 Donc, ce est probablement le plus clair avec quelques exemples spécifiques. 547 00:24:39,690 --> 00:24:40,880 Alors, voici notre arbre. 548 00:24:40,880 --> 00:24:42,970 Vous pouvez voir qu'il a des niveaux particuliers 549 00:24:42,970 --> 00:24:45,480 que nous commencions par ce nœud racine, une. 550 00:24:45,480 --> 00:24:47,640 Et nous pouvons aller à travers notre arbre. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Un arbre binaire est un type particulier d'arbre. 553 00:24:53,910 --> 00:24:56,770 Et la seule spécification pour un arbre binaire 554 00:24:56,770 --> 00:25:01,130 est que chaque noeud a au plus deux feuilles. 555 00:25:01,130 --> 00:25:03,960 Donc, vous ne allez pas voir tout de ces nœuds ont trois ou quatre 556 00:25:03,960 --> 00:25:06,880 ou un nombre différent de feuilles. 557 00:25:06,880 --> 00:25:11,310 Et puis encore plus précis est un arbre binaire de recherche 558 00:25:11,310 --> 00:25:18,010 où chaque noeud à la gauche de la noeud va avoir une valeur plus petite. 559 00:25:18,010 --> 00:25:21,180 Et chaque valeur à la droit va être plus grand. 560 00:25:21,180 --> 00:25:26,900 Donc si vous voyez 44 est à notre racine, vers la gauche, 11, 22 et 33 561 00:25:26,900 --> 00:25:28,940 sont tous inférieurs à notre racine. 562 00:25:28,940 --> 00:25:33,890 Et sur la droite sont tous bigger-- numéros 66, 55, et 77. 563 00:25:33,890 --> 00:25:37,380 Et cette propriété est vrai à chaque niveau de l'arbre. 564 00:25:37,380 --> 00:25:42,690 >> Alors, quand nous descendons 22, 11, et 33, encore 11 565 00:25:42,690 --> 00:25:46,950 est inférieure à 22 et 33 est plus grand que 22. 566 00:25:46,950 --> 00:25:50,160 Et cela rend plus facile à la recherche parce que si nous sommes à la recherche pour un certain nombre, 567 00:25:50,160 --> 00:25:53,877 nous savons exactement ce qui branche à suivre vers le bas. 568 00:25:53,877 --> 00:25:56,210 Donc, ce qui devrait vous rappeler une peu de recherche binaire. 569 00:25:56,210 --> 00:25:56,967 Ouais? 570 00:25:56,967 --> 00:25:58,835 >> Auditoire: Alors, quand vous êtes décrivant binaire, 571 00:25:58,835 --> 00:26:00,587 vous avez dit qu'il a au plus deux feuilles? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 AUDIENCE: Pourrait-il avoir moins? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Ouais. 575 00:26:03,121 --> 00:26:06,720 Donc, disons que, par exemple, vous n'a pas eu un nombre pair de choses 576 00:26:06,720 --> 00:26:11,791 et vous ne pouviez pas remplir tout votre feuilles, il est très bien si l'on a une. 577 00:26:11,791 --> 00:26:12,290 D'ACCORD? 578 00:26:12,290 --> 00:26:12,789 Impressionnant. 579 00:26:12,789 --> 00:26:15,930 D'autres questions sur les arbres? 580 00:26:15,930 --> 00:26:16,670 D'ACCORD. 581 00:26:16,670 --> 00:26:20,110 >> Retour à nos essais que je parlais à propos un peu plus tôt, 582 00:26:20,110 --> 00:26:23,900 comment nous avons ces tableaux multi-niveaux. 583 00:26:23,900 --> 00:26:26,280 Donc dans ce cas, nous commençons au sommet. 584 00:26:26,280 --> 00:26:29,030 Et nous pouvons suivre toute parole donnée bas. 585 00:26:29,030 --> 00:26:30,780 Alors disons que nous voulions pour trouver Turing. 586 00:26:30,780 --> 00:26:34,380 Nous commençons à T, suivez le bas à un tableau qui contient U, 587 00:26:34,380 --> 00:26:37,350 et suivez-le jusqu'à ce que nous atteindre ce petit triangle qui 588 00:26:37,350 --> 00:26:39,060 nous dit, oui, vous avez trouvé un mot. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Effacer le tente? 591 00:26:44,120 --> 00:26:48,138 Tout d'aller là-bas? 592 00:26:48,138 --> 00:26:48,908 Oui? 593 00:26:48,908 --> 00:26:51,866 Public: Est-ce que le symbole du delta doivent occuper l'espace au sein de l'essai? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Ouais, ce ne est pas si même nécessairement besoin d'être un delta. 595 00:26:54,532 --> 00:26:57,760 Mais nous avons besoin d'une certaine façon à raconter notre computer-- désolé, 596 00:26:57,760 --> 00:27:01,130 de sorte que nous savons que TUR ne est pas un mot. 597 00:27:01,130 --> 00:27:04,180 Parce que nous allons dire que nous ne avons pas ce concept d'un delta, ce concept 598 00:27:04,180 --> 00:27:09,850 de félicitations, vous avez trouvé un mot, il serait passer et itérer T-U-R, 599 00:27:09,850 --> 00:27:11,300 puis dire, génial, je l'ai trouvé! 600 00:27:11,300 --> 00:27:12,670 Il doit être un mot. 601 00:27:12,670 --> 00:27:13,720 Mais ce est vraiment pas. 602 00:27:13,720 --> 00:27:15,310 Nous voulons ensemble Turing soit un mot. 603 00:27:15,310 --> 00:27:17,760 Donc, nous devons avoir quelque chose à la fin qui dit, félicitations, 604 00:27:17,760 --> 00:27:19,051 vous avez trouvé un mot légitime. 605 00:27:19,051 --> 00:27:21,680 AUDIENCE: Donc, si vous aviez comme 26 lettres de l'alphabet, 606 00:27:21,680 --> 00:27:24,560 auriez-vous fait 27 touches dans votre essai? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, ouais. 608 00:27:26,010 --> 00:27:28,210 Donc en fait, je pense que sera sur la diapositive suivante. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Où si vous avez un noeud dans votre essai, vous êtes 611 00:27:32,880 --> 00:27:35,800 va avoir 27 enfants au lieu de 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Vous avez des questions à ce sujet? 614 00:27:40,050 --> 00:27:40,550 Ouais? 615 00:27:40,550 --> 00:27:44,569 AUDIENCE: Pourquoi essais prennent donc beaucoup d'espace [inaudible] que vous allez? 616 00:27:44,569 --> 00:27:47,629 Pourquoi est-il considéré comme [inaudible]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Bien sûr. 618 00:27:48,170 --> 00:27:48,790 Revenons. 619 00:27:48,790 --> 00:27:52,350 La question est, pourquoi sont essaie tellement plus grand 620 00:27:52,350 --> 00:27:54,620 que quelque chose comme une table de hachage. 621 00:27:54,620 --> 00:27:57,790 Donc, pour chacun de ces niveaux, même se ils ne sont pas établis ici, 622 00:27:57,790 --> 00:28:01,250 vous devez avoir tous les 26 caractères. 623 00:28:01,250 --> 00:28:04,420 Et la raison pour laquelle vous ne pouvez pas dis, oh, mais comme pour Turing, je 624 00:28:04,420 --> 00:28:07,570 ne ont pas besoin d'avoir un quelconque de ceux mêmes choses sur le niveau de U. Eh bien, 625 00:28:07,570 --> 00:28:11,390 si tout à coup vous vouliez ajouter quelque chose qui était comme T-H, 626 00:28:11,390 --> 00:28:14,800 vous aurez besoin d'avoir la possibilité d'ajouter ce mot. 627 00:28:14,800 --> 00:28:17,330 Donc, pour chaque lettre, vous allez avoir 628 00:28:17,330 --> 00:28:19,730 d'avoir un tas de tableaux à venir hors de lui. 629 00:28:19,730 --> 00:28:24,060 Donc vous pouvez voir comment il obtiendrait vraiment grand, vraiment rapide. 630 00:28:24,060 --> 00:28:26,560 D'autres questions? 631 00:28:26,560 --> 00:28:28,980 Bien. 632 00:28:28,980 --> 00:28:29,832 Ouais? 633 00:28:29,832 --> 00:28:33,210 >> PUBLIC: Quand les essais plus vite que les tables de hachage? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Quand les essais plus vite que les tables de hachage? 635 00:28:36,280 --> 00:28:39,120 Donc, si vous aviez une très mauvaise fonction de hachage. 636 00:28:39,120 --> 00:28:41,840 Alors disons que je étais comme, voici votre fonction de hachage. 637 00:28:41,840 --> 00:28:43,660 Peu importe quel mot vous me donnez, je suis toujours 638 00:28:43,660 --> 00:28:47,740 va mettre en entrée de gamme 0. 639 00:28:47,740 --> 00:28:52,000 Et si nous nous retrouvons avec juste de mettre tout dans un gros longue liste liée. 640 00:28:52,000 --> 00:28:58,740 Et donc un temps recherche prendrait au pire n si ce est à la fin de notre liste. 641 00:28:58,740 --> 00:29:03,150 Avec l'essai, nous avons juste à itérer à travers les lettres dans le mot. 642 00:29:03,150 --> 00:29:07,080 Donc, même si nous avons ajouté un tas plusieurs mots à notre essai, 643 00:29:07,080 --> 00:29:09,620 il ne serait pas nous prendre plus de temps de trouver un mot en particulier. 644 00:29:09,620 --> 00:29:11,750 >> Tout ce que nous avons à faire est, pour Ainsi, dans ce cas, 645 00:29:11,750 --> 00:29:17,170 disons que nous sommes à la recherche pour le zoom, nous aurions juste à parcourir 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, quatre lettres. 647 00:29:19,840 --> 00:29:22,250 Donc, ce est juste la longueur du mot zoom. 648 00:29:22,250 --> 00:29:25,400 Il ne importe pas combien de plus de mots que nous mis dans cette tentative. 649 00:29:25,400 --> 00:29:30,225 Nous pouvons toujours obtenir dans ces quatre étapes. 650 00:29:30,225 --> 00:29:31,215 Impressionnant. 651 00:29:31,215 --> 00:29:32,205 Oui? 652 00:29:32,205 --> 00:29:34,185 >> Auditoire: Alors, [inaudible] est un tableau, non? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 AUDIENCE: Si vous êtes la recherche de [inaudible], 655 00:29:37,155 --> 00:29:40,929 voulez-vous avoir à passer par votre tableau pour trouver [inaudible]? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Bien sûr. 657 00:29:41,470 --> 00:29:44,000 AUDIENCE: Cela ne prend plus de temps? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Si je vais dire que mon tableau est toujours 659 00:29:46,370 --> 00:29:49,250 va être A, B, C, D, E, F, G, bla bla bla, 660 00:29:49,250 --> 00:29:51,630 donc si je sais toujours que ce est dans le même ordre, 661 00:29:51,630 --> 00:29:53,880 si je sais toujours que ce est par ordre alphabétique, 662 00:29:53,880 --> 00:29:57,860 Je peux juste dire O est le numéro telle et telle chose dans l'alphabet. 663 00:29:57,860 --> 00:29:59,620 Juste passer à cet endroit. 664 00:29:59,620 --> 00:30:01,860 Car ne oubliez pas, avec tableaux, nous pouvons accéder 665 00:30:01,860 --> 00:30:06,590 tout élément de ce tableau en constante temps si nous savons où nous sommes à la recherche. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Ouais? 668 00:30:09,580 --> 00:30:12,005 >> AUDIENCE: Sur la précédente glisser [inaudible] 27, 669 00:30:12,005 --> 00:30:14,430 mais 26 pour le premier. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Désolé? 671 00:30:15,400 --> 00:30:18,800 >> AUDIENCE: est pas la première une 0, donc ça ne serait pas 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Bien sûr, quand nous disons 27, ce est va nous donner des indices de 0 à 26. 673 00:30:24,900 --> 00:30:28,220 Mais si vous avez réellement compter ceux sur, il va y avoir 27. 674 00:30:28,220 --> 00:30:30,007 Bonne question. 675 00:30:30,007 --> 00:30:30,590 Rien d'autre? 676 00:30:30,590 --> 00:30:31,200 Ouais? 677 00:30:31,200 --> 00:30:34,420 >> Auditoire: Alors essais sont plus lent que les tables de hachage? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Essais vont être, en théorie, plus vite que les tables de hachage 679 00:30:37,920 --> 00:30:39,760 mais prennent plus de mémoire. 680 00:30:39,760 --> 00:30:40,534 Ouais? 681 00:30:40,534 --> 00:30:41,450 AUDIENCE: [inaudible]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Je suis désolé, je ne vous entends pas. 684 00:30:47,484 --> 00:30:48,400 AUDIENCE: [inaudible]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0-25 vous donne 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0-25 serait vous donner 26, à droite. 688 00:30:56,958 --> 00:30:58,457 >> AUDIENCE: Et puis [inaudible]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Droit. 690 00:30:59,040 --> 00:31:04,760 Ainsi, le nombre nous précisant est le nombre de choses dans notre tableau. 691 00:31:04,760 --> 00:31:07,260 Donc, si nous avons 27, il est va nous donner 0 692 00:31:07,260 --> 00:31:10,620 par 26, ce qui donnera chambre nous pour, dans ce cas, 693 00:31:10,620 --> 00:31:12,770 Je ne suis pas y compris une apostrophe. 694 00:31:12,770 --> 00:31:17,040 Donc, nous obtenons 0 à 25 sont les 26 premières lettres de l'alphabet, 695 00:31:17,040 --> 00:31:18,990 ou tous les 26 lettres de l'alphabet. 696 00:31:18,990 --> 00:31:21,190 Et puis ce dernier chose, à l'entrée 26, est 697 00:31:21,190 --> 00:31:24,598 va être le chèque marque, le delta. 698 00:31:24,598 --> 00:31:26,960 Rien d'autre? 699 00:31:26,960 --> 00:31:29,130 Impressionnant. 700 00:31:29,130 --> 00:31:30,020 Je ai perdu mon espace. 701 00:31:30,020 --> 00:31:31,020 OK, cool. 702 00:31:31,020 --> 00:31:33,240 >> Donc nous avons déjà abordé ce. 703 00:31:33,240 --> 00:31:37,430 Mais le grand compromis entre essais et tables de hachage 704 00:31:37,430 --> 00:31:39,720 est qui tente prévoient, en l'aspect théorique constante jusqu'à 705 00:31:39,720 --> 00:31:42,890 fois, mais utilisent beaucoup de mémoire. 706 00:31:42,890 --> 00:31:46,495 Très bien, maintenant nous avons légèrement structures moins complexes, 707 00:31:46,495 --> 00:31:49,640 et nous allons être fait avec C, et nous allons passer à droite le long. 708 00:31:49,640 --> 00:31:51,930 >> Donc, piles, nous avons vu ce en conférence où vous 709 00:31:51,930 --> 00:31:55,020 avoir quelque chose comme un pile de plateaux où 710 00:31:55,020 --> 00:31:57,330 la dernière chose que vous mettez sur la pile qui se passe 711 00:31:57,330 --> 00:31:59,500 d'être la première chose que vous enlevez. 712 00:31:59,500 --> 00:32:02,880 Donc, ce est ce qui définit vraiment une pile ce est que la dernière chose que vous mettre sur 713 00:32:02,880 --> 00:32:06,080 va être le premier chose que vous décoller. 714 00:32:06,080 --> 00:32:09,279 Et la terminologie que nous utilisons si nous allons mettre quelque chose, 715 00:32:09,279 --> 00:32:12,070 si nous allons ajouter quelque chose à notre pile, nous appelons cela de pousser. 716 00:32:12,070 --> 00:32:14,970 Et si nous prenons quelque chose hors, nous l'appelons popping. 717 00:32:14,970 --> 00:32:17,080 Et si nous allons mettre en oeuvre une pile, nous 718 00:32:17,080 --> 00:32:20,660 besoin d'être sûr de garder une trace de la taille et la capacité. 719 00:32:20,660 --> 00:32:24,940 Ainsi, le nombre total d'éléments que nous pouvons tenir et le nombre actuel d'éléments 720 00:32:24,940 --> 00:32:27,880 que nous tenons. 721 00:32:27,880 --> 00:32:29,885 >> Et de manière très similaire, nous avons files d'attente. 722 00:32:29,885 --> 00:32:34,510 La seule différence est au lieu d'avec piles, 723 00:32:34,510 --> 00:32:37,630 nous avons dit la dernière chose que nous mettons sur est la première chose que nous décollons. 724 00:32:37,630 --> 00:32:40,940 Donc, avec les files d'attente, la première chose que nous avons mis en 725 00:32:40,940 --> 00:32:43,129 va être le première chose que nous emporter. 726 00:32:43,129 --> 00:32:45,420 Donc, ce est comme si vous êtes fait la queue dans un magasin 727 00:32:45,420 --> 00:32:48,140 et vous êtes étant aidé, alors la première personne en ligne 728 00:32:48,140 --> 00:32:50,880 devrait être la première personne à être aidé. 729 00:32:50,880 --> 00:32:52,220 Ce serait donc une file d'attente. 730 00:32:52,220 --> 00:32:55,880 >> Nous avons donc besoin de garder une trace de la la taille, la capacité et la tête puisque nous sommes 731 00:32:55,880 --> 00:33:01,130 va prendre tout le monde par l'avant de la liste au lieu de l'arrière. 732 00:33:01,130 --> 00:33:03,480 Questions à ce sujet? 733 00:33:03,480 --> 00:33:06,330 Toutes les questions de C qui vous dérangent? 734 00:33:06,330 --> 00:33:09,590 Les structures de données, rien de tout cela amusant? 735 00:33:09,590 --> 00:33:10,530 Très bien, cool. 736 00:33:10,530 --> 00:33:14,120 Donc, je vais céder la parole à Alison à sauter dans un peu plus de la programmation. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Oh, nous allons voir. 738 00:33:15,965 --> 00:33:17,370 Nous allons voir comment bien que je fais ici. 739 00:33:17,370 --> 00:33:21,410 OK, je vais essayer et voler par le biais de ce genre de choses, les gars. 740 00:33:21,410 --> 00:33:24,540 Hannah se est très en approfondie sur toutes ses choses. 741 00:33:24,540 --> 00:33:26,900 Je vais essayer de donner vous un aperçu de souffle rapide 742 00:33:26,900 --> 00:33:31,290 afin que nous puissions rendre à Davin avec tout les JavaScript et sécurité choses amusantes 743 00:33:31,290 --> 00:33:33,380 que peut-être vous avez réellement veulent en savoir plus sur. 744 00:33:33,380 --> 00:33:36,600 >> OK, comme le dit Hannah, si vous avez des questions, 745 00:33:36,600 --> 00:33:39,170 Je vais trop vite, se il vous plaît, laissez-moi savoir. 746 00:33:39,170 --> 00:33:42,114 Je vais répondre aux questions que nécessaire. 747 00:33:42,114 --> 00:33:45,280 Donc, pour commencer, nous allons commencer avec probablement l'une des premières choses 748 00:33:45,280 --> 00:33:48,730 vous avez appris avec web programmation, autorisations. 749 00:33:48,730 --> 00:33:52,720 Donc chmod, vous les gars aurait dû être maîtres cela avec tout le web 750 00:33:52,720 --> 00:33:54,870 la programmation que vous avez été fait ces derniers temps. 751 00:33:54,870 --> 00:33:57,320 Il est fondamentalement juste une commande qui change les autorisations 752 00:33:57,320 --> 00:34:00,779 ou les autorisations d'accès de nos objets du système de fichiers. 753 00:34:00,779 --> 00:34:02,570 Bien entendu, pour réellement voir ceux-ci, si vous êtes 754 00:34:02,570 --> 00:34:04,910 ayant aucun problème avec ces lors de vos ensembles de problèmes, 755 00:34:04,910 --> 00:34:11,460 vous avez peut-être utilisé ls -l, qui est long, pour obtenir la vue un peu comme cela, 756 00:34:11,460 --> 00:34:14,209 où vous voyez en fait tout les autorisations pour un fichier. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> Et vraiment, nous allons juste aller travers assez rapidement juste joli 759 00:34:20,732 --> 00:34:21,940 bien ce que chacun de ces moyennes. 760 00:34:21,940 --> 00:34:24,481 Donc, nous avons d ici, qui juste représente le répertoire. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 De toute évidence ici, nous voyons rwx, qui est lisible, inscriptible et exécutable. 763 00:34:31,739 --> 00:34:37,090 Celles-ci pourraient aussi être représentés comme des bits, que nous allons entrer dans la page suivante. 764 00:34:37,090 --> 00:34:40,699 Donc chaque triade que nous avons vu ici, ce est donc trois triades. 765 00:34:40,699 --> 00:34:48,120 Nous avons rwx, rien r x et r x rien pour ce premier fichier. 766 00:34:48,120 --> 00:34:49,690 Ce est cette structure générale. 767 00:34:49,690 --> 00:34:50,940 >> Donc, nous avons un répertoire. 768 00:34:50,940 --> 00:34:53,999 Nous avons un certain groupe d'utilisateurs avec ces autorisations. 769 00:34:53,999 --> 00:34:57,040 Certains groupe qui a ces autorisations, et un monde qui a une permission. 770 00:34:57,040 --> 00:34:59,420 Vous pouvez penser de ces derniers comme une triade. 771 00:34:59,420 --> 00:35:01,130 Vous pouvez penser de ces que trois bits. 772 00:35:01,130 --> 00:35:04,060 Ainsi, ils peuvent contenir des valeurs ne importe où de 0 773 00:35:04,060 --> 00:35:07,350 à 7, qui est pourquoi parfois nous avions vous faites chmod 774 00:35:07,350 --> 00:35:17,510 600 au lieu de chmod rw que ce soit. 775 00:35:17,510 --> 00:35:19,170 Nous allons entrer dans un exemple il. 776 00:35:19,170 --> 00:35:24,260 Mais fondamentalement, vous pouvez penser d'entre eux comme soit juste rwx, 777 00:35:24,260 --> 00:35:28,520 ou vous pouvez penser à eux comme certains numéro où cette première personne ici 778 00:35:28,520 --> 00:35:31,480 représente un nombre compris entre 0 et 7, cette seconde une 779 00:35:31,480 --> 00:35:33,970 représente un nombre compris entre 0 et 7, et le troisième 780 00:35:33,970 --> 00:35:38,245 représente un nombre compris entre 0 et 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r a une valeur de 4. w a une valeur de 2, et x 782 00:35:42,700 --> 00:35:49,230 a une valeur de 1, ce est pourquoi ce la permission ici serait chmod 700. 783 00:35:49,230 --> 00:35:53,520 Parce que dans ce cas-ci, il nous dit ont le premier bit, il est retourné sur. 784 00:35:53,520 --> 00:35:55,380 Nous avons donc 4 pour la lecture. 785 00:35:55,380 --> 00:35:58,730 Le second bit est retournée pendant w, qui est deux, alors maintenant nous avons six. 786 00:35:58,730 --> 00:36:02,070 Et le troisième bit est renversé sur pour x, qui est une, donc nous obtenons sept. 787 00:36:02,070 --> 00:36:04,820 Et bien sûr, notre groupe et notre monde sont chacun 0. 788 00:36:04,820 --> 00:36:07,770 Ce est donc aussi la équivalent de chmod 700. 789 00:36:07,770 --> 00:36:12,081 Et je voudrais certainement essayer de comprendre la correspondance entre celles-ci. 790 00:36:12,081 --> 00:36:14,080 Je ne sais pas si elle a monter sur un quiz avant, 791 00:36:14,080 --> 00:36:18,590 mais il serait question que je pourrais demander. 792 00:36:18,590 --> 00:36:22,110 >> Juste un peu d'aller encore plus loin dans chmod ici, ici 793 00:36:22,110 --> 00:36:27,730 est très général structure d'un appel chmod. 794 00:36:27,730 --> 00:36:29,500 Alors bien sûr, nous avons chmod ici. 795 00:36:29,500 --> 00:36:34,410 Références, ce que cela fait référence est qui sommes-nous donnons ces autorisations à 796 00:36:34,410 --> 00:36:36,570 ou qui sont nous prenons ces autorisations loin de. 797 00:36:36,570 --> 00:36:44,330 Donc, nous avons un ici dans les autorisations, comme si nous vous avons donné chmod a plus x, 798 00:36:44,330 --> 00:36:45,440 comme nous le verrons bientôt. 799 00:36:45,440 --> 00:36:48,460 un signifie simplement donner à ces spécifique autorisations à tous. 800 00:36:48,460 --> 00:36:49,600 Donnez-leur à tous. 801 00:36:49,600 --> 00:36:55,370 Ainsi, vous pouvez très bien avoir u plus x g ou plus x ou o plus x ou multiple 802 00:36:55,370 --> 00:36:55,870 de celui-ci. 803 00:36:55,870 --> 00:36:59,280 Alors que la première partie est toujours va être des références. 804 00:36:59,280 --> 00:37:03,220 Qui sommes nous donner ces autorisations à, ou qui sont nous les éloigne de? 805 00:37:03,220 --> 00:37:04,850 >> Le second est l'opérateur. 806 00:37:04,850 --> 00:37:07,350 Alors vous les gars ont surtout traité plus. 807 00:37:07,350 --> 00:37:12,140 Cela donne des autorisations à qui que vous êtes en leur donnant, 808 00:37:12,140 --> 00:37:14,840 alors que moins, logiquement, les supprime. 809 00:37:14,840 --> 00:37:16,880 Donc rien de trop terrible là-bas. 810 00:37:16,880 --> 00:37:23,060 Et puis modes est ce que nous avons parlé à la lecture, l'écriture ou d'exécution. 811 00:37:23,060 --> 00:37:29,070 Ainsi, un plus x signifie donner exécutable autorisations à tous. 812 00:37:29,070 --> 00:37:33,430 Et puis, bien sûr, sur lequel fichier ou répertoire spécifique. 813 00:37:33,430 --> 00:37:33,980 D'ACCORD? 814 00:37:33,980 --> 00:37:36,010 Tout le monde bien avec chmod? 815 00:37:36,010 --> 00:37:37,850 Pas trop mal? 816 00:37:37,850 --> 00:37:42,417 >> OK, donc HTML, aucun d'entre vous sont assez vieux to-- MySpace âge? 817 00:37:42,417 --> 00:37:44,750 Je ai envoyé à mon article, et littéralement la moitié des personnes 818 00:37:44,750 --> 00:37:45,790 m'a regardé comme si je étais fou. 819 00:37:45,790 --> 00:37:47,498 Et je étais comme, les gars, nous ne sommes pas si vieux. 820 00:37:47,498 --> 00:37:48,910 Allons. 821 00:37:48,910 --> 00:37:53,360 Donc HyperText Markup Language, Honnêtement, ce est juste une façon pour vous 822 00:37:53,360 --> 00:37:57,990 pour afficher certaines choses sur le web. 823 00:37:57,990 --> 00:37:59,210 Donc, ce est un langage de balisage. 824 00:37:59,210 --> 00:38:00,640 Ce ne est pas un langage de script. 825 00:38:00,640 --> 00:38:02,160 Il n'y a aucune logique en elle. 826 00:38:02,160 --> 00:38:05,710 Il se agit simplement de changer le façon dont quelque chose est affiché. 827 00:38:05,710 --> 00:38:07,670 OK, donc ce est important distinction à faire. 828 00:38:07,670 --> 00:38:12,030 Il est considéré comme un langage de balisage, pas un langage de script. 829 00:38:12,030 --> 00:38:15,100 >> Nous avons donc ici nos balises HTML. 830 00:38:15,100 --> 00:38:20,390 Sur cette diapositive, sont probablement la plupart des ceux que vous devez être familier avec 831 00:38:20,390 --> 00:38:22,390 et être vraiment à l'aise avec. 832 00:38:22,390 --> 00:38:25,700 Alors, évidemment, nous avons notre balise HTML, qui 833 00:38:25,700 --> 00:38:29,930 désigne que tout dans entre ces deux aura HTML. 834 00:38:29,930 --> 00:38:33,070 Nous avons un lien, qui évidemment vous donnera 835 00:38:33,070 --> 00:38:34,990 un lien vers une page web externe. 836 00:38:34,990 --> 00:38:37,520 Certains titres, au sein de notre siège ici. 837 00:38:37,520 --> 00:38:40,020 Et nous avons notre corps avec h1, qui est un en-tête, 838 00:38:40,020 --> 00:38:42,260 donc il va faire beau et audacieux et plus grand. 839 00:38:42,260 --> 00:38:46,040 Et puis, nous avons une certaine p, qui est un paragraphe. 840 00:38:46,040 --> 00:38:49,000 Vous devriez probablement savoir et se familiariser avec les choses 841 00:38:49,000 --> 00:38:54,030 comme la façon dont vous insérez une image, sont Y at-il d'autres classes d'en-tête? 842 00:38:54,030 --> 00:38:57,240 Je voudrais certainement être à l'aise avec div. 843 00:38:57,240 --> 00:39:00,840 Donc, ceux-ci ont la majorité des balises que vous devez être familier avec. 844 00:39:00,840 --> 00:39:04,370 Mais bien sûr, comme avec tout dans CS 50, la liste ne est pas exhaustive. 845 00:39:04,370 --> 00:39:08,200 Donc, assurez-vous vous brossez à ce sujet. 846 00:39:08,200 --> 00:39:13,260 >> CSS, CSS donc, si l'un de vous regarder mon séminaire d'il ya deux semaines, 847 00:39:13,260 --> 00:39:16,250 est vraiment juste une façon au style de votre page web? 848 00:39:16,250 --> 00:39:18,950 OK, donc nous avons un langage de balisage. 849 00:39:18,950 --> 00:39:23,220 HTML, qui prend soin de tout le texte et où il pourrait être sur la page. 850 00:39:23,220 --> 00:39:25,760 Mais CSS est vraiment ce qui rend assez. 851 00:39:25,760 --> 00:39:30,690 Vous pourriez avoir dans votre code HTML fichiers, mais comme nous allons parler plus tard, 852 00:39:30,690 --> 00:39:32,660 Je suis sûr qu'il pourrait soit la diapositive suivante, il 853 00:39:32,660 --> 00:39:35,620 est de pratique courante, et en fait pratique que nous encourageons vraiment, 854 00:39:35,620 --> 00:39:40,670 pour vous de garder les séparaient lorsque nous parler MVC et que tout le paradigme. 855 00:39:40,670 --> 00:39:42,490 Ce est vraiment ce que cela alimente. 856 00:39:42,490 --> 00:39:46,110 >> Donc CSS est juste une façon de rendre les choses jolies. 857 00:39:46,110 --> 00:39:50,500 Les choses ici, comme corps et #title et .info, 858 00:39:50,500 --> 00:39:54,340 ceux-ci sont appelés sélecteurs et ce ils le font, ce est qu'ils choisissent des choses spécifiques 859 00:39:54,340 --> 00:39:59,260 au sein de votre fichier HTML et appliquer ne importe quel style, 860 00:39:59,260 --> 00:40:04,090 tout ce genre de choses que vous voulez, à cet élément spécifique de votre site Web 861 00:40:04,090 --> 00:40:04,590 page. 862 00:40:04,590 --> 00:40:08,820 Donc ici, nous avons une couleur de fond et une couleur 863 00:40:08,820 --> 00:40:12,450 et une famille de police qui est d'être appliqué à ce qui est dans le corps. 864 00:40:12,450 --> 00:40:15,530 Donc, si nous avons regardé en arrière ici, ce ne se appliquerait pas au titre. 865 00:40:15,530 --> 00:40:22,340 Il ne se appliquerait à ce qui est dans ces sélecteurs de corps, OK? 866 00:40:22,340 --> 00:40:25,250 >> Avec le titre ici, ce est va être la même chose, 867 00:40:25,250 --> 00:40:28,410 la couleur du texte étant bleu va seulement 868 00:40:28,410 --> 00:40:33,870 d'affecter ce qui est en les sélecteurs de titre. 869 00:40:33,870 --> 00:40:36,580 Ainsi que des informations ici, le texte sera rose, 870 00:40:36,580 --> 00:40:38,600 de quel que soit le information, qui est ici. 871 00:40:38,600 --> 00:40:40,860 Donc, la seule chose qui serait rose sur cette page 872 00:40:40,860 --> 00:40:44,100 est la date, le lundi 17 Novembre 2014. 873 00:40:44,100 --> 00:40:48,770 OK, donc CSS est juste une façon de avoir plus de contrôle over-- oui? 874 00:40:48,770 --> 00:40:51,850 >> AUDIENCE: Pourquoi avez-vous d'utiliser le hachage avec le titre? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: Diapositive suivante, promis! 876 00:40:55,170 --> 00:40:56,810 Nous y arriverons. 877 00:40:56,810 --> 00:40:59,830 Donc, ce est pourquoi nous devons utiliser hachage. 878 00:40:59,830 --> 00:41:03,429 Donc sélecteurs prennent trois principaux formes que nous parlons à vous les gars environ. 879 00:41:03,429 --> 00:41:05,595 Je fyou veux en savoir plus, il ya beaucoup là-bas. 880 00:41:05,595 --> 00:41:07,540 Il ya une grande documentation CSS. 881 00:41:07,540 --> 00:41:12,680 Il ya un nom de tag, ce qui a à faire avec seulement vos balises HTML normales. 882 00:41:12,680 --> 00:41:17,210 Donc, p h1, h2, div, ces sortes de choses. 883 00:41:17,210 --> 00:41:20,320 Et nous pouvons simplement nommer ceux comme ce est. 884 00:41:20,320 --> 00:41:22,650 Donc, comme nous le voyons ici avec corps, ce est une étiquette normale. 885 00:41:22,650 --> 00:41:26,660 Ainsi, nous pouvons simplement mettre corps quand nous parlons dans notre fichier CSS. 886 00:41:26,660 --> 00:41:29,730 >> Avec titre, toute la raison nous ont ce hachage est ce que nous avons est 887 00:41:29,730 --> 00:41:31,010 considéré comme un ID. 888 00:41:31,010 --> 00:41:35,400 Ainsi, un ID doit toujours être unique dans votre page HTML 889 00:41:35,400 --> 00:41:37,930 de sorte que lorsque vous êtes se référant à elle, vous 890 00:41:37,930 --> 00:41:41,990 savez que vous êtes seulement référence à une chose spécifique. 891 00:41:41,990 --> 00:41:46,270 Donc dans ce cas ici, avec notre h1 ici, CS 50 session d'examen, 892 00:41:46,270 --> 00:41:47,810 nous avons une id du titre. 893 00:41:47,810 --> 00:41:54,280 Ainsi, afin de simplement se référer à cette morceau de notre HTML, nous faisons un titre de hachage. 894 00:41:54,280 --> 00:41:58,080 Juste par convention, les ID sont désignés avec un hachage en face d'eux. 895 00:41:58,080 --> 00:42:01,650 De la même façon, on voit infos ici est une classe. 896 00:42:01,650 --> 00:42:06,070 Et ainsi de classe avec CSS est désignée comme une classe dot 897 00:42:06,070 --> 00:42:08,895 ou un point quelle que soit cette classe est. 898 00:42:08,895 --> 00:42:10,850 Donc dans ce cas là, ce est info. 899 00:42:10,850 --> 00:42:13,090 >> Donc, je le reprends. 900 00:42:13,090 --> 00:42:16,200 Ces deux serait rose pour notre CSS ici 901 00:42:16,200 --> 00:42:18,430 parce qu'ils ont tous les deux une classe d'info. 902 00:42:18,430 --> 00:42:23,070 Et dans notre fichier CSS, nous avons désigné que ne importe quoi avec une classe de l'info 903 00:42:23,070 --> 00:42:24,120 est rose. 904 00:42:24,120 --> 00:42:25,968 Est-ce logique? 905 00:42:25,968 --> 00:42:27,435 Oui? 906 00:42:27,435 --> 00:42:30,731 >> AUDIENCE: Si vous deviez faire tout dans le blanc de corps, 907 00:42:30,731 --> 00:42:32,814 et puis vous essayez de faire quelque chose de l'intérieur bleu, 908 00:42:32,814 --> 00:42:34,770 serait-ce causer des problèmes? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: Donc CSS est feuilles de style en cascade. 910 00:42:37,310 --> 00:42:40,730 Donc tout ce qui est vers le fond aura préséance. 911 00:42:40,730 --> 00:42:44,080 Donc, si vous faites quelque chose avec le corps, et vous faites tout ce blanc, 912 00:42:44,080 --> 00:42:49,300 puis plus tard vous changez le titre ou si vous modifiez le texte dans le corps, 913 00:42:49,300 --> 00:42:50,560 il remplace cela. 914 00:42:50,560 --> 00:42:55,360 Donc tout vers le fond aura préséance. 915 00:42:55,360 --> 00:42:56,730 Oui? 916 00:42:56,730 --> 00:42:59,627 >> Audience: et IDS sont uniques, mais les classes peuvent être plus? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Droit. 918 00:43:00,210 --> 00:43:06,320 Donc ID doivent être uniques, et les classes peuvent reportez-vous à autant de choses que vous le souhaitez. 919 00:43:06,320 --> 00:43:07,580 D'autres questions? 920 00:43:07,580 --> 00:43:09,800 Oui. 921 00:43:09,800 --> 00:43:11,210 >> AUDIENCE: [inaudible]. 922 00:43:11,210 --> 00:43:13,509 Je me demande si cela fait une différence. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Je suis désolé, quelle était la question? 924 00:43:15,217 --> 00:43:18,960 PUBLIC: Il est petit «F» et le capital "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: Donc, la différence entre petit "f" et le capital "F" 926 00:43:21,440 --> 00:43:22,606 ne devrait pas faire une différence. 927 00:43:22,606 --> 00:43:26,330 Donc, "f" sera de toute façon 15. 928 00:43:26,330 --> 00:43:28,130 Cool, autre chose? 929 00:43:28,130 --> 00:43:29,930 Tout le monde bon, CSS? 930 00:43:29,930 --> 00:43:30,850 Oui? 931 00:43:30,850 --> 00:43:31,790 >> AUDIENCE: Désolé. 932 00:43:31,790 --> 00:43:35,550 Pouvez-vous avoir une classe et un ID? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Oui, vous le pouvez. 934 00:43:38,030 --> 00:43:40,420 Les choses peuvent avoir à la fois une classe et un ID. 935 00:43:40,420 --> 00:43:44,670 Et je recommande fortement tester ceux-ci sur votre propre. 936 00:43:44,670 --> 00:43:50,480 CSS vous apprendrez meilleur juste en faisant quelque chose, page Web très simple, 937 00:43:50,480 --> 00:43:53,440 élaborer un peu de CSS, et juste voir comment ils interagissent. 938 00:43:53,440 --> 00:43:56,970 Et vous gagnerez un très bon, sens intuitif pour savoir comment cela fonctionne. 939 00:43:56,970 --> 00:43:58,810 >> OK, tout le monde bien avec CSS? 940 00:43:58,810 --> 00:44:01,280 Vous allez tous à faire beaux sites avec CSS maintenant. 941 00:44:01,280 --> 00:44:05,460 OK, les meilleures pratiques, tout simplement choses à garder à l'esprit, des choses 942 00:44:05,460 --> 00:44:09,810 that-- ce est pourquoi nous accostons vous pour designer et autres joyeusetés. 943 00:44:09,810 --> 00:44:11,820 Donc fermer toutes vos balises HTML. 944 00:44:11,820 --> 00:44:14,840 Donc si vous avez un corps ouvert, il devrait y avoir un corps à proximité. 945 00:44:14,840 --> 00:44:18,180 Si vous avez un paragraphe ouverte, il devrait y avoir un paragraphe à proximité. 946 00:44:18,180 --> 00:44:19,555 Vérifiez votre page valide. 947 00:44:19,555 --> 00:44:23,330 Vous devriez être très familier avec du P-set sept 948 00:44:23,330 --> 00:44:26,350 avec CS 50 finances avec le validateur W3. 949 00:44:26,350 --> 00:44:28,340 Et comme je le disais avant, l'un de nos grands paradigmes 950 00:44:28,340 --> 00:44:33,780 est la séparation de votre style avec CSS à partir de votre balisage, qui est HTML. 951 00:44:33,780 --> 00:44:36,900 Et puis, bien sûr, nous avons ce grand XKCD ici. 952 00:44:36,900 --> 00:44:38,280 Yay, comique! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Entre ceux-ci et HTTP, fondamentalement, ils sont tous les deux protocoles. 955 00:44:44,650 --> 00:44:46,810 Ainsi, vous pouvez suffit de penser d'entre eux comme un ensemble de règles 956 00:44:46,810 --> 00:44:50,110 qui régissent comment les choses déplacer à travers l'Internet. 957 00:44:50,110 --> 00:44:53,410 Donc contrôle de transmission protocole ou un protocole Internet, 958 00:44:53,410 --> 00:44:57,280 est juste une façon de se assurer que les données obtient où il va 959 00:44:57,280 --> 00:45:00,030 et que nous savons si nous sommes jamais données manquantes. 960 00:45:00,030 --> 00:45:03,520 Donc, si vous les gars repense à conférences un il ya quelques semaines avec David 961 00:45:03,520 --> 00:45:06,980 où nous avons eu quatre enveloppes, ils ont tous été numérotée comme l'un des quatre, 962 00:45:06,980 --> 00:45:11,300 deux de quatre, trois des quatre, quatre de quatre, ce est juste un ensemble de règles. 963 00:45:11,300 --> 00:45:13,830 Nous avons dit, OK, chaque fois que nous sommes envoi de plus d'un paquet, 964 00:45:13,830 --> 00:45:16,610 nous allons numéroter avec ce nombre il est 965 00:45:16,610 --> 00:45:19,040 et le nombre total qui l'utilisateur doit obtenir. 966 00:45:19,040 --> 00:45:22,540 >> Et ce ne est que celui qui dit reçoit les données qu'ils 967 00:45:22,540 --> 00:45:26,120 ont obtenu tout, ou si quelque chose se est perdu en cours de route. 968 00:45:26,120 --> 00:45:28,840 Et ils ont besoin de le demander à nouveau. 969 00:45:28,840 --> 00:45:31,140 Ce est vraiment juste un ensemble de règles. 970 00:45:31,140 --> 00:45:33,650 Voilà comment vous pouvez penser, OK? 971 00:45:33,650 --> 00:45:37,700 Et aussi, il spécifie le port, qui vous les gars can-- Je sais cours conférence, 972 00:45:37,700 --> 00:45:39,170 ils avaient toute une liste de ports. 973 00:45:39,170 --> 00:45:41,630 Mais nous ne les avons pas ici en ce moment. 974 00:45:41,630 --> 00:45:45,290 >> Protocole de transfert hypertexte Donc est, encore une fois, ce est un autre protocole. 975 00:45:45,290 --> 00:45:48,630 Donc, ce est un autre ensemble de règles qui régissent, dans ce cas, 976 00:45:48,630 --> 00:45:51,130 comment hypertexte est transféré. 977 00:45:51,130 --> 00:45:54,340 Ainsi, il permet juste navigateurs de parler à des serveurs Web. 978 00:45:54,340 --> 00:45:56,910 Et comme nous l'avons dit ici, ce est comme prise de contact humain. 979 00:45:56,910 --> 00:46:00,480 Ce est juste une façon de gouverner la manière dont le serveur Web est 980 00:46:00,480 --> 00:46:02,690 va interagir avec votre navigateur. 981 00:46:02,690 --> 00:46:05,660 Et nous avons juste quelques exemples. 982 00:46:05,660 --> 00:46:09,100 Nous avons des demandes ici où est la méthode GET. 983 00:46:09,100 --> 00:46:13,760 Nous avons HTTP 1.1, qui est version du protocole pour nous. 984 00:46:13,760 --> 00:46:17,230 Ensuite, l'hôte, ce qui est nous sommes en train d'essayer d'accéder. 985 00:46:17,230 --> 00:46:21,800 Et puis, comme vous le voyez ici, nous obtenir des réponses à cette 200 986 00:46:21,800 --> 00:46:25,032 OK que notre code de réponse HTTP. 987 00:46:25,032 --> 00:46:27,240 Nous avons une grande liste que je vais de remonter en une seconde 988 00:46:27,240 --> 00:46:29,430 que vous les gars doivent se familiariser avec. 989 00:46:29,430 --> 00:46:35,750 Et nous avons ce type de contenu text / html, qui dit exactement ce type de données 990 00:46:35,750 --> 00:46:39,990 recevons-nous à partir du serveur, OK? 991 00:46:39,990 --> 00:46:44,230 Cet hôte et ce type de contenu font partie des en-têtes HTTP. 992 00:46:44,230 --> 00:46:49,610 Vous pouvez avoir aussi peu ou aussi peu que nécessaire pour le contexte de ce 993 00:46:49,610 --> 00:46:50,580 vous faites affaire avec. 994 00:46:50,580 --> 00:46:53,371 Parfois, vous aurez beaucoup de informations provenant de votre serveur. 995 00:46:53,371 --> 00:46:56,040 Peut-être qu'ils demandant beaucoup des informations de l'utilisateur. 996 00:46:56,040 --> 00:46:57,600 Elle varie en fonction du contexte. 997 00:46:57,600 --> 00:47:01,144 Si vous regardez CS 50 étude, il ya beaucoup plus à ce sujet. 998 00:47:01,144 --> 00:47:03,060 Mais nous avons beaucoup à faire à travers, donc je vais 999 00:47:03,060 --> 00:47:05,760 pour aller à droite à l'avance si ce est OK avec vous les gars? 1000 00:47:05,760 --> 00:47:07,960 Cool. 1001 00:47:07,960 --> 00:47:08,460 Attendez. 1002 00:47:08,460 --> 00:47:11,182 Je ai certainement que Liste complète de-- hein! 1003 00:47:11,182 --> 00:47:13,140 Je ne sais pas pourquoi ce est tout le chemin ici. 1004 00:47:13,140 --> 00:47:15,660 Je ai pensé que je ai littéralement déménagé pendant que je étais sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN: Voulez-vous enseigner? 1006 00:47:16,540 --> 00:47:17,420 Ou voulez-vous me l'enseigner? 1007 00:47:17,420 --> 00:47:20,010 >> PUBLIC: Je pensais que nous pourrions juste leur montrer pour commencer. 1008 00:47:20,010 --> 00:47:22,210 Je veux dire, vous pouvez aller dans les plus loin, mais je 1009 00:47:22,210 --> 00:47:26,030 pensé qu'il était plus logique puisque je vient parler états HTTP. 1010 00:47:26,030 --> 00:47:28,200 Alors, voici la liste complète. 1011 00:47:28,200 --> 00:47:31,730 Je suppose que ce qui va arriver, ce est Davin va aller en eux plus tard. 1012 00:47:31,730 --> 00:47:35,330 Mais il ya toute une liste, une aperçu du goût à venir. 1013 00:47:35,330 --> 00:47:41,640 OK, nous allons blow-- cela va être un cours intensif de PHP comme aucun autre. 1014 00:47:41,640 --> 00:47:44,874 >> Donc, PHP, préprocesseur hypertexte, ce est un backronym récursive, 1015 00:47:44,874 --> 00:47:46,540 ce qui signifie qu'il a été nommé autre chose. 1016 00:47:46,540 --> 00:47:49,050 Et puis ils étaient comme, cette n'a pas vraiment de sens. 1017 00:47:49,050 --> 00:47:52,210 Donc ils ont juste nommés it-- et ce était un acronyme, 1018 00:47:52,210 --> 00:47:54,840 donc ils ont juste fait qu'il PHP préprocesseur hypertexte, qui 1019 00:47:54,840 --> 00:47:55,980 juste n'a pas de sens. 1020 00:47:55,980 --> 00:47:57,714 Histoire amusante. 1021 00:47:57,714 --> 00:47:58,880 Ce est un langage de programmation. 1022 00:47:58,880 --> 00:48:02,360 Donc, autant que je souligne que HTML ne est pas un langage de programmation, 1023 00:48:02,360 --> 00:48:05,350 ce est le langage de balisage, un PHP est un langage de programmation. 1024 00:48:05,350 --> 00:48:07,422 Comment vous savez que ce est parce qu'il est logique. 1025 00:48:07,422 --> 00:48:08,380 Il ya conditionnelles. 1026 00:48:08,380 --> 00:48:12,750 Nous avons des variables, alors que nous avoir aucune de ces choses en HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Très bien, alors nous avons ce petit peu ici ce est comme un avant-goût de PHP. 1028 00:48:16,960 --> 00:48:20,510 Donc bases, les noms de variables commencer par un signe de dollar. 1029 00:48:20,510 --> 00:48:21,500 Beaucoup de gens aiment ça. 1030 00:48:21,500 --> 00:48:22,371 Rappelle nous de l'argent. 1031 00:48:22,371 --> 00:48:22,995 Ce est génial. 1032 00:48:22,995 --> 00:48:25,280 Nous voulons tous PHP. 1033 00:48:25,280 --> 00:48:28,020 Donc, nous ne spécifions pas un le type de plus variable. 1034 00:48:28,020 --> 00:48:29,995 Il est déterminé au moment de l'exécution. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 L'interprète sera comme, oh, nous allons simplement parcourons, 1037 00:48:35,890 --> 00:48:39,565 et en fonction du contexte, nous allons voir quels types de types 1038 00:48:39,565 --> 00:48:41,560 ces variables doivent avoir. 1039 00:48:41,560 --> 00:48:42,815 Il n'y a pas la fonction principale. 1040 00:48:42,815 --> 00:48:43,690 Les choses vont tout simplement de fonctionner. 1041 00:48:43,690 --> 00:48:47,851 Vous les gars avec votre importation dans votre p-set dernière, vous noterez. 1042 00:48:47,851 --> 00:48:49,350 Il ne était pas vraiment une fonction principale. 1043 00:48:49,350 --> 00:48:52,070 Vous venez d'écrire ce que vous vouliez arriver. 1044 00:48:52,070 --> 00:48:53,280 Et ce juste genre de qui se est passé. 1045 00:48:53,280 --> 00:48:56,760 Donc, ce est PHP pour vous. 1046 00:48:56,760 --> 00:48:59,180 >> Les tableaux sont très similaires. 1047 00:48:59,180 --> 00:49:01,270 Nous avons encore cette tranche. 1048 00:49:01,270 --> 00:49:05,940 Ici, nous avons une variable arr appelé, et ce est l'égalité 1049 00:49:05,940 --> 00:49:08,540 to-- nous avons notre normale notation crochets. 1050 00:49:08,540 --> 00:49:10,630 Et nous avons une certaine valeur de la clé. 1051 00:49:10,630 --> 00:49:14,630 Et la grande différence entre C et PHP tableaux 1052 00:49:14,630 --> 00:49:19,330 ce est que nous pouvons avoir cette associate-- nous pouvons associer des valeurs aux touches. 1053 00:49:19,330 --> 00:49:22,440 Ainsi, au lieu d'avoir juste un tableau qui est indexé 1054 00:49:22,440 --> 00:49:26,630 par le nombre ou la position de cet élément dans la matrice, 1055 00:49:26,630 --> 00:49:29,060 nous pouvons associer avec une clé. 1056 00:49:29,060 --> 00:49:36,700 Où nous pouvons dire, OK, je veux tout valeur est associée avec des fruits. 1057 00:49:36,700 --> 00:49:39,280 Et peut-être que nous avons fruits allé à la banane. 1058 00:49:39,280 --> 00:49:41,760 Donc, ce serait revenir banane pour nous. 1059 00:49:41,760 --> 00:49:44,100 >> Mais fondamentalement, le plus puissante chose à ce sujet 1060 00:49:44,100 --> 00:49:47,960 ce est que si vous les gars me souviens de la démo de conférence où nous avons essentiellement 1061 00:49:47,960 --> 00:49:53,050 Speller réécrit en PHP, et il recherche était-- était vraiment comme, 1062 00:49:53,050 --> 00:49:55,007 cette clé ne existe? 1063 00:49:55,007 --> 00:49:56,590 Ce est vraiment gentil de la puissance de celui-ci. 1064 00:49:56,590 --> 00:49:58,560 Vous ne avez pas besoin d'itérer à travers votre réseau. 1065 00:49:58,560 --> 00:50:00,311 Vous ne avez pas besoin de savoir ce est dans l'espace. 1066 00:50:00,311 --> 00:50:01,976 Il peut se agir, à la fin ou le début. 1067 00:50:01,976 --> 00:50:04,790 Tant que vous connaissez la clé qui est associé à la valeur, 1068 00:50:04,790 --> 00:50:09,740 PHP peut simplement cracher cette valeur Arrière droit sur vous, OK? 1069 00:50:09,740 --> 00:50:12,960 >> Et puis, nous avons aussi juste avoir juste parce que nous 1070 00:50:12,960 --> 00:50:16,750 peut avoir des paires de valeurs clés ne signifie pas que vous devez. 1071 00:50:16,750 --> 00:50:19,180 Vous pouvez aussi créer un tableau normal comme ici, 1072 00:50:19,180 --> 00:50:21,540 en bas, où il est un seul, deux, trois, quatre. 1073 00:50:21,540 --> 00:50:22,510 Ce sont nos valeurs. 1074 00:50:22,510 --> 00:50:25,320 Et en fait, leurs clés sont les indices. 1075 00:50:25,320 --> 00:50:26,830 Donc, la clé pour une serait zéro. 1076 00:50:26,830 --> 00:50:28,610 La clé pour deux serait une. 1077 00:50:28,610 --> 00:50:31,910 Ainsi de suite et ainsi de suite, à moins que vous affectez explicitement une clé, 1078 00:50:31,910 --> 00:50:34,630 vous pourriez penser que le valeur est juste leur index. 1079 00:50:34,630 --> 00:50:37,290 Cela fait-il sens pour tout le monde? 1080 00:50:37,290 --> 00:50:38,070 Pas de questions? 1081 00:50:38,070 --> 00:50:38,930 Impressionnant. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach est une façon de itérer sur vos tableaux. 1083 00:50:44,420 --> 00:50:47,490 Donc, nous avons quelque chose ici, juste la structure générale. 1084 00:50:47,490 --> 00:50:51,020 Donc foreach, le nom de notre tableau, comme tout 1085 00:50:51,020 --> 00:50:53,930 vous voulez appeler chaque élément dans votre tableau, 1086 00:50:53,930 --> 00:50:57,270 et nous pouvons faire quelque chose avec cet élément ou à cette valeur. 1087 00:50:57,270 --> 00:50:58,680 Donc, nous avons un exemple ici. 1088 00:50:58,680 --> 00:51:05,770 Nous avons un associative tableau avec ces deux entrées 1089 00:51:05,770 --> 00:51:10,080 avec bar étant associé à foo et qux étant associé à baz. 1090 00:51:10,080 --> 00:51:12,180 Donc touches sont foo et baz. 1091 00:51:12,180 --> 00:51:13,650 Les valeurs sont bar et qux. 1092 00:51:13,650 --> 00:51:18,560 Donc foreach, nous avons notre tableau ici, comme la paire de valeur de clé. 1093 00:51:18,560 --> 00:51:21,560 Cela nous permet d'accéder à la fois la clé et la valeur. 1094 00:51:21,560 --> 00:51:23,680 Peut-être vous voulez juste la valeur, auquel cas 1095 00:51:23,680 --> 00:51:27,640 vous pouvez simplement faire comme arr que $ valeur, et puis vous 1096 00:51:27,640 --> 00:51:30,640 sont tout simplement accéder à la valeur comme vous itérer. 1097 00:51:30,640 --> 00:51:32,600 Mais peut-être, pour certains raison, vous voulez la clé, 1098 00:51:32,600 --> 00:51:35,460 ce est pourquoi je ai choisi cet exemple à la place. 1099 00:51:35,460 --> 00:51:40,240 Donc vous pouvez réellement manipuler clé et la valeur dans ce cas. 1100 00:51:40,240 --> 00:51:41,070 D'ACCORD? 1101 00:51:41,070 --> 00:51:41,905 Question? 1102 00:51:41,905 --> 00:51:44,279 >> AUDIENCE: Si vous vouliez juste manipuler la clé, serait 1103 00:51:44,279 --> 00:51:45,910 vous avez à faire foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Droit. 1105 00:51:47,360 --> 00:51:50,560 Donc, si vous vouliez manipuler simplement la clé, 1106 00:51:50,560 --> 00:51:53,680 vous auriez encore besoin de cette syntaxe parce que si vous venez 1107 00:51:53,680 --> 00:51:56,930 avoir arr comme quelque chose, comme une chose, ce est 1108 00:51:56,930 --> 00:52:00,070 vais supposer que vous voulez la valeur, et non pas sur la touche. 1109 00:52:00,070 --> 00:52:06,780 Donc si jamais vous avez juste comme arr que, peut-être, ce est comme $ element, 1110 00:52:06,780 --> 00:52:11,670 il va supposer que vous vous posez pour seulement la valeur à chaque point. 1111 00:52:11,670 --> 00:52:13,879 Si vous voulez explicitement faire quelque chose avec la clé, 1112 00:52:13,879 --> 00:52:16,170 même si vous ne allez pas faire quelque chose avec la valeur, 1113 00:52:16,170 --> 00:52:18,430 vous avez besoin de cette structure que nous avons ici 1114 00:52:18,430 --> 00:52:22,330 où vous demandant explicitement à la fois pour la clé et la valeur. 1115 00:52:22,330 --> 00:52:24,170 Grande question. 1116 00:52:24,170 --> 00:52:25,940 Rien d'autre? 1117 00:52:25,940 --> 00:52:27,490 Cool. 1118 00:52:27,490 --> 00:52:29,911 >> Tous droits, PHP et HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, nous sommes de retour à la p-régler à nouveau sept. 1120 00:52:31,410 --> 00:52:35,380 Donc, ce devrait ressembler un peu familier. 1121 00:52:35,380 --> 00:52:41,760 Donc, ce est une certaine forme de HTML simple qui a un nom d'entrée de bonjour. 1122 00:52:41,760 --> 00:52:43,820 Et nous voir, nous avons notre méthode de GET. 1123 00:52:43,820 --> 00:52:47,430 Et si nous nous souvenons de notre p-jeu, Lorsque ce formulaire est soumis, 1124 00:52:47,430 --> 00:52:58,130 il envoie un tableau appelé $ _GET qui a l'ensemble de ces entrées ou des variables de 1125 00:52:58,130 --> 00:53:00,490 la forme qui devrait être manipulé dans notre PHP. 1126 00:53:00,490 --> 00:53:03,320 Donc dans ce cas, l'utilisateur mettrait en leur nom. 1127 00:53:03,320 --> 00:53:04,370 Ils soumettent. 1128 00:53:04,370 --> 00:53:07,810 Et nous voyons que nous obtenons d'un tableau ici. 1129 00:53:07,810 --> 00:53:09,080 Nous avons notre réseau de GET. 1130 00:53:09,080 --> 00:53:11,510 Et nous accédons le nom. 1131 00:53:11,510 --> 00:53:15,070 >> Donc, qui dit, OK, donne-moi la valeur qui est associée avec le nom, 1132 00:53:15,070 --> 00:53:16,550 nommer étant la clé ici. 1133 00:53:16,550 --> 00:53:21,400 Et que les cartes directement à ce que nous avons dit notre nom de l'entrée est. 1134 00:53:21,400 --> 00:53:28,960 Donc, ce est de vous donner la clé de ce va être dans votre tableau ici. 1135 00:53:28,960 --> 00:53:31,220 Cela fait-il sens pour tout le monde? 1136 00:53:31,220 --> 00:53:32,070 Oui? 1137 00:53:32,070 --> 00:53:36,240 >> AUDIENCE: Le nom se réfère GET pour la ligne violette dans [inaudible]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: Elle se réfère à cela ici. 1139 00:53:37,740 --> 00:53:43,840 Donc ce domaine ici, il se réfère à ce nom ici. 1140 00:53:43,840 --> 00:53:47,800 Donc, cela aurait pu être nommé comme le numéro de téléphone, ou autre chose. 1141 00:53:47,800 --> 00:53:51,790 Ce nom dit réellement, ce appelez-vous ce domaine? 1142 00:53:51,790 --> 00:53:53,600 Comment allez-vous reportez-vous à ce domaine? 1143 00:53:53,600 --> 00:53:57,670 Et ce nom est réellement comme, nous sommes dire ce domaine est appelé nom. 1144 00:53:57,670 --> 00:53:59,224 Voilà comment nous allons y accéder. 1145 00:53:59,224 --> 00:54:02,070 >> Auditoire: Alors, ça ressemble, nom de l'entrée est égale à Bob, et-- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: Oui, alors vous Bob obtiendrait là-bas. 1147 00:54:04,380 --> 00:54:06,090 Exactement. 1148 00:54:06,090 --> 00:54:07,800 Tout le monde cool? 1149 00:54:07,800 --> 00:54:10,990 Très bien, alors GET rapport POST, ce sont les deux façons principales 1150 00:54:10,990 --> 00:54:14,880 que nous passons données dans une requête HTTP. 1151 00:54:14,880 --> 00:54:17,370 Les gars, vous devriez avoir vu ces deux espoir. 1152 00:54:17,370 --> 00:54:20,940 Donc, avec GET, les informations est passée à travers l'URL. 1153 00:54:20,940 --> 00:54:23,490 Donc si jamais vous faites Google Recherches, YouTube, vous aurez 1154 00:54:23,490 --> 00:54:25,130 remarquerez probablement un certain point d'interrogation. 1155 00:54:25,130 --> 00:54:28,230 Et puis, tous les mots que vous venez de mettre là-dedans. 1156 00:54:28,230 --> 00:54:31,410 Et POST transmet les données dans le corps du message HTTP. 1157 00:54:31,410 --> 00:54:36,922 Donc, contrairement à GET, vous sorte de considérer que les données est masqué à l'utilisateur. 1158 00:54:36,922 --> 00:54:38,630 Mais ce qui est vraiment important de comprendre 1159 00:54:38,630 --> 00:54:44,040 est qu'il se agit toujours tout comme l'insécurité que GET. 1160 00:54:44,040 --> 00:54:48,780 L'analogie que je aime utiliser est si vous avez votre numéro de compte bancaire 1161 00:54:48,780 --> 00:54:52,795 et vous écrivez à l'extérieur de une enveloppe, qui est assez dangereux. 1162 00:54:52,795 --> 00:54:55,920 Si vous deviez écrire sur un morceau de papier et le mettre dans l'enveloppe, 1163 00:54:55,920 --> 00:54:58,850 ce est toujours très dangereux en raison tout ce que vous avez à faire est d'ouvrir que jusqu'à 1164 00:54:58,850 --> 00:55:03,480 et de regarder le contenu réel du message de voir que. 1165 00:55:03,480 --> 00:55:08,310 Donc, ce est «caché», et les gens aiment pense que ce est sûr, mais ce est vraiment pas. 1166 00:55:08,310 --> 00:55:11,000 Et je suis sûr sera Davin entrer dans ce plus, peut-être. 1167 00:55:11,000 --> 00:55:12,850 Mais elle est importante distinction à faire 1168 00:55:12,850 --> 00:55:15,820 et quelque chose de vraiment intéressant pour comprendre. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Tous les trucs que nous avons vu jusqu'à récemment! 1171 00:55:22,220 --> 00:55:25,400 Donc, il est fondamentalement juste conçu, De toute évidence, pour la gestion des données. 1172 00:55:25,400 --> 00:55:30,560 Vous avez eu beaucoup d'expérience avec dans vos tables avec PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 Et il ya quatre requêtes communes vous les gars que nous voulons savoir. 1174 00:55:34,100 --> 00:55:37,304 Donc, il ya update, insert, sélectionner et supprimer. 1175 00:55:37,304 --> 00:55:38,970 Donc, assurez-vous que vous savez ceux qui vraiment bien. 1176 00:55:38,970 --> 00:55:40,960 Nous allons aller à travers eux très vite. 1177 00:55:40,960 --> 00:55:44,340 >> Donc, mettre à jour, vraiment, que ce vous pourriez penser que ce est le cas, 1178 00:55:44,340 --> 00:55:46,740 il met à jour simplement les données dans votre base de données. 1179 00:55:46,740 --> 00:55:48,750 Nous avons donc quelques exemples ici. 1180 00:55:48,750 --> 00:55:53,310 Ce est le grand structure d'une requête de mise à jour. 1181 00:55:53,310 --> 00:55:56,150 Donc, nous mettons à jour la table que nous parlons. 1182 00:55:56,150 --> 00:56:00,520 Et nous voulons mettre certaine valeurs, certaines colonnes 1183 00:56:00,520 --> 00:56:02,600 égale à des valeurs spécifiques. 1184 00:56:02,600 --> 00:56:07,500 Donc, ce jour tout le tableau, changer valeurs dans toutes les lignes dans ce cas. 1185 00:56:07,500 --> 00:56:13,690 Donc, dans ce une ici, une réelle exemple, nous avons insert-- désolé. 1186 00:56:13,690 --> 00:56:17,630 Ce Advanced Slide sans me en rendre compte. 1187 00:56:17,630 --> 00:56:22,230 >> Donc, ce tableau de mises à jour mis col1 égale à val1 où équivaut maison "Currier." 1188 00:56:22,230 --> 00:56:25,300 Que celui-ci ne est il ne change, il ne 1189 00:56:25,300 --> 00:56:28,130 met à jour ces valeurs dans des endroits spécifiques. 1190 00:56:28,130 --> 00:56:32,300 Donc, dans ce premier, il change ces valeurs pour tout dans votre table, 1191 00:56:32,300 --> 00:56:32,860 D'ACCORD? 1192 00:56:32,860 --> 00:56:35,820 Il va changer cette colonne pour chaque entrée unique, 1193 00:56:35,820 --> 00:56:37,020 pour chaque rangée. 1194 00:56:37,020 --> 00:56:40,840 Mais celui-ci où, vous pourriez penser que ce est un qualificatif. 1195 00:56:40,840 --> 00:56:44,020 Donc, il va seulement changer dans des endroits très spécifiques. 1196 00:56:44,020 --> 00:56:47,840 Donc, en p-set sept, lorsque vous peut-être mis à jour le montant des liquidités 1197 00:56:47,840 --> 00:56:53,050 que votre utilisateur a, vous avez probablement eu certains où ID est égal à l'ID de session, non? 1198 00:56:53,050 --> 00:56:55,280 >> Parce que vous ne vouliez pas modifier le montant des liquidités 1199 00:56:55,280 --> 00:56:57,630 pour chaque personne qui a été l'utilisation de votre site web. 1200 00:56:57,630 --> 00:57:00,480 Vous vouliez changer pour une personne en particulier, cette personne étant 1201 00:57:00,480 --> 00:57:02,410 celui qui était l'aide à ce moment. 1202 00:57:02,410 --> 00:57:04,320 Droite? 1203 00:57:04,320 --> 00:57:07,510 OK, donc insérer, insert certaines valeurs dans des tables. 1204 00:57:07,510 --> 00:57:11,650 Ce est comme lorsque vous êtes la création d'un nouvel utilisateur de la marque. 1205 00:57:11,650 --> 00:57:14,240 La structure générale ici est d'insérer dans tout ce tableau 1206 00:57:14,240 --> 00:57:15,680 nous parlons. 1207 00:57:15,680 --> 00:57:18,910 Valeurs, étant les valeurs qui nous voulons effectivement à insérer. 1208 00:57:18,910 --> 00:57:23,060 OK, alors que nous voyons ici, nous ont insérer dans le tableau. 1209 00:57:23,060 --> 00:57:27,790 Il se agit des colonnes spécifiques avec leurs valeurs correspondaient. 1210 00:57:27,790 --> 00:57:29,940 Donc, cela dit, insert une nouvelle ligne contenant 1211 00:57:29,940 --> 00:57:33,660 valeurs val1 et val2 sous ces colonnes spécifiques. 1212 00:57:33,660 --> 00:57:39,240 >> Alors peut-être vous ne voulez combler sur la moitié des choses de cette ligne. 1213 00:57:39,240 --> 00:57:41,150 Ce est ce que cette partie vous permet de faire ici. 1214 00:57:41,150 --> 00:57:43,280 Il vous permet effectivement déterminer quelle partie. 1215 00:57:43,280 --> 00:57:44,244 Oui? 1216 00:57:44,244 --> 00:57:52,150 >> AUDIENCE: Pouvez-vous seulement [inaudible] cellules de la ligne [inaudible]? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: Si vous ne remplissez certaines parties de votre ligne, 1218 00:57:55,000 --> 00:57:57,480 le reste de ces cellules ne sont que vide. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Tant que vous leur permettre de être vide, ce ne est pas un problème. 1221 00:58:05,660 --> 00:58:09,570 Si vous tentez d'y accéder, ce est va revenir un élément vide. 1222 00:58:09,570 --> 00:58:13,850 Mais il est important de savoir que, dans certaines tables, 1223 00:58:13,850 --> 00:58:16,690 Ils doivent être autorisés à être nulle. 1224 00:58:16,690 --> 00:58:18,890 Vous avez peut-être fonctionner dans un problème lors de votre p-set 1225 00:58:18,890 --> 00:58:21,320 parce que nous ne avons pas laissé toute de vos valeurs NULL. 1226 00:58:21,320 --> 00:58:26,110 Mais vous pouvez spécifier une valeur facultative dans votre table. 1227 00:58:26,110 --> 00:58:29,640 >> OK, sélectionnez, ce est donc juste une façon d'obtenir 1228 00:58:29,640 --> 00:58:33,790 des données spécifiques d'une table au un quelconque identificateur que vous voulez. 1229 00:58:33,790 --> 00:58:37,990 Donc, sélectionnez étoiles de table où col égal quelque chose signifie juste, 1230 00:58:37,990 --> 00:58:43,820 me donner toutes les données associées où cette colonne spécifique est vrai. 1231 00:58:43,820 --> 00:58:49,020 Donc, la star dans ce cas sera retourner la ligne entière à vous, OK? 1232 00:58:49,020 --> 00:58:54,880 >> Et puis, dans ce cas, sélectionnez étoiles à partir de tableau vous donne juste la table entière. 1233 00:58:54,880 --> 00:58:58,940 Et puis, supprimer toute évidence, ce est juste supprime la ligne de la table. 1234 00:58:58,940 --> 00:59:01,320 Donc supprimer de table, quelle que soit la table nous sommes 1235 00:59:01,320 --> 00:59:06,830 référencement, où certains sont spécifiques identifiant ou une condition est vraie. 1236 00:59:06,830 --> 00:59:07,720 Oui? 1237 00:59:07,720 --> 00:59:08,700 >> AUDIENCE: Question. 1238 00:59:08,700 --> 00:59:10,699 Pourquoi êtes-vous en utilisant le double citations, et si vous 1239 00:59:10,699 --> 00:59:13,600 faire guillemets doubles ou simples citations, cela fait-il une différence? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: guillemets doubles ou simples ne fait pas de différence dans SQL. 1241 00:59:18,235 --> 00:59:19,610 Je ai cru voir une autre question. 1242 00:59:19,610 --> 00:59:20,814 Oui? 1243 00:59:20,814 --> 00:59:25,070 >> Public: Est-ce qu'il ne affecte pas ce obtient échappé de la requête? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Qu'entendez-vous par échappé de la requête? 1246 00:59:31,410 --> 00:59:36,870 >> AUDIENCE: Si quelqu'un a un requête unique sous la forme de-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Si quelqu'un devait mettre une apostrophe dans, 1248 00:59:39,862 --> 00:59:43,560 alors tant que vous désinfection votre entrée, il n'a pas d'importance. 1249 00:59:43,560 --> 00:59:46,205 Mais si vous utilisez un seul devis et vous êtes mal 1250 00:59:46,205 --> 00:59:47,914 échapper à vos entrées, alors oui, ils ont besoin 1251 00:59:47,914 --> 00:59:51,079 de mettre un seul devis afin de briser votre code. si vous utilisez des guillemets doubles, 1252 00:59:51,079 --> 00:59:53,580 ils ont besoin de mettre une double citer à briser votre code. 1253 00:59:53,580 --> 00:59:56,163 Mais tant que vous échapper des choses correctement, il n'a pas d'importance. 1254 00:59:56,163 --> 00:59:59,220 Il va juste être traduits le symbole correct de toute manière. 1255 00:59:59,220 --> 01:00:02,332 >> Public: Qu'est-ce que signifie évasion? 1256 01:00:02,332 --> 01:00:04,040 ALISON: Eh bien, comme désinfection et d'évasion. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 L'examen que nous avons, la grande XKCD comique qu'ils tirer vers le haut où vous avez, 1259 01:00:13,820 --> 01:00:15,629 OH- 1260 01:00:15,629 --> 01:00:16,670 ROB: Ce est la dernière diapositive. 1261 01:00:16,670 --> 01:00:18,500 ALISON: Ce est la dernière diapositive, vraiment? 1262 01:00:18,500 --> 01:00:20,200 Oh mon Dieu. 1263 01:00:20,200 --> 01:00:21,780 Il nous allons, parfait. 1264 01:00:21,780 --> 01:00:27,900 OK, donc en gros, vous pouvez injecter quelque chose dans cette requête SQL 1265 01:00:27,900 --> 01:00:30,560 où il brise le code, ou comme David a montré 1266 01:00:30,560 --> 01:00:38,460 en classe, si nous avons un unique citant une est égal à 1 et si dans notre code, 1267 01:00:38,460 --> 01:00:41,230 nous suffit de copier directement que, et nous avons une apostrophe de fin, 1268 01:00:41,230 --> 01:00:44,740 ce qui se passe est que nous obtenons une expression que 1269 01:00:44,740 --> 01:00:48,680 évalue à vrai que sera laisser quelqu'un entrer dans notre base de données 1270 01:00:48,680 --> 01:00:51,720 et obtenir des données que nous ne veulent pas qu'ils obtiennent. 1271 01:00:51,720 --> 01:00:54,240 Donc, les entrées d'assainissement signifie simplement se assurer 1272 01:00:54,240 --> 01:00:57,680 que nous échappons ces personnages et les désignant 1273 01:00:57,680 --> 01:01:01,720 que caractères et non les choses qui devraient être acceptés 1274 01:01:01,720 --> 01:01:04,990 être pris littéralement comme notre instruction SQL. 1275 01:01:04,990 --> 01:01:09,980 >> Ainsi, la grande chose que nous dit que vous les gars devraient utiliser 1276 01:01:09,980 --> 01:01:13,650 étaient HTML caractères spéciaux, qui est quelque chose 1277 01:01:13,650 --> 01:01:15,730 que vous voudrez peut-être jeter un oeil à. 1278 01:01:15,730 --> 01:01:17,240 OK, supprimer. 1279 01:01:17,240 --> 01:01:19,450 Les types de données, tout cela sera en ligne. 1280 01:01:19,450 --> 01:01:23,510 Depuis que nous avons 15 minutes à gauche, je suis juste aller droit à travers cela. 1281 01:01:23,510 --> 01:01:28,500 PHP et SQL, essentiellement ce est juste que nous avions une fonction de requête qui 1282 01:01:28,500 --> 01:01:31,520 a aidé à protéger contre ces attaques malveillantes. 1283 01:01:31,520 --> 01:01:33,970 Donc, lorsque vous utilisez requête, nous veillons 1284 01:01:33,970 --> 01:01:36,560 que les choses ont été désinfectés et autres joyeusetés. 1285 01:01:36,560 --> 01:01:41,070 >> MVC est juste un paradigme de conception, afin modèle, vue, contrôleur. 1286 01:01:41,070 --> 01:01:44,200 Ce est juste une façon de garder les choses agréable et diviser de la même manière 1287 01:01:44,200 --> 01:01:47,100 que nous avons tendance à tenir Code à en fonctions. 1288 01:01:47,100 --> 01:01:53,390 Ce est juste un cadre de conception de sites Web qui vous permet de faire la même chose. 1289 01:01:53,390 --> 01:01:54,760 Je vais passer cette étape. 1290 01:01:54,760 --> 01:01:58,530 >> Ce est quelque chose que je serait super confortable avec. 1291 01:01:58,530 --> 01:02:01,132 Ce est une grande petite table il. 1292 01:02:01,132 --> 01:02:03,090 Il vous donne la fonction exemple du modèle. 1293 01:02:03,090 --> 01:02:05,473 Je vais à travers ce parce que je Davin veulent vraiment être en mesure de parler. 1294 01:02:05,473 --> 01:02:07,140 Si vous avez des questions, se il vous plaît sentir libre. 1295 01:02:07,140 --> 01:02:07,931 Je serai là après. 1296 01:02:07,931 --> 01:02:10,360 Il suffit de venir me parler. 1297 01:02:10,360 --> 01:02:13,380 Avec cela, nous avons statuts HTTP. 1298 01:02:13,380 --> 01:02:16,270 Et Davin va exploser par ce en 15 minutes. 1299 01:02:16,270 --> 01:02:17,560 Cela va être génial. 1300 01:02:17,560 --> 01:02:18,893 >> DAVIN: OK. 1301 01:02:18,893 --> 01:02:20,312 Euh, votre micro? 1302 01:02:20,312 --> 01:02:22,210 Ouais. 1303 01:02:22,210 --> 01:02:23,336 Désolé. 1304 01:02:23,336 --> 01:02:24,460 ALISON: façon de se préparer. 1305 01:02:24,460 --> 01:02:25,335 DAVIN: Non, je suis prêt. 1306 01:02:25,335 --> 01:02:25,860 Je suis prêt. 1307 01:02:25,860 --> 01:02:28,790 Faisons-le. 1308 01:02:28,790 --> 01:02:29,290 Ce est prêt. 1309 01:02:29,290 --> 01:02:30,041 D'ACCORD. 1310 01:02:30,041 --> 01:02:30,540 Désolé. 1311 01:02:30,540 --> 01:02:31,664 Je ai renversé du café sur moi-même. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Je ne sais pas si je suis plus bouleversé que je regarde idiot, 1314 01:02:38,210 --> 01:02:40,600 ou que je ne ai plus de café. 1315 01:02:40,600 --> 01:02:44,480 Quoi qu'il en soit, juste une annonce rapide à propos de la feuille que vous les gars ont. 1316 01:02:44,480 --> 01:02:47,994 Donc cette fiche vous les gars avez ne est pas le fonctionnaire ce qui est sur le quiz. 1317 01:02:47,994 --> 01:02:49,660 Ce est le fonctionnaire ce qui est sur le quiz. 1318 01:02:49,660 --> 01:02:52,520 En outre, sur le site, nous disons vous, OK, ce sera sur le quiz. 1319 01:02:52,520 --> 01:02:55,020 Donc, dans la petite feuille de triche vous avez, non officielle. 1320 01:02:55,020 --> 01:02:56,690 Et il ya des erreurs sur elle. 1321 01:02:56,690 --> 01:03:01,490 Donc préférable de ne pas simplement utiliser aveuglément. 1322 01:03:01,490 --> 01:03:04,390 Donc oui, ce est tout. 1323 01:03:04,390 --> 01:03:05,980 Donc, nous allons entrer dans ce réel rapide. 1324 01:03:05,980 --> 01:03:07,420 >> Donc états HTTP. 1325 01:03:07,420 --> 01:03:10,430 Donc ce qui arrive lorsque le site web, tout va bien. 1326 01:03:10,430 --> 01:03:11,144 Le OK de tout. 1327 01:03:11,144 --> 01:03:13,310 Tout revient à vous la façon dont vous le souhaitez. 1328 01:03:13,310 --> 01:03:15,370 Vous obtenez un 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, où avons-nous vu que 301 avant? 1330 01:03:19,250 --> 01:03:20,890 Attendez, quoi de neuf? 1331 01:03:20,890 --> 01:03:23,250 Désolé. 1332 01:03:23,250 --> 01:03:24,980 Nous avons vu i étain conférence lors de la sécurité. 1333 01:03:24,980 --> 01:03:30,690 Ainsi, durant la sécurité, si David tapé dans http puis essayé d'aller à cs50.net, 1334 01:03:30,690 --> 01:03:31,940 vous allez voir 301 déplacés. 1335 01:03:31,940 --> 01:03:32,440 Pourquoi? 1336 01:03:32,440 --> 01:03:35,570 Parce que ça va rediriger vous automatiquement à notre HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> Donc 301 déplacés, juste que ce est essentiellement une redirection. 1338 01:03:38,649 --> 01:03:40,190 Et vous pouvez penser comme ça. 1339 01:03:40,190 --> 01:03:43,790 Toute des statuts qui commencent par deux de, ceux qui sont comme, OK, de tout l'OK. 1340 01:03:43,790 --> 01:03:46,530 Toute des statuts qui commencent avec 3, ce sont redirection. 1341 01:03:46,530 --> 01:03:49,571 Statuts qui commencent par 4, ce qui signifie il ya une sorte d'erreur de client. 1342 01:03:49,571 --> 01:03:52,440 Statuts qui commencent par 5, ce est une sorte d'erreur de serveur. 1343 01:03:52,440 --> 01:03:54,680 Donc, vous sorte de rompez les statuts comme ça. 1344 01:03:54,680 --> 01:03:59,120 Donc pas 304 pas modifiée, de sorte que dans votre server.c p-ensembles, alors disons que vous 1345 01:03:59,120 --> 01:04:00,600 cat.html chargé. 1346 01:04:00,600 --> 01:04:03,360 Tout revient, vous obtenez 200s, OK, très bien. 1347 01:04:03,360 --> 01:04:04,540 >> Disons que vous rafraîchi il. 1348 01:04:04,540 --> 01:04:07,310 Eh bien, à l'intérieur que cat.html, vous avez un JPEG. 1349 01:04:07,310 --> 01:04:09,520 Eh bien, ce ne est pas JPEG allez obtenir rechargé. 1350 01:04:09,520 --> 01:04:12,140 Vous ne allez pas poster une autre GET demande au serveur, 1351 01:04:12,140 --> 01:04:13,980 et puis obtenir toutes ces informations en arrière. 1352 01:04:13,980 --> 01:04:17,560 Il va juste être-- cette image est va être mis en cache sur votre machine. 1353 01:04:17,560 --> 01:04:19,540 Et pour que l'image sera un 304. 1354 01:04:19,540 --> 01:04:20,720 Donc ce ne est pas été modifié. 1355 01:04:20,720 --> 01:04:24,600 Si vous fermez ensuite, claire les cookies, puis régénérez 1356 01:04:24,600 --> 01:04:27,490 et essayez de charger cette page à nouveau, vous allez voir 200s. 1357 01:04:27,490 --> 01:04:28,910 Vous ne allez pas voir que 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, mauvaise demande, réelle rapide, comme si vous 1359 01:04:32,340 --> 01:04:34,880 allaient envoyer un Objet JSON au serveur 1360 01:04:34,880 --> 01:04:38,090 et votre objet JSON était incorrecte, vous verrez quelque chose comme ça. 1361 01:04:38,090 --> 01:04:39,000 403, interdit. 1362 01:04:39,000 --> 01:04:40,330 Quand souhaitez-vous voir un interdit? 1363 01:04:40,330 --> 01:04:41,394 Probablement Probablement? 1364 01:04:41,394 --> 01:04:42,060 AUDIENCE: Chmod. 1365 01:04:42,060 --> 01:04:42,950 DAVIN: Chmod, ouais. 1366 01:04:42,950 --> 01:04:44,730 Donc, vous ne avez pas réglé autorisations correctement. 1367 01:04:44,730 --> 01:04:45,577 404, introuvable. 1368 01:04:45,577 --> 01:04:46,410 Ce est tout simplement pas là. 1369 01:04:46,410 --> 01:04:48,670 Donc, si vous tapez dans la mauvaise URL. 1370 01:04:48,670 --> 01:04:53,500 500, erreur interne du serveur, le serveur ne était probablement pas configuré correctement. 1371 01:04:53,500 --> 01:04:56,260 Quelque chose de pas sur votre fin, mais quelque chose sur le côté serveur. 1372 01:04:56,260 --> 01:04:57,240 Et 503? 1373 01:04:57,240 --> 01:04:59,502 Beaucoup de gens ont vu 503s dans le dernier p-set. 1374 01:04:59,502 --> 01:05:00,460 Lorsque cela se produirait? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Je ai entendu des chuchotements. 1377 01:05:05,660 --> 01:05:07,767 >> PUBLIC: Quand Google décide que vous êtes un robot. 1378 01:05:07,767 --> 01:05:10,350 DAVIN: Ouais, quand Google décide vous êtes un robot, vous obtenez 503s. 1379 01:05:10,350 --> 01:05:11,560 Donc, ce est une surcharge. 1380 01:05:11,560 --> 01:05:14,620 Si vous avez demandé à partir du serveur trop, ce est généralement temporaire. 1381 01:05:14,620 --> 01:05:15,560 Et la plupart d'entre vous ont remarqué il. 1382 01:05:15,560 --> 01:05:16,185 Donc, vous avez vu 503. 1383 01:05:16,185 --> 01:05:19,282 Vous avez peut-être pris un peu pause, puis les 503s se en allèrent, 1384 01:05:19,282 --> 01:05:20,490 et tout allait bien. 1385 01:05:20,490 --> 01:05:26,640 >> GABE: Très rapidement, quand pensez-vous les gars EEG 500 en doute ce dernier problème réglé? 1386 01:05:26,640 --> 01:05:27,954 Oui? 1387 01:05:27,954 --> 01:05:30,906 >> AUDIENCE: Habituellement, si la serveur dispose d'un fichier égaré 1388 01:05:30,906 --> 01:05:34,650 ou [inaudible] leur machine [inaudible]. 1389 01:05:34,650 --> 01:05:38,870 >> GABE: Donc, ce est peut-être une configuration problème dans votre PHP sur votre serveur. 1390 01:05:38,870 --> 01:05:42,250 Mais il pourrait être juste quelque chose comme un point-virgule que votre oublié. 1391 01:05:42,250 --> 01:05:44,130 Si vous tapez PHP, une syntaxe incorrecte 1392 01:05:44,130 --> 01:05:46,000 pourraient vous obtenir quelque chose comme ça. 1393 01:05:46,000 --> 01:05:46,960 D'ACCORD? 1394 01:05:46,960 --> 01:05:48,610 >> DAVIN: Cool. 1395 01:05:48,610 --> 01:05:51,180 Voulez-vous que je fasse tout jusqu'à AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> GABE: [inaudible]. 1397 01:05:52,950 --> 01:05:53,450 DAVIN: OK. 1398 01:05:53,450 --> 01:05:54,230 Alors, quel est le DOM? 1399 01:05:54,230 --> 01:05:55,290 Que signifie pour les DOM? 1400 01:05:55,290 --> 01:05:56,990 >> AUDIENCE: modèle objet de document. 1401 01:05:56,990 --> 01:05:57,490 DAVIN: Nice. 1402 01:05:57,490 --> 01:06:00,775 Et pourquoi ne nous le voulions? 1403 01:06:00,775 --> 01:06:02,670 Impressionnant. 1404 01:06:02,670 --> 01:06:06,651 Droit, il nous permet tout simplement d'accès le code HTML, accéder à notre page très rapidement. 1405 01:06:06,651 --> 01:06:07,150 Pourquoi? 1406 01:06:07,150 --> 01:06:09,980 Parce que nous traitons notre page traiter nos balises HTML, 1407 01:06:09,980 --> 01:06:11,730 tout traitement comme se ils étaient des objets. 1408 01:06:11,730 --> 01:06:13,710 Si nous voulons les traiter comme se ils étaient objets, alors que pouvons-nous faire? 1409 01:06:13,710 --> 01:06:15,210 Eh bien, nous pouvons appeler des fonctions sur eux. 1410 01:06:15,210 --> 01:06:16,460 Et cela est important pourquoi? 1411 01:06:16,460 --> 01:06:19,200 Eh bien, parce que nous allons utiliser JavaScript afin de mettre à jour notre HTML, 1412 01:06:19,200 --> 01:06:20,500 mettre à jour ces objets. 1413 01:06:20,500 --> 01:06:23,869 Donc, si nous les traitons comme des objets, nous pouvons alors appeler des fonctions sur eux. 1414 01:06:23,869 --> 01:06:26,660 Je vais entrer dans ce un peu plus quand je vais dans JavaScript 1415 01:06:26,660 --> 01:06:30,510 mais vous avez tous vu comme document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Donc, votre document est élément, obtenir élément par ID, 1417 01:06:32,870 --> 01:06:35,087 de sorte que vous allez regarder pour certains ID dans une balise HTML. 1418 01:06:35,087 --> 01:06:36,920 Et puis, vous pouvez faire d'autre pour que quelque chose. 1419 01:06:36,920 --> 01:06:40,089 Par exemple, comme document.body, alors vous pouvez ajouter enfant. 1420 01:06:40,089 --> 01:06:41,630 Donc, vous allez trouver le document. 1421 01:06:41,630 --> 01:06:42,340 Vous avez le document. 1422 01:06:42,340 --> 01:06:43,629 Vous allez trouver le corps. 1423 01:06:43,629 --> 01:06:44,420 Vous avez trouvé le corps. 1424 01:06:44,420 --> 01:06:46,545 Et puis, vous allez appeler une fonction sur elle. 1425 01:06:46,545 --> 01:06:50,312 Alors ajoutez enfant, et vous pouvez ajouter certains HTML sur la fin l'intérieur de votre corps. 1426 01:06:50,312 --> 01:06:52,520 Donc, fondamentalement, vous êtes juste traiter comme un objet. 1427 01:06:52,520 --> 01:06:54,515 Vous traitez HTML balises comme un objet. 1428 01:06:54,515 --> 01:06:57,071 Et il est très facile et rapide de passer par eux. 1429 01:06:57,071 --> 01:06:59,070 Mais il vous permet également pour appeler des fonctions sur eux 1430 01:06:59,070 --> 01:07:04,410 de sorte que vous pouvez manipuler et modifier les éléments. 1431 01:07:04,410 --> 01:07:10,162 >> GABE: Étant donné cela, pourquoi est telle JavaScript une langue agréable d'interagir avec HTML? 1432 01:07:10,162 --> 01:07:12,870 Les chances sont, quand les gens choisissaient la langue du navigateur, 1433 01:07:12,870 --> 01:07:14,990 pour le côté client, JavaScript est vraiment sympa, 1434 01:07:14,990 --> 01:07:16,765 ce est vraiment bon à la manipulation d'objets. 1435 01:07:16,765 --> 01:07:20,620 Et les objets sont un peu comme les objets qui apparaissent dans le code HTML, 1436 01:07:20,620 --> 01:07:23,940 il est donc très facile pour JavaScript pour faire ce genre de manipulation. 1437 01:07:23,940 --> 01:07:24,440 DAVIN: Nice. 1438 01:07:24,440 --> 01:07:25,670 Alors, voici juste un exemple. 1439 01:07:25,670 --> 01:07:29,020 Donc, je pense que sur le questionnaire de l'année dernière, ou peut-être il ya deux ans, nous 1440 01:07:29,020 --> 01:07:30,840 vous a demandé de créer un arbre. 1441 01:07:30,840 --> 01:07:32,660 Donc, ce est exactement ce que vous feriez. 1442 01:07:32,660 --> 01:07:34,255 Donc, vous commencez avec document. 1443 01:07:34,255 --> 01:07:36,130 Et puis vous avez essentiellement il suffit de regarder les étiquettes. 1444 01:07:36,130 --> 01:07:38,100 Donc, si vous regardez, nous commencer par une balise HTML. 1445 01:07:38,100 --> 01:07:41,660 Et puis, vous obtenez des indices sur la façon de faire sur la base de l'indentation. 1446 01:07:41,660 --> 01:07:43,870 Alors la tête sorte de bifurque. 1447 01:07:43,870 --> 01:07:46,242 Dans la tête, nous avons une autre balise pour le titre. 1448 01:07:46,242 --> 01:07:47,450 Alors, nous avons une balise de titre. 1449 01:07:47,450 --> 01:07:49,760 Et à l'intérieur, nous avons une chaîne de caractères. 1450 01:07:49,760 --> 01:07:52,210 Et donc nous représentons une chaîne dans un cercle. 1451 01:07:52,210 --> 01:07:54,010 Et toutes les balises sont en carrés. 1452 01:07:54,010 --> 01:07:56,270 >> Et si vous regardez, si nous penser à cela comme un arbre, 1453 01:07:56,270 --> 01:07:58,730 et disons que HTML est un parent, alors à la tête et le corps 1454 01:07:58,730 --> 01:07:59,772 vont être frères et sœurs. 1455 01:07:59,772 --> 01:08:01,813 Ils sont tous les deux vont être les enfants de ce parent. 1456 01:08:01,813 --> 01:08:03,620 Donc, parce qu'ils sont deux frères et sœurs, ils sont 1457 01:08:03,620 --> 01:08:06,590 va être une sorte de côté l'autre dans notre modèle d'arbre. 1458 01:08:06,590 --> 01:08:08,590 Et puis, vous avez essentiellement faire exactement la même chose. 1459 01:08:08,590 --> 01:08:13,512 Donc, pas difficile, mais nous avons demandé ce genre de questions avant sur le quiz. 1460 01:08:13,512 --> 01:08:15,220 GABE: Quelqu'un avez des questions à ce jour? 1461 01:08:15,220 --> 01:08:16,357 Est-il bon? 1462 01:08:16,357 --> 01:08:16,856 DAVIN: Cool. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, OK, les bonnes choses. 1465 01:08:21,600 --> 01:08:24,069 Donc JavaScript, ce est le JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Eh bien, ce est le JavaScript est-- compliqué, mais ceux-ci 1467 01:08:28,370 --> 01:08:30,727 sont quelques-uns des faits saillants que vous devriez garder à l'esprit. 1468 01:08:30,727 --> 01:08:31,810 Premièrement, il est faiblement typé. 1469 01:08:31,810 --> 01:08:33,529 Qu'est-ce que cela veut dire? 1470 01:08:33,529 --> 01:08:35,596 Donc PHP était-- ouais, quoi de neuf? 1471 01:08:35,596 --> 01:08:39,854 >> AUDIENCE: Vous ne avez pas explicitement Etat ce type de variable il est. 1472 01:08:39,854 --> 01:08:40,479 DAVIN: Parfait. 1473 01:08:40,479 --> 01:08:43,270 Alors il dit que vous ne avez pas à déclarer explicitement le type de variable. 1474 01:08:43,270 --> 01:08:44,160 Ce est exactement ça. 1475 01:08:44,160 --> 01:08:49,700 Donc, en C, si je avais int i est égal à 50, puis en PHP, ce est juste comme ça, $ i, 1476 01:08:49,700 --> 01:08:50,550 est égal à 50. 1477 01:08:50,550 --> 01:08:54,319 Puis, en JavaScript, ce serait être la décision? 1478 01:08:54,319 --> 01:08:55,260 Var, non? 1479 01:08:55,260 --> 01:08:56,566 Ce serait comme var i est égal à 50. 1480 01:08:56,566 --> 01:08:58,649 Mais vous ne avez pas à être comme, OK, ce est un int. 1481 01:08:58,649 --> 01:09:00,350 OK, ce est une chaîne. 1482 01:09:00,350 --> 01:09:01,731 Pas besoin de faire cela. 1483 01:09:01,731 --> 01:09:02,939 Ce est un langage interprété. 1484 01:09:02,939 --> 01:09:04,904 Alors qu'est-ce que cela signifie? 1485 01:09:04,904 --> 01:09:06,340 >> Audience: non compilé. 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN: Qu'est-ce que signifie pas compilé? 1487 01:09:10,470 --> 01:09:11,392 Ouais? 1488 01:09:11,392 --> 01:09:15,336 >> AUDIENCE: Vous ne avez pas de restructurer le code 1489 01:09:15,336 --> 01:09:18,294 afin qu'elle soit prête pour l'ordinateur pour l'exécuter. 1490 01:09:18,294 --> 01:09:23,144 Ce est juste pris au moment de la l'exécution et l'ordinateur [inaudible]. 1491 01:09:23,144 --> 01:09:25,560 DAVIN: Ouais, donc ça va passer par un interprète. 1492 01:09:25,560 --> 01:09:26,750 Mais vous avez parfaitement raison. 1493 01:09:26,750 --> 01:09:28,319 Donc, vous ne allez jamais pour le compiler, non? 1494 01:09:28,319 --> 01:09:30,399 Lorsque vous faisiez votre PHP et le code JavaScript, 1495 01:09:30,399 --> 01:09:31,365 vous ne avez jamais appelé la compilation. 1496 01:09:31,365 --> 01:09:33,779 Vous ne avez jamais appelé quelque chose comme faire ou quelque chose comme ça. 1497 01:09:33,779 --> 01:09:34,800 Ce est parce que ce est interprété. 1498 01:09:34,800 --> 01:09:37,319 Donc, à chaque fois qu'il passe par navigateur, elle passe par un interprète. 1499 01:09:37,319 --> 01:09:40,370 Et cela va interpréter juste en temps réel tout de suite pour vous. 1500 01:09:40,370 --> 01:09:43,770 Quels sont donc les points positifs et négatifs d'avoir un langage interprété 1501 01:09:43,770 --> 01:09:45,258 et ayant un langage compilé? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Donc compiling-- ouais, quoi de neuf? 1504 01:09:50,540 --> 01:09:52,444 >> AUDIENCE: Interprété est plus lente. 1505 01:09:52,444 --> 01:09:53,319 DAVIN: Dans quel sens? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> AUDIENCE: Après vous compiler, vous ne avez pas 1508 01:09:59,091 --> 01:10:04,400 à faire des mesures supplémentaires pour exécuter il, alors que cette [inaudible]. 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN: Oui, parfait. 1510 01:10:05,570 --> 01:10:08,386 Donc ce que vous dites est essentiellement que compilation, 1511 01:10:08,386 --> 01:10:10,760 lorsque vous compilez, vous avez une beaucoup de coûts initiaux, non? 1512 01:10:10,760 --> 01:10:11,760 Vous allez compiler. 1513 01:10:11,760 --> 01:10:13,750 Mais une fois que vous compilez, le compilateur va optimiser. 1514 01:10:13,750 --> 01:10:14,840 Ça va être rapide. 1515 01:10:14,840 --> 01:10:16,170 Il va essentiellement être aussi rapide que possible. 1516 01:10:16,170 --> 01:10:18,830 Avec l'interprétation, vous ne avez jamais avoir ce coût initial. 1517 01:10:18,830 --> 01:10:22,260 Au contraire, il va être un peu plus lent chaque fois que vous l'interprétez. 1518 01:10:22,260 --> 01:10:24,940 Et vous allez avoir à interpréter chaque fois. 1519 01:10:24,940 --> 01:10:27,114 Ainsi, au lieu d'avoir ce une coût du temps, maintenant vous êtes 1520 01:10:27,114 --> 01:10:29,530 allez avoir à interpréter chaque fois que la page se affiche. 1521 01:10:29,530 --> 01:10:31,890 >> Donc interprètes sont bonnes parce vous ne avez pas à le compiler, 1522 01:10:31,890 --> 01:10:33,980 mais ils sont mauvais en ce que tous les fois que la page se charge, ce est 1523 01:10:33,980 --> 01:10:35,771 devoir interpréter cette JavaScript. 1524 01:10:35,771 --> 01:10:40,520 Et ça va fonctionner un peu plus lent que si vous deviez compiler. 1525 01:10:40,520 --> 01:10:43,044 Vous permet de communicate-- oh, attendez. 1526 01:10:43,044 --> 01:10:44,960 Utilisé pour manipuler le contenu et l'apparence. 1527 01:10:44,960 --> 01:10:46,043 Nous avons juste parlé à ce sujet. 1528 01:10:46,043 --> 01:10:47,250 Il utilise le DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, nous allons entrer dans AJAX dans un peu. 1530 01:10:49,930 --> 01:10:51,520 Et puis, ce est côté client. 1531 01:10:51,520 --> 01:10:53,110 Donc PHP est côté serveur. 1532 01:10:53,110 --> 01:10:54,360 JavaScript est côté client. 1533 01:10:54,360 --> 01:10:57,780 Quels sont positifs à cela? 1534 01:10:57,780 --> 01:10:58,280 Il le dit. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Ce est plus rapide, non? 1537 01:11:02,780 --> 01:11:05,282 Parce que vous ne avez pas to-- ce est plus rapide. 1538 01:11:05,282 --> 01:11:07,490 Vous ne avez pas à communiquer avec un autre appareil. 1539 01:11:07,490 --> 01:11:08,790 Si vous êtes juste sur votre client, vous n'êtes jamais 1540 01:11:08,790 --> 01:11:11,280 allez avoir à aller voir ce qui est sur le serveur 1541 01:11:11,280 --> 01:11:13,150 et ensuite rapport ou quelque chose comme ça. 1542 01:11:13,150 --> 01:11:15,410 Donc côté client tend à être un peu plus rapide. 1543 01:11:15,410 --> 01:11:17,910 >> GABE: Ouais, mais cette ne signifie pas PHP est 1544 01:11:17,910 --> 01:11:20,440 plus rapide que JavaScript ou quelque chose de similaire. 1545 01:11:20,440 --> 01:11:23,270 Ils courent en quelque sorte dans la même vitesse parce qu'ils sont tous les deux 1546 01:11:23,270 --> 01:11:24,490 langages interprétés. 1547 01:11:24,490 --> 01:11:26,680 La chose qui est lent ici, ce est la demande. 1548 01:11:26,680 --> 01:11:28,870 Donc, vous allez effectivement tout le chemin vers le Brésil 1549 01:11:28,870 --> 01:11:31,460 pour obtenir des informations qui y vit. 1550 01:11:31,460 --> 01:11:34,590 Mais PHP et JavaScript, ils sorte de courir dans la même vitesse. 1551 01:11:34,590 --> 01:11:37,930 Ce ne est pas que l'on est plus vite que l'autre. 1552 01:11:37,930 --> 01:11:40,600 Ce, aussi, question piège ici. 1553 01:11:40,600 --> 01:11:47,338 Donc JavaScript ne devient jamais code machine, vrai ou faux? 1554 01:11:47,338 --> 01:11:48,590 >> AUDIENCE: Faux. 1555 01:11:48,590 --> 01:11:49,090 GABE: Faux. 1556 01:11:49,090 --> 01:11:51,298 Il doit devenir la machine Code parce que le code de la machine est 1557 01:11:51,298 --> 01:11:53,210 la seule chose que la machine comprend. 1558 01:11:53,210 --> 01:11:55,800 Même si ce ne est pas compilé, il devient encore code machine 1559 01:11:55,800 --> 01:11:59,120 parce que l'interprète est juste un programme qui va ligne par ligne 1560 01:11:59,120 --> 01:12:02,170 et qui se transforme en ligne quelque chose de l'ordinateur comprend. 1561 01:12:02,170 --> 01:12:02,825 D'ACCORD? 1562 01:12:02,825 --> 01:12:03,325 Cool. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> DAVIN: Voici juste un très basique bonjour programme JavaScript mondiale. 1565 01:12:12,890 --> 01:12:15,590 Donc, je ne sais pas si-- vous avez vu cette. 1566 01:12:15,590 --> 01:12:17,630 Mais vous avez juste HTML ici. 1567 01:12:17,630 --> 01:12:21,020 Et au lieu de réellement mettre le code JavaScript dans les balises de script, 1568 01:12:21,020 --> 01:12:22,810 de sorte que vous auriez normalement mettre dans la tête. 1569 01:12:22,810 --> 01:12:24,030 Vous avez des balises de script. 1570 01:12:24,030 --> 01:12:24,870 Vous déposez là. 1571 01:12:24,870 --> 01:12:28,350 Tout ce que nous avons fait ici est que nous avons lié in-- donc nous avons relié à un fichier JavaScript 1572 01:12:28,350 --> 01:12:29,137 comme ça. 1573 01:12:29,137 --> 01:12:30,470 Et vous avez tous fait cela, non? 1574 01:12:30,470 --> 01:12:34,740 Ainsi, lorsque vous utilisez jQuery et underscore.js dans le dernier p-jeu, 1575 01:12:34,740 --> 01:12:38,700 vous ne avez pas des tonnes de code dans vos balises de script, dans votre tête. 1576 01:12:38,700 --> 01:12:41,415 Vous pourriez le faire, mais à la place vous êtes juste en reliant. 1577 01:12:41,415 --> 01:12:43,540 Et vous liez dans comme vous le faites avec CSS. 1578 01:12:43,540 --> 01:12:50,186 Donc, il est tout simplement plus facile à lire de façon votre code ne est pas comme 1000 lignes à long 1579 01:12:50,186 --> 01:12:52,310 avec des tonnes de fonctions vous pourriez ne pas être utilisé. 1580 01:12:52,310 --> 01:12:53,518 >> Au lieu de cela, vous liez simplement en. 1581 01:12:53,518 --> 01:12:55,050 Il compartimente il. 1582 01:12:55,050 --> 01:13:00,110 Ce est comme écrire certains fichiers d'en-tête, et puis y compris ce fichier d'en-tête en C. 1583 01:13:00,110 --> 01:13:01,620 Pensez-y comme ça. 1584 01:13:01,620 --> 01:13:02,680 Alors qu'est-ce que faire? 1585 01:13:02,680 --> 01:13:04,560 Eh bien, cela va fonctionner. 1586 01:13:04,560 --> 01:13:05,410 Il va alerter. 1587 01:13:05,410 --> 01:13:08,020 Donc, vous allez obtenir un peu pop up disant monde de bonjour. 1588 01:13:08,020 --> 01:13:11,420 Question rapide, juste test de cohérence, de sorte que vous voyez ici dans le corps, 1589 01:13:11,420 --> 01:13:13,160 dire corps, HTML ici. 1590 01:13:13,160 --> 01:13:14,080 Ce qui vient en premier? 1591 01:13:14,080 --> 01:13:16,864 Est-ce que je vois corps, HTML ici, ou dois-je vois l'alerte en premier? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> AUDIENCE: Alerte. 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN: Droit. 1595 01:13:21,470 --> 01:13:22,110 Il dit d'alerte. 1596 01:13:22,110 --> 01:13:22,610 Pourquoi? 1597 01:13:22,610 --> 01:13:24,470 >> AUDIENCE: Parce que vous aller de haut en bas. 1598 01:13:24,470 --> 01:13:25,600 >> DAVIN: Oui. 1599 01:13:25,600 --> 01:13:26,100 Parfait. 1600 01:13:26,100 --> 01:13:29,207 Donc, dit-il, vous allez de haut en en bas, ce qui est absolument correct. 1601 01:13:29,207 --> 01:13:30,790 Vous allez aller de haut en bas. 1602 01:13:30,790 --> 01:13:34,790 Et en JavaScript, jQuery, vous avez une fonction qui est comme onload, ou prêts, 1603 01:13:34,790 --> 01:13:38,030 et qui dit, OK, attendre tout cela a chargé HTML. 1604 01:13:38,030 --> 01:13:39,580 Et puis, appeler le JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Parce que nous ne avons pas ici, le première chose qui va se passer 1606 01:13:42,190 --> 01:13:43,920 est que ça va aller de haut en bas. 1607 01:13:43,920 --> 01:13:46,310 Il va frapper que JS appeler, il va alerter. 1608 01:13:46,310 --> 01:13:49,510 Après que vous cliquez sur OK, cette alerte disparaît. 1609 01:13:49,510 --> 01:13:53,600 Ensuite, il va montrer vous le corps HTML ici. 1610 01:13:53,600 --> 01:13:54,590 Nice. 1611 01:13:54,590 --> 01:14:00,880 >> OK, si juste réel rapide, écrit en JavaScript est super rapide. 1612 01:14:00,880 --> 01:14:02,710 Pour déclarer une variable, nom de var. 1613 01:14:02,710 --> 01:14:07,070 Donc, en C, vous avez int i, vous avez de déclarer ce genre de type il est. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript, var. 1616 01:14:08,755 --> 01:14:09,630 Nous en avons parlé. 1617 01:14:09,630 --> 01:14:11,020 Très bien, allons-y. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, même chose. 1619 01:14:12,510 --> 01:14:14,230 Même chose. 1620 01:14:14,230 --> 01:14:18,165 Les déclarations de fonctions, de sorte comme vous l'avez vu dans C. 1621 01:14:18,165 --> 01:14:21,290 La seule chose différente est donc quand vous obtenez à d'autres langages de programmation, 1622 01:14:21,290 --> 01:14:24,780 comme quand vous prenez 51 prochain semestre et vous faites avec OCAML, 1623 01:14:24,780 --> 01:14:26,690 vous pouvez traiter avec des fonctions anonymes. 1624 01:14:26,690 --> 01:14:28,240 Donc, ce est exactement ce que vous avez ici. 1625 01:14:28,240 --> 01:14:31,560 Donc, vous voulez mettre en somme, une sorte de valeur de somme. 1626 01:14:31,560 --> 01:14:33,870 Mais vous pourriez seulement être faites une fois. 1627 01:14:33,870 --> 01:14:37,310 Donc, vous ne voulez pas appeler la fonction somme, donner une déclaration de fonction. 1628 01:14:37,310 --> 01:14:39,830 Au lieu de cela, vous utilisez juste qu'il comme une fonction anonyme. 1629 01:14:39,830 --> 01:14:42,469 Et vous avez vu cette beaucoup. 1630 01:14:42,469 --> 01:14:44,510 Vous verrez un exemple de ce en quelques diapositives. 1631 01:14:44,510 --> 01:14:45,597 Ouais, nous verrons. 1632 01:14:45,597 --> 01:14:46,430 GABE: Bonne question. 1633 01:14:46,430 --> 01:14:50,660 Quand pourriez-vous souhaitez utiliser une fonction anonyme ici? 1634 01:14:50,660 --> 01:14:54,111 Fondamentalement, quand vous voulez quelque chose, comme un événement, de se produire. 1635 01:14:54,111 --> 01:14:55,860 Alors, quand la souris est cliqué, par exemple, 1636 01:14:55,860 --> 01:14:57,790 vous voulez une fonction à appeler. 1637 01:14:57,790 --> 01:15:00,570 Donc, vous passez à l'événement gestionnaire, vous passez à l'événement, 1638 01:15:00,570 --> 01:15:02,870 en quelque sorte, la fonction vous voulez être appelé. 1639 01:15:02,870 --> 01:15:04,710 Et ce que vous êtes de passage ce est comme à la fin 1640 01:15:04,710 --> 01:15:08,757 de la journée, tout un pointeur vers cette instruction, à la fonction. 1641 01:15:08,757 --> 01:15:11,090 Donc, ce ne est pas comme vous êtes de passage l'ensemble du code, tout comme 1642 01:15:11,090 --> 01:15:12,173 un pointeur vers la fonction. 1643 01:15:12,173 --> 01:15:17,871 Et puis, quand quelqu'un clique sur le souris, puis que la fonction est appelée. 1644 01:15:17,871 --> 01:15:22,340 >> Davin: tableaux, de sorte que vous avoir une déclaration de tableau. 1645 01:15:22,340 --> 01:15:23,990 Ensuite, un tableau pour mettre les choses en. 1646 01:15:23,990 --> 01:15:25,769 Très rapidement, ce sera cette imprimer? 1647 01:15:25,769 --> 01:15:27,060 Quel sera le troisième élément être? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> AUDIENCE: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN: Oui, ce serait «JS». 1651 01:15:33,940 --> 01:15:35,760 Attendez, revenir en arrière. 1652 01:15:35,760 --> 01:15:37,100 Quelle est la durée? 1653 01:15:37,100 --> 01:15:38,117 >> AUDIENCE: Trois. 1654 01:15:38,117 --> 01:15:38,950 DAVIN: Trois, non? 1655 01:15:38,950 --> 01:15:40,210 Exactement ce que vous pensez. 1656 01:15:40,210 --> 01:15:42,072 OK, maintenant aller. 1657 01:15:42,072 --> 01:15:43,530 Tableaux, vous pouvez ajouter des choses pour eux. 1658 01:15:43,530 --> 01:15:45,395 Ainsi, vous pouvez aller au-delà leurs limites initiales. 1659 01:15:45,395 --> 01:15:46,740 Juste quelque chose à garder à l'esprit. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, ils sont un peu peu plus indulgent en termes de choses 1661 01:15:49,760 --> 01:15:50,570 comme ça. 1662 01:15:50,570 --> 01:15:54,260 Objets, très semblable structs en C, beaucoup 1663 01:15:54,260 --> 01:15:56,590 comme les tableaux associatifs en PHP. 1664 01:15:56,590 --> 01:15:58,720 Vous avez tous eu l'expérience avec cela. 1665 01:15:58,720 --> 01:16:01,880 Donc, JSON, quand vous êtes de passage JSON d'avant en arrière dans le p-huit définir, 1666 01:16:01,880 --> 01:16:03,260 ce est votre objet. 1667 01:16:03,260 --> 01:16:06,290 >> Donc oui, par exemple, exemple réel rapide. 1668 01:16:06,290 --> 01:16:07,880 Voici un objet. 1669 01:16:07,880 --> 01:16:12,700 La façon dont vous faites référence à cette objet, si juste réel rapide, 1670 01:16:12,700 --> 01:16:18,630 disons que je voulais trouver sur, OK, ce est le cours? 1671 01:16:18,630 --> 01:16:20,681 Et si le nom de l'objet ici est CS50. 1672 01:16:20,681 --> 01:16:23,180 Et puis si je avais un associative tableau, comment pourrais-je le faire? 1673 01:16:23,180 --> 01:16:24,580 Je utiliserai vais une clé, non? 1674 01:16:24,580 --> 01:16:26,030 Je ai donc le nom du tableau. 1675 01:16:26,030 --> 01:16:30,160 Je ai le support, citations, clé, citations finaux, support d'extrémité, 1676 01:16:30,160 --> 01:16:33,610 et qui va référencer que élément à l'intérieur de mon tableau associatif. 1677 01:16:33,610 --> 01:16:37,646 Comment puis-je ai parlé Bien sûr l'intérieur de mon objet? 1678 01:16:37,646 --> 01:16:39,170 Quelqu'un sait? 1679 01:16:39,170 --> 01:16:40,622 >> AUDIENCE: [inaudible]. 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN: Quoi de neuf? 1681 01:16:41,784 --> 01:16:42,700 AUDIENCE: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 DAVIN: Oui, oui. 1683 01:16:43,510 --> 01:16:45,320 Donc CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Donc, la façon dont vous faites référence à des choses intérieur d'un objet JSON est avec un point. 1685 01:16:48,770 --> 01:16:53,114 >> AUDIENCE: Vous pouvez également utiliser la syntaxe de tableau. 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN: OK, très bien. 1687 01:16:54,050 --> 01:16:57,544 >> GABE: Vous pouvez également utiliser le support CS50, chaîne, comme guillemets. 1688 01:16:57,544 --> 01:16:59,210 PUBLIC: Je pense que ce est identique à PHP. 1689 01:16:59,210 --> 01:17:00,293 GABE: Ce est la même chose. 1690 01:17:00,293 --> 01:17:02,487 DAVIN: Fine! 1691 01:17:02,487 --> 01:17:03,945 Mais vous allez voir ce d'autres endroits. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Ouais, donc continuer. 1694 01:17:10,480 --> 01:17:13,330 Ce est ce que je viens de dire. 1695 01:17:13,330 --> 01:17:17,840 Donc, dans un exemple JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 Donc, ce est mon DOM, non? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Très rapidement, je ai donc une tête, Bonjour tout le monde, le corps. 1699 01:17:25,410 --> 01:17:26,160 Je ai un bouton. 1700 01:17:26,160 --> 01:17:27,870 Il dit: «me pousser," donc je veux pousser. 1701 01:17:27,870 --> 01:17:29,745 Et je veux faire quelque chose quand il est cliqué. 1702 01:17:29,745 --> 01:17:31,220 Droite, à côté. 1703 01:17:31,220 --> 01:17:34,630 >> Bon, alors ce est ma JavaScript. 1704 01:17:34,630 --> 01:17:37,790 Donc, jQuery est juste un plus facile façon d'écrire JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Donc cela, et ce que je vais vous montrer vous la prochaine, va être jQuery, 1706 01:17:40,920 --> 01:17:41,930 sont identiques. 1707 01:17:41,930 --> 01:17:43,990 Alors, ils vont faire les mêmes choses. 1708 01:17:43,990 --> 01:17:45,974 Juste jQuery a tendance à être un peu plus facile. 1709 01:17:45,974 --> 01:17:47,140 Les gens ont tendance à aimer davantage. 1710 01:17:47,140 --> 01:17:48,390 Il dispose d'un grand nombre de fonctionnalités. 1711 01:17:48,390 --> 01:17:49,830 Alors, les gens ont tendance à utiliser jQuery. 1712 01:17:49,830 --> 01:17:53,270 Vous avez tous utilisé jQuery dans le dernier p-set. 1713 01:17:53,270 --> 01:17:54,270 Alors, que va ce faire? 1714 01:17:54,270 --> 01:17:56,580 Quel sera ce JavaScript-- sorte ce est tout simplement le JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Qu'est-ce que cela? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Que faut-il faire? 1718 01:18:03,450 --> 01:18:04,890 >> Alors d'abord, vous voyez la fenêtre onload. 1719 01:18:04,890 --> 01:18:05,390 Droite? 1720 01:18:05,390 --> 01:18:06,640 Donc, nous ne avons pas vu cela avant. 1721 01:18:06,640 --> 01:18:09,380 Donc cela va attendre jusqu'à ce que la fenêtre charges entières. 1722 01:18:09,380 --> 01:18:12,770 Donc, il va attendre la charge HTML, toutes les images 1723 01:18:12,770 --> 01:18:13,770 avant qu'il ne fait rien. 1724 01:18:13,770 --> 01:18:16,050 Donc, disons que notre DOM a été chargé. 1725 01:18:16,050 --> 01:18:17,270 Tout est là. 1726 01:18:17,270 --> 01:18:19,080 Alors qu'est-ce qui va se passer? 1727 01:18:19,080 --> 01:18:19,922 Ouais? 1728 01:18:19,922 --> 01:18:22,880 >> AUDIENCE: Button apparaît. 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN: Le bouton est déjà là. 1730 01:18:25,201 --> 01:18:26,700 Ouais, donc de la touche déjà là. 1731 01:18:26,700 --> 01:18:31,190 Mais cela va-à-dire, OK, si je clique sur le bouton, 1732 01:18:31,190 --> 01:18:33,650 de sorte que le bouton est déjà là, comme ça balise HTML. 1733 01:18:33,650 --> 01:18:35,980 Attendez, revenir très vite. 1734 01:18:35,980 --> 01:18:39,470 Cette balise droit ici est va être un bouton déjà. 1735 01:18:39,470 --> 01:18:40,810 Il ya déjà un bouton. 1736 01:18:40,810 --> 01:18:44,120 Mais alors, le JavaScript tag, ici, 1737 01:18:44,120 --> 01:18:46,160 il est dit, OK, je veux pour obtenir l'élément par ID, 1738 01:18:46,160 --> 01:18:50,300 afin bouton de recherche dit juste, OK, je veux pour cartographier cette variable à ce bouton. 1739 01:18:50,300 --> 01:18:53,120 Donc, cette variable ne est qu'un moyen plus facile pour accéder à ce bouton. 1740 01:18:53,120 --> 01:18:57,300 Et je dis, OK, si je clique que touche, donc si je clique sur cet élément, 1741 01:18:57,300 --> 01:18:59,560 et cet élément se réfère à le bouton, si je clique dessus, 1742 01:18:59,560 --> 01:19:00,875 alors je veux appeler une fonction. 1743 01:19:00,875 --> 01:19:03,500 Voici l'un de ceux anonyme fonctions dont nous parlions. 1744 01:19:03,500 --> 01:19:04,840 >> Il suffit d'appeler une fonction. 1745 01:19:04,840 --> 01:19:08,840 A l'intérieur de cette fonction, essentiellement quelque chose que nous avons vu beaucoup, alerte. 1746 01:19:08,840 --> 01:19:10,477 Vous cliquez sur le bouton de recherche. 1747 01:19:10,477 --> 01:19:12,060 Il va avoir essentiellement un bouton. 1748 01:19:12,060 --> 01:19:13,040 Vous cliquez dessus. 1749 01:19:13,040 --> 01:19:14,040 Vous obtenez cette alerte. 1750 01:19:14,040 --> 01:19:14,850 X sur. 1751 01:19:14,850 --> 01:19:15,754 C'est tout. 1752 01:19:15,754 --> 01:19:16,254 Ouais? 1753 01:19:16,254 --> 01:19:21,980 >> AUDIENCE: Donc, si vous mettez le script [Inaudible], balise script dans votre code HTML? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN: Vous pouvez mettre le script tag droit dans la tête 1755 01:19:24,300 --> 01:19:30,667 parce que vous avez ce onload. 1756 01:19:30,667 --> 01:19:32,000 Ce est aussi que vous avez un clic. 1757 01:19:32,000 --> 01:19:34,166 Donc, il va attendre vous cliquez pour quelque chose. 1758 01:19:34,166 --> 01:19:37,470 Mais onload est juste pour être sûr, à faire que tout se charge dans votre code HTML 1759 01:19:37,470 --> 01:19:38,170 au préalable. 1760 01:19:38,170 --> 01:19:39,247 Ouais? 1761 01:19:39,247 --> 01:19:40,330 Vous voulez dire quelque chose? 1762 01:19:40,330 --> 01:19:41,080 >> GABE: [inaudible]. 1763 01:19:41,080 --> 01:19:42,485 DAVIN: Ouais. 1764 01:19:42,485 --> 01:19:45,426 >> AUDIENCE: évite donc onload définissant le bouton de recherche de variables 1765 01:19:45,426 --> 01:19:49,930 simplement en disant document.getElementById Recherche touche dot [inaudible]. 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN: Certainement, mais votre chaîne obtient juste énorme. 1767 01:19:52,320 --> 01:19:55,553 Exactement, ce est donc juste pour rendre plus facile pour vous, oui. 1768 01:19:55,553 --> 01:19:56,053 Oui? 1769 01:19:56,053 --> 01:19:57,886 >> AUDIENCE: Où avons-nous créer window.onload? 1770 01:19:57,886 --> 01:19:58,951 Ou document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> DAVIN: Oui, il ya. 1772 01:20:00,590 --> 01:20:02,094 Oui, il est, je ai vérifié. 1773 01:20:02,094 --> 01:20:03,710 >> GABE: Pas pour eux de se soucient. 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN: OK, donc je vais pour vous dire de toute façon. 1775 01:20:06,970 --> 01:20:11,005 Donc, fondamentalement, juste en général, de sorte window.onload attend jusqu'à ce que votre DOM, tous les 1776 01:20:11,005 --> 01:20:12,180 votre code HTML, des charges. 1777 01:20:12,180 --> 01:20:13,513 Il attend jusqu'à ce que votre images charge. 1778 01:20:13,513 --> 01:20:14,930 Il attend que tout charges. 1779 01:20:14,930 --> 01:20:18,410 document.ready, il vient attend que vos charges DOM. 1780 01:20:18,410 --> 01:20:22,190 Une fois que le HTML est tous là, une fois votre DOM est là, commence à courir. 1781 01:20:22,190 --> 01:20:23,400 Ce est la seule différence. 1782 01:20:23,400 --> 01:20:24,700 >> GABE: la santé mentale rapide vérifier ici. 1783 01:20:24,700 --> 01:20:29,060 Donc cela peut être vu sorte de comme une ligne de code, non? 1784 01:20:29,060 --> 01:20:33,600 Parce que ce est window.onload est égal à un tas de trucs. 1785 01:20:33,600 --> 01:20:39,030 Lorsque JavaScript lit ceci, vrai ou faux, la fonction est exécuté. 1786 01:20:39,030 --> 01:20:40,020 Faux. 1787 01:20:40,020 --> 01:20:40,920 D'ACCORD? 1788 01:20:40,920 --> 01:20:44,470 Qu'est-ce qui se passe ici, vous êtes simplement de passage cette fonction comme un fonctions anonymes 1789 01:20:44,470 --> 01:20:45,300 à window.onload. 1790 01:20:45,300 --> 01:20:48,480 Et puis, quand ça va de se effectivement exécutées? 1791 01:20:48,480 --> 01:20:49,600 Lorsque les charges de fenêtres. 1792 01:20:49,600 --> 01:20:50,420 Ce est un événement. 1793 01:20:50,420 --> 01:20:52,460 Donc, ce est jus t chose que nous sommes parler plus tôt, non? 1794 01:20:52,460 --> 01:20:54,580 Ainsi, lorsque l'événement se produit, la fonction passe. 1795 01:20:54,580 --> 01:20:55,746 Même chose avec le onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN: OK, donc quelqu'un a pris l'écart document.ready. 1798 01:21:03,130 --> 01:21:04,698 Mais ce sera la same-- exacte 1799 01:21:04,698 --> 01:21:06,864 AUDIENCE: Le symbole du dollar, ce est un document.ready. 1800 01:21:06,864 --> 01:21:07,710 Ce est un raccourci. 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN: Oh, ce est? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 Ok, donc ce moyen document.ready, raccourci. 1804 01:21:15,500 --> 01:21:19,660 Mais ce est la même que window.onload sauf pour ce que peu de différence 1805 01:21:19,660 --> 01:21:20,680 Je vous ai parlé. 1806 01:21:20,680 --> 01:21:21,870 Et ce est jQuery. 1807 01:21:21,870 --> 01:21:25,190 Donc, ce est exactement la même chose-- ce est JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Ce est just-- certaines personnes pensent qu'il se agit comme un poids plus léger, la version élégant 1809 01:21:29,500 --> 01:21:32,370 qui a beaucoup de fonctionnalités que vous utiliserez probablement. 1810 01:21:32,370 --> 01:21:34,500 Donc, ce fait exactement la même chose. 1811 01:21:34,500 --> 01:21:37,110 >> Donc, les choses au type de point de sortie. 1812 01:21:37,110 --> 01:21:40,364 Donc, dans l'autre exemple, nous eu document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 donc nous avons eu cette longue chaîne qui se passe pour obtenir 1814 01:21:42,280 --> 01:21:44,290 l'élément par tous les ID dont il dispose. 1815 01:21:44,290 --> 01:21:46,470 Ce est remplacé par cet appel ici. 1816 01:21:46,470 --> 01:21:50,860 Donc, vous voyez le signe du dollar, alors vous voyez devis, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag est toujours un sélecteur. 1818 01:21:52,370 --> 01:21:54,730 Il dit, OK, cela a à voir avec un ID. 1819 01:21:54,730 --> 01:21:56,120 Quel est le sélecteur pour une classe? 1820 01:21:56,120 --> 01:21:57,190 >> AUDIENCE: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN: Dot, à droite. 1822 01:21:57,960 --> 01:22:01,950 Si vous allez juste sélectionner une étiquette, ce est quoi? 1823 01:22:01,950 --> 01:22:03,310 Ce est juste l'étiquette, exactement. 1824 01:22:03,310 --> 01:22:05,560 Et vous pourriez l'utiliser ici, aussi bien. 1825 01:22:05,560 --> 01:22:08,560 >> GABE: Et par tag, nous entendons comme div, par exemple, ou la tête. 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN: le corps ou p ou quelque chose comme ça, oui. 1827 01:22:11,500 --> 01:22:14,390 Donc ici, OK, au lieu de dire document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 ce est juste exactement la même chose. 1829 01:22:16,500 --> 01:22:17,990 Juste à jQuery, ce est plus court. 1830 01:22:17,990 --> 01:22:19,860 Il est donc plus simple. 1831 01:22:19,860 --> 01:22:23,420 Alors, pas plus onclick, il suffit de cliquer. 1832 01:22:23,420 --> 01:22:26,320 fonction jQuery, appeler cette fonction. 1833 01:22:26,320 --> 01:22:27,580 Alert est exactement la même. 1834 01:22:27,580 --> 01:22:29,452 Donc, ce est un peu plus petit, ou peu 1835 01:22:29,452 --> 01:22:32,410 plus courte, un petit peuple bit-- pensent ce est un peu plus facile à écrire, 1836 01:22:32,410 --> 01:22:34,600 un peu plus facile à comprendre. 1837 01:22:34,600 --> 01:22:35,640 Mais ce ne est jQuery. 1838 01:22:35,640 --> 01:22:37,887 Beaucoup de gens obtenir un peu peu confus et inquiets 1839 01:22:37,887 --> 01:22:40,220 et ils pensent, OK, jQuery est différent de JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Je dois me rappeler ces deux choses différentes. 1841 01:22:42,136 --> 01:22:42,740 Ce n'est pas. 1842 01:22:42,740 --> 01:22:45,315 Je veux dire, ce est une syntaxe différente. 1843 01:22:45,315 --> 01:22:46,970 Mais jQuery est JavaScript. 1844 01:22:46,970 --> 01:22:50,050 Ce est juste une apparence meilleure version 1845 01:22:50,050 --> 01:22:51,967 pourrait être plus facile à comprendre que les gens utilisent. 1846 01:22:51,967 --> 01:22:53,716 GABE: Ouais, pour être honnête, ce signe du dollar 1847 01:22:53,716 --> 01:22:57,240 que vous voyez dans jQuery, ce est juste la nom d'une fonction qui définit jQuery. 1848 01:22:57,240 --> 01:22:58,614 Il n'a rien de spécial. 1849 01:22:58,614 --> 01:23:03,140 Est-Ce est juste le nom d'une fonction, Comme à peu vous pouvez définir le signe dollar. 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN: Ouais, donc parlé. 1851 01:23:05,670 --> 01:23:06,680 Certaines choses utiles. 1852 01:23:06,680 --> 01:23:10,414 Je cherchais retour aux vieilles quiz. 1853 01:23:10,414 --> 01:23:13,080 Dans les deux dernières quiz, ils ont eu à utiliser ce genre de choses. 1854 01:23:13,080 --> 01:23:15,230 Donc document.ready, afin assurez-vous que tout est 1855 01:23:15,230 --> 01:23:17,410 chargé avant de commencer à faire des choses. 1856 01:23:17,410 --> 01:23:20,120 Sélectionnez un ID, ou sélectionnez une classe, ce serait tout simplement 1857 01:23:20,120 --> 01:23:24,020 devis dot être une certaine classe, Fin de citation. 1858 01:23:24,020 --> 01:23:26,580 Proposez, donc si vous êtes soumettant un formulaire et appel 1859 01:23:26,580 --> 01:23:28,830 cette fonction après la forme présente. 1860 01:23:28,830 --> 01:23:34,210 Valeur, alors disons que je avais une forme la soumission, comme un nom d'utilisateur, un email, 1861 01:23:34,210 --> 01:23:34,950 peu importe. 1862 01:23:34,950 --> 01:23:36,010 Je ai eu une zone de texte. 1863 01:23:36,010 --> 01:23:37,670 Donc, je suis en tapant dans cette zone de texte. 1864 01:23:37,670 --> 01:23:42,170 Eh bien, si vous voulez obtenir la valeur sortir de cette zone de texte, vous utilisez dot val. 1865 01:23:42,170 --> 01:23:44,050 Et puis, ici-bas, dot HTML est le même 1866 01:23:44,050 --> 01:23:47,710 ce est comme document de dot getElementByID dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Alors que cela va revenir vous le code HTML que ID. 1868 01:23:50,890 --> 01:23:55,080 Ici, il suffit d'utiliser une certaine ID ou tout autre point HTML. 1869 01:23:55,080 --> 01:23:56,930 Ce obtiendrez le HTML à partir de cet élément. 1870 01:23:56,930 --> 01:24:00,130 Si vous vouliez changer alors que HTML, vous pouvez passer quelque chose. 1871 01:24:00,130 --> 01:24:05,600 Donc, vous seriez comme HTML point, puis à l'intérieur, citations, nouvelle HTML ou quelque chose. 1872 01:24:05,600 --> 01:24:07,490 >> GABE: OK, donc AJAX. 1873 01:24:07,490 --> 01:24:10,347 Je aime vraiment comprendre AJAX vraiment bien. 1874 01:24:10,347 --> 01:24:12,430 Donc, je veux que vous les gars à AJAX comprendre vraiment bien. 1875 01:24:12,430 --> 01:24:14,221 Parce que si vous le faites, vous êtes assez bien aller 1876 01:24:14,221 --> 01:24:16,810 de comprendre tout ce qui a à voir avec HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript parce que tout vient ainsi en AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX ne est pas une langue. 1879 01:24:25,130 --> 01:24:27,000 AJAX est une technique. 1880 01:24:27,000 --> 01:24:31,690 Et il utilise beaucoup de différents outils. 1881 01:24:31,690 --> 01:24:35,090 AJAX signifie XML asynchrone JavaScript. 1882 01:24:35,090 --> 01:24:36,730 Ainsi, le procédé, la langue, les données. 1883 01:24:36,730 --> 01:24:40,610 >> Donc, la langue principale que nous utilisons en AJAX pour déclencher tout 1884 01:24:40,610 --> 01:24:42,830 et de gérer tout plus tard est JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Ce est pourquoi il se rapporte très proche de JavaScript. 1886 01:24:45,160 --> 01:24:49,810 Et puis asynchrone est parce que nous ne le faisons pas 1887 01:24:49,810 --> 01:24:51,980 tout à la fois lorsque nous chargement de la page. 1888 01:24:51,980 --> 01:24:57,190 Ce est la chose que nous pouvons faire des choses en quelque sorte dans parallèle. 1889 01:24:57,190 --> 01:24:59,725 L'idée principale derrière AJAX est que vous voulez 1890 01:24:59,725 --> 01:25:02,170 pour obtenir des informations spécifiques. 1891 01:25:02,170 --> 01:25:06,450 Par exemple, lorsque vous tapez nouvelle nom d'utilisateur lorsque vous enregistrez un nom d'utilisateur, 1892 01:25:06,450 --> 01:25:08,520 mon nom d'utilisateur est abc123. 1893 01:25:08,520 --> 01:25:11,671 Et puis, à la fin de la formulaire, vous devez cliquer sur Soumettre. 1894 01:25:11,671 --> 01:25:14,420 Et il a dû aller au serveur, puis vérifier si la base de données, 1895 01:25:14,420 --> 01:25:15,594 abc123 est déjà là. 1896 01:25:15,594 --> 01:25:18,510 Et si ce est déjà là, il dit, nom déjà dans la base de données utilisateur. 1897 01:25:18,510 --> 01:25:21,010 Et ils, vous devez remplir le formulaire en entier à nouveau. 1898 01:25:21,010 --> 01:25:23,110 Et ce était vraiment, vraiment mauvais. 1899 01:25:23,110 --> 01:25:25,440 >> Et puis les gens disent, OK, pourquoi ne pouvons-nous simplement 1900 01:25:25,440 --> 01:25:29,560 faire une petite requête HTTP pour vérifier tout pour voir si cet utilisateur est dans la base de données 1901 01:25:29,560 --> 01:25:32,080 avant que l'utilisateur devait soumettre le formulaire en entier? 1902 01:25:32,080 --> 01:25:36,350 Ainsi, par exemple, lorsque le l'utilisateur a fini de taper abc123, 1903 01:25:36,350 --> 01:25:39,660 disons simplement aller sur le serveur un peu bits et juste obtenir un vrai ou faux 1904 01:25:39,660 --> 01:25:43,080 à partir du serveur pour voir si ce est un nom d'utilisateur valide ou non. 1905 01:25:43,080 --> 01:25:49,250 OK, donc ce est l'un des principaux utilise des AJAX encore de nos jours. 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN: Alors très vite, dans un appel Ajax jQuery, 1907 01:25:52,130 --> 01:25:54,770 vous pouvez indiquer que vous voulez qu'il soit synchrone. 1908 01:25:54,770 --> 01:25:56,330 Vous ne devriez pas faire cela. 1909 01:25:56,330 --> 01:25:57,640 Mais vous pouvez le faire. 1910 01:25:57,640 --> 01:25:59,277 Et si vous l'avez fait, ce qui se passerait? 1911 01:25:59,277 --> 01:26:01,610 Eh bien, par exemple, lorsque vous êtes prendre des nouvelles ou peu importe, 1912 01:26:01,610 --> 01:26:05,464 votre navigateur va juste attendre jusqu'à ce que toute la communication est terminée 1913 01:26:05,464 --> 01:26:08,130 au lieu de vous laisser faire d'autres les choses après vous cliquez dessus. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> GABE: Ce ne est plus passant. 1916 01:26:17,115 --> 01:26:19,681 Oh mon Dieu. 1917 01:26:19,681 --> 01:26:20,180 Désolé! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Ouaip. 1920 01:26:23,601 --> 01:26:25,350 "Dans le passé, le nécessaire pour client demande 1921 01:26:25,350 --> 01:26:26,840 la totalité du contenu d'un site web ". 1922 01:26:26,840 --> 01:26:28,210 Ce est ce que je ai dit. 1923 01:26:28,210 --> 01:26:30,070 Elle nous permet d'envoyer GET ou POST supplémentaires 1924 01:26:30,070 --> 01:26:32,140 demandes sans avoir de recharger notre navigateur. 1925 01:26:32,140 --> 01:26:34,806 Ainsi, à la fin de la journée, nous sommes faire réellement un requêtes HTTP 1926 01:26:34,806 --> 01:26:35,740 ici en utilisant JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Parce qu'avant, nous ne avons utilisé JavaScript modifier le code HTML qui est déjà venu. 1928 01:26:39,700 --> 01:26:43,110 Et maintenant, nous pouvons l'utiliser pour se interfacer avec les serveurs ainsi les web. 1929 01:26:43,110 --> 01:26:46,140 La façon dont cela se passe est que nous avons le client. 1930 01:26:46,140 --> 01:26:47,340 Davin est un client. 1931 01:26:47,340 --> 01:26:50,797 Et il a tout le JavaScript courir parce que le HTML est muet. 1932 01:26:50,797 --> 01:26:51,630 JavaScript est intelligent. 1933 01:26:51,630 --> 01:26:54,690 Donc Davin Davin a sa puce partie et sa part muet. 1934 01:26:54,690 --> 01:26:57,590 Il va utiliser sa part à puce maintenant. 1935 01:26:57,590 --> 01:27:00,860 Il va utiliser JavaScript de demande, par exemple, 1936 01:27:00,860 --> 01:27:04,340 si abc123 est en la base de données ou non. 1937 01:27:04,340 --> 01:27:08,450 >> Donc Davin, se il vous plaît, il vous suffit me envoyer une requête HTTP. 1938 01:27:08,450 --> 01:27:09,197 Merci. 1939 01:27:09,197 --> 01:27:10,530 Alors qu'il vient d'envoyer une requête HTTP. 1940 01:27:10,530 --> 01:27:11,270 Vous voyez ça? 1941 01:27:11,270 --> 01:27:14,700 Et ce est juste de la même façon que toute requête HTTP est envoyée. 1942 01:27:14,700 --> 01:27:16,830 Le navigateur, Google Chrome ou quelque chose, est 1943 01:27:16,830 --> 01:27:19,570 allez voir que Davin de essayez d'envoyer une requête HTTP, 1944 01:27:19,570 --> 01:27:20,930 va aider HM un peu. 1945 01:27:20,930 --> 01:27:23,950 Et cela va aller tout le chemin vers le serveur. 1946 01:27:23,950 --> 01:27:27,370 Maintenant, le serveur va devoir PHP ici, ou toute autre langue. 1947 01:27:27,370 --> 01:27:29,990 Tout comme dans une requête HTTP normal. 1948 01:27:29,990 --> 01:27:31,950 Ce est à peu près une requête HTTP normal. 1949 01:27:31,950 --> 01:27:33,658 >> Ensuite, le serveur va dire, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin me veut vérifier si ce abc123 est dans la base de données. 1951 01:27:37,270 --> 01:27:38,310 Allez parler au modèle. 1952 01:27:38,310 --> 01:27:41,310 Le modèle dit qu'il ne est pas. abc123 est un bon nom d'utilisateur. 1953 01:27:41,310 --> 01:27:47,940 Ensuite, le serveur web va utiliser PHP pour rendre une certaine forme de fichier. 1954 01:27:47,940 --> 01:27:52,280 Il pourrait être littéralement juste un fichier qui contient «oui», ou «non, 1955 01:27:52,280 --> 01:27:53,315 ou quelque chose comme ça. 1956 01:27:53,315 --> 01:27:54,190 Il pourrait être ne importe quel fichier. 1957 01:27:54,190 --> 01:27:57,080 >> Il pourrait être que je vais Davin envoyer une photo d'un canard 1958 01:27:57,080 --> 01:28:01,200 si ce est dans la base de données et envoyer une photo d'un hamster 1959 01:28:01,200 --> 01:28:02,420 si elle ne est pas dans la base de données. 1960 01:28:02,420 --> 01:28:04,294 Ce serait sorte de stupide, mais cela va fonctionner. 1961 01:28:04,294 --> 01:28:07,030 OK, donc je envoie un canard à l'Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin a un canard. 1963 01:28:08,150 --> 01:28:13,330 Et maintenant, qui va pour gérer le canard? 1964 01:28:13,330 --> 01:28:16,390 Smart partie de Davin nouveau, JavaScript afin, non? 1965 01:28:16,390 --> 01:28:18,620 JavaScript a envoyé le demande, et JavaScript 1966 01:28:18,620 --> 01:28:22,300 va recevoir la demande et l'interpréter dans une certaine forme. 1967 01:28:22,300 --> 01:28:26,630 >> Et dans ce sens, il va dire, OK, si canard puis je suis bon. 1968 01:28:26,630 --> 01:28:30,770 Si hamster, alors je vais à-dire, non, le nom d'utilisateur déjà 1969 01:28:30,770 --> 01:28:31,970 existe dans la base de données. 1970 01:28:31,970 --> 01:28:33,845 Mais généralement, vous n'êtes pas va envoyer un canard. 1971 01:28:33,845 --> 01:28:36,740 Vous allez envoyer quelque chose de légèrement plus intelligent. 1972 01:28:36,740 --> 01:28:40,320 Et ce que nous utilisons est XML. 1973 01:28:40,320 --> 01:28:42,690 Et plus récemment, nous utilisons JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON est juste JavaScript Object Notation, qui 1975 01:28:45,629 --> 01:28:47,670 est, fondamentalement, vous obtenez une totalité de l'objet JavaScript. 1976 01:28:47,670 --> 01:28:50,820 Et vous le mettez dans un fichier, juste comme cet objet CS50 que vous les gars ont vu. 1977 01:28:50,820 --> 01:28:53,090 Vous le mettez dans un fichier, et vous envoyez la parole à Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Donc dans ce cas, je voudrais faire un objet JavaScript 1979 01:28:55,850 --> 01:28:59,570 et dire simplement, l'utilisateur existe, oui. 1980 01:28:59,570 --> 01:29:01,630 Ou utilisateur existe, non. 1981 01:29:01,630 --> 01:29:02,810 Et l'envoyer de nouveau à lui. 1982 01:29:02,810 --> 01:29:03,830 Et pourquoi JSON? 1983 01:29:03,830 --> 01:29:07,330 Parce que la personne Qui est reçoive ce est 1984 01:29:07,330 --> 01:29:10,030 allez utiliser JavaScript pour gérer la réponse. 1985 01:29:10,030 --> 01:29:14,970 Et JavaScript fonctionne si bien parce ça se appelle JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Droite? 1987 01:29:15,470 --> 01:29:19,660 Donc, il peut simplement appeler une fonction et obtenir ce bel objet à partir de la réponse. 1988 01:29:19,660 --> 01:29:22,890 Et puis, il va savoir si que l'utilisateur se trouve dans la base de données ou non. 1989 01:29:22,890 --> 01:29:25,230 >> Donc, vous voyez, tout cela venir ensemble dans le serveur web, 1990 01:29:25,230 --> 01:29:28,450 et puis il ya une HTTP à la demande et une réponse HTTP et tout. 1991 01:29:28,450 --> 01:29:30,600 Donc, assurez-vous les gars comprendre cet appel AJAX 1992 01:29:30,600 --> 01:29:37,260 car il vous aide à comprendre tous des concepts que nous parlons. 1993 01:29:37,260 --> 01:29:40,260 >> Alors, voici un exemple d'AJAX avec jQuery. 1994 01:29:40,260 --> 01:29:42,130 Et ici, nous faisons avec get JSON. 1995 01:29:42,130 --> 01:29:45,660 Donc, nous ne essayons pas de faire une image d'un chat ici, ou un canard. 1996 01:29:45,660 --> 01:29:48,110 Nous essayons d'obtenir un fichier JSON. 1997 01:29:48,110 --> 01:29:51,184 Et puis nous attendons ce est fait, point fait. 1998 01:29:51,184 --> 01:29:52,850 Cela signifie que je suis en attente de la réponse. 1999 01:29:52,850 --> 01:29:54,180 Il pourrait prendre un peu de temps. 2000 01:29:54,180 --> 01:29:56,360 Alors, vous voyez un peu le chargement. 2001 01:29:56,360 --> 01:29:59,340 Si vous voulez faire de votre site web. 2002 01:29:59,340 --> 01:30:01,440 Donc dot fait, et puis quoi qui se passe quand ce est fait? 2003 01:30:01,440 --> 01:30:04,040 Vous passez un anonyme fonction, tout comme nous l'avons vu. 2004 01:30:04,040 --> 01:30:07,800 Parce fait est un événement, juste comme cliquer sur une souris ou autre, 2005 01:30:07,800 --> 01:30:08,710 pour jQuery. 2006 01:30:08,710 --> 01:30:13,710 Donc, vous passez dans cette fonction avec données, textes, le statut et jqXHR. 2007 01:30:13,710 --> 01:30:15,790 Et dans le fond, ce est seulement certaines variables 2008 01:30:15,790 --> 01:30:22,160 que vous pouvez utiliser plus tard pour avoir l'état de la requête HTTP, 2009 01:30:22,160 --> 01:30:24,470 les données qu'il va d'envoyer de nouveau à vous. 2010 01:30:24,470 --> 01:30:28,740 Ainsi donc, vous pouvez plus tard interpréter et faire quelque chose constructif avec elle. 2011 01:30:28,740 --> 01:30:30,240 Et si elle échoue, quand pourrait-il échouer? 2012 01:30:30,240 --> 01:30:33,780 Eh bien, quand la requête HTTP donne Vous 500 ou quelque chose comme ça. 2013 01:30:33,780 --> 01:30:37,420 Ensuite, il va vous dire la état, quel genre d'échec qui était, 2014 01:30:37,420 --> 01:30:38,420 et toutes sortes de choses. 2015 01:30:38,420 --> 01:30:40,630 Vous devez vous assurer pour gérer les deux cas, 2016 01:30:40,630 --> 01:30:42,770 sinon le programme devient fou. 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN: Donc oui, ce est exactement ce que vous avez vu sur votre dernier p-set. 2018 01:30:45,820 --> 01:30:49,720 L'appel AJAX est réelle dans le JSON get. 2019 01:30:49,720 --> 01:30:50,587 Ce est l'appel. 2020 01:30:50,587 --> 01:30:52,920 Et puis, ce est comme dot fait il vérifie si ce est un succès. 2021 01:30:52,920 --> 01:30:55,620 Si elle est réussie, vous voulez de faire quelque chose avec les données. 2022 01:30:55,620 --> 01:30:59,290 Vous obtenez en retour de celle Données de demande JSON. 2023 01:30:59,290 --> 01:31:00,600 Ce est ce que vous obtenez en retour. 2024 01:31:00,600 --> 01:31:04,470 Donc, si vous vous souvenez de votre P-set, beaucoup d'entre vous étaient comme support de données i 2025 01:31:04,470 --> 01:31:06,302 ou autre, lien de dot ou le titre. 2026 01:31:06,302 --> 01:31:08,260 Tout ce qui est de revenir à partir de cette JSON, quelle que soit 2027 01:31:08,260 --> 01:31:11,020 les champs sont dans cet objet JSON, ce est ce que vous obtenez en arrière. 2028 01:31:11,020 --> 01:31:12,394 Données est ce que vous obtenez en arrière. 2029 01:31:12,394 --> 01:31:15,510 le statut du texte, juste quelque chose qui vous permet de savoir ce qui est arrivé. 2030 01:31:15,510 --> 01:31:20,570 Et puis, le jqXHR, ce est juste la requête HTTP XML jQuery. 2031 01:31:20,570 --> 01:31:21,990 Ce est juste comme un objet. 2032 01:31:21,990 --> 01:31:23,932 Et puis échouer, tout comme Gabe dit. 2033 01:31:23,932 --> 01:31:27,140 GABE: Dans notre petit exemple de abc123 juste pour vérifier si ce est dans la base de données 2034 01:31:27,140 --> 01:31:32,260 ou non, les données seraient quelque chose que vous ferait, si le nom d'utilisateur de points de données existe, 2035 01:31:32,260 --> 01:31:37,720 qui est ce que votre PHP généré pour vous, si le nom d'utilisateur de points de données existe, 2036 01:31:37,720 --> 01:31:40,880 Je vais alerter, utilisateur nom existe déjà. 2037 01:31:40,880 --> 01:31:44,300 Sinon, je vais juste laisser le utilisateur procéder complétant le formulaire. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, la sécurité, cool. 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN: me veux? 2041 01:31:52,060 --> 01:31:54,500 >> GABE: Je aime celui-ci. 2042 01:31:54,500 --> 01:31:57,680 Donc, quelque chose qui semble familier. 2043 01:31:57,680 --> 01:31:59,750 Nous avons presque terminé. 2044 01:31:59,750 --> 01:32:02,670 Donc, ce est juste l'exemple vous les gars ont vu en classe. 2045 01:32:02,670 --> 01:32:04,860 Vous utilisiez argv1 ici. 2046 01:32:04,860 --> 01:32:06,460 Ce est comme un argument de ligne de commande. 2047 01:32:06,460 --> 01:32:09,270 Et nous MEM copie que dans un tampon de taille 12. 2048 01:32:09,270 --> 01:32:12,560 Quel est le problème ici? 2049 01:32:12,560 --> 01:32:13,660 Débordement de tampon! 2050 01:32:13,660 --> 01:32:15,400 Parce que nous avons un tampon de taille 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 pourrait avoir une taille de deux milliards de dollars. 2052 01:32:18,400 --> 01:32:19,960 Nous ne faisons pas de vérifications de limites. 2053 01:32:19,960 --> 01:32:24,970 On peut donc copier beaucoup de mémoire. 2054 01:32:24,970 --> 01:32:28,630 Et nous serons particulièrement mal à ce sujet. 2055 01:32:28,630 --> 01:32:32,600 Que pourrions-nous faire ce est très, très moyen dans ce cas? 2056 01:32:32,600 --> 01:32:33,278 Oui? 2057 01:32:33,278 --> 01:32:36,528 PUBLIC: Une partie des deux milliards d'choses contient du code exécutable qui retourne 2058 01:32:36,528 --> 01:32:38,127 [Inaudible]. 2059 01:32:38,127 --> 01:32:38,710 GABE: Exactement. 2060 01:32:38,710 --> 01:32:41,110 Donc, ce est le genre de chose que les gens utilisent 2061 01:32:41,110 --> 01:32:43,344 jailbreaker un iPhone, par exemple. 2062 01:32:43,344 --> 01:32:44,260 Donc, ce genre de chose. 2063 01:32:44,260 --> 01:32:48,610 Parce que vous pouvez juste faire le dispositif exécuter le code que vous aimez. 2064 01:32:48,610 --> 01:32:50,247 La solution, de sorte que la solution est facile. 2065 01:32:50,247 --> 01:32:51,330 Il suffit de vérifier les limites. 2066 01:32:51,330 --> 01:32:53,455 Vous vérifiez pour nulle parce nous vérifions toujours null 2067 01:32:53,455 --> 01:32:54,940 lorsque nous traitons avec des cordes. 2068 01:32:54,940 --> 01:32:57,840 Et puis, vous prenez le longueur de chaîne avant. 2069 01:32:57,840 --> 01:33:00,150 Et si la chaîne longueur est une chaîne valide 2070 01:33:00,150 --> 01:33:03,700 longueur, qui est à l'intérieur de 0 et 12, alors nous sommes bien. 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN: Si vous ne cochez pas null, très rapide, ce qui va arriver? 2072 01:33:07,144 --> 01:33:07,810 Il va SEG faute. 2073 01:33:07,810 --> 01:33:10,850 Pourquoi il SEG faute? 2074 01:33:10,850 --> 01:33:12,510 Parce que vous appelez strlen sur null. 2075 01:33:12,510 --> 01:33:13,010 GABE: Ouais. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Vrai ou faux, en utilisant une mot de passe est une bonne idée. 2078 01:33:19,630 --> 01:33:20,430 >> AUDIENCE: Faux. 2079 01:33:20,430 --> 01:33:21,150 >> GABE: Faux. 2080 01:33:21,150 --> 01:33:23,870 Utilisez des mots de passe, et de nombreux grands, longs. 2081 01:33:23,870 --> 01:33:26,050 icônes cadenas assurer la sécurité. 2082 01:33:26,050 --> 01:33:27,080 >> AUDIENCE: Faux. 2083 01:33:27,080 --> 01:33:27,749 >> GABE: Faux. 2084 01:33:27,749 --> 01:33:28,790 Il ne veut rien dire. 2085 01:33:28,790 --> 01:33:30,480 Ce est juste une icône. 2086 01:33:30,480 --> 01:33:32,824 SSL protège contre un homme dans l'attaque du milieu. 2087 01:33:32,824 --> 01:33:33,490 AUDIENCE: Faux. 2088 01:33:33,490 --> 01:33:34,110 GABE: Faux. 2089 01:33:34,110 --> 01:33:35,355 OK, donc tous ceux qui sont fausses. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Nice. 2092 01:33:39,490 --> 01:33:40,220 [Inaudible] 2093 01:33:40,220 --> 01:33:42,500 Vous voulez parler à ce sujet? 2094 01:33:42,500 --> 01:33:43,259 Votre tour. 2095 01:33:43,259 --> 01:33:45,050 Davin: Types d'attaques, man in the middle. 2096 01:33:45,050 --> 01:33:47,134 Qu'est-ce qu'un homme dans l'attaque du milieu? 2097 01:33:47,134 --> 01:33:48,050 AUDIENCE: [inaudible]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN: Si vous envoyez un HTTP demande, ils pourraient le faire, non? 2100 01:33:54,020 --> 01:33:57,890 Mais si vous envoyez HTTPS, ils ne sera probablement pas capable de faire cela. 2101 01:33:57,890 --> 01:33:59,952 Il ya beaucoup de points le long de votre connexion. 2102 01:33:59,952 --> 01:34:00,660 Vous avez routeurs. 2103 01:34:00,660 --> 01:34:01,746 Vous avez des serveurs DNS. 2104 01:34:01,746 --> 01:34:04,120 Si quelqu'un est physiquement capable de voyez ce que vous envoyez, 2105 01:34:04,120 --> 01:34:06,140 si quelqu'un est capable de effectivement obtenir entre vous, 2106 01:34:06,140 --> 01:34:08,840 le client et le serveur, et est en mesure de voir ce que vous envoyez, 2107 01:34:08,840 --> 01:34:10,298 ce est un homme dans l'attaque du milieu. 2108 01:34:10,298 --> 01:34:14,287 Donc, pour voir ce que vous essayez d'obtenir de le serveur, ou est capable de see-- pire, 2109 01:34:14,287 --> 01:34:16,620 vous pourriez être en mesure de voir cookies ou quelque chose comme ça. 2110 01:34:16,620 --> 01:34:19,290 >> Ainsi, par exemple, si vous ne utilisez pas SSL, il 2111 01:34:19,290 --> 01:34:21,900 pourrait être en mesure de voir Votre session cookies d'identification. 2112 01:34:21,900 --> 01:34:25,460 Et cela se appelle le détournement de session parce qu'il voit vos cookies d'identification, 2113 01:34:25,460 --> 01:34:28,317 puis il est capable d'aller à cette site Web et faire passer pour vous. 2114 01:34:28,317 --> 01:34:31,150 Parce que, tout comme dans PHP, ne oubliez pas quand nous identifié, que faisons-nous? 2115 01:34:31,150 --> 01:34:33,340 Nous avons mis l'ID de session égal à ID. 2116 01:34:33,340 --> 01:34:34,810 Alors que vous identifie. 2117 01:34:34,810 --> 01:34:38,300 Ce est pourquoi vous pouvez voir votre portefeuille et le portefeuille de pas tout le monde. 2118 01:34:38,300 --> 01:34:42,320 >> Eh bien, si je suis en mesure d'obtenir ce cookie, alors je peux connecter sur cette page. 2119 01:34:42,320 --> 01:34:45,380 Et puis, je peux juste voir votre stuff et commencer à acheter et vendre des choses. 2120 01:34:45,380 --> 01:34:46,800 Donc, ce est le détournement de session. 2121 01:34:46,800 --> 01:34:50,810 Mais vous ne devriez pas être en mesure de sorte que vous to-- peut utiliser l'homme dans l'attaque milieu 2122 01:34:50,810 --> 01:34:52,290 même si elles sont en utilisant SSL. 2123 01:34:52,290 --> 01:34:53,520 Mais vous ne devriez pas être en mesure de. 2124 01:34:53,520 --> 01:34:56,580 Se ils utilisent SSL, vous ne pouvez pas les détournements de session. 2125 01:34:56,580 --> 01:34:58,927 Pourquoi? 2126 01:34:58,927 --> 01:35:01,135 Parce que tout est crypté, droit? se il est crypté, 2127 01:35:01,135 --> 01:35:03,509 et je suis toujours un homme dans le milieu, je reçois toujours vos données. 2128 01:35:03,509 --> 01:35:04,279 C'est très bien. 2129 01:35:04,279 --> 01:35:05,070 Mais il est crypté. 2130 01:35:05,070 --> 01:35:07,750 Donc, je ne peux pas vraiment l'utiliser. 2131 01:35:07,750 --> 01:35:09,840 Donc, ce est deux. 2132 01:35:09,840 --> 01:35:11,544 >> Très rapidement, la demande cross site faux. 2133 01:35:11,544 --> 01:35:13,960 Ce est juste se il ya un lien et ce lien fait quelque chose 2134 01:35:13,960 --> 01:35:14,890 que vous ne pensez pas qu'il devrait faire. 2135 01:35:14,890 --> 01:35:18,150 Ainsi, par exemple, si la liaison était va acheter des actions ou vendre des actions, 2136 01:35:18,150 --> 01:35:19,360 et vous ne saviez pas que. 2137 01:35:19,360 --> 01:35:22,040 Vous avez cliqué sur le lien, envoyé une demande, acheté 2138 01:35:22,040 --> 01:35:24,240 ou quelque chose que vendu vous ne avez pas l'intention de faire. 2139 01:35:24,240 --> 01:35:25,120 Ce est cela. 2140 01:35:25,120 --> 01:35:30,720 >> Cross site scripting, alors voici, vous êtes de passage dans la via variable q, 2141 01:35:30,720 --> 01:35:33,510 au lieu de passer dans une sorte de la valeur, peut-être q est comme un nom. 2142 01:35:33,510 --> 01:35:36,560 Donc, au lieu de passer q égaux Davin ou quelque chose comme ça, 2143 01:35:36,560 --> 01:35:38,740 si vous ne utilisez pas HTML les caractères spéciaux, si vous 2144 01:35:38,740 --> 01:35:43,100 ne échappent pas à ce pour se assurer que ce est OK, alors je pourrais passer à la place, 2145 01:35:43,100 --> 01:35:46,910 disons ici que je dis impression ou quelque chose comme ça, 2146 01:35:46,910 --> 01:35:51,070 alors je pourrais passer ici un appel de script. 2147 01:35:51,070 --> 01:35:53,140 >> Alors, au lieu de juste obtenir une variable, 2148 01:35:53,140 --> 01:35:54,960 Je voudrais ensuite exécuter cet appel de script. 2149 01:35:54,960 --> 01:35:57,065 Donc l'intérieur ce script appeler, que fait-il? 2150 01:35:57,065 --> 01:36:00,190 emplacement de point du document, que ça va modifier l'emplacement du document. 2151 01:36:00,190 --> 01:36:02,290 Donc, je vais rediriger à un autre endroit. 2152 01:36:02,290 --> 01:36:08,170 Il a appelé méchant dans cet exemple, très bon. 2153 01:36:08,170 --> 01:36:10,536 Impossible de trouver le mot. 2154 01:36:10,536 --> 01:36:12,410 Et puis, ce qui est encore pire, ce est que je vais 2155 01:36:12,410 --> 01:36:16,832 pour ensuite définir cookies, qui est un peu variables que je ai dans ce site. 2156 01:36:16,832 --> 01:36:19,040 Je vais le mettre égale au cookie document de points. 2157 01:36:19,040 --> 01:36:20,660 Par conséquent, je vais pour voler votre cookie. 2158 01:36:20,660 --> 01:36:22,951 Et je vais rediriger certaines informations à un site Web 2159 01:36:22,951 --> 01:36:25,120 que vous ne devriez pas être accédez. 2160 01:36:25,120 --> 01:36:29,250 Et tout cela se produit parce que vous êtes pas échapper ce que vous avez vu. 2161 01:36:29,250 --> 01:36:29,910 Ouais? 2162 01:36:29,910 --> 01:36:32,160 >> AUDIENCE: Donc, juste pour le préciser, ce est 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com que est vulnérable à ce. 2164 01:36:37,550 --> 01:36:39,300 Donc, ce lien peut apparaître sur une page donnée. 2165 01:36:39,300 --> 01:36:42,200 Quelqu'un clique dessus, va à vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Vous avez un cookie pour vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Disons que Facebook est vulnérables, afin facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Vous avez votre cookie Facebook. 2169 01:36:48,310 --> 01:36:50,925 Ce que ce est fait, vous êtes va facebook.com, 2170 01:36:50,925 --> 01:36:53,990 il est immédiatement redirigeant vous badguy.com, 2171 01:36:53,990 --> 01:36:57,182 mais y compris les informations de votre cookie. 2172 01:36:57,182 --> 01:36:59,310 Donc, ce est une redirection rapide, mais votre cookie Facebook 2173 01:36:59,310 --> 01:37:02,572 est inclus avec cette redirection, et ce est la façon dont ils [inaudible]. 2174 01:37:02,572 --> 01:37:04,280 GABE: Ouais, il ya des choses très moyennes 2175 01:37:04,280 --> 01:37:06,070 que les gens peuvent faire si il ya cette. 2176 01:37:06,070 --> 01:37:09,190 Par exemple, si autorisé Facebook tout le monde pour changer votre nom d'utilisateur, 2177 01:37:09,190 --> 01:37:11,680 et ils ne ont fait aucun vérifications de bonne santé, de sorte que vous 2178 01:37:11,680 --> 01:37:16,810 pourrait insérer une chose que JavaScript change votre image à un hamster. 2179 01:37:16,810 --> 01:37:22,590 Et qui insère le même JavaScript dans tout le monde qui consulte votre page. 2180 01:37:22,590 --> 01:37:26,400 Donc tout le monde qui voit votre page a la même chose dans le nom d'utilisateur. 2181 01:37:26,400 --> 01:37:30,104 Et parce que ce est un virus, il se étend de façon exponentielle. 2182 01:37:30,104 --> 01:37:32,270 DAVIN: Nous allons passer la dernière une, puis nous aurons terminé. 2183 01:37:32,270 --> 01:37:34,120 Donc, ce est juste un autre exemple. 2184 01:37:34,120 --> 01:37:36,120 Donc, ce est qu'ils ne sont pas échapper à leur table SQL. 2185 01:37:36,120 --> 01:37:37,090 Ainsi, vous pouvez laisser tomber. 2186 01:37:37,090 --> 01:37:38,805 Donc, vous voulez échapper des choses. 2187 01:37:38,805 --> 01:37:44,010 Ce était l'exemple précédent avec le site scripting croix. 2188 01:37:44,010 --> 01:37:45,430 Désolé, nous avons couru un peu tard. 2189 01:37:45,430 --> 01:37:46,870 Demain, désolé! 2190 01:37:46,870 --> 01:37:48,560 Demain, nous avons des heures de bureau. 2191 01:37:48,560 --> 01:37:50,870 Donc, les heures de bureau dans Cabbot 8h00-11:00. 2192 01:37:50,870 --> 01:37:55,240 Les heures de bureau sont strictement pour des questions de quiz. 2193 01:37:55,240 --> 01:37:56,587