1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> David MALAN: Lahat ng karapatan. 3 00:00:12,360 --> 00:00:15,970 Ito ay CS50, at ito ay katapusan ng linggo siyam. 4 00:00:15,970 --> 00:00:18,560 Naging ipoipo sa ibabaw nakalipas na ilang araw. 5 00:00:18,560 --> 00:00:21,580 At problema set pitong, kung ikaw ay tuhod malalim sa ito, mapagtanto mayroong medyo isang 6 00:00:21,580 --> 00:00:23,340 bit bagong na nasa doon. 7 00:00:23,340 --> 00:00:26,660 Ngunit sabihin makita kung hindi namin maaaring piraso ang lahat ng bagay magkasama dito sa madaling sabi 8 00:00:26,660 --> 00:00:29,230 bago pagkatapos ay veering off pa sa isa pang direksyon at nakikita 9 00:00:29,230 --> 00:00:30,510 kung saan pa ang maaari naming pumunta. 10 00:00:30,510 --> 00:00:32,630 >> Kaya kaya ngayon, na-usapan natin ang tungkol sa HTML. 11 00:00:32,630 --> 00:00:33,740 Na-usapan natin ang tungkol sa CSS. 12 00:00:33,740 --> 00:00:34,705 Na-usapan natin ang tungkol sa PHP. 13 00:00:34,705 --> 00:00:36,520 Nagsimula ka nakakaranas ng SQL. 14 00:00:36,520 --> 00:00:38,360 Ngayon, muli naming makipag-usap ng kaunti tungkol sa JavaScript. 15 00:00:38,360 --> 00:00:41,230 Ngunit kung paano gawin ang lahat ng mga disparate wika magkasya magkasama? 16 00:00:41,230 --> 00:00:44,970 >> Kaya usapan natin noong nakaraang linggo tungkol sa kuru-kuro ng pagkakaroon ng isang server. 17 00:00:44,970 --> 00:00:48,470 Kaya hayaan gumuhit ng lamang ito parihaba bilang isang web server dito. 18 00:00:48,470 --> 00:00:52,200 At Naghahain ang tiyak na file ng isang web server. 19 00:00:52,200 --> 00:00:54,640 At ang ilan sa mga file na iyon ay maaaring maging HTML file. 20 00:00:54,640 --> 00:00:58,270 Kaya isa sa mga bagay na ang isang web server Maaari sabihin ang lahat ay maaaring maging isang file na 21 00:00:58,270 --> 00:01:01,290 ipapakita namin lamang gumuhit tulad nito na naglalaman ng ilang mga HTML. 22 00:01:01,290 --> 00:01:04,786 Kaya sa mga tuntunin lego, na kung ano ang ang HTML hayaan mong gawin? 23 00:01:04,786 --> 00:01:06,036 >> Madla: hitsura ng Pahina magaling. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> David MALAN: OK, gumawa ng isang pahina tumingin maganda, kahit na sa tingin ko at napatunayan ko 26 00:01:12,310 --> 00:01:13,370 na kung hindi man. 27 00:01:13,370 --> 00:01:18,250 Kaya HTML ay hayaan maglatag ka out mga pahina structurally, at nagbibigay-daan ito sa iyo upang 28 00:01:18,250 --> 00:01:22,410 uri ng aesthetically markahan up ng isang pahina, markahan up static na nilalaman, sa gayon ay 29 00:01:22,410 --> 00:01:23,640 Maaari pagkatapos ay tingnan ito sa isang web browser. 30 00:01:23,640 --> 00:01:24,690 >> Ngunit iyon ang key. 31 00:01:24,690 --> 00:01:26,130 Ito ay static na nilalaman. 32 00:01:26,130 --> 00:01:28,590 Isulat mo ito, i-save mo ito, at pagkatapos mong ipadala ang mga ito. 33 00:01:28,590 --> 00:01:31,130 At ang mga web server pagkatapos ay naghahain ito hanggang sa iyong mga bisita. 34 00:01:31,130 --> 00:01:35,700 >> Ngunit stylize namin ang mga bagay gamit ang ibang wika nang sama-sama. 35 00:01:35,700 --> 00:01:40,150 Sinimulan namin na gamitin ang isang katangian ng estilo sa mga tiyak na mga tag. 36 00:01:40,150 --> 00:01:43,400 At ang mga estilo katangian sa amin set mga bagay tulad ng laki ng font at kulay. 37 00:01:43,400 --> 00:01:46,460 At nagsimula marahil mo na upang matuklasan, o sa lalong madaling panahon mo para sa final 38 00:01:46,460 --> 00:01:50,160 mga proyekto ng potensyal, pa iba pang mga katangian na maaari mong gamitin sa CSS. 39 00:01:50,160 --> 00:01:54,710 At kaya sa mga tuntunin lego, na kung ano ang talaga pagkatapos ay ang ginagawa ng CSS? 40 00:01:54,710 --> 00:01:57,810 Iyon ang mga halimbawa lamang hinggil doon. 41 00:01:57,810 --> 00:02:00,730 Ano ang ibig sabihin nito gawin mo na HTML Mukhang hindi mula sa kung ano 42 00:02:00,730 --> 00:02:02,606 nasaksihan namin kaya ngayon? 43 00:02:02,606 --> 00:02:04,850 >> Madla: Tukuyin ang mga estilo sa pamamagitan ng iyong sarili. 44 00:02:04,850 --> 00:02:06,700 >> David MALAN: Tukuyin ang mga estilo sa pamamagitan ng iyong sarili. 45 00:02:06,700 --> 00:02:10,280 Kaya tukuyin ang mga bagay tulad ng mga klase tulad ng sa iyo Maaaring nakatagpo, o katangi-tangi 46 00:02:10,280 --> 00:02:13,800 kilalanin ang mga node sa isang dokumento sa gayon na maaari mong stylize mga ito. 47 00:02:13,800 --> 00:02:16,890 Ngunit higit na partikular, gusto kong sabihin na CSS talaga ay nagbibigay-daan magdadala sa iyo bagay ang 48 00:02:16,890 --> 00:02:20,790 huling milya at nagbibigay-daan sa iyo upang tukuyin magkano Mas tiyak ang aesthetics, 49 00:02:20,790 --> 00:02:24,340 samantalang ang HTML para sa pinaka-bahagi ay nagbibigay-daan ikaw ay buuin ang iyong mga pahina. 50 00:02:24,340 --> 00:02:27,310 >> At kahit na mayroong ilang mga default, tulad ng nakita natin ang tag para sa 51 00:02:27,310 --> 00:02:30,690 isang heading na tag, na halos nagsasalita ginawa bagay na malaki at naka-bold. 52 00:02:30,690 --> 00:02:34,250 Iyon ay isang magandang generic na kahulugan ng tag - malaki at naka-bold. 53 00:02:34,250 --> 00:02:35,260 Ano ng font laki ay na? 54 00:02:35,260 --> 00:02:36,080 Ano ang kulay ay na? 55 00:02:36,080 --> 00:02:36,890 Paano naka-bold ay na? 56 00:02:36,890 --> 00:02:39,830 At CSS ay nagbibigay-daan sa iyo ng karagdagang pino tune mga bagay tulad na. 57 00:02:39,830 --> 00:02:42,150 Pati na rin ang layout, bilang ilang mga ng na nakita mo. 58 00:02:42,150 --> 00:02:45,180 >> At nang tapat, CSS ay isang bit ng isang marumi wika. 59 00:02:45,180 --> 00:02:48,370 Ito ay napakalakas na maaari mong gawin Literal anumang website na ikaw ay 60 00:02:48,370 --> 00:02:51,880 nakikita sa web ngayon may ito, ngunit ito ay uri ng isang sakit sa ulo. 61 00:02:51,880 --> 00:02:54,440 At ang ilan sa iyong na-Nabunggo ang iyong ulo laban sa mga pader na gawin na lamang 62 00:02:54,440 --> 00:02:58,560 isang bagay bobo tulad ng sentro ng menu sa itakda problema pitong kung nakuha sa 63 00:02:58,560 --> 00:02:59,470 na tuldok na. 64 00:02:59,470 --> 00:03:01,530 >> Ngunit mapagtanto, ang mga bagay makakuha ng mas madali sa paglipas ng panahon. 65 00:03:01,530 --> 00:03:02,820 Magsisimula ka na mapansin pattern. 66 00:03:02,820 --> 00:03:06,020 At muli, ang Google ay maging kaibigan mo para sa iba't-ibang mga paraan kung saan maaari kang 67 00:03:06,020 --> 00:03:07,220 malutas ang mga ganitong uri ng mga problema. 68 00:03:07,220 --> 00:03:11,520 >> At maglakas-loob ko sabihin sa CSS, at HTML higit pa Sa pangkalahatan, maaari mong malutas ang mga problema sa 69 00:03:11,520 --> 00:03:15,910 maraming mas maraming mga paraan, ang lahat ay puwede napaka na rin maging tama, kaysa dati mo 70 00:03:15,910 --> 00:03:18,900 sa isang bagay tulad ng C, kahit na ngayon PHP, o JavaScript. 71 00:03:18,900 --> 00:03:21,080 Maraming mga iba't ibang lamang mga paraan upang mag-ipon ng mga bagay out. 72 00:03:21,080 --> 00:03:22,570 >> Ngunit ito na nagsimula upang makakuha ng gulung-gulo, sinabi namin. 73 00:03:22,570 --> 00:03:26,480 Lamang uri ng commingling iyong HTML at iyong CSS na may estilo katangian ay 74 00:03:26,480 --> 00:03:27,590 isang maliit na nanggigitata. 75 00:03:27,590 --> 00:03:31,460 At kaya sa halip namin sinabi, uri ng abstractly nagsasalita, na dapat mong 76 00:03:31,460 --> 00:03:34,050 hindi bababa sa magsimula sa factor out iyong CSS marahil. 77 00:03:34,050 --> 00:03:37,430 Mga katangian hindi ang iyong estilo, ngunit hindi bababa sa gamitin ang estilo tag sa loob ano 78 00:03:37,430 --> 00:03:38,840 bahagi ng web page? 79 00:03:38,840 --> 00:03:39,560 >> Madla: Head. 80 00:03:39,560 --> 00:03:40,120 >> David MALAN: Sa ulo. 81 00:03:40,120 --> 00:03:43,270 Up hanggang ngayon, tanging nagkaroon kami ng pamagat up doon, ngunit maaari ka ring magdagdag ng isang estilo 82 00:03:43,270 --> 00:03:47,230 i-tag, at maaari mong ilagay ang iyong mga CSS halos nagsasalita patungo sa tuktok ng pahina. 83 00:03:47,230 --> 00:03:52,550 Ngunit pagkatapos ay kinuha namin ang mga bagay isang hakbang karagdagang at isinasali namin na ang higit pa 84 00:03:52,550 --> 00:03:54,130 sa isang hiwalay na file. 85 00:03:54,130 --> 00:03:57,240 >> At kaya ang dalawang mga file ay sa paanuman ngayon naka-link. 86 00:03:57,240 --> 00:03:59,550 At sa katunayan ito ay ang tag na gumawa niyan. 87 00:03:59,550 --> 00:04:02,920 At kung ano ay isa sa mga overarching motivations para sa factoring ang aming CSS 88 00:04:02,920 --> 00:04:04,057 lahat ng higit pa? 89 00:04:04,057 --> 00:04:05,280 >> Madla: Reusability. 90 00:04:05,280 --> 00:04:05,785 >> David MALAN: Reusability. 91 00:04:05,785 --> 00:04:06,150 Mag-right? 92 00:04:06,150 --> 00:04:09,470 Maaaring nakakita sa p-set pitong na na ng maraming mga pahina, ang 93 00:04:09,470 --> 00:04:12,260 pahina ng pagbili, ang pahina ng pagbebenta, ang pahina ng portfolio, ay marahil 94 00:04:12,260 --> 00:04:13,550 nakaayos medyo katulad. 95 00:04:13,550 --> 00:04:17,579 Mayroong isang CS50 pananalapi logo sa tuktok maliban kung nagpasya kang baguhin ito. 96 00:04:17,579 --> 00:04:19,839 Mayroong isang footer sa ibaba ng pahina. 97 00:04:19,839 --> 00:04:24,315 At CSS ay nagpapahintulot sa iyo pagkatapos ay sa kadahilanan ito ito sa isang hiwalay na file upang kung 98 00:04:24,315 --> 00:04:27,780 gusto mong baguhin ang isang bagay sa buong mundo sa kabuuan ng iyong buong site, maaari mo ba talagang 99 00:04:27,780 --> 00:04:29,390 baguhin lamang ito sa isang lugar. 100 00:04:29,390 --> 00:04:32,750 >> Subalit mayroong isang presyo na babayaran mo potensyal sa pamamagitan ng pagkakaroon ng isinasali ang 101 00:04:32,750 --> 00:04:38,380 CSS mula sa aking HTML file sa isang hiwalay na mag-file na tumutukoy ito sa 102 00:04:38,380 --> 00:04:40,650 tag, na kung saan nakita natin sa Lunes. 103 00:04:40,650 --> 00:04:43,850 Ano ang maaaring maging downside ng ito? 104 00:04:43,850 --> 00:04:48,830 Nag-iisip bumalik sa isang linggo nakaraan upang kapag kami ay pakikipag-usap tungkol sa HTTP at TCP / IP at kung paano 105 00:04:48,830 --> 00:04:52,070 Gumagana ang internet. 106 00:04:52,070 --> 00:04:53,530 Isang bagay na sa paglipas dito? 107 00:04:53,530 --> 00:04:54,730 >> Madla: Ito ay tumatagal ng mas maraming oras. 108 00:04:54,730 --> 00:04:55,470 >> David MALAN: Ito ay tumatagal ng mas maraming oras. 109 00:04:55,470 --> 00:04:56,750 Bakit? 110 00:04:56,750 --> 00:04:59,450 >> Madla: [hindi marinig]. 111 00:04:59,450 --> 00:04:59,750 >> David MALAN: Oo. 112 00:04:59,750 --> 00:05:01,240 Kaya arguably tumatagal ng kaunti pang panahon. 113 00:05:01,240 --> 00:05:04,290 Dahil isa, ang CSS ay malinaw naman hindi sa parehong file. 114 00:05:04,290 --> 00:05:06,920 Kaya ngayon ikaw ay may upang gumawa ng hindi isa, ngunit dalawang mga kahilingan. 115 00:05:06,920 --> 00:05:11,230 At sa bawat isa sa mga kahilingan ng bilang nakita natin sa Chrome sa tinaguriang Inspector, 116 00:05:11,230 --> 00:05:15,740 at itinuturing namin ang tab na Mga network, ang bawat isa ng mga file na iyon ay nangangailangan ng isang HTTP 117 00:05:15,740 --> 00:05:18,360 hiling, na nakita natin ay tumatagal ng ilang tagal ng panahon. 118 00:05:18,360 --> 00:05:19,290 Ngayon, siguro hindi ito ng maraming. 119 00:05:19,290 --> 00:05:20,670 Siguro ito ay 20 lamang millisecond. 120 00:05:20,670 --> 00:05:22,260 Siguro ito ay 200 millisecond. 121 00:05:22,260 --> 00:05:25,530 >> Ngunit isipin ang tungkol sa isang pahina tulad ng Facebook, o CNN, o Google, na kung saan ay magkano 122 00:05:25,530 --> 00:05:28,060 mas malaki kaysa sa mga halimbawang hindi namin ay tumingin sa gayon ay malayo. 123 00:05:28,060 --> 00:05:32,070 Yaong mga pahina na maaaring mayroon dose-dosenang mga file, ang bawat isa ay maaaring mangailangan ng isang 124 00:05:32,070 --> 00:05:33,550 pag-download ng isang file. 125 00:05:33,550 --> 00:05:35,800 Kaya bagay na maaari potensyal na simulan na pabagalin. 126 00:05:35,800 --> 00:05:39,280 >> At lalo na ang mga araw kung kailan namin lahat may mga mobile phone sa aming bulsa at 127 00:05:39,280 --> 00:05:43,010 mas mabagal na internet na koneksyon, na kinakailangang maghintay ng ilang higit pang mga millisecond, ang ilang mga 128 00:05:43,010 --> 00:05:46,110 higit pa millisecond para sa karagdagang na file ay maaaring talagang maging mabagal. 129 00:05:46,110 --> 00:05:50,430 Latency ay ang salita na naglalarawan ng uri ng paghihintay na mayroon ka na sa iyo 130 00:05:50,430 --> 00:05:53,110 maranasan kapag naghihintay para sa ilang piraso ng impormasyon. 131 00:05:53,110 --> 00:05:54,430 >> Subalit mayroong isang nakabaligtad. 132 00:05:54,430 --> 00:05:56,600 Kaya ito ay hindi lahat ng mga uri ng isang - 133 00:05:56,600 --> 00:05:58,170 ito talaga ay isang bit ng isang palatimbangan dito. 134 00:05:58,170 --> 00:06:02,970 Downside ngayon, ngunit kung ano ang mga browser ay maaaring gawin kung ang mga ito ay matalino upang maiwasan ang 135 00:06:02,970 --> 00:06:08,870 pagkakaroon upang hilingin ang parehong styles.css muli-file ay maaaring maging upang gawin kung ano? 136 00:06:08,870 --> 00:06:09,390 >> Cache ito. 137 00:06:09,390 --> 00:06:10,370 Kaya pag-cache - 138 00:06:10,370 --> 00:06:11,690 C-A-C-H-E - 139 00:06:11,690 --> 00:06:15,810 karaniwan ay nangangahulugan lamang dito upang i-save ang mag-file na iyong hiniling sa unang pagkakataon, at 140 00:06:15,810 --> 00:06:17,440 pagkatapos suriin ang iyong cache para dito. 141 00:06:17,440 --> 00:06:20,400 Suriin ikaw ay isang uri ng imbakan lalagyan, at kung ikaw ay mayroon ng isang 142 00:06:20,400 --> 00:06:24,520 kopya ng styles.css, kahit na ang ilang mga iba pang pahina sa p-set, o anumang website, 143 00:06:24,520 --> 00:06:28,560 Humihiling itong muli, upang bigyan lamang ang gumagamit na parehong naka-cache na kopya. 144 00:06:28,560 --> 00:06:30,140 Huwag mag-abala na humihiling ito. 145 00:06:30,140 --> 00:06:32,560 >> Downside doon, kahit na, bilang ilan sa inyo na tripped sa paglipas ng sa p-set. 146 00:06:32,560 --> 00:06:35,870 Kung gumawa ka ng pagbabago sa server at mo bumalik sa browser at mo 147 00:06:35,870 --> 00:06:39,250 i-reload, paminsan-minsan ang browser gumagana sa iyo ng isang pabor at hindi mag-abala 148 00:06:39,250 --> 00:06:43,660 muling pag-download ng iyong styles.css file dahil, dumating sa, ano ang mga logro 149 00:06:43,660 --> 00:06:47,620 na ang mga estilo na gumagamit ng Facebook ay pagpunta sa baguhin nang oras-oras o 150 00:06:47,620 --> 00:06:48,140 araw-araw? 151 00:06:48,140 --> 00:06:48,800 Ito ay medyo mababa. 152 00:06:48,800 --> 00:06:52,260 Maaari nilang baguhin sa paglipas ng panahon, ngunit hindi sa pamamagitan ng mga minuto o sa pamamagitan ng oras. 153 00:06:52,260 --> 00:06:55,810 >> Kaya isang kahanga-hangang gawa, Para sa Iyong Impormasyon lamang kapag ang paggawa ng web pag-unlad, ay madalas na panghawakan ang 154 00:06:55,810 --> 00:06:59,500 shift key halimbawa at pagkatapos ay i-click ang i-reload sa iyong browser, at kalooban na 155 00:06:59,500 --> 00:07:03,280 Karaniwang sabihin ang reload na browser ang lahat ng bagay, kahit na mayroon ka 156 00:07:03,280 --> 00:07:04,180 ito sa cache. 157 00:07:04,180 --> 00:07:06,630 Kaya muli, upsides at downsides, ngunit lahat ng mga ito 158 00:07:06,630 --> 00:07:08,260 sa huli magdisenyo ng mga desisyon. 159 00:07:08,260 --> 00:07:11,520 >> Kaya ngayon, ginawa naming hindi lamang tapusin ang kuwento dito. 160 00:07:11,520 --> 00:07:15,790 Kung pumunta ako ngayon pabalik at pabalik at pabalik at pabalik, nagsimula kami upang ipakilala hindi lamang 161 00:07:15,790 --> 00:07:18,060 HTML, ngunit PHP. 162 00:07:18,060 --> 00:07:20,786 Kaya sa mga tuntunin lego, na kung ano ang ang ibig sabihin ng PHP sa amin gawin? 163 00:07:20,786 --> 00:07:22,770 >> Madla: [hindi marinig]. 164 00:07:22,770 --> 00:07:24,258 >> David MALAN: Ano iyon? 165 00:07:24,258 --> 00:07:25,250 >> Madla: Ipakilala logic sa ang code. 166 00:07:25,250 --> 00:07:26,620 >> David MALAN: Oo, ipakilala logic sa iyong code. 167 00:07:26,620 --> 00:07:29,570 Kaya ito ay isang tunay na wika programming may mga loop, at mga variable, at 168 00:07:29,570 --> 00:07:32,620 mga pag-andar, at mga kondisyon, at lahat ng sa mga bagay na namin na ginagamit mo paraan pabalik 169 00:07:32,620 --> 00:07:33,780 kapag mula noong simula. 170 00:07:33,780 --> 00:07:36,780 At PHP, nasaksihan namin, ay maaaring magamit alinman sa command line - ito 171 00:07:36,780 --> 00:07:39,190 hindi kailangang magkaroon ng anumang bagay na gawin gamit ang web, kahit na 172 00:07:39,190 --> 00:07:43,150 talaga mga pinagmulan nito at kung ano ito ay may gawi upang maging mahusay sa at kaaya-aya sa - 173 00:07:43,150 --> 00:07:47,130 ngunit maaari kang gumamit ng PHP at wala na sa pamamagitan ng kalikasan ng katotohanan na ito ay may naka-print () 174 00:07:47,130 --> 00:07:49,660 function, at isang function () printf, o isang function na () echo. 175 00:07:49,660 --> 00:07:52,440 Mayroong bunches ng mga paraan sa iyo maaaring mag-print ng teksto na may PHP. 176 00:07:52,440 --> 00:07:56,540 >> Samakatuwid, maaari mong gamitin ang programming wika sa output eksakto 177 00:07:56,540 --> 00:07:58,460 kung ano ang pinag-uusapan natin ay tungkol sa bago. 178 00:07:58,460 --> 00:08:01,360 Maaari mong dynamic na bumuo ng iyong HTML. 179 00:08:01,360 --> 00:08:02,300 Siguro hindi lahat ng ito. 180 00:08:02,300 --> 00:08:06,460 Siguro mo na hard bagay na code, tulad ng header, at footer, at ang logo, 181 00:08:06,460 --> 00:08:07,950 at ang iyong mga style sheet, at ang lahat ng iyon. 182 00:08:07,950 --> 00:08:11,190 Ngunit para sa isang bagay tulad ng p-set pitong, kung saan ka pagmamanipula ng mga stock at 183 00:08:11,190 --> 00:08:14,690 na nagpapakita ng portfolio ng gumagamit, na kung saan ay pagpunta sa dynamic na baguhin, ikaw ay maaaring 184 00:08:14,690 --> 00:08:18,960 tiyak gamitin ang PHP at ang logic ito ay nagbibigay sa iyo bilang isang wika programming upang 185 00:08:18,960 --> 00:08:22,320 pabagu-bagong mga subset ng output ng pahina. 186 00:08:22,320 --> 00:08:25,900 >> Kaya kapag makipag-usap sa iyo tungkol sa pabago-bagong mga website, o web programming, na 187 00:08:25,900 --> 00:08:27,200 kung ano ang talagang pakikipag-usap sa iyo tungkol sa. 188 00:08:27,200 --> 00:08:31,450 Paggamit ng isang wika tulad ng PHP, o bagay tinatawag na Python, o Ruby, o Java, o 189 00:08:31,450 --> 00:08:35,900 pa iba pang mga wika, para sa mga tanong ng isang database madalas, o isa pang server, at 190 00:08:35,900 --> 00:08:38,580 pagkatapos ay magilas na sabihin ang lahat ng HTML. 191 00:08:38,580 --> 00:08:42,470 >> Ngayon ang resulta, bilang isang-tabi, ay na HTML ng karamihan sa mga website, 192 00:08:42,470 --> 00:08:45,970 kabilang ang iyong p-set pitong, ay marahil pagpunta sa maging isang malaking gulo kung 193 00:08:45,970 --> 00:08:48,060 mong tingnan ang pinagmulan code sa isang browser. 194 00:08:48,060 --> 00:08:49,010 Iyan ay hindi isang malaking pakikitungo. 195 00:08:49,010 --> 00:08:51,550 Sa puntong ito, kapag pinapahalagahan namin tungkol sa estilo, pinapahalagahan natin ang tungkol sa 196 00:08:51,550 --> 00:08:52,740 bagay-bagay na sinulat mo. 197 00:08:52,740 --> 00:08:56,240 Hindi namin na nagmamalasakit sa mga bagay-bagay na kung ano ang iyong code output. 198 00:08:56,240 --> 00:08:59,520 Kaya huwag mag-alala tungkol sa indentation dito kung ito ay PHP na 199 00:08:59,520 --> 00:09:01,190 talaga outputting bagay-bagay. 200 00:09:01,190 --> 00:09:04,430 Pagkatapos ng lahat, hindi na mahalaga sa browser, at isang tao ay hindi naghahanap 201 00:09:04,430 --> 00:09:05,400 sa gayon pa man ang pinagmulan. 202 00:09:05,400 --> 00:09:09,000 Namin ang mga tauhan, halimbawa, gagawin tumitingin ka sa iyong PHP. 203 00:09:09,000 --> 00:09:13,440 >> Kaya hayaan mo akong bigyan ng isang mabilis na halimbawa ngayon ng bakit pa ito maaaring maging kapaki-pakinabang. 204 00:09:13,440 --> 00:09:18,620 Kaya nang tapat, hindi ko matandaan ang huling oras na ginamit ko C upang malutas ang isang problema sa 205 00:09:18,620 --> 00:09:19,620 tunay na mundo. 206 00:09:19,620 --> 00:09:22,330 Ito ay marahil sa graduate paaralan kapag Kailangan ko bang gamitin ang isang wika na 207 00:09:22,330 --> 00:09:26,710 ay medyo mababa ang antas at binigyan ako ng pagkakataon na gawin ang isang bagay napakataas na 208 00:09:26,710 --> 00:09:30,720 gumaganap sa talagang i-save ng maraming CPU cycle bilang ng dati ko, sa malaking bahagi 209 00:09:30,720 --> 00:09:33,990 dahil na ginagamit ko malaking hanay ng data, at ang bawat ikot ng CPU binibilang. 210 00:09:33,990 --> 00:09:37,750 At lantaran, kahit na sa mga bagay tulad ng mga telepono mga araw na ito at iba pang mga device 211 00:09:37,750 --> 00:09:39,910 kung saan wala ka pa masyadong magkaroon ng maraming memorya at hindi mo pa masyadong may bilang 212 00:09:39,910 --> 00:09:44,160 magkano ang CPU, gamit ang mas mabilis na mga wika ay sumasamo pa rin. 213 00:09:44,160 --> 00:09:47,290 >> Ngunit sa tunay na mundo, kapag mo lamang gusto magtapon ng ilang mga programa nang magkasama upang 214 00:09:47,290 --> 00:09:50,340 pag-aralan ang ilang data, o na iyong nakolekta ang maramihang mga pagrerehistro para sa 215 00:09:50,340 --> 00:09:53,330 ilang mag-aaral group at gusto mong napaka mabilis na i-automate ang pagpapadala ng mga email 216 00:09:53,330 --> 00:09:56,240 isa-isa sa bawat isa sa mga registrants, ka ng pagpunta sa maabot para sa 217 00:09:56,240 --> 00:09:59,240 isang wika mas mataas na antas kaysa C kaya na magsalita. 218 00:09:59,240 --> 00:10:04,060 Isang bagay na tulad ng PHP o Python, o Ruby, o isang kalahating dosenang iba na umiiral 219 00:10:04,060 --> 00:10:04,550 mga araw na ito. 220 00:10:04,550 --> 00:10:07,200 Ngunit ang mga tatlong ay marahil ang pinaka-usong ngayon. 221 00:10:07,200 --> 00:10:10,840 >> At ano ang ibig sabihin nito ay maaari mong buksan up ng isang text editor tulad ng gedit o 222 00:10:10,840 --> 00:10:14,030 pinaka-anumang bagay at pagkatapos ay simulan lamang pagsusulat ng code nang hindi na kinakailangang mag-alala 223 00:10:14,030 --> 00:10:17,800 tungkol sa kino-compile, nang hindi na kinakailangang talagang mag-alala tungkol sa pamamahala ng memorya, 224 00:10:17,800 --> 00:10:20,820 isinasaisip bagaman na ng kaunti sloppiness ay malaon bumalik 225 00:10:20,820 --> 00:10:24,790 upang kumagat sa iyo kung ang hanay ng data ay makakakuha ng mas malaki o ang problema ay makakakuha ng malaki. 226 00:10:24,790 --> 00:10:27,230 Ngunit ano ang ibig sabihin nito para sa sa amin ay ang sumusunod. 227 00:10:27,230 --> 00:10:29,860 >> Hayaan akong sige at magpatakbo ng speller itakda mula sa problema anim. 228 00:10:29,860 --> 00:10:33,480 Kaya ito ay ang aking trie-based na pagpapatupad na ginamit ko sa malaki 229 00:10:33,480 --> 00:10:35,500 board kung saan ako gumanap hindi kaya mahusay. 230 00:10:35,500 --> 00:10:38,720 Darating kami pabalik sa panahon ng linggo at muling bisitahin ang mga taong nag napupunta sa ibabaw ng 231 00:10:38,720 --> 00:10:40,430 malaking board sa aming huling panayam. 232 00:10:40,430 --> 00:10:44,520 Ngunit para sa ngayon, hayaan mo akong magpatuloy at lang tumakbo ang aking mga solusyon sa teksto, at kami na 233 00:10:44,520 --> 00:10:48,460 ang King James na Bibliya, at dito pumunta namin. 234 00:10:48,460 --> 00:10:51,080 >> Kaya mga ay ang lahat ng parang maling nabaybay salita out sa 235 00:10:51,080 --> 00:10:52,240 ang King James Bibliya. 236 00:10:52,240 --> 00:10:55,560 At kinuha ang aking pagpapatupad kalahati ng isang segundo sa kabuuan. 237 00:10:55,560 --> 00:10:58,270 Kaya hindi masyadong masamang sa ito partikular na computer. 238 00:10:58,270 --> 00:11:01,540 Ngunit sa tingin ng kung magkano code ko ay nagkaroon na magsulat. 239 00:11:01,540 --> 00:11:02,880 Isipin kung gaano kalaki ang code na kayo ay nagkaroon na magsulat. 240 00:11:02,880 --> 00:11:06,170 Isipin kung gaano karaming oras mo na ginugol sa D-hall o sa iyong dorm o kung saan man 241 00:11:06,170 --> 00:11:07,890 talaga coding up solusyon na iyon. 242 00:11:07,890 --> 00:11:11,850 >> Well, kung ako talagang magkaroon ng isang mas mataas na antas wika tulad ng PHP, itala ng 243 00:11:11,850 --> 00:11:13,350 kung ano ang maaari kong gawin dito. 244 00:11:13,350 --> 00:11:16,410 Una, ipagpalagay na ito ay sa halip ang pagbabahagi ng code. 245 00:11:16,410 --> 00:11:17,790 Ito ay isang file na tinatawag na speller. 246 00:11:17,790 --> 00:11:20,220 Ito ay magagamit bilang bahagi ng ngayong araw code pamamahagi. 247 00:11:20,220 --> 00:11:22,670 At pupuntahan ko iwagayway ang aking kamay sa pinaka- ng mga detalye, ngunit ito ay ang tunay 248 00:11:22,670 --> 00:11:25,500 isang kawili-wiling halimbawa ng kung paano maaari mong port ng wika 249 00:11:25,500 --> 00:11:28,870 tulad ng C sa ibabaw sa PHP. 250 00:11:28,870 --> 00:11:33,420 Literal na ako nagbukas ng dalawang mga bintana ng teksto, isa sa aking mga C bersyon ng speller.c, 251 00:11:33,420 --> 00:11:36,960 at lamang na sinimulan ko isinasalin ito sa aking magtungo sa PHP at pag-type ito gamit ang 252 00:11:36,960 --> 00:11:38,840 ang pinakamalapit na katumbas na pag-andar. 253 00:11:38,840 --> 00:11:40,100 >> Kaya ang ilan sa mga bagay na ito ay magkaiba. 254 00:11:40,100 --> 00:11:43,730 Nakakita kami huling beses na hindi gumagamit ng PHP isama sa masyadong sa parehong paraan. 255 00:11:43,730 --> 00:11:47,050 Gumagamit ito ay nangangailangan ng karaniwan, bagaman isama ang umiiral. 256 00:11:47,050 --> 00:11:50,330 Tukuyin ay isang maliit na naiiba mula sa # Tukuyin sa C, ngunit iyan ay 257 00:11:50,330 --> 00:11:51,890 paano namin gumawa ng isang pare-pareho. 258 00:11:51,890 --> 00:11:55,860 $ Argc ito ay lumiliko out umiiral sa PHP, kaya nakakita kami na bago. 259 00:11:55,860 --> 00:11:58,650 Ang mga ito ay lamang na variable, ang lahat ng na magsimula sa mga karatula dolyar. 260 00:11:58,650 --> 00:12:00,590 Isipin ang mga ito ay isang bungkos lamang ng mga lumulutang na mga puntos. 261 00:12:00,590 --> 00:12:03,970 >> Kaya mahaba kuwento maikli, ikaw ay malugod na tinatanggap i-flip sa pamamagitan ng ito kung malaman, ito ay 262 00:12:03,970 --> 00:12:10,010 halos isang line-para sa-linya ng conversion ng C bersyon ng speller.c sa PHP. 263 00:12:10,010 --> 00:12:12,630 At maaari mong gawin ito muli para sa kalahating dosenang iba pang mga wika. 264 00:12:12,630 --> 00:12:14,910 >> Ngunit kung ano ang kawili-wiling ay na ito. 265 00:12:14,910 --> 00:12:16,910 O kung ano ang lantaran disheartening ay ito. 266 00:12:16,910 --> 00:12:20,790 Hayaan akong sige at i-type ang tungkol sa dictionary.php, at claim na ako 267 00:12:20,790 --> 00:12:23,670 pagpunta sa sige at muling ipatupad itakda ang problema anim dito. 268 00:12:23,670 --> 00:12:27,530 >> Kaya hayaan muna ni magpanukala na sa ganitong file, na ipinapatupad sa 269 00:12:27,530 --> 00:12:30,550 PHP, kaya hayaan buksan sa akin ang aking mga tag tulad na. 270 00:12:30,550 --> 00:12:34,780 Hayaan akong bigyan ang sarili ko ng isang global variable, $ laki ay makakakuha ng zero. 271 00:12:34,780 --> 00:12:36,710 At ako pupunta upang bigyan sarili ko ng hash table. 272 00:12:36,710 --> 00:12:38,110 Makikita ko bang gamitin ang isang hash talahanayan para sa bagay na ito. 273 00:12:38,110 --> 00:12:42,070 Paano Ipinahahayag ko ng hash talahanayan sa PHP? 274 00:12:42,070 --> 00:12:42,990 Tapos na. 275 00:12:42,990 --> 00:12:43,980 OK. 276 00:12:43,980 --> 00:12:48,870 >> Kinakatawan Kaya bukas bracket malapit bracket ano sa PHP, bilang nasaksihan namin? 277 00:12:48,870 --> 00:12:51,850 Ang isang array, ngunit isang array na maaari maging isang nag-uugnay array. 278 00:12:51,850 --> 00:12:54,320 Ang isang nag-uugnay array ay isang istraktura ng data na 279 00:12:54,320 --> 00:12:55,860 iniuugnay ng mga susi na may halaga. 280 00:12:55,860 --> 00:12:59,430 >> Ngayon sa pinakasimpleng ayon sa bilang na-index array, mga pindutang iyon ay kung ano? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Zero, isa, dalawa, tatlo, tama? 283 00:13:03,960 --> 00:13:08,780 Bagay-bagay pabalik mula sa C. Lumang paaralan Ngunit kaya nito maging din tulad ng mga string ng foo, at bar, 284 00:13:08,780 --> 00:13:12,210 o makswel, o anumang katulad na string. 285 00:13:12,210 --> 00:13:14,240 Kaya ang maaari kong magamit na sa sandali lamang. 286 00:13:14,240 --> 00:13:17,550 >> Hayaan akong sige at ipinapahayag isang function tulad ng - 287 00:13:17,550 --> 00:13:19,020 gawin ang unang pag-load ng () ipaalam. 288 00:13:19,020 --> 00:13:20,690 Kaya pag-load ng function (). 289 00:13:20,690 --> 00:13:23,440 At PHP ay isang maliit na iba't ibang sa na ka literal type function, ngunit ikaw 290 00:13:23,440 --> 00:13:24,930 huwag mag-type ng uri ng return. 291 00:13:24,930 --> 00:13:28,760 Pupunta ako sa sige at sabihin na ang pag-load ng function () ay dapat kumuha sa 292 00:13:28,760 --> 00:13:31,000 argumento $ diksyunaryo, lamang tulad ng ginawa C bersyon. 293 00:13:31,000 --> 00:13:32,510 Ako paggawa na mula sa memorya. 294 00:13:32,510 --> 00:13:34,910 >> At ipanukala ko na ako pagpunta sa gawin ito. 295 00:13:34,910 --> 00:13:37,080 Lamang ako ng pagpunta sa gawin foreach. 296 00:13:37,080 --> 00:13:40,710 Pupunta ako sa tumawag sa isang function na tinatawag na mag-file (), pagpasa sa pangalan ng na 297 00:13:40,710 --> 00:13:44,990 maghain, kung saan ay ang variable $ Diksyunaryo habang $ salita. 298 00:13:44,990 --> 00:13:49,410 At pagkatapos ay sa loob ng aking para sa loop dito, ako pagpunta sa sige at mag-store sa aking 299 00:13:49,410 --> 00:13:57,440 $ Talahanayan na $ salita ay makakakuha ng totoo. 300 00:13:57,440 --> 00:13:57,918 Tapos na. 301 00:13:57,918 --> 00:14:01,264 Oh, maghintay. 302 00:14:01,264 --> 00:14:02,422 Tapos na. 303 00:14:02,422 --> 00:14:02,760 OK. 304 00:14:02,760 --> 00:14:04,970 >> Iyon ay ang function () pagkarga sabihin sa PHP. 305 00:14:04,970 --> 00:14:05,865 Ngayon, kung bakit ay na gumagana? 306 00:14:05,865 --> 00:14:07,010 At ako uri ng Pandaraya dito. 307 00:14:07,010 --> 00:14:09,980 >> Kaya, isa, foreach namin nakita sa madaling sabi huling beses. 308 00:14:09,980 --> 00:14:13,680 Nangangahulugan itong lamang na maaari mong umulit sa ibabaw isang array na walang Iniistorbo sa i 309 00:14:13,680 --> 00:14:16,150 at n at plus plus, at ang lahat ng iyon. 310 00:14:16,150 --> 00:14:21,350 Diksyunaryo ay siyempre ang file name, isang bagay tulad ng malaki o maliit, ang dalawang 311 00:14:21,350 --> 00:14:22,830 mga diksyunaryo ginamit namin huling beses. 312 00:14:22,830 --> 00:14:26,715 File ay isang pagpapaandar na bubukas up teksto file, bumabasa ng ito sa linya sa pamamagitan ng linya, at 313 00:14:26,715 --> 00:14:29,840 kamay-back ka ng isang napakalaking array, bawat isa sa kung saan ang mga elemento ay isang 314 00:14:29,840 --> 00:14:31,340 linya mula sa file na iyon. 315 00:14:31,340 --> 00:14:36,040 Kaya iyon ang kumbinasyon ng mga fopen, at fread, at habang loop, at fclose, 316 00:14:36,040 --> 00:14:37,080 at ang lahat ng iyon. 317 00:14:37,080 --> 00:14:40,150 Panghuli, bilang ng salita lamang ay nangangahulugan na ang variable na pupuntahan ko ay may access sa 318 00:14:40,150 --> 00:14:41,890 sa bawat pag-ulit sa loop. 319 00:14:41,890 --> 00:14:46,910 >> Kaya sa maikling, ang isang ito Liner dito ay nangangahulugang buksan ang file na kung saan ang pangalan ay nasa 320 00:14:46,910 --> 00:14:50,750 diksyonaryo, ang variable, umulit sa ibabaw ito linya sa pamamagitan ng linya, at sa bawat oras na makakuha ka 321 00:14:50,750 --> 00:14:54,290 isang linya, mag-imbak sa salita sa isang variable na tinatawag na, at pagkatapos ay gawin ang isang bagay na may salita. 322 00:14:54,290 --> 00:14:55,280 Ano ang gusto kong gawin? 323 00:14:55,280 --> 00:14:58,110 Gusto kong maglagay ng salita sa aking hash table. 324 00:14:58,110 --> 00:15:00,860 >> Well, maaari ko bang ilagay ang isang bagay sa aking hash talahanayan tulad ng sa C 325 00:15:00,860 --> 00:15:02,140 paggamit ng mga square bracket. 326 00:15:02,140 --> 00:15:03,660 Ito ang pangalan para sa aking hash table. 327 00:15:03,660 --> 00:15:07,180 Pupunta ako sa index sa na hash talahanayan sa lokasyon na ito. 328 00:15:07,180 --> 00:15:08,920 Kaya hindi bracket zero, hindi bracket isa. 329 00:15:08,920 --> 00:15:11,990 Bracket quote magpanipi isang bagay, ano naman ang salitang iyon ay. 330 00:15:11,990 --> 00:15:15,200 At tulad ng maaaring mayroon ka sa iyong hash talahanayan trabaho trie, mag-imbak ka lang 331 00:15:15,200 --> 00:15:17,650 epektibo ng Boolean, nang kataon lamang o tahasang. 332 00:15:17,650 --> 00:15:18,260 Tapos na. 333 00:15:18,260 --> 00:15:20,000 Ako pag-iimbak ng tunay na halaga. 334 00:15:20,000 --> 00:15:23,150 >> Ngayon ay mayroong dalawang bagay Ako pagputol sulok sa dito. 335 00:15:23,150 --> 00:15:27,720 Technically, may pupuntahan maging isang nakakainis na bagong linya, / n, sa dulo ng 336 00:15:27,720 --> 00:15:28,820 bawat isa sa mga salitang ito. 337 00:15:28,820 --> 00:15:31,770 Kaya dapat marahil tumawag ako ng isang function na PHP tinatawag na tumaga (), na 338 00:15:31,770 --> 00:15:33,460 masyadong literal tumaga na-off. 339 00:15:33,460 --> 00:15:35,020 At talagang kailangan kong gawin ang isa sa iba pang mga bagay. 340 00:15:35,020 --> 00:15:38,380 Dapat kong marahil dinagdagan ng laki sa bawat iteration, kaya ako pagpapanatiling track 341 00:15:38,380 --> 00:15:39,560 globally ng kung ano ito ay. 342 00:15:39,560 --> 00:15:43,180 At nang tapat, at ito ay isa sa mga stupider aspeto ng PHP, kung ikaw ay 343 00:15:43,180 --> 00:15:46,950 gamit ang isang global variable, kailangan mo upang tahasang sabihin na ikaw. 344 00:15:46,950 --> 00:15:51,670 Kaya pupuntahan ko talaga type sa global $ Laki, global $ talahanayan, at ngayon 345 00:15:51,670 --> 00:15:52,690 ang aking mga pag-andar ay kumpleto na. 346 00:15:52,690 --> 00:15:57,475 >> Kaya hindi masyadong kasing simple ng dati, ngunit marahil kinuha ng mas kaunting oras kaysa sa C 347 00:15:57,475 --> 00:15:58,220 bersyon, marahil? 348 00:15:58,220 --> 00:15:58,730 OK. 349 00:15:58,730 --> 00:16:00,390 >> Kaya gawin ng check function na () ngayon hayaan. 350 00:16:00,390 --> 00:16:04,300 Ni makita kung ito ang hindi bababa sa kinuha Hayaan ang oras sa dulo na ito kinuha sa amin sa C. Kaya 351 00:16:04,300 --> 00:16:06,500 ipaalam sa akin sige at ipinapahayag tingnan bilang isang katangian. 352 00:16:06,500 --> 00:16:09,070 Dadalhin sa argumento salita, na pagpunta sa darating mula speller. 353 00:16:09,070 --> 00:16:13,410 At lamang ako pupunta upang suriin kung ang sumusunod na variable isset, table 354 00:16:13,410 --> 00:16:18,400 bracket strtolower ng salita - 355 00:16:18,400 --> 00:16:20,590 sabihin balansehin ang lahat ng aking mga panaklong - 356 00:16:20,590 --> 00:16:24,275 pagkatapos ay nagbabalik ng tunay. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 Iba Pa - 359 00:16:28,460 --> 00:16:30,330 na noon ay talagang ang matapang bahagi ng programang ito. 360 00:16:30,330 --> 00:16:31,940 Iba Pa, bumalik hindi totoo. 361 00:16:31,940 --> 00:16:32,630 Tapos na. 362 00:16:32,630 --> 00:16:33,460 Iyon check (). 363 00:16:33,460 --> 00:16:34,520 >> Ngayon, kung bakit gumagana ito? 364 00:16:34,520 --> 00:16:37,040 Well, isa akong nakapasa sa isang salita, na isang string. 365 00:16:37,040 --> 00:16:41,400 Dalawang, ako ng pagsuri sa loob ng hash talahanayan, sino ang tinatawag na $ talahanayan. 366 00:16:41,400 --> 00:16:45,470 Ako ng pagpilit na ito sa lowercase sa pamamagitan ng pagtawag isang function medyo katulad tolower () sa 367 00:16:45,470 --> 00:16:48,580 C, ngunit ito ang ginagawa ng buong salita, Hindi isang solong character. 368 00:16:48,580 --> 00:16:52,680 At kung iyon ay itinakda, sa ibang salita doon ay magtakda ng isang halaga, sa ibang salita, 369 00:16:52,680 --> 00:16:54,880 kung ito ay totoo, at pagkatapos ay oo, ito ay isang salita. 370 00:16:54,880 --> 00:16:56,530 Dahil itong ilagay ko doon sa pag-load ng (). 371 00:16:56,530 --> 00:16:59,100 At kung hindi, ako pagpunta sa bumalik hindi totoo. 372 00:16:59,100 --> 00:17:00,090 >> Ngayon ang iba ay madaling. 373 00:17:00,090 --> 00:17:03,570 Laki function na (), paano ang gagawin ko ito? 374 00:17:03,570 --> 00:17:05,230 Lubos kong gawin bumalik $ laki. 375 00:17:05,230 --> 00:17:07,770 Ngunit technically kailangan kong gawin ito nakakainis na bagay. 376 00:17:07,770 --> 00:17:10,640 At talagang up dinggin, ako pagtputol masyadong maraming isang sulok. 377 00:17:10,640 --> 00:17:12,920 Talaga kailangan kong gawin global $ talahanayan. 378 00:17:12,920 --> 00:17:16,260 >> Ngunit na sinasabi, alisan ng bala). 379 00:17:16,260 --> 00:17:17,380 Alisan ng bala () ay kahanga-hangang. 380 00:17:17,380 --> 00:17:20,500 Ang function na mag-ibis (). 381 00:17:20,500 --> 00:17:23,990 Paano ko gusto kong ipatupad alisan ng bala ()? 382 00:17:23,990 --> 00:17:25,079 Tapos na. 383 00:17:25,079 --> 00:17:25,450 OK. 384 00:17:25,450 --> 00:17:28,900 >> Kaya mag-ibis (), sa pamamahala ng memorya ay ganap na kinuha pag-aalaga ng para sa iyo sa 385 00:17:28,900 --> 00:17:31,800 isang bagay tulad ng PHP at marami ng mga wika mas mataas na antas. 386 00:17:31,800 --> 00:17:32,600 Kaya ito ay kamangha-manghang. 387 00:17:32,600 --> 00:17:36,080 Tulad ng kung bakit ang impiyerno ay ginugol namin ang nakalipas walong linggo plus sa C pagsulat 388 00:17:36,080 --> 00:17:41,030 sa malas talaga mabagal, talagang oras pag-ubos ng mga problema sa sampu-sampung ng mga oras ng 389 00:17:41,030 --> 00:17:42,530 ng gumagana sa ilalim ng aming sinturon? 390 00:17:42,530 --> 00:17:46,110 >> Well, para sa isang bagay, ito ay maaaring gumana masarap para sa maliit na mga programa. 391 00:17:46,110 --> 00:17:47,840 Ito ay tiyak na sped up ang aking oras-develop. 392 00:17:47,840 --> 00:17:49,790 Ngunit sabihin makita kung ano ang mangyayari sa tunay na mundo. 393 00:17:49,790 --> 00:17:52,370 >> Hayaan akong pumunta sa direktoryong ito sa isang terminal na window. 394 00:17:52,370 --> 00:17:53,370 Mayroong speller. 395 00:17:53,370 --> 00:17:56,570 At mapansin bilang isang bukod, at puwede mong Nakaranas na ito sa problema set 396 00:17:56,570 --> 00:17:58,190 anim o problema set pitong. 397 00:17:58,190 --> 00:18:01,610 Wala ka mahigpit na kailangang mag- magtapos ang PHP file na may. php. 398 00:18:01,610 --> 00:18:05,250 Kung inilagay mo ang isang line na tulad nang unang isa sa tuktok napaka, na ang isang espesyal na linya 399 00:18:05,250 --> 00:18:10,980 ng syntax na mahalagang ay nangangahulugan mahanap ang programa na tinatawag na PHP at gamitin ito sa 400 00:18:10,980 --> 00:18:12,270 bigyang-kahulugan ang file na ito. 401 00:18:12,270 --> 00:18:15,410 Kaya ba talagang nakakaalam ngayon walang sinuman na Ako nagpapatakbo ng isang program na PHP. 402 00:18:15,410 --> 00:18:19,860 Maaari ko ba itong tumakbo lamang bilang bagaman ito ay isang bagay na pinagsama-sama sa C. 403 00:18:19,860 --> 00:18:20,650 >> Ngunit narito ang bagay. 404 00:18:20,650 --> 00:18:21,600 Talaga, ni gawin muli ito ipaalam. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 Mayroong speller. 407 00:18:25,390 --> 00:18:26,720 OK, 0.44 segundo. 408 00:18:26,720 --> 00:18:28,080 Nakakuha ito ng mas mabilis na oras na ito. 409 00:18:28,080 --> 00:18:29,745 >> Ngayon pumunta sa ang bersyon na PHP ipaalam. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Ugnay Nice. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 Ngunit sa tingin lamang kung magkano ang oras Naka-save na ako sa oras ng opisina. 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 >> Kaya 3.59 segundo, na talagang hindi umaandar ang tumpak na alinman. 417 00:19:01,020 --> 00:19:03,710 Ngunit iyon ay dahil mahaba kuwento maikli, kapag tapos ka sa pag-print out ito ng napakalaking halaga 418 00:19:03,710 --> 00:19:06,840 ng mga bagay-bagay sa screen, na mismo slows bagay pababa. 419 00:19:06,840 --> 00:19:11,260 Ano ito talaga ang kumuha ng CPU sa appliance ay 3.59 segundo, sa 420 00:19:11,260 --> 00:19:15,260 pag-ibahin sa C, na kung saan kinuha 0.44 segundo pinaka-kamakailan. 421 00:19:15,260 --> 00:19:17,620 Iyon ay tunay na isang order ng magnitude na naiiba. 422 00:19:17,620 --> 00:19:20,280 >> Kaya kung saan nanggagaling ay presyo na mula sa? 423 00:19:20,280 --> 00:19:21,790 Bakit ito ay kaya magkano ang mas mabagal? 424 00:19:21,790 --> 00:19:24,220 Bakit ang gumanap kaya mahina PHP? 425 00:19:24,220 --> 00:19:25,242 Danielle? 426 00:19:25,242 --> 00:19:26,550 >> Madla: Hindi mo ginawa talaga gumamit ng hash table. 427 00:19:26,550 --> 00:19:27,710 >> David MALAN: ko ay hindi talaga gumamit ng hash table. 428 00:19:27,710 --> 00:19:28,760 Kaya uri ng ko ng ginawa. 429 00:19:28,760 --> 00:19:29,870 Kaya ito ay isang nag-uugnay array. 430 00:19:29,870 --> 00:19:33,650 Malamang kung ang mga tao sa PHP ay talaga ang smart, ginagamit ang mga ito sa ilalim ng 431 00:19:33,650 --> 00:19:39,520 hood isang aktwal na talahanayan hash ipinatupad sa isang bagay tulad ng C o C + +. 432 00:19:39,520 --> 00:19:41,290 Ngunit. 433 00:19:41,290 --> 00:19:42,760 Oo. 434 00:19:42,760 --> 00:19:44,010 >> Madla: [hindi marinig]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> David MALAN: Oo. 437 00:19:47,080 --> 00:19:50,780 Kaya ang bawat isa sa mga pag-andar na sinulat ko ngayon - talaga, maaari mong sabihin na sa sandaling higit sa isang 438 00:19:50,780 --> 00:19:51,480 maliit na louder? 439 00:19:51,480 --> 00:19:54,509 >> Madla: Ang bawat isa sa ang mga function na mong isama ay may maraming mga iba pang full 440 00:19:54,509 --> 00:19:56,610 kapasidad sa - 441 00:19:56,610 --> 00:19:57,550 >> David MALAN: Kaya na masyado nang totoo. 442 00:19:57,550 --> 00:20:01,490 Maraming higit pang overhead na kami hindi talaga nakikita sa pamamagitan ng tumututok lamang sa 443 00:20:01,490 --> 00:20:03,730 dictionary.php, na kung saan ko lang ang sinulat ni. 444 00:20:03,730 --> 00:20:08,020 Sa pamamagitan ng kaibahan, mayroong isang buong interpreter pagpunta sa background. 445 00:20:08,020 --> 00:20:12,040 Sa katunayan, kapag nagpatakbo ako sa programang ito, ito Hindi tumatakbo ang pinagsama-sama ng mga zero at mga bago 446 00:20:12,040 --> 00:20:14,290 Idinisenyo para sa aking Intel CPU. 447 00:20:14,290 --> 00:20:19,270 Sa halip, ito ay tumatakbo ang linya sa pamamagitan ng linya Code na PHP na mukhang eksakto 448 00:20:19,270 --> 00:20:20,350 tulad namin nai-type ito. 449 00:20:20,350 --> 00:20:22,475 At kaya sa tuwing ginagamit mo ang isang kahulugan ng wika, mo 450 00:20:22,475 --> 00:20:23,850 talaga ang babayaran ito presyo. 451 00:20:23,850 --> 00:20:27,010 Ito ay pagpunta sa tumagal ng ilang oras upang basahin ang ang iyong file itaas hanggang sa ibaba, ang natitira upang 452 00:20:27,010 --> 00:20:30,740 kanan, at pagkatapos ay isakatuparan bawat linya muli at muli. 453 00:20:30,740 --> 00:20:34,250 >> Ngayon sa katotohanan, lalo na sa web, Maaari mong aktwal na pabilisin ang prosesong ito 454 00:20:34,250 --> 00:20:38,660 sa pamamagitan ng caching ang mga resulta ng Code na PHP ini-kahulugan. 455 00:20:38,660 --> 00:20:41,640 At na ang may katuturan sa web, dahil kung mayroon kang hindi isa ng gumagamit tulad ng 456 00:20:41,640 --> 00:20:46,300 sa akin dito, ngunit 1,000 o 10,000 mga gumagamit, pagkatapos ay siguro ang unang pagkakataon na ang file ay 457 00:20:46,300 --> 00:20:49,050 na-access ito ay mabagal, ngunit pagkatapos noon ito ay lubhang mas mabilis. 458 00:20:49,050 --> 00:20:51,000 >> Ngunit ito masyadong, muli, ay isang kalakalan-off. 459 00:20:51,000 --> 00:20:53,870 At para sa isang bagay tulad ng isang data pananaliksik itakda, o kahit na isang bagay tulad ng malaking 460 00:20:53,870 --> 00:20:58,330 ito, ang iyong mga user nasain kalaunan simulan sa pakiramdam na paghina. 461 00:20:58,330 --> 00:21:02,670 >> Kaya sa maikling, kahulugan ng mga wika ay Sobra sa katanyagan, napaka-tanyag, at 462 00:21:02,670 --> 00:21:06,710 nang tapat ay marahil ang mga mga wika dapat maabot para kapag paglutas ng mga problema 463 00:21:06,710 --> 00:21:08,200 kasunod sa CS50. 464 00:21:08,200 --> 00:21:12,720 Ngunit mapagtanto kung magkano ang talagang paglalaan para sa ipinagkaloob sa ilalim ng hood 465 00:21:12,720 --> 00:21:15,910 talaga mga nakalipas na ilang linggo sa hash mga talahanayan, at mga puno, at pagsusubok, 466 00:21:15,910 --> 00:21:20,770 na kung saan ay ginagamit sa huli upang aktwal na ipatupad ang mga bagay tulad ng open bracket, 467 00:21:20,770 --> 00:21:24,200 square bracket, na kung saan kami ay maaari na ngayong mapasalamat mang-ahas. 468 00:21:24,200 --> 00:21:26,360 >> Kaya ipaalam sa tumagal ng isang hitsura ngayon sa web konteksto ito. 469 00:21:26,360 --> 00:21:29,890 At nabanggit ko huling beses na mayroong ng grupo ng mga superglobals sa PHP na 470 00:21:29,890 --> 00:21:32,490 ay hindi talaga may-katuturang sa command line. 471 00:21:32,490 --> 00:21:36,210 Ang mga ito ay mas may-katuturan sa konteksto ng gamit ang PHP sa isang web konteksto. 472 00:21:36,210 --> 00:21:41,220 Kaya't ang pagpapatakbo ng PHP sa isang web server sa pagkakasunud-sunod upang makabuo ng mga bagay tulad ng HTML. 473 00:21:41,220 --> 00:21:44,540 >> At glanced namin sa $ _GET at $ _POST, at na kung saan awtomatikong mga gumagamit ' 474 00:21:44,540 --> 00:21:49,100 ay nagtatapos up input lamang kung nagsumite ka ng bumubuo sa isang file na nagtatapos sa. PHP sa isang web 475 00:21:49,100 --> 00:21:50,460 server tulad ng appliance. 476 00:21:50,460 --> 00:21:53,310 Ngunit sa madaling sabi tingnan natin hayaan $ _COOKIE At $ _SESSION. 477 00:21:53,310 --> 00:21:56,670 >> Sa mga tuntunin lego, na kung ano ang isang cookie bilang Nauunawaan mo ito sa konteksto ng 478 00:21:56,670 --> 00:21:58,220 gamit ang web? 479 00:21:58,220 --> 00:21:59,450 >> Madla: File sa computer. 480 00:21:59,450 --> 00:21:59,920 >> David MALAN: Oo. 481 00:21:59,920 --> 00:22:03,500 Ito ay isang file sa computer ng gumagamit nakatanim sa pamamagitan ng anumang website 482 00:22:03,500 --> 00:22:04,410 mangyari mong bisitahin. 483 00:22:04,410 --> 00:22:07,334 Kaya kapag pumunta ka sa Facebook, kapag pumunta sa iyo sa bankofamerica.com, kapag pumunta sa iyo 484 00:22:07,334 --> 00:22:10,330 sa google.com, kapag pumunta ka sa halos anumang website sa mundo mga araw na ito, 485 00:22:10,330 --> 00:22:14,850 kabilang ang cs50.net, ang isang cookie ay nakatanim sa iyong computer, na kung saan ay 486 00:22:14,850 --> 00:22:19,800 alinman sa isang halaga na naka-imbak sa RAM sa iyong computer sa memorya ng iyong browser, o 487 00:22:19,800 --> 00:22:22,800 minsan sa katunayan ng isang file na naka-imbak sa iyong hard drive. 488 00:22:22,800 --> 00:22:26,960 >> At kung ano ang karaniwang naka-imbak sa file na iyon ay hindi ang iyong user name, hindi ang iyong 489 00:22:26,960 --> 00:22:31,060 password, karaniwang hindi isang bagay sensitive maliban kung ang website ay hindi kaya 490 00:22:31,060 --> 00:22:35,040 mabuti sa kanilang seguridad, ngunit sa halip ito ay isang malaking natatanging identifier kasama ng 491 00:22:35,040 --> 00:22:35,680 iba pang mga bagay. 492 00:22:35,680 --> 00:22:38,920 Isa itong malaking random na numero nakatanim sa iyong computer na ngunit maaari mong isipin bilang 493 00:22:38,920 --> 00:22:42,740 uri ng isang virtual na kamay stamp tulad ng mula sa isang club o ilang amusement park na 494 00:22:42,740 --> 00:22:47,160 ay nagbibigay-daan sa mga kawani, ang mga may-ari ng na serbisyo, upang matandaan kung sino ka. 495 00:22:47,160 --> 00:22:51,030 Kaya kung ang malaking random na numero ay tulad ng 12345678, bagaman na malinaw naman 496 00:22:51,030 --> 00:22:54,180 hindi masyadong random, sa tingin ng na bilang kamay stamp na kapag binisita mo ang 497 00:22:54,180 --> 00:22:57,930 facebook.com para sa unang pagkakataon, ang mga ito tatakan ng numerong iyon sa iyong kamay. 498 00:22:57,930 --> 00:23:01,510 At pagkatapos ay dahil nagsasalita ka ng HTTP, mo pagiging isang browser, at dahil Facebook 499 00:23:01,510 --> 00:23:06,440 malinaw naman nagsasalita ang parehong bilang isang web server, sinasabi ng protocol HTTP na 500 00:23:06,440 --> 00:23:09,930 anumang oras sa dakong huli kang bumisita facebook.com, maging ito man ay isang pangalawang 501 00:23:09,930 --> 00:23:13,560 mamaya, isang oras sa paglaon, kahit sa susunod na araw, kaya hangga't mayroon kang hindi tahasan 502 00:23:13,560 --> 00:23:17,050 log out, na epektibong ay tulad ng paghuhugas ng iyong mga kamay. 503 00:23:17,050 --> 00:23:20,280 HTTP sabi dapat mong ipakita ang iyong kamay stamp sa bawat oras na 504 00:23:20,280 --> 00:23:22,020 bumalik sa website na iyon. 505 00:23:22,020 --> 00:23:24,390 >> Ano Facebook pagkatapos ay ay sila Tignan natin ang kamay stamp at 506 00:23:24,390 --> 00:23:26,850 sinasabi nila, oh, 123456789. 507 00:23:26,850 --> 00:23:30,260 Hindi ko alam kung sa unang sulyap na ito ay David Malan sa Cambridge, 508 00:23:30,260 --> 00:23:34,690 Massachusetts, ngunit maaari nilang tingnan ang kanilang database at sabihin, oh, ang tao 509 00:23:34,690 --> 00:23:39,930 sa kung saan ang computer na namin nakatanim 123456789 ay David Malan mula sa Cambridge, 510 00:23:39,930 --> 00:23:40,440 Massachusetts. 511 00:23:40,440 --> 00:23:46,000 Ipakita sa gumagamit na pagkatapos ng kanyang profile Hayaang pahina o ang kanyang Feed News. 512 00:23:46,000 --> 00:23:49,660 >> Ngunit mayroong problema dito kung ito ay kung paano talaga gumagana ang web. 513 00:23:49,660 --> 00:23:51,390 Hayaan ang kumuha ng isang pagtingin sa isang mabilis na halimbawa. 514 00:23:51,390 --> 00:23:55,190 Sabihin talagang pumunta sa sinasabi facebook.com. 515 00:23:55,190 --> 00:23:58,130 Ngunit bago kami pumunta doon, sabihin sa akin sige at buksan up ang Chrome ng 516 00:23:58,130 --> 00:23:59,790 Inspector pababa dito. 517 00:23:59,790 --> 00:24:01,140 Hayaan akong tumingin sa tab na network. 518 00:24:01,140 --> 00:24:06,020 At ngayon sabihin sige at i-type sa https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 At ako paggawa na kaya na hindi namin makita lahat ng mga pag-redirect at pag-aaksaya 520 00:24:09,410 --> 00:24:10,660 oras ng pagtingin sa mga. 521 00:24:10,660 --> 00:24:12,690 Hayaan ang mga hit sa akin ang enter. 522 00:24:12,690 --> 00:24:13,130 >> Ayos lang. 523 00:24:13,130 --> 00:24:14,580 Nakakakita kami ng isang buong bungkos ng mga kahilingan. 524 00:24:14,580 --> 00:24:15,640 Mayroong pagdating Facebook. 525 00:24:15,640 --> 00:24:16,930 Mayroong ang maramihang mga file. 526 00:24:16,930 --> 00:24:19,290 At dito, bawat aking pagbanggit ng latency huling oras, na 527 00:24:19,290 --> 00:24:21,240 ng maraming mga kahilingan ng HTTP. 528 00:24:21,240 --> 00:24:23,700 Ngunit ang unang isa ay marahil ang pinaka-kagiliw-giliw. 529 00:24:23,700 --> 00:24:26,420 >> Kaya ni-scroll pababa dito hayaan, at Kukunin ko mag-zoom in sa isang segundo. 530 00:24:26,420 --> 00:24:29,090 Ito ay magiging uri ng gulo, ngunit sabihin makita. 531 00:24:29,090 --> 00:24:31,660 Facebook ay pagpapadala sa amin ng isang ang maramihang mga bagay-bagay. 532 00:24:31,660 --> 00:24:33,490 >> Ngunit aba, kawili-wili. 533 00:24:33,490 --> 00:24:37,880 Ang mga ito ay planting hindi isa, ngunit apat kamay selyo papunta sa aking kamay dito. 534 00:24:37,880 --> 00:24:40,400 Set-cookie, Set-cookie, set-cookie, set-cookie. 535 00:24:40,400 --> 00:24:44,030 At may ilang mga tampok dito. 536 00:24:44,030 --> 00:24:46,170 Ang lahat ng mga ito banggitin ang ilang mga uri ng pag-expire. 537 00:24:46,170 --> 00:24:50,090 At mukhang Facebook ay umaasa upang tandaan ako hanggang 2015. 538 00:24:50,090 --> 00:24:53,670 Kaya na siguro ang oras sa pamamagitan ng kung aling mga Dapat ba akong mag-log out o idedetalye lang nila 539 00:24:53,670 --> 00:24:55,710 awtomatikong ipinapalagay ako hindi bumabalik. 540 00:24:55,710 --> 00:24:57,840 Kaya na talagang isang disenteng tagal ng oras. 541 00:24:57,840 --> 00:24:59,170 >> At mayroong ilang mga iba pang mga bagay na nangyayari sa dito. 542 00:24:59,170 --> 00:25:03,036 Lumilitaw ang cookie na ito upang maging papuwersa tinanggal na ni na sinasabi expire na ito sa 1970 543 00:25:03,036 --> 00:25:04,460 bago umiral ang mga cookies. 544 00:25:04,460 --> 00:25:06,510 Kaya ang browser ay lamang ng pagpunta upang angkinin ang OK, na tulad ng 545 00:25:06,510 --> 00:25:07,910 paghuhugas ng mga kamay stamp. 546 00:25:07,910 --> 00:25:11,240 >> Ngunit ngayon kapag gumagawa ng aking browser isang kasunod na kahilingan - 547 00:25:11,240 --> 00:25:14,340 ipaalam sa akin sige at gawin ito muli at reload. 548 00:25:14,340 --> 00:25:18,170 Ngayon hayaan mo akong mag-scroll pabalik sa tuktok kahilingan at bumaba 549 00:25:18,170 --> 00:25:20,760 dito, humiling ng header. 550 00:25:20,760 --> 00:25:21,390 Pansinin na ito. 551 00:25:21,390 --> 00:25:25,280 Kaya ngayon ako sa ilalim ng hindi mga header ng tugon, ngunit napansin ang nakasulat sa kahilingan header. 552 00:25:25,280 --> 00:25:29,220 At napansin na ang aking browser bilang bahagi ng kahilingan nito pagkatapos ng pagpindot reload na may 553 00:25:29,220 --> 00:25:32,780 Nagpadala ng hindi bababa sa mga sumusunod na impormasyon. 554 00:25:32,780 --> 00:25:34,670 Hindi nakatakda-cookie, ngunit cookie. 555 00:25:34,670 --> 00:25:38,750 Kaya ito ay ang linya, ang HTTP header kaya magsalita, kung saan ang aking browser ay uri 556 00:25:38,750 --> 00:25:43,340 ng nang wala ang aking pag-alam ito nagtatanghal ang aking kamay para sa inspeksyon Facebook ni. 557 00:25:43,340 --> 00:25:46,020 >> Kaya mga cookies na ito ay maaaring maging ginamit pagkatapos ay para sa kung ano? 558 00:25:46,020 --> 00:25:49,420 Upang matandaan kung sino ka, o tandaan kung paano maraming beses ka nakapunta doon, o 559 00:25:49,420 --> 00:25:50,280 talaga kahit ano. 560 00:25:50,280 --> 00:25:52,742 >> Kaya dito ay counter.php. 561 00:25:52,742 --> 00:25:53,780 At hayaan mo akong mag-zoom in sa mga font. 562 00:25:53,780 --> 00:25:58,380 At sa bawat oras na i-reload ko ang pahinang ito, na notice ito ay pag-alala kung gaano karaming beses 563 00:25:58,380 --> 00:25:59,250 Nakapunta ako doon. 564 00:25:59,250 --> 00:26:00,570 Well, hindi iyon ang lahat na kahanga-hanga. 565 00:26:00,570 --> 00:26:03,140 Isara ni lamang na tab Hayaan, at ngayon sabihin bumalik sa 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> Oh, na ay nakawiwili. 568 00:26:08,970 --> 00:26:10,960 Ito remembered pa rin, kahit na bagama't sarado ko ang tab. 569 00:26:10,960 --> 00:26:14,010 At nang tapat, kung isinara ko ang browser, kung naipatupad sa tamang paraan, ako 570 00:26:14,010 --> 00:26:18,950 maaari pa ring tandaan na ang user na ito ay sino siya ay ang unang pagkakataon, at 571 00:26:18,950 --> 00:26:22,840 isang beses lang pumunta ako sa menu ng Chrome, na sa paglipas dito ay dito, at pumunta sa 572 00:26:22,840 --> 00:26:25,990 Kasaysayan, at i-click ang I-clear ang Data ng Pag-browse, bilang ay maaaring magkaroon ng ilan sa inyo sa 573 00:26:25,990 --> 00:26:33,050 nakaraan, lamang pagkatapos ang iyong cookies talaga matatanggal sa panahon ng web 574 00:26:33,050 --> 00:26:33,970 pag-unlad. 575 00:26:33,970 --> 00:26:35,340 >> Kaya, kung pumunta kami - 576 00:26:35,340 --> 00:26:37,080 ni isara up gedit dito ipaalam. 577 00:26:37,080 --> 00:26:38,910 At kung pumunta kami ngayon sa file na ito. 578 00:26:38,910 --> 00:26:44,210 Hayaan akong pumunta sa aming vhosts / localhost / publiko, at ipaalam sa akin gawin 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Pansinin na ito ay isang magandang simpleng programa. 581 00:26:48,350 --> 00:26:50,250 Ito ay isang medyo simple website. 582 00:26:50,250 --> 00:26:51,770 >> Kaya sa tuktok ng file lamang ang mga komento. 583 00:26:51,770 --> 00:26:54,930 Ngunit narito ang isang bagong linya na maaari mong Nakita nasa p-set pitong, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 Ito ay isang linya ng code na PHP na lubos na nagsasabi sa mga web server, ginagawa 586 00:27:00,380 --> 00:27:03,400 sigurado na tatakan ng mga kamay at gumawa ng mga Siguraduhing suriin ang kamay ng mga selyo. 587 00:27:03,400 --> 00:27:06,810 Iyon lang ang linya na gumagana, at ito ang lahat ng mga proseso na para sa amin. 588 00:27:06,810 --> 00:27:09,510 Pagkatapos mapansin lang ang nakuha ko dalawang sangay dito. 589 00:27:09,510 --> 00:27:14,150 Kung ang sagot na key sa loob ng ito espesyal na global variable na tinatawag na 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Ay naka-set - sa ibang salita, kung mayroong ilang mga halaga doon - 591 00:27:18,010 --> 00:27:22,440 hayaan makakuha ng ito at mag-store ito sa isang lokal na variable na tinatawag na $ counter. 592 00:27:22,440 --> 00:27:27,000 Iba Pa, magtalaga ng $ counter ipaalam ang default na halaga ng 0. 593 00:27:27,000 --> 00:27:30,320 >> Ngayon narito ang isang aspeto ng PHP na Parehong pagpapala at isang sumpa. 594 00:27:30,320 --> 00:27:32,080 PHP ay isang maliit na nanggigitata. 595 00:27:32,080 --> 00:27:35,160 Kaya samantalang sa C, ano ang gagawin ang ang saklaw ng counter naging 596 00:27:35,160 --> 00:27:36,725 alinman dito o dito? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> Ito sana ay nai ikukulong sa mga kulot tirante. 599 00:27:41,690 --> 00:27:42,090 Hulaan kung ano? 600 00:27:42,090 --> 00:27:46,920 Sa PHP, umiiral na ito kahit na sa labas ng mga kulot tirante, dito, at dito, 601 00:27:46,920 --> 00:27:49,120 at dito, at dito, at kahit pababa sa ibaba. 602 00:27:49,120 --> 00:27:52,400 Kaya sinasabi ko ito ay isang pagpapala sa kamalayan na hindi mo kailangang isipin bilang 603 00:27:52,400 --> 00:27:54,070 matigas tulad ng ginawa namin linggo nakaraan. 604 00:27:54,070 --> 00:27:56,880 Ngunit ito ay din ng isang bit ng isang sumpa sa na hindi mahalaga kung saan mo gamitin ang isang variable sa 605 00:27:56,880 --> 00:28:00,020 PHP, ng hindi bababa sa isang program na tulad nito, ito ay naa-access sa buong mundo para sa 606 00:28:00,020 --> 00:28:01,170 mas mahusay o mas masahol pa para sa. 607 00:28:01,170 --> 00:28:06,130 Kaya ikaw ay may upang panatilihin sa isip na ngayon ang iyong mga variable ay hindi maaaring hindi natukoy. 608 00:28:06,130 --> 00:28:07,640 Maaaring tinukoy mo ang mga ito sa ibang lugar. 609 00:28:07,640 --> 00:28:09,460 >> Ngunit kung ano ako pagpunta sa gawin sa huli? 610 00:28:09,460 --> 00:28:13,160 Pupunta ako upang mag-imbak sa loob ng global na variable na bilang isang halaga ng 611 00:28:13,160 --> 00:28:17,060 counter key ang resulta ng paggawa counter plus 1. 612 00:28:17,060 --> 00:28:18,910 Kaya ito ay lamang ang palatuusan na nagsasagawa ng 613 00:28:18,910 --> 00:28:20,590 incrementation ng na counter. 614 00:28:20,590 --> 00:28:24,850 At ang katotohanan na ako ang pag-iimbak na halaga pabalik dito ay kung nangangahulugan na 615 00:28:24,850 --> 00:28:29,970 mahalagang i-update ang database upang tandaan na 123456789 gumagamit ay naging 616 00:28:29,970 --> 00:28:31,010 dito dalawang beses. 617 00:28:31,010 --> 00:28:33,780 At kapag ito gagawin ko muli sa susunod na oras ko i-reload ang pahina, ito ay pagpunta sa suriin 618 00:28:33,780 --> 00:28:36,710 ang aking kamay stamp at sabihin, oh, 123456789 gumagamit ay mayroon na ngayong 619 00:28:36,710 --> 00:28:38,410 inalisan dito tatlong beses. 620 00:28:38,410 --> 00:28:43,390 >> At kaya kung ano ang PHP at katulad na mga wika ang ginagawa para sa atin ay ang mga ito ay ang pag-uunawa 621 00:28:43,390 --> 00:28:47,720 kung paano at kung saan at kung gaano katagal mag-imbak ng mga halaga sa ito espesyal na 622 00:28:47,720 --> 00:28:48,830 superglobal. 623 00:28:48,830 --> 00:28:52,750 At ito superglobal sa susunod na oras ko bisitahin ang pahina ay isang uri ng magically 624 00:28:52,750 --> 00:28:57,440 pre-may naninirahan, na puno ng mga halaga na ay doon sa huling panahon na binisita mo ang, 625 00:28:57,440 --> 00:29:02,310 kung na noon ay isang segundong nakalipas, sa isang linggo nakaraan, o sa 2013 at ngayon kami ay pakikipag-usap 626 00:29:02,310 --> 00:29:03,790 tungkol sa 2015. 627 00:29:03,790 --> 00:29:07,600 PHP at ang pag-aalaga tumagal web server ng lahat ng iyon para sa iyo. 628 00:29:07,600 --> 00:29:08,850 >> Madla: [hindi marinig]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> David MALAN: Variable sa PHP ay mahalagang palaging global maliban kung 631 00:29:15,760 --> 00:29:18,400 Ipinahahayag ang mga ito sa loob ng isang function, at pagkatapos ay ang mga ito ay lokal sa 632 00:29:18,400 --> 00:29:19,420 ang pag-andar lamang. 633 00:29:19,420 --> 00:29:22,300 Ngunit dahil hindi ko na nakasulat ang anumang mga mga pag-andar, ang mga ito ay epektibong 634 00:29:22,300 --> 00:29:25,090 global sa buong aking buong file dito. 635 00:29:25,090 --> 00:29:26,040 >> Madla: Mayroon bang paraan upang gumawa ng mga ito lokal? 636 00:29:26,040 --> 00:29:28,470 >> David MALAN: Mayroon bang anumang paraan upang gumawa ng mga ito lokal? 637 00:29:28,470 --> 00:29:30,680 Tanging sa pamamagitan ng pambalot na ang mga ito sa mga pag-andar. 638 00:29:30,680 --> 00:29:32,790 Alin sa pinakabagong bersyon ng PHP, maaari mong gawin ito gamit ang 639 00:29:32,790 --> 00:29:34,130 isang hindi nakikilalang function. 640 00:29:34,130 --> 00:29:35,930 Ngunit higit pa sa na sa konteksto ng JavaScript. 641 00:29:35,930 --> 00:29:37,260 Ngunit ang maikling sagot ay hindi. 642 00:29:37,260 --> 00:29:40,888 Ang isang mas mahabang sagot ay oo. 643 00:29:40,888 --> 00:29:42,380 Nice. 644 00:29:42,380 --> 00:29:43,380 Magandang katanungan pagsusulit. 645 00:29:43,380 --> 00:29:43,930 Ayos lang. 646 00:29:43,930 --> 00:29:47,760 >> Kaya bilang wakas, ang pahina mismo ay talagang kaakit-akit simple. 647 00:29:47,760 --> 00:29:51,470 Pansinin na sa sandaling lumabas ako mode PHP, pagpapabalik na ang lahat ng mga bagay-bagay na ito pababa 648 00:29:51,470 --> 00:29:53,700 sa ibaba ay pagpunta lamang upang dumura out raw sa browser. 649 00:29:53,700 --> 00:29:57,050 Alin ang masarap, dahil gusto ko upang magpadala ng ang gumagamit ng ilang mga HTML, ngunit ko nais 650 00:29:57,050 --> 00:29:59,140 upang magilas na update na HTML. 651 00:29:59,140 --> 00:30:03,930 At isang paraan maaari kong gawin ito ay upang ayusin ng masyadong mabilis drop pabalik sa PHP 652 00:30:03,930 --> 00:30:07,730 mode, gamitin ang open bracket tandang pananong katumbas lagdaan, at pagkatapos ay i-output ang halaga 653 00:30:07,730 --> 00:30:08,650 ng counter. 654 00:30:08,650 --> 00:30:12,360 >> O kung ito ang hitsura ng isang maliit na misteriyoso, ito katumbas ng pag-sign ay talagang lamang ng ilang 655 00:30:12,360 --> 00:30:16,190 sintaktik asukal para sa printf ($ counter). 656 00:30:16,190 --> 00:30:19,160 Ngunit nang tapat, na ang isang ilan lamang mainit ang ulo at isang maliit na nakakainis na i-type. 657 00:30:19,160 --> 00:30:23,660 Kaya PHP napaka mabuti Nag-aalok ang tampok na ito kung saan maaari kang lamang ito sinasabi nang higit pa 658 00:30:23,660 --> 00:30:25,450 succinctly sa parehong paraan. 659 00:30:25,450 --> 00:30:26,940 >> Kaya kung ano ang nangyayari sa ilalim ng hood? 660 00:30:26,940 --> 00:30:31,210 Ng mabilis na makita ang network ng Hayaan tab dito para counter.php. 661 00:30:31,210 --> 00:30:35,090 At ipaalam sa akin sige at unang i-clear ng iyong cookies ipaalam. 662 00:30:35,090 --> 00:30:38,670 Sabihin-clear ang data sa pag-browse mula noong sa simula ng panahon. 663 00:30:38,670 --> 00:30:39,680 Ngayon ay bumalik sa paglipas dito ipaalam. 664 00:30:39,680 --> 00:30:41,340 Ngayon i-reload ang pahina ipaalam. 665 00:30:41,340 --> 00:30:42,170 At ako pabalik sa zero. 666 00:30:42,170 --> 00:30:44,810 Dahil ang aking kamay stamp ay na-washed, Ako ngayon kumuha ng bagong cookie. 667 00:30:44,810 --> 00:30:48,780 >> Sa katunayan kung tiningnan ko sa tab na network at tumingin sa mga header ng tugon, abiso 668 00:30:48,780 --> 00:30:51,960 na ang appliance ay pagpapadala sa akin isang cookie na ang pangalan ay medo 669 00:30:51,960 --> 00:30:55,820 nagkataon, ngunit uri ng makatwirang, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 At ito ay pagpapadala sa akin ito talaga malaki random na numero. 671 00:30:58,440 --> 00:30:59,440 Ito ay hindi pa isang numero. 672 00:30:59,440 --> 00:31:00,390 Ito ay hindi masyadong hexadecimal. 673 00:31:00,390 --> 00:31:03,600 Ito ay ilang mga uri ng mga alphanumeric string, ngunit baka ito ay random. 674 00:31:03,600 --> 00:31:06,830 At iyon ay ang kamay stamp kaya upang magsalita na ako nagre-refer sa. 675 00:31:06,830 --> 00:31:11,960 >> Samantala kung nag-click ako reload at pagkatapos ay tumingin sa ito pangalawang linya para sa aking pangalawang 676 00:31:11,960 --> 00:31:17,600 kahilingan, notice ngayon na ang aking kahilingan mga header isama katumbas ito PHPSESSID, 677 00:31:17,600 --> 00:31:19,390 hindi set-cookie, ngunit cookie lamang. 678 00:31:19,390 --> 00:31:22,950 At iyon ang pagtatanghal aking browser ng aking kamay stamp. 679 00:31:22,950 --> 00:31:28,820 >> Kaya ngayon bilang isang teaser, at kaming makipag-usap nang higit pa tungkol dito sa o kaya sa isang linggo, ngunit 680 00:31:28,820 --> 00:31:31,590 sa anong paraan ang mga ito gawin mo maaaring masugatan, iyong Facebook account 681 00:31:31,590 --> 00:31:34,137 maaaring masugatan, at iba pang mga naturang mga account ng kahinaan? 682 00:31:34,137 --> 00:31:35,510 >> Madla: Kung ang isang tao ay may ang iyong mga cookie. 683 00:31:35,510 --> 00:31:36,750 >> David MALAN: Oo, kung may isang taong May iyong cookie. 684 00:31:36,750 --> 00:31:39,920 Ko ibig sabihin ng tunay, tulad ng ilan sa inyo maaaring Sinubukan sa tulad ng isang club o isang 685 00:31:39,920 --> 00:31:44,030 amusement park, kung susubukan mo ang isang bagay tulad nito upang kopyahin ang mga selyo, kahit na 686 00:31:44,030 --> 00:31:47,560 paurong papunta sa kamay ng ibang tao, at pagkatapos siya ay nagtatanghal ng ito bilang 687 00:31:47,560 --> 00:31:53,250 kanilang sarili, kung ito talaga ang hitsura magkakahawig, 123456789, pagkatapos ay ang web 688 00:31:53,250 --> 00:31:57,980 server ay tila lamang ng pagpunta sa pinagkakatiwalaan na gumagamit na iyon ay sa iyo. 689 00:31:57,980 --> 00:32:01,450 >> At ito ay talagang isang pangunahing pagbabanta anumang oras na gamitin mo ang mga cookies 690 00:32:01,450 --> 00:32:05,420 dahil kung may isang taong lang Katatawanan kaya upang sabihin ang iyong cookie, figure out kung ano ito 691 00:32:05,420 --> 00:32:08,660 ay, alinman sa pamamagitan ng tunay na pagkopya ito pamamagitan ng pagtingin sa iyong computer 692 00:32:08,660 --> 00:32:09,890 at sa pagiging tulad ng, OK. 693 00:32:09,890 --> 00:32:14,520 Cookie David ay JJ3JIK at iba pa, at pagkatapos ay ang mga ito ay sapat na smart na malaman 694 00:32:14,520 --> 00:32:18,080 kung paano uri ng manu-manong ipadala na cookie mula sa isang browser o mula sa isang 695 00:32:18,080 --> 00:32:22,350 programa nila magsulat, ng dati nilang lahat-lahat mag-log sa isang website tulad ng sa iyo. 696 00:32:22,350 --> 00:32:28,560 Ito ay hindi na mahirap upang magpanggap na maging ibang tao maliban kung muling bisitahin kami p-set 697 00:32:28,560 --> 00:32:30,790 dalawang, na ipinakilala kung ano? 698 00:32:30,790 --> 00:32:32,065 >> Madla: Cryptography. 699 00:32:32,065 --> 00:32:33,860 >> David MALAN: Ang isang maliit na bit ng cryptography. 700 00:32:33,860 --> 00:32:36,550 Simple cryptography, ng hindi bababa sa standard edition, ngunit crypto 701 00:32:36,550 --> 00:32:36,870 gayunman. 702 00:32:36,870 --> 00:32:37,410 mas mababa. 703 00:32:37,410 --> 00:32:41,440 Kaya ito ay lumiliko out kung encrypt mo ang lahat ng mga header ng paggamit ng isang bagay na iyong 704 00:32:41,440 --> 00:32:48,770 maaaring ngayon malaman ang higit pa pabihasa bilang SSL, secure socket layer, o https:// mga URL, 705 00:32:48,770 --> 00:32:51,890 pagkatapos ang lahat ng mga bagay na ito nakapunta namin glancing sa ay naka-encrypt talaga, 706 00:32:51,890 --> 00:32:54,800 na nangangahulugan na ito ay tulad mo hindi maaaring magbasa ng mga kamay stamp. 707 00:32:54,800 --> 00:32:59,350 Tanging facebook.com maaari, o google.com, o sa kasong ito, ang appliance maaari 708 00:32:59,350 --> 00:33:00,550 basahin na kamay stamp. 709 00:33:00,550 --> 00:33:04,020 >> Tragically bagaman, at muli, ito ay lahat masyadong naaangkop sa NSA bagay-bagay 710 00:33:04,020 --> 00:33:06,410 ng late, kahit SSL ay marupok. 711 00:33:06,410 --> 00:33:09,850 At ito ay talagang hindi na mahirap sa kahit crack-encrypt na. 712 00:33:09,850 --> 00:33:12,040 Hindi kaya magkano sa pamamagitan ng pag-crack ng encryption, ngunit sa pamamagitan ng tricking ang 713 00:33:12,040 --> 00:33:15,720 browser sa decrypting ang data maaga. 714 00:33:15,720 --> 00:33:17,880 Ngunit muli, magpapadala kami sa iyo mang-ulol may na bago ang haba. 715 00:33:17,880 --> 00:33:21,242 Para sa ngayon, matakot lamang. 716 00:33:21,242 --> 00:33:23,070 Ito ay tragically uri ng totoo. 717 00:33:23,070 --> 00:33:23,760 >> Ayos lang. 718 00:33:23,760 --> 00:33:27,910 Kaya, kung saan ang mga ito umalis ngayon sa amin? 719 00:33:27,910 --> 00:33:29,010 Well, ni gawin ito ipaalam. 720 00:33:29,010 --> 00:33:31,790 Sabihin sige at magsagawa ng mabilis teaser bago namin kumuha ng pahinga. 721 00:33:31,790 --> 00:33:33,790 At sa tingin ko gagamitin namin nagtatagal ng kaunti mas mahaba ngayon, ngunit kami ay pagpunta sa sumisid sa 722 00:33:33,790 --> 00:33:37,850 bagong bagay tatak at sexy, na paghahasa iyong gana sa pagkain para sa kahit na higit pa. 723 00:33:37,850 --> 00:33:38,950 Kaya na teaser ang. 724 00:33:38,950 --> 00:33:41,520 >> Kaya SQL, nagsimula kami ng pakikipag-usap tungkol sa napaka daglian huling beses. 725 00:33:41,520 --> 00:33:44,670 Makikita mo talaga makuha ang iyong mga kamay marumi sa ilan sa mga ito sa p-set pitong. 726 00:33:44,670 --> 00:33:46,480 At sa mga tuntunin lego, na kung ano ang ginagawa SQL - 727 00:33:46,480 --> 00:33:47,110 S-T-L - 728 00:33:47,110 --> 00:33:49,850 magawa para sa iyo? 729 00:33:49,850 --> 00:33:50,310 Ano ito? 730 00:33:50,310 --> 00:33:51,546 Oo. 731 00:33:51,546 --> 00:33:53,240 >> Madla: Sabihin mo data access. 732 00:33:53,240 --> 00:33:53,360 >> David MALAN: Oo. 733 00:33:53,360 --> 00:33:55,120 Ito sabihin mo access ang data sa isang database. 734 00:33:55,120 --> 00:33:56,710 Nakaayos sa Wika Query. 735 00:33:56,710 --> 00:33:59,890 At ito ay mahalagang isang programming language. 736 00:33:59,890 --> 00:34:03,400 Mayroong mga tampok ng ito na hindi namin kahit na gagamitin sa klase. 737 00:34:03,400 --> 00:34:04,710 Ngunit maaari mo nang epektibo tukuyin ang mga function. 738 00:34:04,710 --> 00:34:06,870 Ang mga ito ay tinatawag na naka-imbak mga pamamaraan sa SQL. 739 00:34:06,870 --> 00:34:09,860 Ngunit itinatago namin ito medyo simple at lamang gamitin ito para sa ilang mga pangunahing mga operasyon 740 00:34:09,860 --> 00:34:14,320 tulad ng pagpili ng data, pagpasok ng data, pag-update ng data, at pagtanggal ng data. 741 00:34:14,320 --> 00:34:17,400 >> At maaari mo ba talagang mag-isip ng isang database, tulad ng isang database ng SQL, bilang lamang 742 00:34:17,400 --> 00:34:18,800 pagiging Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Dahil SQL ay tumutukoy sa isang pamanggit database, kung saan 744 00:34:21,989 --> 00:34:23,480 kaugnayan nangangahulugan lamang mga talahanayan. 745 00:34:23,480 --> 00:34:24,739 Mga hilera at mga hanay. 746 00:34:24,739 --> 00:34:27,929 Kaya kahit ano maaari mong ilagay sa isang spreadsheet tulad nito o Google Docs, 747 00:34:27,929 --> 00:34:32,460 maaari mong ilagay sa isang database SQL sa pamamagitan ng deklarasyon ng lamesa. 748 00:34:32,460 --> 00:34:34,800 >> Ngayon, paano mo talagang i-access ang na impormasyon? 749 00:34:34,800 --> 00:34:38,239 Well, may mga utos o mga query tulad nito. 750 00:34:38,239 --> 00:34:40,199 Piliin, INSERT, UPDATE, at ALISIN. 751 00:34:40,199 --> 00:34:44,489 At para sa pinaka-bahagi, ang mga ay ang mga apat lamang sangkap kakailanganin mong 752 00:34:44,489 --> 00:34:47,370 gawin ang isang bagay pa masyadong powerfully sa problema set pitong. 753 00:34:47,370 --> 00:34:49,940 >> Ngayon bumalik sa araw, gagawin mo talaga makipag-ugnayan sa isang database sa isang 754 00:34:49,940 --> 00:34:52,730 black and white ang terminal na window sa isang nagbi-blink na prompt na katulad nito. 755 00:34:52,730 --> 00:34:56,370 At ang database kami ay tumatakbo sa appliance ay tinatawag na MySQL, na 756 00:34:56,370 --> 00:34:58,560 libre at open source database engine. 757 00:34:58,560 --> 00:35:02,240 Kung mo ang Google at basahin ang Wikipedia artikulo, malalaman mo na ang pangalan ay 758 00:35:02,240 --> 00:35:05,060 ng kaunting transition para sa ilang mga mga bersyon ng Linux. 759 00:35:05,060 --> 00:35:10,460 Maria database ay talagang isang tinidor kaya magsalita ng MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Long maikling kuwento, Oracle binili MySQL. 761 00:35:12,740 --> 00:35:13,870 Oracle ay isang malaking kumpanya. 762 00:35:13,870 --> 00:35:17,010 Ang mga tao ay na nag-aalala na gagawin ito hindi na mananatili pa masyadong bilang open source, 763 00:35:17,010 --> 00:35:20,930 kaya ito ay isang kopya lang ng MySQL na libre pa rin, bukas pa rin ang pinagmulan, at 764 00:35:20,930 --> 00:35:23,550 na naka-install sa Fedora Linux sa pamamagitan ng default. 765 00:35:23,550 --> 00:35:26,130 >> Ngunit ito ay uri ng isang sakit sa leeg upang makakuha ng mga pamilyar na may 766 00:35:26,130 --> 00:35:27,310 database ganitong paraan. 767 00:35:27,310 --> 00:35:30,560 Kaya isama natin sa CS50 appliance isang libreng open source tool na tinatawag na 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Isang pagkakataon lamang na ito ay nakasulat sa PHP. 770 00:35:33,940 --> 00:35:36,450 Walang saligan kailangan para sa PHP dito. 771 00:35:36,450 --> 00:35:40,090 Ngunit ito lamang ang tool ng web-based na namin nai-download nang libre, na naka-install sa 772 00:35:40,090 --> 00:35:43,850 ang appliance, na nagbibigay-daan sa amin upang magkaroon ng isang graphical user interface na kung saan 773 00:35:43,850 --> 00:35:48,610 upang galugarin ang p-set pitong database na may kung saan upang lumikha ng mga bagong database, 774 00:35:48,610 --> 00:35:51,980 sabihin para sa iyong sariling huling proyekto kung ikaw ay parang, at sa huli lumikha 775 00:35:51,980 --> 00:35:55,900 pabagu-bagong mga website tulad ng CS50 Pananalapi na nagbibigay-daan sa iyo upang i-query ng data at 776 00:35:55,900 --> 00:35:58,140 i-update ang pabago-bagong data. 777 00:35:58,140 --> 00:36:01,420 >> Hindi ka pagpunta sa may upang magamit lamang isang simpleng text file o CSV. 778 00:36:01,420 --> 00:36:05,950 Maaari mong aktwal na gamitin ang isang smart database programa upang maaari mong execute nang higit pa 779 00:36:05,950 --> 00:36:10,240 sopistikadong mga query pa sa pagbabasa sa pamamagitan ng lahat ng bagay linearly. 780 00:36:10,240 --> 00:36:14,150 >> Kaya halimbawa, ito ay kung ano ang bigyan namin sa iyo sa labas ng kahon para sa p-set pitong. 781 00:36:14,150 --> 00:36:18,280 Ito ay isang talahanayan na may tila hindi bababa sa tatlong haligi, isa rito ay 782 00:36:18,280 --> 00:36:21,450 username, isa rito ay hash, at ang iba pang mga na kung saan ay ID. 783 00:36:21,450 --> 00:36:26,200 >> Ngunit ang mga kagiliw-giliw na bagay, at lamang sa mang-ulol out isa-iisip dito, username 784 00:36:26,200 --> 00:36:29,270 ay siguro na natatangi, tama? 785 00:36:29,270 --> 00:36:31,190 Ibig kong sabihin, karamihan sa anumang website, kung mayroon kang isang username, mayroong 786 00:36:31,190 --> 00:36:32,370 Hindi maaaring dalawang caesars. 787 00:36:32,370 --> 00:36:33,440 May hindi maaaring maging dalawang malans. 788 00:36:33,440 --> 00:36:34,950 May hindi maaaring maging dalawang jharvards. 789 00:36:34,950 --> 00:36:35,600 Ang natatanging. 790 00:36:35,600 --> 00:36:38,610 Kung hindi man, hindi nila alam kung saan jharvard ito talaga. 791 00:36:38,610 --> 00:36:42,710 Kaya kung ano ang maaaring ang pagganyak para sa din pagkakaroon ng ikatlong haligi sa kaliwa 792 00:36:42,710 --> 00:36:46,970 mayroong tinatawag na ID, na kamukha ng isang bilang na katulad natatanging? 793 00:36:46,970 --> 00:36:51,300 Ito pakiramdam ng isang maliit na kalabisan sa akin sa unang tingin. 794 00:36:51,300 --> 00:36:54,910 Bakit maaari itong maging nakakahimok upang magkaroon hindi lamang natatanging username, 795 00:36:54,910 --> 00:36:56,837 ngunit ring natatanging numero? 796 00:36:56,837 --> 00:36:59,460 >> Madla: maaari silang ang parehong password. 797 00:36:59,460 --> 00:37:01,720 >> David MALAN: maaaring mayroon Tao ang parehong password, sigurado. 798 00:37:01,720 --> 00:37:03,900 Iyon ay maaaring talagang mangyari. 799 00:37:03,900 --> 00:37:08,270 Ngunit kung mayroon silang ito natatanging username, ako Gusto magtaltalan na iyon ay hindi talaga 800 00:37:08,270 --> 00:37:11,630 matter, dahil kung type sila sa kanilang username, kailangan ko lang na tignan ang kanilang 801 00:37:11,630 --> 00:37:15,060 password, ang kanilang hash hinggil doon. 802 00:37:15,060 --> 00:37:15,970 Bakit iba? 803 00:37:15,970 --> 00:37:17,950 >> Madla: Mas mabilis na naghahanap. 804 00:37:17,950 --> 00:37:18,680 >> David MALAN: Mas mabilis na naghahanap. 805 00:37:18,680 --> 00:37:19,548 Bakit? 806 00:37:19,548 --> 00:37:21,460 >> Madla: ID ay isa lamang. 807 00:37:21,460 --> 00:37:24,040 >> David MALAN: ID ay isang character lamang, o upang maging mas tumpak, ito ay isang numero, 808 00:37:24,040 --> 00:37:26,910 kaya marahil ito ay 32 bits o ang isang bagay tulad na. 809 00:37:26,910 --> 00:37:30,270 Sapagkat ang username, sa malas Jason Up Hirschhorn ni doon ay isang uri ng 810 00:37:30,270 --> 00:37:33,900 ridiculously mahaba, at ito ay pagpunta sa dalhin ako ng maraming mas maraming oras upang string 811 00:37:33,900 --> 00:37:40,910 ihambing H-ko-R-S-C-H-H-O-R-N, at siguro isang / 0 o isang bagay tulad na, sa pagkakasunud-sunod 812 00:37:40,910 --> 00:37:45,100 upang tumingin up Jason, bilang kabaligtaran sa makatarungan sinasabi ninyo akong bigyan ng gumagamit bilang dalawang. 813 00:37:45,100 --> 00:37:46,510 Iyon ay 32 bits. 814 00:37:46,510 --> 00:37:48,550 Ito ay isang solong int na mayroon kang upang ihambing. 815 00:37:48,550 --> 00:37:52,150 At sa katunayan, iyon mismo kung bakit mga database ay may posibilidad na magtalaga natatanging ID na 816 00:37:52,150 --> 00:37:53,710 hilera sa kanila. 817 00:37:53,710 --> 00:37:56,280 >> Ngayon kung ano ang iba pang mga uri ng data ang naroon bukod sa int at sa malas 818 00:37:56,280 --> 00:37:57,160 mga string tulad nito? 819 00:37:57,160 --> 00:37:59,700 Well, upang maging mas tamang, Mga database ng SQL, tulad ng 820 00:37:59,700 --> 00:38:02,060 MySQL, may pansamantalang trabaho mga patlang. 821 00:38:02,060 --> 00:38:05,320 At pansamantalang trabaho ng kaunti misleadingly ay hindi isang solong pansamantalang trabaho. 822 00:38:05,320 --> 00:38:10,290 Ang isang patlang ng pansamantalang trabaho sa isang MySQL database ay isa o higit pang mga character, ngunit ito ay isang 823 00:38:10,290 --> 00:38:11,780 naayos na bilang ng mga character. 824 00:38:11,780 --> 00:38:15,710 >> Kaya halimbawa, kung pumunta ako sa ibabaw sa phpMyAdmin bilang na maaaring mayroon ka na, o 825 00:38:15,710 --> 00:38:21,340 sa lalong madaling panahon ay magse-set ng problema sa pitong, at pumunta ako sa aking database, at para lang sa kasiyahan, 826 00:38:21,340 --> 00:38:25,700 lumikha ng isang bagong talahanayan na tinatawag na ipaalam subukan sa mga hanay ng dalawang lamang. 827 00:38:25,700 --> 00:38:27,160 Kukunin ko pagkatapos i-click ang Go. 828 00:38:27,160 --> 00:38:30,070 At ito ay magiging medyo pamilyar, lalo na bilang manghihinang mo 829 00:38:30,070 --> 00:38:31,130 sa paligid sa iyong sariling. 830 00:38:31,130 --> 00:38:34,140 Dito maaaring nagta-type ako ID upang lumikha ng isang bagong talahanayan ng uri ng int. 831 00:38:34,140 --> 00:38:37,770 Ngunit dito ay maaaring nagta-type ako username sa muling likhain na mas maaga talahanayan. 832 00:38:37,770 --> 00:38:40,700 At napansin ba akong magkaroon ang maramihang ng mga uri upang pumili mula sa. 833 00:38:40,700 --> 00:38:43,610 >> At ito masyadong ang dahilan kung bakit phpMyAdmin ay uri ng magaling. 834 00:38:43,610 --> 00:38:46,770 Ito ay uri ng self-pagtuturo sa iyo na Maaari lamang uri ng point, at i-click, at 835 00:38:46,770 --> 00:38:50,730 tumingin sa dropdown na menu, at magpakilala mula sa na kung ano ang mga kapangyarihan ng SQL ay nagbibigay sa iyo. 836 00:38:50,730 --> 00:38:54,090 >> At sa katunayan, kung pinili ko ang pansamantalang trabaho, ako pagkatapos mayroon upang tukuyin ang haba, o kung paano 837 00:38:54,090 --> 00:38:55,940 maraming mga halaga, kung gaano karaming karakter. 838 00:38:55,940 --> 00:39:00,090 Kaya napaka-karaniwang mga halaga ay mga bagay tulad ng 255, ngunit iyan ay isang maliit na mahaba. 839 00:39:00,090 --> 00:39:02,250 Karaniwan ay walong para sa isang username. 840 00:39:02,250 --> 00:39:03,590 Ngunit iyon lamang ang isang maliit na maliit na mga araw na ito. 841 00:39:03,590 --> 00:39:05,430 Kaya ito ay isang desisyon disenyo. 842 00:39:05,430 --> 00:39:08,630 Ito ba ay 8 character na max, 32, 255, 1000? 843 00:39:08,630 --> 00:39:09,830 Ito ay talagang nakasalalay sa iyo. 844 00:39:09,830 --> 00:39:12,350 Ngunit isang patlang pansamantalang trabaho ay isang nakapirming numero. 845 00:39:12,350 --> 00:39:16,420 Kaya pumili masyadong kaunting at ikaw ay uri ng screwed kung gusto mo ng mas mahabang username. 846 00:39:16,420 --> 00:39:19,132 Pumili ng masyadong maraming at kung ano ang ang downside? 847 00:39:19,132 --> 00:39:20,820 >> Madla: [hindi marinig]. 848 00:39:20,820 --> 00:39:21,620 >> David MALAN: Ito ay mapag-aksaya. 849 00:39:21,620 --> 00:39:24,835 Tulad ng sa C, kung mayroon kang isang mas malaking tipak ng memory kaysa sa kailangan mo, ikaw ay 850 00:39:24,835 --> 00:39:27,190 pag-aaksaya lamang ng oras at pag-aaksaya ng espasyo. 851 00:39:27,190 --> 00:39:31,430 Kaya bilang isang kahalili, umiiral doon VARCHAR, na malulutas nito ang problemang ito sa pamamagitan ng 852 00:39:31,430 --> 00:39:36,390 pagpapagamot ng haba hindi bilang isang nakapirming haba, ngunit bilang isang maximum na haba, at ang paggamit ng isang 853 00:39:36,390 --> 00:39:40,990 variable na bilang ng mga karakter, na pagkatapos ay may gawi na gamitin lamang ng maraming mga karakter tulad ng sa iyo 854 00:39:40,990 --> 00:39:42,710 talagang kailangan. 855 00:39:42,710 --> 00:39:43,670 Iyan perpekto. 856 00:39:43,670 --> 00:39:45,640 >> Bakit hindi namin mapupuksa ang Pagkatapos i-type ang data ng pansamantalang trabaho? 857 00:39:45,640 --> 00:39:48,500 Ano nga ang downside ng gamit VARCHARs, na tunog 858 00:39:48,500 --> 00:39:51,644 tulad ng ito ay isang magaling na panalo? 859 00:39:51,644 --> 00:39:52,596 Oo? 860 00:39:52,596 --> 00:39:53,846 >> Madla: [hindi marinig]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> David MALAN: OK, mabuti. 863 00:39:57,790 --> 00:40:01,101 Kaya kung ang lahat ng iyong data ay pareho haba, kung ano ang mga pag-aalala? 864 00:40:01,101 --> 00:40:05,250 >> Madla: Dahil ka pag-aaksaya data sa pamamagitan ng pagsasabi sa kanila lahat. 865 00:40:05,250 --> 00:40:09,060 >> David MALAN: Kaya kung ang lahat ng iyong data ay ang parehong haba, bagaman, Gusto ko magtaltalan 866 00:40:09,060 --> 00:40:12,300 na pagtukoy ng isang maximum na haba sa VARCHAR ay hindi naiiba mula sa 867 00:40:12,300 --> 00:40:16,070 pagtukoy ng isang nakapirming haba sa pansamantalang trabaho kung alam mo ang numerong iyon nang maaga. 868 00:40:16,070 --> 00:40:19,500 Ngunit mayroong sa katunayan, at idedetalye uri ng ko extract mula sa na sagot ang katotohanan 869 00:40:19,500 --> 00:40:22,610 na mayroong pa rin ng isang max, na dati maging nakakainis, lalo na kung 870 00:40:22,610 --> 00:40:25,920 makaharap pangalan ng isang tao na hindi karaniwang mahaba na hindi mo ginawa 871 00:40:25,920 --> 00:40:26,860 inaasahan. 872 00:40:26,860 --> 00:40:31,420 At ito ay mas mababa ng kaunti mahusay din upang aktwal na naghahanap sa VARCHARs bilang 873 00:40:31,420 --> 00:40:35,620 kabaligtaran sa paghahanap char, lalo na para sa mahabang mga talahanayan na may maraming at 874 00:40:35,620 --> 00:40:36,510 ng maraming data. 875 00:40:36,510 --> 00:40:40,060 Kaya dito masyadong, pampakay ay muli hindi halata choice. 876 00:40:40,060 --> 00:40:42,870 >> Kaya lamang upang mabigyan ka ng ideya sa iba pang mga mga uri ng data na maaaring ma ng interes 877 00:40:42,870 --> 00:40:45,400 alinman para sa p-set pitong o sa sa hinaharap, may int. 878 00:40:45,400 --> 00:40:47,270 Mayroong BIGINT, na ay tulad ng mahabang mahaba. 879 00:40:47,270 --> 00:40:48,880 Ito ay may gawi na maging 64 bit. 880 00:40:48,880 --> 00:40:51,640 Mayroong decimal, na makikita mo sa ang hanay ng problema, na kung saan ay mas 881 00:40:51,640 --> 00:40:55,300 mas malinis na sagot sa mga problema namin Nakatagpo na may float at lumulutang 882 00:40:55,300 --> 00:40:55,980 ituro imprecision. 883 00:40:55,980 --> 00:40:57,390 At pagkatapos ay mayroong DATETIME. 884 00:40:57,390 --> 00:41:01,530 Mayroong literal na isang uri ng data na may upang magmukhang isang taon, isang buwan, sa isang araw, 885 00:41:01,530 --> 00:41:03,730 at isang oras, minuto, at segundo. 886 00:41:03,730 --> 00:41:07,470 >> Ngunit mga database ng SQL ay mayroon ding bagay kami tatawag sa ini-index. 887 00:41:07,470 --> 00:41:11,630 At isang index ay isang bagay na sa iyo tukuyin kapag lumilikha ng talahanayan upang 888 00:41:11,630 --> 00:41:15,720 gumawa ng mga paghahanap at iba pang mga pagpapaandar mas mabisa. 889 00:41:15,720 --> 00:41:18,550 Sa partikular, mayroong isang bagay na tinatawag na ang PANGUNAHIN index na maaari mong 890 00:41:18,550 --> 00:41:19,440 Ipinahahayag tulad ng sumusunod. 891 00:41:19,440 --> 00:41:22,330 >> Ginawa namin ito para sa iyo sa talahanayan ng mga gumagamit bigyan ka namin. 892 00:41:22,330 --> 00:41:26,160 Ngunit mapansin kung saan ako nang manu-mano nililikha talahanayan ng mga gumagamit dito na nagbibigay sa 893 00:41:26,160 --> 00:41:27,110 ito ng isang pangalan ng user. 894 00:41:27,110 --> 00:41:28,125 Tinukoy na ako ng ID. 895 00:41:28,125 --> 00:41:29,330 Tinukoy ko int. 896 00:41:29,330 --> 00:41:32,000 Tinukoy ko username sa maximum na 32 mga character. 897 00:41:32,000 --> 00:41:36,140 Ngunit kung panatilihin namin ang pag-scroll sa ito nang walang kinikilingan malawak na window, paunawa mayroong isang 898 00:41:36,140 --> 00:41:38,260 bungkos ng iba pang mga bagay ang maaari kong tukuyin. 899 00:41:38,260 --> 00:41:40,950 >> Ang isa, ang maaari kong tukuyin katangian tulad ng, alam mo na kung ano, ito 900 00:41:40,950 --> 00:41:42,190 Int dapat na unsigned. 901 00:41:42,190 --> 00:41:45,510 Hindi ko nais negatibong numero, kaya ni gawin itong unsigned ipaalam. 902 00:41:45,510 --> 00:41:48,660 Walang bisa ay hindi nauugnay dito dahil Nais ko bawat gumagamit upang 903 00:41:48,660 --> 00:41:49,640 magkaroon ng isang natatanging numero. 904 00:41:49,640 --> 00:41:50,830 Hindi ko gusto ito upang maging null. 905 00:41:50,830 --> 00:41:52,330 >> Ngunit ito ay kawili-wili. 906 00:41:52,330 --> 00:41:57,780 Maaari ko bang tukuyin na ang ID ay alinman ang pangunahing key ng database, o ito ay 907 00:41:57,780 --> 00:42:00,620 natatangi, o ito ay na-index, o buong teksto. 908 00:42:00,620 --> 00:42:05,630 Kaya para sa mga layuning ngayong araw, mahaba ang kuwento maikling, PANGUNAHIN ay nangangahulugan na ito at magtataglay 909 00:42:05,630 --> 00:42:10,570 maging parehong conceptually at technically sa field na ginagamit namin upang katangi-tangi 910 00:42:10,570 --> 00:42:12,140 kilalanin ang mga gumagamit. 911 00:42:12,140 --> 00:42:16,140 >> Kaya kapag tumingin up kami ng mga gumagamit, ito ang uri ng isang pangako upang tumingin sa kanila up karamihan sa pamamagitan ng 912 00:42:16,140 --> 00:42:17,370 na natatanging identifier. 913 00:42:17,370 --> 00:42:21,930 At ang mga database ay tinitiyak na kung ikaw may user numero 3, hindi mo magagawa 914 00:42:21,930 --> 00:42:25,400 pisikal na magpasok ng isa pang user may na parehong numero 3. 915 00:42:25,400 --> 00:42:28,380 Ang database ay lamang tanggihan upang i-save ang iyong mga pagbabago. 916 00:42:28,380 --> 00:42:32,310 Aling ay isang magandang bagay, dahil maaari ka protektahan ang iyong sarili mula sa iyong sarili. sarili 917 00:42:32,310 --> 00:42:34,270 >> Bilang kahalili, para sa username. 918 00:42:34,270 --> 00:42:37,670 Kaya sa pangalawang hilera, pagpapabalik, ay ang patlang ng username. 919 00:42:37,670 --> 00:42:41,860 Kaya ang pangalawang hilera dito ay username, tulad ng ginawa namin sa malayong kaliwa doon. 920 00:42:41,860 --> 00:42:43,940 >> Kaya ano pa ang maaaring nais kong tukuyin? 921 00:42:43,940 --> 00:42:47,840 Hindi ako pinapayagan, ayon sa SQL, upang tukuyin ang dalawang pangunahing mga susi. 922 00:42:47,840 --> 00:42:50,750 maaari mong tukuyin ang isang magkasanib na key kung saan mo tumingin sa parehong patlang, ngunit hindi sila makakapag 923 00:42:50,750 --> 00:42:52,260 isa-isa maging pangunahing key. 924 00:42:52,260 --> 00:42:54,750 Kaya na palabas ng tanong. 925 00:42:54,750 --> 00:42:56,040 Kaya na maaaring gusto kong piliin? 926 00:42:56,040 --> 00:42:59,710 >> Well, NATATANGING ay katulad sa espiritu sa isang pangunahing key kung saan mo tukuyin ito 927 00:42:59,710 --> 00:43:03,570 patlang ay dapat na natatangi, subalit ito ay hindi pagpunta sa maging ang isa 928 00:43:03,570 --> 00:43:04,410 Ginagamit ko sa lahat ng oras. 929 00:43:04,410 --> 00:43:08,450 At hindi namin pagpunta sa gamitin ang isang ito ang lahat ng ang panahon para sa kung ano ang dahilan muli? 930 00:43:08,450 --> 00:43:10,490 Ito ay mas mabagal potensyal na kung ito ay isang mahaba ang username. 931 00:43:10,490 --> 00:43:11,740 Ito ay lamang ng isang pag-aaksaya ng oras. 932 00:43:11,740 --> 00:43:16,140 >> INDEX, samantala, ay tinutukoy na ito hindi pagpunta sa maging natatangi, ngunit Gusto ko 933 00:43:16,140 --> 00:43:19,470 mo upang gumana ang iyong magic sa ilalim ng hood upang gawin itong mas mabilis na para sa akin upang 934 00:43:19,470 --> 00:43:21,420 maghanap sa patlang na ito. 935 00:43:21,420 --> 00:43:23,320 Kaya marahil hindi ito katuturang dito. 936 00:43:23,320 --> 00:43:26,500 Para sa username, Gusto ko magtaltalan na NATATANGING ay isang magandang sagot. 937 00:43:26,500 --> 00:43:31,200 Ngunit ipagpalagay na gumawa kami ng mga gumagamit higit pa kagiliw-giliw kaysa lamang mga username, 938 00:43:31,200 --> 00:43:32,430 hashes, at mga numero ng ID. 939 00:43:32,430 --> 00:43:33,860 Paano kung nagbigay kami ng mga tao buong pangalan? 940 00:43:33,860 --> 00:43:37,700 Paano kung binigyan namin sila ng mga address at iba pang mga data tungkol sa mga ito? 941 00:43:37,700 --> 00:43:43,360 >> Well, kung tinukoy mo na ang isang haligi sa isang database ay na-index, ibig sabihin nito ay na 942 00:43:43,360 --> 00:43:47,730 MySQL, o Oracle, o anumang database ang ginagamit mo, dapat na gumana magic nito 943 00:43:47,730 --> 00:43:51,300 at gamitin ang ilang mga uri ng magarbong data istraktura tulad ng isang puno, o isang trie, o isang 944 00:43:51,300 --> 00:43:55,940 hash talahanayan, o isang bagay upang magarantiya na kapag naghanap ka para sa data gamit ang 945 00:43:55,940 --> 00:43:58,150 piliin sa partikular na patlang - 946 00:43:58,150 --> 00:44:01,310 tulad ng ipakita sa akin ang lahat ng tao na naninirahan sa Oxford Street. 947 00:44:01,310 --> 00:44:02,540 Ang isang query tulad na. 948 00:44:02,540 --> 00:44:06,250 Kung ikaw ay tinukoy nang maaga na Gusto mo ng isang index sa patlang na iyon, ang 949 00:44:06,250 --> 00:44:09,050 paghahanap ay magiging magkano, mas mabilis. 950 00:44:09,050 --> 00:44:12,090 >> Kung hindi mo tukuyin ang isang index, ang pinakamahusay na Maaari mong gawin ay isang linear paghahanap kung 951 00:44:12,090 --> 00:44:13,030 hindi ito pinagsunod-sunod. 952 00:44:13,030 --> 00:44:16,220 Ngunit kung tinukoy mo ang INDEX, ang matalino mga tao na ginawa sa database - 953 00:44:16,220 --> 00:44:19,340 mga taong katulad mo na ngayon alam mga puno at pagsusubok at hash talahanayan - 954 00:44:19,340 --> 00:44:23,220 Awtomatikong bumuo ng ganoong data istruktura sa RAM upang matiyak na 955 00:44:23,220 --> 00:44:26,050 sa mga paghahanap ay mas mabilis. 956 00:44:26,050 --> 00:44:29,660 >> FULLTEXT samantala ay katulad sa espiritu, ngunit nagbibigay-daan sa iyo upang gawin wildcard 957 00:44:29,660 --> 00:44:35,480 paghahanap, tulad ng ipakita sa akin ang lahat ng tao na nakatira sa mga kalye na nagsisimula sa ang 958 00:44:35,480 --> 00:44:36,960 sulat O para sa kahit anong dahilan. 959 00:44:36,960 --> 00:44:38,850 Maaari mong gawin wildcard na paghahanap tulad na. 960 00:44:38,850 --> 00:44:45,880 O kaya naman, mas nakakahimok ang mga bagay tulad ng palabas sa akin sa lahat na mayroong salita - 961 00:44:45,880 --> 00:44:49,400 ipakita sa akin ang lahat ng tao na ang pangalan ay nagsisimula na may partikular na titik. 962 00:44:49,400 --> 00:44:51,880 Maaari kang maghanap para sa mga keyword sa ganitong paraan. 963 00:44:51,880 --> 00:44:52,630 Ayos lang. 964 00:44:52,630 --> 00:44:55,760 >> Kaya, mga pagkakataon sa disenyo may potensyal. 965 00:44:55,760 --> 00:44:57,740 May mga iba na idedetalye ko iwagayway ang aking mga kamay sa. 966 00:44:57,740 --> 00:45:00,530 Ito ay lumiliko out na maaari kang magkaroon ng iba't ibang mga storage engine. 967 00:45:00,530 --> 00:45:04,390 At ito ay mas arcane kaysa kailangan namin tiyak para sa problemang set pitong. 968 00:45:04,390 --> 00:45:06,920 Sa pamamagitan ng default, ka guys ay gumagamit ng isang bagay na tinatawag na InnoDB. 969 00:45:06,920 --> 00:45:10,910 Makikita mo ang pagbanggit ng ito sa isang lugar sa interface phpMyAdmin ng pinaka-malamang. 970 00:45:10,910 --> 00:45:14,130 Ngunit malaman na mayroong iba pang mga disenyo mga pagpapasya na ng mga potensyal na 971 00:45:14,130 --> 00:45:18,030 interes ay panghuling proyekto kung gawin mo ng isang bagay na web-based. 972 00:45:18,030 --> 00:45:19,330 >> Ngunit ni gawin ito ipaalam. 973 00:45:19,330 --> 00:45:23,130 Sabihin sige at ilagay ito sa ang screen bilang isang teaser para sa isang kuwento 974 00:45:23,130 --> 00:45:26,330 kinasasangkutan mo, isang kasama sa kuwarto, at isang baso ng gatas. 975 00:45:26,330 --> 00:45:28,240 Hayaan ang kumuha ng isang dalawang minutong o kaya masira dito. 976 00:45:28,240 --> 00:45:31,060 At kung maaari mong manatili sa paligid ng dumating, sabihin pabalik, tumingin ng kaunti pa sa SQL, at 977 00:45:31,060 --> 00:45:35,160 pagkatapos ng kaunting JavaScript sa p-set walong nasa isip. 978 00:45:35,160 --> 00:45:36,120 >> Ayos lang. 979 00:45:36,120 --> 00:45:40,420 Kaya, sabihin kumuha ka ng pag-iisip tungkol sa isang sulok kaso na maaaring napaka madaling pumailanglang 980 00:45:40,420 --> 00:45:44,240 sa konteksto ng paggamit ng isang database, o nang tapat, kahit na gamit ang real bagay mundo 981 00:45:44,240 --> 00:45:46,280 tulad ng mga ATM upang makakuha ng pera. 982 00:45:46,280 --> 00:45:47,640 Kaya narito ang isang refrigerator. 983 00:45:47,640 --> 00:45:50,040 Ipagpalagay na mayroon ka ng isa masyadong sa iyong dorm o sa iyong bahay. 984 00:45:50,040 --> 00:45:54,990 At mayroon ka ng isang kasama sa kuwarto, at pareho ng Talaga bang gatas halimbawa. 985 00:45:54,990 --> 00:45:57,210 >> Kaya't dumating ka sa bahay mula sa klase ng isang araw. 986 00:45:57,210 --> 00:45:58,490 Siya ay hindi pa pabalik. 987 00:45:58,490 --> 00:45:59,180 Buksan mo ang refrigerator. 988 00:45:59,180 --> 00:46:00,870 Talagang gusto mo ng isang malaking baso ng gatas. 989 00:46:00,870 --> 00:46:01,820 Walang gatas. 990 00:46:01,820 --> 00:46:02,920 Kaya ano ang gagawin mo? 991 00:46:02,920 --> 00:46:03,840 Isara mo ang refrigerator. 992 00:46:03,840 --> 00:46:04,670 Grab mo ang iyong mga susi. 993 00:46:04,670 --> 00:46:05,930 Ikaw pumunta out sa parisukat. 994 00:46:05,930 --> 00:46:09,240 At makakakuha ka sa linya sa CVS sa mga bagay sa sarili checkout, na palaging 995 00:46:09,240 --> 00:46:11,180 magtagal kaysa sa aktwal na pagkakaroon ng Kahero. 996 00:46:11,180 --> 00:46:11,820 Sa papaano mang paraan. 997 00:46:11,820 --> 00:46:15,490 >> Kaya pagkatapos, samantala, dot tuldok tuldok, ang iyong kasama sa kuwarto ay tahanan at siya ay 998 00:46:15,490 --> 00:46:17,440 katulad ay may isang pagmimithi para sa ilang mga gatas. 999 00:46:17,440 --> 00:46:20,380 Kaya siya ay bubukas ang refrigerator, mukhang sa loob, at oh, mapahamak. 1000 00:46:20,380 --> 00:46:21,160 Walang gatas. 1001 00:46:21,160 --> 00:46:24,750 Kaya siya o ulo out siya, ang mangyayari sa pumunta upang ang iba pang CVS, na noon ay lamang ng isang 1002 00:46:24,750 --> 00:46:27,900 i-block ang layo para sa ilang mga dahilan, at siya o nakakakuha siya sa linya upang bumili ng ilang mga gatas. 1003 00:46:27,900 --> 00:46:30,480 >> Samantala, napunta ka sa bahay, siya o pagdating niya sa bahay, at kung ano ang ginagawa 1004 00:46:30,480 --> 00:46:31,980 mo sa huli ay may? 1005 00:46:31,980 --> 00:46:33,080 Dalawang beses bilang magkano ang gatas. 1006 00:46:33,080 --> 00:46:34,620 Ngunit hindi mo talaga gusto gatas na magkano. 1007 00:46:34,620 --> 00:46:37,300 Kaya ngayon ikaw ay may kaya magkano ang gatas na ngayon isa sa mga ito ay lamang ng pagpunta sa pumunta mapanis 1008 00:46:37,300 --> 00:46:37,820 Sa kalaunan. 1009 00:46:37,820 --> 00:46:39,370 Kaya ito ay isang ganap na hindi maayos problema. 1010 00:46:39,370 --> 00:46:39,900 Mag-right? 1011 00:46:39,900 --> 00:46:41,990 >> Kaya kung ano ang nangyari? 1012 00:46:41,990 --> 00:46:44,810 Kaya sa panimula, ito ang uri ng isang katawa-tawa halimbawa. 1013 00:46:44,810 --> 00:46:48,580 Ngunit sa ilalim ng hood, kung ano ang mayroon kaming mangyari dito ay pareho ng iyong sinuri 1014 00:46:48,580 --> 00:46:52,390 ang estado ng ilang mga piraso ng memorya, ang refrigerator. 1015 00:46:52,390 --> 00:46:54,420 Pareho ka naka-check ng estado ang ng ilang mga variable. 1016 00:46:54,420 --> 00:46:57,360 Parehong iginuhit mo ang isang konklusyon na pagkatapos ay kumilos sa. 1017 00:46:57,360 --> 00:47:01,420 Ngunit sa kasamaang-palad, habang ang iyong kasama sa kuwarto noon ay sa tindahan, ang estado ng na 1018 00:47:01,420 --> 00:47:05,670 variable ay nagbago, siya ay dumating likod at nais na ngayon upang baguhin ang estado, ngunit 1019 00:47:05,670 --> 00:47:07,480 ito na nabago sa kanya. 1020 00:47:07,480 --> 00:47:11,120 At syempre, hindi siya ay magkaroon ng nawala na sa tindahan kung alam nila 1021 00:47:11,120 --> 00:47:13,010 na ikaw ay mayroon en ruta. 1022 00:47:13,010 --> 00:47:16,430 >> Kaya sa tunay na mundo, paano mo magagawa maiwasan ang problemang ito, sa pag-aakala mayroon kang 1023 00:47:16,430 --> 00:47:18,940 isang refrigerator, mayroon kang isang kasama sa kuwarto, at talagang mo bang gatas? 1024 00:47:18,940 --> 00:47:19,760 >> Madla: Pakikipag-ugnay. 1025 00:47:19,760 --> 00:47:20,580 >> David MALAN: Pakikipag-ugnay. 1026 00:47:20,580 --> 00:47:21,160 OK. 1027 00:47:21,160 --> 00:47:22,500 Ngunit kung paano maaari mong makipag-usap? 1028 00:47:22,500 --> 00:47:23,990 >> Madla: Mag-iwan ng tala. 1029 00:47:23,990 --> 00:47:25,480 >> David MALAN: Mag-iwan ng tala, tama? 1030 00:47:25,480 --> 00:47:28,025 Palaging mag-iwan ng tala, para sa tagahanga ng show. 1031 00:47:28,025 --> 00:47:31,580 Ang lahat ng mga karapatan, kaya palaging mag-iwan ng tala, o ilagay tunay na tulad ng isang padlock o isang bagay 1032 00:47:31,580 --> 00:47:35,440 sa refrigerator na mapigil ang iyong kasama sa kuwarto mula sa inspecting ang estado ng 1033 00:47:35,440 --> 00:47:36,540 na variable. 1034 00:47:36,540 --> 00:47:40,800 >> Ngayon, kung bakit maaaring ito ay dyermeyn sa itakda problema pitong, o sa mga ATM. 1035 00:47:40,800 --> 00:47:46,780 Well, isipin ang isang mundo sa isang ATM kung saan na maaaring magawa upang pumunta hanggang sa isang ATM 1036 00:47:46,780 --> 00:47:48,920 machine dito, at isa pang ATM dito. 1037 00:47:48,920 --> 00:47:50,680 At ito ang mangyayari masyadong madalas. 1038 00:47:50,680 --> 00:47:54,150 At ipagpalagay na mayroon kang dalawang ATM card, na kung saan ay posible upang makakuha. 1039 00:47:54,150 --> 00:47:57,420 At i-log sa parehong machine mabisa nang sabay-sabay, sana ay 1040 00:47:57,420 --> 00:47:58,660 habang walang sinuman ang hinahanap. 1041 00:47:58,660 --> 00:48:01,260 At pagkatapos i-type mo sa iyong PIN halos sabay-sabay. 1042 00:48:01,260 --> 00:48:06,280 At pagkatapos ay gumawa ka ng query sa balanse upang makita kung magkano ang cash na mayroon ka. 1043 00:48:06,280 --> 00:48:08,920 At sabihin nating mayroon kang $ 100 naiwan sa iyong account. 1044 00:48:08,920 --> 00:48:13,310 Kaya mahalagang nang sabay-sabay, mo sinasabi ng isa, zero, zero, ipasok. 1045 00:48:13,310 --> 00:48:16,000 At sana ay makabalik ng pera. 1046 00:48:16,000 --> 00:48:18,440 >> Ngunit kung magkano ang pera na maaari mong bumalik? 1047 00:48:18,440 --> 00:48:21,710 Ngayon mga computer sa pagtatapos ng araw, lalo na kung ang mga ito ay pakikipag-usap sa 1048 00:48:21,710 --> 00:48:27,360 mga server, ay hindi kinakailangang gumawa ng mga bagay sa pagkakasunud-sunod na inaasahan. 1049 00:48:27,360 --> 00:48:30,860 >> Kaya ipagpalagay kung ano ang mangyayari, dahil sa kahit anong network isyu sa bilis doon 1050 00:48:30,860 --> 00:48:34,530 ay, o mga isyu CPU mayroong, o anumang bagay tulad na, ipagpalagay na ang 1051 00:48:34,530 --> 00:48:38,530 unang ATM nagsusuri ang iyong balanse at nakikita, oh, ang taong ito ay $ 100. 1052 00:48:38,530 --> 00:48:41,840 Ngunit pagkatapos ay makakakuha ng ginulo dahil siguro isang backup ang nangyayari at kaya 1053 00:48:41,840 --> 00:48:42,500 alalay. 1054 00:48:42,500 --> 00:48:45,080 O siguro habang sinusuri, ang network medyo mas mabagal dahil nakakuha koneksyon 1055 00:48:45,080 --> 00:48:45,910 ito lamang ang mangyayari. 1056 00:48:45,910 --> 00:48:47,100 Ang mga ito ay mga pisikal na device. 1057 00:48:47,100 --> 00:48:49,330 Kaya samantala, ang ikalawang ATM ay na nagtatanong ng parehong tanong. 1058 00:48:49,330 --> 00:48:53,030 Magkano pera mayroon ang David? $ 100 ay ang sagot. 1059 00:48:53,030 --> 00:48:58,930 Ngunit dahil ang unang ATM ay hindi pa ipinadala ang mensahe ibawas $ 100, parehong 1060 00:48:58,930 --> 00:49:03,000 Mga ATM na siniyasat hanay ng mga arko ng bangko, nakikita mayroong $ 100 doon, at ngayon 1061 00:49:03,000 --> 00:49:07,160 parehong machine potensyal na mga pagpunta sa sabihin ang lahat ng sagot. 1062 00:49:07,160 --> 00:49:12,240 >> Ngayon, ito ay mahusay para sa iyo sa ilang mga kahulugan kung ano ang ginagawa ng bangko sa huli 1063 00:49:12,240 --> 00:49:17,200 ay baguhin ang mga halaga sa minus 100 sa pamamagitan ng pagtatakda ng mga variable na katumbas ng iyong 1064 00:49:17,200 --> 00:49:21,570 bank account katumbas ng 0, bilang kabaligtaran sa paggawa minus 100. 1065 00:49:21,570 --> 00:49:24,410 Ngayon sa pinakamasama kaso para sa mga bangko - 1066 00:49:24,410 --> 00:49:27,470 o sa pinakamahusay para sa bank, samantala, bigyan sila sa iyo ng $ 200, at 1067 00:49:27,470 --> 00:49:31,690 ang iyong bank account ay nagpapakita ngayon ng mga negatibong $ 100, na talagang hindi 1068 00:49:31,690 --> 00:49:32,950 makikinabang ka sa lahat. 1069 00:49:32,950 --> 00:49:36,500 Ngunit ang punto ay na karera kondisyon para sa dalawang kasamahan sa silid pagkuha 1070 00:49:36,500 --> 00:49:40,660 gatas, o para sa dalawang mga ATM sinusubukan upang makakuha ng cash at baguhin ang katayuan ng isang hanay ng mga arko 1071 00:49:40,660 --> 00:49:44,510 sabay na umiiral ang anumang oras mayroon kang isang database. 1072 00:49:44,510 --> 00:49:48,290 >> Ngayon sa problema set pitong, ang isyu na ito arises sa kamalayan na kung bumili ka ng isang 1073 00:49:48,290 --> 00:49:52,110 magbahagi ng Facebook stock, at pagkatapos ay para sa Halimbawa bumili ka ng isang pangalawang bahagi ng 1074 00:49:52,110 --> 00:49:55,160 Facebook stock, kailangan mong gumawa ng mga isang desisyon bilang programmer. 1075 00:49:55,160 --> 00:49:58,710 Upang magpasya kung paano i-update ang database, logro ay ka pagpunta sa 1076 00:49:58,710 --> 00:50:02,250 magkaroon ng isang hilera para sa na stock, at ito ay isang paraan upang ipatupad ito. 1077 00:50:02,250 --> 00:50:06,640 At ka ng pagpunta sa magkaroon ng isa bahagi ng FB, na kung saan ay ang kanilang mga ticker symbol ng stock 1078 00:50:06,640 --> 00:50:10,120 para ang username na ito, o ang user na ito ID, ang natatanging identifier. 1079 00:50:10,120 --> 00:50:12,340 >> Ngunit ang parehong kuwento Maaari itong mangyari dito. 1080 00:50:12,340 --> 00:50:15,800 Kung gagawin mo ang isang piliin sa SQL, bilang makikita mo sa problema set pitong kapag nakita mo, 1081 00:50:15,800 --> 00:50:18,460 oh, si David ay may isa share ng Facebook stock. 1082 00:50:18,460 --> 00:50:23,240 Hayaan akong baguhin ngayon ito upang maging dalawang pagbabahagi, dahil gusto ni siya upang bumili ng 1083 00:50:23,240 --> 00:50:24,120 ikalawang bahagi. 1084 00:50:24,120 --> 00:50:27,860 Ngunit ipagpalagay na talagang nagkaroon David dalawang buksan ang mga window ng browser, o ipagpalagay na 1085 00:50:27,860 --> 00:50:32,150 ito ay isang joint account na may dalawang asawa, at pareho sa mga ito ay sinusubukan upang isagawa 1086 00:50:32,150 --> 00:50:36,770 ang parehong pagpapatakbo, doon, masyadong, ang potensyal na umiiral para sa isang desisyon na maging 1087 00:50:36,770 --> 00:50:39,670 ginawa batay sa mga nakaraang estado ng mundo - 1088 00:50:39,670 --> 00:50:41,290 ang account ay may isang bahagi - 1089 00:50:41,290 --> 00:50:45,630 at kapwa tao, o pareho mga server, ngayon subukan upang sabihin dinagdagan ito sa dalawang pagbabahagi. 1090 00:50:45,630 --> 00:50:49,020 Ngunit sa kasong ito, maaari mo pa siningil sa akin ng pera para sa parehong pagbabahagi, ngunit 1091 00:50:49,020 --> 00:50:50,830 incremented lamang na ang isa oras. 1092 00:50:50,830 --> 00:50:54,730 >> Kaya sa maikling, sa pangunahing mga problema dito, bilang may magbiro tungkol iiwan ng 1093 00:50:54,730 --> 00:50:58,750 Tandaan, o paglalagay ng kandado sa ito, ay kung ang dalawang tao, o dalawang mga thread - 1094 00:50:58,750 --> 00:50:59,930 bumalik sa scratch tingin - 1095 00:50:59,930 --> 00:51:03,220 Maaari siyasatin ang estado ng ilang mga variable at pagkatapos ay subukan upang baguhin ang variable na iyon, 1096 00:51:03,220 --> 00:51:07,950 ngunit ang mga dalawang bagay ay hindi mangyayari sa Kasabay nito ngunit maaari makakuha ng Naantala ang pag- 1097 00:51:07,950 --> 00:51:11,500 sa pamamagitan ng iba pang mga bagay nangyayari, data maaari makapunta sa isang napaka-kakaiba ng estado. 1098 00:51:11,500 --> 00:51:15,450 At maaari kang makinabang o maaari mong magdusa sa kamalayan ng perang halimbawa. 1099 00:51:15,450 --> 00:51:18,110 >> Kaya sa problema set pitong, bigyan ka namin ito isang linya ng code, na mahaba 1100 00:51:18,110 --> 00:51:21,000 kuwento maikli, malulutas nito na ito problema sa MySQL. 1101 00:51:21,000 --> 00:51:24,950 Ito napakatagal pagtuturo na hindi kahit magkasya sa isang linya sa 1102 00:51:24,950 --> 00:51:30,370 Tinitiyak ng screen dito na ang iyong operasyon ay kung ano ang tinatawag na atomic. 1103 00:51:30,370 --> 00:51:33,720 Ito ang lahat ng mangyayari nang sabay-sabay, o hindi ito mangyayari sa lahat. 1104 00:51:33,720 --> 00:51:37,530 Ito napakatagal parirala ay hindi maaaring makakuha ng Naantala ang pag-bahagyang. 1105 00:51:37,530 --> 00:51:39,840 >> At kung ano ang ginagawa nito ay literal kung ano ang sinasabi nito. 1106 00:51:39,840 --> 00:51:44,200 Magsingit sa ilang mga talahanayan ang mga sumusunod na tatlong mga patlang ng mga partikular na mga halaga, 1107 00:51:44,200 --> 00:51:47,280 ngunit sa duplicate na key, huwag gawin ang isang insert. 1108 00:51:47,280 --> 00:51:48,280 Gumawa ng isang update. 1109 00:51:48,280 --> 00:51:52,450 Kaya ito ay tulad ng paggawa ng isang piliin at isang INSERT kaya upang makipag-usap sa parehong oras. 1110 00:51:52,450 --> 00:51:55,150 At kung ano ay ang susi na ay marahil na tinutukoy dito? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Ito ay lumiliko out, at makikita mo ito sa problema itakda pitong ni spec, dahil 1113 00:52:01,380 --> 00:52:06,040 kami ipinahayag doon upang maging isang natatanging key sa ang partikular na mesa tulad na 1114 00:52:06,040 --> 00:52:08,480 hindi ka maaaring magkaroon ng maramihang mga hilera para sa parehong mga user na may 1115 00:52:08,480 --> 00:52:10,150 parehong matipid stock symbol - 1116 00:52:10,150 --> 00:52:13,780 sa halimbawang ito dito, DVN.V ay isang hangal stock matipid na namin 1117 00:52:13,780 --> 00:52:14,980 sumangguni sa spec. 1118 00:52:14,980 --> 00:52:17,860 Dahil kami ipinahayag itong maging natatangi, kung ano ang ibig sabihin nito ay kung ikaw 1119 00:52:17,860 --> 00:52:23,580 subukan upang magsingit ng isang dobleng mga hilera, ikaw ay sa halip ng pagpunta sa i-update ito nang walang 1120 00:52:23,580 --> 00:52:27,020 sinumang iba pa nagkakaroon ng pagkakataong baguhin ang estado ng mundo alinman. 1121 00:52:27,020 --> 00:52:29,400 Kaya sa maikling salita, ito ay nagsisiguro bagay ang atomic. 1122 00:52:29,400 --> 00:52:32,530 >> Higit pang mga karaniwang bagaman, mga database tulad ng MySQL - 1123 00:52:32,530 --> 00:52:35,460 at hindi mo kailangan ang tampok na ito para sa p-set pitong, ngunit panatilihin ito sa isip para sa 1124 00:52:35,460 --> 00:52:36,200 sa hinaharap - 1125 00:52:36,200 --> 00:52:38,870 sumusuporta sa kung ano ay tinatawag na mga transaksyon, kung saan maaari mong sabihin 1126 00:52:38,870 --> 00:52:40,990 START TRANSAKSYON literal. 1127 00:52:40,990 --> 00:52:43,270 Maaari mo nang isagawa dalawang SQL pahayag. 1128 00:52:43,270 --> 00:52:45,710 At isang SQL na pahayag, bilang makikita mo ang sa p-set pitong, mukhang ng kaunti 1129 00:52:45,710 --> 00:52:46,750 isang bagay na katulad nito. 1130 00:52:46,750 --> 00:52:48,820 I-update ang isang talahanayan na tinatawag na account. 1131 00:52:48,820 --> 00:52:52,550 I-set ang balanse haligi katumbas ng kahit anupamang ang balanse haligi kasalukuyan 1132 00:52:52,550 --> 00:52:57,280 ay binawasan ng 1,000 kung saan ang bilang, ang numero ng account, tulad ng mga ID ng gumagamit, 1133 00:52:57,280 --> 00:53:00,830 ay katumbas ng 2, at pagkatapos ay i-update account tuldok tuldok tuldok. 1134 00:53:00,830 --> 00:53:04,350 >> Kaya sa mga tuntunin lego, na kung ano ang ginagawa ng dalawang query mukhang paggawa sa 1135 00:53:04,350 --> 00:53:05,840 tunay na mundo pakiramdam ng banking? 1136 00:53:05,840 --> 00:53:07,440 >> Madla: Paglilipat sa pagtitipid. 1137 00:53:07,440 --> 00:53:08,020 >> David MALAN: Mismong. 1138 00:53:08,020 --> 00:53:10,470 Paglilipat ng mga pondo mula sa isa account upang ang iba. 1139 00:53:10,470 --> 00:53:14,400 At ito ay isa pang halimbawa kung saan mo talagang gusto ang dalawang mga bagay na mangyayari 1140 00:53:14,400 --> 00:53:15,570 o hindi mangyayari. 1141 00:53:15,570 --> 00:53:18,880 Hindi mo na gusto ng isang bagay upang makakuha ng sa gitna ng mga ito at potensyal na sumira 1142 00:53:18,880 --> 00:53:22,220 ang matematika, o gulo up kung magkano pera na mayroon ka, o kung magkano 1143 00:53:22,220 --> 00:53:23,170 pera ang bangko ay may. 1144 00:53:23,170 --> 00:53:26,890 Kaya kung ano ang talagang maganda tungkol sa mga transaksyon sa MySQL ay na, at 1145 00:53:26,890 --> 00:53:30,160 database sa mas pangkalahatang paraan, ay na sila at matalinong tao na naipatupad 1146 00:53:30,160 --> 00:53:33,670 mga tampok na ito maisip kung paano gumawa siguraduhin na pareho ng mga bagay na mangyayari 1147 00:53:33,670 --> 00:53:35,120 o hindi sa lahat. 1148 00:53:35,120 --> 00:53:38,580 >> At kung tunay na ikaw ay naghahangad upang gawing isang website na ginagamit ng mga tao sa 1149 00:53:38,580 --> 00:53:41,490 campus, ang mga tao sa tunay na mundo, ang paggawa ng isang bagay sa startup pakiramdam, 1150 00:53:41,490 --> 00:53:43,300 ang mga ito ay ang mga uri ng disenyo ng mga desisyon na 1151 00:53:43,300 --> 00:53:45,020 maging napaka mahalaga. 1152 00:53:45,020 --> 00:53:48,240 Kung hindi man, simulan mo upang mawalan ng data, mawala gumagamit, o sa pinakamasama kaso bilang 1153 00:53:48,240 --> 00:53:51,800 nasaksihan namin dito, potensyal na mawalan ng pera. 1154 00:53:51,800 --> 00:53:56,180 Kaya muli, higit pa sa na sa problema nakatakda pitong, pati na rin marahil para sa ilan sa 1155 00:53:56,180 --> 00:53:57,530 mo sa huling proyekto. 1156 00:53:57,530 --> 00:54:01,870 >> Kaya natin baguhin ang larawan na nagkaroon kami ng ilang sandali ang nakalipas lamang sa isa pang paraan. 1157 00:54:01,870 --> 00:54:04,070 Kaya ipaalam sa akin talaga makita kung ang maaari kong - 1158 00:54:04,070 --> 00:54:06,030 nope, na nawala. 1159 00:54:06,030 --> 00:54:06,690 May ito ay. 1160 00:54:06,690 --> 00:54:09,020 >> Kaya ito ay kung saan namin iniwan huling oras. 1161 00:54:09,020 --> 00:54:12,390 At ito lumiliko out kami ng pagpunta sa itaas na bigla isa pa bagay sa mix dito - 1162 00:54:12,390 --> 00:54:14,510 isang wika na tinatawag JavaScript. 1163 00:54:14,510 --> 00:54:18,060 Kaya JavaScript aktwal na umaangkop sa ito piraso - 1164 00:54:18,060 --> 00:54:22,086 at hindi ko pa masyadong mag-iwan ng sapat na kuwarto, kaya ito ay hindi na ngayon upang masukat. 1165 00:54:22,086 --> 00:54:23,900 OK, ito ay talagang kalunus-lunos. 1166 00:54:23,900 --> 00:54:27,075 OK, kaya iyon ang JavaScript. 1167 00:54:27,075 --> 00:54:27,340 Ayos lang. 1168 00:54:27,340 --> 00:54:28,760 Talaga ako ginagawa ito ng isang masamang paglilingkod. 1169 00:54:28,760 --> 00:54:29,390 Ayos lang. 1170 00:54:29,390 --> 00:54:34,790 >> Kaya JavaScript ay isa pang programming wika, at ang aming huling, Kung na tumutulong sa 1171 00:54:34,790 --> 00:54:37,770 muling bigyan ng katiyakan na mayroong hindi marami pang iba ng hydrants apoy dito. 1172 00:54:37,770 --> 00:54:41,100 Kaya JavaScript ding kahulugan wika, na nangangahulugan na hindi mo 1173 00:54:41,100 --> 00:54:42,670 ipunin ito sa mga zero at mga bago. 1174 00:54:42,670 --> 00:54:43,690 Ikaw lamang patakbuhin ito. 1175 00:54:43,690 --> 00:54:47,680 Ngunit kung ano ang sa panimula iba't ibang mga gamit JavaScript ay karaniwan na sa iyo 1176 00:54:47,680 --> 00:54:49,815 huwag patakbuhin ito sa iyong web server. 1177 00:54:49,815 --> 00:54:52,570 Hindi ito makapag-tumakbo sa appliance per se. 1178 00:54:52,570 --> 00:54:57,490 Sa halip, ito ay makakakuha ng nai-download ng isang user sa pamamagitan ng HTTP sa kanilang browser - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, kahit anong - 1180 00:55:00,260 --> 00:55:03,860 at ito ay ang browser na ito executes partikular na programming language. 1181 00:55:03,860 --> 00:55:08,000 >> Kaya upang maging malinaw, PHP kaya ngayon ay naging maisakatuparan ang alinman sa command line sa 1182 00:55:08,000 --> 00:55:11,290 ang aming black and white window, sa isang server tulad ng appliance, isang computer 1183 00:55:11,290 --> 00:55:14,490 tulad ng appliance, o naging ipinatupad sa pamamagitan ng isang web server 1184 00:55:14,490 --> 00:55:15,860 tumatakbo sa isang computer. 1185 00:55:15,860 --> 00:55:20,490 Ngunit ang tema dito ay ang PHP kaya malayo ay pinaandar server-side, kaya 1186 00:55:20,490 --> 00:55:24,820 ang gumagamit at browser ng gumagamit hindi kailanman nakikita ng isang linya ng PHP code. 1187 00:55:24,820 --> 00:55:28,530 >> Sa katunayan, kung sakaling magbukas ng browser para sa ang iyong website o isa at sa iyo 1188 00:55:28,530 --> 00:55:32,400 talaga makita ang PHP code sa iyong window, isang tao ay screwed up. 1189 00:55:32,400 --> 00:55:34,950 Dahil hindi ito sinadya upang maging ipinadala sa isang browser nang direkta. 1190 00:55:34,950 --> 00:55:38,150 Ito ay dapat na ipatupad at naka- sa isang bagay tulad ng HTML. 1191 00:55:38,150 --> 00:55:40,120 >> Ngunit JavaScript ay mahalagang ang kabaligtaran. 1192 00:55:40,120 --> 00:55:44,350 Ito ay sinadya upang ma-tumakbo karaniwang sa loob ng window ng browser ng isang gumagamit. 1193 00:55:44,350 --> 00:55:46,840 At kung ano ang mga uri ng mga website ang gumagamit JavaScript pagkatapos ay mga araw na ito? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Nagustuhan Literal na araw-popular na website. 1196 00:55:52,180 --> 00:55:55,430 Ang bawat website na iyong guys marahil gamitin araw-araw na gamitin para sa JavaScript ang 1197 00:55:55,430 --> 00:55:57,330 pinakasimpleng at kahit ang sexiest tampok. 1198 00:55:57,330 --> 00:55:59,800 >> Kaya isang bagay tulad ng Facebook Makipag-chat kung gumagamit ka na. 1199 00:55:59,800 --> 00:56:01,040 Paano gumagana na talagang gumagana? 1200 00:56:01,040 --> 00:56:05,090 Well kaya sa ngayon, ang lahat ng mga bagay-bagay na namin tapos sa HTML at PHP Ipinagpapalagay na 1201 00:56:05,090 --> 00:56:08,750 mong makuha ang isang URL, at ikaw pindutin ang Enter, at nakikita mo ang ilang mga HTML na nilalaman. 1202 00:56:08,750 --> 00:56:11,970 At nag-click ka sa link, na nagbabago ang URL, nagbabago ang mga pahina, at muling pagkarga 1203 00:56:11,970 --> 00:56:12,740 ilang mga bagong nilalaman. 1204 00:56:12,740 --> 00:56:16,340 I-click ang isa pang URL o magsumite ng form, mo makapag whisked sa isa pang pahina at 1205 00:56:16,340 --> 00:56:17,420 makita mo ang ilang mga bagong nilalaman. 1206 00:56:17,420 --> 00:56:22,710 >> Ngunit gamit ang isang bagay tulad ng Facebook Chat, o Gchat, o Google Maps, bihirang 1207 00:56:22,710 --> 00:56:27,350 ay ang buong pahina tulad refresh na nakakita ka ng isang puting screen at ilang sandali lamang 1208 00:56:27,350 --> 00:56:28,470 pagkatapos ng bagong nilalaman. 1209 00:56:28,470 --> 00:56:32,610 Sa halip, mga pahina ng web ngayon ay pabago-bago nagsisimula pa na-update muli at 1210 00:56:32,610 --> 00:56:35,570 muli at muli ang lahat ng uri ng likod ng mga eksena. 1211 00:56:35,570 --> 00:56:38,560 At ito ay lumiliko out na kapag ikaw ay pumunta sa isang bagay tulad ng Facebook, o Gchat, 1212 00:56:38,560 --> 00:56:43,050 o Gmail, at ang mga update na pahina awtomatikong nang walang i-load muli ang 1213 00:56:43,050 --> 00:56:47,630 buong screen, kung ano ang nangyari ay na Nakagawa na uri ng mga lihim ng iyong browser 1214 00:56:47,630 --> 00:56:49,410 karagdagang mga kahilingan ng HTTP - 1215 00:56:49,410 --> 00:56:52,740 hindi para sa buong mga pahina ng web, ngunit para lamang sa mga maliit na chunks ng data, tulad ng 1216 00:56:52,740 --> 00:56:55,740 instant message na ang iyong mga kaibigan lamang Nagpadala sa iyo, o ang pag-update ng katayuan na 1217 00:56:55,740 --> 00:56:58,210 lamang ay nagpadala sa iyo, o ang tweet na may isang taong na may isang taong nagpadala lamang. 1218 00:56:58,210 --> 00:57:02,120 Ay lamang ginagawa itong maliit na mga kahilingan para sa data, at pagkatapos ay ang paggamit ng JavaScript, ito 1219 00:57:02,120 --> 00:57:06,370 programming language, upang baguhin kung ano tinitingnan ng web page tulad nang walang 1220 00:57:06,370 --> 00:57:09,860 server pagtulong, nang walang ang server pagbuo na HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Kaya sa maikling, JavaScript ay maaaring gamitin pagkatapos upang makuha ang mga hindi lamang ang bagong data mula sa 1222 00:57:13,820 --> 00:57:16,750 ang server nang walang i-load muli isang buo pahina o pagsusumite ng form na ito. 1223 00:57:16,750 --> 00:57:20,060 Maaari rin itong magamit upang pagbabago ng tinatawag na DOM - 1224 00:57:20,060 --> 00:57:21,520 dokumento modelo sa bagay - 1225 00:57:21,520 --> 00:57:24,620 na kung saan ay lamang ang magarbong paraan para sinasabi sa puno ng HTML 1226 00:57:24,620 --> 00:57:26,220 na nakita namin noong huli. 1227 00:57:26,220 --> 00:57:31,640 >> Kaya upang muling bigyan ng katiyakan, ang JavaScript ay syntactically kaya katulad sa C pati na rin. 1228 00:57:31,640 --> 00:57:32,820 Walang pangunahing pag-andar. 1229 00:57:32,820 --> 00:57:35,430 Magsisimula ka lang sa pagsusulat ang code at ito ay makakuha ng pinaandar, o 1230 00:57:35,430 --> 00:57:36,900 kahulugan nang higit pa maayos. 1231 00:57:36,900 --> 00:57:38,660 Kundisyon magmumukhang ganito. 1232 00:57:38,660 --> 00:57:41,230 Walang iba mula sa C o PHP para sa na bagay. 1233 00:57:41,230 --> 00:57:43,890 Boolean expression o-ed magkasama ganito ang magiging hitsura. 1234 00:57:43,890 --> 00:57:45,590 Anded magkasama magmukhang ganito. 1235 00:57:45,590 --> 00:57:47,750 >> Lilipat magmumukhang ganito. 1236 00:57:47,750 --> 00:57:49,440 Para sa mga loop ganito ang magiging hitsura. 1237 00:57:49,440 --> 00:57:51,060 Habang loop ganito ang magiging hitsura. 1238 00:57:51,060 --> 00:57:53,316 Gawin habang loop ganito ang magiging hitsura. 1239 00:57:53,316 --> 00:57:54,780 >> Ito ay bagong. 1240 00:57:54,780 --> 00:57:58,753 Kaya ang JavaScript ay hindi isang foreach bumuo per se, ngunit ito ay makagawa ng 1241 00:57:58,753 --> 00:58:03,870 para sa variable na i sa array, at i in na ito kaso nagiging isang halaga index. 1242 00:58:03,870 --> 00:58:06,880 Kaya ito ay isang maliit na naiiba mula sa na foreach, bagaman mga bagong bersyon ng 1243 00:58:06,880 --> 00:58:10,280 JavaScript ay darating out sa lahat ng oras, kaya kahit na ang mga tampok na wika 1244 00:58:10,280 --> 00:58:10,880 ay umuunlad. 1245 00:58:10,880 --> 00:58:16,920 >> At bilang isang bukod, JavaScript mga araw na ito Maaari ding gamitin sa isang server tulad lamang 1246 00:58:16,920 --> 00:58:19,920 PHP gamit ang isang framework na tinatawag Node.js. 1247 00:58:19,920 --> 00:58:24,670 Isa sa CS50 ng TFs, Kevin, ay humantong sa isang pantas-aral sa Node.js na magagamit sa 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 Kaya kung gusto mong malaman, malaman na kayo Maaari itong gamitin sa server side bilang 1250 00:58:28,830 --> 00:58:33,870 mahusay, ngunit iyan ay isang walang kinikilingan kamakailang trend, ngunit isang malakas na isa sa na. 1251 00:58:33,870 --> 00:58:35,270 >> Ito ay isang maliit na naiiba. 1252 00:58:35,270 --> 00:58:37,910 Ito ay isang array sa JavaScript. 1253 00:58:37,910 --> 00:58:40,115 At kung ano ang naaabot mo bilang mga naiibang kumpara sa C o PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Mayroong ilang mabilis na mga kuwento maaari naming sabihin dito. 1256 00:58:47,420 --> 00:58:49,367 Ano kulang kumpara sa PHP? 1257 00:58:49,367 --> 00:58:51,652 >> Madla: [hindi marinig]. 1258 00:58:51,652 --> 00:58:52,110 >> David MALAN: Oo? 1259 00:58:52,110 --> 00:58:53,322 Paumanhin, sabihin muli? 1260 00:58:53,322 --> 00:58:54,740 >> Madla: Di deklarasyon ang uri ng variable. 1261 00:58:54,740 --> 00:58:56,390 >> David MALAN: Hindi kami deklarasyon ang uri ng variable. 1262 00:58:56,390 --> 00:58:59,630 Kaya talagang medyo tulad ng PHP, kami ay hindi pagtukoy ng mga uri ng mga ito na variable. 1263 00:58:59,630 --> 00:59:02,670 Sa halip, kami ay higit pa generically sinasabi var para variable. 1264 00:59:02,670 --> 00:59:06,690 Wala kaming istorbo ng PHP ni pag-sign dolyar, na habang nakakainip na 1265 00:59:06,690 --> 00:59:09,160 uri, ay gawing mas malinaw na isang bagay ang isang variable. 1266 00:59:09,160 --> 00:59:11,830 Sapagkat dito, hindi namin uri ng mga pabalik sa Diskarte C sa pamamagitan ng pagtawag lamang 1267 00:59:11,830 --> 00:59:14,500 variable na gamit ang pangalan na gusto namin upang bigyan ito, tulad ng mga numero. 1268 00:59:14,500 --> 00:59:17,170 At katulad din ng PHP, mayroon kami square bracket para sa 1269 00:59:17,170 --> 00:59:19,170 mga halaga sa loob na ng array. 1270 00:59:19,170 --> 00:59:22,490 >> Kaya mga variable sa JavaScript din Maaaring ganito ang hitsura. 1271 00:59:22,490 --> 00:59:26,900 Pansinin dito na ito ay isang string na tinatawag s, ngunit katulad magkaroon hindi namin tinukoy 1272 00:59:26,900 --> 00:59:28,750 na ito ay isang string. 1273 00:59:28,750 --> 00:59:33,160 Narito bagaman ay isang tampok na hindi gumagana ang umiiral sa eksaktong parehong paraan sa PHP, 1274 00:59:33,160 --> 00:59:34,460 ngunit medyo katulad. 1275 00:59:34,460 --> 00:59:36,530 Ito ay isang bagay sa JavaScript. 1276 00:59:36,530 --> 00:59:42,110 At bagay ay isang uri ng mga Swiss Army Kutsilyo ng istruktura ng data sa iyo na 1277 00:59:42,110 --> 00:59:43,900 Maaari gamitin ang mga ito para sa anumang bilang ng mga bagay. 1278 00:59:43,900 --> 00:59:46,860 >> Dito, halimbawa, ipinapadala namin deklarasyon isang variable na tinatawag na quote. 1279 00:59:46,860 --> 00:59:49,110 Ang uri ng variable na ay isang object. 1280 00:59:49,110 --> 00:59:53,550 Maaari mong isipin na ito bilang isang C struct na may mga pindutan at halaga. 1281 00:59:53,550 --> 00:59:55,250 Simbolo ay isang key. 1282 00:59:55,250 --> 00:59:57,350 FB ay isang halaga, sa malas isang simbolo ng stock. 1283 00:59:57,350 --> 00:59:57,930 Comma. 1284 00:59:57,930 --> 01:00:02,180 Presyo ay isa pang key, at halaga nito ay sa malas ng mga lumulutang na tuldok, o isang 1285 01:00:02,180 --> 01:00:06,510 bilang sa mas pangkalahatang sa JavaScript, ng $ 49.26. 1286 01:00:06,510 --> 01:00:09,030 >> Kaya PHP ay walang - 1287 01:00:09,030 --> 01:00:12,980 hindi pa namin nakikita sa PHP object masyadong tulad nito, ngunit namin ginawa ng isang analog, 1288 01:00:12,980 --> 01:00:14,093 na kung saan ay kung ano? 1289 01:00:14,093 --> 01:00:14,980 >> Madla: [hindi marinig]. 1290 01:00:14,980 --> 01:00:16,110 >> David MALAN: nag-uugnay array. 1291 01:00:16,110 --> 01:00:19,990 Kaya kung saan ang PHP ay nag-uugnay array na kung saan ang syntax ay kailanman bahagyang kaya 1292 01:00:19,990 --> 01:00:20,370 iba't ibang - 1293 01:00:20,370 --> 01:00:21,780 Nakita namin ang mga square bracket. 1294 01:00:21,780 --> 01:00:23,860 Nakita namin ang kakaiba simbolo arrow. 1295 01:00:23,860 --> 01:00:27,330 JavaScript ay may mga bagay, ngunit ito ay halos isang semantiko pagkakaiba at isang 1296 01:00:27,330 --> 01:00:29,260 iba't ibang mga kasing kahulugan para sa ngayon. 1297 01:00:29,260 --> 01:00:35,060 Gayunpaman, bilang isang bukod, PHP din itong bagay sa isang paraan na Java at iba pang mga 1298 01:00:35,060 --> 01:00:37,810 wika ay mayroon bagay sa object-oriented programming. 1299 01:00:37,810 --> 01:00:40,440 Ngunit gagamitin namin ang mga lang para sa mga uri ng data sa ngayon. 1300 01:00:40,440 --> 01:00:42,170 Mga bagay at nag-uugnay array. 1301 01:00:42,170 --> 01:00:44,140 >> Maaaring gawin itong isa na ito mas malinaw ng kaunti. 1302 01:00:44,140 --> 01:00:45,890 Narito kung bakit ang isang bagay ay kapaki-pakinabang. 1303 01:00:45,890 --> 01:00:48,760 Kapag nais mong magpahayag ng isang mag-aaral, tulad ng Zamyla, maaari namin talaga 1304 01:00:48,760 --> 01:00:52,630 encapsulate kaya upang makipag-usap sa loob ng na Bagay gamit ang kulot bracket tulad lamang 1305 01:00:52,630 --> 01:00:55,060 bago ang maramihang mga susi at mga halaga sa dito. 1306 01:00:55,060 --> 01:00:59,150 Mayroon kaming isang ID, isang bahay, at isang pangalan para sa Zamyla, sinusundan ng isang tuldok-kuwit bilang 1307 01:00:59,150 --> 01:01:00,690 karaniwan sa dulo. 1308 01:01:00,690 --> 01:01:04,840 >> Down dito masyadong, ito ay bahagyang iba't ibang, ngunit din napaka-makapangyarihang 1309 01:01:04,840 --> 01:01:05,690 mga araw na ito. 1310 01:01:05,690 --> 01:01:08,780 Narito ang isang array, at alam ko na dahil mayroong isang parisukat na bracket up 1311 01:01:08,780 --> 01:01:11,090 tuktok at isang parisukat na bracket sa ibaba. 1312 01:01:11,090 --> 01:01:16,050 At ito ay isang array ng kung ano ang data nagta-type sa malas sa JavaScript? 1313 01:01:16,050 --> 01:01:21,260 Ito ay isang hanay ng mga ito ay mukhang tulad ng tatlong bagay. 1314 01:01:21,260 --> 01:01:24,580 At alam ko ito ay isang bagay na lamang dahil sa ang kulot tirante. 1315 01:01:24,580 --> 01:01:28,760 At mapansin mayroong bukas kulot suhay, ang ilang mga bagay-bagay, malapit kulot suhay, kuwit, 1316 01:01:28,760 --> 01:01:31,180 pagkatapos ng ilang higit pa, kuwit, at pagkatapos ng ilang higit pa. 1317 01:01:31,180 --> 01:01:33,800 Kaya na tatlong argumento pinaghiwalay ng dalawang mga kuwit. 1318 01:01:33,800 --> 01:01:36,810 >> Kaya ito ay isang array ng tatlong bagay. 1319 01:01:36,810 --> 01:01:39,940 At sa bawat isa sa mga bagay ay lumilitaw na isang mag-aaral o kawani ng miyembro ng ilan 1320 01:01:39,940 --> 01:01:42,370 -uri-uriin, bawat isa ay may isang ID, bahay, at pangalan. 1321 01:01:42,370 --> 01:01:45,060 Ngunit tinatawag ko ang isang bagay tinatawag JSON - 1322 01:01:45,060 --> 01:01:47,450 JavaScript Bagay pagtatanda. 1323 01:01:47,450 --> 01:01:52,060 At ito ay isang format ng data na talaga ay kaya napaka-tanyag at sa 1324 01:01:52,060 --> 01:01:55,100 katanyagan mga araw na ito na kung sumulat ka ng isang application na gumagamit sa Facebook 1325 01:01:55,100 --> 01:01:59,150 API, ang Twitter API, talagang halos anumang mga API out doon mga araw na ito, 1326 01:01:59,150 --> 01:02:02,820 kabilang ang ilan sa sariling CS50, ang data makabalik ka ay wala sa 1327 01:02:02,820 --> 01:02:04,720 lumang format na CSV paaralan. 1328 01:02:04,720 --> 01:02:06,780 >> Dahil pagpapabalik na CSV ay sobrang simple. 1329 01:02:06,780 --> 01:02:10,230 Ito ay mga hanay lamang ng kuwit sa pamamagitan ng mga kuwit. 1330 01:02:10,230 --> 01:02:13,190 Binibigyan ka ng JSON data sa higit pang metadata. 1331 01:02:13,190 --> 01:02:17,800 Iniuugnay nito ang susi sa bawat halaga sa gayon hindi nila kailangang mag-ipinapalagay lamang na 1332 01:02:17,800 --> 01:02:22,460 ang hanay na 0 ay isa halaga, haligi isa ay isa pang, haligi dalawang ay isa pang. 1333 01:02:22,460 --> 01:02:26,790 Lahat sa isang JSON object dito ay uri ng self-naglalarawan, dahil bawat 1334 01:02:26,790 --> 01:02:30,940 isa sa mga pangalan sa file na ito ay may literal pangalanan sa harap ng mga ito bilang isang 1335 01:02:30,940 --> 01:02:32,510 naka-quote na string. 1336 01:02:32,510 --> 01:02:34,950 >> Kaya ipaalam sa tumagal ng isang pagtingin sa isang ilang mga halimbawa dito. 1337 01:02:34,950 --> 01:02:36,800 Hayaan akong pumunta sa appliance. 1338 01:02:36,800 --> 01:02:41,000 At hayaan mo akong pumunta sa aming vhost direktoryo sa publiko. 1339 01:02:41,000 --> 01:02:45,590 At hayaan mo akong pumunta sa JavaScript direktoryo. 1340 01:02:45,590 --> 01:02:49,610 At ni sige at buksan up hayaan DOM-0.html, kung saan ay nangangahulugan lamang DOM 1341 01:02:49,610 --> 01:02:51,010 dokumento modelo object. 1342 01:02:51,010 --> 01:02:53,490 Ito ay tree mga bagay-bagay na kung saan Tinutukoy kong mas maaga. 1343 01:02:53,490 --> 01:02:54,950 >> At ipaalam sa akin ipanukala ang mga sumusunod. 1344 01:02:54,950 --> 01:02:57,720 Narito ang isang web page na kung saan ang katawan ay medyo simple. 1345 01:02:57,720 --> 01:03:00,170 Kaya pababa dito sa ibaba, mapansin Mayroon akong isang form. 1346 01:03:00,170 --> 01:03:01,500 Nakita namin ang mga bago. 1347 01:03:01,500 --> 01:03:07,600 Ito ay may dalawang input, isa rito ay may isang ID ng pangalan, isa sa na may isang uri ng 1348 01:03:07,600 --> 01:03:09,830 isumite, at ang unang isang uri ng ay teksto. 1349 01:03:09,830 --> 01:03:11,900 Kaya ito talagang tunog medyo simple. 1350 01:03:11,900 --> 01:03:13,090 >> Sabihin pumunta dito. 1351 01:03:13,090 --> 01:03:15,390 Sabihin bumalik sa pahinang ito dito. 1352 01:03:15,390 --> 01:03:21,030 Sabihin pumunta sa localhost, at pumunta sa aming direktoryo ng JavaScript, at pumunta sa 1353 01:03:21,030 --> 01:03:24,640 DOM-0, at dito mayroon kaming form na ito. 1354 01:03:24,640 --> 01:03:26,550 Kaya na sa malas lahat pahinang ito gumagana. 1355 01:03:26,550 --> 01:03:28,740 Ito ay may isang patlang na may pangalan Isumite ang isang pindutan. 1356 01:03:28,740 --> 01:03:30,340 Ngunit hindi ako pagpunta sa gamitin ang PHP dito. 1357 01:03:30,340 --> 01:03:34,310 Pupunta ako sa magawa ang lahat ng client side kaya upang makipag-usap sa JavaScript tulad ng sumusunod. 1358 01:03:34,310 --> 01:03:39,100 >> Pansinin na sa katunayan ko ang ibinigay ang pangalan larangan ng pag-input na ito ng isang natatanging 1359 01:03:39,100 --> 01:03:42,350 identifier, na talaga i-save sa akin ang ilang oras sa isang sandali. 1360 01:03:42,350 --> 01:03:45,480 At mapansin ipinakilala ko ang isa pang tag sa head ng aking web page, ang 1361 01:03:45,480 --> 01:03:46,565  tag. 1362 01:03:46,565 --> 01:03:50,120 >> Kaya sa puntong ito na ang JavaScript ay isang programming language client-side. 1363 01:03:50,120 --> 01:03:55,020 Sa kasong ito, tulad ng CSS, inilagay ang mga ko ito diretso sa loob ng aking HTML. 1364 01:03:55,020 --> 01:03:58,810 Ngunit abisuhan ang mga ipinahayag ko ang isang function na mukhang isang maliit na tulad ng PHP 1365 01:03:58,810 --> 01:04:01,530 syntactically, ngunit ito ay ang tunay JavaScript, dahil muli, ito ay 1366 01:04:01,530 --> 01:04:03,920 client-side sa browser. 1367 01:04:03,920 --> 01:04:07,590 At maglaan ng hula kung ano ito ay pagpunta sa gawin, kahit na ang ilan sa mga syntax 1368 01:04:07,590 --> 01:04:09,338 dito ay bago. 1369 01:04:09,338 --> 01:04:11,760 >> Madla: Sabihing kumusta sa kung sinuman. 1370 01:04:11,760 --> 01:04:14,020 >> David MALAN: Ito ay pagpunta sa kamustahin upang ang sinumang bibisita sa pahinang ito. 1371 01:04:14,020 --> 01:04:15,120 Kaya paano? 1372 01:04:15,120 --> 01:04:18,070 >> Kaya't mapapansin, ito ay lumiliko out sa JavaScript mayroong isang function na () alerto. 1373 01:04:18,070 --> 01:04:22,840 Ito ay isang napaka-uri-uriin ng malungkot na pag-andar na talaga lang may gawi na inisin ang mga gumagamit. 1374 01:04:22,840 --> 01:04:25,440 Ito ay hindi isa dapat mo ba talagang gamitin karaniwan, ngunit ito ay isang mabilis at marumi 1375 01:04:25,440 --> 01:04:27,710 paraan ng pag-uuri ng pagpi-print ng isang bagay sa isang graphical user 1376 01:04:27,710 --> 01:04:29,180 interface, tulad ng isang browser. 1377 01:04:29,180 --> 01:04:31,400 Mapapansin dito na mayroon akong isang string sa solong panipi. 1378 01:04:31,400 --> 01:04:36,010 Ito ay lumiliko out na hindi tulad ng C, JavaScript Maaari aktwal na mayroon gamitin mo single 1379 01:04:36,010 --> 01:04:38,730 quote, at lantaran ito ay lamang uri ng pangkakanyahan convention kasama ng 1380 01:04:38,730 --> 01:04:41,180 JavaScript programmer upang gamitin ang solong quote. 1381 01:04:41,180 --> 01:04:43,750 PHP, sila aktwal na mayroon nang bahagya iba't ibang kahulugan. 1382 01:04:43,750 --> 01:04:45,810 Ngunit para sa ngayon, alam lamang na iyon ang tanging dahilan. 1383 01:04:45,810 --> 01:04:49,270 Ang convention JavaScript ay madalas upang gamitin ang solong quote, ngunit maaari naming gamitin 1384 01:04:49,270 --> 01:04:50,950 double quote sa parehong mga lugar pati na rin. 1385 01:04:50,950 --> 01:04:52,610 >> Kaya ito ay kawili-wili. 1386 01:04:52,610 --> 01:04:56,430 Isipin ang huling beses na namin ay may na larawan sa screen na iginuhit isang puno 1387 01:04:56,430 --> 01:04:59,720 kung saan mo ay nagkaroon ng HTML node, at ang magtungo ang node, at ang katawan node, 1388 01:04:59,720 --> 01:05:00,800 at pagkatapos ng ilang teksto. 1389 01:05:00,800 --> 01:05:04,700 Ngunit nagkaroon ng isang espesyal na node sa pinakatuktok na tinatawag ko ang mga dokumento. 1390 01:05:04,700 --> 01:05:08,260 Well, ito ay lumiliko out sa JavaScript, ang anumang mga oras sumulat ka ng isang programa sa JavaScript 1391 01:05:08,260 --> 01:05:11,040 sa isang browser, may access ka sa isang espesyal na global variable. 1392 01:05:11,040 --> 01:05:14,130 Katulad sa espiritu sa superglobals PHP, ang ang isang ito ay tinatawag sa 1393 01:05:14,130 --> 01:05:16,050 lahat ng maliit na dokumento. 1394 01:05:16,050 --> 01:05:21,480 >> Ito ay tulad ng isang struct, ngunit ito struct Mayroon ding mga pag-andar sa loob nito. 1395 01:05:21,480 --> 01:05:23,790 Kaya isang C struct may data ang karaniwang lamang. 1396 01:05:23,790 --> 01:05:29,060 Ngunit isang bagay ang JavaScript bilang na ito technically ay may function din, 1397 01:05:29,060 --> 01:05:31,830 kung hindi man ay kilala bilang mga pamamaraan, sa loob nito. 1398 01:05:31,830 --> 01:05:35,750 At maaari mong tawagin ang isang function sa loob ng sa bagay na ito masyadong literal ang paggawa nito 1399 01:05:35,750 --> 01:05:39,610 pangalan, tuldok, at pagkatapos ay ang pangalan ng ang pag-andar, o muli pamamaraan. 1400 01:05:39,610 --> 01:05:41,160 Ito ay isang kasingkahulugan lamang, talaga. 1401 01:05:41,160 --> 01:05:42,450 >> At kung ano ang function na ito gawin? 1402 01:05:42,450 --> 01:05:43,840 Maaari mong uri ng hulaan mula sa pangalan nito. 1403 01:05:43,840 --> 01:05:45,590 Kumuha ng mga elemento sa pamamagitan ng ID. 1404 01:05:45,590 --> 01:05:50,040 Kaya ito ay pagpunta upang maghanap sa web page, maghanap puno na, naghahanap para sa 1405 01:05:50,040 --> 01:05:55,210 ano naman node, aka elemento, ay may natatanging ID ng quote magpanipi pangalan. 1406 01:05:55,210 --> 01:05:56,560 At pagkatapos ay kung ano ako pagpunta sa gawin? 1407 01:05:56,560 --> 01:06:00,350 Pupunta ako upang makuha ang halaga sa loob ng na node sa tree, at ako pupunta 1408 01:06:00,350 --> 01:06:02,580 upang kahit papaano ay batiin si na pangalan. 1409 01:06:02,580 --> 01:06:05,360 >> Kaya maglaan ng hula, kahit na hindi namin hindi Nakita ito pa, kung ano ang ginagawa ng plus 1410 01:06:05,360 --> 01:06:07,396 simbolo ibig sabihin dito at dito marahil? 1411 01:06:07,396 --> 01:06:08,230 >> Madla: pagdugtungin. 1412 01:06:08,230 --> 01:06:09,220 >> David MALAN: pagdugtungin. 1413 01:06:09,220 --> 01:06:11,290 Mag-right, at ang mga ito ay lamang uri ng desenyo ng mga pagpapasya 1414 01:06:11,290 --> 01:06:12,280 mga tao na ginawa taon na ang nakakaraan. 1415 01:06:12,280 --> 01:06:15,190 Sa PHP, pagdugtungin mo mga bagay na may tuldok. 1416 01:06:15,190 --> 01:06:18,800 Sa C, tumalon sa iyo sa pamamagitan ng maraming hoops at tumawag sa mga function tulad ng strcopy () o 1417 01:06:18,800 --> 01:06:20,600 strcat () o ibang tulad ng mga pag-andar. 1418 01:06:20,600 --> 01:06:22,060 Ngunit sa JavaScript, gamitin mo plus. 1419 01:06:22,060 --> 01:06:24,770 Kaya ito ay lamang concatenating tatlong mga string - 1420 01:06:24,770 --> 01:06:27,850 kumusta, isang pangalan, at pagkatapos ay isang exclamation point. 1421 01:06:27,850 --> 01:06:30,390 >> Kaya kapag at kung bakit ito ay function na tinatawag na bagaman? 1422 01:06:30,390 --> 01:06:33,150 Well, kumuha nang isang hula mula sa HTML sa ibaba. 1423 01:06:33,150 --> 01:06:35,810 Bakit bumati () na tinatawag na, o kapag? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> Sa malas, bilang pinakamahusay na maaari kong sabihin, sa isumite, kapag ang form na ito ay isinumite, 1426 01:06:44,030 --> 01:06:47,200 Pupunta ako sa gawin ang anumang ay sa loob ng mga panipi. 1427 01:06:47,200 --> 01:06:50,900 At partikular, Pupunta ako sa tumawag sa bumati () at pagkatapos ay bumalik hindi totoo. 1428 01:06:50,900 --> 01:06:53,090 >> Well, sabihin makita ng kung ano ang net epekto dito ay unang. 1429 01:06:53,090 --> 01:06:58,290 Kaya ipaalam sa akin sige at i-type sa, sabihin nating, Loren, ang Isumite. 1430 01:06:58,290 --> 01:06:59,440 Kamusta Loren. 1431 01:06:59,440 --> 01:07:02,990 Ni makita kung marahil ito ay isa lamang Hayaang isang masuwerteng pagpapatupad. 1432 01:07:02,990 --> 01:07:03,200 Nope. 1433 01:07:03,200 --> 01:07:05,990 Kaya ito ay ang pag-type out kahit anong pangalanan talaga kong ilagay doon. 1434 01:07:05,990 --> 01:07:07,970 >> Ngunit mapapansin kung ano ang hindi nagbabago. 1435 01:07:07,970 --> 01:07:10,360 Ang URL ay DOM-0.html pa rin. 1436 01:07:10,360 --> 01:07:11,820 Walang register.php. 1437 01:07:11,820 --> 01:07:13,110 Walang pangalawang file. 1438 01:07:13,110 --> 01:07:14,930 Walang katangian ng pagkilos. 1439 01:07:14,930 --> 01:07:19,720 Kaya kung ano ito return false siguro ginagawa? 1440 01:07:19,720 --> 01:07:23,660 Bakit ako ay batiin ako sa pagtawag () at pagkatapos ay bumabalik na hindi totoo marahil? 1441 01:07:23,660 --> 01:07:26,420 Ano normal ang mangyayari kapag nag-click ka Isumite sa isang form na kahit na mayroon kami 1442 01:07:26,420 --> 01:07:27,854 nakita sa nakalipas na linggo? 1443 01:07:27,854 --> 01:07:29,900 >> Madla: [hindi marinig]. 1444 01:07:29,900 --> 01:07:30,860 >> David MALAN: Ito napupunta sa isang lugar, i-right? 1445 01:07:30,860 --> 01:07:32,720 Ito ang papunta sa ilang mga destination URL. 1446 01:07:32,720 --> 01:07:34,120 Ngunit hindi ko nais na mangyari dito. 1447 01:07:34,120 --> 01:07:37,620 Gusto ko ang aking web page upang maging ganap dynamic na tulad ng Gmail, kung saan sa sandaling nasa 1448 01:07:37,620 --> 01:07:38,650 doon, mo manatili doon. 1449 01:07:38,650 --> 01:07:42,900 Ang URL ay hindi nagbabago sa isang paraan na Ipinapahiwatig ang buong pahina ay i-load muli. 1450 01:07:42,900 --> 01:07:46,680 Sa halip, gusto ko lang upang baguhin ang isang bagay tulad ng pag-print out ng isang bagay 1451 01:07:46,680 --> 01:07:48,320 dito sa screen. 1452 01:07:48,320 --> 01:07:49,630 >> Well hayaan mo akong linisin ito up ng isang maliit na bit. 1453 01:07:49,630 --> 01:07:55,370 Hayaan akong magbukas ng mga hindi DOM-0, ngunit hayaan mo akong magbukas ng mga DOM-2. 1454 01:07:55,370 --> 01:07:57,350 Kaya lang iyong nakita mo ang ilang mga syntax dito. 1455 01:07:57,350 --> 01:08:02,080 >> Ito ay lumiliko out na kung ano ang aming lamang ay gumagamit ng raw JavaScript. 1456 01:08:02,080 --> 01:08:04,420 Kaya ito ay tunay na mga wika JavaScript. 1457 01:08:04,420 --> 01:08:07,340 Maaaring kilala ang ilan sa iyo ng isang library na tinatawag na jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Kaya jQuery ay hindi katulad bagay tulad ng JavaScript. 1459 01:08:09,980 --> 01:08:14,110 Ito ay lamang ng isang library na isang talagang matalino Sinulat ni lalaki at popularized tulad 1460 01:08:14,110 --> 01:08:18,100 na halos lahat ng tao sa mundo ngayon ay gumagamit ng jQuery kapag gumagamit ng JavaScript. 1461 01:08:18,100 --> 01:08:20,890 At sa unang tingin, totoo lang, ito mukhang higit pa ng kaunti misteriyoso. 1462 01:08:20,890 --> 01:08:24,990 Ngunit makikita mo mahanap, lalo na kung pumunta ka doon para sa iyong huling proyekto sa web 1463 01:08:24,990 --> 01:08:29,029 pag-unlad, makikita mong makita na ito cleans bagay up at makatipid ka ng masyadong isang 1464 01:08:29,029 --> 01:08:30,229 ilang linya ng code. 1465 01:08:30,229 --> 01:08:33,189 >> Kaya sabihin sulyap lang sa kung paano ang form na ito ay gumagana. 1466 01:08:33,189 --> 01:08:35,664 Pansinin kung ano ang ginawa ko aalisin sa malas mula sa aking HTML? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Walang isumite sa handler kaya na magsalita. 1469 01:08:40,630 --> 01:08:41,470 Walang katangian. 1470 01:08:41,470 --> 01:08:43,359 Dahil alam mo na, kung ano Hindi talaga ako ang nagustuhan? 1471 01:08:43,359 --> 01:08:45,640 Nadama ko tulad ng tayo ay bumabagsak na sa lumang mga gawi doon. 1472 01:08:45,640 --> 01:08:49,340 Tulad ng ito ay nagsisimula sa pakiramdam nanggigitata upang makihalubilo sa parehong CSS na may 1473 01:08:49,340 --> 01:08:52,149 HTML, dahil naka uri ng masusuka iba't ibang mga wika sa buong 1474 01:08:52,149 --> 01:08:56,180 lugar, katulad ay ito magsimula sa pakiramdam tulad ng isang masamang kalsada upang pumunta down na kung saan 1475 01:08:56,180 --> 01:09:01,069 Ako paglalagay ng JavaScript code sa loob ng aking HTML sa halip na factoring ito. 1476 01:09:01,069 --> 01:09:02,279 >> Kaya iyon ang aralin dito. 1477 01:09:02,279 --> 01:09:05,080 Sa DOM-2.html, ako factoring ito. 1478 01:09:05,080 --> 01:09:07,399 At ako paggawa ng mga bagay bahagyang magkaiba. 1479 01:09:07,399 --> 01:09:09,630 Para sa ngayon, ako ng pagpunta sa iwagayway ang aking mga kamay sa kung ano ang ginagawa na ito talaga 1480 01:09:09,630 --> 01:09:10,590 sa ilalim ng hood. 1481 01:09:10,590 --> 01:09:14,210 Ngunit para lamang sa ngayon ay ipinapalagay na ang unang linya ng code sa aklatang ito 1482 01:09:14,210 --> 01:09:18,170 tinatawag lamang ay nangangahulugan jQuery kapag ang dokumento ay handa na, gawin ang sumusunod. 1483 01:09:18,170 --> 01:09:20,080 >> Dahil maaaring tumagal ng mga web page ilang oras upang i-load. 1484 01:09:20,080 --> 01:09:23,029 Ikaw ay maaring sa isang mabagal na internet koneksyon, at ito ay maaaring umiikot 1485 01:09:23,029 --> 01:09:25,290 at umiikot, at sa wakas ito ay load. 1486 01:09:25,290 --> 01:09:29,060 Iyon linya ng code lamang sabi maghintay hanggang ang buong pahina ay handa na, ang dokumento 1487 01:09:29,060 --> 01:09:31,189 ay handa na, bago e-execute ang code na ito. 1488 01:09:31,189 --> 01:09:34,390 >> At mapansin ngayon, ito ay marahil ang pinaka-kapaki-pakinabang muna 1489 01:09:34,390 --> 01:09:36,189 tumagal ang layo mula sa jQuery. 1490 01:09:36,189 --> 01:09:42,140 Ang line dito ay katulad na katulad sa espiritu sa ganito karami na linya dito. 1491 01:09:42,140 --> 01:09:46,920 Sapagkat sa raw na JavaScript code, mayroong Umiiral na ang isang dokumento global bagay na iyon 1492 01:09:46,920 --> 01:09:50,460 May isang function na tinatawag na getElementById (), ang mga tao na sinulat ni 1493 01:09:50,460 --> 01:09:55,720 pinasimple jQuery na upang sabihin lamang pag-sign dolyar, at pagkatapos ay sa loob ng 1494 01:09:55,720 --> 01:10:00,250 panaklong maglagay ng dalawang quote, at pagkatapos ay maglagay ng simbolo ng hash kasunod ang 1495 01:10:00,250 --> 01:10:02,250 natatanging ID na gusto mong i-grab. 1496 01:10:02,250 --> 01:10:06,170 Kaya ito ay katumbas ng document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> Samantala,. Isumite ang ibig sabihin lamang sa pagsumite ng kahit anong paraan ikaw ay 1498 01:10:11,090 --> 01:10:14,240 nagre-refer sa sa kaliwa, pumunta Magpatuloy at isakatuparan ito. 1499 01:10:14,240 --> 01:10:16,600 Ngunit ito ay ngayon ang pag-usisa masyadong. 1500 01:10:16,600 --> 01:10:19,560 Ano ang kakaiba tungkol sa kung ano Na-highlight ko dito? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Hindi lamang ito ay uri ng syntactically bagong, mayroon ding nawawalang isang bagay. 1503 01:10:28,594 --> 01:10:29,558 >> Madla: Ito ay tinatawag na lamang ang function? 1504 01:10:29,558 --> 01:10:31,970 Hindi ito na tinatawag na alerto? 1505 01:10:31,970 --> 01:10:32,440 >> David MALAN: Oo. 1506 01:10:32,440 --> 01:10:35,450 Well, kaya alerto () ay bagsak dito, upang maging patas. 1507 01:10:35,450 --> 01:10:39,520 Ngunit walang pagbanggit ng isang pangalanan, tulad ng alam mo, foo o 1508 01:10:39,520 --> 01:10:40,980 isang bagay up dito. 1509 01:10:40,980 --> 01:10:43,830 At sa katunayan, ito ay isa sa mga tampok ng JavaScript na Medyo 1510 01:10:43,830 --> 01:10:45,370 makapangyarihan, ngunit din masyadong bagong. 1511 01:10:45,370 --> 01:10:47,460 At PHP aktwal May pati na rin ito. 1512 01:10:47,460 --> 01:10:49,500 >> Hayaan akong magpatuloy at gawin isang bagay na tunay mabilis. 1513 01:10:49,500 --> 01:10:52,030 Hayaan akong magpatuloy at ilagay ito dito. 1514 01:10:52,030 --> 01:10:52,600 Hayaan akong gawin ito. 1515 01:10:52,600 --> 01:10:53,690 Ang function na. 1516 01:10:53,690 --> 01:10:56,455 Hayaan tawagan ni ito handler (). 1517 01:10:56,455 --> 01:10:58,290 Ang isang humahawak ng pag-andar nang sa gayon na magsalita. 1518 01:10:58,290 --> 01:11:00,110 Isang bagay na humahawak sa ilang mga operasyon. 1519 01:11:00,110 --> 01:11:02,700 Hayaan akong linisin ang aking mga indentation. 1520 01:11:02,700 --> 01:11:04,380 At ilagay ito dito. 1521 01:11:04,380 --> 01:11:06,090 At ilagay na dito. 1522 01:11:06,090 --> 01:11:06,470 Yep. 1523 01:11:06,470 --> 01:11:07,060 OK. 1524 01:11:07,060 --> 01:11:10,300 >> Kaya ngayon mayroon akong isang function na tinatawag na handler () na hindi ko talaga alam 1525 01:11:10,300 --> 01:11:10,890 kung ano ang ginagawa nito pa. 1526 01:11:10,890 --> 01:11:12,710 Ito lamang ay mayroon pa ring mga bagay-bagay na. 1527 01:11:12,710 --> 01:11:13,900 Oops. 1528 01:11:13,900 --> 01:11:15,820 Kinuha masyadong maraming. 1529 01:11:15,820 --> 01:11:18,490 Natin gawin ito. 1530 01:11:18,490 --> 01:11:18,990 Ayos lang. 1531 01:11:18,990 --> 01:11:20,240 Sorry. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 Ayos lang. 1534 01:11:23,690 --> 01:11:24,720 Hayaan ang gawin sa akin ito. 1535 01:11:24,720 --> 01:11:25,020 OK. 1536 01:11:25,020 --> 01:11:27,040 Na mukhang maganda at tuwid inaabangan ang panahon ngayon. 1537 01:11:27,040 --> 01:11:29,090 Hayaan ang gawin sa akin ito. 1538 01:11:29,090 --> 01:11:29,860 Gawin ito. 1539 01:11:29,860 --> 01:11:30,950 At ang OK. 1540 01:11:30,950 --> 01:11:33,080 Kaya ngayon, sabihin ilagay ito sa paglipas dito. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Wala nang mga programming sa mabilisang. 1543 01:11:37,270 --> 01:11:37,900 OK. 1544 01:11:37,900 --> 01:11:40,000 >> Kaya ngayon, sabihin bumalik sa kung saan ang kwento ay nagsimula. 1545 01:11:40,000 --> 01:11:43,530 Noong una, sinabi ko na ang linyang ito dito ibig sabihin kapag ang dokumento ay handa na, pumunta 1546 01:11:43,530 --> 01:11:44,380 Magpatuloy at gawin ito. 1547 01:11:44,380 --> 01:11:45,660 Ano ang gusto kong gawin? 1548 01:11:45,660 --> 01:11:49,070 Well partikular, gusto kong pumunta Magpatuloy at gawin ang mga sumusunod. 1549 01:11:49,070 --> 01:11:53,700 Ipatupad ito linya ng code, at pagkatapos ay kung ano ang gusto ko mong gawin ay tumawag ito 1550 01:11:53,700 --> 01:11:56,370 gumana kapag ang form ay isinumite. 1551 01:11:56,370 --> 01:11:57,730 >> Ngayon na ito ay kung ano ang kawili-wili. 1552 01:11:57,730 --> 01:11:59,170 Ito ay hindi mismo ng isang function. 1553 01:11:59,170 --> 01:12:02,540 Pansinin hindi ako ay paglagay ng panaklong dito sa normal na paraan. 1554 01:12:02,540 --> 01:12:06,800 Literal na ako ng pagpasa ng isang function na tinatawag na handler () sa isa pang function na 1555 01:12:06,800 --> 01:12:10,800 tinatawag na isinumite () bilang isang argumento bilang bagaman ito ay tulad ng isang variable. 1556 01:12:10,800 --> 01:12:14,290 At ito ay isa sa mga tampok ng JavaScript, mga function ay ang kanilang mga sarili 1557 01:12:14,290 --> 01:12:15,710 ay talagang lamang bagay. 1558 01:12:15,710 --> 01:12:18,350 Sa katunayan, ang mga ito ay talagang lamang mga variable ng uri. 1559 01:12:18,350 --> 01:12:21,340 At kung ang pangalan ng function na ay handler (), walang dahilan na hindi ko makakaya 1560 01:12:21,340 --> 01:12:23,390 pumasa ito sa bilang isang argumento dito. 1561 01:12:23,390 --> 01:12:27,530 At ito ay nangangahulugan na kapag ang form may ID ng demo ay 1562 01:12:27,530 --> 01:12:29,320 isinumite, tinatawag ito ng pag-andar. 1563 01:12:29,320 --> 01:12:32,770 >> Ngunit ngayon kung ko i-undo lahat ng ito, bakit pagkatapos ay ang nakuha ko marahil gawin 1564 01:12:32,770 --> 01:12:34,850 ito ng ilang sandali ang nakalipas? 1565 01:12:34,850 --> 01:12:36,840 Well, ito ay isang hindi kilalang function. 1566 01:12:36,840 --> 01:12:41,080 Dahil lantaran, napagtanto ko kung bakit ako Iniistorbo upang aaksaya ng oras sa isang deklarasyon 1567 01:12:41,080 --> 01:12:45,540 function na tinatawag na handler () lamang na tumawag ito sa isa at lamang ng isang lugar? 1568 01:12:45,540 --> 01:12:48,640 Kung hindi ko kailangan ang mga pangalan, at gawin ko hindi kailangang tumawag ito ng higit sa isang lugar, 1569 01:12:48,640 --> 01:12:51,200 sabihin lang ipatupad ang pag-andar kanan kung saan kailangan ko ito. 1570 01:12:51,200 --> 01:12:55,190 At kaya JavaScript at PHP support kung ano ay tinatawag na anonymous function na 1571 01:12:55,190 --> 01:12:57,900 payagan ang sa akin upang gawin eksakto na dito. 1572 01:12:57,900 --> 01:12:59,570 >> Ngunit lang kami scratching ang ibabaw. 1573 01:12:59,570 --> 01:13:02,430 Sabihin mang-ulol sa pamamagitan lamang ng ilang huling mga halimbawa dito. 1574 01:13:02,430 --> 01:13:04,600 >> Kung pumunta ako sa quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Pansinin na ito ay talagang isang PHP function, isang PHP programa, na ako ay sumulat 1577 01:13:11,870 --> 01:13:15,270 na Inaasahan ng isang HTTP parameter na tinatawag na simbolo, at maaari ba akong pumasa sa 1578 01:13:15,270 --> 01:13:16,730 ng halaga tulad ng FB. 1579 01:13:16,730 --> 01:13:20,010 At kung namin talagang tumingin sa ang source code, ito ay querying isang libreng website 1580 01:13:20,010 --> 01:13:23,680 na tinatawag na Yahoo Finance, tulad ng p-set pitong, at ito ay bumabalik sa akin 1581 01:13:23,680 --> 01:13:26,580 isang bagay sa tila ang format na kilala ay JSON - 1582 01:13:26,580 --> 01:13:28,010 JavaScript Bagay pagtatanda. 1583 01:13:28,010 --> 01:13:28,810 Ito ay lamang ng isang bagay. 1584 01:13:28,810 --> 01:13:32,500 Pansinin ang kulot tirante, ang mga quote, ang tutuldok, at ang mga kuwit. 1585 01:13:32,500 --> 01:13:34,720 >> Ngayon samantala, ito ay medyo cool. 1586 01:13:34,720 --> 01:13:38,520 Dahil ang maaari kong marahil gumamit ng programming wika upang bumuo ng mga URL 1587 01:13:38,520 --> 01:13:40,370 na hitsura tulad ng mga dynamic na ito, tama? 1588 01:13:40,370 --> 01:13:43,340 Maaari ko bang baguhin ito sa Google at makabalik ng Google 1589 01:13:43,340 --> 01:13:47,930 stock presyo ng $ 1,017.55. 1590 01:13:47,930 --> 01:13:49,640 Kaya sabihin makita kung hindi namin maaaring gamitin ito ngayon. 1591 01:13:49,640 --> 01:13:56,590 >> Hayaan akong pumunta sa ajax-0 dito, na Mukhang ang mga sumusunod. 1592 01:13:56,590 --> 01:13:59,750 Ito ay lamang ng isang website na mayroong isang form na may isang pindutan. 1593 01:13:59,750 --> 01:14:05,860 Hayaan akong dito sige at i-type sa YHOO para sa stock symbol ng Yahoo, i-click ang Kumuha ng 1594 01:14:05,860 --> 01:14:10,530 Quote, at ngayon ay mapapansin ko na nakuha isang alerto na may 32.86. 1595 01:14:10,530 --> 01:14:14,050 >> Hayaan akong talagang pumunta sa isang may interes bersyon ng pahinang ito, dalawang bersyon, at 1596 01:14:14,050 --> 01:14:17,530 type sabihin nating Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Kumuha ng Quote. 1598 01:14:18,410 --> 01:14:19,850 At ngayon mapansin, walang alerto. 1599 01:14:19,850 --> 01:14:22,770 Pansinin kung saan sinasabi nito na presyo na tinutukoy? 1600 01:14:22,770 --> 01:14:27,060 May ay ang pinakasimpleng ng mga halimbawa na mga pahiwatig sa kung ano Gchat, at Facebook 1601 01:14:27,060 --> 01:14:30,070 Makipag-chat, at Gmail, at iba pang mga katulad ang mga website na ginagawa sa pamamagitan ng aktwal 1602 01:14:30,070 --> 01:14:31,290 pagbabago ng web page. 1603 01:14:31,290 --> 01:14:31,800 >> Pansinin na ito. 1604 01:14:31,800 --> 01:14:33,120 Hayaan akong i-reload ang pahina. 1605 01:14:33,120 --> 01:14:35,080 Hayaan akong buksan up ng Chrome Inspector. 1606 01:14:35,080 --> 01:14:36,890 Hayaan akong pumunta sa mga elemento down na tab dito. 1607 01:14:36,890 --> 01:14:42,310 Ngayon mapansin kung ako mag-zoom in down na dito at buksan ito up, mapapansin na ito ay ang aking 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - ang aking mga dokumento object modelo. 1609 01:14:44,500 --> 01:14:45,920 Ito ang aking HTML. 1610 01:14:45,920 --> 01:14:48,750 Ngunit ngayon mapansin, kahit na ito ang nangyayari upang maging isang maliit na mahirap na makita ito sa parehong 1611 01:14:48,750 --> 01:14:52,080 mga lugar nang sabay-sabay, kung ako mag-type sa FB up dito, panoorin ang ilalim 1612 01:14:52,080 --> 01:14:54,110 ng screen lamang. 1613 01:14:54,110 --> 01:14:57,720 >> Talaga Ito ay nagbabago aking HTML sa mabilisang. 1614 01:14:57,720 --> 01:15:01,670 At ito ay ginagawa ito medyo simple sa pamamagitan ng paggawa ng isang bagay na katulad nito. 1615 01:15:01,670 --> 01:15:06,800 Kung ko bang buksan up ajax-2, mapansin pagpapatupad isang bagay bilang sexy bilang 1616 01:15:06,800 --> 01:15:09,560 na, kahit na ito ay medyo mainit ang ulo, ngunit bilang sopistikadong bilang na 1617 01:15:09,560 --> 01:15:11,910 pagtakbo, ito ay may ilang mga HTML sa ibaba. 1618 01:15:11,910 --> 01:15:13,810 Ngunit mapansin ginamit ko na i-tag. 1619 01:15:13,810 --> 01:15:16,640 Hindi namin ginagamit ito bago, ngunit ito ay katulad ng, ngunit hindi ito puwersahin 1620 01:15:16,640 --> 01:15:17,840 ang lahat ng bagay sa isang bagong linya. 1621 01:15:17,840 --> 01:15:20,830 Ito lamang ang gumagawa ng isang hugis-parihaba rehiyon sa parehong linya talaga. 1622 01:15:20,830 --> 01:15:22,870 >> Pansinin na Nagbigay ako ng ito ng isang ID ng presyo. 1623 01:15:22,870 --> 01:15:26,800 At ito lumiliko out sa pamamagitan ng paggamit ng parehong JavaScript library, mayroon akong isang function 1624 01:15:26,800 --> 01:15:30,440 tinatawag quote () na tinatawag na kailanman ang form na ay isinumite. 1625 01:15:30,440 --> 01:15:31,800 At kung ano ako ay ginagawa ito. 1626 01:15:31,800 --> 01:15:35,730 Ako deklarasyon ng variable sa JavaScript tinatawag na url, sine-save ang halaga 1627 01:15:35,730 --> 01:15:38,650 quote.php? simbolo =. 1628 01:15:38,650 --> 01:15:44,220 Sa ibang salita, ako sarili ko ako ay nagsisimula upang maghanda ng isang HTTP kahilingan, at pagkatapos ay 1629 01:15:44,220 --> 01:15:49,250 Ako concatenating papunta na ng plus ano ang mga elemento na may ID 1630 01:15:49,250 --> 01:15:54,190 ng mga simbolo ay, na paunawa ay na field ng teksto kanan pababa dito. 1631 01:15:54,190 --> 01:15:56,630 Kaya tulad ng nagkaroon kami mga form sa nakaraan. 1632 01:15:56,630 --> 01:16:01,450 >> At pagkatapos ay ito lumiliko out sa jQuery, kung tumawag. Val (), na tawag ng isang Val 1633 01:16:01,450 --> 01:16:05,900 function, isang halaga function, na nakukuha ng ano ang gumagamit ay nag-type in 1634 01:16:05,900 --> 01:16:08,920 At pagkatapos ay ang lahat ng trapiko ng network na mangyayari ito. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> At bilang isang bukod, dollar sign ay lamang ng isang shorthand notation. 1637 01:16:13,720 --> 01:16:16,860 Ito ay talagang jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Kumuha ako sa JSON mula sa URL na ito, at kapag ang kahilingan ay bumalik, tumawag ito 1639 01:16:21,520 --> 01:16:26,550 function at pumasa sa bilang ng mga argumento kahit anong dumating pabalik mula sa server. 1640 01:16:26,550 --> 01:16:31,205 >> Kaya sa ibang salita, kung pumunta ako pabalik sa browser, at pumunta ako pabalik sa quote.php, 1641 01:16:31,205 --> 01:16:35,590 kung ano ang aking browser ay paggawa ay pagkuha ito tipak ng data. 1642 01:16:35,590 --> 01:16:38,930 At kapag pumunta ko sa web page na ito dito, kung napansin namin sa halip pumunta sa network 1643 01:16:38,930 --> 01:16:43,820 tab at i-clear ito, at pagkatapos ay i-type ang isang bagay tulad ng GOOG para sa Google at Kumuha 1644 01:16:43,820 --> 01:16:46,340 Ilagay sa mga sipi, mapansin ang pahina ay hindi baguhin. 1645 01:16:46,340 --> 01:16:50,990 Ngunit isang HTTP na kahilingan ay ginawa, at kung ano dumating bumalik dito kung tinitingnan namin ang 1646 01:16:50,990 --> 01:16:56,130 tugon ay ang maramihang mga JSON na namin ang access sa wakas ay may 1647 01:16:56,130 --> 01:16:58,070 ito simpleng linya dito. 1648 01:16:58,070 --> 01:17:00,150 >> Data ay kung ano ang nakuha mula sa server. 1649 01:17:00,150 --> 01:17:02,120 Presyo ay ang pangalan ng key pinapahalagahan ko tungkol sa. 1650 01:17:02,120 --> 01:17:05,230 Kaya data.price nagbibigay sa akin na. 1651 01:17:05,230 --> 01:17:07,540 >> Ngayon samantala, at ito ay ang huling halimbawa. 1652 01:17:07,540 --> 01:17:09,280 Maaari mong gawin pa higit pa gamit ang pahina. 1653 01:17:09,280 --> 01:17:12,440 Isang aktwal, well dalawa. 1654 01:17:12,440 --> 01:17:14,780 Maaari naming isauli ang tag, kung tandaan mo na ito. 1655 01:17:14,780 --> 01:17:15,850 Iyon ang JavaScript. 1656 01:17:15,850 --> 01:17:17,110 Maaari naming gawin iyon. 1657 01:17:17,110 --> 01:17:17,690 Tunay na kapana-panabik. 1658 01:17:17,690 --> 01:17:18,800 Susubukan naming umalis na bilang isang cliffhanger. 1659 01:17:18,800 --> 01:17:21,590 >> Ngunit higit pa excitingly, maaari mong gawin ang mga bagay na katulad nito. 1660 01:17:21,590 --> 01:17:25,940 Kung pumunta ako sa geolocation-1, ito lumiliko out na alam ng Chrome na tayo sa 1661 01:17:25,940 --> 01:17:30,672 latitude longitude 42.37. -71.10. 1662 01:17:30,672 --> 01:17:32,940 Kaya mayroong kahit na higit pa doon sa iyong pagtatapon. 1663 01:17:32,940 --> 01:17:34,290 Ngunit higit pa sa na sa susunod na linggo. 1664 01:17:34,290 --> 01:17:35,540 Magkita Lunes. 1665 01:17:35,540 --> 01:17:37,558