1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH BLUMBERG: Salut tout le monde. 3 00:00:07,030 --> 00:00:09,530 Nous allons commencer juste un couple de minutes d'avance 4 00:00:09,530 --> 00:00:11,738 puisque nous avons un tas de matériel pour passer à travers. 5 00:00:11,738 --> 00:00:12,790 Je suis Hannah. 6 00:00:12,790 --> 00:00:13,865 Je suis un TF. 7 00:00:13,865 --> 00:00:16,239 Maria va rejoindre nous en seulement quelques minutes. 8 00:00:16,239 --> 00:00:17,560 Elle enseigne la section droite avant. 9 00:00:17,560 --> 00:00:19,351 Je enseigne section de droite après, nous allons donc 10 00:00:19,351 --> 00:00:21,200 de le tenir à l'heure et demie. 11 00:00:21,200 --> 00:00:25,490 >> Donc, comme vous le verrez ici, nous avons tout à fait quelques sujets que nous avons besoin de passer à travers, 12 00:00:25,490 --> 00:00:27,200 de sorte que nous allons aller un peu vite. 13 00:00:27,200 --> 00:00:31,140 Mais si à un moment nous disons quelque chose trop rapidement ou vous ne comprenez pas, 14 00:00:31,140 --> 00:00:33,170 se sentir libre d'interrompre avec des questions. 15 00:00:33,170 --> 00:00:36,610 Nous voulons être en mesure d'en faire une session d'examen aussi utile à vous tous 16 00:00:36,610 --> 00:00:37,973 que possible. 17 00:00:37,973 --> 00:00:38,920 Impressionnant. 18 00:00:38,920 --> 00:00:41,650 >> Donc, nous allons sauter à droite avec certains sujets qui nous fait 19 00:00:41,650 --> 00:00:46,980 très, très brièvement couvert pour la Quiz 0 dans la session d'examen quizz 0. 20 00:00:46,980 --> 00:00:48,840 Ainsi, à partir des listes liées. 21 00:00:48,840 --> 00:00:52,090 Il suffit donc de vous assurer que vous avez une certaine connaissances de base sur les listes chaînées 22 00:00:52,090 --> 00:00:55,110 et sont à l'aise certaines des opérations de base. 23 00:00:55,110 --> 00:00:58,560 >> Il suffit donc d'examiner, liée listes sont mieux que les tableaux 24 00:00:58,560 --> 00:01:01,020 parce qu'ils peuvent se développer dynamiquement. 25 00:01:01,020 --> 00:01:03,300 Donc nous avons cette énorme avantage. 26 00:01:03,300 --> 00:01:06,031 Nous les avons vus utilisés dans les tables de hachage lorsque nous 27 00:01:06,031 --> 00:01:08,280 Je ne sais pas exactement combien de choses que nous allons vouloir 28 00:01:08,280 --> 00:01:10,900 à insérer dans notre structure de données. 29 00:01:10,900 --> 00:01:15,700 Malheureusement, nous avons des morceaux de la liste chaînée partout dans la mémoire, 30 00:01:15,700 --> 00:01:20,820 de sorte que nous ne serons pas nécessairement capable de faire un accès en temps constant 31 00:01:20,820 --> 00:01:22,502 à tout élément dans la liste chaînée. 32 00:01:22,502 --> 00:01:24,210 Afin de trouver un élément particulier, nous 33 00:01:24,210 --> 00:01:26,510 avoir à parcourir toute la voie depuis le début. 34 00:01:26,510 --> 00:01:30,610 Donc, gardez à l'esprit que la plupart des opérations de base sont les oméga de 1. 35 00:01:30,610 --> 00:01:32,130 Donc insert va juste prendre 1. 36 00:01:32,130 --> 00:01:37,520 Supprimer va prendre car nous n avoir à aller le trouver dans la liste. 37 00:01:37,520 --> 00:01:39,260 Et la recherche pourrait prendre, au pire, n. 38 00:01:39,260 --> 00:01:42,330 Nous ne pouvons pas faire quelque chose comme recherche binaire sur une liste chaînée 39 00:01:42,330 --> 00:01:45,101 Puisque nous ne pouvons tout simplement sauter au hasard au milieu. 40 00:01:45,101 --> 00:01:45,600 Bien. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Impressionnant. 43 00:01:48,960 --> 00:01:50,270 >> Un peu de piles. 44 00:01:50,270 --> 00:01:53,980 Ceci, à nouveau, est venu sur le quizz 0, de sorte que vous devrait être super à l'aise avec elle. 45 00:01:53,980 --> 00:01:57,210 Mais pour les piles, nous vous demandons à retenir une pile de plateaux. 46 00:01:57,210 --> 00:01:59,940 Et ça va être le premier entré, dernier sorti. 47 00:01:59,940 --> 00:02:02,272 Donc, nous nous classons les choses dans la pile, et ensuite 48 00:02:02,272 --> 00:02:04,980 si nous essayons de prendre quelque chose off-- que nous appelons sautaient 49 00:02:04,980 --> 00:02:06,581 l'stack-- nous viennent du haut. 50 00:02:06,581 --> 00:02:09,289 Et si nous voulons mettre quelque chose dans la pile, nous appelons cela de pousser. 51 00:02:09,289 --> 00:02:13,170 Donc, il va toujours être en grandissant à partir du bas, comme une pile de plateaux. 52 00:02:13,170 --> 00:02:14,540 Impressionnant. 53 00:02:14,540 --> 00:02:17,607 >> Nous avons mis en place des piles vus avec les deux listes chaînées et les tableaux. 54 00:02:17,607 --> 00:02:19,440 Si vous êtes à la mise en œuvre avec des tableaux, vous voulez 55 00:02:19,440 --> 00:02:22,350 faire en sorte de garder la trace de à la fois la taille et la capacité. 56 00:02:22,350 --> 00:02:27,540 Donc, la taille va être le courant nombre de choses dans votre pile, 57 00:02:27,540 --> 00:02:32,900 alors que la capacité est le nombre total des choses que vous pouvez stocker dans votre pile. 58 00:02:32,900 --> 00:02:34,220 Bien. 59 00:02:34,220 --> 00:02:35,767 >> Très similaire, nous avons des files d'attente. 60 00:02:35,767 --> 00:02:38,850 Dans ce cas, au lieu de penser une pile de plateaux, pensez à une ligne. 61 00:02:38,850 --> 00:02:40,697 Cela va être le premier entré, premier sorti. 62 00:02:40,697 --> 00:02:42,780 Donc, si vous la queue pour quelque chose à la boutique, 63 00:02:42,780 --> 00:02:46,920 nous espérons que la première personne dans ligne va être aidé en premier. 64 00:02:46,920 --> 00:02:49,350 >> Au lieu de dire poussée et pop comme nous le faisons pour la pile, 65 00:02:49,350 --> 00:02:52,000 nous disons simplement enqueue et dequeue. 66 00:02:52,000 --> 00:02:54,970 Et encore une fois, si vous êtes mise en œuvre de ce avec un tableau, 67 00:02:54,970 --> 00:02:56,720 nous avons besoin de garder une trace non seulement de la taille 68 00:02:56,720 --> 00:03:02,390 et la capacité, mais aussi la tête, ce qui va être l'avant de notre file d'attente. 69 00:03:02,390 --> 00:03:03,010 Bien. 70 00:03:03,010 --> 00:03:05,770 Vous avez des questions sur tout cela? 71 00:03:05,770 --> 00:03:06,320 Impressionnant. 72 00:03:06,320 --> 00:03:07,640 Déplacement à droite le long. 73 00:03:07,640 --> 00:03:08,564 >> OK, tables de hachage. 74 00:03:08,564 --> 00:03:10,605 Voici où il commence à devenir vraiment intéressant. 75 00:03:10,605 --> 00:03:14,150 Donc, une table de hachage est une mise en oeuvre d'un tableau associatif. 76 00:03:14,150 --> 00:03:16,700 Donc, fondamentalement, ce qui est arrivé est que nous avons tous cette entrée, 77 00:03:16,700 --> 00:03:18,750 et nous lui donnons à un hachage fonction qui dit, 78 00:03:18,750 --> 00:03:21,840 OK, cela est où dans le table de hachage des il appartient. 79 00:03:21,840 --> 00:03:24,860 >> Ainsi, la fonction la plus simple de hachage que nous avons vu est juste de dire, 80 00:03:24,860 --> 00:03:28,170 OK, supposons que nous voulons mettre cordes à notre table de hachage. 81 00:03:28,170 --> 00:03:30,870 Et une idée très simple pourrait être de dire, OK, 82 00:03:30,870 --> 00:03:34,350 disons simplement Trier par la première lettre du mot. 83 00:03:34,350 --> 00:03:37,570 Donc vous pouvez voir ici, nous prenons la banane, nous mettons à travers une fonction de hachage, 84 00:03:37,570 --> 00:03:40,190 et il dit, hey, ce devrait aller à l'index 1. 85 00:03:40,190 --> 00:03:45,120 >> Ainsi, nous pouvons penser essentiellement d'un hachage table comme un tas de différents seaux. 86 00:03:45,120 --> 00:03:49,880 Et chacun de ces seaux va pour maintenir la tête d'une liste chaînée. 87 00:03:49,880 --> 00:03:55,030 Et dans cette liste chaînée est où nous pouvons effectivement mis différents éléments de données. 88 00:03:55,030 --> 00:03:57,820 >> Donc la plongée un peu plus dans une fonction de hachage, voici 89 00:03:57,820 --> 00:03:59,870 l'exemple que je viens décrit où nous venons de dire, 90 00:03:59,870 --> 00:04:02,460 OK, prendre la première lettre de la parole et nous sommes 91 00:04:02,460 --> 00:04:03,990 aller faire le tri dans les seaux. 92 00:04:03,990 --> 00:04:08,490 Donc, vraisemblablement, il y aura 26 seaux, une pour chaque lettre de l'alphabet. 93 00:04:08,490 --> 00:04:10,090 Pourquoi est-ce pas une grande fonction de hachage? 94 00:04:10,090 --> 00:04:13,461 Ce qui rend cette non-idéal? 95 00:04:13,461 --> 00:04:13,960 Oui. 96 00:04:13,960 --> 00:04:15,790 >> AUDIENCE: Vous allez d'avoir des collisions. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH BLUMBERG: Oui, exactement. 98 00:04:16,390 --> 00:04:18,000 Vous allez avoir des collisions. 99 00:04:18,000 --> 00:04:18,954 Voilà donc une chose. 100 00:04:18,954 --> 00:04:21,620 Et nous allons parler de la façon dont nous pouvons fixer les collisions dans une seconde. 101 00:04:21,620 --> 00:04:23,980 Un autre problème avec cette notamment fonction de hachage 102 00:04:23,980 --> 00:04:25,980 est que notre différente seaux vont être 103 00:04:25,980 --> 00:04:28,960 d'assez radicalement différentes tailles. 104 00:04:28,960 --> 00:04:33,840 >> Nous savons qu'il ya un tas plus de mots qui commencent par A à X, 105 00:04:33,840 --> 00:04:38,980 alors nous allons avoir de très seaux asymétriques dans notre table de hachage. 106 00:04:38,980 --> 00:04:40,050 Bien. 107 00:04:40,050 --> 00:04:41,340 Donc oui, revenons à le point de collisions. 108 00:04:41,340 --> 00:04:42,900 Que faisons-nous si il ya une collision? 109 00:04:42,900 --> 00:04:44,490 >> Nous avons un couple de différentes options. 110 00:04:44,490 --> 00:04:47,600 Donc un, donc supposons que nous essayons de mettre Berry dans notre table de hachage. 111 00:04:47,600 --> 00:04:50,370 Et nous voyons, oh, nous voulons de le mettre dans l'index 1, 112 00:04:50,370 --> 00:04:52,070 mais la banane vit déjà là. 113 00:04:52,070 --> 00:04:53,110 Qu'allons nous faire? 114 00:04:53,110 --> 00:04:54,560 Nous avons deux options principales. 115 00:04:54,560 --> 00:04:58,050 >> Le numéro un est que nous pouvons dire, OK, il n'y a pas de place dans l'index 1, 116 00:04:58,050 --> 00:05:03,210 mais gardons juste en regardant à travers jusqu'à ce que nous pouvons trouver un autre endroit ouvert. 117 00:05:03,210 --> 00:05:08,490 Donc, nous allons dire, OK, disons-le dans la tache 3. 118 00:05:08,490 --> 00:05:09,240 Voilà une option. 119 00:05:09,240 --> 00:05:11,470 Qui est appelé sondage linéaire. 120 00:05:11,470 --> 00:05:15,500 >> Et une deuxième option est dit, OK, bien, disons simplement faire de chacun de ces seaux 121 00:05:15,500 --> 00:05:17,470 être têtes de listes chaînées. 122 00:05:17,470 --> 00:05:21,910 Et il est OK si il ya plus d'une chose dans un seau. 123 00:05:21,910 --> 00:05:23,820 Nous allons juste annexer sur le devant. 124 00:05:23,820 --> 00:05:26,032 Donc, ici vous pouvez voir, OK, lorsque nous avons inséré des baies, nous 125 00:05:26,032 --> 00:05:28,240 juste pris la banane, sorte de poussé un peu plus 126 00:05:28,240 --> 00:05:29,842 et jeta une baie là. 127 00:05:29,842 --> 00:05:31,050 Et cela est également tout à fait bien. 128 00:05:31,050 --> 00:05:32,830 Ceci est appelé chaînage séparé. 129 00:05:32,830 --> 00:05:38,100 Vous pouvez penser à cela comme un peu comme une gamme de têtes de listes chaînées. 130 00:05:38,100 --> 00:05:41,950 Des questions sur hachage tables, fonctions de hachage? 131 00:05:41,950 --> 00:05:44,290 Impressionnant. 132 00:05:44,290 --> 00:05:45,470 >> Les arbres et les essais. 133 00:05:45,470 --> 00:05:47,287 Ainsi, un arbre est toute sorte de la structure de données 134 00:05:47,287 --> 00:05:49,453 dans lequel il ya une sorte de la hiérarchie ou une sorte 135 00:05:49,453 --> 00:05:51,247 de classement à vos différents objets. 136 00:05:51,247 --> 00:05:53,580 Et cela va devenir super clair quand nous voyons un exemple. 137 00:05:53,580 --> 00:05:56,960 Et nous avons vu essais, le long avec des tables de hachage, dans pset5-- 138 00:05:56,960 --> 00:06:00,700 qui, encore une fois, tout à fait juste jeu pour cette quiz-- comme une autre des données 139 00:06:00,700 --> 00:06:03,110 structures que nous pouvons stocker des choses différentes. 140 00:06:03,110 --> 00:06:06,782 Dans le cas d'un dictionnaire, nous avons stocké un tas de mots. 141 00:06:06,782 --> 00:06:08,240 Donc, nous allons jeter un oeil à quelques arbres. 142 00:06:08,240 --> 00:06:10,190 Ainsi, ceci est un exemple d'un arbre. 143 00:06:10,190 --> 00:06:13,105 Il a une sorte de structure, que structure hiérarchique, 144 00:06:13,105 --> 00:06:15,920 où vous pouvez voir que ce 1 nœud au sommet 145 00:06:15,920 --> 00:06:20,750 a une sorte de rang 2 et 3 ci-dessus, qui sont au-dessus de 4, 5, et 6 et 7, 146 00:06:20,750 --> 00:06:22,860 qui sont au-dessus 8 et 9. 147 00:06:22,860 --> 00:06:25,210 Voilà donc tout ce que nous entendons par un arbre, de sorte que vous peut juste genre 148 00:06:25,210 --> 00:06:26,660 de cette image dans votre tête. 149 00:06:26,660 --> 00:06:29,050 >> Maintenant, nous avons un couple de arbres plus spécialisés. 150 00:06:29,050 --> 00:06:31,070 Donc, un exemple est un arbre binaire. 151 00:06:31,070 --> 00:06:33,290 Et un arbre binaire est, encore une fois, d'aller juste pour être 152 00:06:33,290 --> 00:06:37,040 une structure de données avec une sorte de hiérarchie, mais chacun des noeuds 153 00:06:37,040 --> 00:06:38,650 peut avoir au plus deux enfants. 154 00:06:38,650 --> 00:06:41,530 Voilà où le mot binaire vient. 155 00:06:41,530 --> 00:06:43,410 Ainsi, ceci est un exemple d'un arbre binaire. 156 00:06:43,410 --> 00:06:45,720 Voilà donc une catégorie plus petite des arbres. 157 00:06:45,720 --> 00:06:48,960 >> Maintenant, nous allons encore plus spécifique et parler binaire recherche binaire trees-- 158 00:06:48,960 --> 00:06:51,310 arbres, plutôt. 159 00:06:51,310 --> 00:06:56,430 Alors, voici l'idée est fait non seulement chaque nœud avoir au plus deux enfants, 160 00:06:56,430 --> 00:07:00,300 mais tous les enfants à la gauche vont être plus petits 161 00:07:00,300 --> 00:07:03,450 et tous les enfants à la droit vont être plus grand. 162 00:07:03,450 --> 00:07:05,890 Donc remarquer en seulement notre arbre binaire, il est 163 00:07:05,890 --> 00:07:08,650 aucune relation entre les numéros. 164 00:07:08,650 --> 00:07:12,990 Mais dans notre recherche binaire arbre, nous voyons, OK, voici 44. 165 00:07:12,990 --> 00:07:17,080 Et chaque numéro à la gauche de 44 est plus petit et tout à droite 166 00:07:17,080 --> 00:07:17,920 est plus gros. 167 00:07:17,920 --> 00:07:20,130 >> Et qui détient à chaque niveau de l'arbre. 168 00:07:20,130 --> 00:07:24,810 Donc, ici, est plus petite que ce 22 et cela est plus grand que 22. 169 00:07:24,810 --> 00:07:26,390 Et voilà arbre binaire de recherche. 170 00:07:26,390 --> 00:07:28,900 Pourquoi pensons-nous on appelle ça un arbre binaire de recherche? 171 00:07:28,900 --> 00:07:30,651 Quel algorithme ne vous rappelle? 172 00:07:30,651 --> 00:07:31,650 AUDIENCE: la recherche binaire. 173 00:07:31,650 --> 00:07:32,480 HANNAH BLUMBERG: recherche binaire. 174 00:07:32,480 --> 00:07:35,150 Parce que si vous êtes à la recherche d'un nombre particulier dans cet arbre, 175 00:07:35,150 --> 00:07:38,800 à chaque point, vous pouvez simplement frapper la moitié hors de l'arbre, ce qui est excellent. 176 00:07:38,800 --> 00:07:43,800 Et pour que cela va nous donner quelque chose qui ressemble beaucoup recherche binaire. 177 00:07:43,800 --> 00:07:45,870 Des questions? 178 00:07:45,870 --> 00:07:47,570 Tout droit, cool. 179 00:07:47,570 --> 00:07:48,560 >> Tout droit, tente. 180 00:07:48,560 --> 00:07:49,657 Le favori de tout le monde. 181 00:07:49,657 --> 00:07:51,990 Donc, ce qui est l'exemple nous avons vu un tas en classe. 182 00:07:51,990 --> 00:07:54,710 Et encore une fois, ceci est juste un autre façon que nous pouvons stocker des données. 183 00:07:54,710 --> 00:07:57,530 Dans le cas d'un dictionnaire, de nouveau, ce va juste être des chaînes. 184 00:07:57,530 --> 00:08:00,870 Donc, nous allons voir ce que cela fait ressemble à un niveau légèrement inférieur. 185 00:08:00,870 --> 00:08:03,690 >> Donc, nous allons jeter un coup d'oeil à un noeud dans un trie. 186 00:08:03,690 --> 00:08:07,532 Et nous voyons, OK, il va y d'être une valeur booléenne et un noeud, 187 00:08:07,532 --> 00:08:09,170 un pointeur vers un noeud. 188 00:08:09,170 --> 00:08:11,400 Et nous voyons que le Booléenne est appelé is_word. 189 00:08:11,400 --> 00:08:13,490 Donc, essentiellement, que ce va correspondre 190 00:08:13,490 --> 00:08:16,750 à ces petits triangles qui dit, si vous avez obtenu ici, 191 00:08:16,750 --> 00:08:19,100 vous avez trouvé un mot complet. 192 00:08:19,100 --> 00:08:23,670 >> Nous savons que "Turing" plus ici est un mot complet, 193 00:08:23,670 --> 00:08:28,030 tandis que seulement T-U-R est pas un mot parce que nous ne voyons pas ce petit delta. 194 00:08:28,030 --> 00:08:31,440 Et ce petit delta, à nouveau, correspond à ce is_word, 195 00:08:31,440 --> 00:08:34,480 ce is_word booléenne. 196 00:08:34,480 --> 00:08:36,320 Et puis nous avons un tableau d'enfants. 197 00:08:36,320 --> 00:08:39,860 Donc, à chaque niveau, vous avoir un noeud particulier, 198 00:08:39,860 --> 00:08:42,470 et que les points de nœud à un tableau de l'alphabet entier. 199 00:08:42,470 --> 00:08:44,346 >> Donc vous pouvez voir, encore une fois, dans ce picture-- je suis 200 00:08:44,346 --> 00:08:48,170 va continuer à sauter en arrière et forth-- que ce tableau au sommet 201 00:08:48,170 --> 00:08:51,640 a un tas de différents noeuds venant hors de lui. 202 00:08:51,640 --> 00:08:57,140 Il a 26 ou 27 si vous voulez d'inclure un caractère supplémentaire. 203 00:08:57,140 --> 00:09:01,320 Et cela nous donne un moyen de stocker nos données 204 00:09:01,320 --> 00:09:04,450 d'une manière qui peut être regardé sur que vous pouvez regarder super rapide. 205 00:09:04,450 --> 00:09:06,650 Quel est le délai de consultation pour un trie? 206 00:09:06,650 --> 00:09:07,970 >> AUDIENCE: [inaudible]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH BLUMBERG: Ouais. 208 00:09:08,300 --> 00:09:09,550 En théorie, il est temps constant. 209 00:09:09,550 --> 00:09:13,230 Ça ne va pas être de la taille de le mot que vous voulez rechercher. 210 00:09:13,230 --> 00:09:15,950 Même si l'on ajoute un tas plus de mots à notre trie, 211 00:09:15,950 --> 00:09:18,160 ça ne va pas nous prendre plus longtemps pour déterminer 212 00:09:18,160 --> 00:09:19,690 si un mot est donnée dans le trie. 213 00:09:19,690 --> 00:09:21,412 Voilà donc vraiment agréable. 214 00:09:21,412 --> 00:09:23,697 >> AUDIENCE: Avez-vous tout simplement initialiser ce tableau? 215 00:09:23,697 --> 00:09:24,780 Vous avez manqué un point ou deux. 216 00:09:24,780 --> 00:09:26,130 Pouvez-vous seulement parler que, pour une seconde? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH BLUMBERG: Bien sûr, absolument. 218 00:09:26,680 --> 00:09:27,590 Bonne question. 219 00:09:27,590 --> 00:09:31,140 La question était, nous avoir un tableau qui est 220 00:09:31,140 --> 00:09:34,180 allez avoir comme noeud étoiles plutôt que de simplement noeud, non? 221 00:09:34,180 --> 00:09:35,180 Bien. 222 00:09:35,180 --> 00:09:37,990 Alors, voici ce que nous disons est notre gamme est juste 223 00:09:37,990 --> 00:09:40,035 va être pointeurs vers d'autres réseaux. 224 00:09:40,035 --> 00:09:42,910 Donc, il est essentially-- ce genre de se sent comme une liste liée de cette manière 225 00:09:42,910 --> 00:09:46,620 où chacun de ces enfants il suffit de pointer sur le noeud suivant. 226 00:09:46,620 --> 00:09:49,030 >> Et la façon dont nous effectivement déterminer, hey, OK, 227 00:09:49,030 --> 00:09:52,320 nous avons réitéré à travers un ensemble de mot, ce mot est dans le dictionnaire, 228 00:09:52,320 --> 00:09:54,476 nous vérifions tout ce is_word. 229 00:09:54,476 --> 00:09:55,100 Grande question. 230 00:09:55,100 --> 00:09:55,675 Oui. 231 00:09:55,675 --> 00:09:56,216 AUDIENCE: OK. 232 00:09:56,216 --> 00:09:57,470 Alors quel était le runtime pour le trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH BLUMBERG: Bien sûr. 234 00:09:58,386 --> 00:10:01,852 Donc l'exécution pour un trie pour recherche va être temps constant. 235 00:10:01,852 --> 00:10:04,310 Donc, il va juste être le nombre de lettres dans le mot. 236 00:10:04,310 --> 00:10:06,310 Il est indépendant de la taille du dictionnaire 237 00:10:06,310 --> 00:10:09,510 ou la taille de la structure de données. 238 00:10:09,510 --> 00:10:12,170 Alors, voici un exemple un peu plus simple. 239 00:10:12,170 --> 00:10:15,430 >> Dans ce cas, vous pouvez voir que le mot chauve-souris est dans le dictionnaire 240 00:10:15,430 --> 00:10:18,900 et vous avez zoom, mais vous ne pas avoir quelque chose comme zoo. 241 00:10:18,900 --> 00:10:20,050 Comment pourrions-nous faire zoo? 242 00:10:20,050 --> 00:10:24,276 Comment pouvons-nous ajouter à notre zoo dictionnaire, à notre trie? 243 00:10:24,276 --> 00:10:24,776 Oui. 244 00:10:24,776 --> 00:10:27,014 >> AUDIENCE: Faites is_word vrai pour le [inaudible]. 245 00:10:27,014 --> 00:10:27,930 HANNAH BLUMBERG: Bon. 246 00:10:27,930 --> 00:10:31,731 Nous aimerions donc dire Z-O-O, puis nous avions vouloir vérifier au large ainsi que la case. 247 00:10:31,731 --> 00:10:32,230 Formidable. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Comparons très brièvement tente par rapport tables de hachage. 250 00:10:37,930 --> 00:10:39,770 Essais sont vraiment très bien parce que, comme nous l'avons dit, 251 00:10:39,770 --> 00:10:41,610 ils fournissent lookup-temps constant. 252 00:10:41,610 --> 00:10:44,285 Mais l'énorme désavantage est qu'ils sont faramineux. 253 00:10:44,285 --> 00:10:46,160 Vous pouvez obtenir le sens, même en le regardant, 254 00:10:46,160 --> 00:10:48,454 qu'il va prendre une énorme quantité de mémoire. 255 00:10:48,454 --> 00:10:50,620 Donc, ils vont être beaucoup plus grand que les tables de hachage, 256 00:10:50,620 --> 00:10:52,270 mais ils vont donner nous beaucoup plus vite temps de recherche. 257 00:10:52,270 --> 00:10:54,478 Voilà donc de votre genre compromis, ce que vous vous souciez, 258 00:10:54,478 --> 00:10:57,350 que ce soit la vitesse ou de la mémoire. 259 00:10:57,350 --> 00:11:02,251 Vous avez des questions sur tout cela, l'ensemble des structures de données C. 260 00:11:02,251 --> 00:11:02,750 Beau. 261 00:11:02,750 --> 00:11:03,250 D'ACCORD. 262 00:11:03,250 --> 00:11:07,322 Nous allons passer à un peu peu de développement web avec Maria. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 D'ACCORD. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH BLUMBERG: Vous pouvez utiliser mon ordinateur portable. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Nice. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 OK cool. 269 00:11:14,912 --> 00:11:17,120 Comme nous passons maintenant à l'internet développement, nous avons parlé un peu 270 00:11:17,120 --> 00:11:20,680 à propos de la modification des autorisations des fichiers et répertoires 271 00:11:20,680 --> 00:11:24,190 afin qu'ils puissent être accessibles à d'autres utilisateurs, dans le monde, 272 00:11:24,190 --> 00:11:28,640 et afin que nous puissions voir comment Fondamentalement, nous pouvons les transmettre 273 00:11:28,640 --> 00:11:32,600 lorsque nous développons des choses comme des sites Web que nous avons surtout été faisons. 274 00:11:32,600 --> 00:11:36,400 >> Donc, nous avons vu de la commande chmod, qui est le mode de changement, essentiellement. 275 00:11:36,400 --> 00:11:39,300 Voilà une commande Linux et il change les autorisations d'accès 276 00:11:39,300 --> 00:11:40,410 des objets du système de fichiers. 277 00:11:40,410 --> 00:11:43,370 Et un objet de système de fichiers est un répertoire, un fichier, 278 00:11:43,370 --> 00:11:46,810 tout ce que vous pouvez changer les permissions de. 279 00:11:46,810 --> 00:11:53,750 >> Donc, pour voir les permissions de fichiers, nous tapez la commande ls, liste, -l. 280 00:11:53,750 --> 00:11:56,500 Et quand nous tapons, nous généralement voir certaines autorisations 281 00:11:56,500 --> 00:11:59,660 ce regard un peu comme ce en face d'un nom de répertoire. 282 00:11:59,660 --> 00:12:01,260 Donc d réfère au répertoire. 283 00:12:01,260 --> 00:12:05,930 Et puis nous avons trois triades que, fondamentalement, 284 00:12:05,930 --> 00:12:11,675 reportez-vous aux autorisations de soit un utilisateur, un groupe, ou dans le monde. 285 00:12:11,675 --> 00:12:16,490 >> Les types d'autorisations que nous pouvons avoir pour ces trois groupes de personnes 286 00:12:16,490 --> 00:12:20,830 sont soit r pour lecture seule, w pour écrire, et x pour exécuter. 287 00:12:20,830 --> 00:12:23,650 Et nous pouvons avoir ceux pour le groupe et dans le monde ainsi. 288 00:12:23,650 --> 00:12:26,940 La chose la plus délicate est que, parfois, lorsque nous tapons la commande chmod, 289 00:12:26,940 --> 00:12:32,960 il faut saisir un certain nombre qui se composait de trois bits. 290 00:12:32,960 --> 00:12:36,990 Donc, nous pourrions faire comme 777 et que, fondamentalement, 291 00:12:36,990 --> 00:12:40,450 renvoyée à la valeur ajoutée de chacun de ces triades 292 00:12:40,450 --> 00:12:45,060 parce r se réfère à 4, w feriez se réfèrent à 2, et x se référer à 1, 293 00:12:45,060 --> 00:12:50,020 ainsi lorsqu'on les additionne, chacun des nombres descendrait à un nombre cumulé 294 00:12:50,020 --> 00:12:52,750 pour une valeur cumulée comprise entre 0 et 7. 295 00:12:52,750 --> 00:12:55,150 Donc, nous pourrions aussi avoir 0 pour aucune autorisation à tous. 296 00:12:55,150 --> 00:12:58,200 Et ce serait essentiellement nous donner les autorisations pour l'utilisateur, soit 297 00:12:58,200 --> 00:13:00,450 le groupe, ou dans le monde. 298 00:13:00,450 --> 00:13:02,620 Toutes les questions sur ce si loin? 299 00:13:02,620 --> 00:13:05,331 >> AUDIENCE: Vous avez dit lire était de 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Oui. 301 00:13:06,164 --> 00:13:07,568 AUDIENCE: [inaudible]. 302 00:13:07,568 --> 00:13:08,504 HANNAH BLUMBERG: Yup. 303 00:13:08,504 --> 00:13:11,790 Public: Et puis en ajoutant tous ceux d'autres semblent indiquer votre numéro. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Ouais. 305 00:13:12,665 --> 00:13:14,970 Oui. 306 00:13:14,970 --> 00:13:17,810 Ce sont de grandes questions. 307 00:13:17,810 --> 00:13:20,490 Charmant. 308 00:13:20,490 --> 00:13:25,340 Ensuite, nous avons sauté dans HTML et un peu plus sur le développement web. 309 00:13:25,340 --> 00:13:27,990 Donc HTML signifie simplement Langage Signalétique Hyper Text. 310 00:13:27,990 --> 00:13:30,460 Et qui est le balisage langue qui est une norme 311 00:13:30,460 --> 00:13:32,720 qu'il est utilisé pour créer des pages web. 312 00:13:32,720 --> 00:13:35,750 >> Il a appelé un langage de balisage parce qu'il est pas réellement compilée. 313 00:13:35,750 --> 00:13:40,310 Il ne dit pas comment un peu de code devrait être exécuté ou quelque chose comme ça. 314 00:13:40,310 --> 00:13:44,800 Il délimite juste et décrit comment un web 315 00:13:44,800 --> 00:13:46,840 page doit être mis en place avec chacun de ses éléments 316 00:13:46,840 --> 00:13:48,460 et comment ils doivent regarder vers l'utilisateur. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Certains des balises HTML que nous est allé plus sont les suivantes. 319 00:13:57,110 --> 00:14:00,500 Tous nos documents HTML commencé avec le DOCTYPE html. 320 00:14:00,500 --> 00:14:02,550 Ensuite, nous avons toujours la balise html. 321 00:14:02,550 --> 00:14:03,930 Nous avons une tête et un corps. 322 00:14:03,930 --> 00:14:07,890 Et il est important que le HTML a ce genre de structure imbriquée 323 00:14:07,890 --> 00:14:09,280 car il est très clair. 324 00:14:09,280 --> 00:14:13,200 Et puis il devient très clair quand nous besoin d'ouvrir et de fermer réellement les tags. 325 00:14:13,200 --> 00:14:18,400 Et nous avons toujours besoin de fermer balises que nous avons ouvert. 326 00:14:18,400 --> 00:14:23,170 >> Et ici, nous avons quelques-uns des types des choses à venir que nous voulons avoir. 327 00:14:23,170 --> 00:14:26,580 Donc, nous avons, par exemple, le titre de CS50. 328 00:14:26,580 --> 00:14:31,980 Et puis nous avons fait peut lier une feuille de style 329 00:14:31,980 --> 00:14:34,030 qui définit la façon dont nous le style de notre site Web. 330 00:14:34,030 --> 00:14:35,650 Voilà CSS. 331 00:14:35,650 --> 00:14:39,320 Nous allons aller au-dessus de la deux prochaines diapositives ainsi. 332 00:14:39,320 --> 00:14:42,580 >> Dans le corps, nous avons mis en certaines classes et les ID. 333 00:14:42,580 --> 00:14:45,860 Et comme un rappel, encore une fois, ID sont uniques et les classes 334 00:14:45,860 --> 00:14:47,390 peuvent être attribués à plusieurs éléments. 335 00:14:47,390 --> 00:14:52,110 Et cela signifie juste que nous pouvons utiliser les classes et les ID 336 00:14:52,110 --> 00:14:55,860 dans les autres structures-- donc, pour par exemple, dans les fichiers CSS ou le style 337 00:14:55,860 --> 00:15:00,940 sheets-- de se référer à des éléments spécifiques et fondamentalement disons que nous voulons pour le style 338 00:15:00,940 --> 00:15:03,280 ou concevoir un élément d'une certaine façon particulière. 339 00:15:03,280 --> 00:15:06,440 Et nous les appelons par leurs identifiants et des classes. 340 00:15:06,440 --> 00:15:09,870 Et nous pouvons également faire référence à des choses différentes par mots-clés ainsi, 341 00:15:09,870 --> 00:15:13,830 mais les ID et classes nous donnent quelques-uns polyvalence et ce spécifiquement nous 342 00:15:13,830 --> 00:15:15,850 vous référer à. 343 00:15:15,850 --> 00:15:19,620 >> Alors juste un exemple. 344 00:15:19,620 --> 00:15:22,730 Nous pouvons, à nouveau, au sein un fichier CSS où nous 345 00:15:22,730 --> 00:15:25,770 vouloir définir certaines style-- sorte couleurs, les polices, 346 00:15:25,770 --> 00:15:30,340 et des trucs comme that-- nous pouvons définir le style d'un corps. 347 00:15:30,340 --> 00:15:32,640 Donc, ce serait le définir pour toute la balise body. 348 00:15:32,640 --> 00:15:36,160 Mais on peut aussi définir un style pour un #title. 349 00:15:36,160 --> 00:15:40,390 Et encore, le hashtag se réfère à notre ID et le point se réfère à notre classe. 350 00:15:40,390 --> 00:15:44,760 >> Et puis pour les .info, nous peut également définir certains attributs. 351 00:15:44,760 --> 00:15:49,750 Et encore une fois, quand nous reviendrons, nous avons eu notre classe appelée infos et notre titre de ID. 352 00:15:49,750 --> 00:15:53,422 Et nous pouvons voir que nous nous référons à eux par #title et .info. 353 00:15:53,422 --> 00:15:55,380 Public: Diriez-vous mot-dièse [? adopte moi? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Désolé? 355 00:15:55,725 --> 00:15:58,120 Public: Diriez-vous mot-dièse [? adopte moi? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: hashtag signifie ID, donc #title 357 00:16:01,400 --> 00:16:07,890 se réfère à tous les éléments qui avoir cette ID appelé titre. 358 00:16:07,890 --> 00:16:10,735 Et puis le point se réfère à une classe. 359 00:16:10,735 --> 00:16:14,590 Donc .info se réfère à cet élément parce qu'il a l'info de classe. 360 00:16:14,590 --> 00:16:15,090 Ouaip. 361 00:16:15,090 --> 00:16:17,905 >> Public: Pourquoi vous faire les distinguer dans le HTML? 362 00:16:17,905 --> 00:16:20,985 Pourquoi dites-vous certaines choses sont ID et certaines choses sont de classe? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: qui est juste à vous-- 364 00:16:22,610 --> 00:16:24,151 HANNAH BLUMBERG: répéter la question. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, désolé. 366 00:16:25,370 --> 00:16:29,480 Pourquoi avons-nous distinguons certains éléments que les ID et d'autres éléments comme les classes? 367 00:16:29,480 --> 00:16:34,760 Voilà juste parce qu'il est vraiment souvent un choix de conception. 368 00:16:34,760 --> 00:16:38,520 Il vous donne beaucoup de polyvalence en étant 369 00:16:38,520 --> 00:16:43,250 en mesure de dire que je veux que ce point précis d'avoir cette ID parce qu'ils veulent 370 00:16:43,250 --> 00:16:45,300 pour faire beaucoup de choses avec elle, et je ne 371 00:16:45,300 --> 00:16:50,010 vouloir définir un style, certain style ou quel que soit la couleur pour cet article. 372 00:16:50,010 --> 00:16:52,630 Et la façon de le faire est juste en lui donnant une ID. 373 00:16:52,630 --> 00:16:55,060 >> Et puis, si je veux avoir un couple de différents articles 374 00:16:55,060 --> 00:16:58,940 présentant, au lieu de cours et la mise en their-- 375 00:16:58,940 --> 00:17:03,840 lieu de le faire par tag car la balise serait 376 00:17:03,840 --> 00:17:07,369 mettre la cellule pour l'ensemble tag pour chaque fois que cette étiquette est utilisée, 377 00:17:07,369 --> 00:17:09,740 vous pouvez définir une classe à plusieurs éléments. 378 00:17:09,740 --> 00:17:15,109 Et puis juste accéder à cette classe et dire Je veux le style de cette classe de cette façon. 379 00:17:15,109 --> 00:17:17,579 >> Et encore une fois, la classe peut avoir plusieurs éléments différents 380 00:17:17,579 --> 00:17:21,150 et l'ID doit être unique. 381 00:17:21,150 --> 00:17:21,849 Grandes questions. 382 00:17:21,849 --> 00:17:25,339 D'autres questions? 383 00:17:25,339 --> 00:17:26,220 OK, impressionnant. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Encore une fois, voici comment ces sélecteurs sont référencés en CSS, avec hashtag, 386 00:17:35,330 --> 00:17:40,031 avec un point, ou sans rien pour attribuer le style de certains tag, 387 00:17:40,031 --> 00:17:40,530 comme le corps. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 Et ici, nous avons le grand syntaxe de la façon dont cela est fait. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Pour répéter certaines des meilleures pratiques pour HTML et CSS, 392 00:17:55,680 --> 00:17:59,170 nous devons, encore une fois, tout près les balises HTML que nous ouvrons. 393 00:17:59,170 --> 00:18:03,950 Et ce que nous vous recommandons faire pour vos projets finaux, 394 00:18:03,950 --> 00:18:10,560 ainsi que pour CS50 Finances, est de faire assurer que l'ensemble de votre HTML valide. 395 00:18:10,560 --> 00:18:12,920 Et cela est fait avec le W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> Et puis ce que nous avons fait et ce que nous vous recommandons de faire 397 00:18:16,940 --> 00:18:19,790 est la séparation style, donc CSS à partir des balises HTML. 398 00:18:19,790 --> 00:18:24,210 Donc, tout ce qui se rapporte à la façon dont votre page va regarder visuellement 399 00:18:24,210 --> 00:18:27,330 et comment il va être modifié devrait aller dans un document CSS. 400 00:18:27,330 --> 00:18:33,880 Et puis votre balisage dire comment les choses sont par rapport à l'autre est HTML, 401 00:18:33,880 --> 00:18:37,550 et qui devrait aller à l'intérieur de vos documents HTML. 402 00:18:37,550 --> 00:18:38,590 Des questions? 403 00:18:38,590 --> 00:18:39,226 Hum. 404 00:18:39,226 --> 00:18:42,628 >> Public: Qu'est-ce qui se passe exactement avec la validation de la page 405 00:18:42,628 --> 00:18:47,945 lorsque nous la validation de la HTML qui [inaudible] créé? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Donc vous pensez what--. 407 00:18:49,850 --> 00:18:53,020 Alors qu'est-ce qui se passe exactement sur de validation de page 408 00:18:53,020 --> 00:18:55,570 et pourquoi devons-nous faire? 409 00:18:55,570 --> 00:18:59,180 Fondamentalement, nous devons faire ce que car un grand nombre de fois, votre navigateur, 410 00:18:59,180 --> 00:19:01,390 si vous ne fermez pas une balise ou quelque chose comme ça, 411 00:19:01,390 --> 00:19:05,680 votre navigateur va encore rendre une page et pourrait encore travailler, 412 00:19:05,680 --> 00:19:10,840 mais il est la meilleure pratique pour vous assurer que vous avez, à nouveau, fermé toutes vos balises, 413 00:19:10,840 --> 00:19:13,190 que tous vos éléments sont la façon dont ils devraient l'être, 414 00:19:13,190 --> 00:19:18,470 et fondamentalement qu'il est par la conventions qui sont prédéfinis. 415 00:19:18,470 --> 00:19:21,970 >> Il est, encore une fois, juste une chose que vous devriez 416 00:19:21,970 --> 00:19:24,040 être apprendre à être faites, plutôt que d'avoir 417 00:19:24,040 --> 00:19:25,696 Code sloppier et des trucs comme ça. 418 00:19:25,696 --> 00:19:26,688 Oui. 419 00:19:26,688 --> 00:19:27,680 Oh, désolé. 420 00:19:27,680 --> 00:19:29,221 Je pensais que vous soulevez votre main. 421 00:19:29,221 --> 00:19:31,240 AUDIENCE: Non, je suis juste [inaudible]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> AUDIENCE: Je vous remercie. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Bien sûr, je vous remercie. 425 00:19:36,181 --> 00:19:41,680 Encore une fois, aller sur la façon dont les informations sont transférées 426 00:19:41,680 --> 00:19:44,630 et les modèles de communication pour transférer des informations. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP signifie simplement Transmission Control Protocol et IP 429 00:19:48,600 --> 00:19:51,260 se réfère à protocole Internet. 430 00:19:51,260 --> 00:19:54,275 Et que se réfère juste la façon dont les données est livré. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Si nous avons quelques données doit donc livrés à vous-- 433 00:20:02,710 --> 00:20:06,770 vous faites une demande pour un certain serveur. 434 00:20:06,770 --> 00:20:09,800 Par exemple, lorsque nous essayez d'accéder à cs50.net, 435 00:20:09,800 --> 00:20:12,420 nous faisons une demande de le serveur CS50 et nous 436 00:20:12,420 --> 00:20:14,720 voyons ce que nous voulons obtenir ce genre d'information. 437 00:20:14,720 --> 00:20:19,294 Et puis sont basés sur ce protocole pour savoir comment cette information est fournie, 438 00:20:19,294 --> 00:20:21,460 le serveur fournit des informations de nouveau à nous, le client. 439 00:20:21,460 --> 00:20:25,590 Et puis, nous sommes en mesure de voir les informations de la page 440 00:20:25,590 --> 00:20:26,390 et ensuite l'utiliser. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Alors Hypertext Transfer Protocol est juste un autre protocole ou un ensemble 443 00:20:33,050 --> 00:20:37,470 des conventions qui définit comment le navigateur Web et le serveur Web 444 00:20:37,470 --> 00:20:38,890 devrait communiquer. 445 00:20:38,890 --> 00:20:43,730 Et mettre tout cela en même temps, HTTP, de nouveau, 446 00:20:43,730 --> 00:20:50,960 définit à quel point cette hypertexte défini par le HTML que nous avons travaillé il, 447 00:20:50,960 --> 00:20:59,500 comment il devrait être livré à vous et comment ces données qui est livré à vous 448 00:20:59,500 --> 00:21:00,540 arrive à vous. 449 00:21:00,540 --> 00:21:05,990 >> Et voilà pourquoi, si vous les gars me souviens d'une classe, nous avons eu beaucoup de demandes 450 00:21:05,990 --> 00:21:08,970 et nous avons eu beaucoup de syntaxe pour ces demandes que nous sommes 451 00:21:08,970 --> 00:21:10,250 passer en revue en ce moment. 452 00:21:10,250 --> 00:21:13,270 Encore une fois, lorsque nous envoyons une demande à un serveur, 453 00:21:13,270 --> 00:21:15,920 nous devons définir un certain nombre de choses. 454 00:21:15,920 --> 00:21:18,520 Nous devons donc trouver le type de la demande que nous mettons en place. 455 00:21:18,520 --> 00:21:22,180 Et encore une fois, nous avons, par exemple, GET est un type de méthode 456 00:21:22,180 --> 00:21:25,290 que nous avons dans notre demande. 457 00:21:25,290 --> 00:21:31,710 >> Et puis HTTP / 1.1 est juste le protocole que nous utilisons actuellement. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 La plupart du temps, ça va le protocole que nous utilisons. 460 00:21:36,890 --> 00:21:40,290 Donc, si vous avez une question comme ça sur votre quiz. 461 00:21:40,290 --> 00:21:43,120 Voilà les conventions que nous avons jusqu'ici. 462 00:21:43,120 --> 00:21:46,580 >> Backslash se réfère à ce genre des choses que nous demandons. 463 00:21:46,580 --> 00:21:52,810 Ensuite, notre hôte est, par exemple, en ce cas, nous essayons d'aller à google.com. 464 00:21:52,810 --> 00:21:57,070 Donc ceci est la valeur d'un hôte. 465 00:21:57,070 --> 00:21:59,330 Ceci est un type de demande qui pourrait être envoyé. 466 00:21:59,330 --> 00:22:02,890 >> Et puis un type de réponse qui pourrait envoyer, à nouveau, sur la base de ce protocole, 467 00:22:02,890 --> 00:22:05,190 est nouveau, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Voilà donc encore une fois la version HTTP. 469 00:22:07,150 --> 00:22:09,730 200 OK est juste le code de statut. 470 00:22:09,730 --> 00:22:12,860 Et que OK est juste une phrase basé sur ce code d'état. 471 00:22:12,860 --> 00:22:15,520 >> Et puis le Content-Type se réfère au type 472 00:22:15,520 --> 00:22:20,295 qui est retourné à vous qui est pour cette page Web que vous recevez 473 00:22:20,295 --> 00:22:22,570 et que votre navigateur peut rendre par la suite. 474 00:22:22,570 --> 00:22:24,401 Et qui est text / html. 475 00:22:24,401 --> 00:22:26,660 >> Public: Qu'est-ce que 1.1 veut dire? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Voilà juste le Version de-- oh, qu'est-ce que 1.1 veut dire? 477 00:22:29,910 --> 00:22:37,075 Cela est tout simplement la version, le HTTP version d'un protocole que nous utilisons. 478 00:22:37,075 --> 00:22:37,700 Grande question. 479 00:22:37,700 --> 00:22:38,366 D'autres questions? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> Public: Pourriez-vous résumer Content-Type réel rapide? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Alors que est que le serveur. 483 00:22:48,150 --> 00:22:51,020 le type de ce qui est information-- type de contenu était les questions. 484 00:22:51,020 --> 00:22:53,400 Donc, ce qui était le type de informations que vous obtenez en retour 485 00:22:53,400 --> 00:22:58,200 à partir du serveur, le type de données que le navigateur peut alors 486 00:22:58,200 --> 00:23:00,604 rendu que vous utilisez. 487 00:23:00,604 --> 00:23:03,020 Public: Est-ce que ce que cette protocole vous dit de le faire? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Désolé? 489 00:23:03,390 --> 00:23:05,380 Public: Est-ce que le protocole dit? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: Le protocol-- 491 00:23:05,915 --> 00:23:07,940 AUDIENCE: la --quel Content-Type est ou what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: Le protocole est basé on-- quel est le protocole que vous dites? 493 00:23:12,040 --> 00:23:16,070 Cela est juste la manière que ces informations 494 00:23:16,070 --> 00:23:18,610 a été livré à vous en fonction de ce genre de protocole 495 00:23:18,610 --> 00:23:21,830 a obtenu cette information livré de nouveau à vous. 496 00:23:21,830 --> 00:23:23,500 Est-ce logique sorte de? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH BLUMBERG: Vous peut penser protocole 499 00:23:30,070 --> 00:23:33,300 Je pense que a-- professeur Malan décrit 500 00:23:33,300 --> 00:23:36,910 dans la classe comme un peu comme il est comme a-- l'équivalent de prise de contact humain. 501 00:23:36,910 --> 00:23:44,930 Dire, comme, hey, je suis une demande et je savoir comment gérer HTTP de la version 1.1. 502 00:23:44,930 --> 00:23:48,770 Et puis le serveur dit, Oh, OK, I-- et les deux existent. 503 00:23:48,770 --> 00:23:51,337 Je sais aussi comment faire face à HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 Et je vais donner vous sauvegardez une partie du contenu. 505 00:23:53,170 --> 00:23:56,230 Dans ce cas, il va être de type text / html. 506 00:23:56,230 --> 00:23:58,480 Donc, il est un peu juste un moyen d'entre eux pour communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: Il est juste confirmant que vous êtes 508 00:24:00,480 --> 00:24:03,290 à la fois suivant la même protocole et que les deux 509 00:24:03,290 --> 00:24:06,620 le client et le Server-- si votre navigateur et le Server-- 510 00:24:06,620 --> 00:24:09,280 sorte de savoir ce que vous êtes parler et ont 511 00:24:09,280 --> 00:24:12,557 la convention pour le passage dans les données. 512 00:24:12,557 --> 00:24:17,022 >> Auditoire: Alors, le Content-Type part-- le texte Content-Type / html-- qui est 513 00:24:17,022 --> 00:24:18,521 une partie distincte du même message? 514 00:24:18,521 --> 00:24:20,509 Ou est-ce une partie de, disons, 200? 515 00:24:20,509 --> 00:24:22,010 200 ne leur dire que ou est-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 dit tout est allé OK. 517 00:24:23,770 --> 00:24:27,900 Et puis le type de contenu est une sorte de partie distincte du même message, 518 00:24:27,900 --> 00:24:34,274 et en disant la chose que je Retourné a ce type de text / html. 519 00:24:34,274 --> 00:24:35,690 Il est juste de donner plus d'informations. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Avoir quelque chose à ajouter? 522 00:24:39,995 --> 00:24:40,495 D'ACCORD. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Toutes les autres questions à ce sujet? 525 00:24:46,530 --> 00:24:48,370 Impressionnant. 526 00:24:48,370 --> 00:24:54,070 De sorte que certains autres états HTTP nous pourrions obtenir en plus des 200 OK, 527 00:24:54,070 --> 00:24:59,500 ceux que nous avons vu peut-être peut-être beaucoup sont 403 et 404. 528 00:24:59,500 --> 00:25:05,190 Donc 404, si vous essayiez de accès quelque chose qui ne existe pas. 529 00:25:05,190 --> 00:25:10,460 Ainsi, par exemple, dans votre Psets CS50 Finance, 530 00:25:10,460 --> 00:25:15,640 si vous aviez été rendrez quote.html et vous avez avez pas ce fichier, 531 00:25:15,640 --> 00:25:19,740 mais vous aviez quote.php, que se traduirait par un 404 Not Found 532 00:25:19,740 --> 00:25:21,600 parce que le fichier peut ne pas exister. 533 00:25:21,600 --> 00:25:25,690 >> Pour un 403 interdit, que se réfère aux autorisations. 534 00:25:25,690 --> 00:25:31,150 Donc, si certains fichiers ne sont pas lisibles par le monde, vous pourriez obtenir un 403 retourné. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 D'autres que vous pourriez get-- 301, Déplacé de manière permanente; 537 00:25:37,810 --> 00:25:41,300 302, a trouvé; 304, modifié; 400 Bad Request; 538 00:25:41,300 --> 00:25:47,330 et Server Error puis interne pour 500 et 503, Service Unavailable. 539 00:25:47,330 --> 00:25:48,140 Oui. 540 00:25:48,140 --> 00:25:51,490 >> AUDIENCE: Allons-nous attendre à mémoriser tous ces statuts? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: Je dois sur votre feuille de triche. 542 00:25:53,739 --> 00:25:55,146 [RIRE] 543 00:25:55,146 --> 00:25:59,954 AUDIENCE: Sommes-nous nous attendions à savoir ce qui déclenche chacun? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: Sont-ils? 545 00:26:00,995 --> 00:26:03,870 HANNAH BLUMBERG: Pour ceux que nous avons exécuter into-- donc la question était-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Sont-ils censés savoir ce que chacun de ces statuts 547 00:26:08,010 --> 00:26:09,330 codes pourrait être déclenchée par? 548 00:26:09,330 --> 00:26:13,240 Donc, pour ceux que nous avons utilisés et a couru dans, je dirais que oui. 549 00:26:13,240 --> 00:26:16,610 Donc, nous avons certainement vu 200 OK et donné des conférences dans psets. 550 00:26:16,610 --> 00:26:19,071 Nous avons vu 403, 404. 551 00:26:19,071 --> 00:26:20,550 Pour les autres? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH BLUMBERG: Je voudrais dire 500 semble un jeu équitable. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, oui. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH BLUMBERG: Ouais. 555 00:26:24,246 --> 00:26:27,006 Juste avoir un sens général de ce qui les provoque. 556 00:26:27,006 --> 00:26:28,880 Et aussi tout simplement par ces noms, vous pouvez sorte de 557 00:26:28,880 --> 00:26:32,890 comme faire une supposition éclairée que à ce qui fait leur causer. 558 00:26:32,890 --> 00:26:36,919 Par exemple, se déplacer en permanence, probablement le fichier a été déplacé de façon permanente. 559 00:26:36,919 --> 00:26:39,328 >> AUDIENCE: Mais sur une précédente examen, il y avait une sorte 560 00:26:39,328 --> 00:26:41,050 comment voulez-vous nous répondre à cela? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH BLUMBERG: Ce valait zéro points. 562 00:26:42,883 --> 00:26:45,870 La question sur la 418 sur la théière est techniquement un état HTTP, 563 00:26:45,870 --> 00:26:47,090 mais ça valait zéro points. 564 00:26:47,090 --> 00:26:48,320 Évidemment, vous n'êtes pas devrait les connaître. 565 00:26:48,320 --> 00:26:49,670 >> Public: Est-ce un vrai? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH BLUMBERG: Il est un véritable un, mais il ne veut rien dire. 567 00:26:51,970 --> 00:26:52,700 C'est juste une blague. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Les gens sont drôles Internet. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: Grandes questions, les gars. 571 00:26:59,680 --> 00:27:01,452 D'autres questions? 572 00:27:01,452 --> 00:27:04,891 >> Public: Quelle est l'erreur de serveur interne? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: interne erreur de serveur juste 574 00:27:06,640 --> 00:27:10,050 signifie que vous avez été incapable de communiquer 575 00:27:10,050 --> 00:27:13,400 avec le serveur pour une raison quelconque. 576 00:27:13,400 --> 00:27:15,400 Donc, il est pas nécessairement quelque chose qui a à voir 577 00:27:15,400 --> 00:27:19,170 avec le client ou quelque chose comme ça. 578 00:27:19,170 --> 00:27:22,170 Je ne sais pas d'exemple spécifique que nous avons dépassé pour expliquer, 579 00:27:22,170 --> 00:27:23,000 mais ouais. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH BLUMBERG: Bien sûr. 581 00:27:23,250 --> 00:27:25,625 Ainsi, par exemple, comme nous allons dites que vous travaillez sur mashup 582 00:27:25,625 --> 00:27:30,440 et un serveur de Google est descendu pour certains raison, une panne de courant, disons. 583 00:27:30,440 --> 00:27:33,400 Ce serait un serveur interne erreur ou une sorte de-- vous aimez 584 00:27:33,400 --> 00:27:34,630 ne serait pas obtenir une réponse. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Ouais. 586 00:27:35,260 --> 00:27:37,050 Il est juste quand vous êtes incapable de communiquer 587 00:27:37,050 --> 00:27:40,299 avec le serveur pour une raison quelconque, car de celui-ci de descendre ou une autre raison. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Donc sauter dans PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, contrairement à HTML, est un langage de programmation. 591 00:27:49,930 --> 00:27:54,820 Et nous avons commencé à l'utiliser car il est très utile pour le développement web. 592 00:27:54,820 --> 00:27:56,940 >> Nous avons utilisé d'abord dans CS50 Finances. 593 00:27:56,940 --> 00:28:02,240 Et il contribue essentiellement nous apporter ensemble ce balisage, la conception, 594 00:28:02,240 --> 00:28:07,460 et comment nous utilisons réellement de l'information pour afficher des choses sur une page web. 595 00:28:07,460 --> 00:28:11,870 Donc PHP lui-même signifie PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 il est donc un backnorym récursive par lui-même. 597 00:28:15,360 --> 00:28:22,330 Et l'ouverture des tags pour PHP, nous la gauche et les flèches droite avec les points d'interrogation 598 00:28:22,330 --> 00:28:23,060 et php. 599 00:28:23,060 --> 00:28:25,890 >> Donc, nous avons déjà vu un tas de celui-ci. 600 00:28:25,890 --> 00:28:29,150 Maintenant, nous allons juste aller sur quelques-unes des choses de base à ce sujet. 601 00:28:29,150 --> 00:28:32,280 Donc, avec PHP, la variable noms commencent avec le signe dollar. 602 00:28:32,280 --> 00:28:35,660 Nous ne spécifions pas, encore une fois, tapez plus une variable. 603 00:28:35,660 --> 00:28:38,450 Tout comme nous avons fait avec C, nous ne devons pas le faire. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Nous pouvons faire un tas de différents des trucs avec des variables. 606 00:28:44,490 --> 00:28:47,750 Nous pouvons les mettre ensemble en les concaténant 607 00:28:47,750 --> 00:28:52,900 avec la notation par points, qui nous ne pouvions pas faire dans C à nouveau. 608 00:28:52,900 --> 00:28:57,490 Encore une fois, nous avons un peu plus de polyvalence avec PHP en termes de variables. 609 00:28:57,490 --> 00:29:00,080 Encore une fois, nous ne disposons pas d'une fonction principale. 610 00:29:00,080 --> 00:29:03,370 >> Et PHP est interprété par opposition à compilée, 611 00:29:03,370 --> 00:29:09,970 Alors, comment nous avons fait pour les fichiers C, nous ne devons pas le faire pour PHP. 612 00:29:09,970 --> 00:29:15,440 Mais plutôt, la manière dont la langue est géré par lui-même, il est interprété. 613 00:29:15,440 --> 00:29:18,550 Et puis faiblement typé signifie simplement que nous 614 00:29:18,550 --> 00:29:22,490 ne pas avoir à spécifier une variable type et les types de variables 615 00:29:22,490 --> 00:29:25,415 sont compris à l'exécution. 616 00:29:25,415 --> 00:29:29,185 >> AUDIENCE: Mais ce que vous faisiez dire par concaténation dot? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Bien sûr. 618 00:29:30,060 --> 00:29:37,660 Quand nous voulons mettre les choses together-- Donc, si nous avons eu quelques variable 619 00:29:37,660 --> 00:29:41,500 si la valeur de 3 et nous avions un autre variable qui avait de la valeur de la chaîne, 620 00:29:41,500 --> 00:29:45,920 nous pourrions mettre les variables ensemble en mettant un point entre eux 621 00:29:45,920 --> 00:29:46,970 et les concaténer. 622 00:29:46,970 --> 00:29:52,670 Ou nous pourrions créer un variable appelée nom 623 00:29:52,670 --> 00:29:56,900 et mettre ensemble par concaténation de deux chaînes. 624 00:29:56,900 --> 00:30:00,680 >> Donc, si nous avions une chaîne en chambre double devis et nous mettons un point après, 625 00:30:00,680 --> 00:30:03,660 et puis nous avons eu une autre chaîne, qui créerait tout une chaîne. 626 00:30:03,660 --> 00:30:05,242 >> AUDIENCE: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA LETTONIE: Était-ce clair? 628 00:30:06,450 --> 00:30:07,099 AUDIENCE: Ouais. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Oui. 631 00:30:08,766 --> 00:30:11,146 >> PUBLIC: Quand vous dites interprété plutôt que compilé, 632 00:30:11,146 --> 00:30:14,160 parlez-vous pas que vous faites besoin d'être aussi précis quand 633 00:30:14,160 --> 00:30:15,906 il vient à PHP par rapport à C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Quand nous disons interprété par opposition à compilé, 636 00:30:20,710 --> 00:30:21,850 qu'entendons-nous? 637 00:30:21,850 --> 00:30:26,220 Cela signifie donc que nous ne devons pas exécution de fichiers exécutables PHP. 638 00:30:26,220 --> 00:30:29,870 Il signifie qu'il fonctionne comme il va. 639 00:30:29,870 --> 00:30:31,650 Cela a-t-il du sens? 640 00:30:31,650 --> 00:30:32,495 Un peu plus. 641 00:30:32,495 --> 00:30:34,620 HANNAH BLUMBERG: Donc vous peut penser d'un interprète 642 00:30:34,620 --> 00:30:38,980 comme un autre programme qui est responsable pour aller ligne par ligne par PHP 643 00:30:38,980 --> 00:30:42,745 et exécuter réellement, par opposition à la compilation de tout cela en binaire. 644 00:30:42,745 --> 00:30:46,050 Il ne fait quoi que ce soit signifie pas sur la façon spécifique, nous devons être. 645 00:30:46,050 --> 00:30:49,470 Nous avons encore besoin d'être précis, et ne pas oublier votre point-virgule, et assurez- 646 00:30:49,470 --> 00:30:51,470 vous avez votre signe du dollar, et des choses comme ça. 647 00:30:51,470 --> 00:30:52,240 Bonne question. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Ouais. 649 00:30:53,115 --> 00:30:55,590 Donc, ligne par ligne, comme opposition à des fichiers C, 650 00:30:55,590 --> 00:30:59,100 nous devons faire toute la finale avant que nous puissions réellement l'exécuter. 651 00:30:59,100 --> 00:31:00,360 Voilà la principale différence. 652 00:31:00,360 --> 00:31:02,655 Mais encore une fois, nous ne pouvons pas vraiment être moins spécifique. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Donc tableaux PHP représentent en fait une carte commandé. 655 00:31:13,950 --> 00:31:17,550 >> Donc, les valeurs des tableaux associés à des touches. 656 00:31:17,550 --> 00:31:23,350 Les deux façons de déclarer un tableau, sur la base de cette syntaxe, 657 00:31:23,350 --> 00:31:26,380 nous pouvons être plus explicite en disant que nous avons un tableau 658 00:31:26,380 --> 00:31:31,010 et nous avons ce qui correspond à key1 cette valeur1, valeur2 key2 qui mappe. 659 00:31:31,010 --> 00:31:34,660 Ou nous pouvons simplement créer un tableau qui contient lui-même les valeurs 660 00:31:34,660 --> 00:31:38,360 et ensuite les touches sont compris dans un sens. 661 00:31:38,360 --> 00:31:40,000 Toutes les questions à ce sujet? 662 00:31:40,000 --> 00:31:42,500 >> Public: Quelles seraient les clés être dans le deuxième exemple? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Par exemple, il est juste les touches dans ce ne sont pas nécessairement 667 00:31:55,780 --> 00:31:56,550 faire une différence. 668 00:31:56,550 --> 00:32:01,720 Ils définir à quel point vous pouvez utiliser les valeurs à l'intérieur. 669 00:32:01,720 --> 00:32:08,660 Donc, si nous avions un foreach boucle en PHP qui serait 670 00:32:08,660 --> 00:32:14,760 nous permettent de passer par toutes les valeurs, nous pouvons passer par toutes les valeurs, 671 00:32:14,760 --> 00:32:19,570 même si nous avait ou non définie une clé spécifique au sein du site de 672 00:32:19,570 --> 00:32:20,820 la syntaxe précédente. 673 00:32:20,820 --> 00:32:23,460 >> Donc, même avec ce genre du tableau, nous pourrions encore 674 00:32:23,460 --> 00:32:26,260 avoir une boucle foreach qui passe par chaque 675 00:32:26,260 --> 00:32:31,240 des valeurs de la clé dans le réseau. 676 00:32:31,240 --> 00:32:36,180 Ainsi, la syntaxe d'un foreach boucle, nous commençons par un tableau. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Cette variable $ arr est notre véritable tableau que nous avons défini dans la diapositive précédente 679 00:32:43,900 --> 00:32:47,550 en tant que valeur qui va littéralement à travers chacune des valeurs, 680 00:32:47,550 --> 00:32:50,122 indépendamment du fait que nous avions une clé ou non. 681 00:32:50,122 --> 00:32:53,080 Et puis, nous pouvons faire quelque chose avec la valeur intérieur de la boucle foreach. 682 00:32:53,080 --> 00:32:57,730 Encore une fois, si nous avions un tableau comme cela ici created-- 683 00:32:57,730 --> 00:33:03,270 ainsi nous avons la clé de foo et la valeur de bar, la clé de Baz et la valeur de qux-- 684 00:33:03,270 --> 00:33:09,730 nous pouvons avoir une boucle foreach que passe par tableau comme valeur de clé 685 00:33:09,730 --> 00:33:11,900 et puis faire quelque chose avec la clé et / ou la valeur. 686 00:33:11,900 --> 00:33:15,980 Mais nous ne faisons pas toujours nécessairement avoir un foreach boucles 687 00:33:15,980 --> 00:33:19,410 passe par tableau comme carte clé de la valeur. 688 00:33:19,410 --> 00:33:26,060 Nous pouvons passer par le réseau de boucle foreach en tant que valeur. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH BLUMBERG: Et je pense que to-- était votre question, ce qui 690 00:33:28,990 --> 00:33:31,229 est l'indice implicite? 691 00:33:31,229 --> 00:33:31,895 AUDIENCE: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH BLUMBERG: Ouais, ouais. 694 00:33:33,406 --> 00:33:36,150 Donc, fondamentalement, si vous ne spécifiez pas une clé, il va être 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Ouais. 696 00:33:37,140 --> 00:33:41,718 Tout comme avec C, il est zéro indexées si vous ne spécifiez pas de clé. 697 00:33:41,718 --> 00:33:42,384 AUDIENCE: Désolé. 698 00:33:42,384 --> 00:33:43,827 Pourriez-vous essayez de parler un peu plus fort? 699 00:33:43,827 --> 00:33:45,270 Je vais avoir un peu de difficulté à entendre tout. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Je suis désolé. 701 00:33:46,478 --> 00:33:48,439 Ouais, bien sûr. 702 00:33:48,439 --> 00:33:50,230 Alors voulez-vous de moi d'aller sur ce nouveau? 703 00:33:50,230 --> 00:33:51,680 Ou est this-- 704 00:33:51,680 --> 00:33:54,930 Auditoire: Alors, sur le slide-- précédent si vous pouvez simplement revenir pour une seconde. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Bien sûr, désolé. 706 00:33:57,313 --> 00:33:59,237 Auditoire: Alors, la deuxième tableau ici ne 707 00:33:59,237 --> 00:34:04,135 semblent avoir une valeur à la clé, sorte de [? causalité. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Droit, droit. 709 00:34:05,343 --> 00:34:07,608 Auditoire: Alors, comment ça marche quand vous dites qu'il est tout ou rien. 710 00:34:07,608 --> 00:34:08,969 Pour moi, cela ressemble à un [? foo?] déjà. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Ouais, ouais. 712 00:34:10,093 --> 00:34:12,969 Encore une fois, ceci est un carte ordonné dans ce sens 713 00:34:12,969 --> 00:34:15,639 qu'il y sont comprises, par exemple, les indices 714 00:34:15,639 --> 00:34:20,159 ici peut être comprise comme 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Encore une fois, voilà ceux ayant index est l'équivalent de notre 716 00:34:25,929 --> 00:34:28,980 d'avoir les clés mappés sur les valeurs. 717 00:34:28,980 --> 00:34:34,710 Donc, si notre clé était 0-- désolé. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH BLUMBERG: Non, Il ya la craie ici. 719 00:34:36,524 --> 00:34:36,929 Il est effectivement très belle. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Très bien. 721 00:34:37,460 --> 00:34:38,260 D'ACCORD. 722 00:34:38,260 --> 00:34:49,489 Encore une fois, 0 $ arr serait la clé pour la valeur 1. 723 00:34:49,489 --> 00:34:51,138 0 serait la clé pour la valeur 1. 724 00:34:51,138 --> 00:34:51,971 AUDIENCE: Je suis désolé. 725 00:34:51,971 --> 00:34:53,190 Il est invisible. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH BLUMBERG: Très bien, tant pis. 727 00:34:53,659 --> 00:34:54,980 Chalk était une mauvaise idée. 728 00:34:54,980 --> 00:34:58,030 Je reprend cela. 729 00:34:58,030 --> 00:35:01,425 Vous pouvez penser à des touches que 0 correspond à la valeur 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Ouais. 731 00:35:02,300 --> 00:35:04,630 Donc, cela est 0, cela vaut 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Ceux-ci peuvent être vos clés. 733 00:35:05,760 --> 00:35:10,020 Vous pouvez penser à eux as-- ouais. 734 00:35:10,020 --> 00:35:12,740 Ainsi, au lieu d'avoir clés explicites, ils sont 735 00:35:12,740 --> 00:35:17,180 sorte d'comprise comme étant les indices commençant à 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 La craie n'a pas aidé. 738 00:35:24,820 --> 00:35:25,722 Oui. 739 00:35:25,722 --> 00:35:30,914 >> Public: Pour la boucle foreach, si nous voulions voir la valeur que, 740 00:35:30,914 --> 00:35:33,245 Il serait tout simplement index automatiquement à 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Ouais. 742 00:35:34,120 --> 00:35:35,745 Ce serait passer par chacune des valeurs. 743 00:35:35,745 --> 00:35:39,130 AUDIENCE: [inaudible] que 0 ou serait-ce simplement faire 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Vous auriez à-dire comme signe de dollar et ensuite 745 00:35:43,710 --> 00:35:46,266 un nom variable, valeur. 746 00:35:46,266 --> 00:35:47,182 AUDIENCE: [inaudible]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Désolé? 749 00:35:50,964 --> 00:35:52,839 AUDIENCE: Désolé, je suis juste essayer de se rappeler. 750 00:35:52,839 --> 00:35:57,190 Comment feriez-vous que si vous pouvez le faire automatiquement l'indexation est juste de 0? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Alors, comment voulez-vous faire si vous ne disposez pas de noms spécifiques clés? 752 00:36:00,780 --> 00:36:01,710 >> AUDIENCE: Ouais. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: vous voulez bien define-- juste dire vous-même comme un nom. 754 00:36:07,820 --> 00:36:17,950 Donc, dans votre psets, vous les gars pourrait souvenir foreach $ row sous forme de lignes $, 755 00:36:17,950 --> 00:36:24,610 nous-mêmes créé cette $ row disant nous voulons passer par le rang $ rangées. 756 00:36:24,610 --> 00:36:28,360 Même si nous ne disposons pas des cette $ explicite lignes définies, 757 00:36:28,360 --> 00:36:31,990 nous pouvions aller dire ce qui peut être la clé de notre, 758 00:36:31,990 --> 00:36:33,615 et juste passer par chacune des valeurs. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> Auditoire: Alors, est la valeur d'une nouvelle variable nous créons pour stocker [inaudible]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: il est donc pas intrinsèquement une nouvelle variable. 763 00:36:49,990 --> 00:37:00,310 Il est une variable qui indique la à l'intérieur de la matrice de chacun d'eux. 764 00:37:00,310 --> 00:37:02,060 HANNAH BLUMBERG: Il est un nouveau nom de la variable. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Ouais, il est un nouveau nom de la variable, 766 00:37:04,018 --> 00:37:06,680 mais ça ne inherently-- ouais. 767 00:37:06,680 --> 00:37:08,950 Il est juste une nouvelle variable que vous pouvez faire. 768 00:37:08,950 --> 00:37:12,680 Alors, comment avons-nous fait $ row que $ lignes, rangées 769 00:37:12,680 --> 00:37:17,980 était un nouveau nom de la variable que nous pourrait créer dans notre boucle foreach. 770 00:37:17,980 --> 00:37:22,065 Il n'a pas à préexister avant. 771 00:37:22,065 --> 00:37:25,777 >> Public: Pourriez-vous passer par la logique pour chacun, en utilisant l'exemple il? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: Hum. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Oh, désolé. 775 00:37:32,080 --> 00:37:33,780 Voici l'exemple. 776 00:37:33,780 --> 00:37:34,280 Bien sur. 777 00:37:34,280 --> 00:37:38,950 Ainsi, pour chaque sorte array-- cela signifie aller à ce tableau 778 00:37:38,950 --> 00:37:43,930 comme la clé qui va value-- à passer par ce tableau 779 00:37:43,930 --> 00:37:49,480 et le premier aller chercher foo, la foo clavier et la barre de valeur. 780 00:37:49,480 --> 00:37:51,570 Et puis sur le deuxième itération de la boucle, 781 00:37:51,570 --> 00:37:55,090 ça va passer et prendre le baz clé et la valeur qux. 782 00:37:55,090 --> 00:38:00,512 Et puis vous pouvez faire quelque chose avec l'un d'eux ou les deux d'entre eux. 783 00:38:00,512 --> 00:38:03,488 >> Auditoire: Alors, l'idée derrière ayant un point clé pour la valeur, 784 00:38:03,488 --> 00:38:07,470 ce que vous retrouvez-vous accès? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Quelle est l'idée d'avoir un pointage clé de la valeur? 786 00:38:10,680 --> 00:38:16,400 Il est juste une autre convention, un autre façon de passer par le réseau 787 00:38:16,400 --> 00:38:22,600 et être en mesure d'accéder à l'une ou l'autre clé ou la valeur ou les deux et de les utiliser. 788 00:38:22,600 --> 00:38:27,100 >> Public: Quel est le rôle de la ordonner que le foreach fonctionne en? 789 00:38:27,100 --> 00:38:29,250 Donc, si nous étions à ajouter des éléments au tableau plus tard, 790 00:38:29,250 --> 00:38:32,140 aurait ceux qui seront les premiers appelé dans le tableau foreach, 791 00:38:32,140 --> 00:38:33,750 ou serait-il plus tard? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Alors, quelle est l'ordre que le foreach 793 00:38:37,770 --> 00:38:39,210 boucle passe par un tableau dans? 794 00:38:39,210 --> 00:38:42,220 Elle passe par le premier élément au dernier élément, 795 00:38:42,220 --> 00:38:43,400 pour le dernier élément ajouté. 796 00:38:43,400 --> 00:38:48,020 Si vous ajoutez des éléments plus tard, ils le feraient accessed-- être les premiers éléments seraient 797 00:38:48,020 --> 00:38:51,410 être consultée comme le premier éléments de la matrice, 798 00:38:51,410 --> 00:38:57,620 et puis vous iriez à travers chacun des les éléments comme une sorte de ordered-- 799 00:38:57,620 --> 00:39:02,930 pas ordonné, mais la façon dont ils ont été mis dans le tableau. 800 00:39:02,930 --> 00:39:06,855 >> Auditoire: Alors, de nouveaux éléments sont ajoutés plus tard? 801 00:39:06,855 --> 00:39:10,680 Donc ils added-- ils seront la derniers dans le [? itération. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: Nouveaux éléments can-- Fondamentalement, lorsque de nouveaux éléments sont ajoutés, 803 00:39:14,280 --> 00:39:16,520 ils sont ajoutés à la fin du tableau? 804 00:39:16,520 --> 00:39:17,632 >> AUDIENCE: Ouais. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Je crois que oui. 806 00:39:18,840 --> 00:39:20,850 Oui. 807 00:39:20,850 --> 00:39:24,330 Et puis, avec votre boucle foreach, après que vous avez ajouté de nouveaux éléments 808 00:39:24,330 --> 00:39:26,790 et vous allez à travers eux, les nouveaux éléments seraient 809 00:39:26,790 --> 00:39:30,930 accessed-- être le nouvel élément, si elle est ajouté dernière, elle sera accessible dernier. 810 00:39:30,930 --> 00:39:34,416 >> AUDIENCE: Pouvez-vous donner juste un exemple de quelque chose qui serait [inaudible] 811 00:39:34,416 --> 00:39:37,404 avec quelque chose avec la valeur comme [inaudible] ou de la valeur, 812 00:39:37,404 --> 00:39:38,910 comme la façon dont vous souhaitez format? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Bien sûr. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Puis-je donner un exemple de ce que nous ferions avec la valeur? 816 00:39:46,410 --> 00:39:52,440 Donc ce que vous avez peut-être familier avec est que nous sommes passés à travers un réseau 817 00:39:52,440 --> 00:39:55,380 et fondamentalement imprimée chacun des éléments, 818 00:39:55,380 --> 00:40:00,910 par exemple, dans le cadre d'un liste ou quelque chose qui a ordonné. 819 00:40:00,910 --> 00:40:02,674 Est-ce logique ou voulons-nous to-- 820 00:40:02,674 --> 00:40:04,340 AUDIENCE: Peut-on imprimer sur ces valeurs? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Oui, nous pourrions imprimer puis essentiellement $ Valeur parce qu'à 822 00:40:13,220 --> 00:40:16,570 cette valeur spécifique, nous serait l'impression de la valeur à l'intérieur de celui-ci. 823 00:40:16,570 --> 00:40:20,150 Donc, si nous étions à notre première itération de celui-ci et nous avons imprimé valeur de $, 824 00:40:20,150 --> 00:40:23,775 nous imprimerons bar. 825 00:40:23,775 --> 00:40:27,020 >> Public: Y at-il également pour les boucles en PHP ou seulement boucles foreach? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Il ya également pour les boucles en PHP. 827 00:40:30,430 --> 00:40:33,399 Et leur logique est surtout le même que ce que vous avez été habitué. 828 00:40:33,399 --> 00:40:34,690 Auditoire: Alors, sa valeur est nulle. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: Il est comme le même. 830 00:40:35,090 --> 00:40:35,590 Oui. 831 00:40:35,590 --> 00:40:37,747 AUDIENCE: Je vais juste poser. 832 00:40:37,747 --> 00:40:39,695 Ainsi, lorsque vous déclarez un tableau, vous ne devez pas 833 00:40:39,695 --> 00:40:42,617 de dire quelle taille il va être, ce qui signifie que vous pouvez juste 834 00:40:42,617 --> 00:40:44,417 ajouter et enlever des éléments [inaudible]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Yup. 836 00:40:45,250 --> 00:40:45,750 Ouaip. 837 00:40:45,750 --> 00:40:46,251 Exactement. 838 00:40:46,251 --> 00:40:48,875 Lorsque nous déclarons un tableau, nous ne pas besoin de dire quelle taille il est, 839 00:40:48,875 --> 00:40:51,022 de sorte que nous pouvons simplement ajouter des éléments sur elle plus tard aussi. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Plus de questions? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Donc apportant PHP et HTML ensemble, ce que nous avons bien seen--, 844 00:41:05,950 --> 00:41:15,130 par exemple, dans cet exemple, nous avons un formulaire HTML qui a un champ de saisie. 845 00:41:15,130 --> 00:41:18,830 >> Et le champ de saisie est juste le nom et puis il a un bouton Soumettre. 846 00:41:18,830 --> 00:41:26,040 Et quand vous appuyez sur la Proposez bouton, dans notre fichier hello.php, 847 00:41:26,040 --> 00:41:32,130 parce que la méthode est pour la forme obtenir, nous pouvons accéder à tout ce qui est au nom 848 00:41:32,130 --> 00:41:40,360 par cette variable globale qui se est-- la syntaxe car il est $ _GET. 849 00:41:40,360 --> 00:41:44,520 Et puis nous pouvons accéder quel que soit le entrée de l'utilisateur à l'intérieur de cette forme de nom 850 00:41:44,520 --> 00:41:47,410 en spécifiant le nom de ce champ. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Toutes les autres questions ou tout questions sur cet exemple précis? 853 00:41:55,060 --> 00:41:58,275 >> AUDIENCE: Où est le PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Ici. 855 00:41:59,150 --> 00:42:01,150 Alors ceci est notre balise d'ouverture pour le PHP. 856 00:42:01,150 --> 00:42:01,530 >> AUDIENCE: Oh, droite. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Oui. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH BLUMBERG:? Le = est un raccourci pour ce que PHP et juste écho. 860 00:42:09,609 --> 00:42:10,150 AUDIENCE: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Ouais, désolé. 862 00:42:10,720 --> 00:42:12,040 Je l'aurais bien fait comprendre. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH BLUMBERG: Imprimer. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: Il est juste la fonction qui nous permet d'imprimer quelque chose. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Grande question. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Donc going-- oui. 869 00:42:25,495 --> 00:42:31,940 >> Public: Est-ce qu'il y aura assez un peu de codage manuel de PHP et HTML 870 00:42:31,940 --> 00:42:33,450 Quiz sur 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Il peut être un bonne quantité d'interprétation 873 00:42:38,810 --> 00:42:43,330 PHP et HTML, pas nécessairement comme une énorme quantité de codage, 874 00:42:43,330 --> 00:42:46,960 si vous pourriez avoir à écrire un boucle foreach, cependant, une boucle for. 875 00:42:46,960 --> 00:42:49,790 Tous les boucles que nous couvrir ici est un jeu équitable. 876 00:42:49,790 --> 00:42:51,889 Et qui est la plupart du temps il. 877 00:42:51,889 --> 00:42:53,430 HANNAH BLUMBERG: je serais prêt. 878 00:42:53,430 --> 00:42:57,010 De la même manière que nous vous avons demandé de écrire un tas de fonctions C sur quizz 0, 879 00:42:57,010 --> 00:42:59,766 Je serais prêt à faire la même en PHP et JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Ouais. 881 00:43:00,640 --> 00:43:03,210 HANNAH BLUMBERG: Je dirais un little-- comme nous ne sommes pas 882 00:43:03,210 --> 00:43:06,251 va vous faire écrire une énorme HTML la page juste parce que ce un peu 883 00:43:06,251 --> 00:43:08,240 fastidieux, mais vous pourriez avoir des parties. 884 00:43:08,240 --> 00:43:09,310 Voilà jeu totalement équitable. 885 00:43:09,310 --> 00:43:11,082 Comme petite page HTML, tout à fait juste. 886 00:43:11,082 --> 00:43:11,623 AUDIENCE: OK. 887 00:43:11,623 --> 00:43:13,814 Que diriez-vous en JavaScript ainsi? 888 00:43:13,814 --> 00:43:14,730 HANNAH BLUMBERG: Ouais. 889 00:43:14,730 --> 00:43:15,250 Fair Game de JavaScript. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Ouais. 891 00:43:15,635 --> 00:43:16,801 Voilà jeu complètement équitable. 892 00:43:16,801 --> 00:43:19,280 HANNAH BLUMBERG: Nous obtiendrons comme à celle de 10 minutes. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, encore une fois, Structured Query Language. 894 00:43:23,750 --> 00:43:28,651 Il permet essentiellement de gérer des données dans une base de données relationnelle 895 00:43:28,651 --> 00:43:29,150 système. 896 00:43:29,150 --> 00:43:31,149 Cela signifie juste fondamentalement que nous avons quelque part 897 00:43:31,149 --> 00:43:37,980 pour stocker certaines données que nous pourrions vouloir utiliser dans un site Web ou sous une autre forme. 898 00:43:37,980 --> 00:43:42,190 Et puis nous avons des requêtes pour obtenir informations de notre base de données, 899 00:43:42,190 --> 00:43:44,320 ou pour insérer des informations en eux. 900 00:43:44,320 --> 00:43:47,560 Un grand nombre de UPDATE ones-- commune, INSERT, SELECT et DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Donc, mise à jour, cela est la syntaxe la mise à jour des données dans une base. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Mise à jour de ce tableau appelé table en disant SET, 904 00:43:57,340 --> 00:44:04,170 nous pouvons placer quelques valeurs dans tous les rangées à l'égalité de quelque chose d'autre. 905 00:44:04,170 --> 00:44:09,410 Ainsi, nous pouvons également spécifier certains spécifiques entrées que nous voulons modifier 906 00:44:09,410 --> 00:44:11,240 et qui peut être en utilisant WHERE. 907 00:44:11,240 --> 00:44:16,380 Et nous pouvons préciser que nous voulons seulement modifier quelques lignes où la maison, 908 00:44:16,380 --> 00:44:19,830 si nous avions une table d'étudiants et tous les élèves avaient maison, 909 00:44:19,830 --> 00:44:24,890 donc nous ne serions modifier certaines valeurs où une maison est égal Currier, 910 00:44:24,890 --> 00:44:25,430 par example. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Pour les commandes INSERT, nous pouvons insérer certaines valeurs dans une table. 913 00:44:31,800 --> 00:44:35,150 Donc INSERT INTO table, puis les valeurs, 914 00:44:35,150 --> 00:44:39,080 puis entre parenthèses, nous spécifions quelles valeurs vous voulez insérer. 915 00:44:39,080 --> 00:44:43,220 Donc INSERT INTO table, col1 et col2, la valeur est val1 et val2. 916 00:44:43,220 --> 00:44:48,930 Donc, ce insère essentiellement une nouvelle ligne dans un tableau contenant les valeurs 1 et 2 917 00:44:48,930 --> 00:44:50,850 dans les colonnes 1 et 2. 918 00:44:50,850 --> 00:44:54,760 >> Et puis nous allons passer en revue un exemple rapide de la façon dont cela ressemble 919 00:44:54,760 --> 00:44:56,310 comme dans un peu notre base de données. 920 00:44:56,310 --> 00:44:58,685 Mais cette dernière question que je pense que nous allons passer en revue, 921 00:44:58,685 --> 00:45:01,450 SELECT, elle nous permet juste pour sélectionner les données à partir d'une table 922 00:45:01,450 --> 00:45:03,080 pour éventuellement l'utiliser par la suite. 923 00:45:03,080 --> 00:45:05,830 Et la façon dont nous le faisons est que nous juste le stocker dans une variable. 924 00:45:05,830 --> 00:45:07,780 Et puis, nous pouvons peut-être l'utiliser à nouveau. 925 00:45:07,780 --> 00:45:10,260 >> Donc étoiles SELECT signifie tout sélectionner. 926 00:45:10,260 --> 00:45:13,280 Voilà juste un raccourci pour sélectionner tous. 927 00:45:13,280 --> 00:45:19,760 FROM table WHERE, nous sommes à la recherche pour certaines conditions spécifiques, 928 00:45:19,760 --> 00:45:22,290 Alors, où colonne égale quelque chose, par exemple. 929 00:45:22,290 --> 00:45:24,410 Si nous voulions juste sélectionner tout le tableau, 930 00:45:24,410 --> 00:45:28,400 cela sélectionne simplement toutes les colonnes et toutes les lignes d'une table. 931 00:45:28,400 --> 00:45:32,040 >> Et puis supprimez FROM table Où col égal quelque chose, 932 00:45:32,040 --> 00:45:36,440 cela supprime quelques-unes Ligne de notre table 933 00:45:36,440 --> 00:45:38,860 où nous avons certaines conditions spécifiques. 934 00:45:38,860 --> 00:45:41,870 Dans ce cas, les conditions sont colonne égale quelque chose. 935 00:45:41,870 --> 00:45:43,460 Alors juste un petit exemple de ce. 936 00:45:43,460 --> 00:45:49,100 Si nous avons cette table ici et nous l'insérer dans une table, ces valeurs, 937 00:45:49,100 --> 00:45:50,400 cela insérer une nouvelle ligne. 938 00:45:50,400 --> 00:45:56,380 Et si nous avions incrémentation automatique, ce serait simplement incrémenter notre ID entre 0 et 1 à 2. 939 00:45:56,380 --> 00:46:00,010 >> Si nous avons choisi de tous les élèves, il retourne juste tous les domaines et toutes les lignes. 940 00:46:00,010 --> 00:46:02,430 Où l'année est supérieure ou égale à 2016, 941 00:46:02,430 --> 00:46:04,390 ce serait juste retour Hannah et moi-même. 942 00:46:04,390 --> 00:46:08,360 Et puis, si nous avons juste choisi id année et l'année des étudiants 943 00:46:08,360 --> 00:46:11,710 où la maison est Cabot House, qui serait, à nouveau, retourner Hannah et moi-même. 944 00:46:11,710 --> 00:46:14,430 >> Ensuite, si nous avons supprimé des étudiants où nom est égal à Rob, 945 00:46:14,430 --> 00:46:16,760 ce serait supprimer toute la ligne. 946 00:46:16,760 --> 00:46:19,696 Et puis, si nous fixons le nom, étudiants UPDATE 947 00:46:19,696 --> 00:46:21,570 Nom de l'ensemble est égal à Daven OÙ maison est égale 948 00:46:21,570 --> 00:46:27,010 Cabot House, qui va aller à les lignes et mettre à jour le nom. 949 00:46:27,010 --> 00:46:31,470 >> Et puis quelques types de données SQL sont CHAR, VARCHAR, INT, et le flotteur. 950 00:46:31,470 --> 00:46:32,760 Ce sont un jeu équitable. 951 00:46:32,760 --> 00:46:36,740 Je voudrais aller encore et assurez-vous que vous savez 952 00:46:36,740 --> 00:46:40,930 et de les avoir sur votre feuille de triche, ce que chacun de ces caractères 953 00:46:40,930 --> 00:46:44,140 ont été utilisés, ce que vous les avez utilisés sur vos psets, 954 00:46:44,140 --> 00:46:48,050 et assurez-vous que vous êtes familier et l'aise d'avoir à choisir 955 00:46:48,050 --> 00:46:51,450 à partir de différents types de données dans votre pset. 956 00:46:51,450 --> 00:46:51,950 Oui. 957 00:46:51,950 --> 00:46:54,300 >> Public: Qu'est-ce qui a été stockée la table? 958 00:46:54,300 --> 00:46:57,119 Oui, où est stocké ce tableau? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Eh bien, en ce moment, il est pas stocké. 960 00:46:59,160 --> 00:47:00,700 Quoi qu'il en soit, où est stocké ce tableau? 961 00:47:00,700 --> 00:47:04,503 Mais il peut être stocké dans une base de données SQL. 962 00:47:04,503 --> 00:47:07,330 >> Public: Et où est la base de données SQL? 963 00:47:07,330 --> 00:47:11,200 Dans l'ordinateur, en ligne quelque part, le serveur? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Il peut être un nombre de choses différentes. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH BLUMBERG: Nous avons interfacé avec Tables SQL plupart avec phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Donc, nous pourrions demander à un serveur de les stocker pour nous. 967 00:47:22,060 --> 00:47:23,830 Nous pourrions les stocker sur notre propre ordinateur. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Cela dépend de comment vous voulez le faire vous-même. 969 00:47:27,950 --> 00:47:30,075 Mais nous avons été stockons eux, comme Hannah mentionné, 970 00:47:30,075 --> 00:47:31,755 sur phpMyAdmin, qui est en ligne. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 Et puis la façon dont nous utilisons PHP et SQL, nous stockent 973 00:47:39,280 --> 00:47:43,450 dans une variable ce que nous avons interrogés pour. 974 00:47:43,450 --> 00:47:48,370 >> Donc, si nous Sélectionner tout dans l'histoire où user_id égale l'ID de session, 975 00:47:48,370 --> 00:47:53,900 ce serait sélectionner toutes les lignes pour la personne spécifique qui 976 00:47:53,900 --> 00:47:58,327 est connecté de l'histoire table et les trier en rangées. 977 00:47:58,327 --> 00:48:00,410 Une chose est cool de savoir que la fonction de requête de CS50 978 00:48:00,410 --> 00:48:02,180 protège contre les balises d'injection SQL. 979 00:48:02,180 --> 00:48:07,420 Cela signifie juste que ça fait en sorte l'entrée qui est entré est correct 980 00:48:07,420 --> 00:48:09,920 et que la personne qui l'entrée est l'entrée 981 00:48:09,920 --> 00:48:15,100 ne cherche pas à l'entrée d'autres malveillants Code soit déposer nos tables 982 00:48:15,100 --> 00:48:17,305 ou tout supprimer à l'intérieur de notre base de données. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Un aperçu rapide de la Modèle Model View Controller, 985 00:48:23,400 --> 00:48:27,360 il est juste une façon d'organiser et la réflexion sur le code. 986 00:48:27,360 --> 00:48:29,100 Il est encore, un paradigme de conception. 987 00:48:29,100 --> 00:48:33,380 Qu'est-ce que cela signifie est que nous can-- et il est une bonne pratique 988 00:48:33,380 --> 00:48:37,790 de séparer les différentes parties de notre code et ce qu'ils 989 00:48:37,790 --> 00:48:40,530 contrôler dans ces trois paradigmes. 990 00:48:40,530 --> 00:48:46,700 >> Donc, notre point de vue est le plus souvent notre modèles, notre mise en page, la façon 991 00:48:46,700 --> 00:48:48,260 que nous avons mis la manière dont notre code ressemble. 992 00:48:48,260 --> 00:48:55,190 Cela est surtout nos fichiers CSS et la manière que nous avons défini la conception de notre code, 993 00:48:55,190 --> 00:48:55,710 fondamentalement. 994 00:48:55,710 --> 00:48:59,280 Notre contrôleur est plutôt ce que nous avons fait avec les fichiers PHP. 995 00:48:59,280 --> 00:49:03,030 Donc encore une fois, en collaboration avec le informations que nous avons 996 00:49:03,030 --> 00:49:06,700 et définissant la façon que information est utilisée, 997 00:49:06,700 --> 00:49:10,660 et ensuite passer cette information soit sur la vue ou le modèle. 998 00:49:10,660 --> 00:49:13,880 Et le modèle, la façon dont nous avons utilisiez un a été notre base de données, 999 00:49:13,880 --> 00:49:17,510 Alors, où est notre informations stocké de sorte qu'il a quelque part 1000 00:49:17,510 --> 00:49:21,490 à vivre, et l'un des code qui se rapporte à la façon 1001 00:49:21,490 --> 00:49:25,410 que nous obtenons cette information ou de la manière que nous mettons à jour cette information. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Ainsi, dans le modèle MVC, HTTP les demandes sont envoyées vers un serveur Web. 1004 00:49:33,200 --> 00:49:36,220 Ensuite, l'interprète de contrôleur la demande de l'utilisateur 1005 00:49:36,220 --> 00:49:38,260 et valide alors l'entrée de l'utilisateur. 1006 00:49:38,260 --> 00:49:41,580 Il est optionnel que nous avons le contrôleur communiquer 1007 00:49:41,580 --> 00:49:44,000 avec un modèle, donc quelque chose comme notre base de données 1008 00:49:44,000 --> 00:49:47,500 ou une autre fonctionnalité qui relaie l'information. 1009 00:49:47,500 --> 00:49:50,340 Et puis finalement, le contrôleur transmet les informations sur la vue 1010 00:49:50,340 --> 00:49:52,090 de sorte qu'il peut être rendu et qu'elle peut 1011 00:49:52,090 --> 00:49:55,860 devenir visible à toute personne accédant à la page Web. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Des questions? 1014 00:50:01,340 --> 00:50:01,840 Impressionnant. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Encore une fois, le modèle, sa fonction, encore une fois, 1017 00:50:08,469 --> 00:50:11,260 est un stockage persistant de l'information, gérer et organiser les données. 1018 00:50:11,260 --> 00:50:13,890 Et ce que nous avons vu jusqu'à est loin de la base de données MySQL 1019 00:50:13,890 --> 00:50:16,200 et tous les fichiers de données qui peuvent utiliser. 1020 00:50:16,200 --> 00:50:20,580 >> Voir, présentation de l'information à l'utilisateur, l'interface utilisateur, ou une interface utilisateur. 1021 00:50:20,580 --> 00:50:22,350 Et l'exemple de ceci est HTML. 1022 00:50:22,350 --> 00:50:23,950 Et puis nous pourrions avoir PHP minime. 1023 00:50:23,950 --> 00:50:28,360 Donc, une boucle qui parcourt sur des données qui sont imprimées 1024 00:50:28,360 --> 00:50:30,720 est partie de la vue, comme par opposition à l'automate. 1025 00:50:30,720 --> 00:50:35,660 Et puis beaucoup de nos fichiers PHP tomber dans la catégorie du contrôleur. 1026 00:50:35,660 --> 00:50:38,410 Il gère tout demandes des utilisateurs et obtient des informations à partir du modèle. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Sauter dans le Document Object Model, ce juste 1029 00:50:45,590 --> 00:50:47,700 se réfère à la façon dont HTML les documents sont organisés. 1030 00:50:47,700 --> 00:50:51,600 Et ils sont organisés dans un arbre qui a une structure de hiérarchie. 1031 00:50:51,600 --> 00:50:56,720 Donc, si nous avons accès à [inaudible] représentation du document, 1032 00:50:56,720 --> 00:51:02,750 nous pouvons travailler avec le document, comme nous manipulons des objets essentiellement. 1033 00:51:02,750 --> 00:51:06,630 >> Et d'en faire une peu plus clair, quand 1034 00:51:06,630 --> 00:51:10,540 nous avons beaucoup de notre différentes étiquettes répondent 1035 00:51:10,540 --> 00:51:12,590 à différents itinéraires dans notre arbre. 1036 00:51:12,590 --> 00:51:17,070 Ensuite, pour cet exemple, nous avoir le nœud de document de départ. 1037 00:51:17,070 --> 00:51:20,010 Nous avons, ensuite, notre noeud HTML qui se divise en tête et le corps. 1038 00:51:20,010 --> 00:51:22,810 Head a un titre, puis titre contient bonjour, monde. 1039 00:51:22,810 --> 00:51:24,860 Et notre corps contient juste bonjour, monde ainsi. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Donc, des questions sur l'un des choses que nous couverts jusqu'ici? 1042 00:51:31,900 --> 00:51:35,891 Et si non, sera Hannah prendre le relais avec JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Impressionnant. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH BLUMBERG: OK, cool. 1045 00:51:37,473 --> 00:51:40,980 Si quelque chose arrive avec PHP ou HTML, ou tout de l'étoffe Maria couvert, 1046 00:51:40,980 --> 00:51:42,700 nous pouvons toujours faire une pause. 1047 00:51:42,700 --> 00:51:46,430 Nous faisons mieux sur maintes fois, si impressionnant. 1048 00:51:46,430 --> 00:51:48,770 Et juste pour revenir très rapidement à cela, 1049 00:51:48,770 --> 00:51:51,010 si vous regardez tous les l'examen de la dernière année, ce 1050 00:51:51,010 --> 00:51:54,120 vient en place aux navires: voici du code HTML, font de ce schéma. 1051 00:51:54,120 --> 00:51:58,380 Ou voici ce schéma, faire un peu HTML, donc certainement une pratique qui. 1052 00:51:58,380 --> 00:52:01,500 Et puis voilà un il garanti question que vous pouvez obtenir le droit. 1053 00:52:01,500 --> 00:52:02,000 Bien. 1054 00:52:02,000 --> 00:52:04,510 Donc, nous allons parler de JavaScript et comment il est un peu 1055 00:52:04,510 --> 00:52:09,130 différente des langues telles que PHP et C, les deux langues que nous avons vu auparavant. 1056 00:52:09,130 --> 00:52:10,780 Donc, le numéro un, il est faiblement typé. 1057 00:52:10,780 --> 00:52:14,630 Voilà comme PHP, mais contrairement à C. 1058 00:52:14,630 --> 00:52:15,890 >> Il est un langage interprété. 1059 00:52:15,890 --> 00:52:19,870 Encore une fois, cela ressemble PHP, à la différence de ce C et 1060 00:52:19,870 --> 00:52:24,630 va nous permettre de use-- il fonctionne vraiment bien avec les pages Web. 1061 00:52:24,630 --> 00:52:28,350 Il va nous permettre de manipuler le contenu et à quoi il ressemble 1062 00:52:28,350 --> 00:52:30,300 et ce qu'il fait. 1063 00:52:30,300 --> 00:52:32,330 >> Nous allons voir un peu d'Ajax. 1064 00:52:32,330 --> 00:52:36,140 Il nous permet de communiquer de manière asynchrone avec différents serveurs 1065 00:52:36,140 --> 00:52:37,950 et obtenir des informations. 1066 00:52:37,950 --> 00:52:42,820 Et ceci est la chose qui a vraiment JavaScript sépare de PHP et C 1067 00:52:42,820 --> 00:52:45,590 est qu'il est du côté client. 1068 00:52:45,590 --> 00:52:49,860 Les deux PHP et C sont typiquement côté serveur. 1069 00:52:49,860 --> 00:52:51,960 >> Pour la plupart, et presque entièrement ce 1070 00:52:51,960 --> 00:52:53,900 nous avons vu, au moins dans cette classe, JavaScript 1071 00:52:53,900 --> 00:52:57,040 agit sur côté client, ce qui signifie que le navigateur est en fait 1072 00:52:57,040 --> 00:52:58,597 responsable de l'exécuter. 1073 00:52:58,597 --> 00:53:01,180 Et cela signifie que nous ne faisons pas besoin d'interagir avec le serveur. 1074 00:53:01,180 --> 00:53:04,380 Donc, cela signifie qu'il peut être beaucoup plus rapide parce qu'il est en fait juste il est Chrome, 1075 00:53:04,380 --> 00:53:10,420 il est Safari, il est Firefox, tout ce que vous utiliser effectivement l'exécution de votre JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> Public: Qu'est-ce que signifie asynchrone? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH BLUMBERG: Ah, ce ne signifie asynchrone? 1078 00:53:13,620 --> 00:53:14,250 Grande question. 1079 00:53:14,250 --> 00:53:17,890 Asynchrone désigne: De plus, la teneur dans laquelle 1080 00:53:17,890 --> 00:53:22,140 nous utilisons, il est, OK, nous sont la création d'une page Web 1081 00:53:22,140 --> 00:53:23,860 et nous avons besoin d'obtenir des informations. 1082 00:53:23,860 --> 00:53:28,250 Donc, avec l'exemple de mashup, certaines informations que nous pourrions vouloir 1083 00:53:28,250 --> 00:53:30,580 est les titres des articles. 1084 00:53:30,580 --> 00:53:33,330 Maintenant, nous could-- une option est de le faire de manière synchrone 1085 00:53:33,330 --> 00:53:37,940 et cela signifie que let de arrêter, aller chercher l'article, 1086 00:53:37,940 --> 00:53:41,275 obtenir l'article en arrière, puis Render, mais ce serait vraiment lent. 1087 00:53:41,275 --> 00:53:44,150 Ce serait une mauvaise expérience utilisateur parce que vous voulez juste être assis 1088 00:53:44,150 --> 00:53:46,630 il attendre quelque chose à répondre. 1089 00:53:46,630 --> 00:53:50,020 >> Nous allons signifie asynchrone continuer à aller sur notre entreprise, 1090 00:53:50,020 --> 00:53:52,529 rendu de la page, et nous allons envoyer une demande 1091 00:53:52,529 --> 00:53:54,570 qui est une sorte de va passer en arrière-plan. 1092 00:53:54,570 --> 00:53:57,610 Je pense que nous utilisons l'exemple conférence d'appeler et de dire Rob, 1093 00:53:57,610 --> 00:53:59,980 hey, pouvez-vous regarder cette place pour moi et revenir à moi, 1094 00:53:59,980 --> 00:54:02,870 plutôt que de simplement me en attente sur le téléphone. 1095 00:54:02,870 --> 00:54:07,020 Donc, il se produit de manière asynchrone des moyens dans le fond loin de nous 1096 00:54:07,020 --> 00:54:08,676 en parallèle. 1097 00:54:08,676 --> 00:54:10,400 >> Grande question. 1098 00:54:10,400 --> 00:54:11,830 autre chose? 1099 00:54:11,830 --> 00:54:12,330 Formidable. 1100 00:54:12,330 --> 00:54:15,020 Nous allons sauter beaucoup plus dans requêtes asynchrones avec Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> Public: Est-ce que JavaScript-- où vient tomber avec le modèle-vue-contrôleur? 1102 00:54:18,287 --> 00:54:19,620 HANNAH BLUMBERG: Bonne question. 1103 00:54:19,620 --> 00:54:23,320 Où se JavaScript automne avec le modèle-vue-contrôleur? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Je suppose que cela peut fall-- si nous ne faisons pas habituellement 1106 00:54:28,350 --> 00:54:31,340 tiens à écraser en ce que paradigme, mais je suppose que je dirais, 1107 00:54:31,340 --> 00:54:34,280 OK, donc JavaScript effectivement va permettre 1108 00:54:34,280 --> 00:54:37,587 nous recueillons des données, interpréter les données, faire réellement 1109 00:54:37,587 --> 00:54:38,920 les choses sérieuses avec les données. 1110 00:54:38,920 --> 00:54:41,100 De cette façon, il est très contrôle-like. 1111 00:54:41,100 --> 00:54:43,900 >> Mais il va aussi nous permettre de afficher des choses et des choses d'impression. 1112 00:54:43,900 --> 00:54:47,021 De cette façon, il est très semblable à vue. 1113 00:54:47,021 --> 00:54:47,520 Oui. 1114 00:54:47,520 --> 00:54:51,710 Donc, il est un peu comme dans PHP où il peut être à la fois de type. 1115 00:54:51,710 --> 00:54:53,330 Bonne question. 1116 00:54:53,330 --> 00:54:55,209 autre chose? 1117 00:54:55,209 --> 00:54:56,000 Tout droit, impressionnant. 1118 00:54:56,000 --> 00:54:57,120 Déplacement à droite le long. 1119 00:54:57,120 --> 00:54:59,110 >> Voyons un exemple de la façon dont nous pouvons utiliser 1120 00:54:59,110 --> 00:55:02,250 JavaScript dans l'un de nos programmes de Web. 1121 00:55:02,250 --> 00:55:05,680 Donc, je vais considérer cette index.html avec un tas de HTML. 1122 00:55:05,680 --> 00:55:08,800 Et la chose que je vous voulez se concentrer sur est cette balise script. 1123 00:55:08,800 --> 00:55:13,280 Et cela dit, OK, je veux courir une certaine JavaScript et voici où il vit. 1124 00:55:13,280 --> 00:55:15,400 Il vit dans hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> Et beaucoup comme CSS, nous pourrions mettre JavaScript dans le code HTML. 1126 00:55:21,120 --> 00:55:24,000 Pourquoi pourrait-on vouloir séparer dehors? 1127 00:55:24,000 --> 00:55:24,500 Oui. 1128 00:55:24,500 --> 00:55:25,486 >> Audience: Plus facile à réécrire? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH BLUMBERG: Ouais. 1130 00:55:26,402 --> 00:55:28,450 Il est plus facile à utiliser partout différentes pages Web. 1131 00:55:28,450 --> 00:55:29,980 Il garde les choses plus propre. 1132 00:55:29,980 --> 00:55:32,090 Il est une bonne pratique. 1133 00:55:32,090 --> 00:55:32,590 Impressionnant. 1134 00:55:32,590 --> 00:55:33,930 Bonne réponse. 1135 00:55:33,930 --> 00:55:36,690 Si bon, si cela va pour être notre index.html. 1136 00:55:36,690 --> 00:55:39,430 Et puis ici est notre minuscule fichier JavaScript. 1137 00:55:39,430 --> 00:55:42,410 >> Et tout ce qu'il dit est alerte Bonjour tout le monde. 1138 00:55:42,410 --> 00:55:46,040 Donc ce qui arrive est quand cette page renders-- 1139 00:55:46,040 --> 00:55:49,680 donc si vous allez à tout site web ce est-- tout ce qui va se passer 1140 00:55:49,680 --> 00:55:53,330 est qu'il va dire, OK, je suis va exécuter ce code JavaScript. 1141 00:55:53,330 --> 00:55:56,370 Et ce code JavaScript dit juste Bonjour alerte monde. 1142 00:55:56,370 --> 00:55:59,090 Donc, je vais obtenir ce sympathique petit pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Bien? 1144 00:56:00,360 --> 00:56:04,746 Voilà un peu comme notre première JavaScript programme, notre Bonjour tout le monde. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Regardons un peu plus sur ce que la syntaxe du langage JavaScript ressemble. 1147 00:56:12,190 --> 00:56:16,330 Et précisément, nous allons comparer à C et PHP, que nous avons vu auparavant. 1148 00:56:16,330 --> 00:56:20,610 >> En JavaScript, nous allons avoir var utilisateur, le nom de la variable, puis 1149 00:56:20,610 --> 00:56:21,690 sa valeur réelle. 1150 00:56:21,690 --> 00:56:26,170 Et nous ne spécifions pas un type, tout simplement comme en PHP, mais très contrairement à C. 1151 00:56:26,170 --> 00:56:28,850 Ainsi, par exemple, si nous voulions pour mémoriser la valeur 50, 1152 00:56:28,850 --> 00:56:32,490 en C, nous aurions à dire, hey, C, je veux un entier, 1153 00:56:32,490 --> 00:56:35,076 Je vais l'appeler i, et sa valeur est 50. 1154 00:56:35,076 --> 00:56:36,450 En PHP, il est un peu plus facile. 1155 00:56:36,450 --> 00:56:41,880 Nous disons, hey, je veux une variable appelé i et sa valeur est 50. 1156 00:56:41,880 --> 00:56:45,890 Très similaire, en JavaScript, nous dis hey, je veux une variable appelée i, 1157 00:56:45,890 --> 00:56:47,080 sa valeur est 50. 1158 00:56:47,080 --> 00:56:52,140 Chaque fois que je l'utilise ultérieure i, je ne dois écrire var. 1159 00:56:52,140 --> 00:56:53,810 Il est juste que je partir de ce point. 1160 00:56:53,810 --> 00:56:58,660 De la même manière, en C, où une fois que nous disons int i, nous utilisons simplement i. 1161 00:56:58,660 --> 00:57:00,340 Bien? 1162 00:57:00,340 --> 00:57:01,800 D'accord. 1163 00:57:01,800 --> 00:57:03,710 >> Passant à boucles, Heureusement, ces presque 1164 00:57:03,710 --> 00:57:06,720 regarde exactly-- Je pense qu'ils sont exactement la même chose que ce que 1165 00:57:06,720 --> 00:57:09,799 boucles vont ressembler dans quelque chose comme C où votre boucle for 1166 00:57:09,799 --> 00:57:11,840 va avoir trois parts-- une initialisation, 1167 00:57:11,840 --> 00:57:13,640 une condition, et une mise à jour. 1168 00:57:13,640 --> 00:57:15,340 Une boucle while, il ressemble exactement la même. 1169 00:57:15,340 --> 00:57:16,390 Nous donnons juste une condition. 1170 00:57:16,390 --> 00:57:18,264 >> Et une boucle Do While, encore, exactement les mêmes. 1171 00:57:18,264 --> 00:57:20,190 Nous donnons une condition. 1172 00:57:20,190 --> 00:57:24,510 Disons que je voulais pour itérer over-- Je voulais faire quelque chose de cinq fois. 1173 00:57:24,510 --> 00:57:27,840 En C, nous pourrions écrire init i est égal à 0. 1174 00:57:27,840 --> 00:57:30,480 i est inférieur à cinq, i ++. 1175 00:57:30,480 --> 00:57:34,240 La seule différence, en JavaScript, au lieu de dire int i est égal à 0, 1176 00:57:34,240 --> 00:57:36,820 nous disons var i est égal à 0. 1177 00:57:36,820 --> 00:57:38,370 Beau. 1178 00:57:38,370 --> 00:57:41,320 Voilà la seule différence. 1179 00:57:41,320 --> 00:57:43,200 Vous avez des questions sur tout cela? 1180 00:57:43,200 --> 00:57:44,160 Oui. 1181 00:57:44,160 --> 00:57:48,480 >> Auditoire: Alors, en PHP, il est le même chose, sauf, mais comme une variable? 1182 00:57:48,480 --> 00:57:49,564 Ou était-ce un exemple var? 1183 00:57:49,564 --> 00:57:50,480 HANNAH BLUMBERG: Ouais. 1184 00:57:50,480 --> 00:57:52,310 Donc, en PHP, il va d'être un signe de dollar. 1185 00:57:52,310 --> 00:57:59,450 Donc ça va $ i égaux 0, $ i est inférieure à 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Grande question. 1187 00:58:02,490 --> 00:58:04,570 >> Maintenant parlons les déclarations de fonction. 1188 00:58:04,570 --> 00:58:07,010 En C, quand nous avons déclaré un fonction, nous lui avons donné un nom 1189 00:58:07,010 --> 00:58:08,490 et nous lui avons donné quelques paramètres. 1190 00:58:08,490 --> 00:58:10,670 Et au début, nous avons écrit le type. 1191 00:58:10,670 --> 00:58:12,440 En JavaScript, tout ce que nous avoir à faire est d'écrire 1192 00:58:12,440 --> 00:58:15,080 la fonction de mot-clé qui dit, hey, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Je suis sur le point de définir une fonction. 1194 00:58:16,570 --> 00:58:18,520 >> Dans ce cas, il a le nom somme. 1195 00:58:18,520 --> 00:58:20,820 Et il prend deux arguments, x et y. 1196 00:58:20,820 --> 00:58:23,280 Notez que nous ne nous soucions pas sur les types de x et y. 1197 00:58:23,280 --> 00:58:26,280 Et tout comme C, nous avons ce mot-clé retour, 1198 00:58:26,280 --> 00:58:29,140 afin que nous puissions faire quelque chose comme retour x et y. 1199 00:58:29,140 --> 00:58:32,540 >> Et maintenant, une fois que nous avons écrit cette première fonction, on peut utiliser somme nulle. 1200 00:58:32,540 --> 00:58:34,740 Et cela est tout à fait bien. 1201 00:58:34,740 --> 00:58:37,530 Une chose vraiment cool JavaScript qui est très différente de C 1202 00:58:37,530 --> 00:58:40,770 est que les fonctions peuvent être traités comme des valeurs. 1203 00:58:40,770 --> 00:58:43,895 Donc, nous pouvons faire quelque chose comme ici où je suppose que je couvre cette up-- 1204 00:58:43,895 --> 00:58:46,400 Je couvrais la somme var part-- et nous venons de le dire 1205 00:58:46,400 --> 00:58:49,850 fonction xy est égal return x + y. 1206 00:58:49,850 --> 00:58:52,140 >> Voilà ce que l'on appellerait une fonction anonyme. 1207 00:58:52,140 --> 00:58:53,920 Il est une fonction sans nom. 1208 00:58:53,920 --> 00:58:56,290 Considérant que cette fonction dit somme, bla, bla, bla, 1209 00:58:56,290 --> 00:58:59,340 ce serait juste dire fonction. 1210 00:58:59,340 --> 00:59:02,020 Mais maintenant, même si je dois cette fonction anonyme, 1211 00:59:02,020 --> 00:59:03,630 cette fonction est vraiment juste une valeur. 1212 00:59:03,630 --> 00:59:05,160 Nous pouvons le traiter comme une valeur. 1213 00:59:05,160 --> 00:59:10,180 >> Donc, nous pouvons enregistrer dans une variable de la même façon, nous pourrions stocker 50 dans une variable. 1214 00:59:10,180 --> 00:59:13,870 Donc nous pouvons dire, OK, je veux un variable, il est appelé somme, 1215 00:59:13,870 --> 00:59:16,011 et il est de cette fonction. 1216 00:59:16,011 --> 00:59:18,760 Donc, ces deux choses sont en réalité va faire exactement la même chose, 1217 00:59:18,760 --> 00:59:21,576 mais la syntaxe est un peu différent et une sorte de note d'amusement. 1218 00:59:21,576 --> 00:59:22,076 Oui. 1219 00:59:22,076 --> 00:59:25,548 >> Auditoire: Alors, vous pourriez appeler un fonction qui était anonyme en disant, 1220 00:59:25,548 --> 00:59:28,244 somme supports 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH BLUMBERG: Ouais. 1222 00:59:29,160 --> 00:59:32,280 Vous pouvez appeler cette anonyme fonction de la même façon. 1223 00:59:32,280 --> 00:59:33,350 Vous feriez somme (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Ce serait tout à fait bien. 1226 00:59:38,200 --> 00:59:41,575 >> Si je ne fais var somme égale fonction, si je viens de supprimer 1227 00:59:41,575 --> 00:59:45,480 this-- Je sais qu'il est sur ma main, mais je prétends supprimé puis this-- 1228 00:59:45,480 --> 00:59:46,964 cette fonction est une sorte de juste disparu. 1229 00:59:46,964 --> 00:59:49,630 Vous ne pouvez jamais utiliser à nouveau parce que vous ne disposez pas d'un nom pour lui. 1230 00:59:49,630 --> 00:59:53,497 Il est difficile de se référer à quelque chose vous ne savez pas comment l'appeler. 1231 00:59:53,497 --> 00:59:54,080 Bonne question. 1232 00:59:54,080 --> 00:59:54,580 Oui. 1233 00:59:54,580 --> 00:59:59,580 >> AUDIENCE: Pouvez-vous référencer somme d'autres lieux avec la valeur de x + y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH BLUMBERG: Pouvez-vous somme de référence dans d'autres endroits 1235 01:00:01,940 --> 01:00:03,360 avec la valeur x + y? 1236 01:00:03,360 --> 01:00:05,130 Je ne suis pas entièrement sûr de ce que vous entendez. 1237 01:00:05,130 --> 01:00:10,582 >> Auditoire: Alors, votre passé semi-anonyme est la fonction somme est égale à cette 1238 01:00:10,582 --> 01:00:14,452 fonction anonyme, de sorte que la somme est maintenant une variable que vous can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH BLUMBERG: Droit. 1240 01:00:15,410 --> 01:00:18,980 Donc somme est la variable, mais il est actually-- 1241 01:00:18,980 --> 01:00:23,770 si la somme est une variable dont valeur est la fonction. 1242 01:00:23,770 --> 01:00:27,030 Il est donc une fonction, qui est une sorte de une chose bizarre pour envelopper autour de votre tête 1243 01:00:27,030 --> 01:00:29,880 puisque nous avons joué avec C et vous ne pouvez pas le faire en C. 1244 01:00:29,880 --> 01:00:32,679 Mais maintenant, nous pouvons appeler le résumé même façon que nous pourrions appeler somme ici. 1245 01:00:32,679 --> 01:00:33,220 AUDIENCE: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH BLUMBERG: Ouais. 1247 01:00:33,970 --> 01:00:34,553 Bonne question. 1248 01:00:34,553 --> 01:00:35,438 Oui. 1249 01:00:35,438 --> 01:00:39,862 >> Auditoire: Alors, nous ne l'utilisons prototypes en PHP ou JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH BLUMBERG: Non, nous ne pas avoir besoin d'utiliser des prototypes, 1251 01:00:42,070 --> 01:00:43,880 en particulier en JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Donc, une mauvaise pratique chose que je suis allez dire que vous ne devriez pas faire 1253 01:00:49,380 --> 01:00:52,620 est que vous ne devez écrire var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Vous pouvez tout simplement commencer à faire i = 50. 1255 01:00:54,840 --> 01:00:57,490 Et serait juste faire i une variable globale. 1256 01:00:57,490 --> 01:01:00,550 >> Il est très mauvaise pratique ne dis jamais explicitement var i, 1257 01:01:00,550 --> 01:01:01,800 mais il est quelque chose que vous pouvez faire. 1258 01:01:01,800 --> 01:01:03,591 L'interprète est pas va te crier dessus. 1259 01:01:03,591 --> 01:01:05,920 JavaScript est assez similaire, tu peux faire ce que tu veux. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Oh, désolé. 1262 01:01:09,800 --> 01:01:10,300 Il ya deux. 1263 01:01:10,300 --> 01:01:12,150 Dans les pantalon orange. 1264 01:01:12,150 --> 01:01:13,190 Aller de l'avant. 1265 01:01:13,190 --> 01:01:14,390 >> AUDIENCE: Non, vous allez d'abord. 1266 01:01:14,390 --> 01:01:16,765 >> AUDIENCE: Non, je disais juste Je ne dois ma main. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 D'ACCORD. 1269 01:01:20,748 --> 01:01:26,604 Donc, si vous deviez appeler cette première fois, maintenant résumer, 1270 01:01:26,604 --> 01:01:29,864 nous appelons cela de la même façon, X, Y, comme à chaque fois? 1271 01:01:29,864 --> 01:01:30,780 HANNAH BLUMBERG: Ouais. 1272 01:01:30,780 --> 01:01:32,572 Donc, ces deux essentiellement faire la même chose. 1273 01:01:32,572 --> 01:01:35,113 Public: Et quel est l'avantage de l'utilisation de l'un ou l'autre? 1274 01:01:35,113 --> 01:01:37,500 HANNAH BLUMBERG: Aucun avantage de l'utilisation de l'un ou l'autre. 1275 01:01:37,500 --> 01:01:40,080 Je voulais juste vous montrer deux différents éléments de la syntaxe. 1276 01:01:40,080 --> 01:01:42,770 Un grand nombre de fois où anonyme fonctions ont un objectif 1277 01:01:42,770 --> 01:01:48,220 est si l'argument à l'autre fonction doit être une fonction. 1278 01:01:48,220 --> 01:01:50,600 Et nous verrons que, dans juste une seconde avec l'Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Donc, si cela n'a pas de sens, le stocker dans le dos de votre tête. 1280 01:01:53,577 --> 01:01:55,660 Voilà où un anonyme fonction peut être utile 1281 01:01:55,660 --> 01:01:58,284 car il est pas vraiment la peine lui donnant un nom, puisque nous sommes juste 1282 01:01:58,284 --> 01:01:59,443 aller à l'utiliser une fois. 1283 01:01:59,443 --> 01:02:00,370 Oui. 1284 01:02:00,370 --> 01:02:03,635 >> Audience: Si X et Y modification ultérieure sur, résumera changer ainsi? 1285 01:02:03,635 --> 01:02:06,510 HANNAH BLUMBERG: Si X et Y changement plus tard, résumera changer ainsi? 1286 01:02:06,510 --> 01:02:08,840 Donc, cela est fait, je penser quelque chose qui est, 1287 01:02:08,840 --> 01:02:12,260 à nouveau, il se sent juste très différent de C. Cette valeur est pas un. 1288 01:02:12,260 --> 01:02:13,620 Il est pas 5. 1289 01:02:13,620 --> 01:02:15,550 Il est juste la fonction elle-même. 1290 01:02:15,550 --> 01:02:19,110 Donc dès que vous lui donnez des paramètres, alors vous aurez en fait de calculer une valeur. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: Et puis vous pouvez appeler la fonction 1292 01:02:21,193 --> 01:02:23,272 et l'utiliser pour obtenir une certaine valeur. 1293 01:02:23,272 --> 01:02:24,230 HANNAH BLUMBERG: Droit. 1294 01:02:24,230 --> 01:02:25,250 Exactement. 1295 01:02:25,250 --> 01:02:25,863 Oui. 1296 01:02:25,863 --> 01:02:27,946 >> AUDIENCE: Donc, si vous venez de stocker dans la variable, 1297 01:02:27,946 --> 01:02:31,430 comme var x est égal à la somme de deux values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH BLUMBERG: Ouais. 1299 01:02:32,420 --> 01:02:35,320 Ainsi, vous pouvez juste faire var sum est égal à la somme des deux valeurs. 1300 01:02:35,320 --> 01:02:37,670 Oui. 1301 01:02:37,670 --> 01:02:38,680 D'autres questions? 1302 01:02:38,680 --> 01:02:39,642 Oui. 1303 01:02:39,642 --> 01:02:42,047 >> AUDIENCE: Mais ne serait-ce que confondre somme et la somme? 1304 01:02:42,047 --> 01:02:45,062 Comme si vous appelez votre variable somme, appelleriez-vous la fonction somme? 1305 01:02:45,062 --> 01:02:45,895 HANNAH BLUMBERG: MM. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Si vous avez fait quelque chose comme, somme égale à la somme de 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> AUDIENCE: Ouais. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH BLUMBERG: Je crois que écraserait la valeur de somme. 1310 01:02:56,465 --> 01:02:59,290 Donc, une autre intéressante chose à propos de JavaScript 1311 01:02:59,290 --> 01:03:02,950 est ce que une seule variable peut prendre sur un tas de différents types. 1312 01:03:02,950 --> 01:03:03,790 Mauvaise pratique. 1313 01:03:03,790 --> 01:03:06,280 Vous ne devriez pas faire quelque chose comme ce que vous venez de dire. 1314 01:03:06,280 --> 01:03:10,240 >> Mais en C, si i est mis égale à un nombre entier, 1315 01:03:10,240 --> 01:03:13,570 nous savons qu'il est jamais va devenir une chaîne. 1316 01:03:13,570 --> 01:03:15,670 Cela ne veut pas le cas en JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Ouais, bonne question. 1318 01:03:17,770 --> 01:03:20,151 autre chose? 1319 01:03:20,151 --> 01:03:20,650 D'accord. 1320 01:03:20,650 --> 01:03:21,850 Faire tout juste à temps. 1321 01:03:21,850 --> 01:03:23,050 Garder aller. 1322 01:03:23,050 --> 01:03:25,200 D'accord. 1323 01:03:25,200 --> 01:03:27,780 >> Si nous regardons un tableau en JavaScript, voici 1324 01:03:27,780 --> 01:03:30,250 un exemple rapide d'un tableau de chaînes. 1325 01:03:30,250 --> 01:03:31,967 Et les tableaux peuvent se développer dynamiquement. 1326 01:03:31,967 --> 01:03:33,675 Ils ne possèdent pas de taille fixe de la même façon 1327 01:03:33,675 --> 01:03:37,990 ce qu'ils font en C. Nous pouvons accéder à la éléments avec seulement les crochets. 1328 01:03:37,990 --> 01:03:41,720 >> Cela ressemble beaucoup PHP et beaucoup comme C, où nous pouvons dire, dans ce cas, 1329 01:03:41,720 --> 01:03:48,360 si je voulais le mot JavaScript, je le ferais ne arr crochets avec un 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 Et puis si vous vous souvenez en C lorsque nous voulu pour obtenir la longueur d'un tableau, 1332 01:03:55,390 --> 01:03:56,820 il était vraiment ennuyeux. 1333 01:03:56,820 --> 01:03:58,460 Mais en JavaScript, super facile. 1334 01:03:58,460 --> 01:03:59,910 Tout ce que nous faisons, .length. 1335 01:03:59,910 --> 01:04:01,120 Lui donne les longueurs. 1336 01:04:01,120 --> 01:04:01,892 C'est tout. 1337 01:04:01,892 --> 01:04:03,140 >> AUDIENCE: qui est simple. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH BLUMBERG: Ouais, en fait votre vie beaucoup plus facile. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, object-- pas là. 1341 01:04:11,560 --> 01:04:15,480 Objets en JavaScript sensation un peu comme dans structs C 1342 01:04:15,480 --> 01:04:18,280 et des tableaux associatifs en PHP. 1343 01:04:18,280 --> 01:04:20,270 Donc, ce que nous avons vu une beaucoup de JSON est qui 1344 01:04:20,270 --> 01:04:23,150 synonyme de JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 Et il est essentiellement un moyen de structurer nos données. 1346 01:04:25,550 --> 01:04:27,880 >> Voyons un exemple, probablement le plus facile. 1347 01:04:27,880 --> 01:04:32,540 Alors, voici un exemple d'un objet qui stocke la classe, CS50. 1348 01:04:32,540 --> 01:04:37,790 Et quand je dis classe, je veux dire bien sûr, pas like-- ouais, le cours, CS50. 1349 01:04:37,790 --> 01:04:40,730 Et vous verrez que tout dans l'objet 1350 01:04:40,730 --> 01:04:43,526 va être contenue accolades. 1351 01:04:43,526 --> 01:04:48,260 >> Et nous commençons à associer les noms de champs ou les touches avec les différentes valeurs. 1352 01:04:48,260 --> 01:04:52,920 Ainsi, vous pouvez commencer à voir comment ce genre de se sent comme un tableau associatif en PHP. 1353 01:04:52,920 --> 01:04:57,450 Donc, nous allons associer le terrain ou le nom de la clé, bien sûr, avec la chaîne, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Nous allons avoir un instructeur. 1356 01:04:59,940 --> 01:05:00,940 Nous allons avoir TF. 1357 01:05:00,940 --> 01:05:05,240 Nous allons avoir des psets nombre et nous allons avoir enregistré. 1358 01:05:05,240 --> 01:05:10,720 Et une chose à noter est fraîche tous ces choses ont différents types, 1359 01:05:10,720 --> 01:05:12,020 et voilà tout à fait bien. 1360 01:05:12,020 --> 01:05:15,330 >> Il est très bien pour un objet, en fait, il est probablement prévu pour un objet 1361 01:05:15,330 --> 01:05:19,620 d'avoir une combinaison de chaînes et le nombre et les booléens et les tableaux 1362 01:05:19,620 --> 01:05:23,420 et tout ce que vous pourriez voulez avoir l'intérieur de votre objet. 1363 01:05:23,420 --> 01:05:28,570 Et noter que ces vont être les noms ou les touches, et ensuite nous 1364 01:05:28,570 --> 01:05:30,300 régler égalité avec un peu côlon. 1365 01:05:30,300 --> 01:05:32,015 >> Public: Que signifie exactement JSON signifie? 1366 01:05:32,015 --> 01:05:33,890 HANNAH BLUMBERG: Qu'est exactement JSON ne signifie? 1367 01:05:33,890 --> 01:05:36,470 JSON se trouve juste pour JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 Il est juste un moyen de mise en forme. 1369 01:05:38,430 --> 01:05:40,040 Oui. 1370 01:05:40,040 --> 01:05:41,800 Il est un moyen de mise en forme de nos données. 1371 01:05:41,800 --> 01:05:43,620 >> En C, il est structures. 1372 01:05:43,620 --> 01:05:45,800 En PHP, il est des tableaux associatifs. 1373 01:05:45,800 --> 01:05:47,120 En JavaScript, nous avons des objets. 1374 01:05:47,120 --> 01:05:48,969 >> Auditoire: Alors CS50 est un objet? 1375 01:05:48,969 --> 01:05:51,010 HANNAH BLUMBERG: CS50 est l'objet dans ce cas. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Maintenant, comment pouvons-nous réellement l'accès ces champs ou modifier ces champs. 1378 01:05:57,880 --> 01:06:03,920 Par exemple, supposons que nous avons décidé que vous vouliez un de moins pset ce semestre. 1379 01:06:03,920 --> 01:06:06,300 Au lieu de neuf, nous sommes juste d'avoir huit. 1380 01:06:06,300 --> 01:06:08,240 Comment pourrions-nous changer cela? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, mauvaise façon. 1382 01:06:09,436 --> 01:06:11,060 Il ya deux façons que nous pouvons faire cela. 1383 01:06:11,060 --> 01:06:13,490 Le numéro un est avec le point notation et numéro deux 1384 01:06:13,490 --> 01:06:15,750 est avec la notation de crochet. 1385 01:06:15,750 --> 01:06:19,720 Ainsi, par exemple, si je voulu changer ou d'accès 1386 01:06:19,720 --> 01:06:26,820 le domaine des psets dans notre objet CS50, ce que je voudrais faire est de CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 si le nom du point d'objet le nom du champ ou de la clé. 1388 01:06:30,770 --> 01:06:37,120 >> Très similaire, il est exactement équivalent à faire CS50, puis 1389 01:06:37,120 --> 01:06:42,050 dans des crochets, des psets. 1390 01:06:42,050 --> 01:06:42,837 Bien? 1391 01:06:42,837 --> 01:06:44,298 Oui. 1392 01:06:44,298 --> 01:06:47,707 >> Auditoire: Alors, est JSON JavaScript techniquement encore, 1393 01:06:47,707 --> 01:06:51,814 même si dans les psets nous séparer sur [inaudible]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH BLUMBERG: Bien sûr. 1395 01:06:52,730 --> 01:06:56,290 Donc la question est, sont JavaScript et JSON équivalent? 1396 01:06:56,290 --> 01:07:00,750 Donc, JSON est la notation, essentiellement la façon dont nous écrivons 1397 01:07:00,750 --> 01:07:02,700 un objet à partir de JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Donc, ils ne sont pas exactement les mêmes. 1399 01:07:05,190 --> 01:07:08,950 >> Je dirais JavaScript, il sont des objets en JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON prend ces objets et les imprime et les affiche 1401 01:07:12,590 --> 01:07:15,160 ou les stocke dans une belle façon. 1402 01:07:15,160 --> 01:07:18,110 Donc, JSON est pas une programmation la langue de la façon dont JavaScript est. 1403 01:07:18,110 --> 01:07:20,900 Il est juste pour la notation nos objets en JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Oui. 1405 01:07:21,400 --> 01:07:24,144 >> Auditoire: Alors, qu'est-ce [Inaudible] compléter? 1406 01:07:24,144 --> 01:07:25,060 HANNAH BLUMBERG: Bien sûr. 1407 01:07:25,060 --> 01:07:27,727 Donc, cela ne fait rien. 1408 01:07:27,727 --> 01:07:28,935 Ceci est juste un moyen d'accéder. 1409 01:07:28,935 --> 01:07:31,393 Donc, disons que nous voulions changer le nombre de séries de problèmes 1410 01:07:31,393 --> 01:07:32,450 neuf à huit. 1411 01:07:32,450 --> 01:07:34,383 Ce que nous faisons est de faire quelque chose comme CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Ouais, bonne question. 1414 01:07:39,400 --> 01:07:40,733 Ceci est juste pour vous montrer la syntaxe. 1415 01:07:40,733 --> 01:07:43,620 N'a pas réellement faire quelque chose d'utile. 1416 01:07:43,620 --> 01:07:46,085 Des questions? 1417 01:07:46,085 --> 01:07:48,210 Déplacement à droite le long. 1418 01:07:48,210 --> 01:07:51,960 >> Alors regardons un exemple rapide de la façon dont JavaScript fonctionne parce que je vous ai dit qu'il 1419 01:07:51,960 --> 01:07:55,170 fait toutes ces choses cool et nous permet de modifier les pages Web. 1420 01:07:55,170 --> 01:07:56,970 Disons effectivement le voir en action. 1421 01:07:56,970 --> 01:07:59,850 Alors, prenez, par exemple, ce fichier HTML. 1422 01:07:59,850 --> 01:08:04,350 >> Et la chose que je veux que vous concentrez sur ce cette balise particulière, qui est un bouton, 1423 01:08:04,350 --> 01:08:06,182 avec id search_button. 1424 01:08:06,182 --> 01:08:08,670 Il est juste sur la page. 1425 01:08:08,670 --> 01:08:10,690 Alors maintenant, nous allons voir ce que nous pouvons réellement faire. 1426 01:08:10,690 --> 01:08:12,560 >> Eh bien, supposons que lorsque vous cliquez sur ce bouton, 1427 01:08:12,560 --> 01:08:16,010 nous voulons faire une alert-- vous avez cliqué sur le bouton. 1428 01:08:16,010 --> 01:08:17,840 Voyons comment nous pouvons le faire. 1429 01:08:17,840 --> 01:08:23,869 Donc ce window.onload-- est pas quelque chose que vous avez vu en classe, donc 1430 01:08:23,869 --> 01:08:26,180 ne sera pas besoin de le savoir pour le quiz. 1431 01:08:26,180 --> 01:08:33,660 Mais cela dit, fondamentalement, OK, appel cette fonction lorsque les charges de fenêtres. 1432 01:08:33,660 --> 01:08:35,080 >> Voilà donc tout type de code de configuration. 1433 01:08:35,080 --> 01:08:36,390 Ne vous inquiétez pas tellement à ce sujet. 1434 01:08:36,390 --> 01:08:39,170 Ce que je veux de vous concentrer sur est ici. 1435 01:08:39,170 --> 01:08:44,020 Nous disons var searchButton égale document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Donc, comme vous pouvez le deviner, ce qu'il fait est-il dit, 1437 01:08:46,450 --> 01:08:50,920 OK, allez trouver l'élément avec ID search_button. 1438 01:08:50,920 --> 01:08:52,790 Et maintenant que nous avons élément réel et je suis 1439 01:08:52,790 --> 01:08:56,279 va stocker dans un searchButton variable. 1440 01:08:56,279 --> 01:09:00,651 Et maintenant, nous pouvons réellement utiliser cet élément et le modifier, ou accéder à ses valeurs, 1441 01:09:00,651 --> 01:09:01,359 des choses comme ça. 1442 01:09:01,359 --> 01:09:04,649 Nous pouvons réellement commencer à engager avec la page Web. 1443 01:09:04,649 --> 01:09:10,330 >> Donc ici, je dire, OK, maintenant que je dois ce bouton, quand il est cliqué, 1444 01:09:10,330 --> 01:09:12,859 appeler cette fonction anonyme. 1445 01:09:12,859 --> 01:09:16,811 Donc, cela est où anonyme fonctions deviennent utiles. 1446 01:09:16,811 --> 01:09:18,060 Et qu'est-ce que la fonction faire? 1447 01:09:18,060 --> 01:09:20,529 Eh bien, il appelle tout cela fonction d'alerte et il dit, 1448 01:09:20,529 --> 01:09:22,910 vous avez cliqué sur le bouton Rechercher. 1449 01:09:22,910 --> 01:09:29,670 >> Alors qu'est-ce qui va se passer si je vais à chaque fois cette HTML vit et je cliquez sur le bouton, 1450 01:09:29,670 --> 01:09:33,729 Je vais prendre un peu de fantaisie alerte qui dit que vous avez cliqué sur le bouton. 1451 01:09:33,729 --> 01:09:40,710 Donc, les choses se concentrer sur ici-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 obtient un HTML particulier élément avec l'ID donné. 1453 01:09:44,960 --> 01:09:48,529 Et maintenant, nous pouvons mettre en ce qui devrait se produire lorsque 1454 01:09:48,529 --> 01:09:50,702 cet élément particulier est cliqué. 1455 01:09:50,702 --> 01:09:52,670 >> PUBLIC: Nous devons mettre tout cela en? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH BLUMBERG: Désolé? 1457 01:09:53,162 --> 01:09:55,130 >> AUDIENCE: Devons-nous coder physiquement tout cela? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH BLUMBERG: Devons-nous coder physiquement tout cela? 1459 01:09:56,340 --> 01:09:56,839 Oui. 1460 01:09:56,839 --> 01:09:58,120 Est pas ce genre de gênant? 1461 01:09:58,120 --> 01:10:00,032 Cela fait beaucoup de code. 1462 01:10:00,032 --> 01:10:01,574 >> AUDIENCE: Vous pouvez importer quelque chose. 1463 01:10:01,574 --> 01:10:02,532 HANNAH BLUMBERG: Droit. 1464 01:10:02,532 --> 01:10:03,610 Nous pourrions utiliser quelque chose. 1465 01:10:03,610 --> 01:10:08,140 Et dans particular-- oh, il est me disant que je dois enseigner section. 1466 01:10:08,140 --> 01:10:11,061 En particulier, nous allons utiliser la bibliothèque jQuery, 1467 01:10:11,061 --> 01:10:13,060 parce que était vraiment longue et vraiment ennuyeux 1468 01:10:13,060 --> 01:10:16,860 et je veux être en mesure de le simplifier et de le rendre plus court et plus facile à écrire. 1469 01:10:16,860 --> 01:10:19,810 >> Donc, jQuery est une bibliothèque JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Donc JavaScript est la programmation la langue; jQuery est une bibliothèque. 1471 01:10:24,930 --> 01:10:27,190 Et il fait un tas de choses plus faciles. 1472 01:10:27,190 --> 01:10:33,230 Il permet de changer et d'aller partout un document HTML beaucoup plus facile. 1473 01:10:33,230 --> 01:10:35,030 >> Il rend les événements de manipulation plus facile. 1474 01:10:35,030 --> 01:10:37,580 Il rend l'animation plus facile et cela rend plus facile l'Ajax. 1475 01:10:37,580 --> 01:10:40,140 Alors débutons deux ces choses dès maintenant. 1476 01:10:40,140 --> 01:10:40,900 Excuse moi. 1477 01:10:40,900 --> 01:10:42,620 Avant que nous faisons, une syntaxe de base. 1478 01:10:42,620 --> 01:10:46,870 >> Ceci est ce que la plupart des appels à la bibliothèque jQuery ressemble. 1479 01:10:46,870 --> 01:10:50,520 Nous utilisons ce dollar sign-- aucun signe de connexion à PHP, 1480 01:10:50,520 --> 01:10:56,030 inconvenient-- juste le nom d'un sélecteur, point, puis une action. 1481 01:10:56,030 --> 01:10:58,860 Voyons donc un peu des exemples concrets de ce que. 1482 01:10:58,860 --> 01:11:02,980 >> Donc, cela est en fait le même Code de la diapositive de l'événement. 1483 01:11:02,980 --> 01:11:08,740 Donc, cette longue, devient chose laide cela, chose beaucoup plus gentille petite. 1484 01:11:08,740 --> 01:11:10,370 Essayons donc de le décomposer. 1485 01:11:10,370 --> 01:11:17,090 Ce dit, OK, jQuery-- ce dollar sign-- jQuery, me trouver la fenêtre. 1486 01:11:17,090 --> 01:11:18,480 Voilà donc le sélecteur. 1487 01:11:18,480 --> 01:11:21,800 >> Quand il charge, appeler cette fonction. 1488 01:11:21,800 --> 01:11:23,880 Voilà donc tout à l'intérieur. 1489 01:11:23,880 --> 01:11:24,380 D'ACCORD. 1490 01:11:24,380 --> 01:11:25,740 Jusqu'ici, tout va bien? 1491 01:11:25,740 --> 01:11:26,750 D'accord. 1492 01:11:26,750 --> 01:11:32,970 >> Maintenant, jQuery, me trouver le chose avec ID search_button. 1493 01:11:32,970 --> 01:11:36,090 Et ce que l'on clique dessus, appeler cette fonction. 1494 01:11:36,090 --> 01:11:37,900 Et puis cette fonction de exactement le même. 1495 01:11:37,900 --> 01:11:41,052 Il suffit de faire un peu d'alerte, vous avez cliqué sur le bouton Rechercher. 1496 01:11:41,052 --> 01:11:42,650 >> Donc, il est vraiment agréable. 1497 01:11:42,650 --> 01:11:46,260 Il condense réellement et simplifie notre code. 1498 01:11:46,260 --> 01:11:49,030 Comment ai-je sais que il est ID search_button 1499 01:11:49,030 --> 01:11:50,960 et non pas comme search_button de classe? 1500 01:11:50,960 --> 01:11:52,024 >> AUDIENCE: hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH BLUMBERG: Ouais. 1502 01:11:52,940 --> 01:11:56,450 Ce symbole de hachage, il est juste comme CSS. 1503 01:11:56,450 --> 01:12:00,080 Alors rappelez-vous, avec CSS, lorsque nous voulu choisir quelque chose par ID, 1504 01:12:00,080 --> 01:12:01,590 nous avons utilisé le signe dièse. 1505 01:12:01,590 --> 01:12:05,400 Et quand nous avons voulu sélectionner quelque chose par classe, nous utilisons le point. 1506 01:12:05,400 --> 01:12:06,870 Formidable. 1507 01:12:06,870 --> 01:12:08,230 Donner un sens? 1508 01:12:08,230 --> 01:12:11,500 Donc, jQuery est censé juste rendre notre vie plus facile. 1509 01:12:11,500 --> 01:12:12,000 Oui. 1510 01:12:12,000 --> 01:12:15,660 >> Auditoire: Alors, je suis un peu confus quant à la façon dont la fonction anonyme fonctionne. 1511 01:12:15,660 --> 01:12:19,027 Avez-vous le nom de cette anonymouse fonction, fonctionner? 1512 01:12:19,027 --> 01:12:20,594 Comment est-il appelé? 1513 01:12:20,594 --> 01:12:21,510 HANNAH BLUMBERG: Bien sûr. 1514 01:12:21,510 --> 01:12:25,812 Donc la fonction est juste un mot clé qui dit, je suis sur le point de définir une fonction. 1515 01:12:25,812 --> 01:12:26,520 AUDIENCE: Oh, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH BLUMBERG: OK? 1517 01:12:27,353 --> 01:12:32,120 Et puis nous passons comme un l'argument to-- prenons 1518 01:12:32,120 --> 01:12:37,040 ce One-- interne à la fonction de clic. 1519 01:12:37,040 --> 01:12:39,420 Donc oui, de sorte que la fonction, cette fonction anonyme, 1520 01:12:39,420 --> 01:12:40,910 devient un argument réel. 1521 01:12:40,910 --> 01:12:43,632 Alors rappelez-vous en JavaScript, nous peut traiter fonctions en tant que valeurs. 1522 01:12:43,632 --> 01:12:44,340 AUDIENCE: Oh, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH BLUMBERG: Ouais. 1524 01:12:45,256 --> 01:12:46,035 I like that "oh." 1525 01:12:46,035 --> 01:12:47,490 Agréable. 1526 01:12:47,490 --> 01:12:49,915 D'autres questions? 1527 01:12:49,915 --> 01:12:50,505 Temps? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Bon. 1529 01:12:51,380 --> 01:12:52,760 Bien. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH BLUMBERG: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Certains jQuery utile rapide. 1532 01:12:55,720 --> 01:12:57,559 Je ne vais pas aller à travers tout cela. 1533 01:12:57,559 --> 01:12:59,350 Ces diapositives seront jusqu'à en ligne un peu 1534 01:12:59,350 --> 01:13:02,040 plus tard, de sorte que vous pouvez vérifier il un peu plus tard. 1535 01:13:02,040 --> 01:13:07,120 Mais fondamentalement, le général tendance se maintient, où nous disons, 1536 01:13:07,120 --> 01:13:11,510 OK, bon, jQuery, voici mon sélecteur et ensuite ici est une action. 1537 01:13:11,510 --> 01:13:15,940 Et vous pouvez faire des choses comme l'accès la valeur d'un formulaire, accéder à certaines HTML, 1538 01:13:15,940 --> 01:13:19,195 contrôle ce qui se passe lorsque l'utilisateur soumet un formulaire, des choses comme ça. 1539 01:13:19,195 --> 01:13:20,106 Oui. 1540 01:13:20,106 --> 01:13:22,090 >> Auditoire: Alors, dans le examen, nous allons avoir besoin de 1541 01:13:22,090 --> 01:13:25,066 de connaître beaucoup de la documentation jQuery. 1542 01:13:25,066 --> 01:13:31,018 Donc, étant donné que nous Copiez / collez le jQuery la documentation à notre feuille de triche, 1543 01:13:31,018 --> 01:13:32,506 Où est la ligne tracée? 1544 01:13:32,506 --> 01:13:33,957 Comme combien avons-nous besoin de savoir? 1545 01:13:33,957 --> 01:13:35,290 HANNAH BLUMBERG: Bonne question. 1546 01:13:35,290 --> 01:13:37,765 La question est essentiellement étant donné que vous 1547 01:13:37,765 --> 01:13:41,330 ne peut pas accéder à la documentation jQuery lors de l'essai, Combien devriez-vous 1548 01:13:41,330 --> 01:13:41,830 connaître? 1549 01:13:41,830 --> 01:13:45,540 Nous ne nous attendons pas que vous veniez avec une fonction aléatoire 1550 01:13:45,540 --> 01:13:47,240 que nous vous attendre à Google. 1551 01:13:47,240 --> 01:13:52,930 >> Les choses qui sont un jeu équitable sont je le ferais dire juste genre de la syntaxe générale, 1552 01:13:52,930 --> 01:13:58,310 être en mesure de sélectionner par ID et par class-- si juste comme CSS. 1553 01:13:58,310 --> 01:14:01,876 Et puis les fonctions réelles themself, nous allons probablement vous dire. 1554 01:14:01,876 --> 01:14:02,376 Oui. 1555 01:14:02,376 --> 01:14:05,591 >> Auditoire: Alors, lorsque vous sélectionnez par classe signifierait dot. 1556 01:14:05,591 --> 01:14:06,840 HANNAH BLUMBERG: Oui, exactement. 1557 01:14:06,840 --> 01:14:07,340 Bien. 1558 01:14:07,340 --> 01:14:10,461 Lorsque vous sélectionnez par classe, ça va à point au lieu du signe dièse. 1559 01:14:10,461 --> 01:14:10,960 Oui. 1560 01:14:10,960 --> 01:14:12,710 >> Public: Seriez-vous aller sur la différence 1561 01:14:12,710 --> 01:14:14,310 entre la sélection par ID et par classe? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH BLUMBERG: Bien sûr. 1563 01:14:14,560 --> 01:14:17,510 La différence entre la sélection ID et la sélection par classe. 1564 01:14:17,510 --> 01:14:20,685 Alors que Maria a déclaré un peu plus tôt, il y 1565 01:14:20,685 --> 01:14:26,280 ne peut être un élément HTML avec un ID donné, alors que la classe, 1566 01:14:26,280 --> 01:14:29,740 elle nous permet de regrouper un tas de différents éléments, 1567 01:14:29,740 --> 01:14:34,300 donc les choses qui sont liées, mais pas exactement la même. 1568 01:14:34,300 --> 01:14:35,685 Cela répond à la question? 1569 01:14:35,685 --> 01:14:36,200 Impressionnant. 1570 01:14:36,200 --> 01:14:37,194 Oui. 1571 01:14:37,194 --> 01:14:40,680 >> Public: Que faire si vous avez plusieurs des choses qui sont dans la même classe? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH BLUMBERG: Qu'arrive-t- si vous avez plusieurs choses qui 1573 01:14:42,150 --> 01:14:43,280 sont de la même classe? 1574 01:14:43,280 --> 01:14:45,829 Ainsi, par exemple, si nous sommes simplement en utilisant JavaScript pur, 1575 01:14:45,829 --> 01:14:48,120 nous ferions quelque chose comme document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 Et puis ce que cela fait effectivement est retourne un tableau d'éléments. 1578 01:14:56,320 --> 01:14:59,517 >> Et vous devez soit parcourir eux ou trouver celui que vous voulez. 1579 01:14:59,517 --> 01:15:01,350 Il ne va pas de donner vous un seul élément. 1580 01:15:01,350 --> 01:15:03,450 Il va vous donner un réseau d'éléments. 1581 01:15:03,450 --> 01:15:05,280 Grande question. 1582 01:15:05,280 --> 01:15:07,700 autre chose? 1583 01:15:07,700 --> 01:15:09,520 Impressionnant. 1584 01:15:09,520 --> 01:15:12,860 >> Donc je pense que si vous êtes familier avec toute jQuery que vous avez vu dans le pset, 1585 01:15:12,860 --> 01:15:15,600 vous devriez être bon d'aller. 1586 01:15:15,600 --> 01:15:16,325 Question? 1587 01:15:16,325 --> 01:15:17,610 Oh non. 1588 01:15:17,610 --> 01:15:18,859 Je dois vraiment enseigner. 1589 01:15:18,859 --> 01:15:19,358 Détendez-vous. 1590 01:15:19,358 --> 01:15:20,035 Ça va être beau. 1591 01:15:20,035 --> 01:15:20,660 Je vais y arriver. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Parlons de l'Ajax. 1594 01:15:26,870 --> 01:15:31,350 Alors Ajax va être a-- bien, nous allons commencer avec ce qu'il représente. 1595 01:15:31,350 --> 01:15:32,350 Il est un acronyme. 1596 01:15:32,350 --> 01:15:35,855 Il signifie Asynchronous JavaScript et XML. 1597 01:15:35,855 --> 01:15:39,800 Et XML est essentiellement va être [Inaudible] avec un type de nos données. 1598 01:15:39,800 --> 01:15:42,100 Mais nous ne sommes pas réellement utilisé XML. 1599 01:15:42,100 --> 01:15:43,430 Au lieu de cela, nous utilisons simplement JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Donc, fondamentalement, il est certains data-- asynchrone, JavaScript, et les données, 1601 01:15:48,350 --> 01:15:50,040 dans ce cas, JSON. 1602 01:15:50,040 --> 01:15:52,820 Et notre but, comme nous l'avons mentionné un peu plus tôt, 1603 01:15:52,820 --> 01:15:56,880 est d'être en mesure de faire une demande, cette demande a faire 1604 01:15:56,880 --> 01:16:00,700 sa chose dans le fond, mais continuent 1605 01:16:00,700 --> 01:16:02,550 faisons tout nous avons l'intention de faire. 1606 01:16:02,550 --> 01:16:06,650 Et puis, quand cette information est prêt, puis nous incorporons. 1607 01:16:06,650 --> 01:16:08,470 >> Voyons donc ce que cela ressemble réellement. 1608 01:16:08,470 --> 01:16:11,210 Et cela, vous devriez être un peu familier 1609 01:16:11,210 --> 01:16:13,680 de pset8, celui que vous venez tourné dans. 1610 01:16:13,680 --> 01:16:16,200 Alors, voici une jQuery valide fonction qui nous pourrions 1611 01:16:16,200 --> 01:16:18,250 veulent savoir about-- ce signe de dollar. 1612 01:16:18,250 --> 01:16:21,500 Donc, il dit la fonction jQuery, .getJson. 1613 01:16:21,500 --> 01:16:25,020 >> Et ce que cette fonction fait est-il prend une URL et certains parameters-- 1614 01:16:25,020 --> 01:16:28,000 donc je pense que dans le cas de pset8, il était comme, 1615 01:16:28,000 --> 01:16:33,520 l'URL est articles.php et la paramètres ETE GO = un code postal. 1616 01:16:33,520 --> 01:16:41,580 Et il dit, OK, faire une demande à cette URL avec les paramètres donnés. 1617 01:16:41,580 --> 01:16:43,480 Et cela se produit juste. 1618 01:16:43,480 --> 01:16:47,730 >> Quand il se termine, il est soit va réussir 1619 01:16:47,730 --> 01:16:49,370 ou il va à l'échec. 1620 01:16:49,370 --> 01:16:53,480 Donc, cela est l'équivalent de l'appel Rob et lui demander de faire quelque chose. 1621 01:16:53,480 --> 01:17:00,260 Et puis quand il rappelle, il est soit allez dire que je suis fait ou je échoué. 1622 01:17:00,260 --> 01:17:04,030 >> Donc, dans le cas où vous êtes fait, vous dites, OK, je suis fait. 1623 01:17:04,030 --> 01:17:05,980 Et puis vous appelez cette fonction. 1624 01:17:05,980 --> 01:17:08,915 Dans ce cas, ça va être un fonction qui prend quelques informations. 1625 01:17:08,915 --> 01:17:12,890 Celui que nous occupons habituellement environ est des données, les données que nous avons effectivement rentrés 1626 01:17:12,890 --> 01:17:15,900 comme un résultat de l'appel .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> Et vous pouvez faire quelque chose avec elle. 1628 01:17:17,470 --> 01:17:23,670 Donc, dans le cas de pset8, nous avons affiché comme une liste. 1629 01:17:23,670 --> 01:17:29,050 Fail va être une fonction qui est appelée, si la demande échoue 1630 01:17:29,050 --> 01:17:30,450 pour quelque raison que ce soit. 1631 01:17:30,450 --> 01:17:35,104 Et dans le cas de pset8, nous venons CONSOLE.LOG il. 1632 01:17:35,104 --> 01:17:36,020 Vous avez des questions à ce sujet? 1633 01:17:36,020 --> 01:17:36,300 Oui. 1634 01:17:36,300 --> 01:17:39,633 >> AUDIENCE: Pouvons-nous utiliser simplement la fonction thêta la place de la fonction, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH BLUMBERG: Bien sûr. 1637 01:17:44,380 --> 01:17:46,713 Donc oui, je pense que dans le jeu de processeurs, nous venons de voir les données de la fonction. 1638 01:17:46,713 --> 01:17:48,700 Donc, il est tout simplement the-- oui, OK. 1639 01:17:48,700 --> 01:17:50,510 Voilà ce que nous avons vu dans le pset. 1640 01:17:50,510 --> 01:17:51,480 Voilà tout à fait bien. 1641 01:17:51,480 --> 01:17:54,210 >> Ce ne sont que si vous vouliez de sortir plus d'informations, 1642 01:17:54,210 --> 01:17:57,190 ce sont les choses qui vous pourriez obtenir de .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Bonne question. 1644 01:17:59,040 --> 01:17:59,706 autre chose? 1645 01:17:59,706 --> 01:18:00,206 Oui. 1646 01:18:00,206 --> 01:18:01,787 >> Auditoire: Alors .getJSON est Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH BLUMBERG: OK. 1648 01:18:02,620 --> 01:18:05,700 Donc ceci est le genre de partie difficile. 1649 01:18:05,700 --> 01:18:12,390 Il est une fonction qui permet jQuery que vous fassiez des appels asynchrones. 1650 01:18:12,390 --> 01:18:16,080 Et ces appels asynchrones, qui est ce que nous avons référons à l'Ajax. 1651 01:18:16,080 --> 01:18:16,850 Oui. 1652 01:18:16,850 --> 01:18:20,185 Cela m'a pris un temps très long à séparer quand je étais étudiant. 1653 01:18:20,185 --> 01:18:21,560 AUDIENCE: Pouvez-vous répéter? 1654 01:18:21,560 --> 01:18:22,476 HANNAH BLUMBERG: Ouais. 1655 01:18:22,476 --> 01:18:23,630 Puis-je le dire? 1656 01:18:23,630 --> 01:18:29,010 Cette fonction .getJSON, elle est une fonction jQuery. 1657 01:18:29,010 --> 01:18:31,970 Et il va faire un appel asynchrone. 1658 01:18:31,970 --> 01:18:35,700 Et ces appels asynchrones, nous avons été référant à ceux que l'Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> D'autres questions? 1661 01:18:41,872 --> 01:18:43,330 Nous avons seulement quelques minutes. 1662 01:18:43,330 --> 01:18:45,080 Et Maria va conclure avec la sécurité 1663 01:18:45,080 --> 01:18:47,464 et puis nous allons à peu près fait. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 Donc, ce est-- il suffit de prendre un couple de secondes à regarder par-dessus cela. 1666 01:18:54,030 --> 01:18:56,750 Et ce ne sont pas quelque chose de grand. 1667 01:18:56,750 --> 01:18:59,430 Et quelqu'un peut me dire pourquoi? 1668 01:18:59,430 --> 01:19:05,650 Qu'est-ce qui se passe dans foo et peut pouvait potentiellement aboutir à quelque chose de mauvais, 1669 01:19:05,650 --> 01:19:06,770 et ce qui est ce qu'on appelle? 1670 01:19:06,770 --> 01:19:07,270 Oui. 1671 01:19:07,270 --> 01:19:10,391 Audience: Si l'argument qui est est passé dans plus de 12 caractères, 1672 01:19:10,391 --> 01:19:11,454 elle pourrait déborder. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Droit. 1674 01:19:12,370 --> 01:19:14,180 Parfait. 1675 01:19:14,180 --> 01:19:15,384 Quel est son nom? 1676 01:19:15,384 --> 01:19:16,300 Vous venez de mentionner qu'elle. 1677 01:19:16,300 --> 01:19:16,840 >> AUDIENCE: débordement de tampon. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Yup, débordement de tampon. 1679 01:19:18,381 --> 01:19:21,230 Donc ceci est quelque chose que nous qualifier de débordement de tampon. 1680 01:19:21,230 --> 01:19:25,500 Et nous voyons que l'intérieur de foo, nous avons défini notre buffer, c, 1681 01:19:25,500 --> 01:19:27,240 avec une taille de 12. 1682 01:19:27,240 --> 01:19:32,680 Toutefois, dans le principal, nous ne faisons pas vérifier en aucune façon à tous 1683 01:19:32,680 --> 01:19:36,480 si la argv1-- de sorte que était le deuxième argument. 1684 01:19:36,480 --> 01:19:39,630 Nous ne vérifions pas si le la taille de celui-ci est approprié. 1685 01:19:39,630 --> 01:19:43,380 >> Donc, si nous avions une utilisateur particulier malveillants 1686 01:19:43,380 --> 01:19:47,170 qui a mis en quelque argument qui a été plus de 12, et ensuite potentiellement 1687 01:19:47,170 --> 01:19:50,850 au-delà des limites de ce que l'argument, eu un peu de code exécutable 1688 01:19:50,850 --> 01:19:55,570 qu'il essayait de faire quelque chose de mal Avec ça; puis ceci, ce qui se passerait, 1689 01:19:55,570 --> 01:19:59,310 l'emporterait sur le retour adresse de la fonction foo, 1690 01:19:59,310 --> 01:20:04,370 provoquant la fonction quand retour à exécuter ce code. 1691 01:20:04,370 --> 01:20:07,540 Et puis de mauvaises choses peuvent se produire. 1692 01:20:07,540 --> 01:20:09,850 Cela fait-il sens pour tout le monde? 1693 01:20:09,850 --> 01:20:12,424 >> Et comment pouvons-nous protéger contre cela? 1694 01:20:12,424 --> 01:20:13,090 Aucune suggestion? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 En fait, à l'intérieur de potentiellement foo, comment 1697 01:20:21,890 --> 01:20:28,294 pouvons-nous assurez-vous que cela ne peut arriver? 1698 01:20:28,294 --> 01:20:33,879 >> Audience: Si la taille 12 est dépassée, vous allouer de la mémoire supplémentaire? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Suggestion est, allouer la mémoire supplémentaire de la taille dépassée. 1700 01:20:37,170 --> 01:20:39,800 En fait, nous pouvons faire quelque chose d'un beaucoup plus simple que cela aussi. 1701 01:20:39,800 --> 01:20:44,870 Nous pouvons simplement obtenir la longueur de chaîne de l'argument qui est entré, 1702 01:20:44,870 --> 01:20:48,590 vérifier si elle est inférieure supérieure ou égale à 12-- 1703 01:20:48,590 --> 01:20:50,790 qui est ce que nous voulons être parce que nous ne voulons pas 1704 01:20:50,790 --> 01:20:52,373 à dépasser les limites de notre tampon. 1705 01:20:52,373 --> 01:20:55,690 Et puis, si elle ne le fait pas, nous peut travailler avec l'argument. 1706 01:20:55,690 --> 01:21:00,296 Et puis, si elle le fait, nous voulons effectivement Yello potentiellement à l'utilisateur. 1707 01:21:00,296 --> 01:21:01,670 Mais cela est la façon dont nous le ferions. 1708 01:21:01,670 --> 01:21:02,443 Oui. 1709 01:21:02,443 --> 01:21:04,360 >> Public: Pourriez-vous expliquer memcpy réel rapide? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, désolé. 1711 01:21:05,443 --> 01:21:06,040 Oui. 1712 01:21:06,040 --> 01:21:11,290 Memcpy prend les est-- désolé, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy prend tout ce qui est en bar, quoi est passé 1714 01:21:15,850 --> 01:21:18,050 sur foo comme argument de ligne de commande. 1715 01:21:18,050 --> 01:21:19,440 Donc ça va prendre argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 est appelé bar ici. 1717 01:21:21,420 --> 01:21:24,453 Donc, il va prendre la barre et il va copier dans c. 1718 01:21:24,453 --> 01:21:25,402 >> AUDIENCE: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: Et ça va copy-- le troisième argument se réfère simplement 1720 01:21:28,360 --> 01:21:30,601 à combien ça va copier dans c. 1721 01:21:30,601 --> 01:21:31,142 AUDIENCE: Ah. 1722 01:21:31,142 --> 01:21:33,030 Donc la copie de celui-ci tous alors. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Ouais, il est la copie de tout cela. 1724 01:21:34,310 --> 01:21:34,810 Oui. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Tout d'abord, nous nous assurons que la barre est pas égale à NULL, car il est un pointeur. 1727 01:21:41,910 --> 01:21:44,680 Alors nous obtenons la longueur de chaîne de la barre. 1728 01:21:44,680 --> 01:21:47,530 Nous nous assurons qu'il est inférieur ou égal à 12. 1729 01:21:47,530 --> 01:21:50,070 Et puis parce que nous avons fait en sorte, nous pouvons réellement 1730 01:21:50,070 --> 01:21:53,122 memcpy et être sûr que ce est OK. 1731 01:21:53,122 --> 01:21:53,705 Des questions? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Formidable. 1734 01:21:58,690 --> 01:22:00,400 Je voudrais poser deux questions vraies ou fausses. 1735 01:22:00,400 --> 01:22:05,470 Quelqu'un peut me dire tout de suite si elles sont vraies ou fausses? 1736 01:22:05,470 --> 01:22:07,460 Oui, il est faux. 1737 01:22:07,460 --> 01:22:07,960 Exactement. 1738 01:22:07,960 --> 01:22:09,330 Tous les deux sont faux. 1739 01:22:09,330 --> 01:22:12,682 Donc, en utilisant un seul mot de passe est jamais vraiment une bonne idée 1740 01:22:12,682 --> 01:22:14,890 parce que si quelqu'un sait votre mot de passe, ils peuvent tout simplement 1741 01:22:14,890 --> 01:22:16,260 accéder à tous vos autres comptes. 1742 01:22:16,260 --> 01:22:19,260 Et puis les icônes ne font rien pour assurer la sécurité. 1743 01:22:19,260 --> 01:22:24,900 Nous devrions regardent généralement pour HTTPS au lieu de HTTP et l'URL. 1744 01:22:24,900 --> 01:22:28,560 >> Et certains autres types de attaques que nous avons mentionnés, 1745 01:22:28,560 --> 01:22:31,390 que David a mentionné dans des conférences, des attaques par injection SQL. 1746 01:22:31,390 --> 01:22:37,310 Nous avons déjà vu que si nous l'don't-- CS50 fonction de requête fait en sorte que SQL 1747 01:22:37,310 --> 01:22:39,530 des attaques par injection peuvent ne pas se produire. 1748 01:22:39,530 --> 01:22:42,640 Mais si nous ne utilisons CS50, entre guillemets "dans la requête" 1749 01:22:42,640 --> 01:22:46,830 nous aurions à faire en sorte que la entrée de l'utilisateur ne sont pas en fait quelque SQL 1750 01:22:46,830 --> 01:22:49,670 requête qui va provoquer tout nos tables soient abandonnées 1751 01:22:49,670 --> 01:22:54,070 ou quelque chose de mal arriver avec notre base de données. 1752 01:22:54,070 --> 01:22:56,790 >> Détournement de session est un autre type d'attaque 1753 01:22:56,790 --> 01:23:05,940 qui se produit quand une mauvaise personne utilise la session de quelque victime 1754 01:23:05,940 --> 01:23:08,740 ID d'accéder aux informations de connexion. 1755 01:23:08,740 --> 01:23:13,620 Donc, un exemple très triviale qui est comme si nous avons un ordinateur public, 1756 01:23:13,620 --> 01:23:21,120 alors la mauvaise personne se connecte puis ils ont des cookies qui sont enregistrés. 1757 01:23:21,120 --> 01:23:23,380 Et les cookies ne changent pas pour la session. 1758 01:23:23,380 --> 01:23:27,620 >> Ensuite, nous avons la victime aller puis vous connecter au site. 1759 01:23:27,620 --> 01:23:30,290 Les cookies ne changent pas pour un certain session. 1760 01:23:30,290 --> 01:23:33,060 Et puis la victime se connecte à le site Web et puis quitte. 1761 01:23:33,060 --> 01:23:36,190 Et puis, la personne qui remonte peut ensuite utiliser toujours leur ID de session 1762 01:23:36,190 --> 01:23:37,430 accéder à leurs informations. 1763 01:23:37,430 --> 01:23:40,050 Voilà donc un exemple de comment cela pourrait se produire. 1764 01:23:40,050 --> 01:23:45,570 >> Et puis, je ne voudrais pas trop vous inquiéter sur le code ou quelque chose de spécifique 1765 01:23:45,570 --> 01:23:49,270 comme celui qui pourrait provoquer ce, mais avoir une sorte de idée de ce que 1766 01:23:49,270 --> 01:23:51,400 les variables sont impliquées dans ce. 1767 01:23:51,400 --> 01:23:53,897 Et puis manipuler tête données est un autre type d'attaque 1768 01:23:53,897 --> 01:23:55,230 qui a David a parlé. 1769 01:23:55,230 --> 01:23:59,730 Et il se réfère juste ce qui peut arriver quand 1770 01:23:59,730 --> 01:24:04,300 la réponse, le HTTP réponse à l'intérieur de notre tête 1771 01:24:04,300 --> 01:24:05,720 est pas aseptisé correctement. 1772 01:24:05,720 --> 01:24:14,340 >> Et l'un des fields-- par exemple, si quelqu'un écrase l'un des en-tête 1773 01:24:14,340 --> 01:24:18,860 valeurs contiennent rien de plus que ce qu'ils devraient contain-- et effectivement 1774 01:24:18,860 --> 01:24:22,720 contenir, par exemple, un 200 OK code d'état, puis ils 1775 01:24:22,720 --> 01:24:26,890 pourraient faire malveillants choses quand ils ne sont pas censés. 1776 01:24:26,890 --> 01:24:30,815 Mais je ne voudrais pas trop vous inquiéter beaucoup sur le code spécifique 1777 01:24:30,815 --> 01:24:34,110 qui pourrait provoquer ce, juste une sorte de compréhension 1778 01:24:34,110 --> 01:24:37,290 les choses de haut niveau comme ça. 1779 01:24:37,290 --> 01:24:39,570 >> Je pense que tout cela est que nous avons à couvrir. 1780 01:24:39,570 --> 01:24:40,090 Incroyable. 1781 01:24:40,090 --> 01:24:43,310 Quelqu'un at-il des questions sur toute des choses que nous avons couvert? 1782 01:24:43,310 --> 01:24:44,213 Oui. 1783 01:24:44,213 --> 01:24:48,077 >> Auditoire: Alors, une seule sorte de question plus logistique. 1784 01:24:48,077 --> 01:24:53,400 Le contenu est principalement axé sur les choses après quizz 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: Donc, question est, est le contenu 1786 01:24:55,730 --> 01:24:59,720 porté principalement sur des choses après quizz 1? 1787 01:24:59,720 --> 01:25:06,070 Donc, l'accent est mis sur après Quiz 1, à l'exception 1788 01:25:06,070 --> 01:25:10,914 que nous devons nous concentrer sur les choses en pset5 et beaucoup de structures de données 1789 01:25:10,914 --> 01:25:11,580 que nous avons couvert. 1790 01:25:11,580 --> 01:25:14,300 Et nous ne pouvons pas dire que nous ne peut ignorer quelque chose avant 1791 01:25:14,300 --> 01:25:17,120 que parce qu'il construit sur elle ainsi. 1792 01:25:17,120 --> 01:25:21,845 >> Donc se concentrer sur ce que, plus le matériel de pset5 comme notamment liés listes, piles, 1793 01:25:21,845 --> 01:25:23,720 files d'attente, et tout que Hannah est allé. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH BLUMBERG: Droit. 1795 01:25:24,050 --> 01:25:27,450 Ouais, nous sommes allés sur toute la C trucs au tout début, très rapidement. 1796 01:25:27,450 --> 01:25:29,090 Mais assurez-vous de revoir cela. 1797 01:25:29,090 --> 01:25:32,700 Revenez en arrière et regarder le quiz 0 avis. 1798 01:25:32,700 --> 01:25:36,110 >> Un couple de notes plus logistiques, juste alors que nous avons votre attention. 1799 01:25:36,110 --> 01:25:39,100 Nous allons avoir des heures de bureau à la fois le lundi et le mardi soir. 1800 01:25:39,100 --> 01:25:41,540 Ils vont être en MD 119. 1801 01:25:41,540 --> 01:25:44,220 Cela est d'autant sur le site, de sorte si vous ne pas, pas de soucis entendez. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA ouverture: 8:30 à 11h00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH BLUMBERG: Ouais, de 8h30 à 11h00. 1804 01:25:46,260 --> 01:25:46,910 Nous serons là. 1805 01:25:46,910 --> 01:25:48,368 Nous serons là pour répondre aux questions. 1806 01:25:48,368 --> 01:25:49,480 Il est assez froid et amusant. 1807 01:25:49,480 --> 01:25:53,240 Les gars, vous pouvez poser toutes les questions que vous avez sur quizz 1. 1808 01:25:53,240 --> 01:25:55,740 Et quizz 1 est sur Mercredi, alors bonne chance. 1809 01:25:55,740 --> 01:25:59,770 Si vous avez des questions, peut-être Venez discuter avec nous ici en tête-à-un. 1810 01:25:59,770 --> 01:26:00,880 Bien. 1811 01:26:00,880 --> 01:26:01,630 Merci beaucoup. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Merci beaucoup, les gars. 1813 01:26:02,880 --> 01:26:03,480 >> AUDIENCE: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [APPLAUDISSEMENTS] 1815 01:26:05,930 --> 01:26:07,530