1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [MUZIKO Ludante] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID Malan: Jen CS50, kaj tiu estas la komenco de semajno ok. 5 00:00:13,350 --> 00:00:17,510 Kaj ni estas tiel ekscitita bonvenigi reen, granda surprizo, CS50 propra Rajmondo 6 00:00:17,510 --> 00:00:22,160 Galvan, multpromesa altranga kiu estis elspezanta la pasintaj pluraj monatoj 7 00:00:22,160 --> 00:00:26,190 ekde julio en LA, en Hollywood, laŭvorte laboras pri novega TV 8 00:00:26,190 --> 00:00:31,930 spektaklo nomita Kolonio, la kreinto de kiu estas fakte Harvard aluno mem. 9 00:00:31,930 --> 00:00:36,610 Kaj tial ni estas tre ekscitita vidi ĉi debuto sur la usona reto ĉi januaro. 10 00:00:36,610 --> 00:00:40,370 Do resti agordita por tiu, kaj por pli Ramon por la semajnoj veni. 11 00:00:40,370 --> 00:00:42,550 >> Sciu do nun, ke la fino estas proksima. 12 00:00:42,550 --> 00:00:47,400 Kaj kion tio signifas estas ke tie ne ĉiuj ke multe restas de CS50, malĝoja diri. 13 00:00:47,400 --> 00:00:49,400 Ni havas nur tri problemo aroj left-- ekzistas 14 00:00:49,400 --> 00:00:52,510 problemo aro six-- kiu estas en viaj manoj nun aŭ baldaŭ estos, 15 00:00:52,510 --> 00:00:56,080 pro postaj ĉi week-- celas transponti niaj mondoj de la komandlinio, kie 16 00:00:56,080 --> 00:00:59,450 Ni pasigis la plimulton de nia tempo uzante C, kaj la mondo de ttt programado. 17 00:00:59,450 --> 00:01:02,350 Nu, vi vidos multajn ideojn pruntita de la komandlinio laboron, 18 00:01:02,350 --> 00:01:04,560 sed ankaŭ multe da novaj kaj interesaj ideoj 19 00:01:04,560 --> 00:01:07,929 ke ankaŭ tuj estos germane por moveblaj aplikoj kaj por teknologio, 20 00:01:07,929 --> 00:01:10,470 pli ĝenerale, kun kiu vi uloj estas ĉiuj familiara nuntempe 21 00:01:10,470 --> 00:01:12,090 sur tekkomputiloj kaj poŝtelefonoj kaj similaj. 22 00:01:12,090 --> 00:01:15,220 >> Do vi devos apliki ne retpaĝo aŭ retejo 23 00:01:15,220 --> 00:01:17,620 per, sed reala retservilo. 24 00:01:17,620 --> 00:01:21,590 Vi skribos la reston de retservilo skribita en C, kies celo en la vivo 25 00:01:21,590 --> 00:01:25,410 estas ricevi HTTP petojn, tiuj virtuala kovertoj ni interparolas 26 00:01:25,410 --> 00:01:29,780 turninte kaj reale respondi ĉu kun iu statika content-- kiel skalara HTML 27 00:01:29,780 --> 00:01:32,310 dosiero, aŭ punkto JPEG aŭ ajna alia nombro de dosieroj, 28 00:01:32,310 --> 00:01:37,070 aŭ eĉ PHP dosieron per via retejo servilo tuj interpretas ke PHP 29 00:01:37,070 --> 00:01:38,332 kodo kaj kraĉis la rezultoj. 30 00:01:38,332 --> 00:01:40,540 Nun, ni havigis vin kun tre iom de kadro 31 00:01:40,540 --> 00:01:43,100 por it-- ja la distribuo kodo por tiu problemo 32 00:01:43,100 --> 00:01:47,496 starigis ses estas super 1,000 liniojn longa, Multaj de kiuj estas komentoj, esti fair-- 33 00:01:47,496 --> 00:01:49,370 sed tiu estas vere signifis esti ŝanco 34 00:01:49,370 --> 00:01:52,570 akiri viajn manojn malpurajn plonĝado en sufiĉe granda projekto 35 00:01:52,570 --> 00:01:55,570 ke ni tre specife skulptitaj el pecoj de vi, 36 00:01:55,570 --> 00:01:59,046 tiel ke vere kiam vi eliras CS50 kaj eniri la realan mondon de programado 37 00:01:59,046 --> 00:02:00,920 kaj volas dabble en ajna nombro de projektoj, 38 00:02:00,920 --> 00:02:03,253 vi havos multe pli granda komforto elŝutanta iuj fonto 39 00:02:03,253 --> 00:02:05,020 kodo, iu malfermita fonto projekti sur la araneaĵo, 40 00:02:05,020 --> 00:02:08,174 kaj subnaĝado en kaj farante ŝanĝoj kiujn vi decidos. 41 00:02:08,174 --> 00:02:11,340 Problemo starigis sep tuj estos ĉirkaŭ farante vian propran ttt-bazita apliko 42 00:02:11,340 --> 00:02:14,140 kiu prenas dinamika enigo kaj produktas dinamikan eligo en la formo 43 00:02:14,140 --> 00:02:16,920 de etrade.com-simila retejo. 44 00:02:16,920 --> 00:02:20,800 Kaj problemo starigis ok enfokusigos sur ankoraŭ alia lingvo nomata Ĝavoskripto. 45 00:02:20,800 --> 00:02:24,170 >> Dume, la fina projekto estas sur la horizonto. 46 00:02:24,170 --> 00:02:26,800 La tn antaŭ-propono ŝuldiĝas semajno ekde hodiaŭ. 47 00:02:26,800 --> 00:02:29,930 Antaŭ- proposal-- po la specifo, kiu estas sur CS50 website-- 48 00:02:29,930 --> 00:02:33,260 Estas bela hazardaj ŝanco por vi sendi belan konciza retpoŝto 49 00:02:33,260 --> 00:02:35,170 al via instruado ulo nur sciigi lin 50 00:02:35,170 --> 00:02:38,250 aŭ ŝi pri kio vi pensas, al uzi li aŭ ŝi kiel skatolo de resono. 51 00:02:38,250 --> 00:02:40,980 Kaj havas prudenton check-- ĉu vi pensas 52 00:02:40,980 --> 00:02:43,210 pri mordi ekstere tro multe aŭ eble tro eta, 53 00:02:43,210 --> 00:02:46,480 aŭ eble vi ne havas ideon ajn kaj volas engaĝiĝi en konversacio. 54 00:02:46,480 --> 00:02:48,480 >> Poste estas propono kaj statuso raporto, 55 00:02:48,480 --> 00:02:51,860 la tn CS50 hackathon tie en Kembriĝo por Harvard kaj Yale studentoj 56 00:02:51,860 --> 00:02:52,362 egale. 57 00:02:52,362 --> 00:02:54,320 La fina projekto efektivigo estas poste pro. 58 00:02:54,320 --> 00:02:59,290 Kaj tiam CS50 Foiro ĉi tie, en Cambridge, egale en New Haven. 59 00:02:59,290 --> 00:03:02,500 Do la propono, rigardu la retejo por tiuj detaloj. 60 00:03:02,500 --> 00:03:06,530 >> Sed pli excitingly ankaŭ estas ŝanco akiri viajn manojn malpuraj, 61 00:03:06,530 --> 00:03:09,350 kaj pensojn malferma al tute faskon da temoj kaj iloj 62 00:03:09,350 --> 00:03:12,920 kaj teknikojn kiuj estas helpaj al la kurso kerno Syllabus, 63 00:03:12,920 --> 00:03:14,810 sed tamen rilata. 64 00:03:14,810 --> 00:03:18,400 Kaj ankaŭ mirinda tretante ŝtonoj por faranta vere malvarmeta fina projektoj 65 00:03:18,400 --> 00:03:22,020 iri bone preter materialon ni kovrita formale en problemo aroj aŭ en prelego. 66 00:03:22,020 --> 00:03:24,446 Do iri al CS50 la retejon por la tutan nomliston de seminarioj. 67 00:03:24,446 --> 00:03:26,070 Se vi ne registriĝu tamen, tio estas bone. 68 00:03:26,070 --> 00:03:29,860 Iru antaŭen kaj subskribi ankoraŭ kaj ni sekvaĵo kun viva alfluanta ligilo, 69 00:03:29,860 --> 00:03:31,844 la tago kaj tempo estas sur la retejo. 70 00:03:31,844 --> 00:03:33,760 Kaj ĉiu estos registrita kaj metita rete 71 00:03:33,760 --> 00:03:35,800 se vi ne povas fari la aparta tagoj kaj tempoj. 72 00:03:35,800 --> 00:03:39,380 >> Kiel al kio kuŝas antaŭen thereafter-- bone, kompreneble, estas la CS50 hackathon. 73 00:03:39,380 --> 00:03:43,560 Tiu foto, revokon, de Semajno nulo prenita proksimume 4 AM unu vesperon en jaroj pasinteco. 74 00:03:43,560 --> 00:03:46,900 La CS50 Foiro, kiu denove okazos en ambaŭ urboj. 75 00:03:46,900 --> 00:03:49,760 Kaj tiam, nur por planti la semon, eĉ se ni ankoraŭ 76 00:03:49,760 --> 00:03:54,080 havas monaton plie restigis semestro, se vi ŝatus aliĝi CS50 propra instruado 77 00:03:54,080 --> 00:03:56,770 personaro, kaj vi volas komenci pensante pri fariĝanta CA, 78 00:03:56,770 --> 00:03:59,550 aŭ instruado ulo, sciu ke Ni komencos parolante pli sur tiu 79 00:03:59,550 --> 00:04:00,630 poste tiu semestro. 80 00:04:00,630 --> 00:04:03,470 Sed bildigis ĉi tie estas plejparto de la ĉijara teamo. 81 00:04:03,470 --> 00:04:06,950 >> Kaj do, PHP-- kaj mi estis tiel malĝoja lasta semajno ke [? Allyse?] Afable 82 00:04:06,950 --> 00:04:09,370 iris al la peno akiri ni tiuj mirindaj teatrorekvizitoj 83 00:04:09,370 --> 00:04:11,720 ke mi ne fini uzante, tiel ĝi vere nur rigardis ia stulta 84 00:04:11,720 --> 00:04:15,160 ke ni havis ŝovelilo sidis tie ĉiuj tago lasta merkredo, kaj iom kulero. 85 00:04:15,160 --> 00:04:17,709 Sed tiu estis mia metafora maniero de provi pentri 86 00:04:17,709 --> 00:04:21,600 la bildo de kial ni transitioning de C al lingvo kiel PHP. 87 00:04:21,600 --> 00:04:25,480 Kaj la sama povus esti dirita de iu numeron de languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 aŭ kuketojn others-- sed dum en C, ekzemple, skribi programon en C 89 00:04:31,270 --> 00:04:34,050 eble tipe estos kiel prenante kulero ŝatas tion 90 00:04:34,050 --> 00:04:36,770 kaj fosi truon en la tero, sur la sablo aŭ la malpuraĵo. 91 00:04:36,770 --> 00:04:39,770 PHP permesas preni multe grandaj mordoj el la problemo, 92 00:04:39,770 --> 00:04:42,842 skribi multe malpli kodo uzante malpli grandaj ilo, 93 00:04:42,842 --> 00:04:45,050 ĉar tie estas tiom multe pli funcionalidad kunpecigis en. 94 00:04:45,050 --> 00:04:47,633 >> Nun, se ni vere draman, ni havus ion por ŝoveli 95 00:04:47,633 --> 00:04:48,760 tie, sed tiel estu. 96 00:04:48,760 --> 00:04:51,370 Dume, la aliaj metaforo ni elpensis 97 00:04:51,370 --> 00:04:53,770 estas, kompreneble, vi povus uzi ion kiel angla ŝlosilo 98 00:04:53,770 --> 00:04:56,610 al martelo en iu kiel najlon. 99 00:04:56,610 --> 00:04:58,980 Sed kompreneble, la rajton ilo por uzo tuj 100 00:04:58,980 --> 00:05:01,360 esti ne tiom la lingvo nomita C-- 101 00:05:01,360 --> 00:05:03,590 kaj nun mi ĵus ĝenita [? Sanders,?] Probable, 102 00:05:03,590 --> 00:05:07,890 ni riparos ke later-- tiel la dekstra ilo por uzi ofte 103 00:05:07,890 --> 00:05:09,640 ne tuj estos tiu plej malalta nivelo ilo. 104 00:05:09,640 --> 00:05:13,720 Kaj efektive, C ne estas lingvo ke plejparto de vi cxiam tuj uzos, 105 00:05:13,720 --> 00:05:15,590 aŭ devus nepre uzi denove. 106 00:05:15,590 --> 00:05:18,350 >> Kaj fakte, iom secret-- la nura tempo 107 00:05:18,350 --> 00:05:23,160 Mi uzas C mem estas preskaux inter Septembro kaj decembro de ĉiu falo 108 00:05:23,160 --> 00:05:23,870 semestro. 109 00:05:23,870 --> 00:05:25,790 Kaj tio estas ĉar ni uzi ĝin kiel ŝanco 110 00:05:25,790 --> 00:05:27,852 instrui la bazfaktojn de programado, 111 00:05:27,852 --> 00:05:29,810 kaj kun ĝi komputilo scienco bazfaktoj, datumoj 112 00:05:29,810 --> 00:05:32,435 strukturoj, algoritmoj kaj la like-- sed tre rapide faros vin 113 00:05:32,435 --> 00:05:35,010 vidu nun ke la sintakso kaj la ideoj subesta C 114 00:05:35,010 --> 00:05:37,530 Estas tiel mirinde transdonebla al pli moderna 115 00:05:37,530 --> 00:05:41,130 alta nivelo lingvoj, kiel PHP kaj Python kaj Perl kaj Java 116 00:05:41,130 --> 00:05:46,750 kaj Objective-C-- fakte, ne tiom Objective-C-- sed Swift, tiuj pli novaj 117 00:05:46,750 --> 00:05:50,010 lingvoj kiujn multaj el vi tiam dabble kun vi finan projekton. 118 00:05:50,010 --> 00:05:55,070 >> Do sen pli enkonduko, ni reale uzi PHP solvi iuj problemoj. 119 00:05:55,070 --> 00:06:00,230 Memoru ke frue sur, lasta semajnon, ni nur uzata CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 ni skribis eta programo ke nur diris, "Saluton mondo." 121 00:06:02,990 --> 00:06:05,680 Kaj tiam mi savis ŝin en dosiero nomata hello.php. 122 00:06:05,680 --> 00:06:07,280 Kaj tiam mi kuris ĉi komando. 123 00:06:07,280 --> 00:06:08,080 >> Kaj kial? 124 00:06:08,080 --> 00:06:09,900 En la angla, kio okazas ĉi tie? 125 00:06:09,900 --> 00:06:12,760 Kion mi faris kiam Mi kuris ĉi komando? 126 00:06:12,760 --> 00:06:13,405 >> Yeah? 127 00:06:13,405 --> 00:06:16,572 >> Publiko: Tie estas iu funkcio PHP kiu legas kio in-- komprenas tion. 128 00:06:16,572 --> 00:06:19,696 DAVID Malan: Bone, ekzistas iu funkcio PHP-- kaj lasu min esti pli specifaj, 129 00:06:19,696 --> 00:06:21,810 tie estas programo nomata PHP, a.k.a. 130 00:06:21,810 --> 00:06:25,872 Interpretisto, kiu komprenas la enhavo de hello.php, 131 00:06:25,872 --> 00:06:27,830 kaj interpretas supro al fundo, maldekstre dekstren, 132 00:06:27,830 --> 00:06:29,590 kaj faras kion tiuj komandoj diri. 133 00:06:29,590 --> 00:06:33,320 La komandoj en hello.php kompreneble estas nur fonto code-- funkcioj 134 00:06:33,320 --> 00:06:35,750 kaj variabloj kaj maŝojn kaj similaj, ke ni mem 135 00:06:35,750 --> 00:06:37,460 komencis skribi en PHP. 136 00:06:37,460 --> 00:06:40,240 >> Sed kontraste C, kiu estas kompilita lingvo, 137 00:06:40,240 --> 00:06:42,810 PHP vi simple skribi ĝin kaj ruli ĝin. 138 00:06:42,810 --> 00:06:46,420 Vi skip ke peranto paŝo de konvertado al nuloj kaj, 139 00:06:46,420 --> 00:06:47,790 kaj tiam kurante ĝin. 140 00:06:47,790 --> 00:06:50,510 Kaj do kio estas upside de tio? 141 00:06:50,510 --> 00:06:52,690 Kial ni transsaltante la paŝo? 142 00:06:52,690 --> 00:06:55,238 Kial pli modernaj lingvoj emas tion preteratentos? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Kio estis la profito? 145 00:07:01,220 --> 00:07:02,080 >> Aŭ simple intuicie? 146 00:07:02,080 --> 00:07:04,200 Eĉ se ni ne skribita multe PHP antaŭ, 147 00:07:04,200 --> 00:07:07,210 kio estas utila pri ne kompili vian kodon vi pensas? 148 00:07:07,210 --> 00:07:08,520 Neniu? 149 00:07:08,520 --> 00:07:09,610 Ne fari? 150 00:07:09,610 --> 00:07:11,350 Skrapi via kapo? 151 00:07:11,350 --> 00:07:12,614 Yeah. 152 00:07:12,614 --> 00:07:13,600 >> Publiko: Pli dinamika. 153 00:07:13,600 --> 00:07:14,683 >> DAVID Malan: Pli dinamika? 154 00:07:14,683 --> 00:07:16,032 Kion vi volas diri? 155 00:07:16,032 --> 00:07:17,000 >> Spektantaro: [inaudible] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID Malan: Bone, bone, do depende de la enigo, 158 00:07:22,390 --> 00:07:23,470 vi ne devas kompili ĝin ĉiufoje. 159 00:07:23,470 --> 00:07:24,990 Kaj vere kiel simpla kiel that-- kio 160 00:07:24,990 --> 00:07:26,990 estas la punkto de daŭrigi kompili vian kodon? 161 00:07:26,990 --> 00:07:29,480 Tiu estas nur paŝo tio making-- ĉi estas postulanta, 162 00:07:29,480 --> 00:07:31,900 por la pasinteco plurajn semajnoj, dufoje kiel multaj paŝoj 163 00:07:31,900 --> 00:07:33,820 kiel nur kurante via programo. 164 00:07:33,820 --> 00:07:36,940 Jam pasis utilaj en vidi ke vi vidi iujn erarmesaĝojn kaj tiel plu, 165 00:07:36,940 --> 00:07:38,720 sed ĝi estas ankoraŭ nur ĝena paŝo. 166 00:07:38,720 --> 00:07:41,810 >> Kaj tiel programistoj realigitaj super tempo, kial ne ni 167 00:07:41,810 --> 00:07:45,327 komenci skribi lingvoj kiuj ne bezonas ke sufiĉe mekanika paŝo, 168 00:07:45,327 --> 00:07:47,160 tiel ke povas simple skribi via kodo kaj ruli ĝin. 169 00:07:47,160 --> 00:07:48,920 Sed kio estis la prezo ke ni vidis nin pagitaj 170 00:07:48,920 --> 00:07:50,910 lasta semajno, kun unu speciala ekzemplo? 171 00:07:50,910 --> 00:07:51,650 Jes? 172 00:07:51,650 --> 00:07:52,370 >> Rapido. 173 00:07:52,370 --> 00:07:54,690 Do [? kio estas?] interpretistoj iom malrapida, 174 00:07:54,690 --> 00:07:57,330 en tiu nuloj kaj estas agrabla kaj rapida por komputila 175 00:07:57,330 --> 00:08:00,070 kompreni, ĉar la Intel CPU, aŭ kio ajn ĝi estas, 176 00:08:00,070 --> 00:08:03,070 nur komprenas kio okazas sur kun tiuj ŝablonoj de bitoj. 177 00:08:03,070 --> 00:08:05,370 Dum interpretisto Estas programo kiu vere 178 00:08:05,370 --> 00:08:07,980 devas legi la Ascii fonto kodo ke vi skribis, 179 00:08:07,980 --> 00:08:12,700 kaj konverti ĝin, tiel diri, aŭ elkompreni kiel ĝi konvertas finfine 180 00:08:12,700 --> 00:08:13,525 al nuloj kaj aĵoj. 181 00:08:13,525 --> 00:08:15,650 Do ĝi nur prenas iom iom de agado sukceso. 182 00:08:15,650 --> 00:08:16,858 Do estas iom da komerco-off. 183 00:08:16,858 --> 00:08:21,570 Nun se ni faros ĉi tie, lasu min antaŭeniri kaj faru ekzemplon jene. 184 00:08:21,570 --> 00:08:26,610 Se mi iros tien, nova dosiero, mi tuj savi ĉi denove estas hello.php. 185 00:08:26,610 --> 00:08:31,450 Kaj nun mi tuj iros antaŭen kaj diri: "print saluton mondo" - 186 00:08:31,450 --> 00:08:35,130 kaj memoras ke mi povas uzi print, mi ne faras devas uzi pres-F. Kaj nun cxi tie, 187 00:08:35,130 --> 00:08:42,039 se mi faras PHP de hello.php, huh-- mi ne ŝajnas esti interpretita ĝin. 188 00:08:42,039 --> 00:08:43,412 Kion mi faras malbone? 189 00:08:43,412 --> 00:08:44,710 >> Publiko: La angled braceletoj. 190 00:08:44,710 --> 00:08:47,015 >> DAVID Malan: Yeah, vi bezonas ke angulo krampo ĝis supro. 191 00:08:47,015 --> 00:08:49,390 Do ĝi estas speco de ĝena, sed vi alkutimiĝos rapide. 192 00:08:49,390 --> 00:08:53,500 Se mi devus skribi PHP kodo, mi ĝenerale bezonas diri la programon, 193 00:08:53,500 --> 00:08:56,950 aŭ rakonti interpretisto, hej PHP, tie venas iuj PHP kodon. 194 00:08:56,950 --> 00:09:00,440 Kaj tiam por bonan mezuron, mi volus fermu ne kun tiu, sed prefere 195 00:09:00,440 --> 00:09:03,740 kun nur demandosigno angulo krampo, tiel ke nun ĉi tie, 196 00:09:03,740 --> 00:09:06,840 se mi kuras ĉi denove nun Mi alvenas la dezirata rezulto. 197 00:09:06,840 --> 00:09:09,820 >> Nun ni faru iometan optimumigo, nur tiel, ke vi vidis lin antaŭe. 198 00:09:09,820 --> 00:09:14,040 Tiu estas speco de ĝenaj ke mi devas kuri PHP spaco hello.php, 199 00:09:14,040 --> 00:09:16,060 ĉar en la pasinteco mi povis nur skribi dot oblikvo 200 00:09:16,060 --> 00:09:17,560 programo nomo, kiu estas speco de agrabla. 201 00:09:17,560 --> 00:09:19,420 Ĝi estas speco de bona sperto. 202 00:09:19,420 --> 00:09:24,160 >> Do rezultas vi povas fari tion en PHP kun la following-- mi 203 00:09:24,160 --> 00:09:28,780 povas uzi ĉi sufiĉe kamufla sorĉdiron ĉe la supro tie, 204 00:09:28,780 --> 00:09:31,740 kiu kutime nomas shebang, per ĉi estas akra simbolo, 205 00:09:31,740 --> 00:09:34,270 tiel diri, tiu estas bang aŭ ekkrion punkto. 206 00:09:34,270 --> 00:09:38,490 Kaj tiu nun estas la pado al programo sur tipa Linuksa sistemo ke 207 00:09:38,490 --> 00:09:41,500 nomiĝas medio, aŭ env. 208 00:09:41,500 --> 00:09:43,920 Kaj ĉi line-- longa rakonto short-- linio oni ĵus 209 00:09:43,920 --> 00:09:48,710 diras, hey komputilo, trovi la PHP interpretisto por mi en la medio, 210 00:09:48,710 --> 00:09:50,610 trovi ĝin en via memoro, por tiel diri. 211 00:09:50,610 --> 00:09:54,130 >> Kaj kio estas bela nun, estas ke se mi iros tien, 212 00:09:54,130 --> 00:09:57,750 Mi povas fari dot oblikvo saluton dot php, or-- hmm. 213 00:09:57,750 --> 00:09:59,000 Permeso malkonfesis. 214 00:09:59,000 --> 00:10:02,350 Nu, vi vidos eĉ pli de tiu kun problemo starigis sep, se vi 215 00:10:02,350 --> 00:10:04,060 ne jam, kun permesoj. 216 00:10:04,060 --> 00:10:06,510 Ĝi rezultas ke mi bezonas ekzekuti ĉi komandon 217 00:10:06,510 --> 00:10:10,779 nomata [? chamod?] por ŝanĝo mode-- alpago x hello.php. 218 00:10:10,779 --> 00:10:13,820 Mi bezonas [inaudible] ĉi tiu aldona paŝo kiu estas diranta mian komputilon, 219 00:10:13,820 --> 00:10:16,400 fari hello.php plenumebla. 220 00:10:16,400 --> 00:10:21,310 Kaj nun rigardi kion happens-- skalara oblikvo hello.php, ĝi simple kuras. 221 00:10:21,310 --> 00:10:23,310 Mi ne bezonas specifi la interpretisto anymore. 222 00:10:23,310 --> 00:10:26,680 Kaj mi povas fari ĝin eĉ pli bela, ankoraŭ, se mi renomi tion. 223 00:10:26,680 --> 00:10:30,570 Se mi movi hello.php simple Hello-- tiom rimarkos en la supra maldekstra, 224 00:10:30,570 --> 00:10:32,860 la programo nomiĝas ja nun ĵus Saluton. 225 00:10:32,860 --> 00:10:37,300 Nun mi povas fari simili C programon, kvankam ĝi estas skribita en PHP-- 226 00:10:37,300 --> 00:10:39,210 aŭ sincere ajna nombro de aliaj lingvoj. 227 00:10:39,210 --> 00:10:41,480 >> Do marĝena plibonigo, neniu funkcia diferenco. 228 00:10:41,480 --> 00:10:44,460 Sed estas nur iom scivolemo nun, por ke vi povas skribi programojn 229 00:10:44,460 --> 00:10:48,989 en ajna lingvo, kaj la uzanto ne devas scii aŭ zorgi kio tiuj estas. 230 00:10:48,989 --> 00:10:51,030 Nu, ni rigardu pli konvinka ekzemplo nun 231 00:10:51,030 --> 00:10:52,850 ke Mi vipis anticipe. 232 00:10:52,850 --> 00:10:54,955 Kaj tio nomiĝas quote.php. 233 00:10:54,955 --> 00:10:56,740 Kaj estas havebla enreta. 234 00:10:56,740 --> 00:11:00,299 Kaj rimarki ke estas sufiĉe short-- sed estas komandlinia programo kiu estas 235 00:11:00,299 --> 00:11:02,840 tuj rigardos supren stock prezoj por mi, kiu estas efektive iranta 236 00:11:02,840 --> 00:11:04,230 esti germane al problemo starigis sep. 237 00:11:04,230 --> 00:11:05,396 >> Do ni vidu kion mi faras. 238 00:11:05,396 --> 00:11:08,640 Ĉe la plejsupro Mi havas la malferma krampo demandosigno PHP. 239 00:11:08,640 --> 00:11:13,372 Tiam mi havas tiun linion, per kiu mi estas postulanta dosiero nomata functions.php-- 240 00:11:13,372 --> 00:11:15,080 ni tuj vidos pli sur ĉi en iom, 241 00:11:15,080 --> 00:11:17,340 sed tiu estas kiel C la versio de akraj inkluzivas, 242 00:11:17,340 --> 00:11:19,090 kie vi volas iri inkluzivi alian dosieron. 243 00:11:19,090 --> 00:11:23,720 PHP nomas gxin postulas, kvankam ĝi ankaŭ havas inkluzivas funkcion. 244 00:11:23,720 --> 00:11:26,861 Kaj ĝi rezultas ke function.php estas nur io mi skribis antaŭ klaso. 245 00:11:26,861 --> 00:11:29,860 Mi metis ĝin en la sama dosierujo, ĉar Mi volis faktora iun kodon 246 00:11:29,860 --> 00:11:31,800 ke ni povus deziri uzi aliloke. 247 00:11:31,800 --> 00:11:34,560 >> Dume, vi povas verŝajne konkludi kio okazas tie. 248 00:11:34,560 --> 00:11:39,200 Tiu estas iom malsama de C-- sed Kion mi celas diri per certigi taŭgan uzadon? 249 00:11:39,200 --> 00:11:41,180 Traduki ĉi pli teknike. 250 00:11:41,180 --> 00:11:45,950 Sub kiaj cirkonstancoj mi forlasinte la programo, aŭ forlaso? 251 00:11:45,950 --> 00:11:47,074 Yeah? 252 00:11:47,074 --> 00:11:47,990 >> Spektantaro: Kiam vi ne havas du komandlinio argumentoj. 253 00:11:47,990 --> 00:11:49,480 >> DAVID Malan: Kiam mi ne havas al komandlinio argumentoj. 254 00:11:49,480 --> 00:11:52,396 Kaj memoru, ke unu el tiuj argumentoj estas la programo la nomo mem. 255 00:11:52,396 --> 00:11:55,340 Kaj la dua tuj estos alia vorto mi entajpas post la prompto. 256 00:11:55,340 --> 00:11:57,460 Do ĝuste kiel C, ĉi Estas mia maniero de kontrolanta, 257 00:11:57,460 --> 00:12:00,022 ĉu la uzanto kunlabori kaj kuri la programon kiel mi intencis? 258 00:12:00,022 --> 00:12:01,730 Nun, ekzistas io iom malsamajn 259 00:12:01,730 --> 00:12:04,020 kun C-- unue ni havas ĉi dolaro signo, 260 00:12:04,020 --> 00:12:07,710 kaj kion faras dolaron subskribi signifi en PHP? 261 00:12:07,710 --> 00:12:08,440 Nur variablo. 262 00:12:08,440 --> 00:12:11,731 Tio all-- nur variablo sekvita de ajn vi volas reale nomas. 263 00:12:11,731 --> 00:12:14,000 Rimarku estas io mankas mia PHP programo, 264 00:12:14,000 --> 00:12:18,210 samkiel ĝi mankis lasta semajno, kontre C, kiu estas kiu? 265 00:12:18,210 --> 00:12:21,620 >> A tipoj, sed ankaŭ ion alian. 266 00:12:21,620 --> 00:12:26,409 Ne estas io function-- ĉefa funkcio. 267 00:12:26,409 --> 00:12:27,450 Mankas ĉefa funkcio. 268 00:12:27,450 --> 00:12:29,680 Vi nur komenci skribi via kodo sen devi 269 00:12:29,680 --> 00:12:32,790 zorgi pri sufiĉe arbitra konvencio de enoficigante iuj defaŭlte 270 00:12:32,790 --> 00:12:33,880 funkcio main. 271 00:12:33,880 --> 00:12:36,720 Do arg C estas nur vere tutmonda variablo 272 00:12:36,720 --> 00:12:39,049 ke la interpretisto faras disponebla al mi. 273 00:12:39,049 --> 00:12:40,090 Nun, tiu estas interesa. 274 00:12:40,090 --> 00:12:41,140 Do rigardu supren aĵoj. 275 00:12:41,140 --> 00:12:43,370 Dolaro signo provizo estas sur la maldekstra, jen mia variablo. 276 00:12:43,370 --> 00:12:45,120 Sur la dekstra flanko, ekzistas ŝajne 277 00:12:45,120 --> 00:12:50,270 funkcio en PHP nomis lookup ke Mi pasante mia lasta komandlinio 278 00:12:50,270 --> 00:12:51,902 argumento to-- ajn la afero estas. 279 00:12:51,902 --> 00:12:53,610 Kaj ni vidos kiel ĉi laboras en momento. 280 00:12:53,610 --> 00:12:55,380 >> Kaj poste persiste mi raportu la prezo. 281 00:12:55,380 --> 00:12:58,650 Mi presi el unu parton de tia kaj tia. 282 00:12:58,650 --> 00:13:02,082 Kaj memoru, tiu estas la maniero en PHP-- manieron en PHP-- 283 00:13:02,082 --> 00:13:04,290 kie vi ne devas fari la dolaro signo S anymore. 284 00:13:04,290 --> 00:13:06,782 Vi povas simple uzi buklaj krampoj kaj plug en iu variablo. 285 00:13:06,782 --> 00:13:09,240 Vi ne devas maltrankviligi uzante printf en la sama maniero. 286 00:13:09,240 --> 00:13:13,530 >> Kaj kiel flanken, kiam vi metis variablon ene de citiloj kiel tiu, 287 00:13:13,530 --> 00:13:17,370 vi uzas imago tekniko nomita variablo interpolado. 288 00:13:17,370 --> 00:13:20,380 Ĝi nur signifas plug la variablo en ĉi tie. 289 00:13:20,380 --> 00:13:23,760 Kaj kiel flanken, iu el vi, kiuj venis el aliaj programado fonoj, 290 00:13:23,760 --> 00:13:26,960 vi ne povas uzi solan citaĵoj ĉirkaŭ kordoj fari tion. 291 00:13:26,960 --> 00:13:30,290 Vi devas uzi citiloj por variablo interpolado labori. 292 00:13:30,290 --> 00:13:32,740 Alikaze vi laŭvorte vidu tiuj buklaj krampoj. 293 00:13:32,740 --> 00:13:34,500 >> Do fine, ni iru antaŭen kaj kuri ĉi. 294 00:13:34,500 --> 00:13:36,690 Lasu min fari mian terminalo iom pli granda. 295 00:13:36,690 --> 00:13:41,940 Lasu min kaj kuras interne de mia citaĵo dosierujo. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? citaĵo?] PHP citaĵo skalara PHP, 297 00:13:46,950 --> 00:13:50,290 kaj mi tuj serĉi ion kiel GOOG, kiu estas lia Ticker simbolo, 298 00:13:50,290 --> 00:13:55,510 kaj unu parto de ĝia nova nomo, Alfabeto Inc, kostis $ 717, kiel de hodiaŭ. 299 00:13:55,510 --> 00:13:58,680 Bone, se ni volas kuras ĉi denove, iu 300 00:13:58,680 --> 00:14:02,600 havas alian stoko Ticker ili volas rigardi supren? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft miaopinie estas ĉi tiu, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Mi pensas Yahoo estas eble. 303 00:14:09,720 --> 00:14:12,130 Kaj Facebook estas tio. 304 00:14:12,130 --> 00:14:13,740 >> Do kio estas tiu programo faras? 305 00:14:13,740 --> 00:14:16,306 La magio ŝajnas esti enigita en tiu lookup funkcio. 306 00:14:16,306 --> 00:14:17,430 Do ni prenu rapidan rigardon. 307 00:14:17,430 --> 00:14:21,815 >> Ĝi rezultas ke ne venas kun PHP, ĝi estas en functions.php. 308 00:14:21,815 --> 00:14:23,690 Kaj ni ne iros tra tiu granda detalo, 309 00:14:23,690 --> 00:14:28,040 sed rimarki la operativa vorto tie estas ke sur linio de ses functions.php-- 310 00:14:28,040 --> 00:14:29,440 Mi laŭvorte diras funkcio. 311 00:14:29,440 --> 00:14:31,050 Mi specifi la nomo de mia funkcio. 312 00:14:31,050 --> 00:14:34,330 Mi tiam specifi ajnan argumentoj, aŭ parametroj, 313 00:14:34,330 --> 00:14:36,480 Mi volas ke funkcio take-- neniu tipoj. 314 00:14:36,480 --> 00:14:37,580 Kaj tiam mi apliki ĝin. 315 00:14:37,580 --> 00:14:39,240 >> Kaj mi skuos mian manon ĉe la efektivigo, 316 00:14:39,240 --> 00:14:42,115 ĉar ĝi estas sufiĉe progresinta dekstra nun, sed ni vidos ĝin denove reale 317 00:14:42,115 --> 00:14:44,700 en semajno en problemo starigis sep. 318 00:14:44,700 --> 00:14:47,490 Sed mi povas purigi ĉi supre, ankaŭ. 319 00:14:47,490 --> 00:14:49,590 Mi ankaŭ inkludis en hodiaŭa kodo version 320 00:14:49,590 --> 00:14:52,340 de citaĵo, kiu ne havas skalara PHP dosiero. 321 00:14:52,340 --> 00:14:57,270 Ĉar kio estas supozeble ĉe la supro de la programo nomita simple citi? 322 00:14:57,270 --> 00:15:00,140 Ke tn shebang-- la sufiĉe kamufla sorĉdiron 323 00:15:00,140 --> 00:15:04,590 kiu diras trovi PHP kaj tiam kuri ĝin sur mia kodo tie. 324 00:15:04,590 --> 00:15:07,360 >> Bone, do kiu alportas nin al kie ni cxesis 325 00:15:07,360 --> 00:15:09,560 lasta time-- kvankam kun iuj pli progresintaj ekzemploj. 326 00:15:09,560 --> 00:15:13,980 Demandojn ĝis nun pri PHP aŭ kion ni faras? 327 00:15:13,980 --> 00:15:15,570 No-- gxuste. 328 00:15:15,570 --> 00:15:16,180 Yeah? 329 00:15:16,180 --> 00:15:19,610 >> Publiko: Interne la HTML dosierojn, fari you-- 330 00:15:19,610 --> 00:15:22,226 [? Ĉu vi ?] [? simple nomas ĝin?] A [inaudible] PHP dosieron? 331 00:15:22,226 --> 00:15:23,350 DAVID Malan: Bona demando. 332 00:15:23,350 --> 00:15:26,070 En reta kunteksto, kiu ni estas laŭvorte pri al transiro al, 333 00:15:26,070 --> 00:15:28,028 vi ne uzas la tn shebang ĉe la supro, 334 00:15:28,028 --> 00:15:31,980 ĉar la ttt server-- ofte programo nomata Apache aŭ Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, aŭ ajna nombro da aliaj retservilo softvaron, 336 00:15:37,470 --> 00:15:40,636 scias ke kiam vidas skalara PHP -dosiero, ke 337 00:15:40,636 --> 00:15:42,010 devus ekzekuti la interpretiston sur ĝi. 338 00:15:42,010 --> 00:15:43,468 Ne rigardu tiu unua linio. 339 00:15:43,468 --> 00:15:45,580 Do tiu unua linio lertaĵo Estas nur kiam vi estas 340 00:15:45,580 --> 00:15:48,330 skribanta komandlinio programs-- kiun ni ne faros súper ofte, 341 00:15:48,330 --> 00:15:52,510 sed estas nia maniero de transpontanta nia C ekzemplojn por nun nia PHP. 342 00:15:52,510 --> 00:16:00,680 >> Do ni ja transponti tiun mondon de la komandlinio mondo al la retejo 343 00:16:00,680 --> 00:16:02,230 farante la sekva. 344 00:16:02,230 --> 00:16:05,090 Lasu min antaŭeniri kaj tiros super tie por nur momento. 345 00:16:05,090 --> 00:16:09,940 Do se ni havas retservilo, aŭ prefere se ni havas mian tekkomputilon ĉi tie, 346 00:16:09,940 --> 00:16:11,280 kiun mi desegni tiel. 347 00:16:11,280 --> 00:16:14,250 Kaj ĉi tie ni havas la interreto en iu formo. 348 00:16:14,250 --> 00:16:18,210 Kaj tiam super tie, ni havi servilan en building-- 349 00:16:18,210 --> 00:16:20,760 jen kiel la interreto works-- kaj tien 350 00:16:20,760 --> 00:16:23,120 Estas servilo kun iuj lumoj eble. 351 00:16:23,120 --> 00:16:27,530 Kio efektive okazas inter tiuj du rilatoj? 352 00:16:27,530 --> 00:16:29,240 >> Do en tiu konstruaĵo estas retservilo. 353 00:16:29,240 --> 00:16:31,420 Tio estas nur komputilo ke estas kurante iuj mastrumaj 354 00:16:31,420 --> 00:16:34,561 system-- eble la libera programaro nomita Apache, kion CS50 IDE kuras. 355 00:16:34,561 --> 00:16:36,310 Do vi efektive povas pensi pri tiu konstruaĵo 356 00:16:36,310 --> 00:16:38,579 kiel estante la konstruaĵo en kiu CSt0 IDE estas stokitaj. 357 00:16:38,579 --> 00:16:40,870 Tie estas kie vi ĉiuj havas kontoj, kie vi ĉiuj 358 00:16:40,870 --> 00:16:43,130 havas vian propran ttt-servilo kurante, vi ĉiuj 359 00:16:43,130 --> 00:16:45,730 havas vian propran unikan URLoj, kiel ni komencis diskuti, 360 00:16:45,730 --> 00:16:47,280 kaj vi vidos pli en P. starigis ses. 361 00:16:47,280 --> 00:16:49,450 >> Jen mia tekkomputilo ie alia sur la interreto. 362 00:16:49,450 --> 00:16:54,550 Kaj do kiam mi vizitas URL kiu apartenas al mi, ke interreto trafiko tuj 363 00:16:54,550 --> 00:16:58,360 super al la servilo, la servilo ricevante HTTP request-- 364 00:16:58,360 --> 00:17:02,900 kiel akiri index.html kaj ĝi estas respondi al tiu retpaĝo. 365 00:17:02,900 --> 00:17:04,280 Do jen la ĝenerala paradigmo. 366 00:17:04,280 --> 00:17:07,089 Dum ĉio supren ĝis nun hodiaŭ, ĉiu 367 00:17:07,089 --> 00:17:09,660 okazis nur en la limoj de tiu konstruaĵo. 368 00:17:09,660 --> 00:17:12,910 Mi uzis mian tekkomputilon, sed Mi estis konektita al CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 tiel ĉiuj tiuj programoj mi kuris Estis ene de tiu servilo, mem. 370 00:17:17,369 --> 00:17:22,660 >> Sed nun, ni komencu reuzon PHP skribi iuj faktaj programoj kiuj 371 00:17:22,660 --> 00:17:24,230 estas servita per retservilo. 372 00:17:24,230 --> 00:17:30,320 Kaj fari tion, mi tuj iros en tuta aro da ekzemploj 373 00:17:30,320 --> 00:17:33,710 ke enkonduki ĉi ideo tie. 374 00:17:33,710 --> 00:17:38,500 Do jen estas ia fantazio maniero priskribantaj programado paradigmo. 375 00:17:38,500 --> 00:17:41,540 >> Kaj fakte, kiel vi eliras CS50 aŭ labori sur fina projektoj, 376 00:17:41,540 --> 00:17:43,520 aŭ preni iun sekvi sur klaso, vi komencos 377 00:17:43,520 --> 00:17:45,740 vidi ke la world-- Precipe esti kreskinta 378 00:17:45,740 --> 00:17:48,300 kun lingvoj kiel C ke estas ekstraj malaltaj level-- 379 00:17:48,300 --> 00:17:51,290 rimarkas ke estas pli bone skribmanieroj programaro. 380 00:17:51,290 --> 00:17:53,290 Estas certaj ŝablonoj vi povas sekvi, 381 00:17:53,290 --> 00:17:57,640 iuj manieroj de organizi viajn dosierojn kaj manierojn de enoficigante via funkcioj, 382 00:17:57,640 --> 00:18:00,300 por ke longan rakonton, la mondon venis supren 383 00:18:00,300 --> 00:18:04,340 kun tuta amaso de akronimoj kaj nomoj manierojn de programado. 384 00:18:04,340 --> 00:18:06,260 Tiuj estas nur teknikoj vi povus uzi. 385 00:18:06,260 --> 00:18:09,660 >> Kaj unu el ili estas nomita MVC, por Modelo Montri Controller. 386 00:18:09,660 --> 00:18:12,270 Kaj tiu estas nur, ĉar nun, troe komplikita 387 00:18:12,270 --> 00:18:18,960 maniero diri kiom vi povus meti eksteren PHP-bazita retejo, en nia kazo. 388 00:18:18,960 --> 00:18:22,140 Kiel vi organizi viajn dosierojn, Kiel vi organizi vian logikon, 389 00:18:22,140 --> 00:18:26,220 en maniero kiu faciligante skribi pli komplikaj retejoj? 390 00:18:26,220 --> 00:18:28,550 Kaj efektive, Ni rapide atingi tien kun p-aro sep. 391 00:18:28,550 --> 00:18:32,020 >> Do en la mondo de MVC, vi tuj vidi ke nia kodo povas ĝenerale 392 00:18:32,020 --> 00:18:38,290 esti karakterizita kiel ĉu modelo kodon, aŭ controlador kodo, aŭ vido kodo. 393 00:18:38,290 --> 00:18:40,200 Kaj mi tuj oversimplify ĝin kiel follows-- 394 00:18:40,200 --> 00:18:42,074 la controlador estas la cerbon de via programo, 395 00:18:42,074 --> 00:18:44,100 ĝi estas kie ĉio el la interesa logiko okazas. 396 00:18:44,100 --> 00:18:46,110 Do ĉio ni estis skribi tiel longe en la klaso, 397 00:18:46,110 --> 00:18:48,210 Estas ia kiel regilo code-- ĝi kontrolado 398 00:18:48,210 --> 00:18:50,585 via programo, viaj bukloj, via kondiĉoj, via funkcioj 399 00:18:50,585 --> 00:18:52,100 kaj variabloj kaj cxio. 400 00:18:52,100 --> 00:18:56,160 >> Vidoj nun tuj estos iom pli evidenta en la mondo de la TTT. 401 00:18:56,160 --> 00:18:59,360 Vido estas la estetiko de via retejo. 402 00:18:59,360 --> 00:19:04,080 Ĝi estas kion la uzanto sees-- la bildoj, la HTML tabloj, la HTML etikedoj, kaj ĉiuj 403 00:19:04,080 --> 00:19:08,220 de tiu, ĉiuj la lanugaj estetika aĵoj kiuj ne estas tiel malfacila por skribi, 404 00:19:08,220 --> 00:19:11,380 sed estas ĝuste kion vi generante, estas la tn vido, la estetiko. 405 00:19:11,380 --> 00:19:13,880 Kaj modelo, finfine, tuj esti datumbazo stuff-- kiu 406 00:19:13,880 --> 00:19:16,510 ni komencos submarinismo en ĉiujn la pli tiu merkredo. 407 00:19:16,510 --> 00:19:19,740 Do regilo estas la logiko, vidpunkto estas la estetika stuff, 408 00:19:19,740 --> 00:19:23,500 kaj modelo tuj estos kie ni stoki niaj faktaj datumoj. 409 00:19:23,500 --> 00:19:26,410 >> Do ni rigardu tiun pli konkrete kun la jena ekzemplo. 410 00:19:26,410 --> 00:19:34,700 Mi tuj iros en mian dosierujon tie de hodiaŭa fonto code-- ĉiuj kiuj 411 00:19:34,700 --> 00:19:35,770 disponeblas rete. 412 00:19:35,770 --> 00:19:37,800 Kaj mi tuj iras en versio nulo. 413 00:19:37,800 --> 00:19:41,500 Kaj tie is-- ni nomas ĝin la versio nulo de CS50 la retejo. 414 00:19:41,500 --> 00:19:43,010 Tie ne estas multe ĉi tie ĉe ĉiuj. 415 00:19:43,010 --> 00:19:46,810 Ĝi estas tre simpla retpaĝo tio verŝajne uzante kio HTML tags-- nur 416 00:19:46,810 --> 00:19:48,970 diveni el pasinteco ekzemplojn? 417 00:19:48,970 --> 00:19:49,890 >> Kio estas tio? 418 00:19:49,890 --> 00:19:53,920 H1-- probable por tio granda aŭdaca titolo, ke logo supren supro, CS50. 419 00:19:53,920 --> 00:19:55,080 Kaj kio alia estas ĉe ludo? 420 00:19:55,080 --> 00:19:55,799 Yeah? 421 00:19:55,799 --> 00:19:56,840 Publiko: neordigitan liston. 422 00:19:56,840 --> 00:19:59,990 DAVID Malan: Senordigita list-- tiel la UL etikedo kaj eble kelkaj LI etikedoj. 423 00:19:59,990 --> 00:20:01,840 Kaj se vi ne memoras tiujn, ĝi honeste ne gravas. 424 00:20:01,840 --> 00:20:04,170 Tiuj estas lanugaj ian efektivigo detaloj de HTML 425 00:20:04,170 --> 00:20:06,378 ke vi rapide rigardi supren kaj vi estas denove sur via vojo. 426 00:20:06,378 --> 00:20:10,040 Ni enfokusigi pli en la programado ideoj, kiuj estas la juicier pecoj. 427 00:20:10,040 --> 00:20:12,890 >> Do ni nur prenu rapidan rigardi la HTML-- kaj ja 428 00:20:12,890 --> 00:20:16,880 se mi malfermas la vidi fontkodon tie, Yup, Tio estas ĝuste kio okazas tie. 429 00:20:16,880 --> 00:20:18,440 Tie estas UL etikedo. 430 00:20:18,440 --> 00:20:20,630 Nestitaj ene de tio estas LI etikedoj. 431 00:20:20,630 --> 00:20:24,470 Kaj tiam mi pruntis la URL de la fakta Syllabus tie. 432 00:20:24,470 --> 00:20:27,570 >> Kaj poste en la lectures.php estas ŝajne 433 00:20:27,570 --> 00:20:31,640 alia dinamike generita paĝon ke tuj havos, ni Konsideru ah, 434 00:20:31,640 --> 00:20:33,170 la unuaj du semajnoj de prelego. 435 00:20:33,170 --> 00:20:36,600 Do semajno nulo kaj unu semajno, ni rigardas this-- se mi vidi paĝon fonto, 436 00:20:36,600 --> 00:20:38,120 ankaŭ super simpla. 437 00:20:38,120 --> 00:20:42,430 Tiuj gvidas al du paĝoj nomata week0.php kaj week1.php. 438 00:20:42,430 --> 00:20:44,040 Do konsideru nun kio okazas. 439 00:20:44,040 --> 00:20:50,630 >> Kiam mi klakas sur week0.php, mia tekkomputilo faras peton pri week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 La retservilo, a.k.a., CS50 IDE, ricevas ke virtuala koverton. 442 00:20:58,110 --> 00:21:01,040 Ĝi estas vidanta mesaĝon kiel, akiri week0.php. 443 00:21:01,040 --> 00:21:05,060 Ĝi estas tiam interpreti la dosieron, supro al fundo, maldekstre right-- la dosiero 444 00:21:05,060 --> 00:21:07,720 nomata week0.php-- kaj kracxi el la rezultoj. 445 00:21:07,720 --> 00:21:10,510 Do ene de la dosiero, week0.php, devas esti 446 00:21:10,510 --> 00:21:15,410 la regilo logiko kiu estas produktanta ĉi HTML, kaj ni baldaŭ vidos tion. 447 00:21:15,410 --> 00:21:19,340 >> Sed nuntempe, mi povas alklaki semajno nulo, kaj nun ni havas merkredo kaj vendredo, 448 00:21:19,340 --> 00:21:25,260 kaj nun ni havas la diapozitivojn malrapide el semajno nulo. 449 00:21:25,260 --> 00:21:27,400 Kaj vi eble memoras tiu de vojo reen kiam. 450 00:21:27,400 --> 00:21:29,340 Do jen ĉio ĉi paĝaro estas faranta. 451 00:21:29,340 --> 00:21:31,120 >> Do ni pripensu kiel ĝi estas faranta tion. 452 00:21:31,120 --> 00:21:34,290 Mi tuj iros reen en la fontkodon tie, en CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 kaj mi tuj malfermos index.php. 454 00:21:36,660 --> 00:21:38,910 Ĉe la supro de ĉi tiu dosiero estas aro da komentoj. 455 00:21:38,910 --> 00:21:43,000 Kaj tiam en la mezo de ĉi tiu dosiero, ĝi Rezultas, estas neniu PHP kodo ajn. 456 00:21:43,000 --> 00:21:47,380 Ĉar se vi ne havas neniun de la malferma krampo demandosigno PHP etikedoj, 457 00:21:47,380 --> 00:21:49,180 vi libere povas nur meti HTML. 458 00:21:49,180 --> 00:21:51,480 >> Pro kio la PHP interpretisto estas supozita fari, 459 00:21:51,480 --> 00:21:53,938 estas kiam legas ĉi file-- supre sube, maldekstre right-- 460 00:21:53,938 --> 00:21:59,100 ĝi nur interpretas kodon vidas inter tiuj angulajn krampojn demandosigno. 461 00:21:59,100 --> 00:22:02,380 Kaj io ajn alia ke ĝi ne rekoni kiel PHP, ĝi simple kraĉas eksteren. 462 00:22:02,380 --> 00:22:05,080 Kaj HTML estas inter la vazaro ĝi ĵus kraĉis. 463 00:22:05,080 --> 00:22:09,090 >> Do tiu dosiero povis havi vokitaj index.html, 464 00:22:09,090 --> 00:22:11,690 sed mi enoficigante ĉio skalara PHP kiel saltotabulo. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- simile underwhelming, estas nur iuj HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, simile nur iuj HTML. 467 00:22:19,840 --> 00:22:22,300 >> Sed nun ni metis sur la proverba inĝenierio ĉapelon, 468 00:22:22,300 --> 00:22:24,400 kaj pripensi kiel ni povas plibonigi ĉi. 469 00:22:24,400 --> 00:22:28,541 Ĝi ne estas malfacile fari tion, sed mi specon de transdonitaj en kopio kaj pasto. 470 00:22:28,541 --> 00:22:31,540 Kaj fakte, se mi faros semajno du, vin scias kion mi verŝajne faros? 471 00:22:31,540 --> 00:22:34,940 Mi tuj iros al week1.php, mi estas tuj reliefigi ĉion. 472 00:22:34,940 --> 00:22:39,110 Mi tuj kopii ĝin, algluu ĝin en novan dosieron nomitan week2.php, 473 00:22:39,110 --> 00:22:42,440 tweak kelkaj adresoj, kaj estos sur mia vojo. 474 00:22:42,440 --> 00:22:45,240 >> Do bazita sur kio ni havas vidita en C jam, 475 00:22:45,240 --> 00:22:46,860 tiu ne sentas bone, espereble. 476 00:22:46,860 --> 00:22:49,610 Kopio, Almeti malofte la dekstra solvo. 477 00:22:49,610 --> 00:22:51,429 Do kion ni povas komenci fari por plibonigi tion? 478 00:22:51,429 --> 00:22:53,345 Kie estas la ŝancoj por bona dezajno? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> De la tempo mi akiras al semajno ok, ĝi tuj 481 00:22:58,760 --> 00:23:00,910 esti vere ĝena se mi volas ŝanĝi 482 00:23:00,910 --> 00:23:03,930 la tiparon de iu el miaj paĝoj, aŭ se mi volas 483 00:23:03,930 --> 00:23:06,522 ŝanĝi la strukturon de la aranĝo. 484 00:23:06,522 --> 00:23:08,396 Do kie estas la ŝanco por bona dezajno? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Nu, ni pripensu kio estas dividita trans ĉiuj de ĉi tiuj dosieroj. 487 00:23:15,160 --> 00:23:21,696 >> Jen semajno unu, jen semajno nulo, jen lectures.php, 488 00:23:21,696 --> 00:23:25,790 jen index.php-- kio estas la sama kaj kio estas malsama, malglate parolante, 489 00:23:25,790 --> 00:23:26,760 en ĉiu el tiuj dosieroj? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Yeah? 492 00:23:32,060 --> 00:23:34,560 >> Spektantaro: [inaudible] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID Malan: Bone, bone. 495 00:23:42,160 --> 00:23:46,115 Do tie estas mastro, certe, per ĉiu tempo mi elektas prelego mi, 496 00:23:46,115 --> 00:23:48,250 Mi devus esti generante tre simila paĝo. 497 00:23:48,250 --> 00:23:50,375 Do eble mi povas utiligi la fakto ke vere, 498 00:23:50,375 --> 00:23:53,060 ni intence numere indeksita nia lectures-- 499 00:23:53,060 --> 00:23:55,290 se mi povas meti eĉ pli vortojn en via respondo. 500 00:23:55,290 --> 00:23:59,984 Kaj kio estas la sola afero, vere, ke sxangxas inter semajno one-- 501 00:23:59,984 --> 00:24:02,400 kaj lasu min rulumi malsupren tiel ĝi estas malglate en la sama place-- 502 00:24:02,400 --> 00:24:05,480 do tie estas semajno nulo, malglate ĉe la supro. 503 00:24:05,480 --> 00:24:12,370 Jen unu semajno, semajno nulo, semajno unu, semajno nulo. 504 00:24:12,370 --> 00:24:14,370 OK, laŭvorte se vi scias neniu programo whatsoever, 505 00:24:14,370 --> 00:24:16,286 tiu estas nun nur kiel ŝablona rekono ludo. 506 00:24:16,286 --> 00:24:17,200 Do kio estas malsama? 507 00:24:17,200 --> 00:24:18,765 Yeah? 508 00:24:18,765 --> 00:24:19,777 >> Spektantaro: [inaudible] 509 00:24:19,777 --> 00:24:22,360 DAVID Malan: Bone, do la titolo ŝanĝiĝas, iam tiel iomete. 510 00:24:22,360 --> 00:24:24,010 Nulo tuj, kompreneble, al unu. 511 00:24:24,010 --> 00:24:25,570 Sama afero okazas en la H1 etikedo. 512 00:24:25,570 --> 00:24:28,790 Kaj ni ne tute vidas kiel facile, ĉar la URLoj estas iom longa. 513 00:24:28,790 --> 00:24:30,670 Sed tiuj URLoj ŝanĝas iomete. 514 00:24:30,670 --> 00:24:34,490 >> Sed kio ne ŝanĝas estas, kuraĝus mi diri, la plejparto de la enhavo de la page-- 515 00:24:34,490 --> 00:24:38,530 HTML tag estas la sama, la kapo estas la sama, la titolo estas preskaŭ la sama, 516 00:24:38,530 --> 00:24:40,659 la korpo estas la sama, kaj preskaŭ ĉio alia 517 00:24:40,659 --> 00:24:42,450 estas la samaj krom tiuj malgrandaj retuŝojn. 518 00:24:42,450 --> 00:24:45,310 Do kiel ni povas iri sur faktoranta iuj de ĉi ekstere? 519 00:24:45,310 --> 00:24:48,740 >> Nu mi proponas precize ke en la sekva versio. 520 00:24:48,740 --> 00:24:53,890 Do jen en versio unu, mi havas la ĝustajn samajn dosierojn, plus kelkaj aliaj. 521 00:24:53,890 --> 00:24:59,730 Jen index.php-- kaj eĉ se vi neniam vidis PHP antaŭ, 522 00:24:59,730 --> 00:25:05,511 kion mi verŝajne faras solvi tiun problem-- bazita sur kion vi vidas tie? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Jes, estas ke malpeza devontigo? 525 00:25:12,760 --> 00:25:13,450 Neniu? 526 00:25:13,450 --> 00:25:16,020 Jes, daŭrigu. 527 00:25:16,020 --> 00:25:17,380 >> Spektantaro: [inaudible] 528 00:25:17,380 --> 00:25:18,380 >> DAVID Malan: Yep. 529 00:25:18,380 --> 00:25:20,380 >> Spektantaro: [inaudible] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID Malan: Mi bezonas vin por paroli iomete pli laŭte. 532 00:25:28,669 --> 00:25:31,084 >> Spektantaro: [inaudible] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID Malan: Bone, bone. 535 00:25:36,660 --> 00:25:38,620 Kaj mi think-- estis Malfacile aŭdi you-- sed mi 536 00:25:38,620 --> 00:25:42,690 pensi kion vi fariĝas ĉe estas ke la etikedoj kiu estis komuna ĝis supro, 537 00:25:42,690 --> 00:25:47,710 kaj la etikedoj kiu estis komunaj en la fundo, nun estas faktorita eksteren, 538 00:25:47,710 --> 00:25:51,140 aŭ forigitaj al kion dosierojn? 539 00:25:51,140 --> 00:25:53,476 Header.php kaj footer.php-- kaj ni tuj 540 00:25:53,476 --> 00:25:55,600 fari kelkajn retuŝojn al alparoli la konzernon vi nur 541 00:25:55,600 --> 00:25:59,370 levita pri la nombroj sxangxado, por Ekzemple, se mi aŭdis vin korekte. 542 00:25:59,370 --> 00:26:02,060 >> Sed tio ŝajnas esti la esenco de ĝi. 543 00:26:02,060 --> 00:26:04,820 Se ekzistis enorma kvanto de redundo ĉe la supro de la paĝo, 544 00:26:04,820 --> 00:26:06,736 kaj grandega kvanto de redundo ĉe la fundo, 545 00:26:06,736 --> 00:26:09,280 ni laŭvorte nur kolorigon kaj tranĉi tiun enhavon ekstere, 546 00:26:09,280 --> 00:26:13,270 metu ĝin en separata file-- samkiel la ideo de CSS, kie ni faktorita eksteren 547 00:26:13,270 --> 00:26:16,710 tre simila estetiko, metis ĝin en separata skalara PHP -dosiero, 548 00:26:16,710 --> 00:26:20,340 uzi la postulus mechanism-- kiu estas kiel C akraj include-- kiu 549 00:26:20,340 --> 00:26:23,570 Estas esence kiel diri iri ekpreni la enhavo de header.php, 550 00:26:23,570 --> 00:26:25,370 kaj kopiu kaj gluu ilin tie. 551 00:26:25,370 --> 00:26:29,490 >> Sed kion tio signifas estas ke nun en index.php, mi havas tiujn du liniojn. 552 00:26:29,490 --> 00:26:32,130 En lectures.php, mi ankaŭ havas tiuj du linioj. 553 00:26:32,130 --> 00:26:35,230 En week0.php, mi ankaŭ havas tiuj du linioj. 554 00:26:35,230 --> 00:26:38,380 >> Do nun, se mi volas ŝanĝi la titolo de ĉiu el miaj paĝoj, 555 00:26:38,380 --> 00:26:40,530 aŭ mi volas ŝanĝi la fundamenta strukturo, 556 00:26:40,530 --> 00:26:44,380 Mi povas ŝanĝi ĝin nun en nur unu loko, aŭ du places-- header kaj footer, 557 00:26:44,380 --> 00:26:45,429 respektive. 558 00:26:45,429 --> 00:26:47,970 Nun la kodo komencantan rigardi iom pli kripta, dekstra? 559 00:26:47,970 --> 00:26:53,590 Sed se vi pensu pri kio la paĝo estas doing-- se mi petante week0.php, 560 00:26:53,590 --> 00:26:59,880 samkiel sur la desegnado super here-- kiam week0.php petas, 561 00:26:59,880 --> 00:27:00,960 kion tio signifas? 562 00:27:00,960 --> 00:27:04,410 >> Laŭvorte, la dosiero estas petis de la retumilo. 563 00:27:04,410 --> 00:27:06,240 La TTT server-- a.k.a. 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- ekprenas ĉi dosiero, week0.php, kaj legas 565 00:27:09,250 --> 00:27:10,780 ĝi supre sube, maldekstre dekstren. 566 00:27:10,780 --> 00:27:15,400 Sur linio unu, ĝi tuj renkontas malferma krampo demandosigno PHP, postulas 567 00:27:15,400 --> 00:27:17,872 kaplinio skalara PHP, kaj tiel kion la PHP interpretisto 568 00:27:17,872 --> 00:27:20,580 does-- ke estas konstruita en la ttt servilo, ĉar ni preconfigured 569 00:27:20,580 --> 00:27:24,580 ĝin you-- ĝi aŭtomate iras en header.php, kopias la enhavon, 570 00:27:24,580 --> 00:27:25,640 almetas ilin tie. 571 00:27:25,640 --> 00:27:28,790 >> Sed tiam la interpretisto renkontoj demandosigno proksime krampo, 572 00:27:28,790 --> 00:27:30,320 Do ĉio farita pensanta. 573 00:27:30,320 --> 00:27:33,400 Nun nur blinde kraĉas el linioj du tra sep, 574 00:27:33,400 --> 00:27:35,240 ĉar ĝi estas nur krudan HTML. 575 00:27:35,240 --> 00:27:38,470 Gets vicigi ok kaj agas sama magio again-- malfermante la dosieron, 576 00:27:38,470 --> 00:27:41,460 kaptante la enhavo, kaj postulanta ilin aŭ alglui ilin 577 00:27:41,460 --> 00:27:42,480 Bone aŭ tie. 578 00:27:42,480 --> 00:27:44,210 >> Sed mi nur aludis al cimon. 579 00:27:44,210 --> 00:27:48,610 Jen parta paŝon dorsdirekte ĉar se ni rigardas en header.php, 580 00:27:48,610 --> 00:27:50,850 Mi speco de tranĉi angulo. 581 00:27:50,850 --> 00:27:56,250 Kio trajto Mi donis supre por gajni ĉi diskutindaj bona dezajno? 582 00:27:56,250 --> 00:27:57,305 Yeah? 583 00:27:57,305 --> 00:27:58,180 Spektantaro: [inaudible] 584 00:27:58,180 --> 00:28:00,570 DAVID Malan: Yeah, I speco de tranĉita netriviala angulo. 585 00:28:00,570 --> 00:28:04,489 Vi atentigis ke kio ŝanĝas estis la titolo, la nombro en la titolo, 586 00:28:04,489 --> 00:28:05,530 kaj la nombro en la H1. 587 00:28:05,530 --> 00:28:08,170 Do mia solvo estis, okej, ni simple renomi la paĝo, 588 00:28:08,170 --> 00:28:10,080 kaj ne trakti tion problemo whatsoever. 589 00:28:10,080 --> 00:28:12,130 Do jen parta paŝi malantaŭen por certa. 590 00:28:12,130 --> 00:28:14,300 >> Sed kio estas rimarkinda tie Estas ke kion mi faris 591 00:28:14,300 --> 00:28:17,200 Estas alie faktorita el ĉiuj komunaj aĵoj. 592 00:28:17,200 --> 00:28:21,520 Kaj en footer.php, rimarki Mi faktorita el ĉiuj de tiu, kvankam malpli, 593 00:28:21,520 --> 00:28:22,790 komuna vazaro. 594 00:28:22,790 --> 00:28:26,070 Do mi bezonas iel nun povos preni alian paŝon antaŭen kaj ripari 595 00:28:26,070 --> 00:28:27,160 ke titolo temoj. 596 00:28:27,160 --> 00:28:28,180 Do ni faru tion. 597 00:28:28,180 --> 00:28:35,060 >> Lasu min iri en mia dua versio tie, kiu, denove, ĝi havas la samajn dosierojn 598 00:28:35,060 --> 00:28:36,825 krom unu nova aldono. 599 00:28:36,825 --> 00:28:38,950 Kaj ĝi estas iom pli parolema, sed ni vidu, se ni 600 00:28:38,950 --> 00:28:40,550 povas inciteti dise kio okazas tie. 601 00:28:40,550 --> 00:28:45,370 Do anstataŭ postulanta header.php kaj footer.php, 602 00:28:45,370 --> 00:28:50,180 Mi ŝajnas esti nur postulanta unu file-- nomita kompreneble helpers.php. 603 00:28:50,180 --> 00:28:52,560 Kaj lasu min kondiĉas nun, kio estas ene de helpers.php 604 00:28:52,560 --> 00:28:55,330 estas nur aro de funkcioj ke mi skribis, samkiel antaŭe. 605 00:28:55,330 --> 00:28:57,550 Sed mi nomas ŝin helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Nun ŝajne, en linio tri kaj 10, mi estas 607 00:29:00,370 --> 00:29:02,840 nomante du functions-- redonu header, render piedlinio. 608 00:29:02,840 --> 00:29:05,040 Tiuj ne venas kun PHP, mi skribis tiujn mem. 609 00:29:05,040 --> 00:29:07,880 Mi metis ilin en helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Nun, ni nur vidis tiun sintakson fojon, kaj tio estis la super mallonga. 611 00:29:11,210 --> 00:29:15,330 Sed tio estas ŝajne argumento render header, la funkcio. 612 00:29:15,330 --> 00:29:16,450 Kial mi scias tion? 613 00:29:16,450 --> 00:29:18,522 Nu ĉi tie estas proksime paren, jen malfermita paren. 614 00:29:18,522 --> 00:29:21,230 Kaj kompreneble, ĝuste kiel en C, io inter la krampoj 615 00:29:21,230 --> 00:29:23,350 Estas input-- aŭ argumento al la funkcio. 616 00:29:23,350 --> 00:29:26,710 >> Kio estas la datumtipo de tiu argumento, bazita sur kion mi reliefigis? 617 00:29:26,710 --> 00:29:30,820 Kion tiuj rektaj krampoj indiki, bazita sur pasinta semajno? 618 00:29:30,820 --> 00:29:33,390 Jes, ĝi estas tabelo specife asocieca tabelo. 619 00:29:33,390 --> 00:29:35,700 Kaj tiu sintakso koncedite estas iom funky, 620 00:29:35,700 --> 00:29:38,860 sed tiu estas nur pasanta en unu ŝlosilo valoro paro. 621 00:29:38,860 --> 00:29:43,530 La ŝlosilo estas, citaĵo unquote titolo, kaj la valoro estas CS50. 622 00:29:43,530 --> 00:29:46,220 >> Se ni faris tiun en C, ĝi povus anstataŭe 623 00:29:46,220 --> 00:29:49,400 aspektas pli kiel tiu, nur citaĵo unquote CS50-- 624 00:29:49,400 --> 00:29:52,460 aŭ reale estus krispa krampoj, aŭ iel simile en C, 625 00:29:52,460 --> 00:29:55,580 kie la ŝlosilo estas nulo, kaj la valoro estas CS50. 626 00:29:55,580 --> 00:29:59,840 Sed denove, en PHP, kvankam la sintakso estas, denove, iom stranga, 627 00:29:59,840 --> 00:30:02,860 ĝi permesas pasi en vortoj anstataŭ nombroj 628 00:30:02,860 --> 00:30:05,120 asocii klavoj kun valoroj. 629 00:30:05,120 --> 00:30:06,390 >> Do kion signifas ĉi ĉiuj signifas? 630 00:30:06,390 --> 00:30:09,750 Se mi iras en helpers.php, ni rigardu tiun funkcion. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, prefere renderHeader estas mia funkcio, 632 00:30:13,620 --> 00:30:16,220 kaj mi scias, ke pro mi vidas la funkcio ŝlosilvorto ĉi tie. 633 00:30:16,220 --> 00:30:19,450 Jen nova de C-- ĝi ŝajne prenas argumenton nomita data-- 634 00:30:19,450 --> 00:30:22,400 sed mi povus esti nomata ĉi nenion, sed mi nomis ĝin datumoj, 635 00:30:22,400 --> 00:30:25,090 nur esti iom clean-- kaj nur preni diveni, speciale 636 00:30:25,090 --> 00:30:28,173 se vi planas en iuj aliaj altan nivelon lingvo antaŭe, ion 637 00:30:28,173 --> 00:30:29,820 super C, koncepte. 638 00:30:29,820 --> 00:30:33,820 >> Kion faras egala malferma krampo kvadrata krampo probable signifas? 639 00:30:33,820 --> 00:30:35,540 Aŭ kio povus signifi? 640 00:30:35,540 --> 00:30:39,660 Ni ne vidis tiun en C. Yeah? 641 00:30:39,660 --> 00:30:40,480 >> Malplena tabelo. 642 00:30:40,480 --> 00:30:45,440 Specife, ĉi tio signifas ke se la uzanto ne nomu renderHeader 643 00:30:45,440 --> 00:30:49,340 kun argumento, mi ankoraŭ iranta havi argumenton nomita datumoj, 644 00:30:49,340 --> 00:30:52,327 sed ĝia defaŭlta valoro estas tuj estos malplena aro. 645 00:30:52,327 --> 00:30:53,660 Do estas nur belan oportuneco. 646 00:30:53,660 --> 00:30:56,493 Mi ne devas krias al la uzanto, aŭ diri vi uzis mian funkcion erara. 647 00:30:56,493 --> 00:30:59,849 Mi povas nur doni al la uzanto aprioran valoro, se mi ne aparte gravas. 648 00:30:59,849 --> 00:31:01,890 Nun ĉi tiu funkcio, Mi estas tuj skuos miajn manojn ĉe. 649 00:31:01,890 --> 00:31:07,620 Sed tiu ekstrakto funkcio permesas nin pasi ĉi tiujn variablojn en datumoj 650 00:31:07,620 --> 00:31:10,360 en header.php en jena vojo. 651 00:31:10,360 --> 00:31:13,100 Kaj tiu estas la lasta peco, Mi opinias, de funky sintakso. 652 00:31:13,100 --> 00:31:15,860 Jen mia nova versio de header.php-- ĝi 653 00:31:15,860 --> 00:31:20,140 kutimis diri, laŭvorte, malferma krampo titolo CS50, kaj ke estis ĝi. 654 00:31:20,140 --> 00:31:21,766 Kaj same por la H1. 655 00:31:21,766 --> 00:31:24,310 >> Nun ŝajne diras io bela funky. 656 00:31:24,310 --> 00:31:28,030 Kaj lasu min simpligi ĉi dummomente jene. 657 00:31:28,030 --> 00:31:31,020 Jen kion mi havas ŝanĝis mian titolon por esti. 658 00:31:31,020 --> 00:31:35,140 Tamen, ĝi iĝas iom malbela konstante malferma krampoj kun PHP, 659 00:31:35,140 --> 00:31:36,610 kaj tiam uzi la presita funkcio. 660 00:31:36,610 --> 00:31:40,810 Ĝi rezultas ke PHP havas stenografio skribmaniero por tio, kio estas nur 661 00:31:40,810 --> 00:31:45,050 egala signo, kiu estas teknike funkcio nomita eĥon anstataŭ print, 662 00:31:45,050 --> 00:31:46,800 sed ĝi estas la sama afero, efektive. 663 00:31:46,800 --> 00:31:48,440 >> Ke nur aspektas bone. 664 00:31:48,440 --> 00:31:50,510 Estas nur sintaksa sukero, se vi volas, 665 00:31:50,510 --> 00:31:52,260 kiu faras mian kodon aspektos iom pli bona. 666 00:31:52,260 --> 00:31:54,010 Sed rezultas, kaj ni vidos ĉi denove 667 00:31:54,010 --> 00:31:57,420 antaŭ longe, ni devas voki tiun agrene longa funkcio nomita 668 00:31:57,420 --> 00:32:00,582 HTML specialaj signoj en PHP, ĉar ĝi rezultas 669 00:32:00,582 --> 00:32:02,790 Estas certaj enigaĵoj ke la uzanto povu doni nin, 670 00:32:02,790 --> 00:32:05,160 aŭ ke uzantoj povus doni al ni, kiuj tuj rompos nian retejon. 671 00:32:05,160 --> 00:32:07,035 Sed ni vidos, ke sekva semajno kun JavaScript. 672 00:32:07,035 --> 00:32:10,740 Sed nuntempe, nur scias, ke dosiero, headers.php, simple 673 00:32:10,740 --> 00:32:13,040 prenas la titolon kiu Mi pasis en, ĝi faras 674 00:32:13,040 --> 00:32:17,380 ke ĝi estas sekura por esti injektita en retejo paĝo, kaj ĝi kraĉas ĝin kiel mian titolon 675 00:32:17,380 --> 00:32:18,640 kaj ĉar mia H1. 676 00:32:18,640 --> 00:32:24,440 Do, se mi iros al tiu versio nun, rimarkos ke lekcioj havas sian titolon reen, 677 00:32:24,440 --> 00:32:28,630 semajno nulo havas sian titolon reen, kaj efektive, la HTML Mi produktanta 678 00:32:28,630 --> 00:32:32,110 estas identa al kio mia unua versio was-- krom mia spaceto, 679 00:32:32,110 --> 00:32:35,150 ĉar mi komencis formatado mia kodo iom malsame. 680 00:32:35,150 --> 00:32:38,082 Sed mi generis ĉiu la kodo interesas min. 681 00:32:38,082 --> 00:32:39,790 Do lasu min paŭzo por nur momento kaj vidi 682 00:32:39,790 --> 00:32:42,200 se estas neniu demandoj aŭ konfuzon mi kreis. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Bone, do ni tordi iom malfacila tie 685 00:32:48,150 --> 00:32:51,500 vidi se tie estas ŝanco por plibonigo. 686 00:32:51,500 --> 00:32:56,130 Helpers.php ankaŭ havis tiun funkcio, nomita renderFooter. 687 00:32:56,130 --> 00:32:59,652 Kaj kio estas notinda pri renderHeader kaj renderFooter? 688 00:32:59,652 --> 00:33:02,610 Kaj cetere, por hodiaŭa celoj, scias ke la ekstrakto funkcio estas nur 689 00:33:02,610 --> 00:33:08,280 Mia maniero de forpaso argumentoj en header.php kaj footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Pardonon? 692 00:33:11,780 --> 00:33:13,056 >> Spektantaro: [inaudible] 693 00:33:13,056 --> 00:33:15,180 DAVID Malan: Yeah, mi nur ŝanĝis la postulas linion. 694 00:33:15,180 --> 00:33:19,410 Do laŭvorte, mi faris la peko de kopii kaj bati, tamen denove. 695 00:33:19,410 --> 00:33:21,920 Ĝi estas ne grandega nombro de linioj, sed venu on-- 696 00:33:21,920 --> 00:33:25,220 se mi kopii kaj alglui ĉio nur ŝanĝi unu malgranda vorto, 697 00:33:25,220 --> 00:33:28,610 kaj la unu malgranda vorto ke Alan punktoj Out estas piedlinio tie, kontre header tie. 698 00:33:28,610 --> 00:33:30,670 Alie, ĉio estas identa, krom, 699 00:33:30,670 --> 00:33:32,180 Kompreneble, la funkcio de nomoj. 700 00:33:32,180 --> 00:33:33,690 Do kion ni povis fari pli bonan? 701 00:33:33,690 --> 00:33:39,810 >> Nu lasu min malfermi ĉi versio tie, per kiu en helpers.php, 702 00:33:39,810 --> 00:33:42,300 kial ne mi simple akiri iom pli lerta pri tio? 703 00:33:42,300 --> 00:33:46,410 Skribi iomete pli komplika kodo, sed nomas ĝin repagi? 704 00:33:46,410 --> 00:33:48,470 Do kion mi fundamente ŝanĝiĝis? 705 00:33:48,470 --> 00:33:51,770 >> Ĝi prenas argumenton now-- du argumentoj, datumojn ankoraŭ. 706 00:33:51,770 --> 00:33:54,444 Kaj tiam kio estas la unua nomo probable uzata por, 707 00:33:54,444 --> 00:33:55,860 bazita sur kion vi legas tie? 708 00:33:55,860 --> 00:33:58,452 Eĉ se kelkaj el la sintakso estas ankoraŭ nova. 709 00:33:58,452 --> 00:33:59,660 Kio estas dolaro signo ŝablono? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Pardonon? 712 00:34:03,016 --> 00:34:03,710 >> Publiko: kaplinio aŭ piedlinio. 713 00:34:03,710 --> 00:34:04,510 >> DAVID Malan: kaplinio aŭ piedlinio. 714 00:34:04,510 --> 00:34:07,134 Do ŝajne, mi decidis ke se lin sola kiu sxangxas 715 00:34:07,134 --> 00:34:10,159 estas kion mi deziras ŝablono al print-- kaj per ŝablono 716 00:34:10,159 --> 00:34:13,100 Mi volas diri estas blueprint por kodo kiun mi volas elirigi, 717 00:34:13,100 --> 00:34:16,350 sed mi volas ŝtopi en iuj values-- do se ĝi estas nur kaplinio 718 00:34:16,350 --> 00:34:20,440 aŭ piedlinio, kial ne mi parameterize tio kaj vokas la argumento dolaro signo 719 00:34:20,440 --> 00:34:21,409 ŝablono? 720 00:34:21,409 --> 00:34:26,250 Kaj tiam ĉi funky sintakso permesas min krei padon en variablo tie. 721 00:34:26,250 --> 00:34:28,030 >> Do dolaro signo vojo estas variablo. 722 00:34:28,030 --> 00:34:31,120 Kion faras ĉi sintakso do, se vi konas? 723 00:34:31,120 --> 00:34:32,512 Yeah? 724 00:34:32,512 --> 00:34:34,065 >> Spektantaro: [inaudible] 725 00:34:34,065 --> 00:34:34,940 DAVID Malan: Ĝuste. 726 00:34:34,940 --> 00:34:37,600 Se ŝablono estas, citaĵo unquote, kaplinio, aŭ se ŝablono estas, 727 00:34:37,600 --> 00:34:41,170 citaĵo unquote, piedlinio, tiu linio tie ke mi reliefigis, linio ok, 728 00:34:41,170 --> 00:34:46,330 Estas simple porti tiun nomon, kiel kaploko, kaj concatenando ŝin kun skalara PHP. 729 00:34:46,330 --> 00:34:49,750 Do ni ne havas ĉi operatoro en C. Ĉi skalara operatoro estas 730 00:34:49,750 --> 00:34:54,520 mirinda afero en PHP-- se vi estas familiara kun JavaScript aŭ Java, 731 00:34:54,520 --> 00:34:56,949 vi povas uzi la pli subskribi fari kunmeto. 732 00:34:56,949 --> 00:34:59,974 >> En C, ĝi estas doloro en la neck-- kaj Mi tiom bedaŭras, en p-aro ses, 733 00:34:59,974 --> 00:35:02,390 vi tuj devos fari this-- estas doloro en la kolo 734 00:35:02,390 --> 00:35:03,930 al concatenate kordoj. 735 00:35:03,930 --> 00:35:04,670 Kial? 736 00:35:04,670 --> 00:35:06,580 Nu, ĉar se vi havas ĉeno kiu estas tio longe, 737 00:35:06,580 --> 00:35:09,538 kaj alia ĉeno kiu estas tio longe, vi ne povas nur ŝtopi ilin kune. 738 00:35:09,538 --> 00:35:11,070 Kion vi anstataŭe devas fari en C? 739 00:35:11,070 --> 00:35:11,680 Yeah? 740 00:35:11,680 --> 00:35:12,380 >> Spektantaro: [inaudible] 741 00:35:12,380 --> 00:35:15,090 >> DAVID Malan: Vi havas malloc memoro, aŭ uzi tabelo sur la stako. 742 00:35:15,090 --> 00:35:17,214 Kaj vi vere devas fari ke tabelo sufiĉe granda 743 00:35:17,214 --> 00:35:20,940 konveni ĉi plus ĉi, plus la backslash nula. 744 00:35:20,940 --> 00:35:24,994 Tiam concatenate ilin kune uzanta moveti kato aŭ permane kun por ciklo, 745 00:35:24,994 --> 00:35:26,160 aŭ ajna nombro de teknikoj. 746 00:35:26,160 --> 00:35:27,760 Kaj ni klarigos al vi paron en p-aro ses. 747 00:35:27,760 --> 00:35:29,080 >> Ĝi estas doloro en la kolo. 748 00:35:29,080 --> 00:35:34,190 Kaj tiu estas vere kion mi volas diri pri ĉi kontre this-- kiel C kontre PHP. 749 00:35:34,190 --> 00:35:36,870 Vi nur akiris tiom multe pli funcionalidad senpage, 750 00:35:36,870 --> 00:35:39,030 por ke vi povas enfokusigi, ideale, sur la amuza 751 00:35:39,030 --> 00:35:41,190 parto de kodigo, la projekton vi volas solvi, 752 00:35:41,190 --> 00:35:43,190 anstataŭ la malalta nivelo minutiae. 753 00:35:43,190 --> 00:35:49,840 >> Do ĉi nur generas header.php aŭ footer.php bazita sur kiu mi vokas. 754 00:35:49,840 --> 00:35:52,280 Kaj efektive, se mi iras en index.php, avizo 755 00:35:52,280 --> 00:35:56,230 ĉio tio, kio changed-- Anstataŭ nomante redonu kaplinio aŭ piedlinio redonu, 756 00:35:56,230 --> 00:36:00,230 Mi vokas repagi, sekvata de la nomo de la ŝablono, kiun mi volas fari. 757 00:36:00,230 --> 00:36:02,370 Kaj vi vidos ĉi tion, ankaŭ, en problemo starigis sep, 758 00:36:02,370 --> 00:36:05,530 per kiu ni permesos uzi la sama funkcio por fari kukojn 759 00:36:05,530 --> 00:36:07,550 kaj aroj da malsamaj retpaĝoj. 760 00:36:07,550 --> 00:36:10,570 >> Do anstataŭ logxas tro multe pli sur tiujn details-- 761 00:36:10,570 --> 00:36:13,210 kiun vi vidos denove en problemo aro seven-- ni rigardu 762 00:36:13,210 --> 00:36:16,850 ĉe nun la komenco de solvo al pli interesa problemo. 763 00:36:16,850 --> 00:36:19,310 Tiel ege, nenion ni havas faris savis datumoj. 764 00:36:19,310 --> 00:36:22,920 Fakte, la nura tempo ni iam savis io ni faris en tiu klaso 765 00:36:22,920 --> 00:36:31,030 estas, kiam ni havis tre simplan demo kelktempe dorson, per kiu ni uzis dosiero IO en C, 766 00:36:31,030 --> 00:36:34,520 kaj mi opinias, ke mi tajpas en mia nomo, kaj Hannah nomo, kaj Maria la nomo 767 00:36:34,520 --> 00:36:37,610 aŭ eble Andy nomon, kaj tiam ni savis CSV file-- 768 00:36:37,610 --> 00:36:39,430 komo apartigis valorojn dosiero. 769 00:36:39,430 --> 00:36:43,530 >> Kaj ni uzis fopen-- mi pensas ni uzis fprintf kiel mi memoras, 770 00:36:43,530 --> 00:36:44,910 kaj ni savis dosiero. 771 00:36:44,910 --> 00:36:46,920 Nun, kiu estas la plej simpla formo de datumbazo. 772 00:36:46,920 --> 00:36:50,230 Se vi volas fari retejon por la Frosh IMs programon, per kiu unuajaruloj 773 00:36:50,230 --> 00:36:53,390 povas registriĝi por sporta, vi ideale volas fari ion kun tiu datumo. 774 00:36:53,390 --> 00:36:55,370 Pasintsemajne, ni faris nenion kun la data-- ni ĵus diris, 775 00:36:55,370 --> 00:36:56,661 vi registras, ne vere. 776 00:36:56,661 --> 00:36:58,950 Aŭ eble mi retpoŝtis la Proctor, kaj ke estis ĝi. 777 00:36:58,950 --> 00:37:02,110 >> Sed estus agrable, se mi povus doni tiun proctor CSV-dosiero, 778 00:37:02,110 --> 00:37:03,340 kiel Excel dosiero. 779 00:37:03,340 --> 00:37:05,090 Aŭ pli bona ankoraŭ, estus estus bone se mi povus 780 00:37:05,090 --> 00:37:08,830 metis tiujn uzulajn nomojn kaj dormejo nomoj kaj ĉiuj de tiu 781 00:37:08,830 --> 00:37:11,740 en datumbazo kiu nur vivas por ĉiam, 782 00:37:11,740 --> 00:37:13,530 ĝis mi elektas forigi la datumojn. 783 00:37:13,530 --> 00:37:15,645 Al datumbazo kiu permesas min konsulti informo. 784 00:37:15,645 --> 00:37:18,070 Kaj efektive, jen kion datumbazo estas. 785 00:37:18,070 --> 00:37:20,470 >> Ni enkondukos hodiaŭ, kaj venontsemajne, tro, teknologio 786 00:37:20,470 --> 00:37:25,020 nomata SQL-- Strukturita Query a Lingvo, kiu estas alia lingvo. 787 00:37:25,020 --> 00:37:28,750 Ĝi estas esence programado lingvo, sed por datumbazoj. 788 00:37:28,750 --> 00:37:31,760 Kaj datumbazon por nun, nur pensi kiel súper eleganta versio 789 00:37:31,760 --> 00:37:35,710 de Microsoft Excel, aŭ Google Kalkultabeloj, aŭ Apple Numeroj. 790 00:37:35,710 --> 00:37:39,950 Ĝi estas ĝenerale programo kiu permesas vi stoki tutan faskon da datumoj 791 00:37:39,950 --> 00:37:43,960 en vicoj kaj kolumnoj, tute kiel vi eble en Excel. 792 00:37:43,960 --> 00:37:47,100 >> Sed kio estas agrabla, speciale se ni ne estas súper konata kun Excel, 793 00:37:47,100 --> 00:37:52,040 kio SQL permesas fari estas query ĉi informo skribante linioj de kodo 794 00:37:52,040 --> 00:37:55,220 kie vi povas, eĉ se via datumbazo havas milionoj vicoj en ĝi, 795 00:37:55,220 --> 00:37:57,190 vi povas trovi aferojn super rapida. 796 00:37:57,190 --> 00:37:59,950 Fakte, Excel estas aparte malbona ĉe granda datumoj aroj. 797 00:37:59,950 --> 00:38:02,460 Kaj fakte, ĝis kelkaj jaroj, rezultis 798 00:38:02,460 --> 00:38:08,890 Excel nur permesos stoki ĝis 65.535 vicoj de data-- kiu 799 00:38:08,890 --> 00:38:12,020 sonas multe, sed ĉe la tempo mi estis grad studento, 800 00:38:12,020 --> 00:38:14,920 Kaj mi memoras stumblanta super ĉar mi estis generante 801 00:38:14,920 --> 00:38:17,900 CSV dosierojn por mia esploro kaj mi volis analizi ilin rapide 802 00:38:17,900 --> 00:38:19,530 por nur malfermanta supre en Excel. 803 00:38:19,530 --> 00:38:23,730 Kompreneble, mia komputilo nur frakasis, ĉar mi havis pli ol 65.000 vicoj. 804 00:38:23,730 --> 00:38:27,210 >> Sed kien la 65.535 venas? 805 00:38:27,210 --> 00:38:29,670 Kio estis Microsoft faras, supozeble? 806 00:38:29,670 --> 00:38:32,430 Se vi estas bona kun via potencoj de du? 807 00:38:32,430 --> 00:38:37,160 Jes, ili uzas 16-bita valoro por reprezenti la vico nombro. 808 00:38:37,160 --> 00:38:41,310 Kaj du al 16 estas 65,536-- minus unu, ĉar se vi 809 00:38:41,310 --> 00:38:45,414 nulo indekso signifas ke estis la plej nombro de vicoj mi povus havi. 810 00:38:45,414 --> 00:38:46,830 Kaj ĝi estis nur dezajno decido. 811 00:38:46,830 --> 00:38:52,760 Savante 16 bitoj, ili limigis min 16.000 vicoj, anstataŭ 4 miliardoj, 812 00:38:52,760 --> 00:38:54,322 kiun mi povus esti havinta ideale. 813 00:38:54,322 --> 00:38:57,030 Sed nuntempe, ni tuj enkonduki tiun pli en TTT kuntekston. 814 00:38:57,030 --> 00:39:00,390 Kaj kio estas agrabla pri SQL estas ke eĉ kvankam ĝi estas sufiĉe potenca kaj bela 815 00:39:00,390 --> 00:39:04,050 malnaiva, vere abscesoj malsupren al kvar ŝlosilaj operacioj, kvar 816 00:39:04,050 --> 00:39:08,060 ŝlosilo funkcioj, se vi will-- elekti, por rekuperi datumojn, serĉado 817 00:39:08,060 --> 00:39:12,510 por datumo; forviŝi aŭ forigi datumojn; enmeti por aldoni vicoj al la datumbazo; 818 00:39:12,510 --> 00:39:13,410 kaj ĝisdatigo. 819 00:39:13,410 --> 00:39:17,010 Do se vi iam uzis Google Kalkultabeloj, Apple Nombroj, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, vi estos farinta plej verŝajne, ĉiuj 821 00:39:19,310 --> 00:39:22,530 de tiuj operacioj kiel homo de nur uzanta vian klavaron kaj mouse-- 822 00:39:22,530 --> 00:39:26,050 enmeto datumojn, uzante vian okulojn elekti aŭ serĉi datumojn, 823 00:39:26,050 --> 00:39:28,360 aŭ ĝisdatigo datumoj, aŭ forigi datumojn. 824 00:39:28,360 --> 00:39:29,870 >> Do kio faras ĉi tiun mezumon? 825 00:39:29,870 --> 00:39:34,300 Nu, antaŭ-instalitaj en CS50 Ide estas programo nomita MySQL. 826 00:39:34,300 --> 00:39:37,050 Ĝi estas libera, Malferma-fonto datumbazo kiu estas super populara. 827 00:39:37,050 --> 00:39:40,590 Facebook, ekzemple, uzas ĝin por tiu tago, inter aliaj iloj kiujn ili uzas. 828 00:39:40,590 --> 00:39:44,300 Kaj multan tre populara retejoj uzas en granda parto ĉar ĝi estas rapida, 829 00:39:44,300 --> 00:39:45,230 kaj ĉar ĝi estas libera. 830 00:39:45,230 --> 00:39:46,820 Kvankam certe alternativoj ekzistas. 831 00:39:46,820 --> 00:39:49,580 Kaj iuj el vi povus dabble kun alternativoj por fina projektoj. 832 00:39:49,580 --> 00:39:55,330 >> Jen ekrankopio, dume, de ttt-bazita ilo nomita phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Estas hazardo ke tiu ret-bazita ilo ankaŭ 834 00:39:58,260 --> 00:40:01,720 skribita en lingvo, PHP, sed kio ĝi estas signifita fari 835 00:40:01,720 --> 00:40:04,620 estas doni nin reta interfaco al datumbazo. 836 00:40:04,620 --> 00:40:07,180 Ĉar MySQL tipe estas io, historie, vi 837 00:40:07,180 --> 00:40:08,770 estus interagi kun nur kun komandlinio. 838 00:40:08,770 --> 00:40:10,811 Kaj estus súper ĝena kaj arcano havi 839 00:40:10,811 --> 00:40:14,487 tajpi tekstaj komandoj por elekti datumoj, enmeti datumojn, forviŝi kaj datumoj. 840 00:40:14,487 --> 00:40:16,820 Do iuj homoj sur la interreto skribis reta programo 841 00:40:16,820 --> 00:40:18,900 ke nur ni administri la datumoj en nia datumbazo. 842 00:40:18,900 --> 00:40:23,040 Estas kiel duobla musklako al Excel, kaj kurante reta versio de gxi. 843 00:40:23,040 --> 00:40:26,370 >> Kaj kion vi estas iranta uzi ĉi por finfine venontsemajne, ne en p-aro ses, 844 00:40:26,370 --> 00:40:28,680 sed estas konstrui ion nomata CS50 Financoj, kio 845 00:40:28,680 --> 00:40:32,630 tuj havas datumbazon de uzantoj, kun uzanto nomoj kaj pasvortoj, 846 00:40:32,630 --> 00:40:34,860 dolaro kvantoj kiujn ili havas en siaj bankkontoj. 847 00:40:34,860 --> 00:40:37,280 Ĝi tuj estos io vi uzas por stoki 848 00:40:37,280 --> 00:40:39,910 la simboloj kaj la kvantoj de akcioj, ke uzantoj 849 00:40:39,910 --> 00:40:42,567 acxetis uzante virtuala dolaroj ke vi donos al ili. 850 00:40:42,567 --> 00:40:44,900 Kaj ĝi tuj permesos uzantoj registri vian retejon, 851 00:40:44,900 --> 00:40:47,190 tiel ke eĉ viajn amikojn povas agordi al via retejo 852 00:40:47,190 --> 00:40:49,360 kaj efektive enskribi, ensalutas, kaj amuziĝu 853 00:40:49,360 --> 00:40:52,807 kaj provu trovi kulpon en via kodo, kaj provu trovi erarojn en via retejo. 854 00:40:52,807 --> 00:40:55,390 Kaj ili devos simple enskribojn aldonante, efike, 855 00:40:55,390 --> 00:40:58,120 tra kodo vi skribos al via datumbazo. 856 00:40:58,120 --> 00:41:02,470 >> Ekzemple, ĉi tiu estas rapida ekrankopio kio datumbazo povus aspekti. 857 00:41:02,470 --> 00:41:05,190 Tio estis el unu el pasintjara solutions-- 858 00:41:05,190 --> 00:41:07,760 tio estas kiel mini Excel fajliloj, stokitaj en nia datumbazo, 859 00:41:07,760 --> 00:41:09,950 stokitaj en ĉi programaro nomita MySQL. 860 00:41:09,950 --> 00:41:13,260 Sur la maldekstra flanko, mi havas ŝajne donita ĉiu uzanto unika nombro. 861 00:41:13,260 --> 00:41:16,200 En la dua kolumno, mi donis ĉiuj uzanto name-- mia propra 862 00:41:16,200 --> 00:41:16,880 inter ili. 863 00:41:16,880 --> 00:41:21,430 Kaj sur la dekstra flanko, Mi donis ilin hash. 864 00:41:21,430 --> 00:41:26,760 >> Nun tiu estas efektive pasvorton sed ĝi ne estas plata teksto pasvorton. 865 00:41:26,760 --> 00:41:30,160 Ĝi estas ĉifrita pasvorto, se vi volas, aŭ hash pasvorton. 866 00:41:30,160 --> 00:41:32,000 Kiun ni revenos al antaŭ longe. 867 00:41:32,000 --> 00:41:34,340 >> Sed se vi iam legis artikolon pri kiom 868 00:41:34,340 --> 00:41:37,950 vian pasvorton? e iu banko aŭ iu retejo eble estos kompromitita, 869 00:41:37,950 --> 00:41:39,630 ĝi povas ĝenerale signifi unu el du aferoj. 870 00:41:39,630 --> 00:41:42,780 Do tio estas nur ekstrakto el ses uzantoj. 871 00:41:42,780 --> 00:41:45,460 Ĉiuj el vi nun povas diveni eksteren tra kodrompado aŭ krakas 872 00:41:45,460 --> 00:41:47,690 kion niaj ses popola pasvortoj. 873 00:41:47,690 --> 00:41:49,720 Sed se vi iam alveninta garde aŭ pardonpeto 874 00:41:49,720 --> 00:41:52,803 de entrepreno aŭ retejo parolo bedaŭras, hacker ekkomencis nia datumbazo, 875 00:41:52,803 --> 00:41:56,360 vi supozeble ŝanĝi vian Pasvorto, kio povus signifas? 876 00:41:56,360 --> 00:41:59,670 >> Nu, oni povus diri la Kompanio estis pli moronic, 877 00:41:59,670 --> 00:42:03,630 kaj estis stokante vian pasvorton en kolumno tiel, neĉifritaj. 878 00:42:03,630 --> 00:42:05,840 Kio signifas la kontraŭulo, Kiu ŝtelis la datumbazo, 879 00:42:05,840 --> 00:42:07,440 laŭvorte scias vian salutnomo kaj pasvorto. 880 00:42:07,440 --> 00:42:08,960 Tio estas la plej malbona ebla scenaro. 881 00:42:08,960 --> 00:42:11,710 Kaj kiel vi vidos en p-aro sep, do facile evitas. 882 00:42:11,710 --> 00:42:15,624 Ekzistas absolute neniu senkulpigo por ke formo de stulteco en hodiaŭa interreto. 883 00:42:15,624 --> 00:42:18,540 Two-- kaj ni trovos kelkajn artikolojn atesti la fakto, ke tiu ankoraŭ 884 00:42:18,540 --> 00:42:21,710 okazas, nonetheless-- du, eble la kontraŭulo 885 00:42:21,710 --> 00:42:23,840 ŝtelis ĉi versio de la datumbazo. 886 00:42:23,840 --> 00:42:27,110 Kiu estas ankoraŭ ia malbona, ĉar nun Ili scias ke mi havas ses klientoj, 887 00:42:27,110 --> 00:42:29,270 Mi scias la uzanto nomoj de tiuj ses klientoj, 888 00:42:29,270 --> 00:42:32,910 kaj mi konas la ĉifritajn versioj, aŭ la hashed versioj, 889 00:42:32,910 --> 00:42:34,340 de tiuj ses klientoj 'pasvortojn. 890 00:42:34,340 --> 00:42:37,010 Sed kiu el vi, kiuj eble faris [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 kie vi krakis pasvortojn, aŭ prenis Rigardu ke versio de la problemo 892 00:42:41,150 --> 00:42:46,280 aro, kial ankoraŭ iom preocupante se la antagonisto scias viajn hash 893 00:42:46,280 --> 00:42:47,435 pasvortojn? 894 00:42:47,435 --> 00:42:49,732 >> Publiko: Ĉar ili povis eniri la tuta vortaro 895 00:42:49,732 --> 00:42:50,690 en la hash funkcio. 896 00:42:50,690 --> 00:42:54,520 Kaj se via pasvorto estas vortaro vorto, [? ili povas simple match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID Malan: Ĝuste, la kontraŭulo povas simple skribi kodon, kiel kelkaj el vi 898 00:42:57,640 --> 00:43:00,526 faris por [? Hacker?] 2, whereby vi persisti super 899 00:43:00,526 --> 00:43:03,400 ĉiuj el la vortoj en la vortaro, aŭ ĉiujn eblajn kombinojn de A 900 00:43:03,400 --> 00:43:06,610 tra Z kaj unu tra nine-- kiu sonas multe, kaj ĝi estas. 901 00:43:06,610 --> 00:43:08,361 Sed por komputilo, ĝi estas sufiĉe darn rapida. 902 00:43:08,361 --> 00:43:10,610 Kaj fakte, kiu estis la punkto de [? Hacker 2,?] Estis 903 00:43:10,610 --> 00:43:12,540 preni aĵojn ke laŭvorte similas tiun, 904 00:43:12,540 --> 00:43:14,900 kaj dorsflanko inĝeniero kio fakte estis. 905 00:43:14,900 --> 00:43:17,270 >> Do ni rigardu kiel ni povas stoki ĉi pli kompetente. 906 00:43:17,270 --> 00:43:20,210 Rezultas, dankeme en MySQL, tie tuj estos datumtipoj. 907 00:43:20,210 --> 00:43:22,800 Kaj unu el la amuzaj partoj pri datumbazo dezajno, por esti honesta, 908 00:43:22,800 --> 00:43:25,810 Efektive decidi mem kial vi reprezentas la datumoj? 909 00:43:25,810 --> 00:43:29,630 Should vi reprezentas telefonnumero kiel int, kiel granda nombro, aŭ longa? 910 00:43:29,630 --> 00:43:31,630 Aŭ ĉu vi efektive faras kiel sekvenco de signoj? 911 00:43:31,630 --> 00:43:33,780 Kaj povas esti tre ne-bagatela trafojn de tiu. 912 00:43:33,780 --> 00:43:36,714 >> Fakte, unu el la fruaj, amuza germane rakontoj 913 00:43:36,714 --> 00:43:39,880 estas kiam Mark Zuckerberg estis konstruanta Facebook, ĝi estis origine skribita en, 914 00:43:39,880 --> 00:43:42,300 kaj ankoraŭ estas plejparte skribita en PHP. 915 00:43:42,300 --> 00:43:45,400 Kaj unu el la plej grandaj defioj ili alfrontis frue estis grimpante. 916 00:43:45,400 --> 00:43:48,820 Kiam oni festis aldonante lernejo post lernejo post lernejo, al mia scio, 917 00:43:48,820 --> 00:43:51,639 unu el la originalaj solvoj estis esence kopii kaj almeti 918 00:43:51,639 --> 00:43:53,430 iuj de la datumbazoj kaj iuj de la kodo, 919 00:43:53,430 --> 00:43:55,346 por ke Harvard estis kurante sur lia propra servilo, 920 00:43:55,346 --> 00:43:56,995 kaj MIT kuris sur lia propra servilo. 921 00:43:56,995 --> 00:43:59,120 Kaj tio estis kial, por kelkaj de vi kiu eble memoras, 922 00:43:59,120 --> 00:44:01,510 vi povis havi amikojn en aliaj retoj. 923 00:44:01,510 --> 00:44:05,050 >> Verŝajne vi ne havas amikojn en MIT aŭ Harvard 10 aŭ tiel jaroj, 924 00:44:05,050 --> 00:44:07,467 sed vi ne povus span retoj por parte tio. 925 00:44:07,467 --> 00:44:10,550 Kaj unu el la plej grandaj defioj por Markon kaj por entreprenoj kiel Facebook 926 00:44:10,550 --> 00:44:13,460 Efektive uzado centoj kaj miloj kaj milionoj 927 00:44:13,460 --> 00:44:14,460 de petoj por dua. 928 00:44:14,460 --> 00:44:16,501 Do tion ni komencos parolante pri tiu semajno 929 00:44:16,501 --> 00:44:19,860 vere tuj esti germane al skribanta bona programaro kaj popole 930 00:44:19,860 --> 00:44:23,040 sukcesa iloj kiuj povas pritrakti multaj uzantoj. 931 00:44:23,040 --> 00:44:25,460 >> Do ni parolos pri aferoj kiel indeksado kaj sercxo 932 00:44:25,460 --> 00:44:26,910 sed ke estas ĝi por hodiaŭ. 933 00:44:26,910 --> 00:44:28,780 Ni vidos vin por pli merkrede. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUZIKO - "Seinfeld" TEMO] 936 00:44:33,902 --> 00:44:35,943 DAVID Malan: Vi povas al ĝin, kaj subtrahu el ĝi. 937 00:44:35,943 --> 00:44:38,859 Kaj vi ne havas senmoviĝi kun iu antaŭdestinita kvanto de memoro. 938 00:44:38,859 --> 00:44:40,580 Nu, kio tio tuj nomos? 939 00:44:40,580 --> 00:44:42,369 >> Parolanto 1: Nu, kio okazas? 940 00:44:42,369 --> 00:44:43,535 Parolanto 2: Kion vi volas diri? 941 00:44:43,535 --> 00:44:44,451 Li prelegis. 942 00:44:44,451 --> 00:44:47,650 DAVID Malan: Kaj ni povas uzi funkcio nomis malloc al memory-- 943 00:44:47,650 --> 00:44:50,050 >> Parolanto 1: Kial ne brakojn movanta? 944 00:44:50,050 --> 00:44:52,450 >> Parolanto 2: Nu that's-- vi scias, ke estas normala. 945 00:44:52,450 --> 00:44:57,162 Estas nur kiel li havas nur big kolbasoj pendas tie. 946 00:44:57,162 --> 00:44:59,040 >> Parolanto 1: tio estas normala? 947 00:44:59,040 --> 00:45:03,096 >> Parolanto 2: Jes, mi kredas ke ni nur supozi li hazarde 948 00:45:03,096 --> 00:45:06,840 anstataŭis sian senodorigilo kun superglue. 949 00:45:06,840 --> 00:45:07,608