1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVID Malan: Bone. 3 00:00:12,360 --> 00:00:15,970 Ĉi tio estas CS50, kaj ĉi tiu estas la finon de semajno naŭ. 4 00:00:15,970 --> 00:00:18,560 Jam pasis ventego super La lastaj tagoj. 5 00:00:18,560 --> 00:00:21,580 Kaj problemo starigis sep, se vi estas genuo profunde en ĝin, rimarkas ke estas tute 6 00:00:21,580 --> 00:00:23,340 iom novaj tio estas en tie. 7 00:00:23,340 --> 00:00:26,660 Sed ni vidu, se ni ne povas Piece ĉio kune cxi tie mallonge 8 00:00:26,660 --> 00:00:29,230 antaŭ ol tiam zorge evitante off en ankoraŭ alian direkton kaj vidantaj 9 00:00:29,230 --> 00:00:30,510 kie ajn ni povas iri. 10 00:00:30,510 --> 00:00:32,630 >> Do ĝis nun, ni jam parolis pri HTML. 11 00:00:32,630 --> 00:00:33,740 Ni parolis pri CSS. 12 00:00:33,740 --> 00:00:34,705 Ni parolis pri PHP. 13 00:00:34,705 --> 00:00:36,520 Vi jam komencis sperti SQL. 14 00:00:36,520 --> 00:00:38,360 Hodiaŭ, ni parolos iom pri JavaScript. 15 00:00:38,360 --> 00:00:41,230 Sed kiel fari ĉiujn tiujn dispar lingvoj persvadis kune? 16 00:00:41,230 --> 00:00:44,970 >> Do ni parolis pasintsemajne pri la nocio de havi servilon. 17 00:00:44,970 --> 00:00:48,470 Do ni simple desegni ĉi rektangulo kiel retservilo ĉi tie. 18 00:00:48,470 --> 00:00:52,200 Kaj reta servilo utilas certe dosierojn. 19 00:00:52,200 --> 00:00:54,640 Kaj iuj el tiuj dosieroj povas esti HTML dosierojn. 20 00:00:54,640 --> 00:00:58,270 Do unu el la aferoj kiuj ttt-servilo povas kraĉi ekstere povus esti arkivo kiu 21 00:00:58,270 --> 00:01:01,290 ni nur tiros kiel tiu enhavanta kelkajn HTML. 22 00:01:01,290 --> 00:01:04,786 Do en laiko terminoj, kion tio HTML lasu vin fari? 23 00:01:04,786 --> 00:01:06,036 >> Spektantaro: Paĝo rigardo afabla. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVID Malan: OK, fari paĝo aspektas bela, kvankam mi kredas ke mi jam pruvita 26 00:01:12,310 --> 00:01:13,370 ke alie. 27 00:01:13,370 --> 00:01:18,250 Do HTML ne lasu vin kuŝis ekstere paĝoj strukture, kaj permesas vin 28 00:01:18,250 --> 00:01:22,410 ia estetike marki supren paĝo, marki supren statika enhavo, tiel ke vi 29 00:01:22,410 --> 00:01:23,640 povas tiam vidi ĝin per retumilo. 30 00:01:23,640 --> 00:01:24,690 >> Sed tio estas la ŝlosilo. 31 00:01:24,690 --> 00:01:26,130 Ĝi estas statika enhavo. 32 00:01:26,130 --> 00:01:28,590 Vi skribas, vi konservos vian redakton, kaj tiam vi ŝipo. 33 00:01:28,590 --> 00:01:31,130 Kaj la TTT-servilo tiam utilas ĝin al viaj vizitantoj. 34 00:01:31,130 --> 00:01:35,700 >> Sed ni stylize aferojn uzante malsamajn lingvo entute. 35 00:01:35,700 --> 00:01:40,150 Ni komencis uzi stilo atributo sur certa etikedojn. 36 00:01:40,150 --> 00:01:43,400 Kaj la stilo atributo ni starigis aĵoj kiel tiparo grandeco kaj koloro. 37 00:01:43,400 --> 00:01:46,460 Kaj vi probable komencis malkovri, aŭ vi baldaŭ volon por fina 38 00:01:46,460 --> 00:01:50,160 projektoj potenciale, ankoraŭ alia propraĵoj ke vi povas uzi en CSS. 39 00:01:50,160 --> 00:01:54,710 Kaj tiel en laiko terminoj, kion vere tiam ĝi CSS fari? 40 00:01:54,710 --> 00:01:57,810 Tiuj estas nur ekzemploj de gxi. 41 00:01:57,810 --> 00:02:00,730 Kion tio lasu vin fari tion HTML Ne ŝajnas el kio 42 00:02:00,730 --> 00:02:02,606 ni vidis tiel multe? 43 00:02:02,606 --> 00:02:04,850 >> Spektantaro: Difini stilojn per vi mem. 44 00:02:04,850 --> 00:02:06,700 >> DAVID Malan: Difini stiloj per vi mem. 45 00:02:06,700 --> 00:02:10,280 Do difini tion kiel klasoj kiel vi eble renkontis aux unike 46 00:02:10,280 --> 00:02:13,800 identigi nodoj en dokumento tiel ke vi povas stylize ilin. 47 00:02:13,800 --> 00:02:16,890 Sed pli specife, mi dirus, ke css vere permesas preni aferoj la 48 00:02:16,890 --> 00:02:20,790 lasta mejlo kaj ebligas al vi difini multe pli precize la estetiko, 49 00:02:20,790 --> 00:02:24,340 dum HTML plejparte lasas vi strukturigi vian paĝoj. 50 00:02:24,340 --> 00:02:27,310 >> Kaj kvankam estas kelkaj defaŭltaĵoj, kiel ni vidis la etikedo por 51 00:02:27,310 --> 00:02:30,690 kapan etikedon, kiun malglate parolanta faris aĵojn grandaj kaj grasaj. 52 00:02:30,690 --> 00:02:34,250 Tio estas bela ĝenerala difino de la etikedo - grandaj kaj grasaj. 53 00:02:34,250 --> 00:02:35,260 Kio tiparo estas tiu? 54 00:02:35,260 --> 00:02:36,080 Kio koloro estas tio? 55 00:02:36,080 --> 00:02:36,890 Kiom aŭdaca estas tiu? 56 00:02:36,890 --> 00:02:39,830 Kaj CSS permesas pli fajne melodio aferojn tiel. 57 00:02:39,830 --> 00:02:42,150 Tiel kiel aranĝo, kiel iuj el vi jam vidis. 58 00:02:42,150 --> 00:02:45,180 >> Kaj sincere, CSS estas iom de senorda lingvo. 59 00:02:45,180 --> 00:02:48,370 Ĝi estas tre potenca en kiu vi povas fari laŭvorte ĉiu retpaĝaro ke vi havas 60 00:02:48,370 --> 00:02:51,880 vidi en la ttt hodiaŭ kun ĝi, sed ĝi estas speco de doloro en la kolo. 61 00:02:51,880 --> 00:02:54,440 Kaj iuj el vi batis vian kapon kontraŭ la muroj jam simple fari 62 00:02:54,440 --> 00:02:58,560 io stulta kiel centro menuo problemo starigis sep, se vi jam alvenis al 63 00:02:58,560 --> 00:02:59,470 tiu punkto jam. 64 00:02:59,470 --> 00:03:01,530 >> Sed realigi, tion akiri pli facile kun la tempo. 65 00:03:01,530 --> 00:03:02,820 Vi komencas rimarki ŝablonoj. 66 00:03:02,820 --> 00:03:06,020 Kaj cetere, Google estos via amiko por la diversaj manieroj, en kiuj vi povas 67 00:03:06,020 --> 00:03:07,220 solvi tiajn problemojn. 68 00:03:07,220 --> 00:03:11,520 >> Kaj mi kuraĝas diri per CSS, kaj HTML pli Ĝenerale, oni povas solvi problemojn en 69 00:03:11,520 --> 00:03:15,910 multaj pli vojoj, ĉiuj el kiuj eble tre bone esti ĝentila, ol vi povis 70 00:03:15,910 --> 00:03:18,900 en iu kiel C, eĉ nun PHP, aŭ Javascript. 71 00:03:18,900 --> 00:03:21,080 Ekzistas nur multajn malsamajn manieroj por arangxi aferojn. 72 00:03:21,080 --> 00:03:22,570 >> Sed ĉi komencis akiri senorda, ni diris. 73 00:03:22,570 --> 00:03:26,480 Nur speco de commingling via HTML kaj vian CSS kun la stilo atributo estis 74 00:03:26,480 --> 00:03:27,590 iom fuŝa. 75 00:03:27,590 --> 00:03:31,460 Kaj tial ni anstataŭ diris, ia abstrakte parolante, ke vi devus 76 00:03:31,460 --> 00:03:34,050 almenaŭ komencas faktoro vian CSS verŝajne. 77 00:03:34,050 --> 00:03:37,430 Ne estas via stilo atributoj, sed almenaŭ uzi la stilon etikedo ene kio 78 00:03:37,430 --> 00:03:38,840 parton de la retpaĝo? 79 00:03:38,840 --> 00:03:39,560 >> Spektantaro: Kapo. 80 00:03:39,560 --> 00:03:40,120 >> DAVID Malan: En la kapo. 81 00:03:40,120 --> 00:03:43,270 Ĝis nun, ni nur havis la titolon supren tie, sed vi ankaŭ povas aldoni stilo 82 00:03:43,270 --> 00:03:47,230 Tag, kaj vi povas meti vian CSS krude parolante al la supro de la paĝo. 83 00:03:47,230 --> 00:03:52,550 Sed tiam ni prenis tion unu paŝon plu kaj ni faktorita ke el pli 84 00:03:52,550 --> 00:03:54,130 en aparta dosiero. 85 00:03:54,130 --> 00:03:57,240 >> Kaj do tiuj du dosieroj estis iel jam ligita. 86 00:03:57,240 --> 00:03:59,550 Kaj efektive tio estis la etikedo kiu faris tion. 87 00:03:59,550 --> 00:04:02,920 Kaj kio estis unu el la komunajn motivadoj por faktoranta el niaj CSS 88 00:04:02,920 --> 00:04:04,057 ĉiuj pli? 89 00:04:04,057 --> 00:04:05,280 >> Spektantaro: reutilización. 90 00:04:05,280 --> 00:04:05,785 >> DAVID Malan: reutilización. 91 00:04:05,785 --> 00:04:06,150 Ĝuste? 92 00:04:06,150 --> 00:04:09,470 Vi eble vidis en p-starigis sep jam ke amaso de la paĝoj, la 93 00:04:09,470 --> 00:04:12,260 aĉetado paĝo, la vendado paĝo, la biletujo paĝo, verŝajne 94 00:04:12,260 --> 00:04:13,550 strukturitaj iom simile. 95 00:04:13,550 --> 00:04:17,579 Tie estas CS50 financoj logo ĉe la supron krom se vi jam decidis ŝanĝi ĝin. 96 00:04:17,579 --> 00:04:19,839 Tie estas piedlinio ĉe la malsupro de paĝoj. 97 00:04:19,839 --> 00:04:24,315 Kaj CSS permesas tiam al faktorigi ĝin ĝin en aparta dosiero por ke, se 98 00:04:24,315 --> 00:04:27,780 vi volas ŝanĝi ion tutmonde tra via tuta retejo, vi povas vere 99 00:04:27,780 --> 00:04:29,390 nur ŝanĝi ĝin en unu loko. 100 00:04:29,390 --> 00:04:32,750 >> Sed estas prezon vi pagos potenciale por esti faktorita el la 101 00:04:32,750 --> 00:04:38,380 CSS de mia HTML-dosieron en apartan dosiero referenco kun la 102 00:04:38,380 --> 00:04:40,650 tag, kiun ni vidis hieraŭ lundon. 103 00:04:40,650 --> 00:04:43,850 Kio povus la malavantaĝo esti de tiu? 104 00:04:43,850 --> 00:04:48,830 Pensante reen antaŭ semajno al kiam ni estas parolante pri HTTP kaj TCP / IP kaj kiom 105 00:04:48,830 --> 00:04:52,070 la interreto funkcias. 106 00:04:52,070 --> 00:04:53,530 Io super ĉi tie? 107 00:04:53,530 --> 00:04:54,730 >> Spektantaro: Necesas pli da tempo. 108 00:04:54,730 --> 00:04:55,470 >> DAVID Malan: Necesas pli da tempo. 109 00:04:55,470 --> 00:04:56,750 Kial? 110 00:04:56,750 --> 00:04:59,450 >> Spektantaro: [inaudibles]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID Malan: Jes. 112 00:04:59,750 --> 00:05:01,240 Do ĝi disputeble prenas iom pli da tempo. 113 00:05:01,240 --> 00:05:04,290 Ĉar unu, la CSS estas evidente ne en la sama dosiero. 114 00:05:04,290 --> 00:05:06,920 Do nun vi devos fari ne unu, sed du petoj. 115 00:05:06,920 --> 00:05:11,230 Kaj ĉiu el tiuj petoj, kiel ni vidis en Chrome en la tn Inspektoro, 116 00:05:11,230 --> 00:05:15,740 kaj ni rigardis la reto langeto, ĉiu de tiuj dosieroj postulas unu HTTP 117 00:05:15,740 --> 00:05:18,360 peto, kiun ni vidis prenas iu kvanto de tempo. 118 00:05:18,360 --> 00:05:19,290 Nun, eble ĝi ne estas multe. 119 00:05:19,290 --> 00:05:20,670 Eble estas nur 20 milisekundoj. 120 00:05:20,670 --> 00:05:22,260 Eble estas 200 milisekundoj. 121 00:05:22,260 --> 00:05:25,530 >> Sed pensu pri paĝon kiel Facebook, aŭ CNN, nek Google, kiu estas multe 122 00:05:25,530 --> 00:05:28,060 pli granda ol la ekzemploj ni rigardis tiom. 123 00:05:28,060 --> 00:05:32,070 Tiuj paĝoj havu dekoj da dosieroj, el kiuj ĉiu povus postuli 124 00:05:32,070 --> 00:05:33,550 malŝarĝo de dosiero. 125 00:05:33,550 --> 00:05:35,800 Do tio povas potenciale komenci malrapidigi. 126 00:05:35,800 --> 00:05:39,280 >> Kaj speciale tiuj tagoj kiam ni ĉiuj havi poŝtelefonoj en niaj poŝoj kaj 127 00:05:39,280 --> 00:05:43,010 malrapida interreto rilatoj, devi atendi kelkajn pliajn milisekundoj, kelkaj 128 00:05:43,010 --> 00:05:46,110 pli milisekundoj por pliaj dosieroj povas reale esti malrapida. 129 00:05:46,110 --> 00:05:50,430 Latenta estas la vorto, kiu priskribas la speco de atendu, ke vi havas, ke vi 130 00:05:50,430 --> 00:05:53,110 sperti kiam atendante iu peco de informo. 131 00:05:53,110 --> 00:05:54,430 >> Sed tie estas inversita. 132 00:05:54,430 --> 00:05:56,600 Do ĝi ne estas por ĉia a - 133 00:05:56,600 --> 00:05:58,170 gxi vere estas iom de Seesaw tie. 134 00:05:58,170 --> 00:06:02,970 Malavantaĝo nun, sed kion retumiloj povas fari se ili estas inteligentaj por eviti 135 00:06:02,970 --> 00:06:08,870 devi peti la saman styles.css dosiero denove povas esti por fari kion? 136 00:06:08,870 --> 00:06:09,390 >> Cache ĝi. 137 00:06:09,390 --> 00:06:10,370 Do caching - 138 00:06:10,370 --> 00:06:11,690 C-A-C-H-E - 139 00:06:11,690 --> 00:06:15,810 ĝenerale signifas cxi tie nur por savi la dosiero kiun vi petis la unuan fojon, kaj 140 00:06:15,810 --> 00:06:17,440 tiam kontrolu viajn kaŝmemoron por ĝi. 141 00:06:17,440 --> 00:06:20,400 Kontrolu vi estas speco de stokado ujo, kaj se vi jam havas 142 00:06:20,400 --> 00:06:24,520 Kopio de styles.css, eĉ se iuj aliaj paĝo en la p-aro, aŭ iu ajn paĝo, 143 00:06:24,520 --> 00:06:28,560 petas ŝin denove, simple donu la uzanto tiu sama kaŝmemoro kopion. 144 00:06:28,560 --> 00:06:30,140 Ne ĝenu petante ĝin. 145 00:06:30,140 --> 00:06:32,560 >> Malavantaĝo tie, kvankam, kiel kelkaj el vi ili stumblis en la p-aro. 146 00:06:32,560 --> 00:06:35,870 Se vi faras ŝanĝo sur la servilo kaj vi iri reen al la retumilo kaj vi 147 00:06:35,870 --> 00:06:39,250 freŝigi, kelkfoje la retumilo faras vi favoron kaj ne ĝeni 148 00:06:39,250 --> 00:06:43,660 re-elŝutante via styles.css dosieron ĉar, iras, kio estas prognozo 149 00:06:43,660 --> 00:06:47,620 ke tiujn stilojn ke Facebook uzas tuj ŝanĝos horo al horo aŭ 150 00:06:47,620 --> 00:06:48,140 tagon post tago? 151 00:06:48,140 --> 00:06:48,800 Ĝi estas sufiĉe malaltaj. 152 00:06:48,800 --> 00:06:52,260 Ili povus ŝanĝi la tempo, sed ne per la minuto aŭ per la horon. 153 00:06:52,260 --> 00:06:55,810 >> Do lertaĵo, simple FYI farinte retejo evoluo, oni ofte premadu 154 00:06:55,810 --> 00:06:59,500 majuskliga klavo por petskribo kaj poste klaku freŝigi en via retumilo, kaj tiu volo 155 00:06:59,500 --> 00:07:03,280 tipe diri al la retumilo Reŝarĝi ĉiu, eĉ se vi jam havas 156 00:07:03,280 --> 00:07:04,180 ĝin en la kaŝmemoro. 157 00:07:04,180 --> 00:07:06,630 Do denove, upsides kaj downsides, sed ĉiuj el ili 158 00:07:06,630 --> 00:07:08,260 finfine desegni decidoj. 159 00:07:08,260 --> 00:07:11,520 >> Do nun, ni ne nur ĉesigi la rakonton tie. 160 00:07:11,520 --> 00:07:15,790 Se mi nun iri reen kaj reen kaj reen kaj reen, ni komencis prezenti ne nur 161 00:07:15,790 --> 00:07:18,060 HTML, sed PHP. 162 00:07:18,060 --> 00:07:20,786 Do en laiko terminoj, kion tio PHP ni faru? 163 00:07:20,786 --> 00:07:22,770 >> Spektantaro: [inaudibles]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID Malan: Kio estas tio? 165 00:07:24,258 --> 00:07:25,250 >> Spektantaro: Enkonduki logikon en la kodo. 166 00:07:25,250 --> 00:07:26,620 >> DAVID Malan: Jes, enkonduki logikon en via kodo. 167 00:07:26,620 --> 00:07:29,570 Do ĝi estas vera programlingvo kun masxojn, variabloj, kaj 168 00:07:29,570 --> 00:07:32,620 funkcioj, kaj kondiĉoj, kaj ĉiuj tion ni jam estis uzanta vojon reen 169 00:07:32,620 --> 00:07:33,780 kiam ekde nulo. 170 00:07:33,780 --> 00:07:36,780 Kaj PHP, ni jam vidis, povas esti uzata ĉu ĉe la komandlinio - ĝi 171 00:07:36,780 --> 00:07:39,190 ne devas havi ion fari kun la retejo, eĉ se tio estas 172 00:07:39,190 --> 00:07:43,150 vere liaj originoj kaj kio emas esti bona kaj afabla al - 173 00:07:43,150 --> 00:07:47,130 sed vi povas uzi PHP-nure per naturo de la fakto ke ĝi havas print () 174 00:07:47,130 --> 00:07:49,660 funkcio, kaj printf () funkcion, aŭ eĥo () funkcion. 175 00:07:49,660 --> 00:07:52,440 Tie estas aroj da manieroj vi povas printi tekston kun PHP. 176 00:07:52,440 --> 00:07:56,540 >> Sekve, vi povas uzi tiun programadon lingvon por eligo ekzakte 177 00:07:56,540 --> 00:07:58,460 pri kio ni parolas pri antaŭe. 178 00:07:58,460 --> 00:08:01,360 Vi povas dinamike generi via HTML. 179 00:08:01,360 --> 00:08:02,300 Eble ne ĉiuj de ĝi. 180 00:08:02,300 --> 00:08:06,460 Eble vi malfacile kodo aferoj, kiel la kaplinio, kaj la piedlinio, kaj la logo, 181 00:08:06,460 --> 00:08:07,950 kaj via stilo littukoj, kaj ĉiujn kiuj. 182 00:08:07,950 --> 00:08:11,190 Sed por iu kiel p-starigis sep, kie vi manipulanta stokoj kaj 183 00:08:11,190 --> 00:08:14,690 montrante la uzanto biletujo, kiu estas tuj dinamike ŝanĝas, vi povus 184 00:08:14,690 --> 00:08:18,960 certe uzos PHP kaj la logiko donas vin kiel programlingvo al 185 00:08:18,960 --> 00:08:22,320 eligo dinamike subaroj de la paĝo. 186 00:08:22,320 --> 00:08:25,900 >> Do kiam oni parolas pri dinamika retejoj, aŭ TTT-programado, kiu estas 187 00:08:25,900 --> 00:08:27,200 kion vi vere parolas. 188 00:08:27,200 --> 00:08:31,450 Uzi lingvon kiel PHP, aŭ aĵoj vokis Pitono aux Rubeno, aŭ Java, aŭ 189 00:08:31,450 --> 00:08:35,900 tamen aliaj lingvoj, por demandi al datumbazo ofte, aŭ de alia servilo, kaj 190 00:08:35,900 --> 00:08:38,580 tiam dinamike kracxi el HTML. 191 00:08:38,580 --> 00:08:42,470 >> Nun la fina rezulto, kiel apartigas, estas ke la HTML de plej retejoj, 192 00:08:42,470 --> 00:08:45,970 inkluzive de via p-starigis sep, probable estas tuj estos grandega salato se 193 00:08:45,970 --> 00:08:48,060 oni rigardas la fonto kodo en retumilo. 194 00:08:48,060 --> 00:08:49,010 Tio ne estas granda interkonsento. 195 00:08:49,010 --> 00:08:51,550 Je tiu punkto, kiam ni zorgas pri stilo, oni zorgas pri la 196 00:08:51,550 --> 00:08:52,740 stuff, ke vi skribas. 197 00:08:52,740 --> 00:08:56,240 Ni ne zorgas pri la havajxoj ke tio, kion via kodo eligoj. 198 00:08:56,240 --> 00:08:59,520 Do ne zorgu pri deŝovon ĉi tie, se ĝi estas PHP tio 199 00:08:59,520 --> 00:09:01,190 reale outputting vazaro. 200 00:09:01,190 --> 00:09:04,430 Post ĉio, la retumilo ne zorgas, kaj homo ne rigardis 201 00:09:04,430 --> 00:09:05,400 ĉe la fonto de ĉiuj manieroj. 202 00:09:05,400 --> 00:09:09,000 Ni la bastonon, ekzemple, volus gxemados via PHP. 203 00:09:09,000 --> 00:09:13,440 >> Do lasu min doni rapidan ekzemplo nun kial alie tiu povus esti utila. 204 00:09:13,440 --> 00:09:18,620 Do sincere, mi ne povas memori la lasta tempo mi uzis C por solvi problemon en 205 00:09:18,620 --> 00:09:19,620 la reala mondo. 206 00:09:19,620 --> 00:09:22,330 Ĝi estis probable en postdiploma lernejo kiam Mi bezonis uzi lingvon, kiu 207 00:09:22,330 --> 00:09:26,710 estis sufiĉe malalta nivelo kaj ne donis al mi la ŝanco fari ion tre altan 208 00:09:26,710 --> 00:09:30,720 agi por vere savi kiel multaj CPU cikloj kiel mi povis, en granda parto 209 00:09:30,720 --> 00:09:33,990 ĉar mi uzis grandegan datenaroj, kaj cxiun CPU ciklo rakontita. 210 00:09:33,990 --> 00:09:37,750 Kaj sincere, eĉ en aferoj kiel telefonoj tiujn tagojn kaj aliaj aparatoj 211 00:09:37,750 --> 00:09:39,910 kie vi ne sufiĉe havas tiel memoro kaj vi ne sufiĉe havas kiel 212 00:09:39,910 --> 00:09:44,160 multe CPU, uzante pli rapida lingvoj Estas ankoraŭ vokante. 213 00:09:44,160 --> 00:09:47,290 >> Sed en la reala mondo, kiam vi nur volas ĵeti iun programon kune 214 00:09:47,290 --> 00:09:50,340 analizi iuj datumoj, aŭ vi jam kolektis tutan faskon da enskriboj por 215 00:09:50,340 --> 00:09:53,330 iu studento grupo kaj vi volas tre rapide aŭtomatigi sendas retpoŝtojn 216 00:09:53,330 --> 00:09:56,240 unu post unu por cxiu el tiuj, aliĝintoj, vi tuj atingos por 217 00:09:56,240 --> 00:09:59,240 pli altan nivelon lingvo ol C por tiel diri. 218 00:09:59,240 --> 00:10:04,060 Io kiel PHP aux Python aŭ Rubeno, aŭ duona dekduo aliaj ke ekzistas 219 00:10:04,060 --> 00:10:04,550 ĉi tiuj tagoj. 220 00:10:04,550 --> 00:10:07,200 Sed tiuj tri estas verŝajne la plej ŝikajn ĝuste nun. 221 00:10:07,200 --> 00:10:10,840 >> Kaj kion tio signifas ke vi povas malfermi supren tekstoredaktilo kiel gedit aŭ 222 00:10:10,840 --> 00:10:14,030 plej ion alian kaj poste komencu skribi kodon sen devi zorgi 223 00:10:14,030 --> 00:10:17,800 pri kompili, sen devi vere zorgu pri memoro demarŝon, 224 00:10:17,800 --> 00:10:20,820 teni en la menso kvankam tiu iom sloppiness eventuale revenu 225 00:10:20,820 --> 00:10:24,790 mordi vin, se la datuma aro gets pli granda aŭ la problemo gets granda. 226 00:10:24,790 --> 00:10:27,230 Sed kion tio signifas por ni estas la jena. 227 00:10:27,230 --> 00:10:29,860 >> Permesu al mi iri antaŭen kaj kuri Speller de problemo starigis ses. 228 00:10:29,860 --> 00:10:33,480 Do ĉi tiu estas mia trie-bazitaj efektivigo kiun mi uzis en la granda 229 00:10:33,480 --> 00:10:35,500 tabulo kie mi agis ne tiel. 230 00:10:35,500 --> 00:10:38,720 Ni revenos en semajno da tempo kaj reviziti tiuj, kiuj finas sur la pinto de la 231 00:10:38,720 --> 00:10:40,430 granda tabulo ĉe nia lasta prelego. 232 00:10:40,430 --> 00:10:44,520 Sed nuntempe, lasu min antaŭeniri kaj justa kuros mia solvo en teksto, kaj ni faros 233 00:10:44,520 --> 00:10:48,460 la Reĝo James Biblion, kaj tie ni iru. 234 00:10:48,460 --> 00:10:51,080 >> Do tiuj estas ĉiuj de la supozeble misspelled vortoj el 235 00:10:51,080 --> 00:10:52,240 la Reĝo James Biblio. 236 00:10:52,240 --> 00:10:55,560 Kaj mia efektivigo prenis duona dua en entute. 237 00:10:55,560 --> 00:10:58,270 Do ne tro malbone pri tiu aparta komputilo. 238 00:10:58,270 --> 00:11:01,540 Sed pensi pri kiom da kodo mi devis skribi. 239 00:11:01,540 --> 00:11:02,880 Pensu kiom kodo vi devis skribi. 240 00:11:02,880 --> 00:11:06,170 Pensu kiom da horoj vi elspezis en la D-salono aŭ via dormejo aux kie ajn 241 00:11:06,170 --> 00:11:07,890 reale kodigo supren ke solvo. 242 00:11:07,890 --> 00:11:11,850 >> Nu, se mi efektive havas pli altan nivelon lingvo kiel PHP, atentu 243 00:11:11,850 --> 00:11:13,350 kion mi povas fari tie. 244 00:11:13,350 --> 00:11:16,410 Unua, supozu, ke tio estas anstataŭ via distribuo kodo. 245 00:11:16,410 --> 00:11:17,790 Tiu dosiero nomata Speller. 246 00:11:17,790 --> 00:11:20,220 Ĝi estas disponebla kiel parto de la hodiaŭa dissendo kodo. 247 00:11:20,220 --> 00:11:22,670 Kaj mi tuj skuos mian manon maksimume de la detalojn, sed ĉi tiu estas efektive 248 00:11:22,670 --> 00:11:25,500 interesa ekzemplo de kiel Vi povus haveno lingvo 249 00:11:25,500 --> 00:11:28,870 kiel C super al PHP. 250 00:11:28,870 --> 00:11:33,420 Mi laŭlitere malfermis du teksto fenestroj, unu kun mia C versio de speller.c, 251 00:11:33,420 --> 00:11:36,960 kaj mi ĵus komencis traduki ĝin en mian estros por PHP kaj tajpi ĝin uzante 252 00:11:36,960 --> 00:11:38,840 la plej proksima ekvivalento funkcioj. 253 00:11:38,840 --> 00:11:40,100 >> Iuj do el tiuj aĵoj estas malsamaj. 254 00:11:40,100 --> 00:11:43,730 Ni vidis lasta fojo ke PHP ne uzas inkluzivi en tute la sama vojo. 255 00:11:43,730 --> 00:11:47,050 Ĝi uzas postulas tipe, kvankam inkluzivi ekzitas. 256 00:11:47,050 --> 00:11:50,330 Difini estas iom malsama # Difini en C, sed tio estas 257 00:11:50,330 --> 00:11:51,890 kiom ni faru konstantaj. 258 00:11:51,890 --> 00:11:55,860 $ Argc rezultas ekzistas en PHP, do ni jam vidis, ke antaŭe. 259 00:11:55,860 --> 00:11:58,650 Ĉi tiuj estas nur variabloj, ĉiuj kiu komencas per dolaro signoj. 260 00:11:58,650 --> 00:12:00,590 Memori tiuj estas nur faskon de flosanta punktoj. 261 00:12:00,590 --> 00:12:03,970 >> Do longan rakonton, vi estas bonvena klaki per ĉi se scivolema, tio estas 262 00:12:03,970 --> 00:12:10,010 preskaŭ linio-por-linio konvertiĝo de la C versio de speller.c sur PHP. 263 00:12:10,010 --> 00:12:12,630 Kaj vi povus fari tion denove por seson da aliaj lingvoj. 264 00:12:12,630 --> 00:12:14,910 >> Sed kio estas interesa estas jena. 265 00:12:14,910 --> 00:12:16,910 Aŭ kio estas sincere senkuraĝigaj Estas ĉi. 266 00:12:16,910 --> 00:12:20,790 Permesu al mi iri antaŭen kaj tajpu pri dictionary.php kaj pretendo, ke mi estas 267 00:12:20,790 --> 00:12:23,670 tuj iru antaŭen kaj re-apliki problemo starigis ses tie. 268 00:12:23,670 --> 00:12:27,530 >> Do ni proponas unue ke en tiu dosiero, kiu estos efektivigita en 269 00:12:27,530 --> 00:12:30,550 PHP, do lasu min malfermi mian etikedoj ŝatas tion. 270 00:12:30,550 --> 00:12:34,780 Lasu min donu al mi tutmondan variablo, $ grandeco gets nulo. 271 00:12:34,780 --> 00:12:36,710 Kaj mi tuj donos min hash tablo. 272 00:12:36,710 --> 00:12:38,110 Mi uzas hash tablon por tiu afero. 273 00:12:38,110 --> 00:12:42,070 Kjel mi deklari hash tablo en PHP? 274 00:12:42,070 --> 00:12:42,990 Farita. 275 00:12:42,990 --> 00:12:43,980 OK. 276 00:12:43,980 --> 00:12:48,870 >> Do malferma krampo proksime krampo reprezentas kion en PHP, kiel ni jam vidis? 277 00:12:48,870 --> 00:12:51,850 Tabelo, sed tabelo kiu povis esti asocieca tabelo. 278 00:12:51,850 --> 00:12:54,320 Asocieca tabelo estas datumstrukturo ke 279 00:12:54,320 --> 00:12:55,860 asocias klavojn per valoroj. 280 00:12:55,860 --> 00:12:59,430 >> Nun en la plej simpla numere indeksita tabelo, tiuj klavoj estas kio? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Nulo, unu, du, tri, ĉu ne? 283 00:13:03,960 --> 00:13:08,780 Malnova lernejo plenigos reen de C. Sed ĝi povas ankaŭ esti kordoj kiel foo kaj trinkejo, 284 00:13:08,780 --> 00:13:12,210 aŭ Maxwell, aŭ iu ajn tia kordo. 285 00:13:12,210 --> 00:13:14,240 Do mi povos utiligi ke en nur momento. 286 00:13:14,240 --> 00:13:17,550 >> Permesu al mi iri antaŭen kaj deklari funkcio kiel - 287 00:13:17,550 --> 00:13:19,020 ni faru ŝarĝo () unua. 288 00:13:19,020 --> 00:13:20,690 Do funkcio ŝarĝo (). 289 00:13:20,690 --> 00:13:23,440 Kaj PHP estas iom malsama en tiu vi laŭvorte tajpi funkcion, sed vi 290 00:13:23,440 --> 00:13:24,930 ne tajpas revenon tipo. 291 00:13:24,930 --> 00:13:28,760 Mi tuj iros antaŭen kaj diru, ke la ŝarĝo () funkcio devus preni en 292 00:13:28,760 --> 00:13:31,000 argumento $ vortaro, simple kiel C versio faris. 293 00:13:31,000 --> 00:13:32,510 Mi faras, ke de la memoro. 294 00:13:32,510 --> 00:13:34,910 >> Kaj mi proponas ke mi estas tuj faros. 295 00:13:34,910 --> 00:13:37,080 Mi simple volas fari foreach. 296 00:13:37,080 --> 00:13:40,710 Mi iras por voki funkcio nomita dosiero (), pasante en la nomo de tiu 297 00:13:40,710 --> 00:13:44,990 fajliloj, kiu estas la variablo $ Dictionary kiel $ vorto. 298 00:13:44,990 --> 00:13:49,410 Kaj poste interne de mia por buklo tie, mi estas tuj iru antaŭen kaj gardi en mia 299 00:13:49,410 --> 00:13:57,440 $ Tabelo ke $ vorto gets vera. 300 00:13:57,440 --> 00:13:57,918 Farita. 301 00:13:57,918 --> 00:14:01,264 Ho, atendu. 302 00:14:01,264 --> 00:14:02,422 Farita. 303 00:14:02,422 --> 00:14:02,760 OK. 304 00:14:02,760 --> 00:14:04,970 >> Tio estas la ŝarĝo () funkcio diru en PHP. 305 00:14:04,970 --> 00:14:05,865 Nu, kial tio funkcias? 306 00:14:05,865 --> 00:14:07,010 Kaj mi specon de cheating tie. 307 00:14:07,010 --> 00:14:09,980 >> Do, oni, foreach ni vidis mallonge lasta tempo. 308 00:14:09,980 --> 00:14:13,680 Tio simple signifas ke vi povas persisti super tabelo sen tedi per i 309 00:14:13,680 --> 00:14:16,150 kaj n kaj plus plus, kaj ĉio pri tio. 310 00:14:16,150 --> 00:14:21,350 Vortaro estas kompreneble la dosiernomo, iu kiel grandaj aŭ malgrandaj, la du 311 00:14:21,350 --> 00:14:22,830 vortaroj oni uzas lasta tempo. 312 00:14:22,830 --> 00:14:26,715 Dosiero estas funkcio kiu malfermas teksto dosiero, legas ĝin en linio per la sxnuro, kaj 313 00:14:26,715 --> 00:14:29,840 manoj You Back grandega arsenalo, ĉiu el kies elementoj estas 314 00:14:29,840 --> 00:14:31,340 linio de tiu dosiero. 315 00:14:31,340 --> 00:14:36,040 Do tio estas la kombino de fopen, kaj fread, kaj dum buklo, kaj fclose, 316 00:14:36,040 --> 00:14:37,080 kaj ĉiujn kiuj. 317 00:14:37,080 --> 00:14:40,150 Fine, kiel vorto simple signifas, ke estas la variablo Mi tuj havas aliron al 318 00:14:40,150 --> 00:14:41,890 sur ĉiu ripeto en ĉi maŝo. 319 00:14:41,890 --> 00:14:46,910 >> Do mallonge, oni Liner tie signifas malfermu la dosieron kies nomo estas en 320 00:14:46,910 --> 00:14:50,750 vortaro, la variablo, persisti super tio linio por linio, kaj ĉiun fojon vi ricevas 321 00:14:50,750 --> 00:14:54,290 linio, vendejo en variablo nomata vorto, kaj tiam faru ion per vorto. 322 00:14:54,290 --> 00:14:55,280 Kion mi volas fari? 323 00:14:55,280 --> 00:14:58,110 Mi deziras meti vorton en mian hash tablo. 324 00:14:58,110 --> 00:15:00,860 >> Nu, mi povas meti ion en mia hash tablo ĝuste kiel en C 325 00:15:00,860 --> 00:15:02,140 per rektaj krampoj. 326 00:15:02,140 --> 00:15:03,660 Tiu estas la nomo por mia hash tablo. 327 00:15:03,660 --> 00:15:07,180 Mi iras al indekso en tiun hash tablo ĉe tiu loko. 328 00:15:07,180 --> 00:15:08,920 Do ne heligas nulon, ne heligas tiu. 329 00:15:08,920 --> 00:15:11,990 Krampo citaĵo unquote ion, kio ajn tiu vorto estas. 330 00:15:11,990 --> 00:15:15,200 Kaj kiel vi povus havi en via hash tablo laboro trie, vi simple vendejo 331 00:15:15,200 --> 00:15:17,650 efektive Bulea, implice aŭ eksplicite. 332 00:15:17,650 --> 00:15:18,260 Farita. 333 00:15:18,260 --> 00:15:20,000 Mi stoki la valoro true. 334 00:15:20,000 --> 00:15:23,150 >> Nun tie estas kelkaj aliaj aferoj Mi trancxis anguloj je ĉi tie. 335 00:15:23,150 --> 00:15:27,720 Teknike, oni tuj estos ĝena nova linio, / n, fine de 336 00:15:27,720 --> 00:15:28,820 ĉiu el tiuj vortoj. 337 00:15:28,820 --> 00:15:31,770 Do mi devos probable nomus PHP funkcio vokis chop (), kiu volas 338 00:15:31,770 --> 00:15:33,460 tute laŭvorte chop ke ekstere. 339 00:15:33,460 --> 00:15:35,020 Kaj mi vere bezonas fari unu alian aferon. 340 00:15:35,020 --> 00:15:38,380 Mi devus probable pliigo grandeco sur ĉiu ripeta, do mi konservanta trako 341 00:15:38,380 --> 00:15:39,560 sume el kio ĝi estas. 342 00:15:39,560 --> 00:15:43,180 Kaj sincere, kaj tiu estas unu el la stultis aspektoj de PHP, se vi estas 343 00:15:43,180 --> 00:15:46,950 uzante malloka variablo, vi bezonos eksplicite diras, ke vi estas. 344 00:15:46,950 --> 00:15:51,670 Do mi iros al reale tajpi en tutmondaj $ Grandeco, tutmonda $ tabelo, kaj nun 345 00:15:51,670 --> 00:15:52,690 mia funkcio estas plenumi. 346 00:15:52,690 --> 00:15:57,475 >> Do ne tute tiel simpla, kiel antaŭe, sed verŝajne prenis malpli da tempo ol la C 347 00:15:57,475 --> 00:15:58,220 versio, eble? 348 00:15:58,220 --> 00:15:58,730 OK. 349 00:15:58,730 --> 00:16:00,390 >> Do nun ni faru la ĉeko () funkcion. 350 00:16:00,390 --> 00:16:04,300 Ni vidu se tio almenaŭ prenis la horojn je fino ke ĝi kondukis nin en C. Do 351 00:16:04,300 --> 00:16:06,500 lasu min iri antaŭen kaj deklari kontroli kiel funkcio. 352 00:16:06,500 --> 00:16:09,070 Takes disputante vorto, kiu estas tuj venis el Speller. 353 00:16:09,070 --> 00:16:13,410 Kaj mi simple tuj kontroli, ĉu la jenaj variablo isset, tabulo 354 00:16:13,410 --> 00:16:18,400 krampo strtolower de vorto - 355 00:16:18,400 --> 00:16:20,590 ni ekvilibrigi la tuta de mia parentezoj - 356 00:16:20,590 --> 00:16:24,275 tiam revenu vera. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 Alie - 359 00:16:28,460 --> 00:16:30,330 ke vere estis la plej malfacila parto de tiu programo. 360 00:16:30,330 --> 00:16:31,940 Alie, revenu falsaj. 361 00:16:31,940 --> 00:16:32,630 Farita. 362 00:16:32,630 --> 00:16:33,460 Tio ĉeko (). 363 00:16:33,460 --> 00:16:34,520 >> Nu, kial ĉi tiu laboro? 364 00:16:34,520 --> 00:16:37,040 Nu, unu mi pasis en vorto, kio estas kordo. 365 00:16:37,040 --> 00:16:41,400 Du, mi kontrolanta ene de la hash tablo, kiu nomiĝas $ tabelo. 366 00:16:41,400 --> 00:16:45,470 Mi devigante ĝin minuskle nomante funkcio sufiĉe simila tolower () en 367 00:16:45,470 --> 00:16:48,580 C, sed tio faras la tutan vorton, Ne sola karaktero. 368 00:16:48,580 --> 00:16:52,680 Kaj se tiu estas metita, alivorte tie estas valoro starigis, en aliaj vortoj, 369 00:16:52,680 --> 00:16:54,880 se ĝi estas vera, tiam jes, jen estas la vorto. 370 00:16:54,880 --> 00:16:56,530 Ĉar mi metis ĝin tie kun ŝarĝo (). 371 00:16:56,530 --> 00:16:59,100 Kaj se ne, mi tuj revenos falsaj. 372 00:16:59,100 --> 00:17:00,090 >> Nun la aliaj estas facila. 373 00:17:00,090 --> 00:17:03,570 Funkcio grandeco (), kiel mi faru tion? 374 00:17:03,570 --> 00:17:05,230 Mi esence fari reveni $ grandeco. 375 00:17:05,230 --> 00:17:07,770 Sed mi teknike bezonas fari ĉi ĝena afero. 376 00:17:07,770 --> 00:17:10,640 Kaj efektive supren auxdas, mi trancxis unu angulo tro multaj. 377 00:17:10,640 --> 00:17:12,920 Mi vere bezonas fari tutmondan $ tabelo. 378 00:17:12,920 --> 00:17:16,260 >> Sed tio dirata, malŝarĝi). 379 00:17:16,260 --> 00:17:17,380 Malŝarĝi () estas miriga. 380 00:17:17,380 --> 00:17:20,500 Funkcio malŝarĝas (). 381 00:17:20,500 --> 00:17:23,990 Kjel mi volas apliki malŝarĝas ()? 382 00:17:23,990 --> 00:17:25,079 Farita. 383 00:17:25,079 --> 00:17:25,450 OK. 384 00:17:25,450 --> 00:17:28,900 >> Do malŝarĝi (), memoro demarŝo estas tute zorgo por vi en 385 00:17:28,900 --> 00:17:31,800 iu kiel PHP kaj multe de alta-nivelo lingvoj. 386 00:17:31,800 --> 00:17:32,600 Do ĉi tiu estas mirinda. 387 00:17:32,600 --> 00:17:36,080 Kiel, kial diable ni pasigis la pasinteco ok plus semajnoj sur C skribo 388 00:17:36,080 --> 00:17:41,030 ŝajne vere malrapida, vere tempo konsumanta problemojn kun dekoj da horoj 389 00:17:41,030 --> 00:17:42,530 de labori sub nia rimenojn? 390 00:17:42,530 --> 00:17:46,110 >> Nu, por unu afero, tio povas funkcii fajna por malgrandaj programoj. 391 00:17:46,110 --> 00:17:47,840 Certe gxi rapidis supren mia evoluo tempo. 392 00:17:47,840 --> 00:17:49,790 Sed ni vidu kio okazas en la reala mondo. 393 00:17:49,790 --> 00:17:52,370 >> Permesu al mi iri en tiun dosierujon en terminalo fenestro. 394 00:17:52,370 --> 00:17:53,370 Ekzistas Speller. 395 00:17:53,370 --> 00:17:56,570 Kaj rimarki kiel flanken, kaj eble vi renkontis ĉi en problemo starigis 396 00:17:56,570 --> 00:17:58,190 ses aŭ problemo starigis sep. 397 00:17:58,190 --> 00:18:01,610 Vi ne strikte devus fini PHP dosierojn kun. php. 398 00:18:01,610 --> 00:18:05,250 Se vi metos linion kiel tiu unua en la plejsupro, tio estas speciala linio 399 00:18:05,250 --> 00:18:10,980 de sintakso ke esence signifas trovi la programon nomitan PHP kaj uzi ĝin al 400 00:18:10,980 --> 00:18:12,270 interpreti ĉi tiun dosieron. 401 00:18:12,270 --> 00:18:15,410 Do nun neniu vere scias, ke Mi kuras PHP-programo. 402 00:18:15,410 --> 00:18:19,860 Mi povas ruli ĝin ĝuste kvazaŭ estis io kompilita en C. 403 00:18:19,860 --> 00:18:20,650 >> Sed jen la afero. 404 00:18:20,650 --> 00:18:21,600 Efektive, ni faru tion denove. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 Ekzistas Speller. 407 00:18:25,390 --> 00:18:26,720 OK, 0,44 sekundoj. 408 00:18:26,720 --> 00:18:28,080 Ĝi alvenis rapida tiu tempo. 409 00:18:28,080 --> 00:18:29,745 >> Nun ni iru en la PHP-version. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Nice tuŝo. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 Sed pensu kiom da tempo Mi savis ĉe oficejo horoj. 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 OK. 416 00:18:57,790 --> 00:19:01,020 >> Do 3,59 sekundoj, kio reale ne sonas precizajn ĉu. 417 00:19:01,020 --> 00:19:03,710 Sed tio estas ĉar longan rakonton mallonga, kiam vi presado el grandega kvanto 418 00:19:03,710 --> 00:19:06,840 da ŝtofo por la ekrano, por ke mem bremsas tion malsupren. 419 00:19:06,840 --> 00:19:11,260 Kio vere prenis la CPU en la aparato estis 3,59 sekundoj, en 420 00:19:11,260 --> 00:19:15,260 Kontraste al C, kiu prenis 0.44 duaj plej laste. 421 00:19:15,260 --> 00:19:17,620 Tio estas vere ordo de grando malsamaj. 422 00:19:17,620 --> 00:19:20,280 >> Do kie estas tiu prezo devenante? 423 00:19:20,280 --> 00:19:21,790 Kial estas tiel malrapida? 424 00:19:21,790 --> 00:19:24,220 Kial PHP plenumi tiel malbone? 425 00:19:24,220 --> 00:19:25,242 Danielle? 426 00:19:25,242 --> 00:19:26,550 >> Spektantaro: Vi ne vere uzi hash tablo. 427 00:19:26,550 --> 00:19:27,710 >> DAVID Malan: mi ne vere uzi hash tablo. 428 00:19:27,710 --> 00:19:28,760 Do mi specon de faris. 429 00:19:28,760 --> 00:19:29,870 Do estas asocieca tabelo. 430 00:19:29,870 --> 00:19:33,650 Plej verŝajne, se la homoj en PHP estas vere inteligentaj, oni uzis sub la 431 00:19:33,650 --> 00:19:39,520 kapuĉo reala hash tablo implementado en iu kiel C aŭ C + +. 432 00:19:39,520 --> 00:19:41,290 Sed. 433 00:19:41,290 --> 00:19:42,760 Jes. 434 00:19:42,760 --> 00:19:44,010 >> Spektantaro: [inaudibles]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> DAVID Malan: Jes. 437 00:19:47,080 --> 00:19:50,780 Do ĉiu el la funkcioj mi skribis nun - vere, vi povas diri, ke iam pli 438 00:19:50,780 --> 00:19:51,480 iom pli laŭta? 439 00:19:51,480 --> 00:19:54,509 >> Spektantaro: Ĉiu el la funkcioj kiuj vi inkludis havas multe pli plena 440 00:19:54,509 --> 00:19:56,610 kapablo ol - 441 00:19:56,610 --> 00:19:57,550 >> DAVID Malan: Do tio estas tre vera. 442 00:19:57,550 --> 00:20:01,490 Estas multe pli superkape kiun ni estas ne vere vidi la enfokusigi nur en 443 00:20:01,490 --> 00:20:03,730 dictionary.php, kiun mi ĵus skribis. 444 00:20:03,730 --> 00:20:08,020 Por kontrasto, estas aro interpretisto tuj en la fono. 445 00:20:08,020 --> 00:20:12,040 Efektive, kiam mi kuris tiu programo, ĝi Ne estis kuranta kompilita nuloj kaj 446 00:20:12,040 --> 00:20:14,290 desegnita por mia Intel CPU. 447 00:20:14,290 --> 00:20:19,270 Pli ĝuste, ĝi kuris linio por linio PHP kodo kiu aspektas ekzakte 448 00:20:19,270 --> 00:20:20,350 kiel ni tajpas ĝin. 449 00:20:20,350 --> 00:20:22,475 Kaj tial kiam ajn vi uzas interpretita lingvo, vi 450 00:20:22,475 --> 00:20:23,850 fakte faras pagi tiun prezon. 451 00:20:23,850 --> 00:20:27,010 Ĝi tuj prenu iom da tempo por legi vian dosieron supro al malsupro, lasis al 452 00:20:27,010 --> 00:20:30,740 Bone, kaj poste ekzekuti ĉiun vicigas denove kaj denove. 453 00:20:30,740 --> 00:20:34,250 >> Nun en realo, speciale en la retejo, vi povas efektive akceli tiun procezon 454 00:20:34,250 --> 00:20:38,660 per caching la rezultoj de la PHP kodo esti interpretitaj. 455 00:20:38,660 --> 00:20:41,640 Kaj tio havas sencon en la retejo, ĉar se vi ne havas unu uzanto kiel 456 00:20:41,640 --> 00:20:46,300 mi tie, sed 1000 aŭ 10.000 uzantoj, tiam eble la unua fojo la dosiero 457 00:20:46,300 --> 00:20:49,050 Montrita ĝi estas malrapida, sed poste ĝi estas multe pli rapida. 458 00:20:49,050 --> 00:20:51,000 >> Sed tio ankaŭ, denove, estas komerca malproksime. 459 00:20:51,000 --> 00:20:53,870 Kaj por iu kiel esplorado datumoj aro, aŭ eĉ ion grandan kiel 460 00:20:53,870 --> 00:20:58,330 tiu, viaj uzantoj volo eventuale komenci senti ke malrapidiĝo. 461 00:20:58,330 --> 00:21:02,670 >> Do mallonge, interpretitaj lingvoj estas tre en boga, tre populara, kaj 462 00:21:02,670 --> 00:21:06,710 sincere estas probable la lingvojn vi devus atingi por kiam solvi problemojn 463 00:21:06,710 --> 00:21:08,200 postan CS50. 464 00:21:08,200 --> 00:21:12,720 Sed realigi kiom vi estas vere prenante por donita sub la kapuĉo 465 00:21:12,720 --> 00:21:15,910 vere tiuj pasintaj pluraj semajnoj en hash tabloj, kaj arbojn, kaj klopodoj, 466 00:21:15,910 --> 00:21:20,770 kiujn oni uzas por fakte finfine apliki aĵojn kiel malferma krampo, 467 00:21:20,770 --> 00:21:24,200 kvadrata krampo, kiun ni povas nun dankeme akceptas. 468 00:21:24,200 --> 00:21:26,360 >> Do ni rigardu nun en ĉi tiu retejo kuntekston. 469 00:21:26,360 --> 00:21:29,890 Kaj mi menciis lasta fojo, ke ekzistas faskon da superglobals en PHP ke 470 00:21:29,890 --> 00:21:32,490 ne estas vere gravaj ĉe la komandlinio. 471 00:21:32,490 --> 00:21:36,210 Ili estas pli grava en la kunteksto uzi PHP en retejo kuntekston. 472 00:21:36,210 --> 00:21:41,220 Do kurante PHP sur retservilo por por generi aĵoj kiel HTML. 473 00:21:41,220 --> 00:21:44,540 >> Kaj ni ekrigardis $ _GET kaj $ _POST, kaj tio estas kie aŭtomate uzantoj 474 00:21:44,540 --> 00:21:49,100 enigo finas simple se vi prezenti formi al dosiero ending in. php en retejo 475 00:21:49,100 --> 00:21:50,460 servilo kiel la aparaton. 476 00:21:50,460 --> 00:21:53,310 Sed ni rigardu mallonge ĉe $ Kaj $ _SESSION _COOKIE. 477 00:21:53,310 --> 00:21:56,670 >> En lego de terminoj, kio estas kuketon kiel vi komprenas ĝin en la kunteksto de 478 00:21:56,670 --> 00:21:58,220 uzante la retejo? 479 00:21:58,220 --> 00:21:59,450 >> Spektantaro: Dosiero en la komputilo. 480 00:21:59,450 --> 00:21:59,920 >> DAVID Malan: Jes. 481 00:21:59,920 --> 00:22:03,500 Estas dosieron pri la uzanto komputilo plantita per nenial afiŝinto 482 00:22:03,500 --> 00:22:04,410 vi hazarde vizitas. 483 00:22:04,410 --> 00:22:07,334 Do kiam vi iras al Facebook, kiam vi iros al bankofamerica.com, kiam vi iras 484 00:22:07,334 --> 00:22:10,330 al google.com, kiam vi iras al preskaŭ neniu retejo en la mondo tiuj tagoj, 485 00:22:10,330 --> 00:22:14,850 inkludante cs50.net, la kuketo estas plantita en via komputilo, kiu estas 486 00:22:14,850 --> 00:22:19,800 ĉu valoro stokita en RAM en via komputilo en via retumilo memoro, aŭ 487 00:22:19,800 --> 00:22:22,800 kelkfoje ja dosieron stokita sur via fiksita disko. 488 00:22:22,800 --> 00:22:26,960 >> Kaj kio normale arangxitaj en tiu dosiero ne estas via vikipediista nomo ne estas via 489 00:22:26,960 --> 00:22:31,060 pasvorto, tipe ne iu sentema krom se la retejo ne estas tiel 490 00:22:31,060 --> 00:22:35,040 bona kun lia sekureco, sed prefere estas granda unika identigilo inter 491 00:22:35,040 --> 00:22:35,680 aliajn aĵojn. 492 00:22:35,680 --> 00:22:38,920 Estas granda hazardo nombro plantita sur via komputilo sed vi povas pensi pri kiel 493 00:22:38,920 --> 00:22:42,740 speco de virtuala mano stampon kiel de klubon aŭ iu amuzparko ke 494 00:22:42,740 --> 00:22:47,160 permesas la dungitaro, la posedantoj de tiu servon, por memori, kiu vi estas. 495 00:22:47,160 --> 00:22:51,030 Do, se la granda hazarda nombro estas kiel 12345678, kvankam tio estas evidente 496 00:22:51,030 --> 00:22:54,180 ne tro hazarda, pensu ke kiel la mano stampon ke kiam vi vizitas 497 00:22:54,180 --> 00:22:57,930 facebook.com por la unua fojo, ili frapu tiu numero en via mano. 498 00:22:57,930 --> 00:23:01,510 Kaj tiam ĉar vi parolas HTTP, vi esti retumilo, kaj ĉar Facebook 499 00:23:01,510 --> 00:23:06,440 evidente parolas la saman kiel retejo servilo, la protokolo HTTP diras ke 500 00:23:06,440 --> 00:23:09,930 iam ajn vi vizitos poste facebook.com, ĉu ĝi estas dua 501 00:23:09,930 --> 00:23:13,560 poste, unu horon poste, eĉ la sekvan tagon, tiel longe kiel vi ne eksplicite 502 00:23:13,560 --> 00:23:17,050 elsalutita, kiu efektive Estas kiel lavi la manojn. 503 00:23:17,050 --> 00:23:20,280 HTTP diras vi prezentu viajn transdoni frapu ĉiufoje kiam vi 504 00:23:20,280 --> 00:23:22,020 reveni al tiu paĝo. 505 00:23:22,020 --> 00:23:24,390 >> Kio Facebook do estas ili rigardi tiu mano stampon kaj 506 00:23:24,390 --> 00:23:26,850 ili diras, ho, 123456789. 507 00:23:26,850 --> 00:23:30,260 Mi ne scias, je unua vido ke ĉi estas David Malan en Cambridge, 508 00:23:30,260 --> 00:23:34,690 Massachusetts, sed ili povas kontroli liajn datumbazo kaj diros, ho, la persono 509 00:23:34,690 --> 00:23:39,930 sur kies komputilo ni plantis 123456789 estas David Malan de Cambridge, 510 00:23:39,930 --> 00:23:40,440 Masaĉuseco. 511 00:23:40,440 --> 00:23:46,000 Ni montros ke uzanto tiam lia profilon paĝo aŭ lia Novaĵoj Feed. 512 00:23:46,000 --> 00:23:49,660 >> Sed estas problemo ĉi tie, se tio estas kiel la ttt ja funkcias. 513 00:23:49,660 --> 00:23:51,390 Ni rigardu rapidan ekzemplo. 514 00:23:51,390 --> 00:23:55,190 Ni efektive iru diri facebook.com. 515 00:23:55,190 --> 00:23:58,130 Sed antaŭ ol ni povus iri tien, lasu Mi iru antaŭen kaj malfermu Chrome la 516 00:23:58,130 --> 00:23:59,790 Inspektoro suben ĉi tien. 517 00:23:59,790 --> 00:24:01,140 Permesu al mi rigardi la reto langeton. 518 00:24:01,140 --> 00:24:06,020 Kaj nun ni iru antaŭen kaj tajpu en https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 Kaj mi faras tio por ke ni ne vidas ĉiuj el tiuj alidirektiloj kaj malŝparo 520 00:24:09,410 --> 00:24:10,660 tempon rigardante tra tiuj. 521 00:24:10,660 --> 00:24:12,690 Lasu min batis eniri. 522 00:24:12,690 --> 00:24:13,130 >> Ĉio bone. 523 00:24:13,130 --> 00:24:14,580 Ni vidas tutan faskon da petoj. 524 00:24:14,580 --> 00:24:15,640 Venas Facebook. 525 00:24:15,640 --> 00:24:16,930 Ekzistas tuta fasko da dosieroj. 526 00:24:16,930 --> 00:24:19,290 Kaj tie, po mia mencio de latenta lasta fojo, jen 527 00:24:19,290 --> 00:24:21,240 multan HTTP petojn. 528 00:24:21,240 --> 00:24:23,700 Sed la unua estas probable la plej interesaj. 529 00:24:23,700 --> 00:24:26,420 >> Do ni rulumu malsupren tie, kaj Mi zomi en sekundo. 530 00:24:26,420 --> 00:24:29,090 Ĉi tuj estos speco de malordo, sed ni vidos. 531 00:24:29,090 --> 00:24:31,660 Facebook sendas al ni tutan faskon da aĵoj. 532 00:24:31,660 --> 00:24:33,490 >> Sed whoa, interesaj. 533 00:24:33,490 --> 00:24:37,880 Ili estas planti ne unu, sed kvar mano poŝtmarkojn sur mian manon tie. 534 00:24:37,880 --> 00:24:40,400 Aro-kuketo, Aro-kuketo, aro-kuketo, aro-kuketo. 535 00:24:40,400 --> 00:24:44,030 Kaj tie estas kelkaj trajtoj tie. 536 00:24:44,030 --> 00:24:46,170 Ĉiuj ili mencias kelkajn speco de finiĝo. 537 00:24:46,170 --> 00:24:50,090 Kaj ĝi aspektas kiel Facebook estas esperante memori min ĝis 2015. 538 00:24:50,090 --> 00:24:53,670 Do jen supozeble la tempo, per kiu Mi devas elsaluti aŭ ili timige nur 539 00:24:53,670 --> 00:24:55,710 aŭtomate supozas min ne revenis. 540 00:24:55,710 --> 00:24:57,840 Do tio estas vere decan kvanto de tempo. 541 00:24:57,840 --> 00:24:59,170 >> Kaj tie estas kelkaj aliaj aferoj okazas cxi tie. 542 00:24:59,170 --> 00:25:03,036 Ĉi kuketon ŝajnas esti perforte forigita dirante ĝi eksvalidiĝis en 1970 543 00:25:03,036 --> 00:25:04,460 antaŭ ol kuketoj ekzistis. 544 00:25:04,460 --> 00:25:06,510 Do la retumilo estas simple irante supozi OK, jen kiel 545 00:25:06,510 --> 00:25:07,910 lavante la manojn stampon. 546 00:25:07,910 --> 00:25:11,240 >> Sed nun, kiam mia retumilo faras posta peto - 547 00:25:11,240 --> 00:25:14,340 lasu min iri antaŭen kaj faros cxi denove kaj reŝarĝi. 548 00:25:14,340 --> 00:25:18,170 Nun lasu min rulumi reen al la supro peton kaj iru malsupren 549 00:25:18,170 --> 00:25:20,760 ĉi tie, peti titolaj. 550 00:25:20,760 --> 00:25:21,390 Rimarku ĉi. 551 00:25:21,390 --> 00:25:25,280 Do nun mi estas sub ne respondo titolaj, sed rimarki diras peton titolaj. 552 00:25:25,280 --> 00:25:29,220 Kaj rimarki ke mia retumilo kiel parton de lia peto post bati Reŝarĝi havas 553 00:25:29,220 --> 00:25:32,780 sendis almenaŭ la jenaj informoj. 554 00:25:32,780 --> 00:25:34,670 Ne aro-kuketo, sed kuketo. 555 00:25:34,670 --> 00:25:38,750 Do tiu estas la linio, la HTTP-header tiom diri, kie mia foliumilo estas speco 556 00:25:38,750 --> 00:25:43,340 de sen mia scii ĝin prezenti mia mano por Facebook inspektado. 557 00:25:43,340 --> 00:25:46,020 >> Do tiuj kuketoj povas esti uzis tiam por kio? 558 00:25:46,020 --> 00:25:49,420 Memori, kiu vi estas, aŭ memoras kiel multajn fojojn vi jam estis tie, aŭ 559 00:25:49,420 --> 00:25:50,280 vere nenion. 560 00:25:50,280 --> 00:25:52,742 >> Do tie estas counter.php. 561 00:25:52,742 --> 00:25:53,780 Kaj lasu min zomi en la tiparo. 562 00:25:53,780 --> 00:25:58,380 Kaj ĉiun fojon mi reŝargi tiun paĝon, avizo ĝi estas memori, kiom da fojoj 563 00:25:58,380 --> 00:25:59,250 Mi estis tie. 564 00:25:59,250 --> 00:26:00,570 Nu, tio ne estas ĉio, kion impresaj. 565 00:26:00,570 --> 00:26:03,140 Ni simple fermi ke langeto, kaj nun ni reiros al 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> Ho, tio estas interesa. 568 00:26:08,970 --> 00:26:10,960 Ĝi memoris ankoraŭ, eĉ kvankam mi fermis la langeton. 569 00:26:10,960 --> 00:26:14,010 Kaj sincere, se mi fermos la krozilo, se implementado per gxusta vojo, mi 570 00:26:14,010 --> 00:26:18,950 povus ankoraŭ memoras, ke tiu uzanto estas kiu li aŭ ŝi estis la unua fojo, kaj 571 00:26:18,950 --> 00:26:22,840 nur unu fojon mi iras en Chrome menuo, kiu super ĉi tie estas tie, kaj iru al 572 00:26:22,840 --> 00:26:25,990 Historio, kaj klaku Klara Browsing Data, kiel kelkaj el vi povus havi en la 573 00:26:25,990 --> 00:26:33,050 pasinteco, nur tiam volas viajn kuketojn reale esti forigita dum retejo 574 00:26:33,050 --> 00:26:33,970 evoluo. 575 00:26:33,970 --> 00:26:35,340 >> Do, se ni iru - 576 00:26:35,340 --> 00:26:37,080 ni fermos supren gedit tie. 577 00:26:37,080 --> 00:26:38,910 Kaj se ni iru nun al ĉi tiu dosiero. 578 00:26:38,910 --> 00:26:44,210 Permesu al mi iri en nian vhosts / localhost / publiko, kaj lasu min fari 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Rimarku, ke tio estas bela simpla programo. 581 00:26:48,350 --> 00:26:50,250 Ĝi estas sufiĉe simpla retejo. 582 00:26:50,250 --> 00:26:51,770 >> Do la supro de la dosiero Estas ĝuste komentojn. 583 00:26:51,770 --> 00:26:54,930 Sed ĉi tie estas nova linio kiu vi povas vidis jam en p-starigis sep, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 Tiu estas linio de PHP-kodon esence diras la TTT-servilo, fari 586 00:27:00,380 --> 00:27:03,400 Nepre frapu manojn kaj faras Nepre kontrolu mano poŝtmarkojn. 587 00:27:03,400 --> 00:27:06,810 Tio estas ĉio ke linion faras, kaj tio faras ĉiu el tiu procezo por ni. 588 00:27:06,810 --> 00:27:09,510 Tiam rimarkos Mi ĵus ricevis du branĉoj tie. 589 00:27:09,510 --> 00:27:14,150 Se la vendotablo klavo interne de tiu speciala tutmonda variablon nomitan 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Estas metita - alivorte, se ekzistas iu valoro tie - 591 00:27:18,010 --> 00:27:22,440 ni ricevas gxin kaj konservas ĝin en loka variablon nomitan $ vendotablo. 592 00:27:22,440 --> 00:27:27,000 Alie, ni atribui $ nombrilo la defaŭltan valoron de 0. 593 00:27:27,000 --> 00:27:30,320 >> Nun tie estas unu aspekto de PHP tio ambaŭ beno kaj malbeno. 594 00:27:30,320 --> 00:27:32,080 PHP estas iom fuŝa. 595 00:27:32,080 --> 00:27:35,160 Do dum en C, kio farus la medio de nombrilo estis 596 00:27:35,160 --> 00:27:36,725 ĉu tie aŭ tie ĉi? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> Ĝi estus enfermita al tiuj, krispa krampoj. 599 00:27:41,690 --> 00:27:42,090 Divenu kion? 600 00:27:42,090 --> 00:27:46,920 En PHP, ekzistas eĉ ekstere de tiuj krispa krampoj, ĉi tie, kaj ĉi tie, 601 00:27:46,920 --> 00:27:49,120 kaj ĉi tie, kaj ĉi tie, kaj eĉ malsupre. 602 00:27:49,120 --> 00:27:52,400 Do mi diru ĉi estas beno en la senco ke vi ne devas pensi kiel 603 00:27:52,400 --> 00:27:54,070 forte kiel ni faris semajnojn. 604 00:27:54,070 --> 00:27:56,880 Sed ĝi estas ankaŭ iom de malbeno en tiu negrave kie vi uzi variablon en 605 00:27:56,880 --> 00:28:00,020 PHP, almenaŭ en programo kiel tiu, ĝi estas tutmonde alireblaj por 606 00:28:00,020 --> 00:28:01,170 bona aŭ por malbona. 607 00:28:01,170 --> 00:28:06,130 Do vi devas teni en la menso nun ke via variabloj povas ne esti nedifinita. 608 00:28:06,130 --> 00:28:07,640 Vi povus esti difinita ilin aliloke. 609 00:28:07,640 --> 00:28:09,460 >> Sed kion mi tuj faros finfine? 610 00:28:09,460 --> 00:28:13,160 Mi iras al stoki ene de tiu tutmonda variablon kiel valoron de la 611 00:28:13,160 --> 00:28:17,060 nombrilo tajpi la rezulto de faranta nombrilo plus 1. 612 00:28:17,060 --> 00:28:18,910 Do tiu estas nur la aritmetiko kiuj faras la 613 00:28:18,910 --> 00:28:20,590 incrementation de tiu vendotablo. 614 00:28:20,590 --> 00:28:24,850 Kaj la fakto ke mi stokante ke valoro reen en ĉi tie estas duona 615 00:28:24,850 --> 00:28:29,970 esence aktualigi la datumbazon por memoru, ke uzanto 123456789 estis 616 00:28:29,970 --> 00:28:31,010 tien du fojojn. 617 00:28:31,010 --> 00:28:33,780 Kaj kiam Mi faros gxin denove la venontan fojon mi reŝarĝi la paĝon, ĝi estas tuj kontroli 618 00:28:33,780 --> 00:28:36,710 mia mano ringo kaj diras, ho, uzanto 123456789 havas nun 619 00:28:36,710 --> 00:28:38,410 cxi tie tri fojojn. 620 00:28:38,410 --> 00:28:43,390 >> Kaj do, kion PHP kaj similaj lingvoj faras por ni estas ke ili estas imagante 621 00:28:43,390 --> 00:28:47,720 el kiel kaj kie kaj por kiom da tempo stoki valorojn en ĉi tiu speciala 622 00:28:47,720 --> 00:28:48,830 superglobal. 623 00:28:48,830 --> 00:28:52,750 Kaj tion superglobal la venontan fojon mi viziti la paĝo estas speco de magie 624 00:28:52,750 --> 00:28:57,440 pre-popolita, plenigita kun valoroj kiuj tie estis la lasta tempo vi vizitis, 625 00:28:57,440 --> 00:29:02,310 ĉu tio estis dua tago, semajno antaŭe, nek en la 2013 kaj ni nun parolas 626 00:29:02,310 --> 00:29:03,790 pri 2015. 627 00:29:03,790 --> 00:29:07,600 PHP kaj la TTT-servilo enterigi de ĉiuj ke por vi. 628 00:29:07,600 --> 00:29:08,850 >> Spektantaro: [inaudibles]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVID Malan: Variabloj en PHP estas esence ĉiam tutmonda, krom se vi 631 00:29:15,760 --> 00:29:18,400 deklari ilin ene de funkcio, kaj tiam ili estas lokaj al 632 00:29:18,400 --> 00:29:19,420 la funkcio nur. 633 00:29:19,420 --> 00:29:22,300 Sed ĉar mi ne skribis ajnan funkcioj, ili estas nun efektiva 634 00:29:22,300 --> 00:29:25,090 tutmonda tra mia tuta dosiero tien. 635 00:29:25,090 --> 00:29:26,040 >> Spektantaro: Ĉu ekzistas maniero por fari ilin loka? 636 00:29:26,040 --> 00:29:28,470 >> DAVID Malan: CXu estas ia maniero por fari ilin loka? 637 00:29:28,470 --> 00:29:30,680 Nur per fluigi ilin en funkcioj. 638 00:29:30,680 --> 00:29:32,790 Kiu en la lasta versio de PHP, vi povas fari tion kun 639 00:29:32,790 --> 00:29:34,130 anonima funkcio. 640 00:29:34,130 --> 00:29:35,930 Sed pli pri tio en la kunteksto de JavaScript. 641 00:29:35,930 --> 00:29:37,260 Sed la mallonga respondo estas ne. 642 00:29:37,260 --> 00:29:40,888 Pli longa respondo estas jes. 643 00:29:40,888 --> 00:29:42,380 Agrabla. 644 00:29:42,380 --> 00:29:43,380 Bonan kvizo demando. 645 00:29:43,380 --> 00:29:43,930 Ĉiuj pravas. 646 00:29:43,930 --> 00:29:47,760 >> Do fine, la paĝo mem estas fakte sufiĉe simpla. 647 00:29:47,760 --> 00:29:51,470 Rimarku, ke iam mi eliros PHP moduso, recall ke ĉiuj ĉi aĵoj malsupren 648 00:29:51,470 --> 00:29:53,700 sube estas ĝuste tuj get kracxi el krudaj al la legilo. 649 00:29:53,700 --> 00:29:57,050 Kio estas pli bone, ĉar mi volas sendi la uzanto iuj HTML, sed mi volas 650 00:29:57,050 --> 00:29:59,140 dinamike ĝisdatigi ke HTML. 651 00:29:59,140 --> 00:30:03,930 Kaj unu maniero mi povas fari ĉi tion estas ordigi de tre rapide falas reen en PHP 652 00:30:03,930 --> 00:30:07,730 reĝimo, uzo malferma krampo demandosigno egala signo, kaj tiam eligo la valoro 653 00:30:07,730 --> 00:30:08,650 de vendotablo. 654 00:30:08,650 --> 00:30:12,360 >> Aŭ, se tio aspektas iom kripta, tiu egalsigno estas fakte nur iuj 655 00:30:12,360 --> 00:30:16,190 sintaksa sukero por tiu printf ($ counter). 656 00:30:16,190 --> 00:30:19,160 Sed sincere, ke estas nur iom malbela kaj iom ĝena por tajpi. 657 00:30:19,160 --> 00:30:23,660 Do PHP tre bele proponas tiun funkcion kie vi povas nur diri gxin pli 658 00:30:23,660 --> 00:30:25,450 koncize en la sama maniero. 659 00:30:25,450 --> 00:30:26,940 >> Do kio okazas malsupre la kapuĉo? 660 00:30:26,940 --> 00:30:31,210 Ni rapide rigardi la reto langeton tien por counter.php. 661 00:30:31,210 --> 00:30:35,090 Kaj lasu min antaŭeniri kaj unua ni purigi viajn kuketojn. 662 00:30:35,090 --> 00:30:38,670 Ni klare navigacio datumoj ekde la komenco de tempo. 663 00:30:38,670 --> 00:30:39,680 Nun ni revenu ĉi tien. 664 00:30:39,680 --> 00:30:41,340 Nun ni reŝarĝi la paĝon. 665 00:30:41,340 --> 00:30:42,170 Kaj mi certas reen je nulo. 666 00:30:42,170 --> 00:30:44,810 Ĉar mia mano stampo estas lavitaj, Mi nun ek al nova kuketon. 667 00:30:44,810 --> 00:30:48,780 >> Ja se mi rigardas la reto langeto kaj rigardi respondon titolaj, avizo 668 00:30:48,780 --> 00:30:51,960 ke la aparato sendas al mi biskviton kies nomo estas iom 669 00:30:51,960 --> 00:30:55,820 arbitre, sed speco de prudente, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 Kaj ĝi estas la sendo de mi cxi tiun vere big hazarda nombro. 671 00:30:58,440 --> 00:30:59,440 Ĝi ne estas tute nombro. 672 00:30:59,440 --> 00:31:00,390 Ĝi ne estas tute deksesuma. 673 00:31:00,390 --> 00:31:03,600 Ĝi estas ia speco de litero kaj kordo, sed supozeble ĝi estas hazarda. 674 00:31:03,600 --> 00:31:06,830 Kaj tio estas la mano stampon tiel paroli, ke mi raportas al. 675 00:31:06,830 --> 00:31:11,960 >> Dume, se mi klakas Reŝarĝi kaj poste rigardu tiun duan linion por mia dua 676 00:31:11,960 --> 00:31:17,600 peto, avizo nun ke mia peto titolaj inkluzivi PHPSESSID egalas tion, 677 00:31:17,600 --> 00:31:19,390 Ne aro-kuketo, sed gxuste kuketon. 678 00:31:19,390 --> 00:31:22,950 Kaj tio estas mia retumilo prezento de mia mano stampon. 679 00:31:22,950 --> 00:31:28,820 >> Do nun kiel teaser, kaj ni parolos pli pri tiu en semajno aŭ tiel, sed 680 00:31:28,820 --> 00:31:31,590 en kia maniero tio ĉi igos vin vundeblaj, via Facebook konton 681 00:31:31,590 --> 00:31:34,137 vundeblaj, kaj aliaj tiaj kontoj vundebla? 682 00:31:34,137 --> 00:31:35,510 >> Spektantaro: Se iu havas via kuketon. 683 00:31:35,510 --> 00:31:36,750 >> DAVID Malan: Jes, se iu havas via kuketon. 684 00:31:36,750 --> 00:31:39,920 Mi volas diri vere, multe kiel kelkaj el vi povus esti provinta en kiel klubo aŭ 685 00:31:39,920 --> 00:31:44,030 amuzparko, se vi provos ion kiel tiu por kopii la stampon, kvankam 686 00:31:44,030 --> 00:31:47,560 malantaŭen al alia persono manon, kaj tiam li aŭ ŝi prezentas ĝin kiel 687 00:31:47,560 --> 00:31:53,250 iliaj propraj, se tio vere aspektas identa, 123456789, tiam la TTT 688 00:31:53,250 --> 00:31:57,980 servilaj ŝajne ĝuste tuj esperas, ke tiu uzanto estas vi. 689 00:31:57,980 --> 00:32:01,450 >> Kaj cxi tiu estas vere fundamenta minaco ajn vi uzas kuketojn 690 00:32:01,450 --> 00:32:05,420 ĉar se iu nur spoofs tiel paroli vian kuketon, figuroj el kio ĝi 691 00:32:05,420 --> 00:32:08,660 estas, ĉu per vere kopii gxin rigardante vian komputilon 692 00:32:08,660 --> 00:32:09,890 kaj estante kiel, OK. 693 00:32:09,890 --> 00:32:14,520 David kuketo estas JJ3JIK ks, kaj tiam ili estas sufiĉe lertaj por scii 694 00:32:14,520 --> 00:32:18,080 kiel speco de manlibro sendu ke kuketo el retumilo aŭ el 695 00:32:18,080 --> 00:32:22,350 programo skribas, ili povis tute ensalutas en retejo kiel vi. 696 00:32:22,350 --> 00:32:28,560 Ĝi ne estas tiel malfacila por ŝajnigi esti iu alia krom se ni reviziti p-aro 697 00:32:28,560 --> 00:32:30,790 du, kiuj enkondukis kio? 698 00:32:30,790 --> 00:32:32,065 >> Spektantaro: Ĉifriko. 699 00:32:32,065 --> 00:32:33,860 >> DAVID Malan: Iom bito de ĉifriko. 700 00:32:33,860 --> 00:32:36,550 Simplaj ĉifriko, almenaŭ en la norma eldono, sed kripto 701 00:32:36,550 --> 00:32:36,870 tamen. 702 00:32:36,870 --> 00:32:37,410 malpli. 703 00:32:37,410 --> 00:32:41,440 Do rezultas se vi kodi ĉiujn tiuj titolaj uzante iun kiu vi 704 00:32:41,440 --> 00:32:48,770 eble nun scias pli familiare kiel SSL, sekura socket tavolo, aŭ https:// URLoj, 705 00:32:48,770 --> 00:32:51,890 tiam ĉiuj tiuj aferoj ni vizitis rigardante estas efektive kodita, 706 00:32:51,890 --> 00:32:54,800 kio signifas ke ĝi estas kiel vi ne povas legi la mano stampon. 707 00:32:54,800 --> 00:32:59,350 Nur facebook.com povas, aŭ google.com, aŭ en tiu kazo, la aparato povas 708 00:32:59,350 --> 00:33:00,550 legu tiu mano stampon. 709 00:33:00,550 --> 00:33:04,020 >> Tragike though, kaj denove, ĉi tiu estas ĉiuj tro taŭgaj kun la NSA stuff 710 00:33:04,020 --> 00:33:06,410 jxus, eĉ SSL estas rompema. 711 00:33:06,410 --> 00:33:09,850 Kaj tio fakte ne estas tiel malfacila inkluzive fendi ke ĉifrado. 712 00:33:09,850 --> 00:33:12,040 Ne tiom per krakas la ĉifrado, sed trompante la 713 00:33:12,040 --> 00:33:15,720 retumilo en decrypting la datumoj antaŭtempe. 714 00:33:15,720 --> 00:33:17,880 Sed denove, ni turmentus vin kun tiu antaux longe. 715 00:33:17,880 --> 00:33:21,242 Por nun, nur timu. 716 00:33:21,242 --> 00:33:23,070 Estas tragike ia vera. 717 00:33:23,070 --> 00:33:23,760 >> Ĉiuj pravas. 718 00:33:23,760 --> 00:33:27,910 Do, kie tio ĉi nun forlasi nin? 719 00:33:27,910 --> 00:33:29,010 Nu, ni faros. 720 00:33:29,010 --> 00:33:31,790 Ni iru antaŭen kaj preni rapidajn teaser antaŭ ni preni ripozon. 721 00:33:31,790 --> 00:33:33,790 Kaj mi kredas ke ni devos restadi iom pli longa hodiaŭ, sed ni iras al plonĝi en 722 00:33:33,790 --> 00:33:37,850 io tute nova kaj alloga, kiuj volas akrigis vian apetiton por eĉ pli. 723 00:33:37,850 --> 00:33:38,950 Do jen la teaser. 724 00:33:38,950 --> 00:33:41,520 >> Do SQL, ni komencis paroli pri iam tiel mallonge lasta tempo. 725 00:33:41,520 --> 00:33:44,670 Vi vere ricevi viajn manojn malpurajn kun iom da ĝi en p-aro sep. 726 00:33:44,670 --> 00:33:46,480 Kaj en laiko terminoj, kion faras la SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 faru por vi? 729 00:33:49,850 --> 00:33:50,310 Kio estas tio? 730 00:33:50,310 --> 00:33:51,546 Jes. 731 00:33:51,546 --> 00:33:53,240 >> Spektantaro: Ni vi aliro datumojn. 732 00:33:53,240 --> 00:33:53,360 >> DAVID Malan: Jes. 733 00:33:53,360 --> 00:33:55,120 Ĝi ni vin aliro datumoj en datumbazo. 734 00:33:55,120 --> 00:33:56,710 Strukturita Query Language. 735 00:33:56,710 --> 00:33:59,890 Kaj tio estas esence programlingvo. 736 00:33:59,890 --> 00:34:03,400 Esas trajtoj de tio, ke ni ne eĉ uzas en la klaso. 737 00:34:03,400 --> 00:34:04,710 Sed vi povas efektive difini funkciojn. 738 00:34:04,710 --> 00:34:06,870 Ili vokis stokitaj procedurojn en SQL. 739 00:34:06,870 --> 00:34:09,860 Sed ni devos konservi ĝin sufiĉe simpla kaj nur uzu ĝin por kelkaj bazaj operacioj 740 00:34:09,860 --> 00:34:14,320 kiel elekti datumojn, enmeto datumojn, ĝisdatigi datumojn, kaj viŝante datumoj. 741 00:34:14,320 --> 00:34:17,400 >> Kaj vi povas vere pensi pri datumbazo, kiel SQL-datumbazoj, kiel ĝuste 742 00:34:17,400 --> 00:34:18,800 esti Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Ĉar SQL referencas al rilata datenbazo, kie 744 00:34:21,989 --> 00:34:23,480 rilato simple signifas tabeloj. 745 00:34:23,480 --> 00:34:24,739 Vicoj kaj kolumnoj. 746 00:34:24,739 --> 00:34:27,929 Do io vi povas meti en kalkultabelo kiel tiu aŭ Google Docs, 747 00:34:27,929 --> 00:34:32,460 vi povus enmeti en SQL datumbazo per deklaro tablo. 748 00:34:32,460 --> 00:34:34,800 >> Nun, kiel vi efektive aliri tiun informon? 749 00:34:34,800 --> 00:34:38,239 Nu, per komandoj aŭ pridemandojn kiel ĉi tio. 750 00:34:38,239 --> 00:34:40,199 SELECT, INSERT, UPDATE, DELETE kaj. 751 00:34:40,199 --> 00:34:44,489 Kaj plejparte, tiuj estas la kvar nur ingrediencojn vi bezonos 752 00:34:44,489 --> 00:34:47,370 fari ion tute potence en problemo starigis sep. 753 00:34:47,370 --> 00:34:49,940 >> Nun reen en la tago, vi volus vere interagi kun datumbazo per 754 00:34:49,940 --> 00:34:52,730 nigra kaj blanka terminalfenestro ĉe a palpebrumante prompto kiel ĉi tio. 755 00:34:52,730 --> 00:34:56,370 Kaj la datumbazon ni kuras en la aparato nomiĝas MySQL, kiu estas 756 00:34:56,370 --> 00:34:58,560 libera kaj malfermita fonto datumbaza motoro. 757 00:34:58,560 --> 00:35:02,240 Se vi Guglas kaj legis la Vikipedio artikolo, vi scios ke la nomo estas 758 00:35:02,240 --> 00:35:05,060 iom de transiro por iuj versioj de Linukso. 759 00:35:05,060 --> 00:35:10,460 Maria datumbazo estas reale forko tiel diri de MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Longan rakonton, Oracle aĉetis MySQL. 761 00:35:12,740 --> 00:35:13,870 Oracle estas granda entrepreno. 762 00:35:13,870 --> 00:35:17,010 Homoj estis elĉerpita, ke li farus ne plu restas tiom malfermita fonto, 763 00:35:17,010 --> 00:35:20,930 do tio estas nur kopio de MySQL, ke estas ankoraŭ libera, ankoraux liberaj, kaj estas 764 00:35:20,930 --> 00:35:23,550 instalita en Fedora Linux defaŭlte. 765 00:35:23,550 --> 00:35:26,130 >> Sed tio estas speco de doloro en la kolo konatigxi kun 766 00:35:26,130 --> 00:35:27,310 datumbaza tiamaniere. 767 00:35:27,310 --> 00:35:30,560 Do ni inkluzivi en la CS50 aparato libera fonto malfermita ilo nomata 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Nur koincido ke Ĝi estas skribita en PHP. 770 00:35:33,940 --> 00:35:36,450 Ne estas fundamenta bezonas por PHP tie. 771 00:35:36,450 --> 00:35:40,090 Sed tio estas nur ttt-bazita ilo kiu ni elŝutis senpage, instalitaj en 772 00:35:40,090 --> 00:35:43,850 La aparato, kiu permesas al ni havi grafika uzantinterfaco kun kio 773 00:35:43,850 --> 00:35:48,610 esplori la p-starigis sep datumbazon kun kiu krei novajn datumbazojn, 774 00:35:48,610 --> 00:35:51,980 diras por via propra fina projekto, se vi volas kiel, kaj finfine krei 775 00:35:51,980 --> 00:35:55,900 dinamikajn retejojn kiel CS50 Financoj ke vi permesas demandi datumoj kaj 776 00:35:55,900 --> 00:35:58,140 ĝisdatigi datumoj dinamike. 777 00:35:58,140 --> 00:36:01,420 >> Vi ne tuj devas uzi nur simpla teksta dosiero aŭ CSV. 778 00:36:01,420 --> 00:36:05,950 Vi povas fakte uzi inteligenta datumbazo programon tiel ke vi povas ekzekuti pli 779 00:36:05,950 --> 00:36:10,240 malnaiva pridemandojn ol nur legante tra ĉio lineare. 780 00:36:10,240 --> 00:36:14,150 >> Do ekzemple, tio estas, kion ni donu vin el la skatolo por p-aro sep. 781 00:36:14,150 --> 00:36:18,280 Tio estas tablo kun ŝajne almenaŭ tri kolumnoj, unu el kiuj estas 782 00:36:18,280 --> 00:36:21,450 username, unu el kiuj estas hash, kaj la alia el kiuj estas identigilo. 783 00:36:21,450 --> 00:36:26,200 >> Sed la interesa afero, kaj nur al turmentus el unu penson tie, uzantnomo 784 00:36:26,200 --> 00:36:29,270 Estas supozeble jam unika, ĉu ne? 785 00:36:29,270 --> 00:36:31,190 Mi volas diri, plej ajna TTT-ejo, se vi havas salutnomon, tie 786 00:36:31,190 --> 00:36:32,370 ne povas esti du Caesars. 787 00:36:32,370 --> 00:36:33,440 Ne povas ekzisti du malans. 788 00:36:33,440 --> 00:36:34,950 Ne povas ekzisti du jharvards. 789 00:36:34,950 --> 00:36:35,600 Lia unika. 790 00:36:35,600 --> 00:36:38,610 Alie, ili ne scias kion jharvard ĝi reale estas. 791 00:36:38,610 --> 00:36:42,710 Do kio povus esti la motivado por ankaŭ havi trian kolumnon sur la maldekstra 792 00:36:42,710 --> 00:36:46,970 tie nomata ID, kiu aspektas kiel numero kiu estas simile solaj? 793 00:36:46,970 --> 00:36:51,300 Ĝi sentas malmultan redunda al mi je la unua rigardo. 794 00:36:51,300 --> 00:36:54,910 Kial eble ĝi estos konvinkaj por havi ne nur unika salutnomoj, 795 00:36:54,910 --> 00:36:56,837 sed ankaŭ unika nombroj? 796 00:36:56,837 --> 00:36:59,460 >> Spektantaro: Ili povus havi la saman pasvorton. 797 00:36:59,460 --> 00:37:01,720 >> DAVID Malan: Homoj havu la saman pasvorton, sekura. 798 00:37:01,720 --> 00:37:03,900 Tio povus absolute okazos. 799 00:37:03,900 --> 00:37:08,270 Sed se ili havas tiun unikan salutnomon, mi argumentus ke tio ne vere 800 00:37:08,270 --> 00:37:11,630 afero, ĉar se oni tajpas en siaj salutnomon, mi nur bezonas kontroli iliajn 801 00:37:11,630 --> 00:37:15,060 pasvorto, iliaj hash largxo. 802 00:37:15,060 --> 00:37:15,970 Kial alie? 803 00:37:15,970 --> 00:37:17,950 >> Spektantaro: Faster serĉado. 804 00:37:17,950 --> 00:37:18,680 >> DAVID Malan: Faster serĉado. 805 00:37:18,680 --> 00:37:19,548 Kial? 806 00:37:19,548 --> 00:37:21,460 >> Spektantaro: ID estas nur unu. 807 00:37:21,460 --> 00:37:24,040 >> DAVID Malan: ID estas nur unu signo, aŭ por esti pli preciza, estas nombro, 808 00:37:24,040 --> 00:37:26,910 tial ĝi estas probable 32 bitoj aŭ io kiel tio. 809 00:37:26,910 --> 00:37:30,270 Dum la uzantnomo, ŝajne Jason Hirschhorn Supren ekzistas ia 810 00:37:30,270 --> 00:37:33,900 ridinde longajn, kaj gxi tuj prenu min multe pli da tempo al ŝnuro 811 00:37:33,900 --> 00:37:40,910 kompari H-mi-R-S-C-H-H-O-R-N, kaj eble a / 0 aŭ io simila, en ordo 812 00:37:40,910 --> 00:37:45,100 rigardi supren Jason, kontraste nur dirante al mi la uzanto numero du. 813 00:37:45,100 --> 00:37:46,510 Tio estas 32 bitoj. 814 00:37:46,510 --> 00:37:48,550 Ĝi estas sola INT ke vi devas kompari. 815 00:37:48,550 --> 00:37:52,150 Kaj efektive, jen ĝuste kial datumbazoj emas atribui unika IDs al 816 00:37:52,150 --> 00:37:53,710 vicojn en ili. 817 00:37:53,710 --> 00:37:56,280 >> Nun kion aliaj datumtipoj estas tie krom INT kaj ŝajne 818 00:37:56,280 --> 00:37:57,160 kordoj kiel tiu? 819 00:37:57,160 --> 00:37:59,700 Nu, por esti pli taŭga, SQL-datumbazoj, kiel 820 00:37:59,700 --> 00:38:02,060 MySQL, havas Char kampoj. 821 00:38:02,060 --> 00:38:05,320 Kaj char iom misleadingly ne estas sola Char. 822 00:38:05,320 --> 00:38:10,290 A Char kampo en MySQL datenbazo estas unu aŭ plurajn signojn, sed ĝi estas 823 00:38:10,290 --> 00:38:11,780 fiksita nombro da karakteroj. 824 00:38:11,780 --> 00:38:15,710 >> Do ekzemple, se mi iros al phpMyAdmin kiel vi eble jam, aŭ 825 00:38:15,710 --> 00:38:21,340 baldaŭ estos problemo starigis sep, kaj mi iras, al mia datumbazo, kaj nur por amuzo, 826 00:38:21,340 --> 00:38:25,700 ni krei novan tablon nomata testi kun nur du kolumnojn. 827 00:38:25,700 --> 00:38:27,160 Mi poste alklaku Go. 828 00:38:27,160 --> 00:38:30,070 Kaj ĉi tio fariĝis sufiĉe konata, precipe cxar vi toquetear 829 00:38:30,070 --> 00:38:31,130 ĉirkaŭe sur viaj propraj. 830 00:38:31,130 --> 00:38:34,140 Ĉi tie mi povus tajpi ID krei nova tabelo de tipo int. 831 00:38:34,140 --> 00:38:37,770 Sed ĉi tie mi povus entajpi salutnomon por amuzi, ke pli frue tablo. 832 00:38:37,770 --> 00:38:40,700 Kaj rimarki Mi havas tutan faskon de tipoj por elekti. 833 00:38:40,700 --> 00:38:43,610 >> Kaj ĉi tiu estas ankaŭ kial phpMyAdmin estas ia agrabla. 834 00:38:43,610 --> 00:38:46,770 Ĝi estas speco de memlernado en kiu vi povas simple ia punkto, kaj klaku, kaj 835 00:38:46,770 --> 00:38:50,730 rigardi dropdown menuoj, kaj konkludi el ke kion potencoj SQL donas vi. 836 00:38:50,730 --> 00:38:54,090 >> Kaj efektive, se mi elektas char, se mi tiam devas specifi la longo, aŭ kiel 837 00:38:54,090 --> 00:38:55,940 multaj taksas, kiom da signoj. 838 00:38:55,940 --> 00:39:00,090 Do tre komunaj valoroj estas aĵoj kiel 255, sed tio estas iom longa. 839 00:39:00,090 --> 00:39:02,250 Komune estas ok di uzantnomon. 840 00:39:02,250 --> 00:39:03,590 Sed tio estas iom malgranda tiuj tagoj. 841 00:39:03,590 --> 00:39:05,430 Do tiu estas dezajno decido. 842 00:39:05,430 --> 00:39:08,630 Ĉu 8 signoj maks, 32, 255, 1000? 843 00:39:08,630 --> 00:39:09,830 Estas vere supren al vi. 844 00:39:09,830 --> 00:39:12,350 Sed char kampo estas fiksa kvanto. 845 00:39:12,350 --> 00:39:16,420 Do elektu tro malmultaj kaj vi estas speco de ŝraŭbitaj se oni deziras plu uzantnomon. 846 00:39:16,420 --> 00:39:19,132 Elektu tro multaj kaj kio estas la malavantaĝo? 847 00:39:19,132 --> 00:39:20,820 >> Spektantaro: [inaudibles]. 848 00:39:20,820 --> 00:39:21,620 >> DAVID Malan: Ĝi estas malŝparema. 849 00:39:21,620 --> 00:39:24,835 Same kiel en C, se vi havas pli grandan eron de memoro ol vi bezonas, vi estas 850 00:39:24,835 --> 00:39:27,190 nur malŝparas tempon kaj malŝparas spacon. 851 00:39:27,190 --> 00:39:31,430 Do kiel alternativo, tie ekzistas VARCHAR, kiu solvas tiun problemon per 852 00:39:31,430 --> 00:39:36,390 trakti longo ne fiksita longeco sed kiel maksimuma longo, kaj uzante 853 00:39:36,390 --> 00:39:40,990 variablo nombro de signaĵoj, kiu tiam emas uzi nur kiel multaj signaĵoj kiel vi 854 00:39:40,990 --> 00:39:42,710 fakte bezonas. 855 00:39:42,710 --> 00:39:43,670 Tio sonas perfekta. 856 00:39:43,670 --> 00:39:45,640 >> Kial ni ne forigi la Char datumoj tajpi do? 857 00:39:45,640 --> 00:39:48,500 Kio povus esti la malavantaĝo de uzante VARCHARs, kiu sonas 858 00:39:48,500 --> 00:39:51,644 kiel ĝi estas bela venko? 859 00:39:51,644 --> 00:39:52,596 Jes? 860 00:39:52,596 --> 00:39:53,846 >> Spektantaro: [inaudibles]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVID Malan: Bone, bone. 863 00:39:57,790 --> 00:40:01,101 Do, se ĉiu el viaj datumoj estas la sama longo, kio estas la zorgo? 864 00:40:01,101 --> 00:40:05,250 >> Spektantaro: Ĉar vi malŝparas datumoj dirante ilin ĉiujn. 865 00:40:05,250 --> 00:40:09,060 >> DAVID Malan: Do, se ĉiu el viaj datumoj la sama longo, kvankam, mi argumentus 866 00:40:09,060 --> 00:40:12,300 ke preciziganta maksimuma longo sur VARCHAR ne estas malsama de 867 00:40:12,300 --> 00:40:16,070 preciziganta fiksita longeco sur Char se vi konas tiun numeron anticipe. 868 00:40:16,070 --> 00:40:19,500 Sed estas ja, kaj mi ian ĉerpi el tiu respondo la realo 869 00:40:19,500 --> 00:40:22,610 ke estas ankoraŭ maks, kiu povus esti ĝena, speciale se vi 870 00:40:22,610 --> 00:40:25,920 renkonti la nomon de persono, kiu estas nekutime longaj, ke vi ne 871 00:40:25,920 --> 00:40:26,860 anticipi. 872 00:40:26,860 --> 00:40:31,420 Kaj ĝi estas ankaŭ iom malpli efika efektive serĉu per VARCHARs kiel 873 00:40:31,420 --> 00:40:35,620 kontraste al serĉado signaĵoj, speciale dum longaj tabloj, kiuj havas multajn kaj 874 00:40:35,620 --> 00:40:36,510 multajn datumojn. 875 00:40:36,510 --> 00:40:40,060 Do ĉi tie tro, laŭtema estas denove neniu evidenta elekto. 876 00:40:40,060 --> 00:40:42,870 >> Do ĝuste doni al vi la senton de aliaj datumtipoj kiuj eble interesos 877 00:40:42,870 --> 00:40:45,400 ĉu por p-starigis sep aŭ en la estonteco, ne estas INT. 878 00:40:45,400 --> 00:40:47,270 Ekzistas BIGINT, kiuj estas kiel longa longa. 879 00:40:47,270 --> 00:40:48,880 Ĝi emas esti 64 bitojn. 880 00:40:48,880 --> 00:40:51,640 Tie estas dekuma, kiun vi vidos en la problemo aro, kiu estas multe 881 00:40:51,640 --> 00:40:55,300 purigisto respondon al la problemoj ni renkontita kun float kaj flosante 882 00:40:55,300 --> 00:40:55,980 noti imprecision. 883 00:40:55,980 --> 00:40:57,390 Kaj tiam tie estas DatoTempo. 884 00:40:57,390 --> 00:41:01,530 Tie estas laŭvorte datumtipo kiu havas rigardi kiel unu jaro, monato, tago, 885 00:41:01,530 --> 00:41:03,730 kaj horo, minuto kaj sekundo. 886 00:41:03,730 --> 00:41:07,470 >> Sed SQL-datumbazoj havas ankaŭ tion ni nomas indeksoj. 887 00:41:07,470 --> 00:41:11,630 Kaj indekso estas io kion vi specifi kiam kreante la tablo al 888 00:41:11,630 --> 00:41:15,720 fari serĉoj kaj aliaj operacioj pli efika. 889 00:41:15,720 --> 00:41:18,550 Specife, ekzistas io nomata La primara indekso ke vi povis 890 00:41:18,550 --> 00:41:19,440 deklari kiel sekvas. 891 00:41:19,440 --> 00:41:22,330 >> Ni faris tion por vi kun la uzantoj tablo ni donas al vi. 892 00:41:22,330 --> 00:41:26,160 Sed rimarkos se mi estis permane amuzante la uzantoj tablo tie donante 893 00:41:26,160 --> 00:41:27,110 ĝin nomon de la uzantoj. 894 00:41:27,110 --> 00:41:28,125 Mi jam specifita ID. 895 00:41:28,125 --> 00:41:29,330 Mi indikis INT. 896 00:41:29,330 --> 00:41:32,000 Mi indikis salutnomo kun maksimuma 32 signojn. 897 00:41:32,000 --> 00:41:36,140 Sed se ni plenumas rulumado en ĉi sufiĉe larĝa fenestro, avizo tie estas 898 00:41:36,140 --> 00:41:38,260 faskon da aliaj aferoj kiujn mi povas specifi. 899 00:41:38,260 --> 00:41:40,950 >> Unu, mi povas specifi atributoj kiel vi scias, kio, ĉi 900 00:41:40,950 --> 00:41:42,190 INT devus esti sensigna. 901 00:41:42,190 --> 00:41:45,510 Mi ne volas negativaj nombroj, do ni faru gxin sensigna. 902 00:41:45,510 --> 00:41:48,660 Nula estas ne rilatajn tie ĉar Mi volas ĉiu uzanto 903 00:41:48,660 --> 00:41:49,640 havas unikan numeron. 904 00:41:49,640 --> 00:41:50,830 Mi ne volas esti nula. 905 00:41:50,830 --> 00:41:52,330 >> Sed tio estas interesa. 906 00:41:52,330 --> 00:41:57,780 Mi povas specifi ke ID estas ĉu la primara ŝlosilo de ĉi datumbazo, aŭ ĝi estas 907 00:41:57,780 --> 00:42:00,620 unika, aŭ ĝi estas indeksita, aŭ plena teksto. 908 00:42:00,620 --> 00:42:05,630 Do por hodiaŭaj celoj, longa historio mallonga, PRIMARY signifas, ke cxi tio 909 00:42:05,630 --> 00:42:10,570 esti ambaŭ koncepte kaj teknike la kampo kiun ni uzas por unike 910 00:42:10,570 --> 00:42:12,140 identigi uzantoj. 911 00:42:12,140 --> 00:42:16,140 >> Do kiam ni rigardas supren uzantoj, tiu estas speco de promeso rigardi ilin plejparte per 912 00:42:16,140 --> 00:42:17,370 ke unika ensalutilo. 913 00:42:17,370 --> 00:42:21,930 Kaj la datumbazo estos certigi ke se vi havi uzanto numero 3, vi ne povas 914 00:42:21,930 --> 00:42:25,400 fizike enŝovu alia uzanto kun tiu sama numero 3. 915 00:42:25,400 --> 00:42:28,380 La datumaron, tio simple rifuzi savi viajn ŝanĝojn. 916 00:42:28,380 --> 00:42:32,310 Kio estas bona afero, ĉar vi povas protekti vin de vi mem. mem 917 00:42:32,310 --> 00:42:34,270 >> Alternative, por uzantnomon. 918 00:42:34,270 --> 00:42:37,670 Do la dua vico, recall, estas la uzantnomo kampo. 919 00:42:37,670 --> 00:42:41,860 Do la dua vico ĉi tie estas salutnomo, kiel ni faris en la fora lasis tie. 920 00:42:41,860 --> 00:42:43,940 >> Do, kion alian povus mi volas specifi? 921 00:42:43,940 --> 00:42:47,840 Mi ne permesis, laŭ SQL, specifi du primaraj ŝlosiloj. 922 00:42:47,840 --> 00:42:50,750 vi povas specifi aron klavo kie vi rigardi ambaŭ kampoj, sed ili ne povas 923 00:42:50,750 --> 00:42:52,260 individue esti primara ŝlosilojn. 924 00:42:52,260 --> 00:42:54,750 Do tio estas ekster la demando. 925 00:42:54,750 --> 00:42:56,040 Do kio povus mi volas elekti? 926 00:42:56,040 --> 00:42:59,710 >> Nu, unika estas similaj en Spirito primara ŝlosilo kie vi indiki tiun 927 00:42:59,710 --> 00:43:03,570 kampo estos unika, sed ĝi estas ne tuj estos la unu 928 00:43:03,570 --> 00:43:04,410 Mi uzas la tutan tempon. 929 00:43:04,410 --> 00:43:08,450 Kaj ni ne tuj uzos ĉi tiu tuta la tempo, por kio denove? 930 00:43:08,450 --> 00:43:10,490 Ĝi estas pli malrapida potenciale se ĝi estas longa uzantnomon. 931 00:43:10,490 --> 00:43:11,740 Estas nur malŝparo de tempo. 932 00:43:11,740 --> 00:43:16,140 >> INDEX, dume, precizigas, ke ĝi estas ne tuj estos sola, sed mi ŝatus 933 00:43:16,140 --> 00:43:19,470 vi labori via magio sub la kapuĉo por fari ĝin pli rapide por mi 934 00:43:19,470 --> 00:43:21,420 serĉu sur tiu kampo. 935 00:43:21,420 --> 00:43:23,320 Do tio probable ne estas grava ĉi tie. 936 00:43:23,320 --> 00:43:26,500 Por salutnomon, mi argumentas ke UNIQUE Estas bona respondo. 937 00:43:26,500 --> 00:43:31,200 Sed supozu ke ni faris uzantoj pli interesa ol nur salutnomoj, 938 00:43:31,200 --> 00:43:32,430 hashes kaj ID nombroj. 939 00:43:32,430 --> 00:43:33,860 Kio, se ni donis al la homo plenajn nomojn? 940 00:43:33,860 --> 00:43:37,700 Kio, se ni donis ilin adresoj kaj aliajn datumojn pri ili? 941 00:43:37,700 --> 00:43:43,360 >> Nu, se vi specifas ke kolumnon en datumbazo estas indeksita, tio signifas ke 942 00:43:43,360 --> 00:43:47,730 MySQL aŭ Oracle, aŭ kion ajn datumbazo vi uzas, devus labori lia magio 943 00:43:47,730 --> 00:43:51,300 kaj uzas ia imago datumoj strukturon kiel arbon, aux trie, aŭ 944 00:43:51,300 --> 00:43:55,940 hash tablo, aŭ ion por garantii ke kiam vi serĉu por datumoj uzante 945 00:43:55,940 --> 00:43:58,150 selektu je tiu aparta kampo - 946 00:43:58,150 --> 00:44:01,310 kiel montras min al ĉiuj ke loĝas en Oxford Street. 947 00:44:01,310 --> 00:44:02,540 Al demando tiel. 948 00:44:02,540 --> 00:44:06,250 Se vi specifitaj anticipe ke vi volas indekso sur tiu kampo, la 949 00:44:06,250 --> 00:44:09,050 serĉoj estos multe, multe pli rapida. 950 00:44:09,050 --> 00:44:12,090 >> Se vi ne specifas indekso, la plej bona vi povas fari estas lineara serĉo, se 951 00:44:12,090 --> 00:44:13,030 ĝi ne estas ordigitaj. 952 00:44:13,030 --> 00:44:16,220 Sed se vi specifas INDEX, la inteligenta personojn kiuj faris la datumbazon - 953 00:44:16,220 --> 00:44:19,340 homoj kiel vi kiu nun scias arboj kaj peras kaj hash tabloj - 954 00:44:19,340 --> 00:44:23,220 estos aŭtomate konstrui tian datumoj strukturo en RAM por certigi ke 955 00:44:23,220 --> 00:44:26,050 tiuj serĉoj estas multe pli rapida. 956 00:44:26,050 --> 00:44:29,660 >> Plena teksto dume estas similaj en spirito, sed permesas vin fari wildcard 957 00:44:29,660 --> 00:44:35,480 serchoj, kiel montras al mi ĉiuj, ke loĝas ĉe stratoj kiuj komencas kun la 958 00:44:35,480 --> 00:44:36,960 letero ho pro ajna kialo. 959 00:44:36,960 --> 00:44:38,850 Vi povas fari wildcard serĉoj kiel tio. 960 00:44:38,850 --> 00:44:45,880 Aŭ, pli konvinka aĵojn kiel spektaklo mi ĉiuj, kiuj havas la vorton - 961 00:44:45,880 --> 00:44:49,400 montri al mi ĉiuj, kies nomo komenciĝas kun aparta litero. 962 00:44:49,400 --> 00:44:51,880 Vi povas serĉi ŝlosilvortoj en tiu vojo. 963 00:44:51,880 --> 00:44:52,630 Ĉiuj pravas. 964 00:44:52,630 --> 00:44:55,760 >> Do, dezajno ŝancojn tie potenciale. 965 00:44:55,760 --> 00:44:57,740 Estas aliaj, ke mi skuos mian manojn. 966 00:44:57,740 --> 00:45:00,530 Rezultas, ke vi povas havi malsamaj stokado motoroj. 967 00:45:00,530 --> 00:45:04,390 Kaj tio estas pli arcane ol ni bezonas certe por problemo starigis sep. 968 00:45:04,390 --> 00:45:06,920 Defaŭlte, vi uloj abonas iu nomita InnoDB. 969 00:45:06,920 --> 00:45:10,910 Vi vidos mencion de ĉi ie en phpMyAdmin interfaco plej verŝajna. 970 00:45:10,910 --> 00:45:14,130 Sed sciu ke estas aliaj dezajno decidoj kiuj estas de potencialo 971 00:45:14,130 --> 00:45:18,030 intereso venis fino projektojn se vi faru ion ttt-bazita. 972 00:45:18,030 --> 00:45:19,330 >> Sed ni faros tiun. 973 00:45:19,330 --> 00:45:23,130 Ni iru antaŭen kaj metis tion en la ekrano kiel teaser por historio 974 00:45:23,130 --> 00:45:26,330 engaĝante vi, kunloĝanto, kaj glason da lakto. 975 00:45:26,330 --> 00:45:28,240 Ni prenu du minuto aŭ tiom rompos tie. 976 00:45:28,240 --> 00:45:31,060 Kaj se vi povas meti ĉirkaŭ, ni venis dorso, aspektas iom pli ĉe SQL, kaj 977 00:45:31,060 --> 00:45:35,160 do iom de JavaScript kun p-aro ok en menso. 978 00:45:35,160 --> 00:45:36,120 >> Ĉiuj pravas. 979 00:45:36,120 --> 00:45:40,420 Do, ni ekiru pensante pri angulo kazo kiu povas tre facile ekesti 980 00:45:40,420 --> 00:45:44,240 en la kunteksto de uzanta datumbazon, aŭ sincere, eĉ uzante reala mondo aferoj 981 00:45:44,240 --> 00:45:46,280 kiel ATMs akiri monon. 982 00:45:46,280 --> 00:45:47,640 Do jen fridujo. 983 00:45:47,640 --> 00:45:50,040 Supozu ke vi havas unu tro en via dormejo aux via domo. 984 00:45:50,040 --> 00:45:54,990 Kaj vi havas unu kunloĝanto, kaj ili ambaux vi vere ŝatas lakto ekz. 985 00:45:54,990 --> 00:45:57,210 >> Do vi venu hejmen el klaso unu tago. 986 00:45:57,210 --> 00:45:58,490 Li aŭ ŝi estas ankoraŭ ne revenis. 987 00:45:58,490 --> 00:45:59,180 Vi malfermas la fridujon. 988 00:45:59,180 --> 00:46:00,870 Vi vere volas grandan glason da lakto. 989 00:46:00,870 --> 00:46:01,820 Mankas lakton. 990 00:46:01,820 --> 00:46:02,920 Do, kion vi faras? 991 00:46:02,920 --> 00:46:03,840 Vi fermas la fridujo. 992 00:46:03,840 --> 00:46:04,670 Vi kaptu vian ŝlosilojn. 993 00:46:04,670 --> 00:46:05,930 Vi iru sur la placo. 994 00:46:05,930 --> 00:46:09,240 Kaj vi ricevas en linio je CVS je tiuj mem checkout aĵoj, kiuj ĉiam 995 00:46:09,240 --> 00:46:11,180 preni pli longa ol reale havanta kasistoj. 996 00:46:11,180 --> 00:46:11,820 Cxiuokaze. 997 00:46:11,820 --> 00:46:15,490 >> Tial do, dume, dot dot dot, via kunloĝanto venas hejmen kaj li aŭ ŝi 998 00:46:15,490 --> 00:46:17,440 simile havas hankering por iu lakto. 999 00:46:17,440 --> 00:46:20,380 Do li aŭ ŝi malfermas la fridujon, aspektas interne, kaj ho, malbenita. 1000 00:46:20,380 --> 00:46:21,160 Neniu lakto. 1001 00:46:21,160 --> 00:46:24,750 Do li aŭ ŝi estras eksteren, okazas iri al la aliaj CVS, kiu estis nur 1002 00:46:24,750 --> 00:46:27,900 bloki for por iu kialo, kaj li aŭ ŝi metas en linion por aĉeti lakton. 1003 00:46:27,900 --> 00:46:30,480 >> Dume, vi venis hejmen, li aŭ ŝi venas hejmen, kaj kion faras 1004 00:46:30,480 --> 00:46:31,980 vi finfine havas? 1005 00:46:31,980 --> 00:46:33,080 Duoble da lakto. 1006 00:46:33,080 --> 00:46:34,620 Sed vi ne vere ŝatis lakto kiu multe. 1007 00:46:34,620 --> 00:46:37,300 Do nun vi havas tiom da lakto, ke nun unu el ili estas ĝuste tuj iros nematurajn 1008 00:46:37,300 --> 00:46:37,820 eventuale. 1009 00:46:37,820 --> 00:46:39,370 Do tiu estas vere malbona problemo. 1010 00:46:39,370 --> 00:46:39,900 Ĝuste? 1011 00:46:39,900 --> 00:46:41,990 >> Do, kio okazis? 1012 00:46:41,990 --> 00:46:44,810 Do fundamente, tiu estas speco de ridindan ekzemplon. 1013 00:46:44,810 --> 00:46:48,580 Sed sub la kapuĉo, kion ni jam havis okazi tie estas ambaŭ de vi kontrolis 1014 00:46:48,580 --> 00:46:52,390 la stato de iu peco de memoro, la fridujon. 1015 00:46:52,390 --> 00:46:54,420 Ambaŭ el vi kontrolis la staton de iu variablo. 1016 00:46:54,420 --> 00:46:57,360 Vi ambaŭ tiris konkludon ke vi tiam agis plu. 1017 00:46:57,360 --> 00:47:01,420 Sed bedaŭrinde, dum via kunloĝanto estis en la vendejo, la stato de tiu 1018 00:47:01,420 --> 00:47:05,670 variablo ŝanĝis, li aŭ ŝi revenis kaj nun volas ŝanĝi la staton, sed 1019 00:47:05,670 --> 00:47:07,480 ĝi estas jam ŝanĝiĝis lin aŭ ŝin. 1020 00:47:07,480 --> 00:47:11,120 Kaj kompreneble, li aŭ ŝi ne havus irinta al la vendejo, se oni sciis 1021 00:47:11,120 --> 00:47:13,010 ke vi estis jam survoje. 1022 00:47:13,010 --> 00:47:16,430 >> Do, en la reala mondo, kiamaniere vi povis eviti ĉi tiun problemon, supozante ke vi havas 1023 00:47:16,430 --> 00:47:18,940 a fridujo, vi havas kunloĝanto, kaj vi efektive ŝatas lakto? 1024 00:47:18,940 --> 00:47:19,760 >> Spektantaro: Komunikante. 1025 00:47:19,760 --> 00:47:20,580 >> DAVID Malan: Komunikante. 1026 00:47:20,580 --> 00:47:21,160 OK. 1027 00:47:21,160 --> 00:47:22,500 Sed kiel povus vin komuniki? 1028 00:47:22,500 --> 00:47:23,990 >> Spektantaro: Lasu noton. 1029 00:47:23,990 --> 00:47:25,480 >> DAVID Malan: Lasu noto, ĉu ne? 1030 00:47:25,480 --> 00:47:28,025 Ĉiam lasi noton, por ŝatantoj de la spektaklo. 1031 00:47:28,025 --> 00:47:31,580 Enorde, do ĉiam lasas noton, aŭ meti vere ŝatas pendseruro aŭ io 1032 00:47:31,580 --> 00:47:35,440 sur la fridujo, kiu tenas vian kunloĝanto el inspekti la staton de 1033 00:47:35,440 --> 00:47:36,540 ke variablo. 1034 00:47:36,540 --> 00:47:40,800 >> Nu, kial povus esti ĉi tio germane al problemo starigis sep, aŭ al ATMs. 1035 00:47:40,800 --> 00:47:46,780 Nu, imagu mondon en ATM kie vi eble povos iri supren al ATM 1036 00:47:46,780 --> 00:47:48,920 maŝino tie, kaj alia ATM tie. 1037 00:47:48,920 --> 00:47:50,680 Kaj tio okazas tre ofte. 1038 00:47:50,680 --> 00:47:54,150 Kaj supozu vi havis du ATM kartoj, kiu estas eble akiri. 1039 00:47:54,150 --> 00:47:57,420 Kaj vi ensalutas en ambaŭ maŝinoj efektive samtempe, mi esperas 1040 00:47:57,420 --> 00:47:58,660 dum nenies rigardante. 1041 00:47:58,660 --> 00:48:01,260 Kaj tiam vi entajpu vian PIN proksimume samtempe. 1042 00:48:01,260 --> 00:48:06,280 Kaj tiam vi faras bilancon informpeto por vidi kiom da mono vi havas. 1043 00:48:06,280 --> 00:48:08,920 Kaj ni diras, ke vi havas $ 100 forlasis en vian konton. 1044 00:48:08,920 --> 00:48:13,310 Do esence samtempe, vi diris unu, nulo, nulo, eniru. 1045 00:48:13,310 --> 00:48:16,000 Kaj vi espereble reiri iom da mono. 1046 00:48:16,000 --> 00:48:18,440 >> Sed kiom da mono povus vin reiri? 1047 00:48:18,440 --> 00:48:21,710 Nun komputiloj ĉe la fino de la tago, precipe se oni parolas al 1048 00:48:21,710 --> 00:48:27,360 serviloj, ne nepre faru tion en la ordo kiu estas atendita. 1049 00:48:27,360 --> 00:48:30,860 >> Do supozu kio okazas, pro kion ajn reto rapido demandojn tie 1050 00:48:30,860 --> 00:48:34,530 estas, aŭ CPU aferoj ekzistas, aŭ io simila al tiu, supozu ke la 1051 00:48:34,530 --> 00:48:38,530 unua ATM kontrolas vian ekvilibron kaj iru, ho, tiu persono havas $ 100. 1052 00:48:38,530 --> 00:48:41,840 Sed tiam gets distrata pro eble backup okazas kaj tial ĝi estas 1053 00:48:41,840 --> 00:48:42,500 prokrasti. 1054 00:48:42,500 --> 00:48:45,080 Aŭ eble dum kontrolanta, la reto ligo havas iom pli malrapida pro 1055 00:48:45,080 --> 00:48:45,910 tio simple okazas. 1056 00:48:45,910 --> 00:48:47,100 Ili estas fizikaj aparatoj. 1057 00:48:47,100 --> 00:48:49,330 Do dume, la dua ATM estas petante la saman demandon. 1058 00:48:49,330 --> 00:48:53,030 Kiom da mono Davido havas? $ 100 estas la respondo. 1059 00:48:53,030 --> 00:48:58,930 Sed ĉar la unua ATM havas ankoraux ne sendis la mesaĝon subtrahi $ 100, ambaŭ 1060 00:48:58,930 --> 00:49:03,000 ATMs ili inspektis la datenbanko volbo, vidante tie estas $ 100 tie, kaj nun 1061 00:49:03,000 --> 00:49:07,160 ambaŭ maŝinoj potenciale estas irante kracxi el respondon. 1062 00:49:07,160 --> 00:49:12,240 >> Nun, ĉi tiu estas granda por vi iusence se tio, kion la bordo faras finfine 1063 00:49:12,240 --> 00:49:17,200 estas ŝanĝi la sumon al minus 100 por opcio la variablo egalas al viaj 1064 00:49:17,200 --> 00:49:21,570 bankokonto egalas al 0, kontraste por fari minus 100. 1065 00:49:21,570 --> 00:49:24,410 Nun en la plej malbona kazo por la bankon - 1066 00:49:24,410 --> 00:49:27,470 aŭ en la plej bona por la banko, dume, Ili donos al vi $ 200, kaj 1067 00:49:27,470 --> 00:49:31,690 via banka konto nun montras negativaj $ 100, kiun vere ne 1068 00:49:31,690 --> 00:49:32,950 profitigi al vi. 1069 00:49:32,950 --> 00:49:36,500 Sed la punkto estas, ke tiu raso kondiĉo por du kunloĝantoj atingi 1070 00:49:36,500 --> 00:49:40,660 lakto, aŭ por du ATMs provante atingi kontanta mono kaj ŝanĝi la staton de volbo 1071 00:49:40,660 --> 00:49:44,510 samtempe ekzistas neniu tempo vi havas datumbazon. 1072 00:49:44,510 --> 00:49:48,290 >> Nun en problemo starigis sep, tiu temo ekestas en la senco ke se oni aĉetas 1073 00:49:48,290 --> 00:49:52,110 parton de Facebook stock, poste pro Ekzemple vi aĉetos duan parton de 1074 00:49:52,110 --> 00:49:55,160 Facebook stock, vi devas fari decidon kiel la programisto. 1075 00:49:55,160 --> 00:49:58,710 Por decidi kiel ĝisdatigi la datenbazo, malakordo vi tuj 1076 00:49:58,710 --> 00:50:02,250 havi unu vico por tiu stoko, kaj ĉi estas unu vojo por apliki ĝin. 1077 00:50:02,250 --> 00:50:06,640 Kaj vi tuj havos unu parton de FB, kiu estas ilia trunko paperbenda simbolo 1078 00:50:06,640 --> 00:50:10,120 por ĉi salutnomon, aŭ tiun uzanton IRU, la sola ensalutilo. 1079 00:50:10,120 --> 00:50:12,340 >> Sed la sama rakonto povas okazi tie. 1080 00:50:12,340 --> 00:50:15,800 Se vi faras unuarangan en SQL, kiel vi vidos en problemo starigis sep kiam vi vidos, 1081 00:50:15,800 --> 00:50:18,460 oh, Davido havas unu parton de Facebook stoko. 1082 00:50:18,460 --> 00:50:23,240 Permesu al mi ŝanĝi ĉi tion al du agoj, ĉar li volas aĉeti 1083 00:50:23,240 --> 00:50:24,120 duan parton. 1084 00:50:24,120 --> 00:50:27,860 Sed supozu Davido efektive havis du retumilo fenestroj malfermu, aŭ supozu ke 1085 00:50:27,860 --> 00:50:32,150 ĝi estas komuna konto kun du edzinoj, kaj ambaux provas realigi 1086 00:50:32,150 --> 00:50:36,770 la sama operacio, tie, ankaŭ, la potencialo ekzistas por decido esti 1087 00:50:36,770 --> 00:50:39,670 faris el la antaŭa stato de la mondo - 1088 00:50:39,670 --> 00:50:41,290 la konto havas unu porcion - 1089 00:50:41,290 --> 00:50:45,630 kaj ambaŭ homoj, aŭ ambaŭ serviloj, nun provu diri pliigo gxin al du agojn. 1090 00:50:45,630 --> 00:50:49,020 Sed en tiu kazo, vi povus esti akuzita al mi monon por ambaŭ agoj, sed 1091 00:50:49,020 --> 00:50:50,830 incremented ĝuste tiu tempo. 1092 00:50:50,830 --> 00:50:54,730 >> Do mallonge, la fundamenta problemo ĉi tie, kiel kun la ŝerco pri lasante 1093 00:50:54,730 --> 00:50:58,750 rimarku, aŭ meti pendseruron sur ĝi, estas se du homoj, aux du fadenojn - 1094 00:50:58,750 --> 00:50:59,930 pensas reen al nulo - 1095 00:50:59,930 --> 00:51:03,220 povas inspekti la staton de iu variablo kaj tiam provu ŝanĝi tiun variablon, 1096 00:51:03,220 --> 00:51:07,950 sed tiuj du aferoj ne okazas en la sama tempo sed povas akiri interrompita 1097 00:51:07,950 --> 00:51:11,500 per aliaj aferoj okazas, datumoj povas enir tre stranga stato. 1098 00:51:11,500 --> 00:51:15,450 Kaj vi povas profitigi aŭ vi povas suferi en la senco de la mono ekzemplo. 1099 00:51:15,450 --> 00:51:18,110 >> Do problemo starigis sep, ni donos al vi ĉi tiu linio de kodo, kiu longe 1100 00:51:18,110 --> 00:51:21,000 rakonto mallongaj, solvu ĉi problemo en MySQL. 1101 00:51:21,000 --> 00:51:24,950 Tiu tre longa instrukcion kiu ne eĉ persvadis sur unu linio en la 1102 00:51:24,950 --> 00:51:30,370 ekrano tie certigas, ke via operacio estas kio nomiĝas atoma. 1103 00:51:30,370 --> 00:51:33,720 Ĉio okazas samtempe, aŭ tio ne okazas je ĉiuj. 1104 00:51:33,720 --> 00:51:37,530 Tiu tre longa frazo neniom get interrompis parte. 1105 00:51:37,530 --> 00:51:39,840 >> Kaj kion faras estas laŭvorte kio diras. 1106 00:51:39,840 --> 00:51:44,200 Enmetu en iun tablon la sekvan tri kampoj tiuj specifaj valoroj, 1107 00:51:44,200 --> 00:51:47,280 sed sur duplikatajn klavo, ne fari insert. 1108 00:51:47,280 --> 00:51:48,280 Ĉu ĝisdatigon. 1109 00:51:48,280 --> 00:51:52,450 Do tiu estas kiel faras unuarangan kaj INSERT por tiel diri, je la sama tempo. 1110 00:51:52,450 --> 00:51:55,150 Kaj kio estas la ŝlosilo kiu probable priparolata ĉi tie? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Rezultas, kaj vi vidos tion en problemo starigis sep la specifon, ĉar 1113 00:52:01,380 --> 00:52:06,040 ni deklaris tie esti unika ŝlosilo sur tiu aparta tablo tiaj ke 1114 00:52:06,040 --> 00:52:08,480 Vi ne povas havi multoblajn vicoj cxar la sama uzanto kun la 1115 00:52:08,480 --> 00:52:10,150 sama denaro stock simbolo - 1116 00:52:10,150 --> 00:52:13,780 en ĉi tiu ekzemplo tie ĉi, DVN.V estas stulta denaro stock ke ni 1117 00:52:13,780 --> 00:52:14,980 referi al la specifon. 1118 00:52:14,980 --> 00:52:17,860 Ĉar ni deklaras ĝin esti unika, kion tio signifas ke se vi 1119 00:52:17,860 --> 00:52:23,580 provi enmeti duplikaton vico, vi estas anstataŭ tuj ĝisdatigi ĝin sen 1120 00:52:23,580 --> 00:52:27,020 iu ajn alia havas ŝancon por ŝanĝi la stato de la mondo ankaŭ ne. 1121 00:52:27,020 --> 00:52:29,400 Do mallonge, certigu aferoj estas atoma. 1122 00:52:29,400 --> 00:52:32,530 >> Pli ĝenerale, tamen, datumbazoj kiel MySQL - 1123 00:52:32,530 --> 00:52:35,460 kaj vi ne bezonas tiun karakterizaĵon por p-starigis sep, sed konservi ĝin en menso por 1124 00:52:35,460 --> 00:52:36,200 la estonteco - 1125 00:52:36,200 --> 00:52:38,870 apogi kio nomiĝas transakcioj, kie vi povas diri 1126 00:52:38,870 --> 00:52:40,990 START transakcio laŭvorte. 1127 00:52:40,990 --> 00:52:43,270 Vi povas poste ekzekuti du SQL deklaroj. 1128 00:52:43,270 --> 00:52:45,710 Kaj SQL aserto, kiel vi vidos en p-starigis sep, aspektas iom 1129 00:52:45,710 --> 00:52:46,750 iu kiel ĉi tio. 1130 00:52:46,750 --> 00:52:48,820 Ĝisdatigi tablo nomata konton. 1131 00:52:48,820 --> 00:52:52,550 Ŝanĝu la ekvilibron kolumno egalas kion ajn la ekvilibro kolumnon aktuale 1132 00:52:52,550 --> 00:52:57,280 Estas minus 1000, kie la nombro, la konto numeron, kiel la uzantidentigilon, 1133 00:52:57,280 --> 00:53:00,830 egalas 2, kaj tiam ĝisdatigi konto dot dot dot. 1134 00:53:00,830 --> 00:53:04,350 >> Do en laiko terminoj, kion tiuj du pridemandojn ŝajnas esti farante en la 1135 00:53:04,350 --> 00:53:05,840 reala mondo senco de la banko? 1136 00:53:05,840 --> 00:53:07,440 >> Spektantaro: Kopiante al ŝparojn. 1137 00:53:07,440 --> 00:53:08,020 >> DAVID Malan: Ekzakte. 1138 00:53:08,020 --> 00:53:10,470 Kopiante fondusoj de unu rakontas al la alia. 1139 00:53:10,470 --> 00:53:14,400 Kaj jen estas alia ekzemplo kie vi vere volas tiuj du aferoj okazis 1140 00:53:14,400 --> 00:53:15,570 aŭ ne okazi. 1141 00:53:15,570 --> 00:53:18,880 Vi ne volas ion por meti en la mezo de ili, kaj potenciale salato supren 1142 00:53:18,880 --> 00:53:22,220 la matematiko, aŭ salato ĝis kiom mono vi havas, aux kiom da 1143 00:53:22,220 --> 00:53:23,170 monon la datenbanko havas. 1144 00:53:23,170 --> 00:53:26,890 Do kio estas vere bela pri transakcioj en MySQL estas kiu, kaj 1145 00:53:26,890 --> 00:53:30,160 Datumbazoj pli ĝenerale, estas ke ili kaj inteligentaj homoj, kiuj jam implementado 1146 00:53:30,160 --> 00:53:33,670 tiuj karakterizaĵoj elkompreni kiel fari certa, ke ambaŭ el tiuj aĵoj okazas 1147 00:53:33,670 --> 00:53:35,120 aŭ tute ne. 1148 00:53:35,120 --> 00:53:38,580 >> Kaj se vi estas vere aspiras fari paĝaro, kiu estas uzata de la homo sur 1149 00:53:38,580 --> 00:53:41,490 kampuso, homoj en la reala mondo, farante io en la komenco senco, 1150 00:53:41,490 --> 00:53:43,300 jen estas la specoj de dezajno decidoj kiuj 1151 00:53:43,300 --> 00:53:45,020 fariĝi iam tiom grava. 1152 00:53:45,020 --> 00:53:48,240 Alie, oni komencas perdi datumojn, perdi uzantoj, aŭ en la plej malbona kazo, kiel 1153 00:53:48,240 --> 00:53:51,800 ni vidis tie, potenciale perdi monon. 1154 00:53:51,800 --> 00:53:56,180 Do denove, pli pri tio en problemo starigis sep, tiel kiel eble por kelkaj el 1155 00:53:56,180 --> 00:53:57,530 vi en fino projektoj. 1156 00:53:57,530 --> 00:54:01,870 >> Do ni ŝanĝu tion bildon ni havis antaŭ momento ĝuste en pli vojo. 1157 00:54:01,870 --> 00:54:04,070 Do mi efektive vidi se mi povas - 1158 00:54:04,070 --> 00:54:06,030 nope, kiuj estas for. 1159 00:54:06,030 --> 00:54:06,690 Tie ĝi estas. 1160 00:54:06,690 --> 00:54:09,020 >> Do tiu estas kie ni lasis lasta tempo. 1161 00:54:09,020 --> 00:54:12,390 Kaj ĝi rezultas ni tuj rulos alia afero en la miksaĵo tie - 1162 00:54:12,390 --> 00:54:14,510 lingvo nomita JavaScript. 1163 00:54:14,510 --> 00:54:18,060 Do JavaScript efektive ĝustigas en tiu peco - 1164 00:54:18,060 --> 00:54:22,086 kaj mi ne tute lasi suficxe ĉambron, tial cxi tiu ne estas jam por grimpi. 1165 00:54:22,086 --> 00:54:23,900 OK, tiu estas vere patosaj. 1166 00:54:23,900 --> 00:54:27,075 OK, do tio estas JavaScript. 1167 00:54:27,075 --> 00:54:27,340 Ĉio bone. 1168 00:54:27,340 --> 00:54:28,760 Mi vere fari ĝin disservice. 1169 00:54:28,760 --> 00:54:29,390 Ĉio bone. 1170 00:54:29,390 --> 00:54:34,790 >> Do JavaScript estas alia programado lingvo, kaj nia lasta, Se tio helpas 1171 00:54:34,790 --> 00:54:37,770 trankviligi, ke tie ne estas multe pli de la fajro hidrantes tie. 1172 00:54:37,770 --> 00:54:41,100 Do JavaScript estas ankaŭ interpretitaj lingvo, kiu signifas ke vi ne faru 1173 00:54:41,100 --> 00:54:42,670 kompili ĝin en nuloj kaj. 1174 00:54:42,670 --> 00:54:43,690 Vi nur ruli ĝin. 1175 00:54:43,690 --> 00:54:47,680 Sed kio estas fundamente malsama kun Javascript kutime estas, ke vi 1176 00:54:47,680 --> 00:54:49,815 ne ruli ĝin en via TTT-servilo. 1177 00:54:49,815 --> 00:54:52,570 Ĝi ne get kuri en la aparato per si mem. 1178 00:54:52,570 --> 00:54:57,490 Prefere ĝi gets elŝutis de uzanto per HTTP-en iliajn retumilo - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, kio ajn - 1180 00:55:00,260 --> 00:55:03,860 kaj gxi estas la retumilo kiu ekzekutas ĉi aparta programlingvo. 1181 00:55:03,860 --> 00:55:08,000 >> Do por esti klara, PHP tiele nun estis ekzekutitaj aŭ ĉe la komandlinio en 1182 00:55:08,000 --> 00:55:11,290 niajn nigrajn kaj blankajn fenestro, sur servilo kiel la aparato, komputilo 1183 00:55:11,290 --> 00:55:14,490 ŝatas la aparaton, aŭ jam pasis ekzekutitaj de reta servilo 1184 00:55:14,490 --> 00:55:15,860 kurante sur komputilo. 1185 00:55:15,860 --> 00:55:20,490 Sed la temo estas, ke PHP tiel malproksime estis ekzekutita servilo-flanko, tiel 1186 00:55:20,490 --> 00:55:24,820 la uzanto kaj la uzanto retumilo neniam vidas linion de PHP-kodo. 1187 00:55:24,820 --> 00:55:28,530 >> Fakte, se vi iam malfermi retumilo por via retejo aŭ alian kaj vi 1188 00:55:28,530 --> 00:55:32,400 reale vidi PHP kodon en via fenestro, iu ŝraŭbitaj supren. 1189 00:55:32,400 --> 00:55:34,950 Ĉar ĝi ne intencis esti sendis al retumilo rekte. 1190 00:55:34,950 --> 00:55:38,150 Oni supozis esti ekzekutita kaj turnis en iu kiel HTML. 1191 00:55:38,150 --> 00:55:40,120 >> Sed JavaScript estas esence la malo. 1192 00:55:40,120 --> 00:55:44,350 Ĝi celas esti kuri tipe interne de uzanto browser window. 1193 00:55:44,350 --> 00:55:46,840 Kaj kion specoj de retejoj uzas Javascript tiam tiuj tagoj? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Kiel laŭvorte ĉiu populara retejo. 1196 00:55:52,180 --> 00:55:55,430 Ĉiu retejo ke vi uloj verŝajne uzu cxiutage uzi JavaScript por la 1197 00:55:55,430 --> 00:55:57,330 simpla kaj eĉ la sexy karakterizaĵoj. 1198 00:55:57,330 --> 00:55:59,800 >> Do io kiel Facebook Babili, se vi uzas tion. 1199 00:55:59,800 --> 00:56:01,040 How does ke reale funkcias? 1200 00:56:01,040 --> 00:56:05,090 Bone tiel malproksime, ĉiuj la aĵoj ni farita per HTML kaj PHP supozas ke 1201 00:56:05,090 --> 00:56:08,750 vi elsxiros URL, kaj vi batas Enter, kaj vi vidas kelkajn HTML-enhavon. 1202 00:56:08,750 --> 00:56:11,970 Kaj vi klaku la ligilon, kiu ŝanĝas la URL, ŝanĝas la paĝo, kaj lardas 1203 00:56:11,970 --> 00:56:12,740 iu nova enhavo. 1204 00:56:12,740 --> 00:56:16,340 Klaku alia URL aŭ prezenti formon, vi get whisked al alia paĝo kaj 1205 00:56:16,340 --> 00:56:17,420 vi vidas iun novan enhavon. 1206 00:56:17,420 --> 00:56:22,710 >> Sed uzante iun kiel Facebook Babilejo, aŭ Gchat, aŭ Google Maps, malofte 1207 00:56:22,710 --> 00:56:27,350 tio la tuta paĝo refresxigu tiaj ke vi vidas blankan ekranon momente kaj 1208 00:56:27,350 --> 00:56:28,470 tiam nova enhavo. 1209 00:56:28,470 --> 00:56:32,610 Prefere retpaĝojn hodiaŭ estas dinamike getting ĝisdatigita denove kaj 1210 00:56:32,610 --> 00:56:35,570 denove kaj denove ĉiu speco de malantaŭ la scenoj. 1211 00:56:35,570 --> 00:56:38,560 Kaj tio rezultas, ke kiam vi iras al iu kiel Facebook, aŭ Gchat, 1212 00:56:38,560 --> 00:56:43,050 aŭ Gmail, kaj la paĝo ĝisdatigojn aŭtomate sen reŝargi la 1213 00:56:43,050 --> 00:56:47,630 tutan ekranon, kio okazis estas ke Via retumilo faris ian sekrete 1214 00:56:47,630 --> 00:56:49,410 aldona HTTP petojn - 1215 00:56:49,410 --> 00:56:52,740 Ne por ĉiu la retpaĝojn, sed nur por iom pecoj de datumo, kiel la 1216 00:56:52,740 --> 00:56:55,740 momenteto mesaĝon ke via amiko ĵus sendis vin, aŭ statuson ĝisdatigo ke 1217 00:56:55,740 --> 00:56:58,210 iu ĵus sendis al vi, aux la tuit ke iu simple sendis. 1218 00:56:58,210 --> 00:57:02,120 Ĝi estas simple fari iom petoj datumoj, kaj tiam uzanta JavaScript, tio 1219 00:57:02,120 --> 00:57:06,370 programlingvo, por ŝanĝi kion La retpaĝo aspektas kiel sen la 1220 00:57:06,370 --> 00:57:09,860 servilo helpante, sen la servilo generante ke HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Do mallonge, JavaScript povas esti uzata tiam ne nur fetch novaj datumoj de 1222 00:57:13,820 --> 00:57:16,750 La servilo sen reŝargi tutan paĝo aŭ submitting formularon. 1223 00:57:16,750 --> 00:57:20,060 Ĝi povas ankaŭ esti uzata por ŝanĝo la tn DOM - 1224 00:57:20,060 --> 00:57:21,520 dokumento objekto modelo - 1225 00:57:21,520 --> 00:57:24,620 kio estas ĝuste la ornama metodo por dirante al la arbo de HTML 1226 00:57:24,620 --> 00:57:26,220 ke ni vidis la lasta tempo. 1227 00:57:26,220 --> 00:57:31,640 >> Do por trankviligi, JavaScript estas sintakse tiel simila al C tiel. 1228 00:57:31,640 --> 00:57:32,820 Ekzistas neniu ĉefa funkcio. 1229 00:57:32,820 --> 00:57:35,430 Vi nur komenci skribi la kodon kaj gxi estos get ekzekutitaj, aŭ 1230 00:57:35,430 --> 00:57:36,900 interpretita pli konvene. 1231 00:57:36,900 --> 00:57:38,660 Kondiĉoj aspektos kiel tiu. 1232 00:57:38,660 --> 00:57:41,230 Neniu malsama de C aŭ PHP por tiu afero. 1233 00:57:41,230 --> 00:57:43,890 Bulea esprimojn aux-ed kune similos ĉi. 1234 00:57:43,890 --> 00:57:45,590 Anded kune aspektas kiel ĉi tio. 1235 00:57:45,590 --> 00:57:47,750 >> Ŝaltiloj aspektos kiel ĉi tio. 1236 00:57:47,750 --> 00:57:49,440 Por masxojn aspektos kiel ĉi tio. 1237 00:57:49,440 --> 00:57:51,060 Dum masxojn aspektos kiel ĉi tio. 1238 00:57:51,060 --> 00:57:53,316 Ĉu dum masxojn aspektos kiel ĉi tio. 1239 00:57:53,316 --> 00:57:54,780 >> Tio estas nova. 1240 00:57:54,780 --> 00:57:58,753 Do JavaScript havas ne foreach konstrui per, sed ĉi konstruo 1241 00:57:58,753 --> 00:58:03,870 por variablo i en tabelo, kaj mi en ĉi tiu kazo iĝas indekso valoro. 1242 00:58:03,870 --> 00:58:06,880 Do estas iom malsama ol tiu foreach, kvankam novaj versioj de 1243 00:58:06,880 --> 00:58:10,280 Javascript estas venanta el la tuta tempo, tial eĉ tiujn lingvo trajtojn 1244 00:58:10,280 --> 00:58:10,880 evoluas. 1245 00:58:10,880 --> 00:58:16,920 >> Kaj kiel oni apartigas, JavaScript tiujn tagojn ankaŭ povas esti uzata en servanto nur kiel 1246 00:58:16,920 --> 00:58:19,920 PHP uzante kadro alvokis Node.js. 1247 00:58:19,920 --> 00:58:24,670 Unu el CS50 la TFS, Kevin, kiu gvidis seminario pri Node.js kiu estas havebla cxe 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 Do se vi estas scivolema, sciu ke vi povas uzi tiun sur la servilo flanko kiel 1250 00:58:28,830 --> 00:58:33,870 bone, sed tio estas sufiĉe freŝaj tendencon, sed potencan unu ĉe tio. 1251 00:58:33,870 --> 00:58:35,270 >> Tio estas iom malsamaj. 1252 00:58:35,270 --> 00:58:37,910 Tiu estas tabelo en JavaScript. 1253 00:58:37,910 --> 00:58:40,115 Kaj kio sxajnas al vi malsamajn kontre C aŭ PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Tie estas kelkaj rapidaj rakontojn Ni povas diri ĉi tie. 1256 00:58:47,420 --> 00:58:49,367 Kio mankas kontre PHP? 1257 00:58:49,367 --> 00:58:51,652 >> Spektantaro: [inaudibles]. 1258 00:58:51,652 --> 00:58:52,110 >> DAVID Malan: Jes? 1259 00:58:52,110 --> 00:58:53,322 Pardonu, diru denove? 1260 00:58:53,322 --> 00:58:54,740 >> Spektantaro: Ne deklarante la tipo de variablo. 1261 00:58:54,740 --> 00:58:56,390 >> DAVID Malan: Ni ne deklari la tipo de variablo. 1262 00:58:56,390 --> 00:58:59,630 Do vere tute kiel PHP, ni ne estas preciziganta la tipoj de tiu variablo. 1263 00:58:59,630 --> 00:59:02,670 Pli ĝuste, ni estas pli genéricamente dirante var por variablo. 1264 00:59:02,670 --> 00:59:06,690 Ni ne havas PHP la ĝeno de la dolaro-signo, kiu dum teda al 1265 00:59:06,690 --> 00:59:09,160 tipo, ne faru pli klara, ke io estas variablo. 1266 00:59:09,160 --> 00:59:11,830 Dum tie, ni estas speco de reen al C La alproksimiĝo por nur nomi a 1267 00:59:11,830 --> 00:59:14,500 variablo per la nomo ni volas doni al ĝi, kiel numeroj. 1268 00:59:14,500 --> 00:59:17,170 Kaj same kiel PHP, ni havi rektaj krampoj por la 1269 00:59:17,170 --> 00:59:19,170 valoroj ene ke tabelo. 1270 00:59:19,170 --> 00:59:22,490 >> Do variabloj en JavaScript ankaŭ povus aspekti kiel ĉi tio. 1271 00:59:22,490 --> 00:59:26,900 Rimarku tie ĉi estas linio nomita s, sed simile ni ne specifita 1272 00:59:26,900 --> 00:59:28,750 ke ĝi estas kordo. 1273 00:59:28,750 --> 00:59:33,160 Ĉi tie kvankam estas karakterizaĵo kiu faras ne ekzistas en precize la sama vojo en PHP, 1274 00:59:33,160 --> 00:59:34,460 sed iom simile. 1275 00:59:34,460 --> 00:59:36,530 Tiu estas objekto en JavaScript. 1276 00:59:36,530 --> 00:59:42,110 Kaj celoj estas speco de la Svisa Armeo Tranĉilo de datumstrukturo en kiu vi 1277 00:59:42,110 --> 00:59:43,900 povas uzi ilin por ajna nombro de aĵoj. 1278 00:59:43,900 --> 00:59:46,860 >> Jen, ekzemple, ni deklari variablon nomitan citaĵo. 1279 00:59:46,860 --> 00:59:49,110 La tipo de tiu variablo estas objekto. 1280 00:59:49,110 --> 00:59:53,550 Vi povas pensi pri tio kiel C struct kiu havas klavojn kaj valorojn. 1281 00:59:53,550 --> 00:59:55,250 Simbolo estas ŝlosilo. 1282 00:59:55,250 --> 00:59:57,350 FB estas valoro, ŝajne sako simbolo. 1283 00:59:57,350 --> 00:59:57,930 Komo. 1284 00:59:57,930 --> 01:00:02,180 Prezo estas alia tonalo, kaj ĝia valoro estas ŝajne flosanta punkto, aŭ 1285 01:00:02,180 --> 01:00:06,510 numeron pli ĝenerale en Javascript, el $ 49,26. 1286 01:00:06,510 --> 01:00:09,030 >> Do PHP ne havas - 1287 01:00:09,030 --> 01:00:12,980 ni ne vidis en PHP celoj tute kiel tiu, sed ni vidos analoga, 1288 01:00:12,980 --> 01:00:14,093 kio estis kion? 1289 01:00:14,093 --> 01:00:14,980 >> Spektantaro: [inaudibles]. 1290 01:00:14,980 --> 01:00:16,110 >> DAVID Malan: Asocia arrays. 1291 01:00:16,110 --> 01:00:19,990 Do dum PHP havas asociajn arrays kies sintakso estas iam iomete tiel 1292 01:00:19,990 --> 01:00:20,370 malsamaj - 1293 01:00:20,370 --> 01:00:21,780 ni vidis la kvadrataj krampoj. 1294 01:00:21,780 --> 01:00:23,860 Ni vidis la strangan sagoj simboloj. 1295 01:00:23,860 --> 01:00:27,330 Javascript havas celojn, sed tiu estas plejparte semantikaj diferenco kaj 1296 01:00:27,330 --> 01:00:29,260 malsamaj sinonimo por nun. 1297 01:00:29,260 --> 01:00:35,060 Tamen, kiel flanken, PHP ankaŭ havas objektoj en maniero, ke Javo kaj aliaj 1298 01:00:35,060 --> 01:00:37,810 lingvoj havas celojn en objekteman programadon. 1299 01:00:37,810 --> 01:00:40,440 Sed ni uzos tiujn nur por datumtipoj ĝis nun. 1300 01:00:40,440 --> 01:00:42,170 Celoj kaj asociaj tabeloj. 1301 01:00:42,170 --> 01:00:44,140 >> Tiu oni povus fari gxin iom pli klara. 1302 01:00:44,140 --> 01:00:45,890 Jen kial estas objekto utila. 1303 01:00:45,890 --> 01:00:48,760 Kiam vi volas deklari studento, kiel Zamyla, ni povas reale 1304 01:00:48,760 --> 01:00:52,630 encapsulan tiel paroli ene de tiu kontesti uzante krispa krampoj nur kiel 1305 01:00:52,630 --> 01:00:55,060 antaux tuta fasko da ŝlosiloj kaj valoroj en ĉi tie. 1306 01:00:55,060 --> 01:00:59,150 Ni havas IRU, domon, kaj nomon por Zamyla, sekvis per punktokomo kiel 1307 01:00:59,150 --> 01:01:00,690 kutima ĉe la fino. 1308 01:01:00,690 --> 01:01:04,840 >> Malsupren tie tro, jen iomete malsamaj, sed ankaŭ tre potenca 1309 01:01:04,840 --> 01:01:05,690 ĉi tiuj tagoj. 1310 01:01:05,690 --> 01:01:08,780 Jen tabelo, kaj mi scias, ke pro tie estas kvadrata krampo supren 1311 01:01:08,780 --> 01:01:11,090 supre kaj kvadrata krampo ĉe la malsupro. 1312 01:01:11,090 --> 01:01:16,050 Kaj tio estas tabelo de kio datumoj tajpi ŝajne en JavaScript? 1313 01:01:16,050 --> 01:01:21,260 Tiu estas tabelo de ĝi aspektas kiel tri celoj. 1314 01:01:21,260 --> 01:01:24,580 Kaj mi scias, ĝi estas objekto nur ĉar el la krispa krampoj. 1315 01:01:24,580 --> 01:01:28,760 Kaj rimarki ke estas malferma krispa krampoj, iuj aĵoj, proksime krispa streĉa, komo, 1316 01:01:28,760 --> 01:01:31,180 tiam iuj pli, komo, kaj tiam kelkaj pli. 1317 01:01:31,180 --> 01:01:33,800 Do jen tri argumentojn apartigita per du komojn. 1318 01:01:33,800 --> 01:01:36,810 >> Do tiu estas tabelo de tri celoj. 1319 01:01:36,810 --> 01:01:39,940 Kaj ĉiu el tiuj objektoj ŝajnas esti studento aŭ personaro membro de iu 1320 01:01:39,940 --> 01:01:42,370 varon, ĉiu kun ID, domo, kaj nomo. 1321 01:01:42,370 --> 01:01:45,060 Sed mi nomis ĉi ion vokis JSON - 1322 01:01:45,060 --> 01:01:47,450 Javascript Objekto Skribmaniero. 1323 01:01:47,450 --> 01:01:52,060 Kaj jen estas datuma formato kiu reale Estas do tre populara kaj en 1324 01:01:52,060 --> 01:01:55,100 modajn tiujn tagojn ke se vi skribos apliko, kiu uzas la Facebook 1325 01:01:55,100 --> 01:01:59,150 API, Twitter API, vere preskaŭ neniu API tie tiuj tagoj, 1326 01:01:59,150 --> 01:02:02,820 inkluzive de kelkaj de CS50 mem, la datumo vi reiros ne estas en 1327 01:02:02,820 --> 01:02:04,720 malnova lernejo CSV-formato. 1328 01:02:04,720 --> 01:02:06,780 >> Ĉar Memoru ke CSV is super simpla. 1329 01:02:06,780 --> 01:02:10,230 Ĝi estas nur kolumnoj disigitaj per komoj. 1330 01:02:10,230 --> 01:02:13,190 JSON datumoj donas al vi pli pridatumon. 1331 01:02:13,190 --> 01:02:17,800 Ĝi asocias ŝlosilon kun ĉiu valoro tuj oni ne devas nur supozi ke 1332 01:02:17,800 --> 01:02:22,460 la nula kolumno estas unu valoro, kolumno unu estas alia, kolumno du estas alia. 1333 01:02:22,460 --> 01:02:26,790 Ĉio en JSON objekto tie estas speco de mem-priskribante, ĉar ĉiu 1334 01:02:26,790 --> 01:02:30,940 unu el la nomoj en tiu dosiero havas laŭvorte enoficigi en fronto de ĝi kiel 1335 01:02:30,940 --> 01:02:32,510 quoted kordo. 1336 01:02:32,510 --> 01:02:34,950 >> Do ni rigardu pli kelkaj ekzemploj cxi tie. 1337 01:02:34,950 --> 01:02:36,800 Permesu al mi iri en la aparaton. 1338 01:02:36,800 --> 01:02:41,000 Kaj lasu al mi iri en nian vhost dosierujo en publiko. 1339 01:02:41,000 --> 01:02:45,590 Kaj lasu al mi iri en la Javascript dosierujo. 1340 01:02:45,590 --> 01:02:49,610 Kaj ni iru antaŭen kaj malfermu dom-0.html, kie DOM signifas nur 1341 01:02:49,610 --> 01:02:51,010 dokumento objekto modelo. 1342 01:02:51,010 --> 01:02:53,490 Ĝi estas la arbo uzatajxojn, por kio Mi referita al pli frua. 1343 01:02:53,490 --> 01:02:54,950 >> Kaj lasu min proponi la sekvan. 1344 01:02:54,950 --> 01:02:57,720 Jen retpaĝo kies korpo estas sufiĉe simpla. 1345 01:02:57,720 --> 01:03:00,170 Do ĉi tie ĉe la malsupro, Rimarku ke mi havas formon. 1346 01:03:00,170 --> 01:03:01,500 Ni jam vidis tiujn antaŭe. 1347 01:03:01,500 --> 01:03:07,600 Ĝi havas du eniroj, unu el kiuj havas ID de nomo, unu el kiuj havas tipon de 1348 01:03:07,600 --> 01:03:09,830 submetiĝi, kaj la unua onia tipo estas teksto. 1349 01:03:09,830 --> 01:03:11,900 Do tio reale sonas sufiĉe simpla. 1350 01:03:11,900 --> 01:03:13,090 >> Ni iru tien. 1351 01:03:13,090 --> 01:03:15,390 Ni iru returne al tiu paĝo ĉi tien. 1352 01:03:15,390 --> 01:03:21,030 Ni iru en localhost, kaj iru en nia JavaScript dosierujo, kaj ili iru al 1353 01:03:21,030 --> 01:03:24,640 dom-0, kaj ĉi tie ni havas ĉi tiun formon. 1354 01:03:24,640 --> 01:03:26,550 Do tio ŝajne ĉiuj ĉi paĝo does. 1355 01:03:26,550 --> 01:03:28,740 Ĝi havas nomon kampo kun a Submetu butonon. 1356 01:03:28,740 --> 01:03:30,340 Sed mi ne tuj uzos PHP-tie. 1357 01:03:30,340 --> 01:03:34,310 Mi tuj fari ĉion kliento flanko por tiel diri en JavaScript kiel sekvas. 1358 01:03:34,310 --> 01:03:39,100 >> Rimarku, ke mi ja donis la nomon kampo de tiu enigo unika 1359 01:03:39,100 --> 01:03:42,350 ensalutilo, kio efektive savu min iam en momento. 1360 01:03:42,350 --> 01:03:45,480 Kaj rimarki Mi enkondukis alian etikedo en la kapo de mia retpaĝo, la 1361 01:03:45,480 --> 01:03:46,565  etikedo. 1362 01:03:46,565 --> 01:03:50,120 >> Do estas en tiu senco ke JavaScript estas kliento-flanko programlingvo. 1363 01:03:50,120 --> 01:03:55,020 En ĉi tiu kazo, samkiel CSS, mi metis ĝin rekte interne de mia HTML. 1364 01:03:55,020 --> 01:03:58,810 Sed Notice Mi jam deklaris funkcio kiuj aspektas iom kiel PHP 1365 01:03:58,810 --> 01:04:01,530 sintakse, sed ĉi tiu estas efektive Javascript, ĉar denove, ĝi estas 1366 01:04:01,530 --> 01:04:03,920 flanko de la kliento en la foliumilo. 1367 01:04:03,920 --> 01:04:07,590 Kaj prenu diveno, kio estas tiu tuj do, eĉ se kelkaj el la sintakso 1368 01:04:07,590 --> 01:04:09,338 ĉi tie estas nova. 1369 01:04:09,338 --> 01:04:11,760 >> Spektantaro: Diru saluton al kiu ajn. 1370 01:04:11,760 --> 01:04:14,020 >> DAVID Malan: Ĝi estas dironta saluton al kiu ajn vizitas ĉi paĝo. 1371 01:04:14,020 --> 01:04:15,120 Do kiel? 1372 01:04:15,120 --> 01:04:18,070 >> Do rimarki, rezultas en JavaScript tie estas garde () funkcion. 1373 01:04:18,070 --> 01:04:22,840 Tio estas tre ian malĝojan funkcio kiu vere simple emas ĝeni uzantoj. 1374 01:04:22,840 --> 01:04:25,440 Ĝi ne estas tiu kiun vi devas vere uzos tipe, sed ĝi estas rapida kaj malpura 1375 01:04:25,440 --> 01:04:27,710 vojo de ia presado ion al grafika uzanto 1376 01:04:27,710 --> 01:04:29,180 interfaco, kiel navigilo. 1377 01:04:29,180 --> 01:04:31,400 Rimarku, ke mi hvas kordo en citiloj. 1378 01:04:31,400 --> 01:04:36,010 Rezultas, ke kontraste C, JavaScript povas reale havas vi uzas sola 1379 01:04:36,010 --> 01:04:38,730 citajxoj, kaj sincere estas nur speco de la stila konvencio inter 1380 01:04:38,730 --> 01:04:41,180 Javascript programistoj uzi citiloj. 1381 01:04:41,180 --> 01:04:43,750 PHP, ili efektive havas iomete malsamajn signifojn. 1382 01:04:43,750 --> 01:04:45,810 Sed nuntempe, ĝuste scias ke tio estas la nura kialo. 1383 01:04:45,810 --> 01:04:49,270 La kongreso en JavaScript estas ofte uzi citiloj, sed ni povus uzi 1384 01:04:49,270 --> 01:04:50,950 duoblaj citiloj en ambaŭ lokoj kiel bone. 1385 01:04:50,950 --> 01:04:52,610 >> Do ĉi tiu estas interesa. 1386 01:04:52,610 --> 01:04:56,430 Rememoran lasta fojo ke ni havis tiun bildo sur la ekrano, kiu tiris arbo 1387 01:04:56,430 --> 01:04:59,720 kie vi havis la HTML nodo, kaj la estras nodo, kaj la korpo nodo, 1388 01:04:59,720 --> 01:05:00,800 kaj tiam iu teksto. 1389 01:05:00,800 --> 01:05:04,700 Sed tie estis unu speciala nodo ĉe la plejsupro ke mi nomis la dokumenton. 1390 01:05:04,700 --> 01:05:08,260 Nu, tio rezultas en JavaScript, ia tempo vi skribi programon en JavaScript 1391 01:05:08,260 --> 01:05:11,040 en foliumilo, vi havas aliron al speciala tutmonda variablo. 1392 01:05:11,040 --> 01:05:14,130 Similaj spirite al PHP la superglobals, ĉi tiu estas vokita en 1393 01:05:14,130 --> 01:05:16,050 ĉiuj minuskle dokumenton. 1394 01:05:16,050 --> 01:05:21,480 >> Estas kiel struct, sed ĉi struct havas ankaŭ funkcioj ene de ĝi. 1395 01:05:21,480 --> 01:05:23,790 Do C struct nur havas datumoj tipe. 1396 01:05:23,790 --> 01:05:29,060 Sed JavaScript objekto kiel tiu teknike estas ankaŭ havas funkciojn, 1397 01:05:29,060 --> 01:05:31,830 alie sciata kiel la metodoj, interne de ĝi. 1398 01:05:31,830 --> 01:05:35,750 Kaj vi povas voki funkcion ene de tiu celo tute laŭvorte farante lia 1399 01:05:35,750 --> 01:05:39,610 nomo, streketo kaj tiam la nomo de la funkcio, aŭ denove metodo. 1400 01:05:39,610 --> 01:05:41,160 Ĝi estas nur sinonimo, vere. 1401 01:05:41,160 --> 01:05:42,450 >> Kaj kion faras tiu funkcio faras? 1402 01:05:42,450 --> 01:05:43,840 Vi povas ia diveni el lia nomo. 1403 01:05:43,840 --> 01:05:45,590 Akiru elemento por identigo. 1404 01:05:45,590 --> 01:05:50,040 Do tiu tuj serĉi la TTT-paĝon, serĉi tiu arbo, serĉante 1405 01:05:50,040 --> 01:05:55,210 kion ajn nodo, AKA elemento, havas Unika identigo de citaĵo unquote nomo. 1406 01:05:55,210 --> 01:05:56,560 Kaj tiam kion mi faros? 1407 01:05:56,560 --> 01:06:00,350 Mi iros por ricevi la valoron ene de ke nodo en la arbo, kaj mi iros 1408 01:06:00,350 --> 01:06:02,580 por iel diri saluton al tiu nomo. 1409 01:06:02,580 --> 01:06:05,360 >> Do prenu konjekto, eĉ se ni ne vidinta ĉi tamen, kion faru la pli 1410 01:06:05,360 --> 01:06:07,396 simboloj signifas ĉi tie kaj ĉi tie probable? 1411 01:06:07,396 --> 01:06:08,230 >> Spektantaro: Concatenate. 1412 01:06:08,230 --> 01:06:09,220 >> DAVID Malan: Concatenate. 1413 01:06:09,220 --> 01:06:11,290 Ĝuste, kaj tio estas ĝuste speco de desegni decidoj 1414 01:06:11,290 --> 01:06:12,280 homoj faris antaŭ jaroj. 1415 01:06:12,280 --> 01:06:15,190 En PHP, vi concatenate aĵoj kun punktoj. 1416 01:06:15,190 --> 01:06:18,800 En C, vi saltas tra pluraj aros kaj voki funkciojn kiel strcopy () aŭ 1417 01:06:18,800 --> 01:06:20,600 strcat () aŭ aliajn tiajn funkciojn. 1418 01:06:20,600 --> 01:06:22,060 Sed en JavaScript, vi uzu pluses. 1419 01:06:22,060 --> 01:06:24,770 Do tiu estas justa concatenando tri kordoj - 1420 01:06:24,770 --> 01:06:27,850 saluton, nomo, kaj poste ekkrion punkto. 1421 01:06:27,850 --> 01:06:30,390 >> Do, kiam kaj kial estas tiu funkcio vokis kvankam? 1422 01:06:30,390 --> 01:06:33,150 Nu, prenu diveno de la HTML ĉe la malsupro. 1423 01:06:33,150 --> 01:06:35,810 Kial saluti () nomas, aŭ kiam? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> Ŝajne, kiel bona mi povas diri, sur submetiĝi, kiam tiu formo estas donita, 1426 01:06:44,030 --> 01:06:47,200 Mi tuj fari kion estas ene de tiuj citiloj. 1427 01:06:47,200 --> 01:06:50,900 Kaj specife, mi tuj vokos Salutas () kaj tiam revenu falsaj. 1428 01:06:50,900 --> 01:06:53,090 >> Nu, ni vidu kion la reto efekto tie estas unua. 1429 01:06:53,090 --> 01:06:58,290 Do lasu min iri antaŭen kaj tajpu en, ekzemple, Loren, Submetu. 1430 01:06:58,290 --> 01:06:59,440 Saluton Loren. 1431 01:06:59,440 --> 01:07:02,990 Ni vidu se eble tio estis nur bonsorta efektivigo. 1432 01:07:02,990 --> 01:07:03,200 Nope. 1433 01:07:03,200 --> 01:07:05,990 Do ĝi estas tajpado el kio ajn nomon mi fakte metis tie. 1434 01:07:05,990 --> 01:07:07,970 >> Sed rimarki kio ne ŝanĝas. 1435 01:07:07,970 --> 01:07:10,360 La URL estas ankoraŭ dom-0.html. 1436 01:07:10,360 --> 01:07:11,820 Mankas register.php. 1437 01:07:11,820 --> 01:07:13,110 Mankas dua dosiero. 1438 01:07:13,110 --> 01:07:14,930 Tie estas nenia ago atributo. 1439 01:07:14,930 --> 01:07:19,720 Do kio estas tiu reveno malvera supozeble faras? 1440 01:07:19,720 --> 01:07:23,660 Kial mi vokas saluti () kaj poste redoni malvera probable? 1441 01:07:23,660 --> 01:07:26,420 Kio kutime okazas kiam vi premas Submetu sur formo ke eĉ ni havas 1442 01:07:26,420 --> 01:07:27,854 vidis en la pasinta semajno? 1443 01:07:27,854 --> 01:07:29,900 >> Spektantaro: [inaudibles]. 1444 01:07:29,900 --> 01:07:30,860 >> DAVID Malan: Ĝi iras ien, ĉu ne? 1445 01:07:30,860 --> 01:07:32,720 Ĝi iras al iu celloko URL. 1446 01:07:32,720 --> 01:07:34,120 Sed mi ne volas, ke okazos tie. 1447 01:07:34,120 --> 01:07:37,620 Mi volas mian retpaĝon estos tute dinamika kiel Gmail, kie iam vi estas 1448 01:07:37,620 --> 01:07:38,650 tie, vi restu tie. 1449 01:07:38,650 --> 01:07:42,900 La retadreso ne ŝanĝiĝas en maniero kiu indikas la tuta paĝo estas reŝargi. 1450 01:07:42,900 --> 01:07:46,680 Prefere, mi nur volas ŝanĝi ion kiel presi ion 1451 01:07:46,680 --> 01:07:48,320 ĉi tie sur la ekrano. 1452 01:07:48,320 --> 01:07:49,630 >> Nu lasu min purigi ĉi supren iomete. 1453 01:07:49,630 --> 01:07:55,370 Permesu al mi malfermi Ne dom-0, sed lasu min malfermi dom-2. 1454 01:07:55,370 --> 01:07:57,350 Ĝuste tiel vi vidis iuj sintakso tie. 1455 01:07:57,350 --> 01:08:02,080 >> Rezultas, ke kion ni ĵus ne estas uzanta krudan JavaScript. 1456 01:08:02,080 --> 01:08:04,420 Do tiu estas vere la lingvo Javascript. 1457 01:08:04,420 --> 01:08:07,340 Iuj el vi eble scias pri biblioteko nomita jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Do jQuery ne estas la sama aĵo kiel JavaScript. 1459 01:08:09,980 --> 01:08:14,110 Estas nur la biblioteko, ke oni vere inteligenta ulo skribis kaj popularigis tiajn 1460 01:08:14,110 --> 01:08:18,100 ke preskaŭ ĉiuj en la mondo nun uzas jQuery kiam uzi JavaScript. 1461 01:08:18,100 --> 01:08:20,890 Kaj je la unua rigardo, honeste, ĝi aspektas iom pli kamufla. 1462 01:08:20,890 --> 01:08:24,990 Sed vi trovos, speciale se vi iros tie por via fina projekto kun ttt 1463 01:08:24,990 --> 01:08:29,029 evoluo, vi trovos, ke tiu purigas tion supren kaj savas vin tute 1464 01:08:29,029 --> 01:08:30,229 malmultaj linioj de kodo. 1465 01:08:30,229 --> 01:08:33,189 >> Do ni nur rigardis kiel ĉi tiu formo estas laborante. 1466 01:08:33,189 --> 01:08:35,664 Rimarku kion mi forpelus ŝajne de miaj HTML? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Mankas je submit traktilo por tiel diri. 1469 01:08:40,630 --> 01:08:41,470 Ne estas atributo. 1470 01:08:41,470 --> 01:08:43,359 Ĉar vi scias, kion Mi ne vere ŝatas? 1471 01:08:43,359 --> 01:08:45,640 Mi sentis, kiel ni estis falanta en malnovajn kutimojn tie. 1472 01:08:45,640 --> 01:08:49,340 Ĝuste kiel oni komencas senti fuŝa al intermiksas ambaŭ CSS kun 1473 01:08:49,340 --> 01:08:52,149 HTML, ĉar vi estas speco de ĵetante malsamaj lingvoj ĉie en la 1474 01:08:52,149 --> 01:08:56,180 lokon, simile ĝisvenis komenci senti kiel malbonan vojon al iri malsupren kie 1475 01:08:56,180 --> 01:09:01,069 Mi metante Javascript-kodon ene de mia HTML anstataŭ faktoranta ĝin. 1476 01:09:01,069 --> 01:09:02,279 >> Do jen la leciono ĉi tie. 1477 01:09:02,279 --> 01:09:05,080 En dom-2.html, mi faktoranta ĝin. 1478 01:09:05,080 --> 01:09:07,399 Kaj mi faras aferojn iomete malsame. 1479 01:09:07,399 --> 01:09:09,630 Nuntempe, mi tuj skuu miajn manojn je kio tiu vere faras 1480 01:09:09,630 --> 01:09:10,590 sub la kapuĉo. 1481 01:09:10,590 --> 01:09:14,210 Sed nur por momento supozus, ke tiu unua linio de kodo en tiu biblioteko 1482 01:09:14,210 --> 01:09:18,170 vokis jQuery simple signifas, kiam la dokumento estas preta, do jeno. 1483 01:09:18,170 --> 01:09:20,080 >> Ĉar retpaĝoj povas preni iom da tempo por ŝarĝi. 1484 01:09:20,080 --> 01:09:23,029 Vi povus esti sur malrapida interreto rilato, kaj gxi eble ŝpinante 1485 01:09:23,029 --> 01:09:25,290 kaj ŝpini, kaj fine ĝi estas ŝarĝita. 1486 01:09:25,290 --> 01:09:29,060 Tiu linio de kodo nur diras atendi ĝis la tuta paĝo estas preta, la dokumento 1487 01:09:29,060 --> 01:09:31,189 estas preta, antaŭ ekzekuti tiun kodon. 1488 01:09:31,189 --> 01:09:34,390 >> Kaj nun rimarkas, tio estas probable la plej utila unue 1489 01:09:34,390 --> 01:09:36,189 forpreni el jQuery. 1490 01:09:36,189 --> 01:09:42,140 Tiu linio tie estas tre simila en spirito al ĉi multe pli longa linio tie. 1491 01:09:42,140 --> 01:09:46,920 Dum en kruda JavaScript kodo, tie Ekzistas dokumento tutmonda objekto 1492 01:09:46,920 --> 01:09:50,460 havas funkcion nomata getElementById (), la homoj kiuj skribis 1493 01:09:50,460 --> 01:09:55,720 jQuery simplificó ke nur diru dolaro-signo, kaj poste interne de 1494 01:09:55,720 --> 01:10:00,250 krampoj metu du citaĵoj, kaj poste metu hash simbolo sekvas la 1495 01:10:00,250 --> 01:10:02,250 unika ID vi volas ekpreni. 1496 01:10:02,250 --> 01:10:06,170 Do tiu estas ekvivalento al document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> Dume,. Submit simple signifas la submetiĝo de ajn formon vi estas 1498 01:10:11,090 --> 01:10:14,240 raportante al maldekstre, iru antaŭeniris kaj ekzekuti ĉi. 1499 01:10:14,240 --> 01:10:16,600 Sed tio estas nun la scivolo tro. 1500 01:10:16,600 --> 01:10:19,560 Kio estas stranga pri kio Mi jam elstaris tie ĉi? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Ne nur estas speco de sintakse nova, estas ankaŭ iu mankanta. 1503 01:10:28,594 --> 01:10:29,558 >> Spektantaro: Ĝi simple nomata funkcio? 1504 01:10:29,558 --> 01:10:31,970 Ĝi ne nomas garde? 1505 01:10:31,970 --> 01:10:32,440 >> DAVID Malan: Jes. 1506 01:10:32,440 --> 01:10:35,450 Bone, do garde () estas sube tie ĉi, por esti justa. 1507 01:10:35,450 --> 01:10:39,520 Sed estas nenia mencio pri nomo, same kiel vi scias, foo aŭ 1508 01:10:39,520 --> 01:10:40,980 io ĝis ĉi tie. 1509 01:10:40,980 --> 01:10:43,830 Kaj efektive, tiu estas unu el la trajtoj de JavaScript, tio estas tute 1510 01:10:43,830 --> 01:10:45,370 potenca, sed ankaŭ sufiĉe nova. 1511 01:10:45,370 --> 01:10:47,460 Kaj PHP efektive havas ĉi tiel. 1512 01:10:47,460 --> 01:10:49,500 >> Permesu al mi iri antaŭen kaj fari io reala rapida. 1513 01:10:49,500 --> 01:10:52,030 Permesu al mi iri antaŭen kaj metis tiun ĉi tie. 1514 01:10:52,030 --> 01:10:52,600 Lasu min fari tion. 1515 01:10:52,600 --> 01:10:53,690 Funkcio. 1516 01:10:53,690 --> 01:10:56,455 Ni nomas tiun traktilo (). 1517 01:10:56,455 --> 01:10:58,290 A traktilo funkcio tiel diri. 1518 01:10:58,290 --> 01:11:00,110 Iu kiu manipulas iu operacio. 1519 01:11:00,110 --> 01:11:02,700 Lasu min purigi mian deŝovon. 1520 01:11:02,700 --> 01:11:04,380 Kaj metu ĉi tien. 1521 01:11:04,380 --> 01:11:06,090 Kaj metis tiun ĉi tie. 1522 01:11:06,090 --> 01:11:06,470 Yep. 1523 01:11:06,470 --> 01:11:07,060 Akcepti. 1524 01:11:07,060 --> 01:11:10,300 >> Do nun mi havas funkcio nomata traktilo () ke mi ne vere scias, 1525 01:11:10,300 --> 01:11:10,890 kio faras ankoraŭ. 1526 01:11:10,890 --> 01:11:12,710 Ĝi nur ankoraŭ havas tiun materialon. 1527 01:11:12,710 --> 01:11:13,900 Whoops. 1528 01:11:13,900 --> 01:11:15,820 Prenis tro multe. 1529 01:11:15,820 --> 01:11:18,490 Ni faras tion. 1530 01:11:18,490 --> 01:11:18,990 Ĉio bone. 1531 01:11:18,990 --> 01:11:20,240 Pardonon. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 Ĉio bone. 1534 01:11:23,690 --> 01:11:24,720 Lasu min fari tion. 1535 01:11:24,720 --> 01:11:25,020 Akcepti. 1536 01:11:25,020 --> 01:11:27,040 Tio aspektas bela kaj rekta antaŭen nun. 1537 01:11:27,040 --> 01:11:29,090 Lasu min fari tion. 1538 01:11:29,090 --> 01:11:29,860 Ĉu ĉi tio. 1539 01:11:29,860 --> 01:11:30,950 Kaj OK. 1540 01:11:30,950 --> 01:11:33,080 Do nun, ni metas ĉi tie. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Ne plu programadon en la muŝo. 1543 01:11:37,270 --> 01:11:37,900 Akcepti. 1544 01:11:37,900 --> 01:11:40,000 >> Do nun, ni reiru al kie la rakonto komencis. 1545 01:11:40,000 --> 01:11:43,530 Antaŭe, mi diris ke ĉi tiu lineo tie signifas kiam la dokumento estas preta, iru 1546 01:11:43,530 --> 01:11:44,380 antaŭeniras kaj fari ĉi tion. 1547 01:11:44,380 --> 01:11:45,660 Kion mi volas fari? 1548 01:11:45,660 --> 01:11:49,070 Nu specife, Mi volas iri antaŭen kaj faru la sekvajn. 1549 01:11:49,070 --> 01:11:53,700 Plenumu ĉi tiu linio de kodo, kaj poste kion mi volas ke vi devas fari estas nomas tiun 1550 01:11:53,700 --> 01:11:56,370 funkcii kiam la formo estas donita. 1551 01:11:56,370 --> 01:11:57,730 >> Nun tio estas kio estas interesa. 1552 01:11:57,730 --> 01:11:59,170 Ĉi tio ne estas sin funkcio. 1553 01:11:59,170 --> 01:12:02,540 Rimarku Mi ne metante krampoj tie en la normala maniero. 1554 01:12:02,540 --> 01:12:06,800 Mi laŭvorte pasi funkcio nomata traktilo () al alia funkcio 1555 01:12:06,800 --> 01:12:10,800 vokis submeti () kiel argumento kiel kvankam estas kiel variablo. 1556 01:12:10,800 --> 01:12:14,290 Kaj ĉi tiu estas unu el la trajtoj de Javascript estas funkcioj sin 1557 01:12:14,290 --> 01:12:15,710 estas vere nur celoj. 1558 01:12:15,710 --> 01:12:18,350 Fakte, ili estas vere ĝuste variabloj de iu varo. 1559 01:12:18,350 --> 01:12:21,340 Kaj se la nomo de la funkcio estas traktilo (), ne ekzistas kialo mi ne povas 1560 01:12:21,340 --> 01:12:23,390 pasi ĝin en kiel argumento tie. 1561 01:12:23,390 --> 01:12:27,530 Kaj tio signifas kiam la formo kun la ID de demo estas 1562 01:12:27,530 --> 01:12:29,320 donita, nomas tiun funkcion. 1563 01:12:29,320 --> 01:12:32,770 >> Sed nun se mi malfari ĉio ĉi, kial do mi eble faru 1564 01:12:32,770 --> 01:12:34,850 ĉi antaŭ momento? 1565 01:12:34,850 --> 01:12:36,840 Nu, tiu estas anonima funkcio. 1566 01:12:36,840 --> 01:12:41,080 Ĉar sincere, mi rimarkis kial mi tedante malŝpari tempon deklari 1567 01:12:41,080 --> 01:12:45,540 funkcio nomata handler () nur por alvoki ĝin en unu kaj nur unu loko? 1568 01:12:45,540 --> 01:12:48,640 Se mi ne bezonas la nomon, kaj mi ne bezonas nomi ĝin pli ol unu lokon, 1569 01:12:48,640 --> 01:12:51,200 ni nur havas la funkcion ĝuste kie mi bezonas ĝin. 1570 01:12:51,200 --> 01:12:55,190 Kaj tiel JavaScript kaj PHP subteno kio estas nomitaj anonima funkcioj kiuj 1571 01:12:55,190 --> 01:12:57,900 permesu al mi fari ĝuste tio ĉi tie. 1572 01:12:57,900 --> 01:12:59,570 >> Sed ni simple skrapante la surfacon. 1573 01:12:59,570 --> 01:13:02,430 Ni turmentus kun nur paro fina ekzemplojn ĉi tie. 1574 01:13:02,430 --> 01:13:04,600 >> Se mi iros en quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Rimarku ke tiu estas fakte PHP funkcio, PHP programo, kiun mi skribis 1577 01:13:11,870 --> 01:13:15,270 ke atendas HTTP parametro nomata simbolo, kaj mi povas pasi en 1578 01:13:15,270 --> 01:13:16,730 valoro kiel FB. 1579 01:13:16,730 --> 01:13:20,010 Kaj se ni vere rigardas la fonto kodo, ĉi tiu estas informpeti libera afiŝinto 1580 01:13:20,010 --> 01:13:23,680 vokis Yahoo Financoj, ĝuste kiel p-aro sep, kaj ĝin redoni al mi 1581 01:13:23,680 --> 01:13:26,580 io en la ŝajne formato konata estas JSON - 1582 01:13:26,580 --> 01:13:28,010 Javascript Objekto Skribmaniero. 1583 01:13:28,010 --> 01:13:28,810 Estas nur objekto. 1584 01:13:28,810 --> 01:13:32,500 Rimarku la krispa krampoj, la citaĵoj, la dupunkto, kaj la komoj. 1585 01:13:32,500 --> 01:13:34,720 >> Nun dume, ĉi tiu estas sufiĉe freŝa. 1586 01:13:34,720 --> 01:13:38,520 Ĉar mi probable povas uzi programado lingvo por generi URLoj 1587 01:13:38,520 --> 01:13:40,370 ne aspektas kiel ĉi dinamike, ĉu ne? 1588 01:13:40,370 --> 01:13:43,340 Mi povas ŝanĝi ĉi tion al Google kaj reiri de Google 1589 01:13:43,340 --> 01:13:47,930 stock prezo de $ 1,017.55. 1590 01:13:47,930 --> 01:13:49,640 Do ni vidu, se ni ne povas uzi ĉi nun. 1591 01:13:49,640 --> 01:13:56,590 >> Permesu al mi iri al ajax-0 tie, kiuj aspektas kiel la jena. 1592 01:13:56,590 --> 01:13:59,750 Estas nur retejo kiu havas formo kun butono. 1593 01:13:59,750 --> 01:14:05,860 Permesu al mi ĉi tie iri antaŭen kaj tajpu en YHOO por Yahoo la agoj simbolo, klaku Get 1594 01:14:05,860 --> 01:14:10,530 Citaĵo, kaj nun rimarkas mi alveninta garde kun 32,86. 1595 01:14:10,530 --> 01:14:14,050 >> Permesu al mi efektive iru al amatoro versio de tiu ĉi paĝo, versio du, kaj 1596 01:14:14,050 --> 01:14:17,530 tipo en Diru Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Get Citaĵo. 1598 01:14:18,410 --> 01:14:19,850 Kaj nun rimarkas, neniu garde. 1599 01:14:19,850 --> 01:14:22,770 Rimarku kie diras prezo esti decidita? 1600 01:14:22,770 --> 01:14:27,060 Tie estas la plej simpla de ekzemploj ke aludoj je kio Gchat, kaj Facebook 1601 01:14:27,060 --> 01:14:30,070 Babili, kaj Gmail, kaj aliaj tiaj retejoj faras per efektive 1602 01:14:30,070 --> 01:14:31,290 ŝanĝi la retpaĝo. 1603 01:14:31,290 --> 01:14:31,800 >> Rimarku ĉi. 1604 01:14:31,800 --> 01:14:33,120 Lasu min reŝarĝi la paĝon. 1605 01:14:33,120 --> 01:14:35,080 Permesu al mi malfermi Chrome la inspektoro. 1606 01:14:35,080 --> 01:14:36,890 Permesu al mi iri al la elementoj langeton cxi tie. 1607 01:14:36,890 --> 01:14:42,310 Nun rimarkos se mi zomi en cxi tie kaj malfermu ĉi supre, rimarki ke ĉi tiu estas mia 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - mia dokumento objekto modelo. 1609 01:14:44,500 --> 01:14:45,920 Ĉi tio estas mia HTML. 1610 01:14:45,920 --> 01:14:48,750 Sed nun rimarkas, kvankam tio okazas esti iom malfacile vidi ĝin en ambaŭ 1611 01:14:48,750 --> 01:14:52,080 lokoj samtempe, se mi tajpas en FB ĝis tie, rigardas la malsupro 1612 01:14:52,080 --> 01:14:54,110 de la ekrano nur. 1613 01:14:54,110 --> 01:14:57,720 >> Ĝi estas efektive ŝanĝanta miaj HTML en la muŝo. 1614 01:14:57,720 --> 01:15:01,670 Kaj ĝi estas fari tion sufiĉe simple farante iun kiel ĉi tio. 1615 01:15:01,670 --> 01:15:06,800 Se mi malfermas ajax-2, rimarki apliki ion kiel sexy kiel 1616 01:15:06,800 --> 01:15:09,560 ke, kvankam ĝi estas sufiĉe malbela, sed kiel kompleksa kiel tiu 1617 01:15:09,560 --> 01:15:11,910 funkcie, ĝi havas iujn HTML ĉe la malsupro. 1618 01:15:11,910 --> 01:15:13,810 Sed rimarki mi uzis por marki. 1619 01:15:13,810 --> 01:15:16,640 Ni ne uzas tiun antaŭe, sed ĉi tiu estas kiel, sed ĝi ne devigas 1620 01:15:16,640 --> 01:15:17,840 ĉion sur nova linio. 1621 01:15:17,840 --> 01:15:20,830 Ĝi nur faras rektangula regiono sur la sama linio esence. 1622 01:15:20,830 --> 01:15:22,870 >> Rimarku, ke mi donis al ĝi ID de prezo. 1623 01:15:22,870 --> 01:15:26,800 Kaj ĝi rezultas per la sama Javascript biblioteko, mi havas funkcio 1624 01:15:26,800 --> 01:15:30,440 vokis citaĵo () kiu nomiĝas kiam ajn la formo estas donita. 1625 01:15:30,440 --> 01:15:31,800 Kaj kion mi faras estas tiu. 1626 01:15:31,800 --> 01:15:35,730 Mi deklaras variablon en JavaScript vokis url, savante la valoro 1627 01:15:35,730 --> 01:15:38,650 quote.php? simbolo =. 1628 01:15:38,650 --> 01:15:44,220 Alivorte, mi mem estas komencante prepari HTTP peto, kaj poste 1629 01:15:44,220 --> 01:15:49,250 Mi concatenando sur tiu kun pli kion ajn la elemento kun la ID 1630 01:15:49,250 --> 01:15:54,190 de simbolo, kiu avizo estas ke teksto kampon dekstren suben ĉi tien. 1631 01:15:54,190 --> 01:15:56,630 Do ĝuste kiel ni havis formoj en la estinteco. 1632 01:15:56,630 --> 01:16:01,450 >> Kaj tiam ĝi rezultas en jQuery, se vi voki. val (), kiu nomas de val 1633 01:16:01,450 --> 01:16:05,900 funkcio, valoro funkcio, kiu alvenas kion ajn la uzanto tajpas in 1634 01:16:05,900 --> 01:16:08,920 Kaj tiam ĉiuj el la reta trafiko kio okazas estas tiu. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> Kaj kiel oni apartigas, dolaro signo estas nur stenografio skribmaniero. 1637 01:16:13,720 --> 01:16:16,860 Estas vere jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Get Min JSON el tiu retadreso, kaj kiam peto venas reen, nomas tiun 1639 01:16:21,520 --> 01:16:26,550 funkcio migru en la argumento kion ajn li relevigxis el la servilo. 1640 01:16:26,550 --> 01:16:31,205 >> Do, en aliaj vortoj, se mi reirus al la retumilo, kaj mi reiros al quote.php, 1641 01:16:31,205 --> 01:16:35,590 kion mia retumilo faras estas atingi ĉi chunk de datumoj. 1642 01:16:35,590 --> 01:16:38,930 Kaj kiam mi iras al tiu retpaĝo ĉi tie, rimarki, se ni anstataŭ iri al la reto 1643 01:16:38,930 --> 01:16:43,820 langeton kaj purigi ĝin, kaj tiam tajpi en iu kiel GOOG por Google kaj Get 1644 01:16:43,820 --> 01:16:46,340 Citaĵo: rimarki la paĝo ne ŝanĝi. 1645 01:16:46,340 --> 01:16:50,990 Sed HTTP peto estis farita, kaj kio venis ĉi tien, se ni rigardas la 1646 01:16:50,990 --> 01:16:56,130 respondo estas tuta fasko da JSON ke ni Montrita fine kun 1647 01:16:56,130 --> 01:16:58,070 tiun simplan linion tie. 1648 01:16:58,070 --> 01:17:00,150 >> Datumoj estas kio alvenis de la servilo. 1649 01:17:00,150 --> 01:17:02,120 Prezo estas la nomo de la ŝlosilo interesas min. 1650 01:17:02,120 --> 01:17:05,230 Do data.price donas al mi tion. 1651 01:17:05,230 --> 01:17:07,540 >> Nun dume, kaj ĉi estas la lasta ekzemplo. 1652 01:17:07,540 --> 01:17:09,280 Vi povas fari ankoraŭ pli kun la paĝon. 1653 01:17:09,280 --> 01:17:12,440 Oni efektive, krom du. 1654 01:17:12,440 --> 01:17:14,780 Ni povas revenigi la Tag, se vi memoras ĉi tio. 1655 01:17:14,780 --> 01:17:15,850 Tio estas JavaScript. 1656 01:17:15,850 --> 01:17:17,110 Ni povas fari tion. 1657 01:17:17,110 --> 01:17:17,690 Tre interesa. 1658 01:17:17,690 --> 01:17:18,800 Ni lasos ke kiel cliffhanger. 1659 01:17:18,800 --> 01:17:21,590 >> Sed pli excitingly, vi povas fari tion kiel ĉi tio. 1660 01:17:21,590 --> 01:17:25,940 Se mi iras al geolocalización-1, rezultas ke Chrome scias ke ni estas ĉe 1661 01:17:25,940 --> 01:17:30,672 latitudo longitudo 42,37. -71,10. 1662 01:17:30,672 --> 01:17:32,940 Do tie estas eĉ pli tie je via dispono. 1663 01:17:32,940 --> 01:17:34,290 Sed pli sur tiu proksima semajno. 1664 01:17:34,290 --> 01:17:35,540 See you lundon. 1665 01:17:35,540 --> 01:17:37,558