1 00:00:00,000 --> 00:00:02,270 >> [Review: Quiz 1] 2 00:00:02,270 --> 00:00:04,620 [Ali Nahm, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Chuo Kikuu cha Harvard] 3 00:00:04,620 --> 00:00:07,660 [Hii ni CS50.] [CS50.TV] 4 00:00:07,660 --> 00:00:11,610 [Lucas Freitas] Karibu kila mtu. Hii ni mapitio kwa jaribio 1. 5 00:00:11,610 --> 00:00:15,040 Tu kama Kanusho, hii ni - I mean, tunakwenda kujaribu kufunika 6 00:00:15,040 --> 00:00:17,770 vifaa kama iwezekanavyo, lakini hiyo haina maana kwamba 7 00:00:17,770 --> 00:00:20,780 tunakwenda cover yote ya mambo ambayo yanaweza kuwa katika jaribio 1. 8 00:00:20,780 --> 00:00:25,270 Hivyo kuwa na uhakika pia kuangalia katika hotuba, sehemu, kila kitu kuwa unaweza. 9 00:00:25,270 --> 00:00:28,240 Quiz 1 ni kwenda kuwa juu ya Jumatano, Jumatano ijayo. 10 00:00:28,240 --> 00:00:33,800 Hivyo kuwa na uhakika kujifunza. Ni kwenda kuwa, pretty much, kama jaribio la kwanza 11 00:00:33,800 --> 00:00:36,390 kuhusu muundo wake, lakini pengine ni kwenda kuwa ngumu sana. 12 00:00:36,390 --> 00:00:39,600 Kwa uchache, mwaka jana wakati mimi alichukua 50, nilifikiri ilikuwa vigumu sana. 13 00:00:39,600 --> 00:00:42,410 Hivyo utafiti mengi. 14 00:00:42,410 --> 00:00:45,190 >> Mimi nina kwenda kufidia miundo data na Huffman coding. 15 00:00:45,190 --> 00:00:47,910 Hili ni jambo ambalo mengi ya watu wanadhani ni tata, 16 00:00:47,910 --> 00:00:51,930 lakini mimi nina kwenda kujaribu kufanya hivyo kama rahisi kama iwezekanavyo. 17 00:00:51,930 --> 00:00:56,330 Awali ya yote, nini tunataka nyie kujua kwa jaribio 1 ni kwa 18 00:00:56,330 --> 00:01:00,970 kuelewa maelezo dhana ya kila data miundo kwamba mimi nina kwenda sasa. 19 00:01:00,970 --> 00:01:03,960 Hiyo ina maana kwamba huna kwa kweli 20 00:01:03,960 --> 00:01:07,020 kutekeleza meza hash katika jaribio yako 1. 21 00:01:07,020 --> 00:01:10,250 Hatutaki wewe kutekeleza yote hash meza, labda tutaweza kujaribu 22 00:01:10,250 --> 00:01:13,090 kufanya kutekeleza baadhi ya majukumu, 23 00:01:13,090 --> 00:01:16,940 shughuli ya kawaida, lakini sisi siyo kwenda kufanya kutekeleza kila kitu. 24 00:01:16,940 --> 00:01:21,010 Hivyo ni muhimu kwamba kuelewa dhana nyuma ya kila muundo data 25 00:01:21,010 --> 00:01:23,510 na pia kwamba una uwezo na kanuni katika C, 26 00:01:23,510 --> 00:01:27,880 tu shughuli ya kawaida wao na kwa kila muundo data. 27 00:01:27,880 --> 00:01:30,090 Na pia kuwa na uwezo wa kupitia kuyatumia na structs, 28 00:01:30,090 --> 00:01:33,470 kwa sababu wao kuonekana mengi katika miundo haya data. 29 00:01:33,470 --> 00:01:37,380 >> Kwanza, wanaohusishwa orodha. Orodha wanaohusishwa ni kweli ni sawa na arrays, 30 00:01:37,380 --> 00:01:39,930 lakini tofauti kati ya orodha wanaohusishwa na safu, 31 00:01:39,930 --> 00:01:45,160 kwanza ya yote, ni kwamba orodha wanaohusishwa ina rahisi sana ukubwa, 32 00:01:45,160 --> 00:01:50,060 wakati katika arrays una ama kuchagua ukubwa kubwa sana kwa safu, 33 00:01:50,060 --> 00:01:53,710 ili kujua kwamba wewe ni kwenda kuwa na uwezo wa kuhifadhi data yako yote katika safu, 34 00:01:53,710 --> 00:01:59,370 au una kutumia malloc kuwa na urefu rahisi wa safu. 35 00:01:59,370 --> 00:02:03,680 Katika orodha wanaohusishwa ni rahisi sana kupata tu mambo zaidi, 36 00:02:03,680 --> 00:02:07,210 kuweka mambo zaidi katika orodha wanaohusishwa au kuondoa vipengele. 37 00:02:07,210 --> 00:02:09,370 Na kwa kweli, kama wewe hawataki orodha wanaohusishwa na kutatuliwa, 38 00:02:09,370 --> 00:02:13,950 unaweza kutafuta na kuondoa vipengele katika wakati mara kwa mara, 39 00:02:13,950 --> 00:02:16,800 hivyo O (1) wakati, hivyo ni rahisi sana. 40 00:02:16,800 --> 00:02:20,660 Wewe tu kuwa makini daima kumbuka malloc na bure nodes, 41 00:02:20,660 --> 00:02:25,510 kwa sababu tu kama huna, itabidi uvujaji kumbukumbu. 42 00:02:25,510 --> 00:02:31,480 Orodha hiyo wanaohusishwa - ufafanuzi wa node ni kama yale tuna haki ya huko. 43 00:02:31,480 --> 00:02:35,110 Mimi kuweka int n, lakini unaweza kuhifadhi data yoyote unataka. 44 00:02:35,110 --> 00:02:37,280 Hivyo kama wewe unataka kuhifadhi kamba, ni nzuri. 45 00:02:37,280 --> 00:02:41,690 Kama unataka kuhifadhi struct, ni nzuri, mara mbili, chochote unataka. 46 00:02:41,690 --> 00:02:44,630 Mimi tu ya kuweka int n kwa mifano hapa. 47 00:02:44,630 --> 00:02:46,800 Na una pointer kwa node ijayo. 48 00:02:46,800 --> 00:02:51,940 Kwa hiyo, kimsingi, orodha wanaohusishwa ina baadhi ya data, na kisha inaelekeza katika node ijayo. 49 00:02:51,940 --> 00:02:56,710 Kama ni hiki mwisho katika orodha wanaohusishwa, ni kwenda kwa uhakika na null. 50 00:02:56,710 --> 00:02:59,060 Hivyo hii ni mfano wa orodha wanaohusishwa. 51 00:02:59,250 --> 00:03:05,960 >> Sawa, hivyo sasa hebu angalia nini tunapaswa kufanya kama nataka kuingiza kipengele katika orodha wanaohusishwa. 52 00:03:05,960 --> 00:03:08,810 Kwanza, kuingiza kazi itakuwa ya aina utupu 53 00:03:08,810 --> 00:03:11,350 kwa sababu sitaki kurudi kitu chochote. 54 00:03:11,350 --> 00:03:14,200 Na mimi nina kwenda kuchukua int kama hoja, 55 00:03:14,200 --> 00:03:17,090 kwa sababu Mimi nataka kujua nini nataka kuingiza. 56 00:03:17,090 --> 00:03:21,840 Basi nini Jambo la kwanza mimi wanapaswa kufanya nini? Naam, mimi lazima malloc juu ya newnode, 57 00:03:21,840 --> 00:03:24,240 hivyo kwamba ni mstari wa kwanza. 58 00:03:24,240 --> 00:03:27,580 Mimi nina kujenga tu nodi mpya kuweka katika orodha wanaohusishwa. 59 00:03:27,580 --> 00:03:32,360 Hivyo naweza kufanya nini? Vizuri, tunajua kwamba katika utekelezaji wa orodha wanaohusishwa wetu 60 00:03:32,360 --> 00:03:38,180 darasani, sisi daima kuweka kichwa kama variable kimataifa. 61 00:03:38,180 --> 00:03:41,800 Hivyo nini tunaweza kufanya ni kubadilisha kichwa. 62 00:03:41,800 --> 00:03:44,300 Mimi siwezi kufanya node hii mpya kuwa mkuu mpya, 63 00:03:44,300 --> 00:03:46,670 na ni kwenda kwa uhakika na kichwa uliopita. 64 00:03:46,670 --> 00:03:50,390 Jinsi gani tunaweza kufanya hivyo? Jambo la kwanza mimi kufanya 65 00:03:50,390 --> 00:03:54,770 ni mabadiliko 'n' katika node mpya ya thamani, 66 00:03:54,770 --> 00:03:57,530 ambayo ilipitishwa kufanya kazi. 67 00:03:57,530 --> 00:04:01,050 Kisha ni newnode ya pili ni kwenda kuwa kichwa. 68 00:04:01,050 --> 00:04:05,800 kichwa ni kwenda kuwa newnode. Hivyo ni pretty rahisi. 69 00:04:05,800 --> 00:04:10,090 Kwa ajili ya kufuta node, tunaweza kufanya hivyo kama - 70 00:04:10,090 --> 00:04:14,790 Njia moja tunaweza kufanya hivyo ni kusema, 71 00:04:14,790 --> 00:04:18,160 sawa, kama nilitaka kufuta, kwa mfano, 3, 72 00:04:18,160 --> 00:04:24,850 nini mimi naweza kufanya ni uhakika tu node uliopita 73 00:04:24,850 --> 00:04:27,580 kwa node ya pili ya 3. 74 00:04:27,580 --> 00:04:29,400 Hivyo napenda tu kufanya kitu kama hicho. 75 00:04:29,400 --> 00:04:33,400 Lakini ni tatizo na kufanya hivyo ni nini? 76 00:04:33,400 --> 00:04:37,400 Nina kumbukumbu leak, hivyo mimi si kupata namba 3 tena. 77 00:04:37,400 --> 00:04:42,480 tatizo na hilo ni kwamba mimi si kwenda kuwa na uwezo wa bure kwamba nodi. 78 00:04:42,480 --> 00:04:45,360 Mimi naenda kuwa na kumbukumbu leak na (yasiyo na) ni kwenda chuki yangu. 79 00:04:45,360 --> 00:04:49,370 Hivyo badala ya kufanya hivyo, mimi lazima pengine na pointer muda. 80 00:04:49,370 --> 00:04:53,210 Basi, mimi kuweka temp. Ni kwenda kwa uhakika na nodi kwamba mimi unataka kufuta. 81 00:04:53,210 --> 00:04:58,170 Na kisha naweza kusogeza nodes uliopita kwa uhakika node ijayo 82 00:04:58,170 --> 00:05:00,390 ya nodi kwamba mimi unataka kufuta. 83 00:05:00,390 --> 00:05:02,730 Na hatimaye, siwezi bure pointer. 84 00:05:02,730 --> 00:05:07,480 Je nina bure pointer kwamba mimi umba hapo? 85 00:05:07,480 --> 00:05:09,560 Sina, kwa sababu tu - 86 00:05:09,560 --> 00:05:13,430 Tofauti ni kwamba node hii iliundwa kwa kutumia malloc, 87 00:05:13,430 --> 00:05:17,280 hivyo ni katika chungu, wakati huu moja mara tu alitangaza kama NULL kubadili katika stack. 88 00:05:17,280 --> 00:05:20,000 Hivyo sina bure yake. 89 00:05:20,000 --> 00:05:22,030 >> Sawa. Hivyo sasa hebu majadiliano juu ya mwingi. 90 00:05:22,030 --> 00:05:24,680 Mwingi ni pretty moja kwa moja. 91 00:05:24,680 --> 00:05:29,540 Sisi tulikuwa mwingi na foleni katika darasa kwa kutumia arrays tu, 92 00:05:29,540 --> 00:05:32,820 lakini unapaswa kuwa familiar - tu kuwa na ufahamu 93 00:05:32,820 --> 00:05:40,740 kwamba unaweza pia kufanya mwingi katika foleni kutumia orodha wanaohusishwa pia. 94 00:05:40,740 --> 00:05:44,460 Hivyo kama una safu, nini itakuwa stack? 95 00:05:44,460 --> 00:05:46,810 stack, kwanza, itakuwa na kuwa na ukubwa. 96 00:05:46,810 --> 00:05:49,950 Una kuhifadhi nini ni ukubwa wa stack kwamba una haki sasa. 97 00:05:49,950 --> 00:05:52,980 Na pia ingekuwa safu, katika kesi hii ya idadi, 98 00:05:52,980 --> 00:05:55,120 lakini kama unataka, inaweza kuwa safu 99 00:05:55,120 --> 00:06:00,380 ya masharti, safu ya struct, kitu chochote ambacho unataka kuhifadhi. 100 00:06:00,380 --> 00:06:03,240 Kuhusu stack: Tofauti kati ya stack na orodha wanaohusishwa 101 00:06:03,240 --> 00:06:08,590 ni kwamba katika stack wewe tu na upatikanaji wa hiki mwisho kwamba ilikuwa kuweka katika stack. 102 00:06:08,590 --> 00:06:11,770 Ni wito mwisho, kwanza nje. 103 00:06:11,770 --> 00:06:15,090 Tu kama wewe na stack ya trays, 104 00:06:15,090 --> 00:06:17,670 kama wewe kuweka tray juu ya stack, 105 00:06:17,670 --> 00:06:22,670 una kuondoa kwamba tray kwanza kuwa na upatikanaji wa trays nyingine. 106 00:06:22,670 --> 00:06:26,310 Ni kitu kimoja na mwingi ni. 107 00:06:26,310 --> 00:06:31,220 Hivyo kama nataka, kwa mfano, kuongeza kipengele kwa stack, nifanye nini? 108 00:06:31,220 --> 00:06:34,070 Ni wito kushinikiza, na ni pretty moja kwa moja. 109 00:06:34,070 --> 00:06:37,130 Jambo la kwanza kufanya ni kuangalia kama kawaida ya stack 110 00:06:37,130 --> 00:06:40,150 si mkuu au sawa na uwezo wa stack. 111 00:06:40,150 --> 00:06:45,810 Kwa sababu kama wewe tayari ni juu ya uwezo kamili, huwezi kuongeza kitu kingine chochote. 112 00:06:45,810 --> 00:06:51,140 Na kisha kama si hivyo, wewe tu na kuongeza kipengele kwa stack. 113 00:06:51,140 --> 00:06:54,530 Na hatimaye, nyongeza kawaida. Hivyo ni pretty moja kwa moja. 114 00:06:54,530 --> 00:06:57,140 Hivyo mimi tu kuongeza idadi ya 2. 115 00:06:57,140 --> 00:07:00,350 Na kama nataka pop, ambayo ina maana kwamba mimi unataka kuondoa 116 00:07:00,350 --> 00:07:03,870 hiki mwisho kwamba alikuwa aliongeza na kurudi thamani ya hiki, 117 00:07:03,870 --> 00:07:09,180 Jambo la kwanza mimi na kuangalia ni kwamba stack ni si tupu. 118 00:07:09,180 --> 00:07:11,510 Kwa sababu kama ni tupu, siwezi kurudi kitu chochote. 119 00:07:11,510 --> 00:07:14,820 Katika kesi hiyo, mimi nina kurudi -1. 120 00:07:14,820 --> 00:07:18,960 Vinginevyo, mimi nina kwenda kuongezwa ukubwa wa spec, 121 00:07:18,960 --> 00:07:22,510 na kurudi namba (s.size). 122 00:07:22,510 --> 00:07:27,230 Kwa nini mimi kuongezwa ukubwa na kisha kurudi s.size? 123 00:07:27,230 --> 00:07:30,930 Ni kwa sababu, katika kesi hii, spec ina ukubwa 4, 124 00:07:30,930 --> 00:07:33,810 na nataka kurudi hiki nne, sawa? 125 00:07:33,810 --> 00:07:36,030 Lakini ni ripoti ya hiki nne nini? Tatu. 126 00:07:36,030 --> 00:07:44,510 Tangu mimi ukubwa - ni kwenda kuwa 3, naweza tu kurudi s.numbers (s.size) 127 00:07:44,510 --> 00:07:48,410 kwa sababu ni 3. Hivyo tu index. 128 00:07:48,410 --> 00:07:50,380 >> Sasa foleni. Foleni ni pretty much kitu kimoja. 129 00:07:50,380 --> 00:07:54,950 Tofauti tu ni kwamba badala ya kuwa na mwisho, kwanza nje, 130 00:07:54,950 --> 00:07:57,480 una kwanza, kwanza nje. 131 00:07:57,480 --> 00:07:59,460 Pengine kama wewe ni kusubiri kwenda tamasha, 132 00:07:59,460 --> 00:08:04,260 bila kuwa na furaha kama alikuwa na stack badala ya foleni. 133 00:08:04,260 --> 00:08:07,730 Kuwa mtu wa mwisho kuja itakuwa mtu wa kwanza kuingia kwenye tamasha hilo. 134 00:08:07,730 --> 00:08:09,760 Pengine bila kuwa na furaha. 135 00:08:09,760 --> 00:08:15,020 Katika foleni, mtu wa kwanza kupata katika ni pia mtu wa kwanza kupata nje. 136 00:08:15,020 --> 00:08:18,720 Hivyo katika ufafanuzi wa foleni, badala ya kuwa na ukubwa katika safu, 137 00:08:18,720 --> 00:08:23,360 wewe pia kuwa na kichwa, ambayo ni index na mkuu wa stack. 138 00:08:23,360 --> 00:08:29,000 Hivyo hiki kwanza hivi sasa. 139 00:08:29,000 --> 00:08:32,710 Enqueue ni kitu kimoja kama kushinikiza kwa mwingi. 140 00:08:32,710 --> 00:08:34,980 Kama ungekuwa naive sana, ungekuwa tu kusema, 141 00:08:34,980 --> 00:08:39,289 vizuri, siwezi tu kufanya hasa kitu kimoja kama mimi kwa ajili ya kushinikiza. 142 00:08:39,289 --> 00:08:44,030 Siwezi kuangalia tu kama si zaidi ya uwezo. 143 00:08:44,030 --> 00:08:48,760 Kama ni, mimi kurudi uongo, vinginevyo naweza tu nje thamani mpya 144 00:08:48,760 --> 00:08:50,630 na kisha nyongeza kawaida. 145 00:08:50,630 --> 00:08:52,750 Lakini kwa nini hii ni sahihi? 146 00:08:52,750 --> 00:08:55,010 Hebu angalia mfano huu. 147 00:08:55,010 --> 00:08:57,020 Mimi nina kujaribu enqueue rundo la mambo, 148 00:08:57,020 --> 00:08:58,390 na kisha mimi nina kwenda dequeue na enqueue. 149 00:08:58,390 --> 00:09:00,550 Kuna mengi ya amri, lakini ni rahisi sana. 150 00:09:00,550 --> 00:09:04,790 Mimi nina kwenda enqueue 5, hivyo kuongeza 5, na kisha 7, 151 00:09:04,790 --> 00:09:09,310 1, 4, 6, na kisha Mimi nataka dequeue kitu, 152 00:09:09,310 --> 00:09:12,000 ambayo ina maana kwamba mimi nina kwenda kuondoa hiki kwanza. 153 00:09:12,000 --> 00:09:14,640 Hivyo nina kwenda kuondoa namba 3, sawa? 154 00:09:14,640 --> 00:09:17,320 hiki kwanza. Sawa. 155 00:09:17,320 --> 00:09:21,450 Sasa kama mimi kujaribu enqueue kitu kingine, ni nini kinaenda kutokea? 156 00:09:21,450 --> 00:09:24,290 Kwa mujibu wa utekelezaji yangu, 157 00:09:24,290 --> 00:09:31,040 Mimi alikuwa anaenda kuweka namba inayofuata katika index q.size. 158 00:09:31,040 --> 00:09:35,140 Katika kesi hiyo, ukubwa ni 8, 159 00:09:35,140 --> 00:09:38,640 hivyo index 8 itakuwa haki hapa katika nafasi ya mwisho. 160 00:09:38,640 --> 00:09:43,900 Kama mimi kujaribu enqueue 1 haki hapa, mimi itakuwa overwriting nafasi ya mwisho 161 00:09:43,900 --> 00:09:45,870 kwa namba 1, ambayo ni makosa kabisa. 162 00:09:45,870 --> 00:09:49,870 Nini nataka kufanya ni wrap kuzunguka na kwenda nafasi ya kwanza. 163 00:09:49,870 --> 00:09:52,870 Labda ungependa kusema tu, vizuri, mimi tu na kuangalia 164 00:09:52,870 --> 00:09:55,600 kama naweza kweli kuweka kitu pale. 165 00:09:55,600 --> 00:09:58,560 Kama siyo, mimi tu kusema, oh, mpya uwezo kamili 166 00:09:58,560 --> 00:10:02,010 ni kweli uwezo wa - 1, na huwezi kuweka hiki huko. 167 00:10:02,010 --> 00:10:06,150 Lakini ni nini tatizo? Tatizo ni kwamba kama mimi tu dequeue kila kitu sawa hapa 168 00:10:06,150 --> 00:10:08,240 na kisha mimi kujaribu kuongeza kitu kingine, ingekuwa tu kusema, 169 00:10:08,240 --> 00:10:11,210 vizuri, walikuwa katika uwezo kamili, ambayo ni 0. 170 00:10:11,210 --> 00:10:13,620 Hivyo foleni yako ni gone. 171 00:10:13,620 --> 00:10:16,990 Una kufungia, na njia ya wrapping karibu 172 00:10:16,990 --> 00:10:22,040 kwamba guys kujifunza katika maono na wengine psets alikuwa akitumia mod. 173 00:10:22,040 --> 00:10:29,090 Unaweza kujaribu nyumbani kuelewa ni kwa nini ungependa kufanya q.size + q.head 174 00:10:29,090 --> 00:10:31,080 uwezo mod, lakini kama wewe kuangalia hapa, 175 00:10:31,080 --> 00:10:34,760 tunaweza kuona kwamba ni kazi. 176 00:10:34,760 --> 00:10:37,760 Hivyo katika mfano wa mwisho, q.size mara 8 177 00:10:37,760 --> 00:10:47,590 na kichwa mara 1, kwa sababu ilikuwa nafasi hii hapa wa safu. 178 00:10:47,590 --> 00:10:51,970 Hivyo itakuwa 8 + 1, 9. Mod uwezo 9 itakuwa 0. 179 00:10:51,970 --> 00:10:56,640 Itakuwa kwenda index 0. Tutaweza kuwa katika nafasi ya haki. 180 00:10:56,640 --> 00:10:59,750 Na kisha kujaribu foleni nyumbani. 181 00:10:59,750 --> 00:11:04,950 Baadhi ya mambo muhimu: kujaribu kuelewa tofauti kati ya stack na foleni. 182 00:11:04,950 --> 00:11:11,620 Nyumbani, kujaribu kupata familiar sana na utekelezaji wa enqueue, dequeue, kushinikiza na pop. 183 00:11:11,620 --> 00:11:16,560 Na pia kuelewa wakati ungependa kutumia kila mmoja wao. 184 00:11:16,560 --> 00:11:22,830 >> Basi hebu kupumzika kwa sekunde 10 pamoja na kundi la pokemons. 185 00:11:22,830 --> 00:11:26,080 Na sasa hebu kwenda nyuma na mifumo ya data. 186 00:11:26,080 --> 00:11:29,770 Hash meza. mengi ya watu walikuwa na hofu ya meza hash. 187 00:11:29,770 --> 00:11:33,650 katika kuweka tatizo 6, Spell kusahihisha. 188 00:11:33,650 --> 00:11:35,980 Meza Hash na inajaribu, mengi ya watu kupata hofu yao. 189 00:11:35,980 --> 00:11:38,540 Wanafikiri ni vigumu kuelewa. Yeah? 190 00:11:38,540 --> 00:11:41,490 [Rob Bowden] Tatizo kuweka 5. >> Tatizo kuweka 5, yeah. Shukrani Rob. 191 00:11:41,490 --> 00:11:43,370 Yeah. Sita Huff n 'Puff, yeah. 192 00:11:43,370 --> 00:11:49,340 Tatizo kuweka 5 ilikuwa Spell kusahihisha, na alikuwa na kutumia aidha hash meza au kujaribu. 193 00:11:49,340 --> 00:11:55,360 mengi ya watu walidhani kwamba walikuwa super vigumu kuelewa, lakini wao ni kweli pretty rahisi. 194 00:11:55,360 --> 00:12:01,290 Ni nini meza hash, kimsingi? meza hash ni safu ya orodha wanaohusishwa. 195 00:12:01,290 --> 00:12:06,730 Tofauti pekee kati ya safu na meza hash 196 00:12:06,730 --> 00:12:09,730 ni kwamba katika meza hash una kitu kinachoitwa hash kazi. 197 00:12:09,730 --> 00:12:12,080 Ni heshi nini? 198 00:12:12,080 --> 00:12:13,970 Sijui kama wewe guys unaweza kusoma hapa. 199 00:12:13,970 --> 00:12:16,090 Huu ni mfano wa meza hash. 200 00:12:16,090 --> 00:12:19,220 Hivyo unaweza kuona kwamba una safu na 31 vipengele. 201 00:12:19,220 --> 00:12:22,440 Na nini cha kufanya katika meza hash ni kuwa na heshi 202 00:12:22,440 --> 00:12:26,660 kwamba ni kwenda kutafsiri kwa muhimu, kila int kwa index. 203 00:12:26,660 --> 00:12:31,740 Kama, kwa mfano, kama nataka kuchagua kwa B. Harrison, 204 00:12:31,740 --> 00:12:34,190 Napenda kuweka B. Harrison katika kazi yangu hash, 205 00:12:34,190 --> 00:12:36,960 na heshi atarudi 24. 206 00:12:36,960 --> 00:12:40,930 Hivyo najua kwamba unataka kuhifadhi B. Harrison katika 24. 207 00:12:40,930 --> 00:12:46,580 Hivyo hiyo ni tofauti kati ya kuwa na tu safu na kuwa na meza hash. 208 00:12:46,580 --> 00:12:48,740 Katika meza hash itabidi kazi ambayo ni kwenda kuwaambia 209 00:12:48,740 --> 00:12:54,740 ambapo kuhifadhi data kwamba unataka kuhifadhi. 210 00:12:54,740 --> 00:12:57,040 Kwa hash kazi, unataka kuangalia kwa heshi 211 00:12:57,040 --> 00:13:00,600 kwamba ni deterministic na vizuri kusambazwa. 212 00:13:00,600 --> 00:13:07,810 Kama unaweza kuona hapa, unaweza kuona kwamba mengi ya data kuwa nilitaka kuhifadhi ilikuwa kweli 19 213 00:13:07,810 --> 00:13:12,470 badala ya kutumia 31 na 30 na 29, ambao wote walikuwa huru. 214 00:13:12,470 --> 00:13:16,920 Hivyo heshi kwamba mimi kutumika hakuwa vizuri sana kusambazwa. 215 00:13:16,920 --> 00:13:20,710 Tunaposema vizuri kusambazwa, maana yake ni kwamba tunataka kuwa na, 216 00:13:20,710 --> 00:13:26,520 takribani, angalau 1 au 2 kwa kila moja ya - 217 00:13:26,520 --> 00:13:32,190 kama, tofauti ya 1 au 2 kwa kila moja ya fahirisi katika arrays. 218 00:13:32,190 --> 00:13:43,950 Unataka kuwa, takribani, idadi sawa ya mambo katika orodha ya kila wanaohusishwa katika safu. 219 00:13:43,950 --> 00:13:48,600 Na ni rahisi kuangalia kama ni halali katika meza hash, kuona kama meza hash. 220 00:13:48,600 --> 00:13:51,770 >> Kisha miti. Hii ni mti. 221 00:13:51,770 --> 00:13:56,400 Miti katika sayansi ya kompyuta ni kichwa chini kwa sababu fulani. 222 00:13:56,400 --> 00:14:00,150 Hivyo haki hapa una mizizi ya mti na kisha majani. 223 00:14:00,150 --> 00:14:05,630 Unapaswa tu kujua majina kwa ajili ya wazazi na watoto. 224 00:14:05,630 --> 00:14:12,880 Kila node ana watoto wake, ambayo ni nodes kwamba ni chini ya mzazi. 225 00:14:12,880 --> 00:14:19,660 Hivyo, kwa mfano, 2 ni kwenda kuwa mzazi kwa 3 na kwa mtoto mwingine hapo, 226 00:14:19,660 --> 00:14:25,290 wakati 3 ni kwenda kuwa mzazi kwa 1 na watoto wengine kwamba ni huko. 227 00:14:25,290 --> 00:14:29,990 Na 1 ni kwenda kuwa 3 mtoto, na kadhalika. 228 00:14:29,990 --> 00:14:34,610 Tuna kitu zaidi ya kuvutia, iitwayo binary search mti, 229 00:14:34,610 --> 00:14:39,040 ambayo maadili yote juu ya haki ya node 230 00:14:39,040 --> 00:14:41,660 ni kwenda kuwa juu ya haki, haki hapa - juu ya haki, 231 00:14:41,660 --> 00:14:46,780 ni kwenda kuwa zaidi ya hiki katika mizizi. 232 00:14:46,780 --> 00:14:49,780 Basi, ikiwa mimi na namba 5 hapa, mambo yote juu ya haki 233 00:14:49,780 --> 00:14:51,940 ni kwenda kuwa zaidi ya 5, na upande wa kushoto 234 00:14:51,940 --> 00:14:56,770 mambo yote ni kwenda kuwa chini ya 5. 235 00:14:56,770 --> 00:14:58,780 Kwa nini hii ni muhimu? 236 00:14:58,780 --> 00:15:01,660 Naam, kama nataka kuangalia kama namba 7 ni hapa, kwa mfano, 237 00:15:01,660 --> 00:15:05,960 I just kwenda 5 kwanza na mimi nina kwenda kuona, ni 7 zaidi au chini ya 5? 238 00:15:05,960 --> 00:15:09,540 Ni zaidi, hivyo najua itakuja kuwa juu ya haki ya mti. 239 00:15:09,540 --> 00:15:13,980 Hivyo nina mambo mengi chini kuangalia. 240 00:15:13,980 --> 00:15:19,520 Katika utekelezaji wa binary search mti, node, mimi nina kwenda tu kuwa na data, 241 00:15:19,520 --> 00:15:21,750 hivyo int n, ungeweza pia na kamba 242 00:15:21,750 --> 00:15:23,630 au kitu chochote alitaka. 243 00:15:23,630 --> 00:15:28,100 Wewe tu kuwa makini juu ya kufafanua nini ni zaidi, ni nini chini. 244 00:15:28,100 --> 00:15:30,390 Hivyo kama wewe alikuwa masharti, kwa mfano, unaweza kufafanua 245 00:15:30,390 --> 00:15:34,690 kwamba mambo hayo yote juu ya haki ni kwenda na urefu kubwa, 246 00:15:34,690 --> 00:15:40,940 kushoto ni kwenda na urefu chini, hivyo ni kweli up na wewe. 247 00:15:40,940 --> 00:15:44,930 >> Jinsi naweza kutekeleza kupata kwa BST? 248 00:15:44,930 --> 00:15:47,840 Jambo la kwanza sisi itabidi kufanya ni kuangalia mizizi ya mti ikiwa ni null. 249 00:15:47,840 --> 00:15:50,920 Kama ni NULL, ina maana kwamba kitu si kuna 250 00:15:50,920 --> 00:15:53,330 kwa sababu huna hata na mti, sawa? 251 00:15:53,330 --> 00:15:55,790 Basi, mimi kurudi uongo. 252 00:15:55,790 --> 00:15:58,740 Vinginevyo, mimi nina kwenda kuangalia kama idadi ni kubwa 253 00:15:58,740 --> 00:16:01,720 kuliko thamani katika mizizi. 254 00:16:01,720 --> 00:16:04,250 Mimi nina kwenda kujaribu kupata hiki juu ya haki 255 00:16:04,250 --> 00:16:08,590 ya mti. 256 00:16:08,590 --> 00:16:11,310 Unaweza kuona kwamba mimi nina kutumia kujirudia hapa. 257 00:16:11,310 --> 00:16:14,150 Na kisha kama ni kidogo, mimi nina kwenda kuangalia upande wa kushoto. 258 00:16:14,150 --> 00:16:18,330 Na hatimaye, vinginevyo, kama si chini au si zaidi, 259 00:16:18,330 --> 00:16:20,660 maana yake ni kwamba ni thamani yenyewe. 260 00:16:20,660 --> 00:16:23,010 Hivyo mimi tu kurudi kweli. 261 00:16:23,010 --> 00:16:26,360 Unaweza kuona hapa kwamba mimi kutumika kama, kama, kama. 262 00:16:26,360 --> 00:16:30,820 Na kumbuka, katika jaribio 0, tulikuwa na tatizo kwamba alikuwa kama, kama, kama, 263 00:16:30,820 --> 00:16:32,780 na walipaswa kupata uzembe, 264 00:16:32,780 --> 00:16:35,180 na uzembe ni kwamba unaweza kutumika kama. 265 00:16:35,180 --> 00:16:39,060 Unapaswa kuwa kutumika kama, mwingine kama, mwingine kama, na mwingine. 266 00:16:39,060 --> 00:16:44,240 Kwa hiyo, mimi kutumia mwingine kama na mwingine kama na mwingine hapa? 267 00:16:44,240 --> 00:16:46,200 Je, mtu yeyote - yeah? 268 00:16:46,200 --> 00:16:51,140 [Mwanafunzi akizungumza, inaudible] 269 00:16:51,140 --> 00:16:53,480 Hiyo ni kamilifu. Hivyo yeye kusema kwamba haijalishi, 270 00:16:53,480 --> 00:16:55,930 kwa sababu tu ya uzembe kwamba tulikuwa kabla ya 271 00:16:55,930 --> 00:16:59,550 ni kwamba kwa sababu, labda kama baadhi ya hali ilikuwa kuridhika, 272 00:16:59,550 --> 00:17:03,570 hivyo kuwa utekelezaji wake, lakini basi walikuwa wanakwenda kuangalia yote ya hali nyingine. 273 00:17:03,570 --> 00:17:06,319 Lakini katika kesi hii, ni kurudi mara moja, hivyo hana jambo. 274 00:17:06,319 --> 00:17:09,220 Hivyo huna kutumia mwingine kama. 275 00:17:09,220 --> 00:17:11,740 >> Na hatimaye, hebu majadiliano juu ya anajaribu, 276 00:17:11,740 --> 00:17:13,800 ambayo ni favorite ya kila mtu. 277 00:17:13,800 --> 00:17:15,980 kujaribu ni mti wa arrays. 278 00:17:15,980 --> 00:17:20,369 Ni kwa haraka sana kwa kuangalia juu maadili, lakini inatumia mengi ya kumbukumbu. 279 00:17:20,369 --> 00:17:22,530 Na ni kawaida kuchuja maneno, hivyo wakati 280 00:17:22,530 --> 00:17:27,920 unataka kutekeleza, kwa mfano, mimi sijui, kama kitabu cha simu katika simu yako 281 00:17:27,920 --> 00:17:30,440 na unataka kuwa na uwezo wa aina B 282 00:17:30,440 --> 00:17:32,510 na tu na majina ya watu ambao wana B. 283 00:17:32,510 --> 00:17:37,960 Ni rahisi sana kutekeleza kwamba kwa kutumia kujaribu, kwa mfano. 284 00:17:37,960 --> 00:17:39,820 Jinsi gani unaweza kufafanua node katika kujaribu? 285 00:17:39,820 --> 00:17:43,910 Wewe tu kuwa na bool kwamba ni kwenda kuwa is_word. 286 00:17:43,910 --> 00:17:48,660 Kwamba inawakilisha kwamba kwa kutumia wahusika wote kabla ya node, 287 00:17:48,660 --> 00:17:51,920 walikuwa na uwezo wa kuunda neno, 288 00:17:51,920 --> 00:17:57,230 na kisha itabidi safu ya kuyatumia kwa nodes. 289 00:17:57,230 --> 00:18:03,120 Unaweza kuona kwamba tuna safu ya nodes mzazi, hivyo nodi * safu? Yeah? 290 00:18:03,120 --> 00:18:06,050 Basi hebu angalia jinsi kazi. Kwa kuangalia Spell, 291 00:18:06,050 --> 00:18:08,230 tuna safu ya 27 vipengele, 292 00:18:08,230 --> 00:18:12,150 kwa sababu tuna kila barua pamoja na apostrophe. 293 00:18:12,150 --> 00:18:17,800 Kabla ya hapa Mimi tu kwenda kutumia 2 kwa sababu nataka kuwa na uwezo wa kuandika kwenye ubao. 294 00:18:17,800 --> 00:18:20,230 Sawa. Hivyo hii ni mfano wa kujaribu. 295 00:18:20,230 --> 00:18:25,600 Kama mimi tu kufafanua node kwanza, mimi itabidi safu ya 2 mambo 296 00:18:25,600 --> 00:18:29,290 kwamba ni 2 kuyatumia kwa NULL, hivyo mimi tu ya kuweka 'a' na 'b'. 297 00:18:29,290 --> 00:18:32,430 Na mimi nina kwenda na bool kwamba anasema is_word. 298 00:18:32,430 --> 00:18:34,420 Ni kwenda kuwa uongo kwa moja kwanza, 299 00:18:34,420 --> 00:18:37,370 tu kwa sababu, kabla ya kuwa huna wahusika yoyote. 300 00:18:37,370 --> 00:18:40,900 Hivyo neno tupu ni neno. Hivyo ni ya uongo. 301 00:18:40,900 --> 00:18:46,320 Kama mimi nataka kuongeza 'a' kwa kamusi hii, gani mimi na kwa nini? 302 00:18:46,320 --> 00:18:49,760 Napenda tu na malloc node mpya kwa ajili ya 'a', 303 00:18:49,760 --> 00:18:54,630 na kisha kuongeza maneno yake kwa kweli. 304 00:18:54,630 --> 00:19:00,180 Hivyo tu inawakilisha kuwa baada ya 'ni kwenda kuwa kweli. Mantiki? 305 00:19:00,180 --> 00:19:04,120 Basi, nataka kuongeza 'ba', mimi itabidi malloc 1 kwa 'b', 306 00:19:04,120 --> 00:19:07,550 na basi mimi nina kwenda kuanzisha boolean kwa uongo, 307 00:19:07,550 --> 00:19:10,160 kwa sababu 'b' na yenyewe ni neno. 308 00:19:10,160 --> 00:19:13,010 Kisha mimi nina kwenda malloc mtu mwingine kwa 'a', hivyo 'ba', 309 00:19:13,010 --> 00:19:16,290 na basi mimi nina kwenda kuanzisha ni neno kwa kweli. 310 00:19:16,290 --> 00:19:18,950 Kwa sababu 'ba' ni neno la Mungu. 311 00:19:18,950 --> 00:19:21,910 Na kisha kama nataka kuona kama 'b' ni katika kamusi hii, 312 00:19:21,910 --> 00:19:26,730 Mimi unaweza tu kwenda kwa moja ya kwanza, 'b'. Mimi kwenda chini, na mimi kuangalia ni neno, na anasema uongo. 313 00:19:26,730 --> 00:19:30,110 Hivyo si neno. Kama mimi nataka kuangalia 'ba', 314 00:19:30,110 --> 00:19:38,010 Mimi kwenda moja ya kwanza, 'b', na kisha kwenda 'a', na mimi kuona kweli, hivyo ni neno. Mantiki? 315 00:19:38,010 --> 00:19:41,950 mengi ya watu kupata kuchanganyikiwa na inajaribu. No? 316 00:19:41,950 --> 00:19:44,740 >> Hatimaye, Huffman coding. Huffman coding ni muhimu sana 317 00:19:44,740 --> 00:19:47,550 kuokoa kumbukumbu na kubana Nakala files, 318 00:19:47,550 --> 00:19:52,270 kwa sababu tu mara nyingi matumizi ya 'a' na 'e', ​​kwa mfano, 319 00:19:52,270 --> 00:19:57,710 katika hati yako, lakini sijui kama wewe guys kutumia 'q' au 'z' kama sana. 320 00:19:57,710 --> 00:20:02,040 Kuwa tu 1 Byte kwa kila tabia moja, 321 00:20:02,040 --> 00:20:08,520 kila moja - wahusika 256 kwamba tuna katika meza ASCII si mojawapo sana, 322 00:20:08,520 --> 00:20:11,410 kwa sababu tu kuna baadhi ya wahusika kwamba matumizi ya zaidi, 323 00:20:11,410 --> 00:20:15,180 hivyo unapaswa pengine kutumia chini ya kumbukumbu kwa hizo. 324 00:20:15,180 --> 00:20:17,560 Je, mimi kutumia Huffman coding? 325 00:20:17,560 --> 00:20:20,010 Sisi kufanya mti Huffman. 326 00:20:20,010 --> 00:20:23,370  Mti Huffman ina nodes 327 00:20:23,370 --> 00:20:27,760 kuwa na ishara kwamba ni kwenda kuwa kama, 'a', 'b', 'c', barua, 328 00:20:27,760 --> 00:20:32,990 chochote barua una, frequency kwamba ni ya mzunguko neno hilo limetumika katika maandiko, 329 00:20:32,990 --> 00:20:36,280 kwamba walikuwa kujenga mti Huffman kwa, 330 00:20:36,280 --> 00:20:41,800 na kisha nodi kwamba inaenda upande wa kushoto wa mti Huffman 331 00:20:41,800 --> 00:20:47,210 na node nyingine ambayo inaenda kwa haki. Hivyo tu kama mti. 332 00:20:47,210 --> 00:20:49,440 Jinsi gani unaweza kujenga mti Huffman? 333 00:20:49,440 --> 00:20:54,020 Wewe ni kwenda kuchukua 2 nodes kuwa na mikondo ya chini. 334 00:20:54,020 --> 00:20:56,490 Kama una tie wewe ni kwenda kuchukua 2 nodes 335 00:20:56,490 --> 00:20:59,870 kuwa na maadili ya chini ASCII pia. 336 00:20:59,870 --> 00:21:02,420 Basi wewe ni kwenda kujenga mti mpya nje ya wale 2 nodes 337 00:21:02,420 --> 00:21:08,030 kwamba ni kwenda na frequency pamoja katika mzazi nodi. 338 00:21:08,030 --> 00:21:13,240 Na kisha utaenda kuondoa 2 watoto kutoka msitu 339 00:21:13,240 --> 00:21:15,570 na kuchukua nafasi yao na mzazi. 340 00:21:15,570 --> 00:21:18,930 Na wewe kwenda kurudia kwamba mpaka wewe tu 1 mti katika msitu. 341 00:21:18,930 --> 00:21:23,840 Basi hebu angalia jinsi gani kufanya mti Huffman kwa ZAMYLA. 342 00:21:23,840 --> 00:21:29,220 Unaweza kuona hapa kwamba barua zote na frequency 1 ila kwa 'A'; ambayo ina mzunguko 2. 343 00:21:29,220 --> 00:21:34,090 Basi, mimi kuundwa nodes kwa barua zote mimi kuweka katika utaratibu wa thamani ASCII na mzunguko. 344 00:21:34,090 --> 00:21:40,090 Basi, ikiwa mimi unataka kujenga mti kwanza, itakuwa na 'L' na 'M'. 345 00:21:40,090 --> 00:21:43,100 Hivyo ni hapa. mzunguko wa jozi itakuwa 2 346 00:21:43,100 --> 00:21:49,470 kwa sababu ni 1 + 1, kisha 2 pili na mikondo ya chini ni 'Y' na 'Z'. 347 00:21:49,470 --> 00:21:53,180 Na kisha mimi na wote kuwa - na mzunguko wa 2. 348 00:21:53,180 --> 00:22:00,470 Hivyo ambayo ndio ni wale ambao chini thamani ASCII kwa moja ijayo? 349 00:22:00,470 --> 00:22:04,830 'A' na 'L'. Basi, mimi kujenga node mpya, 350 00:22:04,830 --> 00:22:09,930 na hatimaye, ni 4 na 2, hivyo 2 ni kwenda kuwa upande wa kushoto. 351 00:22:09,930 --> 00:22:12,430 Na hii ni mti Huffman. 352 00:22:12,430 --> 00:22:16,060 Basi, nataka kuandika baadhi ya maandishi, 353 00:22:16,060 --> 00:22:24,440 kama katika binary kubadili kwa maandishi, kwa kutumia mti Huffman ni rahisi sana. 354 00:22:24,440 --> 00:22:30,220 Kwa mfano, kama mimi kusema kwamba kuhamia upande wa kushoto ni 0 na kuhamia haki ni 1, 355 00:22:30,220 --> 00:22:32,410 Ni yale ambayo kwenda kuwakilisha? 356 00:22:32,410 --> 00:22:35,530 Hivyo kama 1, 1, hivyo haki, haki, 357 00:22:35,530 --> 00:22:40,370 na kisha 0, hivyo kushoto itakuwa L, na kisha 1, 0, 0. 358 00:22:40,370 --> 00:22:43,950 Hivyo 1, 0, hivyo 1 tu, 0, 'A'. 359 00:22:43,950 --> 00:22:47,540 Na kisha 0, 1, hivyo 'Z'. 360 00:22:47,540 --> 00:22:52,170 Na kisha 1, 0, 0 - no. 361 00:22:52,170 --> 00:22:56,780 0, 0 itakuwa 'Y', hivyo Lazy. 362 00:22:56,780 --> 00:23:06,060 Ili wote kwa ajili yangu, Rob ya kwenda kuchukua juu. 363 00:23:06,060 --> 00:23:08,400 >> [Rob Bowden] Hivyo, wiki 7 mambo ya ajabu. 364 00:23:08,400 --> 00:23:11,390 Sisi tumepewa mengi kwenda juu kweli haraka. 365 00:23:11,390 --> 00:23:13,430 Bitwise operators, buffer kufurika, 366 00:23:13,430 --> 00:23:16,760 CS50 maktaba, kisha HTML, HTTP, CSS. 367 00:23:16,760 --> 00:23:20,990 Wote katika kama dakika 15 hadi 20. 368 00:23:20,990 --> 00:23:24,330 Bitwise operators. Kuna 6 yao kwamba unahitaji kujua. 369 00:23:24,330 --> 00:23:31,200 Bitwise na bitwise au, XOR, kushoto kuhama, mabadiliko ya haki, na si. 370 00:23:31,200 --> 00:23:35,420 Haki kuhama na si wewe vigumu kuona katika hotuba wakati wote. 371 00:23:35,420 --> 00:23:40,480 Tutaweza kwenda juu haraka hapa, lakini ni vizuri kujua kwamba hizi ni 6 kwamba zipo. 372 00:23:40,480 --> 00:23:45,070 Kumbuka kwamba bitwise operators ni kama wakati wa kufanya 3 + 4. 373 00:23:45,070 --> 00:23:49,420 Wewe ni si kushughulika na binary ya 3 na 4. 374 00:23:49,420 --> 00:23:56,550 Pamoja na bitwise operators wewe ni kweli kushughulika na bits ya mtu binafsi ya idadi 3 na 4. 375 00:23:56,550 --> 00:23:59,120 >> Hivyo moja ya kwanza tutaweza kusema ni bitwise si, 376 00:23:59,120 --> 00:24:02,340 na yote ni gani ni flip bits wote. 377 00:24:02,340 --> 00:24:05,500 Hivyo hapa, kama wewe ni kuandika hii katika C, bila kuandika 378 00:24:05,500 --> 00:24:09,380 kama ~ 11,011 au chochote, ungekuwa kuandika kama ~ 4, 379 00:24:09,380 --> 00:24:12,970 na kisha itakuwa flip uwakilishi binary ya 4. 380 00:24:12,970 --> 00:24:24,800 Hivyo hapa, ~ ya baadhi ya idadi binary 1101101 ni kwenda hasa flip 1 wote wa 0 na 0 wote wa 1 ya. 381 00:24:24,800 --> 00:24:27,600 Kama mimi kusema, ni matumizi ya mara kwa mara hii, 382 00:24:27,600 --> 00:24:30,830 na sisi utaona katika kidogo, ni kama tunataka kuja na baadhi ya idadi 383 00:24:30,830 --> 00:24:35,460 ambapo wote wa bits ni 1, ila kwa mmoja wao. 384 00:24:35,460 --> 00:24:38,560 Hivyo ni kawaida rahisi kueleza idadi 385 00:24:38,560 --> 00:24:40,630 ambapo tu kwamba kidogo moja ni kuweka, 386 00:24:40,630 --> 00:24:44,650 na kisha kuchukua ~ yake, hivyo kila kidogo nyingine ni kuweka ila kwa kuwa moja. 387 00:24:44,650 --> 00:24:50,300 Hivyo kwamba ni nini sisi ni kwenda kutumia zaidi katika kidogo. 388 00:24:50,300 --> 00:24:58,220 >> Bitwise au. Hapa ni 2 idadi binary, na hizi namba 2 389 00:24:58,220 --> 00:25:00,780 ni pretty mwakilishi, kwa vile wao kuwakilisha kila iwezekanavyo 390 00:25:00,780 --> 00:25:07,290 mchanganyiko wa bits unaweza haja ya kufanya kazi juu. 391 00:25:07,290 --> 00:25:13,540 Hapa, wakati mimi or'd kila kidogo, sisi ni kwenda tu kulinganisha moja kwa moja chini. 392 00:25:13,540 --> 00:25:15,410 Hivyo upande wa kushoto tuna 1 na 1. 393 00:25:15,410 --> 00:25:20,510 Wakati mimi bitwise | hizo, je, Mimi naenda kupata? Moja. 394 00:25:20,510 --> 00:25:25,320 Kisha bitwise | 0 na 1 ni kwenda nipe? Moja. 395 00:25:25,320 --> 00:25:27,840 Bitwise 1 na 0 kinaenda kuwa kitu kimoja, moja. 396 00:25:27,840 --> 00:25:31,880 Bitwise 0 | 0 ni anaenda kunipa 0. 397 00:25:31,880 --> 00:25:37,300 Hivyo kesi tu ambapo mimi kupata 0 ni katika 0 | 0 kesi. 398 00:25:37,300 --> 00:25:40,020 Na unaweza kufikiria kwamba kama ORS yako mantiki. 399 00:25:40,020 --> 00:25:44,830 Hivyo kama wewe kufikiria 1 kama kweli na 0 kama uongo, kitu hiyo inatumika hapa. 400 00:25:44,830 --> 00:25:50,040 Hivyo kweli au kweli ni kweli; kweli au uongo ni kweli. 401 00:25:50,040 --> 00:25:57,150 Uongo au kweli ni kweli; uongo au uongo ni kitu tu kwamba ni kweli uongo. 402 00:25:57,150 --> 00:26:00,100 Hapa ni mfano kwamba unapaswa kujua 403 00:26:00,100 --> 00:26:05,160 kama mfano nzuri ya na watoa huduma bitwise ni kutumika. 404 00:26:05,160 --> 00:26:08,660 Hapa kama sisi au mtaji 'A' na Ox20, 405 00:26:08,660 --> 00:26:11,830 na tutaangalia hizi katika pili, sisi kupata kitu fulani. 406 00:26:11,830 --> 00:26:16,020 Na kama sisi au lowercase 'kwa Ox20, sisi kupata kitu fulani. 407 00:26:16,020 --> 00:26:26,750 Basi hebu vuta juu ya meza ASCII. 408 00:26:26,750 --> 00:26:34,000 Sawa. Hapa tunaona kuwa 'A' ni - 409 00:26:34,000 --> 00:26:36,920 hapa tuna 'A' ni decimal 65. 410 00:26:36,920 --> 00:26:45,120 Lakini nitakwenda kwa hexadesimoli, ambayo ni Ox41. 411 00:26:45,120 --> 00:26:48,280 Pretty uhakika tuliona katika darasa. Nadhani tuliona katika darasa 412 00:26:48,280 --> 00:26:52,730 kwamba ni pretty rahisi kubadili kutoka hexadesimoli kwa binary. 413 00:26:52,730 --> 00:26:55,280 Hivyo hapa, kama nataka kuweka 4 katika binary, 414 00:26:55,280 --> 00:26:59,550 kwamba tu kwenda kuwa 0100. 415 00:26:59,550 --> 00:27:03,620 Hii ni 1 ya mahali, 2 kuchukua nafasi ya 4 ya mahali, hivyo hii ni 4. 416 00:27:03,620 --> 00:27:08,550 Basi naweza mgawanyiko 1 katika binary, ambayo ni kwenda kuwa 0001. 417 00:27:08,550 --> 00:27:14,280 Na hivyo hii ni kwenda kuwa uwakilishi wa 'A' katika binary. 418 00:27:14,280 --> 00:27:22,720 Kuchukua lowercase ', ni sasa kwenda kuwa Ox61, 419 00:27:22,720 --> 00:27:27,050 ambapo, kugawanyika haya juu katika binary yake, hivyo 6 - 420 00:27:27,050 --> 00:27:37,830 Hebu kweli kufanya hivyo - ni hakuna kifutio? Raba. 421 00:27:37,830 --> 00:27:48,220 Ox61. Hivyo kugawanyika 6 katika binary ni kwenda kuwa 0 + 4 + 2 + 0. 422 00:27:48,220 --> 00:27:54,610 Na splitting 1 ni kwenda kuwa 0001. 423 00:27:54,610 --> 00:27:56,520 Kuangalia tofauti kati ya hizi 2, 424 00:27:56,520 --> 00:28:04,250 tunaona kwamba tofauti tu kati ya lowercase na mji mkuu wa 'A' ni hii moja kidogo. 425 00:28:04,250 --> 00:28:11,810 Hivyo kuja nyuma hapa - sawa. 426 00:28:11,810 --> 00:28:15,920 Kuja nyuma hapa, kama sisi kuangalia nini kidogo Ox20 ni, 427 00:28:15,920 --> 00:28:22,210 hivyo kugawanyika Ox20 katika binary yake, 428 00:28:22,210 --> 00:28:27,310 ni 0010, 0000. 429 00:28:27,310 --> 00:28:33,470 Ox20, kidogo tu kwamba ni kuweka ni kidogo hii kwamba sisi ni wasiwasi na, 430 00:28:33,470 --> 00:28:38,210 kwa byte kati ya mji mkuu na ndogo '. 431 00:28:38,210 --> 00:28:47,610 Kama mimi au 'A', ambayo ni hii moja, 'A', 432 00:28:47,610 --> 00:28:50,580 iwapo mimi au 'A' na Ox20, 433 00:28:50,580 --> 00:28:53,490 je, Mimi naenda kupata? 434 00:28:53,490 --> 00:28:58,960 [Mwanafunzi, inaudible] >> Herufi za chini 'a', kwa sababu ni kwenda flip kidogo hii 1. 435 00:28:58,960 --> 00:29:04,170 Na iwapo mimi au 'kwa Ox20, je, Mimi naenda kupata? 436 00:29:04,170 --> 00:29:08,780 Herufi za chini, kwa sababu tu oring 'kwa Ox20, 437 00:29:08,780 --> 00:29:14,580 Mimi tu kwenda oring hii kidogo moja kwa 1; ni tayari 1, hivyo haijalishi. 438 00:29:14,580 --> 00:29:17,960 Ili tuweze kupata 'a' na 'a'. 439 00:29:17,960 --> 00:29:24,820 >> Bitwise na. Tena, tunaweza kufikiria hii kama yetu mwenzake mantiki na. 440 00:29:24,820 --> 00:29:28,180 Upande wa kushoto tuna kweli & kweli. 441 00:29:28,180 --> 00:29:31,160 Ni kwenda kuwa ni kweli, na kwa wote wa kesi, 442 00:29:31,160 --> 00:29:36,270 uongo & kweli au ya kweli na uongo, au uongo & uongo, 443 00:29:36,270 --> 00:29:38,550 hakuna mambo hayo ni kweli. 444 00:29:38,550 --> 00:29:44,170 Hivyo kile sisi kuishia kupata ni 1000. 445 00:29:44,170 --> 00:29:48,830 Basi sasa, hapa, hapa ambapo nimekuwa kutumika bitwise muaminifu si, 446 00:29:48,830 --> 00:29:52,230 ambapo tulikuwa na Ox20. 447 00:29:52,230 --> 00:29:54,350 Hivyo hii ni Ox20. 448 00:29:54,350 --> 00:29:59,570 Sasa nini nataka kufanya, bitwise ~ ya Ox20. 449 00:29:59,570 --> 00:30:03,600 Hiyo ni kwenda flip bits wote. 450 00:30:03,600 --> 00:30:09,330 Hivyo nina 1101, 1111. 451 00:30:09,330 --> 00:30:18,940 Na hivyo 'anded na ~ Ox20 ni kwenda nipe nini? 452 00:30:18,940 --> 00:30:22,430 tu kidogo sisi kwa kweli wanahitaji kufikiria ni hii moja, 453 00:30:22,430 --> 00:30:26,020 tangu, kama wote wa bits hizi ni kuweka 1, 454 00:30:26,020 --> 00:30:29,000 kisha tunakwenda kupata nini hasa 'A' ilikuwa, 455 00:30:29,000 --> 00:30:31,260 ila kwa, pengine, nini kidogo hii ni. 456 00:30:31,260 --> 00:30:34,460 Kwa sababu kama ilikuwa ni 1, sasa ni kwenda kuweka 0, 457 00:30:34,460 --> 00:30:39,810 kwa sababu chochote hii ni anded na hii ni kwenda 0. 458 00:30:39,810 --> 00:30:43,280 Kwa hiyo kile ni 'A' & ~ Ox20 kwenda nipe? 459 00:30:43,280 --> 00:30:48,200 [Wanafunzi kujibu, inaudible] >> Na nini ni 'a' na - ni 'A'. 460 00:30:48,200 --> 00:30:52,170 Na kile ambacho ni '& ~ Ox20 kwenda nipe? 461 00:30:52,170 --> 00:30:56,720 'A.' Kwa sababu hii kwa sasa ni 1. 462 00:30:56,720 --> 00:30:59,570 Anding na hii 0 ni kwenda kufanya ni 0, 463 00:30:59,570 --> 00:31:02,530 na sasa sisi ni kwenda kupata 'A'. 464 00:31:02,530 --> 00:31:06,600 >> Wote ni 'A,' na mwisho lakini si uchache wa aina hii, 465 00:31:06,600 --> 00:31:10,830 tuna XOR. Ni sana kama au, 466 00:31:10,830 --> 00:31:14,400 ila ina maana peke au. 467 00:31:14,400 --> 00:31:18,420 Hii ni kama nini kawaida kufikiria kama au katika ulimwengu wa kweli. 468 00:31:18,420 --> 00:31:23,190 Hivyo kufanya ama 'x' au 'y', lakini si wote. 469 00:31:23,190 --> 00:31:28,700 Hapa 1 ^ 1 ni kwenda 0. 470 00:31:28,700 --> 00:31:33,650 Kwa sababu kweli, hii ni - haifanyi kazi kama pamoja na mantiki kweli na wa uongo 471 00:31:33,650 --> 00:31:37,150 kama bitwise & na au kufanya, 472 00:31:37,150 --> 00:31:40,100 lakini ni kweli ^ kweli ni ya uongo. 473 00:31:40,100 --> 00:31:44,810 Kwa sababu sisi tu wanataka kurudi kweli kama tu mmoja wao ni kweli. 474 00:31:44,810 --> 00:31:50,950 Hivyo 1 ^ 1 ni 0. Nini kuhusu 0 ^ 1? 475 00:31:50,950 --> 00:31:56,010 Ni 1. 1 ^ 0 ni 1, 0 ^ 0 ni 0. 476 00:31:56,010 --> 00:32:03,890 Hivyo chini ya hali zote, 0 bitwise kitu 0 ni kwenda 0. 477 00:32:03,890 --> 00:32:10,270 1 bitwise kitu 0 au 0 bitwise 1, 478 00:32:10,270 --> 00:32:14,660 kama ni | ama ^, utakuwa ni 1, na kama ni & utakuwa 0. 479 00:32:14,660 --> 00:32:20,850 Na kesi tu ambapo 1 bitwise 1 ni si 1 ni pamoja na ya kipekee au. 480 00:32:20,850 --> 00:32:24,580 Hiyo ni 0110. 481 00:32:24,580 --> 00:32:36,520 Hivyo hapa sasa, kwa kutumia XOR - hivyo tuko nyuma katika 20. 482 00:32:36,520 --> 00:32:43,480 '^ Ox20 ni hizi 2 bits sisi ni kulinganisha. 483 00:32:43,480 --> 00:32:50,020 Hivyo 1 ^ 0 ni kwenda nipe nini? moja. 484 00:32:50,020 --> 00:32:58,430 '^ Ox20 ni kwenda nipe? Herufi za chini. 485 00:32:58,430 --> 00:33:04,010 '^ Ox20 ni kwenda nipe? Capital A. 486 00:33:04,010 --> 00:33:09,310 Kwa sababu chochote hii ni kufanya, XORing huu kwa Ox20 487 00:33:09,310 --> 00:33:15,380 ni ufanisi flipping chochote kidogo hii ni. 488 00:33:15,380 --> 00:33:21,240 Kama hii ni 0, ni sasa kwenda kuwa 1. 489 00:33:21,240 --> 00:33:26,160 Tangu hii ni 1, 1 ^ 1 ni 0. 490 00:33:26,160 --> 00:33:33,280 Hivyo yetu 'imekuwa' A ', na' A 'yetu imekuwa'. 491 00:33:33,280 --> 00:33:36,910 Hivyo XOR ni njia ya kweli rahisi ya tu flipping kesi. 492 00:33:36,910 --> 00:33:39,960 Unataka tu iterate juu ya kamba ya barua 493 00:33:39,960 --> 00:33:44,330 na mbadala kesi ya kila tabia moja, 494 00:33:44,330 --> 00:33:50,680 wewe tu XOR kila kitu kwa Ox20. 495 00:33:50,680 --> 00:33:55,220 >> Sasa tuna kushoto kuhama. Kushoto mabadiliko ni kwenda tu, kimsingi, 496 00:33:55,220 --> 00:34:01,250 kushinikiza wote wa idadi ya ndani, au wa kushoto, na kuingiza 0 ya nyuma yao. 497 00:34:01,250 --> 00:34:05,550 Kwa hiyo hapa tuna 00,001,101. 498 00:34:05,550 --> 00:34:08,560 Tunakwenda kushinikiza 3 0 katika kutoka kulia, 499 00:34:08,560 --> 00:34:13,580 na sisi kupata 01,101,000. 500 00:34:13,580 --> 00:34:16,380 Katika suala nonbinary, 501 00:34:16,380 --> 00:34:24,699 tunaona kwamba kwamba ni kweli kushughulika 13 wa kushoto-kubadilishwa na 3, ambayo inatupa 104. 502 00:34:24,699 --> 00:34:32,530 Hivyo kushoto shifting, tunaona hapa, x << y kimsingi ni x * 2 ^ y. 503 00:34:32,530 --> 00:34:40,139 13 * 2 ^ 3, 2 ^ 3 ni 8, hivyo 13 * 8 ni 104. 504 00:34:40,139 --> 00:34:45,679 Kama wewe tu kufikiri juu ya binary kwa ujumla, jinsi kila tarakimu, 505 00:34:45,679 --> 00:34:49,530 kama sisi kuanza kutoka kulia, ni 1 ya mahali, kisha 2 ya mahali, kisha 4 ya mahali. 506 00:34:49,530 --> 00:34:51,330 Hivyo kwa kusukuma katika 0 kutoka haki, 507 00:34:51,330 --> 00:34:55,080 tuko tu kusukuma mambo ambayo yalikuwa katika 4 kuchukua nafasi ya 8 ya mahali, 508 00:34:55,080 --> 00:34:57,920 na mambo ambayo yalikuwa katika 8 ya mahali 16 kuchukua nafasi ya. 509 00:34:57,920 --> 00:35:01,280 Kuhama kila tu kuzidisha kwa 2. Yeah? 510 00:35:01,280 --> 00:35:05,210 [Mwanafunzi] Nini kinachotokea kama wewe kubadilishwa kwa 5? 511 00:35:05,210 --> 00:35:10,790 [Bowden] Kama kubadilishwa kwa 5 ungependa tu kupoteza tarakimu. 512 00:35:10,790 --> 00:35:15,410 Bila ya shaka, ni kitu kimoja. Kama, integers ni bits 32 tu, 513 00:35:15,410 --> 00:35:20,750 hivyo kama wewe kuongeza 2 kwa kweli kubwa integers, ni tu haiendani na katika integer. 514 00:35:20,750 --> 00:35:23,660 Hivyo kitu kimoja hapa ni. Kama kubadilishwa kwa 5, 515 00:35:23,660 --> 00:35:25,650 sisi ingekuwa tu kupoteza moja. 516 00:35:25,650 --> 00:35:28,820 Na kwamba ni aina ya kile maana ya "takribani," 517 00:35:28,820 --> 00:35:37,470 ambapo kama wewe kuhama mbali pia, wewe kupoteza bits. 518 00:35:37,470 --> 00:35:39,830 >> Haki mabadiliko ni kwenda kuwa kinyume, 519 00:35:39,830 --> 00:35:43,090 ambapo tunakwenda mkupuo 0 ya mbali mwisho, 520 00:35:43,090 --> 00:35:48,400 na kwa madhumuni yetu, kujaza 0 kutoka upande wa kushoto. 521 00:35:48,400 --> 00:35:52,910 Hivyo kufanya hivyo, sisi ni kimsingi kupunguza nini tulikuwa tayari amefanya. 522 00:35:52,910 --> 00:35:57,780 Na sisi kuona kwamba tatu 0 juu ya haki tu kuanguka mbali, 523 00:35:57,780 --> 00:36:02,020 na tuna kusukuma 1101 njia yote ya haki. 524 00:36:02,020 --> 00:36:08,380 Hii ni kufanya 104 >> 3, ambayo ni, kwa ufanisi, x / 2 ^ y. 525 00:36:08,380 --> 00:36:11,200 Basi sasa, hapa, ni wazo sawa. 526 00:36:11,200 --> 00:36:18,720 Kwa nini ni tu takribani x / 2 ^ y, na si kweli x / 2 ^ y? 527 00:36:18,720 --> 00:36:22,240 Kwa sababu kama alikuwa kubadilishwa kwa 4, napenda wamepoteza 1. 528 00:36:22,240 --> 00:36:25,950 Kimsingi, nini unafikiri, tu kufikiria integer mgawanyiko kwa ujumla. 529 00:36:25,950 --> 00:36:31,070 Hivyo, kama 5/2 ni 2. Siyo 2.5. 530 00:36:31,070 --> 00:36:35,000 Ni wazo sawa hapa. Wakati sisi kugawanya na 2, 531 00:36:35,000 --> 00:36:39,910 tunaweza kupoteza bits isiyo ya kawaida njiani. 532 00:36:39,910 --> 00:36:43,870 Hivyo sasa - hiyo ni kwa bitwise. Hayo ni yote unahitaji kujua. 533 00:36:43,870 --> 00:36:46,340 Kumbuka kesi ya matumizi tuliona katika darasa, 534 00:36:46,340 --> 00:36:49,340 kama mask kidogo ni muhimu kwa ajili ya bitwise operators, 535 00:36:49,340 --> 00:36:53,220 au matumizi yao kwa kidogo masks. 536 00:36:53,220 --> 00:36:58,620 Barua herufi kubwa na ndogo, kubadili ni mfano pretty prototypical. 537 00:36:58,620 --> 00:37:01,640 >> Sawa, hivyo buffer mashambulizi kufurika. 538 00:37:01,640 --> 00:37:05,110 Mtu yeyote kukumbuka nini ilikuwa na makosa na kazi hii? 539 00:37:05,110 --> 00:37:10,140 Taarifa sisi alitangaza safu ya ka 12, chars 12, 540 00:37:10,140 --> 00:37:18,510 na kisha sisi nakala katika buffer yetu ya 12 chars string nzima bar. 541 00:37:18,510 --> 00:37:25,080 Hivyo tatizo ni nini hapa? 542 00:37:25,080 --> 00:37:32,270 idadi uchawi 12 lazima pretty much mara moja pop nje kama - kwa nini 12? 543 00:37:32,270 --> 00:37:35,050 Nini kama bar hutokea kwa kuwa wahusika zaidi ya 12? 544 00:37:35,050 --> 00:37:41,200 Nini kama bar ni mamilioni ya wahusika? 545 00:37:41,200 --> 00:37:46,010 Hapa suala ni memcpy. Kama bar ni muda wa kutosha, 546 00:37:46,010 --> 00:37:50,330 itakuwa tu kabisa - 'c', 'c' haina huduma kuwa ni wahusika 12 tu; 547 00:37:50,330 --> 00:37:53,280 'C' haina huduma ya kwamba haiwezi fit ka kwamba watu wengi. 548 00:37:53,280 --> 00:37:58,250 Itakuwa tu kabisa overwrite char, ka 12 tumekuwa zilizotengwa kwa ajili yake, 549 00:37:58,250 --> 00:38:01,830 na kila kitu siku za nyuma katika kumbukumbu kwamba si kweli ni mali ya kwamba buffer 550 00:38:01,830 --> 00:38:06,520 na chochote kamba bar ni. 551 00:38:06,520 --> 00:38:09,780 Hiyo ilikuwa picha tuliona katika darasa 552 00:38:09,780 --> 00:38:12,220 ambapo tuna stack wetu kukua up. 553 00:38:12,220 --> 00:38:16,040 Unapaswa kutumika picha hizi au kupata familiar pamoja nao tena. 554 00:38:16,040 --> 00:38:21,260 Sisi stack wetu kupanda juu, anwani kumbukumbu kuanza saa 0 juu 555 00:38:21,260 --> 00:38:26,270 na kukua chini ya kama bilioni 4 chini. 556 00:38:26,270 --> 00:38:28,820 Tuna safu yetu 'c' mahali fulani katika kumbukumbu, 557 00:38:28,820 --> 00:38:32,260 basi tuna pointer yetu bar haki chini yake, 558 00:38:32,260 --> 00:38:38,720 na kisha tuna hii kuokolewa frame pointer katika kurudi anwani yetu na stack mzazi wetu mara kwa mara ya. 559 00:38:38,720 --> 00:38:40,800 Kumbuka yale kurudi anwani ni? 560 00:38:40,800 --> 00:38:45,360 Ni wakati kuu wito kazi foo, wito bar kazi, 561 00:38:45,360 --> 00:38:48,100 inevitably, bar anarudi. 562 00:38:48,100 --> 00:38:52,610 Hivyo wakati bar anarudi, wanahitaji kujua kwamba ni kurejea foo kwamba wito yake. 563 00:38:52,610 --> 00:39:01,360 Hivyo kurudi anwani ni ya barua pepe ya kazi ambayo ina kurudi wakati kazi anarudi. 564 00:39:01,360 --> 00:39:05,830 sababu hiyo muhimu kwa buffer mashambulizi kufurika ni kwa sababu, conveniently, 565 00:39:05,830 --> 00:39:09,580 walaghai kama mabadiliko hayo kurudi anwani. 566 00:39:09,580 --> 00:39:14,950 Badala ya kurejea foo, mimi nina kwenda nyuma popote hacker anataka niende nyuma. 567 00:39:14,950 --> 00:39:17,760 Na, conveniently, ambapo hacker mara nyingi anataka kwenda nyuma 568 00:39:17,760 --> 00:39:22,400 ni mwanzo wa buffer kwamba sisi awali alikuwa. 569 00:39:22,400 --> 00:39:26,170 Hivyo taarifa, tena, Little ya Hindi. 570 00:39:26,170 --> 00:39:28,490 appliance ni mfano wa Little Hindi mfumo, 571 00:39:28,490 --> 00:39:34,140 hivyo integer au pointer ni kuhifadhiwa na ka kuachwa. 572 00:39:34,140 --> 00:39:38,980 Kwa hiyo hapa tunaona - ni hii? Yeah. 573 00:39:38,980 --> 00:39:45,660 Tunaona Ox80, OxC0, Ox35, OxO8. 574 00:39:45,660 --> 00:39:48,250 Kumbuka tarakimu hexadesimoli? 575 00:39:48,250 --> 00:39:50,640 Hatuna kubadili tarakimu hexadesimoli katika kidogo ya Hindi, 576 00:39:50,640 --> 00:39:56,110 kwa sababu 2 hexadesimoli tarakimu kufanya juu ya byte moja, na sisi kubadili ka. 577 00:39:56,110 --> 00:40:00,300 Hiyo ni kwa nini sisi si kuhifadhi, kama, 80530CO8. 578 00:40:00,300 --> 00:40:07,520 Sisi kuhifadhi, badala yake, kila jozi ya tarakimu 2, kuanzia kulia. 579 00:40:07,520 --> 00:40:10,880 Anwani kwamba inahusu ya barua pepe ya kuanza 580 00:40:10,880 --> 00:40:15,190 ya buffer yetu kwamba sisi kweli alitaka nakala katika katika nafasi ya kwanza. 581 00:40:15,190 --> 00:40:19,230 sababu hiyo muhimu ni kwa sababu, nini kama mshambulizi 582 00:40:19,230 --> 00:40:24,100 kilichotokea kwa, badala ya kuwa string kwamba mara tu 583 00:40:24,100 --> 00:40:27,060 kamba wapole ya kama, majina yao au kitu, 584 00:40:27,060 --> 00:40:33,900 nini kama, badala yake, kamba waliokuwa baadhi tu ya code holela 585 00:40:33,900 --> 00:40:38,610 kwamba alifanya chochote walitaka kufanya? 586 00:40:38,610 --> 00:40:45,630 Ili waweze - Siwezi kufikiria ya maadili ya yoyote ya baridi. 587 00:40:45,630 --> 00:40:47,780 Inaweza kuwa kitu chochote, ingawa. Yoyote code mno. 588 00:40:47,780 --> 00:40:51,440 Kama walitaka, wangeweza tu kufanya kitu katika makosa seg, lakini hiyo haina maana. 589 00:40:51,440 --> 00:40:54,950 Kwa kawaida kufanya hivyo hack mfumo wako. 590 00:40:54,950 --> 00:40:59,930 >> Sawa. CS50 maktaba. 591 00:40:59,930 --> 00:41:04,800 Hii ni, kimsingi, GetInt, GetString, kazi wale wote sisi zinazotolewa kwa ajili yenu. 592 00:41:04,800 --> 00:41:10,630 Hivyo tuna * kamba char, na kwamba uchukuaji kwamba sisi akapiga mbali 593 00:41:10,630 --> 00:41:12,450 wakati fulani katika muhula. 594 00:41:12,450 --> 00:41:18,220 Kumbuka kwamba string ni safu ya wahusika. 595 00:41:18,220 --> 00:41:23,240 Kwa hiyo hapa tunaona toleo abridged ya GetString. 596 00:41:23,240 --> 00:41:25,920 Unapaswa kuangalia nyuma katika ni kukumbuka jinsi ni kweli kutekelezwa. 597 00:41:25,920 --> 00:41:30,950 Maelezo muhimu ni, taarifa sisi kupata katika tabia ya moja kwa wakati 598 00:41:30,950 --> 00:41:34,570 kutoka kiwango katika, ambayo ni tu kama sisi kuandika katika keyboard. 599 00:41:34,570 --> 00:41:37,890 Hivyo tabia moja kwa wakati mmoja, na kama sisi kupata wahusika wengi mno, 600 00:41:37,890 --> 00:41:40,580 hivyo kama n + 1 ni kubwa kuliko uwezo, 601 00:41:40,580 --> 00:41:44,140 basi tunahitaji kuongeza uwezo wa buffer yetu. 602 00:41:44,140 --> 00:41:47,780 Hivyo hapa sisi ni mara mbili ya ukubwa wa buffer yetu. 603 00:41:47,780 --> 00:41:51,840 Na kwamba anaendelea kwenda; sisi kuingiza tabia ndani ya buffer wetu 604 00:41:51,840 --> 00:41:56,220 mpaka tupewe line mpya au mwisho wa faili au chochote, 605 00:41:56,220 --> 00:41:59,380 katika kesi hiyo, sisi ni kosa kwa kamba na kisha GetString halisi 606 00:41:59,380 --> 00:42:05,120 akirudi kumbukumbu, kama kama sisi zilizotengwa kwa ajili ya kumbukumbu sana kutakuwa na kwenda nyuma na kuogopa kidogo. 607 00:42:05,120 --> 00:42:08,830 Hivyo hatuna kuonyesha kwamba, lakini wazo kuu ni 608 00:42:08,830 --> 00:42:11,960 ina kusoma katika tabia moja kwa wakati mmoja. 609 00:42:11,960 --> 00:42:17,140 Haiwezi kuwa tu kusoma katika jambo zima kwa mara moja, 610 00:42:17,140 --> 00:42:19,550 kwa sababu buffer yao ni tu ya ukubwa fulani. 611 00:42:19,550 --> 00:42:26,590 Hivyo kama kamba kwamba anajaribu kuingiza ndani ya buffer ni kubwa mno, basi itakuwa kufurika. 612 00:42:26,590 --> 00:42:28,940 Hivyo hapa sisi kuzuia kwamba kwa kusoma tu katika tabia moja 613 00:42:28,940 --> 00:42:33,750 wakati na kuongezeka kwa wakati wowote tunahitaji. 614 00:42:33,750 --> 00:42:40,270 Hivyo GetInt na wengine CS50 kazi maktaba huwa na kutumia GetString 615 00:42:40,270 --> 00:42:42,310 katika utekelezaji wao. 616 00:42:42,310 --> 00:42:45,370 Hivyo nilieleza mambo muhimu hapa. 617 00:42:45,370 --> 00:42:49,460 Ni wito GetString kupata kamba. 618 00:42:49,460 --> 00:42:51,710 Kama GetString alishindwa kurudi kumbukumbu, 619 00:42:51,710 --> 00:42:54,270 kukumbuka kwamba GetString mallocs kitu, hivyo wakati wewe piga GetString 620 00:42:54,270 --> 00:42:57,820 unapaswa (yasiyo na) bure kwamba kamba kwamba got. 621 00:42:57,820 --> 00:43:02,870 Hivyo hapa, kama alishindwa malloc kitu, sisi kurudi INT_MAX kama tu bendera kwamba, 622 00:43:02,870 --> 00:43:05,650 hey, sisi si walikuwa kweli na uwezo wa kupata integer. 623 00:43:05,650 --> 00:43:10,830 Unapaswa kupuuza chochote mimi kurudi kwenu, au 624 00:43:10,830 --> 00:43:15,540 unapaswa kutibu hii kama pembejeo halali. 625 00:43:15,540 --> 00:43:21,360 Hatimaye, kuchukua kwamba hakuwa kufanikiwa, sisi kutumia sscanf na kwamba bendera maalum, 626 00:43:21,360 --> 00:43:23,820 maana yake, kwanza mechi integer, 627 00:43:23,820 --> 00:43:26,770 kisha mechi wahusika yoyote baada ya hapo integer. 628 00:43:26,770 --> 00:43:29,070 Hivyo taarifa tunataka kwa sawa 1. 629 00:43:29,070 --> 00:43:32,940 Anarudi hivyo sscanf jinsi mechi nyingi kama mafanikio alifanya? 630 00:43:32,940 --> 00:43:37,010 Itakuwa kurudi 1 kama ni mafanikio kuendana integer, 631 00:43:37,010 --> 00:43:40,890 itakuwa kurudi 0 kama hakuwa na mechi integer, na atarudi 2 632 00:43:40,890 --> 00:43:45,920 kama kuendana integer na kufuatiwa na baadhi ya tabia. 633 00:43:45,920 --> 00:43:49,780 Hivyo taarifa sisi kujaribu tena kama sisi mechi kitu chochote lakini 1. 634 00:43:49,780 --> 00:43:55,230 Hivyo kama sisi aliingia 1, 2, 3, C, au 1, 2, 3, X, 635 00:43:55,230 --> 00:43:57,400 kisha 1, 2, 3 bila kupata kuhifadhiwa katika integer, 636 00:43:57,400 --> 00:43:59,620 X bila kupata kuhifadhiwa katika tabia, 637 00:43:59,620 --> 00:44:06,410 sscanf atarudi 2, na sisi ingekuwa kujaribu tena, kwa sababu sisi tu wanataka integer. 638 00:44:06,410 --> 00:44:09,810 >> Haraka kupiga kupitia HTML, HTTP, CSS. 639 00:44:09,810 --> 00:44:15,340 HyperText Markup Language ni muundo na semantiki ya mtandao. 640 00:44:15,340 --> 00:44:19,960 Hapa ni mfano kutoka hotuba ambapo tuna HTML. 641 00:44:19,960 --> 00:44:22,110 Tuna vitambulisho kichwa, vitambulisho mwili, 642 00:44:22,110 --> 00:44:27,770 tuna mifano ya vitambulisho tupu ambapo sisi kwa kweli hawana kuanza na tag karibu, 643 00:44:27,770 --> 00:44:30,820 sisi tu kiungo na picha. 644 00:44:30,820 --> 00:44:38,480 Hakuna kufunga picha tag; kuna tu tag moja ambayo kutimiza kila kitu tag anatakiwa kufanya. 645 00:44:38,480 --> 00:44:41,950 kiungo ni mfano, tutaweza kuona ni jinsi gani zilizounganishwa na CSS, 646 00:44:41,950 --> 00:44:45,910 script ni mfano wa jinsi zilizounganishwa na nje JavaScript. 647 00:44:45,910 --> 00:44:53,100 Ni pretty moja kwa moja, na kumbuka, HTML ni si lugha ya programu. 648 00:44:53,100 --> 00:44:58,250 Hapa, kumbuka jinsi gani kufafanua fomu au angalau kile huu bila kufanya? 649 00:44:58,250 --> 00:45:01,740 Fomu kama ina hatua na mbinu. 650 00:45:01,740 --> 00:45:06,210 mbinu wewe milele tu kuona ni GET na POST. 651 00:45:06,210 --> 00:45:09,040 Hivyo kupata ni toleo la ambapo kitu anapata kuweka katika URL. 652 00:45:09,040 --> 00:45:11,680 POST ni mahali ambapo si kuweka katika URL. 653 00:45:11,680 --> 00:45:18,520 Badala yake, data yoyote kutoka fomu ni kuingizwa siri zaidi katika ombi HTTP. 654 00:45:18,520 --> 00:45:22,390 Hivyo hapa, hatua amefafanua ambapo ombi HTTP unaendelea. 655 00:45:22,390 --> 00:45:27,490 Ambapo itakuja ni google.com / search. 656 00:45:27,490 --> 00:45:32,890 Method. Kumbuka tofauti kati ya GET na POST, 657 00:45:32,890 --> 00:45:37,200 na, kusema tu kama mfano, kama unataka alama kitu. 658 00:45:37,200 --> 00:45:40,660 Wewe kamwe kuwa na uwezo wa alama POST URL 659 00:45:40,660 --> 00:45:44,970 kwa sababu data si ni pamoja na katika URL. 660 00:45:44,970 --> 00:45:49,790 >> HTTP, sasa, ni HyperText Transfer Itifaki. 661 00:45:49,790 --> 00:45:54,080 HyperText Transfer Itifaki, bila kutarajia ni kuhamisha 662 00:45:54,080 --> 00:45:57,710 HyperText Markup Language, na ni gani. 663 00:45:57,710 --> 00:46:00,170 Lakini pia uhamisho picha yoyote kupata kwenye mtandao, 664 00:46:00,170 --> 00:46:05,400 downloads yoyote ya kufanya kuanza kama ombi HTTP. 665 00:46:05,400 --> 00:46:10,350 Hivyo HTTP ni lugha ya mtandao wa dunia nzima. 666 00:46:10,350 --> 00:46:15,610 Na hapa unahitaji kutambua aina hii ya ombi HTTP. 667 00:46:15,610 --> 00:46:19,300 Hapa HTTP/1.1 upande tu anasema kwamba toleo 668 00:46:19,300 --> 00:46:21,570 ya itifaki mimi nina kutumia. 669 00:46:21,570 --> 00:46:25,770 Ni pretty much daima itakuwa HTTP/1.1, kama utaona. 670 00:46:25,770 --> 00:46:30,110 Kisha sisi kuona kwamba hii ilikuwa GET, mbadala kuwa POST, kwamba unaweza kuona. 671 00:46:30,110 --> 00:46:40,790 Na URL kwamba mimi alikuwa anajaribu kutembelea mara www.google.com/search?q = blah, blah, blah. 672 00:46:40,790 --> 00:46:44,240 Basi kumbuka kwamba hii, alama swali q = blah blah blah, 673 00:46:44,240 --> 00:46:49,040 ni aina ya mambo ambayo ni kuwasilishwa kwa aina. 674 00:46:49,040 --> 00:46:51,830 majibu inaweza kurudi kwangu bila kuangalia kitu kama hiki. 675 00:46:51,830 --> 00:46:54,050 Tena, kwa kuanzia na itifaki, ambayo ni kwenda kuwa, 676 00:46:54,050 --> 00:46:59,190 ikifuatiwa na hali ya code. Hapa ni 200 sawa. 677 00:46:59,190 --> 00:47:05,060 Na hatimaye, ukurasa wa mtandao kwamba mimi kwa kweli aliuliza kwa zitafuatwa. 678 00:47:05,060 --> 00:47:08,210 iwezekanavyo hali ya code unaweza kuona, na unapaswa kujua kadhaa. 679 00:47:08,210 --> 00:47:12,770 200 OK wewe kuwa pengine kuona mbele. 680 00:47:12,770 --> 00:47:17,830 403 Haramu, 404 haionekani, Error 500 Ndani Server 681 00:47:17,830 --> 00:47:22,140 ni kawaida kama wewe kwenda kwenye tovuti na kitu ni kuvunjwa au shambulio yao PHP code, 682 00:47:22,140 --> 00:47:24,930 ambapo katika appliance tuna kuwa kubwa sanduku rangi ya machungwa 683 00:47:24,930 --> 00:47:27,830 kuja juu na kusema, kama, kuna kitu kibaya, kanuni hii haina kazi 684 00:47:27,830 --> 00:47:30,380 au kazi hii mbaya. 685 00:47:30,380 --> 00:47:33,230 Kawaida tovuti sitaki wewe kujua nini kazi ni kweli mbaya, 686 00:47:33,230 --> 00:47:37,880 hivyo badala wao itabidi tu kukupa 500 Ndani Makosa Server. 687 00:47:37,880 --> 00:47:43,050 >> TCP / IP ni 1 safu chini ya HTTP. 688 00:47:43,050 --> 00:47:47,550 Kumbuka kuwa kuna mtandao nje ya mtandao wa dunia nzima. 689 00:47:47,550 --> 00:47:52,270 Kama kama wewe kucheza mchezo online kwamba hana kupitia HTTP, 690 00:47:52,270 --> 00:47:55,740 ni kwenda kwa tofauti - ni bado kutumia mtandao, 691 00:47:55,740 --> 00:47:58,900 lakini haina matumizi HTTP. 692 00:47:58,900 --> 00:48:02,470 HTTP ni mfano mmoja tu wa itifaki umejengwa juu ya TCP / IP. 693 00:48:02,470 --> 00:48:07,820 IP maana yake halisi ni Itifaki ya mtandao. 694 00:48:07,820 --> 00:48:11,500 Kila kompyuta ina anwani ya IP; wao ni wale 4-tarakimu mambo 695 00:48:11,500 --> 00:48:16,510 kama 192.168.2.1, au chochote; kwamba huelekea kuwa moja ya ndani. 696 00:48:16,510 --> 00:48:23,390 Lakini hiyo ni mfano wa anwani ya IP. 697 00:48:23,390 --> 00:48:29,060 Hivyo DNS, Domain Jina Service, 698 00:48:29,060 --> 00:48:33,410 kwamba ni nini tafsiri ya mambo kama google.com kwa anwani halisi IP. 699 00:48:33,410 --> 00:48:37,700 Hivyo kama wewe aina hiyo IP katika URL, 700 00:48:37,700 --> 00:48:40,850 kwamba itakuwa kuleta kwa Google, lakini wewe huwa si kukumbuka mambo hayo. 701 00:48:40,850 --> 00:48:45,470 Wewe huwa na kumbuka google.com badala yake. 702 00:48:45,470 --> 00:48:51,560 Jambo la mwisho sisi ni bandari, ambapo hii ni TCP sehemu ya IP. 703 00:48:51,560 --> 00:48:54,880 TCP gani zaidi. Kufikiri juu, kama, unaweza kuwa na mtandao browser yako mbio. 704 00:48:54,880 --> 00:48:58,670 Labda una baadhi mbio email maombi; 705 00:48:58,670 --> 00:49:02,150 labda una baadhi ya mpango mwingine ambao hutumia mtandao mbio. 706 00:49:02,150 --> 00:49:05,090 Wote wanahitaji kupata mtandao, 707 00:49:05,090 --> 00:49:08,100 lakini kompyuta yako tu ina 1 WiFi kadi au chochote. 708 00:49:08,100 --> 00:49:10,780 Hivyo bandari ni njia ambayo sisi ni uwezo wa kupasuliwa up 709 00:49:10,780 --> 00:49:13,550 jinsi maombi hayo ni uwezo wa kutumia mtandao. 710 00:49:13,550 --> 00:49:17,230 Kila maombi anapata 1 maalum bandari kwamba unaweza kusikiliza juu, 711 00:49:17,230 --> 00:49:19,670 na kwa default, HTTP anatumia bandari 80. 712 00:49:19,670 --> 00:49:22,410 Baadhi ya huduma ya barua pepe kutumia 25. 713 00:49:22,410 --> 00:49:24,490 wale wa chini-kuhesabiwa huwa na kuwa zimehifadhiwa. 714 00:49:24,490 --> 00:49:29,270 Wewe ni kawaida na uwezo wa kupata wale juu-kuhesabiwa kwa mwenyewe. 715 00:49:29,270 --> 00:49:32,010 >> CSS, kuachia Style Sheets. 716 00:49:32,010 --> 00:49:36,030 Kurasa za mtandao sisi style na CSS, si kwa HTML. 717 00:49:36,030 --> 00:49:38,440 Kuna 3 maeneo unaweza kuweka CSS yako. 718 00:49:38,440 --> 00:49:46,300 Inaweza kuwa inline, kati ya vitambulisho style, au katika faili tofauti kabisa na kisha wanaohusishwa in 719 00:49:46,300 --> 00:49:48,470 Na hapa ni mfano tu wa CSS. 720 00:49:48,470 --> 00:49:50,450 Unapaswa kutambua muundo huu, 721 00:49:50,450 --> 00:49:54,310 ambapo mfano wa kwanza ni sisi ni vinavyolingana tag mwili, 722 00:49:54,310 --> 00:49:56,680 na hapa sisi ni centering tag mwili. 723 00:49:56,680 --> 00:50:00,420 mfano wa pili, sisi ni vinavyolingana kitu 724 00:50:00,420 --> 00:50:04,740 na ID footer, na sisi ni kuomba baadhi ya mitindo hiyo. 725 00:50:04,740 --> 00:50:07,310 Taarifa kwamba ID footer Nakala aligns-wa kushoto, 726 00:50:07,310 --> 00:50:09,840 ambapo mwili text-aligns kituo hicho. 727 00:50:09,840 --> 00:50:13,180 Footer ni ndani ya mwili. 728 00:50:13,180 --> 00:50:16,470 Itakuwa, badala yake, text-align kushoto, ingawa mwili anasema kituo hicho text-align. 729 00:50:16,470 --> 00:50:18,880 Hii ni zima kuachia sehemu yake. 730 00:50:18,880 --> 00:50:22,110 Unaweza kuwa na - unaweza bayana mitindo kwa mwili, 731 00:50:22,110 --> 00:50:25,320 na kisha mambo katika mwili unaweza bayana mitindo mahsusi zaidi, 732 00:50:25,320 --> 00:50:28,160 na mambo ya kazi kama wewe kutarajia. 733 00:50:28,160 --> 00:50:34,420 Specifiers zaidi maalum CSS fuatilia. 734 00:50:34,420 --> 00:50:46,140 Nadhani hiyo ni yake. 735 00:50:46,140 --> 00:50:49,260 >> [Ali Nahm] Hi kila mtu. Kama mimi naweza tu kupata mawazo yako. 736 00:50:49,260 --> 00:50:53,990 Mimi nina Ali na mimi nina kwenda kupitia PHP na SQL kweli haraka. 737 00:50:53,990 --> 00:51:00,310 Ili tuweze kuanza. PHP ni short kwa PHP: HyperText Preprocessor. 738 00:51:00,310 --> 00:51:03,730 Na kama wewe wote wanapaswa kujua, ni server-upande lugha scripting, 739 00:51:03,730 --> 00:51:06,800 na sisi kutumia kwa ajili ya mwisho ya nyuma ya Nje, 740 00:51:06,800 --> 00:51:12,540 na jinsi gani mengi ya computations, nyuma ya pazia sehemu. 741 00:51:12,540 --> 00:51:17,510 Syntax. Siyo kama C, mshangao, mshangao. 742 00:51:17,510 --> 00:51:22,060 Daima ina kuanza na, kama unaweza kuona, - Siwezi kusonga mbele. 743 00:51:22,060 --> 00:51:31,340 Unaweza kuona unahitaji aina mpya ya braces na kisha unahitaji pia? Php. 744 00:51:31,340 --> 00:51:35,780 Hiyo ni daima jinsi una sura PHP wako wa maandishi, PHP code yako. 745 00:51:35,780 --> 00:51:39,180 Hivyo haiwezi tu kuwa kama C, ambapo aina ya kuiweka juu ya kwanza. 746 00:51:39,180 --> 00:51:42,290 Unahitaji daima Surround yake. 747 00:51:42,290 --> 00:51:47,610 Na sasa, syntax kubwa ni kwamba vigezo vyote haja ya kuanza kwa $ tabia. 748 00:51:47,610 --> 00:51:49,490 Wewe haja ya kufanya hivyo wakati wewe ni kufafanua yao, unahitaji kufanya hivyo 749 00:51:49,490 --> 00:51:51,860 wakati wewe ni akimaanisha kwao baadaye. 750 00:51:51,860 --> 00:51:56,510 Daima haja ya $ hiyo. Ni rafiki yako mpya bora, pretty much. 751 00:51:56,510 --> 00:52:01,690 Huwezi - tofauti na C, huna haja ya kuweka aina gani ya kutofautiana aina ni. 752 00:52:01,690 --> 00:52:04,940 Hivyo wakati huna haja ya $, huna haja ya kuweka, kama, 753 00:52:04,940 --> 00:52:09,470 int x au kamba y, nakadhalika, nakadhalika. 754 00:52:09,470 --> 00:52:11,490 Hivyo tofauti kidogo. 755 00:52:11,490 --> 00:52:15,590 Kama matokeo ya hili, maana yake ni kwamba PHP ni aina weakly. 756 00:52:15,590 --> 00:52:19,310 PHP ni weakly lugha aina, na ina weakly typed vigezo. 757 00:52:19,310 --> 00:52:24,020 Kwa maneno mengine, hiyo ina maana kwamba unaweza kubadili kati ya aina tofauti ya aina ya kutofautiana. 758 00:52:24,020 --> 00:52:27,230 Unaweza kuhifadhi namba yako ya 1 kama int, 759 00:52:27,230 --> 00:52:29,650 unaweza kuhifadhi kama kamba, na unaweza kuhifadhi kama kuelea, 760 00:52:29,650 --> 00:52:33,550 na yote itakuwa kwamba idadi 1. 761 00:52:33,550 --> 00:52:36,080 Hata kama wewe ni hifadhi hiyo katika aina mbalimbali, 762 00:52:36,080 --> 00:52:39,120 bado ni - aina variable bado ni kufanya katika mwisho. 763 00:52:39,120 --> 00:52:41,540 Hivyo kama wewe kuangalia hapa, kama unakumbuka kutoka pset 7, 764 00:52:41,540 --> 00:52:43,500 wengi wenu pengine alikuwa na masuala na hili. 765 00:52:43,500 --> 00:52:47,280 Mbili ishara sawa, 3 ishara sawa, ishara 4 sawa. 766 00:52:47,280 --> 00:52:49,990 Sawa, hakuna dalili 4 sawa, lakini kuna 2 na 3. 767 00:52:49,990 --> 00:52:53,320 Unaweza kutumia 2 ishara sawa na kuangalia maadili. 768 00:52:53,320 --> 00:52:55,830 Ni unaweza kuangalia katika aina. 769 00:52:55,830 --> 00:52:58,770 Hivyo kama unaweza kuona katika mfano wa kwanza, 770 00:52:58,770 --> 00:53:02,210 Nina num_int == num_string. 771 00:53:02,210 --> 00:53:06,710 Hivyo int yako na kamba yako ni wawili, kitaalam, 1, 772 00:53:06,710 --> 00:53:10,790 lakini wao ni aina mbalimbali. Lakini kwa usawa mara mbili, kutakuwa na bado kupita. 773 00:53:10,790 --> 00:53:15,510 Hata hivyo, kwa usawa tatu, ni hundi thamani kama vile aina mbalimbali. 774 00:53:15,510 --> 00:53:18,760 Hiyo ina maana kwamba siyo kwenda kupita katika kesi ya pili hapa, 775 00:53:18,760 --> 00:53:22,350 ambapo unatumia 3 ishara sawa badala yake. 776 00:53:22,350 --> 00:53:26,590 Hivyo hiyo ni tofauti kubwa kwamba lazima wote umeonyesha sasa. 777 00:53:26,590 --> 00:53:31,570 >> Kamba concatenation ni kitu kingine nguvu unaweza kutumia katika PHP. 778 00:53:31,570 --> 00:53:34,080 Ni kimsingi tu hii Handy dot nukuu, 779 00:53:34,080 --> 00:53:36,230 na kwamba ni jinsi gani inaweza kumfunga masharti pamoja. 780 00:53:36,230 --> 00:53:40,800 Hivyo kama una Cat na una Dog, na unataka kuweka 2 masharti pamoja, 781 00:53:40,800 --> 00:53:44,080 unaweza kutumia kipindi, na hiyo ni aina ya jinsi kazi. 782 00:53:44,080 --> 00:53:46,660 Unaweza pia tu kuwaweka karibu na kila mmoja, 783 00:53:46,660 --> 00:53:49,030 kama unaweza kuona hapa katika mfano chini, 784 00:53:49,030 --> 00:53:51,610 ambapo nina echo string 1, nafasi string 2. 785 00:53:51,610 --> 00:53:56,930 PHP kujua nafasi yao kama vile. 786 00:53:56,930 --> 00:53:59,780 Arrays. Sasa, katika PHP, kuna 2 aina mbalimbali za arrays. 787 00:53:59,780 --> 00:54:03,180 Unaweza kuwa na arrays mara kwa mara, na unaweza pia kuwa na arrays associative, 788 00:54:03,180 --> 00:54:06,040 na sisi ni kwenda njia ya haki yao sasa. 789 00:54:06,040 --> 00:54:08,280 Mara kwa mara na arrays ni haki hii katika C, 790 00:54:08,280 --> 00:54:11,240 na hivyo kuwa fahirisi kwamba zinahesabika. 791 00:54:11,240 --> 00:54:13,160 Hivi sasa tuko tu kwenda kujenga moja na kuweka - 792 00:54:13,160 --> 00:54:15,500 hivyo hii ni jinsi sisi kujenga safu tupu, kisha tunakwenda 793 00:54:15,500 --> 00:54:17,310 kuweka katika index namba 0. 794 00:54:17,310 --> 00:54:19,200 Sisi ni kwenda kuweka namba 6, thamani 6. 795 00:54:19,200 --> 00:54:21,500 Unaweza kuona chini hapa. 796 00:54:21,500 --> 00:54:24,240 Where's - katika index namba 1 tunakwenda kuweka thamani namba 4, 797 00:54:24,240 --> 00:54:26,720 na hivyo unaweza kuona kuna 6, kuna 4, 798 00:54:26,720 --> 00:54:29,160 na kisha kama sisi ni uchapishaji mambo, 799 00:54:29,160 --> 00:54:33,550 wakati sisi kujaribu na magazeti thamani kuhifadhiwa katika index namba 0, 800 00:54:33,550 --> 00:54:36,900 kisha tutaweza kuona thamani 6 kuwa kuchapishwa. Cool? 801 00:54:36,900 --> 00:54:40,160 Hivyo kwamba ni arrays mara kwa mara kwa ajili yenu. 802 00:54:40,160 --> 00:54:42,750 Njia nyingine unaweza pia kuongeza mambo ya arrays mara kwa mara sasa 803 00:54:42,750 --> 00:54:44,780 ni unaweza tu append yao mwishoni. 804 00:54:44,780 --> 00:54:47,240 Hiyo ina maana kwamba huna kutaja maalum index. 805 00:54:47,240 --> 00:54:51,000 Unaweza kuona idadi, na kisha katika mabano mraba hakuna index maalum. 806 00:54:51,000 --> 00:54:56,270 Na itakuwa kujua - PHP kujua tu kuongeza hadi mwisho wa orodha, karibu bure doa. 807 00:54:56,270 --> 00:54:59,190 Hivyo unaweza kuona 1 haki pale katika kwamba 0 doa, 808 00:54:59,190 --> 00:55:02,690 2 akaenda haki pale katika doa kwanza. 809 00:55:02,690 --> 00:55:04,690 3 huenda - ni aliongeza huko pia. 810 00:55:04,690 --> 00:55:06,720 Ili aina ya hufanya akili. Wewe tu mara kwa mara na kuongeza kuwa, 811 00:55:06,720 --> 00:55:09,360 na kisha wakati sisi ni akirejea ripoti ya namba 1, 812 00:55:09,360 --> 00:55:13,080 itakuwa magazeti nje thamani 2. 813 00:55:13,080 --> 00:55:16,800 >> Kisha sisi na arrays kwamba ni arrays associative. 814 00:55:16,800 --> 00:55:19,370 Arrays associative, badala ya kuwa fahirisi namba, 815 00:55:19,370 --> 00:55:23,630 wanachokifanya ni, wana fahirisi kwamba ni kwa kamba. 816 00:55:23,630 --> 00:55:25,670 Unaweza kuona, badala ya - I got kuondoa wale wote fahirisi posta, 817 00:55:25,670 --> 00:55:32,140 na sasa ni key1, key2, key3, na wao uko katika quotes mbili kwa ishara ya kwamba wao ni masharti yote. 818 00:55:32,140 --> 00:55:34,470 Ili tuweze kuwa na mfano wa hii. 819 00:55:34,470 --> 00:55:38,790 Mfano wa hili ni kwamba tuna tf, na kwamba jina index. 820 00:55:38,790 --> 00:55:42,030 Sisi ni kwenda kuweka "Ali" kama jina, katika index, kalori kuliwa, 821 00:55:42,030 --> 00:55:47,640 tunaweza kuweka int wakati huu badala ya kamba, 822 00:55:47,640 --> 00:55:52,240 na kisha index anapenda, tunaweza kuweka safu nzima ndani yake. 823 00:55:52,240 --> 00:55:55,490 Hivyo hii ni aina ya - ni sawa na dhana ya jinsi tulikuwa 824 00:55:55,490 --> 00:55:58,930 fahirisi na idadi, lakini sasa tunaweza kubadili fahirisi karibu 825 00:55:58,930 --> 00:56:03,890 kuwa nao kama masharti badala yake. 826 00:56:03,890 --> 00:56:06,070 Unaweza pia kufanya hivyo, badala ya tu kufanya hivyo mmoja mmoja, 827 00:56:06,070 --> 00:56:09,400 unaweza kufanya yote katika chunk moja. Hivyo unaweza kuona kwamba tf ya kwamba safu, 828 00:56:09,400 --> 00:56:13,350 na kisha sisi kuweka watu wote katika moja kubwa za mraba mabano kuweka. 829 00:56:13,350 --> 00:56:15,220 Hivyo kwamba wanaweza kasi ya mambo up. 830 00:56:15,220 --> 00:56:19,730 Ni zaidi ya uchaguzi Stylistic kuliko hivyo. 831 00:56:19,730 --> 00:56:21,550 Sisi pia kuwa matanzi. 832 00:56:21,550 --> 00:56:26,020 Katika C tuna matanzi kwamba kazi kama hii. 833 00:56:26,020 --> 00:56:29,690 Tulikuwa na safu yetu, na sisi akaenda kutoka index 0 hadi mwisho wa orodha, 834 00:56:29,690 --> 00:56:31,740 na sisi magazeti yote, sawa? 835 00:56:31,740 --> 00:56:33,880 Ila tatizo ni, kwa associative arrays, 836 00:56:33,880 --> 00:56:36,610 sisi si lazima kujua fahirisi wale namba 837 00:56:36,610 --> 00:56:39,610 kwa sababu sasa tuna fahirisi kamba. 838 00:56:39,610 --> 00:56:44,800 Sasa sisi kutumia foreach tanzi, ambayo, tena, hopefully kutumika katika pset 7. 839 00:56:44,800 --> 00:56:48,930 Foreach loops tu kujua kila sehemu moja ya orodha. 840 00:56:48,930 --> 00:56:52,450 Na haina kujua hasa index namba kwamba wewe. 841 00:56:52,450 --> 00:56:56,490 Hivyo kuwa foreach syntax, hivyo ni foreach, kuweka safu. 842 00:56:56,490 --> 00:57:00,430 Hivyo safu yangu inaitwa pset, na kisha kama, neno kama, 843 00:57:00,430 --> 00:57:04,530 na kisha kuweka variable hii mitaa muda kwamba wewe ni kwenda kutumia 844 00:57:04,530 --> 00:57:10,690 tu kwa ajili ya kitu maalum kwamba kinaendelea kushikilia maalum - 845 00:57:10,690 --> 00:57:14,770 mfano moja au sehemu moja ya safu. 846 00:57:14,770 --> 00:57:18,350 Pset num kushikilia 1, na kisha labda ni kushikilia namba 6, 847 00:57:18,350 --> 00:57:20,410 na kisha kushikilia namba 2. 848 00:57:20,410 --> 00:57:26,630 Lakini ni uhakika kupitia kila thamani moja kwamba katika safu. 849 00:57:26,630 --> 00:57:30,530 Kazi muhimu ambayo unapaswa kujua katika PHP ni kuhitaji, 850 00:57:30,530 --> 00:57:35,880 hivyo kwamba inafanya uhakika kuwa wewe ni ikiwa ni pamoja na baadhi ya files, echo, exit, tupu. 851 00:57:35,880 --> 00:57:40,490 Mimi sana kupendekeza ukiangalia pset 7 na kuangalia kazi hizo. 852 00:57:40,490 --> 00:57:42,810 Unaweza kuwa na kujua hizo, 853 00:57:42,810 --> 00:57:47,060 hivyo napenda dhahiri kujua nini, hasa, wale wote kufanya. 854 00:57:47,060 --> 00:57:50,080 >> Na sasa sisi ni kwenda kupitia wigo kweli haraka. 855 00:57:50,080 --> 00:57:53,490 Kwa upeo, PHP ni aina ya kitu funky, tofauti na C, 856 00:57:53,490 --> 00:57:56,170 na hivyo sisi ni kwenda tu kwenda kwa njia hiyo haraka. 857 00:57:56,170 --> 00:57:58,930 Basi hebu kusema sisi kuanza saa mshale kwamba tuna huko. 858 00:57:58,930 --> 00:58:02,900 Na sisi ni kwenda kuanza na $ i. Hivyo variable 'i' ni kwenda 0, 859 00:58:02,900 --> 00:58:06,730 na sisi ni kwenda tu kuweka uchapishaji ni katika kuwa nyeupe kubwa sanduku zaidi ya hapo. 860 00:58:06,730 --> 00:58:09,220 Sisi ni kwenda kuanza na i0, na kisha tunakwenda kurudia yake. 861 00:58:09,220 --> 00:58:12,670 Hivyo kuna 0. 862 00:58:12,670 --> 00:58:15,210 Na kisha tunakwenda nyongeza ni kwa ajili ya kitanzi, 863 00:58:15,210 --> 00:58:17,810 na kisha kwenda kuwa thamani ya 1. 864 00:58:17,810 --> 00:58:20,070 Moja ni chini ya 3, hivyo kwenda kupita kwamba kwa kitanzi, 865 00:58:20,070 --> 00:58:23,230 na kisha tunakwenda kuona kuchapishwa tena. 866 00:58:23,230 --> 00:58:25,520 Tunakwenda nyongeza tena kwa 2, 867 00:58:25,520 --> 00:58:29,860 na 2 ni chini ya 3, hivyo itabidi kupita kwa kitanzi, na kutakuwa na magazeti 2. 868 00:58:29,860 --> 00:58:35,100 Basi itabidi kumbuka kuwa 3 ni si chini ya 3, hivyo tutaweza kuvunja nje ya kwa kitanzi. 869 00:58:35,100 --> 00:58:40,050 Hivyo sasa tumekuwa exited, na kisha sisi ni kwenda katika aFunction. 870 00:58:40,050 --> 00:58:45,010 Sawa. Hivyo kuwa na kumbuka kuwa kutofautiana hii tumeunda, 871 00:58:45,010 --> 00:58:48,270 'I' variable, si ndani ya nchi scoped. 872 00:58:48,270 --> 00:58:50,280 Hiyo ina maana kwamba siyo ndani kitanzi, 873 00:58:50,280 --> 00:58:58,060 na kwamba variable bado tunaweza kupata na mabadiliko ya baadaye, na bado kuwa na ufanisi. 874 00:58:58,060 --> 00:59:02,160 Hivyo kama wewe kwenda katika kazi sasa, utaona kwamba sisi pia kutumia 'i' variable, 875 00:59:02,160 --> 00:59:05,320 na tunakwenda nyongeza 'i' + +. 876 00:59:05,320 --> 00:59:09,410 Unaweza kudhani, kwa mara ya kwanza, kwa kuzingatia C, kwamba nakala ya 'i' kutofautiana. 877 00:59:09,410 --> 00:59:12,830 Ni jambo tofauti kabisa, ambayo ni sahihi. 878 00:59:12,830 --> 00:59:16,560 Hivyo wakati sisi magazeti hayo, tunakwenda magazeti 'i' + +, ambayo ni kwenda magazeti kuwa 4, 879 00:59:16,560 --> 00:59:19,640 na kisha tunakwenda - sorry. 880 00:59:19,640 --> 00:59:22,030 Kisha tunakwenda mwisho nje ya kazi hiyo, 881 00:59:22,030 --> 00:59:24,820 na tunakwenda kuwa na ambapo mshale ni hivi sasa. 882 00:59:24,820 --> 00:59:29,190 Hiyo ina maana kwamba huo, hata hivyo, ingawa kazi iliyopita thamani ya 'i', 883 00:59:29,190 --> 00:59:32,620 hakuwa na kubadili nje ya kazi, 884 00:59:32,620 --> 00:59:35,060 kwa sababu kazi ina wigo tofauti. 885 00:59:35,060 --> 00:59:38,960 Hiyo ina maana kwamba wakati sisi echo 'i', ina si iliyopita katika wigo wa kazi, 886 00:59:38,960 --> 00:59:43,660 na hivyo basi tunakwenda magazeti 3 tena. 887 00:59:43,660 --> 00:59:47,520 Mambo mbalimbali juu ya mipaka katika PHP kuliko katika C. 888 00:59:47,520 --> 00:59:51,130 >> Sasa katika PHP na HTML. 889 00:59:51,130 --> 00:59:53,510 PHP ni kutumika kufanya kurasa za mtandao nguvu. 890 00:59:53,510 --> 00:59:58,660 Ni aina ya hufanya mambo mbalimbali. 891 00:59:58,660 --> 01:00:02,090 Tuna ni tofauti na HTML. 892 01:00:02,090 --> 01:00:05,230 Kwa HTML, sisi daima tu kuwa sawa tuli kitu, kama jinsi Rob ilionyesha, 893 01:00:05,230 --> 01:00:09,370 ambapo PHP, unaweza kubadilisha mambo msingi ambao user ni. 894 01:00:09,370 --> 01:00:11,830 Basi, ikiwa mimi na huu, mimi, "Wewe ni watumiaji katika kama -" na kisha jina, 895 01:00:11,830 --> 01:00:14,420 na Mimi naweza kubadili jina. Hivyo sasa hivi jina ni Joseph, 896 01:00:14,420 --> 01:00:18,880 na ina "kuhusu mimi," lakini naweza pia kubadili jina kuwa na Tommy. 897 01:00:18,880 --> 01:00:21,700 Na kwamba itakuwa ni jambo tofauti. 898 01:00:21,700 --> 01:00:23,840 Hivyo tunaweza pia kubadili mambo mbalimbali juu yake, 899 01:00:23,840 --> 01:00:27,070 na itakuwa kuonyesha bidhaa tofauti kulingana na jina. 900 01:00:27,070 --> 01:00:31,430 Hivyo PHP unaweza aina ya kubadili nini kinaendelea katika tovuti yako. 901 01:00:31,430 --> 01:00:33,540 Same hapa. Hata hivyo, kumbuka kwamba wao kuwa na maudhui tofauti, 902 01:00:33,540 --> 01:00:38,870 hata kama wewe ni utaalamu bado kupata mtandao huo ukurasa kwamba juu ya uso. 903 01:00:38,870 --> 01:00:43,450 Kuzalisha HTML. Kuna njia 2 mbalimbali ambazo unaweza kufanya hivyo. 904 01:00:43,450 --> 01:00:48,980 Hivyo tutaweza kwenda kwa kuwa hivi sasa. Njia ya kwanza ni, una - yeah, sorry. 905 01:00:48,980 --> 01:00:51,150 Hivyo tu na mara kwa mara yako kwa kitanzi katika PHP, 906 01:00:51,150 --> 01:00:56,270 na kisha echo katika PHP na echo nje HTML. 907 01:00:56,270 --> 01:00:58,720 Kutumia kile Rob ilionyesha yenu ya HTML script 908 01:00:58,720 --> 01:01:04,030 na kisha kwa kutumia PHP magazeti tu magazeti ya nje kwa ukurasa wa mtandao. 909 01:01:04,030 --> 01:01:09,520 njia mbadala ni kufanya hivyo kama wewe tofauti nje PHP na HTML. 910 01:01:09,520 --> 01:01:11,940 Hivyo unaweza kuwa mstari wa PHP kwamba kuanza kwa kitanzi, 911 01:01:11,940 --> 01:01:16,020 basi unaweza kuwa mstari wa HTML katika kitu tofauti, 912 01:01:16,020 --> 01:01:19,700 na kisha mwisho kitanzi, tena, na PHP. 913 01:01:19,700 --> 01:01:21,800 Hivyo ni aina ya kutenganisha nje. 914 01:01:21,800 --> 01:01:24,020 Upande wa kushoto, unaweza kuwa una wote - 915 01:01:24,020 --> 01:01:26,360 ni 1 tu chunk ya PHP. 916 01:01:26,360 --> 01:01:28,510 Juu ya haki unaweza kuona kwamba una mstari wa PHP, 917 01:01:28,510 --> 01:01:32,540 una mstari wa HTML, na una mstari wa PHP tena. 918 01:01:32,540 --> 01:01:36,870 Hivyo kutenganisha ni nje katika waliyo ni kufanya. 919 01:01:36,870 --> 01:01:39,330 Na wewe utakuwa kumbuka kuwa aidha njia, kwa aidha wao, 920 01:01:39,330 --> 01:01:41,980 wao bado magazeti nje ya picha, picha, picha, 921 01:01:41,980 --> 01:01:44,540 ili HTML bado ni kuchapishwa njia hiyo hiyo. 922 01:01:44,540 --> 01:01:49,870 Na kisha bado utaona 3 images show up kwenye tovuti yako. 923 01:01:49,870 --> 01:01:52,820 Hivyo ni njia 2 mbalimbali ya kufanya kitu kimoja. 924 01:01:52,820 --> 01:01:55,060 >> Sasa tuna aina na maombi. Kama Rob ilionyesha wewe, 925 01:01:55,060 --> 01:01:59,400 kuna aina ya HTML, na sisi tu breeze kwa njia hii. 926 01:01:59,400 --> 01:02:02,040 Una hatua na una mbinu, na hatua yako 927 01:02:02,040 --> 01:02:04,350 aina ya inaonyesha wapi utaenda kutuma, na njia ni kama 928 01:02:04,350 --> 01:02:06,960 ni kwenda kuwa GET au POST. 929 01:02:06,960 --> 01:02:11,220 Na ombi GET, kama Rob akasema, ina maana kwamba ni kwenda kuweka katika fomu 930 01:02:11,220 --> 01:02:15,760 na utaona kama URL, ambapo ombi POST huwezi kuona katika URL. 931 01:02:15,760 --> 01:02:17,840 Hivyo tofauti kidogo. 932 01:02:17,840 --> 01:02:19,950 Hata hivyo, jambo moja kwamba jambo kama hilo 933 01:02:19,950 --> 01:02:22,560 ni kwamba POST na GET ni sawa salama. 934 01:02:22,560 --> 01:02:26,430 Hivyo unaweza kufikiri kwamba kwa sababu tu huna kuona katika URL, 935 01:02:26,430 --> 01:02:28,790 hiyo ina maana POST ni salama zaidi, 936 01:02:28,790 --> 01:02:34,420 lakini bado unaweza kuona katika cookies zako katika taarifa kwamba wewe ni kutuma. 937 01:02:34,420 --> 01:02:38,260 Hivyo sidhani kuwa karibu moja au nyingine. 938 01:02:38,260 --> 01:02:42,160 Kitu kingine kukumbuka ni kwamba wewe pia kuwa na sehemu vigezo. 939 01:02:42,160 --> 01:02:45,850 You guys alitumia katika pset 7 kupata user ID habari yako. 940 01:02:45,850 --> 01:02:48,550 Ni nini kilichotokea ni kwamba unaweza kutumia safu hii associative, 941 01:02:48,550 --> 01:02:53,310 $ _SESSION, Na kisha uko na uwezo wa kupata mambo mbalimbali 942 01:02:53,310 --> 01:02:57,720 na kuhifadhi vitu mbalimbali katika kurasa. 943 01:02:57,720 --> 01:03:00,750 >> Jambo la mwisho ni kwamba tuna SQL, Uliza muundo lugha, 944 01:03:00,750 --> 01:03:04,360 na hii ni lugha ya programu ya kusimamia database. 945 01:03:04,360 --> 01:03:08,220 Nini, hasa, ni database? Wao ni makusanyo ya meza, 946 01:03:08,220 --> 01:03:10,630 na kila meza inaweza kuwa sawa aina ya vitu. 947 01:03:10,630 --> 01:03:14,990 Hivyo tulikuwa na meza ya watumiaji katika fedha pset yako. 948 01:03:14,990 --> 01:03:20,610 Na kwa nini wao muhimu? Kwa sababu ni njia ya kudumu ya kuhifadhi habari. 949 01:03:20,610 --> 01:03:22,840 Ni njia ya kufuatilia mambo na kusimamia mambo 950 01:03:22,840 --> 01:03:25,890 na kwa kweli kuona kwenye kurasa tofauti na kuweka wimbo. 951 01:03:25,890 --> 01:03:29,930 Wakati kama wewe tu kuhifadhi katika kwamba mtu mara moja wakati 952 01:03:29,930 --> 01:03:33,720 na kisha kutumia baadaye, huwezi kuwa na uwezo wa kupata kitu chochote wameweza kuokolewa. 953 01:03:33,720 --> 01:03:37,660 Tuna 4 mambo makubwa kwamba sisi kutumia kwa amri SQL. 954 01:03:37,660 --> 01:03:40,190 Tuna kuchagua, kuingiza, kufuta, na update. 955 01:03:40,190 --> 01:03:42,880 Wale ni kweli ni muhimu kwa nyie kujua kwa jaribio yako. 956 01:03:42,880 --> 01:03:45,990 >> Tutaweza haraka kwenda juu ya haki ya kuchagua sasa. 957 01:03:45,990 --> 01:03:48,540 Kimsingi, wewe ni kuchagua safu kutoka database. 958 01:03:48,540 --> 01:03:52,400 Hivyo kama una, haki hapa - 959 01:03:52,400 --> 01:03:56,740 tuna mambo haya 2 mbalimbali, na tunataka kuchagua kutoka madarasa meza 960 01:03:56,740 --> 01:04:01,480 ambapo kutisha - ambapo katika safu ya kutisha thamani ni 1. 961 01:04:01,480 --> 01:04:04,460 Hivyo unaweza kuona hapa, tuna mambo haya 2 ya jina darasa, 962 01:04:04,460 --> 01:04:08,490 CS50 na Stat110, na sisi na vitambulisho darasa na kauli mbiu. 963 01:04:08,490 --> 01:04:13,150 Hivyo tunataka kuchagua wote wa habari kwamba. 964 01:04:13,150 --> 01:04:17,480 Basi unaweza kuona haki hapa kwamba ni aina ya kuokota nje ya safu ya kwamba kutisha, 965 01:04:17,480 --> 01:04:25,170 ambapo mambo yote ni 1, na kisha ina darasa ID, jina darasa na kauli mbiu ya kwamba inaweza kuchukua nje. 966 01:04:25,170 --> 01:04:28,100 Jinsi gani hasa gani unaweza kufanya hili katika kanuni? Una kutumia PHP. 967 01:04:28,100 --> 01:04:33,830 Basi hiyo ni aina ya jinsi PHP na SQL ni kuhusiana na kila mmoja. 968 01:04:33,830 --> 01:04:38,130 Sasa tuna kanuni zetu, na sisi ni kwenda kutumia swala yetu kufanya kazi 969 01:04:38,130 --> 01:04:41,370 kama tulivyofanya katika pset 7, na sisi ni kwenda kukimbia SQL query. 970 01:04:41,370 --> 01:04:43,870 Kisha tunakwenda na - 971 01:04:43,870 --> 01:04:46,280 sisi daima kuwa na kuangalia kama mstari wa tatu sawa kama uongo. 972 01:04:46,280 --> 01:04:49,010 Hivyo tena, unataka kuangalia aina na thamani, 973 01:04:49,010 --> 01:04:53,880 na kisha kama hana kazi, basi unataka kuomba msamaha, kama kawaida, kama tulivyofanya katika pset 7. 974 01:04:53,880 --> 01:04:55,870 Vinginevyo, unataka kitanzi kwa njia ya kila kitu na wale Handy 975 01:04:55,870 --> 01:04:59,410 foreach matanzi kwamba sisi tu alikwenda juu. 976 01:04:59,410 --> 01:05:01,280 Sasa kwa kuwa sisi ni wanaoendesha kupitia na tumekuwa alifanya hivyo siku za nyuma, 977 01:05:01,280 --> 01:05:05,080 hebu kudhani kwamba swala zetu kupita, kwa sasa tuna foreach yetu kitanzi. 978 01:05:05,080 --> 01:05:11,050 Na safu ya kwanza ina, hivyo hapa ni mstari, haki hapa; ni boxed. 979 01:05:11,050 --> 01:05:14,010 Ni kwenda na magazeti nje taarifa zote kwamba wamezipata. 980 01:05:14,010 --> 01:05:18,070 Hivyo ni kwenda magazeti nje chini "Wanna Jifunze HTML?" 981 01:05:18,070 --> 01:05:23,370 Basi ni kwenda kwa mstari unaofuata, kwa sababu ni kukamilika kwanza kwa kitanzi, 982 01:05:23,370 --> 01:05:26,510 na hivyo basi ni kwenda magazeti nje line pili ya hayo, 983 01:05:26,510 --> 01:05:32,120 ambayo ni kwenda kuwa STAT110, kupata muda wote. 984 01:05:32,120 --> 01:05:34,290 >> Jambo la mwisho ni juu ya SQL Udhaifu. 985 01:05:34,290 --> 01:05:37,300 Mimi najua David kuguswa juu ya hii kidogo katika hotuba. 986 01:05:37,300 --> 01:05:40,730 Unaweza kusoma hii baadaye. Ni kweli funny. 987 01:05:40,730 --> 01:05:45,320 SQL sindano ni aina ya kitu gumu. 988 01:05:45,320 --> 01:05:49,890 Hebu kusema kwamba wewe tu fimbo vigezo wale haki katika hoja yako, 989 01:05:49,890 --> 01:05:52,290 kama unaweza kuona katika mstari wa kwanza. 990 01:05:52,290 --> 01:05:54,520 Hivyo inaonekana faini, sawa? Wewe ni kuweka tu katika jina la mtumiaji 991 01:05:54,520 --> 01:05:58,820 na password kwa SQL yako swala, na unataka meli hiyo mbali na kupata chochote ni katika meza yako data. 992 01:05:58,820 --> 01:06:01,450 Hiyo inaonekana kuwa rahisi. Kwa hiyo lets kusema mtu unaweka katika, 993 01:06:01,450 --> 01:06:04,910 kwa password, hii AU Nakala haki hapa - 994 01:06:04,910 --> 01:06:06,780 lazima kweli kuwa katika sanduku nyekundu. 995 01:06:06,780 --> 01:06:11,920 Basi hebu kusema kwamba wao kuweka neno la siri kwamba katika - kwamba ni nini wao kuingia. 996 01:06:11,920 --> 01:06:16,520 Basi ni kuweka AU "1" = 1. 997 01:06:16,520 --> 01:06:20,880 Aina ya password silly kuwa. 998 01:06:20,880 --> 01:06:25,070 Sasa hebu tu badala yake katika, na wewe utakuwa kumbuka kuwa katika SQL swala sasa, 999 01:06:25,070 --> 01:06:29,090 ni kutathmini kwa kweli daima, kwa sababu wewe utakuwa kumbuka kuwa 1000 01:06:29,090 --> 01:06:32,240 unaweza SQL swala kuchagua wote wa habari hii 1001 01:06:32,240 --> 01:06:35,420 au unaweza tu na 1 = 1. 1002 01:06:35,420 --> 01:06:41,030 Ili daima kwenda kutathmini kwa kweli. 1003 01:06:41,030 --> 01:06:46,610 Hiyo si kwenda kwa kweli kazi, kwa sababu hiyo ina maana kwamba hacker unaweza kuvunja katika mfumo wako. 1004 01:06:46,610 --> 01:06:49,300 ufumbuzi wa hili ni kwamba una kutumia mfumo wa PDO, 1005 01:06:49,300 --> 01:06:51,360 ambayo ina maana kwamba una kutumia alama ya swali, 1006 01:06:51,360 --> 01:06:53,350 ambayo ni nini guys kutumika katika pset 7, 1007 01:06:53,350 --> 01:06:57,620 wapi utaenda kutumia alama swali katika nafasi ya wapi unataka kuweka kitu, 1008 01:06:57,620 --> 01:07:01,430 na kisha utaenda na comma, na kisha itabidi baada ya hapo, 1009 01:07:01,430 --> 01:07:07,610 baada ya kamba yako, vigezo mbalimbali kwamba unataka kuchukua nafasi ya ndani yako alama ya swali. 1010 01:07:07,610 --> 01:07:10,330 Hivyo itabidi kukumbuka hapa kwamba sasa nina alama hizi nyekundu swali. 1011 01:07:10,330 --> 01:07:15,420 Kisha mimi kuweka vigezo baada ya masharti yangu ili niweze kujua nafasi yao ili baadaye. 1012 01:07:15,420 --> 01:07:18,470 Hiyo kuhakikisha kwamba kama mtu gani kama hii, 1013 01:07:18,470 --> 01:07:24,050 na wana au 1 = 1 hali hiyo, ambayo kuhakikisha, 1014 01:07:24,050 --> 01:07:30,490 mwisho nyuma, kuhakikisha kwamba si kweli kuvunja SQL query. 1015 01:07:30,490 --> 01:07:33,660 Sawa, hivyo kwamba ni pretty kiasi, kimbunga cha PHP na SQL. 1016 01:07:33,660 --> 01:07:41,520 Bora wa bahati nyote, na sasa Ore 1017 01:07:41,520 --> 01:07:44,270 >> [Oreoluwatomiwa Babarinsa] Sawa kila mtu. Muda wa kwenda juu ya baadhi ya JavaScript 1018 01:07:44,270 --> 01:07:48,840 na baadhi ya mambo mengine kwa haraka sana hivyo hatuna kushikilia wewe up usiku wa leo. 1019 01:07:48,840 --> 01:07:56,930 JavaScript. Ndiyo. JavaScript ni aina ya kitu baridi, purportedly. 1020 01:07:56,930 --> 01:07:59,090 mambo kweli unahitaji kujua kuhusu JavaScript, ni aina ya kama 1021 01:07:59,090 --> 01:08:03,810 mteja upande mwisho wa kile mtandao programu yako ni kwenda kufanya. 1022 01:08:03,810 --> 01:08:08,280 Kuna baadhi ya mambo tu hawataki kutunza muda wote juu ya upande server. 1023 01:08:08,280 --> 01:08:12,880 Mwingiliano kidogo zote, akielezea jambo moja, kufanya kitu kutoweka. 1024 01:08:12,880 --> 01:08:15,340 Wewe kweli hawataki kuzungumza na server yako wakati wote kwa ajili hiyo. 1025 01:08:15,340 --> 01:08:18,069 Na baadhi ya kwamba ni hata inawezekana kufanya upande wa server. 1026 01:08:18,069 --> 01:08:21,899 Hii ni kwa nini tunahitaji kitu kama JavaScript. 1027 01:08:21,899 --> 01:08:24,359 Mambo ya baridi kuhusu JavaScript: Ni dynamically typed. 1028 01:08:24,359 --> 01:08:27,149 Nini maana ya hii ni kwamba mpango wako haina haja ya kujua 1029 01:08:27,149 --> 01:08:30,970 nini, hasa, vigezo ni wakati kuandika nje. 1030 01:08:30,970 --> 01:08:34,510 Ni itabidi aina ya takwimu nje kama ni mbio. 1031 01:08:34,510 --> 01:08:37,520 Mambo mengine ambayo ni ya baridi kuhusu hilo: Ni curly lugha brace, 1032 01:08:37,520 --> 01:08:41,359 ambayo ina maana syntax ni sawa na C na PHP. 1033 01:08:41,359 --> 01:08:47,050 Huna kufanya rework sana wakati wewe ni kujifunza JavaScript. 1034 01:08:47,050 --> 01:08:49,180 Hapa tuna kidogo ya JavaScript. 1035 01:08:49,180 --> 01:08:52,560 Kuvutia jambo la haki hapa ni kwamba, kama ukiangalia hiyo, 1036 01:08:52,560 --> 01:08:56,330 sisi kuwa na kidogo ya JavaScript haki pale katika tag kichwa. 1037 01:08:56,330 --> 01:08:59,479 Je, ni gani kimsingi ni tu ni pamoja na JavaScript file. 1038 01:08:59,479 --> 01:09:02,260 Hii ni njia moja unaweza ni pamoja na JavaScript katika mpango wako. 1039 01:09:02,260 --> 01:09:06,910 Kisha pili kidogo ni kweli kuna baadhi ya inline JavaScript, 1040 01:09:06,910 --> 01:09:10,790 sawa na inline style na CSS, 1041 01:09:10,790 --> 01:09:16,180 na wewe ni kuandika tu baadhi ya kanuni haraka sana huko. 1042 01:09:16,180 --> 01:09:18,120 JavaScript ina arrays. 1043 01:09:18,120 --> 01:09:20,850 Tu njia nyingine ya kuweka data kote, muhimu sana. 1044 01:09:20,850 --> 01:09:25,180 Nzuri sana na rahisi syntax. 1045 01:09:25,180 --> 01:09:29,870 Unaweza kutumia mabano mraba ya kupata kila kitu na kuweka kila kitu pamoja. 1046 01:09:29,870 --> 01:09:35,020 Hakuna magumu mno. 1047 01:09:35,020 --> 01:09:38,630 jambo zuri kuhusu JavaScript na lugha scripting kwa ujumla 1048 01:09:38,630 --> 01:09:40,920 ni kwamba huna kuwa na wasiwasi kuhusu ukubwa safu. 1049 01:09:40,920 --> 01:09:43,880 Unaweza kutumia tu array.length na kuweka wimbo wa hivyo, 1050 01:09:43,880 --> 01:09:46,960 na pia safu unaweza kukua au kuogopa kama unahitaji kwa. 1051 01:09:46,960 --> 01:09:49,279 Hivyo huna hata haja ya kuwa na wasiwasi kuhusu aina yoyote ya, 1052 01:09:49,279 --> 01:09:57,050 oh no, mimi haja ya kutenga mambo mengi zaidi, au kitu kama hicho. 1053 01:09:57,050 --> 01:10:00,090 >> Jambo zuri hapa ni kwamba JavaScript ina kitu kinachoitwa vitu. 1054 01:10:00,090 --> 01:10:04,800 Ni kitu-oriented lugha, ili kile ina ni, kimsingi, 1055 01:10:04,800 --> 01:10:10,100 njia kwa ajili yenu kwa data kundi pamoja, kwa kiasi fulani sawa na struct, 1056 01:10:10,100 --> 01:10:17,280 lakini unaweza kupata ni kama struct au katika associative safu syntax. 1057 01:10:17,280 --> 01:10:22,520 Ni pretty rahisi na nini unaweza kufanya na hii ni data kundi pamoja 1058 01:10:22,520 --> 01:10:24,810 kama wewe kuwa na rundo la data hiyo kuhusiana. 1059 01:10:24,810 --> 01:10:26,850 Kwa sababu ni mambo yote unahitaji kuelezea gari, 1060 01:10:26,850 --> 01:10:29,050 huna haja ya kuwa ni katika kundi la maeneo mbalimbali. 1061 01:10:29,050 --> 01:10:35,300 Unaweza tu fimbo yake katika 1 kitu katika JavaScript. 1062 01:10:35,300 --> 01:10:39,090 Kama pengine kujua, iterating ni moja ya kazi hizo tedious. 1063 01:10:39,090 --> 01:10:43,810 Wewe tu kufanya hivyo juu ya tena. Unahitaji kuzungumza na kila kitu katika gari, 1064 01:10:43,810 --> 01:10:47,340 au haja ya kwenda kwa kila kitu katika orodha au kitu kama hicho. 1065 01:10:47,340 --> 01:10:51,770 Hivyo JavaScript ina, sawa na PHP, foreach syntax. 1066 01:10:51,770 --> 01:10:54,590 Katika kesi hiyo, ni kwa ajili ya katika kitanzi. 1067 01:10:54,590 --> 01:10:57,300 Unataka kutumia hii tu juu ya vitu. 1068 01:10:57,300 --> 01:11:01,030 Kuna baadhi ya matatizo kutokea kama wewe kutumia hii juu ya arrays. 1069 01:11:01,030 --> 01:11:03,750 Ni kwa ujumla ni moja ya mambo hayo, ingawa, kwamba ni muhimu sana, 1070 01:11:03,750 --> 01:11:06,590 kwa sababu wewe kuondoa mengi ya uendeshaji 1071 01:11:06,590 --> 01:11:10,270 kwa sababu huna kuvuta juu ya kila kitu katika kitu yako na wewe mwenyewe. 1072 01:11:10,270 --> 01:11:12,300 Huna kukumbuka majina yote muhimu. 1073 01:11:12,300 --> 01:11:18,270 Wewe tu aina ya kupata yao nyuma katika syntax hii. 1074 01:11:18,270 --> 01:11:21,500 Katika hili, na kwa ajili ya, wewe tu wanataka kukumbuka 1075 01:11:21,500 --> 01:11:27,180 kwamba wewe ni kupata nyuma funguo zote, katika njia sawa na hash meza. 1076 01:11:27,180 --> 01:11:30,880 Kama unakumbuka na kwamba, wakati bila kuweka katika kamba unaweza kupata kitu nje 1077 01:11:30,880 --> 01:11:33,840 kwamba ingekuwa kuhusishwa thamani nayo. 1078 01:11:33,840 --> 01:11:36,360 Nini unaweza kufanya na hii ni unaweza kusema, haki ya wote, 1079 01:11:36,360 --> 01:11:42,120 Mimi kuweka katika gari, na mimi kuitwa kuwa ni Ferrari. 1080 01:11:42,120 --> 01:11:45,290 Hivyo unaweza kuweka katika kamba Ferrari tena baadaye, na unaweza kupata kwamba nje. 1081 01:11:45,290 --> 01:11:50,000 Na unaweza kufanya hivyo katika kitanzi, na kwa katika kitanzi. 1082 01:11:50,000 --> 01:11:53,320 Hivyo tu zaidi kuhusu vitu. Jambo muhimu kutoka huu unahitaji kukumbuka 1083 01:11:53,320 --> 01:12:00,340 ni kwamba unaweza kutumia kitu struct kama syntax wakati wowote unataka na hayo, 1084 01:12:00,340 --> 01:12:04,590 isipokuwa kama yako kwenda kutumia kama kamba si halali jina kutofautiana. 1085 01:12:04,590 --> 01:12:07,650 Hivyo kama ukiangalia kwamba kuna, tuna muhimu kwa nafasi. 1086 01:12:07,650 --> 01:12:12,500 Naam, kama ungekuwa na kuweka object.key, nafasi, na, nafasi, nafasi, 1087 01:12:12,500 --> 01:12:15,320 kwamba tu bila ya kufanya maana syntactically. 1088 01:12:15,320 --> 01:12:22,730 Hivyo tu anaweza kufanya hivyo na aina hii ya bracket syntax. 1089 01:12:22,730 --> 01:12:26,520 >> Pia, JavaScript ni sana wigo-busara PHP. 1090 01:12:26,520 --> 01:12:29,050 Una 2 namna ya kushughulikia upeo. 1091 01:12:29,050 --> 01:12:31,960 Huwezi kuwa na var mbele ya kutofautiana, 1092 01:12:31,960 --> 01:12:34,060 na kwamba tu maana hii ni ya kimataifa. 1093 01:12:34,060 --> 01:12:37,050 Unaweza kuona kutoka mahali popote. Hata kama ungekuwa na kuweka hii katika kama taarifa, 1094 01:12:37,050 --> 01:12:42,430 mahali popote katika kanuni yako baada ya hatua hiyo unaweza kuona kwamba kutofautiana. 1095 01:12:42,430 --> 01:12:46,730 Jambo jingine, ingawa, ni kwa var, ni mdogo kwa chochote kazi ulimokuwa 1096 01:12:46,730 --> 01:12:48,870 Kama wewe si katika kazi, vizuri, ni duniani. 1097 01:12:48,870 --> 01:12:53,900 Lakini kama wewe ni katika kazi ni wazi tu ndani ya kazi hiyo. 1098 01:12:53,900 --> 01:12:56,420 Sina mfano, lakini, yeah. Ni moja ya mambo hayo ambapo 1099 01:12:56,420 --> 01:12:59,900 unaweza kusimamia nini vigezo unataka kuwa wa kimataifa, 1100 01:12:59,900 --> 01:13:03,810 nini vigezo unataka kuwa wa ndani, lakini huna haja ya kuwa makini kuhusu hili, 1101 01:13:03,810 --> 01:13:06,890 kwa sababu huna aina ya kudhibiti nafaka faini kufanya katika C, 1102 01:13:06,890 --> 01:13:15,820 ambapo kama kitu fulani ni alitangaza kwa ajili ya kitanzi, ni kwenda kukaa katika kwamba kwa kitanzi. 1103 01:13:15,820 --> 01:13:18,790 kitu sisi kweli huduma kuhusu kutumia JavaScript kwa ni kufanyia kurasa za mtandao, sawa? 1104 01:13:18,790 --> 01:13:21,800 I mean, hiyo ndiyo sababu sisi ni kufanya hivyo. 1105 01:13:21,800 --> 01:13:23,840 >> Kwa kufanya hivyo, sisi kutumia kitu kinachoitwa DOM. 1106 01:13:23,840 --> 01:13:25,850 Document Object Model. 1107 01:13:25,850 --> 01:13:29,430 Kimsingi, kile yake ni inachukua HTML yako yote 1108 01:13:29,430 --> 01:13:34,110 na mifano ni nje ndani ya rundo la vitu kwamba ni kuwekwa ndani ya kila mmoja. 1109 01:13:34,110 --> 01:13:37,080 Unaweza kuanza nje kwa kitu kama hiki. 1110 01:13:37,080 --> 01:13:44,770 Wewe, juu ya haki kwa ajili yangu, rundo la code huko nje kwamba ni aina ya - 1111 01:13:44,770 --> 01:13:46,640 Unaweza kudhani kwamba d kuwa vigumu sana kuendesha, 1112 01:13:46,640 --> 01:13:48,700 kwa sababu wewe d parsing kupitia kundi la Nakala 1113 01:13:48,700 --> 01:13:52,080 na kuwa na kipande mbali mambo. Na nini kama haikuwa kwa usahihi mpangilio? 1114 01:13:52,080 --> 01:13:54,880 Mambo mabaya ingeweza kutokea. 1115 01:13:54,880 --> 01:13:58,140 Hivyo JavaScript inachukua huduma ya hii kwa ajili yenu, na kupata muundo nzuri data, 1116 01:13:58,140 --> 01:14:01,390 kama moja upande wangu wa kushoto, ambapo wewe tu hati, 1117 01:14:01,390 --> 01:14:03,530 na ndani ya kwamba una kitu kinachoitwa HTML, 1118 01:14:03,530 --> 01:14:05,600 na ndani ya kwamba una kichwa na mwili, 1119 01:14:05,600 --> 01:14:08,420 na ndani ya kichwa kwamba una cheo, na kadhalika, na kadhalika, nakadhalika. 1120 01:14:08,420 --> 01:14:11,810 Hii simplifies kufanyia ukurasa mtandao ili tu, 1121 01:14:11,810 --> 01:14:14,190 oh, mimi nataka tu kuzungumza na hii kitu. 1122 01:14:14,190 --> 01:14:21,340 Aina ya njia sawa na ungependa kuzungumza na mwingine kitu umefanya mwenyewe. 1123 01:14:21,340 --> 01:14:25,980 Kama nilivyosema, DOM yote ni katika hati kitu. 1124 01:14:25,980 --> 01:14:29,290 Ama ni tu sehemu moja na kisha unaweza kwenda ndani yake kupata mambo, 1125 01:14:29,290 --> 01:14:33,880 na unaweza kufanya hivyo - hii ni style ya zamani ya kufanya hivyo, huko, 1126 01:14:33,880 --> 01:14:38,130 ambapo unaweza kufanya document.getElementById, na kisha jina, 1127 01:14:38,130 --> 01:14:42,420 na kama pengine unaweza kuwaambia, hii anapata unwieldy sana baada ya muda. 1128 01:14:42,420 --> 01:14:44,480 Hivyo pengine hawataki kufanya hivyo. Hiyo ndiyo sababu tuna 1129 01:14:44,480 --> 01:14:48,760 Jambo la pili tunakwenda majadiliano juu ya baada ya hii. 1130 01:14:48,760 --> 01:14:52,510 Jambo muhimu hapa ni kwamba, kila haki, una mambo haya yote, sawa? 1131 01:14:52,510 --> 01:14:56,400 Hivyo labda naweza kubadili alama ya kitu wakati ukurasa mizigo. 1132 01:14:56,400 --> 01:14:58,380 Basi ni nini? Nini kama user wangu Clicks kitu? 1133 01:14:58,380 --> 01:15:00,540 Mimi nataka kufanya jambo la kuvutia wakati wao bonyeza kitu. 1134 01:15:00,540 --> 01:15:02,600 Hiyo ndiyo sababu tuna matukio. 1135 01:15:02,600 --> 01:15:05,330 Unaweza, kimsingi, kupata hiki yoyote katika DOM yako, 1136 01:15:05,330 --> 01:15:08,560 na kisha kusema, hey. Wakati hii mizigo au mtu Clicks yake, 1137 01:15:08,560 --> 01:15:11,410 au wakati wao panya juu yake, kufanya kitu kwa hayo. 1138 01:15:11,410 --> 01:15:15,330 Na nini ni, una kazi ambayo kushughulikia suala hili kwa ajili yenu. 1139 01:15:15,330 --> 01:15:17,980 Kazi hizi ni tukio la handlers. 1140 01:15:17,980 --> 01:15:20,440 Nini they're - ni njia tu dhana ya kusema, 1141 01:15:20,440 --> 01:15:23,500 kazi hii ni kunyongwa tu wakati tukio hili hufanyika. 1142 01:15:23,500 --> 01:15:28,070 Hivyo Hushughulikia tukio hilo kuwa hutokea. 1143 01:15:28,070 --> 01:15:30,810 Hii ni jinsi gani kuweka tukio handler. 1144 01:15:30,810 --> 01:15:34,750 Mimi na baadhi ya kifungo, na wakati bonyeza yake, unatokea. 1145 01:15:34,750 --> 01:15:40,560 Hivyo si bonyeza button. 1146 01:15:40,560 --> 01:15:42,910 Hii ni njia moja ya inakaribia yake, sawa? 1147 01:15:42,910 --> 01:15:46,430 Una tag kifungo, na juu ya click una kamba kwamba anasema, 1148 01:15:46,430 --> 01:15:50,460 oh, kwa njia, mimi kufanya jambo hili kulipuka kwa ajili yangu. 1149 01:15:50,460 --> 01:15:53,990 Vinginevyo, ni tu kama kifungo mara kwa mara tu kufanywa. 1150 01:15:53,990 --> 01:15:56,550 Unaweza pia kufanya hii kwa njia nyingine, 1151 01:15:56,550 --> 01:16:02,770 kwa grabbing DOM hiki, lakini tutaweza kuokoa kwamba baada ya sisi majadiliano juu ya jQuery. 1152 01:16:02,770 --> 01:16:07,580 >> JQuery: Ni maktaba ambayo ni msalaba-browser. 1153 01:16:07,580 --> 01:16:09,580 Unaweza kutumia katika pretty kiasi chochote. 1154 01:16:09,580 --> 01:16:12,090 Na tu inakupa mengi ya zana kufanya kazi pamoja. 1155 01:16:12,090 --> 01:16:15,850 Kwa sababu JavaScript, wakati nguvu, hana zana zote unahitaji 1156 01:16:15,850 --> 01:16:20,550 nje ya boksi kwa kweli kukabiliana na programu mtandao unaweza kutaka kufanya. 1157 01:16:20,550 --> 01:16:24,650 Hivyo simplifies mambo mengi, anatoa mengi ya kazi 1158 01:16:24,650 --> 01:16:28,760 nje ya boksi kuwa wewe kawaida na kuandika mwenyewe, tena na tena na tena. 1159 01:16:28,760 --> 01:16:31,600 Na tu hufanya mambo rahisi sana. 1160 01:16:31,600 --> 01:16:35,780 Unaweza pia kuwa na selectors, ambayo basi wewe kuchukua wale mambo yote 1161 01:16:35,780 --> 01:16:42,800 kutoka DOM yako mengi zaidi tu, badala ya kuwa na matumizi ya simu hizi kazi kwa muda mrefu sana. 1162 01:16:42,800 --> 01:16:46,630 Zaidi juu ya selectors haya. Wewe, hadi pale una, hebu sema 1163 01:16:46,630 --> 01:16:49,800 Nataka kupata hiki na ID "mwamba." 1164 01:16:49,800 --> 01:16:56,450 Naam, katika jQuery, ni tu $ na kisha kamba ambayo ina chupa, na kisha "mwamba." 1165 01:16:56,450 --> 01:17:01,960 Ni rahisi sana na mengi zaidi kuliko jadi JavaScript njia ya kukabiliana na tatizo hili. 1166 01:17:01,960 --> 01:17:06,120 Na una mambo sawa kwa ajili ya madarasa na aina hiki. 1167 01:17:06,120 --> 01:17:08,140 jQuery ni - moja ya makala ya baridi ni wewe unaweza aina ya kubana 1168 01:17:08,140 --> 01:17:14,350 chini maswali yako juu ya DOM yako sana, kwa haraka sana. 1169 01:17:14,350 --> 01:17:18,980 Sasa tuko nyuma kwa tukio utunzaji, na hii ni jinsi gani ya kushughulikia tukio moja katika jQuery. 1170 01:17:18,980 --> 01:17:23,090 Hivyo nini tunakwenda hapa ni sisi ni kusema, haki ya wote. Nina tag script, sawa? 1171 01:17:23,090 --> 01:17:25,400 Hivyo nina inline hii JavaScript. 1172 01:17:25,400 --> 01:17:27,750 Nini tunakwenda kufanya ni tunakwenda kusema, haki ya wote. 1173 01:17:27,750 --> 01:17:30,860 Wakati hati ni tayari, ambayo ina maana hati imekuwa kubeba, 1174 01:17:30,860 --> 01:17:34,660 sisi ni kwenda katika kazi hiyo, na sisi ni kwenda kusema, haki ya wote, 1175 01:17:34,660 --> 01:17:37,060 kazi hii ni kweli kufanya kitu kingine. 1176 01:17:37,060 --> 01:17:42,320 Ni kimsingi akisema, sawa, mimi kupata hiki na ID "MyID." 1177 01:17:42,320 --> 01:17:47,960 Na kisha kutoa hii kazi handler kwamba executes wakati bonyeza yake. 1178 01:17:47,960 --> 01:17:49,820 Kimsingi nini hii haina ni, inasema, sawa. 1179 01:17:49,820 --> 01:17:52,630 ukurasa ni kubeba, hivyo mimi nina kwenda katika, kupata kipengele hiki, 1180 01:17:52,630 --> 01:17:56,420 kuwapa hii handler tukio hilo, na kimsingi unaweka juu ya ukurasa wako kwa ajili yenu. 1181 01:17:56,420 --> 01:18:00,520 Na hii ni jinsi gani kufikiria juu ya tukio hilo kuchukua. 1182 01:18:00,520 --> 01:18:06,310 Wewe tu nataka kufikiri kuhusu, sawa, wakati kitu hutokea, je, nataka kutokea? 1183 01:18:06,310 --> 01:18:10,520 Hawataki kufikiri juu ya, okay, mimi haja ya kuhakikisha mazungumzo jambo hili kwa jambo hili, 1184 01:18:10,520 --> 01:18:14,660 jambo hili blah blah blah, kwa sababu wewe tu unataka kuzungumza kitu katika suala la matukio. 1185 01:18:14,660 --> 01:18:17,650 Wakati hii itatendeka, hii hutokea. Wakati hii itatendeka, ambayo hufanyika. 1186 01:18:17,650 --> 01:18:20,240 Na kama mambo kusababisha mambo mengine, kwamba ni kubwa. 1187 01:18:20,240 --> 01:18:22,150 Lakini hawataki kujaribu na kufanya ngumu code 1188 01:18:22,150 --> 01:18:24,130 ambapo wewe ni kuchochea mambo mbalimbali wakati huo huo, 1189 01:18:24,130 --> 01:18:28,860 kwa sababu wewe ni tu kwenda kutoa mwenyewe maumivu ya kichwa. 1190 01:18:28,860 --> 01:18:32,340 >> Sawa. Sasa tunaweza kupata ukurasa yetu ya kushughulikia matukio, 1191 01:18:32,340 --> 01:18:35,640 lakini hebu sema user yangu Clicks kifungo. 1192 01:18:35,640 --> 01:18:38,040 Nini kama mimi unataka kutuma ombi kwamba nyuma ya server, 1193 01:18:38,040 --> 01:18:41,100 lakini mimi sitaki upya ukurasa, kwa sababu ya kuwa na upya ukurasa mpya 1194 01:18:41,100 --> 01:18:44,390 kila wakati anapata aina ya nyeti, na kwa nini mimi haja 1195 01:18:44,390 --> 01:18:47,430 kubomoa header tena, na footer tena, 1196 01:18:47,430 --> 01:18:49,670 na mambo yote ya ukurasa tena 1197 01:18:49,670 --> 01:18:53,180 tu mahitaji salamu au wakati? 1198 01:18:53,180 --> 01:18:55,290 Hivyo ndiyo sababu tuna kitu kama Ajax. 1199 01:18:55,290 --> 01:18:59,150 Nini tunaweza kufanya hapa na Ajax ni tunaweza kusema, haki ya wote, 1200 01:18:59,150 --> 01:19:01,290 Nataka kupeleka baadhi data kwa server, 1201 01:19:01,290 --> 01:19:04,010 na mimi nataka kupata majibu nyuma hivyo siwezi update ukurasa wangu, 1202 01:19:04,010 --> 01:19:12,120 au labda tu kufanya baadhi ya hesabu algorithmic kwamba siyo lazima kuonyesha kitu chochote kwa mtumiaji. 1203 01:19:12,120 --> 01:19:15,500 Je, unahitaji kufanya hili? Vizuri, unahitaji URL unahitaji kuzungumza. 1204 01:19:15,500 --> 01:19:18,650 Server yako huwezi magically kusikiliza kutoka popote. 1205 01:19:18,650 --> 01:19:21,960 Unahitaji kuwa na mahali maalum wewe ni kutuma data hii. 1206 01:19:21,960 --> 01:19:26,240 Na wewe pia haja ya baadhi ya data kutuma, au labda ni dataless swala. 1207 01:19:26,240 --> 01:19:31,380 Unataka tu Ping nyuma server na kusema, hey, mimi niko hai, au kitu kama hicho. 1208 01:19:31,380 --> 01:19:35,150 Na kisha unataka kazi ambayo kimsingi Hushughulikia na mafanikio. 1209 01:19:35,150 --> 01:19:38,250 Hebu sema wewe kupata nyuma baadhi ya taarifa kutoka kompyuta yako, 1210 01:19:38,250 --> 01:19:42,960 na unataka kubadili jina la mtumiaji juu ya ukurasa yao. 1211 01:19:42,960 --> 01:19:44,930 Hivyo ungependa kupata habari nyuma, 1212 01:19:44,930 --> 01:19:48,860 na ungependa kushinikiza kwamba screen. 1213 01:19:48,860 --> 01:19:51,170 Nini kinatokea ni kwamba, wakati ukurasa ni tayari, 1214 01:19:51,170 --> 01:19:56,500 kujenga juu ya click kazi kwa ajili ya kifungo hii inayoitwa greeter. 1215 01:19:56,500 --> 01:19:58,810 Nini hii haina kisha ni, wakati kwamba kifungo ni kusukuma, 1216 01:19:58,810 --> 01:20:03,700 kuongea na greetings.php, unaweza kufanya ombi POST, 1217 01:20:03,700 --> 01:20:07,290 na kusema, hey, mimi kupata kitu kutoka ukurasa wako. 1218 01:20:07,290 --> 01:20:09,890 Sisi si kweli haja ya kueleza kwamba, lakini greetings.php, 1219 01:20:09,890 --> 01:20:12,480 hebu sema tu, inatoa nyuma "hello dunia." 1220 01:20:12,480 --> 01:20:15,650 Ili tuweze kupata nyuma hii "hello dunia," na mafanikio ya mpango huu, 1221 01:20:15,650 --> 01:20:20,730 kuchukua kitu kitaenda vibaya, kisha sisi tu kwenda hii mahali lengo 1222 01:20:20,730 --> 01:20:25,720 kwamba sisi maalum na sisi tu fimbo majibu huko. 1223 01:20:25,720 --> 01:20:31,560 Na hii ni njia rahisi sana ya kuanzisha Ajax swala. 1224 01:20:31,560 --> 01:20:34,340 >> Haraka sana, Rob aina ya zilizotajwa hii tayari, 1225 01:20:34,340 --> 01:20:37,170 mambo yanaweza kwenda vibaya, mambo mabaya yanaweza kutokea, 1226 01:20:37,170 --> 01:20:42,660 hivyo unataka familiarize mwenyewe na kanuni hizi HTTP majibu. 1227 01:20:42,660 --> 01:20:46,030 Hawa ni nini ni haki, kama, 200, kila kitu akaenda sawa. 1228 01:20:46,030 --> 01:20:48,670 Kitu kingine, mambo mabaya kilichotokea. 1229 01:20:48,670 --> 01:20:50,790 Ni kwa ujumla jambo unataka kukumbuka. 1230 01:20:50,790 --> 01:20:53,440 Lakini ni nzuri kujua yote haya. 1231 01:20:53,440 --> 01:20:55,970 Na hatimaye, mara moja tumeenda kwa njia zote za kwamba, 1232 01:20:55,970 --> 01:20:58,680 sisi haja ya kuzungumza kwa haraka sana juu ya mpango, 1233 01:20:58,680 --> 01:21:00,620 na kisha tunaweza basi wewe wote kuondoka. 1234 01:21:00,620 --> 01:21:03,410 Design. Mambo unataka kukumbuka. 1235 01:21:03,410 --> 01:21:06,950 Jiulize maswali haya: Nani utakuwa kutumia hii? 1236 01:21:06,950 --> 01:21:09,580 Nini wao kutumia kwa? Je, watumiaji yangu huduma ya juu? 1237 01:21:09,580 --> 01:21:11,750 Je, si wao huduma ya juu? 1238 01:21:11,750 --> 01:21:14,500 Wewe tu hawataki kufanya programu na basi ni tu kukua 1239 01:21:14,500 --> 01:21:18,270 na kuwa hii kubwa, kila mwingi kitu kwamba huwezi hata kumaliza. 1240 01:21:18,270 --> 01:21:23,900 Unataka kuwa na malengo za kipekee na mipango na mambo unataka kushughulikia. 1241 01:21:23,900 --> 01:21:29,000 Kufanya hivyo effortless. Yote hii anasema, kimsingi, 1242 01:21:29,000 --> 01:21:34,950 kufanya hivyo ni rahisi kwa mtumiaji kuitumia, wala kufanya hivyo Blob kubwa ya maandishi kama slide hii ni, kwa kweli. 1243 01:21:34,950 --> 01:21:38,020 Wewe unataka tu ni kuwa kitu ambapo ni rahisi sana kwa mtu kwenda katika 1244 01:21:38,020 --> 01:21:40,800 na kufanya nini wanataka kufanya. 1245 01:21:40,800 --> 01:21:42,920 Hawataki wao kuwa na navigate 5 kurasa 1246 01:21:42,920 --> 01:21:45,460 kupata kazi yako mkuu wa tovuti yako. 1247 01:21:45,460 --> 01:21:49,290 Kama Google alikuwa kurasa 5 kabla unaweza hata kutafuta kitu, 1248 01:21:49,290 --> 01:21:53,080 hakuna mtu matumizi yake. 1249 01:21:53,080 --> 01:21:55,890 Na mwisho, karatasi mfano, vikundi. 1250 01:21:55,890 --> 01:21:59,220 Na design nzuri na mazoea ya kupima. 1251 01:21:59,220 --> 01:22:00,730 Kwa sababu tu unafikiri kazi kwa ajili yenu, 1252 01:22:00,730 --> 01:22:04,860 haina maana mtu mwingine anadhani ni kazi. 1253 01:22:04,860 --> 01:22:14,490 Lakini yeah, hiyo ni yake. 1254 01:22:14,490 --> 01:22:17,490 [CS50.TV]