1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Hi sa lahat. 3 00:00:07,030 --> 00:00:09,530 Kami ay pagpunta upang makapagsimula lamang ng ilang mga minuto ng maaga 4 00:00:09,530 --> 00:00:11,738 dahil kami ay may isang buong maraming ng mga materyal upang makakuha ng pamamagitan. 5 00:00:11,738 --> 00:00:12,790 Ako Hannah. 6 00:00:12,790 --> 00:00:13,865 Ako TF. 7 00:00:13,865 --> 00:00:16,239 Maria ay pagpunta sa pagsali sa amin sa loob lamang ng ilang minuto. 8 00:00:16,239 --> 00:00:17,560 Siya ay nagtuturo sa section bago mismo. 9 00:00:17,560 --> 00:00:19,351 Turuan ko section karapatan pagkatapos, kaya kami ay pagpunta 10 00:00:19,351 --> 00:00:21,200 upang panatilihin ang mga ito sa oras at kalahati. 11 00:00:21,200 --> 00:00:25,490 >> Kaya tulad ng makikita mo dito, kami ay lubos na ang ilang mga paksa na kailangan namin upang makakuha ng pamamagitan, 12 00:00:25,490 --> 00:00:27,200 kaya makikita ay pupunta kami ng isang maliit na piraso ng mabilis. 13 00:00:27,200 --> 00:00:31,140 Ngunit kung sa anumang punto ang sinasabi namin ng isang bagay masyadong mabilis o hindi mo maintindihan, 14 00:00:31,140 --> 00:00:33,170 huwag mag-atubili sa pag-abala sa mga tanong. 15 00:00:33,170 --> 00:00:36,610 Gusto naming ma-gumawa ito ng isang repasuhin ang session bilang kapaki-pakinabang sa lahat ng mga ka 16 00:00:36,610 --> 00:00:37,973 hangga't maaari. 17 00:00:37,973 --> 00:00:38,920 Kahanga-hanga. 18 00:00:38,920 --> 00:00:41,650 >> Kaya sabihin tumalon ni karapatan sa ilang mga paksa na namin ang aktwal na 19 00:00:41,650 --> 00:00:46,980 tunay, tunay daglian sakop para sa pagsusulit 0 sa pagsusulit 0 session review. 20 00:00:46,980 --> 00:00:48,840 Kaya simula sa naka-link na mga listahan. 21 00:00:48,840 --> 00:00:52,090 Kaya't tiyakin na ikaw ay may ilang mga lang pangunahing kaalaman tungkol sa mga listahan ng link 22 00:00:52,090 --> 00:00:55,110 at ay kumportable paggawa ang ilan sa mga pangunahing mga operasyon. 23 00:00:55,110 --> 00:00:58,560 >> Kaya upang repasuhin lamang, na naka-link listahan ay mas mahusay kaysa sa array 24 00:00:58,560 --> 00:01:01,020 dahil sila ay maaaring maging pabago-bago. 25 00:01:01,020 --> 00:01:03,300 Kaya kami na malaking kalamangan. 26 00:01:03,300 --> 00:01:06,031 Nakita namin ang mga ito na ginagamit sa hash talahanayan kapag kami 27 00:01:06,031 --> 00:01:08,280 hindi alam eksakto kung gaano karaming bagay na kami ay pagpunta sa nais 28 00:01:08,280 --> 00:01:10,900 upang ipasok sa aming mga istraktura ng data. 29 00:01:10,900 --> 00:01:15,700 Sa kasamaang palad, kami ay may mga piraso ng ang listahan ng mga link sa lahat ng dako ng memorya, 30 00:01:15,700 --> 00:01:20,820 kaya hindi namin kinakailangang maging magawa constant time access 31 00:01:20,820 --> 00:01:22,502 sa anumang elemento sa naka-link na listahan. 32 00:01:22,502 --> 00:01:24,210 Upang makahanap ng isang partikular na elemento, kami 33 00:01:24,210 --> 00:01:26,510 kung umulit ng lahat ng mga paraan mula sa simula. 34 00:01:26,510 --> 00:01:30,610 Kaya tandaan na ang karamihan ng mga pangunahing pagpapatakbo mga wakas ng 1. 35 00:01:30,610 --> 00:01:32,130 Kaya insert ay lamang pagpunta sa tumagal ng 1. 36 00:01:32,130 --> 00:01:37,520 Burahin ang pagpunta sa kumuha n dahil tayo kung pumunta mahanap ito mula sa listahan. 37 00:01:37,520 --> 00:01:39,260 At ang paghahanap ay maaaring tumagal, sa pinakamalala, n. 38 00:01:39,260 --> 00:01:42,330 Hindi namin maaaring gawin ang isang bagay tulad ng binary paghahanap sa isang listahan ng mga link 39 00:01:42,330 --> 00:01:45,101 dahil hindi namin Maaari lamang sapalaran tumalon sa gitna. 40 00:01:45,101 --> 00:01:45,600 Cool. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Kahanga-hanga. 43 00:01:48,960 --> 00:01:50,270 >> Ang isang maliit na piraso ng stack. 44 00:01:50,270 --> 00:01:53,980 Ito, muli, ay tumataas sa pagsusulit 0, kaya mo dapat maging sobrang komportable dito. 45 00:01:53,980 --> 00:01:57,210 Ngunit para sa mga stack, hinihiling namin sa iyo tandaan ng isang stack ng mga trays. 46 00:01:57,210 --> 00:01:59,940 At ito ay magiging unang in, huling out. 47 00:01:59,940 --> 00:02:02,272 Kaya stack namin ang mga bagay up sa stack, at pagkatapos ay 48 00:02:02,272 --> 00:02:04,980 kung kami ay sinusubukan upang gumawa ng isang bagay off-- na tawag namin pop off 49 00:02:04,980 --> 00:02:06,581 ang stack-- dumating kami mula sa itaas. 50 00:02:06,581 --> 00:02:09,289 At kung gusto naming ilagay ang isang bagay sa stack, tinatawag namin itong panunulak. 51 00:02:09,289 --> 00:02:13,170 Kaya ito ay palaging pagpunta sa paglaki mula sa ilalim tulad ng isang stack ng mga trays. 52 00:02:13,170 --> 00:02:14,540 Kahanga-hanga. 53 00:02:14,540 --> 00:02:17,607 >> Ipinatupad namin nakita stack sa parehong mga listahan ng link at mga array. 54 00:02:17,607 --> 00:02:19,440 Kung ikaw ay pagpapatupad may array, na nais mong 55 00:02:19,440 --> 00:02:22,350 tiyakin na subaybayan ang pareho ang laki at ang kapasidad. 56 00:02:22,350 --> 00:02:27,540 Kaya laki ay magiging kasalukuyang bilang ng mga bagay-bagay sa iyong stack, 57 00:02:27,540 --> 00:02:32,900 samantalang kapasidad ay ang kabuuang bilang ng mga bagay na maaari mong iimbak sa iyong stack. 58 00:02:32,900 --> 00:02:34,220 Cool. 59 00:02:34,220 --> 00:02:35,767 >> Very katulad, mayroon kaming queue. 60 00:02:35,767 --> 00:02:38,850 Sa kasong ito, sa halip ng pag-iisip tungkol isang stack ng mga trays, sa tingin ng isang line. 61 00:02:38,850 --> 00:02:40,697 Ito ay magiging unang, unang out. 62 00:02:40,697 --> 00:02:42,780 Kaya't kung ikaw ay lining up para sa isang bagay sa tindahan, 63 00:02:42,780 --> 00:02:46,920 inaasahan namin na ang taong unang in line ay magiging unang nakatulong. 64 00:02:46,920 --> 00:02:49,350 >> Sa halip na sabihing push at pop tulad ng ginagawa namin para sa stack, 65 00:02:49,350 --> 00:02:52,000 sabihin lang namin enqueue at dequeue. 66 00:02:52,000 --> 00:02:54,970 At muli, kung ikaw ay pagpapatupad na ito sa isang array, 67 00:02:54,970 --> 00:02:56,720 kailangan namin upang subaybayan ng hindi lamang ang laki ng 68 00:02:56,720 --> 00:03:02,390 at kakayahan, kundi pati na rin ang ulo, na kung saan ay magiging sa harap ng aming queue. 69 00:03:02,390 --> 00:03:03,010 Cool. 70 00:03:03,010 --> 00:03:05,770 Ang anumang mga katanungan sa anumang ng mga iyon? 71 00:03:05,770 --> 00:03:06,320 Kahanga-hanga. 72 00:03:06,320 --> 00:03:07,640 Paglipat ng karapatan kasama. 73 00:03:07,640 --> 00:03:08,564 >> OK, hash talahanayan. 74 00:03:08,564 --> 00:03:10,605 Narito ang kung saan ito ay nagsisimula sa makakuha ng talagang kawili-wili. 75 00:03:10,605 --> 00:03:14,150 Kaya ang isang hash table ay isa pagpapatupad ng isang nag-uugnay array. 76 00:03:14,150 --> 00:03:16,700 Kaya talaga kung ano ang nangyari ay namin ang lahat ng input na ito, 77 00:03:16,700 --> 00:03:18,750 at bigyan kami ng ito sa isang hash function na kung saan ay nagsasabing, 78 00:03:18,750 --> 00:03:21,840 OK, ito ay kung saan sa hash table ito aari. 79 00:03:21,840 --> 00:03:24,860 >> Kaya ang pinakasimpleng hash na nakakita kami ay lamang na sinasabi, 80 00:03:24,860 --> 00:03:28,170 OK, ipagpalagay na nais namin na ilagay ang string sa aming hash table. 81 00:03:28,170 --> 00:03:30,870 At talagang simpleng ideya maaaring sabihin, OK, 82 00:03:30,870 --> 00:03:34,350 pagbukud-bukurin lamang sa pamamagitan ng ipaalam unang titik ng salita. 83 00:03:34,350 --> 00:03:37,570 Kaya maaari mong makita dito, aming banana, ilalagay namin ito sa pamamagitan ng isang hash function, 84 00:03:37,570 --> 00:03:40,190 at sinasabi nito, hey, na dapat pumunta sa index 1. 85 00:03:40,190 --> 00:03:45,120 >> Kaya maaari namin mahalagang isipin ng isang hash mesa bilang isang grupo ng mga iba't ibang mga bucket. 86 00:03:45,120 --> 00:03:49,880 At bawat isa sa mga bucket ay pagpunta upang i-hold ang ulo ng isang listahan ng mga link. 87 00:03:49,880 --> 00:03:55,030 At sa na listahan ng mga link ay kung saan maaari naming talagang ilagay iba't ibang piraso ng data. 88 00:03:55,030 --> 00:03:57,820 >> Kaya diving nang kaunti pa sa isang hash, narito ang 89 00:03:57,820 --> 00:03:59,870 mga halimbawa ko lang inilarawan kung saan kami lang sabihin, 90 00:03:59,870 --> 00:04:02,460 OK, gawin ang unang titik ng salita at hindi namin 91 00:04:02,460 --> 00:04:03,990 pagpunta sa uri-uriin ang mga ito sa mga bucket. 92 00:04:03,990 --> 00:04:08,490 Kaya siguro, may makikita maging 26 mga bucket, isa para sa bawat titik ng alpabeto. 93 00:04:08,490 --> 00:04:10,090 Bakit ito ay hindi isang mahusay na pag-andar hash? 94 00:04:10,090 --> 00:04:13,461 Ano ang gumagawa ng mga ito di-tamang-tama? 95 00:04:13,461 --> 00:04:13,960 Oo. 96 00:04:13,960 --> 00:04:15,790 >> Madla: Ikaw ay pagpunta na magkaroon ng banggaan. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Oo, eksakto. 98 00:04:16,390 --> 00:04:18,000 Ikaw ay pagpunta sa may banggaan. 99 00:04:18,000 --> 00:04:18,954 Kaya na ang isang bagay. 100 00:04:18,954 --> 00:04:21,620 At kami ay makipag-usap tungkol sa kung paano aming makakaya ayusin ang mga banggaan sa isang segundo lang. 101 00:04:21,620 --> 00:04:23,980 Ang isa pang problema sa mga ito partikular na function hash 102 00:04:23,980 --> 00:04:25,980 ay na ang aming iba't-ibang mga bucket ay magiging 103 00:04:25,980 --> 00:04:28,960 ng pretty lubhang iba't ibang mga sukat. 104 00:04:28,960 --> 00:04:33,840 >> Alam namin na may isang buong maraming higit pang mga salita na nagsisimula sa A kaysa sa X, 105 00:04:33,840 --> 00:04:38,980 kaya kami ay pagpunta sa may napaka tabingi bucket sa aming hash table. 106 00:04:38,980 --> 00:04:40,050 Cool. 107 00:04:40,050 --> 00:04:41,340 Kaya oo, sabihin bumalik sa sa punto ng mga banggaan. 108 00:04:41,340 --> 00:04:42,900 Ano ang gagawin namin kung may isang banggaan? 109 00:04:42,900 --> 00:04:44,490 >> Mayroon kaming ilang iba't-ibang mga opsyon. 110 00:04:44,490 --> 00:04:47,600 Kaya isa, kaya ipagpalagay aming sinusubukan upang ilagay ang isang itlog ng isda sa aming hash table. 111 00:04:47,600 --> 00:04:50,370 At kami ay makikita, oh, gusto naming upang ilagay ito sa index 1, 112 00:04:50,370 --> 00:04:52,070 ngunit banana na nakatira doon. 113 00:04:52,070 --> 00:04:53,110 Ano ang gagawin natin? 114 00:04:53,110 --> 00:04:54,560 Mayroon kaming dalawang mga pangunahing mga opsyon. 115 00:04:54,560 --> 00:04:58,050 >> Bilang isa ay maaari naming sabihin, OK, walang kuwarto sa index 1, 116 00:04:58,050 --> 00:05:03,210 ngunit hayaan lamang panatilihin ang naghahanap sa pamamagitan ng hanggang maaari naming mahanap ang isa pang bukas na lugar. 117 00:05:03,210 --> 00:05:08,490 Kaya makikita namin sabihin, OK, ilagay ito sa lugar 3 ipaalam. 118 00:05:08,490 --> 00:05:09,240 Iyan ay isang pagpipilian. 119 00:05:09,240 --> 00:05:11,470 Iyan ay tinatawag na linear probing. 120 00:05:11,470 --> 00:05:15,500 >> At ang pangalawang opsyon ay nagsasabi, OK, na rin, gumawa lang bawat isa sa mga bucket ipaalam 121 00:05:15,500 --> 00:05:17,470 maging ulo ng mga naka-link na mga listahan. 122 00:05:17,470 --> 00:05:21,910 At ito ay OK kung mayroon pa sa isang bagay sa isang bucket. 123 00:05:21,910 --> 00:05:23,820 Kami ay pagpunta sa idagdag ito papunta sa harap. 124 00:05:23,820 --> 00:05:26,032 Kaya dito maaari mong makita, OK, kapag ipinasok namin itlog ng isda, namin 125 00:05:26,032 --> 00:05:28,240 kinuha lang saging, uri ng itinulak ito sa loob ng isang maliit na piraso 126 00:05:28,240 --> 00:05:29,842 at itinapon sa isang itlog ng isda sa doon. 127 00:05:29,842 --> 00:05:31,050 At na ring ganap fine. 128 00:05:31,050 --> 00:05:32,830 Ito ay tinatawag na hiwalay na chaining. 129 00:05:32,830 --> 00:05:38,100 Maaari mong isipin na ito bilang uri ng tulad ng isang hanay ng mga ulo sa naka-link na mga listahan. 130 00:05:38,100 --> 00:05:41,950 Anumang mga katanungan sa hash mga talahanayan, hash function? 131 00:05:41,950 --> 00:05:44,290 Kahanga-hanga. 132 00:05:44,290 --> 00:05:45,470 >> Puno at sumusubok. 133 00:05:45,470 --> 00:05:47,287 Kaya ang isang puno ay anumang uri ng mga istraktura ng data 134 00:05:47,287 --> 00:05:49,453 kung saan mayroong ilang mga uri ng hierarchy o ilang mga uri 135 00:05:49,453 --> 00:05:51,247 ng ranggo sa iyong iba't ibang mga bagay. 136 00:05:51,247 --> 00:05:53,580 At ito ay magiging sobrang malinaw na kapag nakita namin ang isang halimbawa. 137 00:05:53,580 --> 00:05:56,960 At nakita namin sumusubok, kasama may hash talahanayan, sa pset5-- 138 00:05:56,960 --> 00:06:00,700 kung saan, muli, lubos makatarungang laro para sa mga ito quiz-- bilang isa pang data 139 00:06:00,700 --> 00:06:03,110 istruktura na aming makakaya tindahan ng iba't ibang mga bagay. 140 00:06:03,110 --> 00:06:06,782 Sa kaso ng diksyonaryo, namin na naka-imbak ng grupo ng mga salita. 141 00:06:06,782 --> 00:06:08,240 Kaya sabihin kumuha ng isang pagtingin sa ilan sa mga puno. 142 00:06:08,240 --> 00:06:10,190 Kaya ito ay isang halimbawa ng isang puno. 143 00:06:10,190 --> 00:06:13,105 Ito ay may isang uri ng istraktura, na hierarchical istraktura, 144 00:06:13,105 --> 00:06:15,920 kung saan maaari mong makita na ito 1 node sa tuktok 145 00:06:15,920 --> 00:06:20,750 may ilang mga uri ng mga ranggo sa itaas 2 at 3, na kung saan ay sa itaas ng 4, 5, at 6 at 7, 146 00:06:20,750 --> 00:06:22,860 na kung saan ay sa itaas ng 8 at 9. 147 00:06:22,860 --> 00:06:25,210 Kaya na ang lahat ang ibig sabihin namin sa pamamagitan ng isang puno, kaya maaari mong uri lamang 148 00:06:25,210 --> 00:06:26,660 ng larawan na ito sa iyong ulo. 149 00:06:26,660 --> 00:06:29,050 >> Ngayon, kami ay may isang pares ng mga higit pang mga pinasadyang mga puno. 150 00:06:29,050 --> 00:06:31,070 Kaya isang halimbawa ay isang binary tree. 151 00:06:31,070 --> 00:06:33,290 At isang binary puno ay, muli, lamang ang pagpunta sa 152 00:06:33,290 --> 00:06:37,040 isang istraktura ng data na may ilang mga uri ng hierarchy, ngunit ang bawat isa sa mga node 153 00:06:37,040 --> 00:06:38,650 ay maaaring magkaroon ng hindi hihigit sa dalawang bata. 154 00:06:38,650 --> 00:06:41,530 Iyon ay kung saan ang salita binary ay mula. 155 00:06:41,530 --> 00:06:43,410 Kaya ito ay isang halimbawa ng isang binary tree. 156 00:06:43,410 --> 00:06:45,720 Kaya na ang isang mas maliit na kategorya ng mga puno. 157 00:06:45,720 --> 00:06:48,960 >> Ngayon sabihin makakuha ng mas tiyak at makipag-usap tungkol sa binary trees-- binary search 158 00:06:48,960 --> 00:06:51,310 puno, sa halip. 159 00:06:51,310 --> 00:06:56,430 Kaya dito ay ang ginagawa ng mga ideya hindi lamang mayroon ang bawat node sa karamihan ng dalawang anak, 160 00:06:56,430 --> 00:07:00,300 ngunit ang lahat ng mga anak sa mga kaliwang ay magiging mas maliit 161 00:07:00,300 --> 00:07:03,450 at ang lahat ng mga anak sa mga karapatan ay magiging mas malaki. 162 00:07:03,450 --> 00:07:05,890 Kaya mapansin lamang sa aming binary puno, may 163 00:07:05,890 --> 00:07:08,650 walang relasyon sa pagitan ng mga numero. 164 00:07:08,650 --> 00:07:12,990 Ngunit sa aming binary search tree, nakita namin, OK, narito ang 44. 165 00:07:12,990 --> 00:07:17,080 At ang bawat numero sa bandang kaliwa ng 44 ay mas maliit at ang lahat ng bagay sa kanan 166 00:07:17,080 --> 00:07:17,920 ay mas malaki. 167 00:07:17,920 --> 00:07:20,130 >> At na humahawak sa bawat antas ng puno. 168 00:07:20,130 --> 00:07:24,810 Kaya dito, ito ay mas maliit kaysa sa 22 at ito ay mas malaki kaysa sa 22. 169 00:07:24,810 --> 00:07:26,390 At na binary puno ng paghahanap. 170 00:07:26,390 --> 00:07:28,900 Bakit sa tingin namin ito ay tinatawag na isang binary puno ng paghahanap? 171 00:07:28,900 --> 00:07:30,651 Ano algorithm ay ito ipaalala sa iyo ng? 172 00:07:30,651 --> 00:07:31,650 Madla: Binary paghahanap. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: Binary paghahanap. 174 00:07:32,480 --> 00:07:35,150 Dahil kung ikaw ay naghahanap para sa isang partikular na numero sa punong ito, 175 00:07:35,150 --> 00:07:38,800 sa bawat punto, maaari mo lamang kumatok off sa kalahati ng mga puno, na kung saan ay malaki. 176 00:07:38,800 --> 00:07:43,800 At kaya na ang pagpunta sa magbibigay sa amin ng isang bagay na hitsura ng maraming tulad ng binary paghahanap. 177 00:07:43,800 --> 00:07:45,870 May tanong? 178 00:07:45,870 --> 00:07:47,570 Lahat ng mga karapatan, cool. 179 00:07:47,570 --> 00:07:48,560 >> Lahat ng karapatan, sumusubok. 180 00:07:48,560 --> 00:07:49,657 Paboritong ng lahat. 181 00:07:49,657 --> 00:07:51,990 Kaya ito ay ang halimbawa na nakakita kami ng grupo sa klase. 182 00:07:51,990 --> 00:07:54,710 At muli, ito ay isa lamang paraan na maaari kaming mag-imbak ng data. 183 00:07:54,710 --> 00:07:57,530 Sa kaso ng mga diksyunaryo, muli, ito ay lamang ang pagpunta sa mga string. 184 00:07:57,530 --> 00:08:00,870 Kaya sabihin makita kung ano ang aktwal na Mukhang sa isang bahagyang mas mababang antas. 185 00:08:00,870 --> 00:08:03,690 >> Kaya sabihin tumagal ng isang pagtingin sa isang node sa isang trie. 186 00:08:03,690 --> 00:08:07,532 At kami ay makita, OK, may pupuntahan upang maging isang Boolean at isang node, 187 00:08:07,532 --> 00:08:09,170 isang pointer sa isang node. 188 00:08:09,170 --> 00:08:11,400 At nakita namin na ang Boolean ay tinatawag is_word. 189 00:08:11,400 --> 00:08:13,490 Kaya mahalagang, na ang pagpunta sa tumutugma 190 00:08:13,490 --> 00:08:16,750 sa mga maliit na tatsulok na sabi, kung nakuha dito, 191 00:08:16,750 --> 00:08:19,100 nakakita ka ng kumpletong salita. 192 00:08:19,100 --> 00:08:23,670 >> Alam namin na ang "turing" over dito ay isang kumpletong salita, 193 00:08:23,670 --> 00:08:28,030 samantalang lamang T-U-R ay hindi isang salita dahil hindi namin makita na ang maliit na delta. 194 00:08:28,030 --> 00:08:31,440 At na maliit na delta, muli, katumbas nito is_word, 195 00:08:31,440 --> 00:08:34,480 ito Boolean is_word. 196 00:08:34,480 --> 00:08:36,320 At pagkatapos kami ay may isang hanay ng mga bata. 197 00:08:36,320 --> 00:08:39,860 Kaya sa bawat antas, ikaw magkaroon ng isang partikular na node, 198 00:08:39,860 --> 00:08:42,470 at na node puntos sa isang array ng buong alpabeto. 199 00:08:42,470 --> 00:08:44,346 >> Kaya makikita mo, muli, in sa ang larawang ito Ako 200 00:08:44,346 --> 00:08:48,170 pagpunta sa panatilihin ang tumatalon papunta at forth-- na na array sa tuktok 201 00:08:48,170 --> 00:08:51,640 ay may isang bungkos ng iba't ibang nodes pagdating off ng mga ito. 202 00:08:51,640 --> 00:08:57,140 Ito ay may 26, o 27 kung nais mong upang isama ang isang dagdag na character. 203 00:08:57,140 --> 00:09:01,320 At ito ay nagbibigay sa amin ng isang paraan sa tindahan ng aming data 204 00:09:01,320 --> 00:09:04,450 sa isang paraan na maaaring tumingin sa na maaari mong tingnan up napakabilis na. 205 00:09:04,450 --> 00:09:06,650 Ano ang time lookup para sa isang trie? 206 00:09:06,650 --> 00:09:07,970 >> Madla: [hindi marinig]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Oo. 208 00:09:08,300 --> 00:09:09,550 Sa teorya, ito ay pare-pareho ang panahon. 209 00:09:09,550 --> 00:09:13,230 Ito ay lamang ang pagpunta sa maging ang laki ng ang salita na nais mong tingnan up. 210 00:09:13,230 --> 00:09:15,950 Kahit na kung namin magdagdag ng isang zillion higit pang mga salita sa aming trie, 211 00:09:15,950 --> 00:09:18,160 hindi ito ay pagpunta sa tumagal kami anumang mas mahaba upang matukoy 212 00:09:18,160 --> 00:09:19,690 kung ang isang ibinigay na salita ay nasa trie. 213 00:09:19,690 --> 00:09:21,412 Kaya na talagang maganda. 214 00:09:21,412 --> 00:09:23,697 >> Madla: Ang ibig mo lamang magpasimula na array? 215 00:09:23,697 --> 00:09:24,780 Hindi mo nasagot ang isa o dalawang mga punto. 216 00:09:24,780 --> 00:09:26,130 Maaari kayong makipag-usap lamang tungkol sa na para sa isang segundo? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Oo naman, walang pasubali. 218 00:09:26,680 --> 00:09:27,590 Magandang tanong. 219 00:09:27,590 --> 00:09:31,140 Ang tanong ay, namin magkaroon ng isang array na 220 00:09:31,140 --> 00:09:34,180 pagpunta sa may node star bilang laban sa lamang node, di ba? 221 00:09:34,180 --> 00:09:35,180 Cool. 222 00:09:35,180 --> 00:09:37,990 Kaya dito kung ano ang sinasabi namin ay ang aming array ay lamang 223 00:09:37,990 --> 00:09:40,035 magiging payo sa iba pang mga array. 224 00:09:40,035 --> 00:09:42,910 Kaya ito ay essentially-- ito uri ng nararamdaman ng isang listahan ng mga link sa ganitong paraan 225 00:09:42,910 --> 00:09:46,620 kung saan ang bawat isa sa mga bata ituro lang sa susunod na node. 226 00:09:46,620 --> 00:09:49,030 >> At ang paraan na aming talagang matukoy, hey, OK, 227 00:09:49,030 --> 00:09:52,320 na iterated namin sa pamamagitan ng isang buong salita, ang salitang ito sa diksyunaryo, 228 00:09:52,320 --> 00:09:54,476 check lang namin ito is_word. 229 00:09:54,476 --> 00:09:55,100 Mahusay na tanong. 230 00:09:55,100 --> 00:09:55,675 Oo. 231 00:09:55,675 --> 00:09:56,216 Madla: OK. 232 00:09:56,216 --> 00:09:57,470 Kaya kung ano ang runtime para sa trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Oo naman. 234 00:09:58,386 --> 00:10:01,852 Kaya ang runtime para sa isang trie para lookup ay magiging tapat na oras. 235 00:10:01,852 --> 00:10:04,310 Kaya lamang ito ay magiging ang bilang ng mga titik sa salita. 236 00:10:04,310 --> 00:10:06,310 Ito ay hindi nakasalalay sa mga laki ng diksyunaryo 237 00:10:06,310 --> 00:10:09,510 o ang laki ng mga istraktura ng data. 238 00:10:09,510 --> 00:10:12,170 Kaya dito ay isang bahagyang mas simpleng halimbawa. 239 00:10:12,170 --> 00:10:15,430 >> Sa kasong ito, maaari mong makita na ang salitang bat ay sa diksyunaryo 240 00:10:15,430 --> 00:10:18,900 at mayroon kang mag-zoom, ngunit ikaw hindi magkaroon ng isang bagay tulad ng zoo. 241 00:10:18,900 --> 00:10:20,050 Paano kami gumawa ng zoo? 242 00:10:20,050 --> 00:10:24,276 Paano ako magdadagdag kami zoo sa aming diksyonaryo, sa aming trie? 243 00:10:24,276 --> 00:10:24,776 Oo. 244 00:10:24,776 --> 00:10:27,014 >> Madla: Gumawa is_word totoo para sa [hindi marinig]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Good. 246 00:10:27,930 --> 00:10:31,731 Kaya gusto naming sabihin Z-O-O, at pagkatapos ay gusto namin gusto mong suriin off na box pati na rin. 247 00:10:31,731 --> 00:10:32,230 Great. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Napaka daglian ni ihambing Ipaalam sumusubok laban hash talahanayan. 250 00:10:37,930 --> 00:10:39,770 Sinusubukan ay talagang mahalaga dahil, gaya ng sinabi namin, 251 00:10:39,770 --> 00:10:41,610 nagbibigay sila ng pare-time lookup. 252 00:10:41,610 --> 00:10:44,285 Ngunit ang malaking kawalan ay ang mga ito ay humongous. 253 00:10:44,285 --> 00:10:46,160 Maaari kang makakuha ng pang-unawa, kahit na sa pamamagitan ng pagtingin sa mga ito, 254 00:10:46,160 --> 00:10:48,454 na ito ay pagpunta sa tumagal isang malaking halaga ng memory. 255 00:10:48,454 --> 00:10:50,620 Kaya sila ay magiging magkano mas malaki kaysa sa hash talahanayan, 256 00:10:50,620 --> 00:10:52,270 pero ang mga ito ay pagpunta sa bigyan sa amin marami mas mabilis na oras lookup. 257 00:10:52,270 --> 00:10:54,478 Kaya na uri ng iyong tradeoff, mga bagay na mahalaga sa iyo, 258 00:10:54,478 --> 00:10:57,350 maging ito man ay bilis o memory. 259 00:10:57,350 --> 00:11:02,251 Ang anumang mga katanungan sa anumang ng na, lahat ng mga istruktura C data. 260 00:11:02,251 --> 00:11:02,750 Maganda. 261 00:11:02,750 --> 00:11:03,250 SIGE. 262 00:11:03,250 --> 00:11:07,322 Kami ay pagpunta sa ilipat sa isang maliit na bit ng pag-unlad ng web na may Maria. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: kaibig-ibig. 264 00:11:08,280 --> 00:11:09,036 SIGE. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Maaari mong gamitin ang aking laptop. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Nice. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 OK, cool. 269 00:11:14,912 --> 00:11:17,120 Sa paglipat namin ngayon upang web pag-unlad, pinag-usapan namin ng isang maliit na 270 00:11:17,120 --> 00:11:20,680 tungkol sa pagbabago ng mga pahintulot ng mga file at mga direktoryo 271 00:11:20,680 --> 00:11:24,190 upang maaari silang ma-access sa sa ibang mga gumagamit, sa mundo, 272 00:11:24,190 --> 00:11:28,640 at upang maaari naming makita kung paano talaga maaari naming ihatid ang mga ito 273 00:11:28,640 --> 00:11:32,600 kapag bumuo kami ng mga bagay-bagay tulad ng mga website na namin ang halos lahat ay ginagawa. 274 00:11:32,600 --> 00:11:36,400 >> Kaya nakita natin ang utos chmod, na kung saan ay ang pagbabago mode, talaga. 275 00:11:36,400 --> 00:11:39,300 Iyan ay isang command sa Linux at ito ang mga pagbabago ng mga pahintulot ng access 276 00:11:39,300 --> 00:11:40,410 ng mga bagay na file system. 277 00:11:40,410 --> 00:11:43,370 At ang isang file system object ay isang direktoryo lamang, ang isang file, 278 00:11:43,370 --> 00:11:46,810 anumang bagay na maaari mong baguhin ang mga pahintulot ng. 279 00:11:46,810 --> 00:11:53,750 >> Kaya upang makita ang mga pahintulot ng file, type namin ang command ls, listahan, l. 280 00:11:53,750 --> 00:11:56,500 At kapag nag-type namin na, kami ay karaniwang makita ang ilang mga pahintulot 281 00:11:56,500 --> 00:11:59,660 na hitsura uri ng tulad nito sa harap ng isang pangalan ng direktoryo. 282 00:11:59,660 --> 00:12:01,260 Kaya d tumutukoy sa direktoryo. 283 00:12:01,260 --> 00:12:05,930 At pagkatapos kami ay may tatlong triads na talaga 284 00:12:05,930 --> 00:12:11,675 sumangguni sa mga pahintulot ng alinman sa ang isang user, ang isang grupo, o ang mundo. 285 00:12:11,675 --> 00:12:16,490 >> Ang mga uri ng pahintulot na aming makakaya magkaroon ng para sa mga tatlong mga grupo ng mga tao 286 00:12:16,490 --> 00:12:20,830 ay alinman sa r para basahin, w para magsulat, at x para maipatupad. 287 00:12:20,830 --> 00:12:23,650 At maaari kaming magkaroon ng mga para sa ang grupo at mundo rin. 288 00:12:23,650 --> 00:12:26,940 Ang mapanlinlang na bagay ay na kung minsan kapag nag-type namin ang utos chmod, 289 00:12:26,940 --> 00:12:32,960 Gusto namin i-type ang ilang mga numero ng na binubuo ng tatlong piraso. 290 00:12:32,960 --> 00:12:36,990 Kaya maaari naming gawin tulad ng 777 at na talaga 291 00:12:36,990 --> 00:12:40,450 tinutukoy ang mga idinagdag na halaga ng bawat isa sa mga triads 292 00:12:40,450 --> 00:12:45,060 dahil r ay sumangguni sa 4, w gagawin sumangguni sa 2, at x ay sumangguni sa 1, 293 00:12:45,060 --> 00:12:50,020 kaya kapag idinagdag up, ang bawat isa sa mga numero ng ay bumaba sa isang pinagsama-samang bilang 294 00:12:50,020 --> 00:12:52,750 sa isang pinagsama-samang halaga sa pagitan ng 0 at 7. 295 00:12:52,750 --> 00:12:55,150 Kaya namin maaaring magkaroon din ng 0 para sa walang pahintulot sa lahat. 296 00:12:55,150 --> 00:12:58,200 At iyon ay isa lamang ibigay sa amin ang mga pahintulot para sa alinman sa mga user, 297 00:12:58,200 --> 00:13:00,450 grupo, o sa mundo. 298 00:13:00,450 --> 00:13:02,620 Ang anumang mga katanungan sa mga ito sa ngayon? 299 00:13:02,620 --> 00:13:05,331 >> Madla: Ikaw sinabi basahin ay 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA Oo. 301 00:13:06,164 --> 00:13:07,568 Madla: [hindi marinig]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Yup. 303 00:13:08,504 --> 00:13:11,790 Madla: At pagkatapos ay sa pamamagitan ng pagdaragdag ng lahat ng mga iba ay nagpapahiwatig ng iyong numero. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Oo. 305 00:13:12,665 --> 00:13:14,970 Oo. 306 00:13:14,970 --> 00:13:17,810 Ang mga ito ay mahusay na mga katanungan. 307 00:13:17,810 --> 00:13:20,490 Kaibig-ibig. 308 00:13:20,490 --> 00:13:25,340 Susunod, kami ay kumuha ng puwesto sa HTML at isang kaunti pa tungkol sa web development. 309 00:13:25,340 --> 00:13:27,990 Kaya lamang ay nangangahulugan HTML Hyper Text Markup Language. 310 00:13:27,990 --> 00:13:30,460 At iyon ay ang markup wika na ay isang standard 311 00:13:30,460 --> 00:13:32,720 na ito ay ginagamit upang lumikha ng mga pahina ng web. 312 00:13:32,720 --> 00:13:35,750 >> Ito ay tinatawag na isang markup language dahil sa ito ay hindi aktwal na naipon. 313 00:13:35,750 --> 00:13:40,310 Hindi nito sinasabi kung paano ang ilang mga code ay dapat na pinaandar o anumang bagay tulad na. 314 00:13:40,310 --> 00:13:44,800 Delineates Ito lamang at naglalarawan kung paano ang isang web 315 00:13:44,800 --> 00:13:46,840 dapat na i-set up page sa bawat isa sa kanyang mga sangkap 316 00:13:46,840 --> 00:13:48,460 at kung paano sila ay dapat magmukhang para sa gumagamit. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Ang ilan sa mga tag na HTML na tayo tumawid ay ang sumusunod. 319 00:13:57,110 --> 00:14:00,500 Ang lahat ng aming mga dokumento HTML nagsimula sa mga DOCTYPE html. 320 00:14:00,500 --> 00:14:02,550 Pagkatapos kami ay laging may html tag. 321 00:14:02,550 --> 00:14:03,930 Kami ay may isang ulo at isang katawan. 322 00:14:03,930 --> 00:14:07,890 At ito ay mahalaga na ang HTML ay ang ganitong uri ng nested istraktura 323 00:14:07,890 --> 00:14:09,280 dahil sa ito ay napakalinaw. 324 00:14:09,280 --> 00:14:13,200 At pagkatapos ito ay nagiging tunay malinaw kapag kami kailangan upang buksan at talagang malapit na mga tag. 325 00:14:13,200 --> 00:14:18,400 At kami ay laging kailangan upang isara mga tag na iyong binuksan namin. 326 00:14:18,400 --> 00:14:23,170 >> At dito kami ay may ilan sa mga uri ng maagang mga bagay na gusto naming magkaroon. 327 00:14:23,170 --> 00:14:26,580 Kaya kami, halimbawa, ang pamagat ng CS50. 328 00:14:26,580 --> 00:14:31,980 At pagkatapos ay namin ang aktwal na Maaaring i-link ng isang style sheet 329 00:14:31,980 --> 00:14:34,030 na tumutukoy sa kung paano namin estilo ang aming website. 330 00:14:34,030 --> 00:14:35,650 Iyon ay CSS. 331 00:14:35,650 --> 00:14:39,320 Kami ay pagpunta sa pumunta sa paglipas ng ito sa susunod na pares ng mga slide na rin. 332 00:14:39,320 --> 00:14:42,580 >> Sa loob ng katawan, kami ay itakda ang ilang mga klase at mga ID. 333 00:14:42,580 --> 00:14:45,860 At bilang isang paalala, muli, ID ng natatangi at klase 334 00:14:45,860 --> 00:14:47,390 maaaring italaga sa maramihang mga item. 335 00:14:47,390 --> 00:14:52,110 At iyon ay nangangahulugan lamang na maaari naming gamitin ang mga klase at mga ID 336 00:14:52,110 --> 00:14:55,860 sa loob ng iba pang mga structures-- gayon, para sa Halimbawa, sa loob ng CSS file o style 337 00:14:55,860 --> 00:15:00,940 sheets-- na mag-refer sa mga tiyak na mga elemento at talaga sabihin na gusto naming i-style 338 00:15:00,940 --> 00:15:03,280 o disenyo ng ilang mga elemento sa ilang partikular na paraan. 339 00:15:03,280 --> 00:15:06,440 At ang aming sumangguni sa kanila sa pamamagitan ng kanilang mga ID at mga klase. 340 00:15:06,440 --> 00:15:09,870 At maaari naming ring sumangguni sa iba't-ibang mga bagay-bagay sa pamamagitan ng mga tag na rin, 341 00:15:09,870 --> 00:15:13,830 ngunit ID at mga klase lamang magbigay sa amin ng ilang mga kagalingan sa maraming bagay at kung ano ang partikular na namin 342 00:15:13,830 --> 00:15:15,850 nais na mag-refer sa. 343 00:15:15,850 --> 00:15:19,620 >> Kaya lamang ng isang halimbawa. 344 00:15:19,620 --> 00:15:22,730 Maaari naming, muli, sa loob ng isang CSS file na kung saan namin 345 00:15:22,730 --> 00:15:25,770 nais na tukuyin ang ilang mga style-- kaya kulay, font, 346 00:15:25,770 --> 00:15:30,340 at bagay-bagay tulad ng na- aming makakaya tukuyin ang mga estilo para sa isang katawan. 347 00:15:30,340 --> 00:15:32,640 Kaya na tukuyin ang mga ito para sa buong katawan tag. 348 00:15:32,640 --> 00:15:36,160 Ngunit pagkatapos ay maaari naming ring tukuyin ang isang estilo para sa isang #title. 349 00:15:36,160 --> 00:15:40,390 At muli, ang hashtag tumutukoy sa ating ID at ang tuldok ay tumutukoy sa aming klase. 350 00:15:40,390 --> 00:15:44,760 >> At pagkatapos ay para sa mga info, kami Maaari ring itakda ang ilang mga katangian. 351 00:15:44,760 --> 00:15:49,750 At muli, kapag pumunta namin pabalik, nagkaroon kami ng aming klase na tinatawag na info at ang aming mga pamagat ID. 352 00:15:49,750 --> 00:15:53,422 At maaari naming makita na namin sumangguni sa kanila sa pamamagitan #title at info. 353 00:15:53,422 --> 00:15:55,380 Madla: Gusto mong sabihin hashtag [? magpatibay sa akin? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Sorry? 355 00:15:55,725 --> 00:15:58,120 Madla: Gusto mong sabihin hashtag [? magpatibay sa akin? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: Hashtag nangangahulugan ID, kaya #title 357 00:16:01,400 --> 00:16:07,890 ay tumutukoy sa kahit anong mga elemento na ito ay may ID na tinatawag na pamagat. 358 00:16:07,890 --> 00:16:10,735 At pagkatapos ay ang tuldok ay tumutukoy sa isang klase. 359 00:16:10,735 --> 00:16:14,590 Kaya info tumutukoy sa elemento na ito dahil ito ay may impormasyon class. 360 00:16:14,590 --> 00:16:15,090 Oo. 361 00:16:15,090 --> 00:16:17,905 >> Madla: Bakit mo makikilala ang mga ito sa HTML? 362 00:16:17,905 --> 00:16:20,985 Bakit sinasabi mo ang ilang mga bagay ay Mga ID at ilang mga bagay-bagay ay class? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: Iyon lang ang sa you-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Ulitin ang tanong. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, sorry. 366 00:16:25,370 --> 00:16:29,480 Bakit namin makilala ang ilang mga elemento bilang mga ID at iba pang mga elemento tulad ng mga klase? 367 00:16:29,480 --> 00:16:34,760 Iyan na lamang dahil sa ito ay talagang madalas isang pagpipilian disenyo. 368 00:16:34,760 --> 00:16:38,520 Ito ay nagbibigay sa iyo ng maraming masaklaw na karunungan sa pagiging 369 00:16:38,520 --> 00:16:43,250 maaaring sabihin na gusto ko ang partikular na item na magkaroon ng ganitong ID dahil gusto nilang 370 00:16:43,250 --> 00:16:45,300 upang gawin ang isang pulutong ng mga bagay-bagay sa mga ito, at ako lamang 371 00:16:45,300 --> 00:16:50,010 nais na tukuyin ang isang estilo, ang ilang mga estilo o kulay kahit anong para sa item na iyon. 372 00:16:50,010 --> 00:16:52,630 At ang paraan upang gawin iyon ay pagbibigay lamang ito ng isang ID. 373 00:16:52,630 --> 00:16:55,060 >> At pagkatapos ay kung gusto kong magkaroon ng isang pares ng mga iba't ibang mga item 374 00:16:55,060 --> 00:16:58,940 pagkakaroon na, sa halip ng pagpunta at pag-set their-- 375 00:16:58,940 --> 00:17:03,840 sa halip ng paggawa ng ito sa pamamagitan ng tag dahil ang tag gagawin 376 00:17:03,840 --> 00:17:07,369 itakda ang cell para sa buong tag para sa bawat oras na tag ay ginagamit, 377 00:17:07,369 --> 00:17:09,740 maaari kang magtakda ng isang klase sa maramihang mga item. 378 00:17:09,740 --> 00:17:15,109 At pagkatapos ay ma-access lamang ng klase na at sabihin Gusto kong i-style ito klase na paraan. 379 00:17:15,109 --> 00:17:17,579 >> At muli, ang mga klase ay maaaring maging maramihang mga iba't ibang mga item 380 00:17:17,579 --> 00:17:21,150 at ang ID ay dapat na kakaiba. 381 00:17:21,150 --> 00:17:21,849 Mahusay na mga katanungan. 382 00:17:21,849 --> 00:17:25,339 Anumang iba pang mga katanungan? 383 00:17:25,339 --> 00:17:26,220 OK, kasindak-sindak. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Muli, ito ay kung paano ang mga tagapili ay sumasangguni sa CSS, na may hashtag, 386 00:17:35,330 --> 00:17:40,031 may tuldok, o walang anumang bagay para sa pagtatalaga ng mga estilo ng ilang mga tag, 387 00:17:40,031 --> 00:17:40,530 tulad ng katawan. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 At dito kami ay may pangkalahatang syntax ng kung paano ito ay tapos na. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Para ulitin ang ilang mga pinakamahusay na kasanayan para sa HTML at CSS, 392 00:17:55,680 --> 00:17:59,170 kailangan naming, muli, isara ang lahat ang mga tag na HTML na buksan namin. 393 00:17:59,170 --> 00:18:03,950 At kung ano ang inirerekomenda namin kayo gawin para sa iyong huling proyekto, 394 00:18:03,950 --> 00:18:10,560 pati na rin ang para sa CS50 Finance, ay upang gumawa ng Siguraduhin na ang lahat ng iyong mga HTML na napatunayan. 395 00:18:10,560 --> 00:18:12,920 At iyan ay tapos na sa W3 validator. 396 00:18:12,920 --> 00:18:16,940 >> At pagkatapos ay kung ano ang aming ginawa at kung ano ang inirerekumenda namin ang paggawa ng 397 00:18:16,940 --> 00:18:19,790 ay naghihiwalay estilo, kaya CSS mula sa markup HTML. 398 00:18:19,790 --> 00:18:24,210 Kaya ang anumang bagay na may kaugnayan sa kung paano ang iyong pahina ay pagpunta sa biswal tumingin 399 00:18:24,210 --> 00:18:27,330 at kung paano ito ay pagpunta upang mabago dapat pumunta sa isang CSS na dokumento. 400 00:18:27,330 --> 00:18:33,880 At pagkatapos ang iyong markup sinasabi kung paano mga bagay-bagay ay may kaugnayan sa isa't-isa ay HTML, 401 00:18:33,880 --> 00:18:37,550 at na dapat pumunta sa loob ng iyong mga dokumento HTML. 402 00:18:37,550 --> 00:18:38,590 May tanong? 403 00:18:38,590 --> 00:18:39,226 Mhm. 404 00:18:39,226 --> 00:18:42,628 >> Madla: Ano ang eksaktong ay pagpunta sa sa mga validation pahina 405 00:18:42,628 --> 00:18:47,945 kapag kami ay pagpapatunay sa HTML na [hindi marinig] nilikha? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: So what-- tingin mo. 407 00:18:49,850 --> 00:18:53,020 Kaya kung ano ang eksaktong ay pagpunta on sa pagpapatunay pahina 408 00:18:53,020 --> 00:18:55,570 at bakit kailangan namin upang gawin iyon? 409 00:18:55,570 --> 00:18:59,180 Talaga, kailangan namin upang gawin iyon dahil ang isang pulutong ng mga oras, ang iyong browser, 410 00:18:59,180 --> 00:19:01,390 kung hindi mo isara ang isang tag o isang bagay tulad na, 411 00:19:01,390 --> 00:19:05,680 ang iyong browser ay makakaranas pa rin mailarawan ang isang pahina at maaari pa rin gumagana, 412 00:19:05,680 --> 00:19:10,840 ngunit ito ay pinakamahusay na pagsasanay upang tiyakin na ka na, muli, sarado ang lahat ng iyong mga tag, 413 00:19:10,840 --> 00:19:13,190 na lahat ng iyong mga sangkap ay ang paraan na sila ay dapat, 414 00:19:13,190 --> 00:19:18,470 at talaga na ito ay sa pamamagitan ng kombensiyon na mga preset. 415 00:19:18,470 --> 00:19:21,970 >> Ito ay, muli, lamang ng isang bagay na dapat mong 416 00:19:21,970 --> 00:19:24,040 ay pag-aaral na ginagawa, bilang laban sa pagkakaroon 417 00:19:24,040 --> 00:19:25,696 sloppier code at bagay-bagay na tulad ng. 418 00:19:25,696 --> 00:19:26,688 Oo. 419 00:19:26,688 --> 00:19:27,680 Pasensya na. 420 00:19:27,680 --> 00:19:29,221 Akala ko kayo ay ang pagtataas ng iyong mga kamay. 421 00:19:29,221 --> 00:19:31,240 Madla: Hindi, ako ay lamang [hindi marinig]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> Madla: Salamat sa iyo. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Siyempre, salamat sa iyo. 425 00:19:36,181 --> 00:19:41,680 Kaya muli, nangyayari sa kung paano impormasyon ay ililipat 426 00:19:41,680 --> 00:19:44,630 at modelo ng komunikasyon sa paglilipat ng impormasyon. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 Nangangahulugan lamang TCP Transmission Control Protocol at IP 429 00:19:48,600 --> 00:19:51,260 ay tumutukoy sa Internet Protocol. 430 00:19:51,260 --> 00:19:54,275 At na lamang ay tumutukoy sa ang paraan ng data ay inihatid. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Kung kami ay may ilang mga data na kailangang inihatid sa you-- kaya 433 00:20:02,710 --> 00:20:06,770 gumawa ka ng isang kahilingan para sa isang tiyak na server. 434 00:20:06,770 --> 00:20:09,800 Halimbawa, kapag tayo subukan na i-access cs50.net, 435 00:20:09,800 --> 00:20:12,420 gumawa kami ng isang kahilingan sa CS50 server at kami 436 00:20:12,420 --> 00:20:14,720 makita na gusto naming makuha ang ganitong uri ng impormasyon. 437 00:20:14,720 --> 00:20:19,294 At pagkatapos ay ayon sa protocol na ito para sa kung paano ang impormasyon na ito ay inihatid, 438 00:20:19,294 --> 00:20:21,460 ang server ay nagbibigay ng impormasyon pabalik sa amin, ang client. 439 00:20:21,460 --> 00:20:25,590 At pagkatapos ay hindi namin magagawang tingnan ang mga impormasyon para sa pahina 440 00:20:25,590 --> 00:20:26,390 at pagkatapos ay gamitin ito. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Kaya nga ang Hypertext Transfer Protocol ay isa lamang protocol o hanay 443 00:20:33,050 --> 00:20:37,470 ng mga convention na tumutukoy sa kung paano ang web browser at ang web server 444 00:20:37,470 --> 00:20:38,890 dapat makipag-usap. 445 00:20:38,890 --> 00:20:43,730 At inilagay na ito sa lahat ng sama-sama, HTTP, muli, 446 00:20:43,730 --> 00:20:50,960 tumutukoy lamang kung paano tinukoy ito hypertext sa pamamagitan ng HTML na kami ay nagtatrabaho sa mga ito, 447 00:20:50,960 --> 00:20:59,500 kung paano ito dapat na inihatid sa iyo at sa paano na data na ihahatid sa iyo 448 00:20:59,500 --> 00:21:00,540 makakakuha ng sa iyo. 449 00:21:00,540 --> 00:21:05,990 >> At iyon ang dahilan kung bakit, kung ikaw guys tandaan mula sa isang klase, nagkaroon kami ng maraming mga kahilingan 450 00:21:05,990 --> 00:21:08,970 at kami ay may isang pulutong ng mga syntax para sa mga kahilingan na ito na hindi namin 451 00:21:08,970 --> 00:21:10,250 pagpunta sa pumunta sa ngayon. 452 00:21:10,250 --> 00:21:13,270 Kaya muli, kapag nagpapadala kami isang kahilingan sa isang server, 453 00:21:13,270 --> 00:21:15,920 kami ay may upang tukuyin ang isang pares ng mga bagay-bagay. 454 00:21:15,920 --> 00:21:18,520 Kaya kailangan namin upang mahanap ang uri ng kahilingan na kami ay pagtatakda. 455 00:21:18,520 --> 00:21:22,180 At muli, mayroon kaming, halimbawa, GET ay isang uri ng paraan 456 00:21:22,180 --> 00:21:25,290 na mayroon kami sa aming kahilingan. 457 00:21:25,290 --> 00:21:31,710 >> At pagkatapos ay HTTP / 1.1 ay lamang ang protocol na aming ginagamit sa kasalukuyan. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Karamihan ng panahon, na pagpunta sa protocol na ginagamit namin. 460 00:21:36,890 --> 00:21:40,290 Kaya kung mayroon kang isang katanungan na tulad ng sa iyong pagsusulit. 461 00:21:40,290 --> 00:21:43,120 Iyan ang mga convention na mayroon sa ngayon namin. 462 00:21:43,120 --> 00:21:46,580 >> Backslash ay tumutukoy sa kung ano ang uri ng bagay na kami ay humihiling. 463 00:21:46,580 --> 00:21:52,810 Pagkatapos, ang aming host ay, halimbawa, sa ganitong kaso, kami ay sinusubukan upang pumunta sa google.com. 464 00:21:52,810 --> 00:21:57,070 Kaya ito ay ang halaga para sa isang host. 465 00:21:57,070 --> 00:21:59,330 Ito ay isang uri ng kahilingan na maipapadala. 466 00:21:59,330 --> 00:22:02,890 >> At pagkatapos ay isang uri ng sagot na maaaring ipapadala, muli, batay sa protocol na ito, 467 00:22:02,890 --> 00:22:05,190 ay muli, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Kaya na muli ang HTTP na bersyon. 469 00:22:07,150 --> 00:22:09,730 200 OK lang ang code ng katayuan. 470 00:22:09,730 --> 00:22:12,860 At na OK ay isang parirala lamang batay sa na code ng katayuan. 471 00:22:12,860 --> 00:22:15,520 >> At pagkatapos ay ang Content-Type ay tumutukoy sa uri 472 00:22:15,520 --> 00:22:20,295 na ibabalik sa iyo na para na web page na matanggap mo 473 00:22:20,295 --> 00:22:22,570 at na ang iyong browser makapagbibigay pagkatapos. 474 00:22:22,570 --> 00:22:24,401 At iyon ay text / html. 475 00:22:24,401 --> 00:22:26,660 >> Madla: Ano ang ibig sabihin ng 1.1? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Iyan na lamang ang bersyon of-- oh, kung ano ang ibig sabihin ng 1.1? 477 00:22:29,910 --> 00:22:37,075 Iyon ay lamang ang bersyon, ang HTTP bersyon ng isang protocol na ginagamit namin. 478 00:22:37,075 --> 00:22:37,700 Mahusay na tanong. 479 00:22:37,700 --> 00:22:38,366 Iba pang mga tanong? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> Madla: Maaari mo bang sabihin sa ilang pananalita Content-Type tunay na mabilis? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Kaya na ay kung ano ang server. 483 00:22:48,150 --> 00:22:51,020 ang uri ng information-- kung ano ang uri ng nilalaman ay ang mga katanungan. 484 00:22:51,020 --> 00:22:53,400 Kaya na ay ang uri ng mga impormasyon na makakuha ka pabalik 485 00:22:53,400 --> 00:22:58,200 mula sa server, ang mga uri ng data na pagkatapos ay ang browser na maaari 486 00:22:58,200 --> 00:23:00,604 render na ginagamit mo. 487 00:23:00,604 --> 00:23:03,020 Madla: Ay na kung ano ang protocol ay nagsasabi sa iyo na gawin? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Sorry? 489 00:23:03,390 --> 00:23:05,380 Madla: Ay na kung ano ang sinasabi ng mga protocol? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: protocol-- Ang 491 00:23:05,915 --> 00:23:07,940 Madla: --What ang Content-Type ay o what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: protocol ay batay on-- ano ang protocol na nagsasabi sa iyo? 493 00:23:12,040 --> 00:23:16,070 Iyan na lamang ang paraan na ang impormasyon na ito 494 00:23:16,070 --> 00:23:18,610 ay inihatid sa iyo batay sa kung anong uri ng mga protocol 495 00:23:18,610 --> 00:23:21,830 ay ang impormasyon na ito got inihatid pabalik sa iyo. 496 00:23:21,830 --> 00:23:23,500 Ba na magkaroon ng kahulugan ng uri ng? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: You makapag-isip ng protocol 499 00:23:30,070 --> 00:23:33,300 bilang a-- tingin ko Professor Malan inilarawan ito 500 00:23:33,300 --> 00:23:36,910 sa klase ng uri ng tulad a-- ito ay tulad ng ang katumbas ng handshaking tao. 501 00:23:36,910 --> 00:23:44,930 Sabihin nating, tulad ng, hey, ako ng isang kahilingan at ako malaman kung paano panghawakan HTTP ng bersyon 1.1. 502 00:23:44,930 --> 00:23:48,770 At pagkatapos ay ang sabi ng server, oh, OK, I-- at parehong umiiral. 503 00:23:48,770 --> 00:23:51,337 Alam ko rin kung paano makitungo sa HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 At ako pagpunta upang bigyan i-back sa iyo ang ilang nilalaman. 505 00:23:53,170 --> 00:23:56,230 Sa kasong ito, ito ay pagpunta na ng uri ng teksto / html. 506 00:23:56,230 --> 00:23:58,480 Kaya ito ay uri ng lamang ng isang paraan ng mga ito para sa communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: Ito ay lamang na nagpapatunay na ikaw 508 00:24:00,480 --> 00:24:03,290 parehong sumusunod sa parehong protocol at na ang parehong 509 00:24:03,290 --> 00:24:06,620 ng mga client at ang server-- kaya ang iyong browser at ang server-- 510 00:24:06,620 --> 00:24:09,280 uri ng malaman kung ano ang iyong pakikipag-usap tungkol sa at magkaroon 511 00:24:09,280 --> 00:24:12,557 convention para sa pagpasa sa data. 512 00:24:12,557 --> 00:24:17,022 >> Madla: Kaya ang part-- Content-Type text Content-Type ang / html-- na 513 00:24:17,022 --> 00:24:18,521 isang hiwalay na bahagi ng parehong message? 514 00:24:18,521 --> 00:24:20,509 O bahagi ng sabihin nating, 200 ito? 515 00:24:20,509 --> 00:24:22,010 200 sabihin sa kanila na o is-- ba 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 nagsasabing ang lahat ng ito nagpunta OK. 517 00:24:23,770 --> 00:24:27,900 At pagkatapos ay i-type ang nilalaman ay mga uri ng isang hiwalay na bahagi ng parehong mensahe, 518 00:24:27,900 --> 00:24:34,274 at sinasabi ang bagay na aking ibabalik ang ganitong uri ng text / html. 519 00:24:34,274 --> 00:24:35,690 Ang pagbibigay lamang ito ng higit na impormasyon. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Magkaroon ng anumang bagay upang idagdag? 522 00:24:39,995 --> 00:24:40,495 SIGE. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Anumang iba pang mga katanungan sa mga ito? 525 00:24:46,530 --> 00:24:48,370 Kahanga-hanga. 526 00:24:48,370 --> 00:24:54,070 Kaya ang ilang iba pang mga katayuan ng HTTP na maaari naming makuha sa karagdagan sa 200 OK, 527 00:24:54,070 --> 00:24:59,500 mga na nasaksihan namin marahil marahil ng isang pulutong ay 403 at 404. 528 00:24:59,500 --> 00:25:05,190 Kaya 404, kung ikaw ay sinusubukan upang access ang isang bagay na ay hindi umiiral. 529 00:25:05,190 --> 00:25:10,460 Kaya halimbawa, sa iyong CS50 Finance psets, 530 00:25:10,460 --> 00:25:15,640 kung ikaw ay nagre-render quote.html at hindi ka magkaroon ng file na iyon, 531 00:25:15,640 --> 00:25:19,740 ngunit sa halip na kayo ay nagkaroon ng quote.php, na ay magreresulta sa isang 404 Not Found 532 00:25:19,740 --> 00:25:21,600 dahil maaaring hindi umiiral ang file. 533 00:25:21,600 --> 00:25:25,690 >> Para sa isang 403 ipinagbabawal, na ay tumutukoy sa mga pahintulot. 534 00:25:25,690 --> 00:25:31,150 Kaya kung ang ilang mga file ay hindi mababasa sa pamamagitan ng mundo, maaari kang makakuha ng isang 403 ibinalik. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Ang ilang mga iba na maaari ka get-- 301, Permanenteng Inilipat; 537 00:25:37,810 --> 00:25:41,300 302, Natagpuan; 304, Binago; 400, Bad Request; 538 00:25:41,300 --> 00:25:47,330 at pagkatapos Internal Server Error para sa 500 at 503, Unavailable Service. 539 00:25:47,330 --> 00:25:48,140 Oo. 540 00:25:48,140 --> 00:25:51,490 >> Madla: ba namin inaasahan na kabisaduhin ang lahat ng mga katayuan? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: ako ay magkakaroon mga ito sa iyong cheat sheet. 542 00:25:53,739 --> 00:25:55,146 [Tawa] 543 00:25:55,146 --> 00:25:59,954 Madla: Sigurado inaasahan naming malaman kung ano ang nag-trigger sa bawat isa? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: sila? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Para sa mga na hindi namin tumakbo into-- kaya tanong was-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: sila inaasahan na malaman kung ano ang bawat isa sa mga status 547 00:26:08,010 --> 00:26:09,330 Mga code ng maaaring ma-trigger sa pamamagitan ng? 548 00:26:09,330 --> 00:26:13,240 Kaya para sa mga na namin ginagamit at ang bumangga sa, nais kong sabihin, yes. 549 00:26:13,240 --> 00:26:16,610 Kaya tiyak nakakita kami ng 200 OK at lectured ito sa psets. 550 00:26:16,610 --> 00:26:19,071 Nakita namin na 403, 404. 551 00:26:19,071 --> 00:26:20,550 Para sa iba pang mga? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: Gusto ko sabihin 500 tila makatarungang laro. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, oo. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Oo. 555 00:26:24,246 --> 00:26:27,006 Mayroon lamang isang pangkalahatang kamalayan ng kung ano ang nagiging sanhi ng mga ito. 556 00:26:27,006 --> 00:26:28,880 At din sa pamamagitan lamang ng mga mga pangalan, maaari mong uri ng 557 00:26:28,880 --> 00:26:32,890 tulad ng gumawa ng isang edukado hulaan bilang sa kung ano ang aktwal na sanhi ang mga ito. 558 00:26:32,890 --> 00:26:36,919 Halimbawa, permanenteng lumipat, malamang ang file ay permanenteng inilipat. 559 00:26:36,919 --> 00:26:39,328 >> Madla: Ngunit sa isang nakaraang exam, nagkaroon ng iba 560 00:26:39,328 --> 00:26:41,050 paano mo inaasahan sa amin upang sagutin iyon? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: That ay nagkakahalaga ng zero points. 562 00:26:42,883 --> 00:26:45,870 Ang tanong sa 418 sa tsarera ay technically isang HTTP status, 563 00:26:45,870 --> 00:26:47,090 ngunit ito ay nagkakahalaga ng zero points. 564 00:26:47,090 --> 00:26:48,320 Malinaw, hindi ka inaasahan na malaman ang mga ito. 565 00:26:48,320 --> 00:26:49,670 >> Madla: isang tunay na isa ba ito? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: Ito ay isang tunay na isa, ngunit ito ay hindi nangangahulugan na kahit ano. 567 00:26:51,970 --> 00:26:52,700 Ito ay isang biro lamang. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Internet ang mga tao ay nakatatawa. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: Great mga katanungan, guys. 571 00:26:59,680 --> 00:27:01,452 Anumang iba pang mga katanungan? 572 00:27:01,452 --> 00:27:04,891 >> Madla: Ano ang mga panloob na error sa server? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: Internal error sa server lang 574 00:27:06,640 --> 00:27:10,050 ay nangangahulugan na ikaw ay magawang makipag-usap 575 00:27:10,050 --> 00:27:13,400 sa server para sa ilang kadahilanan. 576 00:27:13,400 --> 00:27:15,400 Kaya ito ay hindi kinakailangan isang bagay na may sa gawin 577 00:27:15,400 --> 00:27:19,170 sa mga client o isang bagay tulad na. 578 00:27:19,170 --> 00:27:22,170 Hindi ko alam ng anumang tiyak na halimbawa na kami ay wala ng higit sa na ipaliwanag, 579 00:27:22,170 --> 00:27:23,000 ngunit oo. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Oo naman. 581 00:27:23,250 --> 00:27:25,625 Kaya halimbawa, tulad natin sasabihin mo ay nagtatrabaho sa mashup 582 00:27:25,625 --> 00:27:30,440 at nagpunta sa isang server ng Google down para sa ilang dahilan, walang kuryente, sabihin natin. 583 00:27:30,440 --> 00:27:33,400 Iyon ay magiging isang panloob na server error o ilang mga uri of-- gusto mo 584 00:27:33,400 --> 00:27:34,630 hindi makakuha ng isang tugon. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Oo. 586 00:27:35,260 --> 00:27:37,050 Ito ay lamang kapag ikaw ay magawang makipag-usap 587 00:27:37,050 --> 00:27:40,299 sa server para sa ilang kadahilanan dahil ng mga ito pagpunta pababa o iba pang kadahilanan. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Kaya paglundag sa PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, hindi tulad ng HTML, ay isang programming language. 591 00:27:49,930 --> 00:27:54,820 At sinimulan namin ang paggamit nito dahil sa ito ay lubhang kapaki-pakinabang para sa web development. 592 00:27:54,820 --> 00:27:56,940 >> Kami ay unang ginamit ito sa CS50 Finance. 593 00:27:56,940 --> 00:28:02,240 At ito talaga nakakatulong sa amin na dalhin magkasama ito markup, ang disenyo, 594 00:28:02,240 --> 00:28:07,460 at kung paano namin ang aktwal na gamitin ang impormasyon ng upang ipakita ang mga bagay sa isang web page. 595 00:28:07,460 --> 00:28:11,870 Kaya PHP mismo ay nangangahulugan PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 kaya ito ay isang recursive backnorym mismo. 597 00:28:15,360 --> 00:28:22,330 At pagbukas ng mga tag para sa PHP namin ang kaliwang at kanang mga arrow sa mga tandang pananong 598 00:28:22,330 --> 00:28:23,060 at php. 599 00:28:23,060 --> 00:28:25,890 >> Kaya na namin nakita ng grupo ng mga ito. 600 00:28:25,890 --> 00:28:29,150 Ngayon, lamang kami ay pagpunta sa pumunta sa paglipas ng ilan sa mga pangunahing bagay tungkol dito. 601 00:28:29,150 --> 00:28:32,280 Kaya sa PHP, ang mga variable simulan pangalan na may dollar sign. 602 00:28:32,280 --> 00:28:35,660 Hindi namin tukuyin, muli, type anymore isang variable. 603 00:28:35,660 --> 00:28:38,450 Katulad ng ginawa namin sa C, hindi namin kailangan upang gawin iyon. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Maaari naming gawin ang isang grupo ng mga iba't-ibang mga bagay-bagay na may mga variable. 606 00:28:44,490 --> 00:28:47,750 Maaari naming ilagay ang mga ito nang sama-sama sa pamamagitan ng concatenating ito 607 00:28:47,750 --> 00:28:52,900 may mga tuldok notasyon, na hindi namin mai-gawin sa C muli. 608 00:28:52,900 --> 00:28:57,490 Muli, kami ay may isang bit mas masaklaw na karunungan may PHP sa mga tuntunin ng mga variable. 609 00:28:57,490 --> 00:29:00,080 Muli, hindi namin ay may isang pangunahing pag-andar. 610 00:29:00,080 --> 00:29:03,370 >> At PHP ay naisalin bilang laban sa pinagsama-sama, 611 00:29:03,370 --> 00:29:09,970 Kaya lang kung paano namin ginawa para sa C file, hindi namin ay may upang gawin iyon para sa PHP. 612 00:29:09,970 --> 00:29:15,440 Ngunit sa halip, ang mga paraan na ang mga wika ay tatakbo sa pamamagitan ng kanyang sarili, ito ay kahulugan. 613 00:29:15,440 --> 00:29:18,550 At pagkatapos ay maluwag type ito ay nangangahulugan lamang na tayo 614 00:29:18,550 --> 00:29:22,490 Hindi mo na kailangang tukuyin ang isang variable type at ang mga uri ng variable 615 00:29:22,490 --> 00:29:25,415 ay naunawaan sa runtime. 616 00:29:25,415 --> 00:29:29,185 >> Madla: Ngunit ano ang ginawa mo ibig sabihin sa pamamagitan ng dot pagdudugtong? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Oo naman. 618 00:29:30,060 --> 00:29:37,660 Kapag gusto naming ilagay ang mga bagay together-- kaya kung nagkaroon kami ng ilang mga variable na 619 00:29:37,660 --> 00:29:41,500 nagkaroon ang halaga ng 3 at nagkaroon kami ng isa pang variable na nagkaroon ng mga halaga ng string, 620 00:29:41,500 --> 00:29:45,920 maaari naming ilagay ang mga variable na magkasama sa pamamagitan ng paglagay ng isang tuldok sa pagitan ng mga ito 621 00:29:45,920 --> 00:29:46,970 at concatenating kanila. 622 00:29:46,970 --> 00:29:52,670 O maaari naming lumikha ng isang variable na tinatawag na pangalan 623 00:29:52,670 --> 00:29:56,900 at ilagay ang mga ito nang magkasama sa pamamagitan ng concatenating dalawang string. 624 00:29:56,900 --> 00:30:00,680 >> Kaya kung kami ay may isang string sa double quotes at ilalagay namin ang isang tuldok pagkatapos na ito, 625 00:30:00,680 --> 00:30:03,660 at pagkatapos ay nagkaroon kami ng isa pang string, na ay lumikha ng isang string kabuuan. 626 00:30:03,660 --> 00:30:05,242 >> Madla: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA LATVIA: Ay na i-clear? 628 00:30:06,450 --> 00:30:07,099 Madla: Oo. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Oo. 631 00:30:08,766 --> 00:30:11,146 >> Madla: Kapag sinabi mo naisalin na sa halip na naipon, 632 00:30:11,146 --> 00:30:14,160 sinasabi mo na hindi mo kailangan upang maging tiyak na kapag 633 00:30:14,160 --> 00:30:15,906 ito ay dumating sa PHP kumpara C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Kapag sinasabi namin naisalin na bilang laban sa pinagsama-sama, 636 00:30:20,710 --> 00:30:21,850 kung ano ang ibig sabihin namin? 637 00:30:21,850 --> 00:30:26,220 Kaya na nangangahulugan na hindi namin kailangan mga maipapatupad na file na tumakbo PHP. 638 00:30:26,220 --> 00:30:29,870 Ito ay nangangahulugan na ito ay nagpapatakbo ng pumupunta dito. 639 00:30:29,870 --> 00:30:31,650 Ba na magkaroon ng kahulugan? 640 00:30:31,650 --> 00:30:32,495 Kaunti pa. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: Kaya mo makapag-isip ng isang interpreter 642 00:30:34,620 --> 00:30:38,980 bilang isa pang program na responsable para sa pagpunta linya sa pamamagitan ng linya sa pamamagitan ng PHP 643 00:30:38,980 --> 00:30:42,745 at talagang Isinasagawa ang mga ito, bilang kabaligtaran sa pag-ipon ng lahat ng ito pababa sa binary. 644 00:30:42,745 --> 00:30:46,050 Hindi ito talaga ang ibig sabihin ng kahit na ano tungkol sa kung paano natukoy namin na kailangan upang maging. 645 00:30:46,050 --> 00:30:49,470 Kailangan pa rin namin upang maging tumpak, at hindi nakalimutan mo ang iyong tuldok-kuwit, at tiyakin 646 00:30:49,470 --> 00:30:51,470 mayroon ka sa iyong dollar sign, at ang mga bagay na tulad ng. 647 00:30:51,470 --> 00:30:52,240 Magandang tanong. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Oo. 649 00:30:53,115 --> 00:30:55,590 Kaya bawat linya, tulad ng laban sa may C file, 650 00:30:55,590 --> 00:30:59,100 kami ay may sa gawin ang buong final bago maaari naming aktwal na patakbuhin ito. 651 00:30:59,100 --> 00:31:00,360 Iyon ang pangunahing pagkakaiba. 652 00:31:00,360 --> 00:31:02,655 Ngunit muli, kami ay hindi maaari talagang maging mas tiyak. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Kaya array sa PHP ay kumakatawan talagang isang order na mapa. 655 00:31:13,950 --> 00:31:17,550 >> Kaya halaga array associate sa keys. 656 00:31:17,550 --> 00:31:23,350 Ang dalawang mga paraan upang magpahayag ng isang array, batay sa mga ito syntax, 657 00:31:23,350 --> 00:31:26,380 maaari naming maging mas malinaw sa nagsasabi kami ay may isang array 658 00:31:26,380 --> 00:31:31,010 at kami ay may ito key1 na mga mapa sa ito value1, key2 na ang mga mapa value2. 659 00:31:31,010 --> 00:31:34,660 O maaari naming lamang lumikha ng isang array na naglalaman ng mga halaga ng kanyang sarili 660 00:31:34,660 --> 00:31:38,360 at pagkatapos ay ang key ay nauunawaan sa isang paraan. 661 00:31:38,360 --> 00:31:40,000 Ang anumang mga katanungan sa mga ito? 662 00:31:40,000 --> 00:31:42,500 >> Madla: Ano ang gusto ng mga susi sa ikalawang halimbawa? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Halimbawa, ito lang ang susi sa ito ay hindi kinakailangang 667 00:31:55,780 --> 00:31:56,550 gumawa ng isang pagkakaiba. 668 00:31:56,550 --> 00:32:01,720 Sila tukuyin lamang kung paano mo magagawa gamitin ang mga halaga sa loob ng mga ito. 669 00:32:01,720 --> 00:32:08,660 Kaya kung kami ay may isang foreach loop sa PHP na gagawin 670 00:32:08,660 --> 00:32:14,760 daan sa amin upang pumunta sa lahat ng mga halaga, maaari naming pumunta sa lahat ng mga halaga, 671 00:32:14,760 --> 00:32:19,570 kahit na mayroon o kami ay hindi natukoy isang tiyak na susi sa loob ng site 672 00:32:19,570 --> 00:32:20,820 Nakaraang syntax. 673 00:32:20,820 --> 00:32:23,460 >> Kaya kahit na may ganitong uri ng array, maaari pa rin namin 674 00:32:23,460 --> 00:32:26,260 magkaroon ng isang foreach loop na napupunta sa pamamagitan ng bawat 675 00:32:26,260 --> 00:32:31,240 ng halaga sa key sa array. 676 00:32:31,240 --> 00:32:36,180 Kaya ang syntax ng isang foreach loop, namin magsimula sa isang array. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Ito $ arr variable ay ang aming aktwal na array na tinukoy natin sa nakaraang slide 679 00:32:43,900 --> 00:32:47,550 bilang halaga na literal napupunta sa pamamagitan ng bawat isa sa mga values, 680 00:32:47,550 --> 00:32:50,122 hindi alintana kung nagkaroon kami ng isang key o hindi. 681 00:32:50,122 --> 00:32:53,080 At pagkatapos ay maaari naming gawin ang isang bagay na may ang halaga sa loob ng foreach loop. 682 00:32:53,080 --> 00:32:57,730 Kaya muli, kung kami ay may isang array tulad nito dito created-- 683 00:32:57,730 --> 00:33:03,270 kaya kami ay ang key ng foo at halaga ng bar, ang susi ng baz at halaga ng qux-- 684 00:33:03,270 --> 00:33:09,730 maaari kaming magkaroon ng foreach loop na Dumadaan array bilang halaga key 685 00:33:09,730 --> 00:33:11,900 at pagkatapos ay gawin ang isang bagay gamit ang key at / o halaga. 686 00:33:11,900 --> 00:33:15,980 Ngunit hindi namin kinakailangang laging kailangang magkaroon ng isang foreach loop na 687 00:33:15,980 --> 00:33:19,410 Dumadaan array bilang susi mapa upang value. 688 00:33:19,410 --> 00:33:26,060 Maaari naming pumunta sa pamamagitan ng foreach loop array bilang halaga. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: At sa tingin ko to-- ay iyong tanong, ano 690 00:33:28,990 --> 00:33:31,229 ay ang implicit index? 691 00:33:31,229 --> 00:33:31,895 Madla: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Oo, oo. 694 00:33:33,406 --> 00:33:36,150 Kaya talaga, kung hindi mo tukuyin ang isang susi, ito ay magiging 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Oo. 696 00:33:37,140 --> 00:33:41,718 Katulad ng C, ito ay zero index kung hindi mo tukuyin ang isang susi. 697 00:33:41,718 --> 00:33:42,384 Madla: Paumanhin. 698 00:33:42,384 --> 00:33:43,827 Puwede mo subukan pagsasalita Medyo louder? 699 00:33:43,827 --> 00:33:45,270 Nagkakaroon ako ng isang maliit na piraso ng problema sa pandinig ang lahat. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Ako kaya paumanhin. 701 00:33:46,478 --> 00:33:48,439 Oo siyempre. 702 00:33:48,439 --> 00:33:50,230 Kaya ang gusto mo sa akin upang pumunta muli sa paglipas ng ito? 703 00:33:50,230 --> 00:33:51,680 O kaya ay this-- 704 00:33:51,680 --> 00:33:54,930 Madla: Kaya sa nakaraang slide-- kung maaari kang bumalik lamang para sa isang segundo. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Siyempre, paumanhin. 706 00:33:57,313 --> 00:33:59,237 Madla: Kaya ang pangalawang array dito ay hindi 707 00:33:59,237 --> 00:34:04,135 mukhang may isang halaga na susi, medyo [? pagsasagawa. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Right, right. 709 00:34:05,343 --> 00:34:07,608 Madla: Kaya kung paano na ang trabaho kapag sinabi mo ito ay ang lahat o wala. 710 00:34:07,608 --> 00:34:08,969 Para sa akin, na ganito ang hitsura a [? foo?] na. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Oo, oo. 712 00:34:10,093 --> 00:34:12,969 Kaya muli, ito ay isang order na mapa sa ganitong kahulugan 713 00:34:12,969 --> 00:34:15,639 na ay nauunawaan, halimbawa, ang mga index 714 00:34:15,639 --> 00:34:20,159 dito ay maaaring maunawaan bilang 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Muli, na ang pagkakaroon ng mga ini-index ay ang aming katumbas 716 00:34:25,929 --> 00:34:28,980 ng pagkakaroon ng key na nai-map papunta halaga. 717 00:34:28,980 --> 00:34:34,710 Kaya kung ang aming key ay 0-- sorry. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Hindi, mayroong tisa up dito. 719 00:34:36,524 --> 00:34:36,929 Ito ay talagang talagang maganda. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Mabuti iyan. 721 00:34:37,460 --> 00:34:38,260 SIGE. 722 00:34:38,260 --> 00:34:49,489 Kaya muli, $ arr 0 ay ang susi para sa halaga 1. 723 00:34:49,489 --> 00:34:51,138 0 ay ang susi para sa halaga ng 1. 724 00:34:51,138 --> 00:34:51,971 Madla: Sorry. 725 00:34:51,971 --> 00:34:53,190 Ito ay invisible. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: Sige, Huwag na. 727 00:34:53,659 --> 00:34:54,980 Tisa ay isang masamang ideya. 728 00:34:54,980 --> 00:34:58,030 Kumuha ako ng ito pabalik. 729 00:34:58,030 --> 00:35:01,425 Maaari mong isipin na ang mga susi bilang 0 mga mapa sa ang halaga 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Oo. 731 00:35:02,300 --> 00:35:04,630 Kaya ito ay 0, ito ay 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Ang mga maaaring maging ang iyong mga susi. 733 00:35:05,760 --> 00:35:10,020 Maaari mong isipin ng mga ito as-- oo. 734 00:35:10,020 --> 00:35:12,740 Kaya sa halip ng pagkakaroon ng tahasang key, ang mga ito ay 735 00:35:12,740 --> 00:35:17,180 uri ng naiintindihan na rin ang pagiging ang index simula sa 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 Tisa Ang hindi tumulong. 738 00:35:24,820 --> 00:35:25,722 Oo. 739 00:35:25,722 --> 00:35:30,914 >> Madla: Para sa foreach loop, kung gusto naming makita ang bilang halaga, 740 00:35:30,914 --> 00:35:33,245 Gusto ito ay awtomatikong index lamang sa 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Oo. 742 00:35:34,120 --> 00:35:35,745 Ito ay pumunta sa pamamagitan ng bawat isa sa mga halaga. 743 00:35:35,745 --> 00:35:39,130 Madla: [hindi marinig] bilang 0 o gagawin na lamang 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Gusto mong magkaroon ng sabihin ng dollar sign at pagkatapos ay 745 00:35:43,710 --> 00:35:46,266 ilang pangalan ng variable, halaga. 746 00:35:46,266 --> 00:35:47,182 Madla: [hindi marinig]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Sorry? 749 00:35:50,964 --> 00:35:52,839 Madla: Paumanhin, hindi ako lamang sinusubukan mong matandaan. 750 00:35:52,839 --> 00:35:57,190 Paano mo na kung ikaw ay maaaring gawin ito awtomatikong pag-index ay 0 lang ng? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Kaya kung paano mo gawin iyon kung hindi ka magkaroon ng tiyak na mga pangalan ng key? 752 00:36:00,780 --> 00:36:01,710 >> Madla: Oo. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: Gusto mo define-- lamang lamang sabihin sa iyong sarili bilang ng ilang pangalan. 754 00:36:07,820 --> 00:36:17,950 Kaya sa inyong psets, guys baka tandaan foreach $ hilera bilang $ hilera, 755 00:36:17,950 --> 00:36:24,610 lumikha kami mismo ito $ hilera sinasabi gusto naming pumunta sa pamamagitan ng hilera bilang $ hilera. 756 00:36:24,610 --> 00:36:28,360 Kahit na hindi namin ay may ito tahasang $ hilera tinukoy, 757 00:36:28,360 --> 00:36:31,990 kami ay maaaring pumunta lamang at sabihin ito ay maaaring maging ang aming mga key, 758 00:36:31,990 --> 00:36:33,615 at pumunta lamang sa pamamagitan ng bawat isa sa mga halaga. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> Madla: Kaya ay ang halaga ng isang bagong variable kami ay ang paglikha sa mga tindahan ng [hindi marinig]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Kaya ito ay hindi likas na isang bagong variable. 763 00:36:49,990 --> 00:37:00,310 Ito ay isang variable na tumutukoy sa sa loob ng array sa bawat isa sa kanila. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: Ito ay ng isang bagong pangalan ng variable. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Oo, ito ay isang bagong pangalan ng variable, 766 00:37:04,018 --> 00:37:06,680 ngunit hindi ito ang inherently-- oo. 767 00:37:06,680 --> 00:37:08,950 Ito ay lamang ng isang bagong variable na maaari mong gawin iyon. 768 00:37:08,950 --> 00:37:12,680 Kaya lang kung paano gawin ang ginawa namin $ hilera bilang $ hilera, hilera 769 00:37:12,680 --> 00:37:17,980 ay isang bagong pangalan ng variable na tayo ay maaaring lumikha sa aming foreach loop. 770 00:37:17,980 --> 00:37:22,065 Hindi nito kailangang naroroon na bago na. 771 00:37:22,065 --> 00:37:25,777 >> Madla: Maaari kang pumunta sa pamamagitan ng logic para sa bawat isa, gamit ang mga halimbawa doon? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: Mhm. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Pasensya na. 775 00:37:32,080 --> 00:37:33,780 Narito ang mga halimbawa. 776 00:37:33,780 --> 00:37:34,280 Oo naman. 777 00:37:34,280 --> 00:37:38,950 Kaya para sa bawat array-- kaya ay nangangahulugan na ang pumunta sa array na ito 778 00:37:38,950 --> 00:37:43,930 bilang susi value-- na pupuntahan pumunta sa pamamagitan ng array 779 00:37:43,930 --> 00:37:49,480 at magpunta muna at makakuha ng foo, ang key foo at ang halaga bar. 780 00:37:49,480 --> 00:37:51,570 At pagkatapos ay sa ikalawang pag-ulit ng loop, 781 00:37:51,570 --> 00:37:55,090 ito ay pagpunta sa pumunta sa pamamagitan ng at tumagal ang susi baz at ang halaga qux. 782 00:37:55,090 --> 00:38:00,512 At pagkatapos ay maaari mong gawin ang isang bagay na may alinman sa kanila o pareho ng mga ito. 783 00:38:00,512 --> 00:38:03,488 >> Madla: Kaya ang ideya sa likod pagkakaroon ng isang mahalagang punto sa ang halaga, 784 00:38:03,488 --> 00:38:07,470 ano ang gagawin mo end up sa pag-access? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Ano ang ideya ng pagkakaroon ng isang key na tumuturo sa halaga? 786 00:38:10,680 --> 00:38:16,400 Ito ay isa lamang convention, ang isa pang paraan ng pagpunta sa pamamagitan ng array 787 00:38:16,400 --> 00:38:22,600 at ng kakayahang ma-access ang alinman sa key o ang halaga o pareho at gamitin ang mga ito. 788 00:38:22,600 --> 00:38:27,100 >> Madla: Ano ang mga papel para sa utos na ang foreach tumatakbo sa? 789 00:38:27,100 --> 00:38:29,250 Kaya kung kami ay upang magdagdag ng mga elemento sa array sa ibang pagkakataon, 790 00:38:29,250 --> 00:38:32,140 ay ang unang mga bago sa mga tinatawag na sa foreach array, 791 00:38:32,140 --> 00:38:33,750 o magiging susunod? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Kaya kung ano ang ang pagkakasunod-sunod na ang foreach 793 00:38:37,770 --> 00:38:39,210 loop napupunta sa pamamagitan ng isang array in? 794 00:38:39,210 --> 00:38:42,220 Ito ay napupunta sa pamamagitan ng unang element sa huling elemento, 795 00:38:42,220 --> 00:38:43,400 sa huling idinagdag element. 796 00:38:43,400 --> 00:38:48,020 Kung nagdagdag ka ng mga elemento sa susunod, gagawin nila maging accessed-- ang unang elemento ay 797 00:38:48,020 --> 00:38:51,410 ma-access bilang ang unang elemento ng array, 798 00:38:51,410 --> 00:38:57,620 at pagkatapos ay gusto mong pumunta sa pamamagitan ng bawat isa sa ang mga elemento tulad ng mga uri ng isang ordered-- 799 00:38:57,620 --> 00:39:02,930 hindi isang order, ngunit ang paraan na ang mga ito ay ilagay sa array. 800 00:39:02,930 --> 00:39:06,855 >> Madla: Kaya bagong elemento ay idinagdag sa susunod? 801 00:39:06,855 --> 00:39:10,680 Kaya ito ay naka added-- ang mga ito ay ang huling mga sa [? pag-ulit. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: New elemento can-- karaniwang, kapag ang mga bagong elemento ay idinagdag, 803 00:39:14,280 --> 00:39:16,520 ay idinagdag sila sa dulo ng array? 804 00:39:16,520 --> 00:39:17,632 >> Madla: Oo. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Naniniwala ako na ito. 806 00:39:18,840 --> 00:39:20,850 Oo. 807 00:39:20,850 --> 00:39:24,330 At pagkatapos ay sa iyong foreach loop, matapos mong nagdagdag ng mga bagong elemento 808 00:39:24,330 --> 00:39:26,790 at pumunta ka sa pamamagitan ng mga ito, ang mga bagong elemento ng gagawin 809 00:39:26,790 --> 00:39:30,930 maging accessed-- mga bagong elemento, kung ito ay Idinagdag huling, ito ay ma-access sa huling. 810 00:39:30,930 --> 00:39:34,416 >> Madla: Maaari mo lamang magbigay ng isang halimbawa ng isang bagay na gagawin [hindi marinig] 811 00:39:34,416 --> 00:39:37,404 na may isang bagay na may halaga tulad ng [hindi marinig] o halaga, 812 00:39:37,404 --> 00:39:38,910 Gusto kung paano gusto mong i-format na? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Oo naman. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Maaari ko bang magbigay ng isang halimbawa ng kung ano ang Gusto naming gawin sa ang halaga? 816 00:39:46,410 --> 00:39:52,440 Kaya kung ano ang maaaring maging pamilyar sa iyo guys ay na kami ay wala sa pamamagitan ng isang array 817 00:39:52,440 --> 00:39:55,380 at talaga naka-print bawat isa sa mga sangkap na ito, 818 00:39:55,380 --> 00:40:00,910 halimbawa, bilang bahagi ng isang list order o isang bagay na. 819 00:40:00,910 --> 00:40:02,674 Ba na magkaroon ng kahulugan o ang gusto natin to-- 820 00:40:02,674 --> 00:40:04,340 Madla: Maaari naming i-print ang mga halagang ito sa labas? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Oo, maaari naming i-print at pagkatapos ay karaniwang $ na halaga dahil sa 822 00:40:13,220 --> 00:40:16,570 na tiyak na halaga, kami ay magiging imprenta ang halaga sa loob ng mga ito. 823 00:40:16,570 --> 00:40:20,150 Kaya kung kami ay sa aming unang pag-ulit ng mga ito at naka-print na kami ng $ na halaga, 824 00:40:20,150 --> 00:40:23,775 ay pag-print namin bar. 825 00:40:23,775 --> 00:40:27,020 >> Madla: Mayroon ding para loop sa PHP o foreach loop lamang? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: May para sa mga loop sa PHP din. 827 00:40:30,430 --> 00:40:33,399 At ang kanilang mga logic ay halos ang katulad ng kung ano ang iyong na-ginagamit sa. 828 00:40:33,399 --> 00:40:34,690 Madla: Kaya ang halaga nito ay null. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: Ito ay tulad ng pareho. 830 00:40:35,090 --> 00:40:35,590 Oo. 831 00:40:35,590 --> 00:40:37,747 Madla: lamang ako ng pagpunta sa magtanong. 832 00:40:37,747 --> 00:40:39,695 Kaya kapag ipinapahayag mo ang isang array, hindi mo na kailangan 833 00:40:39,695 --> 00:40:42,617 upang sabihin kung ano ang laki ito ng pagpunta sa maging, na nangangahulugan na maaari mo lamang 834 00:40:42,617 --> 00:40:44,417 magdagdag at mag-alis ng mga elemento [hindi marinig]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Yup. 836 00:40:45,250 --> 00:40:45,750 Oo. 837 00:40:45,750 --> 00:40:46,251 Mismong. 838 00:40:46,251 --> 00:40:48,875 Kung ating sinasabing isang array, kami ay hindi na kailangan sabihin kung ano ang sukat na ito ay, 839 00:40:48,875 --> 00:40:51,022 upang maaari naming lamang magdagdag ng mga elemento papunta ito mamaya rin. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Higit pang mga tanong? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Kaya nagdadala PHP at HTML magkasama, kung ano ang seen-- namin na rin, 844 00:41:05,950 --> 00:41:15,130 halimbawa, sa halimbawang ito, kami ay isang HTML form na may isang input field. 845 00:41:15,130 --> 00:41:18,830 >> At ang input field ay pangalan lamang at pagkatapos ay ito ay isang pindutan Isumite. 846 00:41:18,830 --> 00:41:26,040 At kapag pinindot mo ang Isumite button, sa aming hello.php file, 847 00:41:26,040 --> 00:41:32,130 dahil ang paraan para sa mga form ay makakuha ng, maaari naming ma-access ang anumang ay sa pangalan 848 00:41:32,130 --> 00:41:40,360 sa pamamagitan ng ito makuha global variable na is-- ang syntax para sa mga ito ay $ _GET. 849 00:41:40,360 --> 00:41:44,520 At pagkatapos ay maaari naming ma-access ang anumang mga input ng user sa loob ng form na para sa pangalan 850 00:41:44,520 --> 00:41:47,410 sa pamamagitan ng pagtukoy sa mga pangalan ng patlang na iyon. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Anumang iba pang mga katanungan o anumang mga katanungan sa mga tiyak na halimbawa? 853 00:41:55,060 --> 00:41:58,275 >> Madla: Saan ang PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: dito. 855 00:41:59,150 --> 00:42:01,150 Kaya ito ay ang aming opening tag para sa PHP. 856 00:42:01,150 --> 00:42:01,530 >> Madla: Oh, right. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA Oo. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg: Ang = ay shorthand sapagka't ito ang PHP at lamang echo. 860 00:42:09,609 --> 00:42:10,150 Madla: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Oo, paumanhin. 862 00:42:10,720 --> 00:42:12,040 Dapat ginawa ko na malinaw. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Print. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: Ito lang ang pag-andar na nagbibigay-daan sa amin upang mag-print ng isang bagay. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Mahusay na tanong. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Kaya going-- yes. 869 00:42:25,495 --> 00:42:31,940 >> Madla: Mayroon bang pagpunta sa lubos na isang piraso ng hand coding ng PHP at HTML 870 00:42:31,940 --> 00:42:33,450 sa quiz 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: May ay maaaring maging isang patas na dami ng pagpapakahulugan 873 00:42:38,810 --> 00:42:43,330 ng PHP at HTML, hindi kinakailangang tulad ng isang malaking halaga ng coding, 874 00:42:43,330 --> 00:42:46,960 bagaman maaaring mayroon kang magsulat ng isang foreach loop, kahit na, para sa isang loop. 875 00:42:46,960 --> 00:42:49,790 Anuman sa mga loops na tayo masakop dito ay makatarungang laro. 876 00:42:49,790 --> 00:42:51,889 At na karamihan ito. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: Gusto ko maging handa. 878 00:42:53,430 --> 00:42:57,010 Sa parehong paraan na hiniling namin sa iyo upang magsulat ng isang bungkos ng mga C function sa pagsusulit 0, 879 00:42:57,010 --> 00:42:59,766 Gusto ko ay handa na gawin ang parehong sa PHP at JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Oo. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: Gusto ko sabihin isang little-- tulad kami ay hindi 882 00:43:03,210 --> 00:43:06,251 pagpunta sa gawin ay sumulat ng isang malaking HTML page dahil lamang na ang isang maliit na piraso 883 00:43:06,251 --> 00:43:08,240 nakakapagod, ngunit maaari kang magkaroon ng bahagi. 884 00:43:08,240 --> 00:43:09,310 Iyan ay lubos makatarungang laro. 885 00:43:09,310 --> 00:43:11,082 Tulad ng maliit na HTML na pahina, ganap na makatarungan. 886 00:43:11,082 --> 00:43:11,623 Madla: OK. 887 00:43:11,623 --> 00:43:13,814 Paano ang tungkol sa JavaScript pati na rin? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Oo. 889 00:43:14,730 --> 00:43:15,250 JavaScript ay makatarungang laro. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Oo. 891 00:43:15,635 --> 00:43:16,801 Iyan ay lubos makatarungang laro. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Kami makakuha sa na sa tulad ng 10 minuto. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, muli, Nakabalangkas na Query Wika. 894 00:43:23,750 --> 00:43:28,651 Ito ay nagbibigay-daan talaga sa amin upang pamahalaan ang data sa isang pamanggit database management 895 00:43:28,651 --> 00:43:29,150 system. 896 00:43:29,150 --> 00:43:31,149 Iyon lang talaga ang ibig sabihin na mayroon kami sa tabi-tabi 897 00:43:31,149 --> 00:43:37,980 sa tindahan ng ilang mga data na maaari namin nais na gamitin ito sa isang website o sa ilang iba pang mga form. 898 00:43:37,980 --> 00:43:42,190 At pagkatapos kami ay may mga query upang makakuha ng impormasyon mula sa aming database, 899 00:43:42,190 --> 00:43:44,320 o upang ipasok ang impormasyon sa mga ito. 900 00:43:44,320 --> 00:43:47,560 Ang isang pulutong ng mga karaniwang ones-- UPDATE, INSERT, PUMILI, at ALISIN. 901 00:43:47,560 --> 00:43:50,790 >> Kaya para sa UPDATE, ito ay ang syntax para sa pag-update ng data sa isang database. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Ina-update ang talahanayan na ito na tinatawag na mesa sa pamamagitan ng pagsasabi SET, 904 00:43:57,340 --> 00:44:04,170 maaari naming i-set ang ilang mga halaga sa lahat hilera sa pantay na ang iba pa. 905 00:44:04,170 --> 00:44:09,410 Kaya maaari rin naming tukuyin ang ilang tiyak entries na gusto naming baguhin 906 00:44:09,410 --> 00:44:11,240 at na maaaring maging gamit SAAN. 907 00:44:11,240 --> 00:44:16,380 At maaari naming tukuyin na gusto lamang naming baguhin ang ilang mga hilera kung saan ang mga bahay para sa, 908 00:44:16,380 --> 00:44:19,830 kung nagkaroon kami ng isang talaan ng mga mag-aaral at ang lahat ng mga mag-aaral ay nagkaroon ng bahay, 909 00:44:19,830 --> 00:44:24,890 kaya gusto naming baguhin ang ilan lamang sa mga halaga kung saan ang isang bahay ay katumbas Currier, 910 00:44:24,890 --> 00:44:25,430 Halimbawa. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Para INSERT, maaari naming ipasok tiyak na halaga sa isang table. 913 00:44:31,800 --> 00:44:35,150 Kaya INSERT sa table, at pagkatapos ay ang halaga, 914 00:44:35,150 --> 00:44:39,080 at pagkatapos ay sa mga panaklong, tukuyin natin kung saan ang halaga na gusto mong ipasok. 915 00:44:39,080 --> 00:44:43,220 Kaya INSERT sa table, col1 at col2, ang halaga ay VAL1 at VAL2. 916 00:44:43,220 --> 00:44:48,930 Kaya ito pagsingit talaga ng isang bagong hilera sa isang table na naglalaman ng mga halaga ng 1 at 2 917 00:44:48,930 --> 00:44:50,850 sa ilalim ng haligi ng 1 at 2. 918 00:44:50,850 --> 00:44:54,760 >> At pagkatapos kami ay pagpunta sa pumunta sa ibabaw isang mabilis na halimbawa ng kung paano ito mukhang 919 00:44:54,760 --> 00:44:56,310 tulad ng sa aming database sa isang maliit na bit. 920 00:44:56,310 --> 00:44:58,685 Ngunit ito final query na ako Sa tingin namin ay pagpunta sa pumunta sa ibabaw, 921 00:44:58,685 --> 00:45:01,450 SELECT, pinapayagan lamang sa amin upang piliin ang data mula sa isang table 922 00:45:01,450 --> 00:45:03,080 na posibleng gamitin ito pagkatapos. 923 00:45:03,080 --> 00:45:05,830 At ang paraan namin ito ay namin tindahan lamang ito sa ilang mga variable. 924 00:45:05,830 --> 00:45:07,780 At pagkatapos ay marahil maaari naming gamitin ang mga ito muli. 925 00:45:07,780 --> 00:45:10,260 >> Kaya SELECT star nangangahulugan piliin ang lahat. 926 00:45:10,260 --> 00:45:13,280 Iyan ay isang shorthand lamang para sa pagpili ng lahat. 927 00:45:13,280 --> 00:45:19,760 MULA mesa SAAN, kami ay naghahanap para sa ilang tiyak na mga kondisyon, 928 00:45:19,760 --> 00:45:22,290 kaya kung saan ay katumbas ng column isang bagay, halimbawa. 929 00:45:22,290 --> 00:45:24,410 Kung nais lang namin sa piliin ang lahat mula sa table, 930 00:45:24,410 --> 00:45:28,400 ito pinipili lamang ang lahat ng mga haligi at ang lahat ng mga hilera mula sa isang table. 931 00:45:28,400 --> 00:45:32,040 >> At pagkatapos ay ALISIN MULA mesa SAAN col katumbas ng isang bagay, 932 00:45:32,040 --> 00:45:36,440 ito lamang tinatanggal ang ilang mga hilera mula sa aming mga talahanayan 933 00:45:36,440 --> 00:45:38,860 kung saan mayroon kaming ilang mga tiyak na mga kondisyon. 934 00:45:38,860 --> 00:45:41,870 Sa kasong ito, ang mga kondisyon mga haligi ay katumbas ng isang bagay. 935 00:45:41,870 --> 00:45:43,460 Kaya lamang ng isang mabilis na halimbawa nito. 936 00:45:43,460 --> 00:45:49,100 Kung kami ay may table na ito karapatan dito at kami ay ipasok ito sa isang table, ang mga halagang ito, 937 00:45:49,100 --> 00:45:50,400 na ipasok ang isang bagong hilera. 938 00:45:50,400 --> 00:45:56,380 At kung kami ay auto-pagdagdag, ito gagawin dagdagan lamang ang aming ID mula 0 hanggang 1 sa 2. 939 00:45:56,380 --> 00:46:00,010 >> Kung pinili namin ang lahat mula sa mga mag-aaral, ito nagbabalik lamang ang lahat ng mga patlang at ang lahat ng mga hilera. 940 00:46:00,010 --> 00:46:02,430 Saan taon ay mas malaki kaysa sa o katumbas ng 2016, 941 00:46:02,430 --> 00:46:04,390 na bumalik lang Hannah at ang aking sarili. 942 00:46:04,390 --> 00:46:08,360 At pagkatapos ay kung lang pinili namin taong id at taon FROM mga mag-aaral 943 00:46:08,360 --> 00:46:11,710 kung saan ang mga bahay ay Cabot House, na Gusto, muli, bumalik Hannah at ang aking sarili. 944 00:46:11,710 --> 00:46:14,430 >> Pagkatapos kung tinanggal namin mula sa mga mag-aaral kung saan ang pangalan ay katumbas ng Rob, 945 00:46:14,430 --> 00:46:16,760 na tanggalin ang buong hilera. 946 00:46:16,760 --> 00:46:19,696 At pagkatapos ay kung kami ay itakda ang pangalan, UPDATE mga mag-aaral 947 00:46:19,696 --> 00:46:21,570 SET pangalan ay katumbas sa Daven SAAN bahay ay pantay-pantay 948 00:46:21,570 --> 00:46:27,010 Cabot House, na ang pagpunta sa pumunta sa mga hilera at pagkatapos ay i-update ang pangalan. 949 00:46:27,010 --> 00:46:31,470 >> At pagkatapos ng ilang mga uri SQL data ay Pansamantalang trabaho, VARCHAR, INT, at lumutang. 950 00:46:31,470 --> 00:46:32,760 Ang mga ito ay makatarungang laro. 951 00:46:32,760 --> 00:46:36,740 Gusto kong pumunta nang muli at tiyakin na alam mo 952 00:46:36,740 --> 00:46:40,930 at magkaroon ng mga ito sa iyong cheat sheet, kung ano ang bawat isa sa mga character 953 00:46:40,930 --> 00:46:44,140 ay ginamit para sa, kung ano na ginamit mo ang mga ito sa iyong psets, 954 00:46:44,140 --> 00:46:48,050 at tiyakin na hindi ka pamilyar at komportable sa pagkakaroon na pumili 955 00:46:48,050 --> 00:46:51,450 mula sa iba't ibang mga uri ng data sa iyong pset. 956 00:46:51,450 --> 00:46:51,950 Oo. 957 00:46:51,950 --> 00:46:54,300 >> Madla: Ano ang table na naka-imbak? 958 00:46:54,300 --> 00:46:57,119 Oo, kung saan naka-imbak ang talahanayan na ito? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Well, sa ngayon, hindi ito ay naka-imbak. 960 00:46:59,160 --> 00:47:00,700 Gayon pa man, kung saan naka-imbak ang talahanayan na ito? 961 00:47:00,700 --> 00:47:04,503 Ngunit ito ay maaaring ma-imbak sa isang database SQL. 962 00:47:04,503 --> 00:47:07,330 >> Madla: At kung saan ay ang database SQL? 963 00:47:07,330 --> 00:47:11,200 Sa computer, online isang lugar, ang mga server? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Ito ay maaaring maging isang bilang ng iba't ibang mga bagay. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: ko interfaced kami sa SQL mga talahanayan karamihan sa phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Kaya maaari naming hilingin sa isang server upang mag-imbak ang mga ito para sa amin. 967 00:47:22,060 --> 00:47:23,830 Kami ay maaaring itabi ang mga ito sa aming sariling computer. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Ito lamang ay depende kung paano mo nais na gawin ito para sa iyong sarili. 969 00:47:27,950 --> 00:47:30,075 Ngunit kami ay pag-iimbak mga ito, bilang Hannah nabanggit, 970 00:47:30,075 --> 00:47:31,755 sa phpMyAdmin, na kung saan ay online. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 At pagkatapos ay ang paraan na ginagamit namin PHP at SQL, iniimbak namin ito 973 00:47:39,280 --> 00:47:43,450 sa ilang mga variable kung ano ang aming na-query para sa. 974 00:47:43,450 --> 00:47:48,370 >> Kaya kung PUMILI namin ang lahat FROM history kung saan user_id katumbas ng session id, 975 00:47:48,370 --> 00:47:53,900 na piliin ang lahat ng mga hilera para sa mga partikular na tao na 976 00:47:53,900 --> 00:47:58,327 ay naka-log in mula sa kasaysayan talahanayan at uri-uriin ang mga ito sa mga hilera. 977 00:47:58,327 --> 00:48:00,410 Ang isang cool na bagay na malaman na query function na CS50 978 00:48:00,410 --> 00:48:02,180 pinoprotektahan laban sa SQL iniksyon tag. 979 00:48:02,180 --> 00:48:07,420 Iyon ay nangangahulugan lamang na ito ay gumagawa sigurado ang input na ipinasok ay tama 980 00:48:07,420 --> 00:48:09,920 at na ang mga tao na ay ang pagpasok ng input 981 00:48:09,920 --> 00:48:15,100 ay hindi nagsisikap na input ang ilang mga malisyosong code upang i-drop ang alinman sa aming mga talahanayan 982 00:48:15,100 --> 00:48:17,305 o tanggalin ang lahat ng bagay sa loob ng aming database. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Ang isang mabilis na pangkalahatang-ideya ng Modelo Tingnan Controller model, 985 00:48:23,400 --> 00:48:27,360 ito lamang ay isang paraan ng pag-aayos at nag-iisip tungkol code. 986 00:48:27,360 --> 00:48:29,100 Ito ay muli, isang disenyo tularan. 987 00:48:29,100 --> 00:48:33,380 Ano ang ibig sabihin nito ay na namin can-- at ito ay mahusay na kasanayan 988 00:48:33,380 --> 00:48:37,790 sa hiwalay sa iba't ibang bahagi ng aming mga code at kung ano ang kanilang 989 00:48:37,790 --> 00:48:40,530 kontrolin sa mga tatlong paradigms. 990 00:48:40,530 --> 00:48:46,700 >> Kaya ang aming pagtanaw ay pinaka-madalas na ang aming mga template, ang aming mga layout, ang mga paraan 991 00:48:46,700 --> 00:48:48,260 na itinakda namin kung paano ang hitsura ng aming code. 992 00:48:48,260 --> 00:48:55,190 Iyon ang aming mga CSS file at ang paraan ay halos na natukoy namin ang disenyo ng aming code, 993 00:48:55,190 --> 00:48:55,710 talaga. 994 00:48:55,710 --> 00:48:59,280 Ang aming controller ay halos kung ano namin nai-paggawa na may mga file na PHP. 995 00:48:59,280 --> 00:49:03,030 Kaya muli, nagtatrabaho sa mga impormasyon na mayroon kami 996 00:49:03,030 --> 00:49:06,700 at pagtukoy kung paano na impormasyon ay ginagamit, 997 00:49:06,700 --> 00:49:10,660 at pagkatapos ay pagpasa na impormasyon mag papunta sa view o modelo. 998 00:49:10,660 --> 00:49:13,880 At ang mga modelo, ang mga paraan na kami Gumagamit ay ay ang aming database, 999 00:49:13,880 --> 00:49:17,510 kaya kung saan ang aming impormasyon ay naka-imbak sa gayon ito ay isang lugar 1000 00:49:17,510 --> 00:49:21,490 upang manirahan sa, at alinman sa mga code na may kaugnayan sa paraan 1001 00:49:21,490 --> 00:49:25,410 na makuha namin ang impormasyon na iyon o ang paraan na aming i-update ang impormasyon na iyon. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Kaya sa mga modelo ng MVC, HTTP kahilingan ay ipinadala sa isang web server. 1004 00:49:33,200 --> 00:49:36,220 Pagkatapos, ang binibigyang-kahulugan controller ang kahilingan mula sa mga gumagamit 1005 00:49:36,220 --> 00:49:38,260 at pagkatapos ay napatunayan ang input ng user. 1006 00:49:38,260 --> 00:49:41,580 Ito ay opsyonal na kami ang controller usap 1007 00:49:41,580 --> 00:49:44,000 sa isang modelo, para sa isang bagay tulad ng ating database 1008 00:49:44,000 --> 00:49:47,500 o ilang iba pang mga pag-andar na relays impormasyon. 1009 00:49:47,500 --> 00:49:50,340 At pagkatapos ay sa wakas, ang controller ipinapasa ang impormasyon papunta sa view 1010 00:49:50,340 --> 00:49:52,090 sa gayon ay maaari itong maging render at na ito ay maaaring 1011 00:49:52,090 --> 00:49:55,860 makikita ng sinumang tao pag-access sa web page. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> May tanong? 1014 00:50:01,340 --> 00:50:01,840 Kahanga-hanga. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Kaya muli, ang mga modelo, pag-andar nito, muli, 1017 00:50:08,469 --> 00:50:11,260 ay paulit-ulit na pag-iimbak ng impormasyon, pamamahala at pag-aayos ng data. 1018 00:50:11,260 --> 00:50:13,890 At kung ano ang nasaksihan namin sa Hanggang dito ang MySQL database 1019 00:50:13,890 --> 00:50:16,200 at ang anumang mga file ng data na maaaring gamitin. 1020 00:50:16,200 --> 00:50:20,580 >> View, pagtatanghal ng impormasyon sa sa gumagamit, ang UI, o user interface. 1021 00:50:20,580 --> 00:50:22,350 At ang mga halimbawa nito ay HTML. 1022 00:50:22,350 --> 00:50:23,950 At pagkatapos ay magkaroon tayo ng minimal PHP. 1023 00:50:23,950 --> 00:50:28,360 Kaya para sa isang loop na iterates higit sa data na naka-print out 1024 00:50:28,360 --> 00:50:30,720 ay bahagi ng view, bilang taliwas sa mga controller. 1025 00:50:30,720 --> 00:50:35,660 At pagkatapos ay isang pulutong ng aming mga file na PHP mahulog sa kategorya controller. 1026 00:50:35,660 --> 00:50:38,410 Lamang Ito ay pinangangasiwaan ng mga kahilingan ng gumagamit at makakakuha ng impormasyon mula sa mga modelo. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Tumatalon papunta sa Document Object Model, ito lamang 1029 00:50:45,590 --> 00:50:47,700 ay tumutukoy sa paraan HTML mga dokumento ay organisado. 1030 00:50:47,700 --> 00:50:51,600 At sila ay isasaayos sa isang puno structure na may isang hierarchy. 1031 00:50:51,600 --> 00:50:56,720 Kaya kung kami ay may access sa [hindi marinig] representasyon ng mga dokumento, 1032 00:50:56,720 --> 00:51:02,750 maaari naming magtrabaho sa mga dokumento, tulad ng namin manipulahin ang mga bagay talaga. 1033 00:51:02,750 --> 00:51:06,630 >> At upang gawin ang isang Medyo mas malinaw, kapag 1034 00:51:06,630 --> 00:51:10,540 kami ay may isang pulutong ng aming mga iba't ibang mga tag tumugon 1035 00:51:10,540 --> 00:51:12,590 sa iba't ibang mga ruta sa aming tree. 1036 00:51:12,590 --> 00:51:17,070 At pagkatapos ay para sa mga halimbawa na ito, kami Mayroon ang panimulang node dokumento. 1037 00:51:17,070 --> 00:51:20,010 Mayroon kaming, pagkatapos, ang aming HTML node na hating sa ulo at katawan. 1038 00:51:20,010 --> 00:51:22,810 Head ay may pamagat at pagkatapos ay ang pamagat ay naglalaman hello, mundo. 1039 00:51:22,810 --> 00:51:24,860 At ang aming mga katawan lamang ay naglalaman ng hello, mundo rin. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Kaya ang anumang mga katanungan sa alinman sa mga bagay-bagay na namin sakop sa ngayon? 1042 00:51:31,900 --> 00:51:35,891 At kung hindi, Hannah ay kumuha ng higit sa JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Kahanga-hanga. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, cool. 1045 00:51:37,473 --> 00:51:40,980 Kung ang anumang bagay ay lumalabas na may PHP o HTML, o alinman sa mga bagay-bagay na sakop Maria, 1046 00:51:40,980 --> 00:51:42,700 maaari naming laging i-pause. 1047 00:51:42,700 --> 00:51:46,430 Kami ay gumagawa ng mas mahusay na sa panahon na muli, kaya kahanga-hangang. 1048 00:51:46,430 --> 00:51:48,770 At lamang upang bumalik talagang mabilis na ito, 1049 00:51:48,770 --> 00:51:51,010 kung pagtingin mo ang bawat exam nakaraang taon, ito 1050 00:51:51,010 --> 00:51:54,120 pagdating up either-- dito ay ang ilang mga HTML, gumawa diagram na ito. 1051 00:51:54,120 --> 00:51:58,380 O narito ang diagram na ito, gumawa ng ilang mga HTML, kaya tiyak pagsasanay na iyon. 1052 00:51:58,380 --> 00:52:01,500 At pagkatapos na ang isang garantisadong tanong na maaari mong makakuha ng karapatan. 1053 00:52:01,500 --> 00:52:02,000 Cool. 1054 00:52:02,000 --> 00:52:04,510 Kaya sabihin makipag-usap tungkol sa JavaScript at kung ito ay isang maliit na piraso 1055 00:52:04,510 --> 00:52:09,130 naiiba mula sa mga wika tulad ng PHP at C, ang dalawang wika ng nakita natin sa simula pa. 1056 00:52:09,130 --> 00:52:10,780 Kaya bilang isa, ito ay maluwag type. 1057 00:52:10,780 --> 00:52:14,630 Iyon ay tulad ng PHP, ngunit hindi katulad ng C. 1058 00:52:14,630 --> 00:52:15,890 >> Ito ay isang interpreted wika. 1059 00:52:15,890 --> 00:52:19,870 Muli, na tulad ng PHP, hindi katulad ng C. At ito 1060 00:52:19,870 --> 00:52:24,630 ay pagpunta sa nagpapahintulot sa amin upang use-- ito gumagana tunay mabuti sa mga pahina ng web. 1061 00:52:24,630 --> 00:52:28,350 Ito ay pagpunta sa-daan sa amin upang manipulahin ang nilalaman at hitsura nito 1062 00:52:28,350 --> 00:52:30,300 at kung ano ang ginagawa nito. 1063 00:52:30,300 --> 00:52:32,330 >> Kami ay pagpunta upang makita ang isang maliit na piraso ng Ajax. 1064 00:52:32,330 --> 00:52:36,140 Ito ay nagpapahintulot sa amin upang makipag-usap asynchronously sa iba't-ibang servers 1065 00:52:36,140 --> 00:52:37,950 at makakuha ng impormasyon. 1066 00:52:37,950 --> 00:52:42,820 At ito ay ang mga bagay na tunay naghihiwalay JavaScript mula sa PHP at C 1067 00:52:42,820 --> 00:52:45,590 ay na ito ay client-side. 1068 00:52:45,590 --> 00:52:49,860 Parehong PHP at C ay karaniwang server-side. 1069 00:52:49,860 --> 00:52:51,960 >> Para sa nakararaming bahagi at halos buong ano 1070 00:52:51,960 --> 00:52:53,900 nasaksihan namin, hindi bababa sa ito klase, JavaScript 1071 00:52:53,900 --> 00:52:57,040 gawang sa client-side, na nangangahulugan na ang mga browser ay talagang 1072 00:52:57,040 --> 00:52:58,597 responsable para sa pagpapatakbo ng mga ito. 1073 00:52:58,597 --> 00:53:01,180 At na nangangahulugan na hindi namin kailangan upang makipag-ugnayan sa server. 1074 00:53:01,180 --> 00:53:04,380 Kaya ito ay nangangahulugan na maaari itong maging ng maraming mas mabilis dahil sa ito ay talagang lamang ito ay Chrome, 1075 00:53:04,380 --> 00:53:10,420 ito ay Safari, ito ay Firefox, anumang ikaw gamitin ang aktwal na tumatakbo ang iyong JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> Madla: Ano ang ibig sabihin ng asynchronous? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ah, ano ang ibig sabihin ng asynchronous? 1078 00:53:13,620 --> 00:53:14,250 Mahusay na tanong. 1079 00:53:14,250 --> 00:53:17,890 Asynchronously means-- well, ang nilalaman na kung saan ang 1080 00:53:17,890 --> 00:53:22,140 ginagamit namin ito ay, OK, kami ay ay ang paglikha ng isang web page 1081 00:53:22,140 --> 00:53:23,860 at kailangan namin upang makakuha ng ilang impormasyon. 1082 00:53:23,860 --> 00:53:28,250 Kaya sa mga halimbawa ng mga mashup, ilang impormasyon na maaari naming nais 1083 00:53:28,250 --> 00:53:30,580 ay mga pamagat ng artikulo. 1084 00:53:30,580 --> 00:53:33,330 Ngayon, could-- namin isa sa option ay upang gawin ito synchronous 1085 00:53:33,330 --> 00:53:37,940 at na nangangahulugan na hahayaan itigil, pumunta makakuha ng mga artikulo, 1086 00:53:37,940 --> 00:53:41,275 makakuha ng likod ng artikulo, at pagkatapos ay render, ngunit iyon ay magiging talagang mabagal. 1087 00:53:41,275 --> 00:53:44,150 Iyon ay magiging isang masamang karanasan ng user dahil gusto mo lang ma-upo 1088 00:53:44,150 --> 00:53:46,630 may naghihintay para sa isang bagay na tumugon. 1089 00:53:46,630 --> 00:53:50,020 >> Asynchronously nangangahulugan na namin makikita magpatuloy pagpunta tungkol sa aming negosyo, 1090 00:53:50,020 --> 00:53:52,529 nagre-render ang pahina, at magpapadala kami off ng isang kahilingan 1091 00:53:52,529 --> 00:53:54,570 na uri ng pagpunta sa mangyayari sa background. 1092 00:53:54,570 --> 00:53:57,610 Sa tingin ko gagamitin namin ang mga halimbawa sa lecture ng pagtawag Rob at sinasabi, 1093 00:53:57,610 --> 00:53:59,980 hey, maaari mong tingnan ito up para sa akin at bumalik sa akin, 1094 00:53:59,980 --> 00:54:02,870 bilang laban sa akin lamang naghihintay sa telepono. 1095 00:54:02,870 --> 00:54:07,020 Kaya asynchronously nangangahulugan ito mangyayari sa background ang layo mula sa amin 1096 00:54:07,020 --> 00:54:08,676 kahanay. 1097 00:54:08,676 --> 00:54:10,400 >> Mahusay na tanong. 1098 00:54:10,400 --> 00:54:11,830 Ano pa? 1099 00:54:11,830 --> 00:54:12,330 Great. 1100 00:54:12,330 --> 00:54:15,020 Susubukan naming tumalon ng maraming higit pa sa asynchronous kahilingan sa Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> Madla: ba JavaScript-- kung saan ginagawa Bumagsak sa model-view-controller? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: Great tanong. 1103 00:54:19,620 --> 00:54:23,320 Saan ang JavaScript pagkahulog may model-view-controller? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Hulaan ko ito ay maaaring fall-- kaya hindi namin karaniwang 1106 00:54:28,350 --> 00:54:31,340 tulad ng upang squish ito sa na tularan, ngunit hulaan ko nais kong sabihin, 1107 00:54:31,340 --> 00:54:34,280 OK, kaya JavaScript talaga ay pagpunta sa payagan 1108 00:54:34,280 --> 00:54:37,587 amin upang mangalap ng data, bigyang-kahulugan ang data, talagang gawin 1109 00:54:37,587 --> 00:54:38,920 makabuluhang mga bagay na may data. 1110 00:54:38,920 --> 00:54:41,100 Sa ganoong paraan, ito ay tunay control-like. 1111 00:54:41,100 --> 00:54:43,900 >> Ngunit ito ay din ng pagpunta sa nagpapahintulot sa amin upang ipakita ang mga bagay-bagay at i-print na mga bagay. 1112 00:54:43,900 --> 00:54:47,021 Sa ganoong paraan, ito ay tunay view-gusto. 1113 00:54:47,021 --> 00:54:47,520 Oo. 1114 00:54:47,520 --> 00:54:51,710 Kaya ito ay uri ng tulad ng PHP sa kung saan maaari itong uri ng maging pareho. 1115 00:54:51,710 --> 00:54:53,330 Magandang tanong. 1116 00:54:53,330 --> 00:54:55,209 Ano pa? 1117 00:54:55,209 --> 00:54:56,000 Lahat ng karapatan, kasindak-sindak. 1118 00:54:56,000 --> 00:54:57,120 Paglipat ng karapatan kasama. 1119 00:54:57,120 --> 00:54:59,110 >> Kaya sabihin makita ang isang halimbawa ng kung paano namin maaaring gamitin ang 1120 00:54:59,110 --> 00:55:02,250 Ang JavaScript sa isa sa aming web programs. 1121 00:55:02,250 --> 00:55:05,680 Kaya kailangan ko isaalang-alang na ito index.html may isang bungkos ng HTML. 1122 00:55:05,680 --> 00:55:08,800 At ang mga bagay na gusto ko sa iyo focus sa ay ang script na tag. 1123 00:55:08,800 --> 00:55:13,280 At ito ang sabi, OK, gusto kong magpatakbo ng ilang mga JavaScript at dito ay kung saan ito buhay. 1124 00:55:13,280 --> 00:55:15,400 Ito ay nakatira sa hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> At napaka tulad ng CSS, magagawa namin ilagay JavaScript sa loob ng HTML. 1126 00:55:21,120 --> 00:55:24,000 Bakit maaaring gusto naming hiwalay na ito sa labas? 1127 00:55:24,000 --> 00:55:24,500 Oo. 1128 00:55:24,500 --> 00:55:25,486 >> Madla: Mas madaling isulat na muli? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Oo. 1130 00:55:26,402 --> 00:55:28,450 Ito ay mas madaling gamitin sa kabuuan iba't-ibang mga pahina ng web. 1131 00:55:28,450 --> 00:55:29,980 Pinapanatili nito ang mga bagay na cleaner. 1132 00:55:29,980 --> 00:55:32,090 Ito ay magandang pagsasanay lamang. 1133 00:55:32,090 --> 00:55:32,590 Kahanga-hanga. 1134 00:55:32,590 --> 00:55:33,930 Magandang sagot. 1135 00:55:33,930 --> 00:55:36,690 Kaya mabuting, kaya ito ay pagpunta upang ating maging index.html. 1136 00:55:36,690 --> 00:55:39,430 At pagkatapos ay down na dito ay ang aming maliit na maliit maliit JavaScript file. 1137 00:55:39,430 --> 00:55:42,410 >> At lahat ng sinasabi nito ay alerto Hello, mundo. 1138 00:55:42,410 --> 00:55:46,040 Kaya kung ano ang mangyayari kapag sa pahinang ito renders-- 1139 00:55:46,040 --> 00:55:49,680 kaya kung ikaw ay pupunta sa kahit anong website ito is-- lahat na kaya ang mangyari 1140 00:55:49,680 --> 00:55:53,330 ay ito ay pagpunta sa sabihin, OK, ako pagpunta upang patakbuhin ang JavaScript code. 1141 00:55:53,330 --> 00:55:56,370 At ito ang JavaScript code lang sabi alert Hello, mundo. 1142 00:55:56,370 --> 00:55:59,090 Kaya ako ng pagpunta sa kumuha ito friendly na maliit na pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Cool? 1144 00:56:00,360 --> 00:56:04,746 Iyon ay uri ng tulad ng aming pinakaunang Program JavaScript, aming Hello, mundo. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Tingnan natin ang isang maliit na bit higit pa tungkol Hayaan ano ang syntax ng JavaScript kamukha. 1147 00:56:12,190 --> 00:56:16,330 At partikular, ihambing natin ito upang ipaalam sa C at PHP, na kung saan namin nakita bago. 1148 00:56:16,330 --> 00:56:20,610 >> Sa JavaScript, kami ay pagpunta sa may var, ang pangalan ng variable, at pagkatapos ay 1149 00:56:20,610 --> 00:56:21,690 ang kanyang tunay na halaga. 1150 00:56:21,690 --> 00:56:26,170 At hindi namin tukuyin ang isang uri, lamang tulad ng sa PHP, ngunit napaka hindi katulad sa C. 1151 00:56:26,170 --> 00:56:28,850 Kaya halimbawa, kung nais namin sa tindahan ng mga halaga ng 50, 1152 00:56:28,850 --> 00:56:32,490 sa C, kami ay may sa sabihin, hey, C, Gusto ko ng isang integer, 1153 00:56:32,490 --> 00:56:35,076 Pupunta ako sa mga tawag na ito i, at ang halaga nito ay 50. 1154 00:56:35,076 --> 00:56:36,450 Sa PHP, ito ay isang maliit na bit mas madali. 1155 00:56:36,450 --> 00:56:41,880 Sabihin namin, hey, gusto ko ng isang variable tinatawag na i at ang halaga nito ay 50. 1156 00:56:41,880 --> 00:56:45,890 Very katulad, sa JavaScript, namin sabihin hey, gusto ko ng isang variable na tinatawag na i, 1157 00:56:45,890 --> 00:56:47,080 ang halaga nito ay 50. 1158 00:56:47,080 --> 00:56:52,140 Bawat kasunod na oras na gamitin ko i, hindi ko na kailangan upang isulat var. 1159 00:56:52,140 --> 00:56:53,810 Ito lang ang i mula sa puntong iyon sa. 1160 00:56:53,810 --> 00:56:58,660 Sa parehong paraan, sa C, kung saan minsan sa sinasabi namin int i, gamitin lamang namin i. 1161 00:56:58,660 --> 00:57:00,340 Cool? 1162 00:57:00,340 --> 00:57:01,800 Lahat tama. 1163 00:57:01,800 --> 00:57:03,710 >> Paglipat sa sa loop, kabutihang-palad, ang mga ito ay halos 1164 00:57:03,710 --> 00:57:06,720 Tumingin exactly-- tingin ko na ang mga ito eksaktong katulad ng kung ano ang 1165 00:57:06,720 --> 00:57:09,799 loops ay pagpunta sa hitsura sa isang bagay tulad ng C kung saan ang iyong para sa loop 1166 00:57:09,799 --> 00:57:11,840 ay pagpunta sa may tatlong parts-- isang Pinasimulan, 1167 00:57:11,840 --> 00:57:13,640 isang kundisyon, at isang update. 1168 00:57:13,640 --> 00:57:15,340 Ang isang habang loop, tinitingnan nito ang eksaktong parehong. 1169 00:57:15,340 --> 00:57:16,390 Bigyan kami ng lang ito ng isang kondisyon. 1170 00:57:16,390 --> 00:57:18,264 >> At isang gawin habang loop, muli, eksakto ang parehong. 1171 00:57:18,264 --> 00:57:20,190 Bigyan namin ito ng isang kondisyon. 1172 00:57:20,190 --> 00:57:24,510 Ipagpalagay natin na nais ko upang umulit over-- Nais kong gawin ang isang bagay na limang beses. 1173 00:57:24,510 --> 00:57:27,840 Sa C, upang aming maisulat para sa init i katumbas ng 0. 1174 00:57:27,840 --> 00:57:30,480 i ay mas mababa sa 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 Pagkakaiba lamang, sa JavaScript, sa halip na sabihing int i katumbas ng 0, 1176 00:57:34,240 --> 00:57:36,820 sinasabi namin var i katumbas ng 0. 1177 00:57:36,820 --> 00:57:38,370 Maganda. 1178 00:57:38,370 --> 00:57:41,320 Iyan na lamang ang pagkakaiba. 1179 00:57:41,320 --> 00:57:43,200 Ang anumang mga katanungan sa anumang ng mga iyon? 1180 00:57:43,200 --> 00:57:44,160 Oo. 1181 00:57:44,160 --> 00:57:48,480 >> Madla: Kaya sa PHP, ito ay ang parehong bagay, maliban ngunit tulad ng isang variable? 1182 00:57:48,480 --> 00:57:49,564 O ay na ang isang var halimbawa? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Oo. 1184 00:57:50,480 --> 00:57:52,310 Kaya sa PHP, ito ay pagpunta upang maging isang dollar sign. 1185 00:57:52,310 --> 00:57:59,450 Kaya ito ay pagpunta sa $ i equals 0, $ i ay mas mababa sa 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Mahusay na tanong. 1187 00:58:02,490 --> 00:58:04,570 >> Ngayon sabihin makipag-usap tungkol function na pahayag. 1188 00:58:04,570 --> 00:58:07,010 Sa C, kapag kami ipinahayag ng isang function, kami ay nagbigay ito ng isang pangalan 1189 00:58:07,010 --> 00:58:08,490 at nagbigay kami ng ilang mga parameter. 1190 00:58:08,490 --> 00:58:10,670 At sa simula, kami ay sumulat ang uri. 1191 00:58:10,670 --> 00:58:12,440 Sa JavaScript, lahat tayo may sa gawin ay isulat 1192 00:58:12,440 --> 00:58:15,080 ang pag-andar sa keyword na iyon sabi, hey, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Ako ay tungkol sa upang tukuyin ang isang function. 1194 00:58:16,570 --> 00:58:18,520 >> Sa kasong ito, ito ay may pangalan sum. 1195 00:58:18,520 --> 00:58:20,820 At ito ay tumatagal ng dalawang argumento, x at y. 1196 00:58:20,820 --> 00:58:23,280 Pansinin na hindi namin pakialam tungkol sa mga uri ng mga x at y. 1197 00:58:23,280 --> 00:58:26,280 At tulad ng C, kami ay return keyword na ito, 1198 00:58:26,280 --> 00:58:29,140 upang maaari naming gawin ang isang bagay tulad ng return x at y. 1199 00:58:29,140 --> 00:58:32,540 >> At ngayon sa sandaling namin ang nakasulat muna ito function, maaari naming gamitin ang kabuuan kahit saan. 1200 00:58:32,540 --> 00:58:34,740 At iyon ay lubos na fine. 1201 00:58:34,740 --> 00:58:37,530 Isa talagang cool na bagay tungkol JavaScript ay tunay hindi katulad ng C 1202 00:58:37,530 --> 00:58:40,770 ay na pag-andar na maaari tratuhin tulad ng mga halaga. 1203 00:58:40,770 --> 00:58:43,895 Kaya maaari naming gawin ang isang bagay tulad dito kung saan ako ipagpalagay cover ko ito up-- 1204 00:58:43,895 --> 00:58:46,400 Sakop ko ang var sum part-- at sinabi lang namin 1205 00:58:46,400 --> 00:58:49,850 function na xy katumbas return x plus y. 1206 00:58:49,850 --> 00:58:52,140 >> Iyon ay kung ano ay tinatawag na sa isang hindi nakikilalang function. 1207 00:58:52,140 --> 00:58:53,920 Ito ay isang function na walang pangalan. 1208 00:58:53,920 --> 00:58:56,290 Sapagkat ang function na ito sabi sum, blah, blah, blah, 1209 00:58:56,290 --> 00:58:59,340 ito ay sabihin lamang function. 1210 00:58:59,340 --> 00:59:02,020 Ngunit ngayon kahit na mayroon akong anonymous function na ito, 1211 00:59:02,020 --> 00:59:03,630 na function na ay talagang isang halaga lang. 1212 00:59:03,630 --> 00:59:05,160 Maaari naming ituring ito tulad ng isang halaga. 1213 00:59:05,160 --> 00:59:10,180 >> Kaya maaari naming i-save ito sa isang variable ng parehong paraan namin ay maaaring mag-imbak 50 sa isang variable. 1214 00:59:10,180 --> 00:59:13,870 Kaya maaari naming sabihin, OK, gusto ko ng variable, ito ay tinatawag na kabuuan, 1215 00:59:13,870 --> 00:59:16,011 at ito ay ang function na ito. 1216 00:59:16,011 --> 00:59:18,760 Kaya ang dalawang bagay na ito ay talagang pagpunta sa gawin ang parehong bagay, 1217 00:59:18,760 --> 00:59:21,576 ngunit ang syntax ay isang maliit na ibang-iba at uri ng isang masaya note. 1218 00:59:21,576 --> 00:59:22,076 Oo. 1219 00:59:22,076 --> 00:59:25,548 >> Madla: Kaya maaari mong tawagan ang isang function na ay anonymous sa pagsasabing, 1220 00:59:25,548 --> 00:59:28,244 sum bracket 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Oo. 1222 00:59:29,160 --> 00:59:32,280 Maaari mong tawagan ang anonymous function sa parehong paraan. 1223 00:59:32,280 --> 00:59:33,350 Gusto mong gawin sum (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Iyon ay magiging ganap fine. 1226 00:59:38,200 --> 00:59:41,575 >> Kung hindi ko ginawa var sum ay katumbas ng function, kung lang tinanggal ko 1227 00:59:41,575 --> 00:59:45,480 this-- Alam ko ito ay sa aking kamay, ngunit magpanggap tinanggal ko this-- pagkatapos 1228 00:59:45,480 --> 00:59:46,964 na function na ay uri ng lamang nawala. 1229 00:59:46,964 --> 00:59:49,630 Hindi mo maaaring gamitin ito muli dahil hindi mo na magkaroon ng isang pangalan para sa mga ito. 1230 00:59:49,630 --> 00:59:53,497 Ito ay mahirap na mag-refer sa isang bagay hindi mo alam kung ano ang tawag. 1231 00:59:53,497 --> 00:59:54,080 Magandang tanong. 1232 00:59:54,080 --> 00:59:54,580 Oo. 1233 00:59:54,580 --> 00:59:59,580 >> Madla: Maaari mo reference sum in iba pang mga lugar sa mga halaga ng x plus y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Maaari mo reference sum sa iba pang mga lugar 1235 01:00:01,940 --> 01:00:03,360 sa ang halaga x plus y? 1236 01:00:03,360 --> 01:00:05,130 Hindi ako lubos na sigurado kung ano ang ibig sabihin. 1237 01:00:05,130 --> 01:00:10,582 >> Madla: Kaya iyong mga nakalipas na semi-anonymous function ay sum ay katumbas na ito 1238 01:00:10,582 --> 01:00:14,452 anonymous na function, kaya sum ay ngayon ay isang variable na can-- mo 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Kanan. 1240 01:00:15,410 --> 01:00:18,980 Kaya sum ay ang variable, ngunit ito ay actually-- 1241 01:00:18,980 --> 01:00:23,770 kaya sum ay isang variable na ang halaga ay ang function. 1242 01:00:23,770 --> 01:00:27,030 Kaya ito ay isang function, kung saan ay uri ng isang kakaibang bagay sa wrap ang inyong ulo sa paligid 1243 01:00:27,030 --> 01:00:29,880 dahil naglalaro kami sa C at ikaw ay hindi maaaring gawin na sa C. 1244 01:00:29,880 --> 01:00:32,679 Ngunit ngayon ay maaaring tumawag sum namin ang parehong paraan na maaari naming tumawag sum dito. 1245 01:00:32,679 --> 01:00:33,220 Madla: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Oo. 1247 01:00:33,970 --> 01:00:34,553 Magandang tanong. 1248 01:00:34,553 --> 01:00:35,438 Oo. 1249 01:00:35,438 --> 01:00:39,862 >> Madla: Kaya hindi namin gamitin ang modelo sa PHP o JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Hindi, kami ay hindi kailangan na gumamit ng mga modelo, 1251 01:00:42,070 --> 01:00:43,880 lalo na sa JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Kaya isa masamang kaugalian bagay na Ako pagpunta sa sabihin na hindi mo dapat gawin 1253 01:00:49,380 --> 01:00:52,620 ay hindi mo na kailangang magsulat ng var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Maaari mo lamang simulan ang paggawa i = 50. 1255 01:00:54,840 --> 01:00:57,490 At gusto lang gumawa ako ng isang global variable. 1256 01:00:57,490 --> 01:01:00,550 >> Ito ay napaka-masamang kaugalian sa hindi kailanman sabihin explicity var i, 1257 01:01:00,550 --> 01:01:01,800 ngunit ito ay isang bagay na maaari mong gawin. 1258 01:01:01,800 --> 01:01:03,591 Ang interpreter ay hindi pagpunta sa sumigaw sa iyo. 1259 01:01:03,591 --> 01:01:05,920 JavaScript ay medyo tulad ng, maaari mong gawin kung ano ang gusto mo. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Pasensya na. 1262 01:01:09,800 --> 01:01:10,300 May dalawa. 1263 01:01:10,300 --> 01:01:12,150 Sa pantalon orange. 1264 01:01:12,150 --> 01:01:13,190 Sige lang. 1265 01:01:13,190 --> 01:01:14,390 >> Madla: Hindi, una ka pumunta. 1266 01:01:14,390 --> 01:01:16,765 >> Madla: Hindi, ako ay makatarungan kasabihan Hindi ko nakita ang aking mga kamay up. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 SIGE. 1269 01:01:20,748 --> 01:01:26,604 Kaya't kung ikaw ay tumawag na unang pagkakataon, ngayon sabihin sa ilang, 1270 01:01:26,604 --> 01:01:29,864 tawag namin ito sa parehong paraan, x, y, tulad ng lahat ng oras? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Oo. 1272 01:01:30,780 --> 01:01:32,572 Kaya ang dalawang mahalagang gawin ang parehong bagay. 1273 01:01:32,572 --> 01:01:35,113 Madla: At ano ang bentahe ng paggamit ng isa o ang iba? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: No advantage ng paggamit ng isa o ang iba. 1275 01:01:37,500 --> 01:01:40,080 Nais ko lamang na ipakita sa iyo ng dalawang iba't ibang piraso ng syntax. 1276 01:01:40,080 --> 01:01:42,770 Ang isang pulutong ng mga oras kung saan anonymous function ay walang isang layunin 1277 01:01:42,770 --> 01:01:48,220 ay kung ang argument sa isa pang function na ay dapat na isang function. 1278 01:01:48,220 --> 01:01:50,600 At kami na makita na sa lamang ng isang segundo sa Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Kaya kung na hindi gumawa ng anumang mga kahulugan, store na ito sa likod ng iyong ulo. 1280 01:01:53,577 --> 01:01:55,660 Iyon ay kung saan ang isang hindi nakikilalang ito ay maaaring maging kapaki-pakinabang na pag-andar 1281 01:01:55,660 --> 01:01:58,284 dahil sa ito ay hindi tunay na nagkakahalaga nagbibigay ito ng isang pangalan dahil hindi namin lamang 1282 01:01:58,284 --> 01:01:59,443 pupunta na gamitin ito nang isang beses. 1283 01:01:59,443 --> 01:02:00,370 Oo. 1284 01:02:00,370 --> 01:02:03,635 >> Madla: Kung x at y pagbabago sa ibang pagkakataon on, ay sum magbabago rin? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Kung x at y pagbabago sa susunod, ay sum magbabago rin? 1286 01:02:06,510 --> 01:02:08,840 Kaya ito ay ang tunay na ako sa tingin ng isang bagay na, 1287 01:02:08,840 --> 01:02:12,260 muli, ito lamang ang nararamdaman ibang-iba mula sa C. Ito ay hindi isang halaga. 1288 01:02:12,260 --> 01:02:13,620 Ito ay hindi 5. 1289 01:02:13,620 --> 01:02:15,550 Ito lang ang pag-andar ng kanyang sarili. 1290 01:02:15,550 --> 01:02:19,110 Kaya sa lalong madaling ikaw ay bigyan ito ng mga parameter, pagkatapos ay makikita mo ang tunay na kalkulahin ang halaga. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: At pagkatapos ay maaari mong tawagin ang function 1292 01:02:21,193 --> 01:02:23,272 at gamitin ito upang makakuha ng ilang mga halaga. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: Kanan. 1294 01:02:24,230 --> 01:02:25,250 Mismong. 1295 01:02:25,250 --> 01:02:25,863 Oo. 1296 01:02:25,863 --> 01:02:27,946 >> Madla: Kaya kung ikaw lang tindahan ito sa variable, 1297 01:02:27,946 --> 01:02:31,430 tulad ng var x ay katumbas ng halagang dalawang values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Oo. 1299 01:02:32,420 --> 01:02:35,320 Kaya maaari mong gawin lamang var sum ay katumbas ng kabuuan ng dalawang mga halaga. 1300 01:02:35,320 --> 01:02:37,670 Oo. 1301 01:02:37,670 --> 01:02:38,680 Anumang iba pang mga katanungan? 1302 01:02:38,680 --> 01:02:39,642 Oo. 1303 01:02:39,642 --> 01:02:42,047 >> Madla: Ngunit nais na malito sum at sum? 1304 01:02:42,047 --> 01:02:45,062 Tulad ng kung ikaw ay tumawag sa iyong variable sum, Gusto mong tawagin ang function sum? 1305 01:02:45,062 --> 01:02:45,895 HANNAH Blumberg: Mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Kung ikaw ay isang bagay tulad ng, sum ay katumbas ng sum 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> Madla: Oo. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Naniniwala ako na Gusto patungan ang halaga ng sum. 1310 01:02:56,465 --> 01:02:59,290 Kaya isa pang kawili-wiling bagay tungkol sa JavaScript 1311 01:02:59,290 --> 01:03:02,950 ay na ang isang solong variable ay maaaring tumagal ng sa isang grupo ng mga iba't ibang uri. 1312 01:03:02,950 --> 01:03:03,790 Bad practice. 1313 01:03:03,790 --> 01:03:06,280 Hindi ka dapat gumawa ng isang bagay tulad ng kung ano ang sinabi mo lamang. 1314 01:03:06,280 --> 01:03:10,240 >> Ngunit sa C, kung i ay naka-set katumbas ng isang integer, 1315 01:03:10,240 --> 01:03:13,570 alam namin na ito ay hindi kailanman pagpunta sa maging isang string. 1316 01:03:13,570 --> 01:03:15,670 Hindi ito ang kaso sa JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Oo, magandang katanungan. 1318 01:03:17,770 --> 01:03:20,151 Ano pa? 1319 01:03:20,151 --> 01:03:20,650 Lahat tama. 1320 01:03:20,650 --> 01:03:21,850 Ang paggawa ng lahat ng karapatan sa oras. 1321 01:03:21,850 --> 01:03:23,050 Pagpapanatiling pagpunta. 1322 01:03:23,050 --> 01:03:25,200 Lahat tama. 1323 01:03:25,200 --> 01:03:27,780 >> Kung titingnan natin sa isang array sa JavaScript, narito ang 1324 01:03:27,780 --> 01:03:30,250 isang mabilis na halimbawa ng isang array ng mga string. 1325 01:03:30,250 --> 01:03:31,967 At array ay maaaring maging pabago-bago. 1326 01:03:31,967 --> 01:03:33,675 Hindi sila magkaroon ng isang takdang sukat sa parehong paraan 1327 01:03:33,675 --> 01:03:37,990 na ginagawa nila sa C. Maaari naming i-access ang elemento na may lamang ang mga square bracket. 1328 01:03:37,990 --> 01:03:41,720 >> Na mukhang ng maraming tulad ng PHP at ng maraming tulad ng C, kung saan maaari naming sabihin, sa kasong ito, 1329 01:03:41,720 --> 01:03:48,360 kung gusto ko ang salitang JavaScript, gagawin ko huwag arr square bracket na may 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 At pagkatapos ay kung maalala mo sa C kapag kami Nais upang makakuha ng haba ng isang array, 1332 01:03:55,390 --> 01:03:56,820 ito ay talagang nakakainis. 1333 01:03:56,820 --> 01:03:58,460 Ngunit sa JavaScript, napakadaling. 1334 01:03:58,460 --> 01:03:59,910 Lahat ng ginagawa namin, .length. 1335 01:03:59,910 --> 01:04:01,120 Binibigyan nito ang mga haba. 1336 01:04:01,120 --> 01:04:01,892 Ayan yun. 1337 01:04:01,892 --> 01:04:03,140 >> Madla: Iyan ay simple. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Oo, gumagawa isang pulutong mas madali ang iyong buhay. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, hindi object-- doon. 1341 01:04:11,560 --> 01:04:15,480 Objects sa JavaScript pakiramdam ng maraming tulad structs sa C 1342 01:04:15,480 --> 01:04:18,280 at nag-uugnay array sa PHP. 1343 01:04:18,280 --> 01:04:20,270 Kaya kung ano ang iyong nakita namin ang isang maraming ay JSON, na 1344 01:04:20,270 --> 01:04:23,150 ibig sabihin para sa JavaScript Bagay pagtatanda. 1345 01:04:23,150 --> 01:04:25,550 At ito ay isa lamang paraan ng structuring aming data. 1346 01:04:25,550 --> 01:04:27,880 >> Kaya sabihin makita ang isang halimbawa, marahil ang pinakamadaling. 1347 01:04:27,880 --> 01:04:32,540 Kaya narito ang isang halimbawa ng isang bagay na nag-iimbak ng mga klase, CS50. 1348 01:04:32,540 --> 01:04:37,790 At kapag sinabi ko class, ibig sabihin ko course, Hindi like-- oo, ang mga kurso, CS50. 1349 01:04:37,790 --> 01:04:40,730 At makikita mo na lahat ng bagay sa object 1350 01:04:40,730 --> 01:04:43,526 ay magiging nakapaloob in curly braces. 1351 01:04:43,526 --> 01:04:48,260 >> At simulan namin upang iugnay ang mga pangalan ng field o mga susi sa mga iba't ibang mga halaga. 1352 01:04:48,260 --> 01:04:52,920 Kaya maaari mong simulan upang makita kung paano ito uri ng nararamdaman ng isang nag-uugnay array sa PHP. 1353 01:04:52,920 --> 01:04:57,450 Kaya kami ay pagpunta upang iugnay ang mga patlang o ang susi pangalan, siyempre, na may string, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Kami ay pagpunta sa may isang guro. 1356 01:04:59,940 --> 01:05:00,940 Kami ay pagpunta sa may TFs. 1357 01:05:00,940 --> 01:05:05,240 Kami ay pagpunta sa may bilang ng psets at kami ay pagpunta sa may record. 1358 01:05:05,240 --> 01:05:10,720 At isa cool na bagay upang tandaan ay ang lahat ng mga bagay na ito ay may iba't ibang mga uri, 1359 01:05:10,720 --> 01:05:12,020 at iyon ang ganap fine. 1360 01:05:12,020 --> 01:05:15,330 >> Ito ay multa para sa isang bagay, sa katunayan, marahil ito ay inaasahan para sa isang bagay 1361 01:05:15,330 --> 01:05:19,620 na magkaroon ng isang kumbinasyon ng mga string at numero at Booleans at array 1362 01:05:19,620 --> 01:05:23,420 at ang anumang iba maaari ka nais na magkaroon sa loob ng iyong object. 1363 01:05:23,420 --> 01:05:28,570 At tandaan na ang mga ito ay magiging ang mga pangalan o ang mga key, at pagkatapos namin lamang 1364 01:05:28,570 --> 01:05:30,300 itakda ito katumbas sa isang maliit na colon. 1365 01:05:30,300 --> 01:05:32,015 >> Madla: Ano ang eksakto ang ibig sabihin ng JSON? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Ano eksakto ang ibig sabihin JSON? 1367 01:05:33,890 --> 01:05:36,470 Lamang nakatayo JSON para JavaScript Bagay pagtatanda. 1368 01:05:36,470 --> 01:05:38,430 Ito ay lamang ng isang paraan ng pag-format. 1369 01:05:38,430 --> 01:05:40,040 Oo. 1370 01:05:40,040 --> 01:05:41,800 Ito ay isang paraan ng pag-format ng aming data. 1371 01:05:41,800 --> 01:05:43,620 >> Sa C, ito ay structs. 1372 01:05:43,620 --> 01:05:45,800 Sa PHP, ito ay nag-uugnay array. 1373 01:05:45,800 --> 01:05:47,120 Sa JavaScript, mayroon kaming mga bagay. 1374 01:05:47,120 --> 01:05:48,969 >> Madla: Kaya ang CS50 isang bagay? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 ay ang mga bagay na sa kasong ito. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Ngayon, paano namin talagang access mga patlang o baguhin ang mga patlang. 1378 01:05:57,880 --> 01:06:03,920 Halimbawa, ipagpalagay na kami ay nagpasya na Nais mo ang isa ng mas kaunting mga pset ito semestre. 1379 01:06:03,920 --> 01:06:06,300 Sa halip na siyam, hindi namin lamang ng pagpunta sa may walong. 1380 01:06:06,300 --> 01:06:08,240 Paano namin baguhin iyon? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, maling paraan. 1382 01:06:09,436 --> 01:06:11,060 Mayroong dalawang mga paraan na maaari naming gawin iyon. 1383 01:06:11,060 --> 01:06:13,490 Bilang isa ay may tuldok notation at numero ng dalawang 1384 01:06:13,490 --> 01:06:15,750 ay may mga square bracket pagtatanda. 1385 01:06:15,750 --> 01:06:19,720 Kaya, halimbawa, kung ako nais na baguhin o pag-access 1386 01:06:19,720 --> 01:06:26,820 larangan psets sa aming CS50 bagay, kung ano ang gusto kong gawin ay CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 kaya ang pangalan ng bagay na tuldok ang pangalan ng patlang o ang key. 1388 01:06:30,770 --> 01:06:37,120 >> Very katulad, ito ay eksaktong katumbas na gawin CS50, at pagkatapos ay 1389 01:06:37,120 --> 01:06:42,050 sa square braces, psets. 1390 01:06:42,050 --> 01:06:42,837 Cool? 1391 01:06:42,837 --> 01:06:44,298 Oo. 1392 01:06:44,298 --> 01:06:47,707 >> Madla: Kaya ang JSON technically JavaScript pa rin, 1393 01:06:47,707 --> 01:06:51,814 kahit na sa psets namin hiwalay na ito out [hindi marinig]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Oo naman. 1395 01:06:52,730 --> 01:06:56,290 Kaya ang tanong ay, ang mga JavaScript at JSON katumbas? 1396 01:06:56,290 --> 01:07:00,750 Kaya JSON ay notation, talaga ang paraan na isulat namin 1397 01:07:00,750 --> 01:07:02,700 isang bagay mula sa JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Kaya ito ay hindi eksakto ang parehong. 1399 01:07:05,190 --> 01:07:08,950 >> Gusto ko sabihin JavaScript, may mga bagay sa JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON ay tumatagal ng mga bagay at mga kopya sa kanila at ipinapakita ang mga ito 1401 01:07:12,590 --> 01:07:15,160 o nag-iimbak ng mga ito sa isang magandang paraan. 1402 01:07:15,160 --> 01:07:18,110 Kaya JSON ay hindi isang programming wika ang paraan na ang JavaScript ay. 1403 01:07:18,110 --> 01:07:20,900 Ito lang ang notasyon para sa ang aming mga bagay sa JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Oo. 1405 01:07:21,400 --> 01:07:24,144 >> Madla: Kaya kung ano ang eksaktong [Hindi marinig] makumpleto? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Oo naman. 1407 01:07:25,060 --> 01:07:27,727 Kaya talagang gumagana ito sa wala. 1408 01:07:27,727 --> 01:07:28,935 Ito ay lamang ng isang paraan upang ma-access. 1409 01:07:28,935 --> 01:07:31,393 Kaya sabihin nating namin nais na baguhin ang bilang ng mga hanay ng problema 1410 01:07:31,393 --> 01:07:32,450 9-8. 1411 01:07:32,450 --> 01:07:34,383 Ano ang ginagawa namin ay gawin ang isang bagay tulad CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Oo, mahusay na tanong. 1414 01:07:39,400 --> 01:07:40,733 Ito ay upang ipakita sa iyo syntax. 1415 01:07:40,733 --> 01:07:43,620 Hindi talaga dapat gawin kapaki-pakinabang. 1416 01:07:43,620 --> 01:07:46,085 May tanong? 1417 01:07:46,085 --> 01:07:48,210 Paglipat ng karapatan kasama. 1418 01:07:48,210 --> 01:07:51,960 >> Kaya tingnan natin ang isang mabilis na halimbawa ng kung paano ipaalam Gumagana JavaScript dahil sinabi ko sa iyo na ito 1419 01:07:51,960 --> 01:07:55,170 ginagawa ang lahat ng mga cool na bagay na ito at ay nagbibigay-daan sa amin upang baguhin ang mga pahina ng web. 1420 01:07:55,170 --> 01:07:56,970 Sabihin aktwal na makita ito sa aksyon. 1421 01:07:56,970 --> 01:07:59,850 Kaya maglaan ng, halimbawa, ang file na HTML. 1422 01:07:59,850 --> 01:08:04,350 >> At ang mga bagay na gusto kong mag-focus sa ay ito partikular na tag, na kung saan ay isang pindutan, 1423 01:08:04,350 --> 01:08:06,182 may id search_button. 1424 01:08:06,182 --> 01:08:08,670 Ito lang ang sa pahina. 1425 01:08:08,670 --> 01:08:10,690 Kaya ngayon sabihin makita kung ano ang maaari naming talagang gawin. 1426 01:08:10,690 --> 01:08:12,560 >> Well, ipagpalagay na kapag i-click mo ang pindutan na iyon, 1427 01:08:12,560 --> 01:08:16,010 nais naming gumawa ng isang alert-- nag-click ka sa pindutan. 1428 01:08:16,010 --> 01:08:17,840 Tayo'y makita kung paano namin maaaring gawin iyon. 1429 01:08:17,840 --> 01:08:23,869 Kaya window.onload-- hindi ito ay isang bagay na nakita mo sa klase, sa gayon 1430 01:08:23,869 --> 01:08:26,180 hindi kailangan upang malaman ito para sa mga pagsusulit. 1431 01:08:26,180 --> 01:08:33,660 Ngunit ito talaga sabi, OK, call mga function na ito kapag naglo-load ang window. 1432 01:08:33,660 --> 01:08:35,080 >> Kaya na uri lang ng code setup. 1433 01:08:35,080 --> 01:08:36,390 Huwag mag-alala kaya magkano ang tungkol na. 1434 01:08:36,390 --> 01:08:39,170 Ano ang gusto kong mag-focus sa ay in dito. 1435 01:08:39,170 --> 01:08:44,020 Sabihin namin var searchButton katumbas document.getElementByID search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Kaya bilang maaari mong hulaan, kung ano ang nagagawa nito ay sinasabi nito, 1437 01:08:46,450 --> 01:08:50,920 OK, pumunta mahanap ang elemento may ID search_button. 1438 01:08:50,920 --> 01:08:52,790 At ngayon kami na aktwal na element at ako 1439 01:08:52,790 --> 01:08:56,279 pagpunta sa tindahan ito sa isang variable searchButton. 1440 01:08:56,279 --> 01:09:00,651 At ngayon namin ang aktwal na maaaring gamitin ang mga elemento na at baguhin ito, o ma-access ang mga halaga nito, 1441 01:09:00,651 --> 01:09:01,359 mga bagay-bagay na tulad ng. 1442 01:09:01,359 --> 01:09:04,649 Maaari naming talagang simulan upang umaakit sa mga web page. 1443 01:09:04,649 --> 01:09:10,330 >> Kaya dito sinasabi ko, OK, ngayon na mayroon akong button na, kapag ito ay na-click, 1444 01:09:10,330 --> 01:09:12,859 tumawag hindi kilalang function na ito. 1445 01:09:12,859 --> 01:09:16,811 Kaya ito ay kung saan anonymous function na maging kapaki-pakinabang. 1446 01:09:16,811 --> 01:09:18,060 At ano ang mga function na gawin? 1447 01:09:18,060 --> 01:09:20,529 Well, ang mga tawag na ito lamang alerto function at sinasabi nito, 1448 01:09:20,529 --> 01:09:22,910 ikaw ay nag-click ang pindutan ng Paghahanap. 1449 01:09:22,910 --> 01:09:29,670 >> Kaya kung ano ang mangyayari kung pupunta ako sa kung saan man nabubuhay ang HTML at i-click ko ang button, 1450 01:09:29,670 --> 01:09:33,729 Kukunin ko ang isang fancy maliit na alerto na nagsasabing ikaw ay nag-click sa pindutan. 1451 01:09:33,729 --> 01:09:40,710 Kaya ang mga bagay na mag-focus sa here-- document.getElementByID 1452 01:09:40,710 --> 01:09:44,960 makakakuha ng isang partikular na HTML elemento na may mga ibinigay na ID. 1453 01:09:44,960 --> 01:09:48,529 At ngayon maaari naming i-set kung ano ang dapat mangyari kapag 1454 01:09:48,529 --> 01:09:50,702 na partikular na elemento ay na-click. 1455 01:09:50,702 --> 01:09:52,670 >> Madla: Mayroon kaming upang ilagay ang lahat ng na in? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Sorry? 1457 01:09:53,162 --> 01:09:55,130 >> Madla: Mayroon ba nating pisikal na code sa lahat ng mga iyon? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Kailangan nating pisikal na code sa lahat ng mga iyon? 1459 01:09:56,340 --> 01:09:56,839 Oo. 1460 01:09:56,839 --> 01:09:58,120 Hindi baga ito ang uri ng mga nakakainis? 1461 01:09:58,120 --> 01:10:00,032 Ito ay isang pulutong ng code. 1462 01:10:00,032 --> 01:10:01,574 >> Madla: Maaari kang mag-import ng isang bagay. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Kanan. 1464 01:10:02,532 --> 01:10:03,610 Maaari naming gamitin ang isang bagay. 1465 01:10:03,610 --> 01:10:08,140 At sa particular-- oh, ito ay na nagsasabi sa akin Mayroon akong magturo sa section. 1466 01:10:08,140 --> 01:10:11,061 Sa partikular, sabihin gamitin ang library jQuery, 1467 01:10:11,061 --> 01:10:13,060 dahil iyon ay talagang mahaba at talagang nakakainis 1468 01:10:13,060 --> 01:10:16,860 at gusto kong ma-gawing simple ito at gawin itong mas maikli at mas madaling isulat. 1469 01:10:16,860 --> 01:10:19,810 >> Kaya jQuery ay isang JavaScript library. 1470 01:10:19,810 --> 01:10:24,930 Kaya JavaScript ay programming wika; jQuery ay isang library. 1471 01:10:24,930 --> 01:10:27,190 At ito ay gumagawa ng isang grupo ng mga bagay na mas madali. 1472 01:10:27,190 --> 01:10:33,230 Ito ay gumagawa ng pagbabago at pagpunta sa buong isang HTML na dokumento lubhang mas madaling. 1473 01:10:33,230 --> 01:10:35,030 >> Ito ay gumagawa ng mas madaling paghawak ng mga kaganapan. 1474 01:10:35,030 --> 01:10:37,580 Ito ay ginagawang mas madali animation at ito ay gumagawa Ajax mas madali. 1475 01:10:37,580 --> 01:10:40,140 Kaya sabihin tumalon sa dalawa sa ngayon ang mga bagay. 1476 01:10:40,140 --> 01:10:40,900 Mawalang-galang na. 1477 01:10:40,900 --> 01:10:42,620 Bago namin gawin, ang ilang mga pangunahing syntax. 1478 01:10:42,620 --> 01:10:46,870 >> Ito ay kung ano ang karamihan ng mga tawag sa jQuery library hitsura. 1479 01:10:46,870 --> 01:10:50,520 Ginagamit namin ang dollar sign-- walang sign koneksyon sa PHP, 1480 01:10:50,520 --> 01:10:56,030 inconvenient-- lang ang pangalan ng isang selector, tuldok, at pagkatapos ng isang aksyon. 1481 01:10:56,030 --> 01:10:58,860 Kaya tingnan natin ang ilang mga kongkreto halimbawa ng na. 1482 01:10:58,860 --> 01:11:02,980 >> Kaya ito talaga ang parehong code mula sa slide na kaganapan. 1483 01:11:02,980 --> 01:11:08,740 Kaya ito mahaba, pangit na bagay ay nagiging ganito karami nicer, mas maliit na bagay. 1484 01:11:08,740 --> 01:11:10,370 Kaya sabihin subukan sa break na ito pababa. 1485 01:11:10,370 --> 01:11:17,090 Ito ay nagsasabi, OK, jQuery-- ito dollar sign-- jQuery, hanapin ako ng bintana. 1486 01:11:17,090 --> 01:11:18,480 Kaya iyon ang tagapili. 1487 01:11:18,480 --> 01:11:21,800 >> Kapag ito ay naglo-load, tawagan ang function na ito. 1488 01:11:21,800 --> 01:11:23,880 Kaya na ang nasa loob ng lahat ng bagay. 1489 01:11:23,880 --> 01:11:24,380 SIGE. 1490 01:11:24,380 --> 01:11:25,740 Sa ngayon, kaya mabuti? 1491 01:11:25,740 --> 01:11:26,750 Lahat tama. 1492 01:11:26,750 --> 01:11:32,970 >> Ngayon, jQuery, mahanap ako sa bagay na may ID search_button. 1493 01:11:32,970 --> 01:11:36,090 At kung ano ito ay nag-click, tawagan ang function na ito. 1494 01:11:36,090 --> 01:11:37,900 At pagkatapos ay ang function na ito ni eksaktong pareho. 1495 01:11:37,900 --> 01:11:41,052 Lamang gawin ng isang maliit na piraso ng alerto, ikaw ay nag-click ang pindutan ng Paghahanap. 1496 01:11:41,052 --> 01:11:42,650 >> Kaya ito ay talagang maganda. 1497 01:11:42,650 --> 01:11:46,260 Ito ay talagang namumuo at Pinadadali ng aming code. 1498 01:11:46,260 --> 01:11:49,030 Paano ko malalaman na ito ay ID search_button 1499 01:11:49,030 --> 01:11:50,960 at hindi tulad ng klase search_button? 1500 01:11:50,960 --> 01:11:52,024 >> Madla: Hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Oo. 1502 01:11:52,940 --> 01:11:56,450 Ito simbolo hash, ito ay tulad ng CSS. 1503 01:11:56,450 --> 01:12:00,080 Kaya tandaan, sa CSS, kapag tayo nais na pumili ng isang bagay sa pamamagitan ng ID, 1504 01:12:00,080 --> 01:12:01,590 ginamit namin ang pound sign. 1505 01:12:01,590 --> 01:12:05,400 At kapag gusto naming piliin isang bagay sa pamamagitan ng klase, gagamitin namin ang mga tuldok. 1506 01:12:05,400 --> 01:12:06,870 Great. 1507 01:12:06,870 --> 01:12:08,230 Magkaroon ng kahulugan? 1508 01:12:08,230 --> 01:12:11,500 Kaya jQuery ay dapat na gumawa lang mas madali ang ating buhay. 1509 01:12:11,500 --> 01:12:12,000 Oo. 1510 01:12:12,000 --> 01:12:15,660 >> Madla: Kaya ako ng isang maliit na bilang nalilito sa kung paano gumagana ang pag-andar anonymous. 1511 01:12:15,660 --> 01:12:19,027 Mong pangalan ba ito anonymouse function, gumana? 1512 01:12:19,027 --> 01:12:20,594 Paano tinawag na? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Oo naman. 1514 01:12:21,510 --> 01:12:25,812 Kaya function ay isang keyword lamang na sabi, ako tungkol upang tukuyin ang isang function. 1515 01:12:25,812 --> 01:12:26,520 Madla: Oh, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: OK? 1517 01:12:27,353 --> 01:12:32,120 At pagkatapos ay ipasa namin ito bilang isang argument to-- sabihin tumagal 1518 01:12:32,120 --> 01:12:37,040 ito sa loob one-- sa click function. 1519 01:12:37,040 --> 01:12:39,420 Kaya oo, kaya na function, anonymous function na ito, 1520 01:12:39,420 --> 01:12:40,910 nagiging isang aktwal na argument. 1521 01:12:40,910 --> 01:12:43,632 Kaya tandaan sa JavaScript, namin maaaring tratuhin ang mga function bilang halaga. 1522 01:12:43,632 --> 01:12:44,340 Madla: Oh, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Oo. 1524 01:12:45,256 --> 01:12:46,035 Gusto ko na "oh." 1525 01:12:46,035 --> 01:12:47,490 Nice. 1526 01:12:47,490 --> 01:12:49,915 Iba pang mga tanong? 1527 01:12:49,915 --> 01:12:50,505 Time? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Good. 1529 01:12:51,380 --> 01:12:52,760 Good. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Kahanga-hanga. 1531 01:12:54,210 --> 01:12:55,720 Ang ilang mabilis na mga kapaki-pakinabang jQuery. 1532 01:12:55,720 --> 01:12:57,559 Hindi ako pupunta upang pumunta sa pamamagitan ng lahat ng mga ito. 1533 01:12:57,559 --> 01:12:59,350 Ang mga slide ay up online isang maliit na piraso 1534 01:12:59,350 --> 01:13:02,040 mamaya, kaya maaari mong suriin ito ang isang maliit na bit sa ibang pagkakataon. 1535 01:13:02,040 --> 01:13:07,120 Pero talaga, ang pangkalahatang pattern humahawak kung saan namin sabihin, 1536 01:13:07,120 --> 01:13:11,510 OK, hey, jQuery, narito ang aking selector at pagkatapos ay narito ang isang action. 1537 01:13:11,510 --> 01:13:15,940 At maaari mong gawin ang mga bagay tulad ng pag-access ang mga halaga ng isang form, i-access ang ilang mga HTML, 1538 01:13:15,940 --> 01:13:19,195 control sa kung ano ang mangyayari kapag ang gumagamit nagsumite ng isang form, mga bagay-bagay na tulad ng. 1539 01:13:19,195 --> 01:13:20,106 Oo. 1540 01:13:20,106 --> 01:13:22,090 >> Madla: Kaya sa pagsusulit, kami ay pagpunta sa kailangan 1541 01:13:22,090 --> 01:13:25,066 malaman pa ng maraming mula sa ang dokumentasyon jQuery. 1542 01:13:25,066 --> 01:13:31,018 Kaya ibinigay na kopyahin namin / ilagay ang jQuery babasahin sa aming cheat sheet, 1543 01:13:31,018 --> 01:13:32,506 kung saan ay inilabas ng linya? 1544 01:13:32,506 --> 01:13:33,957 Tulad ng kung gaano karaming mga kailangan naming malaman? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: Great tanong. 1546 01:13:35,290 --> 01:13:37,765 Ang tanong ay mahalagang ibinigay na kayo 1547 01:13:37,765 --> 01:13:41,330 Hindi ma-access ang mga babasahin jQuery sa panahon ng pagsubok kung magkano ang dapat, mo 1548 01:13:41,330 --> 01:13:41,830 malaman? 1549 01:13:41,830 --> 01:13:45,540 Hindi namin ay inaasahan mong dumating hanggang sa ilang mga random function 1550 01:13:45,540 --> 01:13:47,240 na namin inaasahan mo sa Google. 1551 01:13:47,240 --> 01:13:52,930 >> Mga bagay na fair game ay gagawin ko sabihin lang ang uri ng pangkalahatang syntax, 1552 01:13:52,930 --> 01:13:58,310 kawalan ng kakayahang pumili ng ID at sa pamamagitan class-- kaya lang tulad ng CSS. 1553 01:13:58,310 --> 01:14:01,876 At pagkatapos ay ang aktwal na pag-andar themself, kami ay malamang na sabihin sa iyo. 1554 01:14:01,876 --> 01:14:02,376 Oo. 1555 01:14:02,376 --> 01:14:05,591 >> Madla: Kaya kapag pinili mo sa pamamagitan ng klase ay nangangahulugan na tuldok. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Oo, eksakto. 1557 01:14:06,840 --> 01:14:07,340 Good. 1558 01:14:07,340 --> 01:14:10,461 Kapag pinili mo sa pamamagitan ng klase, ito ay pagpunta na tuldok sa halip na ang pound sign. 1559 01:14:10,461 --> 01:14:10,960 Oo. 1560 01:14:10,960 --> 01:14:12,710 >> Madla: Gusto mo pumunta sa mga pagkakaiba 1561 01:14:12,710 --> 01:14:14,310 sa pagitan ng pagpili sa pamamagitan ng ID at sa pamamagitan ng klase? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Oo naman. 1563 01:14:14,560 --> 01:14:17,510 Ang pagkakaiba sa pagitan ng pagpili ID at pagpili sa pamamagitan ng klase. 1564 01:14:17,510 --> 01:14:20,685 Kaya tulad ng sinabi Maria a Medyo mas maaga, may 1565 01:14:20,685 --> 01:14:26,280 maaari lamang maging isang HTML element sa isang ibinigay na ID, samantalang class, 1566 01:14:26,280 --> 01:14:29,740 ito ay nagbibigay-daan sa amin sa grupong ng grupo ng iba't ibang mga elemento ng magkasama, 1567 01:14:29,740 --> 01:14:34,300 kaya bagay na may kaugnayan, ngunit hindi eksakto ang parehong. 1568 01:14:34,300 --> 01:14:35,685 Nasagot ba ang tanong? 1569 01:14:35,685 --> 01:14:36,200 Kahanga-hanga. 1570 01:14:36,200 --> 01:14:37,194 Oo. 1571 01:14:37,194 --> 01:14:40,680 >> Madla: Paano kung mayroon kang maramihang mga bagay na nasa parehong klase? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Ano ang mangyayari kung mayroon kang maramihang mga bagay na 1573 01:14:42,150 --> 01:14:43,280 ay ang parehong klase? 1574 01:14:43,280 --> 01:14:45,829 Kaya, halimbawa, kung hindi namin lamang gamit ang purong JavaScript, 1575 01:14:45,829 --> 01:14:48,120 Gusto natin ng isang bagay tulad ng document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 At pagkatapos ay kung ano talaga ang ginagawa na ay nagbabalik ng isang array ng mga elemento. 1578 01:14:56,320 --> 01:14:59,517 >> At kailangan mong mag umulit sa ang mga ito o makahanap ng kung saan ang isa na nais mo. 1579 01:14:59,517 --> 01:15:01,350 Ito ay hindi pagpunta upang bigyan ikaw ay isang solong elemento. 1580 01:15:01,350 --> 01:15:03,450 Ito ay pagpunta sa magbibigay sa iyo ng isang hanay ng mga elemento. 1581 01:15:03,450 --> 01:15:05,280 Mahusay na tanong. 1582 01:15:05,280 --> 01:15:07,700 Ano pa? 1583 01:15:07,700 --> 01:15:09,520 Kahanga-hanga. 1584 01:15:09,520 --> 01:15:12,860 >> Kaya sa tingin ko kung hindi ka pamilyar sa anumang jQuery na nakita mo sa pset, 1585 01:15:12,860 --> 01:15:15,600 dapat kang maging handa na upang patakbuhin. 1586 01:15:15,600 --> 01:15:16,325 Tanong? 1587 01:15:16,325 --> 01:15:17,610 Oh hindi. 1588 01:15:17,610 --> 01:15:18,859 Ako tunay may magturo. 1589 01:15:18,859 --> 01:15:19,358 Relaks. 1590 01:15:19,358 --> 01:15:20,035 Makikita ito ay multa. 1591 01:15:20,035 --> 01:15:20,660 Kukunin ko doon. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Makipag-usap tungkol Ajax Hayaan. 1594 01:15:26,870 --> 01:15:31,350 Kaya Ajax ay magiging a-- rin, Magsimula tayo sa kung ano ito ay kumakatawan para ipaalam. 1595 01:15:31,350 --> 01:15:32,350 Ito ay isang acronym. 1596 01:15:32,350 --> 01:15:35,855 Ito ay kumakatawan sa Asynchronous JavaScript at XML. 1597 01:15:35,855 --> 01:15:39,800 At XML ay talaga ay magiging [Hindi marinig] na may isang uri ng aming mga data. 1598 01:15:39,800 --> 01:15:42,100 Ngunit hindi pa namin talagang ginagamit XML. 1599 01:15:42,100 --> 01:15:43,430 Sa halip, gamitin na lamang namin JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Kaya talaga, ito ang ilang mga data-- asynchronous, JavaScript, at data, 1601 01:15:48,350 --> 01:15:50,040 sa kasong ito, JSON. 1602 01:15:50,040 --> 01:15:52,820 At ang aming mga layunin, tulad ng aming nabanggit isang maliit na piraso ng mas maaga, 1603 01:15:52,820 --> 01:15:56,880 ay para ma-gumawa ng isang kahilingan, gawin na kahilingan 1604 01:15:56,880 --> 01:16:00,700 kanyang bagay sa background, ngunit patuloy 1605 01:16:00,700 --> 01:16:02,550 gawin ang anumang kami ay nagbabalak na gawin. 1606 01:16:02,550 --> 01:16:06,650 At pagkatapos ay kapag ang impormasyon na iyon ay handa na, pagkatapos ay gagamitin namin isama ito. 1607 01:16:06,650 --> 01:16:08,470 >> Kaya sabihin makita kung ano ito talagang ganito ang hitsura. 1608 01:16:08,470 --> 01:16:11,210 At ito, dapat ikaw ay Medyo pamilyar 1609 01:16:11,210 --> 01:16:13,680 mula pset8, ang isa lang naka ka in. 1610 01:16:13,680 --> 01:16:16,200 Kaya narito ang isang may-bisang jQuery function na namin baka 1611 01:16:16,200 --> 01:16:18,250 nais na malaman about-- ito dollar sign. 1612 01:16:18,250 --> 01:16:21,500 Kaya ito sabi jQuery function, GetJSON. 1613 01:16:21,500 --> 01:16:25,020 >> At kung ano ang function na ito ay ito tumatagal ng isang URL at ilang parameters-- 1614 01:16:25,020 --> 01:16:28,000 kaya tingin ko sa kaso ng pset8, ito tulad noon, 1615 01:16:28,000 --> 01:16:33,520 ang URL ay articles.php at ang parameter ay pumunta = ilang postal code. 1616 01:16:33,520 --> 01:16:41,580 At sinasabi nito, OK, gumawa ng isang kahilingan sa ang URL na ito gamit ang ibinigay na mga parameter. 1617 01:16:41,580 --> 01:16:43,480 At iyon lang ang mangyayari. 1618 01:16:43,480 --> 01:16:47,730 >> Kapag natapos na ito, ito ay alinman pagpunta sa matagumpay na makumpleto 1619 01:16:47,730 --> 01:16:49,370 o ito ay pagpunta sa mabibigo. 1620 01:16:49,370 --> 01:16:53,480 Kaya ito ay ang katumbas ng call Rob at hilingin sa kanya na gawin ang isang bagay. 1621 01:16:53,480 --> 01:17:00,260 At pagkatapos ay kapag siya tawag sa likod, siya ay mag pagpunta sa sinasabi ko tapos na o ako ay nabigo. 1622 01:17:00,260 --> 01:17:04,030 >> Kaya sa kaso kung saan ikaw ay tapos, sabihin mo, OK, ako tapos na. 1623 01:17:04,030 --> 01:17:05,980 At pagkatapos mong tawagin ang function na ito. 1624 01:17:05,980 --> 01:17:08,915 Sa kasong ito, ito ay magiging isang function na tumatagal ng ilang impormasyon. 1625 01:17:08,915 --> 01:17:12,890 Ang isa ay karaniwang pag-aalaga namin tungkol ay data, ang data na kami ay talagang nagbalik 1626 01:17:12,890 --> 01:17:15,900 bilang resulta ng pagtawag GetJSON. 1627 01:17:15,900 --> 01:17:17,470 >> At maaari mong gawin ang isang bagay sa mga ito. 1628 01:17:17,470 --> 01:17:23,670 Kaya sa kaso ng pset8, ipinapakita namin ito bilang isang listahan. 1629 01:17:23,670 --> 01:17:29,050 Nabigong ay magiging isang function iyon ay tinatawag na mabigo ang kahilingan 1630 01:17:29,050 --> 01:17:30,450 para sa anumang dahilan. 1631 01:17:30,450 --> 01:17:35,104 At sa kaso ng pset8, console.log lang namin ito. 1632 01:17:35,104 --> 01:17:36,020 Ang anumang mga katanungan sa mga iyon? 1633 01:17:36,020 --> 01:17:36,300 Oo. 1634 01:17:36,300 --> 01:17:39,633 >> Madla: Maaari naming gamitin lamang ang function theta sa halip ng mga function, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Oo naman. 1637 01:17:44,380 --> 01:17:46,713 Kaya oo, sa tingin ko sa pset, Nakita lang namin ang function ng data. 1638 01:17:46,713 --> 01:17:48,700 Kaya lamang the-- yes, OK. 1639 01:17:48,700 --> 01:17:50,510 Iyon ay kung ano ang nakita natin sa pset. 1640 01:17:50,510 --> 01:17:51,480 Iyan ay lubos fine. 1641 01:17:51,480 --> 01:17:54,210 >> Ang mga ito ay lamang kung nais mong upang bunutin ang higit pang impormasyon, 1642 01:17:54,210 --> 01:17:57,190 Ito ang mga bagay na maaari mong makuha mula GetJSON. 1643 01:17:57,190 --> 01:17:59,040 Magandang tanong. 1644 01:17:59,040 --> 01:17:59,706 Ano pa? 1645 01:17:59,706 --> 01:18:00,206 Oo. 1646 01:18:00,206 --> 01:18:01,787 >> Madla: Kaya GetJSON ay Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: OK. 1648 01:18:02,620 --> 01:18:05,700 Kaya ito ay ang uri ng mga mapanlinlang na bahagi. 1649 01:18:05,700 --> 01:18:12,390 Ito ay isang jQuery function na nagpapahintulot sa mong gawin asynchronous tawag. 1650 01:18:12,390 --> 01:18:16,080 At ang mga asynchronous tawag, na ang kung ano ang aming na-nagre-refer sa bilang Ajax. 1651 01:18:16,080 --> 01:18:16,850 Oo. 1652 01:18:16,850 --> 01:18:20,185 Na kinuha sa akin ng isang talagang mahabang panahon upang tanggalin kapag ako ay isang mag-aaral. 1653 01:18:20,185 --> 01:18:21,560 Madla: Maaari mong sabihin na muli? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Oo. 1655 01:18:22,476 --> 01:18:23,630 Maaari ko bang sabihin na muli? 1656 01:18:23,630 --> 01:18:29,010 Ito GetJSON function, ito ay isang jQuery function. 1657 01:18:29,010 --> 01:18:31,970 At ito ay pagpunta sa gawin isang asynchronous tawag. 1658 01:18:31,970 --> 01:18:35,700 At ang mga ito asynchronous tawag, na namin ay nagre-refer sa mga bilang Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Anumang iba pang mga katanungan? 1661 01:18:41,872 --> 01:18:43,330 Mayroon kaming lamang ng ilang minuto ang natitira. 1662 01:18:43,330 --> 01:18:45,080 At Maria pagpunta sa balutin sa seguridad 1663 01:18:45,080 --> 01:18:47,464 at pagkatapos kami ay pagpunta na lamang ang tungkol sa tapos na. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Galing, OK. 1665 01:18:48,630 --> 01:18:54,030 Kaya is-- tumagal lamang ito ng ilang ng mga segundo upang tingnan ito. 1666 01:18:54,030 --> 01:18:56,750 At ito ay hindi isang bagay na talagang mahusay. 1667 01:18:56,750 --> 01:18:59,430 At maaari isang tao sabihin sa akin kung bakit? 1668 01:18:59,430 --> 01:19:05,650 Ano ang nangyayari sa foo at maaaring dati maaring magresulta sa isang bagay na masama, 1669 01:19:05,650 --> 01:19:06,770 at kung ano na ang tawag dito? 1670 01:19:06,770 --> 01:19:07,270 Oo. 1671 01:19:07,270 --> 01:19:10,391 Madla: Kung ang argument na ipinasa sa ay higit sa 12 mga character, 1672 01:19:10,391 --> 01:19:11,454 maaaring ito apaw. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Kanan. 1674 01:19:12,370 --> 01:19:14,180 Perpekto. 1675 01:19:14,180 --> 01:19:15,384 Ano ang tinatawag na ito? 1676 01:19:15,384 --> 01:19:16,300 Nabanggit mo lamang ito. 1677 01:19:16,300 --> 01:19:16,840 >> Madla: Buffer overflow. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Yup, buffer overflow. 1679 01:19:18,381 --> 01:19:21,230 Kaya ito ay isang bagay na namin sumangguni sa bilang buffer overflow. 1680 01:19:21,230 --> 01:19:25,500 At nakita namin na sa loob ng foo, tinukoy na namin ang aming buffer, c, 1681 01:19:25,500 --> 01:19:27,240 na may sukat na 12. 1682 01:19:27,240 --> 01:19:32,680 Gayunpaman, sa main, hindi kami suriin sa anumang paraan sa lahat 1683 01:19:32,680 --> 01:19:36,480 kung ang mga argv1-- upang ang ay ang pangalawang argumento. 1684 01:19:36,480 --> 01:19:39,630 Hindi namin suriin kung ang mga laki ng mga ito ay angkop. 1685 01:19:39,630 --> 01:19:43,380 >> Kaya kung kami ay isang lalo na malisyosong user 1686 01:19:43,380 --> 01:19:47,170 na ilagay sa ilang mga argument na mas mahaba kaysa sa 12, at pagkatapos ay maaring 1687 01:19:47,170 --> 01:19:50,850 sa kabila ng hangganan ng na argument, nagkaroon ng ilang mga executable code 1688 01:19:50,850 --> 01:19:55,570 na siya ay sinusubukan na gawin ang isang bagay na masama kasama; pagkatapos na ito, kung ano ang mangyayari, 1689 01:19:55,570 --> 01:19:59,310 Gusto override ang return address ng foo function, 1690 01:19:59,310 --> 01:20:04,370 nagiging sanhi ng pag-andar upang kapag pagbabalik-execute na code. 1691 01:20:04,370 --> 01:20:07,540 At pagkatapos ay masamang bagay na maaaring mangyari. 1692 01:20:07,540 --> 01:20:09,850 Ba ito gumawa ng kahulugan sa lahat ng tao? 1693 01:20:09,850 --> 01:20:12,424 >> At paano natin maprotektahan laban sa mga ito? 1694 01:20:12,424 --> 01:20:13,090 Ang anumang mga mungkahi? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Talaga, sa loob ng potensyal na foo, kung paano 1697 01:20:21,890 --> 01:20:28,294 maaari naming suriin upang tiyakin na na hindi na maaaring mangyari? 1698 01:20:28,294 --> 01:20:33,879 >> Madla: Kung ang laki 12 ay lumampas na, Gusto mong magtalaga ng karagdagang memory? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Suggestion ay, maglaan Lumagpas karagdagang memorya ng laki. 1700 01:20:37,170 --> 01:20:39,800 Talaga, maaari naming gawin ang isang bagay ng isang maraming mas simple kaysa sa na rin. 1701 01:20:39,800 --> 01:20:44,870 Maaari lang namin makuha ang haba ng string mga argument na ipinasok, 1702 01:20:44,870 --> 01:20:48,590 suriin kung iyon ay mas mababa kaysa sa o katumbas 12-- 1703 01:20:48,590 --> 01:20:50,790 na kung saan ay kung ano ang aming nais na ito na dahil hindi namin nais 1704 01:20:50,790 --> 01:20:52,373 ito na lumampas sa hangganan ng aming buffer. 1705 01:20:52,373 --> 01:20:55,690 At pagkatapos ay kung ito ay hindi, kami ay maaaring magtrabaho kasama ang argument. 1706 01:20:55,690 --> 01:21:00,296 At pagkatapos ay kung ito ay, namin talagang gusto sa Yello potensyal na sa user. 1707 01:21:00,296 --> 01:21:01,670 Ngunit ito ay kung paano namin gawin iyon. 1708 01:21:01,670 --> 01:21:02,443 Oo. 1709 01:21:02,443 --> 01:21:04,360 >> Madla: Maaari ninyo ipaliwanag memcpy tunay na mabilis? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, sorry. 1711 01:21:05,443 --> 01:21:06,040 Oo. 1712 01:21:06,040 --> 01:21:11,290 Memcpy tumatagal ng anumang is-- Paumanhin, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy tumatagal ang anumang ay sa bar, ano man ay lumipas 1714 01:21:15,850 --> 01:21:18,050 papunta foo bilang argumento command line. 1715 01:21:18,050 --> 01:21:19,440 Kaya ito ay pagpunta sa tumagal argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 ay tinatawag na bar dito. 1717 01:21:21,420 --> 01:21:24,453 Kaya ito ay pagpunta sa tumagal bar at ito ay pagpunta sa kopyahin ito sa c. 1718 01:21:24,453 --> 01:21:25,402 >> Madla: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: At ito ay pagpunta sa copy-- ikatlong argument lamang tumutukoy 1720 01:21:28,360 --> 01:21:30,601 sa kung magkano ito ay pagpunta sa kopya sa c. 1721 01:21:30,601 --> 01:21:31,142 Madla: Ah. 1722 01:21:31,142 --> 01:21:33,030 Kaya pagkopya ang isang ito ay ang lahat ng mga ito pagkatapos. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Oo, ito ay pagkopya ng lahat ng ito. 1724 01:21:34,310 --> 01:21:34,810 Yep. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Una, siguraduhin na ang mga bar ay hindi natin katumbas ng null dahil ito ay isang pointer. 1727 01:21:41,910 --> 01:21:44,680 Pagkatapos namin makuha ang string haba ng bar. 1728 01:21:44,680 --> 01:21:47,530 Tinitiyak namin na ito ay mas mababa sa o patas sa 12. 1729 01:21:47,530 --> 01:21:50,070 At pagkatapos ay dahil hindi namin Tiniyak, maaari namin talaga 1730 01:21:50,070 --> 01:21:53,122 memcpy at siguraduhin na iyon ang OK. 1731 01:21:53,122 --> 01:21:53,705 May tanong? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Great. 1734 01:21:58,690 --> 01:22:00,400 Mayroon akong dalawang totoo o hindi tanong. 1735 01:22:00,400 --> 01:22:05,470 Maaari sinuman sabihin sa akin kaagad kung ang mga ito ay totoo o hindi? 1736 01:22:05,470 --> 01:22:07,460 Oo, ito ay hindi totoo. 1737 01:22:07,460 --> 01:22:07,960 Mismong. 1738 01:22:07,960 --> 01:22:09,330 Pareho sa mga ito ay hindi totoo. 1739 01:22:09,330 --> 01:22:12,682 Kaya gamit ang isang solong password ay hindi kailanman talagang magandang ideya 1740 01:22:12,682 --> 01:22:14,890 dahil kung may alam ang iyong password, maaari sila lamang 1741 01:22:14,890 --> 01:22:16,260 ma-access ang lahat ng iyong iba pang mga account. 1742 01:22:16,260 --> 01:22:19,260 At pagkatapos icon wala upang matiyak ang seguridad. 1743 01:22:19,260 --> 01:22:24,900 Kami ay karaniwang dapat magmukhang para sa HTTPS sa halip ng HTTP at ang URL. 1744 01:22:24,900 --> 01:22:28,560 >> At ilang iba pang mga uri ng pag-atake na namin na nabanggit, 1745 01:22:28,560 --> 01:22:31,390 na si David ay nabanggit sa magbigay ng panayam, SQL iniksyon atake. 1746 01:22:31,390 --> 01:22:37,310 Nakapagpadala na kami nakita ko na kung do not namin ang Query function CS50 tinitiyak na SQL 1747 01:22:37,310 --> 01:22:39,530 atake ng iniksyon ay hindi maaaring mangyari. 1748 01:22:39,530 --> 01:22:42,640 Ngunit kung hindi namin ay gumagamit ng CS50, quote, magpanipi "sa query," 1749 01:22:42,640 --> 01:22:46,830 Gusto namin na tiyakin na ang input ng user ay hindi tunay na ang ilang mga SQL 1750 01:22:46,830 --> 01:22:49,670 query na magiging sanhi ng lahat aming mga talahanayan na bumaba 1751 01:22:49,670 --> 01:22:54,070 o isang bagay na masama sa mangyayari sa aming database. 1752 01:22:54,070 --> 01:22:56,790 >> Hijack Session ay isa pang uri ng pag-atake 1753 01:22:56,790 --> 01:23:05,940 na ang mangyayari kapag ang ilang mga masamang tao ay gumagamit ng session ilang biktima 1754 01:23:05,940 --> 01:23:08,740 ID-access ang impormasyon sa pag-login. 1755 01:23:08,740 --> 01:23:13,620 Kaya ang isang tunay maliit na halimbawa ng mga iyon ay tulad ng kung kami ay may isang pampublikong computer, 1756 01:23:13,620 --> 01:23:21,120 pagkatapos ay ang masamang tao log in at pagkatapos ay Mayroon cookies na naka-save ang mga ito. 1757 01:23:21,120 --> 01:23:23,380 At cookies ay hindi nagbabago para sa session. 1758 01:23:23,380 --> 01:23:27,620 >> Pagkatapos kami ay ang biktima ay pumunta sa at pagkatapos ay mag-log sa website. 1759 01:23:27,620 --> 01:23:30,290 Ang cookies ay hindi nagbabago para sa isang partikular na sesyon. 1760 01:23:30,290 --> 01:23:33,060 At pagkatapos ay ang biktima lo-log sa ang mga website at pagkatapos ay umalis. 1761 01:23:33,060 --> 01:23:36,190 At pagkatapos ay ang tao na napupunta likod maaaring pagkatapos pa rin gamitin ang kanilang mga session ID 1762 01:23:36,190 --> 01:23:37,430 upang ma-access ang kanilang impormasyon. 1763 01:23:37,430 --> 01:23:40,050 Kaya na ang isang halimbawa ng kung paano na maaaring mangyari. 1764 01:23:40,050 --> 01:23:45,570 >> At pagkatapos ay ako ay hindi mag-alala masyadong marami tungkol sa tiyak na code o anumang 1765 01:23:45,570 --> 01:23:49,270 tulad na na maaaring maging sanhi ito, ngunit may ilang mga uri ng mga ideya kung ano ang 1766 01:23:49,270 --> 01:23:51,400 ang mga variable na kasangkot sa ito ay. 1767 01:23:51,400 --> 01:23:53,897 At pagkatapos ay pagmamanipula header data ay isa pang uri ng pag-atake 1768 01:23:53,897 --> 01:23:55,230 na may David ay uusapang tungkol sa. 1769 01:23:55,230 --> 01:23:59,730 At ito ay tumutukoy lamang sa mga kung ano ang maaaring mangyari kapag 1770 01:23:59,730 --> 01:24:04,300 ang tugon, ang HTTP response sa loob ng aming mga header 1771 01:24:04,300 --> 01:24:05,720 Hindi sanitized maayos. 1772 01:24:05,720 --> 01:24:14,340 >> At alinman sa mga fields-- halimbawa, kung ang isang tao overwrites isa sa mga header 1773 01:24:14,340 --> 01:24:18,860 mga halaga na naglalaman ng anumang higit pa kaysa ano ang dapat nilang contain-- at talagang 1774 01:24:18,860 --> 01:24:22,720 naglalaman ng, halimbawa, ng isang 200 OK status code, at pagkatapos na sila 1775 01:24:22,720 --> 01:24:26,890 maaaring potensyal na gawin malisyosong mga bagay-bagay kapag hindi nila dapat makita. 1776 01:24:26,890 --> 01:24:30,815 Ngunit hindi ko nais mag-alala masyadong marami tungkol sa mga tiyak na code 1777 01:24:30,815 --> 01:24:34,110 na maaaring maging sanhi ito, uri lamang ng pag-unawa 1778 01:24:34,110 --> 01:24:37,290 mga bagay-bagay sa mataas na antas na tulad ng. 1779 01:24:37,290 --> 01:24:39,570 >> Sa tingin ko ito ang lahat ng na kami ay may upang masakop. 1780 01:24:39,570 --> 01:24:40,090 Kahanga-hangang. 1781 01:24:40,090 --> 01:24:43,310 Sinuman ay may anumang mga katanungan sa anumang sa mga bagay na namin sakop? 1782 01:24:43,310 --> 01:24:44,213 Oo. 1783 01:24:44,213 --> 01:24:48,077 >> Madla: Kaya isang uri ng higit logistical tanong. 1784 01:24:48,077 --> 01:24:53,400 Ay ang nilalaman pangunahing nakatuon sa mga bagay pagkatapos quiz 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: So tanong ay, ay ang nilalaman 1786 01:24:55,730 --> 01:24:59,720 pangunahing nakatuon sa mga bagay pagkatapos quiz 1? 1787 01:24:59,720 --> 01:25:06,070 Kaya ang pokus ay sa matapos quiz 1, maliban 1788 01:25:06,070 --> 01:25:10,914 na kailangan namin upang tumutok sa mga bagay sa pset5 at isang pulutong ng mga istruktura ng data 1789 01:25:10,914 --> 01:25:11,580 na sakop namin. 1790 01:25:11,580 --> 01:25:14,300 At hindi namin maaaring sabihin na tayo huwag pansinin ang anumang bagay bago 1791 01:25:14,300 --> 01:25:17,120 na dahil ito ay nagbubuo mula sa mga ito pati na rin. 1792 01:25:17,120 --> 01:25:21,845 >> Kaya tumutok sa mga iyon, plus pset5 materyal tulad ng kasama ang mga listahan ng link, stack, 1793 01:25:21,845 --> 01:25:23,720 queues, at lahat ng bagay na napunta Hannah over. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Kanan. 1795 01:25:24,050 --> 01:25:27,450 Oo, nagpunta kami sa lahat ng mga bagay-bagay C sa pinakadulo simula nang masyadong mabilis. 1796 01:25:27,450 --> 01:25:29,090 Ngunit siguraduhin na suriin na. 1797 01:25:29,090 --> 01:25:32,700 Bumalik at panoorin ang mga pagsusulit 0 review. 1798 01:25:32,700 --> 01:25:36,110 >> Ilang higit pang mga logistical mga tala, lamang habang kami ay may sa iyong pansin. 1799 01:25:36,110 --> 01:25:39,100 Kami ay pagpunta sa may mga oras ng opisina parehong sa Lunes at Martes ng gabi. 1800 01:25:39,100 --> 01:25:41,540 Sila ay pagpunta sa maging sa MD 119. 1801 01:25:41,540 --> 01:25:44,220 Ito ay ang lahat sa website, sa gayon kung hindi mo marinig ang mga ito, walang alalahanin. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 8:30-11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Oo, 8:30-11:00. 1804 01:25:46,260 --> 01:25:46,910 Babalik kami diyan. 1805 01:25:46,910 --> 01:25:48,368 Babalik kami doon upang sagutin ang mga katanungan. 1806 01:25:48,368 --> 01:25:49,480 Ito ay medyo chill at masaya. 1807 01:25:49,480 --> 01:25:53,240 Ikaw guys ay maaaring hilingin sa anumang mga katanungan na mayroon ka sa quiz 1. 1808 01:25:53,240 --> 01:25:55,740 At quiz 1 ay sa Miyerkules, kaya good luck. 1809 01:25:55,740 --> 01:25:59,770 Kung mayroon kang anumang mga katanungan, marahil dumating makipag-usap sa amin dito one-on-one. 1810 01:25:59,770 --> 01:26:00,880 Cool. 1811 01:26:00,880 --> 01:26:01,630 Maraming salamat. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: masyado Salamat, guys. 1813 01:26:02,880 --> 01:26:03,480 >> Madla: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [Palakpakan] 1815 01:26:05,930 --> 01:26:07,530