1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [Jouer de la musique] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID MALAN: Ceci est CS50, et ceci est le début de la huitième semaine. 5 00:00:13,350 --> 00:00:17,510 Et nous sommes très heureux d'accueillir dos, grosse surprise, propre Ramon CS50 6 00:00:17,510 --> 00:00:22,160 Galvan, une personne âgée qui a été la hausse passé les derniers mois 7 00:00:22,160 --> 00:00:26,190 depuis Juillet à Los Angeles, à Hollywood, travailler littéralement sur un nouveau téléviseur de marque 8 00:00:26,190 --> 00:00:31,930 spectacle appelé Colony, le créateur de ce qui est en fait un alun Harvard lui-même. 9 00:00:31,930 --> 00:00:36,610 Et donc nous sommes très heureux de voir ce débuts sur le réseau USA ce Janvier. 10 00:00:36,610 --> 00:00:40,370 Alors restez à l'écoute pour cela, et pour Ramon plus pour les semaines à venir. 11 00:00:40,370 --> 00:00:42,550 >> Sachez maintenant que la fin est proche. 12 00:00:42,550 --> 00:00:47,400 Et cela signifie qu'il n'y a pas tout ce que beaucoup à gauche du CS50, triste à dire. 13 00:00:47,400 --> 00:00:49,400 Nous avons seulement trois problème ensembles gauche- il ya 14 00:00:49,400 --> 00:00:52,510 problème réglé six-- qui est en vos mains maintenant ou le seront bientôt, 15 00:00:52,510 --> 00:00:56,080 plus tard cette week-- est destiné à combler nos mondes de la ligne de commande, où 16 00:00:56,080 --> 00:00:59,450 nous avons passé la plupart de notre temps à l'aide C, et le monde de la programmation web. 17 00:00:59,450 --> 00:01:02,350 Eh bien, vous verrez beaucoup d'idées emprunté à l'ouvrage de la ligne de commande, 18 00:01:02,350 --> 00:01:04,560 mais aussi beaucoup de nouvelles et des idées intéressantes 19 00:01:04,560 --> 00:01:07,929 qui sont également va être germane pour applications mobiles et de la technologie, 20 00:01:07,929 --> 00:01:10,470 plus généralement, avec lequel vous les gars sont tous familiers de nos jours 21 00:01:10,470 --> 00:01:12,090 sur les ordinateurs portables et les téléphones et autres. 22 00:01:12,090 --> 00:01:15,220 >> Ainsi, vous aurez implémentez pas une page Web, ou d'un site Web 23 00:01:15,220 --> 00:01:17,620 en soi, mais un serveur Web réelle. 24 00:01:17,620 --> 00:01:21,590 Vous allez écrire le reste d'un serveur Web écrit en C, dont le but dans la vie 25 00:01:21,590 --> 00:01:25,410 est de recevoir les requêtes HTTP, ces enveloppes virtuelles, nous continuons à parler 26 00:01:25,410 --> 00:01:29,780 à propos, et effectivement répondre soit avec certains content-- statiques comme un point HTML 27 00:01:29,780 --> 00:01:32,310 fichier, ou un point ou JPEG tout autre nombre de fichiers, 28 00:01:32,310 --> 00:01:37,070 ou même un fichier PHP qui permet à votre web serveur va interpréter que PHP 29 00:01:37,070 --> 00:01:38,332 code et cracher les résultats. 30 00:01:38,332 --> 00:01:40,540 Maintenant, nous avons fourni avec vous un peu de cadre 31 00:01:40,540 --> 00:01:43,100 pour it-- effet le code de distribution pour le problème 32 00:01:43,100 --> 00:01:47,496 fixé six est plus de 1000 lignes, un beaucoup de ce qui est des commentaires, pour être fair-- 33 00:01:47,496 --> 00:01:49,370 mais cela est vraiment destiné à l'occasion 34 00:01:49,370 --> 00:01:52,570 pour obtenir vos mains sales plongée dans un assez grand projet 35 00:01:52,570 --> 00:01:55,570 que nous avons très précisément pièces sculptées sur de vous, 36 00:01:55,570 --> 00:01:59,046 de sorte que vraiment quand vous quittez et CS50 entrer dans le monde réel de la programmation 37 00:01:59,046 --> 00:02:00,920 et que vous voulez tremper dans un certain nombre de projets, 38 00:02:00,920 --> 00:02:03,253 vous aurez beaucoup plus confort téléchargeant une source 39 00:02:03,253 --> 00:02:05,020 Code, certains open source projeter sur le web, 40 00:02:05,020 --> 00:02:08,174 et la plongée dans et en faisant changements qui bon vous semble. 41 00:02:08,174 --> 00:02:11,340 Problème réglé sept va être à propos faire votre propre application basée sur le Web 42 00:02:11,340 --> 00:02:14,140 qui accepte une entrée dynamique et produit une sortie dynamique dans la forme 43 00:02:14,140 --> 00:02:16,920 d'un site de etrade.com-like. 44 00:02:16,920 --> 00:02:20,800 Et le problème réglé huit mettra l'accent sur l'instant une autre langue connue sous JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Pendant ce temps, le dernier projet est à l'horizon. 46 00:02:24,170 --> 00:02:26,800 La pré-proposition dite est due d'une semaine à partir d'aujourd'hui. 47 00:02:26,800 --> 00:02:29,930 Pré-proposal-- par la spécification, qui est sur le website-- de CS50 48 00:02:29,930 --> 00:02:33,260 est une occasion assez décontracté pour d'envoyer un e-mail assez succincte 49 00:02:33,260 --> 00:02:35,170 à vos collègues de l'enseignement juste pour le prévenir 50 00:02:35,170 --> 00:02:38,250 ou elle de ce que vous pensez, à utiliser lui comme une caisse de résonance. 51 00:02:38,250 --> 00:02:40,980 Et avoir un bon sens check-- si vous songez 52 00:02:40,980 --> 00:02:43,210 à propos de mordre trop ou peut-être beaucoup trop peu, 53 00:02:43,210 --> 00:02:46,480 ou peut-être vous avez aucune idée et que vous souhaitez engager une conversation. 54 00:02:46,480 --> 00:02:48,480 >> Par la suite, est une proposition et rapport de situation, 55 00:02:48,480 --> 00:02:51,860 la soi-disant CS50 hackathon ici Cambridge pour les étudiants Harvard et Yale 56 00:02:51,860 --> 00:02:52,362 Identique. 57 00:02:52,362 --> 00:02:54,320 Le projet final la mise en œuvre est alors due. 58 00:02:54,320 --> 00:02:59,290 Et puis une foire CS50 ici, à Cambridge, ainsi qu'une autre à New Haven. 59 00:02:59,290 --> 00:03:02,500 Donc la proposition, jetez un oeil à le site Web pour ces indications. 60 00:03:02,500 --> 00:03:06,530 >> Mais plus excitante, aussi, est une occasion de vous salir les mains, 61 00:03:06,530 --> 00:03:09,350 et vos esprits ouverts à un tout tas de sujets et outils 62 00:03:09,350 --> 00:03:12,920 et les techniques qui sont accessoires au coeur du cursus de la formation, 63 00:03:12,920 --> 00:03:14,810 mais néanmoins liés. 64 00:03:14,810 --> 00:03:18,400 Et aussi merveilleuse pierres de gué à faire des projets définitifs vraiment cool que 65 00:03:18,400 --> 00:03:22,020 aller bien au-delà matériel que nous avons couvert formellement dans le problème fixe ou en cours. 66 00:03:22,020 --> 00:03:24,446 Alors, allez sur le site de CS50 pour la liste entière des séminaires. 67 00:03:24,446 --> 00:03:26,070 Si vous ne vous inscrivez pas encore, ça va. 68 00:03:26,070 --> 00:03:29,860 Allez-y et inscrivez-vous et nous le ferons encore suivi avec un lien live streaming, 69 00:03:29,860 --> 00:03:31,844 le jour et l'heure est sur le site. 70 00:03:31,844 --> 00:03:33,760 Et tout sera enregistré et mis en ligne 71 00:03:33,760 --> 00:03:35,800 si vous ne pouvez pas faire la jours et des moments particuliers. 72 00:03:35,800 --> 00:03:39,380 >> Quant à ce qui nous attend thereafter-- bien, bien sûr, il ya le hackathon CS50. 73 00:03:39,380 --> 00:03:43,560 Cette photo, de rappel, de la semaine zéro prise autour de quatre heures, un soir, dans les années passées. 74 00:03:43,560 --> 00:03:46,900 La foire de CS50, qui encore une fois aura lieu dans les deux villes. 75 00:03:46,900 --> 00:03:49,760 Et puis, juste pour planter la graines, même si nous avons encore 76 00:03:49,760 --> 00:03:54,080 un mois plus à gauche du semestre, si vous souhaitez rejoindre propre enseignement de CS50 77 00:03:54,080 --> 00:03:56,770 le personnel, et vous voulez commencer penser à devenir CA, 78 00:03:56,770 --> 00:03:59,550 ou l'enseignement compatriote, sachez que Nous allons commencer à parler plus à ce sujet 79 00:03:59,550 --> 00:04:00,630 plus tard ce semestre. 80 00:04:00,630 --> 00:04:03,470 Mais on voit ici est la plupart de l'équipe de cette année. 81 00:04:03,470 --> 00:04:06,950 >> Et ainsi, et je PHP-- était si triste la semaine dernière que [? Allyse?] Aimablement 82 00:04:06,950 --> 00:04:09,370 est allé à l'effort d'obtenir nous ces magnifiques accessoires 83 00:04:09,370 --> 00:04:11,720 que je ne finissent par utiliser, de sorte qu'il vraiment juste regardé un peu stupide 84 00:04:11,720 --> 00:04:15,160 que nous avions une pelle assis ici tout jour mercredi dernier, et une petite cuillère. 85 00:04:15,160 --> 00:04:17,709 Mais ce fut ma métaphorique façon d'essayer de peindre 86 00:04:17,709 --> 00:04:21,600 l'image de pourquoi nous sommes en transition de C à un langage comme PHP. 87 00:04:21,600 --> 00:04:25,480 Et la même chose pourrait être dit de toute nombre de languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 ou grappes de others-- mais alors que dans C, par exemple, écrire un programme en C 89 00:04:31,270 --> 00:04:34,050 pourrait être généralement comme prendre une cuillère de ce type 90 00:04:34,050 --> 00:04:36,770 et creuser un trou dans le terre, dans le sable ou la saleté. 91 00:04:36,770 --> 00:04:39,770 PHP vous permet de prendre beaucoup grandes morsures sur le problème, 92 00:04:39,770 --> 00:04:42,842 écrit beaucoup moins de code en utilisant un outil beaucoup plus faible, 93 00:04:42,842 --> 00:04:45,050 parce qu'il ya tellement plus fonctionnalité reconstitué dans. 94 00:04:45,050 --> 00:04:47,633 >> Maintenant, si nous étions vraiment dramatique, nous aurions quelque chose à la pelle 95 00:04:47,633 --> 00:04:48,760 ici, mais ainsi soit-il. 96 00:04:48,760 --> 00:04:51,370 Pendant ce temps, l'autre métaphore nous sommes arrivés avec 97 00:04:51,370 --> 00:04:53,770 est, bien sûr, vous pourriez utiliser quelque chose comme une clé 98 00:04:53,770 --> 00:04:56,610 à marteler dans quelque chose comme un clou. 99 00:04:56,610 --> 00:04:58,980 Mais bien sûr, le droit outil à utiliser va 100 00:04:58,980 --> 00:05:01,360 être pas tant le langage appelé C-- 101 00:05:01,360 --> 00:05:03,590 et maintenant je viens agacé [? Sanders,?] Probablement, 102 00:05:03,590 --> 00:05:07,890 Nous allons corriger cela afin later-- le bon outil pour utiliser souvent 103 00:05:07,890 --> 00:05:09,640 ne va pas être cet outil de plus bas niveau. 104 00:05:09,640 --> 00:05:13,720 Et en effet, C est pas une langue que la plupart d'entre vous allez jamais à utiliser, 105 00:05:13,720 --> 00:05:15,590 ou devrait nécessairement utiliser à nouveau. 106 00:05:15,590 --> 00:05:18,350 >> Et en fait, un peu secret-- la seule fois 107 00:05:18,350 --> 00:05:23,160 Je l'utilise moi-C est à peu près entre Septembre et Décembre de chaque automne 108 00:05:23,160 --> 00:05:23,870 semestre. 109 00:05:23,870 --> 00:05:25,790 Et cela est parce que nous l'utiliser comme une opportunité 110 00:05:25,790 --> 00:05:27,852 pour enseigner les fondamentaux de programmation, 111 00:05:27,852 --> 00:05:29,810 et avec lui ordinateur les sciences de base, des données 112 00:05:29,810 --> 00:05:32,435 structures, des algorithmes et la like-- mais va très vite vous 113 00:05:32,435 --> 00:05:35,010 voir maintenant que la syntaxe et les idées sous-jacentes C 114 00:05:35,010 --> 00:05:37,530 sont si merveilleusement transférable à plus moderne 115 00:05:37,530 --> 00:05:41,130 langages de plus haut niveau, comme PHP et Python et Perl et Java 116 00:05:41,130 --> 00:05:46,750 et Objective-C-- fait, pas tellement Objectif-C-- Swift mais, ceux-ci plus récent 117 00:05:46,750 --> 00:05:50,010 langues que vous serez nombreux à puis tremper avec vous projet final. 118 00:05:50,010 --> 00:05:55,070 >> Alors sans plus tarder, nous allons effectivement utiliser PHP pour résoudre certains problèmes. 119 00:05:55,070 --> 00:06:00,230 Rappelons que dès le début, dernière semaine, nous avons juste utilisé CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 nous avons écrit un petit programme Dinky que vient de dire, "Bonjour tout le monde." 121 00:06:02,990 --> 00:06:05,680 Et puis je l'ai enregistré dans un fichier appelé hello.php. 122 00:06:05,680 --> 00:06:07,280 Et puis je suis tombé cette commande. 123 00:06:07,280 --> 00:06:08,080 >> Et pourquoi? 124 00:06:08,080 --> 00:06:09,900 En anglais, ce qui se passe ici? 125 00:06:09,900 --> 00:06:12,760 Que faisais-je quand Je courus cette commande? 126 00:06:12,760 --> 00:06:13,405 >> Ouais? 127 00:06:13,405 --> 00:06:16,572 >> PUBLIC: Il ya une fonction PHP qui lit ce qui se comprend que in--. 128 00:06:16,572 --> 00:06:19,696 DAVID MALAN: Bon, il ya une certaine fonction PHP-- et permettez-moi d'être plus précis, 129 00:06:19,696 --> 00:06:21,810 il ya un programme appelé PHP, alias 130 00:06:21,810 --> 00:06:25,872 Un interprète, qui comprend le contenu de hello.php, 131 00:06:25,872 --> 00:06:27,830 et l'interprète de haut en en bas, de gauche à droite, 132 00:06:27,830 --> 00:06:29,590 et fait ce ces commandes disent. 133 00:06:29,590 --> 00:06:33,320 Les commandes dans hello.php, bien sûr, est tout simplement la source code-- fonctions 134 00:06:33,320 --> 00:06:35,750 et les variables et les boucles et etc., que nous nous 135 00:06:35,750 --> 00:06:37,460 ont commencé à écrire en PHP. 136 00:06:37,460 --> 00:06:40,240 >> Mais contrairement à C, ce qui est un langage compilé, 137 00:06:40,240 --> 00:06:42,810 PHP vous suffit de l'écrire, et exécutez-le. 138 00:06:42,810 --> 00:06:46,420 Vous sautez cette étape de intermédiaire de convertir en zéros et de uns, 139 00:06:46,420 --> 00:06:47,790 puis de l'exécuter. 140 00:06:47,790 --> 00:06:50,510 Et ce qui est une hausse de cela? 141 00:06:50,510 --> 00:06:52,690 Pourquoi sommes-nous sautons l'étape? 142 00:06:52,690 --> 00:06:55,238 Pourquoi les langues les plus modernes ont tendance à passer cette étape? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Quel est l'avantage? 145 00:07:01,220 --> 00:07:02,080 >> Ou tout simplement intuitivement? 146 00:07:02,080 --> 00:07:04,200 Même si nous ne l'avons pas beaucoup écrit avant PHP, 147 00:07:04,200 --> 00:07:07,210 ce qui est bénéfique de ne pas compiler votre code pensez-vous? 148 00:07:07,210 --> 00:07:08,520 Non? 149 00:07:08,520 --> 00:07:09,610 Ne pas commettre? 150 00:07:09,610 --> 00:07:11,350 Gratter la tête? 151 00:07:11,350 --> 00:07:12,614 Ouais. 152 00:07:12,614 --> 00:07:13,600 >> Audience: Plus dynamique. 153 00:07:13,600 --> 00:07:14,683 >> DAVID MALAN: Plus dynamique? 154 00:07:14,683 --> 00:07:16,032 Ce que tu veux dire? 155 00:07:16,032 --> 00:07:17,000 >> AUDIENCE: [inaudible] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID MALAN: OK, bon, si en fonction de l'entrée, 158 00:07:22,390 --> 00:07:23,470 vous ne devez pas le compiler chaque fois. 159 00:07:23,470 --> 00:07:24,990 Et il est vraiment aussi simple que ce que that-- 160 00:07:24,990 --> 00:07:26,990 est le point de continuer pour compiler votre code? 161 00:07:26,990 --> 00:07:29,480 Ceci est juste une étape qui est making-- cela est exigeant, 162 00:07:29,480 --> 00:07:31,900 depuis plusieurs semaines, deux fois plus nombreuses étapes 163 00:07:31,900 --> 00:07:33,820 comme on vient de l'exécution de votre programme. 164 00:07:33,820 --> 00:07:36,940 Il a été utile de voir que vous voir quelques messages d'erreur et ainsi de suite, 165 00:07:36,940 --> 00:07:38,720 mais il est encore juste une étape ennuyeux. 166 00:07:38,720 --> 00:07:41,810 >> Et si les programmeurs ont réalisé au fil du temps, pourquoi ne pas nous 167 00:07:41,810 --> 00:07:45,327 commencer à écrire des langues qui ne sont pas besoin de cette étape assez mécanique, 168 00:07:45,327 --> 00:07:47,160 de sorte que peut simplement écrire votre code et l'exécuter. 169 00:07:47,160 --> 00:07:48,920 Mais ce qui était le prix que nous avons vu que nous avons payé 170 00:07:48,920 --> 00:07:50,910 la semaine dernière, avec un exemple particulier? 171 00:07:50,910 --> 00:07:51,650 Oui? 172 00:07:51,650 --> 00:07:52,370 >> La rapidité. 173 00:07:52,370 --> 00:07:54,690 Ainsi [? ce qui est?] interprètes un peu plus lent, 174 00:07:54,690 --> 00:07:57,330 en ce zéros et de uns sont agréable et rapide pour un ordinateur 175 00:07:57,330 --> 00:08:00,070 à comprendre, parce que la Intel CPU, ou quoi que ce soit, 176 00:08:00,070 --> 00:08:03,070 comprend tout ce qui se passe avec les schémas de bits. 177 00:08:03,070 --> 00:08:05,370 Alors que d'un interprète est un programme qui a vraiment 178 00:08:05,370 --> 00:08:07,980 a lire la source de Ascii code que vous avez écrit, 179 00:08:07,980 --> 00:08:12,700 et de le convertir, pour ainsi dire, ou comprendre comment il convertit finalement 180 00:08:12,700 --> 00:08:13,525 de zéros et de uns. 181 00:08:13,525 --> 00:08:15,650 Donc, il faut juste un peu peu d'une baisse de performance. 182 00:08:15,650 --> 00:08:16,858 Donc, il est un peu un compromis. 183 00:08:16,858 --> 00:08:21,570 Maintenant, si nous le faisons ici, laissez-moi aller de l'avant et faire un exemple de la manière suivante. 184 00:08:21,570 --> 00:08:26,610 Si je vais ici, nouveau fichier, je vais pour enregistrer cette fois est hello.php. 185 00:08:26,610 --> 00:08:31,450 Et maintenant, je vais aller de l'avant et dire: «Bonjour tout le monde print» - 186 00:08:31,450 --> 00:08:35,130 et rappelle que je peux utiliser l'impression, je ne sais pas avoir à utiliser print-F. Et maintenant, ici-bas, 187 00:08:35,130 --> 00:08:42,039 si je fais de PHP hello.php, je huh-- ne semblent pas l'avoir interprété. 188 00:08:42,039 --> 00:08:43,412 Qu'ai-je fait de mal? 189 00:08:43,412 --> 00:08:44,710 >> Audience: Les bracelets en angle. 190 00:08:44,710 --> 00:08:47,015 >> DAVID MALAN: Ouais, vous avez besoin que l'équerre en haut. 191 00:08:47,015 --> 00:08:49,390 Donc, il est un peu ennuyeux, mais vous y habituer rapidement. 192 00:08:49,390 --> 00:08:53,500 Si je dois écrire du code PHP, je généralement besoin de dire le programme, 193 00:08:53,500 --> 00:08:56,950 ou de dire à l'interprète, hey PHP, voici un peu de code PHP. 194 00:08:56,950 --> 00:09:00,440 Et puis, pour faire bonne mesure, je le ferais fermer cette pas avec cela, mais plutôt 195 00:09:00,440 --> 00:09:03,740 avec juste interrogation angle support, de sorte que maintenant ici-bas, 196 00:09:03,740 --> 00:09:06,840 si je lance ce nouveau, maintenant Je reçois le résultat souhaité. 197 00:09:06,840 --> 00:09:09,820 >> Maintenant, nous allons faire une légère optimisation, juste pour que vous avez vu avant. 198 00:09:09,820 --> 00:09:14,040 Ceci est plutôt ennuyeux que je avoir à courir PHP espace hello.php, 199 00:09:14,040 --> 00:09:16,060 parce que dans le passé, je pourrait simplement écrire slash dot 200 00:09:16,060 --> 00:09:17,560 nom du programme, ce qui est plutôt agréable. 201 00:09:17,560 --> 00:09:19,420 Il est une sorte de meilleure expérience utilisateur. 202 00:09:19,420 --> 00:09:24,160 >> Donc, il se trouve que vous pouvez faire ce en PHP avec le je following-- 203 00:09:24,160 --> 00:09:28,780 peuvent utiliser ce assez cryptique incantation au sommet ici, 204 00:09:28,780 --> 00:09:31,740 qui est généralement appelé le tralala, celui-ci étant un symbole dièse, 205 00:09:31,740 --> 00:09:34,270 pour ainsi dire, cela est un bang ou un point d'exclamation. 206 00:09:34,270 --> 00:09:38,490 Et cela est maintenant la voie à un programme sur un système Linux typique 207 00:09:38,490 --> 00:09:41,500 est appelé environnement, ou env. 208 00:09:41,500 --> 00:09:43,920 Et ce line-- longue histoire short-- une ligne juste 209 00:09:43,920 --> 00:09:48,710 dit, hey ordinateur, trouver le PHP interprète pour moi dans l'environnement, 210 00:09:48,710 --> 00:09:50,610 trouver dans votre mémoire, pour ainsi dire. 211 00:09:50,610 --> 00:09:54,130 >> Et ce qui est bien maintenant, est que si je descends ici, 212 00:09:54,130 --> 00:09:57,750 Je peux le faire dot slash bonjour dot php, ou-- hmm. 213 00:09:57,750 --> 00:09:59,000 Permission refusée. 214 00:09:59,000 --> 00:10:02,350 Eh bien, vous verrez encore plus de cette avec sept problème posé, si vous 215 00:10:02,350 --> 00:10:04,060 avez pas déjà, avec des autorisations. 216 00:10:04,060 --> 00:10:06,510 Il se trouve que je dois pour exécuter cette commande 217 00:10:06,510 --> 00:10:10,779 appelé [? chamod?] pour le changement mode-- un plus x hello.php. 218 00:10:10,779 --> 00:10:13,820 Je dois [inaudible] celui supplémentaires étape qui est dit mon ordinateur, 219 00:10:13,820 --> 00:10:16,400 rendre exécutable hello.php. 220 00:10:16,400 --> 00:10:21,310 Et maintenant regarder ce que happens-- dot slash hello.php, il fonctionne simplement. 221 00:10:21,310 --> 00:10:23,310 Je ne pas besoin de spécifier l'interprète plus. 222 00:10:23,310 --> 00:10:26,680 Et je peux le faire encore plus jolie, encore, si je renomme cette chose. 223 00:10:26,680 --> 00:10:30,570 Si je hello.php passer à juste Hello-- alors remarqué en haut à gauche, 224 00:10:30,570 --> 00:10:32,860 le nom du programme est en effet maintenant juste Bonjour. 225 00:10:32,860 --> 00:10:37,300 Maintenant, je peux la faire ressembler à un programme C, même si il est écrit en PHP-- 226 00:10:37,300 --> 00:10:39,210 ou franchement quel nombre d'autres langues. 227 00:10:39,210 --> 00:10:41,480 >> Ainsi renforcement marginal, aucune différence fonctionnelle. 228 00:10:41,480 --> 00:10:44,460 Mais il est juste un peu de curiosité maintenant, de sorte que vous pouvez écrire des programmes 229 00:10:44,460 --> 00:10:48,989 dans toutes les langues, et l'utilisateur n'a pas avoir à vous soucier de ce que ceux-ci sont. 230 00:10:48,989 --> 00:10:51,030 Eh bien, regardons un plus exemple convaincant maintenant 231 00:10:51,030 --> 00:10:52,850 que je fouetté à l'avance. 232 00:10:52,850 --> 00:10:54,955 Et on appelle cela quote.php. 233 00:10:54,955 --> 00:10:56,740 Et il est disponible en ligne. 234 00:10:56,740 --> 00:11:00,299 Et remarquez qu'il est assez short-- mais il est un programme de ligne de commande qui est 235 00:11:00,299 --> 00:11:02,840 aller chercher une hausse des prix d'achat d'actions pour moi, ce qui se passe réellement 236 00:11:02,840 --> 00:11:04,230 être germane à problème réglé sept. 237 00:11:04,230 --> 00:11:05,396 >> Voyons donc ce que je fais. 238 00:11:05,396 --> 00:11:08,640 Au sommet, je l'ai parenthèse ouverte interrogation PHP. 239 00:11:08,640 --> 00:11:13,372 Ensuite, je dois cette ligne, par lequel je suis nécessitant un fichier appelé functions.php-- 240 00:11:13,372 --> 00:11:15,080 nous allons voir plus à ce sujet dans un peu, 241 00:11:15,080 --> 00:11:17,340 mais cela est comme C de version de forte comprennent, 242 00:11:17,340 --> 00:11:19,090 ou voulez-vous aller inclure un autre fichier. 243 00:11:19,090 --> 00:11:23,720 PHP appelle exige, si elle a également une fonction include. 244 00:11:23,720 --> 00:11:26,861 Et il se trouve que function.php est juste quelque chose je l'ai écrit avant la classe. 245 00:11:26,861 --> 00:11:29,860 Je l'ai mis dans le même répertoire, parce Je voulais factoriser du code 246 00:11:29,860 --> 00:11:31,800 que nous pourrions utiliser ailleurs. 247 00:11:31,800 --> 00:11:34,560 >> Pendant ce temps, vous pouvez probablement déduire ce qui se passe ici. 248 00:11:34,560 --> 00:11:39,200 Ceci est un peu différent de C-- mais qu'est-ce que je veux dire par assurer une utilisation correcte? 249 00:11:39,200 --> 00:11:41,180 Traduire cette techniquement plus. 250 00:11:41,180 --> 00:11:45,950 Dans quelles circonstances suis-je quitter le programme, ou de sortir? 251 00:11:45,950 --> 00:11:47,074 Ouais? 252 00:11:47,074 --> 00:11:47,990 >> AUDIENCE: Lorsque vous ne disposez pas deux arguments de ligne de commande. 253 00:11:47,990 --> 00:11:49,480 >> DAVID MALAN: Quand je ne ai pas pour commander des arguments de ligne. 254 00:11:49,480 --> 00:11:52,396 Et rappelez-vous que l'un de ceux arguments est le nom du programme lui-même. 255 00:11:52,396 --> 00:11:55,340 Et la seconde va être un autre mot que je tape après l'invite. 256 00:11:55,340 --> 00:11:57,460 Ainsi, tout comme C, ce est ma façon de vérifier, 257 00:11:57,460 --> 00:12:00,022 l'utilisateur n'a coopérer et exécuter le programme que je voulais? 258 00:12:00,022 --> 00:12:01,730 Maintenant, il ya quelque chose un peu différent 259 00:12:01,730 --> 00:12:04,020 C-- avec tout d'abord nous avoir cette signe de dollar, 260 00:12:04,020 --> 00:12:07,710 et qu'est-ce qu'un dollar signer désigner en PHP? 261 00:12:07,710 --> 00:12:08,440 Juste une variable. 262 00:12:08,440 --> 00:12:11,731 Voilà tous-- juste une variable suivie par tout ce que vous voulez réellement l'appeler. 263 00:12:11,731 --> 00:12:14,000 Notez qu'il ya quelque chose manquant de mon programme de PHP, 264 00:12:14,000 --> 00:12:18,210 tout comme il manquait dernière semaine, contre C, ce qui est quoi? 265 00:12:18,210 --> 00:12:21,620 >> A types, mais aussi quelque chose d'autre. 266 00:12:21,620 --> 00:12:26,409 Il n'y a pas quelque chose function-- fonction principale. 267 00:12:26,409 --> 00:12:27,450 Il n'y a pas la fonction principale. 268 00:12:27,450 --> 00:12:29,680 Vous venez de commencer à écrire votre code sans avoir 269 00:12:29,680 --> 00:12:32,790 à vous soucier assez arbitraire Convention de nommer un certain défaut 270 00:12:32,790 --> 00:12:33,880 fonction principale. 271 00:12:33,880 --> 00:12:36,720 Donc arg C est vraiment une variable globale 272 00:12:36,720 --> 00:12:39,049 que l'interprète met à la disposition moi. 273 00:12:39,049 --> 00:12:40,090 Maintenant, ce qui est intéressant. 274 00:12:40,090 --> 00:12:41,140 Donc, analysez les choses. 275 00:12:41,140 --> 00:12:43,370 Dollar sign boursier est sur le à gauche, qui est mon variable. 276 00:12:43,370 --> 00:12:45,120 Sur le côté droit, il ya apparemment 277 00:12:45,120 --> 00:12:50,270 une fonction en PHP appelé recherche qui Je passe ma dernière ligne de commande 278 00:12:50,270 --> 00:12:51,902 l'argument to-- quel que soit le mot est. 279 00:12:51,902 --> 00:12:53,610 Et nous allons voir comment cette travaille à un moment. 280 00:12:53,610 --> 00:12:55,380 >> Et puis enfin je rapporte le prix. 281 00:12:55,380 --> 00:12:58,650 Je imprimant un part de tel ou tel. 282 00:12:58,650 --> 00:13:02,082 Et rappelez-vous, ceci est le manière PHP-- une manière PHP-- 283 00:13:02,082 --> 00:13:04,290 où vous ne devez pas faire le signe du dollar S plus. 284 00:13:04,290 --> 00:13:06,782 Vous pouvez simplement utiliser des accolades et de brancher une variable. 285 00:13:06,782 --> 00:13:09,240 Vous ne devez pas vous inquiéter à propos de printf en utilisant de la même façon. 286 00:13:09,240 --> 00:13:13,530 >> Et en passant, quand vous mettez une variable à l'intérieur de guillemets doubles comme cela, 287 00:13:13,530 --> 00:13:17,370 vous utilisez une technique de fantaisie appelé interpolation variable. 288 00:13:17,370 --> 00:13:20,380 Cela signifie simplement de brancher la variable ici. 289 00:13:20,380 --> 00:13:23,760 Et en passant, certains d'entre vous qui viennent d'autres milieux de programmation, 290 00:13:23,760 --> 00:13:26,960 vous ne pouvez pas utiliser des guillemets simples autour de cordes pour ce faire. 291 00:13:26,960 --> 00:13:30,290 Vous devez utiliser des guillemets pour interpolation de variables à travailler. 292 00:13:30,290 --> 00:13:32,740 Sinon, vous aurez littéralement voir ces accolades. 293 00:13:32,740 --> 00:13:34,500 >> Alors enfin, allons de l'avant et lancer ce. 294 00:13:34,500 --> 00:13:36,690 Permettez-moi de faire mon terminal un peu plus grand. 295 00:13:36,690 --> 00:13:41,940 Permettez-moi aller de l'avant et courir à l'intérieur de mon répertoire de devis. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? UN M ?] [? devis?] devis PHP dot PHP, 297 00:13:46,950 --> 00:13:50,290 et je vais chercher quelque chose comme GOOG, qui est son symbole, 298 00:13:50,290 --> 00:13:55,510 et d'une action de son nouveau nom, Alphabet Inc, a coûté 717 $, à compter d'aujourd'hui. 299 00:13:55,510 --> 00:13:58,680 Très bien, si nous voulons exécuter ce nouveau, quiconque 300 00:13:58,680 --> 00:14:02,600 avoir un autre téléscripteur ils veulent regarder? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft je pense est celui-ci, MSFT-- 53 $. 302 00:14:06,770 --> 00:14:09,720 Je pense que Yahoo est peut-être cela. 303 00:14:09,720 --> 00:14:12,130 Et Facebook est que. 304 00:14:12,130 --> 00:14:13,740 >> Alors, quel est ce programme de faire? 305 00:14:13,740 --> 00:14:16,306 La magie semble être embarqué en ce que la fonction de recherche. 306 00:14:16,306 --> 00:14:17,430 Donc, nous allons jeter un coup d'œil rapide. 307 00:14:17,430 --> 00:14:21,815 >> Il se trouve que ne vient pas avec PHP, il est dans functions.php. 308 00:14:21,815 --> 00:14:23,690 Et nous ne pourrons pas passer par ce dans les moindres détails, 309 00:14:23,690 --> 00:14:28,040 de remarquer le mot clé ici est que sur la ligne des six functions.php-- 310 00:14:28,040 --> 00:14:29,440 Je dis littéralement fonction. 311 00:14:29,440 --> 00:14:31,050 Je précise le nom de ma fonction. 312 00:14:31,050 --> 00:14:34,330 Je précise alors tout arguments, ou paramètres, 313 00:14:34,330 --> 00:14:36,480 Je veux que la fonction de take-- aucun type. 314 00:14:36,480 --> 00:14:37,580 Et puis je mettre en œuvre. 315 00:14:37,580 --> 00:14:39,240 >> Et je ferai signe ma main à la mise en œuvre, 316 00:14:39,240 --> 00:14:42,115 car il est juste assez avancé maintenant, mais nous verrons à nouveau fait 317 00:14:42,115 --> 00:14:44,700 en une semaine dans sept problème posé. 318 00:14:44,700 --> 00:14:47,490 Mais je peux nettoyer cette place, aussi. 319 00:14:47,490 --> 00:14:49,590 Je également inclus dans le code d'aujourd'hui une version 320 00:14:49,590 --> 00:14:52,340 des devis, qui n'a pas de fichier de point de PHP. 321 00:14:52,340 --> 00:14:57,270 Parce que ce qui est sans doute à la haut du programme appelé juste citer? 322 00:14:57,270 --> 00:15:00,140 Ce soi-disant l'shebang-- incantation assez cryptique 323 00:15:00,140 --> 00:15:04,590 qui dit trouver PHP et ensuite exécuter sur mon code ici. 324 00:15:04,590 --> 00:15:07,360 >> Très bien, alors qui apporte nous où nous avons laissé 325 00:15:07,360 --> 00:15:09,560 dernière time-- mais avec quelques exemples plus avancés. 326 00:15:09,560 --> 00:15:13,980 Vous avez des questions à propos de ce jour PHP ou ce que nous faisons? 327 00:15:13,980 --> 00:15:15,570 No-- tout droit. 328 00:15:15,570 --> 00:15:16,180 Ouais? 329 00:15:16,180 --> 00:15:19,610 >> AUDIENCE: Inside the Les fichiers HTML, font vous-- 330 00:15:19,610 --> 00:15:22,226 [? le faites vous ?] [? simplement l'appeler?] un [inaudible] fichier PHP? 331 00:15:22,226 --> 00:15:23,350 DAVID MALAN: Bonne question. 332 00:15:23,350 --> 00:15:26,070 Dans un contexte web, qui nous sommes littéralement sur le point de passer à, 333 00:15:26,070 --> 00:15:28,028 ne pas utiliser la soi-disant tralala au sommet, 334 00:15:28,028 --> 00:15:31,980 parce que la Server-- web souvent programme appelé Apache ou Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, ou un nombre quelconque d'autres logiciels de serveur web, 336 00:15:37,470 --> 00:15:40,636 sait que quand il voit un fichier de point de PHP, qu'il 337 00:15:40,636 --> 00:15:42,010 doit exécuter l'interprète sur elle. 338 00:15:42,010 --> 00:15:43,468 Il ne ressemble pas à ce que la première ligne. 339 00:15:43,468 --> 00:15:45,580 Donc, ce premier tour de ligne est juste quand vous êtes 340 00:15:45,580 --> 00:15:48,330 écriture ligne de commande programs-- que nous ne ferons pas de super souvent, 341 00:15:48,330 --> 00:15:52,510 mais il est notre façon de combler nos exemples de C à présent notre PHP. 342 00:15:52,510 --> 00:16:00,680 >> Donc, nous allons en effet combler ce monde du monde de la ligne de commande pour le web 343 00:16:00,680 --> 00:16:02,230 en procédant comme suit. 344 00:16:02,230 --> 00:16:05,090 Laissez-moi aller de l'avant et dessine ici pendant un moment. 345 00:16:05,090 --> 00:16:09,940 Donc, si nous avons un serveur web, ou plutôt si nous avons mon portable ici, 346 00:16:09,940 --> 00:16:11,280 que je vais dessiner comme ça. 347 00:16:11,280 --> 00:16:14,250 Et ici, nous avons le Internet dans une certaine forme. 348 00:16:14,250 --> 00:16:18,210 Et puis ici, nous avons un serveur dans un building-- 349 00:16:18,210 --> 00:16:20,760 voilà comment l'Internet et dans works-- ici 350 00:16:20,760 --> 00:16:23,120 est un serveur avec peut-être quelques lumières. 351 00:16:23,120 --> 00:16:27,530 Qu'est-ce qui se passe réellement entre ces deux connexions? 352 00:16:27,530 --> 00:16:29,240 >> Donc, dans ce bâtiment est un serveur web. 353 00:16:29,240 --> 00:16:31,420 Voilà juste un ordinateur qui exécute un certain exploitation 354 00:16:31,420 --> 00:16:34,561 system-- peut-être le logiciel libre appelé Apache, qui CS50 IDE est en marche. 355 00:16:34,561 --> 00:16:36,310 Ainsi, vous pouvez effectivement penser à ce bâtiment 356 00:16:36,310 --> 00:16:38,579 comme dans le bâtiment qui CST0 IDE est stocké. 357 00:16:38,579 --> 00:16:40,870 Cela est où vous avez tous comptes, où vous tous 358 00:16:40,870 --> 00:16:43,130 avoir votre propre serveur web courir, de vous tous 359 00:16:43,130 --> 00:16:45,730 avoir vos propres URL uniques, comme nous avons commencé à discuter, 360 00:16:45,730 --> 00:16:47,280 et vous verrez plus dans P. mis six. 361 00:16:47,280 --> 00:16:49,450 >> Voici mon ordinateur portable quelque part ailleurs sur l'internet. 362 00:16:49,450 --> 00:16:54,550 Et donc quand je visite une URL qui appartient pour moi, que le trafic Internet va 363 00:16:54,550 --> 00:16:58,360 sur le serveur, le serveur de recevoir une requête HTTP request-- 364 00:16:58,360 --> 00:17:02,900 comme un obtenir index.html et il est répondre à cette page Web. 365 00:17:02,900 --> 00:17:04,280 Voilà donc le paradigme général. 366 00:17:04,280 --> 00:17:07,089 Alors que tout jusqu'à jusqu'à présent, aujourd'hui, tout 367 00:17:07,089 --> 00:17:09,660 se passait seulement dans le limites de ce bâtiment. 368 00:17:09,660 --> 00:17:12,910 Je me sers de mon ordinateur portable, mais Je suis connecté à CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 de sorte que tous ces programmes que je courais était à l'intérieur de ce serveur, lui-même. 370 00:17:17,369 --> 00:17:22,660 >> Mais maintenant, nous allons commencer la réutilisation PHP d'écrire des programmes réels qui 371 00:17:22,660 --> 00:17:24,230 sont servis par un serveur Web. 372 00:17:24,230 --> 00:17:30,320 Et pour ce faire, je vais aller dans tout un tas d'exemples 373 00:17:30,320 --> 00:17:33,710 qui introduisent cette idée ici. 374 00:17:33,710 --> 00:17:38,500 Donc, ce genre de est une façon élégante de décrivant un paradigme de programmation. 375 00:17:38,500 --> 00:17:41,540 >> Et en fait, que vous quittez CS50 ou travailler sur des projets définitifs, 376 00:17:41,540 --> 00:17:43,520 ou de prendre certains suivent sur la classe, vous allez commencer 377 00:17:43,520 --> 00:17:45,740 de voir que le monde-- surtout après avoir grandi 378 00:17:45,740 --> 00:17:48,300 avec des langages comme C qui sont super bas level-- 379 00:17:48,300 --> 00:17:51,290 réalisent qu'il ya de mieux façons de logiciel d'écriture. 380 00:17:51,290 --> 00:17:53,290 Il ya certains les modèles que vous pouvez suivre, 381 00:17:53,290 --> 00:17:57,640 certaines façons d'organiser vos fichiers et façons de nommer vos fonctions, 382 00:17:57,640 --> 00:18:00,300 de sorte que longue histoire courte, le monde a venir 383 00:18:00,300 --> 00:18:04,340 avec tout un tas d'acronymes et les noms des moyens de programmation. 384 00:18:04,340 --> 00:18:06,260 Ce ne sont que des techniques que vous pourriez utiliser. 385 00:18:06,260 --> 00:18:09,660 >> Et l'un d'eux est appelé MVC, pour Model View Controller. 386 00:18:09,660 --> 00:18:12,270 Et cela est juste, pour aujourd'hui, un trop compliqué 387 00:18:12,270 --> 00:18:18,960 façon de dire comment vous devez disposer un site web basé sur PHP, dans notre cas. 388 00:18:18,960 --> 00:18:22,140 Comment organisez-vous vos fichiers, comment vous organisez votre logique ne, 389 00:18:22,140 --> 00:18:26,220 d'une manière qui facilite la écrire sites plus complexes? 390 00:18:26,220 --> 00:18:28,550 Et en effet, nous allons rapidement y arriver avec p-set sept. 391 00:18:28,550 --> 00:18:32,020 >> Donc, dans le monde du MVC, vous allez de voir que notre code peut généralement 392 00:18:32,020 --> 00:18:38,290 être caractérisé que soit le code du modèle, ou code du contrôleur, ou code de vue. 393 00:18:38,290 --> 00:18:40,200 Et je vais schématiser comme follows-- 394 00:18:40,200 --> 00:18:42,074 le dispositif de commande est le cerveaux de votre programme, 395 00:18:42,074 --> 00:18:44,100 où il est tout de la logique intéressant se produit. 396 00:18:44,100 --> 00:18:46,110 Donc, tout ce que nous avons été écrit jusqu'à présent en classe, 397 00:18:46,110 --> 00:18:48,210 est un peu comme contrôleur code-- il a le contrôle 398 00:18:48,210 --> 00:18:50,585 votre programme, vos boucles, votre conditions, vos fonctions 399 00:18:50,585 --> 00:18:52,100 et les variables et tout ça. 400 00:18:52,100 --> 00:18:56,160 >> Vues, ​​maintenant, vont être un peu plus évident dans le monde du web. 401 00:18:56,160 --> 00:18:59,360 Une vue est l'esthétique de votre site web. 402 00:18:59,360 --> 00:19:04,080 Il est ce que l'utilisateur sees-- les images, les tables HTML, les balises HTML, et tous 403 00:19:04,080 --> 00:19:08,220 de cela, l'ensemble de l'esthétique duveteux des choses qui ne sont pas si difficile à écrire, 404 00:19:08,220 --> 00:19:11,380 mais est-ce que vous générez, est le point de vue que l'on appelle, l'esthétique. 405 00:19:11,380 --> 00:19:13,880 Et le modèle, en fin de compte, va comme base de données qui stuff-- 406 00:19:13,880 --> 00:19:16,510 nous allons commencer la plongée dans tous les plus ce mercredi. 407 00:19:16,510 --> 00:19:19,740 Donc contrôleur est la logique, vue est la substance esthétique, 408 00:19:19,740 --> 00:19:23,500 et le modèle va être là où nous stockons nos données réelles. 409 00:19:23,500 --> 00:19:26,410 >> Alors regardons cela de plus concrètement avec l'exemple suivant. 410 00:19:26,410 --> 00:19:34,700 Je vais aller dans mon répertoire ici de la source de tout aujourd'hui code-- dont 411 00:19:34,700 --> 00:19:35,770 est disponible en ligne. 412 00:19:35,770 --> 00:19:37,800 Et je vais aller dans la version zéro. 413 00:19:37,800 --> 00:19:41,500 Et ici est-- appelons-le la version zéro du site Web de CS50. 414 00:19:41,500 --> 00:19:43,010 Il n'y a pas beaucoup du tout ici. 415 00:19:43,010 --> 00:19:46,810 Il est une page web très simple qui est probablement en utilisant ce code HTML tags-- juste 416 00:19:46,810 --> 00:19:48,970 deviner à partir des exemples passés? 417 00:19:48,970 --> 00:19:49,890 >> Qu'est ce que c'est? 418 00:19:49,890 --> 00:19:53,920 H1-- probablement pour cette grande gras titre, ce logo en haut, CS50. 419 00:19:53,920 --> 00:19:55,080 Et quoi d'autre est en jeu? 420 00:19:55,080 --> 00:19:55,799 Ouais? 421 00:19:55,799 --> 00:19:56,840 AUDIENCE: Liste non ordonnée. 422 00:19:56,840 --> 00:19:59,990 DAVID MALAN: films-- non ordonnée de sorte que le UL tag et peut-être un couple de balises LI. 423 00:19:59,990 --> 00:20:01,840 Et si vous ne vous souvenez pas de ceux-ci, il ne vraiment pas d'importance. 424 00:20:01,840 --> 00:20:04,170 Ce sont des sortes de moelleux les détails de mise en œuvre de HTML 425 00:20:04,170 --> 00:20:06,378 que vous regardez rapidement et vous êtes de retour sur votre chemin. 426 00:20:06,378 --> 00:20:10,040 Nous allons nous concentrer davantage sur la programmation des idées qui sont les morceaux juteux. 427 00:20:10,040 --> 00:20:12,890 >> Donc, nous allons juste prendre un rapide regarder le HTML-- et même 428 00:20:12,890 --> 00:20:16,880 si je ouvre la source de vue ici, yup, Voilà exactement ce qui se passe ici. 429 00:20:16,880 --> 00:20:18,440 Il ya une étiquette UL. 430 00:20:18,440 --> 00:20:20,630 Niché à l'intérieur de ce qui est à des balises LI. 431 00:20:20,630 --> 00:20:24,470 Et puis je l'ai emprunté l'URL du syllabus réelle ici. 432 00:20:24,470 --> 00:20:27,570 >> Et puis, dans le lectures.php est apparemment 433 00:20:27,570 --> 00:20:31,640 une autre page générée dynamiquement cela va avoir, disons see-- ah, 434 00:20:31,640 --> 00:20:33,170 les deux premières semaines de cours. 435 00:20:33,170 --> 00:20:36,600 Donc, la semaine et la semaine d'un zéro, nous allons regarder this-- si je considère source de la page, 436 00:20:36,600 --> 00:20:38,120 aussi super simple. 437 00:20:38,120 --> 00:20:42,430 Ceux-ci mènent à deux pages week0.php appelé, et week1.php. 438 00:20:42,430 --> 00:20:44,040 Donc maintenant examiner ce qui se passe. 439 00:20:44,040 --> 00:20:50,630 >> Lorsque je clique sur week0.php, mon ordinateur portable est de faire une demande de week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Le serveur web, alias, CS50 IDE, reçoit cette enveloppe virtuelle. 442 00:20:58,110 --> 00:21:01,040 Il est de voir un message comme, obtenir week0.php. 443 00:21:01,040 --> 00:21:05,060 Il est ensuite interpréter le fichier, en haut en bas, de gauche à droite- le fichier 444 00:21:05,060 --> 00:21:07,720 appelé week0.php-- et crachant les résultats. 445 00:21:07,720 --> 00:21:10,510 Donc, à l'intérieur de ce fichier, week0.php, doit être 446 00:21:10,510 --> 00:21:15,410 la logique de commande qui génère cette HTML, et nous verrez bientôt que. 447 00:21:15,410 --> 00:21:19,340 >> Mais pour l'instant, permettez-moi de clique sur la semaine zéro, et maintenant nous avons mercredi et vendredi, 448 00:21:19,340 --> 00:21:25,260 et maintenant nous avons les diapositives lentement à partir de zéro semaine. 449 00:21:25,260 --> 00:21:27,400 Et vous pourriez rappeler ce billet depuis chemin du retour quand. 450 00:21:27,400 --> 00:21:29,340 Donc, voilà tout ce site est fait. 451 00:21:29,340 --> 00:21:31,120 >> Donc, nous allons examiner comment il fait ça. 452 00:21:31,120 --> 00:21:34,290 Je vais retourner dans la code source ici, dans CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 et je vais ouvrir index.php. 454 00:21:36,660 --> 00:21:38,910 Au sommet de ce fichier est un tas de commentaires. 455 00:21:38,910 --> 00:21:43,000 Et puis, au milieu de ce fichier, il avère être pas de code PHP que ce soit. 456 00:21:43,000 --> 00:21:47,380 Parce que si vous ne disposez pas de la parenthèse ouverte balises interrogation PHP, 457 00:21:47,380 --> 00:21:49,180 vous êtes libre de mettre juste HTML. 458 00:21:49,180 --> 00:21:51,480 >> Parce que ce que le PHP interprète est censé faire, 459 00:21:51,480 --> 00:21:53,938 est quand il lit ce file-- de haut en bas, de gauche à droite- 460 00:21:53,938 --> 00:21:59,100 il interprète uniquement code, il voit entre ces équerres d'interrogation. 461 00:21:59,100 --> 00:22:02,380 Et rien d'autre que ce ne reconnaître comme PHP, il crache vient de sortir. 462 00:22:02,380 --> 00:22:05,080 Et HTML est parmi les choses il sera simplement cracher. 463 00:22:05,080 --> 00:22:09,090 >> Donc, ce fichier pourrait avoir été appelé index.html, 464 00:22:09,090 --> 00:22:11,690 mais je suis tout de nommage dot PHP comme un tremplin. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- similaire décevante, il est juste un peu HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, de même que quelques-uns HTML. 467 00:22:19,840 --> 00:22:22,300 >> Mais maintenant, nous allons mettre sur le chapeau de génie proverbiale, 468 00:22:22,300 --> 00:22:24,400 et d'examiner comment nous pouvons améliorer cette situation. 469 00:22:24,400 --> 00:22:28,541 Il est facile de faire cela, mais je genre dégénéré en de copier et coller. 470 00:22:28,541 --> 00:22:31,540 Et en fait, si je fais la deuxième semaine, vous sais ce que je vais probablement faire? 471 00:22:31,540 --> 00:22:34,940 Je vais aller à week1.php, je suis va mettre en évidence tout. 472 00:22:34,940 --> 00:22:39,110 Je vais le copier, coller dans un nouveau fichier appelé week2.php, 473 00:22:39,110 --> 00:22:42,440 modifier certains URL, et être sur mon chemin. 474 00:22:42,440 --> 00:22:45,240 >> Donc, sur la base de ce que nous avons en C vu déjà, 475 00:22:45,240 --> 00:22:46,860 cela ne se sent pas bien, je l'espère. 476 00:22:46,860 --> 00:22:49,610 Copier, coller rarement la bonne solution. 477 00:22:49,610 --> 00:22:51,429 Alors, que pouvons-nous commencer à faire pour améliorer cela? 478 00:22:51,429 --> 00:22:53,345 Où sont les opportunités pour une meilleure conception? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Au moment où je reçois à huit semaines, ça va 481 00:22:58,760 --> 00:23:00,910 pour être vraiment ennuyeux si je veux changer 482 00:23:00,910 --> 00:23:03,930 la police de chacun de mes pages, ou si je veux 483 00:23:03,930 --> 00:23:06,522 de modifier la structure de la mise en page. 484 00:23:06,522 --> 00:23:08,396 Alors, où est l'occasion pour une meilleure conception? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Eh bien, nous allons examiner ce qui est partagé entre tous ces fichiers. 487 00:23:15,160 --> 00:23:21,696 >> Voici la première semaine, voici la semaine zéro, voici lectures.php, 488 00:23:21,696 --> 00:23:25,790 voici index.php-- ce qui est la même chose et Ce qui est différent, grosso modo, 489 00:23:25,790 --> 00:23:26,760 dans chacun de ces fichiers? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Ouais? 492 00:23:32,060 --> 00:23:34,560 >> AUDIENCE: [inaudible] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID MALAN: OK, bon. 495 00:23:42,160 --> 00:23:46,115 Donc, il ya un modèle, sûrement, dans lequel chaque fois que je choisis conférence I, 496 00:23:46,115 --> 00:23:48,250 Je serais générer un page Vous très similaire. 497 00:23:48,250 --> 00:23:50,375 Et alors peut-être que je peux tirer parti le fait que vraiment, 498 00:23:50,375 --> 00:23:53,060 nous avons délibérément numérique indexées notre lectures-- 499 00:23:53,060 --> 00:23:55,290 si je peux mettre encore plus mots dans votre réponse. 500 00:23:55,290 --> 00:23:59,984 Et ce qui est la seule chose, vraiment, cela change entre la semaine One-- 501 00:23:59,984 --> 00:24:02,400 et permettez-moi de faire défiler vers le bas il est donc à peu près de la même place-- 502 00:24:02,400 --> 00:24:05,480 alors voici la semaine zéro, à peu près au sommet. 503 00:24:05,480 --> 00:24:12,370 Voici la première semaine, la semaine zéro, la première semaine, la semaine zéro. 504 00:24:12,370 --> 00:24:14,370 OK, littéralement si vous savez aucun programme que ce soit, 505 00:24:14,370 --> 00:24:16,286 cela est maintenant comme un motif jeu de correspondance. 506 00:24:16,286 --> 00:24:17,200 Donc ce qui est différent? 507 00:24:17,200 --> 00:24:18,765 Ouais? 508 00:24:18,765 --> 00:24:19,777 >> AUDIENCE: [inaudible] 509 00:24:19,777 --> 00:24:22,360 DAVID MALAN: Bon, donc le titre est en mutation, un tant soit peu. 510 00:24:22,360 --> 00:24:24,010 Zéro va, bien sûr, à un. 511 00:24:24,010 --> 00:24:25,570 Même chose qui se passe dans la balise H1. 512 00:24:25,570 --> 00:24:28,790 Et nous ne voyons pas tout à fait aussi facilement, parce que les URL sont un peu long. 513 00:24:28,790 --> 00:24:30,670 Mais ces URL changent légèrement. 514 00:24:30,670 --> 00:24:34,490 >> Mais ce qui ne change pas est, oserais-je dire, la plupart des contenus du page-- 515 00:24:34,490 --> 00:24:38,530 la balise HTML est la même, la tête est de même, le document est presque la même, 516 00:24:38,530 --> 00:24:40,659 le corps est la même, et presque tout le reste 517 00:24:40,659 --> 00:24:42,450 est la même à l'exception de ces petits réglages. 518 00:24:42,450 --> 00:24:45,310 Alors, comment pouvons-nous aller sur affacturage certains de cela? 519 00:24:45,310 --> 00:24:48,740 >> Eh bien, laissez-moi de proposer exactement que, dans la version suivante. 520 00:24:48,740 --> 00:24:53,890 Donc, ici en version un, je dois l'exacte mêmes fichiers, plus quelques autres. 521 00:24:53,890 --> 00:24:59,730 Voici index.php-- et même si vous avez jamais vu avant PHP, 522 00:24:59,730 --> 00:25:05,511 ce que je fais sans doute de résoudre ce problem-- basé sur ce que vous voyez ici? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Ouais, est-ce une légère engagement? 525 00:25:12,760 --> 00:25:13,450 Non? 526 00:25:13,450 --> 00:25:16,020 Oui continuer. 527 00:25:16,020 --> 00:25:17,380 >> AUDIENCE: [inaudible] 528 00:25:17,380 --> 00:25:18,380 >> DAVID MALAN: Yep. 529 00:25:18,380 --> 00:25:20,380 >> AUDIENCE: [inaudible] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID MALAN: Je dois vous parler un peu plus fort. 532 00:25:28,669 --> 00:25:31,084 >> AUDIENCE: [inaudible] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID MALAN: OK, bon. 535 00:25:36,660 --> 00:25:38,620 Et je think-- il était difficile à entendre mais je vous-- 536 00:25:38,620 --> 00:25:42,690 pense que ce que vous voulez en venir est que les balises qui étaient communes en haut, 537 00:25:42,690 --> 00:25:47,710 et les balises qui étaient sur la commune en bas, ont maintenant été pris en compte sur, 538 00:25:47,710 --> 00:25:51,140 ou relégué à quels fichiers? 539 00:25:51,140 --> 00:25:53,476 Header.php et footer.php-- et nous allons 540 00:25:53,476 --> 00:25:55,600 de faire quelques réglages pour répondre à la préoccupation que vous venez 541 00:25:55,600 --> 00:25:59,370 soulevées au sujet du changement des numéros, pour par exemple, si je vous ai bien compris. 542 00:25:59,370 --> 00:26:02,060 >> Mais cela semble être l'essentiel. 543 00:26:02,060 --> 00:26:04,820 Si il y avait une énorme quantité de redondance au haut de la page, 544 00:26:04,820 --> 00:26:06,736 et une énorme quantité de redondance au fond, 545 00:26:06,736 --> 00:26:09,280 nous allons littéralement juste clou et couper que le contenu sur, 546 00:26:09,280 --> 00:26:13,270 mettre dans un file-- séparée tout comme l'idée de CSS, où nous refactorisée 547 00:26:13,270 --> 00:26:16,710 l'esthétique très similaires, dans un fichier de point de PHP séparé, 548 00:26:16,710 --> 00:26:20,340 utiliser le nécessitent mechanism-- qui C est comme comprendre: forte qui 549 00:26:20,340 --> 00:26:23,570 est essentiellement comme dire aller saisir le contenu de header.php, 550 00:26:23,570 --> 00:26:25,370 et copier et les coller ici. 551 00:26:25,370 --> 00:26:29,490 >> Mais ce que cela signifie est que maintenant index.php, je dois ces deux lignes. 552 00:26:29,490 --> 00:26:32,130 Dans lectures.php, moi aussi avoir ces deux lignes. 553 00:26:32,130 --> 00:26:35,230 Dans week0.php, moi aussi avoir ces deux lignes. 554 00:26:35,230 --> 00:26:38,380 >> Alors maintenant, si je veux changer le titre de l'ensemble de mes pages, 555 00:26:38,380 --> 00:26:40,530 ou je veux changer le structure fondamentale, 556 00:26:40,530 --> 00:26:44,380 Je peux le changer maintenant en un seul endroit, ou deux tête et pied de page places--, 557 00:26:44,380 --> 00:26:45,429 respectivement. 558 00:26:45,429 --> 00:26:47,970 Maintenant, le départ du code pour regarder un peu plus cryptique, non? 559 00:26:47,970 --> 00:26:53,590 Mais si vous pensez à ce que la page est doing-- si je demande week0.php, 560 00:26:53,590 --> 00:26:59,880 tout comme sur le dessin plus ici-- quand week0.php est demandé, 561 00:26:59,880 --> 00:27:00,960 Qu'est-ce que cela veut dire? 562 00:27:00,960 --> 00:27:04,410 >> Littéralement, ce fichier est demandée par le navigateur. 563 00:27:04,410 --> 00:27:06,240 L'alias du web 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- saisit cette fichier, week0.php, et lit 565 00:27:09,250 --> 00:27:10,780 il haut en bas, de gauche à droite. 566 00:27:10,780 --> 00:27:15,400 Sur une ligne, il rencontre immédiatement parenthèse ouverte interrogation PHP, exiger 567 00:27:15,400 --> 00:27:17,872 tête dot PHP, etc. ce que l'interpréteur PHP 568 00:27:17,872 --> 00:27:20,580 does-- qui est intégré dans le web serveur, parce que nous préconfigurés 569 00:27:20,580 --> 00:27:24,580 pour vous-- il va automatiquement dans header.php, copie le contenu, 570 00:27:24,580 --> 00:27:25,640 les colle ici. 571 00:27:25,640 --> 00:27:28,790 >> Mais alors, les rencontres d'interprètes Aide à la recherche fermer la parenthèse, 572 00:27:28,790 --> 00:27:30,320 de sorte qu'il est tout fait penser. 573 00:27:30,320 --> 00:27:33,400 Maintenant, il crache aveuglément les lignes de deux à sept, 574 00:27:33,400 --> 00:27:35,240 car il est juste HTML brut. 575 00:27:35,240 --> 00:27:38,470 Obtient à la ligne huit, et est-ce que même magie again-- l'ouverture du fichier, 576 00:27:38,470 --> 00:27:41,460 saisissant le contenu, et les obligeant ou en les collant 577 00:27:41,460 --> 00:27:42,480 à droite, puis et là. 578 00:27:42,480 --> 00:27:44,210 >> Mais je viens de faire allusion à un bug. 579 00:27:44,210 --> 00:27:48,610 Ceci est une étape partielle arrière, parce que si nous regardons dans header.php, 580 00:27:48,610 --> 00:27:50,850 Je suis genre de couper un coin. 581 00:27:50,850 --> 00:27:56,250 Quelle est la caractéristique ai-je renoncer pour pour obtenir cette meilleure conception défendable? 582 00:27:56,250 --> 00:27:57,305 Ouais? 583 00:27:57,305 --> 00:27:58,180 AUDIENCE: [inaudible] 584 00:27:58,180 --> 00:28:00,570 DAVID MALAN: Ouais, je genre de couper un coin non triviale. 585 00:28:00,570 --> 00:28:04,489 Vous avez souligné que ce qui était en train de changer était le titre, le nombre dans le titre, 586 00:28:04,489 --> 00:28:05,530 et le nombre dans le H1. 587 00:28:05,530 --> 00:28:08,170 Donc ma solution était, OK, disons simplement renommer la page, 588 00:28:08,170 --> 00:28:10,080 et pas traiter avec ce problème que ce soit. 589 00:28:10,080 --> 00:28:12,130 Voilà donc une partielle pas en arrière pour sûr. 590 00:28:12,130 --> 00:28:14,300 >> Mais ce qui est remarquable ici est que ce que je l'ai fait 591 00:28:14,300 --> 00:28:17,200 est par ailleurs pris en compte tous les trucs commun. 592 00:28:17,200 --> 00:28:21,520 Et dans footer.php, remarque je factoré sur tout cela, bien que moindre, 593 00:28:21,520 --> 00:28:22,790 étoffe commune. 594 00:28:22,790 --> 00:28:26,070 Je dois donc en quelque sorte maintenant être en mesure de prendre un autre pas en avant, et fixer 595 00:28:26,070 --> 00:28:27,160 que les questions de titre. 596 00:28:27,160 --> 00:28:28,180 Donc, nous allons le faire. 597 00:28:28,180 --> 00:28:35,060 >> Laissez-moi aller dans mon deuxième version ici, qui, de nouveau, a les mêmes fichiers 598 00:28:35,060 --> 00:28:36,825 sauf pour un nouvel ajout. 599 00:28:36,825 --> 00:28:38,950 Et il est un peu plus verbeux, mais nous allons voir si nous 600 00:28:38,950 --> 00:28:40,550 peut démêler ce qui se passe ici. 601 00:28:40,550 --> 00:28:45,370 Donc, au lieu d'exiger header.php et footer.php, 602 00:28:45,370 --> 00:28:50,180 Je semble ne nécessitent qu'un file-- appelé, bien sûr, helpers.php. 603 00:28:50,180 --> 00:28:52,560 Et laissez-moi en définit maintenant, ce qui est intérieur de helpers.php 604 00:28:52,560 --> 00:28:55,330 est juste un tas de fonctions que je écrit, comme avant. 605 00:28:55,330 --> 00:28:57,550 Mais je l'ai appelé helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Maintenant, apparemment, dans ligne de trois et 10, je suis 607 00:29:00,370 --> 00:29:02,840 appelant deux functions-- rendre en-tête, pied de page rendre. 608 00:29:02,840 --> 00:29:05,040 Ceux ne viennent pas avec PHP, je l'ai écrit ceux moi-même. 609 00:29:05,040 --> 00:29:07,880 Et je les ai mis dans helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Maintenant, nous avons seulement vu cette syntaxe une fois, et il était très brève. 611 00:29:11,210 --> 00:29:15,330 Mais cela est apparemment un argument pour rendre la tête, la fonction. 612 00:29:15,330 --> 00:29:16,450 Pourquoi dois-je le sais? 613 00:29:16,450 --> 00:29:18,522 Eh bien voici une proximité paren, voici une parenthèse ouverte. 614 00:29:18,522 --> 00:29:21,230 Et bien sûr, tout comme dans C, quelque chose entre ces parenthèses 615 00:29:21,230 --> 00:29:23,350 est un ou un input-- argument de la fonction. 616 00:29:23,350 --> 00:29:26,710 >> Quel est le type de cet argument de données, sur la base de ce que je l'ai souligné? 617 00:29:26,710 --> 00:29:30,820 Qu'est-ce que ces crochets indiquer, sur la base de la semaine dernière? 618 00:29:30,820 --> 00:29:33,390 Ouais, il est un array-- spécifiquement un tableau associatif. 619 00:29:33,390 --> 00:29:35,700 Et cette syntaxe certes est un peu excentrique, 620 00:29:35,700 --> 00:29:38,860 mais cela ne fait que passer dans une paire de valeur de clé. 621 00:29:38,860 --> 00:29:43,530 La clé est, entre guillemets titre, et la valeur est CS50. 622 00:29:43,530 --> 00:29:46,220 >> Si nous avions fait cela en C, elle pourrait à la place 623 00:29:46,220 --> 00:29:49,400 ressembler plus à ça, juste entre guillemets CS50-- 624 00:29:49,400 --> 00:29:52,460 ou en fait, ce serait bouclés accolades, ou quelque chose comme ça dans C, 625 00:29:52,460 --> 00:29:55,580 où la clé est égale à zéro, et la valeur est CS50. 626 00:29:55,580 --> 00:29:59,840 Mais encore une fois, en PHP, même si le syntaxe est, encore une fois, un peu bizarre, 627 00:29:59,840 --> 00:30:02,860 il vous permet de passer en mots au lieu de chiffres 628 00:30:02,860 --> 00:30:05,120 à associer avec des valeurs clés. 629 00:30:05,120 --> 00:30:06,390 >> Alors qu'est-ce que tout cela veut dire? 630 00:30:06,390 --> 00:30:09,750 Si je vais dans helpers.php, regardons cette fonction. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, plutôt renderHeader est ma fonction, 632 00:30:13,620 --> 00:30:16,220 et je le sais parce que je vois la fonction mot-clé ici. 633 00:30:16,220 --> 00:30:19,450 Ce qui est nouveau à partir C-- il a apparemment prend un argument appelé data-- 634 00:30:19,450 --> 00:30:22,400 mais je ne pouvais ai appelé ce quoi que ce soit, mais je l'ai appelé données, 635 00:30:22,400 --> 00:30:25,090 juste pour être un peu clean-- et il suffit de prendre une supposition, en particulier 636 00:30:25,090 --> 00:30:28,173 si vous avez programmé dans un autre plus élevé niveau de langue avant, quelque chose 637 00:30:28,173 --> 00:30:29,820 C ci-dessus, sur le plan conceptuel. 638 00:30:29,820 --> 00:30:33,820 >> Qu'est-ce parenthèse ouverte égale crochet signifierait probablement? 639 00:30:33,820 --> 00:30:35,540 Ou ce que cela pourrait signifier? 640 00:30:35,540 --> 00:30:39,660 Nous ne l'avons pas vu cela dans C Ouais? 641 00:30:39,660 --> 00:30:40,480 >> Un tableau vide. 642 00:30:40,480 --> 00:30:45,440 Plus précisément, cela signifie que si l'utilisateur ne remet pas renderHeader 643 00:30:45,440 --> 00:30:49,340 avec un argument, je vais quand même d'avoir un argument appelé données, 644 00:30:49,340 --> 00:30:52,327 mais sa valeur par défaut est va être un tableau vide. 645 00:30:52,327 --> 00:30:53,660 Donc, il est tout simplement une belle commodité. 646 00:30:53,660 --> 00:30:56,493 Je ne dois pas crier à l'utilisateur, ou dites que vous avez utilisé ma fonction tort. 647 00:30:56,493 --> 00:30:59,849 Je peux juste donner à l'utilisateur un défaut valeur, si je ne me soucie pas particulièrement. 648 00:30:59,849 --> 00:31:01,890 Maintenant cette fonction, je suis aller à agiter mes mains à. 649 00:31:01,890 --> 00:31:07,620 Mais cette fonction permet d'extrait nous passons ces variables dans les données 650 00:31:07,620 --> 00:31:10,360 dans header.php de la façon suivante. 651 00:31:10,360 --> 00:31:13,100 Et ceci est la dernière pièce, Je pense que, de la syntaxe funky. 652 00:31:13,100 --> 00:31:15,860 Voici ma nouvelle version de header.php-- il 653 00:31:15,860 --> 00:31:20,140 l'habitude de dire, littéralement, ouvert support titre CS50, et ce fut elle. 654 00:31:20,140 --> 00:31:21,766 Et même chose pour le H1. 655 00:31:21,766 --> 00:31:24,310 >> Maintenant, il dit apparemment quelque chose d'assez funky. 656 00:31:24,310 --> 00:31:28,030 Et permettez-moi de simplifier cette un instant comme suit. 657 00:31:28,030 --> 00:31:31,020 Voilà ce que je l'ai changé mon titre être. 658 00:31:31,020 --> 00:31:35,140 Cependant, il devient un peu laid de crochets ouverts en permanence avec PHP, 659 00:31:35,140 --> 00:31:36,610 puis utilisez la fonction d'impression. 660 00:31:36,610 --> 00:31:40,810 Il se trouve que PHP dispose d'un raccourci notation pour cela, ce qui est juste 661 00:31:40,810 --> 00:31:45,050 un signe égal, ce qui est techniquement une fonction appelée écho à la place de l'impression, 662 00:31:45,050 --> 00:31:46,800 mais elle est la même chose, effectivement. 663 00:31:46,800 --> 00:31:48,440 >> Cela semble juste mieux. 664 00:31:48,440 --> 00:31:50,510 Il est juste un syntaxique sucre, si vous voulez, 665 00:31:50,510 --> 00:31:52,260 qui rend mon code regarder un peu mieux. 666 00:31:52,260 --> 00:31:54,010 Mais il se trouve, et nous verrons ce nouveau 667 00:31:54,010 --> 00:31:57,420 Avant longtemps, nous devons appeler cette fâcheusement à long fonction appelée 668 00:31:57,420 --> 00:32:00,582 HTML caractères spéciaux dans PHP, car il se trouve 669 00:32:00,582 --> 00:32:02,790 il ya certaines entrées que l'utilisateur pourrait nous donner, 670 00:32:02,790 --> 00:32:05,160 ou que les utilisateurs pourraient nous donner, qui vont briser notre site. 671 00:32:05,160 --> 00:32:07,035 Mais nous verrons que la prochaine semaine avec JavaScript. 672 00:32:07,035 --> 00:32:10,740 Mais pour l'instant, sachez simplement que ce fichier, headers.php, tout simplement 673 00:32:10,740 --> 00:32:13,040 prend le titre qui Je passai en, il fait 674 00:32:13,040 --> 00:32:17,380 assurer qu'il est sécuritaire pour être injecté dans un web la page, et il recrache que mon titre 675 00:32:17,380 --> 00:32:18,640 et comme mon H1. 676 00:32:18,640 --> 00:32:24,440 Donc, si je vais dans cette version maintenant, remarquerez que des conférences a son titre de retour, 677 00:32:24,440 --> 00:32:28,630 semaine zéro a son titre de retour, et En effet, le code HTML je générer 678 00:32:28,630 --> 00:32:32,110 est identique à ce que ma première version était-- sauf pour mon espace, 679 00:32:32,110 --> 00:32:35,150 parce que je l'ai commencé formatage mon code un peu différemment. 680 00:32:35,150 --> 00:32:38,082 Mais je l'ai tous générés le code je me soucie. 681 00:32:38,082 --> 00:32:39,790 Alors permettez-moi de me arrêter juste un moment et voir 682 00:32:39,790 --> 00:32:42,200 si il ya des questions ou de confusion, je l'ai créé. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Très bien, nous allons donc tordre un peu plus difficile ici 685 00:32:48,150 --> 00:32:51,500 pour voir si il ya une possibilité d'amélioration. 686 00:32:51,500 --> 00:32:56,130 Helpers.php avait aussi cette fonction, appelée renderFooter. 687 00:32:56,130 --> 00:32:59,652 Et ce qui est remarquable à propos renderHeader, et renderFooter? 688 00:32:59,652 --> 00:33:02,610 Et encore une fois, pour les besoins d'aujourd'hui, le savoir que la fonction d'extraction est juste 689 00:33:02,610 --> 00:33:08,280 mon chemin du passage d'arguments dans header.php et footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Pardon? 692 00:33:11,780 --> 00:33:13,056 >> AUDIENCE: [inaudible] 693 00:33:13,056 --> 00:33:15,180 DAVID MALAN: Ouais, je ne changé l'exigent ligne. 694 00:33:15,180 --> 00:33:19,410 Donc, littéralement, je l'ai commis le péché de copier et coller, encore une fois. 695 00:33:19,410 --> 00:33:21,920 Il est pas un très grand nombre de lignes, mais viennent on-- 696 00:33:21,920 --> 00:33:25,220 si je copiant et collant tout juste pour changer un petit mot, 697 00:33:25,220 --> 00:33:28,610 et un petit mot qui pointe Alan OUT est pied de page ici, par rapport à-tête ici. 698 00:33:28,610 --> 00:33:30,670 Sinon, tout est identiques, sauf pour, 699 00:33:30,670 --> 00:33:32,180 bien sûr, les noms de la fonction. 700 00:33:32,180 --> 00:33:33,690 Alors, que pouvons-nous faire mieux? 701 00:33:33,690 --> 00:33:39,810 >> Eh bien, laissez-moi ouvrir jusqu'à cette version ici, de sorte que dans helpers.php, 702 00:33:39,810 --> 00:33:42,300 pourquoi ne pas je reçois juste un peu plus intelligent à ce sujet? 703 00:33:42,300 --> 00:33:46,410 Ecrire un peu plus compliqué code, mais l'appeler rendre? 704 00:33:46,410 --> 00:33:48,470 Alors qu'ai-je fondamentalement changé? 705 00:33:48,470 --> 00:33:51,770 >> Elle prend un argument maintenant-- deux arguments, les données encore. 706 00:33:51,770 --> 00:33:54,444 Et puis, ce qui est la première nom étant probablement utilisé pour, 707 00:33:54,444 --> 00:33:55,860 sur la base de ce que vous lisez ici? 708 00:33:55,860 --> 00:33:58,452 Même si certains de la syntaxe est encore nouveau. 709 00:33:58,452 --> 00:33:59,660 Quel est signe dollar modèle? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Pardon? 712 00:34:03,016 --> 00:34:03,710 >> AUDIENCE: tête ou le pied. 713 00:34:03,710 --> 00:34:04,510 >> DAVID MALAN: tête ou le pied. 714 00:34:04,510 --> 00:34:07,134 Donc, apparemment, je décidai que si la seule chose qui change 715 00:34:07,134 --> 00:34:10,159 est ce que je veux modèle à print-- et par modèle 716 00:34:10,159 --> 00:34:13,100 Je veux dire ceci est modèle pour code que je veux à la sortie, 717 00:34:13,100 --> 00:34:16,350 mais je veux brancher dans certains values-- donc si elle est seulement tête 718 00:34:16,350 --> 00:34:20,440 ou le pied, pourquoi dois-je paramétrer pas cela et appeler le signe argument dollar 719 00:34:20,440 --> 00:34:21,409 modèle? 720 00:34:21,409 --> 00:34:26,250 Et puis cette syntaxe géniale me permet pour créer un chemin dans une variable ici. 721 00:34:26,250 --> 00:34:28,030 >> Donc signe dollar chemin est une variable. 722 00:34:28,030 --> 00:34:31,120 Qu'est-ce que cette syntaxe faire, si vous êtes familier? 723 00:34:31,120 --> 00:34:32,512 Ouais? 724 00:34:32,512 --> 00:34:34,065 >> AUDIENCE: [inaudible] 725 00:34:34,065 --> 00:34:34,940 DAVID MALAN: Exactement. 726 00:34:34,940 --> 00:34:37,600 Si le modèle est, entre guillemets, tête, ou si le modèle est, 727 00:34:37,600 --> 00:34:41,170 entre guillemets, pied de page, cette ligne il que je l'ai souligné, la ligne huit, 728 00:34:41,170 --> 00:34:46,330 est tout simplement en prenant ce nom, comme en-tête, et il concaténation avec PHP dot. 729 00:34:46,330 --> 00:34:49,750 Donc, nous ne disposions pas cet opérateur en C. Cette opérateur point est 730 00:34:49,750 --> 00:34:54,520 une chose étonnante dans PHP-- si vous êtes familier avec JavaScript ou Java, 731 00:34:54,520 --> 00:34:56,949 vous pouvez utiliser le signe plus signer à faire concaténation. 732 00:34:56,949 --> 00:34:59,974 >> En C, il est une douleur dans le neck-- et je suis tellement désolé, dans le p-défini six, 733 00:34:59,974 --> 00:35:02,390 vous allez avoir à faire this-- il est une douleur dans le cou 734 00:35:02,390 --> 00:35:03,930 pour concaténer des chaînes. 735 00:35:03,930 --> 00:35:04,670 Pourquoi? 736 00:35:04,670 --> 00:35:06,580 Eh bien, parce que si vous avez une chaîne qui est cette longue, 737 00:35:06,580 --> 00:35:09,538 et une autre chaîne qui est cette longue, vous ne pouvez pas il suffit de brancher ensemble. 738 00:35:09,538 --> 00:35:11,070 Qu'est-ce que vous avez la place pour faire en C? 739 00:35:11,070 --> 00:35:11,680 Ouais? 740 00:35:11,680 --> 00:35:12,380 >> AUDIENCE: [inaudible] 741 00:35:12,380 --> 00:35:15,090 >> DAVID MALAN: Vous avez à malloc la mémoire, ou d'utiliser un tableau sur la pile. 742 00:35:15,090 --> 00:35:17,214 Et vous avez réellement à faire ce tableau assez grand 743 00:35:17,214 --> 00:35:20,940 le montage de cette ainsi que cela, plus la barre oblique inverse zéro. 744 00:35:20,940 --> 00:35:24,994 Puis concaténer les ensemble en utilisant remuer chat ou manuellement avec une boucle, 745 00:35:24,994 --> 00:35:26,160 ou n'importe quel nombre de techniques. 746 00:35:26,160 --> 00:35:27,760 Et nous vous montrons un couple p-set six. 747 00:35:27,760 --> 00:35:29,080 >> Il est une douleur dans le cou. 748 00:35:29,080 --> 00:35:34,190 Et cela est vraiment ce que je veux dire ce rapport this-- comme C par rapport à PHP. 749 00:35:34,190 --> 00:35:36,870 Vous obtenez juste tellement plus fonctionnalité gratuitement, 750 00:35:36,870 --> 00:35:39,030 de sorte que vous pouvez vous concentrer, idéalement, sur le plaisir 751 00:35:39,030 --> 00:35:41,190 une partie de codage, la projet que vous voulez résoudre, 752 00:35:41,190 --> 00:35:43,190 plutôt que le faible niveau de minuties. 753 00:35:43,190 --> 00:35:49,840 >> Donc, ce qui génère ou simplement header.php footer.php basée sur celle que je l'appelle. 754 00:35:49,840 --> 00:35:52,280 Et en effet, si je vais dans index.php, préavis 755 00:35:52,280 --> 00:35:56,230 tout ce qui est changed-- lieu de appelant rendre en-tête ou le pied de page render, 756 00:35:56,230 --> 00:36:00,230 Je vous appelle rendre, suivie par le nom du modèle que je veux faire. 757 00:36:00,230 --> 00:36:02,370 Et vous verrez cela, aussi, dans sept problème posé, 758 00:36:02,370 --> 00:36:05,530 qui nous permettra d'utiliser la même fonction pour faire des bouquets 759 00:36:05,530 --> 00:36:07,550 et des grappes de différentes pages Web. 760 00:36:07,550 --> 00:36:10,570 >> Alors plutôt que de demeurer trop beaucoup plus sur ces details-- 761 00:36:10,570 --> 00:36:13,210 que vous verrez à nouveau dans jeu de problème seven-- regardons 762 00:36:13,210 --> 00:36:16,850 au moment du début d'une solution à un problème plus intéressant. 763 00:36:16,850 --> 00:36:19,310 Jusqu'à présent, rien ne nous avons a fait des données sauvegardées. 764 00:36:19,310 --> 00:36:22,920 En fait, la seule fois que nous ayons jamais enregistré quelque chose que nous avons fait dans cette classe 765 00:36:22,920 --> 00:36:31,030 est quand nous avons eu une démonstration très simple un certain temps dos, de sorte que nous avons utilisé le fichier IO en C, 766 00:36:31,030 --> 00:36:34,520 et je pense que je tapé mon nom, et Le nom de Hannah, et le nom de Maria, 767 00:36:34,520 --> 00:36:37,610 ou peut-être le nom d'Andy, et puis nous avons économisé un file-- CSV 768 00:36:37,610 --> 00:36:39,430 séparées par des virgules fichier valeurs. 769 00:36:39,430 --> 00:36:43,530 >> Et nous avons utilisé fopen-- je pense nous avons utilisé fprintf je me souviens bien, 770 00:36:43,530 --> 00:36:44,910 et nous avons économisé un fichier. 771 00:36:44,910 --> 00:36:46,920 Or, tel est le plus simple forme d'une base de données. 772 00:36:46,920 --> 00:36:50,230 Si vous voulez faire un site web pour le Programme Frosh GI, où étudiants de première année 773 00:36:50,230 --> 00:36:53,390 peut inscrire à un sport, vous idéalement vouloir faire quelque chose avec ces données. 774 00:36:53,390 --> 00:36:55,370 La semaine dernière, nous ne faisions rien avec le data-- nous venons de dire, 775 00:36:55,370 --> 00:36:56,661 vous êtes inscrit, pas vraiment. 776 00:36:56,661 --> 00:36:58,950 Ou peut-être que je l'ai envoyé Proctor, et ce fut tout. 777 00:36:58,950 --> 00:37:02,110 >> Mais ce serait bien si je pouvais donner ce surveillant un fichier CSV, 778 00:37:02,110 --> 00:37:03,340 comme un fichier Excel. 779 00:37:03,340 --> 00:37:05,090 Ou mieux encore, il serait serait bien si je pouvais 780 00:37:05,090 --> 00:37:08,830 mettre les noms de ces utilisateurs et dortoir noms et tout cela 781 00:37:08,830 --> 00:37:11,740 dans une base de données vit juste à l'infini, 782 00:37:11,740 --> 00:37:13,530 jusqu'à ce que je choisis de supprimer les données. 783 00:37:13,530 --> 00:37:15,645 Une base de données qui permet moi pour demander des informations. 784 00:37:15,645 --> 00:37:18,070 Et en effet, que ce qui est une base de données est. 785 00:37:18,070 --> 00:37:20,470 >> Nous introduisons aujourd'hui, et la semaine prochaine, aussi, une technologie 786 00:37:20,470 --> 00:37:25,020 appelé SQL-- un Structured Query Langue, qui est une autre langue. 787 00:37:25,020 --> 00:37:28,750 Il est essentiellement une programmation la langue, mais pour les bases de données. 788 00:37:28,750 --> 00:37:31,760 Et une base de données pour le moment, tout simplement considérer comme une version super chic 789 00:37:31,760 --> 00:37:35,710 de Microsoft Excel ou Google Feuilles de calcul ou Apple Numbers. 790 00:37:35,710 --> 00:37:39,950 Il est généralement un programme qui permet vous permet de stocker tout un tas de données 791 00:37:39,950 --> 00:37:43,960 en rangées et colonnes, tout à fait comme vous pourriez en Excel. 792 00:37:43,960 --> 00:37:47,100 >> Mais ce qui est agréable, surtout si nous ne sommes pas familiers avec des super Excel, 793 00:37:47,100 --> 00:37:52,040 ce SQL vous permet de faire cette requête est informations en écrivant lignes de code 794 00:37:52,040 --> 00:37:55,220 où vous pouvez, même si votre base de données a un million de lignes en elle, 795 00:37:55,220 --> 00:37:57,190 vous pouvez trouver des choses super rapide. 796 00:37:57,190 --> 00:37:59,950 En fait, Excel est particulièrement mauvais à grands ensembles de données. 797 00:37:59,950 --> 00:38:02,460 En fait, jusqu'à quelques il ya des années, est avéré 798 00:38:02,460 --> 00:38:08,890 Excel permettrait seulement de stocker jusqu'à 65.535 rangées de data-- qui 799 00:38:08,890 --> 00:38:12,020 ressemble beaucoup, mais à la fois que je suis un étudiant diplômé, 800 00:38:12,020 --> 00:38:14,920 et je me souviens de trébucher sur cela parce que je suis générant 801 00:38:14,920 --> 00:38:17,900 Les fichiers CSV pour mes recherches et je voulu les analyser rapidement 802 00:38:17,900 --> 00:38:19,530 en ouvrant simplement dans Excel. 803 00:38:19,530 --> 00:38:23,730 Bien sûr, mon ordinateur tombe en panne, parce que je devais plus de 65.000 lignes. 804 00:38:23,730 --> 00:38:27,210 >> Mais d'où vient le 65535 vient-il? 805 00:38:27,210 --> 00:38:29,670 Quel a été fait Microsoft, sans doute? 806 00:38:29,670 --> 00:38:32,430 Si vous êtes bon avec vos pouvoirs de deux? 807 00:38:32,430 --> 00:38:37,160 Ouais, ils utilisaient 16 bits valeur pour représenter le numéro de ligne. 808 00:38:37,160 --> 00:38:41,310 Et deux à 16 est 65,536-- moins un, parce que si vous 809 00:38:41,310 --> 00:38:45,414 signifie indice zéro qui était la plus grand nombre de lignes que je pourrais avoir. 810 00:38:45,414 --> 00:38:46,830 Et il était juste une décision de conception. 811 00:38:46,830 --> 00:38:52,760 En économisant 16 bits, ils me limitées 16.000 lignes, au lieu de 4 milliards de dollars, 812 00:38:52,760 --> 00:38:54,322 que je pouvais avoir, idéalement. 813 00:38:54,322 --> 00:38:57,030 Mais pour l'instant, nous allons introduire dans ce plus d'un contexte web. 814 00:38:57,030 --> 00:39:00,390 Et ce qui est bien sur SQL est que même mais il est assez puissant et assez 815 00:39:00,390 --> 00:39:04,050 sophistiqué, cela se résume vraiment jusqu'à quatre opérations clés, quatre 816 00:39:04,050 --> 00:39:08,060 fonctions clés, si vous sélectionnez, will-- pour récupérer des données, la recherche 817 00:39:08,060 --> 00:39:12,510 pour les données; supprimer ou supprimer des données; insert pour ajouter des lignes à la base de données; 818 00:39:12,510 --> 00:39:13,410 et mise à jour. 819 00:39:13,410 --> 00:39:17,010 Donc, si vous avez déjà utilisé Google Tableurs, Numbers Apple, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, vous avez exécuté, le plus probable, tous les 821 00:39:19,310 --> 00:39:22,530 de ces opérations comme un être humain par simplement en utilisant votre clavier et mouse-- 822 00:39:22,530 --> 00:39:26,050 l'insertion de données, en utilisant vos yeux pour sélectionner ou rechercher des données, 823 00:39:26,050 --> 00:39:28,360 ou les données de mise à jour ou supprimer des données. 824 00:39:28,360 --> 00:39:29,870 >> Qu'est-ce que cela signifie? 825 00:39:29,870 --> 00:39:34,300 Eh bien, pré-installé dans CS50 IDE est un programme appelé MySQL. 826 00:39:34,300 --> 00:39:37,050 Il est un, open-source base de données qui est super populaire. 827 00:39:37,050 --> 00:39:40,590 Facebook, par exemple, utilise pour ce jour, entre autres outils qu'ils utilisent. 828 00:39:40,590 --> 00:39:44,300 Et beaucoup de sites très populaires utiliser en grande partie parce qu'il est rapide, 829 00:39:44,300 --> 00:39:45,230 et parce qu'il est gratuit. 830 00:39:45,230 --> 00:39:46,820 Bien sûr il existe des alternatives. 831 00:39:46,820 --> 00:39:49,580 Et certains d'entre vous pourraient tremper avec alternatives pour des projets finaux. 832 00:39:49,580 --> 00:39:55,330 >> Ceci est une capture d'écran, quant à lui, de un outil basé sur le Web appelé phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Il est une coïncidence que cet outil basé sur le Web est également 834 00:39:58,260 --> 00:40:01,720 écrit dans un langage, PHP, mais ce qu'il est censé faire 835 00:40:01,720 --> 00:40:04,620 est nous donner un basé sur le Web une base de données à l'interface. 836 00:40:04,620 --> 00:40:07,180 Parce que MySQL est généralement quelque chose, historiquement vous, 837 00:40:07,180 --> 00:40:08,770 serait seulement interagir avec avec une ligne de commande. 838 00:40:08,770 --> 00:40:10,811 Et ce serait super- ennuyeux et des arcanes d'avoir 839 00:40:10,811 --> 00:40:14,487 à taper des commandes textuelles pour sélectionner données, insérer des données, et de suppression des données. 840 00:40:14,487 --> 00:40:16,820 Ainsi, certaines personnes sur Internet a écrit un programme basé sur le Web 841 00:40:16,820 --> 00:40:18,900 que faites-nous gérons les données dans notre base de données. 842 00:40:18,900 --> 00:40:23,040 Il est comme un double clic sur Excel, et l'exécution d'une version Web de celui-ci. 843 00:40:23,040 --> 00:40:26,370 >> Et ce que vous allez utiliser pour finalement, la semaine prochaine, pas dans six p-set, 844 00:40:26,370 --> 00:40:28,680 mais est de construire quelque chose appelé CS50 Finances, qui 845 00:40:28,680 --> 00:40:32,630 va avoir une base de données utilisateurs, avec des noms d'utilisateur et mots de passe, 846 00:40:32,630 --> 00:40:34,860 les montants en dollars qu'ils ont dans leurs comptes bancaires. 847 00:40:34,860 --> 00:40:37,280 Ce sera quelque chose que vous utilisez pour stocker 848 00:40:37,280 --> 00:40:39,910 les symboles et les quantités de stocks que les utilisateurs 849 00:40:39,910 --> 00:40:42,567 ont acheté en utilisant virtuelle dollars que vous allez leur donner. 850 00:40:42,567 --> 00:40:44,900 Et ça va permettre aux utilisateurs pour vous inscrire à votre site, 851 00:40:44,900 --> 00:40:47,190 de sorte que même vos amis pouvez accorder à votre site Web 852 00:40:47,190 --> 00:40:49,360 et fait enregistrer, connecter, et de jouer 853 00:40:49,360 --> 00:40:52,807 et essayer de trouver des défauts dans votre code, et essayer de trouver des bugs dans votre site web. 854 00:40:52,807 --> 00:40:55,390 Et ils vont tout simplement vous inscrire par eux-mêmes en ajoutant, de manière efficace, 855 00:40:55,390 --> 00:40:58,120 via le code que vous écrivez à votre base de données. 856 00:40:58,120 --> 00:41:02,470 >> Par exemple, ceci est une capture d'écran rapide de ce que une base de données pourrait ressembler. 857 00:41:02,470 --> 00:41:05,190 Ce fut l'un de Les solutions-- de l'an dernier 858 00:41:05,190 --> 00:41:07,760 cela ressemble à un mini-Excel déposer, stockée dans notre base de données, 859 00:41:07,760 --> 00:41:09,950 stockée dans ce logiciel appelé MySQL. 860 00:41:09,950 --> 00:41:13,260 Sur le côté gauche, je l'ai apparemment donné à chaque utilisateur un numéro unique. 861 00:41:13,260 --> 00:41:16,200 Dans la deuxième colonne, je vous ai donné tout le monde un utilisateur name-- ma propre 862 00:41:16,200 --> 00:41:16,880 parmi eux. 863 00:41:16,880 --> 00:41:21,430 Et sur le côté droit, Je leur ai donné une table de hachage. 864 00:41:21,430 --> 00:41:26,760 >> Maintenant, cela est réellement un mot de passe, mais pas un mot de passe de texte brut. 865 00:41:26,760 --> 00:41:30,160 Il est un mot de passe crypté, si vous voulez, ou un mot de passe de hachage. 866 00:41:30,160 --> 00:41:32,000 Que nous allons revenir à avant longtemps. 867 00:41:32,000 --> 00:41:34,340 >> Mais si vous avez déjà lu un article sur la façon 868 00:41:34,340 --> 00:41:37,950 votre mot de passe à une banque ou une site aurait pu être compromise, 869 00:41:37,950 --> 00:41:39,630 on peut généralement signifier deux choses. 870 00:41:39,630 --> 00:41:42,780 Donc, ceci est juste un extrait de six utilisateurs. 871 00:41:42,780 --> 00:41:45,460 Chacun d'entre vous peut maintenant comprendre via le piratage ou la fissuration 872 00:41:45,460 --> 00:41:47,690 ce que les mots de passe de nos six personnes sont. 873 00:41:47,690 --> 00:41:49,720 Mais si vous avez déjà obtenu une alerte ou une excuse 874 00:41:49,720 --> 00:41:52,803 d'une société ou site web dicton, Désolé, un hacker fait irruption dans notre base de données, 875 00:41:52,803 --> 00:41:56,360 vous devriez probablement changer votre mot de passe, ce qui pourrait que cela signifie? 876 00:41:56,360 --> 00:41:59,670 >> Eh bien, un, pourrait signifier la société a été plus débile, 877 00:41:59,670 --> 00:42:03,630 et a été stocker votre mot de passe dans une colonne comme ça, non chiffré. 878 00:42:03,630 --> 00:42:05,840 Ce qui signifie que l'adversaire, qui a volé la base de données, 879 00:42:05,840 --> 00:42:07,440 sait littéralement votre nom d'utilisateur et mot de passe. 880 00:42:07,440 --> 00:42:08,960 Voilà le pire scénario possible. 881 00:42:08,960 --> 00:42:11,710 Et comme vous le verrez dans le p-ensemble sept, si facile à éviter. 882 00:42:11,710 --> 00:42:15,624 Il n'y a absolument aucune excuse pour cela forme de bêtise dans l'Internet d'aujourd'hui. 883 00:42:15,624 --> 00:42:18,540 Two-- et nous trouverons quelques articles à témoigner du fait que ce encore 884 00:42:18,540 --> 00:42:21,710 qui se passe, nonetheless-- deux, peut-être l'adversaire 885 00:42:21,710 --> 00:42:23,840 volé cette version de la base de données. 886 00:42:23,840 --> 00:42:27,110 Qui est encore un peu mal, parce que maintenant Ils savent que je dois six clients, 887 00:42:27,110 --> 00:42:29,270 Je sais que les noms d'utilisateur de ces six clients, 888 00:42:29,270 --> 00:42:32,910 et je sais que la crypté versions ou les versions hachées, 889 00:42:32,910 --> 00:42:34,340 des mots de passe de ces six clients. 890 00:42:34,340 --> 00:42:37,010 Mais aucun d'entre vous qui pourraient ai fait [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 où vous craqué mots de passe, ou pris Un regard sur cette version du problème 892 00:42:41,150 --> 00:42:46,280 ensemble, pourquoi est-il encore un peu inquiétante Si l'adversaire connaît votre hachage 893 00:42:46,280 --> 00:42:47,435 Les mots de passe? 894 00:42:47,435 --> 00:42:49,732 >> AUDIENCE: parce qu'ils ne pouvaient entrer dans le dictionnaire entier 895 00:42:49,732 --> 00:42:50,690 dans la fonction de hachage. 896 00:42:50,690 --> 00:42:54,520 Et si votre mot de passe est un dictionnaire mot, [? ils peuvent tout simplement match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID MALAN: Exactement, l'adversaire pouvez simplement écrire de code, comme certains d'entre vous 898 00:42:57,640 --> 00:43:00,526 fait pour [? Hacker?] 2, par lequel vous itération sur 899 00:43:00,526 --> 00:43:03,400 tous les mots du dictionnaire, ou toutes les combinaisons possibles de A 900 00:43:03,400 --> 00:43:06,610 à Z et par une nine-- qui ressemble beaucoup, et il est. 901 00:43:06,610 --> 00:43:08,361 Mais pour un ordinateur, il est sacrément rapide. 902 00:43:08,361 --> 00:43:10,610 Et en fait, ce fut la le point de [? Hacker 2,?] Était 903 00:43:10,610 --> 00:43:12,540 de prendre des choses qui ressemble littéralement à cela, 904 00:43:12,540 --> 00:43:14,900 et l'ingénierie inverse ce qu'il était réellement. 905 00:43:14,900 --> 00:43:17,270 >> Donc, nous allons voir comment nous pouvons stocker cette manière plus efficace. 906 00:43:17,270 --> 00:43:20,210 Tours dehors, heureusement dans MySQL, il va y avoir des types de données. 907 00:43:20,210 --> 00:43:22,800 Et l'une des parties amusantes environ la conception de base de données, pour être honnête, 908 00:43:22,800 --> 00:43:25,810 est en fait de décider pour vous-même comment devriez-vous représenter les données? 909 00:43:25,810 --> 00:43:29,630 Si vous représenter un numéro de téléphone comme un int, comme un grand nombre, ou une longue? 910 00:43:29,630 --> 00:43:31,630 Ou voulez-vous faire réellement comme une séquence de caractères? 911 00:43:31,630 --> 00:43:33,780 Et il peut être très impacts non négligeables de cette. 912 00:43:33,780 --> 00:43:36,714 >> En fait, l'un des premières, des histoires amusantes germane 913 00:43:36,714 --> 00:43:39,880 est quand Mark Zuckerberg a été construit Facebook, il a été écrit en, 914 00:43:39,880 --> 00:43:42,300 et est encore largement écrit en PHP. 915 00:43:42,300 --> 00:43:45,400 Et l'un des plus grands défis ils ont fait face dès le début a été mise à l'échelle. 916 00:43:45,400 --> 00:43:48,820 Quand ils ont gardé ajoutant école après l'école après l'école, à ma connaissance, 917 00:43:48,820 --> 00:43:51,639 l'une des solutions originales était essentiellement de copier et coller 918 00:43:51,639 --> 00:43:53,430 certaines bases de données et une partie du code, 919 00:43:53,430 --> 00:43:55,346 de sorte que Harvard était courir sur son propre serveur, 920 00:43:55,346 --> 00:43:56,995 MIT et courait sur son propre serveur. 921 00:43:56,995 --> 00:43:59,120 Et ce fut la raison pour laquelle, pour certains d'entre vous qui pourrait rappeler, 922 00:43:59,120 --> 00:44:01,510 vous ne pourriez pas avoir des amis dans d'autres réseaux. 923 00:44:01,510 --> 00:44:05,050 >> Vous avez probablement pas amis au MIT ou d'Harvard il ya 10 ans environ, 924 00:44:05,050 --> 00:44:07,467 mais vous ne pouvez pas étendre les réseaux pour partie cette raison. 925 00:44:07,467 --> 00:44:10,550 Et l'un des plus grands défis pour Mark et pour des sociétés comme Facebook 926 00:44:10,550 --> 00:44:13,460 est en fait la manutention des centaines et des milliers et des millions 927 00:44:13,460 --> 00:44:14,460 de requêtes par seconde. 928 00:44:14,460 --> 00:44:16,501 Donc, les choses que nous allons commencer parler cette semaine 929 00:44:16,501 --> 00:44:19,860 allez vraiment être en rapport à écrire un bon logiciel, et populairement 930 00:44:19,860 --> 00:44:23,040 des outils efficaces qui peut gérer beaucoup d'utilisateurs. 931 00:44:23,040 --> 00:44:25,460 >> Donc, nous allons parler de choses comme indexation et la recherche, 932 00:44:25,460 --> 00:44:26,910 mais qui est tout pour aujourd'hui. 933 00:44:26,910 --> 00:44:28,780 Nous allons vous voir pour plus mercredi. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUSIQUE - THEME "Seinfeld"] 936 00:44:33,902 --> 00:44:35,943 DAVID MALAN: Vous pouvez à , et en soustraire. 937 00:44:35,943 --> 00:44:38,859 Et vous ne devez pas coller avec un certain montant pré-déterminé de la mémoire. 938 00:44:38,859 --> 00:44:40,580 Eh bien, qu'est-ce que cela va être appelé? 939 00:44:40,580 --> 00:44:42,369 >> ENCEINTE 1: Eh bien, ce qui se passe? 940 00:44:42,369 --> 00:44:43,535 SPEAKER 2: Que voulez-vous dire? 941 00:44:43,535 --> 00:44:44,451 Il donne une conférence. 942 00:44:44,451 --> 00:44:47,650 DAVID MALAN: Et nous pouvons utiliser un fonction malloc appelé à memory-- 943 00:44:47,650 --> 00:44:50,050 >> ENCEINTE 1: Pourquoi ne sont pas les bras bougent? 944 00:44:50,050 --> 00:44:52,450 >> SPEAKER 2: Eh bien that's-- vous le savez, ce est normal. 945 00:44:52,450 --> 00:44:57,162 Il est juste comme il vient grandes saucisses accroché là. 946 00:44:57,162 --> 00:44:59,040 >> ENCEINTE 1: Ce qui est normal? 947 00:44:59,040 --> 00:45:03,096 >> SPEAKER 2: Ouais, je pense que nous simplement supposer il a accidentellement 948 00:45:03,096 --> 00:45:06,840 remplacé son déodorant avec de la colle. 949 00:45:06,840 --> 00:45:07,608