1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Wiki 9] 2 00:00:02,570 --> 00:00:04,740 [David J. Malan - Chuo Kikuu cha Harvard] 3 00:00:04,740 --> 00:00:07,170 [Hii ni CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 Wote haki. Karibu tena. Hii ni CS50, na hii ni mwanzo wa wiki 9. 5 00:00:12,350 --> 00:00:16,600 Leo sisi lengo hasa juu ya kubuni, tena katika mazingira ya C 6 00:00:16,600 --> 00:00:20,010 lakini katika mazingira ya PHP na kidogo ya SQL na kidogo ya JavaScript, 7 00:00:20,010 --> 00:00:23,730 hasa kuelekea mwisho wa wote wawili pset 7 na pia mradi wako wa mwisho. 8 00:00:23,730 --> 00:00:26,310 Kwa kweli, kama wewe ni katika hatua ya kuwa katika mradi wako wa mwisho 9 00:00:26,310 --> 00:00:30,100 ambapo labda kama wa saa moja au zaidi iliyopita wewe angalau kuanza kutoa baadhi ya mawazo 10 00:00:30,100 --> 00:00:33,730 kwa mradi wako wa mwisho na unachokifikiria Ningependa kushirikiana na wanafunzi 1 au 2, 11 00:00:33,730 --> 00:00:36,150 kama wewe ni kuwa na matatizo ya kuunganisha na alisema wanafunzi, 12 00:00:36,150 --> 00:00:40,570 jisikie huru kujaza fomu katika cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 Ni tu anauliza wewe ni nani, ni aina gani ya mradi wewe ni kufikiri kuhusu, 14 00:00:42,880 --> 00:00:44,870 ambapo kuishi tu kwa sababu vifaa. 15 00:00:44,870 --> 00:00:49,510 Na kisha kama unataka kuweka jicho kwenye wiki ijayo au hivyo URL spreadsheet huko, 16 00:00:49,510 --> 00:00:53,520 basi unaweza kuona toleo kusoma tu ya doc Google 17 00:00:53,520 --> 00:00:56,010 ambayo sisi ni kukusanya habari. 18 00:00:56,010 --> 00:00:58,930 Hivyo kama unataka kufanya kazi na mtu, kwa njia zote jisikie huru kufikia nje kwa watu 19 00:00:58,930 --> 00:01:00,480 kupitia utaratibu huo. 20 00:01:00,480 --> 00:01:02,690 Lakini wengi wa folks kufanya kazi solo. Hiyo kabisa faini. 21 00:01:02,690 --> 00:01:06,120 Hivyo si kujisikia kwamba hii ni kwa njia yoyote lazima. 22 00:01:06,120 --> 00:01:09,680 Siku ya Ijumaa ilikuwa mimi tu na wachache wa timu katika hapa, 23 00:01:09,680 --> 00:01:11,100 tupu ukumbi kwa sehemu kubwa. 24 00:01:11,100 --> 00:01:14,600 Kuna walikuwa 3 watalii wamekaa huko, ili kwamba ilikuwa kidogo Awkward. 25 00:01:14,600 --> 00:01:18,970 Nini sisi aliyesema kuhusu alikuwa database na kuongelea pset 7 kidogo. 26 00:01:18,970 --> 00:01:22,200 Na kama hakuwa na kutokea kwa kukamata kwamba kwenye video bado tu, kwamba ni faini. 27 00:01:22,200 --> 00:01:26,770 Nitajaribu kufafanua masharti yoyote kwamba sisi vinginevyo kuchukua kwa nafasi 28 00:01:26,770 --> 00:01:28,840 msingi hotuba ya Ijumaa. 29 00:01:28,840 --> 00:01:32,550 >> Lakini leo sisi ni kwenda kujaribu kupata kwa uhakika 30 00:01:32,550 --> 00:01:34,990 ya si tu kuwa na uwezo wa kufanya kitu kama pset 7 31 00:01:34,990 --> 00:01:37,360 lakini kwa kweli kuelewa nini kinaendelea chini ya Hood, 32 00:01:37,360 --> 00:01:41,910 hasa baadhi ya matumizi ya kwamba sisi kuweka katika faili functions.php 33 00:01:41,910 --> 00:01:45,780 kufanya maisha yako kidogo rahisi lakini ili hatimaye kuelewa 34 00:01:45,780 --> 00:01:48,760 hivyo kwamba wakati magurudumu mafunzo kufika mbali katika wiki chache bado unaweza kuishi 35 00:01:48,760 --> 00:01:53,750 katika ulimwengu wa kweli na kufanya mambo haya bila mfumo CS50 chini wewe. 36 00:01:53,750 --> 00:01:57,500 Hii _SESSION $, kwa wale ambao ni ukoo 37 00:01:57,500 --> 00:02:01,960 au ambao tayari hawakupata video juu ya Ijumaa, nini KIPINDI tufanye 38 00:02:01,960 --> 00:02:04,330 katika PHP makao maombi ya mtandao? 39 00:02:04,330 --> 00:02:09,650 Hii ni variable superglobal, ambayo ina maana ni sawa katika roho kwa GET na POST 40 00:02:09,650 --> 00:02:13,970 na wengine wachache, lakini ni kitu gani hii muhimu kwa ajili ya? 41 00:02:13,970 --> 00:02:18,320 >> Nini ni KIPINDI kutumika kwa? Yeah. [Mwanafunzi] magogo in 42 00:02:18,320 --> 00:02:21,040 Samahani? [Mwanafunzi] magogo in magogo in Kweli. 43 00:02:21,040 --> 00:02:25,100 Katika pset 7 sisi ni kutumia hii superglobal KIPINDI kuwezesha magogo in 44 00:02:25,100 --> 00:02:28,600 Na nini kizuri kuhusu superglobal hii ni kwamba ni safu associative. 45 00:02:28,600 --> 00:02:33,190 safu associative, wanakumbuka, ni tu safu lakini ambao fahirisi tena kuwa idadi 46 00:02:33,190 --> 00:02:37,670 kama 012. Wanaweza kuwa idadi au wanaweza kuwa hata masharti. 47 00:02:37,670 --> 00:02:44,890 Na hivyo kama wewe ve dived katika pset 7 bado, unaweza kukumbuka kuwa sisi ni hifadhi muhimu kuitwa ID 48 00:02:44,890 --> 00:02:50,330 ndani ya safu hii associative ambao thamani ni kitu kama 123 - 49 00:02:50,330 --> 00:02:53,780 chochote kwa sasa watumiaji katika ID mtumiaji ni. 50 00:02:53,780 --> 00:02:59,470 motisha kwa ajili ya hii ni kwamba hata baada ya mtumiaji ametembelea kwenye localhost 51 00:02:59,470 --> 00:03:02,720 au tovuti yangu kwa ujumla zaidi na kisha wameweza umeingia, 52 00:03:02,720 --> 00:03:07,320 hata kama hawana bonyeza kiungo au kurudi tovuti yangu kwa dakika 5 53 00:03:07,320 --> 00:03:10,730 au hata saa moja au hata siku lakini wao kuondoka browser yao dirisha wazi, 54 00:03:10,730 --> 00:03:14,370 kupitia superglobal hii naweza kukumbuka kuwa wao ni watumiaji in 55 00:03:14,370 --> 00:03:21,140 >> Kwa maneno mengine, inaruhusu yangu ya kuhifadhi kidogo ya muda mrefu kitu chochote nataka kuhusu mtumiaji. 56 00:03:21,140 --> 00:03:24,390 Na unaweza kufikiria ni kweli kama mwili wa gari ununuzi. 57 00:03:24,390 --> 00:03:27,740 Maeneo kama Amazon wazi basi wewe kuweka mambo katika gari ununuzi, 58 00:03:27,740 --> 00:03:32,230 lakini HTTP, itifaki kwamba mamlaka ya mtandao, ni stateless 59 00:03:32,230 --> 00:03:34,230 kwa maana kwamba wakati wewe kutembelea tovuti, 60 00:03:34,230 --> 00:03:37,290 kwa sehemu kubwa huna baadhi ya mara kwa mara ya mtandao 61 00:03:37,290 --> 00:03:39,270 kati ya browser yako na server. 62 00:03:39,270 --> 00:03:42,190 Haraka kama wewe ve kupakuliwa HTML na JPEGs na GIFs na wote, 63 00:03:42,190 --> 00:03:48,200 uhusiano inakwenda mbali na wewe tu kuwa na nakala ya HTML na whatnot kutoka kwa seva. 64 00:03:48,200 --> 00:03:53,000 Lakini kama seva anataka kukumbuka kitu kuhusu wewe, 65 00:03:53,000 --> 00:03:57,580 ni mzigo kwenye server kwa kweli kurekodi kwamba habari. 66 00:03:57,580 --> 00:04:00,130 Na hivyo programu ambao wana mamlaka juu ya server 67 00:04:00,130 --> 00:04:04,400 unaweza kuweka zaidi kitu chochote unataka ndani ya safu hii superglobal associative 68 00:04:04,400 --> 00:04:06,850 na itakuwa kuna wakati mwingine mtumiaji anakuja nyuma, 69 00:04:06,850 --> 00:04:12,070 kama ni dakika au hata siku chache baadaye, isipokuwa wao karibu browser yao dirisha, 70 00:04:12,070 --> 00:04:14,360 ambapo kiwango KIPINDI kutoweka. 71 00:04:14,360 --> 00:04:17,779 Hivyo ni ephemeral kuhifadhi, ni yasiyo ya kudumu, na ni maana ya kwenda mbali 72 00:04:17,779 --> 00:04:22,360 haraka kama mtumiaji atakapokamilisha browser yao - sio tu kwamba tab, mara nyingi browser nzima, 73 00:04:22,360 --> 00:04:24,930 hivyo kwa ufanisi magogo nje ya mtumiaji. 74 00:04:24,930 --> 00:04:28,000 Hivyo jinsi ni kitu kweli hii kutekelezwa? 75 00:04:28,000 --> 00:04:31,360 Hebu tuangalie kwa haraka katika mfano rahisi sisi inaonekana katika siku ya Ijumaa. 76 00:04:31,360 --> 00:04:33,340 Kwa wale unfamiliar, ilikuwa rahisi kama hii. 77 00:04:33,340 --> 00:04:35,910 Hii ni ukurasa wa mtandao ambao lengo pekee katika maisha ni kuwaambia mimi 78 00:04:35,910 --> 00:04:38,000 mara ngapi nimetembelea ukurasa huu. 79 00:04:38,000 --> 00:04:41,670 Hii ni mara ya kwanza hapa Jumatatu kwamba mimi alitembelea yake, hivyo anasema 0 nyakati. 80 00:04:41,670 --> 00:04:46,940 >> Lakini kama mimi kuanza reloading ukurasa huu, inasema 1 wakati, 2, 3, 4, 5, 81 00:04:46,940 --> 00:04:49,800 na hii hatimaye kuweka tu juu ya kuhesabu juu, juu, juu, juu, juu 82 00:04:49,800 --> 00:04:53,130 kwa muda kila mimi kwa kweli bofya Reload juu yake. 83 00:04:53,130 --> 00:04:58,830 Hivyo jinsi ni kufanya kazi hii? Hebu kwenda ndani ya faili hili aitwaye counter.php. 84 00:04:58,830 --> 00:05:02,490 sehemu ya juu ya yote ni maoni bluu, lakini sehemu ya kuvutia ni hapa. 85 00:05:02,490 --> 00:05:06,670 On line 13 sisi wito session_start kazi, 86 00:05:06,670 --> 00:05:09,600 na kwamba ni literally wote unahitaji kufanya kama unataka kuwa na uwezo 87 00:05:09,600 --> 00:05:13,610 hii superglobal maalum iitwayo $ _SESSION. 88 00:05:13,610 --> 00:05:17,430 Kwamba inafanya wote iwezekanavyo, na tutaweza kuona katika wakati gani kwamba wote iwezekanavyo. 89 00:05:17,430 --> 00:05:20,350 Katika mstari 16 ilani nini mimi kufanya. 90 00:05:20,350 --> 00:05:25,960 Kama ufunguo, iitwayo counter - kwa maneno mengine, thamani index - "counter" 91 00:05:25,960 --> 00:05:32,310 lipo ndani ya safu hii inaitwa KIPINDI, basi je, Mimi kufanya na ni katika mstari chini? 92 00:05:32,310 --> 00:05:36,650 Nini ni mstari 18 kufanya? 93 00:05:36,650 --> 00:05:40,360 >> [Inaudible mwanafunzi majibu] Nini hiyo? [Mwanafunzi] Kuhifadhi thamani. Nzuri. 94 00:05:40,360 --> 00:05:45,800 Ni hifadhi thamani hiyo katika KIPINDI sasa hivi katika variable mpya ndani ya muda mfupi, 95 00:05:45,800 --> 00:05:48,250 $ Counter katika lowercase wote. 96 00:05:48,250 --> 00:05:50,770 Ona kwamba PHP tayari kuwa kidogo wavivu hapa. 97 00:05:50,770 --> 00:05:55,550 Notice hatuna yoyote kutaja int au kuelea au kamba au kitu kama hicho 98 00:05:55,550 --> 00:06:00,480 kwa sababu PHP ni weakly typed, ambapo huna kutaja aina ya kutofautiana, 99 00:06:00,480 --> 00:06:03,310 na katika kesi hii hapa nimepata hata alitangaza kuwa bado. 100 00:06:03,310 --> 00:06:08,980 Mimi kutangaza kuwa ndani ya braces haya curly na tofauti na C, hii ni kweli sawa. 101 00:06:08,980 --> 00:06:13,800 Hakuna jambo jinsi undani nested tamko variable ni katika PHP - 102 00:06:13,800 --> 00:06:16,650 ndani ya curly Brace, ndani ya curly brace na kama - 103 00:06:16,650 --> 00:06:21,230 itakuwa wakati huo katika wakati zipo kwa ajili ya salio wa mpango, 104 00:06:21,230 --> 00:06:22,680 kwa bora au mbaya. 105 00:06:22,680 --> 00:06:26,930 Hivyo mara moja inakuwa ya kimataifa haraka kama unaweza kufafanua kama sisi ni kufanya hapa. 106 00:06:26,930 --> 00:06:31,620 >> Vinginevyo, kama si kupata kwamba kuna kitu katika superglobal KIPINDI, 107 00:06:31,620 --> 00:06:34,680 Mimi nina inaonekana initializing hii counter variable 0, 108 00:06:34,680 --> 00:06:37,580 hivyo tu kuchukua user haijawahi hapa kabla. 109 00:06:37,580 --> 00:06:40,030 Na kisha hii bila shaka ni incrementing counter jinsi gani? 110 00:06:40,030 --> 00:06:44,480 Mimi nina uppdatering thamani hiyo ndani ya safu hii associative 111 00:06:44,480 --> 00:06:49,530 kwa kuweka ni sawa kwa kila counter sasa ni + 1. 112 00:06:49,530 --> 00:06:53,520 Kama mimi kitabu chini hapa kwa HTML ya ukurasa, ni kweli pretty rahisi. 113 00:06:53,520 --> 00:06:58,920 Mimi wote katika mwili wa ukurasa huu, "Wewe alitembelea tovuti hii ili-na-hivyo mara." 114 00:06:58,920 --> 00:07:00,350 Na hii ni kujenga PHP. 115 00:07:00,350 --> 00:07:06,080 Kama wewe kufanya <=, hii ni sawa na kile ufanisi kazi? 116 00:07:07,920 --> 00:07:12,600 Ni kweli sawa na kitu kama printf, ambayo tumeona mara nyingi katika C, 117 00:07:12,600 --> 00:07:15,940 ingawa kama unaweza kujua tayari kutoka spec katika pset 7, 118 00:07:15,940 --> 00:07:20,160 magazeti pia ni kazi ambayo tu Prints kitu nje, haina kweli matumizi ya namba format, 119 00:07:20,160 --> 00:07:23,270 na unaweza kweli kusema echo pia. 120 00:07:23,270 --> 00:07:27,460 Wao ni wote milele hivyo tofauti kidogo ingawa athari wavu ni hatimaye sawa. 121 00:07:27,460 --> 00:07:31,270 Hivyo hii ni sawa na matumizi ya ishara ni aina ya njia ya kifahari ya kufanya hivyo 122 00:07:31,270 --> 00:07:34,910 zaidi succinctly kuliko wewe ili vinginevyo kuwa na uwezo. 123 00:07:34,910 --> 00:07:38,370 Basi hiyo ni tovuti hii yote gani. Ni Prints nje thamani ya counter. 124 00:07:38,370 --> 00:07:40,550 Je, huu wote kweli yanatokea? 125 00:07:40,550 --> 00:07:43,250 Unaweza kukumbuka wiki au hivyo iliyopita sisi kuanza kuangalia chini ya Hood 126 00:07:43,250 --> 00:07:47,910 jinsi ya ukurasa wa mtandao kazi kwa kutumia tab Inspekta. 127 00:07:47,910 --> 00:07:51,900 >> Chrome ana hili wote katika toleo la Mac, toleo Windows, na hata toleo Linux, 128 00:07:51,900 --> 00:07:59,510 na Firefox na IE na taratibu sawa ambapo una hii debugger kujengwa katika 129 00:07:59,510 --> 00:08:01,400 ndani ya browser. 130 00:08:01,400 --> 00:08:03,040 Hebu tuangalie yafuatayo. 131 00:08:03,040 --> 00:08:06,960 Sisi tumepewa rundo zima la tabo hapa, na kukumbuka kuwa moja leftmost ni Elements, 132 00:08:06,960 --> 00:08:10,700 na hakuna jambo jinsi godawful HTML na javascript ni katika ukurasa, 133 00:08:10,700 --> 00:08:15,710 kukumbuka kwamba kwa tab Elements unaweza kweli navigate HTML hierarchically 134 00:08:15,710 --> 00:08:17,050 na nzuri na neatly. 135 00:08:17,050 --> 00:08:19,370 Hivyo kama wewe ni kujaribu kujifunza kutoka tovuti kama Google au Facebook 136 00:08:19,370 --> 00:08:22,370 au kweli tovuti yoyote, kutambua kwamba wewe pengine bora mbali 137 00:08:22,370 --> 00:08:26,360 kuangalia chanzo code njia hii kinyume na viewing chanzo mbichi, 138 00:08:26,360 --> 00:08:29,580 ambayo inaweza kuwa fujo, kama tumeona hasa kwenye tovuti ya Google. 139 00:08:29,580 --> 00:08:32,220 Hivyo kama mimi badala bonyeza tab Mtandao hapa, 140 00:08:32,220 --> 00:08:34,830 hebu angalia nini kinaendelea wakati mimi kutembelea ukurasa huu. 141 00:08:34,830 --> 00:08:38,669 Kwanza napenda wazi cache yangu. 142 00:08:38,669 --> 00:08:43,570 Mimi nina kwenda katika vipimo katika Chrome na kisha kwenda Historia 143 00:08:43,570 --> 00:08:46,420 na kisha Wazi data zote kuvinjari. 144 00:08:46,420 --> 00:08:48,170 Unaweza kutumika kwa kufanya hivyo kwa madhumuni mengine, [kicheko] 145 00:08:48,170 --> 00:08:51,990 lakini linapokuja tovuti zinazoendelea, ni kweli muhimu - 146 00:08:51,990 --> 00:08:55,980 kama wewe ni laughing unajua. [Kicheko] 147 00:08:55,980 --> 00:08:59,310 Ni kweli kweli muhimu wakati wa kuandaa tovuti kwa sababu ukweli ni 148 00:08:59,310 --> 00:09:04,100 mambo kama biskuti na mambo kama files cached HTML, cached JavaScript files 149 00:09:04,100 --> 00:09:06,390 unaweza kweli kuwa maumivu ya kichwa kubwa, kwa sababu kama kwa sababu yoyote 150 00:09:06,390 --> 00:09:11,500 browser anaamua cache baadhi faili na bado wewe Umefanya mabadiliko kwenye faili kwamba kwenye server 151 00:09:11,500 --> 00:09:14,670 lakini kivinjari si kweli akagundua kwamba faili imebadilika 152 00:09:14,670 --> 00:09:19,060 na kwa hiyo si kweli re-download hivyo hata wakati bonyeza kifungo Reload, 153 00:09:19,060 --> 00:09:23,210 moja ya njia surefire tu kuhakikisha kosa si kwa code yako, 154 00:09:23,210 --> 00:09:26,480 ni pamoja na tabia ya kivinjari, ni kwenda katika hapa katika browser yako 155 00:09:26,480 --> 00:09:29,950 na tu kufuta historia nzima hivyo kwamba kuna mkanganyiko hakuna. 156 00:09:29,950 --> 00:09:33,210 >> Na kisha kama kweli unataka kuwa Paranoid, kuacha browser, restart yake, 157 00:09:33,210 --> 00:09:35,660 na kisha kuhakikisha wote ni kufanya kazi kama ilivyotarajiwa. 158 00:09:35,660 --> 00:09:38,820 Hivyo katika muda mfupi, clearing cache ni nzuri wakati wa kufanya maendeleo. 159 00:09:38,820 --> 00:09:40,690 Hivyo hapa tuna tab Network. 160 00:09:40,690 --> 00:09:46,020 Mimi hapo awali alikuwa alitembelea tovuti mara 9, lakini napenda kwenda mbele sasa na bonyeza Reload. 161 00:09:46,020 --> 00:09:47,500 Na mimi nina nyuma chini ya 0. 162 00:09:47,500 --> 00:09:52,100 Hebu kweli kuona jinsi gani ni kwamba superglobal hii KIPINDI unatekelezwa. 163 00:09:52,100 --> 00:09:55,990 Mimi naenda bonyeza juu ya ombi 1 HTTP lililofanyizwa, 164 00:09:55,990 --> 00:09:58,810 na dirisha hili debugging lets mimi kuangalia ndani ya kwamba. 165 00:09:58,810 --> 00:10:01,970 Hapa naona tu majibu kutoka server, ambayo si ya kuvutia. 166 00:10:01,970 --> 00:10:04,030 Nimeona hii katika idadi yoyote ya njia. 167 00:10:04,030 --> 00:10:06,350 Lakini nini kitaalam kuvutia ni headers. 168 00:10:06,350 --> 00:10:11,770 Kama mimi kitabu chini hapa na kuzingatia ombi headers na bonyeza mtazamo chanzo, 169 00:10:11,770 --> 00:10:14,400 nini mimi kwenda kuona ni halisi ombi HTTP 170 00:10:14,400 --> 00:10:17,250 kwamba tu akaenda kutoka browser yangu kwa server, 171 00:10:17,250 --> 00:10:21,400 GET kuwa neno operative na kisha / counter.php kuwa jina la faili, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 tu kuwa toleo la HTTP kwamba browser yangu ni kutumia. 173 00:10:25,670 --> 00:10:31,070 Hii line hapa ni ukumbusho kidogo kutoka browser kwa server nini jina la seva ni 174 00:10:31,070 --> 00:10:33,020 kwamba anataka kuzungumza. 175 00:10:33,020 --> 00:10:38,200 Na kisha wengine wa hii wakati mwingine ni ya kuvutia lakini si muhimu hivi sasa. 176 00:10:38,200 --> 00:10:40,090 >> Hii ni aina tu ya udadisi. 177 00:10:40,090 --> 00:10:43,530 Cryptic ingawa kamba hii ni, wakati wowote browser yako kutembelea tovuti 178 00:10:43,530 --> 00:10:47,110 ni taarifa server nini unatumia browser 179 00:10:47,110 --> 00:10:50,040 na nini mfumo wa uendeshaji unatumia na nini toleo yake. 180 00:10:50,040 --> 00:10:52,650 Hivyo kama wewe ve umewahi kujiuliza tovuti jinsi kama CNN na whatnot 181 00:10:52,650 --> 00:10:56,860 kujua nini asilimia ni ya watumiaji wa Mac kwenye mtandao watumiaji PC, 182 00:10:56,860 --> 00:11:00,820 IE watumiaji, watumiaji Chrome na kama, ni kwa sababu yote ya browsers wetu 183 00:11:00,820 --> 00:11:04,300 ni kuwaambia kila tovuti moja huko nje nini sisi ni. 184 00:11:04,300 --> 00:11:07,410 Haina lazima vyenye binafsi zinazotambulika, 185 00:11:07,410 --> 00:11:13,060 lakini haina kuwaambia server nini anwani yako ya IP ni nini na kivinjari na OS wewe ni kutumia. 186 00:11:13,060 --> 00:11:14,720 Hivyo hiyo ambapo habari hii ni. 187 00:11:14,720 --> 00:11:19,960 Lakini nini zaidi ya kuvutia sasa linapokuja vikao hivi ni header majibu. 188 00:11:19,960 --> 00:11:22,530 Hebu bofya mtazamo chanzo ijayo kwa majibu. 189 00:11:22,530 --> 00:11:24,590 Nini kuvutia hapa ni mambo machache. 190 00:11:24,590 --> 00:11:27,580 1, tulipata nyuma code ya hadhi ya 200. 191 00:11:27,580 --> 00:11:29,840 Sisi kamwe kuona hii code sasa kwa sababu inamaanisha yote ni sawa. 192 00:11:29,840 --> 00:11:32,920 Ina maana halisi sawa kwa kulinganisha na kitu kingine. 193 00:11:32,920 --> 00:11:36,380 Nini idadi sisi wakati mwingine kuona kwamba ni vibaya? [Mwanafunzi] 404. 194 00:11:36,380 --> 00:11:39,860 404, saizi ya hakuonekana, 403 unaweza kuwa kikwazo juu tayari, 195 00:11:39,860 --> 00:11:43,660 ambayo ni haramu, ambayo ina maana alisahau chmod kitu, uwezekano mkubwa. 196 00:11:43,660 --> 00:11:45,190 Na kuna rundo la wengine. 197 00:11:45,190 --> 00:11:47,760 >> Chini hapa, hii ni mambo kidogo. 198 00:11:47,760 --> 00:11:52,340 Mimi kwa kweli tu aliandika faili hii dakika chache zilizopita na pasting ndani gedit. 199 00:11:52,340 --> 00:11:57,100 Kwa nini ukurasa huu inaisha mwaka 1981 kabla ya hapo kweli ilikuwa Mtandao? 200 00:11:58,010 --> 00:12:00,730 Nini kinaendelea huko? 201 00:12:00,730 --> 00:12:04,390 >> [Inaudible mwanafunzi majibu] stempu muda. Lakini kwa nini? 202 00:12:06,110 --> 00:12:09,120 Ni kiasi fulani holela, lakini ni kweli muhimu. 203 00:12:09,120 --> 00:12:15,500 Nini hii ni kusema kwa browser yangu ni hii faili PHP ve tu aliomba tayari kimekwisha. 204 00:12:15,500 --> 00:12:18,580 Kwa kweli, ni muda wake wa miaka 30 iliyopita. 205 00:12:18,580 --> 00:12:20,260 Lakini ni nini kwamba kweli maana? 206 00:12:20,260 --> 00:12:22,500 Ni tu ina maana wakati mwingine mtumiaji ziara ukurasa huu, 207 00:12:22,500 --> 00:12:25,540 ama kwa reloading au kuandika URL katika bar anwani, 208 00:12:25,540 --> 00:12:28,010 kuhakikisha ya kwenda na kuchota nakala mpya wa hayo. 209 00:12:28,010 --> 00:12:30,840 Hii ni aina ya mfano wa busting cache, 210 00:12:30,840 --> 00:12:33,790 neno kijinga kwamba njia tu kujaribu tamaa browsers 211 00:12:33,790 --> 00:12:37,260 kutoka HTML kweli Caching hiyo wametumwa na seva 212 00:12:37,260 --> 00:12:41,490 hivyo kwamba huna ajali hit Reload na kisha kuona toleo moja ya faili. 213 00:12:41,490 --> 00:12:43,730 Wewe kweli unataka server kutuma nakala mpya. 214 00:12:43,730 --> 00:12:47,440 Hivyo ukweli kwamba ni 1981 tu ina maana kwamba kwamba ni nini appliance ni kuchagua 215 00:12:47,440 --> 00:12:50,280 kama tarehe holela katika kipindi. 216 00:12:50,280 --> 00:12:53,380 Lakini halisi line Juicy sasa ni hii moja. 217 00:12:53,380 --> 00:12:57,550 Hata kabla ya 50 wewe pengine vaguely familiar na biskuti. 218 00:12:57,550 --> 00:13:01,820 Kama ya hivi sasa, hasa miongoni mwa walio chini ya starehe au katika kati, 219 00:13:01,820 --> 00:13:04,120 kile ni kuki katika akili yako sasa hivi 220 00:13:04,120 --> 00:13:06,980 ingawa sisi ni juu ya kufanya uelewa wako zaidi ya kiufundi? 221 00:13:08,150 --> 00:13:10,070 Nini kuki? Yeah. 222 00:13:10,070 --> 00:13:13,890 [Mwanafunzi] Taarifa kuhusu user, kama kama wameweza imeandikwa mtumiaji yao jina au kitu. 223 00:13:13,890 --> 00:13:17,370 >> Nzuri. Ni taarifa kuhusu user, kama wameweza typed katika jina la mtumiaji zao tayari. 224 00:13:17,370 --> 00:13:21,190 Cookies ni njia ambapo servrar wanaweza kukumbuka kitu kuhusu mtumiaji. 225 00:13:21,190 --> 00:13:25,810 Na nini kuki kweli ni ni faili maandishi au baadhi mlolongo ya ka 226 00:13:25,810 --> 00:13:28,340 hiyo kupandwa na server ndani ya browser yako, 227 00:13:28,340 --> 00:13:31,960 na ndani ya faili kwamba au kati ya wale ka ni baadhi ya aina ya kitambulisho. 228 00:13:31,960 --> 00:13:35,640 Labda ni literally user name yako, lakini mara nyingi zaidi ni kitu zaidi cryptic-kuangalia 229 00:13:35,640 --> 00:13:43,700 kama hii kitu hapa - bo8dal3ct na kadhalika - kweli hii kubwa alphanumeric string 230 00:13:43,700 --> 00:13:47,050 hiyo ni kweli tu maana ya kuwa kitambulisho kipekee kwa ajili yenu. 231 00:13:47,050 --> 00:13:49,790 Au unaweza kufikiria kama aina ya stempu virtual mkono. 232 00:13:49,790 --> 00:13:53,020 Kama wewe kwenda baadhi ya klabu au Hifadhi ya pumbao, na kukumbuka kwamba ve kweli kulipwa 233 00:13:53,020 --> 00:13:55,850 na wamekwenda katika, wao kuweka nyekundu kidogo sticker ya mkono wako wa aina fulani, 234 00:13:55,850 --> 00:13:59,270 na kwamba kuwakumbusha watu katika counter kwamba ve tayari kulipwa 235 00:13:59,270 --> 00:14:01,340 na unaweza kuja na kwenda kama wewe tafadhali. 236 00:14:01,340 --> 00:14:04,250 Cookies ni kidogo sawa katika roho ya kwamba. 237 00:14:04,250 --> 00:14:08,070 mara ya kwanza mimi alitembelea tovuti hii, kama mimi tu alivyofanya baada ya clearing cache yangu, 238 00:14:08,070 --> 00:14:11,620 server mtandao, appliance katika kesi hii, kuweka muhuri juu ya mkono wangu 239 00:14:11,620 --> 00:14:15,030 ambaye jina lake ni PHPSESSID, kikao ID, 240 00:14:15,030 --> 00:14:18,260 ambao thamani ni kweli hii kwa muda mrefu alphanumeric kamba. 241 00:14:18,260 --> 00:14:22,470 >> Basi hiyo ni sasa aina ya emblazoned upande wangu hivyo kwamba wakati mwingine mimi hit Reload 242 00:14:22,470 --> 00:14:25,230 au manually kutembelea URL katika browser, 243 00:14:25,230 --> 00:14:29,230 browser yangu kwa ufafanuzi wa HTTP kwenda sasa muhuri mkono 244 00:14:29,230 --> 00:14:31,940 tena na tena na tena. 245 00:14:31,940 --> 00:14:34,550 Hivyo hata kama server haina lazima kujua mimi ni nani, 246 00:14:34,550 --> 00:14:39,610 wao angalau kujua kwamba mimi nina user hiyo au angalau, zaidi hasa, kivinjari kimoja. 247 00:14:39,610 --> 00:14:45,660 Na hivyo hii ni hatimaye jinsi superglobal KIPINDI ni kutekelezwa. 248 00:14:45,660 --> 00:14:51,200 server hana wazo wewe ni nani wakati wewe kupitia upya tovuti kwa ajili ya pili au ya tatu 249 00:14:51,200 --> 00:14:53,410 isipokuwa wewe sasa hii muhuri mkono. 250 00:14:53,410 --> 00:14:55,530 Na haraka kama wewe sasa kuwa muhuri wa mkono, 251 00:14:55,530 --> 00:14:59,370 server mtandao kimsingi huenda katika database kidogo ya yake mwenyewe 252 00:14:59,370 --> 00:15:06,040 na hundi, sawa, Nimeona muhuri mkono wa bo8dal3ct mtumiaji na kadhalika. 253 00:15:06,040 --> 00:15:09,850 Hebu kuona nini habari programu ina kuhifadhiwa 254 00:15:09,850 --> 00:15:12,380 ndani ya superglobal kuhusu mtumiaji huyu, 255 00:15:12,380 --> 00:15:17,000 na basi mimi kuhakikisha kwamba data kwamba ni tena ndani ya KIPINDI superglobal 256 00:15:17,000 --> 00:15:19,830 hivyo kwamba programu unaweza re-kupata data kwamba 257 00:15:19,830 --> 00:15:23,360 hata kama ni kuweka baadhi ya dakika au saa iliyopita. 258 00:15:23,360 --> 00:15:26,150 Hivyo katika maneno mengine, biskuti, ambayo got rap mbaya kwa baadhi ya wakati 259 00:15:26,150 --> 00:15:29,990 kwa sababu ya mashaka katika browsers na wanaweza kweli kukiuka faragha yetu na yote haya, 260 00:15:29,990 --> 00:15:31,900 wao kweli kuwa shirika kubwa kwa sababu bila wao 261 00:15:31,900 --> 00:15:36,110 ungependa kuwa daima kuingia katika kila ukurasa wa Facebook wewe kutembelea 262 00:15:36,110 --> 00:15:40,680 au kila barua pepe Gmail kusoma kama browser hakuwa na baadhi ya njia ya kukumbuka 263 00:15:40,680 --> 00:15:43,320 kwamba ve tayari kuthibitishwa. 264 00:15:43,320 --> 00:15:46,640 >> Hivyo kwa njia hii cookies waliotumwa na kurudi katika waya. 265 00:15:46,640 --> 00:15:52,470 Mwingine udadisi kuhusu cookies, hasa hapa, ni kwamba hii ni kabisa katika maandishi wazi. 266 00:15:52,470 --> 00:15:54,930 Hakuna encryption kinachoendelea hapa chochote, 267 00:15:54,930 --> 00:15:57,240 na kwa kweli mimi nina kutumia HTTP kwa sasa. 268 00:15:57,240 --> 00:16:00,890 Moja ya muda wetu katika favorites CS50, ambayo sasa ni miaka 2 iliyopita, 269 00:16:00,890 --> 00:16:04,750 alikuwa karibu wakati chombo inayoitwa Firesheep alikuja nje. 270 00:16:04,750 --> 00:16:08,320 Hii ilikuwa kipande bure ya Programu ya kwamba alikuwa yaliyotolewa na mtafiti wa usalama 271 00:16:08,320 --> 00:16:13,250 kama wito wake-up kwa ajili ya jamii ya kusema tu jinsi atrociously kutekelezwa 272 00:16:13,250 --> 00:16:17,900 fulani mitambo ya uthibitishaji kwenye mtandao walikuwa. 273 00:16:17,900 --> 00:16:22,880 Hivyo kwa baadhi ya wakati, Facebook ilikuwa karibu kabisa juu ya HTTP, hakuna HTTPS. 274 00:16:22,880 --> 00:16:25,640 Na hata kama wewe hawana wazo jinsi crypto kazi, S ni salama 275 00:16:25,640 --> 00:16:27,950 hivyo ina maana kuna angalau encryption baadhi kushiriki. 276 00:16:27,950 --> 00:16:30,610 Facebook gani kutumika encrypt majina ya utumiaji na nywila, 277 00:16:30,610 --> 00:16:33,560 lakini kwa haraka kama wewe inaonekana saa yako anawafanyia au ujumbe wako au habari yako malisho, 278 00:16:33,560 --> 00:16:35,360 yote ya kwamba alikuwa kimaandishi. 279 00:16:35,360 --> 00:16:37,870 Hivyo ilikuwa Gmail mpaka tu mwaka mmoja au 2 iliyopita. 280 00:16:37,870 --> 00:16:41,100 Wakati wowote wewe umeingia, ndiyo, walitumia encryption salama, 281 00:16:41,100 --> 00:16:44,300 lakini baada ya hapo hawakuwa. Na kwa nini wapate kuwa kuwa? 282 00:16:44,300 --> 00:16:49,210 Mbona si tu kutumia cryptography wakati wote katika kesi ya kutumia kama hii? 283 00:16:49,210 --> 00:16:53,700 Nini hiyo? Nadhani nikasikia kitu. [Mwanafunzi] Speed. 284 00:16:53,700 --> 00:16:56,250 Speed, haki? Kuna njia ya kuzunguka hili. 285 00:16:56,250 --> 00:16:59,610 Lakini kama wewe tu aina ya kufikiri juu ya mantiki, kama wewe encrypt kitu, 286 00:16:59,610 --> 00:17:01,820 una kufanya angalau kidogo zaidi ya kazi. 287 00:17:01,820 --> 00:17:05,460 Katika pset 2 wakati kutekelezwa Kaisari, au Vigenere au hata ufa, 288 00:17:05,460 --> 00:17:07,760 tu uchapishaji string ni rahisi. 289 00:17:07,760 --> 00:17:12,040 Encrypting na kisha kuchapisha string minimally inahitaji kidogo zaidi kazi. 290 00:17:12,040 --> 00:17:14,520 >>  Kwa super tovuti maarufu kama Google na Facebook, 291 00:17:14,520 --> 00:17:18,839 kama una kufanya kazi zaidi kwa kila mtumiaji kwa kila ukurasa moja ya mtandao wao kutembelea, 292 00:17:18,839 --> 00:17:20,520 kwamba tu inachukua zaidi CPU wakati. 293 00:17:20,520 --> 00:17:22,920 Na kama unahitaji zaidi CPU muda, unaweza kuhitaji servrar zaidi, 294 00:17:22,920 --> 00:17:24,270 ambayo ina maana unaweza kuhitaji fedha zaidi. 295 00:17:24,270 --> 00:17:27,579 Na hivyo kwa miaka mingi hii tu kweli alikuwa si bora mazoezi. 296 00:17:27,579 --> 00:17:31,440 Watu bila kutumia encryption SSL tu wakati walihitaji. 297 00:17:31,440 --> 00:17:34,960 Lakini aligeuka, na kama huyu kwa Firesheep alifanya super wazi, 298 00:17:34,960 --> 00:17:37,920 wakati wewe guys ambao kwa sasa juu ya Facebook hivi sasa - 299 00:17:37,920 --> 00:17:39,880 Nje ya udadisi, hebu angalia kama wewe utakuwa fess up. 300 00:17:39,880 --> 00:17:42,620 Kama uko kwenye Facebook hivi sasa katika baadhi ya tab, hata kama si foregrounded, 301 00:17:42,620 --> 00:17:46,610 ni URL yako HTTP au HTTPS? 302 00:17:46,610 --> 00:17:50,560 [Nyingi wanafunzi] S. S? [Kicheko] 303 00:17:50,560 --> 00:17:55,510 Sawa. Yoyote HTTP? 1 tu? Sawa. 304 00:17:55,510 --> 00:17:58,940 Hivyo sisi wote wanaweza hack kwamba guy Facebook akaunti hivi sasa. 305 00:17:58,940 --> 00:18:04,100 Kwa sehemu kubwa hii imekuwa akageuka juu na default, angalau katika baadhi ya tovuti. 306 00:18:04,100 --> 00:18:08,120 Na hadithi ndefu kifupi, kama mtandao wako trafiki haujasimbwa, 307 00:18:08,120 --> 00:18:12,960 si tu haina HTML kwenda na kurudi katika WiFis kimaandishi, 308 00:18:12,960 --> 00:18:16,760 hivyo mambo kama cookies kwenda na kurudi katika hewa 309 00:18:16,760 --> 00:18:18,940 bila aina yoyote ya encryption. 310 00:18:18,940 --> 00:18:23,540 Hivyo kama una kidogo tu ya savvy programu au kidogo ya googling ujuzi 311 00:18:23,540 --> 00:18:27,410 kupata programu ya bure ambayo gani hii, wote una kufanya ni kukaa katika Starbucks 312 00:18:27,410 --> 00:18:30,680 au kukaa katika uwanja wa ndege ambapo kuna ujumla kimaandishi WiFi 313 00:18:30,680 --> 00:18:36,070 na kuangalia tu kwa maneno kama Set Cookie-: au PHPSESSID 314 00:18:36,070 --> 00:18:39,300 kwa sababu kama una savvy kiufundi kwa kuangalia tu WiFi 315 00:18:39,300 --> 00:18:43,010 kwa wote wa bits kwamba mtiririko katika hewa kwa mfano hii, 316 00:18:43,010 --> 00:18:50,840 basi unaweza kusema kwamba PHPSESSID guy hutokea kwa kuwa bo8dal na kadhalika. 317 00:18:50,840 --> 00:18:53,890 Na kisha tena kama uko kutosha kitaalam savvy au kuwa na chombo haki, 318 00:18:53,890 --> 00:18:58,890 basi unaweza tu reconfigure browser yako mwenyewe kuanza kuwasilisha kwamba muhuri mkono 319 00:18:58,890 --> 00:19:05,030 kwa Facebook.com, na kuungana na ni kwenda tu kwa kudhani kuwa wewe ni kwamba guy 320 00:19:05,030 --> 00:19:09,880 kwa sababu wote wanajua si wewe ni nani lakini kwamba una hii kitambulisho kipekee. 321 00:19:09,880 --> 00:19:14,650 Hivyo kama wewe kuiba kwamba kitambulisho kipekee na kuwasilisha ni ya server mtandao kama yako mwenyewe, 322 00:19:14,650 --> 00:19:16,860 wao ni kwenda tu kuonyesha habari kwamba mtu kulisha 323 00:19:16,860 --> 00:19:18,980 au kwamba mtu au ujumbe anawafanyia. 324 00:19:18,980 --> 00:19:23,190 >> Na napenda Google sasa jinsi ya kuamsha HTTPS Facebook labda. 325 00:19:23,190 --> 00:19:25,150 Lakini ni kweli ni rahisi kama hayo. 326 00:19:25,150 --> 00:19:27,660 Na hivyo Facebook na Google na kama Gotten mzuri katika hili, 327 00:19:27,660 --> 00:19:31,870 lakini kushika jicho nje wote zaidi kwa ajili ya Nje yoyote wewe kutembelea kwamba si kutumia HTTP 328 00:19:31,870 --> 00:19:35,020 na kuwa na aina fulani ya habari nyeti juu yao, 329 00:19:35,020 --> 00:19:37,490 kama ni fedha au binafsi au kama. 330 00:19:37,490 --> 00:19:43,180 Kama siyo kutumia hii, unaweza kabisa uwezekano cookies kama hii kuwa kwa urahisi sana kuibiwa 331 00:19:43,180 --> 00:19:46,270 na kisha uzua, na kwamba ni nini hasa Firesheep alivyofanya. 332 00:19:46,270 --> 00:19:48,250 You hawakuwa kuwa programu. 333 00:19:48,250 --> 00:19:51,680 Wote alikuwa kufanya ni kuwa na uhusiano Internet, download zana hii ya bure, 334 00:19:51,680 --> 00:19:56,490 na nini itakuwa kufanya ni wewe ingia na basi ingekuwa kuonyesha majina ya Facebook 335 00:19:56,490 --> 00:20:00,170 ya kila mtu katika Sanders, katika maandamano huu, hasa karibu na wewe 336 00:20:00,170 --> 00:20:03,260 na wote mnatakiwa kufanya mara bonyeza juu ya jina yao na programu automatiska mchakato 337 00:20:03,260 --> 00:20:05,970 ya sniffing kwamba cookie, kuwasilisha kwa Facebook kama yako mwenyewe, 338 00:20:05,970 --> 00:20:07,990 na, voilà, umeingia in 339 00:20:07,990 --> 00:20:11,190 Hivyo hii ni mwingine mmoja wa wale "kufanya hivi" rasmi. 340 00:20:11,190 --> 00:20:14,660 Kama una nyumba yako mwenyewe mtandao na unataka tinker, kwa njia zote, 341 00:20:14,660 --> 00:20:17,530 lakini hii haina kutambua kuvuka mstari juu ya mazingira ya chuo kikuu. 342 00:20:17,530 --> 00:20:20,030 >> Lakini lengo hapa ni kweli kusisitiza si jinsi ya kufanya hili 343 00:20:20,030 --> 00:20:22,320 lakini jinsi ya kuilinda dhidi ya aina hii ya mambo. 344 00:20:22,320 --> 00:20:26,180 Na ufumbuzi trivial hapa, hata kama ni yenyewe ni kiujanja, 345 00:20:26,180 --> 00:20:31,360 ni kweli kupunguza matumizi ya maeneo yoyote ambayo si kutumia https daima. 346 00:20:31,360 --> 00:20:34,520 Hivyo maeneo kama Facebook na Google inazidi kuwa checkboxes 347 00:20:34,520 --> 00:20:36,200 ambapo unaweza kuchagua katika hii aina ya kitu, 348 00:20:36,200 --> 00:20:40,000 na benki kuwa na hii kwa miaka kwa sababu kama hizo. 349 00:20:40,000 --> 00:20:43,580 Hivyo tu kidogo ya sababu hofu kama tunaweza. Lakini hiyo ni yake kwa kifupi. 350 00:20:43,580 --> 00:20:46,420 Hiyo ni jinsi server anakumbuka wewe ni nani. 351 00:20:46,420 --> 00:20:50,760 Na haraka kama wao wanaweza kukumbuka wewe ni nani, wanaweza kukumbuka kitu chochote kuhusu wewe 352 00:20:50,760 --> 00:20:56,140 kwamba programu ina kuhifadhiwa ndani ya superglobal hii maalum iitwayo $ _SESSION. 353 00:20:56,140 --> 00:20:59,750 Na kwa pset 7 tunayatumia trivially tu kukumbuka int, 354 00:20:59,750 --> 00:21:02,260 yaani ID ya kipekee ya mtumiaji ambaye umeingia, 355 00:21:02,260 --> 00:21:05,880 ili tujue wao tumekuwa huko mbele. 356 00:21:05,880 --> 00:21:12,450 Maswali yoyote kisha juu ya vikao au cookies au kama? 357 00:21:12,450 --> 00:21:15,130 Firesheep haifanyi kazi kama vizuri tena, 358 00:21:15,130 --> 00:21:18,310 na una kuweka kompyuta yako katika mode maalum waigaji 359 00:21:18,310 --> 00:21:20,700 hivyo wewe ni kweli kusikiliza kwa trafiki badala yenu. 360 00:21:20,700 --> 00:21:23,940 Hivyo kama wewe sasa kushusha Firesheep, kutambua hilo si rahisi kabisa kama 361 00:21:23,940 --> 00:21:26,850 kama ni mara moja ilikuwa kudhihirisha. 362 00:21:26,850 --> 00:21:29,070 Wote haki. Na si kufanya hivyo katika Sanders. Kufanya hivyo nyumbani. 363 00:21:29,070 --> 00:21:30,890 Hifadhidata. 364 00:21:30,890 --> 00:21:33,580 Moja ya mambo ya sisi alivyofanya katika pset 7 sana kwa makusudi 365 00:21:33,580 --> 00:21:37,780 mara sisi kukupa database sampuli meza kwa watumiaji kwamba ina Vitambulisho baadhi ya mtumiaji, 366 00:21:37,780 --> 00:21:41,020 majina ya mtumiaji baadhi, na nywila baadhi encrypted humo. 367 00:21:41,020 --> 00:21:44,520 Na kama utaona, kama wewe si tayari, wewe ni kwenda kuwa na mabadiliko ya meza kidogo. 368 00:21:44,520 --> 00:21:47,710 Wewe utaenda kuwa na kuongeza baadhi ya cache kwa kila mmoja wa watumiaji katika meza ya kwamba, 369 00:21:47,710 --> 00:21:51,130 na mtaenda kuwa na kuongeza mwingine meza historia, meza portfolios, 370 00:21:51,130 --> 00:21:53,310 au labda kuiita kitu kingine. 371 00:21:53,310 --> 00:21:56,740 Lakini katika suala la kufikiria juu ya jinsi ya kufanya hili, hebu kufungua chombo hiki 372 00:21:56,740 --> 00:22:00,570 ambayo sisi kutumika juu ya Ijumaa, lakini kama unfamiliar, appliance kuja na chombo 373 00:22:00,570 --> 00:22:04,680 kuitwa phpMyAdmin ambayo ni coincidentally imeandikwa katika PHP, 374 00:22:04,680 --> 00:22:07,950 lakini kusudi lake katika maisha, baada ya mimi kuingia katika hapa kama jharvard na nyekundu, 375 00:22:07,950 --> 00:22:15,160 ni kwa kunipa njia user-kirafiki ya kuangalia na kubadilisha database yangu. 376 00:22:15,160 --> 00:22:18,040 >> Mbegu kwamba mimi nina mbio appliance inaitwa MySQL. 377 00:22:18,040 --> 00:22:23,420 Hii ni maarufu sana, na ni bure wazi chanzo database hiyo ajabu rahisi kutumia, 378 00:22:23,420 --> 00:22:25,620 hasa kwa mbele mwisho kama hii. 379 00:22:25,620 --> 00:22:29,350 Nini chombo hiki inaruhusu mimi kufanya, kwa mfano, ni poke kuzunguka meza. 380 00:22:29,350 --> 00:22:30,890 Hebu kwenda mbele na kufanya hili. 381 00:22:30,890 --> 00:22:36,580 Siku ya Ijumaa sisi aliumba meza inayoitwa wanafunzi kwamba alikuwa super rahisi. 382 00:22:36,580 --> 00:22:41,680 Ni alikuwa nguzo 3 - id, jina, na barua pepe - na mimi manually kuingizwa michache ya safu 383 00:22:41,680 --> 00:22:44,420 kama Daudi na Mike katika mfano huu hasa. 384 00:22:44,420 --> 00:22:47,290 Hebu hii kidogo zaidi, na hebu kudhani kwamba tunataka kukumbuka zaidi 385 00:22:47,290 --> 00:22:49,660 kuliko tu jina na barua pepe kuhusu mtumiaji. 386 00:22:49,660 --> 00:22:53,090 Hebu bonyeza Muundo hapa juu kwa juu. 387 00:22:53,090 --> 00:22:55,440 Na tena, pset matembezi yenu kupitia hatua zinazohitajika hapa, 388 00:22:55,440 --> 00:22:58,150 hivyo usijali kama baadhi ya hii ni kidogo haraka. 389 00:22:58,150 --> 00:22:59,690 Kisha mimi naenda bonyeza hapa. 390 00:22:59,690 --> 00:23:02,270 Mimi nina kwenda kuongeza baadhi ya idadi ya nguzo baada ya barua pepe 391 00:23:02,270 --> 00:23:04,130 sababu nataka kuongeza kitu kama nyumba. 392 00:23:04,130 --> 00:23:06,640 I forgot kurekodi nyumba mwanafunzi. 393 00:23:06,640 --> 00:23:11,400 Hebu bofya Nenda, na sasa tuna fomu hii kwamba kwa bahati mbaya ni kidogo mbalimbali kutoka kushoto kwenda kulia, 394 00:23:11,400 --> 00:23:13,710 lakini nina kwenda kuwaita jina la nyumba uwanja huu, 395 00:23:13,710 --> 00:23:16,050 na basi aina mimi sasa na kuchagua. 396 00:23:16,050 --> 00:23:18,870 Basi hebu kuwa na mazungumzo mafupi kuhusu aina mbalimbali katika MySQL 397 00:23:18,870 --> 00:23:24,590 kwa sababu wakati PHP ni weakly typed na ni aina ya ina haraka na huru na aina, 398 00:23:24,590 --> 00:23:29,430 katika database hasa ni super muhimu kwa kweli matumizi ya kuandika kwa faida yako 399 00:23:29,430 --> 00:23:33,260 kwa sababu moja ya mambo MySQL na injini nyingine database unaweza kufanya kwa ajili yenu 400 00:23:33,260 --> 00:23:37,910 ni kuhakikisha kwamba huna kuweka data bogus katika database yako. 401 00:23:37,910 --> 00:23:41,850 Hii ni aina ya kosa bure kuangalia inapatikana na wewe. 402 00:23:41,850 --> 00:23:46,250 >> Maana nyumba sisi ni wazi sitaki kuwa int, ambayo ni thamani ya 32-bit katika MySQL. 403 00:23:46,250 --> 00:23:49,810 Sisi tulikuwa kuzungumza kwa ufupi juu ya Ijumaa kuhusu varchar, ambayo inasimamia kwa urefu variable Char. 404 00:23:49,810 --> 00:23:54,720 Hii ni nini? Hii utapata bayana kwamba unataka hii kuwa kamba ya aina fulani. 405 00:23:54,720 --> 00:23:56,840 Wewe si kweli kujua mapema ni muda gani, 406 00:23:56,840 --> 00:24:00,100 hivyo tutaweza kiholela kusema jina nyumba inaweza kuwa 255 wahusika, 407 00:24:00,100 --> 00:24:04,190 lakini unaweza kwenda na 32, 64 - idadi yoyote kwa kweli. 408 00:24:04,190 --> 00:24:10,700 Lakini faida ya kutumia varchar juu ya shamba iitwayo Char ni nini? 409 00:24:10,700 --> 00:24:15,110 Tu intuitively kama mimi kitabu chini hapa, kuna taarifa Char na kuna varchar. 410 00:24:15,110 --> 00:24:19,520 Varchar ni variable urefu Char; Char ni urefu fasta Char. 411 00:24:19,520 --> 00:24:24,730 Hivyo msingi tu juu ya ufafanuzi kwamba, nini faida au hasara ya kila moja ya haya? 412 00:24:24,730 --> 00:24:30,490 Kwa maneno mengine, ambaye wasiwasi kuhusu utofautishaji huo, au kwa nini huduma? 413 00:24:31,660 --> 00:24:35,750 >> Yeah. [Mwanafunzi] varchar ina zaidi kubadilika lakini inachukua hadi zaidi ya kumbukumbu. 414 00:24:35,750 --> 00:24:40,730 Nzuri. Varchar inachukua hadi zaidi - Hebu angalia. Mimi nina uhakika kama nikasikia kwamba haki. 415 00:24:40,730 --> 00:24:42,360 Je, unaweza kusema kwamba mara zaidi? 416 00:24:42,360 --> 00:24:45,850 [Mwanafunzi] Mimi alisema varchar pengine ina zaidi kubadilika lakini inachukua juu ya kumbukumbu zaidi. 417 00:24:45,850 --> 00:24:51,170 Kuvutia. Sawa. Varchar pengine inatoa zaidi kubadilika lakini inachukua hadi zaidi ya kumbukumbu. 418 00:24:51,170 --> 00:24:53,220 Mwisho ni lazima si kweli. 419 00:24:53,220 --> 00:24:56,290 Ni inategemea mazingira, lakini hebu kuja nyuma na kwamba. 420 00:24:56,290 --> 00:25:03,230 >> [Inaudible mwanafunzi majibu] Hasa. 421 00:25:03,230 --> 00:25:06,900 Ni kweli kwamba kesi Char itakuwa kawaida kutumia zaidi ya kumbukumbu 422 00:25:06,900 --> 00:25:10,950 kwa sababu Char, kama katika C, ni kama kamba, ni safu ya wahusika. 423 00:25:10,950 --> 00:25:13,690 Hivyo kama wewe kusema shamba Char ya urefu 255, 424 00:25:13,690 --> 00:25:16,910 database ni halisi naenda kukupa wewe wahusika 255. 425 00:25:16,910 --> 00:25:22,290 Na kama nyumba kuishia kuwa Mather na 6 wahusika jumla, 426 00:25:22,290 --> 00:25:25,090 wewe ni kupoteza zaidi ya wahusika 200. 427 00:25:25,090 --> 00:25:29,640 >> Hivyo varchar ufanisi anatumia tu kama wahusika wengi kama ni muhimu 428 00:25:29,640 --> 00:25:31,590 hadi kiasi upeo. 429 00:25:31,590 --> 00:25:35,470 Lakini bei ya kulipa ni kweli utendaji, uwezekano. 430 00:25:35,470 --> 00:25:39,740 Kama wewe kujua mapema kwamba wote wa masharti yako ni kwenda kuwa 8 wahusika - 431 00:25:39,740 --> 00:25:43,090 kwa mfano, tuseme kwamba wewe kuhitaji nywila ya urefu 8 - 432 00:25:43,090 --> 00:25:47,350 suala la mafanikio ya kutumia uwanja Char juu ya tukio, ingawa si mara nyingi, 433 00:25:47,350 --> 00:25:51,100 ni bayana urefu fasta kwa kitu kama nywila 434 00:25:51,100 --> 00:25:53,300 kwa sababu sasa database unaweza kuwa hata nadhifu. 435 00:25:53,300 --> 00:25:58,160 Kama anajua kwamba kila shamba Char, kila string katika safu ni urefu sawa, 436 00:25:58,160 --> 00:26:00,780 kupata nyuma hulka ya upatikanaji random. 437 00:26:00,780 --> 00:26:05,110 Unaweza kuruka karibu kati ya nyanja mbalimbali Char katika database meza yako 438 00:26:05,110 --> 00:26:07,940 kwa sababu kufikiria database kama safu na nguzo. 439 00:26:07,940 --> 00:26:11,670 Hivyo kama kila moja ya masharti ni urefu sawa, 440 00:26:11,670 --> 00:26:17,820 unajua kwamba moja ya kwanza ni katika Byte 0, moja ya pili ni katika Byte 8 441 00:26:17,820 --> 00:26:20,240 na kisha 16 na kisha 24 na kadhalika. 442 00:26:20,240 --> 00:26:24,500 Hivyo kama masharti yote ni ya urefu sawa, unaweza kuruka karibu sana kwa ufanisi zaidi. 443 00:26:24,500 --> 00:26:26,710 Hivyo kwamba inaweza kuwa faida katika suala la utendaji, 444 00:26:26,710 --> 00:26:29,420 lakini kwa kawaida wewe hawana anasa ya kujua mapema, 445 00:26:29,420 --> 00:26:32,170 hivyo varchar ni njia ya kwenda. 446 00:26:32,170 --> 00:26:36,030 Hapa ni mwingine undani kwamba hata Facebook mbio katika hatimaye. 447 00:26:36,030 --> 00:26:39,670 Ints ni kubwa, na sisi aina ya matumizi yao na default wakati wowote tunataka idadi, 448 00:26:39,670 --> 00:26:41,750 lakini ni 32 tu bits. 449 00:26:41,750 --> 00:26:46,210 >> Na hata kama Facebook haina kabisa na watumiaji bilioni 4 sasa, 450 00:26:46,210 --> 00:26:48,680 kuna dhahiri baadhi ya watu huko nje na akaunti nyingi za 451 00:26:48,680 --> 00:26:50,960 au akaunti ambayo imefunguliwa na kisha kufungwa, 452 00:26:50,960 --> 00:26:55,130 na hivyo Facebook yenyewe Naamini miaka michache iliyopita alikuwa na kipindi cha mpito kutoka int 453 00:26:55,130 --> 00:27:00,010 kwa, kama ni aptly aitwaye, bigint, ambayo ni 64 tu bits badala yake. 454 00:27:00,010 --> 00:27:02,230 Hivyo hii pia ni uamuzi design. 455 00:27:02,230 --> 00:27:06,570 Utakuwa kushangaza bahati kama mradi wako wa mwisho anarudi startup, 456 00:27:06,570 --> 00:27:10,010 ina bilioni 4 na watumiaji 1, kutoa au kuchukua, 457 00:27:10,010 --> 00:27:13,200 katika kesi ambayo kwa kutumia ints inaweza kuwa ni kidogo shortsighted. 458 00:27:13,200 --> 00:27:16,230 Lakini katika hali halisi, wako watumiaji meza pengine ni faini kwa ints. 459 00:27:16,230 --> 00:27:19,340 Lakini kwa kitu kama pset 7, kama historia meza yako, 460 00:27:19,340 --> 00:27:23,700 unaweza kuwa na maelfu mamilioni, ya watumiaji kama wewe kufuka katika etrade.com. 461 00:27:23,700 --> 00:27:26,020 Hivyo wakati unaweza kuwa na zaidi ya watumiaji bilioni 4, 462 00:27:26,020 --> 00:27:30,070 wale watumiaji una tupate kuwa na mashirikiano zaidi ya bilioni 4 baada ya muda - 463 00:27:30,070 --> 00:27:33,200 hununua na kuuza na mambo katika historia yao. 464 00:27:33,200 --> 00:27:38,090 Hivyo kama wewe kufanya wanatarajia - tena, hizi ni nzuri kuwa na matatizo kama una data sana hii - 465 00:27:38,090 --> 00:27:40,920 kama wewe kufanya wanatarajia data mno ukubwa wa int, 466 00:27:40,920 --> 00:27:47,740 kwenda na kitu kama bigint ni mwelekeo si mara nyingi kutosha iliyopitishwa na wabunifu 467 00:27:47,740 --> 00:27:49,710 kwa sababu watu takwimu kwamba si kwenda kuwa tatizo, 468 00:27:49,710 --> 00:27:51,930 lakini ni hii rahisi kuchagua jambo kubwa kuliko hiyo. 469 00:27:51,930 --> 00:27:55,380 Decimal sisi ni kutumia katika pset 7, ambayo inabainisha usahihi fasta 470 00:27:55,380 --> 00:27:59,840 hivyo unaweza kuepuka masuala yanayohusiana na ikifungwa DOUBLES na reals na kama. 471 00:27:59,840 --> 00:28:02,440 >> Na kisha kuna baadhi ya mashamba mengine hapa. Tutaweza kukitikisa mikono yetu kwao kwa kiasi fulani. 472 00:28:02,440 --> 00:28:07,270 Lakini tarehe, wakati wote kuwa na muundo eda katika MySQL, 473 00:28:07,270 --> 00:28:10,830 na faida ya tarehe hifadhi kama tarehe na si varchars 474 00:28:10,830 --> 00:28:15,730 ina maana kwamba database unaweza kweli reformat yao katika muundo tofauti, 475 00:28:15,730 --> 00:28:18,800 kama format Marekani au Ulaya au format kama - hata hivyo unataka - 476 00:28:18,800 --> 00:28:22,700 mengi kwa ufanisi zaidi kuliko kama ingekuwa tu baadhi varchar generic. 477 00:28:22,700 --> 00:28:25,150 Na kisha kuna baadhi binary nyingine, varbinary, matone. 478 00:28:25,150 --> 00:28:28,580 Hizi ni binary kubwa vitu, na unaweza pia kuhifadhi data binary 479 00:28:28,580 --> 00:28:30,750 kama vile data kijiometri katika database. 480 00:28:30,750 --> 00:28:34,350 Lakini kwa sisi tutaweza kawaida huduma kuhusu ints na varchars na kama. 481 00:28:34,350 --> 00:28:36,230 Hebu kumaliza up mfano huu kwa nyumba. 482 00:28:36,230 --> 00:28:40,030 Nyumba nitakacho kiholela kusema itakuwa 255 chars. 483 00:28:40,030 --> 00:28:42,850 Kisha default thamani tunaweza kufanya hii. 484 00:28:42,850 --> 00:28:47,440 Tunaweza na default kuweka kila mtu katika Mather House, kwa mfano. 485 00:28:47,440 --> 00:28:49,710 Hiyo ni jinsi gani tunaweza bayana kwamba database 486 00:28:49,710 --> 00:28:52,460 inapaswa kuhakikisha kwamba mtu daima ina thamani. Lakini mimi itabidi kuondoka kwamba kuwa. 487 00:28:52,460 --> 00:28:55,270 Kwa kweli, kwa watu ambao wanaishi mbali na chuo si katika nyumba, 488 00:28:55,270 --> 00:28:59,590 labda mimi kweli wanataka bayana kwamba thamani default kwa ajili ya nyumba ni null, 489 00:28:59,590 --> 00:29:04,890 na kisha mimi haja ya kuangalia hii sanduku na kuwaambia database ni sawa kama nyumba ya mtumiaji ni null. 490 00:29:04,890 --> 00:29:07,270 >> Tena, hii ni mwingine utaratibu wa utetezi unaweza kuweka 491 00:29:07,270 --> 00:29:10,590 hivyo huna hata kuwa na kuiweka katika code yako PHP lazima. 492 00:29:10,590 --> 00:29:14,630 database itahakikisha kwamba mambo ni au si null. 493 00:29:14,630 --> 00:29:17,310 Na kisha mwisho, Sifa. 494 00:29:17,310 --> 00:29:18,920 Hakuna wa haya ni kweli husika. 495 00:29:18,920 --> 00:29:22,880 Binary, unsigned - hakuna wa wale ni muhimu kwa varchar. 496 00:29:22,880 --> 00:29:24,220 Index. 497 00:29:24,220 --> 00:29:27,320 Je, mtu yeyote kujua au kukumbuka au kuwa na nadhani kama yale index ni 498 00:29:27,320 --> 00:29:29,510 kwa kitu kama nyumba? 499 00:29:29,510 --> 00:29:35,240 Hii pia ni kweli muhimu na rahisi kubuni maamuzi. 500 00:29:35,240 --> 00:29:39,200 Kwa wale ambao bado kuiona, Ijumaa sisi aliyesema ufupi kuhusu funguo msingi. 501 00:29:39,200 --> 00:29:43,240 Katika meza database, muhimu ya msingi ni shamba au safu 502 00:29:43,240 --> 00:29:46,270 ya kipekee kubainisha mistari katika meza. 503 00:29:46,270 --> 00:29:49,150 Hivyo katika meza ya sasa tuna vitambulisho, sisi kuwa na majina na barua pepe. 504 00:29:49,150 --> 00:29:52,050 Ambayo ni ya wale mgombea bora kuwa muhimu ya msingi, 505 00:29:52,050 --> 00:29:55,810 jukumu lake ni ya kipekee kutambua safu? 506 00:29:55,810 --> 00:29:57,530 Pengine ID. 507 00:29:57,530 --> 00:29:59,930 Kihoja, tunaweza pia kutumia nini ingawa? 508 00:29:59,930 --> 00:30:02,860 Labda unaweza kutumia barua pepe kwa sababu katika nadharia ni ya kipekee 509 00:30:02,860 --> 00:30:05,380 isipokuwa watu wanashiriki akaunti za barua pepe. 510 00:30:05,380 --> 00:30:09,980 Lakini ukweli ni kwamba kama wewe ni kutumia ID numeric kama 1234, 511 00:30:09,980 --> 00:30:14,170 hiyo ni 32 tu bits, ambapo anwani ya barua pepe inaweza kuwa hii ka wengi au ka hii wengi. 512 00:30:14,170 --> 00:30:16,610 Hivyo katika suala la ufanisi kwa vitambulisho vya kipekee, 513 00:30:16,610 --> 00:30:19,270 huelekea kuwa nzuri mazoezi tu kutumia int 514 00:30:19,270 --> 00:30:23,090 hata kama una baadhi mgombea string kwamba unaweza arguably kutumia. 515 00:30:23,090 --> 00:30:26,760 >> Kwa kitu kama nyumba, hii haipaswi kuwa muhimu ya msingi 516 00:30:26,760 --> 00:30:30,770 kwa sababu basi tu 1 mtu anaweza kuishi katika Mather na 1 mtu katika Currier na kama. 517 00:30:30,770 --> 00:30:32,790 Vile vile, hii haipaswi kuwa ya kipekee. 518 00:30:32,790 --> 00:30:37,830 tofauti kati ya msingi na ya kipekee ni kwamba katika kesi ya meza yetu ya sasa, 519 00:30:37,830 --> 00:30:42,620 ID itakuwa msingi lakini email si ya msingi kwa sababu sisi tu zilizotajwa - 520 00:30:42,620 --> 00:30:44,740 utendaji - lakini ni lazima bado kuwa ya kipekee. 521 00:30:44,740 --> 00:30:47,200 Hivyo unaweza bado kutekeleza uniqueness bila kufanya madai 522 00:30:47,200 --> 00:30:49,520 kwamba ni super muhimu ya msingi shamba. 523 00:30:49,520 --> 00:30:52,610 Lakini hii ni moja kabisa kusaidia: Index. 524 00:30:52,610 --> 00:30:56,180 Kama unajua mapema kwa ajili ya mradi wako wa mwisho, kwa pset 7, au kwa ujumla, 525 00:30:56,180 --> 00:30:59,480 kwamba nyumba hii shamba ni kwenda kuwa kitu wewe tafuta juu ya mengi 526 00:30:59,480 --> 00:31:01,910 kutumia Keyword kuchagua au kitu kingine, 527 00:31:01,910 --> 00:31:05,180 basi unaweza preemptively kuwaambia database kwa kazi yake ya uchawi 528 00:31:05,180 --> 00:31:10,510 na kuhakikisha kuwa inajenga katika kumbukumbu yoyote miundo data dhana muhimu 529 00:31:10,510 --> 00:31:13,770 kuharakisha utafutaji msingi nyumba. 530 00:31:13,770 --> 00:31:17,860 Labda itakuwa matumizi meza hash, labda itakuwa matumizi orodha zilizounganishwa. 531 00:31:17,860 --> 00:31:21,260 Katika hali halisi, huelekea kutumia mti, mara nyingi muundo inayoitwa B-mti - 532 00:31:21,260 --> 00:31:24,090 si mti binary lakini B-mti - ambayo ni mti pana sana 533 00:31:24,090 --> 00:31:27,370 kwamba unaweza kuona katika darasa kama CS124, data miundo darasa. 534 00:31:27,370 --> 00:31:31,800 Lakini katika muda mfupi, huna na wasiwasi juu ya kwamba wakati wa kutumia smart database programu. 535 00:31:31,800 --> 00:31:35,890 Unaweza tu kuwaambia hayo, "Index uwanja huu ili niweze kutafuta juu yake kwa ufanisi zaidi." 536 00:31:35,890 --> 00:31:40,250 >> Kama wewe kuondoka hii mbali na wewe kujaribu kutafuta kwa kila mtu katika database ambaye anaishi katika Mather, 537 00:31:40,250 --> 00:31:42,710 itakuwa kukabidhi katika tafuta linear. 538 00:31:42,710 --> 00:31:45,360 Na kama nimepata undergrads 6000 hai wote katika nyumba fulani, 539 00:31:45,360 --> 00:31:47,900 utaenda kutafuta meza nzima kupata Matherites, 540 00:31:47,900 --> 00:31:52,190 lakini kama wewe kusema Index, hopefully itakuwa kitu karibu na tafuta logarithmic 541 00:31:52,190 --> 00:31:54,510 kupata aina wale wa wanafunzi. 542 00:31:54,510 --> 00:31:56,750 Hii ni hulka bure kurejea kwenye, 543 00:31:56,750 --> 00:31:59,530 hata kama anakuja kwa bei ya baadhi ya kiasi cha nafasi. 544 00:31:59,530 --> 00:32:02,690 Mwisho, auto-increment, uwanja huu AI, 545 00:32:02,690 --> 00:32:05,830 ambayo ina maana tu kama ni int na hutaki kutunza na increment mwenyewe 546 00:32:05,830 --> 00:32:07,570 kila wakati kuna mtumiaji mpya, kuangalia kwamba, 547 00:32:07,570 --> 00:32:11,910 na kila mtumiaji kwamba anapata kuingizwa moja kwa moja kupata ID mpya. 548 00:32:11,910 --> 00:32:15,620 Hebu bonyeza Ila, na sasa hebu kupata kosa na muundo huu. 549 00:32:15,620 --> 00:32:20,200 Kama mimi kwenda katika kuvinjari, taarifa kwamba wote Mike na nyumba yangu ni null. 550 00:32:20,200 --> 00:32:22,420 Naweza kutumia phpMyAdmin kuhariri hii manually. 551 00:32:22,420 --> 00:32:25,110 Naweza kwenda katika hapa na aina katika Mather na kisha hit Enter, 552 00:32:25,110 --> 00:32:27,740 na sasa taarifa meza ni tofauti. 553 00:32:27,740 --> 00:32:29,270 Lakini taarifa mimi naweza kufanya kitu kingine pia. 554 00:32:29,270 --> 00:32:33,530 ID ya Daudi ni 1, hivyo phpMyAdmin tena ni chombo tu utawala; 555 00:32:33,530 --> 00:32:35,970 hii si kitu watumiaji yako ni milele anaenda kuona. 556 00:32:35,970 --> 00:32:38,810 Hivyo kama mimi badala bonyeza tab SQL juu juu - 557 00:32:38,810 --> 00:32:41,450 na tena, pset 7 mapenzi kuanzisha wewe zaidi ya maswali haya - 558 00:32:41,450 --> 00:32:45,260 Naweza manually nitafanya SQL muundo swala lugha amri 559 00:32:45,260 --> 00:32:56,410 UPDATE watumiaji SET nyumba = 'Pfoho' WAPI id = 1. 560 00:32:56,410 --> 00:33:00,830 Haya maswali SQL ni, nicely kutosha, pretty someka kutoka kushoto kwenda kulia. 561 00:33:00,830 --> 00:33:04,350 Update meza watumiaji, kuweka shamba iitwayo nyumba kwa Pfoho 562 00:33:04,350 --> 00:33:06,830 ambapo ID mtumiaji ni 1. 563 00:33:06,830 --> 00:33:11,480 Au mimi naweza hata kufanya ambapo barua pepe = 'malan@harvard.edu'. 564 00:33:11,480 --> 00:33:14,860 Hiyo kwa muda mrefu kama ya kipekee kubainisha yangu, kwamba ingekuwa kazi kama vizuri. 565 00:33:14,860 --> 00:33:18,810 Lakini ID huelekea kuwa juu ya utendaji, hivyo hebu kufanya hivyo. 566 00:33:18,810 --> 00:33:22,950 Hebu bonyeza Go. Okay, lecture.users haipo. Nini kosa langu? 567 00:33:22,950 --> 00:33:26,220 Nini meza kweli kuitwa hapa? 568 00:33:26,220 --> 00:33:28,770 Ni wito wanafunzi kwa sababu tu kwamba ni nini sisi alifanya juu hapa juu kushoto. 569 00:33:28,770 --> 00:33:31,860 Ni wito wanafunzi, si watumiaji. Hivyo bonyeza Nenda sasa. 570 00:33:31,860 --> 00:33:34,330 1 mstari walioathirika. Query sekondi 0.01. 571 00:33:34,330 --> 00:33:38,010 Kama mimi bonyeza Browse sasa, sasa maisha Malan katika Pfoho. 572 00:33:38,010 --> 00:33:42,070 Basi hiyo ni mwingine ladha ya SQL, lakini pset kutembea wewe kupitia kidogo zaidi ya kwamba. 573 00:33:42,070 --> 00:33:44,710 >> Kuna uamuzi kijinga nimekuwa tayari alifanya hapa. 574 00:33:44,710 --> 00:33:47,820 Ningependa kusema kwamba design hii database ni ufanisi 575 00:33:47,820 --> 00:33:51,650 kwa sababu watu zaidi mimi kuongeza meza ya wanafunzi, 576 00:33:51,650 --> 00:33:54,730 zaidi ya sisi mimi kuanza kuongeza, zaidi ya TFS mimi kuanza kuongeza, 577 00:33:54,730 --> 00:33:58,320 sisi ni kwenda kuanza kuona nini redundancies katika meza hii? 578 00:34:00,840 --> 00:34:06,020 >> Yeah. [Mwanafunzi] Kuona kwamba ni katika wanafunzi, sisi ni kutumia sawa [inaudible] 579 00:34:06,020 --> 00:34:07,360 sawa - Haki, hasa. 580 00:34:07,360 --> 00:34:10,400 Hivyo kama watu 400 wanaishi katika Mather, kutoa au kuchukua, 581 00:34:10,400 --> 00:34:15,000 hatimaye meza hii ni ya kwenda kuwa na safu 400 kwamba kusema "Mather," "Mather," 582 00:34:15,000 --> 00:34:16,590 "Mather," "Mather," "Mather." 583 00:34:16,590 --> 00:34:19,820 Sisi ni kupoteza yote ya ka hizi, na kuna wanandoa wa takeaways huko. 584 00:34:19,820 --> 00:34:23,080 1, kuna mambo kona kesi ambapo kama mtu pays mengi ya fedha 585 00:34:23,080 --> 00:34:25,949 na renames Mather, sasa tuna kubadili database yetu nzima ya meza. 586 00:34:25,949 --> 00:34:29,730 Hiyo si kinaenda kutokea mara nyingi, ingawa mara kwa mara nyingine huitwa Pfoho Amerika ya Nyumba miaka 15 iliyopita, 587 00:34:29,730 --> 00:34:32,310 hivyo ndivyo inavyokuwa. Lakini si kwamba kulazimisha kwamba wote. 588 00:34:32,310 --> 00:34:36,000 Zaidi ya kulazimisha kuliko kesi kona kama ile ya wanaohitaji update data kwa wingi 589 00:34:36,000 --> 00:34:41,150 kwa database ni kwa nini hifadhi Mather tena na tena na tena na tena? 590 00:34:41,150 --> 00:34:43,020 Hiyo mengi ya chars, chars 6. 591 00:34:43,020 --> 00:34:45,500 Je, si sisi kufanya hata bora zaidi ya kwamba, hasa kwa Pforzheimer? 592 00:34:45,500 --> 00:34:48,320 Hakika tunaweza kufanya vizuri zaidi kuliko wahusika kuwa wengi. 593 00:34:48,320 --> 00:34:51,790 Mbona si tu kujiunga kitambulisho kipekee kwa kila nyumba 594 00:34:51,790 --> 00:34:55,020 na kuhifadhi kwamba kwa kila mtumiaji? Basi hebu jaribu hii. 595 00:34:55,020 --> 00:35:00,610 Badala tu ya kutumia meza ya wanafunzi, uniruhusu niende kwa hotuba database wangu hapa juu kushoto. 596 00:35:00,610 --> 00:35:02,600 Ona hapa inasema Unda meza. 597 00:35:02,600 --> 00:35:04,550 Hebu kujenga meza mpya iitwayo nyumba. 598 00:35:04,550 --> 00:35:08,880 idadi ya nguzo ni kwenda kuwa 2. Kuingia. 599 00:35:08,880 --> 00:35:11,200 Sasa nina mashamba 2. 600 00:35:11,200 --> 00:35:14,600 Mimi naenda kuwaita jina hili, na ni kwenda kuwa varchar ya urefu 255, 601 00:35:14,600 --> 00:35:18,770 >> lakini hiyo ni pretty holela. Hebu kuweka hii hapa chini kwa mkataba. 602 00:35:18,770 --> 00:35:22,840 Hivyo kuweka ID hapa juu. Hebu kutoa kila nyumba kitambulisho kipekee. 603 00:35:22,840 --> 00:35:25,360 Hebu kutoa kila nyumba jina. 604 00:35:25,360 --> 00:35:30,980 Hebu bayana kwamba kitambulisho itakuwa unsigned tu na mkataba kwa kutumia tu idadi chanya. 605 00:35:30,980 --> 00:35:35,020 Hebu kwenda mbele na kutoa hii auto-increment shamba kwa sasa. 606 00:35:35,020 --> 00:35:38,160 Na nini tunahitaji kitu kingine? 607 00:35:38,160 --> 00:35:41,010 Hebu kwenda mbele na bonyeza Hifadhi. 608 00:35:41,010 --> 00:35:42,480 Sasa nina meza ya pili. 609 00:35:42,480 --> 00:35:45,860 Angalia kama kando hii ni kidogo cryptic SQL amri 610 00:35:45,860 --> 00:35:50,280 kwamba ingekuwa alikuwa na aina manually kama si kutumia chombo kiutawala kama phpMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Hivyo sababu nyingine sisi kuitumia. 612 00:35:51,990 --> 00:35:55,480 Ni ajabu manufaa ya aina ya pedagogically kwa sababu unaweza bonyeza karibu 613 00:35:55,480 --> 00:36:01,050 na kufikiri jinsi mambo kazi na tu kuiga na pasting nini phpMyAdmin alivyofanya. 614 00:36:01,050 --> 00:36:04,150 Lakini meza Unda amri ni kile tu kunyongwa, na hapa ni meza yangu. 615 00:36:04,150 --> 00:36:11,370 Hebu kwenda mbele sasa na kutumia SQL ghafi kuliko oversimplify kwa kubonyeza tab Ingiza. 616 00:36:11,370 --> 00:36:15,040 Hebu kufanya Insert KATIKA nyumba, 617 00:36:15,040 --> 00:36:22,230 na mimi nina kwenda kusema jina ya nyumba ataenda kuwa na thamani ya 'Mather'. 618 00:36:22,230 --> 00:36:24,790 Hiyo ni. Syntax Hii ni kidogo zaidi cryptic. 619 00:36:24,790 --> 00:36:26,660 Hii ni jina la mashamba tunataka Insert. 620 00:36:26,660 --> 00:36:30,390 Haya ni maadili tunataka kuingiza katika mashamba hayo. Hebu bofya Go. 621 00:36:30,390 --> 00:36:34,410 1 mstari kuingizwa sekondi 0.02. Hebu bofya Vinjari sasa. 622 00:36:34,410 --> 00:36:42,020 >> Taarifa kama mimi bonyeza Browse, kuna Mather, ambaye ni ID na automatisering namba 1. 623 00:36:42,020 --> 00:36:45,000 Hebu kufanya mwingine mmoja. Hebu kwenda katika tab SQL. 624 00:36:45,000 --> 00:36:52,950 Insert KATIKA nyumba. jina la nyumba ataenda kuwa na thamani ya Pfoho na kadhalika. 625 00:36:52,950 --> 00:36:56,350 Go. Na siwezi kuendelea kufanya hii tena na tena na tena. 626 00:36:56,350 --> 00:36:59,470 Au kama wewe kupata kuchoka kwa kutumia phpMyAdmin, unaweza kutumia tu tab Insert 627 00:36:59,470 --> 00:37:01,000 na si kuwa na aina SQL ghafi. 628 00:37:01,000 --> 00:37:04,690 Unaweza tu bang ni nje kwa haraka zaidi kwa kuandika, kwa mfano, Currier, Ingieni, 629 00:37:04,690 --> 00:37:07,610 na sasa kama sisi bonyeza Browse, kuna Currier na ID ya 3. 630 00:37:07,610 --> 00:37:09,920 Hivyo hii ni nini maana sisi na increment auto-. 631 00:37:09,920 --> 00:37:12,280 Lakini sasa inabidi kurekebisha kitu katika wanafunzi. 632 00:37:12,280 --> 00:37:16,240 Katika wanafunzi kile lazima data aina ya shamba nyumba sasa kuwa? 633 00:37:16,240 --> 00:37:19,450 Ni lazima kuwa int, haki? 634 00:37:19,450 --> 00:37:23,950 Hivyo Lengo hapa ni sababu nje, inayojulikana kama normalize, meza 635 00:37:23,950 --> 00:37:27,940 hivyo kwamba hatuwezi kuhifadhi habari redundantly yoyote ya meza yangu. 636 00:37:27,940 --> 00:37:31,130 Na tena, njia tulipokuwa kwenye hapa itasema Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather, Mather, Pfoho, Pfoho, Pfoho, Pfoho, ambayo ni sana redundant 638 00:37:34,220 --> 00:37:36,240 katika suala la israfu ya chars. 639 00:37:36,240 --> 00:37:40,820 Hivyo basi mimi kwenda mbele na kubadilisha hii kwa kubonyeza Muundo, 640 00:37:40,820 --> 00:37:44,620 na napenda kwenda mbele na kuangalia mbali shamba nyumba, bonyeza lugha, 641 00:37:44,620 --> 00:37:46,990 na sasa mimi naenda kubadili hili kuwa int. 642 00:37:46,990 --> 00:37:49,490 255 ni tena husika. 643 00:37:49,490 --> 00:37:54,010 Hebu kwenda mbele na kusema kwamba faini kama ni bado null. Ila. 644 00:37:54,010 --> 00:37:55,870 Sasa wanafunzi meza imebadilishwa kwa mafanikio, 645 00:37:55,870 --> 00:37:59,090 na ilani tena nyumba ni int. 646 00:37:59,090 --> 00:38:02,220 Kama kando, kupuuza idadi katika mabano linapokuja ints. 647 00:38:02,220 --> 00:38:03,770 >> Hii ni kwa sababu ya urithi. 648 00:38:03,770 --> 00:38:06,920 Nyuma kwa siku wakati hawakuwa na GUIs, wewe badala yake alikuwa mstari amri mazingira, 649 00:38:06,920 --> 00:38:11,580 10 na 11 kwa mtiririko huo maalum ngapi wahusika unapaswa kuonyesha 650 00:38:11,580 --> 00:38:13,950 katika dirisha terminal kwa kweli kuonyesha mashamba. 651 00:38:13,950 --> 00:38:19,150 Ina chochote cha kufanya na urefu kidogo ya shamba halisi, hivyo tutaweza tu kupuuza kwamba kwa sasa. 652 00:38:19,150 --> 00:38:20,990 Sasa mimi kwenda katika meza hii. 653 00:38:20,990 --> 00:38:24,610 Na kama Daudi anaishi katika Mather, nyumba isiwe 0, 654 00:38:24,610 --> 00:38:27,350 ambayo ni int default thamani karibu null. 655 00:38:27,350 --> 00:38:29,810 Anapaswa kuishi katika nyumba 1. 656 00:38:29,810 --> 00:38:36,870 Hebu kiholela kusema kwamba Mike maisha katika Pfoho, hivyo nyumba namba 2. 657 00:38:36,870 --> 00:38:40,160 Sasa meza yangu inaonekana kidogo zaidi cryptic. 658 00:38:40,160 --> 00:38:41,960 Lakini fikiria ufanisi. 659 00:38:41,960 --> 00:38:44,860 Mimi sasa kutumia bits 32 tu kwa kutambua nyumba, 660 00:38:44,860 --> 00:38:49,530 ambayo ina maana kuna tu 1 kisheria ufafanuzi wa nyumba yangu Mather na Pfoho 661 00:38:49,530 --> 00:38:52,090 na kwamba katika meza ya nyumba. 662 00:38:52,090 --> 00:38:55,880 Hivyo kama nataka sasa rejoin mbao hizo, kufikiria njia hii. 663 00:38:55,880 --> 00:39:01,980 Hapa nina wanafunzi wangu meza, na upande wa kulia kuna idadi hii, 1 na 2. 664 00:39:01,980 --> 00:39:04,180 1 ni Mather, 2 ni Pfoho. 665 00:39:04,180 --> 00:39:08,580 Tuna idadi wale sawa katika meza hii nyingine, ambayo inaitwa nyumba, 666 00:39:08,580 --> 00:39:11,020 1 na 2 na 3 kwa nyumba hizo 3. 667 00:39:11,020 --> 00:39:14,990 Nini sisi sasa wanataka kufanya ni kuwa na uwezo katika kanuni, PHP na SQL, 668 00:39:14,990 --> 00:39:18,800 kwa aina ya kujiunga tena mbao hizo, ambapo kama hawa ni wanafunzi na hizi ni nyumba, 669 00:39:18,800 --> 00:39:22,050 tunataka namna fulani kuchanganya yao ili 1 yanaendana na 1, 670 00:39:22,050 --> 00:39:25,670 2 yanaendana na 2, na ili tuweze kufikiri ambapo Daudi 671 00:39:25,670 --> 00:39:28,000 na ambapo Mike na ambapo kila mtu mwingine anaishi. 672 00:39:28,000 --> 00:39:31,850 Ili kufanya hivi tunaweza kutekeleza swala SQL kama zifuatazo. 673 00:39:31,850 --> 00:39:40,470 CHAGUA * KUTOKA wanafunzi JOIN nyumba ILIYO - 674 00:39:40,470 --> 00:39:43,000 Na sasa mashamba nini tunataka kujiunga juu? 675 00:39:43,000 --> 00:39:49,520 Hivyo students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> cryptic kidogo, lakini sehemu hii ina maana halisi kujenga mpya ya muda meza 677 00:39:54,150 --> 00:39:56,690 hiyo ni matokeo ya kujiunga na wanafunzi na nyumba. 678 00:39:56,690 --> 00:40:00,340 Na jinsi gani unataka kuchanganya tips ya vidole yangu hapa? 679 00:40:00,340 --> 00:40:05,280 Kuweka wanafunzi 'nyumba uwanja sawa kwa nyumba' ID shamba. 680 00:40:05,280 --> 00:40:10,220 Na kama mimi sasa bofya Nenda, mimi kupata nyuma hasa kile walitarajia. 681 00:40:10,220 --> 00:40:15,890 Daudi ni katika Mather, Mike ni katika Pfoho, na mimi pia kuona vitambulisho vya kipekee. 682 00:40:15,890 --> 00:40:18,640 Lakini uhakika ni sasa nina meza kamili. 683 00:40:18,640 --> 00:40:23,020 Na hivyo takeaway hapa kwa pset 7 au kweli kwa ajili ya mradi wa mwisho: 684 00:40:23,020 --> 00:40:25,830 Kama wewe kujua kwamba wewe ni hifadhi yoyote kipande cha habari redundantly, 685 00:40:25,830 --> 00:40:28,850 kama ni nyumba, labda ni mji, jimbo, na ZIP 686 00:40:28,850 --> 00:40:32,050 ambapo ZIP unaweza kawaida lakini si daima kutumika kama kitambulisho kipekee, 687 00:40:32,050 --> 00:40:35,810 kufanya kwenda njia ya mazoezi ya kiakili na kisha na kitu kama phpMyAdmin 688 00:40:35,810 --> 00:40:40,660 ya factoring nje data kwamba kawaida kwa sababu hasa kama tovuti yako anapata zaidi pamoja na kutumika 689 00:40:40,660 --> 00:40:45,440 na maarufu zaidi, hii ni jinsi gani kuhakikisha kwamba kila kitu ni super haraka, 690 00:40:45,440 --> 00:40:51,930 kwa kutoa database kama mwanga wengi kama kwa uniqueness iwezekanavyo. 691 00:40:51,930 --> 00:40:53,860 Hiyo ilikuwa mengi. 692 00:40:53,860 --> 00:40:59,010 Maswali yoyote? Wote haki. Hebu kuchukua mapumziko 5-dakika huko na kujikusanya. 693 00:41:01,600 --> 00:41:03,540 Wote haki. 694 00:41:03,540 --> 00:41:08,680 Ufuatao ni mfano kwamba ilitumika baadhi ya miaka iliyopita wakati mimi alichukua CS161, 695 00:41:08,680 --> 00:41:10,960 ambayo ni ya uendeshaji wa mifumo ya darasa katika chuo 696 00:41:10,960 --> 00:41:15,160 ambayo inajulikana kwa kuwa ajabu lakini kiasi mambo ya kazi, 697 00:41:15,160 --> 00:41:19,810 na inalenga kweli juu ya baadhi ya matatizo ngazi ya chini kwamba kina katika mifumo ya uendeshaji 698 00:41:19,810 --> 00:41:22,700 na pia hata katika ulimwengu wa database. 699 00:41:22,700 --> 00:41:27,040 >> hadithi kwamba aliambiwa na profesa wangu, Margo Seltzer, kwamba mwaka ilikuwa kama ifuatavyo. 700 00:41:27,040 --> 00:41:30,990 Tuseme kwamba una kidogo Dorm friji kwa ajili yenu na roommate yako 701 00:41:30,990 --> 00:41:34,030 na wote wawili kwa kweli kama maziwa. 702 00:41:34,030 --> 00:41:36,360 Hivyo wewe kuja nyumbani kutoka darasa ya siku moja, roommate yako ni bado kuna, 703 00:41:36,360 --> 00:41:39,650 wewe kufungua friji, na wewe kutambua, "Oh damn, tuko nje ya maziwa." 704 00:41:39,650 --> 00:41:42,070 Hivyo wewe karibu fridge, wewe kutembea katika barabara kwa CVS 705 00:41:42,070 --> 00:41:45,830 na kupata katika mistari inazidi muda mrefu ya kununua baadhi ya maziwa katika CVS. 706 00:41:45,830 --> 00:41:48,470 Wakati huo huo, roommate yako amerudi nyumbani kutoka kwake au darasa lake, 707 00:41:48,470 --> 00:41:51,690 anakuja katika chumba, anafungua friji kweli kutaka baadhi maziwa, 708 00:41:51,690 --> 00:41:54,130 kuufungua friji na, "Damn, hakuna maziwa." 709 00:41:54,130 --> 00:41:57,890 Hivyo yeye au yeye anafunga fridge, anatembea nje ya mlango, na huenda kwa ABP 710 00:41:57,890 --> 00:42:00,910 au mahali fulani nyingine kuliko CVS ambapo wewe si kwenda mapema ndani ya kila mmoja 711 00:42:00,910 --> 00:42:02,790 kwenda kupata baadhi ya maziwa. 712 00:42:02,790 --> 00:42:04,820 Bila shaka dakika chache baadaye, wote wewe kupata kurudi nyumbani 713 00:42:04,820 --> 00:42:07,740 na sasa una mara mbili kama vile maziwa kama wewe kweli walitaka. 714 00:42:07,740 --> 00:42:10,670 Na kuwa maziwa, sasa ni kwenda kwenda mbaya kwa sababu wewe kama maziwa 715 00:42:10,670 --> 00:42:14,200 lakini wewe si kweli kama maziwa, hivyo sasa una sana maziwa, hivyo ni kwenda sour. 716 00:42:14,200 --> 00:42:16,830 Hii ni kubwa, kubwa hali. 717 00:42:16,830 --> 00:42:22,920 Je, inaweza kuwa na kutatuliwa tatizo hili kama ungekuwa kwanza roommate nyumbani? Ndiyo. 718 00:42:22,920 --> 00:42:25,970 [Mwanafunzi] Unapaswa wameondoka note. [Kicheko] 719 00:42:25,970 --> 00:42:28,090 Nzuri. Unapaswa wameondoka note. 720 00:42:28,090 --> 00:42:32,320 Unapaswa kuwa na kuweka note Post-au kama akisema, "Gone kwa maziwa," 721 00:42:32,320 --> 00:42:36,830 na kisha roommate yako conceptually ingekuwa imefungwa nje ya kweli ya kufanya hivyo. 722 00:42:36,830 --> 00:42:38,010 Au unaweza kwenda 1 hatua zaidi. 723 00:42:38,010 --> 00:42:41,060 Unaweza literally lock jokofu na baadhi ya aina ya kufuli, 724 00:42:41,060 --> 00:42:44,870 na sasa roommate yako mapenzi halisi kuwa imefungwa nje ya friji. 725 00:42:44,870 --> 00:42:48,520 Kama sisi generalize nyuma ya programu, 726 00:42:48,520 --> 00:42:51,610 unaweza karibu kufikiri ya friji kama baadhi ya aina ya kutofautiana au struct, 727 00:42:51,610 --> 00:42:53,500 aina fulani ya chombo kwa taarifa. 728 00:42:53,500 --> 00:42:58,290 tatizo la msingi hapa ni kwamba wote wewe waliruhusiwa kukagua 729 00:42:58,290 --> 00:43:02,370 au kusoma hali ya muundo huu data, 730 00:43:02,370 --> 00:43:08,050 lakini wewe ni kutazamwa kwa nyakati tofauti na bado wote wewe alifanya uamuzi 731 00:43:08,050 --> 00:43:11,920 msingi juu ya hali ya dunia katika muda mfupi wale tofauti kwa wakati. 732 00:43:11,920 --> 00:43:15,570 Hivyo alikuwa na wewe umefungwa jokofu, wewe ingekuwa angalau kuepukwa roommate yako 733 00:43:15,570 --> 00:43:19,070 kutoka kuwa imekuwa na uwezo wa kukagua hali ya dunia, 734 00:43:19,070 --> 00:43:22,530 hivyo yeye au yeye hakuweza kuwa alifanya kwamba uamuzi huo. 735 00:43:22,530 --> 00:43:25,780 Hivyo database, kama ni zamu nje, kuwa na tatizo hili mara kwa mara. 736 00:43:25,780 --> 00:43:31,050 >> Hebu tuone kama tunaweza kujenga mazingira. 737 00:43:31,050 --> 00:43:34,310 Tuseme kwamba wewe ni aina ya mtu mbaya na kwenda Benki Kuu ya Marekani 738 00:43:34,310 --> 00:43:37,950 au moja ya maeneo mengine katika mraba kwamba kuwa wanandoa ATM kwa upande upande, 739 00:43:37,950 --> 00:43:41,200 na kwa namna fulani wewe figured nje ya jinsi duplicate kadi za ATM - si wote ngumu. 740 00:43:41,200 --> 00:43:42,730 Ni tu strip sumaku. 741 00:43:42,730 --> 00:43:45,180 Na hivyo nini unataka kujaribu kufanya ni kucheza mchezo huu 742 00:43:45,180 --> 00:43:49,060 ambapo wewe kuweka 1 kadi katika mashine 1, mwingine kadi katika mashine nyingine, 743 00:43:49,060 --> 00:43:51,980 na wewe kimsingi wanataka kujaribu kuchukua fedha wakati huo huo, 744 00:43:51,980 --> 00:43:54,930 kwa sababu kufikiria hadithi kwamba huenda kama ifuatavyo. 745 00:43:54,930 --> 00:43:57,350 mashine ya kushoto inachukua kadi yako na PIN yako, 746 00:43:57,350 --> 00:44:00,240 na kisha wewe sema, "Nipe $ 100." 747 00:44:00,240 --> 00:44:04,790 ATM ni programmed kwa kwanza kufanya juu ya kuchagua database yake au sawa - 748 00:44:04,790 --> 00:44:10,780 chochote database ni kutumia - kuona haina mtumiaji huyu angalau $ 100 katika akaunti yake au yake? 749 00:44:10,780 --> 00:44:16,180 Ikiwa hivyo, basi mate nje $ 100 na $ 100 kutoka Ondoa mizani zao. 750 00:44:16,180 --> 00:44:20,470 Lakini bila shaka kama kuna nyingi mashine hapa au njia nyingi za ukaguzi 751 00:44:20,470 --> 00:44:23,560 hali ya ulimwengu kuwa, kuba benki, ili kuona kiasi cha fedha una, 752 00:44:23,560 --> 00:44:26,780 kudhani kwamba tu kwa bahati mashine upande wa kushoto na kulia 753 00:44:26,780 --> 00:44:30,140 wote kuuliza swali wakati takribani sawa na kwa wakati. 754 00:44:30,140 --> 00:44:34,160 >> Na hakika hii inaweza kutokea. ATM ni kompyuta siku hizi. 755 00:44:34,160 --> 00:44:37,670 Hivyo kama mashine kushoto anasema, "Ndiyo, una angalau $ 100," 756 00:44:37,670 --> 00:44:42,150 wakati huo huo mashine kulia anasema, "Ndiyo, una angalau $ 100," 757 00:44:42,150 --> 00:44:47,420 kisha wote wawili kuendelea na mipango yao ya kumaliza na kweli mate nje $ 100 758 00:44:47,420 --> 00:44:50,820 na kusema, "Hapo awali alikuwa na $ 200." 759 00:44:50,820 --> 00:44:54,890 "Hebu update variable kwa sasa kuwa $ 100 kushoto katika akaunti." 760 00:44:54,890 --> 00:44:58,780 Lakini kama wote wawili kuwa checked masalio ya akaunti yako na kukuta kwamba ni $ 200 761 00:44:58,780 --> 00:45:02,000 na wote wawili kisha kufanya math na kusema 200-100, 762 00:45:02,000 --> 00:45:06,990 mashine na uwezekano ametema mbili bili $ 100 katika kila mashine, 763 00:45:06,990 --> 00:45:11,360 lakini wameweza tu updated Jumla akaunti yako ya usawa kuwa $ 100. 764 00:45:11,360 --> 00:45:15,130 Kwa maneno mengine, umechukua nje $ 200, lakini kwa sababu wao kukaguliwa hali ya dunia 765 00:45:15,130 --> 00:45:18,840 wakati huo huo na kisha alifanya uamuzi wa msingi juu ya thamani ya kwamba, 766 00:45:18,840 --> 00:45:21,930 wapate kufanya math hatimaye kwa usahihi. 767 00:45:21,930 --> 00:45:25,520 Hivyo katika hali ya benki pia kweli unataka kuwa na aina fulani ya lockout 768 00:45:25,520 --> 00:45:28,450 hivyo kwamba haraka kama wewe ve checked hali ya kutofautiana baadhi 769 00:45:28,450 --> 00:45:31,220 kwamba kweli ni muhimu, kama akaunti mizani yako, 770 00:45:31,220 --> 00:45:36,070 usiruhusu mtu mwingine kufanya maamuzi kwa kuzingatia kwamba mpaka wewe ni kufanyika kufanya kitu yako, 771 00:45:36,070 --> 00:45:38,920 ambapo katika kesi hii ni ATM upande wa kushoto. 772 00:45:38,920 --> 00:45:41,160 Funga kila mtu mwingine nje. 773 00:45:41,160 --> 00:45:44,650 Unaweza kweli kufikia athari katika michache ya njia tofauti. 774 00:45:44,650 --> 00:45:48,660 >> njia rahisi katika MySQL ni mstari wa SQL kwamba tuliyowapeni 775 00:45:48,660 --> 00:45:52,030 katika kuweka vipimo tatizo kwamba inaonekana hasa kama hii. 776 00:45:52,030 --> 00:45:57,420 Ingiza katika meza - chochote ni kuitwa - id, alama, na kushiriki, idadi ya hisa, 777 00:45:57,420 --> 00:45:59,660 maadili yafuatayo, kwa mfano. 778 00:45:59,660 --> 00:46:03,370 Kama si kusoma spec bado, huu ni mfano kuwashirikisha jinsi gani unaweza kwenda kuhusu 779 00:46:03,370 --> 00:46:07,340 kununua hisa 10 ya hisa hii senti kwa Rais Skroob, 780 00:46:07,340 --> 00:46:10,340 user ID ambao hutokea kwa kuwa namba 7? 781 00:46:10,340 --> 00:46:14,070 Hii inasema Insert KATIKA meza id zifuatazo, alama, na idadi ya hisa 782 00:46:14,070 --> 00:46:18,200 ya 7, 'DVN.V', na 10. 783 00:46:18,200 --> 00:46:21,510 Lakini - lakini, lakini, lakini - mstari wa pili ni moja muhimu. 784 00:46:21,510 --> 00:46:26,310 ILIYO duplicate KEY UPDATE hisa = hisa + MAADILI (hisa). 785 00:46:26,310 --> 00:46:28,350 Hivyo kabisa cryptic-kuangalia katika mtazamo wa kwanza. 786 00:46:28,350 --> 00:46:31,990 Lakini ukweli kwamba hoja hii SQL, hata ingawa Wraps kwenye mistari 2, 787 00:46:31,990 --> 00:46:35,920 ni 1 kwa muda mrefu swala, ina maana ni atomic 788 00:46:35,920 --> 00:46:41,000 kwa maana kwamba swala hili ama kuuawa wote kwa pamoja au si wakati wote. 789 00:46:41,000 --> 00:46:45,100 Na kwa ufafanuzi wa MySQL, kwamba ni jinsi gani wao kutekelezwa hoja hii. 790 00:46:45,100 --> 00:46:51,010 Ni kwa ufafanuzi katika mwongozo uhakika wa kutekeleza yote kwa mara moja au si wakati wote. 791 00:46:51,010 --> 00:46:54,020 motisha kwa ajili ya hii ni kama ifuatavyo. 792 00:46:54,020 --> 00:46:58,540 Kama katika kesi hii ni kujaribu kununua hisa 10 ya hisa, 793 00:46:58,540 --> 00:47:02,260 ni aina ya hadithi ileile kama maziwa, ni aina ya hadithi ileile kama ATM. 794 00:47:02,260 --> 00:47:04,970 >> Kama kufanya makosa ya si kutumia syntax 795 00:47:04,970 --> 00:47:09,610 lakini badala ya kuchagua kutoka orodha ya kuona hisa ngapi ya hisa hii senti 796 00:47:09,610 --> 00:47:13,750 haina Rais Skroob kuwa, na kudhani yeye ana hisa 10, 797 00:47:13,750 --> 00:47:19,330 na kisha baadhi kupasuliwa pili baadaye wewe kisha kufanya kauli UPDATE, 798 00:47:19,330 --> 00:47:24,810 ambayo ni mwingine taarifa katika SQL kwamba anasema kwenda mbele na kuongeza hisa 10 zaidi 799 00:47:24,810 --> 00:47:28,700 kwa 10 yake ya sasa ili walau jumla ni 20, 800 00:47:28,700 --> 00:47:33,490 Tatizo ni kwa sababu katika mifumo ya leo kwa sababu database na katika kompyuta ya leo 801 00:47:33,490 --> 00:47:35,990 una wasindikaji nyingi, nyingi cores - 802 00:47:35,990 --> 00:47:38,920 kwa maneno mengine, kompyuta unaweza literally kufanya mambo nyingi kwa mara moja - 803 00:47:38,920 --> 00:47:44,270 kuna dhamana hakuna kwamba SELECT yako na UPDATE yako katika kesi hii 804 00:47:44,270 --> 00:47:46,150 yanaenda kutokea nyuma kwa nyuma. 805 00:47:46,150 --> 00:47:49,140 Hivyo scenario mbaya itakuwa kufanya SELECT 806 00:47:49,140 --> 00:47:51,670 kuona hisa ngapi ya hii hisa senti haina Skroob kuwa, 807 00:47:51,670 --> 00:47:54,710 na kisha tu kwa bahati swala mwingine database ni kunyongwa - 808 00:47:54,710 --> 00:47:57,740 labda Skroob yake katika dirisha lingine browser kujaribu kununua hisa 10 809 00:47:57,740 --> 00:48:00,700 katika dirisha lingine kabisa, kiasi kama ATM - 810 00:48:00,700 --> 00:48:05,410 na kudhani kwamba swala mwingine anapata katika kati ya SELECT na UPDATE. 811 00:48:05,410 --> 00:48:10,210 Ni inaweza kuwa kesi hiyo Skroob sasa hupoteza baadhi idadi ya hisa 812 00:48:10,210 --> 00:48:14,340 kwa sababu mchakato mwingine ni ukaguzi hali ya ulimwengu wake, 813 00:48:14,340 --> 00:48:17,800 au yeye anapata hisa zaidi ya anapaswa kuwa. 814 00:48:17,800 --> 00:48:23,250 Sisi si kwenda katika maelezo ya nini hasa wale fulani hadithi mistari itakuwa, 815 00:48:23,250 --> 00:48:28,380 lakini uhakika ni kama wewe na kuangalia thamani ya vigezo na kisha kufanya uamuzi, 816 00:48:28,380 --> 00:48:32,500 kama kuna hatari ya mtu mwingine kufanya kitu katika kati ya wale kauli 2, 817 00:48:32,500 --> 00:48:36,220 kama inaweza kutokea katika mifumo multiprocessor, katika mifumo multicore, 818 00:48:36,220 --> 00:48:41,220 kompyuta na uwezo wa kufanya mambo nyingi kwa mara moja, mambo mabaya yanaweza kutokea 819 00:48:41,220 --> 00:48:44,530 akaunti ya benki kama kuwa debited kimakosa, kununua mara mbili kama vile maziwa, 820 00:48:44,530 --> 00:48:46,730 au katika kesi hii idadi ya makosa ya hisa. 821 00:48:46,730 --> 00:48:48,370 Lakini kuna njia rahisi kufikiri juu ya hili. 822 00:48:48,370 --> 00:48:53,290 >> Ni zinageuka kuwa SQL pia inasaidia, kama wewe configure meza yako kwa usahihi, 823 00:48:53,290 --> 00:48:56,920 kitu kinachoitwa mashirikiano, ambayo Ningependa kusema ni kweli hata rahisi kuelewa 824 00:48:56,920 --> 00:49:00,650 kuliko huu, lakini siyo 1-mjengo, hivyo ni kweli kidogo zaidi kushiriki. 825 00:49:00,650 --> 00:49:04,960 Kuna literally taarifa katika SQL kuitwa START manunuzi. 826 00:49:04,960 --> 00:49:08,300 Tu kama kuna CHAGUA, UPDATE, Insert, FUTA, na JOIN na rundo la wengine, 827 00:49:08,300 --> 00:49:10,970 kuna maneno kama manunuzi START. 828 00:49:10,970 --> 00:49:13,560 Na nini basi kufanya katika muktadha wa pset 7 - 829 00:49:13,560 --> 00:49:17,270 huna kufanya hili kwa pset 7; ni wazi alikana kama si muhimu, 830 00:49:17,270 --> 00:49:18,830 lakini kwa ajili ya miradi ya mwisho inaweza kuwa na manufaa - 831 00:49:18,830 --> 00:49:22,820 kama simu swala ya manunuzi START na kisha mwingine swala 832 00:49:22,820 --> 00:49:25,620 na kisha mwingine swala na kisha mwingine, mwingine, na mwingine, 833 00:49:25,620 --> 00:49:31,860 maswali hayo si kweli kuwa kunyongwa mpaka wewe piga taarifa SQL kutenda, 834 00:49:31,860 --> 00:49:37,220 ambapo kiwango, kama ni 2 kauli au matamshi 20, wao wote ni lazima ifanyike kwa mara moja, 835 00:49:37,220 --> 00:49:42,770 ambayo ina maana hakuna mtu mwingine anaweza ajali kununua sana maziwa au debit sana fedha 836 00:49:42,770 --> 00:49:46,340 au kununua hisa nyingi sana kwa sababu wote wa maswali yako nitafanya 837 00:49:46,340 --> 00:49:48,410 nyuma kwa nyuma kwa nyuma kwa nyuma. 838 00:49:48,410 --> 00:49:51,580 Na hii ni super muhimu, hasa wakati wewe ni kufanya kitu kama hiki. 839 00:49:51,580 --> 00:49:54,900 Huu ni mfano holela kwamba anasema hebu update akaunti ya benki 840 00:49:54,900 --> 00:50:00,200 kwa kuweka uwiano sawa na usawa - $ 1000 ambapo idadi ya akaunti ni 2. 841 00:50:00,200 --> 00:50:04,260 Na kisha kauli ya pili sasa hebu amana kwamba $ 1000 842 00:50:04,260 --> 00:50:07,310 ndani ya mtu mwingine ya akaunti ya benki ambaye akaunti namba ni 1. 843 00:50:07,310 --> 00:50:10,400 >> Kwa maneno mengine, hii ni mfano kamili ya wapi unataka kuhakikisha 844 00:50:10,400 --> 00:50:13,590 kwamba wote wa taarifa hizi za kutokea au si wakati wote 845 00:50:13,590 --> 00:50:15,450 kwa sababu vinginevyo mteja ni kwenda kupata Star 846 00:50:15,450 --> 00:50:17,670 na wewe ni kwenda kuchukua fedha zao na si mahali pengine amana, 847 00:50:17,670 --> 00:50:20,470 au benki ni kwenda kupata Star ambapo utaenda, hukuiweka fedha 848 00:50:20,470 --> 00:50:23,140 lakini si kweli Ondoa ni kutoka akaunti ya mtumiaji. 849 00:50:23,140 --> 00:50:25,810 Kwa hiyo unataka wote wawili na nitafanya pamoja. 850 00:50:25,810 --> 00:50:29,140 Hivyo inaingia katika shughuli dunia. 851 00:50:29,140 --> 00:50:31,360 Basi hiyo ni kitu kuweka katika nyuma ya akili yako, 852 00:50:31,360 --> 00:50:34,710 sio sana kwa madhumuni ya mradi tu wa mwisho, 853 00:50:34,710 --> 00:50:36,700 lakini kama unataka kuchukua mradi wako wa mwisho mahali fulani, 854 00:50:36,700 --> 00:50:39,040 kama unataka kuanzisha baadhi ya kampuni ya karibu yake, 855 00:50:39,040 --> 00:50:41,270 kama unataka kutatua tatizo baadhi ya kundi mwanafunzi juu ya chuo 856 00:50:41,270 --> 00:50:45,210 na kweli kuwa hai, hai tovuti, hizi ni aina ya mende Mpole kwamba yanaweza kutokea 857 00:50:45,210 --> 00:50:49,480 kama huna kabisa kufikiri kwa nini inaweza kutokea kama watu 2 858 00:50:49,480 --> 00:50:54,190 ni kujaribu kupata tovuti yako kwa wakati huo katika muda halisi, 859 00:50:54,190 --> 00:50:56,890 ambapo maswali yao ili vinginevyo kupata interwoven. 860 00:50:58,840 --> 00:51:01,420 >> Tayari kwa baadhi JavaScript, teaser yake? 861 00:51:01,420 --> 00:51:04,320 Hii ni lugha yetu ya mwisho kwa muhula. Wote haki. 862 00:51:04,320 --> 00:51:09,940 Nashiriki, JavaScript inaonekana sana, sana, sana sawa na lugha 2, C na PHP, 863 00:51:09,940 --> 00:51:11,140 tumefanya hivi sasa. 864 00:51:11,140 --> 00:51:14,340 Hakuna JavaScript katika pset 7, lakini ni chombo muhimu incredibly 865 00:51:14,340 --> 00:51:18,840 linapokuja kufanya mtandao msingi miradi ya mwisho au kweli tu mtandao programu kwa ujumla zaidi. 866 00:51:18,840 --> 00:51:20,950 Hivyo maelezo ya haraka ya kitu kinachoitwa DOM. 867 00:51:20,950 --> 00:51:23,600 Hapa ni super rahisi mtandao ukurasa kwamba kweli tu anasema hello, dunia 868 00:51:23,600 --> 00:51:25,970 wote katika cheo na katika mwili. 869 00:51:25,970 --> 00:51:29,270 Kama indentation amekuwa akipendekeza kwa muda fulani, 870 00:51:29,270 --> 00:51:31,380 kuna shaka Hierarkia kwa kurasa za mtandao. 871 00:51:31,380 --> 00:51:34,220 Mimi naweza kuchora snippet hiyo ya HTML kama mti, 872 00:51:34,220 --> 00:51:37,470 Tafakari kwa majadiliano yetu ya miundo data katika C, kama ifuatavyo. 873 00:51:37,470 --> 00:51:40,710 Mimi na baadhi maalum mzizi nodi kuitwa nodi hati, 874 00:51:40,710 --> 00:51:43,650 na tutaweza kuona Analog ya hili katika JavaScript katika muda tu. 875 00:51:43,650 --> 00:51:48,330 mtoto wa kwanza na mtoto tu ya kwamba katika kesi hii ni tag HTML. 876 00:51:48,330 --> 00:51:49,880 Hakuna ramani moja kwa moja ya doctype. 877 00:51:49,880 --> 00:51:53,170 Hiyo ni kitu maalum, hivyo sisi lazima tu kupuuza linapokuja hii DOM, 878 00:51:53,170 --> 00:51:55,810 hii Object Kudhibiti Model mti. 879 00:51:55,810 --> 00:51:59,530 Ona kwamba HTML tag, ambayo nimekuwa depicted kiholela kama mstatili, 880 00:51:59,530 --> 00:52:02,890 ana watoto 2: kichwa na mwili. 881 00:52:02,890 --> 00:52:04,840 >> Wale ni vile vile kama inayotolewa mistatiri. 882 00:52:04,840 --> 00:52:08,970 Ni ya maana pictorially kwamba kichwa ni upande wa kushoto wa mwili. 883 00:52:08,970 --> 00:52:11,960 Kidokezo ni kwamba kichwa huja kwanza katika mti. 884 00:52:11,960 --> 00:52:14,910 Hivyo kuna kweli kuagiza kwa mti wakati kuteka ni kama hii, 885 00:52:14,910 --> 00:52:17,460 ingawa maumbo na whatnot ni holela. 886 00:52:17,460 --> 00:52:20,360 Mkuu wakati huo huo ana mtoto mmoja aitwaye cheo, 887 00:52:20,360 --> 00:52:25,170 na cheo kweli ina mtoto wake mwenyewe, ambayo ni "hello, dunia", 888 00:52:25,170 --> 00:52:32,210 ambayo mimi kwa makusudi akauchomoa kama Oval hapa kufanya ni tofauti kidogo kutoka mstatili. 889 00:52:32,210 --> 00:52:37,420 Haya ni mambo mistatili, ambapo hello, dunia ni kweli nodi maandishi. 890 00:52:37,420 --> 00:52:39,850 Hivyo ni nodi katika mti, lakini ni aina tofauti ya nodi 891 00:52:39,850 --> 00:52:41,730 hivyo mimi akauchomoa kiholela tofauti. 892 00:52:41,730 --> 00:52:45,000 Vile vile haina mwili na mtoto aitwaye hello, dunia kama vile, 893 00:52:45,000 --> 00:52:47,910 hivyo tofauti nodi ingawa wao ni bahati Nakala huo, 894 00:52:47,910 --> 00:52:52,100 lakini nimekuwa inayotolewa kwa kutumia umbo moja. Hivyo ambaye anajali? 895 00:52:52,100 --> 00:52:56,820 Naam, ni nini kizuri kuhusu HTML ni kwamba ni gani hii asili kihierarkia. 896 00:52:56,820 --> 00:53:01,010 Na nini kizuri kuhusu JavaScript na maktaba hasa kwamba ni hiari inapatikana 897 00:53:01,010 --> 00:53:07,120 na maarufu kama jQuery, unaweza navigate muundo mti hivyo kushangaza rahisi. 898 00:53:07,120 --> 00:53:11,790 Yoyote ya mambo sisi alivyofanya katika C na kuyatumia na miti na traversing recursing juu ya nodes 899 00:53:11,790 --> 00:53:15,300 kushoto mtoto kwa mtoto wa kulia, kwa ghafla tunaweza aina ya kuchukua kwa nafasi 900 00:53:15,300 --> 00:53:19,450 kama kuwa kushangaza mwangaza kama si kidogo frustrating 901 00:53:19,450 --> 00:53:22,470 lakini si karibu njia bora ya kwenda kuhusu programu. 902 00:53:22,470 --> 00:53:24,470 Na hivyo kwa hizi ngazi za juu lugha kama JavaScript 903 00:53:24,470 --> 00:53:28,340 tutaweza kuwa na uwezo navigate mti huu zaidi intuitively. 904 00:53:28,340 --> 00:53:30,430 >> Na hakika syntax ni kwenda kuwa familiar kabisa. 905 00:53:30,430 --> 00:53:32,950 Kama wewe sijawahi kuona JavaScript kabla, hii ni kumbukumbu ya kweli nice 906 00:53:32,950 --> 00:53:35,910 kutoka folks Mozilla, watu ambao kufanya Firefox, 907 00:53:35,910 --> 00:53:38,370 hivyo kujisikia huru na kuvinjari kwamba kwa urahisi. 908 00:53:38,370 --> 00:53:41,590 Nini utapata - na hizi slides ni kufanana na kile sisi kutumika siku nyingine - 909 00:53:41,590 --> 00:53:44,030 vile vile, kuu ni gone. 910 00:53:44,030 --> 00:53:47,010 Hivyo wakati wewe kuandika mpango katika JavaScript, hakuna kazi kuu. 911 00:53:47,010 --> 00:53:48,690 Wewe tu kuanza kuandika code. 912 00:53:48,690 --> 00:53:51,660 Lakini tofauti muhimu kati ya JavaScript na C na PHP 913 00:53:51,660 --> 00:53:55,890 ni kwamba wakati ambapo C na PHP hivi sasa wamenyongwa server upande 914 00:53:55,890 --> 00:53:59,180 na appliance katika kesi hii au zaidi kwa ujumla na server, 915 00:53:59,180 --> 00:54:04,270 JavaScript kwa kubuni ni kawaida kunyongwa kwa browser. 916 00:54:04,270 --> 00:54:08,440 Kwa maneno mengine, unaweza kuandika JavaScript code, kama sisi ni juu ya, 917 00:54:08,440 --> 00:54:13,080 kwenye server katika appliance, lakini wewe ni pamoja na hiyo kati ya HTML yako, kati ya CSS yako, 918 00:54:13,080 --> 00:54:16,100 kati ya GIFs yako na PNGs yako na JPEGs yako 919 00:54:16,100 --> 00:54:19,170 hivyo kwamba wakati mtumiaji ziara mtandao wako ukurasa, kama wewe ni kutumia JavaScript, 920 00:54:19,170 --> 00:54:21,770 kwamba code JavaScript huja kutoka server browser, 921 00:54:21,770 --> 00:54:24,540 na ni kweli kwamba browser executes yake. 922 00:54:24,540 --> 00:54:27,960 Hivyo hii ina maana ya maana kwa ajili ya mali hata miliki. 923 00:54:27,960 --> 00:54:32,600 Ni aina ya silly hata kufikiri kuhusu kulinda IP yako linapokuja JavaScript code 924 00:54:32,600 --> 00:54:37,560 kwa sababu kwa asili ya lugha ya anapata kunyongwa kawaida browser upande. 925 00:54:37,560 --> 00:54:40,360 >> Unaweza obfuscate yake, ambayo ina maana unaweza kufanya ni kuangalia mambo na ugly 926 00:54:40,360 --> 00:54:45,400 na hakuna whitespace, kutisha variable majina, kwa kufanya ni vigumu kwa watu kuiba IP yako, 927 00:54:45,400 --> 00:54:48,120 lakini muhimu ni kwamba ni kunyongwa browser upande. 928 00:54:48,120 --> 00:54:51,790 Hata ingawa kama upande kando JavaScript inaweza kutumika server, 929 00:54:51,790 --> 00:54:54,480 matumizi ya kawaida kesi hivi sasa bado ni browser. 930 00:54:54,480 --> 00:54:59,800 Na hapa ni nini inaonekana kama. Hapa ni kama-kama-mwingine mwingine kujenga tu kama C, kama PHP. 931 00:54:59,800 --> 00:55:02,420 Hapa ni kujieleza Boolean wakati wewe "au" mambo 2 pamoja. 932 00:55:02,420 --> 00:55:04,330 Hapa ni wakati wewe "na" mambo 2 pamoja. 933 00:55:04,330 --> 00:55:08,300 Hapa ni taarifa kubadili, ambayo ni sawa na PHP 934 00:55:08,300 --> 00:55:10,810 katika kwamba unaweza kubadili kwa aina mbalimbali za maadili. 935 00:55:10,810 --> 00:55:15,180 Matanzi vile vile kuwa kwa matanzi hapa, ambayo ni muundo identically kwa nini tumekuwa kuona mbele. 936 00:55:15,180 --> 00:55:18,110 Wakati matanzi; tumekuwa got kufanya wakati matanzi. 937 00:55:18,110 --> 00:55:20,290 Vigezo, milele hivyo tofauti kidogo. 938 00:55:20,290 --> 00:55:24,560 Huwezi kutangaza vigezo kama wewe kufanya katika PHP na C, 939 00:55:24,560 --> 00:55:27,860 lakini vile vile ni JavaScript weakly typed. 940 00:55:27,860 --> 00:55:32,730 Huwezi kutaja int au kuelea au kamba au kitu kama hicho kwa kawaida. 941 00:55:32,730 --> 00:55:34,240 Unaweza kutaja var. 942 00:55:34,240 --> 00:55:38,040 Huna kutaja var, lakini ina maana kama huna. 943 00:55:38,040 --> 00:55:42,000 Kwa kawaida kama wewe omit var, ajali kujenga variable kimataifa badala ya mitaa. 944 00:55:42,000 --> 00:55:46,420 Hivyo basi mimi kupendekeza kwamba wewe daima karibu tu kusema var na kisha jina la kutofautiana. 945 00:55:46,420 --> 00:55:48,740 Ni si aina, ni tu var kwa kutofautiana. 946 00:55:48,740 --> 00:55:52,930 Hii itakuwa mfano, kama ni 123 au "hello, dunia". 947 00:55:52,930 --> 00:55:58,910 Arrays ni sasa na syntactically sawa na PHP. 948 00:55:58,910 --> 00:56:03,690 Mimi itabidi kusema idadi var na kisha mimi kutumia mabano mraba tena kutangaza variable 949 00:56:03,690 --> 00:56:08,870 ambao ni aina safu ambayo ina idadi haya hasa katika hilo kutengwa kwa koma. 950 00:56:08,870 --> 00:56:11,740 Na kisha mwisho, hii ni moja tu kwamba kweli inaonekana tofauti. 951 00:56:11,740 --> 00:56:16,700 Kumbuka kwamba katika PHP sisi ingekuwa kutekelezwa safu associative kwa mwanafunzi 952 00:56:16,700 --> 00:56:20,220 kama Zamyla kwamba ili kuangalia kama hii, ambapo variable inaitwa mwanafunzi. 953 00:56:20,220 --> 00:56:23,370 mabano mraba maana hiyo inakuja safu. 954 00:56:23,370 --> 00:56:28,500 >> ukweli kwamba mimi si kutumia fahirisi numeric lakini masharti - id, nyumba, na jina - 955 00:56:28,500 --> 00:56:30,990 ina maana kwamba hii ni safu associative, 956 00:56:30,990 --> 00:56:34,490 na haya mishale na alama ya usawa na bracket angled 957 00:56:34,490 --> 00:56:37,310 ina maana kwamba muhimu ni "id", thamani ni 1; 958 00:56:37,310 --> 00:56:39,310 muhimu ni "nyumba", thamani ni Winthrop Nyumba; 959 00:56:39,310 --> 00:56:41,800 muhimu ni "jina", thamani ni Zamyla Chan. 960 00:56:41,800 --> 00:56:47,110 Hivyo kuna 3 funguo ndani ya safu hii associative, ambayo kila mmoja ana thamani yake mwenyewe. 961 00:56:47,110 --> 00:56:52,880 Tumeona kwamba katika pset 7, au hivi karibuni mapenzi, katika JavaScript wazo moja, 962 00:56:52,880 --> 00:56:55,220 lakini ni kwenda kuangalia kama hii. 963 00:56:55,220 --> 00:57:00,070 Hivyo var mwanafunzi - hakuna ishara ya dola na bila kutaja aina bado lakini var - 964 00:57:00,070 --> 00:57:05,860 sawa na kisha kufungua braces curly kwa sababu katika JavaScript wakati una jozi thamani muhimu, 965 00:57:05,860 --> 00:57:08,900 wewe kweli matumizi ya kitu kinachoitwa kitu. 966 00:57:08,900 --> 00:57:13,490 Na wale ambao hawakuwa kuchukua APCS au kama anaweza kukumbuka vitu kutoka Java 967 00:57:13,490 --> 00:57:15,140 au lugha zinazofanana. 968 00:57:15,140 --> 00:57:17,880 JavaScript si Java, kwanza ya yote. 969 00:57:17,880 --> 00:57:21,600 Ilikuwa makusudi kubuni uamuzi miaka iliyopita na kubisha mbali kitu kingine kwamba alikuwa maarufu, 970 00:57:21,600 --> 00:57:25,640 jina lake, hata kama hana uhusiano msingi kwa java yenyewe. 971 00:57:25,640 --> 00:57:31,490 JavaScript ina vitu, na wewe kujenga nao kwa njia ya nukuu brace curly. 972 00:57:31,490 --> 00:57:36,710 Vitu katika JavaScript ni kiasi pretty sawa na arrays associative katika PHP 973 00:57:36,710 --> 00:57:40,030 linapokuja data hifadhi ndani mwao. 974 00:57:40,030 --> 00:57:44,100 >> Lakini hata kwa nguvu zaidi katika JavaScript unaweza kujiunga kwa urahisi sana kazi 975 00:57:44,100 --> 00:57:48,040 ndani ya kitu, na ingawa unaweza kufanya hivyo katika lugha nyingine, 976 00:57:48,040 --> 00:57:50,040 ni kabisa dhana ya kawaida, kama tutaweza kuona. 977 00:57:50,040 --> 00:57:54,380 Kwa kifupi, kitu hii inawakilisha mwanafunzi, ambaye ni hasa Zamyla, 978 00:57:54,380 --> 00:58:00,380 na ni sawa conceptually, tu syntactically tofauti na hii. 979 00:58:00,380 --> 00:58:03,840 Hebu kweli matumizi JavaScript katika faili. 980 00:58:03,840 --> 00:58:05,570 Ni zinageuka kuna tag script. 981 00:58:05,570 --> 00:58:08,180 Tumeona tag style na tumeona tags nyingine HTML. 982 00:58:08,180 --> 00:58:11,510 tag script kweli yana baadhi code JavaScript. 983 00:58:11,510 --> 00:58:15,500 Hebu kwenda katika appliance ambapo tuna baadhi code chanzo kabla ya kufanywa. 984 00:58:15,500 --> 00:58:18,700 Mimi si posted bado kwenye tovuti, lakini mimi itabidi kufanya hivyo baada ya darasa. 985 00:58:18,700 --> 00:58:21,770 Hebu kufungua hii moja, blink.html. 986 00:58:21,770 --> 00:58:27,560 Nyuma katika miaka ya 1990, kulikuwa na literally tag HTML kuitwa tag blink, 987 00:58:27,560 --> 00:58:30,340 na hii ilikuwa ni moja ya vitambulisho wengi ajabu overused kwenye mtandao 988 00:58:30,340 --> 00:58:36,140 ambapo wewe d kutembelea baadhi ya 1990 style mtandao ukurasa na kuanza kuona Nakala flashing wewe kama hii, 989 00:58:36,140 --> 00:58:39,810 matokeo ya tag Marquis, ambayo alikuwa Nakala kwenda kama hii. 990 00:58:39,810 --> 00:58:45,070 Moja ya mara chache ambapo dunia kweli walikubaliana juu ya kiwango mtandao, 991 00:58:45,070 --> 00:58:48,250 kila mtu katika bodi kuuawa tag blink baadhi ya miaka iliyopita. 992 00:58:48,250 --> 00:58:52,860 Lakini tunaweza kufufua kwa JavaScript kama maandamano ya nguvu una 993 00:58:52,860 --> 00:58:56,660 wakati unaweza kuandika mpango ndani ya ukurasa wa mtandao. 994 00:58:56,660 --> 00:59:00,240 Kwanza hebu ruka juu ya mambo mapya na lengo tu juu ya zamani. 995 00:59:00,240 --> 00:59:01,780 >> Hapa ni mambo ya zamani katika mfano huu. 996 00:59:01,780 --> 00:59:06,350 Nina tag HTML, tag kichwa, na tag cheo. 997 00:59:06,350 --> 00:59:11,210 Basi nina tag mwili hapa kwa div, ambayo ni wanakumbuka tu mgawanyiko pembenne ya ukurasa 998 00:59:11,210 --> 00:59:14,720 kwamba Nimekupa ID kipekee kiholela ya "salamu" kwa, 999 00:59:14,720 --> 00:59:18,320 hivyo tu nina njia ya kipekee akimaanisha yake, ambayo ina baadhi ya maandishi rahisi sana: 1000 00:59:18,320 --> 00:59:20,220 hello, ulimwengu. 1001 00:59:20,220 --> 00:59:23,940 Sasa basi mimi kitabu hadi juu ya faili hii na kuona nini mpya. 1002 00:59:23,940 --> 00:59:27,710 Jambo la kwanza kwamba mpya juu juu ni tag script, 1003 00:59:27,710 --> 00:59:31,280 na ndani ya taarifa tag script nimekuwa alitangaza kazi. 1004 00:59:31,280 --> 00:59:34,610 Kutangaza kazi katika JavaScript, pretty sawa na PHP, 1005 00:59:34,610 --> 00:59:37,930 wewe literally kuandika kazi basi jina la kazi mabano, 1006 00:59:37,930 --> 00:59:40,400 na labda baadhi ya hoja kama inachukua yoyote. 1007 00:59:40,400 --> 00:59:43,510 Kisha mimi nimepata brace yangu curly kama kawaida, na sasa tuna baadhi code kidogo mpya, 1008 00:59:43,510 --> 00:59:45,230 lakini hebu angalia hii ina maana gani. 1009 00:59:45,230 --> 00:59:48,670 Hivyo div var, hii ina maana tu nipe variable inayoitwa div. 1010 00:59:48,670 --> 00:59:50,530 Ningeweza kuitwa ni foo, lakini mimi alitaka kuitwa div 1011 00:59:50,530 --> 00:59:52,620 kwa sababu hiyo itakuwa wazi katika pili. 1012 00:59:52,620 --> 00:59:57,480 Kisha zinageuka katika JavaScript - na hii ni JavaScript code iliyoingia katika mtandao ukurasa wangu - 1013 00:59:57,480 --> 01:00:01,760 kuna maalum wa kimataifa wa aina variable iitwayo waraka. 1014 01:00:01,760 --> 01:00:04,780 JavaScript kwa kweli ni lugha ya kifaa-oriented. 1015 01:00:04,780 --> 01:00:07,230 Sisi si kuingia kwa undani katika 50 kama yale kwamba maana, 1016 01:00:07,230 --> 01:00:11,180 lakini kwa sasa kujua kwamba kitu ni pretty kiasi kama struct. 1017 01:00:11,180 --> 01:00:14,740 Kama tuliona njia ya nyuma wakati katika moja ya tatizo mwanzo seti 1018 01:00:14,740 --> 01:00:17,150 ambapo sisi kuweka mengi ya habari katika struct, 1019 01:00:17,150 --> 01:00:21,330 vile vile ni hati struct maalum ambayo inakuja na kivinjari, 1020 01:00:21,330 --> 01:00:24,810 kuja na ukurasa mtandao yoyote. Ni si kitu mimi kuundwa. 1021 01:00:24,810 --> 01:00:28,210 Ndani ya muundo huu hati, ingawa, una data si tu 1022 01:00:28,210 --> 01:00:30,010 lakini pia una kazi. 1023 01:00:30,010 --> 01:00:34,090 >> Na wakati wowote una kazi ndani ya muundo, ndani ya kifaa, 1024 01:00:34,090 --> 01:00:36,490 ni kuitwa mbinu. Lakini ni kitu kimoja. 1025 01:00:36,490 --> 01:00:40,110 Njia ni kazi ambayo tu hivyo hutokea kuwa ndani ya kitu kingine. 1026 01:00:40,110 --> 01:00:42,990 Hivyo hii ina maana kwamba hii maalum variable kimataifa iitwayo waraka 1027 01:00:42,990 --> 01:00:47,690 ina kazi kuitwa getElementById kwamba literally anafanya hivyo. 1028 01:00:47,690 --> 01:00:52,460 Ni kupata wewe kipengele kutoka DOM, Kudhibiti Object Model mti, 1029 01:00:52,460 --> 01:00:55,520 ambao ni ID katika salamu kesi hii. 1030 01:00:55,520 --> 01:00:59,200 Kwa maneno mengine, wakati wote sisi alitumia juu ya miundo ya data anakuja katika kucheza hapa. 1031 01:00:59,200 --> 01:01:01,400 Hii picha ya DOM kwamba tulikuwa na wakati uliopita, 1032 01:01:01,400 --> 01:01:06,100 ingawa ukurasa ni kidogo tofauti, kama alikuwa div katika picha hii, 1033 01:01:06,100 --> 01:01:11,180 nini document.getElementById atarudi kwangu ingekuwa na kuwa pointer 1034 01:01:11,180 --> 01:01:15,440 kwa Mstatili katika mti, akimaanisha Mstatili katika mti. 1035 01:01:15,440 --> 01:01:18,410 Basi hiyo ni nini maana ya kweli piga moja ya kazi hizo. 1036 01:01:18,410 --> 01:01:21,960 Katika kesi hii tena ni div. Ni si mwili au jina. 1037 01:01:21,960 --> 01:01:26,480 Basi hebu angalia nini mimi kufanya na kisha div hii sasa kwamba mimi ni ndani ya hii div variable kuitwa. 1038 01:01:26,480 --> 01:01:32,580 Ni zinageuka na JavaScript una uwezo wa tweak CSS yako ukurasa wa dynamically. 1039 01:01:32,580 --> 01:01:39,060 Hadi sasa, wote wa CSS tumefanya, angalau mdogo, ni katika sifa style, 1040 01:01:39,060 --> 01:01:41,730 au mahali pengine ambapo kuwa sisi kuweka CSS? 1041 01:01:42,730 --> 01:01:45,810 Mimi aina ya kuharibiwa kwamba moja. Katika tag style ya wakati juu ya faili. 1042 01:01:45,810 --> 01:01:49,180 Au nafasi ya tatu imekuwa katika? 1043 01:01:50,710 --> 01:01:54,590 >> faili nje, kitu css.. 1044 01:01:54,590 --> 01:01:56,730 Basi hizo sehemu 3 tumefanya CSS hivi sasa, 1045 01:01:56,730 --> 01:01:59,310 lakini samaki ni ngumu tumekuwa coded yote. 1046 01:01:59,310 --> 01:02:04,060 Wewe aliamua kama wewe njiwa katika pset 7, tuliamua kabla hotuba nini CSS yetu itakuwa. 1047 01:02:04,060 --> 01:02:07,380 Lakini kama unataka kubadilisha CSS yako, unaweza kweli kufanya hivyo 1048 01:02:07,380 --> 01:02:09,370 mara moja una halisi ya programu lugha. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - si programu lugha. JavaScript ni. 1050 01:02:13,910 --> 01:02:18,200 Hivyo ni zinageuka kuwa haraka kama una moja ya mistatiri wale kutoka mti 1051 01:02:18,200 --> 01:02:23,050 kuitwa DOM, ina yenyewe baadhi ya data ndani yake. 1052 01:02:23,050 --> 01:02:27,820 Hivyo div kwamba mimi tu grabbed kutoka mti ina nini Tutamwita mali ndani yake 1053 01:02:27,820 --> 01:02:34,390 kuitwa style, na mali style ina yenyewe mali inayoitwa kujulikana. 1054 01:02:34,390 --> 01:02:37,330 Ningependa kujua hii tu kwa kuangalia juu ya mwongozo user CSS ya. 1055 01:02:37,330 --> 01:02:41,160 Ni zinageuka kuna muonekano CSS mali ambayo haina nini anasema. 1056 01:02:41,160 --> 01:02:44,530 Ni hufanya kitu inayoonekana au la, inayoonekana au la. 1057 01:02:44,530 --> 01:02:46,810 Na jinsi ya kufanya kwamba ni hii. 1058 01:02:46,810 --> 01:02:50,510 Mimi nauliza programmatically ikiwa muonekano wa div hii ni siri, 1059 01:02:50,510 --> 01:02:53,390 nini mimi kuibadilisha kwa? Inayoonekana. 1060 01:02:53,390 --> 01:02:58,840 Mwingine kama muonekano wa ukurasa huu si siri, mantiki mimi kufanya hivyo siri. 1061 01:02:58,840 --> 01:03:04,070 Mimi sielewi kwa nini ni inayoonekana na siri na si vinavyoonekana na visivyoonekana. 1062 01:03:04,070 --> 01:03:06,000 Hii ilikuwa maskini kubuni uamuzi njiani. 1063 01:03:06,000 --> 01:03:09,530 Lakini hayo ni kweli kinyume katika CSS: inayoonekana na siri. 1064 01:03:09,530 --> 01:03:15,520 Yote hii haina maana ni kubadili CSS ya faili yangu na mbali, na mbali 1065 01:03:15,520 --> 01:03:16,870 kwa kuwa div fulani. 1066 01:03:16,870 --> 01:03:20,630 Lakini tena, hii ni kazi kuitwa blink. Wakati ni kazi blink wito? 1067 01:03:20,630 --> 01:03:24,080 Ni zinageuka kuwa kuna mwingine maalum wa kimataifa variable kuitwa dirisha, 1068 01:03:24,080 --> 01:03:28,220 sawa katika roho na waraka huo, lakini wakati hati inahusu mtandao ukurasa wako, 1069 01:03:28,220 --> 01:03:31,700 kama mti DOM, HTML wewe alimtuma kutoka server, 1070 01:03:31,700 --> 01:03:35,250 dirisha inahusu chrome karibu yake, anwani bar, bar cheo, 1071 01:03:35,250 --> 01:03:37,880 na yote ya kwamba mambo kote mtandao ukurasa wako. 1072 01:03:37,880 --> 01:03:42,800 >> Na zinageuka kuwa kitu dirisha ina kazi maalum ndani yake aitwaye setInterval 1073 01:03:42,800 --> 01:03:44,360 kwamba anafanya nini anasema. 1074 01:03:44,360 --> 01:03:48,600 Itakuwa kuweka Interval - katika kesi hii kila milliseconds 500 - 1075 01:03:48,600 --> 01:03:52,270 na, kuchukua nadhani, nini ni kwenda kufanya kila milliseconds 500? 1076 01:03:52,270 --> 01:03:55,240 Ni kwenda nitafanya kwamba blink kazi. 1077 01:03:55,240 --> 01:03:58,560 Na nini ni nzuri hapa ni kwamba sisi wangefanya hii katika C ingawa sisi kamwe alifanya. 1078 01:03:58,560 --> 01:04:01,580 C gani kuwa kitu kinachoitwa kazi kuyatumia ambapo unaweza kupita kazi kuzunguka 1079 01:04:01,580 --> 01:04:03,140 kama hoja. 1080 01:04:03,140 --> 01:04:07,620 Vile vile katika JavaScript unaweza kupita jina la kazi katika kazi nyingine. 1081 01:04:07,620 --> 01:04:10,630 Na taarifa ya nini mimi kufanya. Mimi si kufanya hili. 1082 01:04:10,630 --> 01:04:14,380 Kama mimi kuweka mabano baada blink, kwamba ingekuwa na maana piga kazi blink. 1083 01:04:14,380 --> 01:04:17,430 Kama mimi omit yao, kwamba maana hapa ni kazi blink 1084 01:04:17,430 --> 01:04:21,330 hivyo setInterval kwamba wanaweza kumwita kila milliseconds 500. 1085 01:04:21,330 --> 01:04:28,200 Hivyo matokeo ya mwisho, ingawa mauaji ni, ni kwamba kama mimi kwenda katika kwenye localhost na kwenda blink.html, 1086 01:04:28,200 --> 01:04:32,120 Mimi sasa hili likitokea tena na tena. 1087 01:04:32,120 --> 01:04:34,950 Na kama mimi kwa kweli Kagua Element, hebu tuone kama tunaweza kuona hayo. 1088 01:04:34,950 --> 01:04:38,550 Hebu Kagua Element, basi mimi kitabu chini kidogo tu, 1089 01:04:38,550 --> 01:04:44,320 basi mimi kuchagua Elements zaidi ya hapa, na ilani ndani ya DOM ya mkaguzi Chrome. 1090 01:04:44,320 --> 01:04:48,840 Ni literally kubadilisha na kurudi milliseconds kila 500. 1091 01:04:48,840 --> 01:04:55,660 Kama sisi kwenda kwa rafiki yetu Nate, 1092 01:04:55,660 --> 01:05:00,020 kama umewahi kujiuliza jinsi hii ni kazi, sawa na wazo Interval, 1093 01:05:00,020 --> 01:05:04,810 lakini Nate ni kweli kufanya ufanisi sana matumizi ya alama katika kesi hii hapa. 1094 01:05:04,810 --> 01:05:07,350 Basi nini zaidi tunaweza kweli kufanya na hili? 1095 01:05:07,350 --> 01:05:09,990 Hebu kufungua mfano mwingine na kujaribu kitu 1096 01:05:09,990 --> 01:05:12,940 hiyo ni programmatically hata muhimu zaidi kuliko kufanya mambo blink. 1097 01:05:12,940 --> 01:05:17,990 Hebu kwenda katika directory yetu fomu leo ​​na kwenda katika form0. 1098 01:05:17,990 --> 01:05:20,820 Hii ilikuwa fomu ugliest inawezekana kwamba mimi naweza kuja na, 1099 01:05:20,820 --> 01:05:23,290 na napenda tu kuonyesha nini inaonekana kama katika browser. 1100 01:05:23,290 --> 01:05:28,960 >> Hebu kwenda kwenye localhost / fomu, na hii ni form0. 1101 01:05:28,960 --> 01:05:33,400 Hii ni super ugly HTML fomu kuwa ana mashamba chache kwa barua pepe, kwa password, 1102 01:05:33,400 --> 01:05:37,190 password, na kisha tiki kidogo kwa kukubaliana na masharti ya baadhi na masharti. 1103 01:05:37,190 --> 01:05:41,350 catch ni kama mimi kutembelea fomu hii na sitaki kukupa yangu ya barua pepe, 1104 01:05:41,350 --> 01:05:44,730 Sitaki kukubaliana na masharti na sheria labda, naweza bonyeza Register 1105 01:05:44,730 --> 01:05:46,920 na inakuwezesha yangu kwa njia ya anyway. 1106 01:05:46,920 --> 01:05:50,800 Hii hutokea kwa kuwasilisha faili kijinga PHP kuitwa dump.php. 1107 01:05:50,800 --> 01:05:58,420 All yake ni magazeti nje ya yaliyomo ya $ _GET tu kwa madhumuni ya uchunguzi. 1108 01:05:58,420 --> 01:06:01,580 Hiyo ilikuwa ni nini in kwa mtumiaji tu sasa. 1109 01:06:01,580 --> 01:06:05,010 Lakini tuseme sisi kweli unataka kuhalalisha aina ya mtumiaji kuwasilisha. 1110 01:06:05,010 --> 01:06:06,530 Hebu kwenda katika toleo 1. 1111 01:06:06,530 --> 01:06:11,420 Hii ni form1.html. Inaonekana aesthetically kama mbaya, lakini taarifa jinsi dhana ni. 1112 01:06:11,420 --> 01:06:15,450 Kama mimi bonyeza Register bila kushirikiana, mimi kupata yelled saa. 1113 01:06:15,450 --> 01:06:17,320 "Lazima kutoa anuani yako ya barua pepe." 1114 01:06:17,320 --> 01:06:21,670 Wote haki. Hivyo basi mimi kujaribu kuwa. Hivyo malan@harvard.edu. Sihitaji password. 1115 01:06:21,670 --> 01:06:25,100 Register. "Lazima kutoa password." Wote haki. 1116 01:06:25,100 --> 01:06:28,470 Hivyo mimi kutoa password ya rangi nyekundu. Register. 1117 01:06:28,470 --> 01:06:32,300 "Nywila hayaoani." Mimi sasa hapa aina katika nyekundu. 1118 01:06:32,300 --> 01:06:35,710 Mimi ajali checked kwamba. Register. 1119 01:06:35,710 --> 01:06:39,860 "Wewe lazima kukubaliana na masharti na sheria." Wote haki. Kukubaliana huko. Register. 1120 01:06:39,860 --> 01:06:43,700 Na sasa inaonyesha mimi pato uchunguzi zaidi ya hapo. 1121 01:06:43,700 --> 01:06:45,630 >> Basi nini ilitokea tu? 1122 01:06:45,630 --> 01:06:48,330 Tulikuwa na uwezo huu ili adhibitishe maoni fomu. 1123 01:06:48,330 --> 01:06:51,420 Kwa kweli, kama alivyofanya kupiga mbizi katika pset 7, kuna kazi Apologize 1124 01:06:51,420 --> 01:06:54,620 kwamba inafanya pretty rahisi yell katika user kwa ujumbe kwenye screen. 1125 01:06:54,620 --> 01:06:57,580 Mimi nina kutumia utaratibu tofauti kidogo, kazi tahadhari, 1126 01:06:57,580 --> 01:07:03,690 ambayo si kazi hiyo alitabasamu juu tangu inafanya ujumbe user sana ugly. 1127 01:07:03,690 --> 01:07:05,710 Lakini hebu angalia nini mimi kufanya hapa. 1128 01:07:05,710 --> 01:07:09,620 Hii ni form1.html, na taarifa kwamba mimi na baadhi ya syntax pretty familiar: 1129 01:07:09,620 --> 01:07:12,920 mwili tag, fomu tag, hatua sifa, njia sifa. 1130 01:07:12,920 --> 01:07:17,050 Lakini taarifa Nimekupa fomu yangu ID kipekee kwa urahisi. 1131 01:07:17,050 --> 01:07:19,190 Kisha mimi nimepata email shamba ambaye ni aina ya maandishi, 1132 01:07:19,190 --> 01:07:23,780 shamba password ambaye ni aina ya nywila, uthibitisho shamba ambaye ni aina ya nywila, 1133 01:07:23,780 --> 01:07:28,070 na kisha tiki ambaye jina lake ni makubaliano juu hapa, aina ni checkbox. 1134 01:07:28,070 --> 01:07:30,380 Na kisha mimi nimepata kifungo kuwasilisha. 1135 01:07:30,380 --> 01:07:33,050 Lakini taarifa juu nini zaidi nina. 1136 01:07:33,050 --> 01:07:35,810 Awali ya yote, kuna mwingine matumizi ya tag script. 1137 01:07:35,810 --> 01:07:40,520 Kama una baadhi code JavaScript katika faili mwingine, kama tu na CSS unaweza ni pamoja na hiyo. 1138 01:07:40,520 --> 01:07:44,530 Na wewe kufanya hivyo kwa chanzo script, na kisha taarifa mimi nina kuunganisha inaonekana 1139 01:07:44,530 --> 01:07:50,349 kwa googleapis.com kwa njia ya muda mrefu sana lakini faili ambaye jina inaishia katika jquery.min 1140 01:07:50,349 --> 01:07:52,420 kwa kiwango cha chini JS.. 1141 01:07:52,420 --> 01:07:55,969 jQuery ni super maarufu maktaba kwa JavaScript kwamba tu hufanya JavaScript 1142 01:07:55,969 --> 01:07:58,230 zaidi ya yote user-kirafiki kutumia. 1143 01:07:58,230 --> 01:08:00,610 Ni kwa ufanisi kuwa kiwango de facto. 1144 01:08:00,610 --> 01:08:04,090 Hivyo hata kama nini wewe kuhusu kuona si safi JavaScript per se, 1145 01:08:04,090 --> 01:08:09,340 ni maktaba juu ya JavaScript kiasi kama maktaba CS50 ni safu 1146 01:08:09,340 --> 01:08:13,670 juu ya ngazi ya chini code C; ukweli ni karibu kila mtu kwenye mtandao anatumia hiyo. 1147 01:08:13,670 --> 01:08:18,030 Hivyo haya si mafunzo ya magurudumu. Hii ni bora mazoezi siku hizi. 1148 01:08:18,030 --> 01:08:22,830 Sasa taarifa chini ya kwamba ni script wangu mwenyewe tag, na taarifa ya kile nimepata kufanyika hapa. 1149 01:08:22,830 --> 01:08:27,450 Ni zinageuka kuwa jQuery haina kitu dhana kidogo. 1150 01:08:27,450 --> 01:08:29,660 JavaScript ina ishara ya dola, lakini wao ni maana. 1151 01:08:29,660 --> 01:08:32,870 >> Wao ni kama barua B au au C. 1152 01:08:32,870 --> 01:08:36,670 jQuery ina tu iliyopitishwa mkataba au aina ya madai aliweka na ukweli 1153 01:08:36,670 --> 01:08:40,280 kwamba dola itakuwa alama yao maalum. 1154 01:08:40,280 --> 01:08:44,950 Hivyo kwa haraka kama wewe kupakia hii ya kimataifa JavaScript faili hapa juu na tag script, 1155 01:08:44,950 --> 01:08:49,080 unaweza kupata variable maalum ya kimataifa kwamba wito $. 1156 01:08:49,080 --> 01:08:53,009 Ni vizuri zaidi kuitwa jQuery, lakini hiyo haina kuangalia karibu kama sexy kama $. 1157 01:08:53,009 --> 01:08:56,250 Lakini $ hana maana maalum. Katika PHP ilikuwa maana maalum. 1158 01:08:56,250 --> 01:08:58,440 Ilikupasa kuwa ni mbele ya kutofautiana. 1159 01:08:58,440 --> 01:09:01,670 Hii ni kitu sexy kwamba wao alichukua. 1160 01:09:01,670 --> 01:09:03,389 Ni nini kinachoendelea hapa? 1161 01:09:03,389 --> 01:09:08,830 Taarifa mimi nina kupita kwa kazi jQuery variable wangu kimataifa hati 1162 01:09:08,830 --> 01:09:10,860 na kisha mimi nina wito tayari.. 1163 01:09:10,860 --> 01:09:15,480 Nini jQuery kimsingi haina ni utapata kuchukua baadhi ya mambo JavaScript vanilla 1164 01:09:15,480 --> 01:09:17,889 kama kitu hati, kitu dirisha, 1165 01:09:17,889 --> 01:09:20,790 na kama wewe kupita katika kufanya kazi jQuery - 1166 01:09:20,790 --> 01:09:24,429 na tena, kwa kuwa wazi, hii ni kazi kuitwa jQuery - 1167 01:09:24,429 --> 01:09:28,240 kile yake ni kuirudisha kwa wewe toleo maalum ya hati 1168 01:09:28,240 --> 01:09:30,700 ambayo ina zaidi ya utendaji yanayohusiana na hayo. 1169 01:09:30,700 --> 01:09:34,760 Hivyo katika JavaScript ghafi hakuna kazi tayari, 1170 01:09:34,760 --> 01:09:37,810 lakini kama wewe kupita hati kwa kazi jQuery kwanza, 1171 01:09:37,810 --> 01:09:40,960 kuirudisha kwa wewe toleo maalum ya kitu hati 1172 01:09:40,960 --> 01:09:43,030 ambayo ina makala zaidi dhana. 1173 01:09:43,030 --> 01:09:48,230 Na kwamba ni kwa nini watu kama hiyo. Ni tu hufanya mambo rahisi kufanya, kama sisi ni juu ya kuona. 1174 01:09:48,230 --> 01:09:49,820 Hiyo ni nini hii maana ya mstari wa kanuni? 1175 01:09:49,820 --> 01:09:52,690 Hii mstari wa kanuni hapa ina maana wakati hati tayari - 1176 01:09:52,690 --> 01:09:56,830 kwa maneno mengine, mara moja browser inafanywa kusoma hii ya juu faili chini - 1177 01:09:56,830 --> 01:09:59,200 kwenda mbele na kutekeleza kazi zifuatazo. 1178 01:09:59,200 --> 01:10:03,540 Nini kweli kuvutia katika JavaScript - na PHP ina hii pia - 1179 01:10:03,540 --> 01:10:05,450 ni anonymous kazi. 1180 01:10:05,450 --> 01:10:10,560 Katika JavaScript unaweza kutangaza kazi ya kwamba hawana jina lakini wao kuwa na mwili. 1181 01:10:10,560 --> 01:10:12,570 Angalia kinachotokea hapa. 1182 01:10:12,570 --> 01:10:16,220 >> Hii ni kazi kuitwa tayari, na ni njia tu kufanya yafuatayo 1183 01:10:16,220 --> 01:10:20,220 wakati wote mtandao ukurasa ni tayari, wakati ni wote wamekuwa kusoma katika kutoka kwa seva. 1184 01:10:20,220 --> 01:10:23,090 Nini unataka kufanya nini? Nataka nitafanya chunk ya code. 1185 01:10:23,090 --> 01:10:27,120 Ona kwamba hatutaki kutekeleza kanuni hii haki ya mbali. 1186 01:10:27,120 --> 01:10:34,350 Kama mimi omitted hii, hii itamaanisha kuanza utekelezaji mara moja mistari haya ya kificho. 1187 01:10:34,350 --> 01:10:39,040 Lakini ukweli kwamba mimi kusema hapana, hapana, hapana, wrap hii katika kazi bila majina kama hii 1188 01:10:39,040 --> 01:10:43,000 njia wala nitafanya hivyo bado, simu yake hatimaye. 1189 01:10:43,000 --> 01:10:45,430 Tuliona huu iliyopita katika mfano wetu uliopita fomu. 1190 01:10:45,430 --> 01:10:49,990 Nini kazi gani sisi kuwaita hatimaye, 500 milliseconds baadaye? Blink. 1191 01:10:49,990 --> 01:10:51,480 Hivyo wazo moja. 1192 01:10:51,480 --> 01:10:53,950 Tena, hata kama hii inaonekana kidogo weird, tu kuchukua kwa sasa juu ya imani 1193 01:10:53,950 --> 01:10:57,060 kwamba kutangaza kazi bila majina kwamba wito hatimaye, 1194 01:10:57,060 --> 01:11:01,720 wewe tu kuandika kazi () { 1195 01:11:01,720 --> 01:11:05,380 Basi nini code ni sisi kwenda nitafanya hatimaye? zifuatazo. 1196 01:11:05,380 --> 01:11:10,460 Hii pia inaonekana mpya kidogo, lakini hii ina maana hapa kazi jQuery, 1197 01:11:10,460 --> 01:11:13,430 na hii sasa ni njia ya mkato. 1198 01:11:13,430 --> 01:11:18,830 Hii snippet ya HTML chini ya screen ya shaka ina baadhi ya uwakilishi mti. 1199 01:11:18,830 --> 01:11:21,730 Siyo hii. Ukarasa huu ni ya kuvutia zaidi kuliko mfano huu hello, ulimwengu. 1200 01:11:21,730 --> 01:11:25,210 Lakini kuna baadhi ya mti kwamba sambamba na HTML hii. 1201 01:11:25,210 --> 01:11:28,910 Itakuwa maumivu katika shingo ya kuwa na kutekeleza baadhi ya aina ya kazi ya kujirudia 1202 01:11:28,910 --> 01:11:34,380 kuanza nodi katika mizizi na kisha kupata nodi ambaye ni ID usajili. 1203 01:11:34,380 --> 01:11:38,340 Basi nini jQuery hufanya super rahisi kwetu ni halisi huu. 1204 01:11:38,340 --> 01:11:43,000 Kwenda mbele na kupata yangu chochote div au fomu chochote, chochote HTML kipengele 1205 01:11:43,000 --> 01:11:45,820 ana ID ya usajili. 1206 01:11:45,820 --> 01:11:52,440 Hii ni sawa na document.getElementById ('usajili'). 1207 01:11:52,440 --> 01:11:54,170 >> Kwa nini watu kama jQuery? 1208 01:11:54,170 --> 01:12:00,110 Sababu ni mfupi kwa aina. Lakini hiyo yote ni. Ni wazo moja. 1209 01:12:00,110 --> 01:12:02,630 Kupata yangu tag ambao ID ni usajili. 1210 01:12:02,630 --> 01:12:06,300 Na wakati tag kwamba, ambayo hufanyika kuwa fomu, ni in, 1211 01:12:06,300 --> 01:12:08,300 kwenda mbele na kutekeleza kanuni hii. 1212 01:12:08,300 --> 01:12:11,320 Basi hebu kuchukua moja kuangalia sasa jinsi sisi ni kufanya aina validation. 1213 01:12:11,320 --> 01:12:15,950 syntax ni admittedly cryptic mara ya kwanza, lakini nini kinaendelea? 1214 01:12:15,950 --> 01:12:21,050 Kama hii mstari wa kanuni ni kweli, mimi nina kwenda yell katika user kutoa yake anuani ya barua pepe. 1215 01:12:21,050 --> 01:12:22,970 Hivyo ni nini hii mstari wa kanuni? 1216 01:12:22,970 --> 01:12:25,560 $ Maana jQuery. Sasa taarifa hii. 1217 01:12:25,560 --> 01:12:27,920 Hii ni aina ya kama CSS. 1218 01:12:27,920 --> 01:12:33,370 Kama umefanya dived katika CSS bado, utajua kwamba hii ina maana ya kipengele ambao ID ni usajili. 1219 01:12:33,370 --> 01:12:39,840 nafasi ina maana kupata mtoto au mtoto wa usajili ambaye jina lake ni pembejeo. 1220 01:12:39,840 --> 01:12:42,970 Na kisha jambo hili katika mabano mraba ni chujio kidogo. 1221 01:12:42,970 --> 01:12:47,010 Na hata kama hii inaonekana cryptic, hii ina maana kwenda kwa ajili ya ambao ID ni usajili, 1222 01:12:47,010 --> 01:12:51,230 kwenda ndani ya pembejeo kipengele cha kwamba ambaye jina lake ni barua pepe, 1223 01:12:51,230 --> 01:12:55,440 na kisha kupata thamani yake, chochote thamani yake hutokea kwa kuwa - 1224 01:12:55,440 --> 01:12:59,670 asdf kama kwamba ni yote Mimi typed au malan@harvard.edu kama kwamba ni nini mimi typed. 1225 01:12:59,670 --> 01:13:05,250 Hivyo kama thamani ya shamba barua pepe aina ya kitu ==, yell katika mtumiaji. 1226 01:13:05,250 --> 01:13:09,700 Mwingine kama thamani ya shamba password == kitu, yell katika mtumiaji. 1227 01:13:09,700 --> 01:13:19,520 >> Mwingine kama thamani ya shamba password haina sawa thamani ya shamba uthibitisho, 1228 01:13:19,520 --> 01:13:22,850 ambayo ilikuwa nyingine aina ya kipengele, yell katika mtumiaji. 1229 01:13:22,850 --> 01:13:25,680 Na kisha mwisho - na moja hii pia ina baadhi syntax mpya ya peke yake, 1230 01:13:25,680 --> 01:13:29,270 lakini mara ve kuona hilo, ni angalau kidogo zaidi ya busara - 1231 01:13:29,270 --> 01:13:34,060 mwingine kama fomu ambao ni ID usajili ina kipengele pembejeo ambaye jina lake ni makubaliano 1232 01:13:34,060 --> 01:13:39,720 na ni checked, kwenda mbele na yell katika mtumiaji. 1233 01:13:39,720 --> 01:13:42,520 Kwa hiyo mimi kabisa kukubali hii ni balaa kabisa katika mtazamo wa kwanza. 1234 01:13:42,520 --> 01:13:46,530 Ni mengi ya syntax mpya. Lakini yote ya jQuery ifuatavyo aina hii ya ruwaza. 1235 01:13:46,530 --> 01:13:49,880 Na kwa uaminifu, sikuweza hata kujua hii ulikuwepo mpaka dakika chache zilizopita. 1236 01:13:49,880 --> 01:13:53,640 Mimi Googled, "Je, wewe kuangalia kama checkbox ni checked katika jQuery?" 1237 01:13:53,640 --> 01:13:55,680 na hii ni syntax, kwa sababu kuna njia tofauti za kufanya hivyo 1238 01:13:55,680 --> 01:13:58,010 na halisi code ghafi JavaScript. 1239 01:13:58,010 --> 01:14:01,030 Hivyo kama ukurasa sana kwanza ya tatizo Set 7 inasisitiza, 1240 01:14:01,030 --> 01:14:04,500 pset 7 ni mengi sana katika zoezi uchangishaji mwenyewe 1241 01:14:04,500 --> 01:14:08,650 ambapo tumekuwa zinazotolewa, hopefully, mfumo wa dhana ambayo kukabiliana pset. 1242 01:14:08,650 --> 01:14:12,280 >> Lakini kama ni mara ya kesi pamoja na kubuni mtandao, ni juu kweli poke kote, 1243 01:14:12,280 --> 01:14:16,680 kuingiza snippets ya maadili na mifano kutoka Mtandao muda mrefu kama wewe wanaelezea yao 1244 01:14:16,680 --> 01:14:17,960 kwa masharti juu ya karatasi ya kwanza, 1245 01:14:17,960 --> 01:14:21,460 na kutambua kwamba kujifunza HTML, CSS, JavaScript na hata SQL 1246 01:14:21,460 --> 01:14:26,020 ni kweli maana ya kuwa zoezi hili katika-nyumbani kama sisi kuanza kuchukua magurudumu haya mafunzo mbali. 1247 01:14:26,020 --> 01:14:29,150 Na kutambua pia kuna mengi zaidi ya mambo unaweza kufanya kwa browser. 1248 01:14:29,150 --> 01:14:33,790 Ndani ya zaidi ya mambo haya kuna mambo mengine aitwaye tukio handlers. 1249 01:14:33,790 --> 01:14:37,140 Na hata kama sisi alimwangalia ndio inayoitwa onsubmit na onready, 1250 01:14:37,140 --> 01:14:40,310 unaweza kufanya mambo kama onkeydown, onkeyup, 1251 01:14:40,310 --> 01:14:43,410 kama wakati mtumiaji linagusa muhimu, unaweza kusikiliza kwa kuwa na up muhimu. 1252 01:14:43,410 --> 01:14:45,940 Gmail ina keyboard shortcuts. 1253 01:14:45,940 --> 01:14:49,490 Jinsi gani Google kutekeleza keyboard shortcuts kama C kwa kutunga? 1254 01:14:49,490 --> 01:14:54,120 Wao kusikiliza kwa matukio, kama uko wito, kama onkeypress au onkeyup na onkeydown. 1255 01:14:54,120 --> 01:14:56,360 Kama ve milele hovered mouse yako juu ya chaguo baadhi menu 1256 01:14:56,360 --> 01:15:00,180 na ghafla, voilà, menu inaonekana au graphic mabadiliko Michezo, 1257 01:15:00,180 --> 01:15:01,920 jinsi wanafanya hivyo? 1258 01:15:01,920 --> 01:15:06,940 Badala ya kusikiliza kwa onready au onsubmit, wewe kusikiliza kwa onmouseover au onmouseout. 1259 01:15:06,940 --> 01:15:10,920 >> Hivyo katika muda mfupi, na shemu hizi rahisi sana kwamba tumeanza kwa scratch ya uso wa leo 1260 01:15:10,920 --> 01:15:13,940 na tutaweza kupiga mbizi katika zaidi juu ya Jumatano, una, inazidi, 1261 01:15:13,940 --> 01:15:17,530 uwezo wa kutekeleza aina ya mambo ambayo tayari wewe ni ukoo na. 1262 01:15:17,530 --> 01:15:21,620 Basi hebu mwisho huko, na tutaweza kuendelea hii juu ya Jumatano. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]