DAVID Malan: All wa kulia. Hii ni CS50, na hii ni mwishoni mwa wiki tisa. Imekuwa ni kimbunga juu ya siku chache zilizopita. Na kuweka tatizo saba, kama wewe ni goti kina ndani yake, kutambua kuna kabisa kidogo mpya kwamba huko. Lakini hebu angalia kama hatuwezi kipande kila kitu pamoja hapa kwa ufupi kabla ya hapo veering mbali katika bado mwelekeo na kuona mwingine mahali pengine ambapo tunaweza kwenda. Hivyo hivi sasa, tumekuwa kuongelea HTML. Tumekuwa kuongelea CSS. Tumekuwa kuongelea PHP. Umeingia kwa uzoefu SQL. Leo, tutaweza majadiliano kidogo kuhusu JavaScript. Lakini jinsi kufanya haya yote tofauti lugha fit pamoja? Hivyo sisi aliyesema wiki iliyopita kuhusu kuwa wazo la server. Basi hebu tu kuteka pembenne hii kama mtandao wa kompyuta hapa. Na mtandao wa kompyuta mtumishi hakika files. Na baadhi ya files wale inaweza kuwa files HTML. Hivyo moja ya mambo ambayo mtandao wa kompyuta unaweza mate nje inaweza kuwa faili kwamba tutaweza tu kuteka kama hii zenye baadhi HTML. Hivyo katika suala layman, nini haina HTML basi wewe kufanya? Watazamaji: Page kuangalia nzuri. DAVID Malan: OK, kufanya ukurasa kuangalia nzuri, ingawa nadhani nimepata kuthibitika kwamba vinginevyo. Hivyo HTML haina basi wewe kuweka kurasa kimuundo, na utapata aina ya aesthetically alama juu ukurasa, alama juu ya maudhui static, ili unaweza kisha kuona ni pamoja na mtandao wa browser. Lakini hiyo ni muhimu. Ni maudhui ya tuli. Wewe kuandika, wewe ila ni, na kisha meli hiyo. Na mtandao wa kompyuta kisha mtumishi it up kwa wageni wako. Lakini sisi stylize mambo kwa kutumia mbalimbali lugha kabisa. Sisi kuanza kutumia style sifa juu ya baadhi ya vitambulisho. Na style sifa hebu kuweka mambo kama font ukubwa na rangi. Na ve pengine kuanza kugundua, au hivi karibuni kwenu kwa ajili ya fainali miradi uwezekano, lakini wengine mali kwamba unaweza kutumia katika CSS. Na hivyo katika suala layman, nini kweli basi haina CSS nini? Wale ni mifano yake tu. Ni nini basi wewe kufanya hivyo HTML haionekani kutokana na kile tumeona hivi sasa? Watazamaji: Kuainisha mitindo na wewe mwenyewe. DAVID Malan: Kuainisha mitindo na wewe mwenyewe. Hivyo kufafanua mambo kama madarasa kama wewe kuwa wamekutana, au kipekee kutambua nodes katika hati hivyo kwamba unaweza stylize yao. Lakini zaidi hasa, ningesema kuwa CSS kweli inakuwezesha kuchukua mambo mwisho mile na utapata bayana sana usahihi zaidi aesthetics, ambapo HTML kwa sehemu kubwa lets unaweza kupanga kurasa yako. Na hata ingawa kuna baadhi ya defaults, kama tuliona tag kwa viongozi tag, ambayo takribani kusema alifanya mambo makubwa na ujasiri. Hiyo ni ufafanuzi pretty generic ya tag - kubwa na ujasiri. Nini font ukubwa ni kwamba? Rangi ni nini? Jinsi ujasiri ni kwamba? Na CSS inakuwezesha zaidi laini tune mambo kama hayo. Kama vile layout, kama baadhi ya umeona. Na kusema ukweli, CSS ni kidogo ya lugha chafu. Ni nguvu sana katika kwamba unaweza kufanya literally yoyote tovuti ya kuwa wewe wameweza kuonekana kwenye mtandao wa leo na hayo, lakini ni aina ya maumivu ya shingo. Na baadhi yenu banged kichwa yako dhidi ya kuta tayari tu kufanya kitu kijinga kama kituo cha orodha kwenye kuweka tatizo saba kama wameweza kujipatia kwa kwamba hatua tayari. Lakini kutambua, mambo hayo kupata rahisi baada ya muda. Kuanza kwa taarifa mwelekeo. Na tena, Google itakuwa rafiki yako kwa njia mbalimbali ambazo unaweza kutatua aina hii ya matatizo. Na mimi kuthubutu kusema kwa CSS, na HTML zaidi kwa ujumla, unaweza kutatua matatizo katika njia nyingi zaidi, ambayo yote nguvu sana vizuri kuwa sahihi, kuliko unaweza katika kitu kama C, hata sasa PHP, au JavaScript. Kuna watu wengi mbalimbali njia ya kuweka mambo ya nje. Lakini jambo hili lilianza kupata messy, sisi alisema. Tu aina ya commingling HTML yako na CSS yako na style sifa mara kidogo sloppy. Na hivyo sisi badala alisema, aina ya abstractly kuzungumza, kwamba ni lazima angalau kuanza kwa sababu nje CSS yako pengine. Si style yako sifa, lakini angalau kutumia tag style ndani ya kile sehemu ya ukurasa wa mtandao? Watazamaji: Mkuu. DAVID Malan: Katika kichwa. Hadi sasa, sisi tu alikuwa na cheo up huko, lakini unaweza pia kuongeza style tag, na unaweza kuweka CSS yako takribani kumtukana juu ya ukurasa. Lakini basi sisi alichukua mambo hatua moja zaidi na sisi zitawekwa kuwa nje zaidi ndani ya faili tofauti. Na hivyo files hizi mbili walikuwa namna fulani sasa wanaohusishwa. Na hakika ilikuwa tag kwamba alifanya hivyo. Na nini alikuwa mmoja wa kuu motisha kwa ajili ya factoring nje CSS wetu wote zaidi? Watazamaji: reusability. DAVID Malan: reusability. Haki? Unaweza tumeona katika p-kuweka saba tayari kwamba mengi ya kurasa, kununua ukurasa, ukurasa kuuza, kwingineko ukurasa, pengine ni muundo fulani vile vile. Kuna CS50 fedha alama juu isipokuwa wameweza aliamua mabadiliko hayo. Kuna footer katika chini ya kurasa. Na CSS utapata kisha na sababu nje ndani faili tofauti ili kwamba kama unataka kubadilisha kitu duniani katika tovuti yako yote, unaweza kweli tu mabadiliko hayo katika sehemu moja. Lakini kuna bei ya kulipa uwezekano wa kwa kuwa na zitawekwa nje CSS kutoka HTML faili yangu katika tofauti faili inayozungumzia ni pamoja na tag, ambayo tuliona siku ya Jumatatu. Nini kinaweza kuwa upande wa chini ya hili? Kufikiri nyuma wiki iliyopita wakati tuko kuzungumza juu ya HTTP na TCP / IP na jinsi hisa kazi. Kitu zaidi ya hapa? Watazamaji: Inachukua muda zaidi. DAVID Malan: Inachukua muda zaidi. Kwa nini? Watazamaji: [inaudible]. DAVID Malan: Yeah. Hivyo ni arguably inachukua kidogo muda zaidi. Kwa sababu moja, CSS ni wazi si katika faili moja. Hivyo sasa una kufanya si moja, lakini wawili maombi. Na kila moja ya maombi ya wale kama tulivyoona katika Chrome katika Inspekta kinachojulikana, na sisi inaonekana katika tabo mtandao, kila ya wale files inahitaji moja HTTP ombi, ambayo tuliona inachukua baadhi ya kiasi cha muda. Sasa, labda siyo mengi. Labda ni 20 tu milliseconds. Labda ni 200 milliseconds. Lakini kufikiri kuhusu ukurasa kama Facebook, au CNN, au Google, ambayo ni kiasi kubwa kuliko mifano tumekuwa inaonekana katika hivi sasa. Wale kurasa wanaweza kuwa na kadhaa wa files, ambayo kila mmoja anaweza kuhitaji download ya faili. Hivyo mambo unaweza uwezekano kuanza polepole chini. Na hasa siku hizi wakati sisi wote kuwa na simu za mkononi katika mifuko yetu na polepole internet connections, kuwa na kusubiri chache milisekunde zaidi, ni wachache zaidi milisekunde kwa ziada files kweli anaweza polepole. Latency ni neno linaloelezea aina ya kusubiri kwamba una kwamba wewe uzoefu wakati wakisubiri baadhi ya kipande cha habari. Lakini kuna suala la mafanikio. Hivyo si kila aina ya - ni kweli ni kidogo ya seesaw hapa. Upande wa chini sasa, lakini kile browsers wanaweza kufanya kama uko smart ili kuepuka baada ya kuomba styles.css huo faili tena unaweza kuwa kufanya nini? Cache yake. Hivyo Caching - C-A-C-H-E - ujumla maana hapa tu kuokoa kuwasilisha ombi mara ya kwanza, na kisha kuangalia cache yako kwa ajili yake. Angalia wewe ni aina ya kuhifadhi kontena, na ikiwa tayari nakala ya styles.css, hata kama baadhi ya wengine ukurasa katika kuweka p-, au tovuti, maombi yake tena, tu kutoa user kwamba huo cached nakala. Wala bother kuomba yake. Upande wa chini huko, ingawa, kama baadhi yenu kuwa tripped zaidi katika kuweka p-. Kama wewe kufanya mabadiliko ya server na wewe kwenda nyuma ya browser na wewe Reload, wakati mwingine browser gani ninyi neema na haina bother re-kushusha faili yako styles.css kwa sababu, kuja juu, ni nini tabia mbaya kwamba hizi mitindo kwamba anatumia Facebook ni kwenda na mabadiliko ya saa moja na saa moja au siku kwa siku? Ni pretty chini. Wapate mabadiliko ya muda, lakini si kwa dakika moja au kwa saa. Hivyo hila, tu FYI wakati wa kufanya mtandao maendeleo, ni mara nyingi kushikilia chini kuhama muhimu kwa mfano na kisha bonyeza Reload katika browser yako, na kwamba mapenzi kawaida kuwaambia Reload browser kila kitu, hata kama tayari una katika cache. Hivyo tena, upsides na downsides, lakini wote hatimaye kubuni maamuzi. Hivyo sasa, sisi alifanya si tu kukomesha hadithi hapa. Kama mimi sasa kurudi nyuma na na nyuma na nyuma nyuma, sisi ilianza kwa kuanzisha si tu HTML, lakini PHP. Hivyo katika suala layman, nini haina PHP tufanye? Watazamaji: [inaudible]. DAVID Malan: Ni nini hiyo? Watazamaji: Kuanzisha mantiki katika kanuni. DAVID Malan: Yeah, kuanzisha mantiki katika kanuni yako. Hivyo ni kweli programu lugha na tanzi, na vigezo, na kazi, na hali, na wote wa mambo tumekuwa kutumia njia ya nyuma wakati tangu mwanzo. Na PHP, tumeona, inaweza kutumika aidha katika mstari amri - ni hana na kitu cha kufanya na mtandao, hata kama hiyo ni kweli asili yake na nini inaelekea kuwa nzuri saa na mazingira mazuri ya - lakini unaweza kutumia PHP tu kwa asili ya ukweli kuwa ina magazeti () kazi, na printf () kazi, au mwangwi () kazi. Kuna mashada ya njia ya unaweza magazeti asilia na PHP. Kwa hiyo, unaweza kutumia programu hii lugha kwa pato hasa nini tunachozungumzia kabla. Unaweza dynamically kuzalisha yako HTML. Labda si yote. Labda wewe ngumu kanuni mambo, kama header, na footer, na alama, na style yako shuka, na wote ya kwamba. Lakini kwa ajili ya kitu kama p-seti saba, ambapo wewe ni kufanyia hifadhi na kuonyesha kwingineko mtumiaji, ambayo ni kwenda dynamically mabadiliko, unaweza Hakika kutumia PHP na mantiki anatoa wewe kama lugha ya programu ya pato dynamically subsets ya ukurasa. Hivyo wakati wewe majadiliano juu ya Nje nguvu, au mtandao programu, hiyo ni nini wewe kweli kuzungumza juu. Kutumia lugha kama PHP, au mambo kinachoitwa chatu, au Ruby, au Java, au bado lugha nyingine, na swala database mara nyingi, au nyingine server, na kisha dynamically mate nje ya HTML. Sasa matokeo ya mwisho, kama kando, ni kwamba HTML ya Nje wengi, ikiwa ni pamoja na yako p-seti saba, pengine ni kwenda kuwa fujo kubwa kama ukiangalia chanzo kanuni katika browser. Hiyo si kubwa mpango huo. Katika hatua hii, wakati sisi huduma ya juu style, sisi huduma ya juu stuff kwamba kuandika. Sisi si huduma kuhusu mambo kwamba kile code yako mazao. Hivyo msiwe na wasiwasi kuhusu anatengeneza hapa kama ni PHP kwamba kweli outputting mambo ya ajabu. Baada ya yote, browser si huduma, na binadamu si kuangalia kwenye chanzo anyway. Sisi wafanyakazi, kwa mfano, ingekuwa kuwa na kuangalia PHP yako. Hivyo basi mimi kutoa mfano wa haraka sasa ya kwa nini mwingine hii inaweza kuwa na manufaa. Hivyo kusema ukweli, siwezi kukumbuka mwisho wakati mimi kutumika C kutatua tatizo katika ulimwengu wa kweli. Ilikuwa pengine katika shule ya kuhitimu wakati Mimi zinahitajika kutumia lugha ambayo ilikuwa haki kiwango cha chini na kunipa nafasi ya kufanya jambo juu sana maonyesho ya kweli ila kama CPU nyingi mizunguko kama ningeweza, kwa sehemu kubwa kwa sababu mimi nilikuwa kwa kutumia data kubwa seti, na kila mzunguko wa CPU kuhesabiwa. Na kusema ukweli, hata katika vitu kama simu siku hizi na vifaa vingine ambapo huna kabisa kuwa kama kiasi kumbukumbu na huna kabisa kuwa kama sana CPU, kutumia lugha kasi bado ni rufaa. Lakini katika ulimwengu wa kweli, wakati wewe tu unataka kutupa baadhi ya mpango pamoja ili kuchambua baadhi ya data, au umefanya zilizokusanywa kundi zima la usajili kwa ajili ya baadhi ya kundi mwanafunzi na unataka sana haraka aŭtomate barua pepe kutuma moja kwa moja kila mmoja wa wale registret, utaenda kufikia kwa ngazi ya juu ya lugha kuliko C hivyo kusema. Kitu kama PHP au chatu, au Ruby, au wengine nusu kadhaa ambazo zipo siku hizi. Lakini wale watatu ni pengine haki wengi trendy sasa. Na nini maana ya hii ni kwamba unaweza kufungua hadi mhariri wa maandishi kama gedit au zaidi ya kitu kingine chochote na kisha kuanza tu kuandika code bila kuwa na wasiwasi kuhusu kuandaa, bila ya kuwa na kweli na wasiwasi juu ya usimamizi wa kumbukumbu, kuweka akilini kwamba ingawa kidogo sloppiness hatimaye kuja nyuma bite wewe kama kuweka data anapata kubwa au tatizo anapata kubwa. Lakini hii ina maana gani kwa sisi ni yafuatayo. Hebu kwenda mbele na kukimbia Speller kutoka tatizo kuweka sita. Hivyo hii ni yangu trie makao utekelezaji kwamba mimi kutumika kwenye kubwa bodi ambapo mimi si walifanya vizuri. Tutaweza kurudi katika muda wa wiki na kupitia upya wale ambao hawakuwa na kuishia atop kubwa bodi katika hotuba yetu ya mwisho. Lakini kwa sasa, napenda kwenda mbele na wa haki kukimbia ufumbuzi wangu katika maandishi, na tutaweza kufanya King James Biblia, na hapa sisi kwenda. Hivyo wale wote ni wa eti misspelled maneno nje ya King James Biblia. Na utekelezaji yangu alichukua nusu ya pili katika jumla. Hivyo si mbaya sana juu ya hii hasa kompyuta. Lakini kufikiria ni kiasi gani Kanuni nilikuwa kuandika. Fikiria kiasi gani kanuni wewe alikuwa na kuandika. Fikiria saa ngapi wewe alitumia katika D-ukumbi au Dorm yako au popote kweli coding juu kwamba ufumbuzi. Naam, kama mimi kwa kweli kuwa na kiwango cha juu lugha kama PHP, kuchukua kumbuka ya nini siwezi kufanya hapa. Kwanza, tuseme kwamba hii ni badala usambazaji yako code. Hii ni faili inayoitwa Speller. Ni inapatikana kama sehemu ya leo usambazaji kanuni. Na mimi nina kwenda kupitisha mkono wangu saa zaidi ya maelezo, lakini hii ni kweli mfano wa jinsi ya kuvutia unaweza bandari lugha kama C juu ya PHP. Mimi literally kufunguliwa madirisha Nakala mbili, moja na toleo yangu ya C ya speller.c, na mimi tu ya kuanza kutafsiri katika wangu kichwa na PHP na kuandika ni nje kwa kutumia karibu sawa utendaji. Hivyo baadhi ya mambo haya ni tofauti. Tuliona mara ya mwisho kwamba PHP haina matumizi ni pamoja na katika njia sawa kabisa. Ni matumizi ya kawaida zinahitaji, ingawa pamoja gani zipo. Kufafanua ni tofauti kidogo kutoka # Define katika C, lakini hiyo ni jinsi ya kufanya mara kwa mara. $ Argc zinageuka ipo katika PHP, hivyo tumeona kwamba kabla. Hizi ni baadhi tu ya vigezo, wote wa ambayo kuanza kwa ishara ya dola. Kumbuka haya ni rundo ya pointi floating. Hivyo muda mrefu hadithi fupi, wewe ni kuwakaribisha kwa flip kupitia hii kama curious, hii ni karibu uongofu line-kwa-line ya C toleo la speller.c katika PHP. Na unaweza kufanya hivyo tena kwa nusu dazeni lugha nyingine. Lakini nini kuvutia ni hii. Au nini kusema ukweli disheartening ni hii. Hebu kwenda mbele na aina kuhusu dictionary.php, na kudai kwamba mimi nina kwenda mbele na re-kutekeleza tatizo kuweka sita hapa. Basi hebu kwanza kupendekeza kwamba katika hii faili, ambao utatekelezwa katika PHP, hivyo basi mimi kufungua vitambulisho wangu kama hiyo. Napenda kutoa mwenyewe kimataifa kutofautiana, $ kawaida anapata sifuri. Na mimi nina kwenda kutoa mwenyewe meza hash. Mimi itabidi kutumia meza hash kwa jambo hili. Jinsi gani mimi kutangaza meza hash katika PHP? Kufanyika. OK. Hivyo wazi mabano mabano inawakilisha karibu nini katika PHP, kama tumeona? safu, lakini safu ambayo inaweza kuwa safu associative. safu associative ni muundo wa data kwamba washirika funguo na maadili. Sasa katika rahisi numerically indexed safu, wale funguo ni nini? Sifuri, moja, mbili, tatu, haki? Umri wa shule ya mambo ya nyuma kutoka C. Lakini inaweza pia kuwa na masharti kama foo, na bar, au Maxwell, au kamba hiyo. Ili niweze kujiinua kwamba katika muda tu. Hebu kwenda mbele na kutangaza kazi kama - hebu kufanya mzigo () kwanza. Hivyo kazi ya mzigo (). Na PHP ni tofauti kidogo katika kwamba wewe literally aina ya kazi, lakini ninyi si aina aina ya kurudi. Mimi nina kwenda mbele na kusema kwamba mzigo () kazi inapaswa kuchukua katika Hoja $ kamusi, tu kama C toleo alivyofanya. Mimi nina kufanya kwamba kutoka kwa kumbukumbu. Na napendekeza kwamba mimi nina kwenda kufanya hili. Mimi tu kwenda kufanya foreach. Mimi naenda kuwaita kazi kuitwa file (), kupita katika jina la kwamba faili, ambayo ni kutofautiana $ $ Kamusi kama neno. Na kisha ndani ya yangu kwa kitanzi hapa, mimi nina kwenda mbele na kuhifadhi katika wangu $ Meza kwamba $ neno anapata kweli. Kufanyika. Oh, kusubiri. Kufanyika. OK. Hiyo ni mzigo () kazi kusema katika PHP. Sasa, kwa nini kuwa kazi? Na mimi nina aina ya udanganyifu hapa. Kwa hiyo, moja, foreach tuliona kwa ufupi mwisho wakati. Ni tu ina maana kwamba unaweza iterate juu ya safu bila bothering na i na n na pamoja na plus, na yote hayo. Kamusi ni ya kweli jina la faili, kitu kama kubwa au ndogo, mbili kamusi tulikuwa wakati wa mwisho. Picha ni kazi ambayo kufungua Nakala file, husoma katika mstari kwa mstari, na mikono nyuma safu kubwa, kila moja ya vipengele ambao ni line kutoka faili hilo. Ili mchanganyiko wa fopen, na fread, na wakati kitanzi, na fclose, na yote hayo. Hatimaye, kama neno tu ina maana kwamba ni variable mimi nina kwenda kupata juu ya kila iteration katika kitanzi hii. Hivyo katika muda mfupi, hii moja mjengo hapa ina maana kufungua faili ambaye jina lake ni katika kamusi, kutofautiana, iterate juu ya ni mstari kwa mstari, na kila wakati kupata line, duka katika variable kuitwa neno, na kisha kufanya kitu kwa neno. Je, mimi unataka kufanya nini? Nataka kuweka neno katika hash yangu meza. Naam, siwezi kuweka kitu katika wangu hash meza tu kama katika C kutumia mabano mraba. Hii ni jina kwa hash yangu meza. Mimi nina kwenda index ndani ya kwamba hash meza katika eneo hili. Hivyo si mabano sifuri, si mabano moja. Mabano quote unquote kitu, chochote neno kwamba ni. Na kama unaweza kuwa katika yako hash kazi meza trie, wewe tu kuhifadhi ufanisi Boolean, inamuunga au waziwazi. Kufanyika. Mimi nina kuhifadhi thamani ya kweli. Sasa kuna mambo kadhaa ya Mimi kukata pembe hapa. Kitaalam, kuna kwenda kuwa annoying mpya line, / n, mwishoni mwa kila ya maneno haya. Basi, mimi lazima pengine kuwaita PHP kazi aitwaye Night (), ambayo itakuwa halisi kabisa Night kwamba mbali. Na mimi kwa kweli haja ya kufanya kitu kingine moja. Mimi lazima pengine nyongeza ukubwa juu ya kila iteration, hivyo mimi nina kuweka wimbo kimataifa ya ni nini. Na kusema ukweli, na hii ni moja ya masuala stupider ya PHP, kama wewe ni kutumia variable kimataifa, unahitaji kwa wazi kusema kwamba wewe ni. Hivyo nina kwenda kwa kweli aina katika dunia $ Kawaida, kimataifa $ meza, na sasa kazi yangu ni kamili. Hivyo si kabisa kama rahisi kama kabla, lakini pengine alichukua muda chini ya C version, labda? OK. Hivyo sasa hebu kufanya kuangalia () kazi. Hebu tuone kama hii angalau alichukua masaa ya mwisho kwamba ilichukua sisi katika C. Hivyo napenda kwenda mbele na kutangaza kuangalia kama kazi. Inachukua katika hoja neno, ambayo ni atakuja kutoka Speller. Na mimi nina tu kwenda kuangalia kama zifuatazo variable isset, meza bracket strtolower ya neno - hebu usawa yote ya mabano yangu - kisha kurudi kweli. Mwingine - kwamba ilikuwa ngumu sehemu ya mpango huu. Mwingine, kurudi uongo. Kufanyika. Hiyo ni kuangalia (). Sasa, kwa nini hii kazi? Naam, moja mimi kupita katika neno, ambayo ni kamba. Mbili, mimi nina kuangalia ndani ya hash meza, ambaye kuitwa $ meza. Mimi nina kulazimisha kwa Herufi za chini kwa wito kazi sawa kabisa tolower () katika C, lakini hii haina neno zima, si tabia moja. Na kama hiyo ni kuweka, kwa maneno mengine huko ni thamani kuweka, kwa maneno mengine, kama ni kweli, basi ndiyo, hii ni neno. Kwa sababu mimi kuiweka huko kwa mzigo (). Na kama sio, mimi nina kwenda na kurudi uongo. Sasa wengine ni rahisi. Kazi ya kawaida (), ni jinsi gani mimi kufanya hili? Mimi kimsingi kufanya kurudi $ kawaida. Lakini mimi kitaalam haja ya jambo hili annoying. Na kwa kweli up kusikia, nilikuwa kukata kona moja wengi mno. Mimi kwa kweli wanahitaji kufanya kimataifa $ meza. Lakini kwamba kuwa alisema, kupakua). Kupakua () ni ajabu. Kazi ipakuliwe (). Je, mimi unataka kutekeleza ipakuliwe ()? Kufanyika. OK. Hivyo kupakua (), usimamizi wa kumbukumbu ni kabisa kuchukuliwa huduma ya kwa ajili yenu katika kitu kama PHP na mengi lugha ngazi ya juu. Hivyo hii ni ya ajabu. Kama nini kuzimu hakuwa sisi alitumia siku za nyuma wiki pamoja na nane juu ya C kuandika inaonekana kweli polepole, kwa kweli wakati kuteketeza matatizo pamoja na mamia ya masaa ya kazi chini ya mikanda yetu? Naam, kwa jambo moja, hii inaweza kufanya kazi nzuri kwa ajili ya programu ndogo. Ni hakika kwa kasi juu yangu maendeleo ya muda. Lakini hebu angalia nini kinatokea katika ulimwengu wa kweli. Hebu kwenda katika saraka hii katika dirisha terminal. Kuna Speller. Na taarifa kama kando, na unaweza kuwa wamekutana hii katika kuweka tatizo sita au kuweka tatizo saba. Huwezi madhubuti na mwisho files PHP pamoja. php. Kama kuweka line kama kwamba moja ya kwanza katika juu sana, kwamba line maalum ya syntax kwamba kimsingi ina maana kupata mpango ujulikanao PHP na kuitumia kutafsiri faili hii. Basi sasa hakuna anayejua kwamba Mimi kuendesha programu PHP. Siwezi kukimbia tu kana kwamba walikuwa kitu ulioandaliwa katika C. Lakini hapa kitu. Kwa kweli, hebu kufanya hivyo tena. Dropbox/pset6 /. Kuna Speller. OK, sekunde 0.44. It got kasi wakati huu. Sasa hebu kwenda katika PHP version. Nice kuwasiliana. Lakini nadhani tu wakati kiasi gani Mimi kuokolewa katika saa za ofisi. OK. Hivyo sekunde 3.59, ambayo kwa kweli haina sauti sahihi ama. Lakini hiyo ni kwa sababu hadithi muda mfupi, wakati wewe ni uchapishaji nje kiasi kikubwa ya mambo ya screen, kwamba yenyewe kupungua mambo chini. Nini kweli alichukua CPU katika appliance mara 3.59 sekunde, katika Tofauti na C, ambayo alichukua 0.44 sekunde hivi karibuni. Hiyo ni kweli utaratibu wa ukubwa tofauti. Hivyo ambapo ni bei ya kwamba kuja kutoka? Kwa nini ni polepole sana? Kwa nini PHP kufanya hivyo vibaya? Danielle? Watazamaji: Wewe si kweli kutumia meza hash. DAVID Malan: Mimi si kweli kutumia meza hash. Hivyo mimi aina ya alivyofanya. Hivyo ni safu associative. Uwezekano mkubwa zaidi kama watu katika PHP ni kweli smart, walitumia chini ya Hood halisi hash meza kutekelezwa katika kitu kama C au C + +. Lakini. Yeah. Watazamaji: [inaudible]. DAVID Malan: Yeah. Hivyo kila moja ya kazi niliandika sasa - kwa kweli, unaweza kusema kwamba kwa mara nyingine tena kidogo kwa sauti? Watazamaji: Kila moja ya kazi ambayo wewe ni pamoja na ina mengi zaidi kamili uwezo kuliko - DAVID Malan: Basi hiyo ni kweli sana. Kuna mengi zaidi Rudia kwamba sisi ni si kweli kuona na kuelekeza tu juu ya dictionary.php, ambayo mimi tu aliandika. Kwa upande mwingine, kuna mkalimani nzima kwenda kwa nyuma. Hakika, wakati mimi mbio mpango huu, ni ilikuwa si mbio zeros ulioandaliwa na ndio iliyoundwa kwa ajili ya CPU yangu Intel. Badala yake, alikuwa akikimbia mstari kwa mstari PHP kificho kwamba inaonekana hasa kama sisi typed. Na hivyo wakati wewe kutumia kufasiriwa lugha, wewe kweli kufanya kulipa bei hii. Ni kwenda kuchukua muda wa kusoma faili yako ya juu hadi chini, kushoto na haki, na kisha kutoa kila kujipanga tena na tena. Sasa katika hali halisi, hasa kwenye mtandao, unaweza kweli kasi ya mchakato huu na Caching matokeo ya Kanuni PHP inatafsiriwa. Na kwamba inafanya hisia kwenye mtandao, kwa sababu kama wewe si mmoja mtumiaji kama mimi hapa, lakini watumiaji 1,000 au 10,000, kisha labda mara ya kwanza ni faili kupatikana ni mwepesi, lakini baada ya hapo ni kwa kasi zaidi. Lakini hii pia, tena, ni biashara ya mbali. Na kwa ajili ya kitu kama takwimu za utafiti kuweka, au hata kitu kubwa kama huu, watumiaji yako hatimaye kuanza kuhisi kwamba kushuka. Hivyo katika muda mfupi, kufasiriwa lugha ni sana katika Vogue, maarufu sana, na kusema ukweli pengine ni lugha wewe lazima kufikia kwa wakati kutatua matatizo baadae CS50. Lakini kutambua ni kiasi gani wewe ni kweli kuchukua kwa nafasi chini ya Hood kweli wale kadhaa iliyopita baada ya wiki katika hash meza, na miti, na inajaribu, ambayo hutumiwa hatimaye kwa kweli kutekeleza mambo kama mabano wazi, Mabano ya mraba, ambayo tunaweza sasa shukrani kuchukua kwa nafasi. Hivyo hebu tuangalie sasa katika muktadha huu mtandao. Na nilivyoeleza mara ya mwisho kwamba kuna rundo la superglobals katika PHP kwamba si kweli husika katika mstari amri. Wao ni muhimu zaidi katika mazingira ya ya kutumia PHP katika mazingira mtandao. Hivyo mbio PHP juu ya mtandao wa kompyuta ili kuzalisha mambo kama HTML. Na sisi akapiga saa $ _GET na $ _POST, na hiyo ambapo moja ya watumiaji ' pembejeo kuishia tu kama wewe kuwasilisha kuunda na faili unaomalizika. php kwenye mtandao server kama appliance. Lakini hebu tutazame $ _COOKIE Na $ _SESSION. Katika suala layman, ni nini kuki kama wewe kuelewa ni katika mazingira ya kutumia mtandao? Watazamaji: Picha ya kompyuta. DAVID Malan: Yeah. Ni faili kwenye kompyuta ya mtumiaji kupandwa na tovuti yoyote kutokea kwa kutembelea. Hivyo wakati wewe kwenda Facebook, wakati wa kwenda kwa bankofamerica.com, wakati wa kwenda kwa google.com, wakati wa kwenda karibu yoyote tovuti katika dunia siku hizi, ikiwa ni pamoja na cs50.net, kuki ni kupandwa kwenye kompyuta yako, ambayo ni ama thamani ya kuhifadhiwa katika RAM katika yako kompyuta katika kumbukumbu ya browser yako, au wakati mwingine kweli faili kuhifadhiwa kwenye gari yako ngumu. Na nini kawaida kuhifadhiwa katika faili kwamba si user name yako, si yako password, kawaida si kitu nyeti isipokuwa tovuti si hivyo mzuri na usalama wao, lakini badala ni kubwa kipekee kati ya kitambulisho mambo mengine. Ni kubwa random idadi kupanda juu yako kompyuta lakini unaweza kufikiria kama aina ya muhuri virtual mkono kama kutoka klabu au baadhi ya Hifadhi ya pumbao kwamba inaruhusu wafanyakazi, wamiliki wa kwamba huduma, kukumbuka wewe ni nani. Hivyo kama kubwa ya simu random ni kama 12345678, ingawa hiyo ni wazi pia si random, kufikiri ya kwamba kama mkono muhuri kwamba wakati wa ziara facebook.com kwa mara ya kwanza, wao muhuri kwamba idadi juu ya mkono wako. Na kisha kwa sababu wewe kusema HTTP, unaweza kuwa browser, na kwa sababu Facebook wazi anaongea huo kama mtandao server, HTTP itifaki anasema kwamba wowote hatimaye kutembelea facebook.com, kama ni ya pili baadaye, saa baadaye, hata siku ya pili, hivyo muda mrefu kama una si wazi watumiaji nje, ambayo kwa ufanisi ni kama kuosha mikono yako. HTTP inasema unapaswa sasa wako mkono muhuri kila wakati kurudi kwa tovuti hiyo. Nini Facebook basi haina ni wao kuangalia muhuri kwamba mkono na wanasema, oh, 123,456,789. Sijui katika mtazamo wa kwanza kwamba hii ni David Malan katika Cambridge, Massachusetts, lakini wanaweza kuangalia yao database na kusema, oh, mtu juu ambao kompyuta sisi kupandwa 123456789 ni David Malan kutoka Cambridge, Massachusetts. Hebu kuonyesha kuwa mtumiaji basi profile yake ukurasa au Habari wake Feed. Lakini kuna tatizo hapa kama hii ni jinsi ya mtandao kwa kweli kazi. Hebu tuangalie mfano wa haraka. Hebu kweli kwenda kusema facebook.com. Lakini kabla tunaweza kwenda huko, basi mimi kwenda mbele na kufungua Chrome Mkaguzi chini hapa. Hebu tuangalie tab mtandao. Na sasa hebu kwenda mbele na aina katika https://facebook.com. Na mimi nina kufanya kwamba ili kwamba hatuoni yote ya maelekezo hayo na taka muda wa kutafuta njia ya wale. Hebu hit kuingia. Wote haki. Tunaona rundo zima la maombi. Iwafikie Facebook. Kuna rundo zima la files. Na hapa, kwa kutaja yangu ya latency mara ya mwisho, hiyo ni mengi ya maombi HTTP. Lakini moja ya kwanza pengine ni kuvutia zaidi. Basi hebu kitabu hapa chini, na Mimi itabidi kuvuta katika pili. Hii ni kwenda kuwa aina ya fujo, lakini hebu angalia. Picha ni kupeleka sisi nzima rundo la mambo ya ajabu. Lakini Ho, ya kuvutia. Wao ni kupanda hata mmoja, lakini wanne mkono mihuri kwenye mkono wangu hapa. Kuweka-cookie, Kuweka-cookie, kuweka-cookie, kuweka-kuki. Na kuna makala chache hapa. Wote hao kutaja baadhi aina ya kumalizika muda wake. Na inaonekana kama Facebook ni matumaini kukumbuka mimi mpaka mwaka 2015. Hivyo kwamba ni labda wakati na ambayo Mimi ni lazima logi nje au wao itabidi tu moja kwa moja kudhani mimi nina si kuja nyuma. Hivyo kwamba ni kweli heshima kiasi cha muda. Na kuna baadhi ya wengine mambo kinachoendelea hapa. Kuki hii inaonekana kuwa nguvu ilifutwa kwa kusema kuwa muda wake mwaka 1970 kabla ya cookies kuwepo. Kwa hiyo kivinjari ni kwenda tu kwa kudhani OK, hiyo ni kama kuosha mikono muhuri. Lakini sasa wakati browser yangu inafanya ombi baadae - napenda kwenda mbele na kufanya hili tena na Reload. Sasa basi mimi nyuma ya kitabu juu ya ombi na kwenda chini hapa, ombi headers. Taarifa hii. Hivyo sasa nina chini si majibu headers, lakini taarifa inasema headers ombi. Na taarifa kwamba browser yangu kama sehemu ya ombi lake baada ya kupiga Reload ina alimtuma angalau zifuatazo habari. Si kuweka-cookie, lakini kuki. Hivyo hii ni ya mstari, header HTTP hivyo kusema, ambapo browser yangu ni aina ya bila kujua yangu ni kuwasilisha mkono wangu kwa ajili ya ukaguzi wa Facebook. Basi hizi cookies inaweza kuwa kutumika basi kwa nini? Kukumbuka wewe ni nani, au kukumbuka jinsi mara nyingi tumekuwa huko, au kweli kitu. Hivyo hapa ni counter.php. Na napenda kuvuta font. Na kila wakati mimi Reload ukurasa huu, taarifa ni kukumbuka mara ngapi Nimekuwa huko. Naam, si kwamba kuvutia kwamba wote. Hebu tu karibu kwamba tab, na sasa hebu kwenda nyuma ya http://localhost/counter.php. Oh, hiyo ni ya kuvutia. Bado ikumbukwe, hata ingawa mimi imefungwa tab. Na kusema ukweli, kama mimi karibu browser, kama kutekelezwa katika njia ya haki, mimi bado anaweza kukumbuka kwamba mtumiaji hii ni ambaye yeye au yeye ni mara ya kwanza, na mara moja tu mimi kwenda katika menyu ya Chrome, ambayo juu hapa ni hapa, na kwenda Historia, na bonyeza Takwimu Inatafuta wazi, kama baadhi yenu wanaweza kuwa katika siku za nyuma, basi tu mapenzi cookies zako kweli kuwa ilifutwa wakati wa mtandao maendeleo. Hivyo, kama sisi kwenda - hebu karibu up gedit hapa. Na kama sisi kwenda sasa na faili hii. Hebu kwenda katika yetu vhosts / localhost / umma, na napenda kufanya counter.php. Taarifa kwamba hii ni pretty rahisi mpango. Ni tovuti pretty rahisi. Hivyo juu ya faili ni maoni. Lakini hapa ni mstari mpya kuwa unaweza kufanya tumeona tayari katika p-seti saba, session_start (). Hii ni mstari wa kanuni PHP kwamba kimsingi anasema mtandao wa kompyuta, kufanya uhakika na muhuri wa mikono na kufanya uhakika wa kuangalia mihuri mkono. Hiyo ni kwamba kila mstari gani, na ni anafanya yote ya utaratibu huo kwa ajili yetu. Basi taarifa nimekuwa tu got matawi mawili hapa. Kama kukabiliana ufunguo ndani ya hii maalum wa kimataifa variable kuitwa _SESSION $ Ni kuweka - kwa maneno mengine, kama kuna baadhi ya thamani pale - hebu kupata na kuhifadhi katika mitaa variable kuitwa $ kukabiliana. Mwingine, hebu hawawajui $ kukabiliana default thamani ya 0. Sasa hapa ni hali moja ya PHP kwamba baraka na laana. PHP ni kidogo sloppy. Hivyo ambapo katika C, gani wigo wa kukabiliana na wamekuwa hapa au hapa? Ingekuwa funge kwa wale braces curly. Nadhani nini? Katika PHP, ipo hata nje ya wale curly braces, hapa, na hapa, na hapa, na hapa, na hata chini chini. Hivyo mimi kusema hii ni baraka katika hisia kwamba huna kufikiri kama ngumu kama tulivyofanya wiki iliyopita. Lakini pia ni kidogo ya laana kwa kuwa hakuna jambo ambapo matumizi ya kutofautiana katika PHP, angalau katika mpango kama huu, ni kupatikana kwa ajili ya kimataifa bora au mbaya. Hivyo kuwa na kukumbuka kwamba sasa vigezo yako inaweza kuwa kisichojulikana. Unaweza kuwa hufafanuliwa yao mahali pengine. Lakini je, Mimi naenda kufanya hatimaye? Mimi nina kwenda kuhifadhi ndani ya kwamba kimataifa kutofautiana kama thamani ya kukabiliana na muhimu matokeo ya kufanya kukabiliana pamoja na 1. Hivyo hii ni hesabu kwamba haina incrementation ya kukabiliana na kwamba. Na ukweli kwamba mimi nina kuhifadhi kwamba thamani nyuma katika hapa ni njia ya kimsingi update database kukumbuka kwamba mtumiaji 123456789 imekuwa hapa mara mbili. Na wakati mimi kufanya hivyo tena wakati mwingine mimi upya ukurasa, ni kwenda kuangalia mkono wangu muhuri na kusema, oh, mtumiaji 123456789 ina sasa hapa mara tatu. Na hivyo kile PHP na lugha sawa ni kufanya kwa ajili yetu ni wao ni kuhesabia nje jinsi na wapi na kwa muda gani kuhifadhi maadili katika hii maalum superglobal. Na hii superglobal wakati mwingine mimi kutembelea ukurasa ni aina ya magically kabla ya wakazi, kujazwa na maadili ambayo kulikuwa na mara ya mwisho alitembelea, kama kwamba alikuwa wa pili iliyopita, wiki iliyopita, au mwaka 2013 na sasa tuko kuzungumza kuhusu mwaka 2015. PHP na utunzaji mtandao wa kompyuta ya yote kwa ajili yenu. Watazamaji: [inaudible]. DAVID Malan: Vigezo katika PHP ni kimsingi daima kimataifa kama wewe kutangaza yao ndani ya kazi, na kisha wao ni ndani kazi tu. Lakini kwa sababu nimekuwa si imeandikwa yoyote kazi, wao ni sasa kwa ufanisi kimataifa katika faili yangu yote hapa. Watazamaji: Je, kuna njia kuwafanya ndani? DAVID Malan: Je, kuna yeyote njia ya kuwafanya ndani? Tu kwa wrapping yao katika kazi. Ambayo katika toleo la karibuni la PHP, unaweza kufanya hivyo kwa kazi bila majina. Lakini zaidi juu ya kwamba katika mazingira ya JavaScript. Lakini jibu fupi ni no. jibu tena ni ndiyo. Nice. Jaribio nzuri swali. Sawa. Hivyo mwisho, ukurasa yenyewe ni kweli pretty rahisi. Taarifa kwamba mara moja mimi exit PHP mode, kukumbuka kwamba wote wa mambo haya chini chini ni kwenda tu kupata mate nje ghafi ya browser. Ambayo ni mzuri, kwa sababu mimi unataka kutuma user baadhi HTML, lakini mimi unataka kwa dynamically update kwamba HTML. Na njia moja siwezi kufanya hivyo ni aina ya haraka sana kuacha nyuma katika PHP mode, matumizi ya bracket wazi swali alama ishara sawa, na kisha thamani ya pato la ya kukabiliana. Au kama hii inaonekana kidogo cryptic, hii ishara sawa ni kweli tu baadhi sukari Kiwango cha kisintaksia kwa hii printf ($ counter). Lakini kusema ukweli, kwamba ni kidogo tu ugly na kidogo annoying kwa aina. Hivyo PHP nicely sana inatoa kipengele hiki ambapo unaweza tu kusema ni zaidi ufupi katika njia hiyo hiyo. Hivyo nini kinaendelea chini ya kofia? Hebu haraka kuangalia katika mtandao tab hapa kwa counter.php. Na napenda kwenda mbele na kwanza hebu wazi cookies zako. Hebu kuvinjari data wazi tangu mwanzo wa wakati. Sasa hebu kwenda nyuma zaidi ya hapa. Sasa hebu upya ukurasa. Na mimi nina nyuma katika sifuri. Kwa sababu mkono wangu muhuri imechukuliwa, Mimi sasa kupata kuki mpya. Hakika kama mimi kuangalia tab mtandao na kuangalia majibu headers, taarifa kwamba appliance ni kutuma mimi cookie ambaye jina lake ni kiasi fulani kiholela, lakini aina ya sababu, PHPSESSID. Na ni hii kutuma mimi kwa kweli kubwa random idadi. Siyo kabisa idadi. Siyo hexadesimoli kabisa. Ni aina fulani ya kamba alphanumeric, lakini labda ni random. Na kwamba ni mkono muhuri ili kusema kwamba mimi nina akimaanisha. Wakati huo huo kama mimi bonyeza Reload na kisha kuangalia line hii ya pili kwa ajili ya pili wangu ombi, taarifa sasa kwamba ombi langu headers ni pamoja na PHPSESSID sawa na hii, si kuweka-cookie, lakini tu cookie. Na kwamba kuwasilisha browser yangu ya mkono wangu muhuri. Hivyo sasa kama teaser, na tutaweza majadiliano zaidi kuhusu hili katika wiki au hivyo, lakini katika njia gani hii kufanya mazingira magumu, akaunti yako Facebook mazingira magumu, na mengine kama akaunti mazingira magumu? Watazamaji: Kama mtu ana cookie yako. DAVID Malan: Yeah, kama mtu ina cookie yako. I mean kweli, kama ilivyo kwa baadhi yenu wanaweza wamejaribu katika kama klabu au Hifadhi ya pumbao, kama wewe kujaribu kitu kama hii nakala muhuri, pamoja na nyuma kwenye mkono wa mtu mwingine, na kisha yeye au yeye kumwakilisha kama yao wenyewe, kama ni kweli haina kuangalia kufanana, 123456789, basi mtandao server ni inaonekana tu kwenda kuamini kwamba user kwamba ni wewe. Na hii ni kweli ya msingi tishio wakati wowote kutumia cookies kwa sababu kama mtu tu spoofs hivyo kusema cookie yako, takwimu nje ni nini ni, ama kwa kweli kuiga kwa kuangalia katika kompyuta yako na kuwa kama, OK. Cookie Daudi ni JJ3JIK na kadhalika, na kisha wao ni smart kutosha kujua jinsi ya aina ya manually kutuma kwamba cookie kutoka browser au kutoka mpango wao kuandika, wanaweza kabisa kuingia katika tovuti kama wewe. Ni si kwamba ni vigumu kujifanya kuwa mtu mwingine isipokuwa sisi kupitia upya p-kuweka mbili, ambayo ilianzisha nini? Watazamaji: Cryptography. DAVID Malan: kidogo kidogo ya cryptography. Rahisi cryptography, angalau katika toleo la kawaida, lakini crypto hata hivyo. chini. Hivyo ni zamu nje kama wewe fumbo yote ya headers haya kwa kutumia kitu ambacho kusudi, sasa kwa kujua familiarly zaidi kama SSL, safu ya soketi salama, au https:// URLs, kisha mambo yote haya tumekuwa glancing katika ni kweli encrypted, ambayo ina maana kwamba ni kama wewe hawawezi kusoma mkono muhuri. Tu facebook.com anaweza, au google.com, au katika kesi hii, appliance unaweza kusoma mkono muhuri. Kwa bahati mbaya, ingawa, na tena, hii ni zote zinazofaa pia kwa NSA mambo wa marehemu, hata SSL ni linaloweza. Na ni kweli si kwamba ni vigumu hata ufa encryption hiyo. Sio sana kwa ngozi encryption, lakini tricking na kisakuzi katika decrypting data mapema. Lakini tena, tutaweza tease wewe na kwamba kabla ya muda mrefu. Kwa sasa, tu kuwa na hofu. Ni hali ya kusikitisha aina ya kweli. Sawa. Hivyo, ambapo gani hii sasa kuondoka sisi? Naam, hebu kufanya hili. Hebu kwenda mbele na kuchukua haraka teaser kabla ya sisi kuchukua mapumziko. Na nadhani tutaweza msiweke kidogo tena leo, lakini sisi ni kwenda kupiga mbizi katika kitu bidhaa mpya na sexy, ambayo itakuwa noa hamu yako kwa hata zaidi. Hivyo kwamba ni teaser. Hivyo SQL, sisi kuanza kuzungumza juu ya milele hivyo kwa ufupi mwisho wakati. Itabidi kweli kupata mikono yako chafu na baadhi ya kuwa katika p-seti saba. Na katika suala layman, nini SQL - S-Q-L - kufanya kwa ajili yenu? Ni nini? Yeah. Watazamaji: Hebu wewe kupata data. DAVID Malan: Yeah. Ni hebu wewe kupata data katika database. Uliza muundo lugha. Na hii ni kimsingi programu ya lugha. Kuna makala ya kwamba sisi si hata kutumia darasani. Lakini unaweza ufanisi kufafanua majukumu. Wao ni kuitwa kuhifadhiwa taratibu katika SQL. Lakini tutaweza kushika ni haki rahisi na wa haki kuitumia kwa ajili ya shughuli za baadhi ya msingi kama kuchagua data, kuingiza data, uppdatering data, na kufuta data. Na unaweza kweli nadhani wa database, kama database SQL, kama tu kuwa Microsoft Excel. Sababu SQL inahusu kimahusiano database, ambapo uhusiano tu ina maana meza. Safu na nguzo. Hivyo chochote unaweza kuweka katika spreadsheet kama hii au Google Docs, unaweza kuweka katika database SQL kwa kutangaza meza. Sasa, ni jinsi gani unaweza kweli kupata kwamba habari? Naam, na amri au maswali kama hii. CHAGUA, kuingiza, UPDATE, na Delete. Na kwa sehemu kubwa, wale ni wanne tu viungo itabidi kufanya kitu kabisa nguvu katika tatizo kuweka saba. Sasa nyuma katika siku, wewe ungekuwa kweli kiutendaji na database katika nyeusi na nyeupe terminal dirisha haraka blinking kama hii. Na database sisi ni mbio juu ya appliance inaitwa MySQL, ambayo ni huru na ya chanzo database injini. Kama Google na kusoma Wikipedia makala, itabidi kujua kwamba jina ni kidogo ya mpito kwa ajili ya baadhi ya matoleo ya Linux. Maria database ni kweli uma hivyo kusema ya MySQL. Muda mrefu hadithi fupi, Oracle kununuliwa MySQL. Oracle ni kampuni kubwa. Watu wamekuwa na wasiwasi kwamba ingekuwa tena kubaki kabisa kama chanzo wazi, hivyo hii ni nakala ya MySQL kwamba bado bure, bado wazi chanzo, na imewekwa katika Fedora Linux na default. Lakini hii ni aina ya maumivu katika shingo ya kupata khabari na Mbegu njia hii. Hivyo sisi ni pamoja na katika appliance CS50 bure wazi chanzo chombo inayoitwa phpMyAdmin. Bahati mbaya tu kwamba imeandikwa katika PHP. Hakuna msingi haja kwa PHP hapa. Lakini hii ni chombo tu cha mtandao msingi kwamba sisi kupakuliwa kwa bure, imewekwa katika appliance, ambayo inaruhusu yetu kuwa na graphical user interface na ambayo kuchunguza p-seti saba database na ambayo kujenga database mpya, kusema kwa ajili ya mradi wako mwenyewe wa mwisho kama wewe d kama, na hatimaye kujenga nguvu tovuti kama Fedha CS50 kwamba kuruhusu swala data na update data dynamically. Wewe si kwenda na kutumia tu rahisi Nakala faili au CSV. Unaweza kweli kutumia database smart mpango ili uweze kutekeleza zaidi kisasa maswali kuliko kusoma tu kwa kila kitu linearly. Hivyo kwa mfano, hii ni nini sisi kutoa wewe nje ya sanduku kwa p-seti saba. Hii ni meza na inaonekana angalau nguzo tatu, moja ambayo ni ya jina la mtumiaji, moja ambayo ni ya hash, na mengine ambayo ni ya ID. Lakini jambo kuvutia, na tu tease nje moja walidhani hapa, jina la mtumiaji labda ni tayari kipekee, haki? I mean, wengi tovuti yoyote, kama una jina la mtumiaji, kuna haiwezi kuwa mbili Makaisari. Kuna hawezi kuwa mbili malans. Kuna hawezi kuwa mbili jharvards. Yake ya kipekee. Vinginevyo, hawajui ambayo jharvard ni kweli ni. Basi nini ili kuwa motisha kwa ajili ya pia baada ya safu ya tatu juu ya kushoto kuna kuitwa ID, ambayo inaonekana kama idadi hiyo ni vile vile kipekee? Ni anahisi kutokuwa kidogo kwangu katika mtazamo wa kwanza. Nini kinaweza kuwa na kulazimisha kuwa na si pekee tu majina ya watumiaji, lakini pia kipekee idadi? Watazamaji: Wangeweza nywila sawa. DAVID Malan: Watu wanaweza kuwa na nywila sawa, uhakika. Ambayo inaweza kabisa kutokea. Lakini kama wana jina hili la mtumiaji kipekee, mimi ingekuwa wanasema kwamba si kweli jambo, kwa sababu kama aina katika zao jina la mtumiaji, mimi tu haja ya kuangalia yao password, wake zao hash. Kwa nini kingine? Watazamaji: Kasi kutafuta. DAVID Malan: Kasi kutafuta. Kwa nini? Watazamaji: ID ni moja tu. DAVID Malan: ID ni moja tu tabia, au kuwa sahihi zaidi, ni ya simu, hivyo pengine 32 bits au kitu kama hicho. Ambapo jina la mtumiaji, inaonekana Jason Hirschhorn juu kuna ni aina ya ridiculously muda mrefu, na ni kwenda kuchukua yangu mengi zaidi wakati kwa kamba kulinganisha H-I-R-S-C-H-H-O-R-N, na labda 0 / au kitu kama hicho, ili kuangalia juu Jason, kinyume na tu akisema nipe mtumiaji namba mbili. Hiyo ni 32 bits. Ni INT moja ambayo una kulinganisha. Na kwa kweli, kwamba ni kwa nini hasa database huwa na hawawajui Vitambulisho vya kipekee kwa safu katika wao. Sasa nini wengine data aina kuna badala ya INT na inaonekana masharti kama hii? Naam, kwa kuwa zaidi ya sahihi, SQL database, kama MySQL, wana mashamba CHAR. Na Char kidogo kuwapotosha si CHAR moja. Shamba CHAR katika orodha ya MySQL ni herufi moja au zaidi, lakini ni idadi maalum ya wahusika. Hivyo kwa mfano, kama mimi kwenda juu na phpMyAdmin kama unaweza kuwa tayari, au atakuja kuweka tatizo saba, na mimi kwenda kwa database yangu, na kwa ajili ya kujifurahisha, hebu kuunda meza mpya iitwayo mtihani na nguzo mbili tu. Mimi itabidi kisha bonyeza Go. Na hii itakuwa haki utambuzi, hasa kama wewe Little karibu juu yako mwenyewe. Hapa nipate aina ID kujenga meza mpya ya aina INT. Lakini hapa mimi ili aina jina la mtumiaji recreate kwamba meza mapema. Na taarifa nina rundo zima ya aina kuchagua. Na hii pia ni kwa nini phpMyAdmin ni aina ya nice. Ni aina ya binafsi mafundisho kwa kuwa unaweza tu aina ya uhakika, na bonyeza, na kuangalia dropdown menus, na kudai kutoka kwamba kile nguvu SQL anakupa. Na kwa kweli, kama mimi kuchagua CHAR, mimi basi na kutaja urefu, au jinsi maadili wengi, chars wangapi. Maadili jambo la kawaida sana ni mambo kama 255, lakini hiyo ni kidogo kwa muda mrefu. Kawaida ni nane kwa jina la mtumiaji. Lakini hiyo ni kidogo kidogo siku hizi. Hivyo hii ni uamuzi wa kubuni. Je, ni herufi 8 max, 32, 255, 1000? Ni kweli juu yako. Lakini shamba CHAR Idadi ya kudumu. Ili kuchagua chache pia na wewe ni aina ya Star kama unataka jina la mtumiaji tena. Kuchagua wengi mno na nini upande wa chini? Watazamaji: [inaudible]. DAVID Malan: Ni fujo. Tu kama katika C, kama una kubwa chunk ya kumbukumbu ya unahitaji, ni tu kupoteza muda na kupoteza nafasi. Hivyo kama njia mbadala, kuna Varchar, ambayo kutatua tatizo hili kwa kutibu urefu si kama urefu fasta, lakini kama urefu wa kiwango cha juu, na kutumia variable idadi ya chars, ambayo kisha huelekea kutumia chars tu kama wengi kama wewe kweli wanahitaji. Inaonekana kuwa kamilifu. Mbona sisi kujikwamua Data CHAR aina basi? Nini kinaweza kuwa upande wa chini ya kutumia VARCHARs, ambayo sauti kama ni kushinda nzuri? Yeah? Watazamaji: [inaudible]. DAVID Malan: OK, nzuri. Hivyo kama wote wa data wako ni sawa urefu, nini tatizo? Watazamaji: Kwa sababu wewe ni kupoteza data kwa kuwaambia wote. DAVID Malan: Hivyo kama wote wa data yako ni urefu huo huo, ingawa, napenda wanasema kwamba kubainisha urefu wa kiwango cha juu juu ya varchar ni hakuna tofauti na kubainisha urefu fasta juu ya CHAR kama unajua idadi hiyo mapema. Lakini kuna shaka, na mimi itabidi aina ya dondoo kutoka jibu kwamba ukweli kwamba bado kuna max, ambayo inaweza kuwa annoying, hasa kama wewe kukutana jina la mtu kwamba isiyo ya kawaida kwa muda mrefu kwamba hakuwa wanatarajia. Na pia ni kidogo chini ya ufanisi kwa kweli kutafuta kwenye VARCHARs kama kinyume na kutafuta chars, hasa kwa ajili ya mbao kwa muda mrefu kwamba kuwa na kura na kura ya data. Hivyo hapa pia, mada ni tena hakuna chaguo wazi. Hivyo tu kukupa hisia nyingine data aina ambayo inaweza kuwa ya maslahi ama kwa ajili ya p-kuweka saba au katika baadaye, kuna INT. Kuna BIGINT, ambayo ni kama muda mrefu kwa muda mrefu. Inaelekea kuwa 64 bits. Kuna decimal, ambayo utaona katika kuweka tatizo, ambayo ni kiasi jibu safi na matatizo sisi yaliyojitokeza na kuelea na yaliyo uhakika kutokuwa sahihi. Na kisha kuna DATETIME. Kuna literally aina data ambayo ina kuangalia kama mwaka, mwezi, siku, na saa, dakika, na ya pili. Lakini database SQL pia na mambo Tutamwita bahati. Na index ni kitu ambacho bayana wakati kujenga meza kwa kufanya upekuzi na shughuli nyingine ufanisi zaidi. Hasa, kuna kitu kinachoitwa PRIMARY index kwamba unaweza kutangaza kama ifuatavyo. Sisi alifanya hivyo kwa ajili yenu na watumiaji meza sisi kukupa. Lakini taarifa kama ningekuwa manually recreating watumiaji meza hapa kutoa ni jina la watumiaji. Mimi tayari fulani ID. Mimi fulani INT. Mimi fulani jina la mtumiaji na kiwango cha juu 32 wahusika. Lakini kama sisi kuendelea scrolling katika huu haki dirisha pana, taarifa kuna kundi la mambo mengine siwezi bayana. Moja, siwezi kutaja sifa kama, unajua nini, hii INT lazima Unsigned. Sitaki idadi hasi, hivyo hebu kufanya hivyo Unsigned. Batili si muhimu hapa kwa sababu Mimi nataka kila mtumiaji kuwa na idadi ya kipekee. Sitaki kuwa ni null. Lakini hii ni ya kuvutia. Naweza bayana kwamba ID ni ama msingi muhimu ya orodha hii, au ni kipekee, au ni indexed, au Nakala full. Hivyo kwa ajili ya leo, kwa muda mrefu hadithi short, PRIMARY ina maana kwamba hii atakuwa kuwa wote conceptually na utaalamu shamba kwamba sisi kutumia kipekee kutambua watumiaji. Hivyo wakati sisi kuangalia juu watumiaji, hii ni aina ahadi kwa kuangalia yao juu zaidi na kwamba kitambulisho kipekee. Na database itahakikisha kwamba kama wewe kuwa na idadi user 3, huwezi kimwili kuingiza mtumiaji mwingine na kwamba idadi sawa 3. database tu kukataa kuhifadhi mabadiliko yako. Ambayo ni jambo jema, kwa sababu unaweza kujikinga na wewe mwenyewe. binafsi Vinginevyo, kwa jina la mtumiaji. Hivyo safu ya pili, kukumbuka, ni shamba la mtumiaji. Hivyo safu ya pili hapa ni jina la mtumiaji, kama tulivyofanya juu ya mbali kushoto hapo. Hivyo kile kingine ili nataka kutaja? Mimi si kuruhusiwa, kwa mujibu wa SQL, kutaja funguo mbili za msingi. unaweza bayana muhimu pamoja ambapo kuangalia mashamba yote mawili, lakini hawawezi mmoja mmoja kuwa funguo za msingi. Hivyo kwamba ni nje ya swali. Hivyo ambayo inaweza nataka kuchagua? Naam, UNIQUE ni sawa katika roho muhimu msingi ambapo wewe taja hii shamba hilo kuwa ya kipekee, lakini ni si kwenda kuwa moja Mimi kutumia muda wote. Na sisi siyo kwenda kwa kutumia hii moja wote wakati kwa sababu gani tena? Ni polepole uwezekano wa ikiwa ni jina la mtumiaji kwa muda mrefu. Ni tu kupoteza muda. INDEX, wakati huo huo, anaelezea bayana kwamba ni si kwenda kuwa ya kipekee, lakini Ningependa wewe kazi uchawi wako chini ya Hood kufanya hivyo kwa kasi kwa ajili yangu na kutafuta kwenye uwanja huu. Basi pengine hii si sahihi hapa. Kwa jina la mtumiaji, Ningependa kusema kwamba UNIQUE ni jibu nzuri. Lakini tuseme kwamba sisi alifanya zaidi ya watumiaji kuvutia zaidi kuliko majina ya watumiaji tu, hashes, na ID idadi. Nini kama sisi aliwapa watu majina kamili? Nini kama sisi akawapa anwani na data nyingine juu yao? Naam, kama wewe bayana kwamba safu katika Mbegu ni indexed, hiyo ina maana kwamba MySQL, au Oracle, au chochote database unatumia, wanapaswa kufanya kazi yake ya uchawi na kutumia aina fulani ya data dhana muundo kama mti, au trie, au a hash meza, au kitu kuhakikisha kwamba wakati wewe kutafuta data kwa kutumia kuchagua kwenye uwanja fulani - kama kuonyesha yangu kwamba kila mtu maisha ya Oxford Street. swala kama hiyo. Kama una maalum katika mapema kwamba unataka index juu ya shamba hilo, utafutaji itakuwa, kwa kasi zaidi. Kama huna bayana index, bora unaweza kufanya ni kutafuta linear kama siyo vyema. Lakini kama wewe taja INDEX, smart watu ambao alifanya database - kwa watu kama wewe ambao sasa kujua miti na inajaribu na meza hash - moja kwa moja kujenga data kama muundo katika RAM kuhakikisha kwamba utafutaji wale ni kwa kasi zaidi. Fulltext wakati huo huo ni sawa katika roho, lakini inaruhusu kufanya wildcard utafutaji, kama kuonyesha yangu kwamba kila mtu anaishi katika mitaa yanayoanza kwa barua O kwa sababu yoyote. Unaweza kufanya upekuzi wildcard kama hiyo. Au, mambo zaidi ya kulazimisha kama show mimi kila mtu ambaye ana neno - kuonyesha yangu kila ambaye jina lake kuanza pamoja na barua fulani. Unaweza kutafuta maneno kwa njia hii. Sawa. Hivyo, nafasi kubuni huko uwezekano. Kuna wengine kuwa mimi itabidi wimbi mikono yangu. Ni zinageuka kuwa unaweza kuwa na kuhifadhi injini mbalimbali. Na hii ni arcane zaidi tunahitaji hakika kwa kuweka tatizo saba. By default, you guys ni kutumia kitu kinachoitwa InnoDB. Utaona kutaja mahali fulani katika interface phpMyAdmin ya uwezekano zaidi. Lakini kujua kwamba kuna mpango mwingine maamuzi ambayo ni ya uwezo maslahi ya kuja miradi mwisho kama kufanya kitu mtandao msingi. Lakini hebu kufanya hivyo. Hebu kwenda mbele na kuweka hii juu ya screen kama teaser kwa hadithi kuwashirikisha wewe, roommate, na glasi ya maziwa. Hebu dakika mbili au hivyo kuvunja hapa. Na kama unaweza fimbo karibu, hebu kuja tena, kuangalia kidogo zaidi katika SQL, na kisha kidogo ya JavaScript na p-kuweka nane katika akili. Sawa. Hivyo, hebu kupata wewe kufikiria juu ya kona kesi ambayo inaweza kwa urahisi sana kutokea katika mazingira ya kutumia database, au kusema ukweli, hata kwa kutumia mambo halisi ya dunia kama ATM kupata fedha. Hivyo hapa ni jokofu. Tuseme nimepata moja pia katika Dorm yako au nyumba yako. Na nimepata roommate moja, na wote kweli kama maziwa kwa mfano. Hivyo wewe kuja nyumbani kutoka darasa siku moja. Yeye au yeye ni bado nyuma. Unaweza kufungua friji. Kweli unataka kioo kubwa ya maziwa. Hakuna maziwa. Basi je, wewe nini? Wewe karibu fridge. Kunyakua funguo yako. Kwenda nje ya mraba. Na kupata katika mstari katika CVS kwa wale binafsi Checkout mambo, ambayo daima kuchukua muda mrefu zaidi kwa kweli kuwa mtunza fedha. Hata hivyo. Hivyo basi, wakati huo huo, dot dot dot, yako roommate huja nyumbani na yeye vile vile ina hankering kwa baadhi ya maziwa. Hivyo yeye au yeye kufungua fridge, inaonekana ndani, na oh, damn. No maziwa. Hivyo yeye anaongoza nje, hutokea kwenda kwa CVS nyingine, ambayo ilikuwa tu kuzuia mbali kwa sababu fulani, na yeye au yeye anapata katika line kununua baadhi ya maziwa. Wakati huo huo, wewe kuja nyumbani, yeye au anarejea nyumbani, na nini hatimaye na? Maziwa mara mbili zaidi. Lakini si kweli kama maziwa kiasi hicho. Hivyo sasa una maziwa kiasi kwamba sasa mmoja wao ni kwenda tu chacha hatimaye. Hivyo hili ni tatizo mbaya kweli kweli. Haki? Basi nini kimetokea? Hivyo kimsingi, hii ni aina mfano ujinga. Lakini chini ya Hood, nini tulikuwa na kutokea hapa ni ya wote wewe checked hali ya baadhi ya kipande cha kumbukumbu, jokofu. Wote wa checked hali baadhi ya kutofautiana. Ninyi wawili wakakata kauli kwamba basi alitenda juu. Lakini kwa bahati mbaya, wakati roommate yako mara katika kuhifadhi, hali ya kuwa variable iliyopita, yeye au yeye akarudi na sasa anataka kubadili serikali, lakini ni tayari iliyopita juu yake au kwake. Na bila shaka, yeye au yeye bila kuwa na wamekwenda kuhifadhi kama walijua kwamba walikuwa tayari njiani. Hivyo katika ulimwengu wa kweli, jinsi gani unaweza kuepuka tatizo hili, kuchukua una fridge, una roommate, na kweli kama maziwa? Watazamaji: Kuwasiliana. DAVID Malan: Kuwasiliana. OK. Lakini jinsi gani unaweza kuwasiliana? Watazamaji: Tuache kumbuka. DAVID Malan: Tuache kumbuka, haki? Daima kuondoka kumbuka, kwa mashabiki wa show. Haki ya wote, hivyo daima kuondoka kumbuka, au kuweka kweli kama kufuli au kitu kwenye friji kwamba anaendelea yako roommate kutoka ukaguzi wa hali ya kwamba kutofautiana. Sasa, kwa nini huenda hii kuwa germane na tatizo kuweka saba, au kwa ATM. Naam, kufikiria dunia katika ATM ambapo unaweza kuwa na uwezo wa kwenda juu kwa ATM mashine hapa, na mwingine ATM hapa. Na hii hufanyika mara nyingi kabisa. Na tuseme wewe alikuwa na kadi za ATM mbili, ambayo inawezekana kupata. Na kuingia katika mashine zote mbili ufanisi wakati huo huo, hopefully wakati hakuna mtu wa kuangalia. Na kisha wewe aina katika PIN yako takribani wakati huo huo. Na kisha kufanya swala usawa kuona jinsi gani fedha una. Na hebu sema una $ 100 kushoto katika akaunti yako. Hivyo kimsingi wakati huo huo, wewe kusema moja, sifuri, sifuri, kuingia. Na wewe hopefully kupata nyuma baadhi ya fedha. Lakini kiasi gani cha fedha ili kupata nyuma? Sasa kompyuta katika mwisho wa siku, hasa kama ni kuzungumza na watumishi, si lazima kufanya mambo ili ambayo inatarajiwa. Hivyo tuseme nini kinatokea, kwa sababu ya chochote kasi ya mtandao kuna masuala ya ni, au CPU masuala kuna, au kitu kama hicho, tuseme kwamba ATM kwanza hundi mizani yako na anaona, oh, mtu huyu ana $ 100. Lakini basi anapata aliwasihi kwa sababu labda Backup kinatokea na hivyo ni kupunguza chini. Au labda wakati kuangalia, mtandao uhusiano got kidogo polepole kwa sababu hii hutokea tu. Wao uko kimwili vifaa. Hivyo wakati huo huo, ATM ya pili ni kuuliza swali moja. Kiasi gani cha fedha haina Daudi na? $ 100 ni jibu. Lakini kwa sababu ya ATM ya kwanza bado alimtuma ujumbe Ondoa $ 100, wote wawili ATM kuwa kukaguliwa kuba benki hiyo, kwani ni $ 100 kuna, na sasa wote wawili mashine uwezekano ni kwenda mate nje jibu. Sasa, hii ni kubwa kwa wewe katika baadhi ya hisia kama kile benki gani hatimaye ni mabadiliko ya kiasi kwa minus 100 na kuweka kutofautiana sawa na yako akaunti ya benki sawa na 0, kinyume kwa kufanya bala 100. Sasa katika hali mbaya zaidi kwa ajili ya benki - au katika bora kwa ajili ya benki, wakati huo huo, wao kukupa $ 200, na akaunti ya benki yako sasa inaonyesha hasi $ 100, ambayo kwa kweli haina kufaidika wewe wakati wote. Lakini uhakika ni kwamba hii mbio sharti mbili roommates kupata maziwa, au kwa ajili ya mbili ATM kujaribu kupata fedha na mabadiliko ya hali ya kuba wakati huo huo ipo yoyote wakati una database. Sasa katika tatizo kuweka saba, suala hili lililojitokeza kwa maana kwamba kama kununua sehemu ya hisa Facebook, na kisha kwa ajili ya mfano kununua sehemu ya pili ya Picha za hisa, unahitaji kufanya uamuzi kama programu. Ili kuamua jinsi ya update database, tabia mbaya ni wewe kwenda kuwa na mstari mmoja kwa hisa kwamba, na hii ni njia mojawapo ya kutekeleza. Na wewe ni kwenda na moja ya sehemu ya FB, ambayo ni ya hisa zao alama Ticker kwa jina hili la mtumiaji, au hii mtumiaji ID, kitambulisho kipekee. Lakini hadithi hiyo inaweza kutokea hapa. Kama huna CHAGUA katika SQL, kama utaona katika tatizo kuweka saba wakati unaweza kuona, oh, Daudi ana sehemu moja ya hisa ya kuungana. Basi mimi sasa kubadili hili kuwa mbili hisa, kwa sababu yeye anataka kununua pili kushiriki. Lakini tuseme Daudi kweli alikuwa na mbili browser madirisha wazi, au tuseme kwamba ni akaunti ya pamoja na wanandoa wawili, na wote wawili ni kujaribu kufanya operesheni hiyo, kuna, pia, uwezo lipo kwa ajili ya uamuzi wa kuwa na alifanya msingi uliopita hali ya dunia - akaunti ina sehemu moja - na wote watu, au seva zote mbili, sasa kujaribu kusema increment kwa hisa mbili. Lakini katika kesi hii, unaweza kuwa na kushtakiwa yangu ya fedha kwa ajili ya hisa zote mbili, lakini incremented tu kwamba moja wakati. Hivyo katika muda mfupi, tatizo la msingi hapa, kama na utani kuhusu kuondoka kumbuka, au kuweka kufuli juu yake, ni kama watu wawili, au nyuzi mbili - kufikiri nyuma scratch - wanaweza kukagua hali ya baadhi ya kutofautiana na kisha kujaribu kubadili kwamba kutofautiana, lakini mambo hayo mawili si kutokea katika Wakati huo huo lakini wanaweza kupata kuingiliwa na mambo mengine yanayotokea, data unaweza kupata katika hali weird sana. Na unaweza kufaidika au unaweza kuteseka kwa maana ya mfano fedha. Hivyo katika tatizo kuweka saba, sisi kukupa hii line moja ya kanuni, ambayo kwa muda mrefu hadithi fupi, kutatua hii tatizo katika MySQL. Maelekezo haya kwa muda mrefu sana kwamba haina hata fit kwenye line moja juu ya screen hapa kuhakikisha kwamba operesheni yako ni nini wito atomic. Ni yote hufanyika mara moja, au haina kutokea wakati wote. Hii maneno ya muda mrefu sana hawawezi kupata kuingiliwa sehemu. Na kile yake ni halisi nini anasema. Kuingiza katika meza baadhi zifuatazo nyanja tatu wale maadili maalum, lakini juu ya muhimu duplicate, si kufanya Insert. Kufanya update. Hivyo hii ni kama kufanya SELECT na Kuingiza ili kuzungumza kwa wakati mmoja. Na ni nini muhimu kwamba pengine kuwa inajulikana hapa? Ni zamu nje, na utaona hii katika kuweka tatizo spec saba, kwa sababu tumekuwa alitangaza kuwa kuna muhimu kipekee juu ya meza hii hasa kama kwamba huwezi kuwa na safu mbalimbali kwa mtumiaji sawa na sawa hisa senti alama - katika mfano huu hapa, DVN.V ni silly hisa senti kwamba sisi rejea katika spec. Kwa sababu tumekuwa alitangaza kuwa ya kipekee, nini maana ya hii ni kwamba kama wewe kujaribu kuingiza mstari duplicate, wewe ni badala ya kwenda update bila mtu mwingine kuwa na nafasi ya kubadilika hali ya dunia aidha. Hivyo katika muda mfupi, hii kuhakikisha mambo ni atomic. Zaidi kwa ujumla ingawa, database kama MySQL - na huna haja ya kipengele hiki kwa p-kuweka saba lakini kuitunza katika akili kwa baadaye - kusaidia kile kinachojulikana shughuli, ambapo unaweza kusema Kuanza manunuzi literally. Unaweza kisha kutekeleza mbili SQL taarifa. Na SQL taarifa, kama utaona katika p-kuweka saba, inaonekana kidogo kitu kama hiki. Mwisho meza aitwaye akaunti. Kuweka uwiano safu sawa kwa kila usawa safu sasa ni minus 1000 ambapo idadi, akaunti namba, kama user ID, sawa na 2, na kisha update akaunti dot dot dot. Hivyo katika suala layman, je, hizi mbili maswali wanaonekana kufanya katika ulimwengu halisi kwa maana ya benki? Watazamaji: Kuhamisha kwa akiba. DAVID Malan: Hasa. Kuhamisha fedha kutoka moja akaunti ya nyingine. Na hii ni mfano mwingine ambapo kweli wanataka mambo haya mawili kutokea au si kutokea. Hawataki kitu kupata katika katikati yao na uwezekano wa kuharibu math, au kuharibu kiasi gani fedha una, au kiasi gani fedha benki ina. Basi nini kweli ni nzuri juu ya shughuli za katika MySQL ni kwamba, na database zaidi kwa ujumla, ni kwamba wao na watu smart ambao wameweza kutekelezwa makala haya kufikiri jinsi ya kufanya uhakika kwamba wote wa mambo hayo kutokea au si wakati wote. Na kama wewe ni kweli anayetaka kufanya tovuti hiyo kutumiwa na watu juu ya chuo hicho, watu katika ulimwengu halisi, kufanya kitu kwa maana startup, hizi ni aina ya maamuzi kubuni kwamba kuwa milele muhimu sana. Vinginevyo, kuanza kupoteza data, kupoteza watumiaji, au katika hali mbaya zaidi kama tumeona hapa, uwezekano wa kupoteza fedha. Hivyo tena, zaidi juu ya kwamba katika kuweka tatizo saba, kama vile labda kwa baadhi ya katika miradi ya mwisho. Basi hebu mabadiliko hayo picha tulikuwa wakati uliopita tu kwa njia moja zaidi. Hivyo basi mimi kwa kweli kuona kama naweza - nope, kwamba gone. Kuna ni. Hivyo hii ni ambapo sisi kushoto wakati wa mwisho. Na zinageuka tunakwenda toss jambo moja zaidi katika mchanganyiko hapa - lugha inayoitwa JavaScript. Hivyo JavaScript kweli inafaa ndani ya kipande hii - na mimi si kabisa kuacha nafasi ya kutosha, hivyo hii si sasa kwa wadogo. OK, hii ni kweli pathetic. OK, hivyo kwamba ni JavaScript. Sawa. Mimi kwa kweli kufanya hivyo disservice. Sawa. Hivyo JavaScript ni programu nyingine lugha, na mwisho wetu, Kama ambayo husaidia kuwahakikishia kwamba kuna si mengi zaidi ya hydrants moto hapa. Hivyo JavaScript ni pia kutafsiriwa lugha, ambayo ina maana hawana kukusanya ndani zeros na ndio. Wewe tu kukimbia. Lakini nini tofauti kimsingi na JavaScript kawaida ni kwamba si kuendesha kwenye mtandao kompyuta yako. Haina kupata kukimbia katika appliance per se. Badala yake, anapata kupakuliwa kwa mtumiaji kupitia HTTP katika browser yao - Chrome, Safari, Internet Explorer, Firefox, chochote - na ni browser kwamba executes hii hasa lugha ya programu. Hivyo kuwa wazi, PHP hivi sasa imekuwa kunyongwa aidha katika mstari amri katika nyeusi na nyeupe yetu dirisha, juu ya server kama appliance, kompyuta kama appliance, au imekuwa ni kuuawa kwa mtandao wa kompyuta mbio juu ya kompyuta. Lakini mandhari hapa ni kwamba PHP hivi sasa imekuwa kunyongwa server-upande, hivyo user na browser mtumiaji kamwe kuona mstari wa PHP code. Kwa kweli, kama wewe milele wazi browser kwa tovuti yako au nyingine na kweli kuona PHP code katika dirisha yako, mtu ana Star up. Kwa sababu haina maana kuwa alimtuma browser moja kwa moja. Ni walidhani wauawe na akageuka katika kitu kama HTML. Lakini JavaScript kimsingi ni kinyume. Ni maana ya kuwa na kukimbia kawaida ndani ya wa mtumiaji browser window. Na ni aina gani ya tovuti kutumia JavaScript kisha siku hizi? Kama literally kila tovuti maarufu. Kila tovuti ya kuwa wewe guys pengine matumizi ya kila siku kutumia JavaScript kwa rahisi na hata sexiest makala. Hivyo kitu kama Facebook Kuzungumza kama wewe kutumia. Jinsi gani kwamba kweli kazi? Vizuri hivi sasa, yote ya mambo ya tumekuwa kufanyika kwa HTML na PHP akubali kwamba kuvuta up URL, na wewe hit kuingia, na unaweza kuona baadhi ya maudhui HTML. Na bonyeza kiungo, kwamba mabadiliko ya URL, mabadiliko ya ukurasa, na reloads baadhi ya maudhui mpya. Bonyeza URL mwingine au kuwasilisha fomu, unaweza kupata whisked kwenye ukurasa mwingine na unaweza kuona baadhi ya mambo mapya. Lakini kwa kutumia kitu kama Facebook Chat, au Gchat, au Maps Google, mara chache haina ukurasa mzima mahitaji kama kwamba unaweza kuona screen nyeupe kwa muda na kisha mambo mapya. Badala yake, kurasa za mtandao leo ni dynamically kupata updated tena na tena na tena kila aina ya nyuma ya pazia. Na zinageuka kuwa wakati huna kwenda kitu kama Facebook, au Gchat, au Gmail, na ukurasa updates moja kwa moja bila kupakia upya screen nzima, nini kilichotokea ni kwamba ya browser yako imefanya aina ya siri HTTP maombi ya ziada - si kwa kurasa nzima ya mtandao, lakini tu kwa ajili ya chunks kidogo ya data, kama ujumbe wa papo kwamba rafiki yako tu alimtuma wewe, au hali update kwamba mtu tukakutumia, au tweet kwamba mtu tu alimtuma. Ni maamuzi tu maombi kidogo kwa ajili ya data, na kisha kwa kutumia JavaScript, hii lugha ya programu, kubadili kile ukurasa wa mtandao inaonekana kama bila server kusaidia, bila server kuzalisha kwamba HTML. Hivyo katika muda mfupi, JavaScript inaweza kutumika kisha si tu kuchota data mpya kutoka server bila kupakia upya zima ukurasa au kuwasilisha fomu. Ni pia inaweza kutumika na mabadiliko ya kinachojulikana DOM - hati kitu mfano - ambayo ni njia tu dhana kwa akisema mti wa HTML kuwa tuliona wakati wa mwisho. Hivyo kuwahakikishia, JavaScript ni syntactically hivyo sawa na C kama vizuri. Hakuna kazi kuu ni. Wewe tu kuanza kuandika code na itakuwa kupata kuuawa, au kutafsiriwa vizuri zaidi. Hali itakuwa kuangalia kama hii. Hakuna tofauti na C au PHP kwa jambo hilo. Maneno Boolean au-ed pamoja kuangalia kama hii. Anded pamoja kuangalia kama hii. Swichi kuangalia kama hii. Kwa loops kuangalia kama hii. Wakati loops kuangalia kama hii. Je, wakati tanzi kuangalia kama hii. Hii ni mpya. Hivyo JavaScript ina si foreach kujenga per se, lakini kujenga hii kwa kutofautiana i katika safu, na i katika hii kesi inakuwa thamani index. Hivyo ni kidogo tofauti na ile foreach, ingawa matoleo mapya ya JavaScript ni kuja nje wakati wote, hivyo hata makala haya lugha ni kutoa. Na kama kando, JavaScript siku hizi pia inaweza kutumika kwenye kompyuta tu kama PHP kwa kutumia mfumo aitwaye Node.js. Moja ya CS50 ya TFS, Kevin, imesababisha semina ya Node.js hiyo inapatikana katika cs50.net/seminars. Hivyo kama wewe ni curious, tunajua kwamba wewe Unaweza kutumia hili upande wa server kama vizuri, lakini hiyo ni mwenendo haki ya hivi karibuni, lakini nguvu moja wakati huo. Hii ni tofauti kidogo. Hii ni safu katika JavaScript. Na nini mgomo wewe kama mbalimbali dhidi ya C au PHP? Kuna hadithi chache haraka tunaweza kujua hapa. Kinachokosekana dhidi ya PHP? Watazamaji: [inaudible]. DAVID Malan: Ndiyo? Sorry, kusema tena? Watazamaji: Si kutangaza aina ya kutofautiana. DAVID Malan: Sisi siyo kutangaza aina ya kutofautiana. Hivyo kweli kabisa kama PHP, sisi siyo kubainisha aina ya kutofautiana hii. Badala yake, sisi ni zaidi yaliyotokea akisema var kwa kutofautiana. Hatuna kero PHP ya dola ishara, ambayo wakati kwa tedious aina, haina kufanya zaidi wazi kwamba kitu ni kutofautiana. Wakati hapa, sisi ni aina ya nyuma Mbinu C ya kwa kupiga tu variable kwa jina tunataka kwa kufanya hivyo, kama idadi. Na pia kama PHP, tuna mabano mraba kwa maadili ndani ya kuwa safu. Hivyo vigezo katika JavaScript pia ili kuangalia kama hii. Taarifa hapa hii ni string kuitwa s, lakini vile vile na sisi si fulani kwamba ni kamba. Hapa ingawa ni kipengele kwamba haina kuwepo katika njia sawa katika PHP, lakini kidogo vile vile. Hii ni kitu katika JavaScript. Na vitu ni aina ya Swiss Army Kisu ya muundo data kwa kuwa wanaweza kuzitumia kwa idadi yoyote ya mambo. Hapa, kwa mfano, sisi ni kutangaza variable kuitwa quote. aina ya kwamba variable ni kitu. Unaweza kufikiria hili kama C struct kwamba ana funguo na maadili. Ni ishara muhimu. FB ni thamani, inaonekana hisa alama. Comma. Bei ni muhimu nyingine, na thamani yake ni inaonekana hatua yaliyo, au a idadi kwa ujumla zaidi katika JavaScript, ya $ 49.26. Hivyo PHP hana - hatujaona katika PHP vitu kabisa kama hii, lakini hatukuwa kuona Analog, ambayo ilikuwa nini? Watazamaji: [inaudible]. DAVID Malan: associative arrays. Hivyo ambapo PHP ina arrays associative ambao syntax ni milele kidogo ili tofauti - tuliona mabano mraba. Tuliona weird mishale alama. JavaScript ina vitu, lakini hii ni zaidi tofauti semantic na a kisawe mbalimbali kwa sasa. Hata hivyo, kama kando, PHP pia ina vitu kwa njia ambayo Java na nyingine lugha na vitu katika kifaa-oriented programu. Lakini tutaweza kutumia haya tu kwa ajili ya aina data kwa sasa. Vitu na associative arrays. Hii mtu anaweza kufanya hivyo kidogo zaidi ya wazi. Hapa ni kwa nini kitu ni muhimu. Wakati unataka kutangaza mwanafunzi, kama Zamyla, tunaweza kweli kurejelea hivyo kusema ndani ya kwamba kitu kwa kutumia mabano curly tu kama kabla ya rundo zima la funguo na maadili katika hapa. Tuna ID, nyumba, na jina kwa Zamyla, ikifuatiwa na semicolon kama kawaida katika mwisho. Hapa chini pia, hii ni kidogo mbalimbali, lakini pia nguvu sana siku hizi. Hapa ni safu, na mimi kujua kwamba kwa sababu kuna mraba mabano up juu na bracket mraba chini. Na hii ni safu ya data nini aina inaonekana katika JavaScript? Hii ni safu ya inaonekana kama vitu tatu. Na Mimi najua ni kitu tu kwa sababu ya braces curly. Na taarifa kuna wazi curly brace, baadhi ya mambo, karibu curly brace, comma, kisha baadhi zaidi, comma, na kisha baadhi zaidi. Hivyo kwamba ni hoja tatu kutengwa kwa koma mbili. Hivyo hii ni safu ya vitu tatu. Na kila mmoja wa wale vitu inaonekana kuwa mwanafunzi au wafanyakazi mwanachama wa baadhi aina, kila mmoja kwa ID, nyumba, na jina. Lakini nimepata kuitwa hii kitu aitwaye JSON - JavaScript Object nukuu. Na hii ni format data kwamba kweli ni maarufu sana na katika vogue siku hizi kwamba kama wewe kuandika maombi kwamba anatumia Facebook API, Twitter API, kweli karibu API yoyote huko nje siku hizi, ikiwa ni pamoja na baadhi ya CS50 mwenyewe, data kupata nyuma ni si katika umri wa shule ya CSV format. Kwa sababu kukumbuka kwamba CSV ni super rahisi. Ni nguzo tu kutengwa kwa koma. JSON data anatoa metadata zaidi. Ni washirika muhimu kwa kila thamani hivyo hawana kudhani tu kwamba safu 0 ni thamani moja, safu moja ni mwingine, safu mbili ni mwingine. Kila kitu katika JSON kitu hapa ni aina binafsi kuelezea, kwa sababu kila moja ya majina katika file hii ina literally jina mbele yake kama alinukuliwa kamba. Hivyo basi tuangalie a mifano michache hapa. Hebu kwenda katika appliance. Na napenda kwenda katika vhost wetu directory katika umma. Na napenda kwenda katika JavaScript directory. Na hebu kwenda mbele na kufungua dom-0.html, ambapo DOM tu ina maana hati kitu mfano wa kuigwa. Ni mambo ya mti ambayo Mimi inajulikana mapema. Na napenda kupendekeza yafuatayo. Hapa ni ukurasa wa mtandao ambao mwili ni pretty rahisi. Hivyo chini hapa chini, taarifa mimi na aina. Tumeona wale walio kuwa kabla. Ina pembejeo mbili, moja ambayo ina ID ya jina, moja ambayo ina aina ya Waislamu, na kwanza aina moja ni maandishi. Hivyo hii kweli sauti pretty rahisi. Hebu nenda hapa. Hebu kwenda nyuma ya ukurasa huu hapa. Hebu kwenda katika localhost, na kwenda katika JavaScript orodha yetu, na kwenda dom-0, na hapa tuna fomu hii. Hivyo kwamba ni inaonekana ukurasa hii yote gani. Ni ana shamba jina na a Kuwasilisha kifungo. Lakini mimi si kwenda kutumia PHP hapa. Mimi nina kwenda kufanya upande kila kitu mteja hivyo kusema katika JavaScript kama ifuatavyo. Taarifa kwamba nimepata kweli kutokana na jina uwanja wa pembejeo hii ya kipekee kitambulisho, ambayo kwa kweli ila mimi wakati baadhi katika wakati huu. Na taarifa nimekuwa ilianzisha tag mwingine katika kichwa cha mtandao ukurasa wangu,  tag. Hivyo ni kwa maana hii kwamba JavaScript ni mteja upande lugha ya programu. Katika kesi hiyo, kama CSS, Nimekuwa kuweka ni moja kwa moja ndani ya HTML yangu. Lakini taarifa nimekuwa alitangaza kazi kwamba inaonekana kidogo kama PHP syntactically, lakini hii ni kweli JavaScript, kwa sababu tena, ni mteja upande katika browser. Na kuchukua nadhani jambo hili ni kwenda kufanya, hata ingawa baadhi ya syntax hapa ni mpya. Watazamaji: Sema hello yeyote. DAVID Malan: Ni kwenda kusema hello yeyote ziara ukurasa huu. Hivyo vipi? Hivyo taarifa, ni zamu nje katika JavaScript kuna macho () kazi. Hii ni kazi sana aina ya kusikitisha kwamba kweli tu huelekea waudhi watumiaji. Siyo moja unapaswa kweli kutumia kawaida, lakini ni ya haraka na chafu njia ya aina ya uchapishaji kitu kwa mtumiaji graphical interface, kama browser. Taarifa hapa kwamba mimi nimepata kamba katika quotes moja. Ni zinageuka kuwa tofauti na C, JavaScript unaweza kweli na matumizi ya moja ananukuu, na kusema ukweli ni tu aina ya mkataba kati ya Stylistic JavaScript programmers kutumia quotes moja. PHP, kweli kuwa kidogo maana tofauti. Lakini kwa sasa, tu kujua kwamba hiyo ni sababu tu. mkataba katika JavaScript ni mara nyingi kwa kutumia quotes moja, lakini tunaweza kutumia quotes mbili katika maeneo yote pia. Hivyo hii ni ya kuvutia. Kumbuka mwisho wakati huo tulikuwa na kwamba picha juu ya screen waliotumia mti ambapo alikuwa HTML node, na kichwa node, na node mwili, na kisha baadhi maandishi. Lakini kulikuwa na mtu mmoja maalum node katika juu sana kwamba mimi kuitwa hati. Naam, ni zamu nje katika JavaScript, yoyote wakati kuandika mpango katika JavaScript katika browser, unaweza kupata maalum wa kimataifa kutofautiana. Sawa katika roho superglobals PHP ya, hii moja inaitwa katika wote lowercase hati. Ni kama struct, lakini struct hii pia ina kazi ndani yake. Hivyo C struct tu ana data kawaida. Lakini JavaScript kitu kama hii kitaalam ni pia ina kazi, inayojulikana kama mbinu, ndani yake. Na unaweza kupiga kazi ndani ya hii kitu halisi kabisa kufanya yake jina, dot, na kisha jina la kazi, au tena mbinu. Ni tu kisawe, kwa kweli. Na nini kazi hii nini? Unaweza aina ya nadhani kutoka jina lake. Kupata hiki na ID. Hivyo hii ni kwenda kutafuta ukurasa mtandao, kutafuta mti huo, kuangalia kwa chochote node, AKA hiki, ina kipekee ID ya kunukuu unquote jina. Na kisha nini mimi kwenda kufanya nini? Mimi nina kwenda kupata thamani ndani ya kwamba node katika mti, na mimi nina kwenda kwa namna fulani kusema hello jina hilo. Hivyo kuchukua nadhani, hata kama sisi wameweza si kuonekana hii bado, je, pamoja na alama maana hapa na hapa pengine? Watazamaji: concatenate. DAVID Malan: concatenate. Haki, na haya ni aina ya kubuni maamuzi watu alifanya miaka iliyopita. Katika PHP, wewe concatenate mambo kwa dots. Katika C, kuruka kupitia hoops kadhaa na kuwaita kazi kama strcopy () au strcat () au kazi nyingine kama hizo. Lakini katika JavaScript, unaweza kutumia pluses. Hivyo hii ni concatenating tu masharti tatu - hello, jina, na kisha mshangao uhakika. Hivyo wakati na kwa nini ni kazi hii aitwaye ingawa? Naam, kuchukua nadhani kutoka HTML chini. Kwa nini ni kusalimiana () iitwayo, au wakati? Inavyoonekana, kama bora naweza kuwaambia, juu ya kuwasilisha, wakati fomu hii ni in, Mimi nina kwenda kufanya chochote ni ndani ya quotes haya. Na hasa, mimi nina kwenda kuwaita kusalimiana () na kisha kurudi uongo. Naam, hebu angalia nini wavu athari hapa ni ya kwanza. Hivyo basi mimi kwenda mbele na aina katika, kusema, Loren, Kuwasilisha. Habari Loren. Hebu tuone kama labda hii ilikuwa ni bahati utekelezaji. Nope. Hivyo ni kuandika nje chochote jina mimi kwa kweli kuweka huko. Lakini taarifa ya nini si kubadilika. URL bado ni dom-0.html. Hakuna register.php. Hakuna faili pili ni. Hakuna sifa action. Kwa hiyo kile ni uongo kurudi labda kufanya? Kwa nini mimi wito kusalimiana () na kisha kurudi uongo pengine? Nini kawaida hutokea wakati bonyeza Kuwasilisha fomu kwamba hata sisi na kuonekana katika kipindi cha wiki? Watazamaji: [inaudible]. DAVID Malan: Ni huenda mahali fulani, right? Unaendelea na baadhi URL marudio. Lakini mimi sitaki kuwa kutokea hapa. Nataka mtandao ukurasa yangu kuwa kabisa nguvu kama Gmail, ambapo mara moja uko huko, kukaa huko. URL haina mabadiliko katika njia ambayo inaonyesha ukurasa yote kupakia upya. Badala yake, mimi nataka tu mabadiliko ya kitu fulani kama uchapishaji nje kitu hapa juu ya screen. Vizuri basi mimi safi hii up kidogo. Hebu kufungua si dom-0, lakini napenda kufungua dom-2. Hivyo tu wameweza kuona baadhi syntax hapa. Ni zinageuka kuwa kile sisi tu hakuwa ni kutumia mbichi JavaScript. Hivyo hii ni kweli lugha JavaScript. Baadhi ya unaweza kujua ya maktaba aitwaye jQuery. Hivyo jQuery si sawa kitu kama JavaScript. Ni tu maktaba kwamba kweli smart guy aliandika na umaarufu kama kuwa karibu kila mtu katika dunia ya sasa anatumia jQuery wakati wa kutumia JavaScript. Na katika mtazamo wa kwanza, uaminifu, ni inaonekana cryptic kidogo zaidi. Lakini utapata, hasa kama wewe kwenda huko kwa ajili ya mradi wako wa mwisho na mtandao maendeleo, utapata kwamba hii Anasafisha mambo juu na Huwaokoeni kabisa mistari michache ya kificho. Hivyo basi tu mtazamo jinsi fomu hii ni kazi. Taarifa gani mimi kuondoa inaonekana kutoka HTML yangu? Hakuna juu ya kuwasilisha handler hivyo kusema. Hakuna sifa. Kwa sababu unajua, ni nini Mimi si kweli kama? Nilihisi kama sisi walikuwa kuanguka ndani ya tabia za zamani huko. Tu kama ni kuanzia kujisikia sloppy kwa intermingle wote CSS kwa HTML, kwa sababu wewe ni aina ya kutupa lugha mbalimbali duniani mahali, vile vile gani hii kuanza kujisikia kama barabara mbaya kwenda chini ambapo Mimi nina kuweka JavaScript code ndani ya yangu HTML badala ya factoring nje. Ili somo hapa. Katika dom-2.html, mimi nina factoring nje. Na mimi nina kufanya mambo kidogo tofauti. Kwa sasa, mimi nina kwenda wimbi mikono yangu nini hii kweli haina chini ya kofia. Lakini tu kwa sasa kudhani kwamba kwanza mstari wa kanuni katika maktaba hii aitwaye jQuery tu ina maana wakati hati ni tayari, kufanya yafuatayo. Kwa sababu kurasa za mtandao wanaweza kuchukua muda wa kupakia. Unaweza kuwa na kwenye mtandao polepole uhusiano, na inaweza kuwa inazunguka na inazunguka, na hatimaye ni kubeba. Kwamba mstari wa kanuni tu anasema kusubiri hadi ukurasa mzima ni tayari, hati ni tayari, kabla ya utekelezaji wa kanuni hii. Na sasa taarifa, hii pengine ni muhimu sana kwanza kuchukua mbali na jQuery. Mstari huu hapa ni sawa sana katika roho katika mstari huu muda mrefu hapa. Wakati katika mbichi JavaScript code, kuna ipo hati ya kimataifa ya kitu kwamba ina kazi kuitwa getElementById (), watu ambao aliandika jQuery kilichorahisishwa kwamba kusema tu dola ishara, na kisha ndani ya mabano kuweka quotes mbili, na kisha kuweka hash ishara na kufuatiwa na kipekee ID unataka kunyakua. Hivyo hii ni sawa na document.getElementById. Wakati huo huo,. Kuwasilisha tu ina maana juu ya kuwasilisha aina yoyote wewe ni akimaanisha upande wa kushoto, kwenda mbele na kutekeleza hili. Lakini hii ni sasa udadisi pia. Nini weird juu ya nini Nimekuwa yalionyesha hapa? Si tu ni aina ya syntactically mpya, pia kuna kitu missing. Watazamaji: Ni tu kuitwa kazi? Ni si kuitwa macho? DAVID Malan: Yeah. Vizuri, tahadhari hivyo () ni chini hapa, kuwa haki. Lakini hakuna kutaja ya jina, kama unajua, foo au kitu hapa. Na kwa kweli, hii ni moja ya makala ya JavaScript kwamba kabisa nguvu, lakini pia ni mpya kabisa. Na PHP kweli ina huu pia. Hebu kwenda mbele na kufanya kitu halisi haraka. Hebu kwenda mbele na kuweka hii hapa. Hebu kufanya hivyo. Kazi. Hebu piga handler hivi (). kazi handler hivyo kusema. Kitu ambacho kinafanya baadhi ya operesheni. Hebu kusafisha indentation yangu. Na kuweka hii hapa. Na kuweka kwamba hapa. Yep. OK. Basi sasa nina kazi kuitwa handler () kwamba mimi si kweli kujua nini anafanya bado. Ni tu bado ina kuwa mambo ya ajabu. Whoops. Alichukua sana. Hebu kufanya hivyo. Sawa. Sorry. Sawa. Hebu kufanya hivyo. OK. Kwamba inaonekana nzuri na moja kwa moja mbele sasa. Hebu kufanya hivyo. Kufanya hivyo. Na OK. Hivyo sasa, hebu kuweka hii zaidi ya hapa. Programu No zaidi juu ya kuruka. OK. Hivyo sasa, hebu kwenda nyuma ya ambapo hadithi kuanza. Hapo awali, mimi alisema kuwa mstari huu hapa maana wakati hati ni tayari, kwenda mbele na kufanya hivyo. Je, mimi unataka kufanya nini? Vizuri hasa, nataka kwenda mbele na kufanya yafuatayo. Kutekeleza mstari wa kanuni, na kisha nini nataka kufanya ni wito huu kazi wakati aina ni kuwasilishwa. Sasa hii ni nini kuvutia. Hii si yenyewe kazi. Taarifa mimi si kuweka mabano hapa katika njia ya kawaida. Mimi nina literally kupita kazi kuitwa handler () kwa kazi nyingine aitwaye kuwasilisha () kama hoja kama ingawa ni kama kutofautiana. Na hii ni moja ya sifa za JavaScript, ni kazi wenyewe ni kweli tu vitu. Kwa hakika, ni kweli tu vigezo ya aina fulani. Na kama jina la kazi ni handler (), hakuna sababu siwezi kupita katika kama hoja hapa. Na hii ina maana wakati aina na ID ya demo ni in, piga kazi hii. Lakini sasa kama mimi kuondoa haya yote, kwa nini basi mimi labda kufanya huu wa sasa iliyopita? Naam, hii ni kazi bila majina. Kwa sababu kusema ukweli, mimi barabara kwa nini mimi bothering kupoteza muda kutangaza kazi kuitwa handler () tu kuwaita katika moja na sehemu moja tu? Kama mimi si haja jina, na mimi si haja ya simu ni mahali zaidi ya moja, hebu tu kutekeleza kazi haki ambapo mimi haja yake. Na hivyo JavaScript na PHP msaada gani walioitwa kazi bila majina kwamba naomba kufanya hasa kwamba hapa. Lakini sisi ni scratching tu ya uso. Hebu tease na michache tu mifano ya mwisho hapa. Kama mimi kwenda katika quote.php. Taarifa kwamba hii ni kweli PHP kazi, mpango PHP, kwamba mimi aliandika kwamba anatarajia parameter HTTP aitwaye ishara, na siwezi kupita katika thamani kama FB. Na kama sisi kweli kuangalia chanzo code, hii ni querying tovuti ya bure aitwaye Yahoo Fedha, kama p-kuweka saba, na ni kurudi kwangu kitu katika inaonekana format inajulikana ni JSON - JavaScript Object nukuu. Ni tu kitu. Taarifa braces curly, quotes, koloni, na koma. Sasa wakati huo huo, hii ni pretty cool. Kwa sababu mimi pengine unaweza kutumia programu lugha ya kuzalisha URLs kwamba kuangalia kama hii dynamically, sawa? Mimi naweza kubadili hii Google na kupata nyuma ya Google bei ya hisa ya $ 1,017.55. Basi hebu angalia kama tunaweza kutumia hii sasa. Hebu kwenda ajax-0 hapa, ambayo inaonekana kama zifuatazo. Ni tu tovuti hiyo ina fomu na kifungo. Hebu hapa kwenda mbele na aina katika YHOO kwa hisa alama Yahoo, bonyeza Kupata Quote, na sasa taarifa mimi wameweza kujipatia macho na 32.86. Hebu kweli kwenda kwenye toleo fancier ya ukurasa huu, toleo mbili, na aina katika hebu sema Microsoft, MSFT. Kupata Quote. Na sasa taarifa, hakuna tahadhari. Taarifa ambapo anasema bei kuangaliwa? Kuna rahisi ya mifano mwanga katika kile Gchat, na kuungana Kuzungumza, na Gmail, na mengine kama Nje ni kufanya kwa kweli kubadilisha ukurasa wa mtandao. Taarifa hii. Hebu upya ukurasa. Hebu kufungua Chrome ya Inspekta. Hebu kwenda na mambo tab hapa chini. Sasa taarifa kama mimi kuvuta chini hapa na kufungua hili, taarifa kwamba hii ni yangu HTML DOM - hati yangu kitu mfano wa kuigwa. Hii ni HTML yangu. Lakini sasa taarifa, hata kama ni kinaendelea kuwa ngumu kidogo kuona katika wawili maeneo kwa mara moja, kama mimi aina katika FB hapa, kuangalia chini ya screen tu. Ni kweli kubadilisha HTML yangu juu ya kuruka. Na ni kufanya hii kabisa tu kwa kufanya kitu kama hiki. Kama mimi kufungua ajax-2, taarifa ya utekelezaji wa kitu kama sexy kama kwamba, hata kama ni pretty mbaya, lakini kama kisasa kama kwamba functionally, ina baadhi ya HTML chini. Lakini taarifa Nilikuwa tag. Tumekuwa si alitumia kabla, lakini hii ni kama, lakini haina nguvu kila kitu kwenye mstari mpya. Ni tu hufanya mkoa wa mstatili juu ya mstari huo kimsingi. Taarifa kwamba mimi akampa ID ya bei. Na zinageuka na kutumia huo JavaScript maktaba, nina kazi aitwaye quote () kwamba wito wakati wowote fomu ni kuwasilishwa. Na nini mimi kufanya ni hii. Mimi kutangaza variable katika JavaScript aitwaye url, kuokoa thamani quote.php? ishara =. Kwa maneno mengine, mimi mwenyewe ni mwanzo kuandaa ombi HTTP, na kisha Mimi nina concatenating kwenye kwamba pamoja na pamoja na chochote hiki na ID ya alama ni, ambayo taarifa ni kwamba Nakala shamba haki ya chini hapa. Hivyo tu kama sisi na aina katika siku za nyuma. Na kisha ni zamu nje katika jQuery, kama wewe simu. val (), kwamba wito wa val kazi, thamani ya kazi, kwamba anapata chochote mtumiaji typed in Na kisha wote wa trafiki mtandao kinachotokea ni hii. $. GetJSON. Na kama kando, ishara ya dola ni tu shorthand nukuu. Ni kweli jQuery.getJSON. Kupata mimi JSON kutoka URL huu, na wakati ombi anakuja nyuma, wito huu kazi na kupita katika kama hoja chochote akarudi kutoka server. Hivyo kwa maneno mengine, kama mimi kurejea browser, na mimi kurejea quote.php, nini browser yangu ni kufanya ni kupata chunk hii ya data. Na wakati mimi kwenda tovuti hii hapa, taarifa kama sisi badala ya kwenda mtandao tab na wazi, na kisha aina katika kitu kama GOOG kwa Google na Kupata Quote, taarifa ukurasa hakuna mabadiliko. Lakini ombi HTTP ulifanywa, na kile akarudi hapa kama sisi kuangalia jibu ni rundo zima la JSON kwamba sisi kupatikana hatimaye kwa line hii rahisi hapa. Takwimu ni kile kujipatia kutoka kwa seva. Bei ni jina la muhimu mimi huduma ya juu. Hivyo data.price anitiaye hiyo. Sasa wakati huo huo, na hii ni mfano wa mwisho. Unaweza kufanya lakini zaidi kwa ukurasa. Moja kwa kweli, vizuri mbili. Tunaweza kuleta nyuma tag, kama unakumbuka hii. Hiyo ni JavaScript. Tunaweza kufanya hivyo. Kusisimua sana. Sisi itabidi kuondoka kwamba kama cliffhanger. Lakini zaidi excitingly, unaweza kufanya mambo kama hayo. Kama mimi kwenda kwa geolocation-1, ni zamu nje kwamba Chrome anajua kwamba sisi ni katika latitude longitude 42.37 -71.10.. Hivyo kuna hata zaidi huko ovyo wako. Lakini zaidi juu ya kwamba wiki ijayo. Angalia wewe Jumatatu.