1 00:00:00,000 --> 00:00:08,070 2 00:00:08,070 --> 00:00:10,430 >> R.J. Aquino: Sabihin lamang makapagsimula. 3 00:00:10,430 --> 00:00:12,310 Kaya ito ay Pagsusulit 1. 4 00:00:12,310 --> 00:00:14,890 Narito ang ilang impormasyon na may mataas na antas. 5 00:00:14,890 --> 00:00:19,915 Ang Tungkol sa pahina para sa pagsusulit ay sa ito URL, hindi na CS50.net, bagaman na 6 00:00:19,915 --> 00:00:21,080 Magkakaroon pa rin gumagana. 7 00:00:21,080 --> 00:00:26,920 Ito ay CS50.harvard.edu/quizzes/2013/1. 8 00:00:26,920 --> 00:00:31,070 Ito ay ang malaki Tungkol sa pahina, na nagsasabi sa iyo kung saan at kung kailan, lalo sa susunod na Miyerkules 9 00:00:31,070 --> 00:00:32,100 sa isang bungkos ng mga kuwarto. 10 00:00:32,100 --> 00:00:36,120 At sa pamamagitan ng susunod na Miyerkules, ako ibig sabihin ng dalawang araw mula ngayon. 11 00:00:36,120 --> 00:00:37,890 Lahat ng impormasyon na ito ay doon. 12 00:00:37,890 --> 00:00:39,110 Ngunit ito ay pinagsama-samang. 13 00:00:39,110 --> 00:00:43,790 >> Kaya lahat ng bagay mula sa unang kalahati ng taon ay potensyal sa pagsusulit, 14 00:00:43,790 --> 00:00:50,780 dahil hindi mo talaga ang magagawa advanced bagay sa C nang walang kung kundisyon at 15 00:00:50,780 --> 00:00:51,920 para sa loop at ang tulad. 16 00:00:51,920 --> 00:00:55,580 Ngunit magkakaroon ng diin sa mga materyal sakop dahil Pagsusulit 0, 17 00:00:55,580 --> 00:00:59,570 nagsisimula sa structs at File Ako / O. Ito ay karaniwang higit pa 18 00:00:59,570 --> 00:01:01,620 mapaghamong kaysa Pagsusulit 0. 19 00:01:01,620 --> 00:01:03,870 Ang average na iskor ay kadalasang mas mababa. 20 00:01:03,870 --> 00:01:05,980 Mag-aral nang husto. 21 00:01:05,980 --> 00:01:09,340 >> Habang naka-aaral, tiyaking gamitin CS50/discuss upang mag-post ang iyong tanong 22 00:01:09,340 --> 00:01:10,830 at basahin ang mga katanungan ng ibang tao. 23 00:01:10,830 --> 00:01:13,550 Kaya kung wala kang anumang mga katanungan, mag-log in at basahin 24 00:01:13,550 --> 00:01:14,580 tanong ng iyong mga kaibigan. 25 00:01:14,580 --> 00:01:16,560 Ang mga ito ay marahil magandang tanong. 26 00:01:16,560 --> 00:01:17,730 At gawin ang mga pagsusulit na kasanayan. 27 00:01:17,730 --> 00:01:20,750 Na-pagbibigay namin ng mga pagsusulit para sa pito o walong taon na ngayon. 28 00:01:20,750 --> 00:01:22,180 Ang mga ito ay lahat ng mga online. 29 00:01:22,180 --> 00:01:25,540 Tanong hinaharap ay pareho sa lumang katanungan. 30 00:01:25,540 --> 00:01:26,550 Iyon ay kung paano namin gumawa ng mga ito. 31 00:01:26,550 --> 00:01:27,740 >> Ang pagsusulit ay hindi pa umiiral. 32 00:01:27,740 --> 00:01:28,670 Wala sa amin na nakita ito. 33 00:01:28,670 --> 00:01:32,496 Ngunit ito ay ganito ang hitsura nakaraang pagsusulit. 34 00:01:32,496 --> 00:01:36,500 Para sa pagsusuri ng session na ito, hindi ito ang isang malawakan listahan ng mga paksa. 35 00:01:36,500 --> 00:01:40,740 Hindi mo maaaring lamang dumalo ito at pagkatapos ay maging perpektong handa na para sa mga pagsusulit. 36 00:01:40,740 --> 00:01:43,330 Kung hindi man, hindi ito magiging na karami ng isang pagsusulit. 37 00:01:43,330 --> 00:01:46,270 At ito ay din hindi kinakailangang ang lahat ng kailangan mong malaman tungkol sa anumang 38 00:01:46,270 --> 00:01:46,970 ibinigay na paksa. 39 00:01:46,970 --> 00:01:50,520 Ito ay sinadya upang ilantad ka sa mga bagay na sakop namin, ipaalala sa iyo kung ano ang aming 40 00:01:50,520 --> 00:01:53,070 sakop, at ang paraan sa na sakop namin ito. 41 00:01:53,070 --> 00:01:57,030 Ngunit kailangan mong pumunta sa karagdagang at mas malalim na pag-aaral kapag mong i-double-check 42 00:01:57,030 --> 00:02:00,230 na alam mo ang lahat ng bagay tungkol sa anumang naibigay na topic at na iyong napunan 43 00:02:00,230 --> 00:02:03,320 lahat ang mga sulok na naging saklaw sa panayam. 44 00:02:03,320 --> 00:02:07,980 >> Ang mga tala sa pagsusulit sabihin sa iyo upang pumunta sa tagasulat ng mga tala, sa panonood ng panayam video. 45 00:02:07,980 --> 00:02:10,155 Iyon ay isang mahusay na paraan upang tiyakin na ikaw ay sakop lahat ng iyong mga base. 46 00:02:10,155 --> 00:02:12,670 47 00:02:12,670 --> 00:02:17,340 Kaya pagsisimula, kapag ginawa ko ang mga mga slide, sinubukan kong ilagay kung saan nahanap ko 48 00:02:17,340 --> 00:02:18,350 impormasyon. 49 00:02:18,350 --> 00:02:22,890 Kaya para sa File I / O, halimbawa, Linggo 7, Lunes ng panayam, at ang nai-post 50 00:02:22,890 --> 00:02:27,960 Seksyon 6 at Problema Itakda ang lahat ng mayroon impormasyon tungkol sa File ako / O. Gumawa ako 51 00:02:27,960 --> 00:02:28,840 ito para sa bawat paksa. 52 00:02:28,840 --> 00:02:33,010 Kaya mga pamagat slide maaari maging kapaki-pakinabang sa iyo. 53 00:02:33,010 --> 00:02:38,950 >> Kaya dito mayroon kaming File ako / O. Tandaan, sa Problema Itakda 5, ginamit namin fopen, fclose, 54 00:02:38,950 --> 00:02:41,210 fwrite, fread, at fseek. 55 00:02:41,210 --> 00:02:48,090 Ang pagkakaroon nakuhang muli 30ish ang mga JPEG na at pagkakaroon ng laki at messed sa 56 00:02:48,090 --> 00:02:50,320 bitmaps, dapat ay medyo pamilyar may mga function 57 00:02:50,320 --> 00:02:51,830 at kung paano sila gumagana. 58 00:02:51,830 --> 00:02:54,420 Kung ikaw ay hindi na pamilyar, Talagang suriin ang mga ito. 59 00:02:54,420 --> 00:02:56,860 At tiyakin sa iyo na maunawaan kung ano ang ang iba't ibang mga argumento ay, 60 00:02:56,860 --> 00:02:58,260 kapag sila ay ginamit. 61 00:02:58,260 --> 00:03:03,620 >> Ngunit ang mga karaniwang may kaugnayan sa file bug maaaring hilingin sa iyo ang tungkol sa - 62 00:03:03,620 --> 00:03:07,270 well, kung nakalimutan upang suriin kung fopen aktwal na nagtrabaho bago ka pumunta sa 63 00:03:07,270 --> 00:03:08,350 baguhin ang isang file. 64 00:03:08,350 --> 00:03:09,760 Na maaaring maging masama. 65 00:03:09,760 --> 00:03:13,560 Kung nag-nakalimutan upang fclose isang file na iyong fopened, na katulad o kapareho sa 66 00:03:13,560 --> 00:03:14,400 isang tumagas memory. 67 00:03:14,400 --> 00:03:15,980 Iyan ay medyo masama. 68 00:03:15,980 --> 00:03:18,670 At forgetting upang suriin kung ikaw ay Naabot ang dulo ng file bago ka 69 00:03:18,670 --> 00:03:19,790 simulan magsulat dito. 70 00:03:19,790 --> 00:03:22,320 >> Kaya kung sabihin mo, hey, ako sa sa dulo ng file. 71 00:03:22,320 --> 00:03:23,750 Bigyan mo ako ng 5 higit pang mga byte. 72 00:03:23,750 --> 00:03:27,370 Well, na marahil hindi pagpunta sa ehersisyo ang paraang iyong inaasahan. 73 00:03:27,370 --> 00:03:30,930 Iyon lang talaga ito para sa File I / O, dahil ginawa namin kaya magkano ng ito 74 00:03:30,930 --> 00:03:32,300 may-set ang problema. 75 00:03:32,300 --> 00:03:36,000 Kaya kung nauunawaan mo kung ano ang nangyayari sa Problema sa Set 5, tandaan ang bitmats 76 00:03:36,000 --> 00:03:40,090 at ang mga JPEG, pagkatapos ikaw ay marahil lahat set para sa File ako / O. Kung iyon nang kaunti 77 00:03:40,090 --> 00:03:44,770 malabo, suriin ang talagang problema na itakda at ang kaugnay na materyal. 78 00:03:44,770 --> 00:03:51,110 >> Structs ang mga paksang iyon ay sa linya sa pagitan ng Pagsusulit 0 at Pagsusulit 1. 79 00:03:51,110 --> 00:03:53,090 Ang ibig hindi pa masyadong gawin ang mga hiwa para sa Pagsusulit 0. 80 00:03:53,090 --> 00:03:57,040 Kaya makikita talagang maging sila sa Pagsusulit 1, Linggo 7, Lunes. 81 00:03:57,040 --> 00:03:58,150 Ano ang isang struct? 82 00:03:58,150 --> 00:04:00,250 Narito nagpapakita kami ng isang struct. 83 00:04:00,250 --> 00:04:03,140 Ito ay tulad ng isang bagong uri. 84 00:04:03,140 --> 00:04:07,940 Ito ay tulad ng isang lalagyan para sa maramihang mga patlang. 85 00:04:07,940 --> 00:04:12,970 >> Sa kasong ito, ipinahayag kami ng struct mag-aaral na may dalawang mga patlang - 86 00:04:12,970 --> 00:04:17,750 isang string na aming pagtawag sa pangalan at isang int na aming pagtawag edad. 87 00:04:17,750 --> 00:04:21,450 Kaya kapag pumasa ako sa paligid mga mag-aaral o ako baguhin ang mga mag-aaral, magagawa ko magagawang 88 00:04:21,450 --> 00:04:24,430 access ang kanilang pangalan at ang kanilang mga edad. 89 00:04:24,430 --> 00:04:26,670 Tingnan natin ang ilang code para na Hayaan. 90 00:04:26,670 --> 00:04:29,090 Narito makita namin na na-ipinahayag ko isang mag-aaral s, tulad lamang ng 91 00:04:29,090 --> 00:04:30,300 Ipinahahayag ko ang anumang mga variable - 92 00:04:30,300 --> 00:04:32,430 int x, int y, at iba pa. 93 00:04:32,430 --> 00:04:34,180 >> Narito mag-aaral s. 94 00:04:34,180 --> 00:04:37,370 Nagsisimula niya na may walang anuman sa kanyang mga patlang. 95 00:04:37,370 --> 00:04:38,240 Kaya ipaalam set ng mga ito. 96 00:04:38,240 --> 00:04:40,681 Ikaw ang magtatakda ng mga patlang ng isang struct may tuldok. 97 00:04:40,681 --> 00:04:43,780 Kaya ang sinabi ko dito na s.name = RJ. 98 00:04:43,780 --> 00:04:46,470 At s.age = 21. 99 00:04:46,470 --> 00:04:48,500 Maaari mo ring i-update ang mga patlang sa parehong paraan na nais mong i-update 100 00:04:48,500 --> 00:04:49,550 ang halaga ng isang variable. 101 00:04:49,550 --> 00:04:53,270 Kaya gusto kong baguhin ang aking pangalan mula RJ may walang mga tuldok upang R.J. ang pagbaybay sa 102 00:04:53,270 --> 00:04:54,540 tamang paraan. 103 00:04:54,540 --> 00:04:58,890 Ito ay s.name = RJ, parehong tulad ng sinabi namin ito orihinal. 104 00:04:58,890 --> 00:05:00,030 At pagkatapos ay maaari mong ma-access ang mga ito. 105 00:05:00,030 --> 00:05:00,930 >> Kaya iyong itinakda namin ang mga ito. 106 00:05:00,930 --> 00:05:01,840 Na-update namin ang mga ito. 107 00:05:01,840 --> 00:05:03,890 Maaari mo ring i-access ang mga ito sa pinakadulo parehong paraan. 108 00:05:03,890 --> 00:05:09,330 Kaya dito, ako nagpi-print out R.J. Ay 21 taong gulang. 109 00:05:09,330 --> 00:05:14,700 At ako sa pag-access sa mga halaga iyon may s.name at s.age. 110 00:05:14,700 --> 00:05:17,040 Kaya na-a-access structs sa pagtatanda na tuldok. 111 00:05:17,040 --> 00:05:17,850 Yep, tanong? 112 00:05:17,850 --> 00:05:21,176 >> Madla: Mayroon bang isang dahilan sa ang nakaraang slide na hindi mo ilalagay 113 00:05:21,176 --> 00:05:24,848 mag-aaral sa itaas na linya, tulad ng typedef struct mag-aaral at pagkatapos ay 114 00:05:24,848 --> 00:05:25,840 mag-aaral sa dulo? 115 00:05:25,840 --> 00:05:29,040 >> R.J. Aquino: Kaya ang tanong ay, sa slide na ito, karaniwang namin na iyong nakita 116 00:05:29,040 --> 00:05:32,400 typedef struct node at pagkatapos ay ang mga patlang ng struct at 117 00:05:32,400 --> 00:05:34,250 pagkatapos ay ang salita na node. 118 00:05:34,250 --> 00:05:37,790 At kung paano dumating dito hindi ko sabihin, typedef struct mag-aaral at pagkatapos ay ang 119 00:05:37,790 --> 00:05:39,820 mga patlang ng struct at pagkatapos ay mag-aaral? 120 00:05:39,820 --> 00:05:44,310 Ang dahilan dito ay na hindi ko na kailangang i-access ito sa loob ng struct. 121 00:05:44,310 --> 00:05:46,270 Kaya ito ay ang OK upang iwanan ito nang walang isang pangalan. 122 00:05:46,270 --> 00:05:49,210 Maaari ko bang iwan lamang ito bilang isang hindi nakikilalang struct. 123 00:05:49,210 --> 00:05:53,130 >> Ang dahilan kung bakit ginagawa namin ito para sa naka-link na mga listahan at mga bagay ay dahil kailangan mo ng loob 124 00:05:53,130 --> 00:05:55,360 na banggitin ang isang struct node bituin. 125 00:05:55,360 --> 00:05:58,220 Kaya ang struct ay may upang magkaroon ng isang pangalan, sa gayon ay maaari mong i-access ito sa ibang pagkakataon. 126 00:05:58,220 --> 00:05:59,540 Ito ay isang menor de edad ang detalye. 127 00:05:59,540 --> 00:06:04,750 Ngunit makikita mo karaniwang makita typedef struct kulot tirante kung hindi mo kailangang 128 00:06:04,750 --> 00:06:08,720 ang pangalan at typedef struct ilang mga pangalan sinundan ng kulot tirante kung nasain mo 129 00:06:08,720 --> 00:06:09,520 Kailangan ang pangalan. 130 00:06:09,520 --> 00:06:12,070 Kaya na ay isang mahusay na tanong. 131 00:06:12,070 --> 00:06:17,000 >> At sa puntong iyon, may posibilidad namin upang baguhin structs at pumasa sa paligid structs sa pamamagitan ng 132 00:06:17,000 --> 00:06:18,680 isangguni, hindi sa pamamagitan ng halaga. 133 00:06:18,680 --> 00:06:21,940 Kaya makikita lamang pumasa kami sa paligid ng mga payo sa structs sa halip ng pagpasa sa paligid ng 134 00:06:21,940 --> 00:06:23,150 structs kanilang mga sarili. 135 00:06:23,150 --> 00:06:28,050 Kaya ka napaka madalas na pagpunta sa maging ginagamit, sa kasong ito, ang mag-aaral * o 136 00:06:28,050 --> 00:06:34,150 struct node * o node * sa halip out mga mag-aaral o mga node. 137 00:06:34,150 --> 00:06:39,350 Kaya dito, na sinabi ko, OK, ptr ang variable ay magiging ang address ng s. 138 00:06:39,350 --> 00:06:45,570 Ito ay pagpunta sa maging ang pointer upang ang mag-aaral R.J. 139 00:06:45,570 --> 00:06:48,965 >> Kaya maaari naming makuha sa mga patlang ang parehong bilang makakakuha tayo ng kahit ano. 140 00:06:48,965 --> 00:06:51,460 Una, isangguni ID ang pointer upang makuha ang struct. 141 00:06:51,460 --> 00:06:55,530 Iyan ay * ptr at pagkatapos ay isang tuldok at pagkatapos ng edad. 142 00:06:55,530 --> 00:06:58,790 Kaya upang ma-access ang patlang, at na-update ko ito ngayon sa 22, dahil, sabihin 143 00:06:58,790 --> 00:07:00,860 sabihin nating, ito ay ang aking kaarawan. 144 00:07:00,860 --> 00:07:03,990 Mayroong isang shortcut sa syntax gamit ang mga arrow dito. 145 00:07:03,990 --> 00:07:07,060 Kaya ptr arrow edad lamang katulad ng * ptr.age. 146 00:07:07,060 --> 00:07:10,150 147 00:07:10,150 --> 00:07:11,550 Ngayon, na may isang bagay magkakaroon ka ng kabisaduhin at tandaan. 148 00:07:11,550 --> 00:07:15,010 >> Ginamit mo ito ng maraming sa pset6, ang speller pset. 149 00:07:15,010 --> 00:07:18,350 Ngunit ito ay talagang kung ano ang nangyayari sa ilalim ng hood. 150 00:07:18,350 --> 00:07:20,500 Ito ay dereferencing ang pointer at pagkatapos ay ma-access ito. 151 00:07:20,500 --> 00:07:21,432 Tanong? 152 00:07:21,432 --> 00:07:22,682 >> Madla: [hindi marinig]. 153 00:07:22,682 --> 00:07:25,860 154 00:07:25,860 --> 00:07:28,060 >> R.J. Aquino: Kaya bakit ay namin ang paggamit ng mga payo bilang structs sa halip na ang 155 00:07:28,060 --> 00:07:29,500 structs kanilang sarili? 156 00:07:29,500 --> 00:07:33,740 Ang dahilan dito ay magiging kung ikaw ay pagpasa isang struct sa isang function, marahil 157 00:07:33,740 --> 00:07:36,900 nais upang pumasa sa paligid lamang ng 4 o kaya bytes na kumakatawan sa pointer, bilang 158 00:07:36,900 --> 00:07:40,375 kabaligtaran sa mga potensyal na 30 o 40 bytes na ang struct. 159 00:07:40,375 --> 00:07:44,410 Kaya ang pagpasa ng isang bagay sa isang function ay mas madali kapag ang bagay 160 00:07:44,410 --> 00:07:48,230 ay mas maliit sa maikling. 161 00:07:48,230 --> 00:07:49,074 Tanong? 162 00:07:49,074 --> 00:07:53,026 >> Madla: maaaring na nabanggit mo ito sa simula, ngunit ang naroon 163 00:07:53,026 --> 00:07:56,000 iba pang mga slide up sa [hindi marinig]? 164 00:07:56,000 --> 00:07:58,960 >> R.J. Aquino: Ang mga slide ay magiging hanggang matapos ang pagsusuri session. 165 00:07:58,960 --> 00:08:00,210 Magpo-post kami sa kanila sa website. 166 00:08:00,210 --> 00:08:02,450 167 00:08:02,450 --> 00:08:06,870 Kaya gumagalaw sa at paglipat sa bahagyang mas mabilis, kami ay pagpunta sa makipag-usap tungkol sa data 168 00:08:06,870 --> 00:08:07,350 mga istraktura. 169 00:08:07,350 --> 00:08:08,040 Maraming. 170 00:08:08,040 --> 00:08:10,080 Natatakpan kami ng grupo ng mga ito. 171 00:08:10,080 --> 00:08:12,500 Narito kung ano ang dapat mong maunawaan tungkol sa istraktura ng data. 172 00:08:12,500 --> 00:08:15,590 >> Dapat mo talagang maunawaan sa isang mataas na antas kung ano ang bawat istraktura ay. 173 00:08:15,590 --> 00:08:21,190 Maaari mong ipaliwanag sa Ingles sa iyong kaibigan na hindi nakuha CS50 paano 174 00:08:21,190 --> 00:08:25,580 kami ay aayos ng aming data at kung bakit kami ay maaaring gumagamit ng isang bagay sa paraang ito? 175 00:08:25,580 --> 00:08:26,990 Iyon bagay isa. 176 00:08:26,990 --> 00:08:29,650 Bagay dalawa, naiintindihan ang pagpapatupad. 177 00:08:29,650 --> 00:08:34,270 Kaya maunawaan kung paano gamitin ang mga bagay na ito sa C. At ipapakita namin ay pagpunta sa paglipas ng ito. 178 00:08:34,270 --> 00:08:39,030 >> At pagkatapos ng tatlong bagay ay alam ang magpatakbo ng mga oras at ang mga limitasyon ng mga 179 00:08:39,030 --> 00:08:40,470 iba't-ibang mga istraktura na iyong ginagamit. 180 00:08:40,470 --> 00:08:44,059 Kaya maunawaan kung bakit gusto mong gamitin ang isang sa halip ng isang array hash table. 181 00:08:44,059 --> 00:08:49,570 Maunawaan kung paano mabilis, sa average, access ng isang hash talahanayan ay. 182 00:08:49,570 --> 00:08:54,010 Intindihin kung ano ang pagpapatakbo ay mabilis sa naka-link na listahan ngunit mabagal sa array at 183 00:08:54,010 --> 00:08:56,080 kabaligtaran. 184 00:08:56,080 --> 00:08:59,780 Kaya na maunawaan na, kailangan mong mag- Nauunawaan Big-O notasyon upang malaman lamang 185 00:08:59,780 --> 00:09:01,310 kung paano makipag-usap tungkol sa mga ito mga uri ng mga bagay. 186 00:09:01,310 --> 00:09:02,700 At muli naming makipag-usap tungkol sa na. 187 00:09:02,700 --> 00:09:06,040 >> Kaya unang bagay, naka-link na mga listahan. 188 00:09:06,040 --> 00:09:07,770 Narito ang isang larawan na may mataas na antas ng isang naka-link na listahan. 189 00:09:07,770 --> 00:09:08,830 Ipakita namin ito sa klase. 190 00:09:08,830 --> 00:09:11,670 Karaniwan naming magkaroon ng 10 mga tao nakatayo sa entablado. 191 00:09:11,670 --> 00:09:16,790 Ngunit kami ay isang serye ng mga node kung saan ang bawat na node ay may ilang mga halaga at isang pointer 192 00:09:16,790 --> 00:09:18,610 sa kanyang susunod na halaga. 193 00:09:18,610 --> 00:09:21,730 Kaya upang makakuha ng mula sa isang node sa susunod, mo sabihin lang, ibigay sa akin ang susunod na node. 194 00:09:21,730 --> 00:09:22,530 Mayroon kang na node. 195 00:09:22,530 --> 00:09:23,770 Bigyan mo ako ng susunod na node. 196 00:09:23,770 --> 00:09:24,400 Mayroon kang na node. 197 00:09:24,400 --> 00:09:28,790 Bigyan mo ako ng susunod na node at iba pa hanggang sa walang node kaliwa. 198 00:09:28,790 --> 00:09:31,850 >> Kaya patuloy na makipag-usap tungkol sa ito sa isang mataas na antas. 199 00:09:31,850 --> 00:09:34,100 Ito ay mas madali upang magpasok ng mga bagay sa isang naka-link na listahan. 200 00:09:34,100 --> 00:09:36,010 Kung hindi mo na nagmamalasakit sa pagkakasunud-sunod, pwede mong ilagay lang ito 201 00:09:36,010 --> 00:09:36,840 karapatan sa simula. 202 00:09:36,840 --> 00:09:38,520 Iyon ay pare-pareho ang panahon. 203 00:09:38,520 --> 00:09:39,900 Pero mahirap na makahanap ng isang halaga. 204 00:09:39,900 --> 00:09:43,060 Kung sinusubukan mong hilingin, ay pitong sa aking listahan? 205 00:09:43,060 --> 00:09:44,740 Mayroon kang upang pumunta sa pamamagitan ng bawat solong halaga. 206 00:09:44,740 --> 00:09:45,680 Ito ba pitong? 207 00:09:45,680 --> 00:09:46,610 Ito ba pitong? 208 00:09:46,610 --> 00:09:47,770 Ito ba pitong? 209 00:09:47,770 --> 00:09:48,690 Ito ba pitong? 210 00:09:48,690 --> 00:09:49,830 Nang paulit-ulit. 211 00:09:49,830 --> 00:09:51,520 At iyon ang O (n). 212 00:09:51,520 --> 00:09:53,800 Kaya kapag-aaral para sa pagsusulit, ihambing ito sa array. 213 00:09:53,800 --> 00:09:57,010 214 00:09:57,010 --> 00:09:58,220 >> OK ba iyon? 215 00:09:58,220 --> 00:09:59,220 Ang mga ilaw nagpunta dim. 216 00:09:59,220 --> 00:10:01,110 OK. 217 00:10:01,110 --> 00:10:02,400 Kailan mas mahusay na naka-link na listahan? 218 00:10:02,400 --> 00:10:04,640 Kailan mas mahusay na isang array? 219 00:10:04,640 --> 00:10:06,670 Kaya tingnan natin ang ilang code ipaalam. 220 00:10:06,670 --> 00:10:08,960 Narito ang isang potensyal na node. 221 00:10:08,960 --> 00:10:09,770 Ito ay isang struct. 222 00:10:09,770 --> 00:10:12,220 Ito ay may isang int n, na Magiging aming halaga. 223 00:10:12,220 --> 00:10:17,780 At ito ay may struct node * susunod, na ay ang aming pointer sa susunod na node. 224 00:10:17,780 --> 00:10:23,040 Kaya dito, maaari naming makita na ang nangyari namin upang pinagsikapan ng isang int sa aming node. 225 00:10:23,040 --> 00:10:27,850 Ngunit kung ito ay isang naka-link na listahan ng pansamantalang trabaho bituin o isang naka-link na listahan ng mga kamay, namin 226 00:10:27,850 --> 00:10:28,820 lahat-lahat ay maaaring gawin na masyadong. 227 00:10:28,820 --> 00:10:33,110 >> Tandaan sa pset6, marahil ay nagkaroon ng isang naka-link na listahan ng mga pansamantalang trabaho bituin o lamang 228 00:10:33,110 --> 00:10:34,360 static pansamantalang trabaho array. 229 00:10:34,360 --> 00:10:37,370 230 00:10:37,370 --> 00:10:39,040 Tingnan natin dito sa isang operasyon Hayaan. 231 00:10:39,040 --> 00:10:43,570 Kaya gusto namin upang ipasok ang bagong n sa aming listahan na naka-link. 232 00:10:43,570 --> 00:10:48,940 Simulan out kami sa isang ulo pointer na isang pointer sa node na may 233 00:10:48,940 --> 00:10:53,460 halaga ng n at ng susunod ng isang pointer na mga punto upang ito node ay isang halaga ng 234 00:10:53,460 --> 00:10:57,760 n at ng susunod ng null, dahil ito ang huling node. 235 00:10:57,760 --> 00:11:00,440 Kaya sa mga interes ng oras, ay ako ilagay ang lahat ng code sa screen. 236 00:11:00,440 --> 00:11:03,130 At babagtasin namin ito ng ilang linya sa isang pagkakataon. 237 00:11:03,130 --> 00:11:05,790 >> Kaya narito ang code. 238 00:11:05,790 --> 00:11:07,560 Umaasa ako na ito ay nababasa. 239 00:11:07,560 --> 00:11:11,275 Ang unang bagay na aming ginagawa ay malloc kami ng isang bagong node. 240 00:11:11,275 --> 00:11:15,105 Kaya ito ay gumawa ng isang pointer sa isang bagong node na Mukhang hindi ito ay may-set anumang bagay 241 00:11:15,105 --> 00:11:16,450 hanggang sa ito pa. 242 00:11:16,450 --> 00:11:19,580 Nagsusuri kami upang tiyakin na ang bagong node ay hindi null. 243 00:11:19,580 --> 00:11:22,220 Kung hindi man, kami ay upang bigyan up. 244 00:11:22,220 --> 00:11:27,680 Kaya nagki-check na, na namin ngayon itakda ang mga halaga sa node. 245 00:11:27,680 --> 00:11:31,520 Kaya binuo namin ang bagong n sa aming n field. 246 00:11:31,520 --> 00:11:36,050 At itinakda namin ang susunod na pointer upang tumuro sa ang orihinal na ulo, kaya na kaya namin 247 00:11:36,050 --> 00:11:38,900 ngayon na ipinasok na ito node sa aming listahan. 248 00:11:38,900 --> 00:11:44,600 >> Panghuli, mayroon kaming mga global ulo punto sa aming bagong node, upang kung kami ay sa 249 00:11:44,600 --> 00:11:50,300 simulan sa ulo, gusto naming maging sa ito sa halip ng mga bagong unang node 250 00:11:50,300 --> 00:11:51,560 ang lumang unang node. 251 00:11:51,560 --> 00:11:55,320 At kapag lumabas ito function, ang wala na variable bagong node, 252 00:11:55,320 --> 00:11:57,130 dahil ito ay lokal na pag-andar. 253 00:11:57,130 --> 00:11:59,770 Kaya ito ay ang estado ng mundo. 254 00:11:59,770 --> 00:12:03,570 Ang aming global ulo nagtuturo sa aming bagong unang node, na nagtuturo sa aming 255 00:12:03,570 --> 00:12:06,346 orihinal na unang node, na mga punto sa node matapos na. 256 00:12:06,346 --> 00:12:09,790 >> Iyon ay pagpapasok. 257 00:12:09,790 --> 00:12:12,150 Umaasa ako na noon ay relatibong prangka upang sundin. 258 00:12:12,150 --> 00:12:14,300 Kapag may pagdududa, gumuhit ng larawan. 259 00:12:14,300 --> 00:12:17,820 Kaya mahanap ko na pakikipag-usap tungkol sa naka-link na mga listahan at pagtingin sa 260 00:12:17,820 --> 00:12:19,870 code ay napaka hindi kapaki-pakinabang. 261 00:12:19,870 --> 00:12:23,790 Sapagkat pagtingin sa isang larawan ng isang naka-link na Pinapayagan ka ng listahan sa akin na sa tingin, oh, kaya 262 00:12:23,790 --> 00:12:24,970 Mayroon akong na ito node dito. 263 00:12:24,970 --> 00:12:28,980 Ngunit kung i-update ko na ang pointer, ito ay nagtatapos up disconnect. 264 00:12:28,980 --> 00:12:34,340 At nakalimutan ko na kung saan ang node Dumadaan. 265 00:12:34,340 --> 00:12:35,390 At ang code lumabas. 266 00:12:35,390 --> 00:12:37,830 At mayroon kang maramihang mga node na pagkakakonekta. 267 00:12:37,830 --> 00:12:39,970 At hindi ka humantong sa may ang listahan na gusto mo. 268 00:12:39,970 --> 00:12:43,320 >> Kaya kung gumuhit ka sa larawan at gawin ito hakbang sa pamamagitan ng hakbang na ito, sana, makikita mo ang 269 00:12:43,320 --> 00:12:46,840 ang tamang pagkakasunud-sunod ng mga bagay sa mga tuntunin ng ina-update ang mga payo upang tiyaking 270 00:12:46,840 --> 00:12:48,830 na ang listahan ay sama-sama. 271 00:12:48,830 --> 00:12:51,240 Magsingit ay medyo prangka. 272 00:12:51,240 --> 00:12:55,210 Ang isang mas komplikado ay magiging pagpapasok sa isang nakaayos na listahan. 273 00:12:55,210 --> 00:12:59,980 Ang isang mas kumplikadong function ay tanggalin at hanapin, kaya naghahanap sa pamamagitan ng isang listahan sa 274 00:12:59,980 --> 00:13:03,030 makita kung ang isang bagay ay doon. 275 00:13:03,030 --> 00:13:07,220 Marahil mo ginawa ito sa pset6 kapag nag- Nakakuha in sa iyong talahanayan ng hash at sinabi mo, 276 00:13:07,220 --> 00:13:10,460 mahusay, ay ang salita mansanas sa aking listahan ng naka-link? 277 00:13:10,460 --> 00:13:11,440 >> Kaya maaari mo pa nagagawa ito. 278 00:13:11,440 --> 00:13:15,530 Ngunit talagang, i-refresh ang iyong memorya at subukan upang reimplement hanapin at 279 00:13:15,530 --> 00:13:19,150 reimplement tanggalin para sa isang naka-link na listahan. 280 00:13:19,150 --> 00:13:22,850 Kasayahan gilid tala, mayroong doble na naka-link din mga listahan, kung saan mayroon kang 281 00:13:22,850 --> 00:13:27,490 mga payo na tumuturo sa parehong pasulong at paatras, nang sa gayon ay maaari kang pumunta sa 282 00:13:27,490 --> 00:13:29,270 susunod na node at sa nakaraang node. 283 00:13:29,270 --> 00:13:33,860 At nagkaroon ng tanong sa ng nakaraang taon pagsusulit ng uri iyon, pinag-uusapan 284 00:13:33,860 --> 00:13:36,190 tungkol sa doble na naka-link listahan. 285 00:13:36,190 --> 00:13:40,070 >> Ngayon, na ang isang istraktura na ikaw ay medyo pamilyar sa, dahil ang pinaka- 286 00:13:40,070 --> 00:13:42,520 ng marahil ay ginagamit ang mga ito sa pset6. 287 00:13:42,520 --> 00:13:45,680 Narito ang isang bagay na medyo mas pamilyar na. 288 00:13:45,680 --> 00:13:51,020 Bilang isang bahagi tala, sa tingin ko na Pagsusulit 1 ay lalo na ang mahirap kaysa sa Pagsusulit 0, dahil 289 00:13:51,020 --> 00:13:54,600 ang mga bagay na ginagawa mo, mo hindi pa tapos bilang magkano. 290 00:13:54,600 --> 00:13:58,100 Upang ilagay ang isa pang paraan, para sa Pagsusulit 0, ikaw ay isinulat ng maraming C. At kami 291 00:13:58,100 --> 00:13:58,880 tinanong ka tungkol sa C. 292 00:13:58,880 --> 00:14:02,310 >> Para sa Pagsusulit 1, kami ay pagpunta sa hilingin sa iyo ang tungkol sa PHP at JavaScript, na kung saan mo 293 00:14:02,310 --> 00:14:03,490 hindi nakasulat bilang magkano ng. 294 00:14:03,490 --> 00:14:07,590 Kami ay pagpunta sa hilingin sa iyo ang tungkol sa C-code na hindi mo pa nakasulat bilang magkano ng, 295 00:14:07,590 --> 00:14:09,130 ang advanced C bagay-bagay. 296 00:14:09,130 --> 00:14:11,520 Kaya talagang, pagsasanay ang mga bagay na namin usapan tungkol sa panayam na 297 00:14:11,520 --> 00:14:15,260 ay hindi kinakailangang gawin sa ang problema set. 298 00:14:15,260 --> 00:14:17,870 >> Nagsasalita ng kung saan, hindi mo pa nakasulat isang stack sa isang problema sa set. 299 00:14:17,870 --> 00:14:19,610 Subalit sa panayam. 300 00:14:19,610 --> 00:14:22,530 Narito ang mataas na antas na larawan ng mga stack na ipinapakita namin sa bawat taon. 301 00:14:22,530 --> 00:14:26,180 Ito ay ang stack ng mga trays sa ang Mather dining hall. 302 00:14:26,180 --> 00:14:30,570 Sa isang mataas na antas, mga stack ay isang huling sa, una out istraktura ng data. 303 00:14:30,570 --> 00:14:32,040 Iyon ay nangangahulugang ka ng pagpunta upang ilagay ang mga bagay sa - 304 00:14:32,040 --> 00:14:36,400 1, 3, 7, 12, 14, negatibong 0. 305 00:14:36,400 --> 00:14:39,180 Ang isang bagay na hindi ko maaaring magkaroon ng Sinabi - negatibong 3, 0. 306 00:14:39,180 --> 00:14:40,250 Ilagay mo ang lahat ng mga bagay na ito in 307 00:14:40,250 --> 00:14:42,940 At ang huli ilagay mo sa ay ang unang isa na pupuntahan dumating out. 308 00:14:42,940 --> 00:14:44,170 >> Kaya mayroon kang dalawang mga operasyon - 309 00:14:44,170 --> 00:14:45,260 itulak at mga pop. 310 00:14:45,260 --> 00:14:49,180 Ang lahat ng mga paglalagay sa na ako ay gesturing tulad nito ay push. 311 00:14:49,180 --> 00:14:52,020 At pagkatapos ay kapag naabot ko in upang mang-agaw isang bagay o umabot sa tuktok upang grab 312 00:14:52,020 --> 00:14:53,940 isang bagay, na pop. 313 00:14:53,940 --> 00:14:55,540 Kaya kami ay pagpunta sa ipatupad ang mga stack. 314 00:14:55,540 --> 00:14:57,870 At ipinakita namin ang mga ito sa panayam gamit ang array. 315 00:14:57,870 --> 00:14:59,550 Ngunit maaari mong gawin ang mga ito gamit ang naka-link na mga listahan. 316 00:14:59,550 --> 00:15:01,770 Ang isang stack ay isang haka-haka data istraktura, hindi gusto ang isang 317 00:15:01,770 --> 00:15:03,760 pagpapatupad na tukoy sa isa. 318 00:15:03,760 --> 00:15:06,420 >> Kaya ano ang magiging na mukhang? 319 00:15:06,420 --> 00:15:07,970 Hitsura nito ay magiging uri ng tulad nito. 320 00:15:07,970 --> 00:15:10,840 Gusto mong magkaroon ng isang sukat integer. 321 00:15:10,840 --> 00:15:16,000 At gusto mong magkaroon ng isang hanay ng mga halaga na kami ay pagtawag trays, dahil iyon ang 322 00:15:16,000 --> 00:15:18,570 ano ang larawan ay para sa amin - int trays - 323 00:15:18,570 --> 00:15:21,740 at pagkatapos ng ilang maximum na kapasidad. 324 00:15:21,740 --> 00:15:27,100 Kaya ano ang magiging hitsura itulak tulad? 325 00:15:27,100 --> 00:15:33,250 Well, kung kami ay may isang stack s, pagkatapos ay i-itulak isang bagay papunta s, gusto naming makuha 326 00:15:33,250 --> 00:15:34,620 ang laki ng s. 327 00:15:34,620 --> 00:15:42,270 At iyon ay magiging ang susunod na bukas na puwesto sa aming mga array. 328 00:15:42,270 --> 00:15:50,510 Kaya kung mayroon kaming tatlong bagay sa aming stack, pagkatapos trays 3 ay magiging ang susunod na 329 00:15:50,510 --> 00:15:54,290 bukas na lugar, dahil 0, 1, at 2 naka-napuno up. 330 00:15:54,290 --> 00:16:01,790 >> Kaya binuo namin ang halaga sa s.trays [s.size], sa ikatlong puwesto. 331 00:16:01,790 --> 00:16:06,290 At pagkatapos ay dinagdagan namin s.size sasabihin, hey, nagkaroon kami ng tatlong bagay bago. 332 00:16:06,290 --> 00:16:07,400 Ngayon, mayroon kaming apat. 333 00:16:07,400 --> 00:16:10,180 Kaya sa susunod na itulak mo, handa ka pagpunta sa ilagay ang isang bagay sa 4. 334 00:16:10,180 --> 00:16:15,560 O kaya naman sa susunod na pop mo, ka ng pagpunta upang tumingin sa 3 sa halip ng 4 o kahit ano. 335 00:16:15,560 --> 00:16:18,000 At pagkatapos ay babalik kami sa totoo sabihin nating, hey, Nagtagumpay namin. 336 00:16:18,000 --> 00:16:19,160 Ito ay nagtrabaho. 337 00:16:19,160 --> 00:16:22,060 Bilang pamantayan, kung ang isang pag-andar na dapat na nagbabalik ng tunay o 338 00:16:22,060 --> 00:16:26,370 hindi totoo laging nagbabalik totoo, maaari kang nagawa na mali. 339 00:16:26,370 --> 00:16:28,350 Kaya ito gumagana? 340 00:16:28,350 --> 00:16:32,400 >> Well, ito gumagana fine para sa 1, at 2, at 3, at 4, at lima. 341 00:16:32,400 --> 00:16:34,640 Ngunit sabihin nating maabot ko ang aking kapasidad. 342 00:16:34,640 --> 00:16:38,750 Ito ay nangangahulugan na ba akong magpatakbo sa isang problema, dahil kung laki ay pareho ng kapasidad, ako 343 00:16:38,750 --> 00:16:43,340 ngayon sinusubukan upang ilagay ang isang bagay sa isang array kung saan wala akong puwang. 344 00:16:43,340 --> 00:16:46,980 Kaya ng maikling tseke upang ayusin ito. 345 00:16:46,980 --> 00:16:51,630 Kung s.size == kapasidad, bumalik hindi totoo. 346 00:16:51,630 --> 00:16:54,130 Kung hindi man, pumunta at gawin kung ano ang ginawa namin. 347 00:16:54,130 --> 00:16:55,660 Kaya ano pa ang maaari naming hilingin tungkol sa para sa mga stack? 348 00:16:55,660 --> 00:16:56,460 Ano pa ang dapat pag-aralan mo? 349 00:16:56,460 --> 00:16:57,690 Ano pa ang dapat mong pagsasanay? 350 00:16:57,690 --> 00:17:01,030 >> Well, ang pagpapatupad ng mga pop. 351 00:17:01,030 --> 00:17:02,370 Kami na ginawa push. 352 00:17:02,370 --> 00:17:04,280 Kukunin ko ayusin iyon. 353 00:17:04,280 --> 00:17:08,180 Ang isang non-array pagpapatupad, kung saan mong gamitin ang isang naka-link na listahan, marahil. 354 00:17:08,180 --> 00:17:09,390 Ang isang hindi pang-int pagpapatupad. 355 00:17:09,390 --> 00:17:10,940 Ginawa namin ints dito. 356 00:17:10,940 --> 00:17:11,880 Ngunit ito ay maaaring naging sa kamay. 357 00:17:11,880 --> 00:17:13,010 Maaari ko pa string. 358 00:17:13,010 --> 00:17:14,290 Maaaring ito ay inalisan ng pansamantalang trabaho mga bituin. 359 00:17:14,290 --> 00:17:17,960 Tumingin sa nakalipas na mga pagsusulit para sa mga uri ng mga katanungan na tinanong namin tungkol sa mga stack. 360 00:17:17,960 --> 00:17:20,000 >> Sasabihin kong sakop namin stack sa paligid ang parehong bilang na sakop namin ang mga ito sa 361 00:17:20,000 --> 00:17:20,540 taon na nakalipas. 362 00:17:20,540 --> 00:17:24,400 Kaya ang mga katanungan sa pagsusulit dapat maging isang magandang pahiwatig. 363 00:17:24,400 --> 00:17:27,010 Ang paglipat ng pasulong mas mabilis, queues. 364 00:17:27,010 --> 00:17:28,200 Ang mga ito ay tulad ng stack. 365 00:17:28,200 --> 00:17:29,960 Ngunit hindi muna sila sa, una out. 366 00:17:29,960 --> 00:17:33,530 Kung ikaw ay British, ang salitang queue marahil ginawa ng maraming kahulugan sa iyo. 367 00:17:33,530 --> 00:17:36,390 Kung hindi man, maaari kang magkaroon Narinig ng mga ito bilang isang line. 368 00:17:36,390 --> 00:17:38,120 Gumana ang mga ito tulad ng mga linya sa tindahan ng Apple. 369 00:17:38,120 --> 00:17:40,740 Ang unang tao na lumitaw ang mga sa ganap na 3:00 sa umaga ay ang unang 370 00:17:40,740 --> 00:17:42,880 tao upang bumili ng kanyang iPad. 371 00:17:42,880 --> 00:17:44,260 >> Kaya mayroon kaming dalawang mga operasyon - 372 00:17:44,260 --> 00:17:45,720 enqueue at dequeue. 373 00:17:45,720 --> 00:17:47,560 Enqueue naglalagay ng isang tao sa linya. 374 00:17:47,560 --> 00:17:50,070 Dequeue pulls ang unang tao-off ang linya. 375 00:17:50,070 --> 00:17:52,640 Muli, maaari naming ipatupad ito na may isang array. 376 00:17:52,640 --> 00:17:54,880 Kaya kung ano ay ang struct namin Nagpakita sa lecture? 377 00:17:54,880 --> 00:17:57,660 Iyon ay ang isang ito. 378 00:17:57,660 --> 00:17:59,300 Muli, mga numero. 379 00:17:59,300 --> 00:18:02,020 Muli, laki at ang bagong bagay na front. 380 00:18:02,020 --> 00:18:04,880 Bakit mayroong isang bagay na tinatawag na front? 381 00:18:04,880 --> 00:18:07,050 Ito ay ang index ng susunod na elemento upang dequeue. 382 00:18:07,050 --> 00:18:12,210 Lamang Ito ay panloob pagpapanatiling track ng ang unang tao upang ipakita up, kaya na namin 383 00:18:12,210 --> 00:18:15,005 Maaari bunutin ito kapag kailangan naming. 384 00:18:15,005 --> 00:18:19,322 >> Talagang tumingin sa mga tala panayam at subukan ipatupad enqueue at dequeue 385 00:18:19,322 --> 00:18:21,700 kapag-aaral para sa pagsusulit. 386 00:18:21,700 --> 00:18:23,190 Mahalagang mga bagay upang isipin ang tungkol. 387 00:18:23,190 --> 00:18:27,260 Pambalot sa paligid kung ang front pati ang ay nagtatapos up laki mas malaki kaysa sa kapasidad. 388 00:18:27,260 --> 00:18:32,670 Muli, kung ang iyong istraktura ay puno na, ka pagpunta sa magkaroon ng problema. 389 00:18:32,670 --> 00:18:34,780 Hash talahanayan na iyong nakita bago. 390 00:18:34,780 --> 00:18:39,820 Karamihan sa mga malamang na ipinatupad mga sa pset6. 391 00:18:39,820 --> 00:18:44,210 Ito ay isang istraktura na naglalayong para sa O (1) pare-pareho ang oras sa pagpapasok at O ​​(1) 392 00:18:44,210 --> 00:18:46,430 pare-pareho ang oras lookup. 393 00:18:46,430 --> 00:18:49,760 >> Sa CS50, ipinatupad namin ito bilang isang array ng mga naka-link na mga listahan. 394 00:18:49,760 --> 00:18:53,690 Ang pangunahing bahagi sa isang hash talahanayan ay ang hash. 395 00:18:53,690 --> 00:18:58,350 Kaya nag-convert ito sa iyong input, sabihin nating, ng salita sa diksyunaryo, papunta sa isang numero, 396 00:18:58,350 --> 00:18:59,560 na kung saan ay pagpunta sa maging aming index. 397 00:18:59,560 --> 00:19:01,410 At gagamitin namin ang index na sa aming array. 398 00:19:01,410 --> 00:19:05,374 Kaya narito ang isang nakatutuwa maliit na larawan mula study.50.net. 399 00:19:05,374 --> 00:19:08,060 Magtapon namin ang lahat ng mga salita sa ang aming hash. 400 00:19:08,060 --> 00:19:10,950 At ang mga hash Sinasabi sa amin kung saan ilalagay ang mga salitang ito. 401 00:19:10,950 --> 00:19:15,650 >> Ito ay ang lahat ng mahusay na sa lupa kung saan mayroon lamang isang salita para sa bawat slot. 402 00:19:15,650 --> 00:19:20,480 Ngunit bilang iyong naaalala mula pset6, mayroong ay higit pang mga salita kaysa sa mga puwang. 403 00:19:20,480 --> 00:19:23,080 Kaya kung ano ang mangyayari kapag nag- makakuha ng isang banggaan? 404 00:19:23,080 --> 00:19:26,730 Sa halip na pag-iimbak ng isang halaga sa, sabihin nating, hash talahanayan 3, mo 405 00:19:26,730 --> 00:19:27,990 mag-imbak ng naka-link na listahan. 406 00:19:27,990 --> 00:19:32,900 At kaya sa halip ng pagkakaroon ng milong bilog dito, magkakaroon ka ng isang naka-link na listahan, 407 00:19:32,900 --> 00:19:34,190 kung saan ang unang node ay milong bilog. 408 00:19:34,190 --> 00:19:35,260 At sa susunod na node ay pusa. 409 00:19:35,260 --> 00:19:38,970 At ang ikatlong node ay banggaan, sabihin sabihin, dahil ang lahat ang mga salitang ito magsimula 410 00:19:38,970 --> 00:19:41,110 may C. 411 00:19:41,110 --> 00:19:42,700 >> Kaya karamihan sa mga ginawa mo ito para sa pset6. 412 00:19:42,700 --> 00:19:45,685 Kung hindi mo gawin ang isang hash talahanayan sa pset6 at tinangka ka ng isang bagay tulad ng 413 00:19:45,685 --> 00:19:47,720 , suriin ang talagang isang trie hash talahanayan. 414 00:19:47,720 --> 00:19:50,650 Kung ikaw mismo ang gumawa nito sa pset6, talagang suriin ang hash table. 415 00:19:50,650 --> 00:19:53,610 At kung ginawa mo ito sa pset6 at ito ay hindi ehersisyo masyadong tama at mo 416 00:19:53,610 --> 00:19:56,150 Nagkaroon ng maraming mga problema sa ito, talagang suriin ang hash table. 417 00:19:56,150 --> 00:20:01,610 Kaya ang aralin ay tunay na tiyak suriin ang hash table. 418 00:20:01,610 --> 00:20:07,130 >> Pinipili ng minorya ng iyong sinubukang out sinusubukan sa pset6. 419 00:20:07,130 --> 00:20:08,570 Mataas na antas ng larawan. 420 00:20:08,570 --> 00:20:15,150 Ito ay isang bagay na tulad nito, kung saan ang bawat na node ay may isang hanay ng mga bata, kung saan ang bawat 421 00:20:15,150 --> 00:20:17,100 anak ay tumutugon sa isang sulat. 422 00:20:17,100 --> 00:20:20,520 At bawat node sabi din, hey, ako ng isang salita. 423 00:20:20,520 --> 00:20:25,933 Kaya sa pagkakataong ito, ang salitang Maxwell, kung sundin mo ang M sa A sa 424 00:20:25,933 --> 00:20:28,530 X-W-E-L-L at pagkatapos ay sundin ito ng isa pa. 425 00:20:28,530 --> 00:20:32,800 At kumuha ka ng simbolong ito, delta, na maging tanda ng namin upang sabihin ito ay isang salita. 426 00:20:32,800 --> 00:20:34,780 Kaya Maxwell ay isang salita. 427 00:20:34,780 --> 00:20:38,430 Ang mga deltas ay buong signifying na bagay ang mga salita at kung aling mga 428 00:20:38,430 --> 00:20:40,360 bagay ang hindi. 429 00:20:40,360 --> 00:20:46,400 >> Kaya sa pset6, ang data na naka-imbak namin sa tabi ng anuman sa aming mga node ay "Ako ay isang 430 00:20:46,400 --> 00:20:52,630 salita. "At ang mga cool na bagay tungkol sa pagsusubok ay nagpapakita sila pagpapasok at 431 00:20:52,630 --> 00:20:55,080 lookup sa O (haba ng isang salita). 432 00:20:55,080 --> 00:20:59,450 Kaya upang makakuha lamang sa pamamagitan ng Maxwell, ito ay M-A-X-W-E-L-L. Kaya pitong o walong - 433 00:20:59,450 --> 00:21:00,360 Hindi ko ma bilangin - 434 00:21:00,360 --> 00:21:03,920 hakbang na ito upang makakuha ng hanggang sa dulo at suriin ang mga bagay out. 435 00:21:03,920 --> 00:21:06,800 Kaya mabilis na pagpapatupad dito. 436 00:21:06,800 --> 00:21:10,230 Rob nagpunta sa pamamagitan ng isang naka-link na ilista sa kanyang postmortem. 437 00:21:10,230 --> 00:21:11,600 Kaya suriin na out. 438 00:21:11,600 --> 00:21:11,720 Sorry. 439 00:21:11,720 --> 00:21:13,240 Nagpunta sa pamamagitan ng isang trie sa kanyang postmortem. 440 00:21:13,240 --> 00:21:14,260 Kaya suriin na out. 441 00:21:14,260 --> 00:21:24,410 >> Ngunit isa lamang mayroon kang bawat node ay may 27 mga payo sa susunod na node at isa 442 00:21:24,410 --> 00:21:27,050 Boolean para sa Ako ay isang salita. 443 00:21:27,050 --> 00:21:31,530 Tingnan ang postmortem Rob para sa kung paano ito talaga ay ipinatupad. 444 00:21:31,530 --> 00:21:34,750 Ang aming panghuling kaayusan, ang aming mga puno at binary paghahanap puno. 445 00:21:34,750 --> 00:21:41,530 Kaya ng pagtingin sa mga ito, ang mga ito ay sakop pinaka-kamakailan Linggo 8, Lunes. 446 00:21:41,530 --> 00:21:46,960 Puno A ay katulad ng isang trie, maliban sa iyo ay hindi kinakailangang magkaroon ng 27 mga node sa 447 00:21:46,960 --> 00:21:47,500 bawat punto. 448 00:21:47,500 --> 00:21:52,820 At wala kang ang data na ito sa bawat hakbang na Sumisimbolo kung ang - 449 00:21:52,820 --> 00:21:54,030 ang path ay hindi mahalaga. 450 00:21:54,030 --> 00:22:00,870 Sapagkat isang trie, ang path mula sa itaas hanggang ibaba, Maxwell, ay mahalaga sa amin. 451 00:22:00,870 --> 00:22:05,270 >> Ngunit ang bawat node ay may maramihang mga anak, marahil. 452 00:22:05,270 --> 00:22:07,290 Mayroon kaming ilang higit pang mga bokabularyo. 453 00:22:07,290 --> 00:22:09,530 Ang ugat ng puno ay nasa tuktok napaka. 454 00:22:09,530 --> 00:22:12,520 At sabihin namin na ang napaka pinakamababa node na walang 455 00:22:12,520 --> 00:22:14,530 mga bata ay dahon. 456 00:22:14,530 --> 00:22:18,040 Kaya tulad ng isang trie, isang puno ay isang istruktura ng mga node. 457 00:22:18,040 --> 00:22:21,490 Ang isang karaniwang uri ng puno na kami ng pagpunta pag-uusapan ay isang binary tree, kung saan 458 00:22:21,490 --> 00:22:26,040 bawat node ay walang mga bata o isang child o dalawang bata. 459 00:22:26,040 --> 00:22:28,890 Kaya ang larawang ito dito ay hindi isang binary tree, dahil 460 00:22:28,890 --> 00:22:32,890 node 3 ay may tatlong mga bata. 461 00:22:32,890 --> 00:22:38,140 >> Ngunit kung kami ay upang huwag pansinin ang mga, ang ilang bahagi ng ito ay isang binary puno dahil ito 462 00:22:38,140 --> 00:22:43,200 nagpapakita ng ari-arian na ang bawat node ay may zero, isa, o dalawang bata. 463 00:22:43,200 --> 00:22:46,400 Kaya kung paano na maaari kaming ipahayag ito sa code? 464 00:22:46,400 --> 00:22:51,460 Maaari naming magkaroon ng isang node kung saan ang bawat node ay may isang integer sa loob nito, pati na rin 465 00:22:51,460 --> 00:22:55,590 bilang tagaturo patungo sa tree sa kaliwa at isang pointer sa tree sa 466 00:22:55,590 --> 00:22:59,510 kanan, kaya ang dalawang bata. 467 00:22:59,510 --> 00:23:00,880 Paano ay ito kapaki-pakinabang? 468 00:23:00,880 --> 00:23:05,740 Well, kapag gumawa kami ng mga panuntunan tungkol sa kung saan namin ilagay nodes, maaari kaming magsagawa ng mas mabilis na paghahanap. 469 00:23:05,740 --> 00:23:10,630 >> Kaya mayroong isang konsepto ng isang binary paghahanap tree, kung saan lahat ng mga node sa 470 00:23:10,630 --> 00:23:14,420 iniwan subtree magkaroon ng isang mas maliit na halaga kaysa sa node kaming naghahanap sa. 471 00:23:14,420 --> 00:23:17,880 At lahat ng mga node sa kanan subtree magkaroon ng mas malaking halaga 472 00:23:17,880 --> 00:23:18,660 kaysa sa root node. 473 00:23:18,660 --> 00:23:20,670 Ngayon, na kamukha ng maraming mga salita. 474 00:23:20,670 --> 00:23:23,770 Pupunta ako sa ilagay ito sa loob ng double quotes at ipakita sa iyo ng isang larawan. 475 00:23:23,770 --> 00:23:27,010 Kaya dito ay isang halimbawa ng isang binary paghahanap tree. 476 00:23:27,010 --> 00:23:28,770 Tingnan na sisimulan namin ang may 10. 477 00:23:28,770 --> 00:23:31,780 Lahat sa kaliwa ng 10 ay mas maliit kaysa ito. 478 00:23:31,780 --> 00:23:33,130 At lahat ng bagay sa kanan ay mas malaki kaysa ito. 479 00:23:33,130 --> 00:23:37,620 >> Ngunit higit pa kaya kaysa sa na, ang bawat node sa tree nagpapahayag ng property na ito. 480 00:23:37,620 --> 00:23:42,110 Kaya ang node 7 May 3 sa pakaliwa at isang 9 sa kanan. 481 00:23:42,110 --> 00:23:44,440 Kaya lahat ng mga ito ay mas maliit kaysa sa 10. 482 00:23:44,440 --> 00:23:50,470 Ngunit pagtingin sa lamang iyon, ang 7 ay may 3 sa kanyang kaliwa at 9 sa kanyang karapatan. 483 00:23:50,470 --> 00:23:56,100 At katulad sa kanan, 15 May 14 sa kanyang kaliwa at 50 sa kanan nito. 484 00:23:56,100 --> 00:24:03,770 Kaya ang tatlong node banda roon, 15, 14, at 50, ay din ng isang wastong binary puno 485 00:24:03,770 --> 00:24:05,480 o ng isang wastong binary paghahanap tree. 486 00:24:05,480 --> 00:24:07,250 At ang mga ito ay ang lahat ng mas malaki sa 10. 487 00:24:07,250 --> 00:24:08,960 Kaya ang mga ito ay pinapahintulutan upang maging sa kanan doon. 488 00:24:08,960 --> 00:24:09,940 Mayroon bang isang katanungan? 489 00:24:09,940 --> 00:24:12,580 >> Madla: Paano mo haharapin kapag mayroon kang dalawang sevens? 490 00:24:12,580 --> 00:24:12,850 >> R.J. Aquino: Oo. 491 00:24:12,850 --> 00:24:16,550 Paano mo haharapin ang mga dalawang halaga na ay pareho? 492 00:24:16,550 --> 00:24:21,465 Sabihin Ang ilang mga binary search puno na huwag pansinin ang mga nauulit, dahil ang layunin ay 493 00:24:21,465 --> 00:24:24,280 lamang na sabihin, nakita ko sa ngayon mga bagay na ito. 494 00:24:24,280 --> 00:24:28,120 Ang ilang mga binary mga puno ng paghahanap maaari mong sabihin may isang pagbilang sa loob ng node. 495 00:24:28,120 --> 00:24:32,000 Ang iba ay maaaring sabihin na ang lahat sa kaliwa ay mas mababa sa o patas sa. 496 00:24:32,000 --> 00:24:33,470 At lahat ng bagay sa kanan ay mas malaki. 497 00:24:33,470 --> 00:24:36,520 >> Nakadepende lang ito sa kung ano ang problema ay naka-solve. 498 00:24:36,520 --> 00:24:40,840 Kaya sa isang diksyunaryo, halimbawa, mo hindi nais na nagmamalasakit sa mga duplicate. 499 00:24:40,840 --> 00:24:41,490 Gusto mo itapon ang mga ito out. 500 00:24:41,490 --> 00:24:44,719 Subalit ang ilan sa iba pang mga problema mo ay maaaring mahalaga sa. 501 00:24:44,719 --> 00:24:49,242 >> Madla: Posible bang magkaroon ng isang 1 sa kaliwa ng 15, na 502 00:24:49,242 --> 00:24:50,590 Mas mababa sa 10? 503 00:24:50,590 --> 00:24:51,885 >> R.J. Aquino: Hindi. 504 00:24:51,885 --> 00:24:56,570 Kung ang 14 dito ay isang 1, ito gagawin hindi maging isang wastong binary paghahanap tree, 505 00:24:56,570 --> 00:25:00,840 dahil ang lahat ng bagay sa kanan ng 10 ay dapat na mas malaki kaysa ito. 506 00:25:00,840 --> 00:25:02,300 At kami makita kung bakit. 507 00:25:02,300 --> 00:25:07,960 Kung sa lupain ng paghahanap ng aking layunin ay upang mahanap ang 14, sisimulan ko sa root. 508 00:25:07,960 --> 00:25:08,500 Kaya ko bang tingnan. 509 00:25:08,500 --> 00:25:08,710 OK. 510 00:25:08,710 --> 00:25:10,670 Kami ay pagpunta sa magsimula sa root. 511 00:25:10,670 --> 00:25:12,500 Tumingin sa 10. 512 00:25:12,500 --> 00:25:16,050 >> Well, 14, ang aming target, ay mas malaki kaysa sa 10. 513 00:25:16,050 --> 00:25:17,370 Kaya dapat itong maging sa kanan. 514 00:25:17,370 --> 00:25:21,780 Ito ay halos kapareho sa buong telepono aklat bagay ginawa namin, ang binary 515 00:25:21,780 --> 00:25:23,720 maghanap doon. 516 00:25:23,720 --> 00:25:26,430 Ngunit sa halip ng binary searching sa isang array, hindi namin binary 517 00:25:26,430 --> 00:25:28,490 naghahanap sa punong kahoy na ito. 518 00:25:28,490 --> 00:25:31,260 Kaya kaming naghahanap pa rin para sa 14. 519 00:25:31,260 --> 00:25:32,480 Well, 14 ay mas maliit kaysa sa 15. 520 00:25:32,480 --> 00:25:36,430 Kaya kung ito ay nasa aming tree, dapat ito maging sa lugar dito. 521 00:25:36,430 --> 00:25:39,680 Ito dapat sa kanan ng 10 at sa kaliwa ng 15. 522 00:25:39,680 --> 00:25:42,250 >> At kaya tingnan namin ito node. 523 00:25:42,250 --> 00:25:45,790 At Yay, nalaman namin 14. 524 00:25:45,790 --> 00:25:46,760 Hindi ako pupunta para lakarin sa pamamagitan nito. 525 00:25:46,760 --> 00:25:48,090 Ngunit narito ang code. 526 00:25:48,090 --> 00:25:49,690 Ito ay talagang medyo prangka, 527 00:25:49,690 --> 00:25:52,630 dahil ito ay recursive. 528 00:25:52,630 --> 00:25:55,420 Ano ay maaaring magtanong ka namin na gawin sa isang pagsusulit? 529 00:25:55,420 --> 00:25:57,000 Maaari naming hilingin sa iyong isulat ang code na ito. 530 00:25:57,000 --> 00:25:59,170 Maaari naming hilingin sa iyo upang tumingin sa ang code na ito at baguhin ang code na ito at ipaliwanag kung ano 531 00:25:59,170 --> 00:26:00,210 ito ang ginagawa. 532 00:26:00,210 --> 00:26:00,390 Oo. 533 00:26:00,390 --> 00:26:00,770 Tanong? 534 00:26:00,770 --> 00:26:04,240 >> Madla: Sigurado mga slide pagpunta sa maging ginawang magagamit habang ang mga ito ay huling na oras? 535 00:26:04,240 --> 00:26:04,740 >> R.J. Aquino: Oo. 536 00:26:04,740 --> 00:26:06,460 Kaya ang mga slide habilin Talagang mai-post. 537 00:26:06,460 --> 00:26:08,640 >> Madla: talaga nila naipo-post ngayon sa website. 538 00:26:08,640 --> 00:26:10,020 Lamang ng ginawa ni David na. 539 00:26:10,020 --> 00:26:12,720 >> R.J. Aquino: Ang mga slide ay ngayon sa website. 540 00:26:12,720 --> 00:26:16,420 Kukunin ko marahil mag-ayos ng isang pares ng mga ang mga typo ng nabanggit ko at aayusin ang mga ito. 541 00:26:16,420 --> 00:26:19,940 Subalit mayroong isang kasalukuyang bersyon sa site. 542 00:26:19,940 --> 00:26:21,820 Iba pa mga bagay na maaari kaming humingi sa iyo na gawin - 543 00:26:21,820 --> 00:26:23,790 sumulat insert. 544 00:26:23,790 --> 00:26:27,490 Sumulat ng isang umuulit na bersyon ng recursive function na namin ipinakita sa iyo lamang 545 00:26:27,490 --> 00:26:32,520 o makipag-usap tungkol sa mga bagay na ito, tulad ng sa mga talata, sa salita, sa pangungusap. 546 00:26:32,520 --> 00:26:35,760 Ang paghahambing ng mga beses run at nagpapaliwanag kung ano ang gusto mong gamitin ang isang binary 547 00:26:35,760 --> 00:26:39,200 puno ng paghahanap para sa sa halip ng isang hash talahanayan, bilang halimbawa. 548 00:26:39,200 --> 00:26:43,580 >> Kaya maunawaan ang mga kaayusan sa isang marikit na malalim na antas. 549 00:26:43,580 --> 00:26:47,440 Intindihin kung paano sumulat ng mga ito, kung paano gamitin ang mga ito, kung paano makipag-usap tungkol sa mga ito. 550 00:26:47,440 --> 00:26:50,270 At makikita mo na maitakda ang lahat. 551 00:26:50,270 --> 00:26:50,630 Tanong? 552 00:26:50,630 --> 00:26:55,070 >> Madla: Kapag sumusulat ka ng binary puno ng paghahanap, kung paano ito gawin 553 00:26:55,070 --> 00:27:01,460 matukoy kung ano ang halaga sa gumawa ito bilang root? 554 00:27:01,460 --> 00:27:06,120 >> R.J. Aquino: Kaya ang tanong ay, kung ano halaga mapapakinabangan mo bilang root? 555 00:27:06,120 --> 00:27:08,760 Depende sa iyong code, mo ay maaaring magkaroon ng isang pandaigdigang ugat. 556 00:27:08,760 --> 00:27:14,290 Kaya na maaari mong malamang ay nagkaroon sa pset6 isang pandaigdigang hash table. 557 00:27:14,290 --> 00:27:18,640 O maaari mong pumasa sa root in bilang isang argumento. 558 00:27:18,640 --> 00:27:23,810 Kaya ang paghahanap na ito function na dito tumatagal ng isang argumento isang node *. 559 00:27:23,810 --> 00:27:27,420 At kaya kahit anong node mangyari mong maging pagtingin sa ay ang isa ka pagpapagamot ng 560 00:27:27,420 --> 00:27:31,510 bilang iyong root kapag pinapasa mo ito in 561 00:27:31,510 --> 00:27:32,320 At ako lahat ng set. 562 00:27:32,320 --> 00:27:33,480 Iyon ang aking mga slide. 563 00:27:33,480 --> 00:27:35,940 Ang susunod na tao ay maaaring dumating magpalitan sa isang laptop at mic. 564 00:27:35,940 --> 00:27:47,390 565 00:27:47,390 --> 00:27:49,760 >> Rob BOWDEN: Sa tingin ko na maaaring mayroon ako kahulugan na pinag-uusapan nang iba. 566 00:27:49,760 --> 00:27:53,826 Ngunit kahulugan ko ito bilang, kung mayroon kang ang mga numero 1, 2, at 3, kung paano ginagawa namin 567 00:27:53,826 --> 00:27:56,720 malaman upang gumawa ng 2 root na taliwas sa 1 o 3? 568 00:27:56,720 --> 00:27:59,480 Kung gumawa kami 2 root, pagkatapos ito ay mabuti 1 at 3 sa kaliwa at kanan. 569 00:27:59,480 --> 00:28:04,610 Ngunit kung ang 1 ay ang pinakamahalagang, pagkatapos ito ay 1 sa tuktok, 2 ang karapatan, 3 sa kanan. 570 00:28:04,610 --> 00:28:10,880 Kaya bilang default, hindi mo alam kung ano upang gumawa ng root. 571 00:28:10,880 --> 00:28:15,400 At para sa anumang mga algorithm kami ay umaasang magbibigay sa iyo, lamang ang unang bagay na sa iyo 572 00:28:15,400 --> 00:28:16,680 insert ay magiging root. 573 00:28:16,680 --> 00:28:19,890 O kaya nais naming bigyan ka ng isang binary puno na Umiiral na may isang root. 574 00:28:19,890 --> 00:28:24,760 Ngunit iba pang mga algorithm umiiral tulad na Maa-update ang root, upang kung ikaw 575 00:28:24,760 --> 00:28:28,370 hantungan ang sitwasyon kung saan ito ay 1, 2, 3, mas awtomatikong i-update sa 576 00:28:28,370 --> 00:28:30,900 gawing 2 ang bagong ugat, upang ito ay pa rin ng mabuti balanced. 577 00:28:30,900 --> 00:28:33,750 578 00:28:33,750 --> 00:28:34,833 >> Angela li: Cool. 579 00:28:34,833 --> 00:28:36,170 Uy, guys. 580 00:28:36,170 --> 00:28:37,810 Ako Angela. 581 00:28:37,810 --> 00:28:42,490 At ako pupunta upang matapos off ang aming C at pagkatapos ay pumunta sa ilan sa aming web 582 00:28:42,490 --> 00:28:43,120 teknolohiya - 583 00:28:43,120 --> 00:28:46,570 HTTP, HTML, at CSS. 584 00:28:46,570 --> 00:28:49,610 Kaya ang unang bagay ay nagpapahina ng lakas pag-atake ng pag-apaw. 585 00:28:49,610 --> 00:28:53,070 Kaya ipaalam sa tumagal ng isang pagtingin sa ang code na ito. 586 00:28:53,070 --> 00:28:54,260 Ito ay medyo simple. 587 00:28:54,260 --> 00:28:55,460 Mayroong isang function foo. 588 00:28:55,460 --> 00:28:56,990 At hindi ito bumalik kahit ano. 589 00:28:56,990 --> 00:29:00,950 Ngunit ito ay tumatagal sa isang pointer sa isang string na tinatawag na bar. 590 00:29:00,950 --> 00:29:04,920 >> At ito ang nangyayari na idedeklara ito buffer, na isang karakter 591 00:29:04,920 --> 00:29:07,690 array na may 12 mga puwang. 592 00:29:07,690 --> 00:29:11,730 At ginagamit nito memcpy, na kung saan ay isa lamang function na mga kopya mula sa isa address 593 00:29:11,730 --> 00:29:12,910 patungo sa isa pa. 594 00:29:12,910 --> 00:29:19,400 Kaya ito ay sinusubukan upang kopyahin papunta sa ang aming buffer mula sa kahit anong 595 00:29:19,400 --> 00:29:21,140 bar ay tumuturo sa. 596 00:29:21,140 --> 00:29:24,640 Kaya ang anumang mga ideya kung ano ang mali may ang code na ito? 597 00:29:24,640 --> 00:29:27,568 598 00:29:27,568 --> 00:29:30,830 >> Madla: Kung bar ay mas mahaba kaysa C, sila patungan. 599 00:29:30,830 --> 00:29:31,520 >> Angela Li: Oo, eksakto. 600 00:29:31,520 --> 00:29:34,200 Mayroon kaming walang garantiya na bar ay magiging mas mababa kaysa sa 12. 601 00:29:34,200 --> 00:29:36,080 Ginawa lamang kami ng ilang mga arbitrary na numero 12. 602 00:29:36,080 --> 00:29:38,380 At kami ay tulad ng, ni Umaasa hayaan na ang aming pag-input ng user ay mas mababa sa 603 00:29:38,380 --> 00:29:40,440 12 character ang haba. 604 00:29:40,440 --> 00:29:46,320 Kaya sa isang perpektong mundo, kung ang aming input ay palaging tulad ng inaasahan, pagkatapos ay aasikasuhin namin 605 00:29:46,320 --> 00:29:47,550 isang bagay tulad ng, kumusta. 606 00:29:47,550 --> 00:29:48,920 Iyon ay mas mababa sa 12 mga character. 607 00:29:48,920 --> 00:29:51,870 Ito ay makakakuha ng basahin sa pansamantalang trabaho c. 608 00:29:51,870 --> 00:29:53,280 At pagkatapos gawin kami ng isang bagay na may ito. 609 00:29:53,280 --> 00:29:54,800 Ito ay hindi talagang mahalaga. 610 00:29:54,800 --> 00:29:59,740 >> Ngunit maaaring gawin ang isang nakakahamak na tao isang bagay na mas tulad nito, kung saan sila 611 00:29:59,740 --> 00:30:04,760 bigyan kami ng kahit anong bar ay tumuturo sa, ito ang nangyayari upang tumuro sa ito malaking array 612 00:30:04,760 --> 00:30:06,280 ng lang ang ni. 613 00:30:06,280 --> 00:30:10,680 At ito ay paraan mas mahaba kaysa sa 12. 614 00:30:10,680 --> 00:30:13,830 Kaya ito ay pagpunta sa pumunta lahat ng mga paraan down na dito sa kung saan ang pagbalik 615 00:30:13,830 --> 00:30:15,420 address na ginamit upang maging. 616 00:30:15,420 --> 00:30:17,860 Kaya ipaalam sinasabi ni ito function na ay tinatawag na foo. 617 00:30:17,860 --> 00:30:20,970 Siguro foo ay tinawag sa pamamagitan ng ilang mga iba pang function, na kung saan ay tinawag sa pamamagitan ng pangunahing. 618 00:30:20,970 --> 00:30:24,890 Kaya kapag foo ay tumatakbo, kailangan nito mong malaman kung saan upang bumalik sa. 619 00:30:24,890 --> 00:30:29,130 >> Kung foo ay tinawag sa pamamagitan ng ilang mga pag-andar na may pangalang baz, ito ay upang malaman na ito 620 00:30:29,130 --> 00:30:30,250 Nakakuha upang bumalik sa baz. 621 00:30:30,250 --> 00:30:34,040 At na kung ano ang return address down na dito ay nagsasabi sa amin. 622 00:30:34,040 --> 00:30:38,340 Ngunit kung patungan namin ito sa ilang mga iba pang address, sa kasong ito, ito ay isang 623 00:30:38,340 --> 00:30:42,650 representasyon ng mga address sa napaka-simula ng ito buffer, pagkatapos ay 624 00:30:42,650 --> 00:30:45,240 kung ano ang aktwal na pagpunta sa mangyari ay na sa halip ng mga bumabalik na bumalik sa baz, 625 00:30:45,240 --> 00:30:48,470 na tinatawag na ang aming mga function, ito lamang ay pagpunta sa pumunta sa harap ng code na ito. 626 00:30:48,470 --> 00:30:53,930 >> At kung ito ay doon dahil ang isang dumating nakahahamak na Hacker taong masyadong maselan sa pananamit at 627 00:30:53,930 --> 00:30:56,820 injected ito, pagkatapos ay marahil ang halagang ito ng A ay hindi talagang isang ni. 628 00:30:56,820 --> 00:31:02,030 At talagang ito ay code lang na break sa iyong computer o isang bagay. 629 00:31:02,030 --> 00:31:05,930 Kaya maging nagtatanggol tungkol sa ganitong uri ng bagay, mayroon kang hindi kailanman ipinapalagay na 630 00:31:05,930 --> 00:31:09,120 input ng gumagamit ay isang tiyak na halaga ng mga character. 631 00:31:09,120 --> 00:31:13,310 Halimbawa, kapag ang iyong ginagawa speller, ikaw ay sasabihan na mga salita ay 632 00:31:13,310 --> 00:31:15,580 lamang ng pagpunta sa 40 character mahaba ang maximum. 633 00:31:15,580 --> 00:31:16,570 At iyon ay mabuti. 634 00:31:16,570 --> 00:31:20,150 >> Ngunit kung hindi, pagkatapos ay magkakaroon ka ng mag- siguraduhin na basahin lamang sa 45 635 00:31:20,150 --> 00:31:21,520 character sa isang pagkakataon. 636 00:31:21,520 --> 00:31:24,430 Kung hindi man, maaari mong patungan ang iyong buffer. 637 00:31:24,430 --> 00:31:26,140 Ang anumang mga katanungan sa na. 638 00:31:26,140 --> 00:31:26,733 Oo. 639 00:31:26,733 --> 00:31:28,850 >> Madla: ma-makipag-usap sa iyo lamang ang kaunti pa tungkol sa mga ito? 640 00:31:28,850 --> 00:31:29,790 >> Angela li: Paumanhin. 641 00:31:29,790 --> 00:31:31,040 Oo. 642 00:31:31,040 --> 00:31:32,813 643 00:31:32,813 --> 00:31:35,870 >> Madla: ang mic ay para lamang sa video. 644 00:31:35,870 --> 00:31:37,640 Ako ay subukan at proyekto. 645 00:31:37,640 --> 00:31:39,900 Hi, guys. 646 00:31:39,900 --> 00:31:40,920 Maghapunan? 647 00:31:40,920 --> 00:31:45,330 Kaya sabihin pumunta sa paglipas ng ilang mga bagay sa CS50 library, na na ginagamit mo 648 00:31:45,330 --> 00:31:49,072 lahat ng semestre, karamihan upang makakuha ng input ng user. 649 00:31:49,072 --> 00:31:53,140 Tulad ng alam mo, isama mo ang CS50 library sa pamamagitan lamang ng paggawa CS50.h, na 650 00:31:53,140 --> 00:31:55,660 naglalaman ng lahat ng mga modelo ng mga function na maaari mong gamitin, tulad ng 651 00:31:55,660 --> 00:31:58,640 GetString at GetInt, at GetFloat, at iba pa. 652 00:31:58,640 --> 00:32:02,870 At mayroong isang ito linya sa CS50 library na kung saan tumutukoy sa isang string, na 653 00:32:02,870 --> 00:32:05,380 ka guys alam lahat sa ngayon ay isang pansamantalang trabaho lang *. 654 00:32:05,380 --> 00:32:07,900 >> Ngunit tumagal ng isang silip sa ipaalam kung paano gumagana ang GetString. 655 00:32:07,900 --> 00:32:10,010 Ito ay isang napaka abridged bersyon. 656 00:32:10,010 --> 00:32:15,090 Maaari mong makuha ang mga file CS50 library mula sa, sa palagay ko, manuals.CS50.net. 657 00:32:15,090 --> 00:32:16,750 At maaari mong basahin sa pamamagitan ng ang aktwal na pag-andar. 658 00:32:16,750 --> 00:32:19,330 Ngunit ito ay sumasaklaw sa ilan sa ang mga mahalagang bahagi. 659 00:32:19,330 --> 00:32:23,870 Kaya't lumikha kami ng ilang mga buffer may ilang mga kapasidad. 660 00:32:23,870 --> 00:32:27,570 At ano ang ginagawa namin makuha ay namin sa isang character sa isang pagkakataon mula sa standard n. 661 00:32:27,570 --> 00:32:30,910 Iyon ay kung saan ang input ng gumagamit teksto sa console. 662 00:32:30,910 --> 00:32:33,430 >> At kaya kami ay pagpunta sa basahin sa isang kaya hangga't ito ay hindi isang bagong karakter 663 00:32:33,430 --> 00:32:37,220 linya at hindi ito matatapos file, na ay ang dulo ng standard input. 664 00:32:37,220 --> 00:32:45,690 At para sa bawat character na binabasa namin sa, kung na character na nagtatapos up ng pagdaragdag 665 00:32:45,690 --> 00:32:50,120 sa bilang ng mga character basahin namin ang sa at na ay higit pa sa aming kapasidad, 666 00:32:50,120 --> 00:32:53,490 pagkatapos ano ang ginagawa namin ay naming palitan ang laki lang ang aming nagpapahina ng lakas upang ito ay dalawang beses bilang mahaba. 667 00:32:53,490 --> 00:32:56,950 Kaya muli, ito maprotektahan laban sa buffer pag-atake overflow, dahil ikaw basahin sa 668 00:32:56,950 --> 00:32:58,315 isang character sa isang pagkakataon. 669 00:32:58,315 --> 00:33:02,290 At kung sa anumang punto mong basahin sa masyadong marami, palawakin mo lang ang iyong buffer. 670 00:33:02,290 --> 00:33:03,330 I-multiply mo ito sa pamamagitan ng dalawang. 671 00:33:03,330 --> 00:33:05,510 At pagkatapos ay mayroon kang higit kuwarto. 672 00:33:05,510 --> 00:33:09,120 >> Kung hindi, magdagdag ka lang isang character sa buffer. 673 00:33:09,120 --> 00:33:15,080 At pagkatapos mong basahin sa lahat ng mga character, ito ay paliitin ang buffer 674 00:33:15,080 --> 00:33:18,510 umurong sa normal na sukat, magdagdag ng isang null Terminator, at pagkatapos ay bumalik. 675 00:33:18,510 --> 00:33:21,880 676 00:33:21,880 --> 00:33:24,960 Ngayon, tingnan natin GetInt ipaalam. 677 00:33:24,960 --> 00:33:27,700 Maaari mo guys basahin ito? 678 00:33:27,700 --> 00:33:30,710 Maaari ba akong mag-zoom in nang kaunti. 679 00:33:30,710 --> 00:33:33,410 680 00:33:33,410 --> 00:33:34,660 Hindi ko alam kung paano gumagana ang mga computer. 681 00:33:34,660 --> 00:33:40,840 682 00:33:40,840 --> 00:33:41,270 Wala iyon. 683 00:33:41,270 --> 00:33:42,520 Hindi ko ma-zoom in nang maayos. 684 00:33:42,520 --> 00:33:47,500 685 00:33:47,500 --> 00:33:48,770 >> Ito ay talagang mahirap. 686 00:33:48,770 --> 00:33:49,180 Sorry. 687 00:33:49,180 --> 00:33:51,490 Tingnan lamang ni sa ito Hayaan. 688 00:33:51,490 --> 00:33:57,140 Kaya kung ano ang ginagawa GetInt ay ito unang bumabasa sa isang string mula GetString, na 689 00:33:57,140 --> 00:33:59,250 ipinatupad natin dati. 690 00:33:59,250 --> 00:34:02,945 At ang mahalagang bahagi upang tandaan dito ay kung ito sa pagbabahagi na ito ay nagtatapos up 691 00:34:02,945 --> 00:34:06,400 pagbabasa ay tulad ng hindi tunay na isang string, pagkatapos ay bumalik lang namin INT_MAX sa 692 00:34:06,400 --> 00:34:09,409 pagkabigo ay kumakatawan. 693 00:34:09,409 --> 00:34:12,645 Bakit sa halip namin bumalik INT_MAX ng mga negatibong 1 o 1? 694 00:34:12,645 --> 00:34:13,895 Ang anumang mga ideya? 695 00:34:13,895 --> 00:34:16,853 696 00:34:16,853 --> 00:34:19,350 >> Madla: [hindi marinig] negatibong 1 sa isa. 697 00:34:19,350 --> 00:34:20,070 >> Angela Li: Oo, eksakto. 698 00:34:20,070 --> 00:34:24,560 Kaya ikaw ay paraan na mas malamang na gusto lang sa input 1 o negatibong 1 kapag sinenyasan 699 00:34:24,560 --> 00:34:27,469 para sa isang nth at kahit anong nth maxes. 700 00:34:27,469 --> 00:34:27,969 Ito ay malaking. 701 00:34:27,969 --> 00:34:29,690 Marahil ka hindi pagpunta sa gamitin ito. 702 00:34:29,690 --> 00:34:32,690 Kaya ito ay tulad ng isang desisyon disenyo upang tiyakin na hindi mo gawin nang hindi sinasadya 703 00:34:32,690 --> 00:34:38,540 bumalik ng isang error o hindi mo bumalik 1, na maaaring ma-parse 704 00:34:38,540 --> 00:34:41,199 bilang isang tamang sagot. 705 00:34:41,199 --> 00:34:45,110 Kaya kung ang isang linya ay hindi umiiral, bumalik kami int-MAX. 706 00:34:45,110 --> 00:34:48,090 Kung hindi man, ginagamit namin sscanf, na kung saan ay tulad ng scanf. 707 00:34:48,090 --> 00:34:49,449 Ngunit ito bumabasa mula sa isang string. 708 00:34:49,449 --> 00:34:54,310 >> At kami ay may format na ito string, na kung saan ay% i% c. 709 00:34:54,310 --> 00:34:57,440 At kami subukan at tumutugma na may ano naman nagbigay sa amin ng user. 710 00:34:57,440 --> 00:35:01,420 Gusto naming ang bilang ng mga tugmang mga bagay upang maging 1, na nangangahulugan na namin lamang 711 00:35:01,420 --> 00:35:04,940 talagang gusto upang tumugma sa isang integer napapalibutan ng siguro puti 712 00:35:04,940 --> 00:35:06,840 espasyo, siguro hindi. 713 00:35:06,840 --> 00:35:10,710 Sa kasong ito, kung inilagay mo sa isang bagay tulad ng bar, bar ay hindi tumutugma sa lahat, 714 00:35:10,710 --> 00:35:14,400 dahil doon ay kailangang maging isang integer sa simula. 715 00:35:14,400 --> 00:35:17,060 Kaya hindi kailanman sscan naka-0. 716 00:35:17,060 --> 00:35:19,640 Kaya hindi mo bumalik na. 717 00:35:19,640 --> 00:35:23,850 >> Bilang kahalili, kung inilagay mo sa isang bagay tulad ng 1, 2, 3, A, B, C, na katugma 718 00:35:23,850 --> 00:35:27,180 parehong integer ngunit din ang character na pagkatapos nito. 719 00:35:27,180 --> 00:35:29,990 Kaya ay sscanf bumalik 2, na ding hindi perpekto. 720 00:35:29,990 --> 00:35:34,620 Ayaw mong 1, 2, 3, A, B, C na maging isang wastong int. 721 00:35:34,620 --> 00:35:36,990 Kaya na rin ay hindi gumagana. 722 00:35:36,990 --> 00:35:38,530 Ngunit sinasabi inilagay mo sa isang bagay tulad ng 50. 723 00:35:38,530 --> 00:35:42,460 Iyon ay tutugma sa% i, na nangangahulugang ito ay makakakuha ng basahin sa n. 724 00:35:42,460 --> 00:35:44,790 At ngayon, n maglalaman ng bilang 50. 725 00:35:44,790 --> 00:35:46,110 At pagkatapos ay maaari mong ibalik ito. 726 00:35:46,110 --> 00:35:49,270 >> Kung hindi, pindutin mo ang Retry. 727 00:35:49,270 --> 00:35:55,790 At pagkatapos ay muli na napupunta sa ibabaw ito lamang hanggang sa kang makakuha ng isang wastong input mula sa user. 728 00:35:55,790 --> 00:35:56,891 Ang anumang mga katanungan sa iyon? 729 00:35:56,891 --> 00:36:02,182 >> Madla: Kaya kung ikaw ay i-print out ang halaga ng GetInt sa [hindi marinig] 730 00:36:02,182 --> 00:36:06,250 magiging lamang ng integer at max? 731 00:36:06,250 --> 00:36:07,440 >> Angela Li: Oo. 732 00:36:07,440 --> 00:36:11,780 Kaya kung gagamitin mo GetInt, dapat mong ipalagay na hindi mo nais nth max upang 733 00:36:11,780 --> 00:36:15,328 maging isang wastong input, dahil naka-pagpunta upang ipalagay na iyon ay hindi maganda. 734 00:36:15,328 --> 00:36:27,740 >> Madla: Kung hindi namin ginawa magkaroon ng pansamantalang trabaho c at may isang taong ilalagay sa 1, 2, 3, Sam, gagawin ito 735 00:36:27,740 --> 00:36:29,430 gagana pa rin para sa 1, 2, 3? 736 00:36:29,430 --> 00:36:29,750 >> Angela li: Sa tingin ko gusto ito ay gagana. 737 00:36:29,750 --> 00:36:33,340 Ngunit hindi mo nais 123Sam sa maging isang wastong input ng isang user. 738 00:36:33,340 --> 00:36:34,670 Iyan ay hindi talagang isang int. 739 00:36:34,670 --> 00:36:36,840 Kaya ito ay hindi patas upang i-parse ito bilang isang int. 740 00:36:36,840 --> 00:36:40,910 741 00:36:40,910 --> 00:36:42,160 OK. 742 00:36:42,160 --> 00:36:45,800 Sa kasong iyon, sabihin ilipat sa sa internet. 743 00:36:45,800 --> 00:36:49,120 Kaya HTTP ay hindi isang wika. 744 00:36:49,120 --> 00:36:56,060 HTTP lamang ang hanay ng mga pamantayan para sa paano mo magpadala ng mga bagay mula sa mga kliyente, 745 00:36:56,060 --> 00:36:57,280 na sa iyo, sa mga server. 746 00:36:57,280 --> 00:36:59,730 Iyon ibang tao sa web. 747 00:36:59,730 --> 00:37:02,900 >> Kaya HTTP ang ibig sabihin ay Hypertext Maglipat ng Protocol. 748 00:37:02,900 --> 00:37:04,610 Ito ay ang puso at kaluluwa ng buong web. 749 00:37:04,610 --> 00:37:07,050 Ang hypertext bahagi lamang ay tumutukoy sa HTML. 750 00:37:07,050 --> 00:37:10,690 Ang paglipat ay mga kliyente tulad ng ikaw ay magpadala ng mga kahilingan sa 751 00:37:10,690 --> 00:37:13,060 mga server, na nagbibigay sa mga tugon. 752 00:37:13,060 --> 00:37:16,380 At ang protocol lamang, kung paano gawin mong asahan ang isang server upang kumilos? 753 00:37:16,380 --> 00:37:19,960 At paano mo dapat na kumilos tulad na maaari mong i-streamline na ito 754 00:37:19,960 --> 00:37:21,920 proseso ng komunikasyon? 755 00:37:21,920 --> 00:37:26,650 >> Kaya mga kahilingan ng HTTP tumingin ng maraming tulad nito. 756 00:37:26,650 --> 00:37:28,070 GET ang uri ng kahilingan. 757 00:37:28,070 --> 00:37:31,220 Ikaw guys na nakita ng mga kahilingan GET at POST kahilingan. 758 00:37:31,220 --> 00:37:36,690 Iyon ikalawang bagay doon, / sa akin, na lamang ang URI o ang URL ng kung saan mo 759 00:37:36,690 --> 00:37:38,140 gustong pumunta sa loob ng host. 760 00:37:38,140 --> 00:37:44,140 Kaya ang hiling na ito ay humihingi ng mga page, katulad www.facebook.com / akin. 761 00:37:44,140 --> 00:37:45,300 At ito ay isang kahilingan GET. 762 00:37:45,300 --> 00:37:51,020 At pagkatapos na ito HTTP/1.1, ito lamang ay ang bersyon ng HTTP na iyong ginagamit. 763 00:37:51,020 --> 00:37:55,020 Ito ay halos palaging 1.1. 764 00:37:55,020 --> 00:37:56,880 >> At pagkatapos ay mayroong isang bungkos ng masyadong iba pang mga bagay-bagay. 765 00:37:56,880 --> 00:38:02,510 Maaari mong aktwal na tingnan ang mga kung buksan up ang iyong console kapag handa ka 766 00:38:02,510 --> 00:38:03,770 nagba-browse sa web. 767 00:38:03,770 --> 00:38:07,290 Magmumukhang Tugon higit na katulad nito. 768 00:38:07,290 --> 00:38:09,620 Ang nangungunang bahagi ay, muli, ang uri ng HTTP gumagamit ka ng 769 00:38:09,620 --> 00:38:12,310 sinusundan ng isang code ng katayuan. 770 00:38:12,310 --> 00:38:14,700 Kaya 200 OK ay ang lahat ng bagay nagtrabaho out. 771 00:38:14,700 --> 00:38:16,200 Narito ang iyong nilalaman. 772 00:38:16,200 --> 00:38:17,390 Ang iyong nilalaman ay pagpunta sa sundin. 773 00:38:17,390 --> 00:38:21,730 At pagkatapos ay ito sabihin sa iyo kung anong uri ng masyadong nilalaman at iba pang mga bagay-bagay. 774 00:38:21,730 --> 00:38:24,620 >> Ang code ng mga katayuan, may ilang mga mahalaga sa buhay na dapat mong malaman. 775 00:38:24,620 --> 00:38:26,460 200 OK ay tulad ng golden ang lahat ng bagay ay. 776 00:38:26,460 --> 00:38:28,490 Gumagana ang lahat. 777 00:38:28,490 --> 00:38:29,710 403 Forbidden. 778 00:38:29,710 --> 00:38:32,910 Ito ay marahil nakita mo kung nakalimutan mo ang sa chmod maayos ang isang bagay. 779 00:38:32,910 --> 00:38:34,510 Nangangahulugan ito na wala kang ang karapatan na pagpapahintulot upang 780 00:38:34,510 --> 00:38:36,210 access na sa server. 781 00:38:36,210 --> 00:38:38,110 Ito ay tulad, hindi, hindi ka maaaring makakita nito. 782 00:38:38,110 --> 00:38:39,780 404 Ang ibig sabihin bagay na hindi umiiral. 783 00:38:39,780 --> 00:38:40,400 Hindi natagpuan. 784 00:38:40,400 --> 00:38:41,640 Marahil nakita mo na ang isang pulutong. 785 00:38:41,640 --> 00:38:45,510 >> 500 Internal Server Error ay karaniwang parang may nangyaring mali sa gilid 786 00:38:45,510 --> 00:38:46,460 ng server. 787 00:38:46,460 --> 00:38:50,830 Kaya kapag ikaw ay pagpapatupad ng pset7, kung nagkaroon ka ng mga error sa PHP, magagawa mo 788 00:38:50,830 --> 00:38:53,890 talaga pumunta sa pahina at makita ang isang ang maramihang mga bagay-bagay na PHP error. 789 00:38:53,890 --> 00:38:56,900 Ngunit iyon ay hindi normal mangyari, dahil website ay hindi talagang i- 790 00:38:56,900 --> 00:38:58,830 sabihin sa iyo kung bakit ang kanilang mga site ay sira. 791 00:38:58,830 --> 00:39:03,370 Makikita nila marahil bumalik lamang 500 Internal Server Error. 792 00:39:03,370 --> 00:39:06,120 >> At pagkatapos ay mayroong 418 Isa akong tsarera. 793 00:39:06,120 --> 00:39:07,910 Mayroong isang buong kuwento tungkol sa bakit iyon ang isang bagay. 794 00:39:07,910 --> 00:39:09,860 Ngunit maaari mong basahin ang tungkol na sa iyong sariling oras. 795 00:39:09,860 --> 00:39:11,450 Mayroong isang buong bungkos ng iba pang mga code masyadong katayuan. 796 00:39:11,450 --> 00:39:12,700 Ngunit narito ang mga bago na dapat mong malaman. 797 00:39:12,700 --> 00:39:15,660 798 00:39:15,660 --> 00:39:18,610 Kaya hayaan-usapan natin ang tungkol sa HTML. 799 00:39:18,610 --> 00:39:22,180 HTML, alalahanin, ay hindi isang programming language. 800 00:39:22,180 --> 00:39:23,510 Ito ay isang markup language. 801 00:39:23,510 --> 00:39:25,210 Nangangahulugan iyon na naglalarawan ito ng nilalaman. 802 00:39:25,210 --> 00:39:30,440 Sinasabi nito sa iyo kung ano ang hitsura ng isang dokumentong HTML tulad o hindi kung ano ang mukhang 803 00:39:30,440 --> 00:39:32,230 ngunit kung paano ito nakaayos. 804 00:39:32,230 --> 00:39:36,110 >> Kaya Tinutukoy nito ang isang istraktura at mga semantika ng mga web page. 805 00:39:36,110 --> 00:39:37,830 Ito ay tulad, ito ay isang talata. 806 00:39:37,830 --> 00:39:40,060 Ito ay isang nakaayos na listahan. 807 00:39:40,060 --> 00:39:42,360 Ito ay tulad ng isang seksyon ng aking pahina. 808 00:39:42,360 --> 00:39:43,260 Narito ang pamagat. 809 00:39:43,260 --> 00:39:44,310 Ito ang mga bagay-bagay tulad na. 810 00:39:44,310 --> 00:39:48,770 Hindi ito estilo ng anuman sa na, dahil na kung ano ang ginagawa mo sa CSS. 811 00:39:48,770 --> 00:39:50,270 At mukhang isang serye ng nested mga tag. 812 00:39:50,270 --> 00:39:54,720 Kaya gamitin ang isang halimbawa ng isang talagang pangunahing HTML na pahina, mayroon kang DOCTYPE 813 00:39:54,720 --> 00:39:56,720 deklarasyon up doon. 814 00:39:56,720 --> 00:40:00,940 >> Ito DOCTYPE deklarasyon ay na nagsasabi, na aming ginagamit ng HTML5. 815 00:40:00,940 --> 00:40:03,370 Pagkatapos ay mayroon kang malaking tag na HTML. 816 00:40:03,370 --> 00:40:05,230 Ito ay nagtataglay ng isang ulo at isang katawan. 817 00:40:05,230 --> 00:40:06,970 Sa loob ng ulo, mayroon ka ng mga pamagat. 818 00:40:06,970 --> 00:40:12,950 Iyon ay kung ano ang napupunta sa pamagat bar ng iyong browser. 819 00:40:12,950 --> 00:40:15,810 Mayroon kaming isang link na tag na nagli-link sa isang external style sheet. 820 00:40:15,810 --> 00:40:19,880 At pagkatapos ay mayroon kaming isang script na pulls mula sa isang panlabas na JavaScript pati na rin. 821 00:40:19,880 --> 00:40:23,750 >> At pagkatapos ay sa loob ng aming katawan talaga ano ay makakakuha ng ipinapakita sa pahina. 822 00:40:23,750 --> 00:40:28,210 Nakakuha kami ng isang talata at pagkatapos ay isang larawan sa loob na talata. 823 00:40:28,210 --> 00:40:32,000 Isa na ito ay isang larawan ng mga kuting. 824 00:40:32,000 --> 00:40:35,840 Pansinin na ang imahe isinasara ang kanyang sarili tag. 825 00:40:35,840 --> 00:40:41,760 Kaya sa halip ng pagbubukas na may imahe at pagkatapos ay ang paggawa ng isa pang / imahe, mo 826 00:40:41,760 --> 00:40:47,500 mayroon lamang ito kaunti slash dito, na kung saan nagsara ito. 827 00:40:47,500 --> 00:40:53,670 At ang mga tag na imahe ay mayroon ding ang key na ito halaga ng katangian na tinatawag na alt. 828 00:40:53,670 --> 00:40:56,970 Iyan ang alternatibong teksto na ang mangyayari kapag hover ka sa ibabaw nito. 829 00:40:56,970 --> 00:41:03,170 >> Karamihan sa mga elemento ng HTML mayroon ilang mga pangunahing halaga mga bagay na maaari mong ibigay ito, iba't-ibang 830 00:41:03,170 --> 00:41:04,420 pag-customize. 831 00:41:04,420 --> 00:41:06,230 832 00:41:06,230 --> 00:41:08,705 Oo. 833 00:41:08,705 --> 00:41:09,955 >> Madla: [hindi marinig]. 834 00:41:09,955 --> 00:41:17,510 835 00:41:17,510 --> 00:41:19,680 >> Angela li: Well, sa gayon ito ay isang katangian ng tag. 836 00:41:19,680 --> 00:41:25,320 Kaya't kung ikaw ay gumagamit ng jQuery, magagawa mo gawin piliin ang image.getAttribute. 837 00:41:25,320 --> 00:41:27,930 At pagkatapos ay maaari kang maghanap para sa makuha ang alt attribute. 838 00:41:27,930 --> 00:41:31,040 At ito ay magbibigay sa iyo ng mga kuting. 839 00:41:31,040 --> 00:41:37,400 Kung naaalala mo ang mga form sa HTML, input mga elemento ay magkakaroon ng katangian pangalan. 840 00:41:37,400 --> 00:41:41,870 At na kung ano ay gumagamit ng PHP upang magpadala ng mga kahilingan kapag ang isang form na ay isinumite. 841 00:41:41,870 --> 00:41:44,762 842 00:41:44,762 --> 00:41:50,064 >> Madla: babanggitin mo ba na ang isang bagay tungkol sa kung paano kung gagamitin mo kittens.jpg o 843 00:41:50,064 --> 00:41:54,410 isang bagay na may nawawalang mag-file ng mga folder o iba pang mga file? 844 00:41:54,410 --> 00:41:54,750 >> Angela Li: Oo. 845 00:41:54,750 --> 00:41:57,010 Kaya ito ay kung ano ang tinatawag na isang kamag-anak landas, dahil hindi ako nagbibigay sa 846 00:41:57,010 --> 00:41:58,740 mo ang buong path. 847 00:41:58,740 --> 00:42:05,160 Ito ay tulad ng kapag nasa C kung gagawin mo fopen ang ilang mga file, kung fopen hi.txt mo, na 848 00:42:05,160 --> 00:42:09,190 hi.txt ay inaasahang maging sa parehong direktoryo, maliban na lamang kung magbigay sa iyo ito ng isang mas 849 00:42:09,190 --> 00:42:11,530 kumplikadong landas. 850 00:42:11,530 --> 00:42:14,900 >> Madla: Kaya maaari mong tukuyin saan folder [hindi marinig]? 851 00:42:14,900 --> 00:42:17,660 >> Angela Li: Oo. 852 00:42:17,660 --> 00:42:19,370 At maaari kang tumingin up kung paano gawin iyon. 853 00:42:19,370 --> 00:42:23,480 Ngunit kung nais kong upang makakuha ng kittens.jpg out ng mga magulang na direktoryo, gusto kong gawin 854 00:42:23,480 --> 00:42:24,730 .. / Kittens.jpg. 855 00:42:24,730 --> 00:42:29,680 856 00:42:29,680 --> 00:42:30,930 Oo. 857 00:42:30,930 --> 00:42:32,960 858 00:42:32,960 --> 00:42:33,760 Sorry. 859 00:42:33,760 --> 00:42:34,045 Oo. 860 00:42:34,045 --> 00:42:35,700 Oh tao, nakalimutan ko ang pinag-uusapan. 861 00:42:35,700 --> 00:42:36,460 Ano ang tanong? 862 00:42:36,460 --> 00:42:39,570 Oh, ang tanong ay sabihin, kittens.jpg inaasahang maging sa parehong directory? 863 00:42:39,570 --> 00:42:40,630 At sa kasong ito, ito ay. 864 00:42:40,630 --> 00:42:44,030 Ngunit maaari mo ring bigyan ito ng isang tiyak na landas tulad na hindi ito kailangang maging. 865 00:42:44,030 --> 00:42:47,100 866 00:42:47,100 --> 00:42:48,350 Magandang? 867 00:42:48,350 --> 00:42:50,190 868 00:42:50,190 --> 00:42:51,350 >> CSS. 869 00:42:51,350 --> 00:42:55,420 Kaya CSS, tulad ng HTML, ay hindi isang programming language. 870 00:42:55,420 --> 00:42:58,250 CSS ay hindi lamang isang serye ng mga panuntunan sa istilo. 871 00:42:58,250 --> 00:43:00,130 Ito ay nakatayo para sa Cascading Style Sheet. 872 00:43:00,130 --> 00:43:03,910 At gamitin mo ito sa pagsama may HTML na pahina ng estilo. 873 00:43:03,910 --> 00:43:08,140 Kaya mayroong tatlong paraan maaari mong isama ito. 874 00:43:08,140 --> 00:43:11,950 Ang isang paraan na maaari mong gawin ito ay sa head bahagi ng iyong HTML, maaari mo lamang 875 00:43:11,950 --> 00:43:15,410 buksan ang isang tag ng estilo at pagkatapos ay manatili tuntunin ilang mga CSS sa doon. 876 00:43:15,410 --> 00:43:16,759 Ito ay medyo OK. 877 00:43:16,759 --> 00:43:17,228 Oo. 878 00:43:17,228 --> 00:43:21,449 >> Madla: ma ilagay mo ang mga estilo ng mga tag sa pagitan ng, sabihin 879 00:43:21,449 --> 00:43:22,860 sabihin nating, katawan at / body. 880 00:43:22,860 --> 00:43:27,400 At pagkatapos ay mapupunta ka sa istilo lamang sa katawan. 881 00:43:27,400 --> 00:43:28,840 >> Angela li: magagawa mo. 882 00:43:28,840 --> 00:43:29,590 Makikita itong gumana. 883 00:43:29,590 --> 00:43:33,990 Ngunit hindi ka dapat, dahil sa istilo ay uri ng metadata na dapat pumunta sa 884 00:43:33,990 --> 00:43:35,890 head ng iyong dokumento. 885 00:43:35,890 --> 00:43:38,280 Katawan dapat talaga maglaman lamang kung ano ang aktwal na pagpunta sa 886 00:43:38,280 --> 00:43:39,420 ipakita ang up sa iyong pahina. 887 00:43:39,420 --> 00:43:42,155 >> Madla: So gusto mong ilagay estilo sa iyong ulo sa estilo ng 888 00:43:42,155 --> 00:43:43,930 buong web page, i-right? 889 00:43:43,930 --> 00:43:44,300 >> Angela Li: Oo. 890 00:43:44,300 --> 00:43:50,470 Kaya paglalagay ng estilo dito, ang mga panuntunang ito CSS ay ilalapat sa ang buong pahina batay sa 891 00:43:50,470 --> 00:43:52,100 kanilang tagapili. 892 00:43:52,100 --> 00:43:57,090 Kaya ang mas mahusay na paraan upang gawin ito ay sa halip ng pagkakaroon ng isang tag ng estilo sa iyong ulo, 893 00:43:57,090 --> 00:44:00,430 mayroon kang ang link na ito sa isang panlabas na estilo sheet tulad ng ipinakita ko sa iyo sa 894 00:44:00,430 --> 00:44:01,980 nakaraang halimbawa. 895 00:44:01,980 --> 00:44:05,920 Ano ang ginagawa ay sinusubukan ng ito at hahanapin ng maghain style.css at pagkatapos pulls ito 896 00:44:05,920 --> 00:44:08,470 sa at ginagamit na bilang estilo para sa pahina. 897 00:44:08,470 --> 00:44:10,500 At iyong style.css gagawin tingnan lamang na katulad nito. 898 00:44:10,500 --> 00:44:13,330 Mas lamang ng grupo ng CSS. 899 00:44:13,330 --> 00:44:16,210 >> At sa wakas, mayroong isa pang paraan kung paano ka maaaring magsama ng CSS, na ikaw talaga 900 00:44:16,210 --> 00:44:17,480 hindi dapat kailanman gawin. 901 00:44:17,480 --> 00:44:18,950 Ito ay tawag inline na estilo. 902 00:44:18,950 --> 00:44:22,650 At sa gayon ang anumang elemento ng HTML maaari ring kumuha ng isang katangian ng estilo. 903 00:44:22,650 --> 00:44:26,320 At pagkatapos ay sa na estilo katangian, maaari mong bigyan ito ng mga panuntunan sa CSS. 904 00:44:26,320 --> 00:44:29,140 Kaya sa kasong ito, ang kahit anong div ako pagtukoy dito mismo, ito ay pagpunta sa 905 00:44:29,140 --> 00:44:32,580 magkaroon ng isang itim na background at may puting kulay ng teksto. 906 00:44:32,580 --> 00:44:35,620 Ngunit hindi mo dapat gawin ito, dahil kung ano na ito ay ay naglalagay nito ang iyong estilo 907 00:44:35,620 --> 00:44:36,850 sa loob ng iyong HTML. 908 00:44:36,850 --> 00:44:40,530 >> At alam ko na pinag-uusapan na namin ang tungkol sa HTML ay istraktura at CSS style. 909 00:44:40,530 --> 00:44:42,790 Kung gagawin mo ito, mixes ito ang mga ito nang sama-sama. 910 00:44:42,790 --> 00:44:44,550 At ito ay hindi masyadong malinis. 911 00:44:44,550 --> 00:44:45,800 Kaya huwag gawin iyon. 912 00:44:45,800 --> 00:44:47,690 913 00:44:47,690 --> 00:44:52,100 Gamit ang isang halimbawa ng CSS, hanggang doon, namin piliin lamang ang mga katawan ng HTML 914 00:44:52,100 --> 00:44:52,380 dokumentaryo. 915 00:44:52,380 --> 00:44:55,110 At kami ay tulad, ang lahat ng bagay ay pagpunta sa maging Comic Sans. 916 00:44:55,110 --> 00:44:57,290 Hindi ko rin namin na. 917 00:44:57,290 --> 00:44:59,940 Ngunit maaari mong gawin iyon. 918 00:44:59,940 --> 00:45:03,140 >> Ang ikalawang panuntunan dito mismo, ito ay pagpunta upang piliin ang mga elemento sa 919 00:45:03,140 --> 00:45:04,880 pahina na may ID pangunahing. 920 00:45:04,880 --> 00:45:11,690 Kaya kahit anong HTML element ID, sinabi ko = Main, pupuntahan ko bigyan na ang isang 921 00:45:11,690 --> 00:45:16,020 20-pixel margin at ihanay ang lahat ng bagay, lahat ng teksto, sa sentro. 922 00:45:16,020 --> 00:45:19,030 Ang huling bagay pumipili sa pamamagitan ng CSS class. 923 00:45:19,030 --> 00:45:24,450 Kaya ang anumang elemento sa pahina na Nagbigay ako isang klase seksyon, Pupunta ako upang gawin itong 924 00:45:24,450 --> 00:45:26,602 ng isang kulay ng background ng mapusyaw na asul. 925 00:45:26,602 --> 00:45:29,380 926 00:45:29,380 --> 00:45:30,040 Yep. 927 00:45:30,040 --> 00:45:30,700 Iyon lang ang Nakatanggap ako. 928 00:45:30,700 --> 00:45:30,890 Tanong? 929 00:45:30,890 --> 00:45:34,020 >> Madla: Ano ang ginagawa ng hashtag bago pangunahing gawin? 930 00:45:34,020 --> 00:45:36,310 >> Angela li: Ang tanong ay, kung ano ang ginagawa ang hashtag bago pangunahing do? 931 00:45:36,310 --> 00:45:40,770 Sa kasong ito, ang hash sa CSS ay nangangahulugan piliin sa pamamagitan ng ID. 932 00:45:40,770 --> 00:45:47,490 Kaya kung mayroon akong ilang mga elemento ng HTML, tulad ng divID = main, ito CSS pipili na panuntunan 933 00:45:47,490 --> 00:45:49,260 ang bagay na may ID pangunahing. 934 00:45:49,260 --> 00:45:53,940 At katulad, ang panahon sa harap ng seksyon ay piliin sa pamamagitan ng CSS klase o 935 00:45:53,940 --> 00:45:56,558 piliin sa pamamagitan ng HTML class. 936 00:45:56,558 --> 00:46:00,940 >> Madla: Bakit mayroong isang may bago 6 sa kulay ng background? 937 00:46:00,940 --> 00:46:01,270 >> Angela Li: Oo. 938 00:46:01,270 --> 00:46:03,360 Kaya ang tanong ay, kung bakit ay mayroong isang hash bago ang 6? 939 00:46:03,360 --> 00:46:05,320 Ito ay naiiba kaysa na hash. 940 00:46:05,320 --> 00:46:09,500 Nangangahulugan ito na kayo ay nagbibigay sa isang hexadecimal kulay. 941 00:46:09,500 --> 00:46:14,260 Kaya hex kulay, ito lamang ay kumakatawan sa isang kulay. 942 00:46:14,260 --> 00:46:17,860 At tandaan mo RGB triples kapag ginawa mo ang forensics pset? 943 00:46:17,860 --> 00:46:18,770 Ito ay pareho. 944 00:46:18,770 --> 00:46:21,590 Kumakatawan Ang unang dalawang digit kung magkano ang pula ay nasa kulay. 945 00:46:21,590 --> 00:46:23,260 Ang pangalawang dalawang kumatawan kung magkano ang berde. 946 00:46:23,260 --> 00:46:25,450 At ang ikatlong kumakatawan kung magkano ang asul. 947 00:46:25,450 --> 00:46:30,060 At ang mga hash ay ito ay pagpunta upang kumatawan ng isang kulay. 948 00:46:30,060 --> 00:46:35,660 >> Kaya kahit ano mula sa 0, 0, 0, 0, 0, 0 hanggang sa F, F, F, F, F, F ay may-bisa. 949 00:46:35,660 --> 00:46:39,550 Ito ay ilang mga wastong kulay na maaari ay ipapakita ng iyong browser. 950 00:46:39,550 --> 00:46:39,790 Tanong? 951 00:46:39,790 --> 00:46:43,590 >> Madla: Ano ang pagkakaiba sa pagitan ng paggamit ng ID at sa pamamagitan ng klase? 952 00:46:43,590 --> 00:46:46,470 >> Angela li: Ang tanong ay kung ano ang ang pagkakaiba sa pagitan ng 953 00:46:46,470 --> 00:46:48,950 paggamit ng ID at klase? 954 00:46:48,950 --> 00:46:54,390 Maaari lamang magkaroon ng isang elemento sa isang HTML na dokumento na may isang ibinigay na ID. 955 00:46:54,390 --> 00:46:58,660 Kaya lamang ng isang bagay sa aking pahina ang pinapayagan na magkaroon ng ID pangunahing. 956 00:46:58,660 --> 00:47:02,580 Kaya gamitin mo ito para ito ang header. 957 00:47:02,580 --> 00:47:03,850 Ito ang navigation. 958 00:47:03,850 --> 00:47:05,230 Ito ang footer. 959 00:47:05,230 --> 00:47:09,070 Mga klase ay iba, dahil maaari ka ilapat ang mga klase sa bilang maraming mga elemento ng HTML 960 00:47:09,070 --> 00:47:10,100 hangga't gusto mo. 961 00:47:10,100 --> 00:47:15,860 >> Kaya halimbawa, ginawa ko seksyon ng klase, dahil mayroong marahil higit pa sa isang 962 00:47:15,860 --> 00:47:17,540 seksyon sa aking pahina. 963 00:47:17,540 --> 00:47:20,200 Lamang ka pinapayagang magkaroon ng maraming mga elemento sa pahina na may parehong 964 00:47:20,200 --> 00:47:23,190 klase ngunit isa lamang na may isang tiyak na ID. 965 00:47:23,190 --> 00:47:25,600 >> Madla: Kaya kumakatawan sa tuldok ang klase? 966 00:47:25,600 --> 00:47:26,090 >> Angela Li: Oo. 967 00:47:26,090 --> 00:47:27,380 Kinakatawan ng isang tuldok isang klase. 968 00:47:27,380 --> 00:47:29,990 969 00:47:29,990 --> 00:47:31,540 Cool. 970 00:47:31,540 --> 00:47:32,370 Iyon lang ang mayroon ako, guys. 971 00:47:32,370 --> 00:47:33,544 Salamat sa inyo. 972 00:47:33,544 --> 00:48:13,380 >> [Palakpakan] 973 00:48:13,380 --> 00:48:14,290 >> ZAMYLA Chan: Hi, sa lahat. 974 00:48:14,290 --> 00:48:14,880 Ako Zamyla. 975 00:48:14,880 --> 00:48:18,830 Pupunta ako sa ma sumasaklaw sa PHP, MVC, at SQL ngayon. 976 00:48:18,830 --> 00:48:22,350 977 00:48:22,350 --> 00:48:26,110 Ang isang pulutong ng mga materyal na kukunin ko na maging pantakip ay magiging kaakit-akit magkano 978 00:48:26,110 --> 00:48:29,100 karapatan out sa pset7. 979 00:48:29,100 --> 00:48:29,700 Ayos lang. 980 00:48:29,700 --> 00:48:31,180 Kaya kung ano ang PHP? 981 00:48:31,180 --> 00:48:35,150 PHP nakatayo para sa PHP Hypertext Preprocessor. 982 00:48:35,150 --> 00:48:38,740 Kaya ito, sa sarili nito, ay isang recursive pangalanan, na kung saan ay medyo cool. 983 00:48:38,740 --> 00:48:42,220 PHP ay isang wika na server-side scripting, at ito ay nagbibigay ng backend 984 00:48:42,220 --> 00:48:44,610 at ang mga lohikal na underpinnings sa aming website. 985 00:48:44,610 --> 00:48:48,520 >> Kaya Angela usapan ng maraming tungkol sa HTML at CSS na ito at gumawa ng istraktura 986 00:48:48,520 --> 00:48:49,530 ng website. 987 00:48:49,530 --> 00:48:53,210 Ngunit paano kung gusto mong baguhin na pabago-bago o kung ito ay nagkakaiba-iba ng nilalaman 988 00:48:53,210 --> 00:48:55,240 batay sa mga gumagamit o ilang mga kundisyon? 989 00:48:55,240 --> 00:48:57,060 Iyon ay kung saan ay PHP in 990 00:48:57,060 --> 00:49:02,610 Ngayon, karaniwan, PHP ay maaaring tumagal ng ilang mas mababa mga linya upang ipatupad ang parehong bagay 991 00:49:02,610 --> 00:49:07,380 sa C. Iyon ay dahil sa PHP humahawak ng memory pamamahala para sa mga programmer, 992 00:49:07,380 --> 00:49:11,170 bilang kabaligtaran sa amin na kinakailangang i-malloc libre, ang mga bagay tulad na. 993 00:49:11,170 --> 00:49:15,430 >> Ngunit dahil PHP ay isang interpretive wika, karaniwang, maaaring isakatuparan 994 00:49:15,430 --> 00:49:19,540 medyo mas mabagal kaysa sa C, na ay isang pinagsama-sama wika. 995 00:49:19,540 --> 00:49:23,150 Dahil kami ay gumagalaw sa programming mga wika, tingnan natin ipaalam kung paano ang 996 00:49:23,150 --> 00:49:24,570 mag-iiba syntax. 997 00:49:24,570 --> 00:49:28,770 Maging napaka-ingat na hindi Hayaang makakuha ng nalilito sa ito. 998 00:49:28,770 --> 00:49:33,750 Kaya may syntax PHP, kung ikaw ay embed ng iyong PHP sa loob ng isang HTML 999 00:49:33,750 --> 00:49:40,430 mag-file o sa loob ng isang. php file mismo, mo kailangan upang mapaligiran ang code sa bukas 1000 00:49:40,430 --> 00:49:45,270 PHP at ang nakasarang mga tag PHP tulad ng susunod, tulad ng sa screen. 1001 00:49:45,270 --> 00:49:46,660 >> Mga variable sa PHP. 1002 00:49:46,660 --> 00:49:51,490 Ang bawat solong variable ay magsisimula sa ang $ sign na sinusundan ng pangalan ng 1003 00:49:51,490 --> 00:49:53,150 ang iyong mga variable. 1004 00:49:53,150 --> 00:49:56,530 Ngayon, mga variable sa PHP ay maluwag nai-type, na nangangahulugan na hindi mo kailangang 1005 00:49:56,530 --> 00:50:00,030 upang ipahiwatig kung ano ang uri ng data ay kapag ikaw ay naka deklarasyon ito. 1006 00:50:00,030 --> 00:50:03,505 Gayunpaman, ito ay hindi nangangahulugan na sila Walang anumang uri sa lahat. 1007 00:50:03,505 --> 00:50:09,370 Kaya kung Ipinahahayag ko sa isang variable at i-set lamang ito kasing-halaga sa 1, at pagkatapos ay Ipinahahayag ko 1008 00:50:09,370 --> 00:50:15,140 isa pang variable, itakda ito katumbas ng "1," at pagkatapos ng isa pa 1.0, mahusay, 1009 00:50:15,140 --> 00:50:19,410 depende sa uri ng pagkakapantay-pantay operator ang gagamitin ko, kung gusto ko upang ihambing 1010 00:50:19,410 --> 00:50:21,830 sa lahat ng mga uri, pagkatapos ay i- ang mga ito ay magiging katumbas. 1011 00:50:21,830 --> 00:50:25,570 Ngunit kung gusto ko upang matiyak na ang mga uri ay pantay-pantay, maaari pa ring PHP gawin 1012 00:50:25,570 --> 00:50:28,690 na, kahit na hindi namin ipahiwatig anong uri ito ay kapag kami 1013 00:50:28,690 --> 00:50:31,170 gawin ang mga file muna. 1014 00:50:31,170 --> 00:50:33,990 >> Ngayon, sa PHP, kahit kami ay lumilipat sa ibabaw mula sa programming 1015 00:50:33,990 --> 00:50:39,360 wika mula sa C, mayroon pa rin namin ang aming mapagkakatiwalaan kung kundisyon, tulad nito lamang. 1016 00:50:39,360 --> 00:50:43,270 Mayroon pa rin namin ang aming habang loop, lamang tulad nito, kung saan inilagay mo sa iyong 1017 00:50:43,270 --> 00:50:47,300 kalagayan at pagkatapos ay ang katawan ng loop. 1018 00:50:47,300 --> 00:50:50,360 At pagkatapos ay mayroon din namin ang aming para sa loop, na kung saan ay karaniwang mukhang ganito. 1019 00:50:50,360 --> 00:50:55,330 Kaya kung nais kong umulit sa ibabaw ng lahat siyam psets at isumite at tawagan ang isang 1020 00:50:55,330 --> 00:50:58,960 function na submitPset, pagkatapos ay maaari kong gawin iyon dito, na kung saan ka guys na ang lahat 1021 00:50:58,960 --> 00:50:59,830 tapos na sa pamamagitan ng puntong ito. 1022 00:50:59,830 --> 00:51:01,080 Binabati kita, sa pamamagitan ng ang paraan. 1023 00:51:01,080 --> 00:51:04,560 1024 00:51:04,560 --> 00:51:07,550 >> Para sa mga camera, mga tao sinabing, salamat sa iyo. 1025 00:51:07,550 --> 00:51:11,220 Ngayon, kung hindi mo nais na gumamit lamang ito para sa loop, pagkatapos ay PHP aktwal na rin 1026 00:51:11,220 --> 00:51:13,580 ay mga bagay na tinatawag na foreach loop. 1027 00:51:13,580 --> 00:51:22,210 Kaya kung mayroon akong isang array ng integer, 0 sa pamamagitan ng 8, na naka-imbak sa array psets, 1028 00:51:22,210 --> 00:51:27,290 pagkatapos ay maaari kong magkaroon ng isang foreach loop na iterates sa paglipas ng bawat numero sa psets. 1029 00:51:27,290 --> 00:51:30,640 At pagkatapos ay maaari kong tawagan ang parehong gumana walong beses, 1030 00:51:30,640 --> 00:51:31,910 tulad lang ng ginawa ko dati. 1031 00:51:31,910 --> 00:51:36,480 Kaya ito para sa bawat loop ay maganda, dahil hindi mo kailangang i-kung hindi mo alam 1032 00:51:36,480 --> 00:51:39,470 ang eksaktong haba ng array na pa, pagkatapos gamit ang foreach loop 1033 00:51:39,470 --> 00:51:42,800 Dadalhin pag-aalaga ng na para sa iyo. 1034 00:51:42,800 --> 00:51:45,410 >> Kaya ginawa ko psets bilang isang array. 1035 00:51:45,410 --> 00:51:46,700 Tignan natin ang Hayaang. 1036 00:51:46,700 --> 00:51:51,290 Ang mga array sa PHP ay karaniwang ang parehong bilang sana ang mga na mayroon kaming sa C, kung saan 1037 00:51:51,290 --> 00:51:52,960 maaari mong magpahayag ng isang array. 1038 00:51:52,960 --> 00:51:59,200 At dito, maaari ba akong idedeklara isang walang laman na array at pagkatapos ay bumuo ng hanggang dynamic na sa pamamagitan ng paggamit 1039 00:51:59,200 --> 00:52:00,850 mga indeks ng bilang integer. 1040 00:52:00,850 --> 00:52:04,140 Kaya index 0, ako pagpunta sa mag-imbak isang integer na may pangalang 1. 1041 00:52:04,140 --> 00:52:09,210 Sa index ng 1 sa aking listahan, ako ng pagpunta upang i-imbak ang halaga 2. 1042 00:52:09,210 --> 00:52:12,670 At sa ikatlong index ngunit ang pangalawang numero, pupuntahan ko 1043 00:52:12,670 --> 00:52:14,870 mag-imbak ang numero 12. 1044 00:52:14,870 --> 00:52:17,250 >> Ngayon, ito ay pinong sa na Gumagana rin ito gumagana. 1045 00:52:17,250 --> 00:52:21,310 Ngunit sinasabi ang mahalaga ito sa akin kung ano ang bawat index hold. 1046 00:52:21,310 --> 00:52:24,500 Para sa akin, index 0 ibig sabihin kung paano maraming pusa Mayroon akong. 1047 00:52:24,500 --> 00:52:27,400 At sa index ng 1 ibig sabihin kung paano maraming owls Mayroon akong. 1048 00:52:27,400 --> 00:52:29,450 At sa susunod na isa ay nangangahulugan kung gaano karaming mga aso. 1049 00:52:29,450 --> 00:52:34,140 Well, kung gayon ito upang tukuyin iyon, sa halip ng pagkakaroon matandaan 0 magkaugnay sa 1050 00:52:34,140 --> 00:52:38,090 pusa at 1 sa owls, maaari ko bang gamitin ang nag-uugnay array, na nangangahulugan na ang 1051 00:52:38,090 --> 00:52:42,260 sa halip ng integer tulad ng aking mga indeks, Maaari ko talagang gamitin ang mga string. 1052 00:52:42,260 --> 00:52:43,290 >> Kaya ito ay lubos na kapaki-pakinabang. 1053 00:52:43,290 --> 00:52:47,130 At isa lamang mo na pinalitan lamang ang integer na may mga string. 1054 00:52:47,130 --> 00:52:50,074 At doon mayroon kang isang nag-uugnay array. 1055 00:52:50,074 --> 00:52:51,930 Oo. 1056 00:52:51,930 --> 00:52:55,800 >> Madla: Mayroon bang isang dahilan kung bakit may isang salungguhit para sa ikalawang 1057 00:52:55,800 --> 00:52:58,750 bahagi, dahil ang aking list ay ang array. 1058 00:52:58,750 --> 00:53:01,330 >> ZAMYLA Chan: Ang tanong ay, ay Mayroon bang isang dahilan kung bakit mayroong isang 1059 00:53:01,330 --> 00:53:03,320 magbigay-diin sa pagitan ng aking listahan at? 1060 00:53:03,320 --> 00:53:03,610 Hindi. 1061 00:53:03,610 --> 00:53:06,878 Iyon lang paano ako pagbibigay ng pangalan ang aking mga variable. 1062 00:53:06,878 --> 00:53:11,670 >> Madla: Nasa unang linya, ito ay isang salita. 1063 00:53:11,670 --> 00:53:12,560 >> ZAMYLA Chan: My pasensiya. 1064 00:53:12,560 --> 00:53:13,410 Kukunin ko ayusin iyon. 1065 00:53:13,410 --> 00:53:13,620 Oo. 1066 00:53:13,620 --> 00:53:15,460 Ito ay dapat nasa parehong pangalan ng variable. 1067 00:53:15,460 --> 00:53:16,710 Magandang catch. 1068 00:53:16,710 --> 00:53:19,640 1069 00:53:19,640 --> 00:53:19,950 OK. 1070 00:53:19,950 --> 00:53:22,610 Kaya sabihin lumipat sa string pagdudugtong. 1071 00:53:22,610 --> 00:53:27,500 Kung Nais kong magsagawa ng dalawang mga string, pagkatapos ay maaari kong pagdugtungin ang mga ito 1072 00:53:27,500 --> 00:53:28,550 may mga tuldok na operator. 1073 00:53:28,550 --> 00:53:32,440 Kaya kung mayroon akong Milo bilang isang unang pangalan at Saging bilang isang apelyido, pagkatapos ay 1074 00:53:32,440 --> 00:53:35,430 concatenating may mga tuldok operator at pagkatapos ng paglalagay ng espasyo sa pagitan ng 1075 00:53:35,430 --> 00:53:39,210 gagawa ang isang string na naglalaman ng Milo Saging, na maaari kong pagkatapos Echo o, 1076 00:53:39,210 --> 00:53:41,280 sa halip, mag-print. 1077 00:53:41,280 --> 00:53:44,465 >> Nagsasalita ng echo, ni makipag-usap ipaalam tungkol sa ilang mga kapaki-pakinabang - 1078 00:53:44,465 --> 00:53:44,920 oops. 1079 00:53:44,920 --> 00:53:46,030 Sorry. 1080 00:53:46,030 --> 00:53:52,920 Ang ilang mga kapaki-pakinabang na mga function na PHP. 1081 00:53:52,920 --> 00:53:56,240 Kaya mayroon kaming ang - 1082 00:53:56,240 --> 00:53:57,444 mga kahirapan sa teknikal. 1083 00:53:57,444 --> 00:53:58,694 Isang pangalawang. 1084 00:53:58,694 --> 00:54:16,960 1085 00:54:16,960 --> 00:54:19,550 Ipinadala ko ito. 1086 00:54:19,550 --> 00:54:22,320 Mga problema sa PowerPoint. 1087 00:54:22,320 --> 00:54:29,200 At ang pabalik namin sa mga function na PHP. 1088 00:54:29,200 --> 00:54:32,010 1089 00:54:32,010 --> 00:54:35,150 At ang pabalik namin sa mga function na PHP. 1090 00:54:35,150 --> 00:54:39,890 >> Kaya namin ang nangangailangan ng pag-andar, kung saan kung pumasa ka sa isang file, narito ay lamang 1091 00:54:39,890 --> 00:54:43,300 isang halimbawa ng isang file na Maaaring pumasa in ako 1092 00:54:43,300 --> 00:54:47,605 Pagkatapos na isama ang code na PHP mula sa na file na isaad ko. 1093 00:54:47,605 --> 00:54:49,940 At ito ay suriin na in 1094 00:54:49,940 --> 00:54:54,450 Pagkatapos ay mayroon din kami echo, na ay isang parallel sa printf. 1095 00:54:54,450 --> 00:54:57,710 Lumabas ay isang parallel sa masira, na kung saan lumabas ang bloke ng 1096 00:54:57,710 --> 00:54:58,570 code na ikaw ay in 1097 00:54:58,570 --> 00:55:03,180 At pagkatapos ay walang laman mga tseke kung ang isang ibinigay na variable ay tulad null o zero o 1098 00:55:03,180 --> 00:55:08,482 ano naman ay equated sa pagiging walang laman. 1099 00:55:08,482 --> 00:55:09,438 Oo. 1100 00:55:09,438 --> 00:55:15,341 >> Madla: Para sa mga string pagdudugtong tuldok operator ng isa, sa PHP, ay ang 1101 00:55:15,341 --> 00:55:20,158 katulad ng nasa JavaScript kung saan gumagamit ito ang tuldok para sa pagdudugtong nangangahulugan plus? 1102 00:55:20,158 --> 00:55:27,440 Kaya para sa buong pangalan, maaari kang magkaroon ng dolyar mag-sign unang + at pagkatapos + magtatagal? 1103 00:55:27,440 --> 00:55:27,720 >> ZAMYLA Chan: Oo. 1104 00:55:27,720 --> 00:55:32,150 Kaya ang tanong ay kung sa PHP namin maaaring gumamit ng parehong string pagdudugtong 1105 00:55:32,150 --> 00:55:33,890 bilang sa JavaScript na may plus. 1106 00:55:33,890 --> 00:55:35,410 At Joseph ay dumapo na sa ibang pagkakataon. 1107 00:55:35,410 --> 00:55:36,620 Sa tingin ko siya ay may isang slide sa na. 1108 00:55:36,620 --> 00:55:37,570 Talaga, iba ito. 1109 00:55:37,570 --> 00:55:41,310 Kaya sa JavaScript, kailangan mong gumamit ang plus upang pagdugtungin string. 1110 00:55:41,310 --> 00:55:43,280 At sa PHP, kailangan mong gamitin ang tuldok operator. 1111 00:55:43,280 --> 00:55:44,530 Kaya ang mga ito ay naiiba. 1112 00:55:44,530 --> 00:55:46,680 1113 00:55:46,680 --> 00:55:46,910 >> OK. 1114 00:55:46,910 --> 00:55:49,500 Kaya ngayon na nai-sakop namin ang lahat ng ito ang PHP, kung saan ginagawa nito 1115 00:55:49,500 --> 00:55:50,490 talagang dumating sa madaling-magamit? 1116 00:55:50,490 --> 00:55:54,470 Well, pagdating sa madaling-magamit na kapag kami maaari itong pagsamahin sa aming HTML. 1117 00:55:54,470 --> 00:55:59,550 Kaya aming PHP ay magbibigay sa amin ng kapangyarihan upang baguhin ang nilalaman ng HTML ng isang pahina bago ang 1118 00:55:59,550 --> 00:56:00,000 naglo-load nito. 1119 00:56:00,000 --> 00:56:04,270 Kaya batay sa iba't ibang mga kundisyon, karaniwang ang tiyak na user na 1120 00:56:04,270 --> 00:56:07,520 log in ka, maaari naming ipakita iba't ibang impormasyon. 1121 00:56:07,520 --> 00:56:08,800 Linda, ay may tanong ka? 1122 00:56:08,800 --> 00:56:15,510 >> Madla: Maaari mong pagdugtungin isang integer rin? 1123 00:56:15,510 --> 00:56:16,760 >> ZAMYLA Chan: Oo, magagawa mo na. 1124 00:56:16,760 --> 00:56:19,530 1125 00:56:19,530 --> 00:56:23,270 Kaya ang tanong ay kung maaari kang pagdugtungin integer o iba pang 1126 00:56:23,270 --> 00:56:28,920 variable.s ngayon, ilipat namin sa upang MVC, na ay isang tularan na namin ginagamit sa 1127 00:56:28,920 --> 00:56:33,380 pset7 at maraming web designer gamitin para sa pag-aayos ng mga code sa ang mga file 1128 00:56:33,380 --> 00:56:34,490 sa kanilang website. 1129 00:56:34,490 --> 00:56:35,870 M ang ibig sabihin ay Modelo. 1130 00:56:35,870 --> 00:56:41,450 At talaga, mga file modelo ay haharapin may mga pakikipag-ugnayan sa database. 1131 00:56:41,450 --> 00:56:44,640 Tingnan ang mga file, ng mga ito sa aesthetics ng website. 1132 00:56:44,640 --> 00:56:47,550 At Controller handle mga kahilingan ng gumagamit, Pina-parse 1133 00:56:47,550 --> 00:56:49,230 data, ang iba pang logic. 1134 00:56:49,230 --> 00:56:52,520 >> Sa pset7, pinagsama namin ang mga modelo at ang controller. 1135 00:56:52,520 --> 00:56:55,880 At tinawag lang namin ang mga ito controllers at ilagay ang mga ito sa pampublikong direktoryo. 1136 00:56:55,880 --> 00:57:01,730 At ang mga file view, ginagamit namin ang mga ito bilang mga template sa direktoryo template. 1137 00:57:01,730 --> 00:57:07,260 Kaya kumakatawan din ito diagram dito na parehong uri ng paghahati sa 1138 00:57:07,260 --> 00:57:10,510 modelo at ang controller sa mga lilang dito sa kaliwa at 1139 00:57:10,510 --> 00:57:12,770 ang view sa kanan. 1140 00:57:12,770 --> 00:57:16,020 Kaya ito ay isang eskematiko na ang ilan sa iyo maaaring nakakita sa Oras o sa Opisina 1141 00:57:16,020 --> 00:57:19,130 diagram tayo ay pagguhit ng bilang mo ay ang pag-uunawa iyong pset. 1142 00:57:19,130 --> 00:57:25,030 >> Kaya dito, sa isang ibinigay na controller, isang modelo controller, mayroon kaming mga pag-andar 1143 00:57:25,030 --> 00:57:30,490 na umuugnay sa querying ang SQL database, e-execute PHP logic. 1144 00:57:30,490 --> 00:57:32,370 Siguro gusto mong maghanap isang stock sa Yahoo! 1145 00:57:32,370 --> 00:57:34,590 Finance. 1146 00:57:34,590 --> 00:57:37,390 O di kaya, gusto mong tingnan lamang sa makita kung ang isang gumagamit ay nagsumite ng isang 1147 00:57:37,390 --> 00:57:40,250 bumubuo na bago pagkakaroon bumisita sa iyong pahina. 1148 00:57:40,250 --> 00:57:43,390 At pagkatapos ay nais mong i-render isang bumubuo sa paglipas dito. 1149 00:57:43,390 --> 00:57:48,210 Pagkatapos ng form na iyon ay naisumite sa pamamagitan ng gumagamit, ang pagkilos na noon ay 1150 00:57:48,210 --> 00:57:53,470 tinukoy sa tag na HTML form ni Gusto isaad ang pahina na ito 1151 00:57:53,470 --> 00:57:55,620 Ibinabalik ang data na iyon sa. 1152 00:57:55,620 --> 00:57:59,460 >> Kaya lahat ng impormasyon na iyon ay magiging ipinadala pabalik sa iyong controller. 1153 00:57:59,460 --> 00:58:02,620 Pagkatapos nais mong gawin marahil ng kaunti pang logic sa na at siguro execute ng ilang 1154 00:58:02,620 --> 00:58:06,510 higit pang mga query sa database ng SQL at pagkatapos, sa wakas, makabuo ng isang mahusay 1155 00:58:06,510 --> 00:58:11,930 naka-pack na hanay ng mga impormasyon na iyong gagawin pumasa sa sa ilang iba pang mga template 1156 00:58:11,930 --> 00:58:13,950 na ipinapakita na impormasyon. 1157 00:58:13,950 --> 00:58:17,030 Ngayon, paano ko kami talaga-package na impormasyon up? 1158 00:58:17,030 --> 00:58:23,980 Well, mayroon kaming isang function na tinatawag na render na noon ay nasa functions.php file sa 1159 00:58:23,980 --> 00:58:29,950 pset7, kung saan ang pumasa sa iyo sa pangalan ng isang file, ang pangalan ng isang template. 1160 00:58:29,950 --> 00:58:32,160 >> At pagkatapos rin pumasa ka sa isang nag-uugnay array. 1161 00:58:32,160 --> 00:58:37,150 At gayon ay kumakatawan na nag-uugnay array ang iba't ibang impormasyon 1162 00:58:37,150 --> 00:58:39,040 na gusto mong pumasa in 1163 00:58:39,040 --> 00:58:43,460 Ngayon, kung ano ang nangyayari upang maging pare-pareho sa mga halimbawa ay ang susi o, 1164 00:58:43,460 --> 00:58:47,070 sa halip, ang mga key ng nag-uugnay array, mga ay kung ano ang nangyayari upang maging 1165 00:58:47,070 --> 00:58:51,050 inaasahang maging pare-pareho sa pamamagitan ng mga template, dahil alam nito na kailangan nito 1166 00:58:51,050 --> 00:58:53,990 isang bagay na tinatawag na mensahe o tinatawag na pangalan. 1167 00:58:53,990 --> 00:58:56,940 At pagkatapos ay ang mga bagay sa kanan, ang aktwal na mga halaga, kaya sa kasong ito, kung sino ang 1168 00:58:56,940 --> 00:59:00,750 isang magandang batang lalaki at Milo, mga pupunta na maging ang mga halaga na ay nagbabago 1169 00:59:00,750 --> 00:59:05,610 na ang controller nagbabago sa bawat oras o batay sa isang tiyak na kalagayan at 1170 00:59:05,610 --> 00:59:07,120 ay pumasa na in 1171 00:59:07,120 --> 00:59:12,790 >> Kaya dito sa template, nakita namin na namin Gumagamit ka ng HTML mga espesyal na character, 1172 00:59:12,790 --> 00:59:16,370 kung saan talaga lamang ay nangangahulugan na gusto naming upang makuha ang peer string na ang 1173 00:59:16,370 --> 00:59:17,580 ilagay in gumagamit 1174 00:59:17,580 --> 00:59:20,880 At gusto naming palitan mensahe sa doon. 1175 00:59:20,880 --> 00:59:26,110 Kaya pagkatapos ay kapag aktwal namin tingnan ang file, ang mga partikular na 1176 00:59:26,110 --> 00:59:28,700 impormasyon Lumipas in 1177 00:59:28,700 --> 00:59:33,850 Tandaan na ang susi sa kung paano mag-render mga gawa ay na ang mga key ng nag-uugnay 1178 00:59:33,850 --> 00:59:37,170 array, mga maging variable mga pangalan dito. 1179 00:59:37,170 --> 00:59:40,720 At kaya ang mga halaga ng na key sa nag-uugnay array pagkatapos ay nagiging 1180 00:59:40,720 --> 00:59:41,970 halaga ng variable. 1181 00:59:41,970 --> 00:59:44,800 1182 00:59:44,800 --> 00:59:46,040 >> Ngayon, ni lumipat sa SQL ipaalam. 1183 00:59:46,040 --> 00:59:48,010 Ito ang ibig sabihin ay Naka-istrakturang -Query Wika. 1184 00:59:48,010 --> 00:59:50,460 At kaya ito ay programming lamang wika dinisenyo 1185 00:59:50,460 --> 00:59:51,880 para sa pamamahala ng mga database. 1186 00:59:51,880 --> 00:59:56,860 At ito ay dumating sa madaling-gamiting para sa amin sa aming website pananalapi pset7. 1187 00:59:56,860 --> 01:00:00,510 Mahalaga, ito lamang ay isang madaling paraan upang subaybayan at pamahalaan ang mga bagay at mga talahanayan 1188 01:00:00,510 --> 01:00:02,070 at i-link ang mga ito sa isa't isa. 1189 01:00:02,070 --> 01:00:06,860 Ngayon, isipin ang iyong database ng SQL talaga bilang isang Excel file, marahil, 1190 01:00:06,860 --> 01:00:10,040 may maramihang mga naka-tab na mga sheet. 1191 01:00:10,040 --> 01:00:13,820 >> Kaya maaaring mayroon kang maramihang mga talahanayan, marahil, na naka-link sa isa't isa. 1192 01:00:13,820 --> 01:00:19,420 At tulad ng Excel, mayroon kami ng maraming ang pag-andar na gusto naming. 1193 01:00:19,420 --> 01:00:22,300 Halimbawa, maaari naming piliin tiyak na mga hilera. 1194 01:00:22,300 --> 01:00:24,110 Maaari naming magpasok ng impormasyon. 1195 01:00:24,110 --> 01:00:25,560 Maaari naming i-update ang mga hilera. 1196 01:00:25,560 --> 01:00:27,440 At maaari naming ring tanggalin ang mga bagay. 1197 01:00:27,440 --> 01:00:30,920 1198 01:00:30,920 --> 01:00:36,560 >> SQL Ang piliin gawa sa pamamagitan ng pagpili hilera o isang hilera ng mga tinukoy na mga hanay mula sa isang 1199 01:00:36,560 --> 01:00:39,640 database na tumutugma sa isang tiyak na pamantayan na nagpapahiwatig sa iyo. 1200 01:00:39,640 --> 01:00:44,930 Kaya sa paglipas dito kapag nakita kong piliin * mula sa wizard kung saan bahay = Ravenclaw, pagkatapos ay 1201 01:00:44,930 --> 01:00:48,340 Ako ng pagpili *, na nangangahulugan na ako ay pagpili sa bawat solong hanay sa na 1202 01:00:48,340 --> 01:00:56,340 Ang hilera mula sa talahanayan wizard ngunit kung lamang ang haligi ng bahay ay katumbas ng Ravenclaw. 1203 01:00:56,340 --> 01:00:57,840 Ngayon, ito ay purong o SQL. 1204 01:00:57,840 --> 01:01:02,680 Kaya kung ako nagpunta sa PHPmyadmin, na ang partikular na paraan na ginagamit namin upang pamahalaan ang 1205 01:01:02,680 --> 01:01:07,040 ang aming mga database ng SQL, pagkatapos ay maaari kong magpasok ng mga na sa PHPmyadmin website. 1206 01:01:07,040 --> 01:01:08,290 At na nais isakatuparan. 1207 01:01:08,290 --> 01:01:11,280 >> Ngunit namin gusto talaga gawin na sa gilid ng PHP. 1208 01:01:11,280 --> 01:01:12,580 Kaya kung paano ang gagawin namin na? 1209 01:01:12,580 --> 01:01:20,180 Well, gagamitin namin ang mga query function, kung saan talaga executes na SQL query. 1210 01:01:20,180 --> 01:01:21,830 Ang paggamit? 1211 01:01:21,830 --> 01:01:25,850 bilang isang placeholder, maaari naming pumasa sa ilang mga mga halaga sa aming mga string na namin 1212 01:01:25,850 --> 01:01:26,920 gusto ninyong palitan. 1213 01:01:26,920 --> 01:01:32,110 Kaya marahil ako sa pag-iimbak ng iba't ibang mga halaga sa curr_house, na 1214 01:01:32,110 --> 01:01:34,400 ay kumakatawan sa kasalukuyang bahay na ako pupunta sa pamamagitan ng. 1215 01:01:34,400 --> 01:01:39,040 Kaya ang maaari kong pumasa na sa bilang placeholder may ng tandang pananong. 1216 01:01:39,040 --> 01:01:43,290 At pagkatapos ay ako makakakita talaga isakatuparan ang parehong bagay tulad ng ginawa ko dati, maliban 1217 01:01:43,290 --> 01:01:45,550 ngayon, ako sa PHP. 1218 01:01:45,550 --> 01:01:51,300 >> At query ay magbabalik ng isang nag-uugnay array. 1219 01:01:51,300 --> 01:01:53,470 At ako pupunta upang mag-imbak ito sa mga hilera. 1220 01:01:53,470 --> 01:01:56,880 Ngayon, ang query ay maaaring palaging mabibigo. 1221 01:01:56,880 --> 01:02:02,870 Marahil na ang SQL query ay hindi ma execute dahil ang talahanayan ay hindi umiiral. 1222 01:02:02,870 --> 01:02:04,310 O di kaya, ang haligi ay hindi umiiral. 1223 01:02:04,310 --> 01:02:05,400 May nangyaring mali. 1224 01:02:05,400 --> 01:02:08,170 Well, sa kasong iyon, makikita mo gusto upang gawing Siguraduhin na i-tsek kung ang mga 1225 01:02:08,170 --> 01:02:09,700 query ibinalik na hindi totoo. 1226 01:02:09,700 --> 01:02:15,590 At iyon sa pamamagitan ng paggamit ng triple ay katumbas ng operasyon doon. 1227 01:02:15,590 --> 01:02:19,660 >> At pagkatapos ay humihingi ako ng paumanhin, kung saan ay isa pang CS50 function, ang pagpasa sa isang mensahe. 1228 01:02:19,660 --> 01:02:23,435 At kung titingnan mo sa Humihingi, ang lahat ng ito talaga ginagawa ay render apology.php. 1229 01:02:23,435 --> 01:02:26,100 1230 01:02:26,100 --> 01:02:26,410 Oo. 1231 01:02:26,410 --> 01:02:29,630 >> Madla: Maaari mo bang ipaliwanag kung ano na star ginagawa sa pagitan ng piliin at mula sa? 1232 01:02:29,630 --> 01:02:30,710 >> ZAMYLA Chan: Oo, walang pasubali. 1233 01:02:30,710 --> 01:02:35,220 Kaya ang bituin sa pagitan ng mga piling at mula sa Ang ibig sabihin na gusto kong piliin ang buong 1234 01:02:35,220 --> 01:02:37,440 buong hilera mula sa aking mga talahanayan. 1235 01:02:37,440 --> 01:02:41,900 Maaari ko ang ipinahiwatig piliin ang pangalanan, taon, bahay. 1236 01:02:41,900 --> 01:02:46,160 At ako ay lamang makakuha ng mga tatlong mga haligi sa aking mga talahanayan. 1237 01:02:46,160 --> 01:02:51,560 Ngunit kung sasabihin kong piliin *, pagkatapos ay idedetalye ko makakuha ng lahat ng bagay sa hanay na iyon. 1238 01:02:51,560 --> 01:02:53,760 Pagkatapos pupuntahan ko pumunta ka sa unang likod. 1239 01:02:53,760 --> 01:02:57,656 >> Madla: Kaya ito ay pa rin sa SQL, tama? 1240 01:02:57,656 --> 01:02:59,610 Ay sa query na ito o ay ito na PHP? 1241 01:02:59,610 --> 01:03:00,550 >> ZAMYLA Chan: Kami ay sa isang query. 1242 01:03:00,550 --> 01:03:01,940 Kaya ito ay nasa PHP. 1243 01:03:01,940 --> 01:03:06,280 Kaya gamit ang query function na PHP, kami ay nagpapatupad ng isang SQL query. 1244 01:03:06,280 --> 01:03:11,988 1245 01:03:11,988 --> 01:03:15,364 >> Madla: Ay kahit ano sa SQL case-sensitive, tulad piliin 1246 01:03:15,364 --> 01:03:17,834 o wizard o bahay? 1247 01:03:17,834 --> 01:03:20,050 >> ZAMYLA Chan: Ay kahit ano sa SQL case-sensitive? 1248 01:03:20,050 --> 01:03:21,760 Naniniwala akong kaya, oo. 1249 01:03:21,760 --> 01:03:24,620 Naniniwala ako na pumili at FROM at SAAN ay case-sensitive. 1250 01:03:24,620 --> 01:03:25,535 Walang? 1251 01:03:25,535 --> 01:03:27,500 >> Rob BOWDEN: Kaya, ito ay ang kabaligtaran. 1252 01:03:27,500 --> 01:03:32,030 Ang mga pangalan ng haligi at ng talahanayan paraan, lahat ng mga ay case-sensitive. 1253 01:03:32,030 --> 01:03:35,470 Ngunit anuman sa MySQL key salita, tulad ng Piliin, MULA, at SAAN, ang mga ito ay hindi 1254 01:03:35,470 --> 01:03:36,140 case-sensitive. 1255 01:03:36,140 --> 01:03:36,420 OK. 1256 01:03:36,420 --> 01:03:37,780 Kaya ang katapat ng kung ano ang aking sinabi. 1257 01:03:37,780 --> 01:03:40,420 Kaya lahat ng mga MySQL mga keyword - 1258 01:03:40,420 --> 01:03:42,670 pumili, mula sa, kung saan - mga ay hindi case-sensitive. 1259 01:03:42,670 --> 01:03:44,630 Ngunit lahat ng iba pa ay. 1260 01:03:44,630 --> 01:03:45,210 OK. 1261 01:03:45,210 --> 01:03:46,500 Ikaw nasa harap. 1262 01:03:46,500 --> 01:03:52,041 >> Madla: Kung $ ko mga hilera sa mga tuntunin ng higit sa isang hilera, ang mean na 1263 01:03:52,041 --> 01:03:53,640 lamang ay nagiging isang nag-uugnay array? 1264 01:03:53,640 --> 01:03:59,550 >> ZAMYLA Chan: Kaya ang tanong ay kung hilera may higit sa isang hilera sa loob nito, ang 1265 01:03:59,550 --> 01:04:01,800 itong maging isang nag-uugnay array? 1266 01:04:01,800 --> 01:04:05,680 Kaya ito ay isang hanay ng mga nag-uugnay array na. 1267 01:04:05,680 --> 01:04:10,730 Kaya kahit na mayroong hilera lamang ng isang ibinalik, pagkatapos ay kailangan mong i-pumunta sa 1268 01:04:10,730 --> 01:04:12,690 0 index ng resultang iyon. 1269 01:04:12,690 --> 01:04:15,316 At pagkatapos ay nais mong magkaroon ng na unang hilera. 1270 01:04:15,316 --> 01:04:17,482 Oo, Belinda? 1271 01:04:17,482 --> 01:04:21,258 >> Madla: Kapag ginamit mo ===, ay ito lamang ang tanging pagkakataon? 1272 01:04:21,258 --> 01:04:22,210 O kaya ay iba pa doon? 1273 01:04:22,210 --> 01:04:26,815 >> ZAMYLA Chan: Kaya sa kasong ito, === ay isang paghahambing sa kabuuan ng mga uri. 1274 01:04:26,815 --> 01:04:29,870 1275 01:04:29,870 --> 01:04:34,050 Sorry. === Ay isang paghahambing na naghahambing sa mga uri. 1276 01:04:34,050 --> 01:04:37,620 At pagkatapos == ikinukumpara sa lahat ng mga uri. 1277 01:04:37,620 --> 01:04:41,620 >> Madla: Maaari mo bang ipaliwanag kung ano hilera ay sa sitwasyong ito? 1278 01:04:41,620 --> 01:04:45,120 Ay Ang hilera ito ng data? 1279 01:04:45,120 --> 01:04:48,100 >> ZAMYLA Chan: Sa susunod na slide, ako pagpunta sa ipaliwanag kung ano mga hilera ay. 1280 01:04:48,100 --> 01:04:49,890 Kaya kung hindi tututol kayo na may hawak na off sa na. 1281 01:04:49,890 --> 01:04:50,620 At pagkatapos mo sa likod? 1282 01:04:50,620 --> 01:04:54,699 >> Madla: Para sa mga pag-andar tulad ng query, render at humihingi [hindi marinig]? 1283 01:04:54,699 --> 01:04:59,050 1284 01:04:59,050 --> 01:05:03,050 >> ZAMYLA Chan: Ang tanong ay kung mga function - query, humihingi kami ng paumanhin, 1285 01:05:03,050 --> 01:05:04,510 at i-render - 1286 01:05:04,510 --> 01:05:05,930 ay karaniwan sa PHP. 1287 01:05:05,930 --> 01:05:09,460 Ang mga ito ang mga bago na CS50 Sinulat ni para pset7. 1288 01:05:09,460 --> 01:05:09,910 At Jay? 1289 01:05:09,910 --> 01:05:15,333 >> Madla: Kapag kailangan mong sabihin $ _session, Ay na lamang para sa mga ID? 1290 01:05:15,333 --> 01:05:17,310 O maaari kang sinabi na dito? 1291 01:05:17,310 --> 01:05:23,440 >> ZAMYLA Chan: Kaya ang tanong ay, kapag gumagamit kami ng $ _session, na noon ay isang tiyak na 1292 01:05:23,440 --> 01:05:25,290 global variable na ginagamit namin. 1293 01:05:25,290 --> 01:05:32,080 Narito ito variable ay pagpunta sa maging lokal sa aming mga function. 1294 01:05:32,080 --> 01:05:36,588 Kaya kami lamang ang deklarasyon isang bagong variable. 1295 01:05:36,588 --> 01:05:38,460 >> Madla: Paano ay humihingi ng paumanhin ipinatupad? 1296 01:05:38,460 --> 01:05:40,960 >> ZAMYLA Chan: Ang tanong ay, paano ay humihingi ng paumanhin ipinatupad? 1297 01:05:40,960 --> 01:05:44,180 At sa tingin ko ito ay talagang isang kaakit-akit mahusay na kasanayan para sa iyo guys upang pumunta sa 1298 01:05:44,180 --> 01:05:49,260 ang functions.php seksyon at tumingin sa Humihingi at makita kung paano mo maaaring magkaroon ng 1299 01:05:49,260 --> 01:05:50,670 tapos na ito sa iyong sarili. 1300 01:05:50,670 --> 01:05:55,620 Kaya maaari ko bang iwan na sa iyo ngunit lamang sabihin na kung tiningnan mo ang humihingi ng paumanhin, 1301 01:05:55,620 --> 01:06:02,110 pagkatapos ay madadala ang mensahe na iyong na isinumite sa Humihingi, at pagkatapos nito 1302 01:06:02,110 --> 01:06:06,570 nagpapagana sa mensaheng iyon. 1303 01:06:06,570 --> 01:06:08,240 Anumang higit pang mga tanong? 1304 01:06:08,240 --> 01:06:08,710 Gustung-gusto ko ang mga tanong. 1305 01:06:08,710 --> 01:06:09,555 Kaya panatilihin ang mga ito pagdating. 1306 01:06:09,555 --> 01:06:11,888 >> Madla: [hindi marinig] 1307 01:06:11,888 --> 01:06:13,840 echo o i-print doon? 1308 01:06:13,840 --> 01:06:15,900 >> ZAMYLA Chan: Ang tanong ay, maaari kaming hindi lamang pinagsikapan 1309 01:06:15,900 --> 01:06:17,000 echo o i-print doon. 1310 01:06:17,000 --> 01:06:19,710 Kaya na sana ay tapos na isang bagay bahagyang naiiba. 1311 01:06:19,710 --> 01:06:23,750 Iyon sana ay naka-print na query Nabigo sa na - 1312 01:06:23,750 --> 01:06:27,420 mahusay, sa ngayon, hindi namin talaga sa aming controller. 1313 01:06:27,420 --> 01:06:30,350 Kaya hindi talaga kaming Set up ang HTML dito. 1314 01:06:30,350 --> 01:06:34,946 Humihingi sa pamamagitan ng pag-render apologize.php talaga nagre-redirect ka sa apology.php. 1315 01:06:34,946 --> 01:06:39,560 1316 01:06:39,560 --> 01:06:42,200 OK. 1317 01:06:42,200 --> 01:06:45,880 >> Kaya ngayon, sabihin pumunta sa upang tugunan ang tanong mula sa mas maaga tungkol sa kung ano 1318 01:06:45,880 --> 01:06:47,330 ay tunay na mga hilera. 1319 01:06:47,330 --> 01:06:51,960 Well, ay magbabalik query isang array ng mga hilera. 1320 01:06:51,960 --> 01:06:55,020 At bawat hilera ay kinakatawan sa pamamagitan ng isang nag-uugnay array. 1321 01:06:55,020 --> 01:07:02,840 Kaya kung naipatupad na ako ng ilang SQL query at Naka-imbak ko na ang mga resulta sa mga hilera, pagkatapos ay 1322 01:07:02,840 --> 01:07:07,850 gamit ang isang foreach loop, pagkatapos ay ang array pangalan ay ang unang isa doon - hilera. 1323 01:07:07,850 --> 01:07:13,170 At pagkatapos ay ako pagpunta sa tumawag sa bawat hilera sa may $ hilera. 1324 01:07:13,170 --> 01:07:20,060 >> Kaya iterating sa ibabaw na, ako maaaring pagkatapos ay ma-access ang haligi ng pangalan ng ibinigay na hilera ng, 1325 01:07:20,060 --> 01:07:22,340 taon haligi, at haligi bahay. 1326 01:07:22,340 --> 01:07:28,010 Tandaan na hindi ko pa magawang i- gawin ito sa mga hilera, dahil ang mga hilera index 1327 01:07:28,010 --> 01:07:29,290 pangalan ay hindi umiiral. 1328 01:07:29,290 --> 01:07:31,970 Mga hilera ay isa lamang na hanay ng mga nag-uugnay array. 1329 01:07:31,970 --> 01:07:34,870 Kaya mayroon kang dalawang mga antas ng doon. 1330 01:07:34,870 --> 01:07:37,170 Sa sandaling mayroon ka ng mga array ng mga hilera, mayroon kang upang makakuha ng sa na. 1331 01:07:37,170 --> 01:07:39,110 At pagkatapos ay maaari mong ma-access ang mga hanay. 1332 01:07:39,110 --> 01:07:41,636 Ang ibig na gawin itong malinaw? 1333 01:07:41,636 --> 01:07:42,520 Oo, sa harapan? 1334 01:07:42,520 --> 01:07:45,490 >> Madla: [hindi marinig] buksan bracket para sa [hindi marinig]? 1335 01:07:45,490 --> 01:07:46,220 >> ZAMYLA Chan: Pakiulit sa akin? 1336 01:07:46,220 --> 01:07:49,740 >> Madla: ang open bracket. 1337 01:07:49,740 --> 01:07:52,420 >> ZAMYLA Chan: Ang mga dito? 1338 01:07:52,420 --> 01:07:58,520 Na nagbibigay-daan sa akin upang isama na variable. 1339 01:07:58,520 --> 01:07:58,670 Oo. 1340 01:07:58,670 --> 01:08:01,900 >> Madla: Kapag nag-print ka, ikaw ay nagpi-print sa HTML code? 1341 01:08:01,900 --> 01:08:03,110 >> ZAMYLA Chan: Oo. 1342 01:08:03,110 --> 01:08:07,720 Kapag i-print ko, ito dito ay nasa loob aking template ngayon, kaya 1343 01:08:07,720 --> 01:08:10,310 aking tanawin ng MVC pamamaraan. 1344 01:08:10,310 --> 01:08:12,750 Kaya ako sa pag-print sa HTML. 1345 01:08:12,750 --> 01:08:16,670 >> Madla: Kaya kung namin nagpunta sa developer mga tool pagkatapos tumatakbo na ito, magagawa namin 1346 01:08:16,670 --> 01:08:17,160 na talaga sa code? 1347 01:08:17,160 --> 01:08:18,410 >> ZAMYLA Chan: Iyon ay isang mahusay na pinag-uusapan, oo. 1348 01:08:18,410 --> 01:08:22,359 Kaya kung pinuntahan mo papunta sa mga tool ng nag-develop sa Firefox gamit Firebug o 1349 01:08:22,359 --> 01:08:26,109 Chrome, pagkatapos ay oo, magagawa mo makita ang tiyak na HTML. 1350 01:08:26,109 --> 01:08:28,470 Kaya hindi ito ay magpapakita ng $ hilera ["Pangalan"]. 1351 01:08:28,470 --> 01:08:32,524 Gusto ito magpakita alinman ang name ay nasa hilera na. 1352 01:08:32,524 --> 01:08:36,268 >> Madla: lamang ng isang pangkalahatang isyu, ano ang tr at td tinukoy bilang? 1353 01:08:36,268 --> 01:08:37,672 Bakit namin [hindi marinig]? 1354 01:08:37,672 --> 01:08:41,850 1355 01:08:41,850 --> 01:08:44,814 >> ZAMYLA Chan: hilera tr Table, talahanayan pagkatapos td haligi. 1356 01:08:44,814 --> 01:08:48,060 1357 01:08:48,060 --> 01:08:49,310 OK. 1358 01:08:49,310 --> 01:08:55,771 1359 01:08:55,771 --> 01:08:56,835 >> Madla: Oo, ito ay ang data ng talahanayan. 1360 01:08:56,835 --> 01:08:58,770 >> ZAMYLA Chan: data Table. 1361 01:08:58,770 --> 01:08:59,894 Oo. 1362 01:08:59,894 --> 01:09:08,670 >> Madla: Ito ay isang hilera na kung saan ang hilera ay itinuturing tulad ng isang haligi? 1363 01:09:08,670 --> 01:09:08,910 >> ZAMYLA Chan: Paumanhin. 1364 01:09:08,910 --> 01:09:10,570 Maaari mong ulitin na? 1365 01:09:10,570 --> 01:09:14,450 >> Madla: Paano gagawin mo ilarawan sa isip ang mga hilera? 1366 01:09:14,450 --> 01:09:16,310 >> ZAMYLA Chan: Paano mo ilarawan sa isip hilera sa kung anong uri ng paraan? 1367 01:09:16,310 --> 01:09:21,796 Sigurado ka ng pakikipag-usap tungkol sa mga ito hilera dito o ang mga hilera tr? 1368 01:09:21,796 --> 01:09:22,630 >> Madla: Ang hilera. 1369 01:09:22,630 --> 01:09:25,229 >> ZAMYLA Chan: mga hilerang ito dito? 1370 01:09:25,229 --> 01:09:28,620 Gusto ko ilarawan sa isip na ito bilang Isakatuparan ko ang aking query. 1371 01:09:28,620 --> 01:09:38,729 At sinasabi nito, OK, mayroon akong alinman sa 0 hanggang n dami ng mga hilera na tumutugma sa pamantayang 1372 01:09:38,729 --> 01:09:40,510 na ikaw ay na-query. 1373 01:09:40,510 --> 01:09:43,740 Kaya bang makakuha ng ilang bilang ng mga hilera. 1374 01:09:43,740 --> 01:09:51,450 Kaya mga hilera, mga $ hilera, mga tindahan ng bawat isa sa mga hilera sa isang array. 1375 01:09:51,450 --> 01:09:58,110 Kaya kahit na ito ay isa lamang sa mga ito, ito ay pa rin ng isang array ng mga hilera na tumutugma ito. 1376 01:09:58,110 --> 01:10:03,010 >> Kaya pagkatapos ay, halimbawa, ito ay katulad ng kapag nag-fetch 1377 01:10:03,010 --> 01:10:05,390 ang cache mula sa mga gumagamit. 1378 01:10:05,390 --> 01:10:10,810 At ang pamantayan nagkaroon saan Ay katumbas ng ID ng session ID. 1379 01:10:10,810 --> 01:10:14,250 Mayroon talagang lamang ay isang hilera na maaaring tumugma na. 1380 01:10:14,250 --> 01:10:18,960 Ngunit pa rin hilera ibinalik lamang sa isang hilera. 1381 01:10:18,960 --> 01:10:22,620 Kaya ang kailangan mong i pumunta sa mga hilera, 0 index, index ng cache sa 1382 01:10:22,620 --> 01:10:26,195 talaga makapunta sa iyong cache. 1383 01:10:26,195 --> 01:10:29,650 >> Madla: Ay ang function sa pag-print sa Echo ang parehong bagay? 1384 01:10:29,650 --> 01:10:30,670 >> ZAMYLA Chan: Oo. 1385 01:10:30,670 --> 01:10:31,190 Oo. 1386 01:10:31,190 --> 01:10:33,304 I-print ka ng echo ng pareho. 1387 01:10:33,304 --> 01:10:42,400 >> Madla: ba ang foreach loop ang tanging paraan upang i-index sa mga hilera? 1388 01:10:42,400 --> 01:10:46,110 >> ZAMYLA Chan: Ay isang foreach loop ang tanging paraan na maaari mong 1389 01:10:46,110 --> 01:10:47,030 umulit sa pamamagitan ng hilera? 1390 01:10:47,030 --> 01:10:47,180 Hindi. 1391 01:10:47,180 --> 01:10:51,000 Maaari ka ring gumamit ng isang para sa loop, na ibinigay na alam mo ang haba 1392 01:10:51,000 --> 01:10:53,024 ng array ang hilera ng. 1393 01:10:53,024 --> 01:10:58,500 >> Madla: Maaari mo bang i-access ito gamit ang isang hilera ng [mga hindi marinig]? 1394 01:10:58,500 --> 01:11:01,640 >> ZAMYLA Chan: Kaya hindi mo ma-access ito kung wala kang lamang gamit ang hilera ng 1395 01:11:01,640 --> 01:11:05,160 foreach loop ibinigay na hindi mo pa ipinahayag hilera. 1396 01:11:05,160 --> 01:11:08,150 1397 01:11:08,150 --> 01:11:09,660 Oo. 1398 01:11:09,660 --> 01:11:10,810 Oo, sa puti. 1399 01:11:10,810 --> 01:11:13,990 >> Madla: Kaya ano ang gagawin tr at td gawin? 1400 01:11:13,990 --> 01:11:16,790 >> ZAMYLA Chan: Kaya tr at td ay mga tag na HTML. 1401 01:11:16,790 --> 01:11:19,590 tr nagpapahiwatig ng simula ng isang hilera ng talahanayan. 1402 01:11:19,590 --> 01:11:26,625 At bawat td ay nagpapahiwatig ng isang bagong hanay ng data ng talahanayan. 1403 01:11:26,625 --> 01:11:32,275 >> Madla: Para sa isang visual na ng kung ano ang isang hilera ay tulad, isipin lamang ang SQL, paano 1404 01:11:32,275 --> 01:11:33,510 mayroon silang isang hilera. 1405 01:11:33,510 --> 01:11:35,980 [Hindi marinig]. 1406 01:11:35,980 --> 01:11:36,390 >> ZAMYLA Chan: Oo. 1407 01:11:36,390 --> 01:11:37,630 Iyon ay isang mahusay na punto. 1408 01:11:37,630 --> 01:11:41,510 Maaari mong ilarawan sa isip ang mga hilera bilang lamang tulad ng sa isang Excel talahanayan, lamang 1409 01:11:41,510 --> 01:11:44,540 ang listahan ng mga hilera. 1410 01:11:44,540 --> 01:11:46,870 OK. 1411 01:11:46,870 --> 01:11:47,230 Ayos lang. 1412 01:11:47,230 --> 01:11:50,740 Kaya ngayon na na-nawala namin sa paglipas ng piliin, kung may mga hindi anumang higit pang mga katanungan, kami ay 1413 01:11:50,740 --> 01:11:52,970 pumunta sa ibabaw papunta insert. 1414 01:11:52,970 --> 01:11:58,220 Kaya kung nais kong isingit sa ilang mesa at ipasok ang ilang mga haligi 1415 01:11:58,220 --> 01:12:02,320 mga halaga, maaari ko bang ipasok ang aking sarili sa Ravenclaw sa taon 7. 1416 01:12:02,320 --> 01:12:07,245 Ngunit minsan ay maaaring maging duplicate doon halaga, tulad ng nakita natin sa pset7 kung kailan namin 1417 01:12:07,245 --> 01:12:09,240 ay ina-update ang aming portfolio. 1418 01:12:09,240 --> 01:12:15,610 >> Kaya sa kasong ito, nais naming gamitin ON Doblehin ang KEY UPDATE, nang sa gayon ay hindi namin 1419 01:12:15,610 --> 01:12:18,280 mag-imbak ng maramihang mga hilera na may parehong Pinahahalagahan ngunit sa halip i-update ito. 1420 01:12:18,280 --> 01:12:21,780 1421 01:12:21,780 --> 01:12:25,560 Pagkatapos talaga kami ng pag-update, na kung saan ay hindi isang insert. 1422 01:12:25,560 --> 01:12:30,100 Ito ay lamang ng isang update kung saan mo i-update sa isang tiyak na talahanayan na may isang naibigay na 1423 01:12:30,100 --> 01:12:34,403 pamantayan at pagkatapos, sa wakas, tanggalin, na gagawin ng isang halos katulad na bagay. 1424 01:12:34,403 --> 01:12:40,200 >> Madla: Maaari mo bang sa madaling sabi pumunta sa ibabaw ng duplicate key? 1425 01:12:40,200 --> 01:12:40,850 >> ZAMYLA Chan: Oo. 1426 01:12:40,850 --> 01:12:48,340 Mahalaga dito, mayroon akong INSERT SA gringotts, ay, galleons, ang mga halagang ito. 1427 01:12:48,340 --> 01:12:56,900 Ngunit ID, siguro, ay isang natatanging key set up ang halaga sa MySQL talahanayan. 1428 01:12:56,900 --> 01:13:06,750 Kaya kung nai-set up ako ng ID na, pagkatapos ay hindi ko maaaring magpasok ng isang bagong hilera. 1429 01:13:06,750 --> 01:13:10,961 Kaya kung hindi nito umiiral na, pagkatapos Mayroon akong upang i-update ito. 1430 01:13:10,961 --> 01:13:16,040 1431 01:13:16,040 --> 01:13:17,722 Sa gitna sa puti. 1432 01:13:17,722 --> 01:13:21,570 >> Madla: Kaya isingit, i-update, magtanggal, at piliin, ay ang mga lahat ng mga magagamit 1433 01:13:21,570 --> 01:13:22,875 lokal na [hindi marinig]? 1434 01:13:22,875 --> 01:13:27,320 1435 01:13:27,320 --> 01:13:29,630 >> ZAMYLA Chan: Kaya isingit, update, magtanggal, at 1436 01:13:29,630 --> 01:13:31,120 piliin ang lahat ng mga query SQL. 1437 01:13:31,120 --> 01:13:34,970 Kaya sa tuwing gumagamit ka ng SQL, magkakaroon ka ng mga magagamit. 1438 01:13:34,970 --> 01:13:38,226 1439 01:13:38,226 --> 01:13:40,706 >> Madla: Bumalik sa nakaraang pagsusulit - 1440 01:13:40,706 --> 01:13:44,178 nagkaroon ng isang katanungan na may Aaksyunan kung nagkaroon ka ng isang talahanayan at nais na 1441 01:13:44,178 --> 01:13:52,610 magpasok ng mga marka ng pagsubok sa isa at mong isingit ang iyong pangalan kaya hindi ito ipaalam sa iyo 1442 01:13:52,610 --> 01:13:54,594 [Hindi marinig] test score ng iyong kaibigan. 1443 01:13:54,594 --> 01:13:59,060 Paano gagawin mo na may insert? 1444 01:13:59,060 --> 01:14:02,490 >> ZAMYLA Chan: Kaya ang tanong ay tungkol sa isang naunang tanong mid-matagalang. 1445 01:14:02,490 --> 01:14:04,320 Hindi ako ng kamalayan ng kung aling mga isa ito sa ngayon. 1446 01:14:04,320 --> 01:14:06,790 Kaya siguro pagkatapos, kung nais mong makabuo at ipakita sa akin, pagkatapos ay maaari ko 1447 01:14:06,790 --> 01:14:08,155 ay tiyak na magbibigay sa iyo ng mga tip. 1448 01:14:08,155 --> 01:14:11,250 1449 01:14:11,250 --> 01:14:15,460 Ngunit nagsasalita ng pagpasok ng mga bagay, tulad ng pagkuha ng kalidad ng isang tao kapag nag- 1450 01:14:15,460 --> 01:14:18,800 hindi dapat, makipag-usap tungkol sa ipaalam Pag-atake iniksyon SQL. 1451 01:14:18,800 --> 01:14:22,050 Kaya isang SQL iniksyon atake ay lubos na kung saan ang isang tao ay tumatagal ng 1452 01:14:22,050 --> 01:14:27,680 sulitin ang mababang seguridad ng mga paraan na ikaw ay pagkuha sa data. 1453 01:14:27,680 --> 01:14:35,660 >> Kaya sa dito, tulad ng sa CS50 pinansya, kapag naka-log namin in, maaari naming ipasok sa isang 1454 01:14:35,660 --> 01:14:39,510 username sa form sa pag-login, ang unang text box, at 1455 01:14:39,510 --> 01:14:41,570 pagkatapos ay ilagay sa isang password. 1456 01:14:41,570 --> 01:14:45,610 Marahil ay maaaring tumingin sa aming mga code na PHP isang bagay na tulad nito, kung saan $ username 1457 01:14:45,610 --> 01:14:51,410 ay ang username at password na post-data ay password post-data. 1458 01:14:51,410 --> 01:14:55,110 At pagkatapos ay isakatuparan lamang namin ang aming mga query sa, sabihin nating, OK, na rin, ang aming mga query ay pagpunta sa 1459 01:14:55,110 --> 01:14:57,990 pumili mula sa aming mga gumagamit, kung saan ang username ay ang 1460 01:14:57,990 --> 01:14:58,970 isa na sila isinumite. 1461 01:14:58,970 --> 01:15:06,870 At ang password ay ang password, ibig sabihin na tumutugma sa mga password. 1462 01:15:06,870 --> 01:15:12,670 >> Ngayon, paano kung sa halip na aktwal pagsusumite ng isang aktwal na password, tulad ng 1463 01:15:12,670 --> 01:15:16,850 12345 at paghula sa ngipin ng tinidor na nagsasabing password at sinusubukan mong tadtarin ang kanilang 1464 01:15:16,850 --> 01:15:21,460 account, kung ano kung sa halip isinumite nila ito. 1465 01:15:21,460 --> 01:15:24,380 Maaari nilang i-type sa siguro isang hula sa isang password. 1466 01:15:24,380 --> 01:15:30,480 At pagkatapos ng ang mga ito matapos ang quote pagkatapos i-type sa o 1 = 1. 1467 01:15:30,480 --> 01:15:35,160 Iyon Gusto mong bilis nang direkta sa SQL i-query upang tumingin ng isang bagay na katulad nito. 1468 01:15:35,160 --> 01:15:38,200 Pumili mula sa mga gumagamit kung saan username = Prongs at password 1469 01:15:38,200 --> 01:15:41,450 ay katumbas ng liryo o 1 = 1. 1470 01:15:41,450 --> 01:15:45,450 >> Kaya ang alinman sa password ay upang maging tama o 1 = 1, 1471 01:15:45,450 --> 01:15:47,870 na kung saan ay palaging totoo. 1472 01:15:47,870 --> 01:15:52,780 Kaya sa kasong ito, talaga, ang isang gumagamit ay maaari samantalahin ito at mag-log lamang 1473 01:15:52,780 --> 01:15:55,240 kanilang sarili sa at pataga account ng isang tao. 1474 01:15:55,240 --> 01:15:58,950 Kaya na ang dahilan kung bakit gusto naming iwasan isang tao na kinakailangang gawin ito. 1475 01:15:58,950 --> 01:16:03,890 Ngunit sa kabutihang-palad, ang function ng query sa pamamagitan ng ang pagpasa sa mga placeholder Dadalhin 1476 01:16:03,890 --> 01:16:04,800 pag-aalaga ng mga ito para sa iyo. 1477 01:16:04,800 --> 01:16:08,570 Gayundin, makikita mo ay karaniwang hindi kailanman nais upang aktwal na isumite ang mga password 1478 01:16:08,570 --> 01:16:09,310 kanilang mga sarili. 1479 01:16:09,310 --> 01:16:14,115 Iyon ay kung bakit namin na-hash o naka-encrypt ang mga ito sa CS50 pananalapi. 1480 01:16:14,115 --> 01:16:17,553 >> Madla: Ang nakaraang pagsusulit usapan tungkol sa MySQL escape mga string. 1481 01:16:17,553 --> 01:16:21,800 Huwag mayroon kaming mag-alala tungkol na? 1482 01:16:21,800 --> 01:16:22,670 >> ZAMYLA Chan: Iyon ay isang mahusay na tanong. 1483 01:16:22,670 --> 01:16:29,050 Ang MySQL escape mga string ay talagang isang function na ito ay ginamit sa aming query. 1484 01:16:29,050 --> 01:16:30,420 Ngunit tumingin sa na siguradong. 1485 01:16:30,420 --> 01:16:32,950 Gusto ko sabihin na patas laro upang malaman na kailangan mo upang tawagan na 1486 01:16:32,950 --> 01:16:34,370 gumana sa isang string. 1487 01:16:34,370 --> 01:16:35,245 Oo, Belinda? 1488 01:16:35,245 --> 01:16:38,606 >> Madla: Paano mo malalaman kapag ito ay single quote o double quote? 1489 01:16:38,606 --> 01:16:43,516 At din, nararamdaman ko tulad ng sa lecture mo Binanggit ng isang bagay tungkol sa hindi pagkakaroon 1490 01:16:43,516 --> 01:16:48,426 ang [hindi marinig] o isang bagay o ang pangalawang single quote sa dulo. 1491 01:16:48,426 --> 01:16:56,407 1492 01:16:56,407 --> 01:17:00,825 Sa tingin ko siya itinuturo out sa panayam na ka dapat na magkaroon ng kudlit 1 1493 01:17:00,825 --> 01:17:04,290 at pagkatapos ay walang apostrophes o isang bagay. 1494 01:17:04,290 --> 01:17:05,540 >> Madla: [hindi marinig]. 1495 01:17:05,540 --> 01:17:14,860 1496 01:17:14,860 --> 01:17:18,657 >> Madla: bagay Ang ay ang huling single quote sa doon sa na pangalawang kahon 1497 01:17:18,657 --> 01:17:19,391 hindi dapat doon. 1498 01:17:19,391 --> 01:17:21,840 [Hindi marinig] 1499 01:17:21,840 --> 01:17:26,730 Dahil kapag magdadala sa iyo na huling nag-iisang Quote out at tumutugma sa mga para sa nilalaman 1500 01:17:26,730 --> 01:17:30,522 kung saan ang mga password ay, kung mayroon kang na query, mayroong isang solong quote sa 1501 01:17:30,522 --> 01:17:31,340 ang pagtatapos na. 1502 01:17:31,340 --> 01:17:36,580 Gusto mong gamitin na single quote bilang isa na nakaharap sa isa 1503 01:17:36,580 --> 01:17:37,574 [Hindi marinig]. 1504 01:17:37,574 --> 01:17:42,820 Kaya kung ano ang nasa teksto na talaga kahon hindi dapat magkaroon ng na. 1505 01:17:42,820 --> 01:17:44,070 >> ZAMYLA Chan: ako makakakita baguhin iyon. 1506 01:17:44,070 --> 01:17:56,490 1507 01:17:56,490 --> 01:17:56,880 OK. 1508 01:17:56,880 --> 01:18:00,435 Kung walang anumang mga katanungan, pagkatapos ay idedetalye ko pumasa ito sa paglipas ng sa Joseph na makipag-usap 1509 01:18:00,435 --> 01:18:04,332 tungkol sa JavaScript, at iba pa. 1510 01:18:04,332 --> 01:18:09,540 >> [Palakpakan] 1511 01:18:09,540 --> 01:18:11,660 >> Joseph ONG: Kaya ay tumatakbo namin Medyo sa likod. 1512 01:18:11,660 --> 01:18:13,280 Kaya kung mayroon kang umalis, na OK lang. 1513 01:18:13,280 --> 01:18:16,540 Ngunit hinihiling namin na iyong panatilihin ang iyong ulo pababa kung ikaw ay nasa gitna, kaya mo 1514 01:18:16,540 --> 01:18:19,560 huwag harangan ang camera at gumagamit ka ng likod exit kung mayroon kang sa. 1515 01:18:19,560 --> 01:18:25,010 1516 01:18:25,010 --> 01:18:26,306 Ako Joseph sa pamamagitan ng ang paraan. 1517 01:18:26,306 --> 01:18:27,556 Hi. 1518 01:18:27,556 --> 01:18:37,910 1519 01:18:37,910 --> 01:18:38,630 Test, pagsubok. 1520 01:18:38,630 --> 01:18:39,630 Dan, ay ang magandang? 1521 01:18:39,630 --> 01:18:40,880 Cool. 1522 01:18:40,880 --> 01:18:44,460 1523 01:18:44,460 --> 01:18:47,600 >> Kaya maipo-post din ang video online para sa mga 1524 01:18:47,600 --> 01:18:48,850 kailangang umalis ngayon. 1525 01:18:48,850 --> 01:18:51,350 1526 01:18:51,350 --> 01:18:52,600 Alanganin. 1527 01:18:52,600 --> 01:18:56,300 1528 01:18:56,300 --> 01:18:57,510 OK. 1529 01:18:57,510 --> 01:18:59,730 Kaya pagsusulit sa pagsusuri. 1530 01:18:59,730 --> 01:19:00,980 Ito ay isang pusa. 1531 01:19:00,980 --> 01:19:03,150 1532 01:19:03,150 --> 01:19:07,170 Ngayon, JavaScript, na kung saan ay marahil hindi bilang aww para sa ilan sa inyo guys. 1533 01:19:07,170 --> 01:19:07,370 OK. 1534 01:19:07,370 --> 01:19:09,280 Kaya iyon ang una, isipin mula Zamyla. 1535 01:19:09,280 --> 01:19:11,270 Tandaan na PHP ay tumakbo sa server. 1536 01:19:11,270 --> 01:19:15,230 At maraming beses, mo guys na sinulat loop sa PHP upang i-print out ng HTML, tama? 1537 01:19:15,230 --> 01:19:19,170 Kaya minsan executes ang code na iyon, na HTML output na-print mo out 1538 01:19:19,170 --> 01:19:20,500 ay makakakuha ng ipinadala sa gumagamit. 1539 01:19:20,500 --> 01:19:25,960 At nang isang beses nangyari iyon, wala nang PHP maaari na patatakbuhin, maliban kung i-reload mo ang pahina, ng 1540 01:19:25,960 --> 01:19:27,660 Siyempre, na reexecutes ang PHP. 1541 01:19:27,660 --> 01:19:30,080 Ngunit sa sandaling i-print out ka na ng HTML, hindi ka maaaring pumunta kahit saan. 1542 01:19:30,080 --> 01:19:33,580 >> Kaya na HTML ay ipinadala sa ibabaw sa gumagamit, kung saan ay ang browser sa paglipas dito, kung saan 1543 01:19:33,580 --> 01:19:35,470 Milo ay gamitin ang computer. 1544 01:19:35,470 --> 01:19:40,340 At kaya mahusay, may ilang mga bagay minsan nagpapadala kami ng HTML sa gumagamit. 1545 01:19:40,340 --> 01:19:43,350 Minsan gusto naming gawin ang isang bagay tulad ng kapag nag-click ka sa isang bagay, gusto naming 1546 01:19:43,350 --> 01:19:47,350 mga kahon na alerto sa pop up, mga uri ng mga pakikipag-ugnayan, tulad ng kapag pinindot mo ang 1547 01:19:47,350 --> 01:19:50,740 key, kapag nag-click ka ng isang bagay sa pahina, gusto ko ng isang bagay na mangyayari. 1548 01:19:50,740 --> 01:19:54,550 Well, hindi ka maaaring reexecute PHP code nang isang beses na HTML ay nakatakda. 1549 01:19:54,550 --> 01:19:55,900 Kaya kung paano ang gagawin mo ito? 1550 01:19:55,900 --> 01:19:59,930 >> Ipakilala kami ng isang bagong wika na tinatawag na JavaScript, na kung saan ay tumatakbo sa browser 1551 01:19:59,930 --> 01:20:02,890 na nagbibigay-daan sa iyo upang gawin ang mga bagay sa HTML pagkatapos mong matanggap ang 1552 01:20:02,890 --> 01:20:04,020 ang mga ito mula sa server. 1553 01:20:04,020 --> 01:20:07,050 At ito ang dahilan kung bakit tinatawag naming ito sa isang client-side programming language. 1554 01:20:07,050 --> 01:20:09,110 Gumagana ito sa iyong computer - 1555 01:20:09,110 --> 01:20:11,400 sa client. 1556 01:20:11,400 --> 01:20:13,830 Ang anumang mga katanungan tungkol na sa ngayon? 1557 01:20:13,830 --> 01:20:15,650 Tularan na saysay sa mga tao? 1558 01:20:15,650 --> 01:20:16,010 OK. 1559 01:20:16,010 --> 01:20:16,790 Mahusay. 1560 01:20:16,790 --> 01:20:17,340 Ayos lang. 1561 01:20:17,340 --> 01:20:20,850 Kaya ang unang bagay na dapat tandaan ay ang JavaScript ay hindi na PHP. 1562 01:20:20,850 --> 01:20:23,010 >> Ang mga ito ay ilang iba't ibang mga syntax, kung saan ipapakita namin pumunta sa. 1563 01:20:23,010 --> 01:20:24,530 At mayroon silang ibang-iba mga gamit. 1564 01:20:24,530 --> 01:20:26,640 JavaScript, muli, para sa iyong browser, para sa mga client ang. 1565 01:20:26,640 --> 01:20:30,640 Ay nagpapatakbo ng Server sa isang lugar sa isang tao pa computer na nagpapadala ng impormasyon 1566 01:20:30,640 --> 01:20:31,720 sa iyo, itama? 1567 01:20:31,720 --> 01:20:36,730 Kaya kung tanungin ka namin na magsulat code na PHP sa isang tanong sa pagsusulit, huwag magsulat 1568 01:20:36,730 --> 01:20:38,710 JavaScript at vice versa. 1569 01:20:38,710 --> 01:20:41,710 Makikita mo lamang mawala mga puntos, at ito ay hindi magiging tama. 1570 01:20:41,710 --> 01:20:43,690 >> Kaya sabihin makakuha ng sa ilang mga syntax pagkakaiba - 1571 01:20:43,690 --> 01:20:46,140 JavaScript sa kaliwa at PHP sa kanan. 1572 01:20:46,140 --> 01:20:48,670 Ang unang bagay na mapapansin mo sa JavaScript, ipinahahayag namin variable sa 1573 01:20:48,670 --> 01:20:49,440 ang var keyword - 1574 01:20:49,440 --> 01:20:53,590 V-A-R. Ginamit PHP ang dollar sign, bilang mas maaga tinalakay Zamyla. 1575 01:20:53,590 --> 01:20:57,570 Kung nais mong magpahayag ng isang nag-uugnay array, makikita natin ang pamilyar na syntax sa 1576 01:20:57,570 --> 01:20:59,030 sa kanang bahagi sa PHP. 1577 01:20:59,030 --> 01:21:01,630 Sa kaliwang bahagi, sa halip gamitin mo kulot tirante. 1578 01:21:01,630 --> 01:21:03,280 At pagkatapos ay ang iyong mga susi ay sa kaliwa. 1579 01:21:03,280 --> 01:21:04,670 Pagkatapos mayroon kang isang tutuldok. 1580 01:21:04,670 --> 01:21:06,560 At pagkatapos ay mayroon kang ang mga halaga na gusto mo. 1581 01:21:06,560 --> 01:21:09,840 >> Kaya ito ay kung paano mo gawin ito sa PHP sa kanang bahagi sa na pangalawang 1582 01:21:09,840 --> 01:21:10,955 linya na nagsisimula sa Milo. 1583 01:21:10,955 --> 01:21:14,540 At iyon ay kung paano mo gawin ito sa kaliwa side sa JavaScript kung nais mong 1584 01:21:14,540 --> 01:21:16,110 ang tinatawag naming ang isang bagay. 1585 01:21:16,110 --> 01:21:19,340 At bagay sa JavaScript ay lamang nag-uugnay array. 1586 01:21:19,340 --> 01:21:23,710 Kaya kung nais mong i-access ang mga patlang, sa PHP gagamitin mo ang bracket syntax. 1587 01:21:23,710 --> 01:21:27,170 At ganitong paraan, maaari mong reassign patlang na may-ari na ito sa Lauren. 1588 01:21:27,170 --> 01:21:30,150 >> Well, sa JavaScript, kung gusto isa sa ma-access ang isang patlang at baguhin ito, maaari mong 1589 01:21:30,150 --> 01:21:31,370 gamitin ang tuldok na syntax. 1590 01:21:31,370 --> 01:21:33,860 Maaari mo ring gamitin ang bracket syntax. 1591 01:21:33,860 --> 01:21:35,550 Ngunit hindi mo maaaring gamitin ang tuldok syntax sa PHP. 1592 01:21:35,550 --> 01:21:36,525 Iyon ay hindi gagana. 1593 01:21:36,525 --> 01:21:38,910 Gumagana lang ito sa PHP. 1594 01:21:38,910 --> 01:21:42,060 At sa wakas, i-print ng mga bagay sa console, ginagamit mo console.log, na 1595 01:21:42,060 --> 01:21:43,720 mo guys gumamit ng maraming sa pset8. 1596 01:21:43,720 --> 01:21:45,260 Maaari mong console.log na. 1597 01:21:45,260 --> 01:21:50,030 >> Kung nais mong i-print ang isang array sa PHP, mayroon kang gamitin ang naka-print na r. 1598 01:21:50,030 --> 01:21:53,240 At sa kanang bahagi, makikita mo ang hash i string pagdudugtong banda roon. 1599 01:21:53,240 --> 01:21:54,070 May isang tao na mas maaga nagtanong. 1600 01:21:54,070 --> 01:21:55,850 Gamitin ko ng plus sa JavaScript. 1601 01:21:55,850 --> 01:21:59,800 Kung gusto kong pagdugtungin ang isang bagay sa PHP, gagamitin ko ang tuldok. 1602 01:21:59,800 --> 01:22:00,800 Ang mga ito ay naiiba. 1603 01:22:00,800 --> 01:22:03,420 Kung ikaw ay sumusulat code na PHP, huwag gumamit ng plus. 1604 01:22:03,420 --> 01:22:06,810 Kung ikaw ay sumusulat ng JavaScript code, huwag magsulat ng tuldok. 1605 01:22:06,810 --> 01:22:08,230 Magiging mali. 1606 01:22:08,230 --> 01:22:09,640 At makikita mo Malulungkot. 1607 01:22:09,640 --> 01:22:11,000 >> Kaya syntax pagkakaiba. 1608 01:22:11,000 --> 01:22:14,710 Alamin ang iyong syntax, dahil kung mayroon kang upang magsulat ng isang tanong at gumagamit ka ng syntax 1609 01:22:14,710 --> 01:22:16,890 mula sa maling wika, hindi ito gagana. 1610 01:22:16,890 --> 01:22:19,520 At ito ang magiging mali. 1611 01:22:19,520 --> 01:22:22,420 Kaya hayaan-usapan natin ang tungkol sa ilang kontrol dumaloy pagkakaiba, kung paano mo ginagamit 1612 01:22:22,420 --> 01:22:24,040 loop sa bawat isa sa kanila. 1613 01:22:24,040 --> 01:22:26,610 Zamyla nagpunta sa ibabaw ng kanang bahagi. 1614 01:22:26,610 --> 01:22:27,780 Bagay-bagay sa kanang bahagi Dapat na pamilyar. 1615 01:22:27,780 --> 01:22:29,670 Tingnan natin sa kaliwang bahagi Hayaan. 1616 01:22:29,670 --> 01:22:34,830 >> Kapag ginamit mo para sa n loop sa JavaScript, ang iyong mga loop na variable, var i banda roon, 1617 01:22:34,830 --> 01:22:37,210 loop sa ibabaw ng mga pindutan ng array. 1618 01:22:37,210 --> 01:22:39,150 Kaya tingnan mo pangalan, bahay, at papel. 1619 01:22:39,150 --> 01:22:42,440 Kung console.log ko i, nakukuha ko pangalan, bahay, at papel. 1620 01:22:42,440 --> 01:22:44,720 Iyon ang mga key. 1621 01:22:44,720 --> 01:22:50,080 Sa JavaScript, isang foreach loop napupunta sa ibabaw ng mga halaga ng array. 1622 01:22:50,080 --> 01:22:52,040 Kaya napansin mong ang mga ito ay parehong i. 1623 01:22:52,040 --> 01:22:56,000 Ngunit in dito sa gilid PHP, ito ng mga Kopya out Milo, CS50, at maskot. 1624 01:22:56,000 --> 01:22:57,390 Iyon ang mga halaga sa PHP. 1625 01:22:57,390 --> 01:23:00,180 >> Kaya ito ay kung paano ang dalawang mga magkaibang sa iba't ibang mga wika. 1626 01:23:00,180 --> 01:23:02,970 Kaya kung gumagamit ka ng isang foreach loop, huwag ipagpalagay na ito 1627 01:23:02,970 --> 01:23:03,760 Nagbibigay sa iyo ang mga susi. 1628 01:23:03,760 --> 01:23:08,010 At kung gumagamit ka ng para sa n loop, huwag ipinapalagay binibigyan ka nito ang mga halaga. 1629 01:23:08,010 --> 01:23:10,420 Gumawa ba nito ang pakiramdam sa ngayon? 1630 01:23:10,420 --> 01:23:13,630 Ang susunod na slide ay pagpunta upang ipakita sa iyo paano mo ma-access ang tapat sa 1631 01:23:13,630 --> 01:23:15,160 bawat isa sa kanila. 1632 01:23:15,160 --> 01:23:18,550 >> Well, kung mayroon kang ang susi sa JavaScript at gusto mo na ang halaga out, 1633 01:23:18,550 --> 01:23:20,440 index mo lang sa array na may mga iyon. 1634 01:23:20,440 --> 01:23:23,640 Kaya Milo ng i makakapagbigay sa iyo kung ano gusto mo - ang halaga. 1635 01:23:23,640 --> 01:23:25,260 Mayroong iba't ibang mga ito syntax sa PHP. 1636 01:23:25,260 --> 01:23:28,140 Kung talagang nais na malaman ito, gagawin ko hindi Sa tingin mo namin ipinakita ito sa iyo pa. 1637 01:23:28,140 --> 01:23:31,740 Ngunit kung ikaw ay interesado, maaari mong gamitin ang ito ng karagdagang syntax sa kanan 1638 01:23:31,740 --> 01:23:35,130 gilid na ang talagang ipaalam sa makuha mo ang mga susi sa PHP kapag gumagamit ka ng isang 1639 01:23:35,130 --> 01:23:35,880 foreach loop. 1640 01:23:35,880 --> 01:23:39,640 Kaya lamang ng kaunting mga bagay na walang kabuluhan kung interesado ka. 1641 01:23:39,640 --> 01:23:42,630 >> Kaya iyon upang ipakita lamang ang pagkakaiba sa pagitan ng dalawang mga loop. 1642 01:23:42,630 --> 01:23:47,060 Huwag ihalo up ang mga ito kapag ikaw ay mga programa ng tanong. 1643 01:23:47,060 --> 01:23:49,774 Ang anumang mga katanungan tungkol sa na. 1644 01:23:49,774 --> 01:23:50,770 Cool. 1645 01:23:50,770 --> 01:23:51,310 Ayos lang. 1646 01:23:51,310 --> 01:23:52,250 JavaScript bagay. 1647 01:23:52,250 --> 01:23:53,040 Usapan ko tungkol sa mga ito. 1648 01:23:53,040 --> 01:23:54,650 Ang mga ito ay tulad ng nag-uugnay array. 1649 01:23:54,650 --> 01:23:57,730 Ang isang bagay na Gusto ko sa iyo na tandaan dito ay na ng isang halaga sa isang nag-uugnay 1650 01:23:57,730 --> 01:23:59,540 array ay maaaring maging kahit ano sa JavaScript. 1651 01:23:59,540 --> 01:24:02,240 >> Maaari rin itong maging isang function, tulad ng banda roon. 1652 01:24:02,240 --> 01:24:04,600 Mayroon akong isang function na ay isang halaga ng isang key. 1653 01:24:04,600 --> 01:24:07,030 At kung gusto kong tumawag na function, Lamang-access ko mag-upak. 1654 01:24:07,030 --> 01:24:08,490 At pagkatapos ko bang ilagay ang mga panaklong pagkatapos nun. 1655 01:24:08,490 --> 01:24:09,790 At na gumagana. 1656 01:24:09,790 --> 01:24:15,570 Kaya ang anumang mga katanungan? 1657 01:24:15,570 --> 01:24:16,370 Walang? 1658 01:24:16,370 --> 01:24:16,650 OK. 1659 01:24:16,650 --> 01:24:18,190 Mahusay. 1660 01:24:18,190 --> 01:24:20,130 JavaScript, tulad ng PHP, ay maluwag na-type. 1661 01:24:20,130 --> 01:24:20,970 Ano ang ibig sabihin na? 1662 01:24:20,970 --> 01:24:22,380 >> Mayroon itong mga uri. 1663 01:24:22,380 --> 01:24:24,800 Ngunit kapag pinahahayag ng JavaScript variable, sabihin mo var i. 1664 01:24:24,800 --> 01:24:25,850 Hindi mo ito sinasabi. 1665 01:24:25,850 --> 01:24:26,460 Iyan ay hindi isang bagay. 1666 01:24:26,460 --> 01:24:28,000 Ikaw lamang sabihin ito ay isang variable. 1667 01:24:28,000 --> 01:24:31,590 At pagkatapos JavaScript ay mapupunta sa mga uri sa ilalim ng hood para sa iyo. 1668 01:24:31,590 --> 01:24:34,390 Maaari malaya kami mag-convert sa pagitan ng mga uri dahil dito. 1669 01:24:34,390 --> 01:24:37,360 Kaya i nagsisimula out bilang isang numero sa kasong ito. 1670 01:24:37,360 --> 01:24:38,790 At pagkatapos ay mayroon akong isang string. 1671 01:24:38,790 --> 01:24:39,710 At idagdag ko i dito. 1672 01:24:39,710 --> 01:24:41,810 At reassign ko ito pabalik sa i. 1673 01:24:41,810 --> 01:24:43,640 >> Kaya sa na unang linya, i ay ang bilang. 1674 01:24:43,640 --> 01:24:47,310 Sa pangalawang linya, nagiging isang i ngayon string pagkatapos kong gawin ang reassignment. 1675 01:24:47,310 --> 01:24:52,820 At dito, ako lamang concatenating na numero papunta sa string. 1676 01:24:52,820 --> 01:24:56,210 Kaya nakikita mo na kahit na i noon ay isang integer sa unang bahagi, ito ay uri 1677 01:24:56,210 --> 01:24:58,500 ng tulad ng pag-convert sa isang string at pagkatapos ay bilang idinagdag 1678 01:24:58,500 --> 01:25:00,510 papunta na kumusta string. 1679 01:25:00,510 --> 01:25:02,340 At kaya na kung ano ang ibig sabihin ko sa pamamagitan ng mga malubay mag-type. 1680 01:25:02,340 --> 01:25:04,760 Iyan ay na-convert mo sa pagitan ng mga uri ng napaka madali. 1681 01:25:04,760 --> 01:25:08,840 At hindi ito ihagis babala sa gusto mo C gumagana. 1682 01:25:08,840 --> 01:25:12,420 >> Kaya naglalaman i ngayon kumusta 123 sa string. 1683 01:25:12,420 --> 01:25:13,270 Susunod. 1684 01:25:13,270 --> 01:25:15,610 Maaari rin namin ng malayang ihambing sa pagitan ng mga uri. 1685 01:25:15,610 --> 01:25:19,310 Kaya kung gagamitin mo lang ==, napaka tulad ng sa PHP, JavaScript 1686 01:25:19,310 --> 01:25:20,480 ang ginagawa ng isang katulad na bagay. 1687 01:25:20,480 --> 01:25:24,780 Ang string 123 ay kapareho ng numero 123 kapag ginamit mo ang double Kapantay. 1688 01:25:24,780 --> 01:25:27,820 Kapag ginamit triple Kapantay, mayroon din Gusto ni upang matiyak na 1689 01:25:27,820 --> 01:25:29,240 ang uri ay pareho. 1690 01:25:29,240 --> 01:25:31,960 Kaya dahil iyon ay isang string at iyon ay isang numero, kahit na nasa parehong 1691 01:25:31,960 --> 01:25:35,280 123, kapag ginamit mo ang triple katumbas, makakakuha ka ng hindi totoo. 1692 01:25:35,280 --> 01:25:39,330 Sa double ay katumbas ng kaso, makakakuha ka ng totoo, dahil double Kapantay ay hindi 1693 01:25:39,330 --> 01:25:40,020 nagmamalasakit sa uri. 1694 01:25:40,020 --> 01:25:42,500 Triple Kapantay ay nagmamalasakit sa uri. 1695 01:25:42,500 --> 01:25:43,750 Mga Katanungan? 1696 01:25:43,750 --> 01:25:45,790 1697 01:25:45,790 --> 01:25:48,390 OK. 1698 01:25:48,390 --> 01:25:52,870 >> At isa pang bagay tungkol sa JavaScript ay na saklaw ay uri ng global maliban kung ikaw ay 1699 01:25:52,870 --> 01:25:53,460 sa isang function. 1700 01:25:53,460 --> 01:25:55,660 At ito ay gumagana sa parehong paraan sa PHP talaga. 1701 01:25:55,660 --> 01:25:57,500 Kaya sabihin pumunta sa pamamagitan ng halimbawang ito. 1702 01:25:57,500 --> 01:25:59,110 Ako magse-set i upang 999. 1703 01:25:59,110 --> 01:26:00,900 At pagkatapos kong pumunta sa ito para sa loop. 1704 01:26:00,900 --> 01:26:06,110 Kaya kung ako sa pagpi-print i out sa ito para sa loop, inaasahan ko 0, 1, 2, 3, 4. 1705 01:26:06,110 --> 01:26:07,390 Nakuha ko sa i = 4. 1706 01:26:07,390 --> 01:26:10,770 Unti itong i ngayon hanggang 5 sa sa dulo ng para sa loop. 1707 01:26:10,770 --> 01:26:13,300 At pagkatapos nito Pinaghihiwa-out ng loop, dahil ito ay hindi matupad ang 1708 01:26:13,300 --> 01:26:14,550 kondisyon na ngayon. 1709 01:26:14,550 --> 01:26:16,650 >> Ano ang tingin mo na ang susunod na console.log prints out? 1710 01:26:16,650 --> 01:26:20,570 1711 01:26:20,570 --> 01:26:24,790 Kaya na kung ano ang nais nitong gawin sa C. Sa C, dahil kung mayroon ka tulad ng var i labas 1712 01:26:24,790 --> 01:26:28,855 at mayroon kang var i loob ng loop, tulad ng isang para sa loop, pagkatapos ay ginagawang ito tulad na 1713 01:26:28,855 --> 01:26:30,690 ito ay scoped na ang dalawang i ay naiiba. 1714 01:26:30,690 --> 01:26:34,630 Sa JavaScript, ito nasain lamang ituring ito bilang parehong i. 1715 01:26:34,630 --> 01:26:37,870 Nakukuha ko 5, dahil iyon ay ang halaga matapos itong lumabas sa labas ng loop. 1716 01:26:37,870 --> 01:26:39,120 Kaya mga i ay ang parehong i. 1717 01:26:39,120 --> 01:26:42,620 1718 01:26:42,620 --> 01:26:44,130 Ba na magkaroon ng kahulugan? 1719 01:26:44,130 --> 01:26:45,720 >> Well ito, ang may katuturan mula sa isang JavaScript kinatatayuan. 1720 01:26:45,720 --> 01:26:49,510 Ngunit sa parehong tularan ang hindi Nagtitinda sa ibabaw upang C. Ang mga ito ay 1721 01:26:49,510 --> 01:26:50,310 iba't ibang mga panuntunan scoping. 1722 01:26:50,310 --> 01:26:50,630 Oo. 1723 01:26:50,630 --> 01:26:52,566 >> Madla: [hindi marinig] 1724 01:26:52,566 --> 01:26:54,990 sa labas ng function na [hindi marinig]? 1725 01:26:54,990 --> 01:26:58,340 >> Joseph ONG: Kaya labas na pagpapaandar? 1726 01:26:58,340 --> 01:27:00,810 Kaya Kukunin ko sa na sa isang segundo lamang. 1727 01:27:00,810 --> 01:27:02,580 Kaya tinatawag naming foo (i). 1728 01:27:02,580 --> 01:27:06,920 Ito ay ipinapasa i sa foo, mga palugit ito, at pagkatapos ay nagla-log ito. 1729 01:27:06,920 --> 01:27:07,750 Kaya ito ay 5. 1730 01:27:07,750 --> 01:27:09,210 Kaya ito ay nagiging 6. 1731 01:27:09,210 --> 01:27:11,670 Ngunit kung ano ako ng pakikipag-usap tungkol sa ay na i in na function. 1732 01:27:11,670 --> 01:27:14,430 Dahil ito ay isang parameter, ito ay scoped sa na function. 1733 01:27:14,430 --> 01:27:17,800 Kaya isang beses ko talagang makakuha ng out sa na function, ngayon ito ay pagpunta sa pumunta 1734 01:27:17,800 --> 01:27:19,860 bumalik sa lumang i. 1735 01:27:19,860 --> 01:27:23,000 I Iyon ay scoped lamang dahil ito ay nasa isang function. 1736 01:27:23,000 --> 01:27:24,200 At kami ay may saklaw at pag-andar. 1737 01:27:24,200 --> 01:27:29,080 Ngunit wala kaming saklaw sa labas ng mga function sa JavaScript. 1738 01:27:29,080 --> 01:27:31,170 Ba na magkaroon ng kahulugan? 1739 01:27:31,170 --> 01:27:31,320 Oo. 1740 01:27:31,320 --> 01:27:31,660 Tanong. 1741 01:27:31,660 --> 01:27:34,030 >> Madla: Parehong [hindi marinig]? 1742 01:27:34,030 --> 01:27:34,500 >> Joseph ONG: Kaya oo. 1743 01:27:34,500 --> 01:27:36,260 Sa PHP, ito ay ang parehong uri ng bagay. 1744 01:27:36,260 --> 01:27:37,680 May kaunting pag kapitaganan talaga. 1745 01:27:37,680 --> 01:27:40,130 Ngunit maaari mong hilingin sa akin tungkol sa na pagkatapos ng pagsusuri. 1746 01:27:40,130 --> 01:27:43,930 Wala ka ba talagang kailangang malaman na kapitaganan para sa pagsusulit. 1747 01:27:43,930 --> 01:27:47,600 Para sa lahat ng mga layunin at mga layunin, tulad ng variable, global at PHP, maliban kung 1748 01:27:47,600 --> 01:27:49,150 ang mga ito ay nasa isang function, parehong bagay sa JavaScript. 1749 01:27:49,150 --> 01:27:49,480 Oo. 1750 01:27:49,480 --> 01:27:52,890 >> Madla: Bakit ito pinapayagan ay sa JavaScript at walang kung saan pang dahilan? 1751 01:27:52,890 --> 01:27:55,010 >> Joseph ONG: Kaya bakit pinapayagan ito sa JavaScript at hindi sa C? 1752 01:27:55,010 --> 01:27:58,180 Ito ay lamang kung sinuman ang dumating up gamit Nagpasya JavaScript na ito ay OK sa 1753 01:27:58,180 --> 01:27:59,510 JavaScript. 1754 01:27:59,510 --> 01:28:02,430 Kaya ito ay tulad ng isang programming language convention ng kung paano namin sasabihin. 1755 01:28:02,430 --> 01:28:02,580 Oo. 1756 01:28:02,580 --> 01:28:04,480 >> Madla: Kaya bakit ginawa ito pumunta 6-5? 1757 01:28:04,480 --> 01:28:08,280 >> Joseph ONG: Kaya nagpunta 6-5, dahil kapag ang pumasa ko i sa foo, na 1758 01:28:08,280 --> 01:28:13,420 i loob ng foo ay scoped ngayon upang foo, dahil saklaw umiiral sa mga function sa 1759 01:28:13,420 --> 01:28:15,050 JavaScript. 1760 01:28:15,050 --> 01:28:18,720 Ngunit sa sandaling nakuha ko out sa dito, sapagkat ito ay scoped sa pagpapaandar, ako lamang 1761 01:28:18,720 --> 01:28:24,300 gamit ang mga regular na i na noon ay sa loob ang natitirang bahagi ng kontrol ng daloy. 1762 01:28:24,300 --> 01:28:25,210 Magkaroon ng kahulugan? 1763 01:28:25,210 --> 01:28:26,910 Maaari ba akong lumipat sa? 1764 01:28:26,910 --> 01:28:27,320 Ayos lang. 1765 01:28:27,320 --> 01:28:29,180 Cool. 1766 01:28:29,180 --> 01:28:31,890 >> Ang pagtanggap ng mga ito ay mga bagay ay ipinapasa sa pamamagitan ng sanggunian. 1767 01:28:31,890 --> 01:28:33,990 Alam mo kung paano kapag kayo na ipasa ang isang array sa C dati mo 1768 01:28:33,990 --> 01:28:35,810 talagang baguhin ang array? 1769 01:28:35,810 --> 01:28:37,350 Ito ay ang parehong bagay sa JavaScript. 1770 01:28:37,350 --> 01:28:42,960 Kung pumasa ko ba ng isang bagay, sa kasong ito, ako pumasa sa mga Milo sa ito catify function. 1771 01:28:42,960 --> 01:28:44,490 Milo nagsisimula out. 1772 01:28:44,490 --> 01:28:46,310 Ang kanyang pangalan ay Milo Saging. 1773 01:28:46,310 --> 01:28:51,670 Pumasa ako sa bagay na iyon sa isang function dahil lang sa isang bagay, isang nag-uugnay 1774 01:28:51,670 --> 01:28:53,730 array sa JavaScript. 1775 01:28:53,730 --> 01:28:57,110 >> Kapag nagsagawa ko ba ng operasyon sa na pag-andar, ay ito 1776 01:28:57,110 --> 01:28:58,560 talagang baguhin ang mga bagay. 1777 01:28:58,560 --> 01:29:01,720 Kaya ito ang mangyayari lamang para sa mga bagay sa JavaScript, gusto lang ito mangyayari 1778 01:29:01,720 --> 01:29:09,230 para sa array sa loob ng pangalan C. Kaya Milo ni ang talagang maging pusa ngayon. 1779 01:29:09,230 --> 01:29:10,090 Ba na magkaroon ng kahulugan? 1780 01:29:10,090 --> 01:29:11,840 Kaya gumagana lamang ito para sa mga bagay. 1781 01:29:11,840 --> 01:29:13,090 Mga bagay ay ipinapasa sa pamamagitan ng sanggunian. 1782 01:29:13,090 --> 01:29:13,400 Oo. 1783 01:29:13,400 --> 01:29:16,850 >> Madla: Kaya ka na nagsasabi na sa kabilang banda sa variable i. 1784 01:29:16,850 --> 01:29:17,240 >> Joseph ONG: Oo. 1785 01:29:17,240 --> 01:29:20,330 Aling mga variable na i noon ay lamang isang numero, i-right? 1786 01:29:20,330 --> 01:29:25,280 Ito ay tulad ng sa C kapag kayo na ipasa ang isang integer isang, nakakagawa ito ng kopya. 1787 01:29:25,280 --> 01:29:28,130 At kapag kayo na ipasa ang isang array, ito talaga nagbabago ang aktwal na array sa 1788 01:29:28,130 --> 01:29:32,870 C. Ang parehong bagay ang mangyayari sa JavaScript sa kasong ito. 1789 01:29:32,870 --> 01:29:34,070 Ayos lang. 1790 01:29:34,070 --> 01:29:38,134 At susunod, Milo ay malungkot dahil siya ay isang pusa ngayon. 1791 01:29:38,134 --> 01:29:40,790 1792 01:29:40,790 --> 01:29:45,060 Iyon ay talagang Milo pagkatapos ilang trip sa gamutin ang hayop. 1793 01:29:45,060 --> 01:29:46,860 >> Kaya paano ko gagamitin namin ang JavaScript sa isang web page? 1794 01:29:46,860 --> 01:29:47,790 Maaari naming isama ito. 1795 01:29:47,790 --> 01:29:50,090 Ito ang HTML na code ng mga strip mga tag. 1796 01:29:50,090 --> 01:29:51,300 Kaya Mayroon akong strip tag doon. 1797 01:29:51,300 --> 01:29:54,820 At pagkatapos ko bang ilagay ang ilan JavaScript code sa loob ng mga script tag. 1798 01:29:54,820 --> 01:29:56,390 At pagkatapos ay executes ito sa ganitong. 1799 01:29:56,390 --> 01:29:58,830 Kapag lamang gawin ko ito tulad nito, ito ay tinatawag na inline JavaScript. 1800 01:29:58,830 --> 01:30:02,400 Ito ay uri ng maraming kalat, dahil ang JavaScript ay talagang sa HTML. 1801 01:30:02,400 --> 01:30:07,010 >> Ang isang mas mahusay na paraan upang gawin ito, magkano nicer, ay upang isulat ang iyong JavaScript sa isang 1802 01:30:07,010 --> 01:30:10,920 panlabas na file at pagkatapos ay magbigay script tag na may isang pinagmulan. 1803 01:30:10,920 --> 01:30:14,920 At ito ay pupunta sa na JavaScript na file at basahin ang code ng JavaScript mula sa 1804 01:30:14,920 --> 01:30:15,960 na-file sa halip. 1805 01:30:15,960 --> 01:30:18,820 At sa ganitong paraan, hindi mo na kailangang ng maraming JavaScript sa unahan ng iyong 1806 01:30:18,820 --> 01:30:20,760 HTML file, na ginagawang ito ay talagang marumi. 1807 01:30:20,760 --> 01:30:21,860 Ilagay mo lamang ito sa ibang lugar. 1808 01:30:21,860 --> 01:30:24,310 At pagkatapos ay basahin ito mula doon. 1809 01:30:24,310 --> 01:30:25,560 Nakatulong ba na saysay? 1810 01:30:25,560 --> 01:30:27,990 1811 01:30:27,990 --> 01:30:29,640 >> Usapin ng Pagkakalagay. 1812 01:30:29,640 --> 01:30:32,620 Sa partikular na kasong ito, ang script ay bago ang body. 1813 01:30:32,620 --> 01:30:36,090 Kaya kapag execute ko na, may walang anuman sa katawan pa. 1814 01:30:36,090 --> 01:30:39,920 Siguro ito ay gumawa ng isang maliit na bit higit pa kahulugan kapag ipakita ko ito sa tabi bahagi. 1815 01:30:39,920 --> 01:30:43,210 Sa kasong ito, ang script nauuna matapos ang div. 1816 01:30:43,210 --> 01:30:46,620 Kaya talagang lumilitaw ang div sa unang pahina. 1817 01:30:46,620 --> 01:30:49,470 Kanan dito sa ganitong maliit na pulang bilog, nakikita mo lilitaw ang teksto. 1818 01:30:49,470 --> 01:30:51,810 At pagkatapos ay ang alerto ay nagpapakita up. 1819 01:30:51,810 --> 01:30:54,890 >> Sa unang kaso, dahil ang script ay bago ang div, ang 1820 01:30:54,890 --> 01:30:56,170 alerto unang nagpapakita up. 1821 01:30:56,170 --> 01:30:59,250 At pagkatapos ay ang div nagpapakita up pagkatapos mong bale-walain ang kahon. 1822 01:30:59,250 --> 01:31:01,330 Kaya mahalaga ang execution. 1823 01:31:01,330 --> 01:31:02,290 Kaya itinatago namin ito na nasa isip. 1824 01:31:02,290 --> 01:31:03,640 Ito ay magiging mahalaga sa ilang sandali. 1825 01:31:03,640 --> 01:31:08,730 1826 01:31:08,730 --> 01:31:09,540 OK. 1827 01:31:09,540 --> 01:31:12,750 Kaya rin, paano ko kang maghintay hanggang ang buong pahina ay malo-load pagkatapos bago ka 1828 01:31:12,750 --> 01:31:13,580 isakatuparan ang ilang mga code? 1829 01:31:13,580 --> 01:31:15,540 Susubukan naming dumapo ito ng kaunti bit mamaya masyadong. 1830 01:31:15,540 --> 01:31:19,016 Ngunit panatilihin lamang ang placement na ito mga bagay na nasa isip para sa kung kailan namin 1831 01:31:19,016 --> 01:31:20,570 dumating sa isa pang slide. 1832 01:31:20,570 --> 01:31:22,030 >> Kaya makuha namin sa DOM ngayon. 1833 01:31:22,030 --> 01:31:23,550 At ano ang DOM? 1834 01:31:23,550 --> 01:31:26,830 Kaya't kung tiningnan mo ang HTML code, ito ay lamang ng grupo ng mga teksto sa screen. 1835 01:31:26,830 --> 01:31:30,560 Kaya kung paano ang JavaScript malaman na ito ay isang elemento ng HTML? 1836 01:31:30,560 --> 01:31:33,410 Kaya mayroon kaming upang magkaroon ng ilang mga memory representasyon ng mga ito 1837 01:31:33,410 --> 01:31:34,930 istraktura na mayroon kami. 1838 01:31:34,930 --> 01:31:40,240 At sa tuwing mayroon kaming ito sa memory pagkatawan sa JavaScript, tinatawagan namin 1839 01:31:40,240 --> 01:31:41,750 na ang DOM. 1840 01:31:41,750 --> 01:31:45,130 At ito ay lamang ng isang paraan na nagpasya tao na dapat naming kumatawan ito 1841 01:31:45,130 --> 01:31:46,400 HTML istraktura ng. 1842 01:31:46,400 --> 01:31:47,940 >> At kung ano ang hitsura ito tulad ng DOM? 1843 01:31:47,940 --> 01:31:50,460 Well, sa memory representasyon, tinitingnan namin ang tekstong ito. 1844 01:31:50,460 --> 01:31:52,870 At itong i-namin sa memory pagkatawan. 1845 01:31:52,870 --> 01:31:54,400 Kaya ito ay ang HTML. 1846 01:31:54,400 --> 01:31:58,090 Kaya unang malaman namin na ang bawat DOM puno ay may isang dokumento. 1847 01:31:58,090 --> 01:31:59,400 Mukhang isang tree. 1848 01:31:59,400 --> 01:32:03,550 At ang mga dokumento ay naglalaman ng HTML tag, talagang lahat ng bagay 1849 01:32:03,550 --> 01:32:05,150 sa loob ng ito ngayon. 1850 01:32:05,150 --> 01:32:06,970 Ang HTML na tag ay may dalawang mga bata. 1851 01:32:06,970 --> 01:32:08,630 Ito ay may ulo. 1852 01:32:08,630 --> 01:32:12,380 Ulo na, kung tiningnan mo ang indentation banda roon sa kung paano ito nakaayos 1853 01:32:12,380 --> 01:32:14,960 sa pagitan ng mga malapit na tag, ulo ay may anak. 1854 01:32:14,960 --> 01:32:17,130 Ang bata ay pamagat. 1855 01:32:17,130 --> 01:32:18,370 Mismong. 1856 01:32:18,370 --> 01:32:21,000 >> Ngayon, mayroon kaming isang katawan ng bata. 1857 01:32:21,000 --> 01:32:24,870 At pagkatapos na katawan ay may tinatawag na anak ng pamilya. 1858 01:32:24,870 --> 01:32:27,950 At pamilya na may tatlong mga bata - 1859 01:32:27,950 --> 01:32:29,550 pinakalumang, gitna, at bunso. 1860 01:32:29,550 --> 01:32:31,960 Kaya dapat mong malaman kung paano gumuhit ng diagram ganito kapag hinihiling namin sa iyo kung paano 1861 01:32:31,960 --> 01:32:34,270 upang gumuhit ng isang diagram kapag binigyan namin mo ang HTML sa kaliwa. 1862 01:32:34,270 --> 01:32:36,350 Alamin kung paano upang makagawa ng DOM tree. 1863 01:32:36,350 --> 01:32:38,930 At sa loob ng mga bagay na ito, mayroong lamang ilang teksto, na aking kinakatawan 1864 01:32:38,930 --> 01:32:40,180 bilang maliit na kahon. 1865 01:32:40,180 --> 01:32:42,750 1866 01:32:42,750 --> 01:32:47,980 >> Ba ito DOM puno istraktura gumawa kahulugan at kung ano ang DOM ay? 1867 01:32:47,980 --> 01:32:49,300 Kaya kung ano ang ginagawa ng p tumayo para sa? 1868 01:32:49,300 --> 01:32:51,850 Sa paglipas dito, ang p banda roon sa tag na iyon ay kumakatawan sa isang 1869 01:32:51,850 --> 01:32:54,510 talata na tag sa HTML. 1870 01:32:54,510 --> 01:32:57,080 Kaya maaari mo itong tumingin hanggang. 1871 01:32:57,080 --> 01:32:59,290 Ngunit ito lamang ang ibig sabihin nito ang ilang espasyo para sa ilang teksto. 1872 01:32:59,290 --> 01:33:02,910 At ito ay may ilang mga default na CSS estilo, dahil ito ay isang tag na talata. 1873 01:33:02,910 --> 01:33:05,130 Ngunit huwag mag-alala talagang tungkol sa bahagi na ng masyadong maraming. 1874 01:33:05,130 --> 01:33:07,510 Alam lamang ito ay isang placeholder para sa ilang teksto. 1875 01:33:07,510 --> 01:33:08,480 Oo. 1876 01:33:08,480 --> 01:33:10,200 Tanong? 1877 01:33:10,200 --> 01:33:11,021 Oo. 1878 01:33:11,021 --> 01:33:12,374 >> Madla: Binanggit mo lamang CSS. 1879 01:33:12,374 --> 01:33:15,492 Ang pamilya hash at ang hash lahat ng mga bagay-bagay na ay isa lamang 1880 01:33:15,492 --> 01:33:17,400 na kumakatawan sa mga ID sa CSS? 1881 01:33:17,400 --> 01:33:18,440 >> Joseph ONG: Oo, eksakto. 1882 01:33:18,440 --> 01:33:20,380 Kukunin ko sa kung ano ang mga hashes ibig sabihin sa isang segundo. 1883 01:33:20,380 --> 01:33:23,480 Kapag nagpunta Angela sa paglipas ng CSS, siya usapan tungkol sa CSS tagapili. 1884 01:33:23,480 --> 01:33:26,770 Ito ang mga CSS tagapili na ay siya ng pakikipag-usap tungkol sa. 1885 01:33:26,770 --> 01:33:28,268 Oo, Rob? 1886 01:33:28,268 --> 01:33:32,060 >> Rob BOWDEN: Gusto ko ring magkomento na DOM sa loob ng tag na pamagat 1887 01:33:32,060 --> 01:33:35,385 ay din ng isang text node. 1888 01:33:35,385 --> 01:33:36,070 >> Joseph ONG: Mag-right. 1889 01:33:36,070 --> 01:33:38,370 Kaya sa loob ng tag na pamagat, Mayroon akong ilang teksto DOM. 1890 01:33:38,370 --> 01:33:42,730 Kaya talaga ito, sa pamagat na ito ay dapat magkaroon ng tulad ng isang maliit na kahon na nanggagaling off ng mga ito pati na rin. 1891 01:33:42,730 --> 01:33:45,740 Ngunit ito ay hindi talagang mahalaga masyadong marami sa kasong ito. 1892 01:33:45,740 --> 01:33:49,620 Hindi kami talaga nagmamalasakit sa mga node teksto, bilang tinatawag naming ang mga ito, masyadong maraming. 1893 01:33:49,620 --> 01:33:50,270 OK, ang ginagawa namin. 1894 01:33:50,270 --> 01:33:51,520 Sa malas, ang ginagawa namin. 1895 01:33:51,520 --> 01:33:54,260 1896 01:33:54,260 --> 01:33:57,100 At ako ay ayusin na kapag I-upload ko ito muli. 1897 01:33:57,100 --> 01:33:59,830 Ba na magkaroon ng kahulugan? 1898 01:33:59,830 --> 01:34:01,160 >> Kaya kung paano gumagana ang aming ginagawa sa DOM? 1899 01:34:01,160 --> 01:34:03,790 Sa tuwing haharapin iyo ng DOM sa JavaScript, mayroong dalawang hakbang. 1900 01:34:03,790 --> 01:34:05,030 Kang pumili ng isang elemento ng DOM. 1901 01:34:05,030 --> 01:34:06,580 At pagkatapos gawin mo bagay na ito. 1902 01:34:06,580 --> 01:34:11,480 Kaya sa kasong ito, abstractly, na hindi ko na napiling gitna ng elemento. 1903 01:34:11,480 --> 01:34:14,530 At pagkatapos ay isang halimbawa ng paggawa ng mga bagay-bagay upang ito ay ang pagbabago ng teksto. 1904 01:34:14,530 --> 01:34:16,020 Iyon na ginamit upang maging Bob. 1905 01:34:16,020 --> 01:34:19,930 Ngayon, kung ano ang ginawa kong iyon ay nagbago ako Bob sa Milo sa kasong ito. 1906 01:34:19,930 --> 01:34:22,130 >> Kaya paano ko talaga naming gawin ito? 1907 01:34:22,130 --> 01:34:23,440 Paano ginagawa namin ang pagpili? 1908 01:34:23,440 --> 01:34:26,560 At paano namin ang paggawa ng mga bagay na ang bagay na sa sandaling nagsagawa kami ng mga ito? 1909 01:34:26,560 --> 01:34:30,470 Well, ang paraan kung paano ka guys ay natutunan ito sa klase na ito ay sa pamamagitan ng paggamit ng isang bagay na namin 1910 01:34:30,470 --> 01:34:32,420 tinatawag jQuery. 1911 01:34:32,420 --> 01:34:33,910 Kaya kung ano ang jQuery? 1912 01:34:33,910 --> 01:34:37,220 jQuery ay isang library na ginagawang JavaScript madali upang magsulat. 1913 01:34:37,220 --> 01:34:39,500 Kaya ang isang tao kinuha ang oras at sinulat ni jQuery. 1914 01:34:39,500 --> 01:34:41,530 >> jQuery ay aktwal na nakasulat sa JavaScript. 1915 01:34:41,530 --> 01:34:44,550 At pagkatapos ay dahil ginawa nila ito, na namin ngayon magkaroon ang maramihang mga pag-andar na 1916 01:34:44,550 --> 01:34:46,020 maaari naming gamitin na gumawa ng aming mga nabubuhay talagang madali. 1917 01:34:46,020 --> 01:34:48,580 1918 01:34:48,580 --> 01:34:50,030 Kaya kung ano ang ilan sa mga mga bagay na ginagawa nito? 1919 01:34:50,030 --> 01:34:51,650 Ito ay gumagawa ng pagpili ng mga elemento ng mas madali. 1920 01:34:51,650 --> 01:34:54,020 Ito ay gumagawa ng pagbabago ng HTML, mas madali ang pagdaragdag ng mga klase. 1921 01:34:54,020 --> 01:34:55,360 Ginagawang mas madali Ajax. 1922 01:34:55,360 --> 01:34:58,230 Susubukan naming makapunta sa na sa isang segundo. 1923 01:34:58,230 --> 01:35:00,630 >> At ito ay kahalintulad sa C library. 1924 01:35:00,630 --> 01:35:03,090 Kaya isama mo string.h, ka strlen. 1925 01:35:03,090 --> 01:35:04,680 Makakakuha ka ng strcpy, ang lahat ng mga bagay na ito. 1926 01:35:04,680 --> 01:35:09,650 Kapag isinama mo ang jQuery, makakakuha ka ng maganda mga paraan upang piliin ang mga elemento sa pagbabago 1927 01:35:09,650 --> 01:35:10,390 mga bagay, at iba pa. 1928 01:35:10,390 --> 01:35:12,990 Makakakuha ka ng dagdag na pag-andar na JavaScript ay hindi nagbibigay sa iyo. 1929 01:35:12,990 --> 01:35:15,310 Kaya jQuery ay hindi JavaScript. 1930 01:35:15,310 --> 01:35:18,660 jQuery ay isang library na nakasulat sa JavaScript na gumagawa ng JavaScript 1931 01:35:18,660 --> 01:35:20,440 mas madaling isulat. 1932 01:35:20,440 --> 01:35:23,170 >> Kaya jQuery ay hindi isang programming wika. 1933 01:35:23,170 --> 01:35:24,540 Ngunit JavaScript ay. 1934 01:35:24,540 --> 01:35:27,420 1935 01:35:27,420 --> 01:35:27,590 gumawa. 1936 01:35:27,590 --> 01:35:30,420 Oo naman mo makuha ang iyong mga terminolohiya karapatan. 1937 01:35:30,420 --> 01:35:32,490 Ang anumang mga katanungan? 1938 01:35:32,490 --> 01:35:33,882 Oo. 1939 01:35:33,882 --> 01:35:35,132 Iyan ba ang tanong? 1940 01:35:35,132 --> 01:35:37,910 1941 01:35:37,910 --> 01:35:38,350 Ayos lang. 1942 01:35:38,350 --> 01:35:40,080 Kaya paano ko gagamitin mo jQuery? 1943 01:35:40,080 --> 01:35:42,390 Well, kapag sumusulat ka ng ilang Code ng JavaScript at isinama mo ang isang 1944 01:35:42,390 --> 01:35:45,570 jQuery sa tuktok ng iyong mga file bilang isang script file, gagamitin mo ang dollar sign 1945 01:35:45,570 --> 01:35:47,310 ngayon upang makakuha ng access sa jQuery. 1946 01:35:47,310 --> 01:35:49,860 At ito ay naiiba mula sa ang dollar sign sa PHP. 1947 01:35:49,860 --> 01:35:51,590 >> Ito ay ang parehong mga simbolo sa iyo nagta-type sa iyong keyboard. 1948 01:35:51,590 --> 01:35:52,780 Ngunit ibig sabihin nila ibang-iba bagay. 1949 01:35:52,780 --> 01:35:56,090 Dollar sign in PHP ang ibig sabihin nito ay kung paano Ipinahahayag ko sa isang variable. 1950 01:35:56,090 --> 01:35:59,120 Sa JavaScript, kapag ikaw Nagsama jQuery, ito ay nakatayo para sa jQuery. 1951 01:35:59,120 --> 01:36:01,280 Kaya panatilihin na sa isip. 1952 01:36:01,280 --> 01:36:03,420 Kaya kung paano maaari naming piliin ang DOM mga elemento? 1953 01:36:03,420 --> 01:36:06,500 Well, kapag ginawa mo ito ang pangit ng JavaScript paraan, i-access mo ang 1954 01:36:06,500 --> 01:36:08,240 idokumento ang global variable. 1955 01:36:08,240 --> 01:36:11,170 At pagkatapos mong makakuha ng mga elemento sa pamamagitan ng pamilya ID. 1956 01:36:11,170 --> 01:36:15,270 Ito ay talagang mahaba at labis sa mga salita at hindi napakabuti. 1957 01:36:15,270 --> 01:36:18,190 >> O maaari kang makakuha ng lahat ng mga elemento na isang p tag. 1958 01:36:18,190 --> 01:36:20,080 Iyon ay gumagana masyadong sa JavaScript. 1959 01:36:20,080 --> 01:36:22,470 Ngunit talaga namin kailanman ay nagpakita ng masyado kang magkano ang syntax. 1960 01:36:22,470 --> 01:36:24,620 Ano namin ay nagpakita sa iyo ay jQuery. 1961 01:36:24,620 --> 01:36:28,720 Kaya na buong tagapili up doon na ay ipinahayag sa JavaScript ang nakukuha lamang 1962 01:36:28,720 --> 01:36:33,320 condensed upang ito ay napakabuti dolyar mag-sign hashtag pamilya. 1963 01:36:33,320 --> 01:36:38,480 At $ p, lamang kung saan ito ay tulad na. 1964 01:36:38,480 --> 01:36:41,690 Kung gusto mong piliin ang lahat ng mga tag p sa loob ng isang pamilya, inilalagay namin ang isang puwang 1965 01:36:41,690 --> 01:36:42,890 sa pagitan ng dalawang. 1966 01:36:42,890 --> 01:36:44,815 At ngayon, makuha namin ang lahat ng mga p mga tag sa loob ng isang pamilya. 1967 01:36:44,815 --> 01:36:48,740 1968 01:36:48,740 --> 01:36:50,380 >> At tumingin pamilyar? 1969 01:36:50,380 --> 01:36:52,880 Well, usapan tungkol sa Angela CSS tagapili. 1970 01:36:52,880 --> 01:36:54,200 Bigyan ako ng isang segundo. 1971 01:36:54,200 --> 01:36:57,230 At kaya upang pumili ng isang sangkap, gamitin mo lang ang mga parehong bagay tulad ng sa iyo 1972 01:36:57,230 --> 01:36:58,530 Gusto gagawin sa isang CSS selector. 1973 01:36:58,530 --> 01:37:00,910 Kung inilagay mo ang isang hash sa harap ng ito, pipili na ito sa pamamagitan ng ID. 1974 01:37:00,910 --> 01:37:02,220 Ang isang tuldok pumipili sa pamamagitan ng mga klase. 1975 01:37:02,220 --> 01:37:06,230 Kung mayroon kang lamang ang bagay na walang hashes o tuldok, pipili na ito mga tag na iyon. 1976 01:37:06,230 --> 01:37:07,140 Tanong. 1977 01:37:07,140 --> 01:37:07,470 Oo? 1978 01:37:07,470 --> 01:37:11,510 >> Madla: Kapag ginagamit namin tuldok sa aming HTML, ay hindi na jQuery? 1979 01:37:11,510 --> 01:37:13,520 >> Joseph ONG: Dot sa aming HTML ay isang JavaScript na bagay. 1980 01:37:13,520 --> 01:37:14,750 Ito ay hindi isang jQuery bagay. 1981 01:37:14,750 --> 01:37:17,620 Ang paraan natutunan ito sa iyo guys sa jQuery ay ang gamitin. html. 1982 01:37:17,620 --> 01:37:21,510 At pagkatapos mong pumasa sa mga ito kahit ano ang HTML ay magiging. 1983 01:37:21,510 --> 01:37:23,480 Kaya Kukunin ko sa na in lamang isang pangalawang talaga. 1984 01:37:23,480 --> 01:37:27,800 Kaya kung paano ang gagawin namin bagay-bagay na elemento sa sandaling iyong pinili namin ito? 1985 01:37:27,800 --> 01:37:30,130 Kaya na ang isang halimbawa ng pagpili ng isang elemento. 1986 01:37:30,130 --> 01:37:32,280 Kaya ngayon, gusto naming gawin ang bagay-bagay dito. 1987 01:37:32,280 --> 01:37:35,730 >> Kaya sa kasong ito, hayaan mo akong bumalik sa naunang slide. 1988 01:37:35,730 --> 01:37:37,360 Iyon ay Bob bago. 1989 01:37:37,360 --> 01:37:40,660 At Gusto kong baguhin na sa loob ng HTML sa Milo. 1990 01:37:40,660 --> 01:37:43,240 Kaya tumawag ako ang function ng HTML mula sa elemento. 1991 01:37:43,240 --> 01:37:45,580 Iyon HTML function ay isang pamamaraan ng elemento. 1992 01:37:45,580 --> 01:37:47,430 At pagkatapos kong bigyan ito ng kung ano ang Gusto ko ang HTML upang maging. 1993 01:37:47,430 --> 01:37:50,560 At ito lamang ay pumapalit sa kung ano ang nasa loob ng na tag sa kahit anong kong bigyan ito. 1994 01:37:50,560 --> 01:37:50,830 Oo. 1995 01:37:50,830 --> 01:37:51,170 Tanong? 1996 01:37:51,170 --> 01:37:57,397 >> Madla: hashtag ay ginagamit para lamang sa jQuery. 1997 01:37:57,397 --> 01:37:59,313 [Hindi marinig] 1998 01:37:59,313 --> 01:38:01,230 hindi namin maaaring gamitin iyon. 1999 01:38:01,230 --> 01:38:01,960 >> Joseph ONG: Oo, eksakto. 2000 01:38:01,960 --> 01:38:03,750 Ngunit huwag mag-alala masyadong maraming tungkol sa dalisay JavaScript. 2001 01:38:03,750 --> 01:38:06,670 Gusto ko lang sa iyo guys upang tumuon sa kung paano mo gagawin ito sa jQuery, dahil 2002 01:38:06,670 --> 01:38:10,020 na pupuntahan maging mahalaga bahagi sa pagsusulit. 2003 01:38:10,020 --> 01:38:10,400 Mag-right. 2004 01:38:10,400 --> 01:38:10,880 Mismong. 2005 01:38:10,880 --> 01:38:16,025 Kaya nakikita mo na ang hashtag, upang tumutugon upang piliin ang mga elemento na may 2006 01:38:16,025 --> 01:38:18,310 ang ID gitna dahil sa na hashtag. 2007 01:38:18,310 --> 01:38:19,670 Hashtag nangangahulugan ID. 2008 01:38:19,670 --> 01:38:22,870 At ang elementong ito ay may ID ng gitna. 2009 01:38:22,870 --> 01:38:24,366 Kaya iyon ang elemento piliin namin. 2010 01:38:24,366 --> 01:38:27,160 >> Madla: [hindi marinig]. 2011 01:38:27,160 --> 01:38:31,090 dollar sign hashtag [hindi marinig]? 2012 01:38:31,090 --> 01:38:31,710 >> Joseph ONG: Kaya hindi. 2013 01:38:31,710 --> 01:38:33,280 Ang tanong ay maaari mong gamitin. Halaga. 2014 01:38:33,280 --> 01:38:36,445 At halaga. Gumagana lamang sa mga elemento na input. 2015 01:38:36,445 --> 01:38:40,950 2016 01:38:40,950 --> 01:38:45,495 Sa jQuery, magiging . Val, hindi na halaga.. 2017 01:38:45,495 --> 01:38:49,080 Kaya magagawa ko na sa isang maliit na halimbawa na nagpapakita ng lahat ng ito sa kumbinasyon 2018 01:38:49,080 --> 01:38:49,850 sa isang segundo. 2019 01:38:49,850 --> 01:38:53,130 Ngunit tingin ko Naghahain ito ng kaunti snippet saysay ang mga tao sa ngayon. 2020 01:38:53,130 --> 01:38:55,450 Gusto mong baguhin ang HTML, tawagan ang pamamaraan ng HTML. 2021 01:38:55,450 --> 01:38:56,432 Oo. 2022 01:38:56,432 --> 01:38:58,200 >> Madla: Maaari mo bang ipaliwanag muli ang paraan? 2023 01:38:58,200 --> 01:39:01,900 >> Joseph ONG: Kaya isang paraan lamang function na nabibilang sa isa, sa ganitong 2024 01:39:01,900 --> 01:39:04,590 kaso, ang isa sa mga elemento ng DOM, dahil nakita mo ako 2025 01:39:04,590 --> 01:39:05,940 napiling muna ang mga elemento. 2026 01:39:05,940 --> 01:39:07,320 Talaga, hayaan mo akong gamitin ang mouse. 2027 01:39:07,320 --> 01:39:09,330 Napiling muna ako ng elemento. 2028 01:39:09,330 --> 01:39:12,310 At pagkatapos ay tinatawag ko ang HTML gumana na ito ay nagkaroon. 2029 01:39:12,310 --> 01:39:15,710 At dahil ang pagpapaganang ito ay kabilang sa bagay na ito, tumawag namin ito ng isang pamamaraan. 2030 01:39:15,710 --> 01:39:19,480 Iyon lang isang magarbong pangalan para dito. 2031 01:39:19,480 --> 01:39:20,730 Sabihing na muli. 2032 01:39:20,730 --> 01:39:22,880 2033 01:39:22,880 --> 01:39:25,170 Kaya tandaan, namin napili ngayon ang elemento. 2034 01:39:25,170 --> 01:39:27,810 At binuo namin ito sa loob ng ang variable na elemento. 2035 01:39:27,810 --> 01:39:28,600 Itama? 2036 01:39:28,600 --> 01:39:34,380 >> Kaya kapag gusto naming baguhin ang HTML sa sa loob, sapagkat ito ay Bob bago, mo 2037 01:39:34,380 --> 01:39:36,420 gusto na baguhin ang teksto na sa Milo. 2038 01:39:36,420 --> 01:39:37,920 Kaya tinatawag naming HTML. 2039 01:39:37,920 --> 01:39:41,610 At sabihin namin ito kung ano ang HTML sa loob elemento na dapat ngayon. 2040 01:39:41,610 --> 01:39:44,107 At kaya ito ay nagbabago dito sa Milo, dahil Ibinigay ko ito Milo. 2041 01:39:44,107 --> 01:39:46,542 >> Madla: Kaya sila nagsusumikap magkasama. 2042 01:39:46,542 --> 01:39:47,030 [Hindi marinig] 2043 01:39:47,030 --> 01:39:47,390 >> Joseph ONG: Oo, oo. 2044 01:39:47,390 --> 01:39:48,180 Sila ay nagsusumikap magkasama. 2045 01:39:48,180 --> 01:39:50,210 Kaya isa sa mga ito pumipili ang elemento muna. 2046 01:39:50,210 --> 01:39:52,863 At ang pangalawang isa gumagana isang bagay dito. 2047 01:39:52,863 --> 01:39:53,790 Oo. 2048 01:39:53,790 --> 01:39:56,168 >> Madla: [hindi marinig]. 2049 01:39:56,168 --> 01:40:01,280 Kung ang paraan na ito ay naiiba mula sa HTML mayroon ka ng mga pamamaraan katumbas aktwal na. 2050 01:40:01,280 --> 01:40:01,560 >> Joseph ONG: Oo. 2051 01:40:01,560 --> 01:40:03,370 Iyon ay isang iba't ibang mga paraan. 2052 01:40:03,370 --> 01:40:04,670 Iyon ay isang iba't ibang mga paraan. 2053 01:40:04,670 --> 01:40:07,860 At maaari naming masaklawan na sa isang segundo lamang kapag makuha namin sa isang halimbawa. 2054 01:40:07,860 --> 01:40:12,000 Gusto kong tiyakin na mapabilis namin up dahil kami nauubusan ng oras. 2055 01:40:12,000 --> 01:40:15,360 Ngunit tumakbo kami ng paraan sa paglipas ng panahon ngayon. 2056 01:40:15,360 --> 01:40:15,490 OK. 2057 01:40:15,490 --> 01:40:16,430 Cool. 2058 01:40:16,430 --> 01:40:20,130 Kaya kung nais mong magdagdag ng isang klase, mayroong ding paraan add klase. 2059 01:40:20,130 --> 01:40:24,300 Ito ay lamang ng isang halimbawa ng kung ano ang maaari mong gawin sa jQuery. 2060 01:40:24,300 --> 01:40:25,950 Iyon ay nagdadagdag lamang isang klase. 2061 01:40:25,950 --> 01:40:28,660 >> Kung nais mong alisin ito, maaari mong tawagin ang pag-alis. 2062 01:40:28,660 --> 01:40:32,280 Iyon ay isa lamang bagay na maaari mong gawin. 2063 01:40:32,280 --> 01:40:35,680 Kaya higit pang mga halimbawa ng mga bagay na maaari mong gawin. 2064 01:40:35,680 --> 01:40:37,510 Kaya ko maaaring ilagay lang ito sa tuktok na tulad nito? 2065 01:40:37,510 --> 01:40:38,760 Bunsong-alis. 2066 01:40:38,760 --> 01:40:42,470 2067 01:40:42,470 --> 01:40:45,930 Kung execute ko lang na JavaScript sa sa tuktok ng aking mga file, na gumagana? 2068 01:40:45,930 --> 01:40:48,540 2069 01:40:48,540 --> 01:40:48,920 Mag-right. 2070 01:40:48,920 --> 01:40:50,530 Dahil gitna Hindi pa umiiral. 2071 01:40:50,530 --> 01:40:51,840 Kaya ito ay hindi pagpunta sa gumana. 2072 01:40:51,840 --> 01:40:52,800 Execution order. 2073 01:40:52,800 --> 01:40:55,040 Ito ay tumatakbo nang una sa tuktok. 2074 01:40:55,040 --> 01:40:55,540 Ano? 2075 01:40:55,540 --> 01:40:57,450 >> Madla: bunsong Hindi pa umiiral? 2076 01:40:57,450 --> 01:40:57,810 >> Joseph ONG: Oo. 2077 01:40:57,810 --> 01:40:58,710 Bunsong Hindi pa umiiral. 2078 01:40:58,710 --> 01:40:59,600 Mismong. 2079 01:40:59,600 --> 01:41:01,320 >> Madla: Sinabi mo gitna. 2080 01:41:01,320 --> 01:41:01,510 >> Joseph ONG: Paumanhin. 2081 01:41:01,510 --> 01:41:02,720 Bunsong Hindi pa umiiral. 2082 01:41:02,720 --> 01:41:04,510 At ang iba pang mga bagay ay mayroon akong hindi Kasama ang jQuery 2083 01:41:04,510 --> 01:41:06,580 maghain magtanong script SRC. 2084 01:41:06,580 --> 01:41:07,960 Kaya na hindi pagpunta sa gumana. 2085 01:41:07,960 --> 01:41:09,580 Talaga, hindi ko gawin iyon sa sa susunod na slide, na 2086 01:41:09,580 --> 01:41:10,700 dapat ayusin na alinman. 2087 01:41:10,700 --> 01:41:14,120 Subalit ang paraan gawin namin na ito JavaScript ay hinihimok ng kaganapan. 2088 01:41:14,120 --> 01:41:17,410 Kaya kung ano ang ginagawa namin ay ginagamit namin ang isang kaganapan handler upang gawing mangyari ito. 2089 01:41:17,410 --> 01:41:19,510 At kaya kong piliin ang mga dokumento set muna. 2090 01:41:19,510 --> 01:41:23,810 Sinasabi ko, OK, kapag ang dokumento ay handa na, hayaan mo akong magpatakbo ng isang function. 2091 01:41:23,810 --> 01:41:25,470 Kaya iyon ang lahat na syntax paraan. 2092 01:41:25,470 --> 01:41:27,100 >> Pinili ko ang dokumento. 2093 01:41:27,100 --> 01:41:29,530 Ngayon, kapag ang dokumento ay handa na, patakbuhin ang function. 2094 01:41:29,530 --> 01:41:32,970 At kaya sa paglipas dito kapag ang dokumento ay handa na, na nangangahulugan na ang lahat ng mga HTML ay 2095 01:41:32,970 --> 01:41:36,140 load, pagkatapos ay magpatakbo ko ang pag-andar na nag-aalis ng elemento na iyon. 2096 01:41:36,140 --> 01:41:40,270 At kaya ngayon, kapag nagpatakbo ako ng function na ito na ako ang pumasa sa handa na, ako 2097 01:41:40,270 --> 01:41:43,780 katiyakan na ang lahat ng HTML sa pahina ay pagpunta sa unang umiiral. 2098 01:41:43,780 --> 01:41:44,100 Oo. 2099 01:41:44,100 --> 01:41:44,425 Tanong? 2100 01:41:44,425 --> 01:41:48,200 >> Madla: Ano ang keyword kaganapan sa loob ang function? 2101 01:41:48,200 --> 01:41:51,750 >> Joseph ONG: Kaya na keyword kaganapan sa function ay isang parameter lamang na 2102 01:41:51,750 --> 01:41:53,490 ay makakakuha ng mga pumasang sa pagpapaandar na para sa anumang kaganapan. 2103 01:41:53,490 --> 01:41:55,470 Ito ay isang bagay lamang na kang makakuha ng libre. 2104 01:41:55,470 --> 01:41:59,320 Kapag ikaw ay gumagamit ng key handler sa pset8, maaaring sabihin sa iyo ang kaganapan na iyon, para sa 2105 01:41:59,320 --> 01:42:01,350 Halimbawa, kung aling mga key na inyong pinindot sa. 2106 01:42:01,350 --> 01:42:05,540 Sa kasong ito, para sa isang handa na kaganapan, ito ay talagang hindi sobrang kapaki-pakinabang. 2107 01:42:05,540 --> 01:42:08,640 Ngunit para sa isang key down na kaganapan, ito ay higit pa kapaki-pakinabang, dahil makakuha ng mong malaman kung aling mga 2108 01:42:08,640 --> 01:42:12,330 key na inyong pinindot sa pamamagitan ng pag-access key off na bagay sa kaganapan ng code. 2109 01:42:12,330 --> 01:42:13,530 Itama? 2110 01:42:13,530 --> 01:42:15,160 Ba na magkaroon ng kahulugan? 2111 01:42:15,160 --> 01:42:16,280 OK. 2112 01:42:16,280 --> 01:42:16,580 Oo. 2113 01:42:16,580 --> 01:42:17,150 Tanong? 2114 01:42:17,150 --> 01:42:19,290 >> Madla: Kaya maaari mong ilagay ang mas mababa down na script tag na ito? 2115 01:42:19,290 --> 01:42:19,940 >> Joseph ONG: Kaya oo. 2116 01:42:19,940 --> 01:42:21,500 Maaari mong ilagay ang script tag ang mas mababang pababa. 2117 01:42:21,500 --> 01:42:23,090 Ngunit pagkatapos ay nagiging lamang ito talagang marumi. 2118 01:42:23,090 --> 01:42:26,590 At gusto namin upang magsagitna ang lahat ng aming code sa isang lugar. 2119 01:42:26,590 --> 01:42:28,290 At ito ay magbibigay-daan sa amin upang gawin ito. 2120 01:42:28,290 --> 01:42:32,010 Alalahanin na noong unang sinabi ko mayroong isang nicer paraan upang matiyak na ang mga elemento ay 2121 01:42:32,010 --> 01:42:33,880 sa pahina bago mo isakatuparan code? 2122 01:42:33,880 --> 01:42:36,079 At ito ay isa lamang sa isang masarap na paraan Gusto mo tuparin iyon. 2123 01:42:36,079 --> 01:42:37,329 >> Madla: [hindi marinig]. 2124 01:42:37,329 --> 01:42:41,710 2125 01:42:41,710 --> 01:42:42,230 >> Joseph ONG: Oo. 2126 01:42:42,230 --> 01:42:43,460 Gusto mo pa ring mag, tama? 2127 01:42:43,460 --> 01:42:46,930 Dahil tandaan, isinama mo ang maghain sa tuktok ng pahina. 2128 01:42:46,930 --> 01:42:49,890 Kaya ito ay pagpunta sa execute muna bago kang makakuha ng hanggang sa ibaba ng pahina. 2129 01:42:49,890 --> 01:42:54,600 2130 01:42:54,600 --> 01:42:55,180 OK. 2131 01:42:55,180 --> 01:42:59,210 Kaya maaari mo ring magdagdag ng iba't ibang mga uri ng handler ng kaganapan. 2132 01:42:59,210 --> 01:43:00,640 Isa na ito lamang pinoproseso ng mga pag-click. 2133 01:43:00,640 --> 01:43:03,910 Kapag nag-click ako sa bunso, pagkatapos ay ito ay pop up sa isang alerto. 2134 01:43:03,910 --> 01:43:05,440 Ito ay lamang ng ibang uri ng kaganapan. 2135 01:43:05,440 --> 01:43:08,840 Bilang kabaligtaran sa mga handa kaganapan, ngayon mo gamitin ang mga pag-click ng kaganapan kapag nakatanggap ka ng 2136 01:43:08,840 --> 01:43:10,190 nag-click sa isang elemento. 2137 01:43:10,190 --> 01:43:13,860 >> At kaya sa kasong ito, tandaan, ang pag-click handler ay naka-attach sa bunso. 2138 01:43:13,860 --> 01:43:16,080 Kaya ang mangyayari lamang ito kapag Click ako sa bunso. 2139 01:43:16,080 --> 01:43:19,510 At sa iba pang isa, ang handa kaganapan ay naka-attach sa dokumento. 2140 01:43:19,510 --> 01:43:23,750 Kaya naghihintay ang isang ito para sa mga dokumento upang maging handa. 2141 01:43:23,750 --> 01:43:25,120 Magkaroon ng kahulugan? 2142 01:43:25,120 --> 01:43:26,190 Sa tingin ko ang maaari kong magpatuloy. 2143 01:43:26,190 --> 01:43:26,610 Oo. 2144 01:43:26,610 --> 01:43:26,980 Tanong? 2145 01:43:26,980 --> 01:43:28,230 >> Madla: [hindi marinig]. 2146 01:43:28,230 --> 01:43:31,676 2147 01:43:31,676 --> 01:43:33,620 sa kasong ito gamitin mo [hindi marinig]. 2148 01:43:33,620 --> 01:43:36,650 >> Joseph ONG: Oh, oo, dahil sa ito kaso, mayroon akong maghintay para sa mga bunso 2149 01:43:36,650 --> 01:43:40,740 elemento na lumitaw sa screen sa unang bago ako makapag-attach ang isang humahawak ng pag-click sa 2150 01:43:40,740 --> 01:43:43,062 ito, na ang dahilan kung bakit ko bang ilagay ito sa loob ng handa ng isang dokumento. 2151 01:43:43,062 --> 01:43:45,780 2152 01:43:45,780 --> 01:43:46,840 OK. 2153 01:43:46,840 --> 01:43:52,390 At susunod, kaya ito ay isang malaking halimbawa ng kung paano mo pagsamahin ang lahat. 2154 01:43:52,390 --> 01:43:55,930 Ito ay isang halimbawa lamang pagpapatunay ng form na iyong nakita sa lecture. 2155 01:43:55,930 --> 01:43:58,410 Kaya dalhin ito hakbang sa pamamagitan ng hakbang na bilang pumunta ka sa pamamagitan ng ito. 2156 01:43:58,410 --> 01:43:59,590 At ito ang magiging ganap ang OK. 2157 01:43:59,590 --> 01:44:01,400 Basahin lamang ito mula sa itaas hanggang sa ibaba. 2158 01:44:01,400 --> 01:44:03,030 >> Mayroon akong isang form sa ibaba. 2159 01:44:03,030 --> 01:44:07,590 Kapag ang dokumento ay handa na, i-attach ko ang isang isumite ang handler sa mga form, tulad na 2160 01:44:07,590 --> 01:44:12,910 kapag isinumite ko ang form, nakukuha ko ang mga halaga sa loob ng bawat isa sa mga input. 2161 01:44:12,910 --> 01:44:14,560 At check ko kung ito ay blangko. 2162 01:44:14,560 --> 01:44:17,090 Kung ito ay blangko, bumalik ako ng hindi totoo, dahil Hindi ko nais upang isumite ang form, 2163 01:44:17,090 --> 01:44:18,950 dahil ang form na ito ay mali. 2164 01:44:18,950 --> 01:44:22,040 Kung ang password ay blangko o ito ay mas mababa kaysa sa walong mga character, hindi ko isumite 2165 01:44:22,040 --> 01:44:24,470 ang form na ito, dahil na ang mali din. 2166 01:44:24,470 --> 01:44:28,150 At ang return false lang pinipigilan ang form mula sa pagsusumite at 2167 01:44:28,150 --> 01:44:30,150 pagpunta sa isang bagong pahina. 2168 01:44:30,150 --> 01:44:31,310 >> At sana, ito ang may katuturan. 2169 01:44:31,310 --> 01:44:34,650 Sa tingin ko ka guys ay dapat maglakad sa pamamagitan ng ang code na ito hakbang-hakbang sa inyong sarili. 2170 01:44:34,650 --> 01:44:38,350 At sa sandaling maunawaan mo kung ano ang piliin mga elemento at gawin ang bagay-bagay dito 2171 01:44:38,350 --> 01:44:40,520 talaga entails, ito ay gumawa ng maraming kahulugan sa iyo. 2172 01:44:40,520 --> 01:44:41,295 Oo? 2173 01:44:41,295 --> 01:44:44,150 >> Madla: Ano ang ginagawa ng pangalan = ibig sabihin ng username? 2174 01:44:44,150 --> 01:44:48,530 >> Joseph ONG: Kaya ang pangalan = username at pangalan = password lamang ay nangangahulugan na tumingin sa 2175 01:44:48,530 --> 01:44:50,730 katangian ng kahit ano ka ng pagpili. 2176 01:44:50,730 --> 01:44:51,790 At pagkatapos na may upang tumugma sa. 2177 01:44:51,790 --> 01:44:53,870 Kaya namin pumunta sa pagpaparehistro. 2178 01:44:53,870 --> 01:44:56,240 At pagkatapos ay tinitingnan namin ang lahat ng input at pagpaparehistro. 2179 01:44:56,240 --> 01:44:59,990 At pagkatapos ay pumili namin ang isa na kung saan ang pangalan katangian ay katumbas ng username. 2180 01:44:59,990 --> 01:45:04,040 Kaya lamang Pinipili na unang-pili ang username ng pag-input. 2181 01:45:04,040 --> 01:45:08,220 At ang pangalawang tagapili pipili na lamang ang password ng isa, dahil sa mga mayroon 2182 01:45:08,220 --> 01:45:12,240 ang kanilang mga katangian pangalan itinakda bilang kung ano ang mga ito ay dapat na maging. 2183 01:45:12,240 --> 01:45:12,575 Tanong? 2184 01:45:12,575 --> 01:45:17,030 >> Madla: Sa pagsusumite, kung paano gumagana ang ibabang bahagi malutas ang nangungunang bahagi? 2185 01:45:17,030 --> 01:45:19,350 >> Joseph ONG: Kaya na ay dahil ng handler ng kaganapan. 2186 01:45:19,350 --> 01:45:23,000 Kaya kami ay naghihintay para sa isang isumite ang kaganapan na maipo-fired mula sa form na ito. 2187 01:45:23,000 --> 01:45:24,730 At iyon ang lahat na isumite. 2188 01:45:24,730 --> 01:45:26,080 Bakit Tinatawag kong isumite up doon? 2189 01:45:26,080 --> 01:45:28,870 Sinasabi nito, kapag ang form ay isinumite, Nakakuha ako ng isumite ang kaganapan. 2190 01:45:28,870 --> 01:45:33,480 Kaya hayaan agawin sa akin lamang na at pagkatapos patakbuhin ang code na ito sa halip. 2191 01:45:33,480 --> 01:45:33,823 Oo? 2192 01:45:33,823 --> 01:45:35,866 >> Madla: Bakit mayroon ka upang magkaroon ng pag-andar ng kaganapan? 2193 01:45:35,866 --> 01:45:38,580 Bakit hindi maaari mo lamang [hindi marinig]? 2194 01:45:38,580 --> 01:45:41,140 >> Joseph ONG: Dahil sa JavaScript, mo mayroon na idedeklara ang mga function. 2195 01:45:41,140 --> 01:45:42,910 Iyon lang kung paano ito gumagana sa JavaScript. 2196 01:45:42,910 --> 01:45:44,800 Mayroon kang upang sabihin ito ay pagpunta upang magpatakbo ng isang function. 2197 01:45:44,800 --> 01:45:47,290 Kaya sinasabi mo ito na ikaw ay sa halip na umaasa sa isang function dito 2198 01:45:47,290 --> 01:45:48,260 lamang kulot tirante. 2199 01:45:48,260 --> 01:45:50,460 >> Madla: At ang pag-andar ay kahit anong sumusunod? 2200 01:45:50,460 --> 01:45:50,650 >> Joseph ONG: Oo. 2201 01:45:50,650 --> 01:45:52,790 Ang function na ay kahit anong ay nasa loob ang kulot tirante pagkatapos 2202 01:45:52,790 --> 01:45:53,630 na pag-andar ng keyword. 2203 01:45:53,630 --> 01:45:54,045 Oo? 2204 01:45:54,045 --> 01:45:55,295 >> Madla: [hindi marinig]. 2205 01:45:55,295 --> 01:46:00,180 2206 01:46:00,180 --> 01:46:00,660 >> Joseph ONG: Para isumite? 2207 01:46:00,660 --> 01:46:03,520 >> Madla: Hindi, para sa pagpapaandar walang kaganapan. 2208 01:46:03,520 --> 01:46:03,770 >> Joseph ONG: Oo. 2209 01:46:03,770 --> 01:46:05,610 Kaya walang kaganapan, maaari kang magkaroon ng na. 2210 01:46:05,610 --> 01:46:08,480 Kung hindi mo kailangan ang kaganapan, pagkatapos ay maaari mong ligtaan lamang ito. 2211 01:46:08,480 --> 01:46:12,220 Subalit kung gagawin mo, pagkatapos mo ilagay lang ito doon. 2212 01:46:12,220 --> 01:46:12,520 Oo. 2213 01:46:12,520 --> 01:46:13,190 Mabilis na katanungan? 2214 01:46:13,190 --> 01:46:14,440 >> Madla: [hindi marinig]. 2215 01:46:14,440 --> 01:46:21,170 2216 01:46:21,170 --> 01:46:21,440 >> Joseph ONG: Oo. 2217 01:46:21,440 --> 01:46:24,550 Dahil kung ano ang kailangan mong gawin, ang lang sabi ni document.ready maghintay para sa lahat 2218 01:46:24,550 --> 01:46:26,540 ang HTML sa pahina upang i-load muna. 2219 01:46:26,540 --> 01:46:30,510 At kadalasan, nais mo ang iyong mga elemento sa lugar bago mo mapatakbo ang anumang code. 2220 01:46:30,510 --> 01:46:31,030 Ayos lang. 2221 01:46:31,030 --> 01:46:32,180 Mayroon kaming upang makapunta sa Ajax. 2222 01:46:32,180 --> 01:46:33,110 Wala kaming karaming oras. 2223 01:46:33,110 --> 01:46:35,170 Kaya pros at cons. 2224 01:46:35,170 --> 01:46:37,450 JavaScript ay mas madali try isulat na may jQuery. 2225 01:46:37,450 --> 01:46:38,930 Ngunit jQuery ay uri ng mabagal. 2226 01:46:38,930 --> 01:46:42,290 >> Ito ay tulad ng PHP ay mas mabagal kaysa sa C, dahil na-kahulugan. 2227 01:46:42,290 --> 01:46:45,690 At jQuery ay isang bit mas mabagal kaysa sa JavaScript, dahil ginagawa nito ng maraming 2228 01:46:45,690 --> 01:46:46,630 mga bagay sa ilalim ng hood. 2229 01:46:46,630 --> 01:46:48,660 At kaya kung gumagamit ka ng jQuery, ito ay lamang ng kaunti bit mas mabagal kaysa sa 2230 01:46:48,660 --> 01:46:51,630 JavaScript, kahit na ito Binibigyan ka ng magaling na kagandahan. 2231 01:46:51,630 --> 01:46:53,970 At sa wakas, Ajax. 2232 01:46:53,970 --> 01:46:59,170 Sa ngayon may Ajax, hindi mo pa nakita Ajax sa pang tuntunin ng pset7, dahil 2233 01:46:59,170 --> 01:47:01,150 kapag nagawa mo, isinumite mo isang form sa quote. 2234 01:47:01,150 --> 01:47:02,350 Naglo-load nito ang bagong pahina. 2235 01:47:02,350 --> 01:47:04,440 Kaya mo makakuha ng ito malaki puting flash sa pahina habang na 2236 01:47:04,440 --> 01:47:06,820 naglo-load ang ikalawang pahina, tama? 2237 01:47:06,820 --> 01:47:08,780 >> Mas maganda talaga kung ikaw ay hindi magkaroon ito ng flash. 2238 01:47:08,780 --> 01:47:11,600 Tulad ng Facebook, kung kang mag-scroll lamang upang sa ibaba, nagdadagdag ito ng bagong nilalaman 2239 01:47:11,600 --> 01:47:13,490 nang hindi nagre-refresh ang buong pahina. 2240 01:47:13,490 --> 01:47:15,420 Kaya ang isang bagay tulad na ito ay magiging maganda. 2241 01:47:15,420 --> 01:47:17,370 Ito ang JavaScript code sa kaliwang bahagi. 2242 01:47:17,370 --> 01:47:19,390 Makukuha mo ang kung ano ay nasa loob ng input na. 2243 01:47:19,390 --> 01:47:21,340 Makukuha mo ang mga stock ng impormasyon mula sa Yahoo! 2244 01:47:21,340 --> 01:47:27,440 At pagkatapos ay gumawa ka ng isang malaking string na sabi, OK, ito ang mensahe na gusto ko 2245 01:47:27,440 --> 01:47:28,400 upang ipakita sa screen. 2246 01:47:28,400 --> 01:47:32,280 At pagkatapos mong ilagay ang mensahe na loob ng ilang mga HTML element na hindi nakakaabala 2247 01:47:32,280 --> 01:47:33,970 ipinapakita sa screen. 2248 01:47:33,970 --> 01:47:35,540 >> Kaya na ang lahat na nangyayari dito. 2249 01:47:35,540 --> 01:47:39,410 Kaya talaga, dahil ito ay ang lahat ng JavaScript at hindi mo kailangang magpatakbo ng 2250 01:47:39,410 --> 01:47:42,980 ngayon PHP, ito ay tiyakin na ang pahina ay hindi i-refresh. 2251 01:47:42,980 --> 01:47:47,470 Kaya ito ay lamang ng isang abstract na ideya na ako sinasabi dito sa ngayon. 2252 01:47:47,470 --> 01:47:50,630 Ang abstract na ideya ay na kung gagawin mo ito lahat sa JavaScript, hindi mo na magkaroon ng isang 2253 01:47:50,630 --> 01:47:52,330 pahina ng refresh. 2254 01:47:52,330 --> 01:47:53,800 Ngunit paano mo talagang gawin ito? 2255 01:47:53,800 --> 01:47:56,230 >> Well, talaga, makipag-usap tungkol sa ipaalam isang problema sa unang ito. 2256 01:47:56,230 --> 01:47:59,340 Ang problema ay sa JavaScript, pagpapatupad ay hindi sabaysabay. 2257 01:47:59,340 --> 01:48:02,000 Kaya mayroon kang maghintay para sa isa upang tapusin bago ka linya 2258 01:48:02,000 --> 01:48:03,370 isakatuparan ang susunod na linya. 2259 01:48:03,370 --> 01:48:06,130 At paano kung ako pupunta sa ibabaw sa Yahoo!, at ang kanilang mga server ay talagang mabagal, at 2260 01:48:06,130 --> 01:48:08,790 ito ay tumatagal ng mga ito ng tatlong segundo sa bigyan ako pabalik na impormasyon ng stock? 2261 01:48:08,790 --> 01:48:12,620 Kapag pinindot ko na linya presyo, kung ang pagpapatupad ay hindi sabaysabay na ito, dahil sa pamamagitan ng 2262 01:48:12,620 --> 01:48:15,390 default, kung ano lang ito ng pagpunta sa gawin ay ang iyong browser ay pagpunta sa stall para 2263 01:48:15,390 --> 01:48:15,930 tatlong segundo. 2264 01:48:15,930 --> 01:48:18,900 At hindi ka pagpunta sa magawa kahit ano habang ito ay makakakuha ng data na iyon. 2265 01:48:18,900 --> 01:48:20,010 Ito ay pagpunta sa ma-frozen. 2266 01:48:20,010 --> 01:48:20,800 >> At iyon ang masama. 2267 01:48:20,800 --> 01:48:23,390 Hindi mo na gusto ng isang user sa magkaroon ng isang nakapirming web page. 2268 01:48:23,390 --> 01:48:24,170 Itama? 2269 01:48:24,170 --> 01:48:25,480 Iyon lamang ang masama. 2270 01:48:25,480 --> 01:48:26,770 Sumasang-ayon ang bawat tao'y? 2271 01:48:26,770 --> 01:48:29,270 Kung nagba-browse ka sa Facebook at ito freezes at hindi ka maaaring gumawa ng anumang bagay, mo 2272 01:48:29,270 --> 01:48:31,920 makakuha ng talagang bigo. 2273 01:48:31,920 --> 01:48:34,960 Kaya ang solusyon ay gumawa kami ng isang bagay asynchronous sa halip. 2274 01:48:34,960 --> 01:48:38,910 Kaya sabi ni ang lahat ng ito asynchronous na bagay ay, pupuntahan ko tanungin ito 2275 01:48:38,910 --> 01:48:40,280 URL para sa ilang mga data. 2276 01:48:40,280 --> 01:48:41,610 At pagkatapos ay ako pagpunta sa panatilihin ang pagpunta. 2277 01:48:41,610 --> 01:48:45,330 Lamang ako ng pagpunta sa panatilihin e-execute kahit anong code na noon ay matapos na. 2278 01:48:45,330 --> 01:48:49,290 >> At pagkatapos ay sa tuwing ang data na iyon ay handa na, pagkatapos ay ako iproseso ito. 2279 01:48:49,290 --> 01:48:50,540 Iyon ay ang lahat ng ito ay sinasabi. 2280 01:48:50,540 --> 01:48:52,795 2281 01:48:52,795 --> 01:48:56,710 >> Madla: lamang ginagawang Ajax asynchronous code? 2282 01:48:56,710 --> 01:48:58,560 >> Joseph ONG: Ito ay isang asynchronous paraan ng pagkuha ng data. 2283 01:48:58,560 --> 01:49:01,230 Kaya ang unang bagay na tungkol sa Ajax ay nagbibigay-daan ito sa akin kumuha ng data 2284 01:49:01,230 --> 01:49:03,170 mula sa isang panlabas na website. 2285 01:49:03,170 --> 01:49:07,045 At ang ikalawang bagay ay ito tinitiyak ng na ang aking pahina ay hindi stall habang ako 2286 01:49:07,045 --> 01:49:07,970 kinukuha ang data na iyon. 2287 01:49:07,970 --> 01:49:09,600 Iyan ang asynchronous na bahagi nito. 2288 01:49:09,600 --> 01:49:13,040 Dahil ito napupunta off sa ibang lugar, dahil sinasabi ko panatilihing ako pagpunta sa habang 2289 01:49:13,040 --> 01:49:14,900 ito ay kinukuha ang data na iyon, na Ginagawang asynchronous. 2290 01:49:14,900 --> 01:49:17,170 Panatilihin ko e-execute. 2291 01:49:17,170 --> 01:49:18,960 >> Kaya panatilihin na asynchronous ideya sa isip. 2292 01:49:18,960 --> 01:49:22,010 At kukunin ko na ipakita sa iyo kung ano ang pagkakaiba ay. 2293 01:49:22,010 --> 01:49:23,920 Ang sabaysabay na bersyon ay sa kaliwang bahagi. 2294 01:49:23,920 --> 01:49:26,240 Ang asynchronous na bersyon ay sa kanang bahagi. 2295 01:49:26,240 --> 01:49:29,170 Tumingin sa mga numero upang makita kung aling hakbang na ito ay tumutugma sa kung ano ang 2296 01:49:29,170 --> 01:49:30,610 executes sa bawat linya. 2297 01:49:30,610 --> 01:49:32,730 Sa paglipas ng doon, ay nagpapakita up ang alerto muna. 2298 01:49:32,730 --> 01:49:34,590 Dahil ang pagkuha ng impormasyon ng stock mula sa Yahoo! 2299 01:49:34,590 --> 01:49:37,250 tumatagal ng tatlong segundo, kuwadra ito para sa tatlong segundo. 2300 01:49:37,250 --> 01:49:39,880 At pagkatapos nito alerto ang presyo pagkatapos ng mga tatlong segundo. 2301 01:49:39,880 --> 01:49:43,690 >> Kaya ngayon, na palabas alerto hanggang sa oras na iyon - 2302 01:49:43,690 --> 01:49:44,610 tatlong segundo in 2303 01:49:44,610 --> 01:49:47,670 At pagkatapos ng mga alerto sa ito sa pamamagitan ng pagkatapos nito. 2304 01:49:47,670 --> 01:49:48,930 Kaya mangyaring hindi lang ito hakbang-hakbang. 2305 01:49:48,930 --> 01:49:51,200 Ito ay tulad ng kung ano ang iyong guys Gusto tanggapin, tama? 2306 01:49:51,200 --> 01:49:54,170 Gamit ang asynchronous na pagpapatupad, una kang alertuhan. 2307 01:49:54,170 --> 01:49:57,410 Pagkatapos ay pumunta ka off sa URL na ito. 2308 01:49:57,410 --> 01:49:59,530 At sabihin mo, pupuntahan ko magtanong lamang para sa data. 2309 01:49:59,530 --> 01:50:01,170 At pagkatapos ay pupuntahan ko maproseso ito sa ibang pagkakataon. 2310 01:50:01,170 --> 01:50:04,230 Kaya agad executes ito ang susunod na linya pagkatapos kong gawin iyon 2311 01:50:04,230 --> 01:50:05,710 asynchronous kahilingan. 2312 01:50:05,710 --> 01:50:08,920 >> Kaya isang .001 segundo, makikita mo hi alerto. 2313 01:50:08,920 --> 01:50:10,960 Ipatupad na pag-andar, hindi importanteng bagay alerto. 2314 01:50:10,960 --> 01:50:14,240 At dahil ginawa ko ng pangako na ako Gusto iproseso ang data sa ibang pagkakataon, kung ano 2315 01:50:14,240 --> 01:50:17,920 ang mangyayari ay kapag nanggagaling ang data na iyon pabalik tatlong segundo mamaya, pagkatapos tumakbo ko na 2316 01:50:17,920 --> 01:50:21,380 pagpapaandar na mayroon akong banda roon. 2317 01:50:21,380 --> 01:50:21,870 Oo? 2318 01:50:21,870 --> 01:50:25,750 >> Madla: Maaari mo bang tukuyin o linawin kung ano ang ibig sabihin Ajax? 2319 01:50:25,750 --> 01:50:30,460 >> Joseph ONG: Kaya Ajax ay isang paraan na kung ako kailangan data kapag ako sa isang website at ako 2320 01:50:30,460 --> 01:50:34,690 ayaw mong i-refresh ang pahina, pagkatapos ay Gamitin ko ang teknolohiyang ito na tinatawag Ajax. 2321 01:50:34,690 --> 01:50:40,630 Iyon mahalagang lamang ay nangangahulugan na, pumunta fetch data mula sa isa pang website. 2322 01:50:40,630 --> 01:50:43,724 At gawin ito sa isang paraan na lamang Hindi stall ang aking web page. 2323 01:50:43,724 --> 01:50:46,650 >> Madla: Kaya ay na taglay bahagi ng JavaScript o jQuery? 2324 01:50:46,650 --> 01:50:50,590 >> Joseph ONG: Isinulat ni So sa isang tao ng paraan upang gawin sa ganitong JavaScript isang mahabang panahon ang nakalipas. 2325 01:50:50,590 --> 01:50:52,050 Sa isang punto, hindi ito umiiral. 2326 01:50:52,050 --> 01:50:56,630 At gayon ang isang tao imbento sa diskarteng ito upang payagan ang mga tao upang hilingin ang data na ito 2327 01:50:56,630 --> 01:50:57,680 sa ganitong paraan. 2328 01:50:57,680 --> 01:50:59,550 At na sinulat nila ang ilang mga bagay-bagay upang gawin ito para sa iyo. 2329 01:50:59,550 --> 01:51:01,605 At jQuery lamang ay nagbibigay sa iyo ito napakabuti paraan upang gawin ito 2330 01:51:01,605 --> 01:51:03,112 may ganitong $. makakuha ng function. 2331 01:51:03,112 --> 01:51:07,200 2332 01:51:07,200 --> 01:51:09,480 tanong? 2333 01:51:09,480 --> 01:51:11,560 Maaari ko bang sagutin ang mga tanong tungkol sa Ajax Pagkatapos masyadong. 2334 01:51:11,560 --> 01:51:13,870 Makikita ko ba dito. 2335 01:51:13,870 --> 01:51:16,390 >> Kaya ito sabihin sa amin makuha ang data nang walang i-refresh ang pahina. 2336 01:51:16,390 --> 01:51:18,200 At sabihin sa amin gawin ito sa isang asynchronous paraan na 2337 01:51:18,200 --> 01:51:19,450 ay hindi mag-freeze ng pahina. 2338 01:51:19,450 --> 01:51:22,680 2339 01:51:22,680 --> 01:51:27,310 Masyadong mahaba, ay hindi basahin kung na paliwanag ay masyadong mahaba para sa iyo. 2340 01:51:27,310 --> 01:51:29,430 Kaya sa wakas, cross-site pag-atake scripting. 2341 01:51:29,430 --> 01:51:30,910 Nakita namin ito sa Zamyla. 2342 01:51:30,910 --> 01:51:34,285 Kung sa aking database ng isang tao ay may ganitong pangalan, na kung saan ay ang script na ito na tag, at ako 2343 01:51:34,285 --> 01:51:38,280 may ilang mga code sa aking mga pahina na mga kopya out mga pangalan ng mga tao sa isang hilera, o mayroon akong 2344 01:51:38,280 --> 01:51:43,310 ilang code ng JavaScript na pagsingit ang pangalang ito sa pahina, 2345 01:51:43,310 --> 01:51:45,680 ano HTML ay makakakuha-produce? 2346 01:51:45,680 --> 01:51:47,290 Well, i-print ko ang mga tag na HTML. 2347 01:51:47,290 --> 01:51:48,390 I-print ko ang lahat ng mga tag na ito. 2348 01:51:48,390 --> 01:51:50,740 >> Na nakuha ko sa mga bahagi kung saan ako sa pag-print out kasama ang aking mga kaibigan. 2349 01:51:50,740 --> 01:51:52,980 I-print ko Lauren out. 2350 01:51:52,980 --> 01:51:54,200 Nag-print Milo out. 2351 01:51:54,200 --> 01:51:56,810 At pagkatapos ay ang aking pangalan sa database ay script na post 2352 01:51:56,810 --> 01:51:58,060 unflattering katayuan Facebook. 2353 01:51:58,060 --> 01:52:00,740 2354 01:52:00,740 --> 01:52:04,330 Dahil ipinasok ko ito sa pahina dahil mukhang JavaScript, kapag 2355 01:52:04,330 --> 01:52:07,930 ang pahinang ito ay makakakuha ng ipinadala sa gumagamit, maipo-pinaandar bilang ang JavaScript. 2356 01:52:07,930 --> 01:52:10,800 At kaya ito ay ang tinatawag naming isang cross-site na pag-atake scripting. 2357 01:52:10,800 --> 01:52:14,570 May isang tao na naglalagay ng nakahahamak na impormasyon sa sa iyong database na maaaring tumugma sa 2358 01:52:14,570 --> 01:52:17,080 ilang karagdagang string o ilang string ang JavaScript. 2359 01:52:17,080 --> 01:52:20,130 >> At kapag ito ay makakakuha ng naka-print out sa pahina sa ganitong paraan, pagkatapos ay i-ano 2360 01:52:20,130 --> 01:52:22,580 ang mangyayari ay na ang masamang code ay makakakuha ng pinaandar na hindi ko nilayong 2361 01:52:22,580 --> 01:52:25,110 para dito upang makakuha ng pinaandar. 2362 01:52:25,110 --> 01:52:28,230 At iyon ang lahat ng cross-site na atake scripting ay. 2363 01:52:28,230 --> 01:52:31,790 At ang paraan makakuha ka sa paligid ito ay tulad ng sinabi Zamyla. 2364 01:52:31,790 --> 01:52:34,340 Balutin mo lang ng bagay sa HTML espesyal na karakter. 2365 01:52:34,340 --> 01:52:39,460 At ito espesyal na karakter HTML ay isang PHP function na ay maiwasan ang ganitong uri 2366 01:52:39,460 --> 01:52:42,000 ng bagay mula sa nangyayari sa iyo kung mayroon kang isang nakakahamak na 2367 01:52:42,000 --> 01:52:43,830 string sa iyong database. 2368 01:52:43,830 --> 01:52:47,650 Escapes Ito lang ito, nang sa gayon ay hindi makakuha ng mga kahulugan bilang HTML. 2369 01:52:47,650 --> 01:52:50,960 Pinapalitan nito ang maliit na bracket sa kung ano ang tinatawag naming mga entity. 2370 01:52:50,960 --> 01:52:52,250 At nagpunta kami sa paglipas ng ito sa panayam masyadong. 2371 01:52:52,250 --> 01:52:55,800 Kaya sa palagay ko ka guys ay dapat magkaroon isang magandang hawakang mahigpit sa na. 2372 01:52:55,800 --> 01:52:57,420 Mga Katanungan? 2373 01:52:57,420 --> 01:52:57,820 Oo. 2374 01:52:57,820 --> 01:53:00,860 >> Madla: Kaya kung paano gagawin ang [hindi marinig]? 2375 01:53:00,860 --> 01:53:01,555 >> Joseph ONG: Sabihin na muli. 2376 01:53:01,555 --> 01:53:02,500 >> Madla: Paano gagawin ang monitor - 2377 01:53:02,500 --> 01:53:02,860 >> Joseph ONG: Mag-right. 2378 01:53:02,860 --> 01:53:06,080 Kaya mayroon kang isang bagay na nagsasabing, kapag Ako magparehistro, uri sa aking pangalan. 2379 01:53:06,080 --> 01:53:09,390 Lamang nagta-type ako sa patlang na iyon, ang aking pangalan ay stript post unflattering Facebook 2380 01:53:09,390 --> 01:53:11,570 katayuan malapit script tag. 2381 01:53:11,570 --> 01:53:15,690 At na lamang ay makakakuha ng ilagay sa database, dahil hindi ko masabi ng isang tao 2382 01:53:15,690 --> 01:53:18,260 sa mundo ay walang pangalan may kaliwang arrow sa loob nito o ang 2383 01:53:18,260 --> 01:53:19,036 salita ng script sa loob nito. 2384 01:53:19,036 --> 01:53:21,330 Hindi iyon talagang magkaroon ng kahulugan. 2385 01:53:21,330 --> 01:53:24,560 Kaya Mayroon akong lamang upang matiyak na ako sanitize ang mga bagay na bago ko i-print ito 2386 01:53:24,560 --> 01:53:25,420 out sa pahina. 2387 01:53:25,420 --> 01:53:27,140 >> Madla: Kaya ang HTML espesyal na cards pinipigilan ang mga script tag? 2388 01:53:27,140 --> 01:53:28,710 >> Joseph ONG: Oo. 2389 01:53:28,710 --> 01:53:29,960 Kaya ito ay hindi maiwasan ang mga script tag. 2390 01:53:29,960 --> 01:53:32,320 Ginagawa lamang itong siguraduhin na ang mga script tag na huwag makuha 2391 01:53:32,320 --> 01:53:35,120 kahulugan bilang HTML o - 2392 01:53:35,120 --> 01:53:35,400 oo. 2393 01:53:35,400 --> 01:53:38,470 Ay lang ito up bilang kung ano ito talaga. 2394 01:53:38,470 --> 01:53:39,220 Ayos lang. 2395 01:53:39,220 --> 01:53:40,930 Kaya na ay ang pagsusuri pagsusulit. 2396 01:53:40,930 --> 01:53:41,830 Cool. 2397 01:53:41,830 --> 01:53:45,088 >> [Palakpakan]