1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [REPRODUCCIÓ DE MÚSICA] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID Malan: Aquest és CS50, i aquest és el començament de la setmana 8. 5 00:00:13,350 --> 00:00:17,510 I estem tan emocionats de donar la benvinguda esquena, gran sorpresa, el mateix Ramon CS50 6 00:00:17,510 --> 00:00:22,160 Galván, estudiant d'últim any en ascens que ha estat passar els últims mesos 7 00:00:22,160 --> 00:00:26,190 des de juliol a Los Angeles, a Hollywood, literalment treballant en un nou televisor de marca 8 00:00:26,190 --> 00:00:31,930 espectacle anomenat Colònia, el creador dels quals és en realitat un alum de Harvard si mateix. 9 00:00:31,930 --> 00:00:36,610 I així que estem molt contents de veure aquest debut a la xarxa EUA aquest mes de gener. 10 00:00:36,610 --> 00:00:40,370 Així que estigueu atents per això, i per més Ramón per a les setmanes per venir. 11 00:00:40,370 --> 00:00:42,550 >> Ara sé que el final és a prop. 12 00:00:42,550 --> 00:00:47,400 I el que això significa és que no hi ha gairebé res queda d'CS50, és trist dir-ho. 13 00:00:47,400 --> 00:00:49,400 Tenim només tres problemes conjunts esquerra- hi ha 14 00:00:49,400 --> 00:00:52,510 problema estableix six-- que està en les seves mans ara o aviat seran, 15 00:00:52,510 --> 00:00:56,080 a finals d'aquest week-- està destinat a salvar els nostres mons de la línia d'ordres, on 16 00:00:56,080 --> 00:00:59,450 hem passat la major part del nostre temps utilitzant C, i el món de la programació web. 17 00:00:59,450 --> 00:01:02,350 Bé, veuràs un munt d'idees pres de l'obra de línia d'ordres, 18 00:01:02,350 --> 00:01:04,560 sinó també una gran quantitat de nou i idees interessants 19 00:01:04,560 --> 00:01:07,929 que també van a ser afí a aplicacions mòbils i la tecnologia, 20 00:01:07,929 --> 00:01:10,470 més en general, amb el qual es nois són tots coneixem avui en dia 21 00:01:10,470 --> 00:01:12,090 en els ordinadors portàtils i els telèfons i similars. 22 00:01:12,090 --> 00:01:15,220 >> Pel que vostè no implementa una pàgina web o una pàgina web 23 00:01:15,220 --> 00:01:17,620 per se, però un servidor web real. 24 00:01:17,620 --> 00:01:21,590 Vostè haurà d'escriure la resta d'un servidor web escrit en C, el propòsit en la vida 25 00:01:21,590 --> 00:01:25,410 és rebre peticions HTTP, aquests sobres virtuals seguim parlant 26 00:01:25,410 --> 00:01:29,780 sobre i respondre realitat ja sigui amb alguns content-- estàtics com un punt HTML 27 00:01:29,780 --> 00:01:32,310 arxiu, o un punt JPEG o qualsevol altre nombre d'arxius, 28 00:01:32,310 --> 00:01:37,070 o fins i tot un arxiu PHP amb el que la teva web servidor va a interpretar que PHP 29 00:01:37,070 --> 00:01:38,332 codi i escopir els resultats. 30 00:01:38,332 --> 00:01:40,540 Ara, li hem proporcionat amb una mica de marc 31 00:01:40,540 --> 00:01:43,100 per it-- fet l' codi de distribució per al problema 32 00:01:43,100 --> 00:01:47,496 estableix sis és més de 1.000 línies de llarg, una molts dels quals són els comentaris, per ser fair-- 33 00:01:47,496 --> 00:01:49,370 però això és realment significava ser una oportunitat 34 00:01:49,370 --> 00:01:52,570 per aconseguir les seves mans brutes de busseig en un projecte bastant gran 35 00:01:52,570 --> 00:01:55,570 que hem molt específica tallades en peces de per a vostè, 36 00:01:55,570 --> 00:01:59,046 pel que realment en sortir de CS50 i entrar en el món real de la programació 37 00:01:59,046 --> 00:02:00,920 i volen incursionar en qualsevol nombre de projectes, 38 00:02:00,920 --> 00:02:03,253 tindràs molt més gran confort descàrrega d'alguna font 39 00:02:03,253 --> 00:02:05,020 codi, alguns de codi obert projectar a la web, 40 00:02:05,020 --> 00:02:08,174 i el busseig en i fer canvis que s'hi assembli. 41 00:02:08,174 --> 00:02:11,340 Problema fixar 07:00 serà sobre fer la seva pròpia aplicació basada en la web 42 00:02:11,340 --> 00:02:14,140 que pren l'entrada dinàmica i produeix sortida dinàmica en la forma 43 00:02:14,140 --> 00:02:16,920 d'un lloc web de etrade.com similars. 44 00:02:16,920 --> 00:02:20,800 I un problema fixar 08:00 se centrarà en encara un altre idioma conegut com JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Mentrestant, la final projecte està a l'horitzó. 46 00:02:24,170 --> 00:02:26,800 L'anomenat pre-proposta es deu a la setmana a partir d'avui. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- per l'especificació, que està en website-- de CS50 48 00:02:29,930 --> 00:02:33,260 és una oportunitat bastant casual per que vostè enviï un correu electrònic molt succinta 49 00:02:33,260 --> 00:02:35,170 al seu company de l'ensenyament només per informar 50 00:02:35,170 --> 00:02:38,250 o ella del que estàs pensant, a ell o ella utilitzi com a caixa de ressonància. 51 00:02:38,250 --> 00:02:40,980 I tenir un seny check-- si vostè està pensant 52 00:02:40,980 --> 00:02:43,210 sobre mossegar massa molt o potser massa poc, 53 00:02:43,210 --> 00:02:46,480 o potser vostè no té cap idea i vol participar en una conversa. 54 00:02:46,480 --> 00:02:48,480 >> A partir de llavors és una proposta i l'informe d'estat, 55 00:02:48,480 --> 00:02:51,860 l'anomenat aquí a hackathon CS50 Cambridge per a estudiants de Harvard i Yale 56 00:02:51,860 --> 00:02:52,362 per igual. 57 00:02:52,362 --> 00:02:54,320 Del projecte final aplicació és llavors cal. 58 00:02:54,320 --> 00:02:59,290 I després una fira CS50 aquí, a Cambridge, així com un altre a New Haven. 59 00:02:59,290 --> 00:03:02,500 Així que la proposta, mireu la pàgina web d'aquestes mencions. 60 00:03:02,500 --> 00:03:06,530 >> Però el més emocionant, també, és un oportunitat de embrutar-se les mans, 61 00:03:06,530 --> 00:03:09,350 i les seves ments obertes a un tot munt de temes i eines 62 00:03:09,350 --> 00:03:12,920 i tècniques que són auxiliars al pla d'estudis bàsic del curs, 63 00:03:12,920 --> 00:03:14,810 però no obstant relacionats. 64 00:03:14,810 --> 00:03:18,400 I també meravellosa graons per fent projectes finals molt interessants que 65 00:03:18,400 --> 00:03:22,020 van molt més enllà de material que hem cobert formalment en problema fixa o en conferència. 66 00:03:22,020 --> 00:03:24,446 Així que anar a la pàgina web del CS50 per tota la llista de seminaris. 67 00:03:24,446 --> 00:03:26,070 Si no es registra, però, això està bé. 68 00:03:26,070 --> 00:03:29,860 Vagi per davant i registra't quiet i ho farem seguiment amb un enllaç en viu, 69 00:03:29,860 --> 00:03:31,844 el dia i hora és al lloc web. 70 00:03:31,844 --> 00:03:33,760 I tot serà gravat i posat en línia 71 00:03:33,760 --> 00:03:35,800 si vostè no pot fer que el dies i horaris determinats. 72 00:03:35,800 --> 00:03:39,380 >> Quant al que s'acosta thereafter-- així, per descomptat, hi ha el hackathon CS50. 73 00:03:39,380 --> 00:03:43,560 Aquesta foto, recordo, des de la setmana zero presa al voltant de les 4 am una nit en anys anteriors. 74 00:03:43,560 --> 00:03:46,900 La fira CS50, que de nou es durà a terme a les dues ciutats. 75 00:03:46,900 --> 00:03:49,760 I llavors, per plantar la llavor, tot i que encara 76 00:03:49,760 --> 00:03:54,080 tenir un mes més a l'esquerra del semestre, si desitja unir-se a la pròpia ensenyament de CS50 77 00:03:54,080 --> 00:03:56,770 personal, i vol iniciar pensant en convertir-se en una CA, 78 00:03:56,770 --> 00:03:59,550 o company d'ensenyament, saber que començarem a parlar més sobre això 79 00:03:59,550 --> 00:04:00,630 a finals d'aquest semestre. 80 00:04:00,630 --> 00:04:03,470 Però aquí està la foto la major part de l'equip d'aquest any. 81 00:04:03,470 --> 00:04:06,950 >> I així, PHP-- i jo estava tan trist la setmana passada que [? Allyse?] Amablement 82 00:04:06,950 --> 00:04:09,370 va ser l'esforç d'arribar nosaltres aquests meravellosos accessoris 83 00:04:09,370 --> 00:04:11,720 que jo no les fem servir, de manera que en realitat només semblava una mica estúpid 84 00:04:11,720 --> 00:04:15,160 que teníem una pala assegut aquí tot dia dimecres passat, i una mica de cullera. 85 00:04:15,160 --> 00:04:17,709 Però aquesta va ser la meva metafòrica manera de tractar de pintar 86 00:04:17,709 --> 00:04:21,600 la imatge de per què estem en transició de C a un llenguatge com PHP. 87 00:04:21,600 --> 00:04:25,480 I el mateix podria dir-se de qualsevol nombre de les Llengües Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 o raïms de altres--, però mentre que en C, per exemple, escriure un programa en C 89 00:04:31,270 --> 00:04:34,050 normalment podria ser com tenint una cullera com aquesta 90 00:04:34,050 --> 00:04:36,770 i l'excavació d'un forat en el terra, a la sorra o la brutícia. 91 00:04:36,770 --> 00:04:39,770 PHP li permet ser molt mossos més grans fora del problema, 92 00:04:39,770 --> 00:04:42,842 escriure codi molt menys utilitzant una eina molt més petit, 93 00:04:42,842 --> 00:04:45,050 perquè hi ha molt més funcionalitat reconstruït en. 94 00:04:45,050 --> 00:04:47,633 >> Ara, si ens vam quedar molt dramàtica, tindríem alguna cosa per palejar 95 00:04:47,633 --> 00:04:48,760 aquí, però que així sigui. 96 00:04:48,760 --> 00:04:51,370 Mentrestant, l'altre metàfora se'ns va ocórrer 97 00:04:51,370 --> 00:04:53,770 és, per descomptat, vostè podria servir alguna cosa com una clau 98 00:04:53,770 --> 00:04:56,610 a martellejar en una cosa així com un clau. 99 00:04:56,610 --> 00:04:58,980 Però, és clar, el dret eina per al seu ús va 100 00:04:58,980 --> 00:05:01,360 que no és tant la llenguatge anomenat C-- 101 00:05:01,360 --> 00:05:03,590 i ara només molest [? Sanders ,?] Probablement, 102 00:05:03,590 --> 00:05:07,890 ho arreglarem el que tarda- l'eina adequada per utilitzar amb freqüència 103 00:05:07,890 --> 00:05:09,640 No serà aquesta eina de nivell més baix. 104 00:05:09,640 --> 00:05:13,720 I, en efecte, C no és un llenguatge que la majoria de vostès mai va a utilitzar, 105 00:05:13,720 --> 00:05:15,590 o necessàriament han d'utilitzar de nou. 106 00:05:15,590 --> 00:05:18,350 >> I de fet, una mica secret-- l'única vegada 107 00:05:18,350 --> 00:05:23,160 Jo ús C mi és més o menys entre Setembre i desembre de cada tardor 108 00:05:23,160 --> 00:05:23,870 semestre. 109 00:05:23,870 --> 00:05:25,790 I això es deu al fet que utilitzar-lo com una oportunitat 110 00:05:25,790 --> 00:05:27,852 per ensenyar els fonaments de la programació, 111 00:05:27,852 --> 00:05:29,810 i amb ella l'ordinador fonaments científics, dades 112 00:05:29,810 --> 00:05:32,435 les estructures, els algoritmes i la com-- però molt ràpidament oi 113 00:05:32,435 --> 00:05:35,010 veure ara que la sintaxi i les idees que subjau C 114 00:05:35,010 --> 00:05:37,530 són tan meravellosament transferible a més modern 115 00:05:37,530 --> 00:05:41,130 llenguatges d'alt nivell, com PHP i Python i Perl i Java 116 00:05:41,130 --> 00:05:46,750 i Objective-C en realitat, no tant Objectiu-C- però Swift, aquests nous 117 00:05:46,750 --> 00:05:50,010 llenguatges que molts de vostès després incursionar amb vostès projecte final. 118 00:05:50,010 --> 00:05:55,070 >> Així que sense més preàmbuls, anem a realitat utilitzar PHP per resoldre alguns problemes. 119 00:05:55,070 --> 00:06:00,230 Recordem que des del principi, l'última setmana, només fem servir CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 vam escriure un petit programa dinky que acaba de dir, "Hola món". 121 00:06:02,990 --> 00:06:05,680 I després ho vaig guardar en un arxiu anomenat hello.php. 122 00:06:05,680 --> 00:06:07,280 I llavors em vaig trobar amb aquesta comanda. 123 00:06:07,280 --> 00:06:08,080 >> I per què? 124 00:06:08,080 --> 00:06:09,900 En Anglès, què està passant aquí? 125 00:06:09,900 --> 00:06:12,760 Què estava fent quan Vaig córrer aquesta comanda? 126 00:06:12,760 --> 00:06:13,405 >> Sí? 127 00:06:13,405 --> 00:06:16,572 >> AUDIÈNCIA: Hi ha una mica de PHP funció que diu el que està en-- entén això. 128 00:06:16,572 --> 00:06:19,696 DAVID Malan: Bé, hi ha alguna funció PHP-- i m'ho dius a mi ser més específics, 129 00:06:19,696 --> 00:06:21,810 hi ha un programa anomenat PHP, àlies 130 00:06:21,810 --> 00:06:25,872 L'intèrpret, que entén el contingut de hello.php, 131 00:06:25,872 --> 00:06:27,830 i ho interpreta dalt baix, d'esquerra a dreta, 132 00:06:27,830 --> 00:06:29,590 i fa el que diuen aquests ordres. 133 00:06:29,590 --> 00:06:33,320 Les ordres de hello.php, per descomptat, és només la font code-- funcions 134 00:06:33,320 --> 00:06:35,750 i variables i bucles i similars, que nosaltres mateixos 135 00:06:35,750 --> 00:06:37,460 han començat a escriure en PHP. 136 00:06:37,460 --> 00:06:40,240 >> Però a diferència de C, la qual és un llenguatge compilat, 137 00:06:40,240 --> 00:06:42,810 PHP que acaba d'escriure, i executar-lo. 138 00:06:42,810 --> 00:06:46,420 Es salta aquest pas intermediari de convertint-la en zeros i uns, 139 00:06:46,420 --> 00:06:47,790 i després executar-lo. 140 00:06:47,790 --> 00:06:50,510 I així, el que és un avantatge d'això? 141 00:06:50,510 --> 00:06:52,690 Per què estem ometent el pas? 142 00:06:52,690 --> 00:06:55,238 Per què els llenguatges més moderns tendeixen a ometre aquest pas? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Quin va ser el benefici? 145 00:07:01,220 --> 00:07:02,080 >> O simplement intuïtivament? 146 00:07:02,080 --> 00:07:04,200 Fins i tot si no has escrit molt abans de PHP, 147 00:07:04,200 --> 00:07:07,210 el que és beneficiós per no compilar el codi què et sembla? 148 00:07:07,210 --> 00:07:08,520 No? 149 00:07:08,520 --> 00:07:09,610 No cometre? 150 00:07:09,610 --> 00:07:11,350 Gratar-se el cap? 151 00:07:11,350 --> 00:07:12,614 Sí. 152 00:07:12,614 --> 00:07:13,600 >> AUDIÈNCIA: Més dinàmica. 153 00:07:13,600 --> 00:07:14,683 >> DAVID Malan: Més dinàmica? 154 00:07:14,683 --> 00:07:16,032 Que vols dir? 155 00:07:16,032 --> 00:07:17,000 >> AUDIÈNCIA: [inaudible] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID Malan: OK, bé, per la qual depenent de l'entrada, 158 00:07:22,390 --> 00:07:23,470 vostè no ha de compilar cada vegada. 159 00:07:23,470 --> 00:07:24,990 I realment és tan simple com ho que-- 160 00:07:24,990 --> 00:07:26,990 és el punt de continuar per compilar el codi? 161 00:07:26,990 --> 00:07:29,480 Això és només un pas que és making-- això està requerint, 162 00:07:29,480 --> 00:07:31,900 Durant els últims setmanes, el doble dels passos 163 00:07:31,900 --> 00:07:33,820 com s'acaba d'executar el seu programa. 164 00:07:33,820 --> 00:07:36,940 Ha estat útil per veure que veure alguns missatges d'error i així successivament, 165 00:07:36,940 --> 00:07:38,720 però segueix sent només un pas molest. 166 00:07:38,720 --> 00:07:41,810 >> I així, els programadors es van adonar amb el temps, per què no ho fem 167 00:07:41,810 --> 00:07:45,327 començar a escriure els idiomes que no ho fan necessitarà aquest pas bastant mecànic, 168 00:07:45,327 --> 00:07:47,160 de manera que amb prou feines pot escriure el seu codi i executar-lo. 169 00:07:47,160 --> 00:07:48,920 Però el que era el preu que vam veure que paguem 170 00:07:48,920 --> 00:07:50,910 última setmana, amb un exemple concret? 171 00:07:50,910 --> 00:07:51,650 Sí? 172 00:07:51,650 --> 00:07:52,370 >> Velocitat. 173 00:07:52,370 --> 00:07:54,690 Així [? el que és?] intèrprets una mica més lent, 174 00:07:54,690 --> 00:07:57,330 en aquest zeros i uns són agradable i ràpid per a un ordinador 175 00:07:57,330 --> 00:08:00,070 d'entendre, a causa de que la Intel CPU, o el que sigui, 176 00:08:00,070 --> 00:08:03,070 només entén el que està passant amb aquells patrons de bits. 177 00:08:03,070 --> 00:08:05,370 Mentre que un intèrpret és un programa que realment 178 00:08:05,370 --> 00:08:07,980 ha de llegir la font Ascii codi que vostè ha escrit, 179 00:08:07,980 --> 00:08:12,700 i la converteixen, per així dir-ho, o esbrinar com es converteix en última instància, 180 00:08:12,700 --> 00:08:13,525 de zeros i uns. 181 00:08:13,525 --> 00:08:15,650 Així que només es necessita una mica de mica d'un impacte en el rendiment. 182 00:08:15,650 --> 00:08:16,858 Així que és una mica d'un trade-off. 183 00:08:16,858 --> 00:08:21,570 Ara bé, si ho fem aquí, deixa seguir endavant i fer un exemple de la següent manera. 184 00:08:21,570 --> 00:08:26,610 Si vaig aquí, arxiu nou, vaig per guardar aquesta vegada és hello.php. 185 00:08:26,610 --> 00:08:31,450 I ara vaig a seguir endavant i dir: "print hola món" - 186 00:08:31,450 --> 00:08:35,130 i recordo que puc usar d'impressió, no ho faig d'utilitzar la impressió-F. I ara aquí, 187 00:08:35,130 --> 00:08:42,039 si ho faig de PHP de hello.php, em huh-- no semblen haver interpretat. 188 00:08:42,039 --> 00:08:43,412 Què vaig fer malament? 189 00:08:43,412 --> 00:08:44,710 >> AUDIÈNCIA: Les polseres en angle. 190 00:08:44,710 --> 00:08:47,015 >> DAVID Malan: Sí, vostè necessita que la part superior de l'angle suport cap amunt. 191 00:08:47,015 --> 00:08:49,390 Així que és una mica molest, però t'acostumes a ella ràpidament. 192 00:08:49,390 --> 00:08:53,500 Si he d'escriure codi PHP, I general haurà de dir-li al programa, 193 00:08:53,500 --> 00:08:56,950 o dir-li a l'intèrpret, hey PHP, aquí ve una mica de codi PHP. 194 00:08:56,950 --> 00:09:00,440 I a continuació, per si de cas, ho faria tancar aquesta no amb això, sinó 195 00:09:00,440 --> 00:09:03,740 amb angle de marca simplement pregunta suport, de manera que ara aquí baix, 196 00:09:03,740 --> 00:09:06,840 si em quedo això una altra vegada, ara Em surt el resultat desitjat. 197 00:09:06,840 --> 00:09:09,820 >> Ara anem a fer una lleugera optimització, només perquè ho has vist abans. 198 00:09:09,820 --> 00:09:14,040 Això és una mica molest que em ha d'executar PHP espai hello.php, 199 00:09:14,040 --> 00:09:16,060 perquè en el passat I podria simplement escriure slash dot 200 00:09:16,060 --> 00:09:17,560 nom del programa, el qual és una espècie d'agradable. 201 00:09:17,560 --> 00:09:19,420 És una espècie d'una millor experiència d'usuari. 202 00:09:19,420 --> 00:09:24,160 >> Així que resulta que vostè pot fer això en PHP amb el I following-- 203 00:09:24,160 --> 00:09:28,780 pot utilitzar aquesta força críptica encantament a la part superior aquí, 204 00:09:28,780 --> 00:09:31,740 que generalment es diu un shebang, mitjançant el qual es tracta d'un símbol fort, 205 00:09:31,740 --> 00:09:34,270 per dir-ho així, això és una explosió o un signe d'exclamació. 206 00:09:34,270 --> 00:09:38,490 I això ara és la ruta d'accés a un programa en un típic sistema Linux que 207 00:09:38,490 --> 00:09:41,500 es diu medi ambient, o env. 208 00:09:41,500 --> 00:09:43,920 I això line-- llarga història línia short-- 1 just 209 00:09:43,920 --> 00:09:48,710 diu, hey equip, trobar el PHP intèrpret per a mi en el medi ambient, 210 00:09:48,710 --> 00:09:50,610 trobar en la seva memòria, per així dir-ho. 211 00:09:50,610 --> 00:09:54,130 >> I el que és agradable ara, es que si vaig per aquí, 212 00:09:54,130 --> 00:09:57,750 Jo puc fer slash dot hola php punt, o-- hmm. 213 00:09:57,750 --> 00:09:59,000 Permís denegat. 214 00:09:59,000 --> 00:10:02,350 Bé, veuràs encara més d'aquesta amb el problema d'establir 07:00, si 215 00:10:02,350 --> 00:10:04,060 tenir no ja amb els permisos. 216 00:10:04,060 --> 00:10:06,510 Resulta que necessito per executar aquesta comanda 217 00:10:06,510 --> 00:10:10,779 anomenat [? chamod?] per al canvi mode-- un plus x hello.php. 218 00:10:10,779 --> 00:10:13,820 Necessito [inaudible] aquest addicional pas que està dient al meu equip, 219 00:10:13,820 --> 00:10:16,400 fer executable hello.php. 220 00:10:16,400 --> 00:10:21,310 I ara veure el happens-- dot slash hello.php, simplement s'executa. 221 00:10:21,310 --> 00:10:23,310 Jo no necessito especificar l'intèrpret més. 222 00:10:23,310 --> 00:10:26,680 I puc fer-ho encara més bonica, tot i així, si puc canviar el nom d'aquesta cosa. 223 00:10:26,680 --> 00:10:30,570 Si em mut hello.php només Hello-- ho noten en la part superior esquerra, 224 00:10:30,570 --> 00:10:32,860 El nom del programa és de fet ara només Hola. 225 00:10:32,860 --> 00:10:37,300 Ara puc fer que es vegi com un programa en C, tot i que està escrit en PHP-- 226 00:10:37,300 --> 00:10:39,210 o francament qualsevol nombre d'altres idiomes. 227 00:10:39,210 --> 00:10:41,480 >> Així millora marginal, cap diferència funcional. 228 00:10:41,480 --> 00:10:44,460 Però és només una mica de curiositat ara, perquè vostè pugui escriure programes 229 00:10:44,460 --> 00:10:48,989 en qualsevol idioma, i l'usuari no ho fa ha de saber o tenir cura del que són. 230 00:10:48,989 --> 00:10:51,030 Bé, donem una ullada a una més exemple convincent ara 231 00:10:51,030 --> 00:10:52,850 que van assotar per avançat. 232 00:10:52,850 --> 00:10:54,955 I això es diu quote.php. 233 00:10:54,955 --> 00:10:56,740 I està disponible en línia. 234 00:10:56,740 --> 00:11:00,299 I es va adonar que és bastant short-- però és un programa de línia de comandes que és 235 00:11:00,299 --> 00:11:02,840 anar a buscar preus de les accions per a mi, el que és en realitat va 236 00:11:02,840 --> 00:11:04,230 ser afí al problema establert set. 237 00:11:04,230 --> 00:11:05,396 >> Així que anem a veure el que estic fent. 238 00:11:05,396 --> 00:11:08,640 A la part superior Tinc la obert brida signe d'interrogació PHP. 239 00:11:08,640 --> 00:11:13,372 Llavors jo tinc aquesta línia, amb el que sóc que requereix un arxiu anomenat functions.php-- 240 00:11:13,372 --> 00:11:15,080 veurem més sobre això en una mica, 241 00:11:15,080 --> 00:11:17,340 però això és com C de versió d'aguda inclouen, 242 00:11:17,340 --> 00:11:19,090 on vols anar incloure un altre arxiu. 243 00:11:19,090 --> 00:11:23,720 PHP crida requereix, encara que També té un include funció. 244 00:11:23,720 --> 00:11:26,861 I resulta que és function.php només una cosa que va escriure abans de la classe. 245 00:11:26,861 --> 00:11:29,860 El vaig posar en el mateix directori, perquè Volia factoritzar algun codi 246 00:11:29,860 --> 00:11:31,800 que el que es vol utilitzar en altres llocs. 247 00:11:31,800 --> 00:11:34,560 >> Mentrestant, vostè pot probablement inferir el que està passant aquí. 248 00:11:34,560 --> 00:11:39,200 Això és una mica diferent de C-- però el que vull dir amb el seu ús apropiat? 249 00:11:39,200 --> 00:11:41,180 Traduir aquesta més tècnic. 250 00:11:41,180 --> 00:11:45,950 En quines circumstàncies són jo sortir del programa, o de sortir? 251 00:11:45,950 --> 00:11:47,074 Sí? 252 00:11:47,074 --> 00:11:47,990 >> AUDIÈNCIA: Quan vostè no té dos arguments de la línia d'ordres. 253 00:11:47,990 --> 00:11:49,480 >> DAVID Malan: Quan no tinc per ordenar els arguments de línia. 254 00:11:49,480 --> 00:11:52,396 I recorda que un dels arguments és en si mateix el nom del programa. 255 00:11:52,396 --> 00:11:55,340 I el segon serà una altra paraula que escric després de la sol·licitud. 256 00:11:55,340 --> 00:11:57,460 Així que igual que C, aquesta és la meva manera de comprovar, 257 00:11:57,460 --> 00:12:00,022 cooperar l'usuari i executar el programa com era la meva intenció? 258 00:12:00,022 --> 00:12:01,730 Ara, hi ha alguna cosa una mica diferent 259 00:12:01,730 --> 00:12:04,020 amb C-- primer de tot el que tenir aquesta mostra de dòlar, 260 00:12:04,020 --> 00:12:07,710 i el que $ 1 signar denotar en PHP? 261 00:12:07,710 --> 00:12:08,440 Només una variable. 262 00:12:08,440 --> 00:12:11,731 Això és tot-- simplement una variable seguida de el que vulguis en realitat cridar-ho. 263 00:12:11,731 --> 00:12:14,000 Observi que hi ha alguna cosa que falta del meu programa PHP, 264 00:12:14,000 --> 00:12:18,210 de la mateixa manera que havia desaparegut el passat setmana, enfront de C, que és el que? 265 00:12:18,210 --> 00:12:21,620 >> A tipus, però també alguna cosa més. 266 00:12:21,620 --> 00:12:26,409 No hi ha alguna cosa function-- funció principal. 267 00:12:26,409 --> 00:12:27,450 No hi ha funció principal. 268 00:12:27,450 --> 00:12:29,680 Vostè acaba de començar a escriure el seu codi sense tenir 269 00:12:29,680 --> 00:12:32,790 de preocupar bastant arbitrària convenció de nomenar algun incompliment 270 00:12:32,790 --> 00:12:33,880 principal funció. 271 00:12:33,880 --> 00:12:36,720 Així arg C és realment una variable global 272 00:12:36,720 --> 00:12:39,049 que l'intèrpret posa a disposició de mi. 273 00:12:39,049 --> 00:12:40,090 Ara, això és interessant. 274 00:12:40,090 --> 00:12:41,140 Així que busqui coses. 275 00:12:41,140 --> 00:12:43,370 Signe de dòlar de valors és a la a l'esquerra, que és el meu variable. 276 00:12:43,370 --> 00:12:45,120 A la part dreta, hi ha pel que sembla 277 00:12:45,120 --> 00:12:50,270 una funció en PHP crida de recerca que Estic passant la meva última línia d'ordres 278 00:12:50,270 --> 00:12:51,902 argument A-- qualsevol que sigui la paraula és. 279 00:12:51,902 --> 00:12:53,610 I veurem com això funciona en un moment. 280 00:12:53,610 --> 00:12:55,380 >> I després, finalment, estic informar el preu. 281 00:12:55,380 --> 00:12:58,650 Estic imprimint un sol participació en tal i tal. 282 00:12:58,650 --> 00:13:02,082 I recordi, aquest és el forma en PHP-- manera en PHP-- 283 00:13:02,082 --> 00:13:04,290 en el qual no has de fer el signe del dòlar S més. 284 00:13:04,290 --> 00:13:06,782 Vostè només pot usar claus i connecti d'alguna variable. 285 00:13:06,782 --> 00:13:09,240 Vostè no ha de preocupar de usant printf de la mateixa manera. 286 00:13:09,240 --> 00:13:13,530 >> I com un a part, quan es posa una variable dins de cometes dobles com aquest, 287 00:13:13,530 --> 00:13:17,370 utilitzeu una tècnica de fantasia anomenat interpolació de variables. 288 00:13:17,370 --> 00:13:20,380 Només vol dir connectar la variable aquí. 289 00:13:20,380 --> 00:13:23,760 I com un a part, alguns de vostès que vénen d'altres fons de programació, 290 00:13:23,760 --> 00:13:26,960 vostè no pot utilitzar cometes simples al voltant de les cordes per fer això. 291 00:13:26,960 --> 00:13:30,290 Ha d'utilitzar cometes dobles per interpolació de variables per treballar. 292 00:13:30,290 --> 00:13:32,740 Altrament et literalment veure aquestes claus. 293 00:13:32,740 --> 00:13:34,500 >> Així que, finalment, seguirem endavant i executar això. 294 00:13:34,500 --> 00:13:36,690 Vull deixar el meu terminal una mica més gran. 295 00:13:36,690 --> 00:13:41,940 Déjame anar endavant i corro dins del meu directori de cotització. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? cotització?] dot cotització PHP PHP, 297 00:13:46,950 --> 00:13:50,290 i jo vaig a buscar alguna cosa com GOOG, que és el seu símbol, 298 00:13:50,290 --> 00:13:55,510 i una acció del seu nou nom, Alfabet Inc, un cost de $ 717, a partir d'avui. 299 00:13:55,510 --> 00:13:58,680 Molt bé, si volem executar aquest nou, ningú 300 00:13:58,680 --> 00:14:02,600 tenir un altre tauler de cotitzacions volen mirar cap amunt? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft crec que és aquest, MSFT-- 53 $. 302 00:14:06,770 --> 00:14:09,720 Crec que Yahoo és potser això. 303 00:14:09,720 --> 00:14:12,130 I és que Facebook. 304 00:14:12,130 --> 00:14:13,740 >> Llavors, què és aquest programa fent? 305 00:14:13,740 --> 00:14:16,306 La màgia sembla estar incrustat en que la funció de cerca. 306 00:14:16,306 --> 00:14:17,430 Així que anem a fer una ullada ràpida. 307 00:14:17,430 --> 00:14:21,815 >> Resulta que no ve amb PHP, està en functions.php. 308 00:14:21,815 --> 00:14:23,690 I no anem a anar a través de això en gran detall, 309 00:14:23,690 --> 00:14:28,040 notar la paraula clau aquí és que en la línia 6 de functions.php-- 310 00:14:28,040 --> 00:14:29,440 Jo, literalment, dic funció. 311 00:14:29,440 --> 00:14:31,050 Puc especificar el nom de la meva funció. 312 00:14:31,050 --> 00:14:34,330 Llavors puc especificar cap arguments o paràmetres, 313 00:14:34,330 --> 00:14:36,480 Vull aquesta funció a take-- cap tipus. 314 00:14:36,480 --> 00:14:37,580 I després posar-ho en pràctica. 315 00:14:37,580 --> 00:14:39,240 >> I vaig a agito la meva mà en la implementació, 316 00:14:39,240 --> 00:14:42,115 ja que està just bastant avançada ara, però veurem de nou en realitat 317 00:14:42,115 --> 00:14:44,700 en una setmana al problema plantejat 07:00. 318 00:14:44,700 --> 00:14:47,490 Però puc netejar això, també. 319 00:14:47,490 --> 00:14:49,590 També vaig incloure en el codi d'avui una versió 320 00:14:49,590 --> 00:14:52,340 de la cita, que no té arxiu PHP punt. 321 00:14:52,340 --> 00:14:57,270 Perquè el que és, presumiblement, al part superior del programa anomenat simplement citar? 322 00:14:57,270 --> 00:15:00,140 Que l'anomenat shebang-- la encantament bastant críptica 323 00:15:00,140 --> 00:15:04,590 que diu trobar PHP i després executar al meu codi aquí. 324 00:15:04,590 --> 00:15:07,360 >> Molt bé, així que porta nosaltres on ho vam deixar 325 00:15:07,360 --> 00:15:09,560 última temps-- encara que amb alguns exemples més avançats. 326 00:15:09,560 --> 00:15:13,980 Per a qualsevol dubte fins al moment sobre PHP o el que estem fent? 327 00:15:13,980 --> 00:15:15,570 No-- bé. 328 00:15:15,570 --> 00:15:16,180 Sí? 329 00:15:16,180 --> 00:15:19,610 >> AUDIÈNCIA: Dins de la Arxius HTML, fan usted-- 330 00:15:19,610 --> 00:15:22,226 [? Oi?] [? simplement dir-?] 1 [inaudible] arxiu PHP? 331 00:15:22,226 --> 00:15:23,350 DAVID Malan: Bona pregunta. 332 00:15:23,350 --> 00:15:26,070 En un context web, que estem literalment a punt de transició a, 333 00:15:26,070 --> 00:15:28,028 no utilitza l'anomenada tinglado a la part superior, 334 00:15:28,028 --> 00:15:31,980 perquè el server-- web sovint una programa anomenat Apache o Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server o qualsevol nombre d'un altre programari de servidor web, 336 00:15:37,470 --> 00:15:40,636 Sap que quan veu un arxiu PHP punt, que 337 00:15:40,636 --> 00:15:42,010 ha d'executar l'intèrpret en ella. 338 00:15:42,010 --> 00:15:43,468 No es veu en aquesta primera línia. 339 00:15:43,468 --> 00:15:45,580 Així que aquest primer truc línia és només quan estàs 340 00:15:45,580 --> 00:15:48,330 línia d'ordres escrivint programs-- que no farem molt sovint, 341 00:15:48,330 --> 00:15:52,510 però és la nostra forma de pont els nostres exemples C a ara la nostra PHP. 342 00:15:52,510 --> 00:16:00,680 >> Així que anem a efecte Bridge Aquesta món Del món de la línia d'ordres al web 343 00:16:00,680 --> 00:16:02,230 fent el següent. 344 00:16:02,230 --> 00:16:05,090 Déjame anar per davant i dibuixar aquí només per un moment. 345 00:16:05,090 --> 00:16:09,940 Així que si tenim un servidor web, o millor dit, si tenim el meu portàtil per aquí, 346 00:16:09,940 --> 00:16:11,280 que vaig a dibuixar així. 347 00:16:11,280 --> 00:16:14,250 I aquí tenim el Internet en alguna forma. 348 00:16:14,250 --> 00:16:18,210 I després aquí, tenim un servidor en un building-- 349 00:16:18,210 --> 00:16:20,760 així és com l'internet works-- i aquí 350 00:16:20,760 --> 00:16:23,120 és un servidor amb algunes llums potser. 351 00:16:23,120 --> 00:16:27,530 El que realment està passant entre aquestes dues connexions? 352 00:16:27,530 --> 00:16:29,240 >> Així que en aquest edifici és un servidor web. 353 00:16:29,240 --> 00:16:31,420 Això és només un ordinador que s'està executant alguna operació 354 00:16:31,420 --> 00:16:34,561 system-- potser el programari lliure anomenat Apache, que CS50 IDE està en marxa. 355 00:16:34,561 --> 00:16:36,310 Així que en realitat es pot pensar en aquest edifici 356 00:16:36,310 --> 00:16:38,579 com a l'edifici que s'emmagatzema CSt0 IDE. 357 00:16:38,579 --> 00:16:40,870 Aquí és on tots vostès tenen comptes, on tots vostès 358 00:16:40,870 --> 00:16:43,130 tenir el seu propi servidor web córrer, tots vostès 359 00:16:43,130 --> 00:16:45,730 tenir les seves pròpies adreces URL úniques, quan vam començar a discutir, 360 00:16:45,730 --> 00:16:47,280 i veuràs més en P. estableix sis. 361 00:16:47,280 --> 00:16:49,450 >> Aquí està el meu portàtil en algun lloc una altra cosa a Internet. 362 00:16:49,450 --> 00:16:54,550 I així, quan visito un URL que pertany a mi, que el tràfic d'Internet va 363 00:16:54,550 --> 00:16:58,360 al servidor, el servidor de rebre una HTTP request-- 364 00:16:58,360 --> 00:17:02,900 com arribar index.html i és responent a aquesta pàgina web. 365 00:17:02,900 --> 00:17:04,280 Així que aquest és el paradigma general. 366 00:17:04,280 --> 00:17:07,089 Mentre que tot el que fins fins ara avui en dia, tot 367 00:17:07,089 --> 00:17:09,660 que estava passant només en el confins d'aquest edifici. 368 00:17:09,660 --> 00:17:12,910 Jo estava usant el meu portàtil, però Em vaig connectar amb CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 de manera que tots els programes que s'executen estava dins d'aquest servidor, si. 370 00:17:17,369 --> 00:17:22,660 >> Però ara, anem a començar la reutilització de PHP escriure alguns programes reals que 371 00:17:22,660 --> 00:17:24,230 són servits per un servidor web. 372 00:17:24,230 --> 00:17:30,320 I per fer això, em vaig a anar en un munt d'exemples 373 00:17:30,320 --> 00:17:33,710 d'introduir aquesta idea aquí. 374 00:17:33,710 --> 00:17:38,500 Així que això és una espècie d'una forma elegant de que descriu un paradigma de programació. 375 00:17:38,500 --> 00:17:41,540 >> I de fet, en sortir CS50 o treballar en projectes finals, 376 00:17:41,540 --> 00:17:43,520 o prendre alguns segueixen a classe, començaràs 377 00:17:43,520 --> 00:17:45,740 al veure que el món-- especialment després d'haver crescut 378 00:17:45,740 --> 00:17:48,300 amb llenguatges com C que són súper sota level-- 379 00:17:48,300 --> 00:17:51,290 s'adonen que no hi ha millor formes de programari d'escriptura. 380 00:17:51,290 --> 00:17:53,290 Hi ha certa patrons que vostè pot seguir, 381 00:17:53,290 --> 00:17:57,640 certes formes d'organitzar els seus arxius i formes de nomenar a les seves funcions, 382 00:17:57,640 --> 00:18:00,300 de manera que conte llarg, el món ha arribat 383 00:18:00,300 --> 00:18:04,340 amb un munt de sigles i els noms de les formes de programació. 384 00:18:04,340 --> 00:18:06,260 Aquests són només tècniques que podria utilitzar. 385 00:18:06,260 --> 00:18:09,660 >> I un d'ells es diu MVC, per al Model Vista Controlador. 386 00:18:09,660 --> 00:18:12,270 I això és només, per Ara, una excessivament complicat 387 00:18:12,270 --> 00:18:18,960 manera de dir com s'ha de dissenyar un lloc web basat en PHP, en el nostre cas. 388 00:18:18,960 --> 00:18:22,140 Com organitzar els fitxers, Com organitzar la seva lògica, 389 00:18:22,140 --> 00:18:26,220 d'una manera que fa que sigui més fàcil escriure pàgines web més complicades? 390 00:18:26,220 --> 00:18:28,550 I, en efecte, ens dóna gust arribar amb p-establert set. 391 00:18:28,550 --> 00:18:32,020 >> Així que en el món de la MVC, vas a veure que el nostre codi pot general 392 00:18:32,020 --> 00:18:38,290 caracteritzar-se com sigui codi del model, o codi del controlador, o la vista de codi. 393 00:18:38,290 --> 00:18:40,200 I jo vaig a simplificar en excés com follows-- 394 00:18:40,200 --> 00:18:42,074 el controlador és el cervell del seu programa, 395 00:18:42,074 --> 00:18:44,100 que és on tot el lògica interessant succeeix. 396 00:18:44,100 --> 00:18:46,110 Així que tot el que he estat escrit fins ara a la classe, 397 00:18:46,110 --> 00:18:48,210 és una espècie de controlador code-- està controlant 398 00:18:48,210 --> 00:18:50,585 el seu programa, els seus bucles, la seva condicions, les seves funcions 399 00:18:50,585 --> 00:18:52,100 i variables i tot això. 400 00:18:52,100 --> 00:18:56,160 >> Vistes, ara, van a ser una mica més evident en el món de la web. 401 00:18:56,160 --> 00:18:59,360 Un punt de vista és l'estètica del seu lloc web. 402 00:18:59,360 --> 00:19:04,080 És el que l'usuari sees-- les imatges, les taules HTML, les etiquetes HTML, i tots 403 00:19:04,080 --> 00:19:08,220 que, tota l'estètica esponjós coses que no és tan difícil d'escriure, 404 00:19:08,220 --> 00:19:11,380 però és just el que està generant, és el punt de vista de la trucada, l'estètica. 405 00:19:11,380 --> 00:19:13,880 I el model, en última instància, va ser stuff-- base de dades que 406 00:19:13,880 --> 00:19:16,510 començarem a bussejar en tot com més aquest dimecres. 407 00:19:16,510 --> 00:19:19,740 Així controlador és la lògica, vista és la matèria estètica, 408 00:19:19,740 --> 00:19:23,500 i el model serà on emmagatzemem les nostres dades reals. 409 00:19:23,500 --> 00:19:26,410 >> Així que donem una ullada a això més concretament amb el següent exemple. 410 00:19:26,410 --> 00:19:34,700 Vaig a entrar en el meu directori aquí de la font d'avui code-- tots els quals 411 00:19:34,700 --> 00:19:35,770 està disponible en línia. 412 00:19:35,770 --> 00:19:37,800 I jo vaig a anar a la versió zero. 413 00:19:37,800 --> 00:19:41,500 I aquí és-- anem a anomenar el versió zero de la pàgina web de l'CS50. 414 00:19:41,500 --> 00:19:43,010 No hi ha molt aquí en absolut. 415 00:19:43,010 --> 00:19:46,810 És una pàgina web molt simple que és probablement usant el HTML tags-- només 416 00:19:46,810 --> 00:19:48,970 endevinar per exemples anteriors? 417 00:19:48,970 --> 00:19:49,890 >> Què és això? 418 00:19:49,890 --> 00:19:53,920 H1-- probablement per aquest gran negreta títol, que el logotip en la superior, CS50. 419 00:19:53,920 --> 00:19:55,080 ¿I què més està en joc? 420 00:19:55,080 --> 00:19:55,799 Sí? 421 00:19:55,799 --> 00:19:56,840 AUDIÈNCIA: Llista sense endreçar. 422 00:19:56,840 --> 00:19:59,990 DAVID Malan: pel·lícules-- desordenada de manera que el Etiqueta de UL i potser un parell d'etiquetes LI. 423 00:19:59,990 --> 00:20:01,840 I si no te'n recordes d'ells, honestament no importa. 424 00:20:01,840 --> 00:20:04,170 Aquests són una mena de suau i esponjosa detalls d'implementació d'HTML 425 00:20:04,170 --> 00:20:06,378 que es mira ràpidament i que està de tornada en el seu camí. 426 00:20:06,378 --> 00:20:10,040 Ens centrarem més en la programació idees que són les peces més sucoses. 427 00:20:10,040 --> 00:20:12,890 >> Així que anem a fer un ràpid mirar el HTML-- i de fet 428 00:20:12,890 --> 00:20:16,880 si obro la font de la vista aquí, yup, Això és exactament el que està passant aquí. 429 00:20:16,880 --> 00:20:18,440 Hi ha una etiqueta de UL. 430 00:20:18,440 --> 00:20:20,630 Niat dins d'això és que les etiquetes LI. 431 00:20:20,630 --> 00:20:24,470 I llavors vaig prendre prestat de la URL del pla d'estudis real aquí. 432 00:20:24,470 --> 00:20:27,570 >> I després en el lectures.php és aparentment 433 00:20:27,570 --> 00:20:31,640 una altra pàgina generat dinàmicament això va a tenir, anem a veure- ah, 434 00:20:31,640 --> 00:20:33,170 les dues primeres setmanes de la conferència. 435 00:20:33,170 --> 00:20:36,600 Així que la setmana zero i la setmana un, anem a mira això- si veig font de la pàgina, 436 00:20:36,600 --> 00:20:38,120 també és súper simple. 437 00:20:38,120 --> 00:20:42,430 Aquests estan donant lloc a dues pàgines week0.php trucada, i week1.php. 438 00:20:42,430 --> 00:20:44,040 Així que considera ara el que està succeint. 439 00:20:44,040 --> 00:20:50,630 >> Quan faig clic a week0.php, el meu portàtil està fent una sol·licitud de week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 El servidor web, àlies, CS50 IDE, està rebent el sobre virtual. 442 00:20:58,110 --> 00:21:01,040 És veure un missatge com, obtenir week0.php. 443 00:21:01,040 --> 00:21:05,060 Després hi interpretant l'arxiu, la part superior a baix, d'esquerra a dreta- l'arxiu 444 00:21:05,060 --> 00:21:07,720 anomenada week0.php-- i escopint els resultats. 445 00:21:07,720 --> 00:21:10,510 Així que dins d'aquest arxiu, week0.php, ha de ser 446 00:21:10,510 --> 00:21:15,410 la lògica del controlador que està generant aquest codi HTML, i aviat veurem això. 447 00:21:15,410 --> 00:21:19,340 >> Però per ara, permetin-me clic a la setmana zero, i ara tenim els dimecres i divendres, 448 00:21:19,340 --> 00:21:25,260 i ara tenim les diapositives lentament de setmana zero. 449 00:21:25,260 --> 00:21:27,400 I es pot recordar això des de camí de tornada quan. 450 00:21:27,400 --> 00:21:29,340 Així que això és tot el que aquest lloc web està fent. 451 00:21:29,340 --> 00:21:31,120 >> Així que considerarem com es fa això. 452 00:21:31,120 --> 00:21:34,290 Vaig a tornar a la codi font aquí, a CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 i vaig a obrir index.php. 454 00:21:36,660 --> 00:21:38,910 A la part superior d'aquest arxiu és un munt de comentaris. 455 00:21:38,910 --> 00:21:43,000 I després, al mig d'aquest arxiu, Resulta, no és codi PHP que sigui. 456 00:21:43,000 --> 00:21:47,380 Perquè si vostè no té cap dels etiquetes signe d'interrogació PHP suport obert, 457 00:21:47,380 --> 00:21:49,180 vostè és lliure de posar només HTML. 458 00:21:49,180 --> 00:21:51,480 >> Perquè el que el PHP intèrpret se suposa que ha de fer, 459 00:21:51,480 --> 00:21:53,938 és quan es llegeix aquest file-- dalt a baix, d'esquerra a dreta- 460 00:21:53,938 --> 00:21:59,100 només interpreta el codi que veu entre els parèntesis angulars qüestionen marca. 461 00:21:59,100 --> 00:22:02,380 I qualsevol altra cosa que no és així reconèixer com PHP, només escup. 462 00:22:02,380 --> 00:22:05,080 I HTML està entre les coses s'acaba d'escopir. 463 00:22:05,080 --> 00:22:09,090 >> Així que aquest arxiu pot tenir ha cridat index.html, 464 00:22:09,090 --> 00:22:11,690 però estic nomenant tot dot PHP com un trampolí. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- similar decebedor, és només una mica d'HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, de manera similar només algunes HTML. 467 00:22:19,840 --> 00:22:22,300 >> Però ara anem a posar al barret de l'enginyeria proverbial, 468 00:22:22,300 --> 00:22:24,400 i considerar com podem millorar això. 469 00:22:24,400 --> 00:22:28,541 No és difícil de fer això, però jo tipus de degenerat en copiar i enganxar. 470 00:22:28,541 --> 00:22:31,540 I de fet, si faig la setmana dues, Sé el que estic probablement va a fer? 471 00:22:31,540 --> 00:22:34,940 Vaig a anar a week1.php, estic posarà en relleu tot. 472 00:22:34,940 --> 00:22:39,110 Vaig a copiar, enganxar en un nou arxiu anomenat week2.php, 473 00:22:39,110 --> 00:22:42,440 ajustar algunes adreces URL, i estar en el meu camí. 474 00:22:42,440 --> 00:22:45,240 >> Així que en base al que hem vist en C ja, 475 00:22:45,240 --> 00:22:46,860 aquest no se sent bé, és d'esperar. 476 00:22:46,860 --> 00:22:49,610 Copiar, enganxar rarament la solució correcta. 477 00:22:49,610 --> 00:22:51,429 Llavors, què podem començar de fer per millorar això? 478 00:22:51,429 --> 00:22:53,345 On són les oportunitats per a un millor disseny? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> De moment tinc l'oportunitat de setmana 8, que va 481 00:22:58,760 --> 00:23:00,910 per ser realment molest si vull canviar 482 00:23:00,910 --> 00:23:03,930 la font de cada un les meves pàgines, o si vull 483 00:23:03,930 --> 00:23:06,522 per canviar l'estructura de la distribució. 484 00:23:06,522 --> 00:23:08,396 Llavors, on està l'oportunitat per a un millor disseny? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Bé, anem a considerar el que és compartida a través de tots aquests arxius. 487 00:23:15,160 --> 00:23:21,696 >> Heus aquí la setmana un, aquí està setmana zero, aquí hi lectures.php, 488 00:23:21,696 --> 00:23:25,790 aquí està index.php-- el que és el mateix i El que és diferent, en termes generals, 489 00:23:25,790 --> 00:23:26,760 en cada un d'aquests arxius? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Sí? 492 00:23:32,060 --> 00:23:34,560 >> AUDIÈNCIA: [inaudible] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID Malan: OK, bo. 495 00:23:42,160 --> 00:23:46,115 Així que hi ha un patró, sens dubte, pel qual cada vegada que trio conferència que, 496 00:23:46,115 --> 00:23:48,250 Que hauria d'estar generant un pàgina d'aspecte molt similar. 497 00:23:48,250 --> 00:23:50,375 I així potser pugui aprofitar el fet que en realitat, 498 00:23:50,375 --> 00:23:53,060 deliberadament numèricament indexats nostra lectures-- 499 00:23:53,060 --> 00:23:55,290 si puc posar encara més paraules en la seva resposta. 500 00:23:55,290 --> 00:23:59,984 I el que és l'única cosa que, de veritat, això està canviant entre setmana un-- 501 00:23:59,984 --> 00:24:02,400 i m'ho dius a mi desplaceu-vos cap avall per la qual cosa és més o menys en el mateix lloc-- 502 00:24:02,400 --> 00:24:05,480 així que aquí hi ha setmanes zero, més o menys en la part superior. 503 00:24:05,480 --> 00:24:12,370 Aquí està la primera setmana, setmana zero, la primera setmana, la setmana zero. 504 00:24:12,370 --> 00:24:14,370 OK, literalment, si vostè sap hi ha un programa que sigui, 505 00:24:14,370 --> 00:24:16,286 això és ara com un joc de correspondències patró. 506 00:24:16,286 --> 00:24:17,200 Llavors, ¿quina és la diferència? 507 00:24:17,200 --> 00:24:18,765 Sí? 508 00:24:18,765 --> 00:24:19,777 >> AUDIÈNCIA: [inaudible] 509 00:24:19,777 --> 00:24:22,360 DAVID Malan: Bé, de manera que el títol està canviant, molt lleugerament. 510 00:24:22,360 --> 00:24:24,010 Zero va, per descomptat, a un. 511 00:24:24,010 --> 00:24:25,570 El mateix està succeint en l'etiqueta H1. 512 00:24:25,570 --> 00:24:28,790 I ni bé ho veiem amb la mateixa facilitat, pel fet que les URL són una mica llarg. 513 00:24:28,790 --> 00:24:30,670 Però aquestes URL estan canviant lleugerament. 514 00:24:30,670 --> 00:24:34,490 >> Però el que no canvia és, m'atreveixo dir, la major part dels continguts de la page-- 515 00:24:34,490 --> 00:24:38,530 l'etiqueta HTML és el mateix, el cap és el mateix, el títol és gairebé el mateix, 516 00:24:38,530 --> 00:24:40,659 el cos és la mateixa, i gairebé tota la resta 517 00:24:40,659 --> 00:24:42,450 que és el mateix a excepció de aquests petits retocs. 518 00:24:42,450 --> 00:24:45,310 Llavors, com podem anar sobre factoring una mica d'això a terme? 519 00:24:45,310 --> 00:24:48,740 >> Doncs m'ho dius a mi proposo exactament que en la propera versió. 520 00:24:48,740 --> 00:24:53,890 Així que aquí a la versió un, tinc l'exacte mateixos arxius, a més d'un parell dels altres. 521 00:24:53,890 --> 00:24:59,730 Heus aquí index.php-- i fins i tot si que mai has vist abans de PHP, 522 00:24:59,730 --> 00:25:05,511 ¿Què estic fent, probablement, per resoldre aquest problema-- basat en el que veus aquí? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Sí, és que un lleu compromís? 525 00:25:12,760 --> 00:25:13,450 No? 526 00:25:13,450 --> 00:25:16,020 Sí, seguir endavant. 527 00:25:16,020 --> 00:25:17,380 >> AUDIÈNCIA: [inaudible] 528 00:25:17,380 --> 00:25:18,380 >> DAVID Malan: Sí. 529 00:25:18,380 --> 00:25:20,380 >> AUDIÈNCIA: [inaudible] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID Malan: et necessito a parlar només una mica més fort. 532 00:25:28,669 --> 00:25:31,084 >> AUDIÈNCIA: [inaudible] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID Malan: OK, bo. 535 00:25:36,660 --> 00:25:38,620 I jo think-- era difícil d'escoltar usted-- però 536 00:25:38,620 --> 00:25:42,690 pensa en el que vols dir és que les etiquetes que eren comuns en la superior, 537 00:25:42,690 --> 00:25:47,710 i les etiquetes que eren comuns en el baix, ara han estat un factor fora, 538 00:25:47,710 --> 00:25:51,140 o relegat a quins arxius? 539 00:25:51,140 --> 00:25:53,476 Header.php i footer.php-- i anem 540 00:25:53,476 --> 00:25:55,600 fer alguns ajustaments per abordar la preocupació que acaba de 541 00:25:55,600 --> 00:25:59,370 plantejat sobre el canvi nombres, per exemple, si t'he sentit correctament. 542 00:25:59,370 --> 00:26:02,060 >> Però això sembla ser l'essència de la mateixa. 543 00:26:02,060 --> 00:26:04,820 Si hi havia una enorme quantitat de redundància en la part superior de la pàgina, 544 00:26:04,820 --> 00:26:06,736 i una enorme quantitat de redundància en la part inferior, 545 00:26:06,736 --> 00:26:09,280 anem a literalment a més destacat i tallar aquest contingut a terme, 546 00:26:09,280 --> 00:26:13,270 posar-lo en un file-- separat de la mateixa manera que la idea de la CSS, on un factor fora 547 00:26:13,270 --> 00:26:16,710 estètica molt similars, presentats en un arxiu PHP punt a part, 548 00:26:16,710 --> 00:26:20,340 utilitzeu la requereixen mechanism-- que és com incloent-hi sostingut que 549 00:26:20,340 --> 00:26:23,570 és essencialment com dir anar agafar el contingut de header.php, 550 00:26:23,570 --> 00:26:25,370 i copiar i enganxar aquí. 551 00:26:25,370 --> 00:26:29,490 >> Però el que això significa és que ara en index.php, tinc aquestes dues línies. 552 00:26:29,490 --> 00:26:32,130 En lectures.php, jo també tenir aquestes dues línies. 553 00:26:32,130 --> 00:26:35,230 En week0.php, jo també tenir aquestes dues línies. 554 00:26:35,230 --> 00:26:38,380 >> Així que ara, si vull canviar el títol de totes les meves pàgines, 555 00:26:38,380 --> 00:26:40,530 o vull canviar la estructura fonamental, 556 00:26:40,530 --> 00:26:44,380 Puc canviar ara en un sol lloc, o dues de capçalera i peu de pàgina places--, 557 00:26:44,380 --> 00:26:45,429 respectivament. 558 00:26:45,429 --> 00:26:47,970 Ara partida del codi que ha de buscar una mica més críptica, oi? 559 00:26:47,970 --> 00:26:53,590 Però si es pensa en el que la pàgina es doing-- si estic demanant week0.php, 560 00:26:53,590 --> 00:26:59,880 de la mateixa manera que en el dibuix més aquí-- quan se sol·licita week0.php, 561 00:26:59,880 --> 00:27:00,960 què vol dir això? 562 00:27:00,960 --> 00:27:04,410 >> Literalment, aquest arxiu és sol·licitada pel navegador. 563 00:27:04,410 --> 00:27:06,240 L'àlies web server-- 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- agafa aquest arxiu, week0.php, i llegeix 565 00:27:09,250 --> 00:27:10,780 es dalt a baix, d'esquerra a dreta. 566 00:27:10,780 --> 00:27:15,400 En la línia un, troba immediatament claudàtor obert signe d'interrogació PHP, requereixen 567 00:27:15,400 --> 00:27:17,872 encapçalat punt PHP, etc. el que l'intèrpret de PHP 568 00:27:17,872 --> 00:27:20,580 does-- que es construeix al web servidor, perquè preconfigurat 569 00:27:20,580 --> 00:27:24,580 per usted-- passa automàticament en header.php, copia el contingut, 570 00:27:24,580 --> 00:27:25,640 les pega aquí. 571 00:27:25,640 --> 00:27:28,790 >> Però llavors les trobades d'intèrpret signe d'interrogació prop del suport, 572 00:27:28,790 --> 00:27:30,320 de manera que tot es fa pensant. 573 00:27:30,320 --> 00:27:33,400 Ara que escup a cegues les línies del dos al set, 574 00:27:33,400 --> 00:27:35,240 perquè és només HTML pur. 575 00:27:35,240 --> 00:27:38,470 S'obté a la línia 8, i fa que mateixa màgia nou-- obrir l'arxiu, 576 00:27:38,470 --> 00:27:41,460 l'acaparament dels continguts, i exigint-los o pegant 577 00:27:41,460 --> 00:27:42,480 en aquest moment o no. 578 00:27:42,480 --> 00:27:44,210 >> Però jo només al·ludia a un error. 579 00:27:44,210 --> 00:27:48,610 Aquest és un pas parcial cap enrere, perquè si ens fixem en header.php, 580 00:27:48,610 --> 00:27:50,850 He espècie de tallar un cantó. 581 00:27:50,850 --> 00:27:56,250 Quina característica li dono fins a la fi per guanyar això millor disseny discutible? 582 00:27:56,250 --> 00:27:57,305 Sí? 583 00:27:57,305 --> 00:27:58,180 AUDIÈNCIA: [inaudible] 584 00:27:58,180 --> 00:28:00,570 DAVID Malan: Sí, tipus de tallar un cantó no trivial. 585 00:28:00,570 --> 00:28:04,489 Vostè ha assenyalat que el que estava canviant va ser el títol, el nombre en el títol, 586 00:28:04,489 --> 00:28:05,530 i el nombre en el H1. 587 00:28:05,530 --> 00:28:08,170 Així que la meva solució va ser, està bé, canviarem el nom de la pàgina, 588 00:28:08,170 --> 00:28:10,080 i no lluitar amb això cap problema. 589 00:28:10,080 --> 00:28:12,130 Així que això és un parcial de pas cap enrere amb seguretat. 590 00:28:12,130 --> 00:28:14,300 >> Però el que és digne de menció aquí és que el que he fet 591 00:28:14,300 --> 00:28:17,200 apareix com un factor d'una altra manera tota la cosa comuna. 592 00:28:17,200 --> 00:28:21,520 I en footer.php, noto que factorizada fora de tot això, encara que sigui menor, 593 00:28:21,520 --> 00:28:22,790 coses comunes. 594 00:28:22,790 --> 00:28:26,070 Així que he de d'alguna manera ara podran fer un pas més, i fixar 595 00:28:26,070 --> 00:28:27,160 que les qüestions de títol. 596 00:28:27,160 --> 00:28:28,180 Així que anem a fer això. 597 00:28:28,180 --> 00:28:35,060 >> Déjame anar a la meva segona versió aquí, que, de nou, té els mateixos arxius 598 00:28:35,060 --> 00:28:36,825 a excepció d'una nova addició. 599 00:28:36,825 --> 00:28:38,950 I és una mica més detallat, però veurem si ens 600 00:28:38,950 --> 00:28:40,550 pot esmicolar el que està passant aquí. 601 00:28:40,550 --> 00:28:45,370 Així que en lloc d'exigir header.php i footer.php, 602 00:28:45,370 --> 00:28:50,180 Sembla que estic només requereixen un file-- trucada, per descomptat, helpers.php. 603 00:28:50,180 --> 00:28:52,560 I permetin-me estipulo ara, el que hi ha dins de helpers.php 604 00:28:52,560 --> 00:28:55,330 és només un munt de funcions que em va escriure, igual que abans. 605 00:28:55,330 --> 00:28:57,550 Però el vaig trucar helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Ara, aparentment, en línia de tres i 10, estic 607 00:29:00,370 --> 00:29:02,840 trucar dues functions-- render capçalera, render peu de pàgina. 608 00:29:02,840 --> 00:29:05,040 Aquells no vénen amb PHP, vaig escriure aquells mi mateix. 609 00:29:05,040 --> 00:29:07,880 I jo els vaig posar en helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Ara, només hem vist aquesta sintaxi una vegada, i va ser molt breu. 611 00:29:11,210 --> 00:29:15,330 Però això és pel que sembla un argument per fer de capçalera, la funció. 612 00:29:15,330 --> 00:29:16,450 Per què ho sé? 613 00:29:16,450 --> 00:29:18,522 Bé aquí hi ha un tancament parin, vet aquí un parin oberta. 614 00:29:18,522 --> 00:29:21,230 I, per descomptat, igual que en C, qualsevol cosa entre els parèntesis 615 00:29:21,230 --> 00:29:23,350 és un input-- o argument de la funció. 616 00:29:23,350 --> 00:29:26,710 >> Quin és el tipus de dades d'aquest argument, basant-me en el que he destacat? 617 00:29:26,710 --> 00:29:30,820 Què fan els claudàtors indicar, sobre la base de la setmana passada? 618 00:29:30,820 --> 00:29:33,390 Sí, és una array-- específicament una matriu associativa. 619 00:29:33,390 --> 00:29:35,700 I aquesta sintaxi és cert és una mica estrany, 620 00:29:35,700 --> 00:29:38,860 però això és només passant en un parell de valors clau. 621 00:29:38,860 --> 00:29:43,530 La clau és, entre cometes títol, i el valor és CS50. 622 00:29:43,530 --> 00:29:46,220 >> Si haguéssim fet això en C, pot ser que en lloc 623 00:29:46,220 --> 00:29:49,400 mira més bé això, simplement entre cometes CS50-- 624 00:29:49,400 --> 00:29:52,460 o en realitat seria arrissat claus, o alguna cosa per l'estil en C, 625 00:29:52,460 --> 00:29:55,580 on la clau és zero, i el valor és CS50. 626 00:29:55,580 --> 00:29:59,840 Però, de nou, en PHP, encara que el sintaxi és, de nou, una mica estrany, 627 00:29:59,840 --> 00:30:02,860 que li permet passar de paraules en lloc de nombres 628 00:30:02,860 --> 00:30:05,120 associar tecles amb els valors. 629 00:30:05,120 --> 00:30:06,390 >> Llavors, què significa tot això? 630 00:30:06,390 --> 00:30:09,750 Si entro a helpers.php, donem una ullada a aquesta funció. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, en comptes renderHeader és la meva funció, 632 00:30:13,620 --> 00:30:16,220 i sé que perquè veig la paraula clau function aquí. 633 00:30:16,220 --> 00:30:19,450 Això és nou des C-- aparentment pren un argument anomenat data-- 634 00:30:19,450 --> 00:30:22,400 però podria haver cridat a aquest res, però el vaig trucar de dades, 635 00:30:22,400 --> 00:30:25,090 només per ser una mica clean-- i simplement prendre una conjectura, especialment 636 00:30:25,090 --> 00:30:28,173 si vostè ha programat en alguna altra alt nivell de llenguatge d'abans, una cosa 637 00:30:28,173 --> 00:30:29,820 per sobre de C, conceptualment. 638 00:30:29,820 --> 00:30:33,820 >> Què suport obert iguals claudàtor probablement significa? 639 00:30:33,820 --> 00:30:35,540 O què pot significar? 640 00:30:35,540 --> 00:30:39,660 No hem vist això en C. Sí? 641 00:30:39,660 --> 00:30:40,480 >> Una matriu buida. 642 00:30:40,480 --> 00:30:45,440 Específicament, això vol dir que si l'usuari no diu renderHeader 643 00:30:45,440 --> 00:30:49,340 amb un argument, encara vaig tenir una discussió trucada de dades, 644 00:30:49,340 --> 00:30:52,327 però el seu valor per defecte és serà una matriu buida. 645 00:30:52,327 --> 00:30:53,660 Així que és només un bonic conveniència. 646 00:30:53,660 --> 00:30:56,493 Jo no he de cridar en l'usuari, o dir que va utilitzar la meva funció equivocada. 647 00:30:56,493 --> 00:30:59,849 Jo només puc donar a l'usuari una forma predeterminada valor, si no sobretot importa. 648 00:30:59,849 --> 00:31:01,890 Ara aquesta funció, estic va a agitar les mans en. 649 00:31:01,890 --> 00:31:07,620 Però aquesta funció extracte permet que passem aquestes variables en les dades 650 00:31:07,620 --> 00:31:10,360 en header.php de la següent manera. 651 00:31:10,360 --> 00:31:13,100 I aquesta és l'última peça, Crec que, de la sintaxi funky. 652 00:31:13,100 --> 00:31:15,860 Aquí està la meva nova versió de header.php-- que 653 00:31:15,860 --> 00:31:20,140 solia dir, literalment, oberta títol suport CS50, i això va ser tot. 654 00:31:20,140 --> 00:31:21,766 I el mateix per l'H1. 655 00:31:21,766 --> 00:31:24,310 >> Ara, pel que sembla, diu alguna cosa bastant covard. 656 00:31:24,310 --> 00:31:28,030 I permetin-me simplificar aquest per un moment de la següent manera. 657 00:31:28,030 --> 00:31:31,020 Això és el que tinc canviat la meva títol de ser. 658 00:31:31,020 --> 00:31:35,140 No obstant això, s'està fent una mica lletja als suports permanentment oberts amb PHP, 659 00:31:35,140 --> 00:31:36,610 i aleshores utilitzar la funció d'impressió. 660 00:31:36,610 --> 00:31:40,810 Resulta que PHP té una taquigrafia notació per això, que és just 661 00:31:40,810 --> 00:31:45,050 un signe igual, que és tècnicament una funció anomenada ressò en lloc d'impressió, 662 00:31:45,050 --> 00:31:46,800 però és la mateixa cosa, amb eficàcia. 663 00:31:46,800 --> 00:31:48,440 >> Això només es veu millor. 664 00:31:48,440 --> 00:31:50,510 És només una sintàctica sucre, si es vol, 665 00:31:50,510 --> 00:31:52,260 això fa que el meu codi de mirar una mica millor. 666 00:31:52,260 --> 00:31:54,010 Però resulta, i anem a veure això de nou 667 00:31:54,010 --> 00:31:57,420 en poc temps, hem de trucar a aquest molestament funció a llarg flama 668 00:31:57,420 --> 00:32:00,582 HTML caràcters especials en PHP, perquè resulta que 669 00:32:00,582 --> 00:32:02,790 hi ha certs inputs que l'usuari podria donar-nos, 670 00:32:02,790 --> 00:32:05,160 o que els usuaris ens poden donar, que trencaran nostre lloc. 671 00:32:05,160 --> 00:32:07,035 Però anem a veure que el pròxim setmana amb JavaScript. 672 00:32:07,035 --> 00:32:10,740 Però, per ara, només sé que aquest arxiu, headers.php, simplement 673 00:32:10,740 --> 00:32:13,040 pren el títol que Vaig passar a, que fan 674 00:32:13,040 --> 00:32:17,380 assegurar-se que és segur per a ser injectada en un web pàgina, i ho escup com el meu títol 675 00:32:17,380 --> 00:32:18,640 i com el meu H1. 676 00:32:18,640 --> 00:32:24,440 Així que si entro en aquesta versió ara, notar que les conferències té el seu títol de nou, 677 00:32:24,440 --> 00:32:28,630 setmana zero té el seu títol de nou, i de fet, l'HTML estic generant 678 00:32:28,630 --> 00:32:32,110 és idèntic al que la meva primera versió era-- excepció del meu espai en blanc, 679 00:32:32,110 --> 00:32:35,150 perquè jo he començat a formatar el meu codi una mica diferent. 680 00:32:35,150 --> 00:32:38,082 Però he generat tot el codi que m'importa. 681 00:32:38,082 --> 00:32:39,790 Així que permetin-me fer una pausa per un moment i veure 682 00:32:39,790 --> 00:32:42,200 si hi ha alguna pregunta o confusió que he creat. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Molt bé, així que anem a torçar una mica més difícil aquí 685 00:32:48,150 --> 00:32:51,500 per veure si hi ha una oportunitat de millora. 686 00:32:51,500 --> 00:32:56,130 Helpers.php també tenia aquest funció, anomenada renderFooter. 687 00:32:56,130 --> 00:32:59,652 I el que és digne de menció sobre renderHeader, i renderFooter? 688 00:32:59,652 --> 00:33:02,610 I de nou, per als propòsits d'avui, saber que la funció extracte és només 689 00:33:02,610 --> 00:33:08,280 la meva manera de passar arguments en header.php i footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Ho sentim? 692 00:33:11,780 --> 00:33:13,056 >> AUDIÈNCIA: [inaudible] 693 00:33:13,056 --> 00:33:15,180 DAVID Malan: Sí, jo només van canviar la requereixen línia. 694 00:33:15,180 --> 00:33:19,410 Així que, literalment, he comès el pecat de copiar i enganxar, una vegada més. 695 00:33:19,410 --> 00:33:21,920 No és un nombre enorme de línies, però vénen en-- 696 00:33:21,920 --> 00:33:25,220 si estic copiant i enganxant tot només per canviar una petita paraula, 697 00:33:25,220 --> 00:33:28,610 i la petita paraula que assenyala Alan out és peu de pàgina aquí, davant de la capçalera aquí. 698 00:33:28,610 --> 00:33:30,670 En cas contrari, tot és idèntica, a excepció de, 699 00:33:30,670 --> 00:33:32,180 per descomptat, els noms de la funció. 700 00:33:32,180 --> 00:33:33,690 Llavors, què podríem fer millor? 701 00:33:33,690 --> 00:33:39,810 >> Doncs m'ho dius a mi obro aquesta versió aquí, pel que en helpers.php, 702 00:33:39,810 --> 00:33:42,300 ¿Per què no acaba d'obtenir un poc més intel·ligent sobre això? 703 00:33:42,300 --> 00:33:46,410 Escriure una mica més complicat codi, però en diuen render? 704 00:33:46,410 --> 00:33:48,470 Així que què he canviat fonamentalment? 705 00:33:48,470 --> 00:33:51,770 >> Es necessita un argument ara-- dos arguments, les dades encara. 706 00:33:51,770 --> 00:33:54,444 I llavors, què és el primer nom probablement s'utilitza per, 707 00:33:54,444 --> 00:33:55,860 sobre la base del que estàs llegint aquí? 708 00:33:55,860 --> 00:33:58,452 Fins i tot si alguns de la sintaxi és encara nou. 709 00:33:58,452 --> 00:33:59,660 Què és el dòlar plantilla de senyal? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Ho sentim? 712 00:34:03,016 --> 00:34:03,710 >> AUDIÈNCIA: Capçalera o peu de pàgina. 713 00:34:03,710 --> 00:34:04,510 >> DAVID Malan: Capçalera o peu de pàgina. 714 00:34:04,510 --> 00:34:07,134 Així que pel que sembla, vaig decidir que si l'única cosa que està canviant 715 00:34:07,134 --> 00:34:10,159 és el que la plantilla que vull a print-- i per la plantilla 716 00:34:10,159 --> 00:34:13,100 Vull dir que és model per codi que vull de sortida, 717 00:34:13,100 --> 00:34:16,350 però vull connectar d'alguna values-- pel que si és només la capçalera 718 00:34:16,350 --> 00:34:20,440 o peu de pàgina, per què no parametritzar això i anomenar el signe argument dòlar 719 00:34:20,440 --> 00:34:21,409 plantilla? 720 00:34:21,409 --> 00:34:26,250 I després aquesta sintaxi covard em permet per crear un camí en una variable aquí. 721 00:34:26,250 --> 00:34:28,030 >> Així senda signe del dòlar és una variable. 722 00:34:28,030 --> 00:34:31,120 Què significa aquesta sintaxi fer, si està familiaritzat? 723 00:34:31,120 --> 00:34:32,512 Sí? 724 00:34:32,512 --> 00:34:34,065 >> AUDIÈNCIA: [inaudible] 725 00:34:34,065 --> 00:34:34,940 DAVID Malan: Exactament. 726 00:34:34,940 --> 00:34:37,600 Si la plantilla és, entre cometes, capçalera, o si la plantilla és, 727 00:34:37,600 --> 00:34:41,170 entre cometes, peu de pàgina, aquesta línia no que jo he destacat, la línia 8, 728 00:34:41,170 --> 00:34:46,330 és simplement prendre aquest nom, com a capçalera, i concatenar amb PHP punt. 729 00:34:46,330 --> 00:34:49,750 Així que no teníem aquest operador en C. Aquest operador punt és 730 00:34:49,750 --> 00:34:54,520 una cosa increïble en PHP-- si estàs familiaritzat amb JavaScript o Java, 731 00:34:54,520 --> 00:34:56,949 pot utilitzar el signe més signar fer concatenació. 732 00:34:56,949 --> 00:34:59,974 >> En C, que és un dolor al neck-- i ho sento molt, en el set-p 6, 733 00:34:59,974 --> 00:35:02,390 vostè va a haver de fer esto-- és un dolor al coll 734 00:35:02,390 --> 00:35:03,930 per concatenar cadenes. 735 00:35:03,930 --> 00:35:04,670 Per què? 736 00:35:04,670 --> 00:35:06,580 Bé, perquè si tens una cadena que és aquest llarg, 737 00:35:06,580 --> 00:35:09,538 i una altra cadena que és aquest llarg, no es pot simplement connectar junts. 738 00:35:09,538 --> 00:35:11,070 Quin lloc ha de fer en C? 739 00:35:11,070 --> 00:35:11,680 Sí? 740 00:35:11,680 --> 00:35:12,380 >> AUDIÈNCIA: [inaudible] 741 00:35:12,380 --> 00:35:15,090 >> DAVID Malan: Has de malloc memòria, o utilitza una matriu a la pila. 742 00:35:15,090 --> 00:35:17,214 I de fet has de fer aquesta sèrie prou gran 743 00:35:17,214 --> 00:35:20,940 per adaptar-se a això a més d'això, a més de la barra invertida zero. 744 00:35:20,940 --> 00:35:24,994 Llavors concatenar junts utilitzant regiri gat o de forma manual amb un bucle for, 745 00:35:24,994 --> 00:35:26,160 o qualsevol nombre de tècniques. 746 00:35:26,160 --> 00:35:27,760 I et mostrem un parell de p-6 set. 747 00:35:27,760 --> 00:35:29,080 >> És un dolor al coll. 748 00:35:29,080 --> 00:35:34,190 I això és realment el que vull dir sobre aquest front esto-- com C en comparació amb PHP. 749 00:35:34,190 --> 00:35:36,870 Vostè acaba d'aconseguir molt més funcionalitat de forma gratuïta, 750 00:35:36,870 --> 00:35:39,030 de manera que vostè pugui centrar-se, idealment, a la diversió 751 00:35:39,030 --> 00:35:41,190 part de codificació, el projecte que vol resoldre, 752 00:35:41,190 --> 00:35:43,190 més que el baix nivell de minúcies. 753 00:35:43,190 --> 00:35:49,840 >> Així que això només genera header.php o footer.php basat en quin em dic. 754 00:35:49,840 --> 00:35:52,280 I de fet si em vaig en index.php, previ avís 755 00:35:52,280 --> 00:35:56,230 tot el que es transformats, en lloc de trucant render capçalera o peu de pàgina render, 756 00:35:56,230 --> 00:36:00,230 Vaig a trucar a rendir, seguit pel nom de la plantilla que jo vull fer. 757 00:36:00,230 --> 00:36:02,370 I veuràs això, també, al problema d'establir 7, 758 00:36:02,370 --> 00:36:05,530 pel qual permetem que li permet utilitzar el mateixa funció per fer raïms 759 00:36:05,530 --> 00:36:07,550 i raïms de diferents pàgines web. 760 00:36:07,550 --> 00:36:10,570 >> Així que en lloc d'insistir massa molt més en aquests details-- 761 00:36:10,570 --> 00:36:13,210 que veurà de nou en conjunt de problemes seven-- vegem 762 00:36:13,210 --> 00:36:16,850 en ara el començament d'una solució de a un problema més interessant. 763 00:36:16,850 --> 00:36:19,310 Fins aquí, res que hem fet té dades guardades. 764 00:36:19,310 --> 00:36:22,920 De fet, l'única vegada que he mai va salvar cosa que hem fet en aquesta classe 765 00:36:22,920 --> 00:36:31,030 és quan vam tenir una demostració molt simple estona esquena, pel qual es va utilitzar l'arxiu IO en C, 766 00:36:31,030 --> 00:36:34,520 i crec que he escrit en el meu nom, i El nom d'Hannah, i el nom de Maria, 767 00:36:34,520 --> 00:36:37,610 o potser el nom d'Andy, i llavors ens estalviem una file-- CSV 768 00:36:37,610 --> 00:36:39,430 separats per comes arxiu de valors. 769 00:36:39,430 --> 00:36:43,530 >> I utilitzem fopen-- Crec utilitzem fprintf pel que recordo, 770 00:36:43,530 --> 00:36:44,910 i ens estalviem un arxiu. 771 00:36:44,910 --> 00:36:46,920 Ara, que és el més simple forma d'una base de dades. 772 00:36:46,920 --> 00:36:50,230 Si vostè vol fer un lloc web per a la Programa Frosh missatges instantanis, mitjançant el qual estudiants de primer any 773 00:36:50,230 --> 00:36:53,390 pot inscriure en un esport, l'ideal voler fer alguna cosa amb aquestes dades. 774 00:36:53,390 --> 00:36:55,370 La setmana passada, no vam fer res amb el data-- que acabem de dir, 775 00:36:55,370 --> 00:36:56,661 està registrat, no realment. 776 00:36:56,661 --> 00:36:58,950 O potser em escrit el supervisor, i això va ser tot. 777 00:36:58,950 --> 00:37:02,110 >> Però seria bo si pogués donar aquest supervisor un arxiu CSV, 778 00:37:02,110 --> 00:37:03,340 com un arxiu d'Excel. 779 00:37:03,340 --> 00:37:05,090 O millor encara, que ho faria seria bo si pogués 780 00:37:05,090 --> 00:37:08,830 posar els noms dels usuaris i dorm noms i tot això 781 00:37:08,830 --> 00:37:11,740 en una base de dades que Només viu per sempre, 782 00:37:11,740 --> 00:37:13,530 fins que jo decideixi eliminar les dades. 783 00:37:13,530 --> 00:37:15,645 Una base de dades que permet mi per consultar informació. 784 00:37:15,645 --> 00:37:18,070 I de fet, això és el que és una base de dades. 785 00:37:18,070 --> 00:37:20,470 >> Introduïm avui, i la setmana que ve, també, una tecnologia 786 00:37:20,470 --> 00:37:25,020 anomenada SQL-- una consulta estructurat El llenguatge, que és una altra llengua. 787 00:37:25,020 --> 00:37:28,750 Bàsicament es tracta d'una programació idioma, però per a bases de dades. 788 00:37:28,750 --> 00:37:31,760 I una base de dades per ara, només pensar com una versió super luxós 789 00:37:31,760 --> 00:37:35,710 de Microsoft Excel o Google Els fulls de càlcul, o números d'Apple. 790 00:37:35,710 --> 00:37:39,950 En general és un programa que permet que li permet emmagatzemar un munt de dades 791 00:37:39,950 --> 00:37:43,960 en files i columnes, força com vostè pot ser que en Excel. 792 00:37:43,960 --> 00:37:47,100 >> Però el que és bo, especialment si no estem molt familiaritzats amb Excel, 793 00:37:47,100 --> 00:37:52,040 el SQL li permet fer és aquesta consulta informació escrivint línies de codi 794 00:37:52,040 --> 00:37:55,220 on es pot, fins i tot si el seu base de dades té un milió de files al mateix, 795 00:37:55,220 --> 00:37:57,190 es poden trobar coses molt ràpid. 796 00:37:57,190 --> 00:37:59,950 De fet, Excel és particularment dolent en grans conjunts de dades. 797 00:37:59,950 --> 00:38:02,460 I de fet, fins a uns pocs Fa anys, va resultar 798 00:38:02,460 --> 00:38:08,890 Excel només permetrà emmagatzemar fins 65.535 files de data-- que 799 00:38:08,890 --> 00:38:12,020 sona com a molt, però al temps jo era un estudiant de postgrau, 800 00:38:12,020 --> 00:38:14,920 i recordo ensopegar això perquè m'estava generant 801 00:38:14,920 --> 00:38:17,900 Arxius CSV per a la meva investigació i em volgut analitzar de forma ràpida 802 00:38:17,900 --> 00:38:19,530 amb només obrir en Excel. 803 00:38:19,530 --> 00:38:23,730 Per descomptat, el meu equip simplement es va estavellar, perquè tenia més de 65.000 files. 804 00:38:23,730 --> 00:38:27,210 >> Però d'on la 65535 ve? 805 00:38:27,210 --> 00:38:29,670 Què estava fent Microsoft, és de suposar? 806 00:38:29,670 --> 00:38:32,430 Si ets bo amb les potències de dos? 807 00:38:32,430 --> 00:38:37,160 Sí, ells estaven usant una de 16 bits valor per representar el nombre de fila. 808 00:38:37,160 --> 00:38:41,310 I dos a 16 és 65,536-- menys un, perquè si 809 00:38:41,310 --> 00:38:45,414 índex zero significa que va ser el major nombre de files que pogués tenir. 810 00:38:45,414 --> 00:38:46,830 I va ser una decisió de disseny. 811 00:38:46,830 --> 00:38:52,760 A l'estalviar 16 bits, em limiten 16.000 files, en lloc de 4 mil milions, 812 00:38:52,760 --> 00:38:54,322 que podria haver tingut idealment. 813 00:38:54,322 --> 00:38:57,030 Però per ara, anem a introduir aquesta més en un context web. 814 00:38:57,030 --> 00:39:00,390 I el que és bo de SQL és que fins i tot encara que és bastant potent i bastant 815 00:39:00,390 --> 00:39:04,050 sofisticat, que realment es redueix fins a quatre operacions fonamentals, quatre 816 00:39:04,050 --> 00:39:08,060 funcions clau, si voluntat-- seleccioni, per a la recuperació de dades, la recerca 817 00:39:08,060 --> 00:39:12,510 per a les dades; esborrar o eliminar dades; inseriu per afegir files a la base de dades; 818 00:39:12,510 --> 00:39:13,410 i actualització. 819 00:39:13,410 --> 00:39:17,010 Així que si alguna vegada has fet servir Google Fulls de càlcul, nombres d'Apple, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, s'ha executat, el més probable, tot 821 00:39:19,310 --> 00:39:22,530 d'aquestes operacions com un ésser humà per simplement usant el teclat i mouse-- 822 00:39:22,530 --> 00:39:26,050 la inserció de dades, l'ús dels seus ulls per seleccionar o buscar dades, 823 00:39:26,050 --> 00:39:28,360 o les dades d'actualització o supressió de dades. 824 00:39:28,360 --> 00:39:29,870 >> Llavors, què vol dir això? 825 00:39:29,870 --> 00:39:34,300 Bé, pre-instal lat en CS50 IDE és un programa anomenat MySQL. 826 00:39:34,300 --> 00:39:37,050 És una, lliure de codi obert base de dades que és súper popular. 827 00:39:37,050 --> 00:39:40,590 Facebook, per exemple, la fa servir per a aquest dia, entre altres eines que utilitzen. 828 00:39:40,590 --> 00:39:44,300 I un munt de llocs web molt populars utilitzi en gran part perquè és ràpid, 829 00:39:44,300 --> 00:39:45,230 i perquè és gratis. 830 00:39:45,230 --> 00:39:46,820 Encara que sens dubte ha alternatives. 831 00:39:46,820 --> 00:39:49,580 I alguns de vostès podrien incursionar amb alternatives per als projectes finals. 832 00:39:49,580 --> 00:39:55,330 >> Aquesta és una captura de pantalla, per la seva banda, de una eina basada en la web anomenada phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 És una coincidència que aquesta eina basada en web és també 834 00:39:58,260 --> 00:40:01,720 escrit en un llenguatge, PHP, però, què se suposa que ha de fer 835 00:40:01,720 --> 00:40:04,620 és donar-nos una basada en la web interfície a una base de dades. 836 00:40:04,620 --> 00:40:07,180 A causa que MySQL és típicament alguna cosa, històricament, es 837 00:40:07,180 --> 00:40:08,770 seria interactuar amb només amb una línia de comandes. 838 00:40:08,770 --> 00:40:10,811 I seria fantàstic molest i arcana tenir 839 00:40:10,811 --> 00:40:14,487 teclejar ordres de text per seleccionar dades, inserir dades i eliminar dades. 840 00:40:14,487 --> 00:40:16,820 Així que algunes persones en la internet va escriure un programa basat en la web 841 00:40:16,820 --> 00:40:18,900 que només feu-nos gestionem les dades a la nostra base de dades. 842 00:40:18,900 --> 00:40:23,040 És com fer doble clic en Excel i que executa una versió basada en la web de la mateixa. 843 00:40:23,040 --> 00:40:26,370 >> ¿I què vas a utilitzar això per en última instància, la setmana que ve, no en p-set de sis, 844 00:40:26,370 --> 00:40:28,680 sinó que és per construir alguna cosa anomenada CS50 Finances, que 845 00:40:28,680 --> 00:40:32,630 va a tenir una base de dades usuaris, amb els noms d'usuari i contrasenyes, 846 00:40:32,630 --> 00:40:34,860 quantitats de diners que tenen en els seus comptes bancaris. 847 00:40:34,860 --> 00:40:37,280 Serà cosa que s'utilitza per emmagatzemar 848 00:40:37,280 --> 00:40:39,910 els símbols i les quantitats de les poblacions que els usuaris de 849 00:40:39,910 --> 00:40:42,567 han comprat usant virtuals dòlars que li vas a donar a ells. 850 00:40:42,567 --> 00:40:44,900 I que va permetre als usuaris per registrar al seu lloc, 851 00:40:44,900 --> 00:40:47,190 per la qual cosa fins i tot els seus amics pot sintonitzar al seu lloc web 852 00:40:47,190 --> 00:40:49,360 i en realitat inscriure, has d'entrar i jugar 853 00:40:49,360 --> 00:40:52,807 i tractar de trobar errors en el seu codi, i tractar de trobar errors en el seu lloc web. 854 00:40:52,807 --> 00:40:55,390 I ells simplement van a registrar per afegint-se a si mateixos, de manera efectiva, 855 00:40:55,390 --> 00:40:58,120 a través de codi que s'escriu a la base de dades. 856 00:40:58,120 --> 00:41:02,470 >> Per exemple, aquesta és una captura de pantalla ràpida del que una base de dades podria ser similar. 857 00:41:02,470 --> 00:41:05,190 Això era d'una de solutions-- de l'any passat 858 00:41:05,190 --> 00:41:07,760 això és com un mini Excel presentar, emmagatzemada a la nostra base de dades, 859 00:41:07,760 --> 00:41:09,950 emmagatzemada en aquest programari anomenat MySQL. 860 00:41:09,950 --> 00:41:13,260 Pel costat de la mà esquerra, tinc aparentment donat a cada usuari un nombre únic. 861 00:41:13,260 --> 00:41:16,200 A la segona columna, m'he donat tots un usuari nom-- la meva pròpia 862 00:41:16,200 --> 00:41:16,880 entre ells. 863 00:41:16,880 --> 00:41:21,430 I en el costat dret, Jo els he donat un hash. 864 00:41:21,430 --> 00:41:26,760 >> Ara bé, això és en realitat una contrasenya, però no és una contrasenya de text sense format. 865 00:41:26,760 --> 00:41:30,160 És una contrasenya encriptada, si es vol, o un hash de la contrasenya. 866 00:41:30,160 --> 00:41:32,000 Què anem a tornar al poc temps. 867 00:41:32,000 --> 00:41:34,340 >> Però si alguna vegada has llegit un article sobre com 868 00:41:34,340 --> 00:41:37,950 la contrasenya en algun banc o alguna pàgina web podria haver estat compromesa, 869 00:41:37,950 --> 00:41:39,630 en general, pot significar una de dues coses. 870 00:41:39,630 --> 00:41:42,780 Així que això és només un extracte de sis usuaris. 871 00:41:42,780 --> 00:41:45,460 Tots vostès poden ara calcular a terme a través de la pirateria o formació d'esquerdes 872 00:41:45,460 --> 00:41:47,690 el contrasenyes nostres sis de la gent són. 873 00:41:47,690 --> 00:41:49,720 Però si alguna vegada has aconseguit un avís o una disculpa 874 00:41:49,720 --> 00:41:52,803 d'una empresa o lloc web refrany, ho sento, un hacker va entrar a la nostra base de dades, 875 00:41:52,803 --> 00:41:56,360 probablement hauria de canviar la seva contrasenya, el que podria significar això? 876 00:41:56,360 --> 00:41:59,670 >> Bé, un, podria significar la empresa ha estat més estúpid, 877 00:41:59,670 --> 00:42:03,630 i ha estat l'emmagatzematge de la contrasenya en una columna d'aquest tipus, sense xifrar. 878 00:42:03,630 --> 00:42:05,840 El que significa adversari, que va robar la base de dades, 879 00:42:05,840 --> 00:42:07,440 sap, literalment, la seva nom d'usuari i contrasenya. 880 00:42:07,440 --> 00:42:08,960 Aquest és el pitjor escenari possible. 881 00:42:08,960 --> 00:42:11,710 I com es veurà en el p-setembre 07:00, tan fàcil d'evitar. 882 00:42:11,710 --> 00:42:15,624 No hi ha absolutament cap excusa perquè forma d'estupidesa a l'Internet d'avui. 883 00:42:15,624 --> 00:42:18,540 Dos-- i el trobarem alguns articles per donar testimoni del fet que això encara 884 00:42:18,540 --> 00:42:21,710 succeeix, nonetheless-- 2, potser l'adversari 885 00:42:21,710 --> 00:42:23,840 va robar aquesta versió de la base de dades. 886 00:42:23,840 --> 00:42:27,110 Que encara està una mica malament, perquè ara ells saben que jo tinc 6 clients, 887 00:42:27,110 --> 00:42:29,270 Conec els noms d'usuari d'aquests sis clients, 888 00:42:29,270 --> 00:42:32,910 i sé que el xifrat versions, o les versions hash, 889 00:42:32,910 --> 00:42:34,340 de contrasenyes aquests sis dels clients. 890 00:42:34,340 --> 00:42:37,010 Però qualsevol de vostès que podria haver fet [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 on esquerdat contrasenyes, o vas prendre Una mirada a aquesta versió del problema 892 00:42:41,150 --> 00:42:46,280 set, ¿per què és encara una mica preocupant si l'adversari sap la seva picada 893 00:42:46,280 --> 00:42:47,435 contrasenyes? 894 00:42:47,435 --> 00:42:49,732 >> AUDIÈNCIA: A causa de que van poder entrar a tot el diccionari 895 00:42:49,732 --> 00:42:50,690 en la funció de hash. 896 00:42:50,690 --> 00:42:54,520 I si la contrasenya és un diccionari paraula, [? que només pot match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID Malan: Exactament, l'adversari pot simplement escriure codi, igual que alguns de vostès 898 00:42:57,640 --> 00:43:00,526 va fer per [? Hacker?] 2, pel qual vostè iterar sobre 899 00:43:00,526 --> 00:43:03,400 totes les paraules en el diccionari, o totes les possibles combinacions d'A 900 00:43:03,400 --> 00:43:06,610 a la Z i un a través nine-- que sona a molt, i ho és. 901 00:43:06,610 --> 00:43:08,361 Però per a un equip, és bastant maleït ràpid. 902 00:43:08,361 --> 00:43:10,610 I, de fet, aquesta va ser la punt de [? Hacker 2 ,?] Era 903 00:43:10,610 --> 00:43:12,540 prendre les coses que es veu literalment així, 904 00:43:12,540 --> 00:43:14,900 i tècniques d'enginyeria inversa el que realment era. 905 00:43:14,900 --> 00:43:17,270 >> Així que anem a veure com podem emmagatzemar aquesta manera més eficient. 906 00:43:17,270 --> 00:43:20,210 Resulta que, per sort en MySQL, no van a ser els tipus de dades. 907 00:43:20,210 --> 00:43:22,800 I una de les parts divertides sobre disseny de base de dades, per ser honest, 908 00:43:22,800 --> 00:43:25,810 és en realitat decidir per si mateix Com ha de representar les dades? 909 00:43:25,810 --> 00:43:29,630 En el cas que representen un nombre de telèfon com 1 int, igual que un nombre gran, o un llarg? 910 00:43:29,630 --> 00:43:31,630 O és que en realitat ho fa com una seqüència de caràcters? 911 00:43:31,630 --> 00:43:33,780 I no pot ser molt impactes no trivials d'aquest. 912 00:43:33,780 --> 00:43:36,714 >> De fet, una de les primers, històries divertides germànic 913 00:43:36,714 --> 00:43:39,880 és quan Mark Zuckerberg estava construint Facebook, que va ser escrit originalment en, 914 00:43:39,880 --> 00:43:42,300 i tot i així està escrit principalment en PHP. 915 00:43:42,300 --> 00:43:45,400 I un dels majors reptes es van enfrontar des del principi va ser l'ampliació. 916 00:43:45,400 --> 00:43:48,820 Quan van seguir afegint escola després l'escola després de l'escola, que jo sàpiga, 917 00:43:48,820 --> 00:43:51,639 una de les solucions originals era essencialment per copiar i enganxar 918 00:43:51,639 --> 00:43:53,430 algunes de les bases de dades i una part del codi, 919 00:43:53,430 --> 00:43:55,346 de manera que era Harvard que s'executa en el seu propi servidor, 920 00:43:55,346 --> 00:43:56,995 i el MIT s'executa en el seu propi servidor. 921 00:43:56,995 --> 00:43:59,120 I aquesta era la raó, per a alguns de vostès que puguin recordar, 922 00:43:59,120 --> 00:44:01,510 no es podia tenir amics en altres xarxes. 923 00:44:01,510 --> 00:44:05,050 >> És probable que no té amics a MIT o Harvard fa 10 anys més o menys, 924 00:44:05,050 --> 00:44:07,467 però no es podia abastar xarxes per part aquesta raó. 925 00:44:07,467 --> 00:44:10,550 I un dels majors reptes per Mark i per a empreses com Facebook 926 00:44:10,550 --> 00:44:13,460 és en realitat el maneig de centenars i milers i milions 927 00:44:13,460 --> 00:44:14,460 de sol·licituds per segon. 928 00:44:14,460 --> 00:44:16,501 Així les coses començarem parlant d'aquesta setmana 929 00:44:16,501 --> 00:44:19,860 són realment va a ser afí a escriure bon programari, i popularment 930 00:44:19,860 --> 00:44:23,040 eines reeixides que pot manejar una gran quantitat d'usuaris. 931 00:44:23,040 --> 00:44:25,460 >> Així que anem a parlar de les coses com la indexació i recerca, 932 00:44:25,460 --> 00:44:26,910 però això és tot per avui. 933 00:44:26,910 --> 00:44:28,780 Veurem per més dimecres tu. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MÚSICA - TEMA "Seinfeld"] 936 00:44:33,902 --> 00:44:35,943 DAVID Malan: Vostè pot a , I restar d'ella. 937 00:44:35,943 --> 00:44:38,859 I vostè no ha de pegar-se amb una certa quantitat predeterminada de memòria. 938 00:44:38,859 --> 00:44:40,580 Bé, què és això va a trucar? 939 00:44:40,580 --> 00:44:42,369 >> ALTAVEU 1: Bé, què està passant? 940 00:44:42,369 --> 00:44:43,535 ALTAVEU 2: Què vols dir? 941 00:44:43,535 --> 00:44:44,451 Ell està donant una conferència. 942 00:44:44,451 --> 00:44:47,650 DAVID Malan: I podem utilitzar un funció anomenada malloc a memory-- 943 00:44:47,650 --> 00:44:50,050 >> ALTAVEU 1: Per què no s'estan movent els seus braços? 944 00:44:50,050 --> 00:44:52,450 >> ALTAVEU 2: Bé Això és-- ja saps, això és normal. 945 00:44:52,450 --> 00:44:57,162 És igual que ell acaba de grans salsitxes penjant allà. 946 00:44:57,162 --> 00:44:59,040 >> ALTAVEU 1: Això és normal? 947 00:44:59,040 --> 00:45:03,096 >> ALTAVEU 2: Sí, crec que simplement assumir que accidentalment 948 00:45:03,096 --> 00:45:06,840 reemplaçat el seu desodorant amb superglue. 949 00:45:06,840 --> 00:45:07,608