1 00:00:00,000 --> 00:00:03,920 >> [MUZIKO Ludante] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> DAVID J. Malan: Bone. 4 00:00:13,800 --> 00:00:15,640 Tio estas CS50. 5 00:00:15,640 --> 00:00:17,620 Ĉi tiu estas la komenco de la semajno ok. 6 00:00:17,620 --> 00:00:22,440 Kaj vi eble memoras ke ni cxesis lastan fojon rigardis la novan lingvon 7 00:00:22,440 --> 00:00:23,240 entute. 8 00:00:23,240 --> 00:00:25,905 Fakte, kiu estas sufiĉe malpeza kaj ĝi estas eĉ 9 00:00:25,905 --> 00:00:26,940 programlingvo. 10 00:00:26,940 --> 00:00:31,100 Estas markado lingvo kiu lasas al ni efektive strukturigi kaj fari retpaĝojn. 11 00:00:31,100 --> 00:00:33,350 Kaj kiam vi ion alian kunlabore kun this-- 12 00:00:33,350 --> 00:00:35,670 aŭ vi baldaŭ estos, se vi ne jam. 13 00:00:35,670 --> 00:00:38,530 Ni tuj uzos Laŭtemaj Stildifinoj aux CSS kiuj 14 00:00:38,530 --> 00:00:40,971 estas alia tipo de lingvo kun proprietoj kaj valoroj 15 00:00:40,971 --> 00:00:43,220 kiuj tuj ni faru Aĵoj ŝanĝi la koloro 16 00:00:43,220 --> 00:00:46,010 kaj ŝanĝi la pozicion kaj ĉi tiuj specoj de tweaks. 17 00:00:46,010 --> 00:00:49,940 Sed hodiaŭ kaj plue, ni komencas enfokusigi pli potencaj lingvoj 18 00:00:49,940 --> 00:00:52,810 fakta programlingvoj kiel PHP. 19 00:00:52,810 --> 00:00:54,880 >> Do PHP estis proksimume por iu tempo. 20 00:00:54,880 --> 00:00:56,810 Kaj kiam vi vidos, ke estis desegnita ĉefe 21 00:00:56,810 --> 00:01:00,280 frue por reala uzi en ttt disvolviĝo 22 00:01:00,280 --> 00:01:02,360 kaj fakte generi retpaĝojn. 23 00:01:02,360 --> 00:01:04,849 Do kiajn karakterizaĵoj faras lingvon 24 00:01:04,849 --> 00:01:10,040 bezonas por fari retejon paĝojn dinamike per ĝi? 25 00:01:10,040 --> 00:01:14,760 >> En aliaj vortoj, se vi volas generi enhavo dynamically-- kiel Facebook 26 00:01:14,760 --> 00:01:19,480 Newsfeed, kiu ŝanĝas senĉese, aŭ tujmesaĝiloj ke aperigi de tempo 27 00:01:19,480 --> 00:01:21,872 al time-- kiel kio estas la ŝlosila peco de funcionalidad 28 00:01:21,872 --> 00:01:24,580 vi bezonas en programlingvo kiu lasus vin dinamike 29 00:01:24,580 --> 00:01:28,070 presi novajn informojn al la ekrano? 30 00:01:28,070 --> 00:01:28,685 >> Student: Kodo. 31 00:01:28,685 --> 00:01:29,560 DAVID J. Malan: Kodo. 32 00:01:29,560 --> 00:01:30,440 OK. 33 00:01:30,440 --> 00:01:31,995 Ni prenos tion. 34 00:01:31,995 --> 00:01:35,310 Iom pli preciza. 35 00:01:35,310 --> 00:01:37,639 Mi volas diri, ni povus fari tiu kun C, sincere. 36 00:01:37,639 --> 00:01:38,930 Estus doloro en la kolo. 37 00:01:38,930 --> 00:01:41,045 But-- estas tiu devontigo? 38 00:01:41,045 --> 00:01:41,895 >> Student: Yeah. 39 00:01:41,895 --> 00:01:42,677 Variabloj, eble? 40 00:01:42,677 --> 00:01:43,760 DAVID J. Malan: Variabloj. 41 00:01:43,760 --> 00:01:44,160 OK, sekura. 42 00:01:44,160 --> 00:01:45,740 Variabloj certe povas helpi nin. 43 00:01:45,740 --> 00:01:47,020 Kaj eĉ ion pli simpla. 44 00:01:47,020 --> 00:01:50,640 Ni uzas ĝin en la tre unua programo de la unua tago 45 00:01:50,640 --> 00:01:55,686 kiam ni efektive diris "saluton mondo". 46 00:01:55,686 --> 00:01:56,570 >> Student: Print. 47 00:01:56,570 --> 00:01:57,778 >> DAVID J. Malan: Presi, dekstra? 48 00:01:57,778 --> 00:02:01,050 Print, aŭ printf en la mondo de C. Do tiu tuta tempo, 49 00:02:01,050 --> 00:02:03,362 ni havis je nia dispozicio language-- C 50 00:02:03,362 --> 00:02:05,570 en particular-- kaj eĉ Nulo por tiu afero, ke 51 00:02:05,570 --> 00:02:07,400 povas generi kordoj de teksto. 52 00:02:07,400 --> 00:02:11,090 >> Nu, se HTML, kiel ni vidis lastan semajnon, estas nur amaso de kordoj de teksto 53 00:02:11,090 --> 00:02:14,692 kvankam kun malfermita krampoj kaj fermis krampoj kaj ia rimo 54 00:02:14,692 --> 00:02:16,650 kaj kialo malantaŭ ĝi, nu do ni povis vere 55 00:02:16,650 --> 00:02:20,440 komenci generante retpaĝojn aŭ permane tajpante ilin en gedit 56 00:02:20,440 --> 00:02:23,870 aŭ en Microsoft Word, por ke matter-- ni nur bezonas tekstoredaktilo. 57 00:02:23,870 --> 00:02:26,830 >> Aŭ ni povus skribi kodon, via sugesto 58 00:02:26,830 --> 00:02:30,435 antaŭe, kiu lasus al ni dinamike generi HTML, 59 00:02:30,435 --> 00:02:32,560 kaj tio estas, kion ni iras komenci fari kun PHP 60 00:02:32,560 --> 00:02:34,900 kaj finfine eĉ kun lingvo nomata Ĝavoskripto, 61 00:02:34,900 --> 00:02:37,910 estas uzi unu lingvo por generi alian. 62 00:02:37,910 --> 00:02:40,720 Kaj efektive, jen kion Facebook kaj multaj, multaj aliaj lokoj 63 00:02:40,720 --> 00:02:44,530 faru al reale dinamike montri novajn informojn al vi. 64 00:02:44,530 --> 00:02:47,117 >> Do ni komencu per this-- oni kamufla rigardante linio, sed unu 65 00:02:47,117 --> 00:02:48,450 tio vere bela potenca. 66 00:02:48,450 --> 00:02:51,210 Tiel nun, ni estis uzante C kiu estas kompilita lingvo. 67 00:02:51,210 --> 00:02:55,050 Kaj nur rapidan recap-- kompilita lingvo havas kion karakteriza? 68 00:02:55,050 --> 00:02:59,050 Vi evidente bezonas kompili ĝin, sed kion tio signifas? 69 00:02:59,050 --> 00:03:00,505 Yeah? 70 00:03:00,505 --> 00:03:02,940 >> Student: Ĝi bezonas esti kunvenis en maŝinajn kodon. 71 00:03:02,940 --> 00:03:03,060 >> DAVID J. Malan: Bone. 72 00:03:03,060 --> 00:03:04,530 Ĝi bezonas esti ensamblados en maŝinajn kodon. 73 00:03:04,530 --> 00:03:07,340 Do prenu vian fontkodon, kiu estas ia angla-similaj. 74 00:03:07,340 --> 00:03:09,270 Vi konverti ke io malsupra nivelo, 75 00:03:09,270 --> 00:03:11,590 kiu finfine nomis objekto code-- 0-aj kaj 1-oj. 76 00:03:11,590 --> 00:03:14,830 Kaj estas tiuj 0-aj kaj 1-oj kiuj CPU, kiel tiuj faritaj de Intel, 77 00:03:14,830 --> 00:03:16,110 vere komprenis. 78 00:03:16,110 --> 00:03:19,690 >> Nun, PHP kaj Python kaj Ruby kaj Javascript kaj aroj da aliaj 79 00:03:19,690 --> 00:03:23,190 lingvoj ne kompilis lingvoj sed interpretitaj lingvoj, 80 00:03:23,190 --> 00:03:26,630 kio signifas, ke vi simple tajpu ilin kaj poste vi ne igi ilin 0-aj kaj 1-oj. 81 00:03:26,630 --> 00:03:30,790 Vi anstataŭ nur provizi tiam kiel enigo al aliulaj programo, 82 00:03:30,790 --> 00:03:32,080 nomita interpretisto. 83 00:03:32,080 --> 00:03:34,460 Kaj ke persono programo estis desegnita 84 00:03:34,460 --> 00:03:38,280 kompreni kion ĉiu kaj ĉiun simbolon en Python aŭ PHP 85 00:03:38,280 --> 00:03:42,650 aŭ Ruby aŭ ajna numero de aliajn lingvojn signifas. 86 00:03:42,650 --> 00:03:44,760 >> Kaj do ni bezonas estas io simila. 87 00:03:44,760 --> 00:03:46,350 Do fakte, mi tuj transiri al la aparato 88 00:03:46,350 --> 00:03:48,100 tie, ĝuste en ia malnova fenestro, kaj ni 89 00:03:48,100 --> 00:03:52,580 tuj iros antaŭen kaj malfermita dosiero nomata, diru, saluton. 90 00:03:52,580 --> 00:03:55,780 Nun antaŭe, mi eble savis tiu eĉ kun dosiersufikso, 91 00:03:55,780 --> 00:03:57,910 sed mi devas fari io eĉ pli simple tie. 92 00:03:57,910 --> 00:04:02,450 Mi tuj iros antaŭen kaj komenci dosiero kun ĉi kamufla sintakso. 93 00:04:02,450 --> 00:04:06,310 Do "uzanto, bin, Koverto, por medio, php. " 94 00:04:06,310 --> 00:04:10,670 >> Tio estas simple unu linio de kodo kiu estas tuj diros miaj mastruma sistemo, 95 00:04:10,670 --> 00:04:13,730 iri trovi en via loka medio ajn tio estas, 96 00:04:13,730 --> 00:04:18,149 kien PHP is-- la interpreter-- kaj bonvolu uzi tiun interpretisto 97 00:04:18,149 --> 00:04:20,589 interpreti la sekvan kodon. 98 00:04:20,589 --> 00:04:22,760 Nun, tiu estas speco de malbela trajto de PHP. 99 00:04:22,760 --> 00:04:24,980 Sed en ĉi tiu lingvo, ajna tempo skribas PHP kodo, 100 00:04:24,980 --> 00:04:29,200 Vi bezonas havi unu el tiuj malbelaj PHP etikedoj Marki la komenco 101 00:04:29,200 --> 00:04:32,220 de via code-- 00:04:37,430 >> Sed sube tie, mi nun povas fari ion sufiĉe simpla, kiel printf saluton komo 103 00:04:37,430 --> 00:04:40,922 mondo backslash n Fermi citaĵo, fermo parentezo. 104 00:04:40,922 --> 00:04:42,630 Kaj tiam nur por bono Mezuro: Mi iras 105 00:04:42,630 --> 00:04:45,380 antaŭeniri kaj apude miaj php etikedo tien 106 00:04:45,380 --> 00:04:47,390 tiel ke ĉiu aspekto bele belaj presita. 107 00:04:47,390 --> 00:04:50,780 >> Kaj tuj kiam mi alklakas Konservi, gedit estas vere inteligenta sufiĉa 108 00:04:50,780 --> 00:04:54,620 rigardi ke tre unua linio kaj rimarki, ho, vi skribas PHP-kodo. 109 00:04:54,620 --> 00:04:56,710 Lasu min sintaksa kolorigo kun la koloroj 110 00:04:56,710 --> 00:04:58,690 tie tiel ke ĝi staras el iom pli. 111 00:04:58,690 --> 00:05:01,300 Sed nun mi estas ironta malsupren al mia fina fenestro. 112 00:05:01,300 --> 00:05:02,340 Mi zomi. 113 00:05:02,340 --> 00:05:06,860 >> Tiu programo estis nomita "saluton!" tial Mi faros dot oblikvo saluton, 114 00:05:06,860 --> 00:05:07,990 sed permeson neita. 115 00:05:07,990 --> 00:05:08,490 Kaj bash. 116 00:05:08,490 --> 00:05:10,610 Ni fakte aŭdis, ke afero paro semajnoj 117 00:05:10,610 --> 00:05:13,140 en la kadro de Shellshock, unu el tiuj cimoj. 118 00:05:13,140 --> 00:05:16,240 >> Sed Aliro malpermesita ni vidis antaŭe, eble en alia kunteksto. 119 00:05:16,240 --> 00:05:19,060 Ĉu iu memoras kiom vi eble ripari ion 120 00:05:19,060 --> 00:05:22,100 kie permeso estas neita tiel? 121 00:05:22,100 --> 00:05:23,490 Kio estas la komando, almenaŭ? 122 00:05:23,490 --> 00:05:24,159 >> Student: chmod. 123 00:05:24,159 --> 00:05:26,700 DAVID J. Malan: Jes, chmod, por ŝanĝi la modon de dosiero. 124 00:05:26,700 --> 00:05:30,171 Kaj vi ricevos la tutan pli uzata por tiu proksima semajno kun posta problemo 125 00:05:30,171 --> 00:05:30,670 subiris. 126 00:05:30,670 --> 00:05:33,211 Sed nuntempe, mi tuj ŝanĝos la modo ne esti legebla, 127 00:05:33,211 --> 00:05:36,650 sed doni ĉiuj executeability privilegioj, la kapableco 128 00:05:36,650 --> 00:05:37,710 kuri ĉi tiu dosiero. 129 00:05:37,710 --> 00:05:40,360 Kaj mi tuj atribuos ke la dosiero saluton. 130 00:05:40,360 --> 00:05:45,150 >> Se mi nun faros dot oblikvo saluton eniri, vi vidu, fakte, mia programo, saluton mondo. 131 00:05:45,150 --> 00:05:48,760 Kaj kio paŝo faris mi klare saltos tute? 132 00:05:48,760 --> 00:05:49,520 Kompilado. 133 00:05:49,520 --> 00:05:51,680 Do mi nur kuris tiu programo tute simple. 134 00:05:51,680 --> 00:05:55,690 >> Kaj ĝi rezultas vi povas fari tion per multan sintakso memoras C. 135 00:05:55,690 --> 00:06:03,400 Permesu al mi iri al la hodiaŭaj kodo, kiun mi metis en mian vhost dosierujo 136 00:06:03,400 --> 00:06:05,250 tie, por veraj kialoj ni revenos al. 137 00:06:05,250 --> 00:06:09,350 Kaj mi tuj iru al: diru, kondiĉoj 1. 138 00:06:09,350 --> 00:06:12,450 >> Kaj vi vidos tie, la unua kaj cxefa, tutan aron da komentoj. 139 00:06:12,450 --> 00:06:15,240 Sed cxi tiu estas vere re-kreo en PHP 140 00:06:15,240 --> 00:06:18,960 de programo ni faris en semajno nomatan kondiĉoj 1.c 141 00:06:18,960 --> 00:06:20,690 kie la celo en vivon de tiu ĉi programo 142 00:06:20,690 --> 00:06:22,950 estas ŝajne demandi la uzanto por entjero 143 00:06:22,950 --> 00:06:25,270 kaj tiam fari iujn lanugaj analizon sur ĝi per 144 00:06:25,270 --> 00:06:29,510 vi diras, se ĝi estas pozitiva aŭ negativa aŭ egala al nulo. 145 00:06:29,510 --> 00:06:34,220 Kaj mi alportos ĉi supren nur ĉar, krom eble unu malgranda detalo, 146 00:06:34,220 --> 00:06:37,150 estas nedistingeblaj tiel for de C. 147 00:06:37,150 --> 00:06:39,930 >> Kio estas la karakterizo tie eble elsaltas 148 00:06:39,930 --> 00:06:41,410 ĉe vi kiel iom malsama? 149 00:06:41,410 --> 00:06:42,160 Eble du aferoj. 150 00:06:42,160 --> 00:06:42,660 Yeah? 151 00:06:42,660 --> 00:06:44,070 >> Student: Dolaro signo n? 152 00:06:44,070 --> 00:06:44,944 >> DAVID J. Malan: Jes. 153 00:06:44,944 --> 00:06:46,210 Do dolaro signo n ĉeestas. 154 00:06:46,210 --> 00:06:48,120 Kaj dolaro signoj, kiel ni vidos, tuj 155 00:06:48,120 --> 00:06:51,460 esti embaraso por la komenco de iu variablo en PHP. 156 00:06:51,460 --> 00:06:54,250 Ĝi estas tiel bona kaj bad-- bonon ke estas ia evidenta kio estas 157 00:06:54,250 --> 00:06:56,797 variablo, malbona en tio ĝi estas alia afero tajpi. 158 00:06:56,797 --> 00:06:58,630 Kaj ekzistas unu alia afero ni ne tute 159 00:06:58,630 --> 00:07:00,876 vidis, almenaŭ por tiu ortografio. yeah? 160 00:07:00,876 --> 00:07:01,630 >> Student: Readline. 161 00:07:01,630 --> 00:07:02,671 >> DAVID J. Malan: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline ni ne vidas, per, en C, kvankam ekzistas io 163 00:07:06,550 --> 00:07:09,530 similaj, sed ni uzis getstring, kaj tio estas lia contraparte. 164 00:07:09,530 --> 00:07:12,950 Do, se mi iros en tiun dosierujo, kiu sekvinbero al esti, 165 00:07:12,950 --> 00:07:18,030 kiel mi klarigos en iom en mia vhost dosierujon kaj mia fonto dosierujo, 166 00:07:18,030 --> 00:07:22,730 kaj mi iras antaŭen kaj fari dot oblikvo conditions-- whoops-- dot oblikvo 167 00:07:22,730 --> 00:07:26,710 kondiĉoj 1, vi jam vidos, denove, la sama issue-- permeson neita. 168 00:07:26,710 --> 00:07:33,610 >> Do lasu min zomi en kaj fari chmod alpago x en kondiĉoj, skalara oblikvo kondiĉoj. 169 00:07:33,610 --> 00:07:35,222 Mi ŝatus entjero, bonvolu, 50. 170 00:07:35,222 --> 00:07:36,930 Kaj ni povus ludi ĉi ludo tutan tagon. 171 00:07:36,930 --> 00:07:39,140 Ĝi tuj kondutos precize kiel ĝi faris en semajno unu. 172 00:07:39,140 --> 00:07:42,860 >> OK do ne tiom malsimila, krom Ne nur tiu eta peco de sintakso, 173 00:07:42,860 --> 00:07:45,490 sed je la supro, mi denove havis tiun linion kiu 174 00:07:45,490 --> 00:07:49,760 permesis al mi krei iun kiu aspektas kiel C programon nomitan saluton, 175 00:07:49,760 --> 00:07:51,150 nomitaj kondiĉoj 1. 176 00:07:51,150 --> 00:07:54,520 Sed ĝi ne estas 0-aj kaj aĵoj Mi ekzekuti rekte. 177 00:07:54,520 --> 00:07:57,620 Ĝi estas anstataŭe kurante ĉi interpretisto kies nomo 178 00:07:57,620 --> 00:07:59,440 sekvinbero al esti identa al la lingvo. 179 00:07:59,440 --> 00:08:04,970 La programo nomiĝas PHP, kaj mia kodo malsupre linio unu estas aprobotaj en ĝin. 180 00:08:04,970 --> 00:08:07,740 >> Ni povas fari alian sufiĉe simpla ekzemple memoras ion 181 00:08:07,740 --> 00:08:09,240 Ni faris semajnojn. 182 00:08:09,240 --> 00:08:12,020 Denove, tio estas ia arbitra chunk de kodo 183 00:08:12,020 --> 00:08:14,000 kiu ŝajne faras Kio Kiam vi kuri ĝin? 184 00:08:14,000 --> 00:08:15,625 Kio estas tio tuj presi, supozeble? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Do komence en linio 16, estas dironta x estas nun 2, verŝajne. 187 00:08:28,250 --> 00:08:30,920 % D estas la sama kiel $ i por printf. 188 00:08:30,920 --> 00:08:33,460 Tial ĝi estas cubing, dot, dot, ĝi pentras, en linio 17. 189 00:08:33,460 --> 00:08:36,299 Kaj tiam la linio 18 aperas nomi funkcio Cubed. 190 00:08:36,299 --> 00:08:37,600 Kaj kie estas Cubed difinita? 191 00:08:37,600 --> 00:08:40,319 >> Nu, ĝi aspektas kiel en linio 25, por ke ne tiom malsimila. 192 00:08:40,319 --> 00:08:42,610 Mi havas kelkajn komentojn supre ĝin, sed plejparte, 193 00:08:42,610 --> 00:08:45,370 ĝi estas sufiĉe simpla Portado aŭ konvertiĝo 194 00:08:45,370 --> 00:08:48,470 el la C programon al la PHP versio. 195 00:08:48,470 --> 00:08:52,670 Sed nun estas kelkaj diferencoj kiuj eble devus salti eksteren. 196 00:08:52,670 --> 00:08:56,100 Kion alian malsamas pri kiel oni povus skribi ĉi sama programo en C? 197 00:08:56,100 --> 00:08:57,900 >> Student: [inaudible]. 198 00:08:57,900 --> 00:09:00,070 >> DAVID J. Malan: Jen neniu prototipo ĝis supro. 199 00:09:00,070 --> 00:09:03,210 Do PHP-- kaj sincere, kiel Multaj modernaj languages-- 200 00:09:03,210 --> 00:09:06,920 estas multe pli inteligenta kaj pli helpemaj ol C tradukiloj ke vi 201 00:09:06,920 --> 00:09:09,740 povas meti la funkcion ĝis tie, vi povas meti funkcion malsupren tie, 202 00:09:09,740 --> 00:09:12,740 kaj la interpretisto tuj por fari al vi la favoron de legado 203 00:09:12,740 --> 00:09:16,010 la tutan dosieron antaŭ decidas ke iu funkcio ne ekzistas. 204 00:09:16,010 --> 00:09:17,970 Tiel belan plibonigoj jarojn poste. 205 00:09:17,970 --> 00:09:22,126 Sed estas ankaŭ iu alia malsama aŭ forestante tie. 206 00:09:22,126 --> 00:09:22,626 Yeah? 207 00:09:22,626 --> 00:09:25,084 >> Student: [inaudible]. 208 00:09:25,084 --> 00:09:27,750 DAVID J. Malan: Ni ne devas deklari la tipojn de variabloj, 209 00:09:27,750 --> 00:09:31,780 do ni vidos post nelonge ke ekzistas malsamaj tipoj en PHP, 210 00:09:31,780 --> 00:09:34,970 sed vi ne bezonas specifi ilin, kio ankaŭ estas ambaŭ bonaj kaj malbonaj. 211 00:09:34,970 --> 00:09:36,623 Kaj ekzistas unu alia afero mankanta. 212 00:09:36,623 --> 00:09:37,430 >> Student: Mankas bibliotekoj. 213 00:09:37,430 --> 00:09:38,630 >> DAVID J. Malan: Ne ekzistas bibliotekoj. 214 00:09:38,630 --> 00:09:39,350 OK, do tio estas agrabla. 215 00:09:39,350 --> 00:09:40,540 Ni preni multe pli el la skatolo. 216 00:09:40,540 --> 00:09:43,373 Do tie estas vere multe pli tion kion mi pensis estis malsamaj. 217 00:09:43,373 --> 00:09:44,350 Kion pri manieron reen? 218 00:09:44,350 --> 00:09:46,032 Kio estas tio? 219 00:09:46,032 --> 00:09:46,740 Diru ĝin refoje? 220 00:09:46,740 --> 00:09:47,960 >> Student: Pointer. 221 00:09:47,960 --> 00:09:49,270 >> DAVID J. Malan: Neniu punteros. 222 00:09:49,270 --> 00:09:51,280 OK, almenaŭ en ĉi tiu ekzemplo, ne. 223 00:09:51,280 --> 00:09:52,070 Tio estas bela. 224 00:09:52,070 --> 00:09:55,090 Do estas ne punteros en PHP fakte ĝenerale. 225 00:09:55,090 --> 00:09:58,730 Estas io nomita referencoj, sed ni ne elspezi tro da tempo. 226 00:09:58,730 --> 00:09:59,520 Kaj kio plu? 227 00:09:59,520 --> 00:10:00,185 >> Student: Ĉefa. 228 00:10:00,185 --> 00:10:01,060 DAVID J. Malan: Ĉefa. 229 00:10:01,060 --> 00:10:02,768 Do tio estas la Biggie Mi pensas. 230 00:10:02,768 --> 00:10:04,660 Rimarku ke ne estas ĉefa punkto de eniro. 231 00:10:04,660 --> 00:10:06,525 Vi simple komencu skribi vian kodon. 232 00:10:06,525 --> 00:10:08,400 Kaj tiu estas reale tuj estos avantaĝa 233 00:10:08,400 --> 00:10:10,560 kiam transiron momente efektive uzanta 234 00:10:10,560 --> 00:10:13,980 tiu sama lingvo por TTT-bazita programado, por kiu ni 235 00:10:13,980 --> 00:10:16,580 ne deziras havi nur unu punkto de eniro. 236 00:10:16,580 --> 00:10:19,980 Ni eble volas havi faskon da URLoj, multajn malsamajn dosierojn 237 00:10:19,980 --> 00:10:22,930 ĉiuj prenante en uzanto enigo kaj produktante eligo. 238 00:10:22,930 --> 00:10:27,130 >> Sed jen la tre malkuragxiga Ekzemple, ke mi promesis lastan fojon, 239 00:10:27,130 --> 00:10:30,130 nome en tiu leterujo tie, fuŝo. 240 00:10:30,130 --> 00:10:33,680 Do en tiu dosiero Speller, kiun ni ne elspezi tro da tempo en, ekzistas 241 00:10:33,680 --> 00:10:37,870 esence porting-- P-O-R-T. Estas nur la vorto donita kiam, diru, 242 00:10:37,870 --> 00:10:40,800 vi igi de unu lingvo al alia permane kutime. 243 00:10:40,800 --> 00:10:45,680 >> Tio estas Portado de PC versio de Speller el PSET 5. 244 00:10:45,680 --> 00:10:48,856 Kaj mi esence klopodis konverti tio linio por linio kiel proksime kiel mi povas. 245 00:10:48,856 --> 00:10:51,730 Do se vi ŝatas tiun specon de afero, gxi vere valoras je iu punkto 246 00:10:51,730 --> 00:10:54,229 trenante ilin ambaŭ supren flanko per flanko kaj vidi kio estas la sama 247 00:10:54,229 --> 00:10:55,230 kaj kio estas malsama. 248 00:10:55,230 --> 00:10:57,510 Sed ili estas belaj Darn similaj. 249 00:10:57,510 --> 00:11:00,110 Se vi memoras, kion Speller eĉ similis, 250 00:11:00,110 --> 00:11:02,110 kvankam vi ne ŝanĝi ĉi tiun dosieron: 251 00:11:02,110 --> 00:11:04,860 estas sufiĉe simila strukture kun nur paro 252 00:11:04,860 --> 00:11:06,200 de ŝanĝoj tie kaj tie. 253 00:11:06,200 --> 00:11:10,140 >> Do tio estas nur por diri ke ĝi estas bela simpla al konverti Speller 254 00:11:10,140 --> 00:11:12,000 de C al PHP. 255 00:11:12,000 --> 00:11:15,390 Sed en vortaro, ne estas io eĉ pli konvinka. 256 00:11:15,390 --> 00:11:19,270 Lasu min kaj krei mian propran dictionary.php dosiero. 257 00:11:19,270 --> 00:11:24,010 Do iomete malsama en tiu ni nomas ĝin .php anstataŭ .c. 258 00:11:24,010 --> 00:11:26,980 Ĉar tiu estas PHP-dosiero, mi do-- iomete annoyingly-- havas 259 00:11:26,980 --> 00:11:30,132 komenci la dosieron kun oni php etikedo tiel. 260 00:11:30,132 --> 00:11:32,340 Kaj mi tuj iros antaŭen kaj difini kelkaj funkcioj. 261 00:11:32,340 --> 00:11:35,770 Funkcio nomita ĉeko, kiu estas tuj prenos en vorto kiel antaŭe. 262 00:11:35,770 --> 00:11:37,520 Sed tiu argumento tuj havos dolaro 263 00:11:37,520 --> 00:11:39,840 subskribi ĉar ni, denove, uzante PHP. 264 00:11:39,840 --> 00:11:42,350 Alia funkcio de dictionary.c estis ŝarĝo 265 00:11:42,350 --> 00:11:47,120 kaj ĝi prenis la nomon de vortaro, tial mi prenos tiun funkcion preta iri. 266 00:11:47,120 --> 00:11:50,920 >> Alia en dictionary.c estis kio? 267 00:11:50,920 --> 00:11:54,580 Grandeco estis unu el la plej belaj cxevaloj, pro Almenaŭ se vi konservis iujn variablo ĉirkaŭe. 268 00:11:54,580 --> 00:11:57,830 tia grandeco suficas reveni variablo. 269 00:11:57,830 --> 00:11:59,090 Kaj poste estis malŝarĝi. 270 00:11:59,090 --> 00:12:02,830 >> Do estis tiuj kvar funkcioj en problemo starigis 5 271 00:12:02,830 --> 00:12:06,770 ke vi bezonas implementar kun iuj datumstrukturo aŭ strukturojn. 272 00:12:06,770 --> 00:12:10,170 Do mi promesis, ke en PHP, ni divenos 273 00:12:10,170 --> 00:12:14,490 hash tablo, ekzemple, cxio, kio pli facile. 274 00:12:14,490 --> 00:12:17,377 Fakte, se mi volas hash tablo Mi nur tuj iros tiel 275 00:12:17,377 --> 00:12:18,460 kaj tie estas mia hash tablo. 276 00:12:18,460 --> 00:12:21,555 Kaj tio estas la noto, malkuragxiga, ke ni cxesis la lasta fojo. 277 00:12:21,555 --> 00:12:23,930 Kaj vi scias kion, se mi volis variablon por grandeco, nu, 278 00:12:23,930 --> 00:12:25,867 ĉi tiu ne estas ĉiu malsimila al C, 279 00:12:25,867 --> 00:12:27,450 sed mi tuj iros antaŭen kaj fari tion. 280 00:12:27,450 --> 00:12:28,630 Kaj rimarki neniun datumtipo. 281 00:12:28,630 --> 00:12:31,180 Kaj mi reiros poste fakte adicii iuj komentoj tie. 282 00:12:31,180 --> 00:12:32,480 Sed kio pri ŝarĝo? 283 00:12:32,480 --> 00:12:35,780 >> Se dolaro signo vortaro estas la nomo de mia dosiero 284 00:12:35,780 --> 00:12:39,600 kaj mi fakte volas ŝargi vortoj en tiu tabelo nun, 285 00:12:39,600 --> 00:12:42,360 Mi povas reale fari io sufiĉe simpla. 286 00:12:42,360 --> 00:12:44,880 One-- kaj tio estas minorly annoying-- en PHP, 287 00:12:44,880 --> 00:12:47,710 Vi devas entajpi interne de funkcio se vi 288 00:12:47,710 --> 00:12:51,060 deziras aliri iun tutmonda variablo kiu estas difinitaj ekstere. 289 00:12:51,060 --> 00:12:53,530 >> Sed tio ne estas aparte Interesa nun. 290 00:12:53,530 --> 00:12:57,920 Kio estas pli interesa estas tio por ĉiu konstrui kiun mi menciis lastan fojon. 291 00:12:57,920 --> 00:13:01,880 Kaj ĝi rezultas ke PHP havas funkcion nomita dosiero kies celo en la vivo 292 00:13:01,880 --> 00:13:05,550 estas malfermi dosieron kaj legis en ĉiujn ĝiajn liniojn en tabelo 293 00:13:05,550 --> 00:13:06,840 kaj transdonu ilin al. 294 00:13:06,840 --> 00:13:12,170 >> Tio estas mi povas fari vortaro tiom ke nun efike kiam mi vokas dosieron: 295 00:13:12,170 --> 00:13:15,472 tio tuj transdonos min tabelo de vortoj de la dosiero. 296 00:13:15,472 --> 00:13:16,430 Ĝi ne estas ĉiu, kiu bone. 297 00:13:16,430 --> 00:13:20,130 Ĝi estas ankoraŭ tuj estos sxnuro de vortoj, iu lineara. 298 00:13:20,130 --> 00:13:23,880 Sed mi povas iri antaŭen kaj persisti super ĉiu el tiuj vortoj uzanta 299 00:13:23,880 --> 00:13:25,710 ke sintakso ni vidis brevemente lastan fojon. 300 00:13:25,710 --> 00:13:27,940 Kaj vi vidos ĝin pli en la venonta PSET. 301 00:13:27,940 --> 00:13:32,070 >> Sed nun mi havas buklo ripetanta trans ĉiu vorto en la vortaro. 302 00:13:32,070 --> 00:13:36,100 Kaj en ĉiu ripeto, memoru min nomante la kuranta vorto "vorto". 303 00:13:36,100 --> 00:13:39,790 Kaj cxiuj lin tuj prenos al metis vorton en la vortaro estas 304 00:13:39,790 --> 00:13:43,530 tuj estos vorto diveno "vera." 305 00:13:43,530 --> 00:13:44,740 Tiu estas mia insert funkcio. 306 00:13:44,740 --> 00:13:46,661 Tiu estas mia ŝarĝo funkcio cxar mia vortaro. 307 00:13:46,661 --> 00:13:49,410 Nun estas iom de Cheat ĉar, Vi scias kion, ekzistas reale 308 00:13:49,410 --> 00:13:52,920 backslash n, cxe la fino de la vortoj ke mi probable forigi, 309 00:13:52,920 --> 00:13:56,380 sed tio ne estas problemo ĉar PHP havas funkcio nomita Chop kiu laŭvorte 310 00:13:56,380 --> 00:13:58,480 kotletojn for unu signo ĉe la fino mem. 311 00:13:58,480 --> 00:13:59,400 Do neniu problemo tie. 312 00:13:59,400 --> 00:14:02,199 Ni antaŭenirinta kaj reale mallongigitaj ke ĝuste tiu. 313 00:14:02,199 --> 00:14:05,240 Kaj nun mi devas verŝajne konservi trako de grandeco, do ni almenaŭ fari this-- 314 00:14:05,240 --> 00:14:05,835 grandeco ++. 315 00:14:05,835 --> 00:14:07,339 Mi povas fari tion kiel antaŭe. 316 00:14:07,339 --> 00:14:10,380 Kaj tiam tiu estas probable tuj labori ĝuste delikata, por ke revenu vera. 317 00:14:10,380 --> 00:14:10,930 Farita. 318 00:14:10,930 --> 00:14:11,797 PSET 5. 319 00:14:11,797 --> 00:14:13,545 >> [Ridado] 320 00:14:13,545 --> 00:14:14,420 >> DAVID J. Malan: Bone. 321 00:14:14,420 --> 00:14:16,628 Ni faros tion denove kun la venonta PSET ankaŭ. 322 00:14:16,628 --> 00:14:18,730 Do kio pri grandeco? 323 00:14:18,730 --> 00:14:22,080 Nu, ĉi tiu espereble temas pri kiel atendite lasta fojo, 324 00:14:22,080 --> 00:14:24,460 kvankam mi devas fari tiu stulta tutmonda afero. 325 00:14:24,460 --> 00:14:26,610 Estas nur artefakto de la lingvo de la dezajno. 326 00:14:26,610 --> 00:14:28,450 >> Sed ĉeko estas iom pli interesa. 327 00:14:28,450 --> 00:14:31,420 Do se mi pasis en dolar subskribi vorto, mi unue 328 00:14:31,420 --> 00:14:34,060 volas havi aliron al ke tutmonda variablo tablo. 329 00:14:34,060 --> 00:14:36,700 Kaj nun se mi volas kontrolu se vorto estas tie, 330 00:14:36,700 --> 00:14:44,350 Mi simple povas diri se estas iu kiu La jena estas metita en la tablo, 331 00:14:44,350 --> 00:14:49,957 tiam iri antaŭen kaj reveno veraj; alie, revenu falsaj. 332 00:14:49,957 --> 00:14:51,180 Farita. 333 00:14:51,180 --> 00:14:52,440 La alia duono de PSET 5. 334 00:14:52,440 --> 00:14:54,540 >> Bone, do denove, mi estas tranĉante kelkaj anguloj. 335 00:14:54,540 --> 00:14:56,831 En justeco, mi probable pasigi kelkajn pli sekundoj 336 00:14:56,831 --> 00:14:58,300 sur tiu efektivigo. 337 00:14:58,300 --> 00:15:01,860 Mi verŝajne ne mokos ĉiujn horoj vi surmetis la PSET tiom. 338 00:15:01,860 --> 00:15:04,045 Do strtolower estas funkcio. 339 00:15:04,045 --> 00:15:06,670 Io simila ekzistencialista en C, almenaŭ por signoj, 340 00:15:06,670 --> 00:15:08,560 sed PHP sukcese tutan ĉenon versio. 341 00:15:08,560 --> 00:15:11,226 >> Tio okazas devigi ĉiun al minusklaj literoj, kiujn iuj el vi 342 00:15:11,226 --> 00:15:14,944 eble faritan al canonicalize kio vi metas en via vortaro. 343 00:15:14,944 --> 00:15:16,360 Kaj nun vi povas fari tion en C, ankaŭ. 344 00:15:16,360 --> 00:15:17,780 Ĉi tio havas nenion komunan kun PHP. 345 00:15:17,780 --> 00:15:20,260 >> Sed ajna tempo vi devas Bulea kondiĉo, 346 00:15:20,260 --> 00:15:22,680 kiel iu en linio 10 tie, kiu estas nur 347 00:15:22,680 --> 00:15:27,145 tuj taksi al veraj aŭ falsa, kaj viajn se alie klare 348 00:15:27,145 --> 00:15:33,620 estas reveni vera aŭ malvera, mi povis simple vere faros ĉi sexier 349 00:15:33,620 --> 00:15:38,360 kaj nur faru ion kiel tiu. 350 00:15:38,360 --> 00:15:40,500 Tiel ke estas mia ĉeko funkcio. 351 00:15:40,500 --> 00:15:42,560 Bone, se la Bulea Revenas vera aŭ malvera, 352 00:15:42,560 --> 00:15:44,630 ni nur redoni ĝin tuj. 353 00:15:44,630 --> 00:15:47,340 >> Kaj tie estas kelkaj aliaj retuŝojn Mi povus fari ĉi tie kaj tie. 354 00:15:47,340 --> 00:15:51,380 Load-- malŝarĝas, parenteze, estas farita. 355 00:15:51,380 --> 00:15:52,850 Nenion fari tie. 356 00:15:52,850 --> 00:15:55,840 Ĉar ĉiuj la memoron PHP kaj multaj aliaj lingvoj 357 00:15:55,840 --> 00:15:57,570 efektive sukcesis por vi. 358 00:15:57,570 --> 00:16:00,330 Do dum en C, kiel vi lernis dolore, 359 00:16:00,330 --> 00:16:04,700 io vi malloc aŭ calloc aŭ realloc, vi devas liberigi vin. 360 00:16:04,700 --> 00:16:08,770 Io vi fopen, vi devas fclose, tiel ke resursoj finfine liberigita 361 00:16:08,770 --> 00:16:11,690 kaj iloj kiel Valgrind ne Notoj kaj ne plendas, 362 00:16:11,690 --> 00:16:13,570 kio estas bona afero por kuri sur ili. 363 00:16:13,570 --> 00:16:16,190 >> Sed certe, oni devas esti kelkaj catch, dekstra? 364 00:16:16,190 --> 00:16:19,400 Alie, ni ia malŝparis tutan faskon da semajnoj. 365 00:16:19,400 --> 00:16:23,270 Do tie estas ajna nombro de kialoj kial ni ia preni ĉi trajektorio, 366 00:16:23,270 --> 00:16:24,440 sed estas komerco-off. 367 00:16:24,440 --> 00:16:25,820 Bone, tio estis temático. 368 00:16:25,820 --> 00:16:29,690 >> Do kio povus komerco-off tie kopiante, de C al PHP? 369 00:16:29,690 --> 00:16:33,250 Sentas ĉiuj gajni tiom multe alia ol iom de malbeleco tie aŭ tie. 370 00:16:33,250 --> 00:16:34,040 Yeah. 371 00:16:34,040 --> 00:16:34,700 Kio estas tio? 372 00:16:34,700 --> 00:16:36,064 >> Student: [inaudible] memoro. 373 00:16:36,064 --> 00:16:36,980 DAVID J. Malan: Rapido. 374 00:16:36,980 --> 00:16:37,479 OK. 375 00:16:37,479 --> 00:16:40,720 Nu, mia rapido estis sufiĉe rapide. 376 00:16:40,720 --> 00:16:42,020 Rajto? 377 00:16:42,020 --> 00:16:44,320 Sed rapido de ekzekuto de la programo? 378 00:16:44,320 --> 00:16:45,580 OK, do tio estas justa punkto. 379 00:16:45,580 --> 00:16:50,930 >> Do kiel ĝi okazus, mi anticipe cued supren ambaŭ mia provo solvo, la 380 00:16:50,930 --> 00:16:53,510 Mi estis sur la granda tabulo Estis provo-bazita solvo, 381 00:16:53,510 --> 00:16:55,510 kaj mi havas en tiu ĉi dosierujo tie. 382 00:16:55,510 --> 00:16:58,510 Do mi momente, mi povas iri antaŭen kaj kuri ĉi sur la King James Bible, 383 00:16:58,510 --> 00:16:59,657 batante eniri. 384 00:16:59,657 --> 00:17:01,990 Kaj tio estas espereble korekta efektivigo fine, 385 00:17:01,990 --> 00:17:05,109 donas al mi tempon en tuta de 0,38 duaj por ke 386 00:17:05,109 --> 00:17:07,270 oni iom arbitra ekzemplo. 387 00:17:07,270 --> 00:17:09,270 >> Kaj se mi iros en tiun dua terminala fenestro 388 00:17:09,270 --> 00:17:14,569 tie, kie mi unue malfermis gedit, lasu mi iros en la hodiaŭa code-- kiuj, denove, 389 00:17:14,569 --> 00:17:19,650 Estas en ĉi tiu dosierujo here-- kaj Lasu min kaj kuras Speller. 390 00:17:19,650 --> 00:17:23,470 Do nur por esti klara, tiu estas la versio de la PHP. 391 00:17:23,470 --> 00:17:25,170 Mi nur montras la supron tie. 392 00:17:25,170 --> 00:17:32,020 >> Do se mi faras Speller de supersigno CS50 PSET 5 tekstoj, King James, eniru. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 Ĝi estas ankoraŭ pli rapida ol skribo en C, sed la tuta tempo 395 00:17:43,050 --> 00:17:47,650 Estas, avizo, 0,93, dum mia C-bazita apliko estis 0,38. 396 00:17:47,650 --> 00:17:49,110 Do estas ne-bagatela diferenco. 397 00:17:49,110 --> 00:17:51,100 >> Kaj ĉi tio estas nur sur unu dosiero. 398 00:17:51,100 --> 00:17:53,480 Se vi estus kuri la du programoj kontre la granda tabulo 399 00:17:53,480 --> 00:17:56,510 kaj havas tutan faskon da eniroj provitaj, tiu certe adicii. 400 00:17:56,510 --> 00:18:00,310 Kaj se ni havis eĉ pli grandan datenaroj, tiu ankaŭ aldonus ĉiujn pli. 401 00:18:00,310 --> 00:18:04,820 Do jes, pagante iom prezo de rapido estas vere la kazo. 402 00:18:04,820 --> 00:18:05,470 Kion alian? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Yeah? 405 00:18:08,860 --> 00:18:10,340 >> Student: Kvanto de RAM uzo. 406 00:18:10,340 --> 00:18:11,756 >> DAVID J. Malan: Kvanto de RAM uzo. 407 00:18:11,756 --> 00:18:15,380 Do mi ne donis dua pensis kiam skribas tiun PHP 408 00:18:15,380 --> 00:18:17,300 Versio kiel al kiom memoro mi uzis. 409 00:18:17,300 --> 00:18:22,080 Mi tute prokrastante ke PHP mem kaj kiu skribis tiun programon. 410 00:18:22,080 --> 00:18:24,500 Kaj tio povus esti bone, sed se mi vere vere 411 00:18:24,500 --> 00:18:28,420 zorgi pri elpremante tiel agado el mia programo aŭ el mia retejo 412 00:18:28,420 --> 00:18:31,150 aŭ el ajn ilo Mi konstruas, eble 413 00:18:31,150 --> 00:18:33,310 PHP ja ne estas la ĝusta lingvo. 414 00:18:33,310 --> 00:18:36,330 >> Kaj fakte, tio estas kial, por Ekzemple, multaj ttt servers-- 415 00:18:36,330 --> 00:18:38,980 la reala programoj kiuj servas supren ttt content-- 416 00:18:38,980 --> 00:18:41,810 ne estas skribitaj en PHP aŭ en Python aŭ Ruby. 417 00:18:41,810 --> 00:18:44,630 Ili estas skribitaj, kiel vi nun faros kun PSEt 6 418 00:18:44,630 --> 00:18:48,120 en C tia ke oni povas elpremi ĉiu bito de ludado de ĝi 419 00:18:48,120 --> 00:18:50,780 kaj vere praktiki fajna-greno kontrolon super kio estas 420 00:18:50,780 --> 00:18:52,980 okazas sub la kapuĉo kaj ne simple prenu 421 00:18:52,980 --> 00:18:54,890 por sentado iuj altaj nivelo datumstrukturo. 422 00:18:54,890 --> 00:18:58,071 >> Konsideru, finfine, ajn en PHP implementado 423 00:18:58,071 --> 00:19:00,070 ke nocio de hash table-- estas reale pli 424 00:19:00,070 --> 00:19:04,260 taŭge nomiĝas asocieca array-- faras li aŭ ŝi havas neniun ideon kio klaso 425 00:19:04,260 --> 00:19:07,090 de enigoj vi tuj estos meti en la strukturo? 426 00:19:07,090 --> 00:19:08,260 Do evidente ne, ĉu ne? 427 00:19:08,260 --> 00:19:10,340 Estas ĝenerala ilo en la ilaro tio 428 00:19:10,340 --> 00:19:13,430 havigis al ĉiu kiu volas por uzi ĝin, kaj tiel certe ĝi 429 00:19:13,430 --> 00:19:17,680 ne povas esti optimumigita finfine por precize kion vi volas fari. 430 00:19:17,680 --> 00:19:21,180 >> Do Komercon offs-- evoluo tempo multobligita diferenci, agado povus diferenci, 431 00:19:21,180 --> 00:19:23,120 komplekseco aŭ memoruzado povus diferenci. 432 00:19:23,120 --> 00:19:24,820 Do kion vi trovos pli estas ke ekzistas 433 00:19:24,820 --> 00:19:26,570 tuj diferencos iloj por la komerco. 434 00:19:26,570 --> 00:19:31,160 Kaj fakte por súper plimulto de popola fina projektoj en tiu klaso, 435 00:19:31,160 --> 00:19:34,360 kredu ĝin aŭ ne, C ne iros esti la ĝusta lingvo por uzi. 436 00:19:34,360 --> 00:19:37,880 >> Kaj fakte, unu el la takeaways fine por ajna klaso kiel tiu 437 00:19:37,880 --> 00:19:40,510 estas akiri vin pensi, Nu, kion vi devus detiri 438 00:19:40,510 --> 00:19:42,710 la breton, kiam vi volas solvi iun problemon. 439 00:19:42,710 --> 00:19:46,720 Kaj efektive, ni transiros tiun ponto eĉ pli kiel ni rigardas pli da lingvoj 440 00:19:46,720 --> 00:19:47,920 eĉ preter hodiaŭ. 441 00:19:47,920 --> 00:19:50,530 >> Do ni transiro nun eble pli familiara kuntekston 442 00:19:50,530 --> 00:19:52,480 por uzi lingvon kiel PHP. 443 00:19:52,480 --> 00:19:56,720 Estas iom komune uzi je la komandlinio, skribante skriptoj 444 00:19:56,720 --> 00:19:59,050 kiel mi agis, sed estas multe, multe pli komuna. 445 00:19:59,050 --> 00:20:02,350 Kaj estis intencita por esti uzita en formo de dosieroj kiujn tipe fini 446 00:20:02,350 --> 00:20:05,060 en .php-- sed tio Ne prerequisite-- 447 00:20:05,060 --> 00:20:07,990 ke mem generi retejo enhavo. 448 00:20:07,990 --> 00:20:11,310 >> Do lasu min iri antaŭen kaj malfermi kelkajn ekzemploj mi preparis anticipe. 449 00:20:11,310 --> 00:20:15,100 Kaj tiuj estas fakte ia vera historioj en kiuj unu el la unuaj aferoj 450 00:20:15,100 --> 00:20:18,200 Mi faris mem post fini CS50 kaj eble, mi kredas, 451 00:20:18,200 --> 00:20:21,350 CS51 jaroj estas mia kompano kaj mi helpis 452 00:20:21,350 --> 00:20:24,320 kuri la freshman intramural sporta programo, kiu, tiutempe, 453 00:20:24,320 --> 00:20:28,610 estis freshman registri por diversaj sportoj per plenigado pecon de papero, 454 00:20:28,610 --> 00:20:31,800 kiel ĝi estis vokita, marŝante trans la korton al Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 kaj delasante ĝin en kelkaj Proctor pordo guto. 456 00:20:34,030 --> 00:20:37,210 Kaj tiam li aŭ ŝi devus iri tra ili kaj do reale kontaku nin permane 457 00:20:37,210 --> 00:20:39,140 ke ni estis registritaj por iu sporto. 458 00:20:39,140 --> 00:20:41,166 >> Do klare, ŝanco por plibonigo. 459 00:20:41,166 --> 00:20:44,040 Tiuj tagoj, Vi povus turni al simple Google Formoj, sed reen en la tago, 460 00:20:44,040 --> 00:20:46,914 ni devis efektive atingi for-- ĉi Estis eĉ ne tiu longa ago-- atingi 461 00:20:46,914 --> 00:20:49,410 por programado lingvo kiu ne PHP. 462 00:20:49,410 --> 00:20:51,200 Tiutempe, ĝi estis iu nomita Perl, 463 00:20:51,200 --> 00:20:52,890 kio eliris el boga tiam. 464 00:20:52,890 --> 00:20:54,160 Sed la ideo estas la sama. 465 00:20:54,160 --> 00:20:58,940 >> Kaj mi esence sidiĝis por provi al haveno iras Perl versioj por PHP, 466 00:20:58,940 --> 00:21:03,710 sed en plena malgarantio, ne donis neniu pensis la estetiko nur ankoraŭ. 467 00:21:03,710 --> 00:21:04,960 Do jen retpaĝo. 468 00:21:04,960 --> 00:21:05,670 Jen paĝo. 469 00:21:05,670 --> 00:21:09,470 Se mi zomi, liaj ŝajne nomita froshim0.php 470 00:21:09,470 --> 00:21:12,060 simple ĉar ĝi estas nia unua Ekzemple en tiu serio. 471 00:21:12,060 --> 00:21:15,970 Kaj rimarki ke ĝi havas kio aperas esti tre malbela HTML- formo, 472 00:21:15,970 --> 00:21:18,680 fato formo estas interesa ĉar ĝi permesas 473 00:21:18,680 --> 00:21:21,910 mi havigi uzanto enigo al la retumilo. 474 00:21:21,910 --> 00:21:27,730 >> Nun lastan fojon kiam ni havis formon, al kiun ni prezentas nian informpeto parametro, 475 00:21:27,730 --> 00:21:30,450 la vosto parametro kiel ĝi nomiĝis? 476 00:21:30,450 --> 00:21:31,330 Do al Google, dekstra? 477 00:21:31,330 --> 00:21:34,090 Ni tute punted sur la ideo de fari ion kun tiu eniro. 478 00:21:34,090 --> 00:21:36,160 >> Sed hodiaŭ, ni komencos produkti eligo. 479 00:21:36,160 --> 00:21:39,420 Kaj la konduton Mi iras vidi tien komence estas sufiĉe banala. 480 00:21:39,420 --> 00:21:42,980 David, mi kontrolu ekstere sekso tie, diri Matthews tie. 481 00:21:42,980 --> 00:21:43,800 Mi ne estos kapitano. 482 00:21:43,800 --> 00:21:45,410 Mi tuj klaku Register. 483 00:21:45,410 --> 00:21:50,720 Kaj rimarkis ke la URL havas ŝanĝis registri-0.php, 484 00:21:50,720 --> 00:21:52,310 kaj tiam tie estas tio malbela tekston ĉi tie. 485 00:21:52,310 --> 00:21:54,460 Mi ne memoris la formatado de tio. 486 00:21:54,460 --> 00:21:59,900 >> Sed kio estas interesa estas ke tri valoroj estis ŝajne preterpasis en. 487 00:21:59,900 --> 00:22:02,960 Tio estas PHP La speco de ekvivalenta al printf-- 488 00:22:02,960 --> 00:22:06,330 Ni vidos kion estas vere nomas en bit-- ke nur presas el 489 00:22:06,330 --> 00:22:08,300 kion vi pasis en ĝin. 490 00:22:08,300 --> 00:22:11,414 Do ĉi tio sugestas ke tiu formo havis almenaŭ tri kampoj al ĝi, 491 00:22:11,414 --> 00:22:12,580 kaj vi vidis min tajpi ilin. 492 00:22:12,580 --> 00:22:15,739 Unu estis mia nomo, oni estis sekso, unu estis dormoĉambro. 493 00:22:15,739 --> 00:22:18,780 Kaj kapitano eĉ ne get sendis al La servilo ĉar mi ne kontrolu ĝin. 494 00:22:18,780 --> 00:22:22,150 >> Do tiu estas ŝajne, Kiam vi submetas aferoj en la reto, 495 00:22:22,150 --> 00:22:26,830 Ne nur faras la URL kelkfoje change-- kelkfoje ne. 496 00:22:26,830 --> 00:22:30,330 Fakte, la dosiernomo ŝanĝita, sed kio estas ausente de la URL 497 00:22:30,330 --> 00:22:32,861 ke ni vidis lastan fojon kun Google. 498 00:22:32,861 --> 00:22:33,360 Yeah? 499 00:22:33,360 --> 00:22:34,380 >> Student: Neniu query string 500 00:22:34,380 --> 00:22:35,220 >> DAVID J. Malan: Mankas query string. 501 00:22:35,220 --> 00:22:37,270 Mankas demandosigno ion. 502 00:22:37,270 --> 00:22:40,050 Mankas demandosigno q egalas katoj, kiel ni faris lastan fojon. 503 00:22:40,050 --> 00:22:42,170 Kaj estas certe neniu demandosigno nomo egalas 504 00:22:42,170 --> 00:22:46,310 David aŭ dormejo egalas Matthews, Do kie estas ke ĉiu iras? 505 00:22:46,310 --> 00:22:51,290 >> Nu, lasu min reiri al gedit tie kaj malfermu la unua el tiuj dosieroj 506 00:22:51,290 --> 00:22:57,020 Miaj vhost, loka gastiganto, publika dosierujo tie kaj iri en froshim0. 507 00:22:57,020 --> 00:23:02,060 Do rezultas ke preskaŭ ĉiuj ĉi paĝo estas nur HTML. 508 00:23:02,060 --> 00:23:05,410 Kaj tiu povas esti nekonata al vi, sed baldaŭ estos plie kun PSET 6 509 00:23:05,410 --> 00:23:07,370 kaj PSET 7 kaj PSET 8. 510 00:23:07,370 --> 00:23:09,160 Sed tio estas nur HTML- paĝo. 511 00:23:09,160 --> 00:23:12,400 >> Kaj la interesaj aĵoj Ŝajnas esti super tie. 512 00:23:12,400 --> 00:23:16,290 Formo etikedo kies ago atributo havas valoron de registro 0. 513 00:23:16,290 --> 00:23:18,890 Tial kiam mi submit tiu, ĝi iras al tiu dosiero. 514 00:23:18,890 --> 00:23:20,620 Sed metodo estas malsamaj today-- post. 515 00:23:20,620 --> 00:23:23,120 Do rezultas ke estas almenaŭ du metodoj por la retejo uzata 516 00:23:23,120 --> 00:23:24,911 por sendi informon el retumilo al servilo. 517 00:23:24,911 --> 00:23:25,980 Get metas ĝin en la URL. 518 00:23:25,980 --> 00:23:27,950 Afiŝo metas ĝin aliloke. 519 00:23:27,950 --> 00:23:30,570 Kiam kaj kial povus vin fakte volas retejo 520 00:23:30,570 --> 00:23:34,110 uzi post tiam anstataŭe de akiri, simple intuicie? 521 00:23:34,110 --> 00:23:37,080 Ajna retpaĝaro. 522 00:23:37,080 --> 00:23:42,010 Kiajn datumoj devus esti pasita nur per konkludaj nun tra poŝto kontraste 523 00:23:42,010 --> 00:23:45,184 akiri, se ni vidas la du diferencojn? 524 00:23:45,184 --> 00:23:46,350 Student: [inaudible] sekurigi. 525 00:23:46,350 --> 00:23:47,790 DAVID J. Malan: Se vi deziras io esti sekura. 526 00:23:47,790 --> 00:23:50,360 Tiel vi povus entajpi pasvorton en retejo, kreditkarto 527 00:23:50,360 --> 00:23:53,030 en retejo farus speco de tiuj suboptimala 528 00:23:53,030 --> 00:23:56,220 se la retumilo enkalkulu valoron ene de la URL. 529 00:23:56,220 --> 00:23:57,680 Kial? 530 00:23:57,680 --> 00:24:00,059 Vi vidas, ke ne ŝajnas esti tia granda negoco, 531 00:24:00,059 --> 00:24:03,350 sed _odds_ estas vi belan ofte marŝi for de via komputilo aŭ uzo komputilo 532 00:24:03,350 --> 00:24:05,310 laboratorioj, kaj tial iu alie aŭ eĉ kompano 533 00:24:05,310 --> 00:24:08,220 povis facile marŝi tien kaj vidu ke privataj informoj. 534 00:24:08,220 --> 00:24:10,220 Kiam vi sendi retmesaĝon rete, vi probable 535 00:24:10,220 --> 00:24:12,350 ne volas ke datumoj finaĵo supren en la URL tiel. 536 00:24:12,350 --> 00:24:15,266 Do tie estas ajna nombro de kialoj kial ni eble volas meti ĝin ĉi tie. 537 00:24:15,266 --> 00:24:18,610 Kaj photos-- pravas, mi ne povas eĉ tute imagu kiom vi prenus grafika, 538 00:24:18,610 --> 00:24:21,480 kiel JPEG, kaj metis ĝin en la URL. 539 00:24:21,480 --> 00:24:22,330 Vi povus fari tion. 540 00:24:22,330 --> 00:24:25,840 Ekzistas manieroj kodi ĝin, sed estas simple ne estas simpla kiel tiu. 541 00:24:25,840 --> 00:24:29,030 >> Do aliĝu 0 estas reale tre underwhelming. 542 00:24:29,030 --> 00:24:31,610 Ĉiuj diras laŭvorte estas jena. 543 00:24:31,610 --> 00:24:35,910 Ĝi presas el interne de iu HTML etikedoj jeno. 544 00:24:35,910 --> 00:24:38,640 Mi havas PHP etikedo tie neston ene de pre etikedo. 545 00:24:38,640 --> 00:24:42,300 "Antaŭ" nur signifas pre-formatitan tekston: simio-interspacigitaj, kiel skribmaŝino. 546 00:24:42,300 --> 00:24:44,836 >> Printr estas presita rekursia funkcio. 547 00:24:44,836 --> 00:24:46,710 Kaj tiam tie estas tio interesa afero tie. 548 00:24:46,710 --> 00:24:48,835 Kaj ni revenos al tiu ĉar ne estas aliaj, 549 00:24:48,835 --> 00:24:51,140 sed dolaro signo substreko posteno ŝajnas esti 550 00:24:51,140 --> 00:24:56,110 ŝanĝiĝema en PHP en kiu io vi sendu el retumilo al servilo 551 00:24:56,110 --> 00:24:58,040 ricevas stokitaj por vi. 552 00:24:58,040 --> 00:25:00,930 Kaj ni vidos kiel akiri je tiun informon antaux longa. 553 00:25:00,930 --> 00:25:04,000 >> Sed unue, ni reiru al iomete malsaman ekzemplon. 554 00:25:04,000 --> 00:25:09,050 Iranta en register-- aŭ prefere, froshims1.php, 555 00:25:09,050 --> 00:25:10,470 kiu aspektas iom malsama. 556 00:25:10,470 --> 00:25:12,670 Mi prenis iom pli penadon kun formatado, 557 00:25:12,670 --> 00:25:14,370 kvankam ĝi estas ankoraŭ sufiĉe malbela. 558 00:25:14,370 --> 00:25:16,990 Sed mi tuj iros antaŭen kaj entajpu "Davido" nun. 559 00:25:16,990 --> 00:25:17,850 Masklo. 560 00:25:17,850 --> 00:25:19,360 Ni kontrolu "kapitano" tiu tempo. 561 00:25:19,360 --> 00:25:20,660 Ni faros Matthews. 562 00:25:20,660 --> 00:25:22,430 Kaj registri. 563 00:25:22,430 --> 00:25:24,110 >> Kaj ĉi tiu fojo ĝi diras, hm, ne vere. 564 00:25:24,110 --> 00:25:26,180 Bone, do kion la registriĝi 1? 565 00:25:26,180 --> 00:25:30,509 Lasu min iri en malferma registro 1 kaj- hm. 566 00:25:30,509 --> 00:25:32,300 Bone, do tio estas Interesa, kaj ĉi 567 00:25:32,300 --> 00:25:34,880 estas ŝtupo nun al pli interesaj programoj. 568 00:25:34,880 --> 00:25:38,970 >> Rimarku la supro de ĉi tiu dosiero havas PHP etikedo tiel kiel kelkaj komentoj. 569 00:25:38,970 --> 00:25:42,590 Kaj tiuj estas, nuntempe, distro do ni simple forigi tiujn komentojn 570 00:25:42,590 --> 00:25:47,070 ĝuste kiel ili estas en C. Mi pretendi kun tiu bloko de kodo kun komenton 571 00:25:47,070 --> 00:25:49,280 ke tiu kodo validigas la submetiĝo. 572 00:25:49,280 --> 00:25:51,690 >> Nu, ĝi rezultas ke variabloj kiel dolaro signo 573 00:25:51,690 --> 00:25:53,739 substreko posteno estas nomita Super mallokajn. 574 00:25:53,739 --> 00:25:55,530 Ili estas kiel tiuj speciala tutmonda variablo 575 00:25:55,530 --> 00:25:58,840 ke estas nur omni-aktuale disponebla ene de via programo. 576 00:25:58,840 --> 00:26:03,870 Kaj vi povas uzi kvadrata krampo skribmaniero indeksi en ilin ne uzi ciferojn 577 00:26:03,870 --> 00:26:07,460 kiel 0, 1, 2, 3, sed veraj vortoj. 578 00:26:07,460 --> 00:26:12,100 >> Do vi povas pensi de dolaro signo substreko postenon kiel speco de hash tablo 579 00:26:12,100 --> 00:26:15,920 ke vi povus pasi ŝlosilon en, serĉo vorto en-inter kvadrataj krampoj, 580 00:26:15,920 --> 00:26:19,370 kaj ĝi tuj donu vin reen la valoro kiun la uzanto efektive provizis. 581 00:26:19,370 --> 00:26:21,210 PHP havas funkcion nomita malplena ke ĝuste 582 00:26:21,210 --> 00:26:23,720 diras jes aŭ ne, ĉi variablo estas malplena aŭ ne. 583 00:26:23,720 --> 00:26:27,250 Ni havas tiujn duoblan rigliloj kio ĝuste signifas aŭ, kiel en C. 584 00:26:27,250 --> 00:26:31,740 >> Do efektive, tiu linio 4 estas nur dirante, se la uzanto ne donis nomon 585 00:26:31,740 --> 00:26:36,540 aŭ ne donis varo aŭ ne doni dormejo, bonvolu redirect li 586 00:26:36,540 --> 00:26:38,184 aŭ ŝi per tiu linio tie. 587 00:26:38,184 --> 00:26:40,600 Do tio estas iom kamufla, sed tio nur signifas laŭvorte 588 00:26:40,600 --> 00:26:43,330 reiru al ĉi loko, do punts la uzanto 589 00:26:43,330 --> 00:26:45,420 reen al kie ajn li aŭ ŝi venas. 590 00:26:45,420 --> 00:26:47,880 Sed estas iom inelegant en kiun mi malfacile kodita ĝin. 591 00:26:47,880 --> 00:26:52,150 >> Sed kio se tiu se kondiĉo ne taksas al vera? 592 00:26:52,150 --> 00:26:55,790 Kio se la uzanto ne donos al mi sian aŭ ŝian nomon kaj dormejo kaj sekso? 593 00:26:55,790 --> 00:26:58,540 Ke se kondiĉo ne estas tuj taksi al vera, 594 00:26:58,540 --> 00:27:00,650 tial mi ne trafis la eliro en linio 7. 595 00:27:00,650 --> 00:27:01,680 Do kio okazas? 596 00:27:01,680 --> 00:27:03,880 Kaj tio estas kio estas interesa pri PHP. 597 00:27:03,880 --> 00:27:07,470 >> Vi povas fali en kaj el de PHP mode, por tiel diri. 598 00:27:07,470 --> 00:27:10,985 Se vi volas iun kodon por ekzekuti, Vi povas malfermi kaj fermi PHP etikedo 599 00:27:10,985 --> 00:27:13,010 kaj meti kodon tie kiel mi faris tie. 600 00:27:13,010 --> 00:27:16,810 Tuj kiam vi fermos PHP etikedo, la servilo 601 00:27:16,810 --> 00:27:19,407 estas ĝuste tuj kraĉis kion vi metos tie. 602 00:27:19,407 --> 00:27:21,740 Kaj efektive, tio estis parto de La originala dezajno de PHP, 603 00:27:21,740 --> 00:27:25,280 cxar pli bone estus por malbone, estis jena commingling de kodo kaj markado 604 00:27:25,280 --> 00:27:25,920 lingvo. 605 00:27:25,920 --> 00:27:28,670 Kaj ni vidos ke tio tre rapide devolves en salato. 606 00:27:28,670 --> 00:27:31,280 Kaj tiel ni faros pli bone ol tiu longa, sed ĝuste 607 00:27:31,280 --> 00:27:35,620 rimarki la facileco kun kiu mi fakte povis ekzekuti iun logikon. 608 00:27:35,620 --> 00:27:37,440 >> Sed ankoraŭ iom underwhelming. 609 00:27:37,440 --> 00:27:41,210 Ni malfermas versio du el Frosh IMS, kiu 610 00:27:41,210 --> 00:27:44,270 ŝajne submetas al register2.php. 611 00:27:44,270 --> 00:27:47,600 Do tiu dosiero estas efektive iri al aspektas samaj. 612 00:27:47,600 --> 00:27:50,780 Mi tuj iras al Frosh IMS 2. 613 00:27:50,780 --> 00:27:53,050 Sed en Frosh IMS 2 ni vidu kio okazas. 614 00:27:53,050 --> 00:27:58,110 >> Davido, alklaku la radio-butonan, kiel ĝi nomiĝas; Matthews, neniu estro. 615 00:27:58,110 --> 00:27:59,230 Registri. 616 00:27:59,230 --> 00:28:00,130 Vi estas registritaj. 617 00:28:00,130 --> 00:28:00,700 Ne vere. 618 00:28:00,700 --> 00:28:02,574 Ho atendu, ni ĵus faris ke ekzemple, ĉu ne? 619 00:28:02,574 --> 00:28:04,520 Bone, staras. 620 00:28:04,520 --> 00:28:06,602 Ni faras la tri. 621 00:28:06,602 --> 00:28:08,560 Klare io temas pri okazos kun Gmail. 622 00:28:08,560 --> 00:28:09,600 Ni akiros tie. 623 00:28:09,600 --> 00:28:11,900 >> Do Frosh IMS 3 aspektas kiel ĉi. 624 00:28:11,900 --> 00:28:13,050 Ne diferencas. 625 00:28:13,050 --> 00:28:19,850 Sed kiam mi faras David masklo, Matthews, kaj registri, tiu tria kaj lasta versio 626 00:28:19,850 --> 00:28:22,230 asertojn, tute simple, vi estas registritaj vere. 627 00:28:22,230 --> 00:28:23,560 Tio estas speco de nemateria. 628 00:28:23,560 --> 00:28:25,600 Sed mi pretendas kun ĉi tria kaj lasta versio 629 00:28:25,600 --> 00:28:30,610 Mi nun amuzis precize kion mia kompano kaj mi konstruis la Frosh IMS 630 00:28:30,610 --> 00:28:31,731 programo jarojn. 631 00:28:31,731 --> 00:28:32,480 Kaj ĝi estis simpla. 632 00:28:32,480 --> 00:28:34,330 Nenia datumbazo, neniu Excel kalkultabelo. 633 00:28:34,330 --> 00:28:36,450 Sed pli grave, estis plu papero 634 00:28:36,450 --> 00:28:42,520 ĉar kion ni faris kun tiu ĉi programo estis efektive retmesaĝi la Proctor, kiuj 635 00:28:42,520 --> 00:28:44,530 Estis antaŭe ricevi tion per formoj. 636 00:28:44,530 --> 00:28:48,890 >> Kaj ŝajne ni planis tion en tiel ke kiam iu registras, 637 00:28:48,890 --> 00:28:52,470 John Harvard konton retpoŝtoj la proctor-- aŭ mem tiukaze 638 00:28:52,470 --> 00:28:55,960 John Harvard-- kun jenaj text-- "Ĉi tiu persono simple registrita." 639 00:28:55,960 --> 00:29:00,560 Nomo estas David, kapitano estas malplena; sekso, masklo; kaj dormejo, Matthews. 640 00:29:00,560 --> 00:29:01,560 >> Do kio okazis tie? 641 00:29:01,560 --> 00:29:05,360 Nu, la dosiero en demando ĉi tie estas ŝajne register3.php. 642 00:29:05,360 --> 00:29:09,080 Kaj se mi malfermos ĉi, vi vidos ambaŭ la potenco de kodo kiel ĉi 643 00:29:09,080 --> 00:29:12,380 kaj ankaŭ, sincere, la sensekureco de sistemo kiel retpoŝto. 644 00:29:12,380 --> 00:29:16,290 Mi ĵus efike ŝajnigis esti John Harvard en la sekva maniero. 645 00:29:16,290 --> 00:29:20,920 >> Mi havas la malferma php etikedo supren supro, kiu simple diras tie venas iuj PHP-kodo. 646 00:29:20,920 --> 00:29:23,155 Malsupren tie, rezultas tie Estas bibliotekojn en PHP. 647 00:29:23,155 --> 00:29:26,410 Vi simple ne bezonas inkluzivas header dosierojn tiel. 648 00:29:26,410 --> 00:29:28,900 Vi akiras pli kun la kuireja vazlavujo, por tiel diri. 649 00:29:28,900 --> 00:29:31,820 >> Sed ĉi tiu fojo en linio 4, mi faras volas speciala biblioteko nomita 650 00:29:31,820 --> 00:29:36,087 PHP Mailer, kiu estas iu vin povas instali senpage en multaj sistemoj. 651 00:29:36,087 --> 00:29:37,920 Cxi tie mi validigi la submetiĝon nur 652 00:29:37,920 --> 00:29:40,540 kontrolante cxu la uzanto donas Mi agrabla nomo, varo, kaj dormejo. 653 00:29:40,540 --> 00:29:44,130 Kaj se jes, bonvolu generi pli mailer. 654 00:29:44,130 --> 00:29:47,020 >> Vi povas pensi pri tio kiel estante linio de kodo kiu ĝuste atribuas. 655 00:29:47,020 --> 00:29:48,950 Estas kiel malloc, sed estas iom sexier 656 00:29:48,950 --> 00:29:51,790 en kiu vi mencias ne nur malloc kaj iuj genéricos nombro. 657 00:29:51,790 --> 00:29:55,030 Vi diras al mi unu el tiuj, donu al mi novan unu el tiuj. 658 00:29:55,030 --> 00:29:57,950 >> Kaj se vi planas en Java aŭ C ++ aŭ aliaj lingvoj, 659 00:29:57,950 --> 00:29:59,130 vi eble vidis ĉi. 660 00:29:59,130 --> 00:30:01,840 Sed la mallonga de ĝi, se nekonata, tiu linio 661 00:30:01,840 --> 00:30:05,410 metas en dolar signo de poŝto speciala struct vokis 662 00:30:05,410 --> 00:30:08,731 objekto havas korpigita retpoŝto funcionalidad. 663 00:30:08,731 --> 00:30:10,355 Kaj fakte, rimarki kaj simila sintakso. 664 00:30:10,355 --> 00:30:11,900 >> Tiu ne estas puntero, per. 665 00:30:11,900 --> 00:30:13,990 PHP simple uzas la saman sintakson. 666 00:30:13,990 --> 00:30:17,660 Tiu linio diras uzo SMTP-- Simpla Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Protokolo, kiu estas nur la protokolo uzita por sendi poŝton. 668 00:30:20,900 --> 00:30:24,240 Tio estas preciziganta uzo Harvard SMTP servilo, kiu 669 00:30:24,240 --> 00:30:25,830 estas ie ĉi tie en la campus. 670 00:30:25,830 --> 00:30:28,480 >> Tiu diras kion TCP pordnumeron paroli al, 671 00:30:28,480 --> 00:30:31,650 kaj mi nur supozis, ke el per googling aŭ Petante helpo skribotablo. 672 00:30:31,650 --> 00:30:34,640 Kaj tiam ĉar Harvard uzas iuj sistemo sekureco sur la poŝto server-- 673 00:30:34,640 --> 00:30:37,060 almenaŭ al ĉifri trafiko inter vi kaj gxi 674 00:30:37,060 --> 00:30:41,380 kvankam ĉiu povas sendi al it-- Mi tuj ŝaltas la TLS protokolo 675 00:30:41,380 --> 00:30:42,710 por teni ĉi sekura. 676 00:30:42,710 --> 00:30:44,730 >> Sed ĉi tiu estas kie aferoj preni iom timiga. 677 00:30:44,730 --> 00:30:47,970 Mi povas nur arbitre diru, ke mi estas jharvard, 678 00:30:47,970 --> 00:30:51,930 kaj mi povas nur arbitre retpoŝti min tie. 679 00:30:51,930 --> 00:30:55,650 Kaj tiam mi povas specifi temo kun tiu linio tie. 680 00:30:55,650 --> 00:30:58,460 >> Kaj tio apenaŭ aspektas malbelaj, sed estas nur faskon da kunmeto. 681 00:30:58,460 --> 00:31:04,480 Rezultas PHP havas súper utila simbolo, kiel iuj lingvoj, la skalara operatoro, 682 00:31:04,480 --> 00:31:07,340 kio ĝuste laŭvorte concatena kordoj post ŝnuro post ŝnuro, 683 00:31:07,340 --> 00:31:09,810 kaj vi ne devas malloc aŭ figuro la tuta longo de la kordo. 684 00:31:09,810 --> 00:31:10,820 Vi nur faru. 685 00:31:10,820 --> 00:31:15,220 Kaj efektive, ĉar mi concatenando en ĉiaj aferoj kun tiuj punktoj, 686 00:31:15,220 --> 00:31:18,330 tio estas kial la retpoŝto mi sendis rigardis kiel ĝi faris. 687 00:31:18,330 --> 00:31:20,610 >> Kaj poste persiste tie, mi sendas poŝton. 688 00:31:20,610 --> 00:31:22,580 Do se tiu estas falsa, Mi nur tuj mortos; 689 00:31:22,580 --> 00:31:25,680 kiu estas funkcio kiu nur impresoj al la ekrano iu erarmesaĝo. 690 00:31:25,680 --> 00:31:29,170 Sed, fakte, nomante la alsendota funkcio. 691 00:31:29,170 --> 00:31:31,780 Alie, se ĉio ĉi mankas, ĝi alidirektilojn min tie. 692 00:31:31,780 --> 00:31:34,050 >> Kaj kial mi vidas ke Mi registris vere? 693 00:31:34,050 --> 00:31:36,110 Nu, okazis ĝuste ĉi tie. 694 00:31:36,110 --> 00:31:38,170 Do mi alportos tiun ĉe kelkaj kialoj. 695 00:31:38,170 --> 00:31:41,542 >> Unu, tio estas ekzakte kiel se vi konstruos iuj retejo por fina projekto 696 00:31:41,542 --> 00:31:44,000 aŭ por la reala mondo, tio estas kiel vi sendu retpoŝton recordatorios 697 00:31:44,000 --> 00:31:45,924 al viaj klientoj aŭ viaj subskribintoj. 698 00:31:45,924 --> 00:31:47,590 Jen kiel vi sendas Pasvorto recordatorios. 699 00:31:47,590 --> 00:31:50,760 Jen kiel vi sendos popolon mesaĝojn ke ili havas novan Facebook 700 00:31:50,760 --> 00:31:52,990 mesaĝo ĉesigita aŭ io simila. 701 00:31:52,990 --> 00:31:55,010 >> Sed ankaŭ parolas la fakto ke tiu povis 702 00:31:55,010 --> 00:31:58,160 estis tre bone de Davin aŭ iu ajn alia. 703 00:31:58,160 --> 00:32:00,567 Kaj mi diras ĉi speco de kun rideto ĉar mi estas 704 00:32:00,567 --> 00:32:03,400 tute certa kio okazas tra pluraj el viaj mensoj ĉe tiu punkto. 705 00:32:03,400 --> 00:32:11,910 Sed ĉi tiu estas unu el tiuj, faru kiel mi diras, ne kion mi faras specon de aĵoj, 706 00:32:11,910 --> 00:32:14,480 ĉar ĝi estas bagatelaĵo forĝi retmesaĝoj ŝatas ĉi. 707 00:32:14,480 --> 00:32:16,480 Sed kiel vi povas esti vidita aŭ legi en la Crimson, 708 00:32:16,480 --> 00:32:18,271 lastatempe estas ankaŭ bela bagatela por homoj 709 00:32:18,271 --> 00:32:20,050 spuri ilin reen al iu fonto. 710 00:32:20,050 --> 00:32:23,790 Kaj petu por mi tempon, eble en CS50 lunĉo, kiom mi unue 711 00:32:23,790 --> 00:32:27,080 konatiĝis tre mallarĝe preskaŭ la Red tabulon multaj jaroj 712 00:32:27,080 --> 00:32:30,890 antaŭ kiam mi malkovris kiel internet laboris. 713 00:32:30,890 --> 00:32:36,940 Do en iu case-- iomete post la ed estraro faris. 714 00:32:36,940 --> 00:32:42,300 >> Do ĉiuokaze, estas amaso de súper mallokajn, 715 00:32:42,300 --> 00:32:45,960 kiam ili estas nomata ĉi tie, unu el kiuj ni saw-- dolaro signo substreko post. 716 00:32:45,960 --> 00:32:49,530 Jen kompenso nomita get, kio estas kie ŝtofo el URL 717 00:32:49,530 --> 00:32:50,690 finas iri. 718 00:32:50,690 --> 00:32:54,051 Kaj ekzistas tuta aro da aliaj, too-- kunsido kaj servilo kaj kuketo. 719 00:32:54,051 --> 00:32:55,800 Ni revenos al Kuketo alifoje, 720 00:32:55,800 --> 00:33:01,340 sed kunsido estas speco de malvarmeta ĉar rajton now-- ĝis now-- 721 00:33:01,340 --> 00:33:06,350 ĉio ni faris kun retumilo Estas speco de Minoritatoj, por tiel diri. 722 00:33:06,350 --> 00:33:10,060 Mi povas alklaki ĉirkaŭe, aliro dosierojn sur la servilo, iu 723 00:33:10,060 --> 00:33:13,500 okazas en la ekrano, sed tiam la rilato fermas. 724 00:33:13,500 --> 00:33:17,450 Interreto Explorer aŭ Firefox ikono detenas ŝpinita 725 00:33:17,450 --> 00:33:20,340 kaj vi nur vidas kion ke retpaĝo enhavas. 726 00:33:20,340 --> 00:33:23,530 >> Do HTTP estas Minoritatoj en tiu iam ĝi faras ligon, 727 00:33:23,530 --> 00:33:25,050 ricevas iujn datumojn, tio estas ĝi. 728 00:33:25,050 --> 00:33:29,940 Plu rilato, kontraste Skype, kontraste Facetime, kontraste GChat, kiu 729 00:33:29,940 --> 00:33:32,180 subtenas konstantan konektiĝi al la servilo. 730 00:33:32,180 --> 00:33:34,650 La retejo estas fundamente malkonektita, kvankam ni 731 00:33:34,650 --> 00:33:36,630 vidi antaŭ longe kiel ni povas simuli tion 732 00:33:36,630 --> 00:33:39,300 kiel Facebook babilejo kaj GChat, kiu subtenus la illusion-- 733 00:33:39,300 --> 00:33:41,680 aŭ efektive fari subteni konstantan konekton uzante 734 00:33:41,680 --> 00:33:43,270 pli moderna teknologio. 735 00:33:43,270 --> 00:33:49,000 >> Sed se mi iras, diras counter.php, ĉi tio estas alia simpla ekzemplo: 736 00:33:49,000 --> 00:33:52,700 kiel ni vidos, ke aktuale pensas Mi vizitis la retejon nula tempo. 737 00:33:52,700 --> 00:33:56,790 Sed se mi simple reŝarĝi la paĝon, ĝi iel konas min ĉi tie antaŭe. 738 00:33:56,790 --> 00:33:58,840 Se mi reŝarĝi denove, scias mi estis tie antaŭe. 739 00:33:58,840 --> 00:34:01,100 Kaj denove kaj denove kaj denove kaj denove. 740 00:34:01,100 --> 00:34:03,610 >> Do tie estas kelkaj pli-plussing okazas, sed avizo 741 00:34:03,610 --> 00:34:07,090 la etulon teksas iam tiel mallonge supren supro kaj tiam malkonektas, 742 00:34:07,090 --> 00:34:11,179 tial ĝi ne estas kiel mi havas konstantan konektiĝi al mia aparato. 743 00:34:11,179 --> 00:34:16,929 Nu, se mi iros en counter.php, rimarki kiom simpla estas. 744 00:34:16,929 --> 00:34:19,080 Mi unue nomas tiun specialaj funkcio kiun ni baldaŭ 745 00:34:19,080 --> 00:34:21,513 komenci preni por donita nomata sesio komenco. 746 00:34:21,513 --> 00:34:22,179 Iniciati kunsido. 747 00:34:22,179 --> 00:34:25,095 >> Kaj kunsido nun estas nur tuj estos sitelo kiel komerca 748 00:34:25,095 --> 00:34:28,120 veturilo en kiu vi povas meti valoroj kaj ia fidi kiel programisto 749 00:34:28,120 --> 00:34:31,590 ke tuj estos tie kiam ke uzanto venas back-- dua 750 00:34:31,590 --> 00:34:35,670 poste, post unu horo, eĉ jaron poste, tiel longe kiel li aŭ ŝi ne demetas 751 00:34:35,670 --> 00:34:37,602 ilia kuketoj, kiel ni fine vidas. 752 00:34:37,602 --> 00:34:39,310 Kaj nun mi nur havas oni se kondiĉo tie. 753 00:34:39,310 --> 00:34:44,679 Do se la sekva ŝlosilo, nomita vendotablo, estas metita ene 754 00:34:44,679 --> 00:34:49,210 de tiu super global-- tiu hash tablo, se vi will-- nomata sesio, 755 00:34:49,210 --> 00:34:53,350 tiam iri antaŭen kaj kroĉi la valoro de la session-- think 756 00:34:53,350 --> 00:34:55,250 de tiu kiel komerca cart-- kaj stoki ĝin 757 00:34:55,250 --> 00:34:57,680 en portempa variablo nomita vendotablo. 758 00:34:57,680 --> 00:35:02,240 >> Alie, se tiu valoro vendotablo estis ne starigu en la tn aĉetojn cxaron, 759 00:35:02,240 --> 00:35:04,430 nur pravalorizi ĝin al 0. 760 00:35:04,430 --> 00:35:09,830 Laste, cxi tie, iru kaj metita reen en la komerca ĉaroj aŭ la seanco 761 00:35:09,830 --> 00:35:13,000 la valoron de nombrilo +1. 762 00:35:13,000 --> 00:35:16,730 Do rezultas ke ĉi speciala ujo here-- 763 00:35:16,730 --> 00:35:20,355 kiuj, denove, estas unu el tiuj asociitaj arrays, tabelo, kiun vi povas indekso 764 00:35:20,355 --> 00:35:25,010 en vortojn anstataŭ numbers-- persistas eĉ post la uzanto iras. 765 00:35:25,010 --> 00:35:26,510 Denove, mi reiros al la paĝo nun. 766 00:35:26,510 --> 00:35:28,400 Jam pasis unu minuto aŭ tiel. 767 00:35:28,400 --> 00:35:31,300 Sed memoru, ke mi havas tie 19 fojojn antaŭe. 768 00:35:31,300 --> 00:35:32,740 Tiu estas mia 20a vizito. 769 00:35:32,740 --> 00:35:36,560 >> Kaj tiel ĉi tiu tuj estos ŝlosilo efektivigo ajna retejo kiu memoras 770 00:35:36,560 --> 00:35:40,640 ke vi ensalutu, ke vi metis io laŭvorta en via komerca ĉaron 771 00:35:40,640 --> 00:35:43,902 aĉeti aŭ ke vi havas iun numeron de mesaĝoj pritraktata. 772 00:35:43,902 --> 00:35:45,610 Anytime vi volas memori informon, 773 00:35:45,610 --> 00:35:48,130 Ni vidos ke PHP, kiel pluraj aliaj lingvoj, 774 00:35:48,130 --> 00:35:53,640 provizas nin per ĉi iluzio de stato kvankam, kiel vi vidos en PSET 6 775 00:35:53,640 --> 00:35:57,642 kiel vi faras HTTP petojn de kliento al servilo, tio estas ĝi. 776 00:35:57,642 --> 00:35:59,850 Unufoje vi reiri ke respondo, estas nenio pli 777 00:35:59,850 --> 00:36:01,790 revenanta el la servilo defaŭlte. 778 00:36:01,790 --> 00:36:03,820 Sed ni vidos kiel labori ĉirkaŭ tiu. 779 00:36:03,820 --> 00:36:07,430 >> Nu nun, ni provu purigi ĉi supren iomete. 780 00:36:07,430 --> 00:36:09,470 Ni vidis kelkajn malsamajn ekzemplojn tie. 781 00:36:09,470 --> 00:36:12,250 Ah, kaj kiel flanken, por tiuj familiaraj aŭ nekonataj, 782 00:36:12,250 --> 00:36:14,230 La kialo ke la Frosh IMS ekzemple iris 783 00:36:14,230 --> 00:36:18,060 rigardi vere malbela al slightly-- bone, 784 00:36:18,060 --> 00:36:23,160 Ankoraŭ ugly-- iomete malpli malbela kvankam ankoraŭ malbelan 785 00:36:23,160 --> 00:36:25,230 estas ĉar se ni rigardas ĉe la fontkodon tie, 786 00:36:25,230 --> 00:36:28,240 Ĝi rezultas ke mi havas ĉe la plejsupro de la dosiero. 787 00:36:28,240 --> 00:36:32,570 >> Rezultas ke bootstrap estas unu el la multaj libere havebla bibliotekoj tie 788 00:36:32,570 --> 00:36:37,140 kiuj ekzistas ne por programlingvoj ĉiam, sed por CSS aŭ por Ĝavoskripto 789 00:36:37,140 --> 00:36:39,190 aŭ HTML aŭ ajna nombro da lingvoj. 790 00:36:39,190 --> 00:36:42,160 >> Kaj tiuj uloj here-- origine eliris 791 00:36:42,160 --> 00:36:44,730 de Twitter-- nur devas tutan faskon da stiloj. 792 00:36:44,730 --> 00:36:47,360 Ĝi estas masiva dosieron tie ke iu skribis, 793 00:36:47,360 --> 00:36:51,020 aŭ ies skribis super tempo Specifas koloroj kaj formatado 794 00:36:51,020 --> 00:36:53,740 kaj whatnot tiel ke mi povas speco de prunteprenas la sintakso 795 00:36:53,740 --> 00:36:56,157 kaj ne havas elkompreni kiel meti mian formon. 796 00:36:56,157 --> 00:36:57,990 Tiu estas ankaŭ minified tiel ke komputilo povas 797 00:36:57,990 --> 00:37:00,560 kompreni ĝin sed ne nepre homo. 798 00:37:00,560 --> 00:37:03,050 Do tio estas nur kial la estilización tie ŝanĝis. 799 00:37:03,050 --> 00:37:05,450 >> Sed ni nun bonfarados en terminoj de dezajno, 800 00:37:05,450 --> 00:37:07,490 ĉar se ni restos malsupren ĉi vojo tro longaj, 801 00:37:07,490 --> 00:37:11,290 nian kodon tuj akiri senorda kaj Messier. 802 00:37:11,290 --> 00:37:13,040 Do ni enfokusigi tiujn ekzemplojn ĉi tie. 803 00:37:13,040 --> 00:37:15,090 La lasta hodiaŭ. 804 00:37:15,090 --> 00:37:18,720 >> Do tie estas súper simpla Versio 1.0 de CS50 de afiŝinto. 805 00:37:18,720 --> 00:37:21,250 Ĝi nur havas ligojn al prelegoj kaj Syllabus, 806 00:37:21,250 --> 00:37:25,490 kaj ĝin uzante tiu neordigitan liston tag-- la UL etikedo kiujn ni uzis lastan fojon. 807 00:37:25,490 --> 00:37:28,800 Kaj se fakte, se mi malfermi Vidi Paĝo Fonto, 808 00:37:28,800 --> 00:37:31,710 vi vidos, ke tio estas vere, vere simplan HTML. 809 00:37:31,710 --> 00:37:35,460 Kaj fakte, kvankam tiu estas de PHP dosieron sub la kapuĉo, 810 00:37:35,460 --> 00:37:38,620 ĝi estas ankoraŭ apenaŭ kracxi el nur HTML nun. 811 00:37:38,620 --> 00:37:41,312 >> Do se mi alklaku Prelegoj, vidas ĉi okazi. 812 00:37:41,312 --> 00:37:43,020 Kaj se Mi alklaku semajno nulo, ni vidu tion. 813 00:37:43,020 --> 00:37:44,920 Kaj se mi alklaki Merkredo, ni vidu tion. 814 00:37:44,920 --> 00:37:47,900 Kaj tio ŝajne estis la PDF de la diapozitivoj de tiu tago. 815 00:37:47,900 --> 00:37:52,020 Ĉiuj mi faris estas ligilo kun ankron etikedo por tiu URL tie. 816 00:37:52,020 --> 00:37:55,400 >> Do tio estas nur por diri ĉi estas bela simpla versio de CS50 de afiŝinto. 817 00:37:55,400 --> 00:37:56,790 Vidu kiel ĝi estas implementado. 818 00:37:56,790 --> 00:38:01,240 Se mi iros en la mvc0 dosierujo, ni vidos kelkajn dosierojn. 819 00:38:01,240 --> 00:38:03,250 Unu estas README, do se iuj de ĉi tio estas tro rapida, 820 00:38:03,250 --> 00:38:05,166 Vi povas simple poke ĉirkaŭe pli malrapide poste. 821 00:38:05,166 --> 00:38:07,930 Kaj rimarki en ĉi tie estas index.php dosiero. 822 00:38:07,930 --> 00:38:09,960 Ĝi rezultas ke se vi mem, la homaj, 823 00:38:09,960 --> 00:38:14,460 ne specifas finan nomon URL, la ttt-servilo kutime 824 00:38:14,460 --> 00:38:17,010 infiere iuj defaŭltan nomon por vi. 825 00:38:17,010 --> 00:38:20,060 Indeksa punkto ion Estas ĝenerale la defaŭlta. 826 00:38:20,060 --> 00:38:23,010 >> Do jen kial antaŭ momento kiam mi vizitis ĉi URL tie, 827 00:38:23,010 --> 00:38:26,750 neniu dosiernomo, neniu dosiero pligrandigo, neniu periodo en la URL. 828 00:38:26,750 --> 00:38:29,710 Ĝi apenaŭ sciis iel magie serĉi index.php. 829 00:38:29,710 --> 00:38:30,870 Estas nur konvencio. 830 00:38:30,870 --> 00:38:32,360 Povus nomi ion. 831 00:38:32,360 --> 00:38:35,110 >> Do se mi nun iros en index.php, vi vidos 832 00:38:35,110 --> 00:38:37,100 ke indeed-- ni forigi la komentojn 833 00:38:37,100 --> 00:38:39,500 tie ĉar tie vere nenio interese it-- 834 00:38:39,500 --> 00:38:41,579 tiu estas nur malfacile kodita HTML. 835 00:38:41,579 --> 00:38:43,370 Do tio estas konsekvenca, kvankam kun mia aserto 836 00:38:43,370 --> 00:38:45,230 ke vi povas commingle HTML kaj PHP. 837 00:38:45,230 --> 00:38:48,060 Ne estas reala Programado logiko tie. 838 00:38:48,060 --> 00:38:51,030 >> Kaj la aliaj dosieroj estas bela multe same seninteresa. 839 00:38:51,030 --> 00:38:56,240 Estas nur malfacile-kodita semajno unu tie por semajno unu m kaj semajno unu w, 840 00:38:56,240 --> 00:38:57,510 por lundo kaj merkredo. 841 00:38:57,510 --> 00:39:01,890 Kaj tiam se mi malfermas semajno nulo: rimarki estas preskaŭ identaj. 842 00:39:01,890 --> 00:39:03,320 >> Kaj tio estas speco de klavo takeaway. 843 00:39:03,320 --> 00:39:06,180 Rimarku kiom redunda tio. 844 00:39:06,180 --> 00:39:10,710 Tiuj dosieroj apenaŭ ŝanĝiĝas, tamen mi tiris unu el tiuj kopio / pasto laborpostenoj 845 00:39:10,710 --> 00:39:13,420 kie mi prenis unu file-- supozeble en semajno zero-- kopiis ĝin 846 00:39:13,420 --> 00:39:16,320 kiam semajno venis ĉirkaŭe, kaj tweaked kelkaj valoroj. 847 00:39:16,320 --> 00:39:18,590 Ni probable povos fari pli bonan ol tio. 848 00:39:18,590 --> 00:39:21,800 >> Do ni revenu al MVC kaj iru en versio unu. 849 00:39:21,800 --> 00:39:24,810 Kaj rimarki mi hvas kelkajn dosierojn, ĉar kio 850 00:39:24,810 --> 00:39:29,870 estis komuna al ĉiuj tiujn dosierojn nur momento ago-- se mi reirus al versio 0, 851 00:39:29,870 --> 00:39:32,600 ni iru reen en indico, kaj ĝuste postulate-- 852 00:39:32,600 --> 00:39:36,090 fojon mi forigi la comments-- kio parto de ĉi tiu paĝo 853 00:39:36,090 --> 00:39:40,072 Estas supozeble en ĉiu el miaj dosieroj? 854 00:39:40,072 --> 00:39:40,780 Simple nomas ĝin. 855 00:39:40,780 --> 00:39:44,620 Kies linioj estas duobligitaj verŝajne tra ĉiuj de ĉi tiuj paĝoj? 856 00:39:44,620 --> 00:39:45,120 Yeah? 857 00:39:45,120 --> 00:39:46,110 >> Student: [inaudible]. 858 00:39:46,110 --> 00:39:47,660 >> DAVID J. Malan: 1 tra 9. 859 00:39:47,660 --> 00:39:48,720 Jes, absolute. 860 00:39:48,720 --> 00:39:52,080 1 tra 9, krom eble 8 ŝanĝas iomete ĉar CS50 861 00:39:52,080 --> 00:39:54,650 iĝas prelegoj aŭ semajno nulo aŭ io. 862 00:39:54,650 --> 00:39:55,970 Sed preskaŭ identaj. 863 00:39:55,970 --> 00:39:58,657 Do ĉiuj ĉi aĵoj estas nur ia kopiis nuda. 864 00:39:58,657 --> 00:40:00,490 Kaj tie estas paro aliaj linioj mi povas pensi 865 00:40:00,490 --> 00:40:05,000 el kiuj estas probable identa trans ĉiujn dosierojn. 866 00:40:05,000 --> 00:40:06,315 >> Student: 12 kaj 13. 867 00:40:06,315 --> 00:40:07,190 DAVID J. Malan: Jes. 868 00:40:07,190 --> 00:40:11,220 Certe, 12, 13, kaj 14, probable, nur pro la interesaj aĵoj 869 00:40:11,220 --> 00:40:15,460 okazas en linioj 11 kaj 10, do ĝi similus. 870 00:40:15,460 --> 00:40:18,350 Do ni rigardu versio 1, kiuj provas plibonigi la ĉi. 871 00:40:18,350 --> 00:40:24,020 En la versio 1 de ĉi MVC example-- ni klarigi kion MVC rimedoj en moment-- 872 00:40:24,020 --> 00:40:27,420 se mi iros en indico, tio speco de aspektas iom malklara nun. 873 00:40:27,420 --> 00:40:28,880 Ne estas tute tiel simpla kiel antaŭe. 874 00:40:28,880 --> 00:40:30,906 >> Sed unufoje vi komencas legu ĝin atente, estas 875 00:40:30,906 --> 00:40:32,530 bela simpla kia ĝi estas faranta. 876 00:40:32,530 --> 00:40:34,397 Ŝajne la linio 1 kaj linio 8 anstataŭis 877 00:40:34,397 --> 00:40:37,230 ĉiuj aĵoj vi ĵus identified-- kvankam nur por bonan mezuron, 878 00:40:37,230 --> 00:40:41,900 Mi forlasis la ULs tie ĉiaokaze iuj tagoj ne havas liston de aĵoj. 879 00:40:41,900 --> 00:40:47,860 Kaj tiel postulas estas speco de kiel funto inkluzivi en C. kopioj kaj pastoj 880 00:40:47,860 --> 00:40:50,470 la enhavo efike ĉi tie en ĉi tiu dosiero. 881 00:40:50,470 --> 00:40:53,650 >> Do en header.php, kiel vi povus konkludi el lia nomo, 882 00:40:53,650 --> 00:40:55,330 tuj estos la kaplinio de la paĝo. 883 00:40:55,330 --> 00:40:57,110 Ĝi estas speco de orfoj tie. 884 00:40:57,110 --> 00:41:01,820 Ĝi nur havas la supro al ĝi, sed ne estas pli enhavo sube. 885 00:41:01,820 --> 00:41:05,070 >> Kaj se mi rigardas footer dume, kio estis la alia dosiero mentioned-- 886 00:41:05,070 --> 00:41:08,830 ĉi tiu estas eĉ malpli interesaj, sed denove, estas komunaj al ĉiu. 887 00:41:08,830 --> 00:41:10,250 Do tio estas la footer. 888 00:41:10,250 --> 00:41:11,300 Tiu estas la kaplinio. 889 00:41:11,300 --> 00:41:13,950 Ĉi tio estas la dosiero estas ŝanĝi, do kial ne 890 00:41:13,950 --> 00:41:18,140 provu faktora la komuneco kun tiuj du linioj tie? 891 00:41:18,140 --> 00:41:20,090 >> Sed ni povas purigi ĉi ĝis iom pli. 892 00:41:20,090 --> 00:41:23,260 Mi tuj iros antaŭen kaj malfermi versio du kie 893 00:41:23,260 --> 00:41:27,106 Ni vidos ke ne estas nova dosiero, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Ni vidos kion estas en momento. 895 00:41:28,610 --> 00:41:30,930 Ni iru al la indico, kiel la enirpunkto kiel antaŭe. 896 00:41:30,930 --> 00:41:35,230 >> Kaj nun rimarki min postulanta helpers.php, ne header aŭ footer. 897 00:41:35,230 --> 00:41:41,720 Sed helpantoj estas ia ŝatas helpers.c kaj helpers.h el PSET 2 898 00:41:41,720 --> 00:41:46,150 aŭ PSET 3 longe kiam vi reale ne serĉu kaj trovu por PSET, 899 00:41:46,150 --> 00:41:50,950 kaj vi havis ĉiujn viajn kodo ordigo kaj serĉas en aparta dosiero. 900 00:41:50,950 --> 00:41:52,510 Tio estas kio okazas tie. 901 00:41:52,510 --> 00:41:54,390 >> Kaj nun la linio 3 aspektas iom malsama. 902 00:41:54,390 --> 00:41:55,920 Kaj tio estas nur unu linion. 903 00:41:55,920 --> 00:41:57,950 Fari ĉi eĉ pli klara, mi povis nur 904 00:41:57,950 --> 00:42:01,820 cxu tio estos stile kohera kun ĉio alia ni faris. 905 00:42:01,820 --> 00:42:04,130 Sed tio ne estas vere ŝanĝi la funcionalidad. 906 00:42:04,130 --> 00:42:05,880 Estas nur unu linion de reala kodo. 907 00:42:05,880 --> 00:42:09,010 >> Ŝajne, estas funkcio ie nomata redonu kaplinio, 908 00:42:09,010 --> 00:42:11,420 kaj ĉi tiu estas kie aferoj akiri bela potenca. 909 00:42:11,420 --> 00:42:17,040 Rimarku ke ene de lia krampoj Estas kion alia peco de sintakso? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 Verŝajne iom malfacile diri, sed rimarki there's-- mi metos kelkajn blankajn 912 00:42:23,350 --> 00:42:24,300 spaco. 913 00:42:24,300 --> 00:42:25,530 Ekzistas rektaj krampoj. 914 00:42:25,530 --> 00:42:29,700 >> Kaj kvadrataj krampoj ni vidis iom malantaŭen en la kadro de asociaj tabeloj, 915 00:42:29,700 --> 00:42:31,580 kio estas, denove, kiel hash tabloj. 916 00:42:31,580 --> 00:42:36,230 Kaj se vi opinias nun al C, la ordo de argumentoj en funkcio 917 00:42:36,230 --> 00:42:37,570 devas ĉiam esti la sama. 918 00:42:37,570 --> 00:42:41,146 Oni devas memori, kion la ordigi is-- x, y, z aŭ z, y, x-- 919 00:42:41,146 --> 00:42:44,020 kaj vi devas ĉiam provizi ilin en la sama ordo aŭ serĉi ilin 920 00:42:44,020 --> 00:42:45,100 se vi jam forgesis. 921 00:42:45,100 --> 00:42:51,140 >> Sed tio ŝajnas esti interesa maniero trapasigi arbitran ŝlosila valoro 922 00:42:51,140 --> 00:42:55,840 paroj per titolo estas la nomo de argumento en tiu kazo 923 00:42:55,840 --> 00:42:58,334 kaj CS50 estas ĝia valoro. 924 00:42:58,334 --> 00:43:00,250 Kaj la fakto ke mi havas tiuj kvadrataj krampoj 925 00:43:00,250 --> 00:43:02,560 tie signifas ke mi povis ankaŭ pasas en ion 926 00:43:02,560 --> 00:43:07,550 kiel semajne estas 1 aŭ 0 aŭ 2 aŭ 3. 927 00:43:07,550 --> 00:43:10,550 Do ni parametrigis tiun funkcion en tia vojo 928 00:43:10,550 --> 00:43:15,180 kiu povas preni plurajn enirojn, sed nuntempe ĝi estas nur unu. 929 00:43:15,180 --> 00:43:20,060 >> Se mi nun iros en helpers.php, rimarki kio ĝi estas faranta. 930 00:43:20,060 --> 00:43:22,030 Tio estas iomete de novaj funcionalidades, 931 00:43:22,030 --> 00:43:24,190 sed por la momento nur prenu sur fido, ke tio estas 932 00:43:24,190 --> 00:43:26,570 La sintakso kun kiu vi difini funkcio en PHP. 933 00:43:26,570 --> 00:43:27,840 Vi laŭvorte diras funkcio. 934 00:43:27,840 --> 00:43:30,090 Vi ne specifi reveno tajpi, kaj tio estas konsekvenca 935 00:43:30,090 --> 00:43:33,880 per la variablo detalo antaŭe kie vi ne vere forte tajpas. 936 00:43:33,880 --> 00:43:35,650 >> Tiu simple precizigas ke, implicite, tiu 937 00:43:35,650 --> 00:43:37,460 prenas asocieca tabelo kiel argumento. 938 00:43:37,460 --> 00:43:38,210 Kaj vi scias kion? 939 00:43:38,210 --> 00:43:41,450 Se la uzanto ne pasi unu en, supozi defaŭlta valoro. 940 00:43:41,450 --> 00:43:44,680 >> Tiu estas karakterizaĵo kiu C ne havas por ni, tio estas agrabla, ĉar nun 941 00:43:44,680 --> 00:43:46,430 datumo, eĉ se vi Ne donu gxin io, 942 00:43:46,430 --> 00:43:49,300 tuj estos tabelo sed malplena unu. 943 00:43:49,300 --> 00:43:51,860 Kaj kiel flanken, ekstrakto nur faras ion funky 944 00:43:51,860 --> 00:43:56,380 kie portas ĉiujn ŝlosilojn de ĉi asocieca tabelo, ĉiu de la aĵoj 945 00:43:56,380 --> 00:43:59,950 vi povus meti en kvadrataj krampoj, kaj kreas variabloj el ili 946 00:43:59,950 --> 00:44:06,270 tiel ke ni povos finfine havas aliron al ili en footet.php kaj header.php. 947 00:44:06,270 --> 00:44:08,950 Tio estas iom abstrakta, tial permesu al mi klarigi ĉi tion. 948 00:44:08,950 --> 00:44:12,990 >> En index.php, rimarki ke mi estas pasante en ŝlosila valoro paro de titolo 949 00:44:12,990 --> 00:44:14,850 kun valoro de CS50. 950 00:44:14,850 --> 00:44:18,660 Se mi nun rigardas helpers.php, rimarki ke RenderHeader 951 00:44:18,660 --> 00:44:23,870 Estas ĉerpante tiu datumo kiun mi pasante en, kaj tiam postulanta header.php. 952 00:44:23,870 --> 00:44:27,970 Kion mi faris estas speco de malriĉa homo efektivigo nun de la sekva. 953 00:44:27,970 --> 00:44:31,720 >> Se mi malfermas header.php, avizon ke mi ne plu forte 954 00:44:31,720 --> 00:44:34,890 coded vorto CS50 en ĉi kaplinio dosiero. 955 00:44:34,890 --> 00:44:39,310 Mi metas ĉi rekoni atrociously nomita funkcio, HTML speciala signojn, 956 00:44:39,310 --> 00:44:40,170 tien. 957 00:44:40,170 --> 00:44:41,640 Sed rimarki kion mi faris. 958 00:44:41,640 --> 00:44:44,240 Mi havas malfermita HTML. 959 00:44:44,240 --> 00:44:47,420 Mi do havas malfermita kapon kaj malferma titolo. 960 00:44:47,420 --> 00:44:52,380 >> Kaj poste ene de la titolo la malferma kaj Fermi tags: Mi havas iom de PHP-kodo. 961 00:44:52,380 --> 00:44:56,670 Kaj tio estas agrabla sed de sintakso, kiu signifas nur eĥo eksteren. 962 00:44:56,670 --> 00:44:59,840 Ĝi laŭvorte signifas this-- echo la following-- 963 00:44:59,840 --> 00:45:01,910 sed cxi tiu estas sexier skribi. 964 00:45:01,910 --> 00:45:05,000 Eĥo el la titolo ke'S estis pasita en. 965 00:45:05,000 --> 00:45:07,560 >> Sed kion vi opinias HTML speciala char estas ĉiuj proksimume, 966 00:45:07,560 --> 00:45:10,590 speciale se vi havas iuj antaŭaj HTML sperto? 967 00:45:10,590 --> 00:45:14,050 Kio karakteroj eble danĝera Iam en al paĝo 968 00:45:14,050 --> 00:45:17,980 kie vi dinamike generi paĝon kodon kiel tio? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Permesu al mi iri al ĉi tiu dosiero: versio du, kaj vidi, cxu mi ne povas indukti ĉi. 971 00:45:24,650 --> 00:45:26,210 >> Versio du estas tiu. 972 00:45:26,210 --> 00:45:28,510 Kaj rimarki ĉiun Estas bone, funkcias bone. 973 00:45:28,510 --> 00:45:35,280 Sed supozu, ke mi iru en index.php kaj Mi indikis, ke la titolo de mia paĝo 974 00:45:35,280 --> 00:45:36,630 ne estas CS50. 975 00:45:36,630 --> 00:45:44,930 Estas malferma krampo skripto garde saluton mondo, proksime sola citaĵo, 976 00:45:44,930 --> 00:45:49,740 Fermi parentezo, punktokomo, malferma krampo, oblikvo skripto. 977 00:45:49,740 --> 00:45:51,897 >> Skripto, kiel ni fine vidas, estas etikedo 978 00:45:51,897 --> 00:45:54,480 kiun vi povas uzi por uzi de alia programlingvo nomas 979 00:45:54,480 --> 00:45:56,330 Ĝavoskripto ene de retpaĝo. 980 00:45:56,330 --> 00:45:57,960 Kaj nun rimarkos la logiko tie. 981 00:45:57,960 --> 00:45:59,840 Jen estas ŝlosila nomis titolo. 982 00:45:59,840 --> 00:46:02,690 Jen ŝi estas freneza longa valoro nun. 983 00:46:02,690 --> 00:46:07,840 >> Sed se mi iras al la helpantoj page- aŭ pli ĝuste, la kaplinio paĝo 984 00:46:07,840 --> 00:46:11,310 Mi vokas tiun funkcion sur tiu titolo unue. 985 00:46:11,310 --> 00:46:15,250 Do se mi nun reŝarĝi la paĝon, mi vidu tion, kio aspektas ridinda, 986 00:46:15,250 --> 00:46:16,110 sed estas sekura. 987 00:46:16,110 --> 00:46:17,310 Ĝi simple aspektas stulta. 988 00:46:17,310 --> 00:46:20,320 >> Sed supozu anstataŭe Mi forgesis tion. 989 00:46:20,320 --> 00:46:24,660 Kaj atentu miajn vortojn, nenula nombro vi forgesos fari tion 990 00:46:24,660 --> 00:46:27,790 kaj vi ricevos kelkajn laborkapabla studento aŭ amiko venis supren 991 00:46:27,790 --> 00:46:31,540 al vi en la CS50 foiro aŭ anonime nokto ŝovas ĉirkaŭ sur via retejo 992 00:46:31,540 --> 00:46:35,300 kaj esence injekti kodo dorsoj de vi en via retejo 993 00:46:35,300 --> 00:46:35,800 iel. 994 00:46:35,800 --> 00:46:39,000 >> Ĉar se mi simple kracxos el titolon tie kaj titolo 995 00:46:39,000 --> 00:46:44,330 there-- bone, se titolo laŭvorte aspektas kiel tiu kaj PHP 996 00:46:44,330 --> 00:46:47,660 kiel lingvo kiu povas kraĉi aliajn lingvojn teksto, 997 00:46:47,660 --> 00:46:50,650 tio estas laŭvorte iri anstataŭi ĉi etikedon kun, 998 00:46:50,650 --> 00:46:53,010 kompreneble, kion mi metu aliloke. 999 00:46:53,010 --> 00:46:57,640 >> Do se mi iros tien kaj reŝarĝi post malfarante tiujn mekanismojn de sekureco, 1000 00:46:57,640 --> 00:46:59,982 nun mi havas saluton mondo tie. 1001 00:46:59,982 --> 00:47:02,690 Nun tio ne estas ĉiu tiu granda de trakti, sed vi povus fari ion 1002 00:47:02,690 --> 00:47:05,119 iom pli malican tie, kiel ekzistas 1003 00:47:05,119 --> 00:47:08,410 aliaj tags-- kiel ni vidos tuj Malaperis pli tempo en JavaScript-- kiel situo 1004 00:47:08,410 --> 00:47:14,910 dot href ricevas, citaĵo, unquote, HTTP business.com, sed la malo de tiu 1005 00:47:14,910 --> 00:47:15,950 de la alia tago. 1006 00:47:15,950 --> 00:47:20,120 Kaj nun vi povas indukti retejo paĝo por fakte tuj iru 1007 00:47:20,120 --> 00:47:21,190 al tiu retpaĝo ĉi tie. 1008 00:47:21,190 --> 00:47:23,000 >> Kaj efektive, mi ne volas eĉ iri al business.com 1009 00:47:23,000 --> 00:47:24,749 ĉar mi ne volas scii kio tio estas. 1010 00:47:24,749 --> 00:47:28,710 Sed tiu ankaŭ estos deĉenigi kodo esti injektita en ĉi tiu paĝo. 1011 00:47:28,710 --> 00:47:32,680 Do tio estas nur por diri ke kvankam ni enkonduki súper frua iom 1012 00:47:32,680 --> 00:47:36,800 de tiuj pli kompleksaj strukturoj, estas tute al finon de certigi 1013 00:47:36,800 --> 00:47:39,320 ke via kodo ne explotables. 1014 00:47:39,320 --> 00:47:40,960 >> Do nun la tria versio tie. 1015 00:47:40,960 --> 00:47:42,470 Ĝi faras iom amatoro. 1016 00:47:42,470 --> 00:47:44,875 Mi ne vere like-- la anal flanko de mi 1017 00:47:44,875 --> 00:47:47,750 estis prenanta iom ĝenis la fakto, ke mi funkcio nomita 1018 00:47:47,750 --> 00:47:51,940 RenderHeader kaj RenderFooter kiuj estis preskaŭ identaj. 1019 00:47:51,940 --> 00:47:55,400 Do mi ekpensis, kial ne Mi parametrigi tiuj funkcioj 1020 00:47:55,400 --> 00:47:59,180 en nur unu nomis redonu, ili ŝin preni duan argumenton 1021 00:47:59,180 --> 00:48:04,420 kiel la nomo de la ŝablono, la fina al render-- ĉu kaplinio aŭ footer? 1022 00:48:04,420 --> 00:48:07,160 Kaj tiam laŭvole, se mi volas Iam en iu ŝlosila valoro paroj 1023 00:48:07,160 --> 00:48:10,580 kiel mi povas fari por la titolo por la header sed ne por la footer, 1024 00:48:10,580 --> 00:48:11,800 Mi povus fari tion. 1025 00:48:11,800 --> 00:48:16,510 >> Kaj nun se mi iros en helpers.php, ĝi estas iom pli komplika. 1026 00:48:16,510 --> 00:48:19,670 Kaj mi skuos mian manon je la detaloj, sed estas nur unu funkcio. 1027 00:48:19,670 --> 00:48:21,890 Tiel ke estas paŝo al pli bona dezajno. 1028 00:48:21,890 --> 00:48:23,360 >> Ni povas preni ĉi tiun paŝon pli. 1029 00:48:23,360 --> 00:48:28,890 Se mi iras al mia kvara Versio de tiu, rimarkis nun 1030 00:48:28,890 --> 00:48:31,320 ke mi faras ion eĉ pli ia kamufla. 1031 00:48:31,320 --> 00:48:33,230 Kaj mi scias, tiu estas loto sorbi samtempe, 1032 00:48:33,230 --> 00:48:35,080 sed ni estas nur speco purigi aĵojn. 1033 00:48:35,080 --> 00:48:38,550 Nun mi metas miajn helpantojn dosiero en la dosierujo nomita 1034 00:48:38,550 --> 00:48:41,190 includes-- nur arbitran citi kie mi volas meti stuff 1035 00:48:41,190 --> 00:48:44,300 ke mi volas include-- kaj tiam la resto de ĉi tiu estas la sama. 1036 00:48:44,300 --> 00:48:47,140 >> Sed se mi rigardas nun en gedit, rimarki ke mi liveris 1037 00:48:47,140 --> 00:48:51,940 el ĉiuj tiuj aliaj dosieroj kaj mi movis ilin, ekzemple, en ĉi tie. 1038 00:48:51,940 --> 00:48:55,110 Kaj tiam en ŝablonoj, Mi havas ĉi tie ankaŭ. 1039 00:48:55,110 --> 00:48:59,292 Kaj tial ĉi estas ĉio nun al paŝo uzi multe pli bona dezajno ŝablono. 1040 00:48:59,292 --> 00:49:01,000 Kaj ni tre rapide tuj malproksimigi 1041 00:49:01,000 --> 00:49:03,870 de PHP La defaŭlta funcionalidad, kiun ni komencis tie kun, 1042 00:49:03,870 --> 00:49:07,655 kie vi ĵus commingle PHP, kaj via HTML, kaj via CSS 1043 00:49:07,655 --> 00:49:09,780 kaj vi simple kracxos ĝin kaj vi iros sur via vojo. 1044 00:49:09,780 --> 00:49:11,404 Oni ne tuj estos tre mantenible. 1045 00:49:11,404 --> 00:49:14,481 Ĝuste kiel en C, oni komencis uzi multnombraj arkivoj kaj multnombraj funkcioj 1046 00:49:14,481 --> 00:49:15,730 kaj faktoranta aferojn ekstere. 1047 00:49:15,730 --> 00:49:16,688 Ni faru la samajn tie. 1048 00:49:16,688 --> 00:49:19,970 Kaj fakte, en la kvina kaj fina version tie, mi faris unu alia afero. 1049 00:49:19,970 --> 00:49:23,710 Vi povas eĉ uzi dot dot, kiu, denove, estas nur la patro dosierujo. 1050 00:49:23,710 --> 00:49:28,260 Esti eĉ pli sekureco konscias, ĉar se mi rigardas la aŭskultado 1051 00:49:28,260 --> 00:49:32,450 tie por kvina kaj lasta versio, avizo ke mi havas unu dosierujo tie nomas 1052 00:49:32,450 --> 00:49:35,180 publiko, kaj poste sur la sama nivelo, tiel diri, 1053 00:49:35,180 --> 00:49:38,490 Mi havas inkludas kaj ŝablonoj kaj do ke tekstdosiero README. 1054 00:49:38,490 --> 00:49:41,130 >> Kaj la kialo mi strukturita ĝi plaĉas this-- kaj tantos retejo 1055 00:49:41,130 --> 00:49:44,330 gastigantoj, precipe tiuj $ 5 al monato aĵoj aŭ $ 10 monato, ili 1056 00:49:44,330 --> 00:49:47,170 se vi iam havis unu el tiuj services-- kio tiom da ili faru 1057 00:49:47,170 --> 00:49:50,690 Estas simple atendas vin eksalti ĉiuj de viaj dosieroj en unu dosierujo, 1058 00:49:50,690 --> 00:49:53,640 kiel ni faradis jam kun tiu tre unua ekzemplo. 1059 00:49:53,640 --> 00:49:56,740 >> Sed kiam vi komencos konstrui pli malnaiva retejoj kiuj simple stoki 1060 00:49:56,740 --> 00:50:00,480 datumoj vi zorgas pri kaj dosieroj zorgi pri, fakte organizi aferojn 1061 00:50:00,480 --> 00:50:05,060 ĝuste kaj kun pli sekureco konscio en menso povas 1062 00:50:05,060 --> 00:50:07,927 ni komencas defendi kontraŭ ĉiuj geamikoj 1063 00:50:07,927 --> 00:50:10,135 ke vi aŭ por aŭ eksteren de ĉi tiu klaso kiu, 1064 00:50:10,135 --> 00:50:12,510 Kiam vi komencas fari programoj mem sur la araneaĵo, 1065 00:50:12,510 --> 00:50:15,140 tuj komencos pluki sur vin kaj sur ili. 1066 00:50:15,140 --> 00:50:17,420 >> Kaj tiel ni rigardu fine en ĉi tiu dezajno. 1067 00:50:17,420 --> 00:50:20,010 Tiu estas nur bildo kiuj bildigas la sekvan. 1068 00:50:20,010 --> 00:50:22,897 Ni tuj metos ĉiujn de nia Programado logiko en unu aŭ pli da dosieroj, 1069 00:50:22,897 --> 00:50:25,230 kaj ni tuj komencu nomante tiujn regiloj. 1070 00:50:25,230 --> 00:50:28,022 Ĝi estas kie la cerboj de niaj retejoj reale estas. 1071 00:50:28,022 --> 00:50:29,730 Tiam ni tuj havi opiniojn kaj vidpunktojn 1072 00:50:29,730 --> 00:50:32,480 estas tiel simpla kiel ĝuste apartajn files-- nomata ŝablonoj, ofte. 1073 00:50:32,480 --> 00:50:34,410 Ili nur havas la estetiko de mia paĝo, 1074 00:50:34,410 --> 00:50:37,020 kion mi deziras la paĝo rigardi like-- la koloroj kaj la aranĝo 1075 00:50:37,020 --> 00:50:38,870 kaj la pozicioj de ĉiuj variabloj. 1076 00:50:38,870 --> 00:50:41,120 >> Kaj do pli interesa ke ni eventuale atingi 1077 00:50:41,120 --> 00:50:45,420 estas la modelo, kiu tuj estos ĝuste vorto ni frapas sur aliaj teknologioj 1078 00:50:45,420 --> 00:50:47,771 ke ni alportu en la bildo, kiel realaj datumbazoj, 1079 00:50:47,771 --> 00:50:49,520 tiel ke kiam vi volas ŝpari informoj, 1080 00:50:49,520 --> 00:50:52,140 Ne nur sendu retmesaĝon al viaj Proctor aŭ al ci mem, 1081 00:50:52,140 --> 00:50:57,350 vi fakte stokas en datumbazo uzante alian lingvon konata kiel SQL. 1082 00:50:57,350 --> 00:51:00,450 Kaj do ni lasos tie hodiaŭ kaj repreni kun tiu merkrede 1083 00:51:00,450 --> 00:51:02,990 kaj enkonduki datumbazoj tiam. 1084 00:51:02,990 --> 00:51:06,940 >> [MUZIKO Ludante] 1085 00:51:06,940 --> 00:54:24,555