>> 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.