[Music kucheza] DAVID Malan: Hii ni CS 50, na huu ni mwanzo wa wiki tisa. Na nini sisi mawazo tunatarajia kufanya leo siyo tu karibu sura juu ya wiki iliyopita nyenzo ambapo sisi ililenga server upande mtandao programu kwa PHP na SQL, baadhi ya mambo database. Tutaweza majadiliano juu ya kidogo ya usalama leo na kisha mpito kwa programu upande wa mteja Lugha inayojulikana kama JavaScript. Lakini kwanza, baadhi ya ukombozi. Unaweza kukumbuka kuwa juu ya Jumatano, mimi yaliyowekwa kuandika tovuti ya kwamba alichukua katika pembejeo mtumiaji na HTML fomu kwamba kisha kuhifadhiwa kwamba majina pembejeo user, simu namba, na simu ya mkononi flygbolag katika database. Na kisha mimi alikuwa na amri kidogo line script imeandikwa katika PHP kwamba ilitakiwa iterate juu ya safu katika database na kutuma nje ujumbe wa maandishi. Licha kadhaa, majaribio kadhaa, sisi hakuwa na kupata kwamba kazi na mwisho. Hivyo mimi alitumia wiki hii nzima kazi juu ya kwamba kanuni kupata yetu nyuma hatua ambapo sisi kushoto mbali, ambapo yote I got na mwisho wa Jumatano ilikuwa ujumbe huu wa maandishi kutoka Margo kama mimi Jihadi, ikifuatiwa na ujumbe wa maandishi kutoka mwingine classmate, Nimepata hii Daudi. Ikifuatiwa na hii moja, ajabu kutia moyo. Agizo juu ya kwenda, kutia moyo sana. Mimi karibu got ni mpaka then-- na hiyo ni kumbuka sisi kumalizika siku ya Jumatano. Na kisha kweli labda favorite yangu, wakati baadaye, hii alikuja katika. Damn kuishi mkondo. Hivyo leo, sisi kurekebisha hili na haraka kuangalia nini mimi tumefanya tangu. Basi wote wa hii kanuni ya inapatikana online kutoka wiki iliyopita, wiki nane, chanzo code. Na utaona kwamba nilikwenda kupitia, na mimi kwa kweli kusafishwa up mambo kidogo. Mimi ilianzisha wanandoa nyingine makala ya SQL database. Kwa mfano, badala ya tu kufanya carrier ya var Char kama Nadhani alifanya juu ya kuruka wiki iliyopita. Mimi badala defined kama kile kinachoitwa enum. Na baadhi ya unaweza kuwa na kuonekana hii kama sisi Kugundua C. Enum ni kweli hulka ya C ambapo unaweza enumerate rundo zima la constants na hawawajui yao maadili moja kwa moja, kama moja, mbili, tatu, nne bila ya kuwa na namba ngumu kificho. Hivyo SQL inasaidia huo, ambapo kama una uwanja database kwamba tu wanataka kuchukua moja ya finite maadili, unaweza literally bayana ni kama nimefanya huko kwa wanne maarufu Marekani Mkono flygbolag. Hivyo mimi alifanya hivyo. Na mimi alifanya idadi ya mabadiliko kama vizuri, muhimu zaidi ya ambayo ilikuwa kupata email kufanya kazi kwa sababu wanakumbuka, kwamba mpango huu kutegemewa ambayo ujumla aitwaye email SMS gateway, ambayo ni tu njia dhana ya kusema kwamba Verizon, na AT & T, na folks nyingine kusaidia server, ambapo kama inayopata email, ni waongofu kwa SMS na kuzituma nje Nakala ujumbe kwa simu ya mtu. Hivyo kama mimi alifanya hivyo kwa usahihi, hapa ni mpya na kuboresha fomu kwamba ni kwenda kuzungumza na mpya na kuboreshwa code, ambayo unaweza kucheza na online. Na itakuwa hopefully kufanya yangu simu beep katika muda tu. Hivyo kwanza, mimi nina kwenda aina katika jina langu. Pili, mimi si kwenda kufanya hili wakati huu. Mimi nina kwenda kufanya Kukagua kipengele. Na hii ni kitu kidogo ili mimi si kujenga masaa ya uzalishaji baada kazi kama mimi mara ya mwisho. Sasa kuna simu yangu ya simu. Mimi itabidi kuchagua Verizon. Na hapa, hebu kurejea kwenye kipaza sauti hii hapa, na lengo hili katika simu yangu hapa. Mimi nina kwenda bonyeza Daftari, ambayo lazima hopefully kuiweka katika database. Sasa mimi nina kwenda kwa mstari amri mpango, ambayo wanakumbuka aliitwa dot slash maandishi, na kuvuka vidole. Hapa sisi kwenda. [PHONE dings] [Makofi] DAVID Malan: Hivyo furaha zaidi kuliko this-- ni furaha, bila shaka, kama mimi kupata ndani yake. Lakini ni furaha zaidi, mimi mawazo, kama sisi kuundwa mmoja wa wale wakati movie ambapo kama kitu kweli mbaya imetokea katika dunia, na kama wote NSA watu simu za mikononi kuanza beeping na ujumbe wa maandishi kuwatahadharisha kwao ukweli huu. Hivyo nimeona tunataka kujaribu recreate sawa hapa, ambapo si kutumia database, Mimi badala mapema aliandika mpango kwamba inaonekana kama hii. Hii ni index.php-- na mimi kuweka kanuni hii online kama well-- kwamba inaonekana tu mithili form.php, kutumia MVC style dhana kwamba sisi majadiliano juu ya undani zaidi katika tatizo kuweka saba. Fomu kuwa ni pretty rahisi. Ni kwenda kuwasilisha kwa faili inayoitwa here.php kupitia post. Na ni inaonekana kwenda kuuliza kwa jina, na namba ya simu, na kisha kupitia kinachojulikana Kuchagua menu, ni kwenda kukupa angalau nne maarufu Marekani Mkono flygbolag, na kisha kuruhusu ufanisi kuchukua mahudhurio kwa kubonyeza hapa. Na hapa, wakati huo huo, ni kwenda kukopa baadhi ya kanuni kutoka wakati wa mwisho. Na kama wewe tu skim hii, utaona kwamba kuna rundo zima la kuangalia makosa. Lakini uzuri mwishoni ni kwamba sisi siyo kuandika database leo. Sisi ni kuweka rahisi na kutuma tu nje hopefully ujumbe wa maandishi kupitia kazi mimi aliandika juu ya siku chache zilizopita wito Nakala, ambayo ni katika Kazi. php, ambayo ni tena inapatikana online. Hivyo kama ungependa kushiriki katika hili. Sisi siyo kwenda kuwa hifadhi ya kitu chochote. Kwenda URL hii hapa katika muda halisi. Je, si kuwasilisha bado tu, lakini hebu kuona kama tunaweza kuwa mmoja wa haya movie wakati ambapo India ya kila mtu kuanza beeping, hopefully tu mara moja mwaka huu tofauti mwaka 2011 ambapo alikwenda horribly awry. Na mara moja kwenda kwa anwani hiyo, unapaswa kuona aina super rahisi kwamba kama una jina, simu ya mkononi idadi, na simu ya mkononi carrier kwamba mechi orodha huko, kwenda mbele na kujaza fomu. Lakini si hit kuwasilisha bado tu. aina kinaendelea kuangalia kama hii. Kwenda mbele na aina katika jina lako, namba ya simu. OOP, mtu kinaendelea mbele ya Curve. Ni sawa. OK, kila mtu kujazwa fomu. Hii lazima kazi juu ya simu, pia, kama unataka. Haki zote, juu ya alama yako, kupata kuweka, kwenda. Kugonga Hapa. Nini? Hakuna Naapa kwa Mungu, mimi kupimwa mara nyingi hii leo. Wewe got it? [INTERPOSING VOICES] DAVID Malan: Sawa, kosa user labda. Hiyo ni mbili. Ni kazi kwa mbili nje ya mia chache, tatu, nne. OK, hiyo ni nzuri. Wanne kati ya watano kwa usahihi jinsi kuhusu. Hivyo kile kilichotokea tu? Hivyo labda, bila kuona yako skrini, kwa nini kinaweza kuwa errored? Pengine ni kwamba sisi walikuwa tu kujaribu kufanya uhusiano wengi mno Harvard ya server mail wote katika mara moja kutoka anwani ya IP huo. Mimi tu guessing tangu sikuwa anasa ya kupima kanuni hii na baadhi ya Watu 300 katika mapema lakini kwa sasa kutambua kwamba kwamba angalau lazima waliopata kazi kufanyika wakati huu. Haki wote, hivyo kwa nini ni hii yote zaidi germane na nini kinaendelea? Vizuri kwanza, haraka michache ya matangazo. Hivyo moja, kama Ningependa kujiunga Chang, na Nick, na wengine katika chakula cha mchana Ijumaa hii, kufanya RSVP katika URL kawaida huko. Kama wewe ni kufikiri ya kuzingatia katika au kufanya sekondari katika CS, kama wewe ni sophomore, au Freshman, au hata junior au mwandamizi katika hatua hii na bado unaweza itapunguza katika kozi, kutambua kwamba uhandisi shule ni kukusanya kwa ajili ya bure Ben na Jerry ya cream barafu na ushauri Jumatano hii muda mfupi baada ya darasa katika 04:00 katika jengo CS katika Maxwell Dworkin. Kama hii ni haraka sana juu ya screen, tu kwenda kwa cs50.harvard.edu kwa kiungo kwa tukio Facebook ambapo unaweza kuona maelezo zaidi. Wakati huo huo, nilidhani kusahihisha Kitu nyingine moja mimi goofed juu ya Jumatano. Zinageuka kuwa ID Marko kwenye Facebook hakuwa tatu. Ilikuwa nne. Zinageuka alikuwa mtihani zaidi akaunti kuliko mimi kukumbuka. Lakini nini hii inaonekana kama fursa kufanya ni kuvuta up URL kama hii. Hivyo ni zamu nje kwamba Facebook ana API, Maombi Programming Interface, ambayo ni utaratibu ambapo wewe Unaweza kuomba data programmatically katika Facebook na kupata nyuma mashine habari someka, si kurasa za mtandao lakini Nakala tu mbichi, kitu aitwaye JavaScript Object nukuu. Na kwa kweli, kama mimi kutembelea hii URL, na kuvuta, kwa default, hii ni ya Marko hadharani kupatikana habari. Na undani kuvutia hapa ni kwamba tu ID wake ni kweli, idadi ya nne, ambayo mimi barabara haraka kama mimi alifanya hivyo. Unaweza kufanya hivyo mwenyewe kama unajua yako Facebook username kama una moja. Aina tu juu juu huko. Na hakuna wa hii ni binafsi. Mimi nina kufanya tu hii hata katika mode fiche. Hivyo mimi si hata watumiaji katika. Na wewe ni kuona kwamba mimi inaonekana alikuwa mtumiaji idadi 6454 kwenye Facebook, ambayo si mbaya sana siku hizi. Hivyo anyhow, utapata pia kuona maelezo ya ziada huko. Na kipengele muhimu ya kwamba ni kwamba kuandika programu yako mwenyewe kwamba namna fulani samlar data kama hii ndani ya maombi yako mwenyewe. Unaweza kuwawezesha watumiaji kuingia katika tovuti yako, si kwa kutumia yao wenyewe desturi jina la mtumiaji na password lakini labda Facebook yao ya kuingia na kupata taarifa hata kuhusu marafiki zao, kama kupitisha hizo, au sawa. Hivyo kumbuka kwamba CS50, pia, ina baadhi ya APIs yake mwenyewe, moja kwa data shaka catalog, baadhi kwa hugs menus katika dining kumbi, yote ya majengo na maeneo juu ya chuo tuna API kwa pamoja kwamba unaweza swala vile vile na kupata nyuma textual data kwamba unaweza kuunganisha ndani ya PHP, au JavaScript, au hata, ingawa chini ya kawaida, C msingi mradi wa mwisho. Hakika mbele kwa fainali mradi ni milstenarna wachache. Wewe got email kutoka kwetu siku nyingine. Kutambua kwamba pendekezo ni kutokana hii kuja Jumatatu. Ni si lazima kisheria, lakini huna haja ya kupokea wenzake mafundisho yako kibali kabla ya kufanya mabadiliko yoyote baada ya hapo. Na kisha mbele ni idadi ya milstenarna nyingine. Hivyo kwa tease wewe, pia, pamoja na baadhi ya uwezekano, tuna rundo la haya hue balbu mwanga. Na baadhi ya guys sasa kuwa na baadhi ya haya katika Dorm chumba yako pia. Na wao pia wana API. Hivyo kukumbuka wale wiki binary balbu iliyopita kwamba Dan Bradley na Ansel Duff kuundwa kwa ajili yetu. Walitumia programu interface kwa bulb hii mwanga, ambayo kwa wakati ni plugged katika umeme na kisha kupitia wireless ni kushikamana na kitu kidogo aitwaye Bridge chini hapa, kama kidogo router wamiliki kifaa fulani. Lakini zinageuka kama mimi kujua jinsi ya kutuma ujumbe HTTP, kama sisi wote sasa kufanya, Siwezi kutuma ujumbe kama hii kwa bulb hii mwanga kugeuka juu au mbali au kufanya idadi yoyote ya shughuli nyingine juu yake. Taarifa kwamba ni kupata, siyo baada. Kuna mwingine mmoja aitwaye kuweka. Kweli kuna nyingine chache verbs hiyo. Lakini kuna taarifa ya njia pale, kufyeka API, kufyeka developer mpya, kufyeka mwanga, kufyeka moja, kufyeka hali. Hiyo inaonekana tu njia kwamba kampuni, Philips, aliamua una hit na ombi HTTP kama unataka kubadilisha hali ya bulb kutumia HTTP 1.1. Basi taarifa line tupu. Na kisha mwisho kile kinachoonekana kama aina ya safu ya aina fulani, hii tena ni kwenda kuitwa JavaScript Object nukuu, au Jason. Na nini unaweza kuona hapa ni kwamba kuna tatu thamani jozi muhimu. Ufunguo moja inaitwa juu. Na thamani yake inaonekana ni kwenda kuwa kweli. Mwangaza ni 128, ambayo ni baadhi ya aina ya int. Na kisha mpito wakati ni sifuri, ambayo inaonekana muda gani kinaendelea kuchukua kugeuka jambo hili juu. Hivyo sasa hivi bulb hii mwanga ni mbali. Lakini kama mimi kufanya hasa this-- basi mimi kwenda kidogo kudanganya karatasi kwamba Dan kuanzisha katika advance-- na mimi nina kwenda kwenda mbele na nakala amri zifuatazo. Curl, kama baadhi ya wewe anaweza kuwa zilizopatikana juu ya CS50 Kujadili ni shirika kama Telnet kama kwamba unaweza kuiga maombi HTTP, hasa unaweka. Siwezi kutuma data hii, hasa nini sisi tu aliona wakati iliyopita hasa URL hii zaidi ya hapa. Na kisha Curl ni kwenda kushughulikia yote ya headers zinazohitajika na parsing kuna ya. Hivyo wote mimi kufanya ni nakala hii katika dirisha terminal na kisha hit Enter. Na balbu ya mwanga unaendelea. Na hii yote ni kwenda kupitia kompyuta yangu wirelessly namna fulani chini ya daraja, ambayo kisha kuzungumza na bulb hii mwanga. Mimi siwezi kufanya kitu kingine. Siwezi kufanya jambo hili kwenda nyekundu kwa mfano. Siwezi kwa mfano kufanya jambo hili kwenda kijani. Siwezi kufanya ni kwenda bluu. Na taarifa katika kila moja ya haya matukio, wote kwamba mimi nina kubadilisha ni kinachojulikana hue thamani kwa kweli kuwapa baadhi ya rangi. Hivyo basi mimi kuweka hii moja katika pia. Sasa ni bluu. Na unaweza kufanya hata fancier mambo where-- hebu kwenda kijani. Na mimi naweza kufanya hii ya Bila shaka kwa kificho yangu mwenyewe. Lakini hata API yenyewe inasaidia shughuli funky kama hii, ambayo sasa kujisumbua sisi kwa ijayo sekunde 30. Hivyo hiyo ni moja ya ladha ya nini wapate kufanya na API, hii moja kuwashirikisha balbu mwanga. Kumbuka kwamba CS50 ina michache jozi ya Google kioo kama wewe d kama kukabiliana na kitu pamoja wale mistari, Arduino Unos, ambayo ni vidogo kompyuta kidogo, kimsingi, juu ya kidogo mzunguko wa bodi kwamba unaweza kuunganisha waya na mambo mengine kwa kweli na kudhibiti halisi ya mazingira ya dunia yako. Na kisha kuna wanandoa toys mpya kwamba tuna. Hii moja halisi tu waliowasili siku nyingine kwa njia ya barua, Myo uzinge. Na nilifikiri ni njia ya kupata msisimko juu ya miradi kwamba unaweza kutumia na vifaa hii ingekuwa kuwa kucheza video hii fupi kwamba wao kutumia tease folks kwamba sisi ni sasa wanaishi katika siku zijazo. [Music kucheza] DAVID Malan: Hivyo katika wiki chache tu, unaweza pia unaweza kuwa kwamba baridi katika CS50 haki. Kifaa kingine kwamba sisi kuwa na rundo la kwamba sisi ni furaha mkopo nje kwa ajili ya miradi inaitwa mwendo mtawala. Hii ni kifaa USB kidogo kuungana kwa kompyuta kwamba utapata kuingiliana na Laptop yako, Mac au PC, kana kwamba alikuwa kama Xbox Kinect na kwa kweli kufanya mwendo kimwili sana kama sisi kuona katika hii maono ya baadaye. [Music kucheza] DAVID Malan: Hivyo hata kama una wazo jinsi kitu kama hicho inaweza uwezekano kuwa zuliwa au kazi juu ya ngazi ya vifaa, hakuna jambo. Hata baada ya miezi michache tu ya CS50, na uelewa wa programu ujumla zaidi, na programu ya mtandao zaidi hivi karibuni, na kisha pia APIs, na HTTP, itabidi upatikanaji kupitia APIs programu kama wewe je wanataka kukopa mmoja wa haya vifaa kwa kweli kuzungumza na yake na si kuwa na wasiwasi kuhusu utekelezaji msingi maelezo, ambayo ni kabisa sambamba na wazo hili la layering kufikirika kwamba tumekuwa kuonekana katika muhula. Hivyo pia mwishoni mwa wiki, aliona vipande michache ya habari. Kwenda kwanza, kwenda semina kama wewe wangependa kujifunza kitu zaidi juu ya idadi yoyote ya mada. Angalia URL huko. Na hii moja alitumwa mimi na Chang, ambao unajua, ambaye ni uchapishaji wa jeshi letu la tembo. Na ilikuwa kichwa cha habari kama ifuatavyo. Mimi nina hofu ya TV yangu mpya. Nini mimi nina hofu ya kurejea hii Jambo juu na wewe d kuwa pia. Hivyo sisi ni sasa katika kumweka katika muhula, pia, ambapo hata kama una kidogo ya ufahamu ya jinsi ya mtandao matendo, na HTTP, na usalama, mambo kama haya lazima kuanza kupata jicho lako. Lakini pia, itabidi kuelewa kama mambo haya ni au si halisi vitisho. Hivyo mimi alichukua Sammandrag chache kutoka makala hii hapa. Na hadithi ni kama ifuatavyo. Mimi nina sasa mmiliki wa mpya smart TV, ambayo ahadi ya kutoa Streaming maudhui multimedia, michezo, programu, kijamii vyombo vya habari, na biashara ya kuvinjari, oh na TV pia. Tatizo tu ni kwamba mimi nina sasa hofu ya kutumia hiyo, anasema mwandishi. Ungekuwa pia, kama kusoma kwa njia Sera 46 ukurasa wa faragha kwa TV yako. kiasi cha data hii inakusanya jambo ni kubwa. Ni kumbukumbu wapi, lini, jinsi, na kwa muda gani kutumia TV. Ni seti kufuatilia biskuti, kama tumekuwa kujadiliwa, na beacons iliyoundwa kuchunguza wakati una kutazamwa bidhaa fulani au ujumbe fulani email kama unataka kuangalia barua pepe juu ya TV yako. Ni kumbukumbu ya programu unaweza kutumia, tovuti ya kutembelea, na jinsi ya kiutendaji na maudhui, kufanya yote ya kwamba kupitia TV yako smart. Pia, creepier yet-- hiyo ni addition-- yangu imejenga katika kamera na kutambua usoni. lengo ni kutoa ishara ya kudhibiti kwa TV na kukuwezesha kuingia kwenye Msako akaunti kwa kutumia uso wako. Katika suala la mafanikio, picha ni kuokolewa kwenye TV badala ya kupakiwa server ushirika. On negativa, biashara uhusiano hufanya TV nzima mazingira magumu na Hackare ambaye wameonyesha uwezo kuchukua udhibiti kamili ya mashine. Zaidi kumsumbua, kama kwamba hakuwa smart kutosha, ni kipaza sauti. TV boasts sauti utambuzi kipengele ambayo inaruhusu watazamaji kudhibiti screen na amri ya sauti. Lakini huduma kuja na onyo badala ominous. Tafadhali kuwa na ufahamu kwamba kama maneno yako amesema ni pamoja na binafsi au nyingine nyeti habari, kwamba habari atakuwa miongoni mwa data alitekwa na kupitishwa kwa chama cha tatu. Got kwamba? Je, si kusema binafsi au nyeti mambo mbele ya TV yako. Hivyo hii ni kweli kwa kweli. Na ni vigumu si kwa kuona kama wewe kwenda Best Buy au kama kwa TV siku hizi. Wao ni wote smart katika baadhi ya njia. Na wao ni kupata nadhifu na creepier. Na wao ni tu kukusanya data katika njia ambazo tumekuwa aliyesema kuhusu na kisha kuweka kupitia HTTP au baadhi ya itifaki nyingine kwa baadhi ya server. Hivyo hii ilikuwa ya makala ya kujifurahisha katika tovuti hii online hapa, ambayo kuongelea mdudu fulani au makosa kificho kwamba tunaweza kweli kufunga katika majadiliano ya wiki iliyopita. Hivyo kichwa cha habari hii ilikuwa kama ifuatavyo, hadithi inakwenda hapa, Josh Breckman kazi kwa kampuni hiyo ilitua mkataba kuendeleza usimamizi wa maudhui mfumo, au CMS kama wao ni kuitwa, kwa ajili ya tovuti ya haki kubwa ya serikali. Mengi ya mradi wanaohusika kuendeleza mfumo wa usimamizi wa maudhui hivyo kwamba wafanyakazi itakuwa uwezo wa kujenga na kudumisha milele kubadilisha bidhaa kwa ajili ya tovuti yao. Mambo akaenda pretty vizuri kwa Siku chache baada ya kwenda kuishi. Lakini siku ya sita, mambo yalikwenda si hivyo vizuri. Yote ya yaliyomo kwenye Tovuti alikuwa kabisa kutoweka. Na kurasa zote imesababisha default, tafadhali kuingia maudhui ya mtandao ukurasa. Whoops. Josh aliitwa katika kuchunguza na niliona kwamba moja hasa matatizo nje IP alikuwa wamekwenda katika na ilifutwa yote ya yaliyomo kwenye mfumo. IP hawakuwa kwa baadhi ya nje ya nchi hacker bent juu ya kuharibu manufaa habari za serikali. Ni kutatuliwa kwa googlebot.com, Google ya mwenyewe sana mtandao kutambaa buibui. Whoops. Baada ya kidogo ya utafiti na scrambling kuzunguka kutafuta Backup noncorrupt, Josh kupatikana tatizo. user alikuwa kunakiliwa na pasted baadhi ya maudhui kutoka kwa mmoja ukurasa mwingine, ikiwa ni pamoja na Hariri Hyperlink kuhariri maudhui juu ya ukurasa. Kwa kawaida hii bila kuwa na Suala tangu user nje ingekuwa haja ya kuingia jina na password, lakini mfumo wa uthibitishaji CMS, mfumo kuingia, hakuwa na kuchukua katika akaunti kisasa Hacking mbinu ya Google Spider. Whoops. Kama ni zamu nje, Google Buibui haina kutumia biskuti, ambayo ina maana kwamba unaweza urahisi bypass kuangalia kwa ni watumiaji juu ya kuweka kuki kuwa uongo. Ni pia haina makini na JavaScript, ambayo kwa kawaida kuchochea na kuelekeza watumiaji ambao si watumiaji katika. Haina hata hivyo kufuata kila hyperlink juu ya kila ukurasa anaona, ikiwa ni pamoja na wale walio na Kufuta Ukurasa katika cheo. Whoops. Hivyo hii ina maana gani katika zaidi kiufundi lakini uungwana kupatikana masharti? Ni tu ina maana kwamba katika tovuti yao, walikuwa URLs si tofauti hii moja kwamba unaweza kuona katika tatizo kuweka saba. Kumbuka katika tatizo kuweka saba au kujua katika tatizo kuweka saba kuwa wewe ni changamoto, miongoni mwa mambo mengine, kuuza hifadhi kwa niaba ya watumiaji. Lakini utekelezaji kwamba kipengele kwa njia ya kupata kupitia viungo katika user yako interface, pengine si wazo smartest kwa sababu kama tovuti yako ni namna fulani kupatikana ama kwa binadamu ambaye kubonyeza kuzunguka au kununua bot kama Google au Spider kama wao ni kuitwa tu kwamba kutambaa mtandao kujaribu index mtandao kama search injini, hawakuweza urahisi sana kugonga kupitia kupata aina hii ya URL. Na kwamba ni functionally sawa na, katika kesi hii, kuuza hisa zote za Google. Sasa kusema ukweli, ni kabisa asinine kwamba CMS kutumika JavaScript na kuki kutekeleza kuingia mfumo wake na si kufanya kwamba upande server, kama nyie kufanya mapenzi na katika pset 7-- kuna login.php file-- daima, daima, daima usalama lazima kufanyika katika upande server, si upande wa mteja kwa sababu, kama hii Makala unaonyesha na wewe mwenyewe nguvu kuona katika baadhi ya uhakika, ni dogo kwa mtumiaji, nzuri au mbaya, tu kugeuka mbali JavaScript sembuse biskuti. Hivyo kwamba ni WTF yako ya kila siku. Kuna moja zaidi, ambayo ni aina tu ya inatisha, hivyo mimi itabidi kutaja kama tu kama maisha ya somo. Kila wewe kutumia maombi aitwaye kama Snapchat au kama kwamba anasema picha hizi mwisho tu kwa sekunde tano, sekunde kumi, au whatnot. Wao ni ephemeral Hiyo ni kabisa si kesi. Kama hakuna njia, digital, kutekeleza baadhi ya fomu ya video, au picha, au textual kugawana kama kwamba mpokeaji mwisho mwingine hawezi namna fulani kuokoa data. Katika njia nyingi wasiojua, mtu inaweza kuchukua simu zao. Na wao wana 10 wa pili dirisha wakati kuangalia baadhi snap tu kuchukua baadhi ya simu nyingine na kupiga picha hiyo, ni wazi. Hivyo unaweza kuhifadhi kitu digital njia hiyo. Baadhi ya wewe kujua jinsi ya kuchukua viwambo kwenye simu yako. Kwa kweli, kama wewe sijui huu, kutambua kwamba angalau Snapchat, na nadhani wengine maombi ya siku hizi, angalau kukuambia kama mpokeaji ana kweli kuchukuliwa screenshot ya picha yako. Lakini bado mbaya, hii ilikuwa snappening, kama mtu aliunda hivi karibuni, ambapo baadhi 100,000 snaps alikuwa iliyotolewa katika kile kinachoitwa torrent faili kwenye tovuti mbalimbali hatimaye. Na hizi zilizomo rundo zima ya ujumbe binafsi na posts. Ni zinageuka wengi wao benign, hivyo si nini unaweza kutarajia. Lakini kwa sababu watu walikuwa kutumika tovuti ya tatu chama, magogo katika na Snapchat yao username na password na kisha kuokoa wote wa snaps yao katika tovuti hii ya tatu ya chama. Na ilikuwa kwamba chama cha tatu tovuti ya kwamba ilikuwa hacked, ambayo tu maana mtu figured nje ya jinsi kupata yote pamoja 100,000 ya taswira hizo ndani ya gari ngumu yao wenyewe kwa kushirikiana na baadae. Kusema ukweli, hapa pia, ni aina ya asinine kwamba Snapchat unatekelezwa kwa namna ambayo chama cha tatu unaweza aina ya kukatiza data na kwamba si amefungwa kwa yako maombi mwenyewe mbio juu ya simu. Lakini hapa, pia, kutambua kwamba hizi mambo lazima si kukamata wewe kwa mshangao, au angalau kuna lazima kuwa somo maisha katika hapa. Kama Ningependa kiufundi maelezo, kwenda URL kuna hiyo ni katika slides leo. Haki zote, maswali yoyote juu ya leo maisha masomo katika CS? Kugeuka kuwa mbali. Chochote wakati wote? Chochote wakati wote? Mimi nimepata mengi ya watu kuangalia Snapchat yao au kitu sasa. Haki wote, hivyo SQL, Uliza muundo lugha. Hebu wrap hii. Na pia, ingawa sisi ni scratching tu uso wa hii lugha, tutaweza kukupa kutosha wa lugha katika fomu ya pset 7 ili uweze kukabiliana na baadhi utendaji haki ya kawaida. Lakini kutambua kuna wanandoa mambo ya sisi hawahitaji wewe, lakini wao wanaenda kuwa muhimu kuja miradi ya mwisho na kwa hakika kuja kufanya halisi Nje na watumiaji halisi ni uamuzi huu design. Ni zinageuka kuwa katika Mbegu MySQL, wewe kuwa mashada ya uchaguzi kama aina ya data kwa nguzo yako na mambo mengine, lakini pia una uchaguzi wa kinachojulikana kuhifadhi injini kwa ajili ya yote ya data yako, aina ya faili mfumo, kama wewe ni ukoo, kwa wote wa data zako. Nini format ni hatimaye kuhifadhiwa katika? Na kawaida, pengine, imekuwa MyiSAM na InnoDB, suala kiufundi kwamba tutaweza tu huduma kuhusu kiasi kwamba mtu ana na moja haina Kipengele zifuatazo. Tuseme kwamba una kidogo Dorm friji. Na kudhani kuwa wewe na yako roommate, ambao kushiriki friji huu, ni kweli uzoefu wa kusema maziwa. Na hii ni, kwa kweli, jinsi hadithi aliambiwa kwangu njia ya nyuma katika siku wakati mimi alichukua kozi aitwaye CS 161 Uendeshaji Systems, ambayo vile vile inahusu mada hii. Hivyo nimepata friji hii. Uko nje ya maziwa. Na wewe kuja nyumbani, roommate yako bado katika darasa au chochote, na kuamua mimi nina kwenda kwenda nje na kupata baadhi ya maziwa. Hivyo wewe karibu fridge, lockup chumba Dorm, kwenda katika barabara ya kwa CVS au popote, na kupata katika mstari wa kununua baadhi ya maziwa. Wakati huo huo, roommate yako anapata nyumbani kutoka darasani, anapata katika chumba Dorm, kuufungua fridge, pia anatambua ooph, tuko nje ya maziwa. Hivyo yeye au yeye anafunga friji na kisha ikitokea kwenda CVS mengine, ambayo hufanyika kuwa kuzuia moja mbali kutoka CVS nyingine katika mraba, na anapata katika mstari kuna kupata baadhi ya maziwa. Dakika sasa, bila shaka, chache baadaye, wote wawili kupata nyuma, na mbaya zaidi ya yote iwezekanavyo matokeo kilichotokea. Wote wawili wa una maziwa. Na wewe si kweli kama maziwa kiasi hicho. Hivyo mmoja wao ni tu kwenda sour katika baadhi ya uhakika. Hivyo sasa una unywaji maziwa katika friji wote kwa sababu kwa nini? [Inaudible] DAVID Malan: Yeah, hakuwa namna fulani kuwasiliana na kila mmoja kwamba walikuwa kupata maziwa. Hivyo katika rahisi ya njia katika ulimwengu wa binadamu, jinsi gani unaweza kuepuka hili silly mazingira kutoka kinachotokea kama kwamba tu kuishia na moja. Nakala wao, ndiyo nzuri. Lakini jinsi mwingine? Baada ya inabainisha. DAVID Malan: Post-ni kumbuka. Aina yoyote ya mawasiliano kwamba anaelezea roommate yako hawaendi katika friji kwa maziwa. Mimi nina kwenda kuliweka sawa juu yangu mwenyewe. Hivyo kwa namna fulani haja kwa kufuli rasilimali hii. Hivyo tunaweza kufanya this-- tunaweza aina ya uharibifu hadithi na kurejea katika hadithi CS ambapo kufikiria hili kama tu kama kutofautiana, ambayo ni hifadhi ya baadhi ya thamani. Na hivi sasa, thamani ya maziwa ni sifuri, ambayo hawataki yako roommate kukagua kwamba kutofautiana na kisha kufanya uamuzi naye au mwenyewe kulingana na hali ya kuwa kutofautiana kama wewe ni katika mchakato wa kubadilisha hali ya kuwa kutofautiana. Hivyo moja ya mistari ya SQL kwamba sisi kukupa katika pset 7 vipimo ni moja hii hapa. Na hatuwezi kutumia mkubwa kiasi cha muda kuzungumza kuhusu suala hilo. Lakini zinageuka, kama wewe ni kujaribu kununua baadhi ya hisa katika CS50 fedha kwamba tayari kuwa baadhi ya hisa ya, wewe wanataka kuwa na uwezo wa kufanya idadi mambo papo kwa pamoja. Unataka kuwa na uwezo wa ufanisi, juu ya kiwango cha juu, kuangalia yote ya haki, kama nataka kununua hisa zaidi ya Free, senti hisa sisi majadiliano juu katika spec, Nataka kuangalia kwanza hisa ngapi mimi. Na kudhani ni watano. Na nadhani wanataka kununua 10 zaidi, mimi hatimaye wanataka kuwa 15 hisa za hisa. Hivyo nina kuuliza maswali mawili. Nini hali ya kutofautiana ni? Nini hali ya mstari ni? Hisa ngapi mimi sasa kuwa? Kisha unataka kwenda mbele na update. Hivyo hiyo ni Analog na maziwa katika kuwa wewe kuangalia mstari, na kisha unataka update kwa sababu kama unataka kununua 10 ya hisa, wewe hawataki kubadili mstari wa 10, wanataka mabadiliko hayo kwa 5 plus 10 au, bila shaka, 15. Mstari wa kificho kuhakikisha kwamba wale mawazo mawili dhana kutokea kwa pamoja au si wakati wote. Hakuna mtu, ikiwa ni pamoja na baadhi ya mtumiaji nyingine ambaye ni watumiaji katika tovuti hiyo, unaweza namna fulani kupinga kuangalia ya mstari na uppdatering ya mstari, kuchagua na update kama wewe. Na syntax ni si super dhahiri, lakini mstari huu moja, kwa muda mrefu ni ni, kuhakikisha kwamba wale shughuli mbili kuangalia kutofautiana au kuangalia mstari na update mstari kutokea atomically. Oh hapa sisi kwenda tena. Ujumbe wa maandishi kwenye simu yangu. Basi hebu kufanya a hii zaidi kidogo ya saruji. Tuseme kwamba wewe si kutekeleza jokofu, na wewe si kutekeleza Pset 7, lakini benki halisi, au ATM, kujiendesha Teller Mashine, ambapo wewe kwa namna fulani wanataka kuwa na uwezo wa kuwawezesha watumiaji kuhamisha fedha kutoka akaunti moja hadi nyingine. OK, hutegemea. Mimi nina kwenda bubu hii sasa, asante. Hivyo tunataka hoja fedha kutoka kwa mmoja akaunti namba katika akaunti tofauti idadi, hasa $ 100. Hivyo hii ni aina ya holela mfano, ambapo wewe, ATM, kutaka kutekeleza mbili SQL maswali, Ondoa kutoka akaunti moja, na kuongeza akaunti nyingine. Lakini unataka kuhakikisha kwamba hizi mistari miwili wote wawili kutokea au si wakati wote. Wewe hawataki kitu kupata kuingiliwa. Huna baadhi smart guy mbaya namna fulani amesimama Benki Kuu ya Marekani na ATM mbili mbele yake na kwa namna fulani aina ya kuandika katika amri wakati huo huo, hopefully kujaribu dra $ 200 badala ya $ 100 na tu baada ya $ 100 sifa. Kwa kifupi, unataka hii kuishi hasa kama wewe kutarajia. Na njia ya kufanya hii katika SQL database ni wewe wrap ni katika nini aitwaye manunuzi. Halisi katika SQL, unaweza kupiga CS50 ya swala kazi pamoja na kunukuu unquote kuanza manunuzi. Basi unaweza nitafanya idadi yoyote ya maswali baadae SQL, lakini hakuna hata mmoja wao kuchukua athari juu ya database mpaka wewe piga swala kunukuu unquote kufanya, kama tena kwa kutumia PHP. Na kwa njia hii, unaweza kuhakikisha kwamba watumiaji hata kama una 1,000 wote kupiga Mbegu yako wakati huo huo, SQL ahadi kwamba hizi maswali mawili itakuwa kutekelezwa haki moja baada ya nyingine. Hivyo huna kuishia na ziada ya maziwa au kiasi vibaya, hatimaye, ya fedha. Hivyo kuweka hii katika akili, si sana kwa pset 7 lakini kwa ajili ya miradi ya mwisho kama wewe ni kweli kujaribu hoja data kuzunguka hela meza kama wewe huenda hapa. Lakini labda hata rahisi na zaidi dhahiri kuelewa na mfano ni moja hii hapa. Na mtu Emailed sisi kuhusu hii tu siku nyingine alipoona kitu sawa online. Hivyo kwa ufahamu wangu, mfumo siri si katika mazingira magumu na shambulio hilo. Na mimi sina wazo kama hata matumizi Mbegu SQL chini ya kofia. Lakini hebu kuitumia kwa ajili ya majadiliano. Hapa ni screen kwamba Harvard folks huwa kuona wakati magogo katika na wao Harvard ID simu na siri zao. Na tuseme kwamba mfumo siri walikuwa kutekelezwa katika PHP na MySQL na Mbegu, kanuni kwamba mtu Miaka anaweza kuwa imeandikwa iliyopita ili kuangalia kama hii. Kwanza, kutangaza kutofautiana aitwaye jina la mtumiaji. Na tu kupata kwamba kutoka POST superglobal. Kisha kupata mwingine kutofautiana aitwaye password na kufanya hivyo. Na kisha tu nitafanya hii swala muda mrefu hapa, kuchagua nyota kutoka kwa watumiaji ambapo jina la mtumiaji sawa vile na vile na password sawa vile na vile. Taarifa kwamba curly braces nimekuwa kutumika hapa tu maana kwa PHP, kwenda mbele na badala thamani ya hizo mbili vigezo haki pale. Wao siyo madhubuti muhimu, lakini wao huwa na kuepuka makosa hila syntax. Hivyo hii inaonekana kabisa sahihi katika mtazamo wa kwanza. Na ni. Unaweza kutekeleza mfumo siri kwa njia hii. Lakini tuseme kwamba super smart na malicious mwanafunzi pembejeo kama hii siri yake. Hivyo nimekuwa kuondolewa risasi ishara hapa katika maskhara juu, na nimekuwa kweli umebaini nini yeye au anaweza kuwa kuandika. Na ni ajabu kidogo. Lakini anaruka nini nje saa wewe katika uwezekano inatia mashaka kuhusu pembejeo mtumiaji, hata kama wewe hawana wazo nini Mashambulizi SQL sindano ina maana. Kwa nini hii kuangalia fishy kidogo? Nini hiyo? [Inaudible] DAVID Malan: au ni kidogo tuhuma. Kwa kweli, kwamba ni Keyword kutoka SQL. Ili hakuendani. ukweli kwamba kuna quotes haya yote moja there-- kwa kweli, moja ya njia rahisi njia ya kuvunja baadhi databaser ni kwa kuandika katika jina kama O'Reilly ambayo ina apostrophe ndani yake kwa sababu kama binadamu ambaye aliandika kificho nyuma ya pazia haina kuchukua katika akaunti ya kwamba kuna inaweza kuwa quotes moja katika mtumiaji pembejeo, na yeye au yeye ni kutumia quotes moja katika kanuni zao, mambo mabaya yanaweza kutokea. Kwa kweli, bado mbaya, fikiria hili. Kama hii ilikuwa tena kificho kwamba mtu katika miaka Harvard iliyopita aliandika kwa siri mfumo, taarifa nini kuhusu kupata kubadilishwa kwa username na password kama aina ya mtumiaji katika tena skroob kama jina la mtumiaji yao na kisha moja, mbili, tatu, nne, tano, quote au kunukuu unquote moja sawa kunukuu moja. Na taarifa nini msingi hapa ni user hana kuanza password yao au siri zao kwa kunukuu. Na wao si kumalizika ni kwa kunukuu kwa sababu yeye au yeye ni kuchukua kwamba kama programu haikuwa hivyo mkali, wao ni kwenda na wale quotes moja katika kanuni zao. Hivyo hapa ni kificho. Na badala ya kuwa ili sasa kutokea ni hii. Na nimekuwa alisisitiza kile user ina typed katika. Hivyo kabla, baada ya. Na taarifa nini upole inatia mashaka sasa kuhusu nusu haki ya kificho hii SQL? Ni kidogo ngumu zaidi, admittedly, kuliko maswali tumeona. Lakini hii haiwezi uwezekano kuwa ni jambo jema kama wewe ni akisema kuchagua nyota, ambayo ni kuchagua kila kitu kutoka mtumiaji meza ambapo jina la mtumiaji sawa skroob na password sawa moja, mbili, tatu, nne, tano au moja sawa na moja. Nini maana mantiki ya kwamba kifungu mwisho labda? Ni tu kweli daima. Na kwa sababu tuna aina ya guessed au figured nje kwa majaribio na makosa kwamba programu ambaye aliandika kificho hakufanya hivyo wanatarajia binadamu au mbaya kuandika katika quotes moja kama vile, tunaweza syntactically kukamilisha SQL query na kitu nonsensical lakini kitu ambacho ni syntactically sahihi kwamba daima kutathmini kwa kweli. Hivyo kama kanuni hii ni kuwa kutumika kujibu swali kweli au uongo lazima user hii kuruhusiwa kupita, Jibu ni daima inaonekana kwenda kuwa ni kweli kwa sababu hii ni daima kwenda kuchagua kitu kutoka orodha kwa sababu moja ya shaka daima ni sawa na moja. Basi nini ufumbuzi? Vizuri katika pset 7, sisi kweli kuepuka hili wote pamoja. Sisi kukupa kazi swala, na sisi kuhimiza wewe kutumia alama swali kama placeholders, sawa katika roho kwa printf ya% s, lakini nini muhimu kuhusu alama swali hapa ni kweli kama kusoma kwa njia functions.php, ambapo wetu swala kazi ni kutekelezwa, alama ya wale swali ni alitoroka, ambapo kitu chochote uwezekano wa hatari kama quote moja ni akageuka ndani ya alitoroka moja kunukuu. Hivyo hii ni nini kweli yanatokea kama wewe kutumia CS50 ya swala kazi au idadi yoyote ya chama cha tatu maktaba bure kwamba kufanya hivyo. Haijalishi katika kesi hii, kijani, kama mtumiaji ina typed katika kunukuu moja kwa sababu ya swala kazi ambayo sisi aliandika ni kwenda kuongeza backslashes kabla yoyote vile hatari kunukuu. Hivyo hii si, katika kweli, itakuwa legit. Hii ni kama kuandika katika mambo kuangalia password kwamba, bila shaka, si kwenda kuwa password skroob ya halisi. Hivyo takeaway kwa CS50 ni mmoja, kabisa daima kutumia kitu kama CS50 ya swala kazi au maktaba ya msingi, ambayo hufanyika kuitwa PDO. Lakini kamwe, kamwe, kamwe kufanya kificho kama hii bila ya kukimbia au scrubbing kama wanasema pembejeo yako. Na wewe wakati fulani pengine kuja katika baadhi ya tovuti kama hii. Kwa kweli, inaonekana kuwa kesi kama katika viwanja vya ndege na hoteli katika maeneo ambapo wana bure Wi-Fi upatikanaji kwamba una kuingia kwa, tovuti hizi ni daima horribly kutekelezwa. Na hivyo aina ya furaha nyumbani mazoezi, si kwa madhumuni ya malicious au zaidi ya furaha juu ya barabara zoezi, ni aina tu apostrophe, quote moja, katika fomu juu ya baadhi ya tovuti na kuona nini kinatokea. Na kama server shambulio au anatoa you baadhi ya aina ya ujumbe wa makosa, inaweza vizuri sana kuwa mtu hana hamu hii. Na kisha lazima tahadhari sahihi mamlaka na kuendelea zaidi. Hivyo sasa nyie lazima hopefully kuelewa kidogo zaidi geek ucheshi hapa. [Kicheko] DAVID Malan: Unajua wewe ni geek. Kwa ajili ya pili kadhaa miaka, utakuwa kukumbuka ambao kidogo Bobby Meza ni sababu ya hii cartoon hapa. Hivyo kuendelea kuwa katika akili kama sisi kubadili mazingira mara moja ya mwisho leo JavaScript. Tumekuwa alitumia kiasi kidogo wakati juu ya syntax ya PHP kwa sababu ni kweli super sawa na C. Na nicely kutosha, JavaScript pia ni super sawa na C ya syntax vile vile tutaweza kuona katika muda tu na kama tutaweza kuona baadaye wiki hii hasa. Nini unaweza kufanya na lugha hii, ingawa, ni nguvu zote zaidi, hasa kwa APIs. Lakini kwanza ya ziara ya haraka. Hivyo moja, katika JavaScript, kuna hakuna kazi kubwa, ambayo ni nzuri. Kama na PHP, unaweza tu kuandika code. Masharti kuangalia kama hii. Na maneno Boolean nguvu kuangalia kama hii au kama hii. Swichi zipo, na wao ili kuangalia kama hii. Wanne loops kuangalia kama hii. Wakati loops kuangalia kama hii. Kufanya whiles kuangalia kama hii. Na kisha kuangalia kama arrays hii, ni sawa na PHP. Lakini taarifa kwamba, katika JavaScript unaweza kutangaza variable si kwa dola ishara, si kwa aina data halisi lakini kwa kusema var kwa kutofautiana mbele yake. Ni pia ni loosely typed kwa kuwa ina aina, lakini huna waziwazi kutangaza yao. Na kisha kamba, kwa mfano, ili kuangalia kama hii, kwamba kamba kuitwa s katika kesi hii. Na kisha kitu. Na hawa tutaweza kuona zaidi kabla ya muda mrefu. Na kitu labda ni moja ya kawaida kuonekana miundo data katika JavaScript msingi mpango kwa sababu inaruhusu wewe kujiunga holela thamani jozi ufunguo tu kama PHP ya arrays associative na kama tu hash yako mwenyewe meza au kujaribu kama sisi kutekelezwa wiki chache nyuma. Basi hebu kweli kuona nini tunaweza kufanya na JavaScript. Na hasa, hii ni kufulia orodha ya makala kwamba browsers na kwamba kuruhusu sisi kunasa JavaScript ndani ya tovuti kwa njia zifuatazo. JavaScript ni mara nyingi hutumika kama mteja upande lugha scripting. Ni si ulioandaliwa. Ni pia ni kufasiriwa. Lakini tofauti PHP, ambayo imekuwa mbio juu ya server, katika mtandao wa kompyuta, au ndani ya kina ya wateja, JavaScript ni tofauti katika kwamba kawaida anaendesha katika browser. Hivyo yoyote kificho JavaScript kuanza kuandika kwa pset 8, au mradi wako wa mwisho, au katika ulimwengu wa kweli kwa ujumla kwenda kuokolewa kwenye kompyuta, kabisa katika HTML dot dot au JS kwa JavaScript faili. Lakini browser ni kwenda kwa kushusha kwamba JavaScript kificho kwa mfano yako mwenyewe ya Chrome, au IE, Firefox au, au chochote. Na kanuni ni kweli kwenda kupata kunyongwa ndani ya browser yako mwenyewe. Tu kufanya hili zaidi ya kweli, hebu angalia hii katika fomu halisi. Sisi hatuna wazo nini kificho hii haina bila kweli kusoma kwa njia hiyo. Lakini ngoja kwenda Facebook.com bila magogo katika. Napenda kwenda Kukagua kipengele na kwenda, hebu sema, Mtandao na Reload this Page. Na tutaweza see-- napenda kuhama Reload Ukurasa kupata yote ya maombi kwa mwezi. Na ya kwanza kabisa faili naona ni CSS, CSS. Hapa ni ya kwanza JavaScript faili, na mimi kuwa sijui nini anafanya hivyo, lakini hapa ni baadhi ya JavaScript kificho kwamba anatoa Facebook. Ni kweli hata kwamba akifafanua kwa kuvuta. Ni bado tu kama nonsensical. Lakini utaona hata chini chini, kuna hata zaidi ya haya files JavaScript. Whoops. Hiyo ni Ping. Hebu kwenda chini kidogo zaidi, zaidi, zaidi. Kuna moja. Kuna moja. Kuna moja. Hivyo hata kama Facebook, nyuma ya pazia, imeandikwa katika sehemu katika PHP na Facebook mwenyewe toleo yake, kuna kiasi kubwa ya JavaScript. Kwa kweli, yoyote ya kuzungumza kufanya kwenye Facebook, yoyote ya updates inline ratiba ya kwamba kutokea katika muda halisi, yote ya kwamba inaendeshwa na JavaScript. Yeah? Watazamaji: Mimi nina uhakika kama hii ni Facebook, lakini nilifikiri kwamba Facebook maendeleo mwenyewe katika nyumba kificho lugha yao? DAVID Malan: Wao alifanya. Hivyo kwamba ni kwa nini nasema ugomvi wa PHP aitwaye Hip Hop kwamba kweli aliongeza makala kwa vile kwamba wakati Mark kwanza kutekelezwa Facebook, hiyo ilikuwa imeandikwa kwa PHP. Na kwamba aina ya imebakia aina ya mbele Lugha mwisho kwamba wao kutumia kwa kiasi ya coding zao, lakini ni haijawahi lugha hiyo mizani hasa vizuri kwa mabilioni ya watu. Na hivyo aliongeza kuwa wao wenyewe maboresho nyuma ya pazia. Na wao kutumia idadi yoyote ya lugha nyingine kwa vipande mbalimbali ya miundombinu yao. Hivyo ndiyo, ni ugomvi wa nini sisi sasa kujua kama PHP. Basi hebu kuchukua kuangalia katika mifano michache ya jinsi sisi wanaweza kutumia JavaScript hapa. Katika kanuni chanzo leo, tuna rundo la files, ya kwanza ambayo, hebu aitwaye DOM sifuri. Hivyo DOM sifuri inaonekana kama ifuatavyo. Napenda kwenda katika saraka hii na kufungua domzero.html, juu ya ambayo ina aina doc tamko, akisema inakuja HTML 5. Na sasa hapa ni HTML tag. Hapa ni tag kichwa. Na hapa ni nini mpya leo. Sasa tuna tag script ndani ya kichwa ya ukurasa. Na hii inaonekana gani kidogo sana, lakini taarifa kwamba nimepata defined script, JavaScript. Na kama kando, tangu hii ni kawaida mbaya, JavaScript ina kitu kabisa kufanya na Java, lugha kwamba baadhi yenu nguvu wamejifunza katika APCS. Ilikuwa ni zaidi ya masoko Jambo kuliko kitu chochote, wanaoendesha coattails ya miaka Java iliyopita. Lakini JavaScript, kitu cha kufanya na Java, tu vile vile, na annoyingly, confusingly jina. Hivyo hapa ni jinsi gani ya kutangaza kazi katika JavaScript, literally kusema kazi, basi jina la kazi, basi yoyote hoja inaweza kuchukua, tu kama katika PHP. Zamu nje katika JavaScript, mmoja wa watu wengi kazi annoying kwamba kuwepo ni Alert. Hii ni dirisha kidogo kwamba mapenzi pop up na macho yenu kwa baadhi kipande cha habari. Ni kwa ujumla juu ya kipaji. Lakini tutaweza kutumia kama yetu zoezi kwanza hapa. Taarifa makala chache ya JavaScript. Single quotes na quotes mbili si kweli jambo tena. Single quotes na mbili quotes inaweza kuwa interchanged, ambapo katika C, una kutumia mara mbili quotes kwa masharti, na una mbili moja ananukuu kwa chars. Katika dunia JavaScript, watu wengi, watu wengi kutumia moja quotes karibu masharti tu kwa sababu ni jambo Stylistic. Lakini nini pamoja operator hapa, ambayo hatujaona kabla? Watazamaji: concatenation. DAVID Malan: concatenation. Hivyo C haina hata hii. PHP ina dot operator, ambayo haina hii. JavaScript ina pamoja operator, ambayo confusingly ni kama Java. Sasa nini kinaendelea hapa? Hivyo hapa ni ambapo msingi uelewa wa picha kwamba sisi akatupa juu ya wanandoa siku iliyopita anakuja katika kucheza. Kumbuka wakati tulikuwa rahisi toleo la HTML page-- ni tu alisema, hello dunia. Na kisha sisi waliochota mti na haki, ambayo rundo la mistatili na mistari kuunganisha yao kama mti familia. Hivyo hiyo ni kinachojulikana DOM au Document Object Model. Na zinageuka kuwa unaweza kupata mistatili katika mti na syntax kama yafuatayo. Wewe literally kusema hati, ambayo ni maalum variable kimataifa katika JavaScript mpango kwamba ina kazi yanayohusiana na hayo kwamba unaweza kupata sawa na struct, lakini wewe tu kusema dot na kisha jina kazi ya, kupata kipengele kwa ID. kipengele Nataka kupata ni inaonekana kunukuu jina unquote. Na kisha nataka kupata thamani yake. Sasa sisi ni kupata mbele ya sisi wenyewe. Mimi nina uhakika hata kile yote hii ni kuhusu. Hebu mbele haraka kwa HTML juu ya ukurasa, ambayo ni super rahisi. Taarifa kwamba nimepata defined a kuunda chini hapa. Ilani nimekuwa kupewa ni ya kipekee ID, ingawa tumekuwa si kutumika sifa hii kabla. Lakini hii ipo katika HTML. Unaweza kipekee kutambua baadhi chunk ya HTML na kitambulisho kama hii. Ilani sasa this-- zamu nje HTML inasaidia, kwa kuwa orodha ya kufulia wakati iliyopita, zima rundo la tukio handlers. Na hii handler tukio anasema juu ya kuwasilisha. User kuwasilisha hii fomu, piga kificho zifuatazo. Na kificho kwamba kinaendelea kuitwa au kunyongwa ni hasa hii, Kigiriki kazi na kufuatiwa na kurudi uongo. Kila kitu kingine lazima kuwa pretty ukoo. Hapa ni pembejeo ya aina ya maandishi, ambaye ID, katika kesi hii, ni kwenda kuwa na jina. Hatuna jina halisi sifa time-- hii na kuwasilisha kifungo. Hivyo kusababisha ukurasa inaonekana kama hii. Na tabia kusababisha, utaona, inaonekana kama hii. ukurasa ni mitaa majeshi anasema, hello David, vigumu aesthetically kupendeza njia ya kusalimiana mtumiaji. Lakini nini hasa kinachoendelea? Naam, kufikiria nini hii ni. Hii ni uwanja maandishi. Na kwa mujibu wa HTML hapa, nimekuwa kupewa ni kitambulisho kipekee aitwaye kunukuu jina unquote. Wakati huo huo, nimekuwa alisema wakati user ananyenyekea fomu hii kwa kupiga kuingia au kubonyeza Kuwasilisha kifungo, piga kazi kuitwa Nisalimieni na kisha kurudi wa uongo. Hebu fikiria wale walio katika reverse. Taarifa wakati mimi click Kuwasilisha, URL ya ukurasa huu haina mabadiliko. icon browser hakuwa na kuanza inazunguka. Mimi si kwenda popote, na kwamba halisi kwa sababu mimi alisema kurudi wa uongo. Kurudi Uongo short nyaya au vituo tabia default wa fomu. Hivyo kwamba basi zinatuacha na swali hili moja ya mwisho. Nini Nisalimieni nini? Naam, inaonekana Nisalimieni wito kazi kuitwa Tahadhari, hupita katika moja muda mrefu hoja kwamba matokeo ya concatenating pamoja rundo la substrings, hello comma nafasi, basi chochote hii anarudi. Hivyo hati ni kama kimataifa kutofautiana kwa kuwa mizizi ya mti huo, wito kazi maalum, vinginevyo sasa inajulikana kama mbinu. kazi hiyo ni ndani ya kutofautiana ni aitwaye njia badala ya kazi. Hivyo kupata kipengele kwa ID. Nini kipengele kufanya wewe wanataka kupata na ID yake? Kunukuu jina unquote na kisha hasa thamani. Hivyo kwa maneno mengine, kwamba kanuni tu hupata uwanja maandishi ambao ID ni jina na kisha anapata thamani yake. Hivyo kama mimi walikuwa na mabadiliko ya hii na kusema Davin badala ya Daudi, na click Kuwasilisha, sasa sisi kuwa salamu kwa Davin. Haki wote, hivyo wote faini na nzuri. Lakini hebu angalia kama tunaweza kufanya hii kidogo safi tangu tu kuandika code kama hii ni ujumla kwenda kuwa juu ya kipaji. Hii ni kwenda kuangalia scarier. Lakini nini kwanza tofauti kwamba wewe kumbuka hapa katika toleo hili badala jina kubadilisha kwa DOM moja? Nini kimuundo inaonekana tofauti kuhusu hili dhidi ya wengine? Yeah? Watazamaji: Je fomu juu ya juu ya script sasa? DAVID Malan: Yeah, fomu ni juu ya script kwa sababu baadhi curious. Hivyo kwamba ni jambo la kwanza kwamba anaruka nje saa yangu, pia. Na nashiriki angalau, sehemu hii ni kufanana. Hivyo kitu pekee ambayo inaonekana kuwa tofauti ni hii. Hivyo hapa ni nini nadhifu kuhusu JavaScript 2. Na inafanya ni vigumu kuelewa katika mtazamo wa kwanza, hasa kwa ajili ya miradi ya mwisho kama wewe ni kuangalia sampuli kificho online, lakini majipu chini baadhi msingi kisintaksia makala. Hapa tena ni kwamba kimataifa variable hati. Hapa tena ni kwamba njia au kazi kwamba anasema kupata kipengele kwa ID. Wakati huu nataka kupata ID aitwaye demo. Ambapo ni kwamba? Hiyo inaonekana haki hapa, aina yenyewe. Na sasa taarifa kwamba inaonekana kama mimi kupata nyuma kwamba nodi ya mti inawakilisha aina yenyewe, si uwanja wa maandishi, zinageuka aina hiyo, nodi au mstatili kutoka mti, ina nini tutaweza kuwaita mali, sana, sana, sawa sana katika roho kwa struct katika C. Ni tu mwanachama data ndani ya pembenne hii. Hivyo mimi nimepata aina hapa, na mimi nina attaching, au mimi nina kumshirikisha, On wake Kuwasilisha handler au tuseme On Kuwasilisha mali kazi zifuatazo. Na hii ni, kwa mbali, craziest Jambo hivi sasa syntactically. Ni zinageuka katika JavaScript na katika PHP, na kusema ukweli kwa jambo hilo katika C, ingawa sisi si kufanya hivyo, unaweza kuongeza Nameless, majina, au AKA lambda kazi kwamba hawana jina lakini anaweza kuitwa hata hivyo. Hivyo nini mimi kufanya hapa ni mimi nina kumshirikisha On hii Kuwasilisha mali hiyo, ambayo ni ndani ya nodi hii ya DOM yangu mti, kazi, kazi pointer kama wewe. Kazi ambayo hana jina, lakini kwamba hana jambo kwa sababu tutaweza kuona katika wakati jinsi ya simu yake. Wakati kazi hii ni wito, kanuni hii anapata kunyongwa, basi uongo ni kurudi tu kama kabla. Lakini tazama kile mimi tumefanya. Katika hatua hii katika hadithi, nina fomu. Ni got ID kipekee aitwaye demo. Chini hapa, nina tag script kwamba executes kificho zifuatazo. Ni inaona kwamba nodi katika mti ni On Kuwasilisha mali kazi hii hapa. Na tu na asili ya jinsi browsers kazi, wakati mimi sasa bonyeza Kuwasilisha au hit Enter, kazi ambayo ni kwenda kupata kuitwa. Haina haja jina kwa sababu ambaye heck anayejali nini ni kuitwa. wakati tu ni milele kwenda kupata aitwaye ni wakati mimi kuwasilisha fomu. Hakuna haja kwa ajili yangu, developer binadamu, kwa kweli kuiita mahali popote. Sasa tu kama teaser, kama kwamba walikuwa si nia kupiga kutosha, tunaweza hata kufanya hii kuangalia zaidi cryptic kutumia maktaba super maarufu aitwaye jQuery. Kwa kweli jQuery na JavaScript mara nyingi alikataa. Na nini tutaweza kufanya juu ya Jumatano ni mwanzo kutumia lugha hii na maktaba hizi kujenga inazidi Asynchronous na maombi ya nguvu kama ramani ya kupata maombi, maombi kwamba update tovuti katika mali wakati, kiasi kama Facebook au Gchat kufanya, na hakuna tena tunajikita katika kupiga Kuwasilisha na kupata au baada tu peke yake. Hivyo mimi kuona juu ya Jumatano. [Music kucheza]