HANNAH BLUMBERG: Hi kila mtu. Tunakwenda kuanza tu ya dakika kadhaa mapema kwa kuwa tuna mengi yote ya nyenzo kupata njia. Mimi nina Hana. Mimi nina TF. Maria ni kwenda kujiunga sisi katika dakika kadhaa. Anafundisha sehemu sahihi kabla. Mimi kufundisha kifungu cha haki baada, hivyo tunakwenda kuitunza kwa saa moja na nusu. Hivyo kama utaona hapa, tuna kabisa mada chache tunahitaji kupata njia, hivyo tutaweza kuwa kwenda kidogo kidogo kwa haraka. Lakini kama katika hatua yoyote sisi kusema kitu haraka haraka au huelewi, kujisikia huru kwa kupinga na maswali. Tunataka kuwa na uwezo wa kufanya a huu kupitia kikao kama manufaa kwa wote yenu iwezekanavyo. Kutisha. Basi hebu kuruka haki katika na baadhi ya mada kwamba sisi kweli sana, kwa ufupi sana kufunikwa kwa Jaribio 0 katika jaribio 0 mapitio kikao. Hivyo kuanzia na orodha wanaohusishwa. Hivyo tu kuhakikisha kuwa baadhi elimu ya msingi kuhusu orodha wanaohusishwa na ni vizuri kufanya baadhi ya shughuli za msingi. Hivyo tu kufanya mapitio ya, wanaohusishwa orodha ni bora kuliko arrays sababu wanaweza kukua dynamically. Hivyo tuna kuwa faida kubwa. Tumeona yao kutumika katika meza hash wakati sisi hatujui hasa ni wangapi mambo tunakwenda wanataka kuingiza ndani ya mfumo wetu wa data. Kwa bahati mbaya, tuna vipande vya orodha wanaohusishwa kote kumbukumbu, hivyo tutakuwa na si lazima kuwa uwezo wa kufanya mara kwa mara wakati upatikanaji kwa kipengele yoyote katika orodha wanaohusishwa. Ili kupata kipengele fulani, sisi na iterate zote njia tangu mwanzo. Hivyo kukumbuka kwamba wengi wa shughuli za msingi ni omega ya 1. Hivyo kuingiza ni kwenda tu kuchukua 1. Kufuta ni kwenda kuchukua n kwa kuwa sisi una kwenda kupata hiyo kutoka kwenye orodha. Na kutafuta inaweza kuchukua, saa mbaya, n. Hatuwezi kufanya kitu kama tafuta binary katika orodha wanaohusishwa tangu hatuwezi tu nasibu kuruka kwa katikati. Baridi. Kutisha. Kidogo ya mwingi. Hii, tena, walifika kwenye jaribio 0, hivyo lazima super vizuri na hayo. Lakini kwa mwingi, tunakuomba kukumbuka stack ya trays. Na itakuja kuwa wa kwanza katika, mwisho nje. Hivyo sisi stack mambo up katika stack, na kisha kama sisi ni kujaribu kuchukua kitu off-- ambayo sisi kuwaita yanajitokeza mbali stack-- sisi kufika mbali juu. Na kama tunataka kuweka kitu katika stack, sisi kuiita kusukuma. Hivyo ni daima kwenda kuwa kupanda juu kuanzia chini kama stack ya trays. Kutisha. Tumekuwa mwingi kuonekana kutekelezwa na orodha zote mbili wanaohusishwa na arrays. Kama wewe ni kutekeleza na arrays, unataka kuhakikisha kuweka wimbo wa wote ukubwa na uwezo. Hivyo ukubwa ni kwenda kuwa sasa idadi ya mambo katika stack yako, ambapo uwezo ni idadi ya jumla mambo unaweza kuhifadhi katika stack yako. Baridi. Sana vile vile, tuna foleni. Katika kesi hiyo, badala ya kufikiria juu ya stack ya trays, fikiria line. Hii ni kwenda kuwa ya kwanza katika, kwanza nje. Hivyo kama wewe ni wamejipanga kwa kitu katika kuhifadhi, ni matumaini yetu kwamba mtu wa kwanza katika mstari ni kwenda kusaidiwa kwanza. Badala ya kusema kushinikiza na pop kama sisi kufanya kwa stack, sisi tu kusema enqueue na dequeue. Na tena, kama wewe ni utekelezaji huu kwa safu, tunahitaji kuweka wimbo si tu ukubwa wa na uwezo, lakini pia kichwa, ambayo ni kwenda kuwa mbele ya foleni yetu. Baridi. Maswali yoyote juu ya yoyote ya kwamba? Kutisha. Kusonga haki pamoja. OK, meza hash. Hapa ni mahali ambapo kuanza kwa kupata kweli ya kuvutia. Hivyo meza hash ni utekelezaji moja ya safu associative. Hivyo kimsingi kile kilichotokea ni sisi kuwa pembejeo hii yote, na sisi kutoa kwa hash kazi ambayo anasema, OK, hii ni mahali ambapo katika hash meza ni mali. Hivyo rahisi heshi kwamba tumeona ni kusema tu, OK, tuseme tunataka kuweka masharti katika hash yetu meza. Na wazo kweli rahisi inaweza kuwa kusema, sawa, hebu tu aina na barua ya kwanza ya neno. Hivyo unaweza kuona hapa, sisi kuchukua ndizi, sisi kuweka njia heshi, na inasema, hey, kwamba anatakiwa kwenda kwenye ripoti 1. Ili tuweze kimsingi kufikiria hash meza kama kundi la ndoo tofauti. Na kila moja ya ndoo wale ni kwenda kushikilia mkuu wa orodha wanaohusishwa. Na katika orodha hiyo wanaohusishwa ni wapi tunaweza kweli kuweka vipande mbalimbali ya data. Hivyo mbizi kidogo zaidi ndani ya heshi, hapa ni mfano mimi tu ilivyoelezwa ambapo sisi tu kusema, OK, kuchukua barua ya kwanza ya neno na tuko kwenda aina yake katika ndoo. Hivyo labda, kutakuwa na 26 ndoo, moja kwa kila herufi za alfabeti. Kwa nini si hii kubwa heshi? Kinachofanya zisizo bora hili? Naam. Watazamaji: Wewe ni kwenda kuwa na migongano. HANNAH BLUMBERG: Yeah, kwa uhakika. Wewe ni kwenda na migongano. Hivyo hiyo ni kitu kimoja. Na tutaweza majadiliano juu ya jinsi tunaweza kurekebisha migongano katika haki ya pili. Tatizo jingine na hii Hasa heshi ni kwamba tofauti yetu ndoo ni kwenda kuwa ukubwa wa pretty kasi tofauti. Tunajua kwamba kuna mengi yote maneno zaidi kwamba kuanza na kuliko X, hivyo sisi ni kwenda na sana ndoo unbalanced katika hash yetu meza. Baridi. Hivyo yeah, hebu kupata nyuma hatua ya migongano. Tufanye nini kama kuna mgongano? Tuna wanandoa chaguzi mbalimbali. Hivyo moja, hivyo kudhani sisi ni kujaribu kuweka berry katika hash yetu meza. Na tunaona, loo, tunataka kuiweka katika ripoti 1, lakini ndizi tayari anaishi huko. Je, ni sisi kwenda kufanya? Tuna chaguzi mbili kuu. Namba moja ni tunaweza kusema, sawa, hakuna chumba katika ripoti 1, lakini hebu tu kuweka kutafuta njia ya mpaka tunaweza kupata doa jingine wazi. Hivyo tutaweza kusema, sawa, hebu kuiweka katika doa 3. Hiyo ni chaguo moja. Hiyo inaitwa linear uchunguzi. Na chaguo la pili ni kusema, OK, vizuri, hebu tu kufanya kila mmoja ndoo kuwa wakuu wa orodha wanaohusishwa. Na ni sawa ikiwa kuna zaidi kuliko kitu kimoja katika ndoo. Tunakwenda tu kwa append ni kwenye mbele. Hivyo hapa unaweza kuona, sawa, wakati sisi kuingizwa berry, sisi tu alichukua ndizi, aina ya kusukuma ni juu kidogo na kurusha berry katika huko. Na hiyo ndiyo pia kabisa faini. Hii inaitwa tofauti chaining. Unaweza kufikiria hili kama aina ya kama safu ya wakuu wa orodha wanaohusishwa. Maswali yoyote juu ya hash meza, kazi hash? Kutisha. Miti na inajaribu. Hivyo mti ni aina yoyote muundo wa data ambapo kuna aina fulani ya uongozi au aina fulani ya cheo na vitu yako tofauti. Na hii itakuwa super wazi tunapoona mfano. Na tuliona inajaribu, pamoja na meza hash, katika pset5-- ambayo, tena, haki kabisa mchezo kwa hii quiz-- kama data mwingine miundo ambayo tunaweza kuhifadhi vitu mbalimbali. Katika kesi ya kamusi, sisi kuhifadhiwa na kundi la maneno. Basi hebu tuangalie baadhi ya miti. Hivyo hii ni mfano wa mti. Ina aina ya muundo, kwamba muundo wa kihierarkia, ambapo unaweza kuona kwamba hii nodi 1 juu ina aina fulani ya cheo juu ya 2 na 3, ambayo ni juu ya 4, 5, na 6 na 7, ambayo ni juu ya 8 na 9. Hivyo kwamba wote maana sisi na mti, hivyo unaweza tu aina ya picha hii katika kichwa yako. Sasa, sisi kuwa wanandoa wa miti zaidi maalumu. Hivyo mfano mmoja ni mti binary. Na mti binary ni, tena, tu kwenda kuwa muundo wa data na aina fulani ya uongozi, lakini kila mmoja nodes unaweza kuwa saa zaidi watoto wawili. Hapo ndipo neno mapacha anatokea. Hivyo hii ni mfano wa mti binary. Hivyo hiyo ni jamii ndogo ya miti. Sasa hebu kupata hata zaidi maalum na majadiliano juu ya mapacha trees-- binary tafuta miti, hasa. Hivyo hapa wazo ni sio tu kila nodi na saa zaidi watoto wawili, lakini wote wa wana wa kushoto ni kwenda kuwa ndogo na wote wa wana wa haki ni kwenda kuwa kubwa. Hivyo taarifa katika tu wetu mti binary, kuna hakuna uhusiano kati ya namba. Lakini katika kutafuta yetu mapacha mti, tunaona, OK, hapa ni 44. Na kila idadi ya kushoto ya 44 ni ndogo na kila kitu na haki ni kubwa. Na kwamba ana katika kila Kiwango cha mti. Hivyo hapa, hii ni ndogo kuliko 22 na hii ni kubwa kuliko 22. Na hiyo ndiyo binary tafuta mti. Kwa nini tunadhani ni kuitwa binary tafuta mti? Nini algorithm gani kuwakumbusha? Watazamaji: Search kisha. HANNAH BLUMBERG: Search kisha. Kwa sababu kama wewe ni kuangalia kwa idadi fulani katika mti huu, katika kila hatua, unaweza tu kubisha mbali nusu ya mti, ambayo ni kubwa. Na hivyo hiyo ni kwenda kutupa kitu kwamba inaonekana mengi kama tafuta binary. Maswali yoyote? Haki wote, baridi. Haki wote, anajaribu. Kila mtu favorite. Hivyo hii ni mfano kwamba tumeona rundo darasani. Na tena, hii ni nyingine tu njia hiyo tunaweza kuhifadhi data. Katika kesi ya kamusi, tena, hii ni kwenda tu kuwa masharti. Basi hebu angalia nini hii kwa kweli Inaonekana kama katika ngazi ya chini kidogo. Hivyo hebu tuangalie kwenye nodi katika trie moja. Na tunaona, sawa, kuna kwenda kuwa Boolean na node, pointer nodi. Na tunaona kwamba Boolean inaitwa is_word. Hivyo kimsingi, hiyo ni kwenda yanahusiana kwa hawa pembetatu kidogo ambayo anasema, kama wewe wameweza kujipatia hapa, Nimepata neno kamili. Tunajua kwamba "Turing" juu ya hapa ni neno kamili, ilhali tu T-U-R sio neno kwa sababu hatuoni kwamba delta kidogo. Na kwamba delta kidogo, tena, sambamba na is_word hii, hii is_word Boolean. Na kisha tuna safu ya watoto. Hivyo katika kila ngazi, na node fulani, na kwamba pointi nodi kwa safu ya alfabeti nzima. Hivyo unaweza kuona, tena, katika picture-- hii mimi nina kwenda kuweka kuruka nyuma na sana aliye mzaa kwamba kwamba safu juu ina rundo la tofauti nodes kuja mbali ya hiyo. Ina 26, au 27 kama unataka ni pamoja na tabia za ziada. Na hii inatupa njia ya kuhifadhi takwimu zetu kwa njia ambayo inaweza kuwa inaonekana juu ya kwamba unaweza kuangalia juu super kufunga. Chaguo-wakati kwa trie ni nini? Watazamaji: [inaudible]. HANNAH BLUMBERG: Naam. Katika nadharia, ni wakati wa mara kwa mara. Ni tu kwenda kuwa ukubwa wa neno kwamba unataka kuangalia juu. Hata kama sisi kuongeza zillion maneno zaidi kwa trie yetu, si kwenda kuchukua yetu tena kuamua kama neno aliyopewa ni katika trie. Hivyo hiyo ni kweli nzuri. Watazamaji: Je, wewe tu initialize kwamba safu? Amekosa hatua moja au mbili. Je, unaweza tu majadiliano juu ya kwamba kwa mara ya pili? HANNAH BLUMBERG: Hakika, kabisa. Nzuri swali. Swali lilikuwa, sisi na safu hiyo ni kwenda na nyota nodi kama kinyume na node tu, sawa? Baridi. Hivyo hapa ni nini sisi ni kusema ni safu yetu ni kwenda kuwa kuyatumia kwa arrays mengine. Hivyo ni essentially-- ni aina ya anahisi kama orodha wanaohusishwa kwa njia hii ambapo kila mmoja wa watoto hawa tu uhakika na nodi ijayo. Na kwa njia hiyo sisi kweli kuamua, hey, sawa, tumekuwa iterated kupitia nzima neno, ni neno hili katika kamusi, sisi tu kuangalia is_word hii. Mkuu swali. Naam. Watazamaji: Sawa. Kwa hiyo kile ni Runtime kwa trie? HANNAH BLUMBERG: Ni kweli. Hivyo Runtime kwa trie kwa chaguo-ni kwenda kuwa wakati mara kwa mara. Hivyo ni kwenda tu kuwa idadi ya herufi katika neno. Ni hautegemei ukubwa wa kamusi au ukubwa wa muundo data. Hivyo hapa ni mfano kidogo rahisi. Katika kesi hiyo, unaweza kuona kwamba neno popo ni katika kamusi na una zoom, lakini wewe hawana kitu kama zoo. Jinsi gani sisi kufanya zoo? Je, sisi kuongeza zoo kwa wetu kamusi, kwa trie zetu? Naam. Watazamaji: Tengeneza is_word kweli kwa [inaudible]. HANNAH BLUMBERG: Good. Hivyo tunatarajia kusema Z-O-O, na kisha sisi d unataka kuangalia mbali sanduku kuwa vilevile. Kubwa. Hebu kulinganisha kwa ufupi sana anajaribu dhidi meza hash. Inajaribu ni kubwa kweli kweli kwa sababu, kama sisi alisema, wao kutoa mara kwa mara wakati Luke. Lakini hasara kubwa ya ni wao uko humongous. Unaweza kupata hisia, hata kwa kuangalia saa yake, kwamba ni kwenda kuchukua kiasi kikubwa cha kumbukumbu. Hivyo wao wanaenda kuwa na kiasi kubwa kuliko meza hash, lakini wao wanaenda kutoa sisi mara kwa kasi zaidi Luke. Hivyo hiyo ni aina ya yako tradeoff, nini huduma ya juu, kama ni kasi au kumbukumbu. Maswali yoyote juu ya yoyote ya kwamba, wote wa miundo C data. Nzuri. SAWA. Tunakwenda hoja juu ya kidogo kidogo ya maendeleo ya mtandao kwa Maria. MARIA ZLATKOVA: Lovely. SAWA. HANNAH BLUMBERG: Unaweza kutumia laptop yangu. MARIA ZLATKOVA: Nice. OK, baridi. Kama sisi kusonga sasa kwa mtandao maendeleo, sisi aliyesema kidogo kuhusu kubadilisha ruhusa ya files na directories ili waweze kuwa kupatikana kwa watumiaji wengine, kwa dunia, na ili tuweze kuona ni jinsi kimsingi tunaweza kufikisha yao wakati sisi kuendeleza mambo kama tovuti kwamba tumekuwa wengi wao wakiwa wamekuwa wakifanya. Hivyo tuliona amri chmod, ambayo ni hali ya mabadiliko, kimsingi. Hiyo ni amri ya Linux na ni mabadiliko ya ruhusa ya mfumo wa faili vitu. Na mfumo wa faili kitu ni tu directory, faili, chochote ambacho unaweza mabadiliko ya ruhusa ya. Hivyo kuona ruhusa ya faili, sisi aina ya amri ls, orodha, -l. Na wakati sisi aina hiyo, sisi kawaida kuona baadhi ruhusa ili kuangalia aina ya kama hii mbele ya jina directory. Hivyo d inahusu directory. Na kisha tuna tatu triads kwamba kimsingi rejea ruhusa ya ama user, kundi, au dunia. Aina ya ruhusa kwamba tunaweza na kwa hayo makundi matatu ya watu ni aidha r kwa kusoma, w kwa kuandika, na x kwa kutekeleza. Na tunaweza kuwa wale kwa Kundi na dunia pia. Jambo gumu ni kwamba wakati mwingine wakati sisi aina ya amri chmod, tunataka aina baadhi ya idadi kwamba ilihusisha vipande tatu. Hivyo tunaweza kufanya kama 777 na kwamba kimsingi inajulikana ongezeko la thamani ya kila moja ya triads hizi kwa sababu r bila kutaja 4, w ingekuwa rejea 2, na x bila kutaja 1, hivyo wakati aliongeza up, kila moja ya namba ashuke na idadi ya nyongeza kwa nyongeza thamani kati ya 0 na 7. Hivyo tunaweza pia 0 kwa ruhusa hakuna wakati wote. Na kwamba itakuwa kimsingi kutupa ruhusa kwa mtumiaji ama, kikundi, au dunia. Maswali yoyote juu ya hii hadi sasa? Watazamaji: alisema anasoma ilikuwa 4? MARIA ZLATKOVA: Ndiyo. Watazamaji: [inaudible]. HANNAH BLUMBERG: Yup. Watazamaji: Na kisha kwa kuongeza wale wote wengine ingekuwa zinaonyesha namba yako. MARIA ZLATKOVA: Naam. Naam. Haya ni maswali makubwa. Nzuri. Baada ya hapo, sisi akaruka ndani ya HTML na a kidogo zaidi kuhusu maendeleo ya mtandao. Hivyo HTML tu ina maana HyperText ghafi lugha. Na kwamba ni ghafi lugha ambayo ni kiwango cha kwamba ni kutumika kujenga kurasa za mtandao. Ni wito lugha ghafi kwa sababu si kweli ulioandaliwa. Haisemi jinsi baadhi ya kanuni lazima wauawe au kitu kama hicho. Ni tu delineates na inaeleza jinsi mtandao ukurasa lazima kuanzisha na kila moja ya mambo yake na jinsi wanapaswa kuangalia kwa mtumiaji. Baadhi ya HTML kwamba sisi wakaenda upande wa pili ni yafuatayo. Yote ya HTML nyaraka wetu ilianza na DOCTYPE html. Kisha sisi daima kuwa html tag. Tuna kichwa na mwili. Na ni muhimu kwamba HTML ina aina hii ya mfumo wa Furushi sababu ni wazi kabisa. Na kisha inakuwa wazi sana wakati sisi haja ya kufungua na kweli vitambulisho karibu. Na sisi daima haja ya karibu vitambulisho kwamba tumekuwa kufunguliwa. Na hapa tuna baadhi ya aina mambo mbele kwamba tunataka kuwa nayo. Hivyo tuna, kwa mfano, jina la CS50. Na kisha sisi kweli Unaweza kuunganisha karatasi style amefafanua kuwa jinsi sisi style tovuti yetu. Hiyo ni CSS. Tunakwenda kwenda juu yake katika michache ijayo slides pia. Ndani ya mwili, sisi kuweka baadhi ya madarasa na vitambulisho. Na kama kumbukumbu, tena, Vitambulisho vya ni ya kipekee na madarasa inaweza kwa ajili ya vitu mbalimbali. Na kwamba tu ina maana kwamba tunaweza kutumia madarasa na vitambulisho ndani ya structures-- mengine hivyo, kwa mfano, ndani ya mafaili CSS au style sheets-- kwa kutaja vipengele maalum na kimsingi kusema kwamba tunataka style au kubuni baadhi ya kipengele katika baadhi ya njia fulani. Na sisi rejea kwao na Vitambulisho vya zao na madarasa. Na tunaweza pia kutaja mambo mbalimbali na vitambulisho pia, lakini vitambulisho na madarasa kutupa baadhi tu versatility na nini hasa sisi wanataka rejea. Hivyo mfano tu. Tunaweza, tena, ndani ya CSS faili ambapo sisi wanataka kufafanua baadhi style-- hivyo rangi, fonts, na mambo kama hicho tunaweza kufafanua style kwa mwili. Hivyo kwamba itakuwa kufafanua kwa mwili mzima tag. Lakini basi tunaweza pia kufafanua style kwa #title. Na tena, hashtag inahusu yetu ID na nukta inahusu darasa letu. Na kisha kwa .info, sisi Unaweza pia kuweka baadhi ya sifa. Na tena, wakati sisi kurudi nyuma, tulikuwa na yetu tabaka la inaitwa maelezo na ID kichwa yetu. Na tunaweza kuona kwamba sisi rejea kwao na #title na .info. Watazamaji: Je, unaweza kusema hashtag [? kupitisha kwangu? ?] MARIA ZLATKOVA: Sorry? Watazamaji: Je, unaweza kusema hashtag [? kupitisha kwangu? ?] MARIA ZLATKOVA: Hashtag ina maana kitambulisho, hivyo #title inahusu chochote mambo na ID huu inaitwa taji. Na kisha nukta inahusu darasani. Hivyo .info inahusu kipengele hiki kwa sababu ina maelezo darasani. Yup. Watazamaji: Kwa nini kutofautisha yao katika HTML? Kwa nini unasema mambo fulani ni Vitambulisho vya na mambo fulani ni darasa? MARIA ZLATKOVA: Hiyo tu hadi you-- HANNAH BLUMBERG: Rudia swali. MARIA ZLATKOVA: Oh, pole. Kwa nini sisi kutofautisha mambo fulani kama vitambulisho na mambo mengine kama madarasa? Hiyo tu kwa sababu ni kweli mara nyingi kubuni uchaguzi. Ni inakupa mengi ya versatility katika kuwa uwezo wa kusema nataka bidhaa hii maalum kuwa na ID huu kwa sababu wanataka kufanya mambo mengi na hayo, na mimi tu wanataka kufafanua mtindo, mtindo fulani au rangi yoyote kwa bidhaa hiyo. Na njia ya kufanya hivyo ni tu kutoa ni ID. Na kisha kama mimi nataka kuwa na michache ya vitu mbalimbali kuwa na kwamba, badala ya kwenda na kuweka their-- badala ya kufanya hivyo kwa tag kwa sababu tag ingekuwa kuweka kiini kwa tag nzima kwa kila wakati tag kwamba ni kutumika, unaweza kuweka tabaka ya vitu mbalimbali. Na kisha tu kupata darasa kwamba na kusema Nataka style darasa hili kwa njia hiyo. Na tena, darasa Unaweza kuwa vitu mbalimbali mbalimbali na ID ina kuwa ya kipekee. Mkuu maswali. Yoyote maswali mengine? OK, kutisha. Tena, hii ni jinsi selectors hizi ni inatazamwa katika CSS, na hashtag, kwa nukta, au bila chochote kwa kumshirikisha mtindo wa baadhi tag, kama mwili. Na hapa tuna mkuu syntax ya jinsi hii inafanywa. Kurudia baadhi bora mazoea kwa HTML na CSS, tunahitaji, tena, karibu zote tags kwamba sisi kufungua. Na nini sisi ilipendekeza wewe kufanya kwa ajili ya miradi yako ya mwisho, kama vile kwa ajili CS50 Fedha, ni kufanya kuhakikisha kwamba wote wa HTML yako linatambulisha. Na hiyo ni kufanyika kwa W3 Validator. Na kisha nini tulifanya na nini sisi kupendekeza kufanya ni kutenganisha mtindo, hivyo CSS kutoka HTML ghafi. Hivyo chochote kwamba inahusiana na jinsi ukurasa wako ni kwenda kuibua kuangalia na jinsi ni kwenda kurekebishwa anatakiwa kwenda katika CSS hati. Na kisha ghafi yako akisema jinsi mambo ni kuhusiana na kila mmoja ni HTML, na kwamba anatakiwa kwenda ndani ya ya hati yako ya HTML. Maswali yoyote? Mhm. Watazamaji: Ni nini hasa kinachoendelea tarehe na ukurasa uthibitisho wakati sisi ni kuthibitisha HTML kwamba [inaudible] umba? MARIA ZLATKOVA: Kwa hiyo what-- unafikiri. Basi nini hasa kinachoendelea tarehe na ukurasa uthibitisho na kwa nini tunahitaji kufanya hivyo? Kimsingi, sisi haja ya kufanya hivyo kwa sababu mara nyingi, kisakuzi chako, kama huna funga tag au kitu kama hicho, kisakuzi chako bado ni kwenda atatoa ukurasa na bado wanaweza kufanya kazi, lakini ni njia bora ya kuhakikisha kwamba umefanya, tena, imefungwa vitambulisho yako yote, kwamba mambo yako yote ni njia ambayo wanapaswa kuwa, na kimsingi kwamba ni na mikataba kwamba ni preset. Ni, tena, tu Jambo kwamba ni lazima kuwa kujifunza kuwa kufanya, kinyume na kuwa sloppier kanuni na mambo kama hayo. Naam. Oh, pole. Nilidhani wewe walikuwa kuongeza mkono wako. Watazamaji: Hapana, mimi mara tu [inaudible]. MARIA ZLATKOVA: Sawa. Watazamaji: Asante. MARIA ZLATKOVA: Bila shaka, asante. Hivyo tena, kinachoendelea katika jinsi habari ni kuhamishwa na mifano mawasiliano kuhamisha taarifa. TCP / IP. TCP tu ina maana Transmission Itifaki Kudhibiti na IP inahusu Itifaki ya internet. Na kwamba tu ina maana ya njia data ni kutolewa. Kama tuna baadhi ya data kwamba inahitaji kutolewa kwa you-- hivyo wewe kufanya ombi kwa server fulani. Kwa mfano, wakati sisi kujaribu kupata cs50.net, sisi kufanya ombi kwa CS50 server na sisi kuona kwamba tunataka kupata aina hii ya habari. Na kisha ni msingi itifaki hii kwa jinsi habari hii ni kutolewa, server anatoa taarifa nyuma na sisi, mteja. Na kisha sisi ni uwezo wa kuona habari kwa ukurasa na kisha kuitumia. Hivyo basi HyperText Transfer itifaki ni tu mwingine itifaki au kuweka ya mikataba kwamba amefafanua jinsi kivinjari na mtandao wa kompyuta lazima kuwasiliana. Na kuweka hii yote pamoja, HTTP, tena, tu amefafanua jinsi HyperText hii inaelezwa na HTML kwamba tumekuwa kazi yake, jinsi ni lazima kuwa mikononi wewe na jinsi takwimu ambazo ni mikononi wewe anapata wewe. Na hii ndiyo maana, kama wewe guys kumbuka kutoka darasani, tulikuwa na mengi ya maombi na tulikuwa na mengi ya syntax kwa maombi hayo kuwa tuko kwenda juu hivi sasa. Hivyo tena, wakati sisi kutuma ombi kwa kompyuta, tuna kufafanua mambo kadhaa. Hivyo tunahitaji kupata aina ya ombi kwamba sisi ni kuweka. Na tena, tuna, kwa mfano, GET ni aina moja ya njia kwamba sisi katika ombi letu. Na kisha HTTP / 1.1 ni tu Itifaki kwamba sisi ni kutumia sasa. Zaidi ya muda, ambayo inaenda kwa itifaki ambayo sisi ni kutumia. Hivyo kama una swali kama kwamba juu ya jaribio lako. Hiyo ni mikataba kwamba tuna hadi sasa. Backslash inahusu aina gani ya mambo ya sisi ni kuomba. Kisha, jeshi letu ni, kwa mfano, katika hii kesi, sisi ni kujaribu kwenda google.com. Hivyo hii ni thamani kwa ajili ya jeshi. Hii ni aina ya ombi ambayo inaweza kutumwa. Na kisha aina ya majibu ambayo inaweza kutumwa, tena, kwa kuzingatia itifaki hii, ni mara ya pili, HTTP / 1.1. Hivyo hiyo ni toleo la HTTP tena. 200 sawa tu hali ya kificho. Na kwamba sawa ni maneno kulingana na kwamba hali ya kificho. Na kisha maudhui-Aina inahusu aina kwamba ni kurudi na wewe kwamba ni kwa kuwa mtandao kwamba kupokea na kwamba browser yako unaweza kutoa baadaye. Na kwamba ni text / html. Watazamaji: Je 1.1 maana gani? MARIA ZLATKOVA: Hiyo tu toleo la of-- loo, je 1.1 maana gani? Hiyo ni toleo, HTTP toleo la itifaki ambayo sisi ni kutumia. Mkuu swali. Maswali mengine? Watazamaji: Je, unaweza kuhitimisha Maudhui-Aina ya haraka kweli? MARIA ZLATKOVA: Hivyo kwamba ni nini server. aina ya information-- nini aina ya maudhui mara maswali. Ili kwamba ilikuwa aina ya habari kwamba kupata nyuma kutoka server, aina ya data kwamba browser Unaweza kisha atatoa kwamba unatumia. Watazamaji: Ni kwamba kile hii Itifaki ni kukueleza kwa nini? MARIA ZLATKOVA: Sorry? Watazamaji: Ni kwamba kile itifaki kusema? MARIA ZLATKOVA: protocol-- Watazamaji: --what Maudhui-Aina ni au what-- MARIA ZLATKOVA: itifaki ni msingi on-- ni itifaki ninawaambieni kile? Hiyo ni njia tu kwamba habari hii ilikuwa mikononi wewe kwa kuzingatia juu ya aina gani ya itifaki ilikuwa habari hii got mikononi nyuma yenu. Je, hiyo mantiki aina ya? HANNAH BLUMBERG: Wewe unaweza kufikiria itifaki kama a-- Nadhani Profesa Malan alieleza darasani kama aina ya kama a-- ni kama sawa na handshaking binadamu. Kusema, kama, hey, mimi nina ombi na mimi kujua jinsi ya kushughulikia HTTP ya toleo 1.1. Na kisha server anasema, loo, sawa, I-- na wote zipo. Mimi pia kujua jinsi ya kukabiliana na HTTP / 1.1. Na mimi nina kwenda kutoa wewe nyuma baadhi ya maudhui. Katika kesi hiyo, ni kwenda kuwa wa aina text / html. Hivyo ni aina ya njia tu wao kwa communicating-- MARIA ZLATKOVA: Ni tu kuthibitisha kwamba wewe ni wote kufuatia huo itifaki na kwamba wote mteja na hivyo server-- kisakuzi chako na server-- aina ya kujua nini uko kuzungumza juu na kuwa na mkataba kwa kupita katika data. Watazamaji: Hivyo maudhui-Aina part-- maudhui-Aina maandishi / html-- hiyo ni sehemu tofauti ya ujumbe huo? Au ni sehemu ya hebu sema, 200? Je, 200 kuwaambia kwamba au is-- MARIA ZLATKOVA: 200 inasema yote akaenda OK. Na kisha ni aina ya maudhui aina ya sehemu tofauti ya ujumbe huo, na kusema kitu kwamba mimi Returned ina aina hii ya maandishi / html. Ni kutoa tu habari zaidi. Kuwa na kitu cha kuongeza? SAWA. Maswali yoyote juu ya hili? Kutisha. Hivyo baadhi ya wengine statuses HTTP kwamba tunaweza kupata pamoja na 200 sawa, wale ambao tumeona labda uwezekano wa kura ni 403 na 404. Hivyo 404, ikiwa ungekuwa kujaribu upatikanaji kitu ambacho haipo. Hivyo kwa mfano, katika yako CS50 Fedha psets, kama wewe alikuwa utoaji quote.html na wewe hawakuwa na faili kwamba, lakini badala yake alikuwa quote.php, kwamba bila kusababisha 404 Haukupatikana kwa sababu faili inaweza hazipo. Kwa 403 haramu, kwamba inahusu ruhusa. Hivyo kama baadhi ya faili si someka na dunia, unaweza kupata 403 akarudi. Baadhi ya watu wengine kwamba waweza get-- 301, wakiongozwa Kudumu; 302, Kupatikana; 304, mara ya; 400, Bad Ombi; na kisha Ndani Server Error kwa 500 na 503, Huduma hazipatikani. Ndiyo. Watazamaji: Je, sisi wanatarajiwa kukariri wale statuses yote? MARIA ZLATKOVA: Napenda kuwa yao juu ya kudanganya karatasi yako. [Kicheko] Watazamaji: Je, sisi wanatarajiwa kujua nini kuchochea kila mmoja? MARIA ZLATKOVA: Je, wao ni? HANNAH BLUMBERG: Kwa wale ambao tumekuwa kukimbia into-- hivyo swali was-- MARIA ZLATKOVA: Je, wao unatarajiwa kujua nini kila mmoja wa haya hadhi codes yapate yalisababisha na? Hivyo kwa wale ambao tumekuwa kutumika na mbio katika, napenda kusema, ndiyo. Hivyo tumekuwa dhahiri kuonekana 200 OK na alihadhiri katika psets. Tumeona 403, 404. Kwa wale wengine? HANNAH BLUMBERG: napenda kusema 500 inaonekana haki mchezo. MARIA ZLATKOVA: 500, yeah. HANNAH BLUMBERG: Naam. Tu na maana ya jumla ya nini husababisha yao. Na pia tu kwa hawa majina, unaweza aina ya kama kufanya nadhani elimu kama kwa nini hasa kilichowafanya. Kwa mfano, hoja ya kudumu, pengine faili limeondolewa kudumu. Watazamaji: Lakini juu ya awali mtihani, kulikuwa na hivyo jinsi gani unaweza kutarajia sisi kujibu hilo? HANNAH BLUMBERG: Hiyo ilikuwa na thamani ya pointi sifuri. Swali juu ya 418 juu ya buli ni kitaalam hali HTTP, lakini ilikuwa yenye thamani pointi sifuri. Ni wazi, wewe si unatarajiwa kujua yao. Watazamaji: Je, ni moja ya kweli? HANNAH BLUMBERG: Ni kweli moja, lakini haina maana yoyote. Ni tu mzaha. Internet watu ni funny. MARIA ZLATKOVA: maswali Mkuu, nyie. Yoyote maswali mengine? Watazamaji: ni hitilafu ya seva ndani nini? MARIA ZLATKOVA: Ndani hitilafu ya seva tu ina maana kwamba umekuwa hawawezi kuwasiliana na server kwa sababu fulani. Hivyo ni si lazima kitu ambacho ina nini na mteja au kitu kama hicho. Sijui wa mfano yoyote maalum kwamba tumeenda juu ya kueleza, lakini yeah. HANNAH BLUMBERG: Ni kweli. Hivyo kwa mfano, kama hebu kusema wewe walikuwa wakifanya kazi kwenye mashup na server Google walishuka kwa baadhi sababu, kukatika kwa umeme, hebu sema. Hiyo itakuwa server ndani makosa au aina fulani of-- kama wewe bila kupata majibu nyuma. MARIA ZLATKOVA: Naam. Ni tu wakati uko hawawezi kuwasiliana na server kwa sababu fulani kwa sababu yake kwenda chini au sababu nyingine. Hivyo kuruka ndani PHP. PHP, tofauti na HTML, ni lugha ya programu. Na sisi kuanza kutumia kwa sababu ni muhimu sana kwa ajili ya maendeleo ya mtandao. Sisi kwanza kutumika katika CS50 Fedha. Na kimsingi inatusaidia kuleta pamoja ghafi huu, kubuni, na jinsi sisi kweli kutumia taarifa kuonyesha mambo kwenye mtandao. Hivyo PHP yenyewe ina maana PHP HyperText Preprocessor, hivyo ni backnorym kujirudia kwa yenyewe. Na kufungua vitambulisho kwa PHP sisi kushoto na kulia mishale na alama ya kuuliza na php. Hivyo tumekuwa tayari kuona rundo la hayo. Sasa, sisi ni kwenda tu kwenda juu baadhi ya mambo ya msingi kuhusu suala hilo. Hivyo, pamoja na PHP, kutofautiana majina kuanza na ishara ya dola. Sisi si bayana, tena, kutofautiana aina tena. Tu kama tulivyofanya kwa C, hatuna haja ya kufanya hivyo. Tunaweza kufanya rundo la tofauti mambo na vigezo. Tunaweza kuziweka pamoja na concatenating yao kwa dot nukuu, ambayo sisi hakuweza kufanya katika C tena. Tena, tuna uhodari kidogo zaidi na PHP katika suala la vigezo. Tena, hatuna kazi kuu. Na PHP ni kufasiriwa kinyume na ulioandaliwa, Hivyo tu jinsi hatukuwa kufanya kwa mafaili C, hatuna kufanya hivyo kwa PHP. Lakini badala yake, kwa njia hiyo lugha inaendeshwa kwa wenyewe, ni kufasiriwa. Na kisha loosely typed tu ina maana kwamba sisi hawana kutaja kutofautiana Aina na aina kutofautiana kufahamika katika Runtime. Watazamaji: Lakini nini alifanya wewe maana kwa nukta concatenation? MARIA ZLATKOVA: Ni kweli. Wakati tunataka kuweka mambo together-- hivyo kama tulikuwa na baadhi ya kutofautiana kwamba alikuwa na thamani ya 3 na tulikuwa na mwingine kutofautiana kwamba alikuwa na thamani ya kamba, tunaweza kuweka vigezo pamoja kwa kuweka dot katika baina yao na concatenating yao. Au tunaweza kujenga kutofautiana kuitwa jina na kuiweka pamoja na concatenating masharti mawili. Hivyo kama tulikuwa na kamba katika mara mbili quotes na sisi kuweka nukta baada yake, na kisha tulikuwa na kamba ya lingine ingekuwa kujenga kamba kabisa. Watazamaji: Sawa. MARIA LATVIA: Je kwamba wazi? Watazamaji: Naam. MARIA ZLATKOVA: Sawa. Ndiyo. Watazamaji: Unaposema kufasiriwa badala ya ulioandaliwa, ni wewe kuzungumza juu huna haja ya kuwa maalumu wakati suala la PHP dhidi C? MARIA ZLATKOVA: Tunaposema kufasiriwa kinyume na ulioandaliwa, je, sisi ina maana gani? Hivyo kwamba maana yake ni kwamba hatuna haja kutekelezwa mafaili ya kuendesha PHP. Ina maana kwamba anaendesha kama unaendelea. Je, hiyo mantiki? Kidogo zaidi. HANNAH BLUMBERG: Kwa hiyo wewe unaweza kufikiria mkalimani kama mpango mwingine kwamba ni wajibu kwa ajili ya kwenda mstari kwa mstari kupitia PHP na kwa kweli utekelezaji yake, kinyume kwa kuandaa yake yote chini ya mapacha. Haina kweli maana yoyote kuhusu jinsi maalum tunahitaji kuwa. Bado tunahitaji kuwa sahihi, na wala kusahau semicolon yako, na kuhakikisha una ishara yako dola, na mambo kama hayo. Nzuri swali. MARIA ZLATKOVA: Naam. Hivyo mstari kwa mstari, kama kinyume na na mafaili C, tuna kufanya fainali nzima kabla tunaweza kweli kuendesha. Hiyo ni tofauti kuu. Lakini tena, hatuwezi kweli kuwa chini maalum. Hivyo arrays katika PHP kuwakilisha kweli ramani aliamuru. Hivyo maadili arrays mshirika kwa funguo. Njia mbili kutangaza safu, kulingana na syntax hii, tunaweza kuwa wazi zaidi kwa kusema tuna safu na tuna key1 hii kwamba ramani kwa value1 hii, key2 kwamba ramani value2. Au tunaweza tu kujenga safu ambayo ina maadili yenyewe na kisha funguo ni kueleweka kwa namna. Maswali yoyote juu ya hili? Watazamaji: Je, ingekuwa funguo kuwa katika mfano wa pili? 0, 1, 2, 3? MARIA ZLATKOVA: Kwa mfano, ni tu funguo katika hii si lazima kufanya tofauti. Wao tu kufafanua jinsi unaweza kutumia maadili ndani yake. Hivyo kama tulikuwa na foreach kitanzi katika PHP kwamba ingekuwa kuruhusu sisi kwenda kwa njia ya maadili yote, tunaweza kwenda kwa maadili yote, hata kama tulikuwa na au ulikuwa bado inaelezwa ufunguo maalum ndani ya tovuti ya syntax uliopita. Hivyo hata kwa aina hii wa safu, sisi bado anaweza na foreach kitanzi kwamba huenda kwa njia ya kila kuhusu maadili katika muhimu katika safu. Hivyo syntax ya foreach kitanzi, sisi kuanza na safu. Hii kutofautiana $ arr ni safu yetu halisi kwamba sisi inavyoelezwa katika slide uliopita kama thamani halisi inakwenda kwamba kupitia katika kila maadili, bila kujali kama tulikuwa na ufunguo au la. Na kisha tunaweza kufanya kitu kwa thamani ndani ya foreach kitanzi. Hivyo tena, kama tulikuwa na safu kama hii hapa created-- hivyo tuna ufunguo wa foo na thamani ya bar, ufunguo wa bazi na thamani ya qux-- tunaweza kuwa foreach kitanzi kwamba huenda kwa njia ya safu kama thamani ufunguo na kisha kufanya kitu na muhimu na / au thamani. Lakini sisi si lazima kila mara kuwa na foreach matanzi kwamba huenda kwa njia ya safu kama ramani muhimu kwa thamani. Tunaweza kwenda kwa njia ya foreach kitanzi safu kama thamani. HANNAH BLUMBERG: Na nadhani to-- ilikuwa swali lako, nini ni thabiti ripoti? Watazamaji: Kinda. MARIA ZLATKOVA: Oh. HANNAH BLUMBERG: Ndio, ndio. Hivyo kimsingi, kama huna bayana ufunguo, ni kwenda kuwa 01. MARIA ZLATKOVA: Naam. Tu kama na C, ni sifuri indexed kama huna bayana muhimu. Watazamaji: Sorry. Je, unaweza kujaribu akizungumza kidogo nguvu zaidi? Mimi nina kuwa kidogo ya shida ya kusikia kila kitu. MARIA ZLATKOVA: Mimi ni hivyo pole. Naam, bila shaka. Hivyo unataka mimi kwenda juu hii tena? Au ni hii Watazamaji: Hivyo katika slide-- uliopita ikiwa unaweza tu kwenda nyuma kwa ajili ya pili moja. MARIA ZLATKOVA: Bila shaka, pole. Watazamaji: Hivyo pili safu hapa hana wanaonekana kuwa na thamani kwa ufunguo, aina ya [? Sababu. ?] MARIA ZLATKOVA: Haki, haki. Watazamaji: Hivyo ni jinsi gani kazi unaposema ni wote au hakuna. Kwangu mimi, kwamba inaonekana kama [? foo?] tayari. MARIA ZLATKOVA: Ndio, ndio. Hivyo tena, hii ni kuamuru ramani kwa maana hii kwamba kuna ni kueleweka, Kwa mfano, bahati hapa inaweza kueleweka kama 0, 1, 2, 3. Tena, hiyo ni kuwa wale bahati ni sawa wetu ya kuwa na funguo mapped kwenye maadili. Hivyo kama ufunguo yetu ilikuwa 0-- pole. HANNAH BLUMBERG: Hapana, kuna chaki hapa. Ni kweli ni nzuri. MARIA ZLATKOVA: Hiyo ni kubwa. SAWA. Hivyo tena, $ arr 0 itakuwa muhimu kwa ajili ya thamani 1. 0 itakuwa muhimu kwa thamani 1. Watazamaji: Samahani. Ni asiyeonekana. HANNAH BLUMBERG: zote haki, Nevermind. Chalk ilikuwa wazo mbaya. Mimi kuchukua nyuma. Unaweza kufikiria funguo kama 0 ramani kwa thamani 1. MARIA ZLATKOVA: Naam. Hivyo hii ni 0, hii ni 1, 2, 3. Hizi zinaweza kuwa funguo yako. Unaweza kufikiri wao as-- yeah. Hivyo badala ya kuwa funguo wazi, wao uko aina ya kueleweka kama kuwa bahati kuanzia saa 0. Chaki hakuwa na msaada. Naam. Watazamaji: Kwa foreach kitanzi, kama sisi alitaka kuona kama thamani, ingekuwa tu moja kwa moja ripoti ya 0? MARIA ZLATKOVA: Naam. Ingekuwa kwenda kwa njia ya kila mmoja wa maadili. Watazamaji: [inaudible] kama 0 au ingekuwa kwamba tu kufanya 0? MARIA ZLATKOVA: Ingekuwa kusema kama dola ishara na kisha baadhi jina kutofautiana, thamani. Watazamaji: [inaudible]. MARIA ZLATKOVA: Sorry? Watazamaji: Samahani, mimi nina tu kujaribu kukumbuka. Jinsi gani unaweza kufanya kwamba kama unaweza kufanya hivyo moja kwa moja Indexing ni 0 tu ya? MARIA ZLATKOVA: Hivyo ni jinsi gani unaweza kufanya hivyo kama wewe hawakuwa na majina maalum ufunguo? Watazamaji: Naam. MARIA ZLATKOVA: Wewe ingekuwa tu define-- tu kusema mwenyewe kama baadhi jina. Hivyo katika psets yako, nyie nguvu kumbuka foreach $ mstari kama $ safu, sisi aliumba wenyewe hii mstari $ akisema tunataka kwenda kupitia mfululizo kama $ safu. Hata kama hatukuwa na $ huu wazi safu inavyoelezwa, tunaweza tu kwenda na kusema hii inaweza kuwa muhimu zetu, na kwenda tu kwa njia ya kila ya maadili. Watazamaji: Hivyo ni thamani kutofautiana mpya sisi ni kujenga kuhifadhi [inaudible]? MARIA ZLATKOVA: Hivyo si asili kutofautiana mpya. Ni kutofautiana kwamba inahusu ndani ya safu ya kila mmoja wao. HANNAH BLUMBERG: Ni mpya kutofautiana jina. MARIA ZLATKOVA: Yeah, ni mpya jina kutofautiana ni, lakini siyo inherently-- yeah. Ni tu kutofautiana mpya kwamba unaweza kufanya hivyo. Hivyo tu jinsi gani tulivyofanya $ mstari kama $ safu, safu ilikuwa mpya jina kutofautiana kwamba sisi inaweza kujenga katika foreach yetu kitanzi. Haina kwa preexist kabla ya hapo. Watazamaji: Je, unaweza kwenda kwa njia ya mantiki kwa kila mmoja, kwa kutumia mfano huko? MARIA ZLATKOVA: Mhm. Oh, pole. Hapa ni mfano. Uhakika. Hivyo kwa kila array-- hivyo hiyo ina maana kwenda safu hii kama ufunguo value-- ambayo inaenda kupitia safu hii na kwanza kwenda na kupata foo, foo muhimu na bar thamani. Na kisha juu ya pili iteration ya kwa kitanzi, itakuja kupitia na kuchukua bazi muhimu na thamani qux. Na kisha unaweza kufanya kitu kwa ama wao au wote wawili. Watazamaji: Hivyo wazo nyuma kuwa hatua muhimu kwa thamani, je, wewe kuishia kupata? MARIA ZLATKOVA: ni wazo gani ya kuwa akizungumzia muhimu kuthamini? Ni mwingine tu mkataba huo, mwingine njia ya kwenda kupitia safu na kuwa na uwezo wa kupata ama muhimu au thamani au wote wawili na matumizi yao. Watazamaji: Nini jukumu kwa kuamuru kwamba foreach anaendesha katika? Hivyo kama tulikuwa kuongeza mambo ya safu baadaye, ingekuwa wale kuwa ndio kwanza kuitwa katika foreach safu, au itakuwa ni baadaye? MARIA ZLATKOVA: Kwa hiyo kile ni Ili foreach kitanzi huenda kwa njia ya safu katika? Ni inakwenda kupitia kwanza kipengele kwa kipengele mwisho, kwa mwisho aliongeza kipengele. Ikiwa kuongeza vipengele baadaye, wangeweza kuwa accessed-- mambo ya kwanza ingekuwa kulipata kama kwanza mambo ya safu, na kisha wewe d kwenda kwa njia ya kila mmoja wa mambo kama aina ya ordered-- si amri, lakini njia hiyo wao wamekuwa kuweka katika safu. Watazamaji: Hivyo mambo mapya ni aliongeza baadaye? Hivyo wao ni added-- wao utakuwa ndio mwisho katika [? iteration. ?] MARIA ZLATKOVA: mambo New can-- kimsingi, wakati mambo mapya ni aliongeza, ni waliongeza hadi mwisho wa safu? Watazamaji: Naam. MARIA ZLATKOVA: Naamini hivyo. Ndiyo. Na kisha kwa foreach yako kitanzi, baada ya umefanya aliongeza mambo mapya na wewe kwenda kwa njia yao, mambo mapya ingekuwa kuwa accessed-- kipengele mpya, ikiwa ni aliongeza mwisho, ingekuwa kupatikana jana. Watazamaji: Je, unaweza tu kutoa mfano wa kitu ambacho ingekuwa [inaudible] na kitu na thamani kama [inaudible] au thamani, like jinsi wewe d muundo huo? MARIA ZLATKOVA: Ni kweli. Naweza kutoa mfano wa kile tunataka kufanya na thamani? Kwa hiyo kile nyie inaweza kuwa na mazoea na ni kwamba tumeenda kupitia safu na kimsingi kuchapishwa kila moja ya mambo, Kwa mfano, kama sehemu ya kuamuru orodha au kitu hicho. Je, hiyo mantiki au kufanya tunataka to-- Watazamaji: Je, sisi magazeti maadili haya nje? MARIA ZLATKOVA: Yeah, tunaweza magazeti na kisha kimsingi $ thamani kwa sababu katika thamani hiyo maalum, tunataka kuwa uchapishaji thamani ndani yake. Hivyo kama sisi walikuwa katika iteration yetu ya kwanza yake na sisi kuchapishwa $ thamani, tunataka kuwa uchapishaji bar. Watazamaji: Je, kuna pia kwa mizunguko katika PHP au tu foreach matanzi? MARIA ZLATKOVA: Kuna pia kwa mizunguko katika PHP. Na mantiki yao ni zaidi ya sawa na nini tumekuwa kutumika. Watazamaji: Hivyo thamani yake ni batili. MARIA ZLATKOVA: Ni kama huo. Naam. Watazamaji: Mimi tu kwenda kuuliza. Hivyo wakati wewe kutangaza safu, huna haja kuwaambia kile kawaida ni kwenda kuwa, ambayo ina maana kwamba unaweza tu kuongeza na kuondoa vipengele [inaudible]. MARIA ZLATKOVA: Yup. Yup. Hasa. Wakati sisi kutangaza safu, sisi huna haja ya kusema kile kawaida ni, ili tuweze kuongeza tu vipengele kwenye hilo baadaye pia. Maswali zaidi? Hivyo kuleta PHP na HTML pamoja, nini sisi tumeona vema, Kwa mfano, katika mfano huu, tuna HTML fomu ambayo ina uwanja pembejeo. Na pembejeo shamba ni jina tu na basi ina Kuwasilisha kifungo. Na wakati waandishi Kuwasilisha kifungo, katika hello.php faili wetu, kwa sababu mbinu kwa ajili ya aina ni kupata, tunaweza kupata chochote ni katika jina na hii kupata kutofautiana kimataifa ambayo is-- syntax kwa kuwa ni $ _GET. Na kisha tunaweza kupata chochote user pembejeo ndani ya kwamba fomu kwa ajili ya jina na kubainisha jina la uwanja huo. Maswali mengine yoyote au yoyote maswali juu ya mfano huu maalum? Watazamaji: wapi PHP? MARIA ZLATKOVA: Hapa. Hivyo hii ni ufunguzi tag wetu kwa PHP. Watazamaji: Oh, haki. MARIA ZLATKOVA: Ndiyo. HANNAH BLUMBERG:? = Ni shorthand maana hayo ni PHP na tu echo. Watazamaji: Oh. MARIA ZLATKOVA: Yeah, sorry. Mimi ni lazima kuwa alionyesha hilo wazi. HANNAH BLUMBERG: Magazeti. MARIA ZLATKOVA: Ni tu kazi ambayo inaruhusu sisi magazeti kitu. Mkuu swali. Hivyo going-- ndiyo. Watazamaji: Je, kuna kwenda kuwa kabisa kidogo ya mkono coding ya PHP na HTML juu ya jaribio 1? MARIA ZLATKOVA: Kuna kuwa haki kiasi cha tafsiri ya PHP na HTML, si lazima kama kiasi kikubwa cha coding, ingawa unaweza kuwa na kuandika foreach kitanzi, ingawa, a kwa kitanzi. Yoyote ya mizunguko kwamba sisi kufunika hapa ni haki mchezo. Na hiyo ndiyo hasa hilo. HANNAH BLUMBERG: Napenda kuwa tayari. Katika njia sawa kwamba sisi aliuliza wewe kuandika rundo la kazi C juu ya jaribio 0, Napenda kuwa tayari kufanya sawa katika PHP na JavaScript. MARIA ZLATKOVA: Naam. HANNAH BLUMBERG: Naweza kusema a little-- kama sisi siyo kwenda kufanya wewe kuandika HTML mkubwa ukurasa sababu tu kwamba kidogo kidogo nyeti, lakini unaweza kuwa na sehemu. Hiyo ni haki kabisa mchezo. Kama dogo HTML ukurasa, kabisa haki. Watazamaji: Sawa. Vipi kuhusu katika JavaScript vile vile? HANNAH BLUMBERG: Naam. JavaScript wa haki mchezo. MARIA ZLATKOVA: Naam. Hiyo ni haki kabisa mchezo. HANNAH BLUMBERG: Tutaweza kupata kwa kuwa katika kama dakika 10. MARIA ZLATKOVA: SQL, tena, Uliza muundo lugha. Ni kimsingi inaruhusu sisi kusimamia data katika kimahusiano database usimamizi mfumo. Kwamba tu kimsingi ina maana kwamba tuna mahali fulani kuhifadhi baadhi ya data kwamba sisi kutaka kutumia katika tovuti au katika aina nyingine. Na kisha tuna maswali ili kupata habari kutoka database yetu, au kuingiza maelezo katika wao. Mengi ya kawaida ones-- UPDATE, Insert, SELECT, na kufuta. Hivyo kwa UPDATE, hii ni syntax kwa kuongezea data katika database. Kuhuisha meza hii inaitwa meza kwa kusema SET, tunaweza kuweka baadhi maadili katika yote safu ya kitu kingine chochote sawa. Ili tuweze pia kutaja baadhi maalum viingilio kwamba tunataka kurekebisha na kwamba wanaweza kuwa kutumia WAPI. Na tunaweza bayana kwamba sisi tu wanataka kurekebisha baadhi ya mistari ambapo nyumba kwa, kama tulikuwa na meza ya wanafunzi na wanafunzi wote alikuwa na nyumba, hivyo tunataka tu kurekebisha baadhi maadili ambapo nyumba ni sawa na Currier, kwa mfano. Kwa kuingiza, tunaweza kuingiza maadili fulani katika meza. Hivyo Kuingiza ndani ya meza, na kisha maadili, na kisha katika mabano, sisi kutaja ambayo maadili unataka kuingiza. Hivyo Kuingiza ndani ya meza, col1 na col2, thamani ya kitu val1 na val2. Hivyo hii kuwekeza kimsingi mstari mpya katika meza zenye maadili ya 1 na 2 chini ya nguzo ya 1 na 2. Na kisha tunakwenda kwenda juu mfano wa haraka wa jinsi hii inaonekana kama katika database yetu kidogo. Lakini swala hii ya mwisho kwamba mimi kufikiri tunakwenda kwenda juu, SELECT, ni tu inaruhusu sisi kuchagua data kutoka meza kwa uwezekano wa matumizi yake baadaye. Na njia ya sisi kufanya hivyo ni sisi tu kuhifadhi katika baadhi kutofautiana. Na kisha tunaweza uwezekano kuitumia tena. Hivyo SELECT nyota ina maana kuchagua wote. Hiyo tu shorthand kwa ajili ya kuchagua wote. KUTOKA meza WAPI, sisi ni kuangalia kwa baadhi ya masharti maalum, hivyo ambapo safu sawa na kitu, kwa mfano. Kama sisi tu alitaka kuchagua wote kutoka meza, hii huchagua tu nguzo zote na safu yote kwenye meza. Na kisha kufuta kutoka meza WAPI Kanali sawa na kitu, hii deletes tu baadhi mstari kutoka meza yetu ambapo tuna baadhi ya masharti maalum. Katika kesi hiyo, hali ni safu sawa na kitu. Hivyo tu mfano wa haraka wa hii. Kama tuna meza hii hapa hapa na sisi kuingiza ndani ya meza, maadili haya, ambayo ingeweza kuingiza safu mpya. Na kama tulikuwa na auto-increment, hii ingekuwa tu increment ID wetu 0-1 kwa 2. Kama sisi kuchaguliwa zote kutoka kwa wanafunzi, ni tu anarudi nyanja zote na safu yote. Ambapo mwaka ni mkubwa kuliko au sawa na 2016, ambayo ingeweza tu kurudi Hana na mimi mwenyewe. Na kisha kama sisi tu kuchaguliwa id mwaka na mwaka KUTOKA wanafunzi ambapo nyumba ni Cabot House, kwamba ingekuwa, tena, kurudi Hana na mimi mwenyewe. Kisha kama sisi kufutwa kutoka wanafunzi ambapo jina ni sawa na Rob, ambayo ingeweza kufuta mstari mzima. Na kisha kama sisi kuweka jina, UPDATE wanafunzi SET jina sawa na Daven WAPI nyumba ni sawa Cabot House, ambayo inaenda kwenda safu hizo na kisha update jina. Na kisha chache aina SQL data CHAR, VARCHAR, INT, na kuelea. Hizi ni haki mchezo. Napenda kwenda tena na kuhakikisha kujua na kuwa nao juu ya kudanganya karatasi yako, nini kila mmoja wa wahusika wale zimetumika kwa nini wewe kutumika yao juu ya psets yako, na kuhakikisha wewe ni ukoo na starehe na kuwa na kuchagua aina tofauti ya data katika pset yako. Ndiyo. Watazamaji: Je, ilikuwa meza kwamba kuhifadhiwa? Yeah, ambapo ni meza hii kuhifadhiwa? MARIA ZLATKOVA: Naam, sasa hivi, siyo kuhifadhiwa. Hata hivyo, ambapo ni meza hii kuhifadhiwa? Lakini inaweza kuhifadhiwa katika database SQL. Watazamaji: Na ambapo ni SQL database? Katika kompyuta, online mahali fulani, server? MARIA ZLATKOVA: Ni inaweza kuwa idadi ya mambo mbalimbali. HANNAH BLUMBERG: Tumekuwa interfaced na Meza SQL wengi wao wakiwa na phpMyAdmin. Hivyo tunaweza kuuliza server kuvihifadhi kwa ajili yetu. Tunaweza kuhifadhi yao kwenye kompyuta yetu wenyewe. MARIA ZLATKOVA: Ni inategemea tu jinsi gani unataka kufanya hivyo mwenyewe. Lakini tumekuwa kuhifadhi yao, kama Hana zilizotajwa, juu ya phpMyAdmin, ambayo ni online. Na kisha jinsi tunavyotumia PHP na SQL, sisi kuhifadhi ndani ya baadhi ya kutofautiana nini tumekuwa aliuliza kwa. Hivyo kama sisi CHAGUA zote kutoka historia ambapo USER_ID sawa na KIPINDI id, ambayo ingeweza kuchagua safu zote kwa mtu ambaye maalum ni watumiaji katika kutokana na historia meza na aina yao katika safu. Jambo zuri kujua ni kwamba CS50 swala kazi kulinda dhidi ya vitambulisho SQL sindano. Hiyo ina maana tu kwamba inafanya kuhakikisha pembejeo kwamba ni aliingia ni sahihi na kwamba mtu ambaye ni kuingia pembejeo si kujaribu pembejeo baadhi makusudi kificho kwa ama kuacha meza yetu au kufuta kila kitu ndani ya database yetu. Maelezo ya haraka ya Mfano View Mdhibiti mfano, ni njia tu ya kuandaa na kufikiri kuhusu kanuni. Ni tena, kubuni dhana. Nini maana ni kwamba sisi can-- na ni mazoezi mazuri kutenganisha sehemu mbalimbali wa kanuni zetu na wanayo kudhibiti ndani ya mitizamo hayo matatu. Hivyo mtazamo wetu ni mara nyingi wetu templates, kwa mpangilio yetu, njia kwamba sisi kuweka jinsi kificho yetu inaonekana. Hiyo ni zaidi mafaili yetu CSS na njia kwamba sisi kuelezwa mpango wa kanuni zetu, kimsingi. Mtawala wetu ni zaidi ya kile tumekuwa kufanya na PHP mafaili. Hivyo tena, kufanya kazi na habari kwamba tuna na kufafanua jinsi habari ni kutumika, na kisha kupita maelezo kwamba ama kwenye mtazamo au mfano wa kuigwa. Na mfano wa kuigwa, kwa njia hiyo tumekuwa wamekuwa wakitumia ipo imekuwa database yetu, hivyo ambapo habari wetu ni kuhifadhiwa hivyo ina mahali fulani kuishi katika, na yoyote ya kificho kwamba inahusiana na njia kwamba tunapata kwamba maelezo au njia ambayo sisi update habari hiyo. Hivyo katika mfano MVC, HTTP maombi waliotumwa mtandao wa kompyuta. Kisha, mtawala kutafsiri ombi kutoka kwa mtumiaji na kisha linatambulisha pembejeo mtumiaji. Ni hiari kwamba tuna mtawala kuwasiliana kwa mfano, ili kitu kama database yetu au baadhi ya utendaji mwingine kwamba RELAYS habari. Na kisha hatimaye, mtawala hupita maelezo kwenye mtazamo ili iweze kuwa kulipwa na kwamba inaweza kuwa wazi kwa mtu yeyote kupata ukurasa wa mtandao. Maswali yoyote? Kutisha. Hivyo tena, mfano, kazi yake, tena, ni kuendelea hifadhi ya taarifa, kusimamia na kuandaa data. Na kile tumeona hivyo mbali ni database MySQL na mafaili yoyote data ambayo inaweza kutumia. View, uwasilishaji wa taarifa kwa user, UI, au user interface. Na Mfano wa hili ni HTML. Na kisha tupate kuwa na PHP ndogo. Hivyo kwa kitanzi kwamba iterates zaidi ya takwimu ambazo ni kuchapishwa ni sehemu ya maoni, kama kinyume na mtawala. Na kisha mengi ya mafaili yetu PHP kuanguka katika mtawala jamii. Ni tu Hushughulikia maombi user na anapata habari kutoka mfano wa kuigwa. Kuruka ndani Document Kitu Mfano, hii tu inahusu njia HTML hati ni kupangwa. Na wao ni kupangwa katika mti muundo ambayo ina uongozi. Hivyo kama sisi kupata [inaudible] uwakilishi wa hati, tunaweza kufanya kazi na hati, kama sisi kuendesha vitu kimsingi. Na kufanya a huu wazi kidogo kidogo, wakati tuna mengi ya yetu vitambulisho tofauti kujibu kwa njia tofauti tofauti katika mti wetu. Na kisha kwa mfano huu, sisi na kuanzia hati nodi. Tuna, basi, yetu HTML nodi kuwa kugawanyika katika kichwa na mwili. Kichwa ina jina na kisha kichwa ina hello, ulimwengu. Na mwili wetu tu ina hello, dunia pia. Hivyo maswali yoyote juu ya yoyote ya mambo ambayo sisi kufunikwa hadi sasa? Na kama sio, Hana mapenzi kuchukua na JavaScript. Kutisha. HANNAH BLUMBERG: Sawa, baridi. Kama kitu anakuja na PHP au HTML, au yoyote ya mambo Maria kufunikwa, sisi daima wanaweza kupima. Sisi ni kufanya vizuri zaidi juu ya muda tena, hivyo kushangaza. Na tu kurudi kweli haraka na hayo, kama ukiangalia kila mtihani mwaka uliopita, hili anakuja juu either-- hapa ni baadhi HTML, kufanya mchoro huu. Au hapa ni mchoro huu, kufanya baadhi ya HTML, hivyo dhahiri kwamba mazoezi. Na kisha hiyo ni moja uhakika swali kwamba unaweza kupata haki. Baridi. Basi hebu majadiliano juu JavaScript na jinsi ni kidogo tofauti na lugha kama PHP na C, lugha mbili tuliona kabla ya wakati. Hivyo namba moja, ni loosely typed. Hiyo ni kama PHP, lakini tofauti na C. Ni lugha kufasiriwa. Tena, hiyo ni kama PHP, tofauti na C. Na hii ni kwenda kuruhusu sisi use-- ni kazi kweli nicely kwa kurasa za mtandao. Ni kwenda kuruhusu sisi kuendesha maudhui na jinsi inaonekana na kile yake. Tunakwenda kuona kidogo ya Ajax. Ni inaruhusu sisi kuwasiliana asynchronously na seva tofauti na kupata taarifa. Na hili ni jambo kwamba kweli hutenganisha JavaScript na PHP na C ni kwamba ni mteja upande. Wote PHP na C ni kawaida server-upande. Kwa sehemu kubwa na karibu kabisa kile tumeona, angalau katika darasa hili, JavaScript vitendo juu ya mteja upande, ambayo ina maana kwamba browser ni kweli jukumu la kuendesha hiyo. Na hiyo ina maana kwamba hatuna haja ya kiutendaji na kompyuta. Hivyo ina maana inaweza kuwa mengi kwa kasi kwa sababu ni kweli tu ni Chrome, ni Safari, ni Firefox, chochote kutumia kweli mbio wako JavaScript. Watazamaji: Je Asynchronous maana gani? HANNAH BLUMBERG: Ah, nini haina asynchronously maana gani? Mkuu swali. Asynchronously means-- vizuri, maudhui ambayo tunatumia ni, sawa, sisi ni kujenga mtandao na tunahitaji kupata baadhi ya taarifa. Hivyo, pamoja na mfano wa mashup, baadhi ya taarifa kwamba sisi kutaka ni majina ya makala. Sasa, sisi could-- chaguo moja ni kufanya hivyo synchronously na hiyo ina maana hebu kuacha, kwenda kupata makala, kupata makala nyuma, na kisha atatoa, lakini kwamba itakuwa kweli polepole. Hiyo itakuwa mbaya user uzoefu kwa sababu wewe ingekuwa tu kuwa wamekaa kuna kusubiri kwa kitu cha kujibu. Asynchronously ina maana tutaweza kuendelea kwenda kuhusu biashara yetu, utoaji ukurasa, na tutaweza kutuma mbali ombi hiyo ni aina ya kwenda kutokea kwa nyuma. Nadhani sisi kutumia mfano katika hotuba ya wito Rob na kusema, hey, unaweza ukiangalia hii up kwa ajili yangu na kupata nyuma yangu, kinyume na mimi tu kusubiri juu ya simu. Hivyo asynchronously ina maana yanapotokea kwa nyuma mbali na sisi katika sambamba. Mkuu swali. Kitu kingine? Kubwa. Tutaweza kuruka mengi zaidi katika maombi Asynchronous na Ajax. Watazamaji: Je, JavaScript-- wapi hivyo kuanguka kwa mfano-mtazamo-mtawala? HANNAH BLUMBERG: Mkuu swali. Wapi JavaScript kuanguka kwa mfano-mtazamo-mtawala? Hm. Nadhani inaweza fall-- hivyo hatuna kawaida kama squish ndani kwamba dhana, lakini mimi nadhani naweza kusema, OK, hivyo JavaScript kweli ni kwenda kuruhusu sisi kukusanya takwimu, kutafsiri data, kweli kufanya mambo ya maana na data. Kwa njia hiyo, ni sana kudhibiti-kama. Lakini pia ni kwenda kuruhusu sisi kuonyesha mambo na magazeti mambo. Kwa njia hiyo, ni sana mtazamo-kama. Naam. Hivyo ni aina ya kama PHP katika ambapo inaweza aina ya kuwa wote. Nzuri swali. Kitu kingine? Haki wote, kutisha. Kusonga haki pamoja. Basi hebu angalia mfano jinsi tunaweza kutumia JavaScript katika moja ya mtandao mipango yetu. Hivyo mimi itabidi kufikiria hili index.html pamoja na kundi la HTML. Na jambo nataka wewe kuzingatia ni tag hii script. Na hii anasema, sawa, nataka kukimbia baadhi JavaScript na hapa ni mahali ambapo anaishi. Ni maisha katika hello.js. Na mengi sana kama CSS, tunaweza kuweka JavaScript ndani ya HTML. Kwa nini huenda tunataka tofauti kumtoa? Naam. Watazamaji: rahisi kuandika upya? HANNAH BLUMBERG: Naam. Ni rahisi kutumia hela kurasa za mtandao tofauti. Ni anaendelea mambo safi. Ni tu mazoezi mazuri. Kutisha. Jibu nzuri. Hivyo nzuri, hivyo hii ni kwenda kuwa index.html yetu. Na kisha chini hapa ni wetu kidogo kidogo JavaScript file. Na wote ni anasema ni tahadhari Habari, dunia. Hivyo kile kinachotokea ni wakati hii renders-- ukurasa hivyo kama wewe kwenda kwenye tovuti yoyote hii is-- yote kitatokea je, ni kwenda kusema, OK, mimi nina kwenda kukimbia hii code JavaScript. Na hii kanuni JavaScript tu anasema tahadhari Habari, dunia. Hivyo nina kwenda kupata hii kirafiki kidogo pop-up. Baridi? Hiyo ni aina ya kama yetu sana kwanza JavaScript mpango, Habari wetu, dunia. Hebu tuangalie kidogo zaidi kuhusu nini syntax ya JavaScript inaonekana kama. Na hasa, hebu kulinganisha kwa C na PHP, ambayo tumeona kabla. Katika JavaScript, tunakwenda na var, jina la kutofautiana, na kisha thamani yake halisi. Na hatuna kutaja aina, tu kama katika PHP, lakini sana tofauti na katika C. Hivyo kwa mfano, kama sisi alitaka kuhifadhi thamani 50, katika C, tunataka kuwa na kusema, hey, C, nataka integer, Mimi nina kwenda kuiita i, na thamani yake ni 50. Katika PHP, ni rahisi kidogo. Sisi tunasema, hey, nataka kutofautiana kuitwa i na thamani yake ni 50. Sana vile vile, katika JavaScript, sisi kusema hey, nataka variable kuitwa i, thamani yake ni 50. Kila wakati baadae kwamba mimi kutumia i, mimi hawana haja ya kuandika var. Ni tu i kutoka kwamba uhakika juu. Kwa njia hiyo hiyo, katika C, ambapo mara moja tunasema int i, sisi tu kutumia i. Baridi? Sawa. Kuhamia kwenye mizunguko, bahati, hizi karibu kuangalia exactly-- nadhani wao ni sawa kama yale mizunguko ni kwenda kuangalia kama katika kitu kama C ambapo yako kwa kitanzi ni kwenda na tatu parts-- initialization, hali, na update. Kitanzi wakati, inaonekana exact. Sisi tu kutoa hali hiyo. Na kufanya wakati kitanzi, tena, sawa. Sisi kuwapa hali hiyo. Hebu sema nilitaka iterate over-- Nilitaka kufanya kitu mara tano. Katika C, tupate kuandika kwa init i sawa 0. i ni chini ya 5, i ++. Tofauti pekee, katika JavaScript, badala ya kusema int i sawa 0, tunasema var i sawa 0. Nzuri. Hiyo ni tofauti tu. Maswali yoyote juu ya yoyote ya kwamba? Ndiyo. Watazamaji: Hivyo katika PHP, ni sawa Jambo, isipokuwa lakini kama kutofautiana? Au ni kwamba var mfano? HANNAH BLUMBERG: Naam. Hivyo katika PHP, ni kwenda kuwa ishara ya dola. Hivyo ni kwenda kwa $ i sawa 0, $ i ni chini ya 5, $ i ++. Mkuu swali. Sasa hebu majadiliano juu ya kazi maazimio. Katika C, wakati sisi alitangaza kazi, sisi akampa jina na sisi akampa baadhi ya vigezo. Na mwanzoni, tuliandika aina. Katika JavaScript, kila sisi una kufanya ni kuandika keyword kazi ambayo anasema, hey, JavaScript, Mimi nina kuhusu kufafanua kazi. Katika kesi hiyo, ina jina jibu. Na inachukua hoja mbili, x na y. Taarifa kwamba hatuna huduma juu ya aina ya x na y. Na kama C, tuna hii kurudi Keyword, ili tuweze kufanya kitu kama kurudi x na y. Na sasa kwa mara nyingine tumekuwa imeandikwa huu kwanza kazi, tunaweza kutumia kiasi popote. Na hiyo ndiyo kabisa faini. Jambo moja kweli ya baridi kuhusu JavaScript kwamba ni sana tofauti na C ni kwamba kazi wanaweza kutendewa kama maadili. Hivyo tunaweza kufanya kitu kama hapa ambapo nadhani kufunika huu up-- Mimi kufunikwa juu var Jumla part-- na sisi tu alisema kazi xy sawa na kurudi x pamoja y. Hiyo ni kitu gani kuitwa kazi bila majina. Ni kazi bila jina. Wakati huu anasema kazi Jumla, blah, blah, blah, hii itakuwa tu kusema kazi. Lakini sasa hata kama nina kazi hii bila majina, kazi ambayo ni kweli tu thamani. Tunaweza kutibu kama thamani. Ili tuweze kuokoa ni katika kutofautiana sawa njia tunaweza kuhifadhi 50 katika kutofautiana. Hivyo tunaweza kusema, sawa, nataka kutofautiana, ni kuitwa jumla, na ni kazi huu. Hivyo mambo haya mawili ni kweli kwenda kufanya exact kitu, lakini syntax ni kidogo tofauti na aina ya furaha kumbuka. Naam. Watazamaji: Hivyo unaweza kuwaita kazi ambayo ilikuwa bila majina kwa kusema, Jumla mabano 2, 5? HANNAH BLUMBERG: Naam. Unaweza kupiga simu bila majina huu kazi kwa njia sawa. Ungependa kufanya kiasi (2, 5) ;. Hiyo itakuwa kabisa faini. Kama mimi si kufanya var Jumla sawa na kazi, kama mimi tu kufutwa Haya Najua ni upande wangu, lakini kujifanya mimi kufutwa Haya basi kazi ambayo ni aina ya tu wamekwenda. Unaweza kamwe kuitumia tena kwa sababu huna jina kwa ajili yake. Ni vigumu kutaja kitu wewe hawajui nini kuwaita. Nzuri swali. Naam. Watazamaji: Je, unaweza rejea jumla katika maeneo mengine kwa thamani ya x pamoja y? HANNAH BLUMBERG: Je, unaweza kumbukumbu Jumla katika maeneo mengine kwa thamani x pamoja y? Sina hakika kabisa nini. Watazamaji: Hivyo yako ya zamani nusu bila majina kazi ni jumla ni sawa na hii kazi bila majina, hivyo jumla ni sasa kutofautiana kwamba can-- HANNAH BLUMBERG: Haki. Hivyo kiasi ni kutofautiana, lakini ni actually-- hivyo jumla ni kutofautiana ambao thamani ya kazi. Hivyo ni kazi, ambayo ni aina ya Jambo weird kwa wrap kichwa yako karibu tangu tumekuwa kucheza na C na huwezi kufanya hivyo katika C. Lakini sasa tunaweza kuwaita kuhitimisha njia ile ile tunaweza kuita Jumla hapa. Watazamaji: Sawa. HANNAH BLUMBERG: Naam. Nzuri swali. Naam. Watazamaji: Hivyo hatuwezi kutumia prototypes katika PHP au JavaScript? HANNAH BLUMBERG: Hapana, sisi huna haja ya kutumia prototypes, hasa katika JavaScript. Hivyo moja mbaya mazoezi jambo kwamba mimi nina kwenda kusema kwamba unapaswa kufanya ni huna kuandika var i = 50. Unaweza tu kuanza kufanya i = 50. Na ingekuwa tu kufanya i kutofautiana kimataifa. Ni mila mbaya sana kwa ni kamwe kusema explicity var i, lakini ni kitu unaweza kufanya. Mkalimani siyo kwenda yell saa wewe. JavaScript ni mzuri kama, unaweza kufanya nini unataka. Oh, pole. Kuna wawili. Katika suruali machungwa. Endelea. Watazamaji: Hapana, wewe kwenda kwanza. Watazamaji: Hapana, mimi alikuwa akisema tu Sikuwa na mkono wangu juu. SAWA. Hivyo kama ungekuwa kuwaita Wakati huo wa kwanza, sasa kuhitimisha, sisi kuiita njia ile ile, x, y, kama kila wakati? HANNAH BLUMBERG: Naam. Hivyo hizi mbili kimsingi kufanya kitu kimoja. Watazamaji: Na nini faida ya kutumia moja au nyingine? HANNAH BLUMBERG: Hakuna faida ya kutumia moja au nyingine. Mimi nilitaka kuonyesha mbili vipande mbalimbali ya syntax. Mara nyingi ambapo bila majina kazi kufanya kuwa lengo ni kama hoja hadi nyingine kazi lazima kazi. Na tutaweza kuona kwamba katika haki ya pili na Ajax. Hivyo kama kwamba hakuwa na maana yoyote, kuhifadhi katika nyuma ya kichwa yako. Hapo ndipo bila majina kazi inaweza kuwa na manufaa kwa sababu si kweli thamani kutoa ni jina tangu tuko tu kwenda kuitumia mara moja. Naam. Watazamaji: Kama x na y mabadiliko baadaye juu, itakuwa kuhitimisha mabadiliko pia? HANNAH BLUMBERG: Kama x na y mabadiliko baadaye, itakuwa kuhitimisha mabadiliko pia? Hivyo hii ni kweli mimi kufikiri kitu ambacho ni, tena, ni tu anahisi tofauti sana kutoka C. Hii si thamani. Siyo 5. Ni tu kazi yenyewe. Hivyo kwa haraka kama wewe kuwapa vigezo, basi utasikia kweli mahesabu ya thamani. MARIA ZLATKOVA: Na kisha unaweza piga kazi na matumizi yake ya kupata baadhi ya thamani. HANNAH BLUMBERG: Haki. Hasa. Naam. Watazamaji: Hivyo kama wewe tu kuhifadhi katika kutofautiana, kama var x sawa Jumla ya wawili values-- HANNAH BLUMBERG: Naam. Hivyo unaweza tu kufanya var Jumla sawa Jumla ya maadili mbili. Naam. Yoyote maswali mengine? Naam. Watazamaji: Lakini ingekuwa kwamba kuchanganya jumla na kiasi? Kama kama wewe piga Jumla yako kutofautiana, ingekuwa wewe piga kazi kiasi? HANNAH BLUMBERG: Mm. Mm. Kama alifanya kitu kama, jumla ni sawa na kiasi 2, 5? Watazamaji: Naam. HANNAH BLUMBERG: Naamini kuwa ingekuwa overwrite thamani ya jumla. Hivyo mwingine kuvutia Jambo kuhusu JavaScript ni kwamba kutofautiana mmoja anaweza kuchukua juu ya rundo ya aina mbalimbali. Bad mazoezi. Ni lazima si kufanya kitu kama yale tu alisema. Lakini katika C, kama i ni kuweka sawa na integer, Tunajua kwamba ni kamwe inaenda kuwa kamba. Hii si kesi katika JavaScript. Yeah, swali zuri. Kitu kingine? Sawa. Kufanya sawa kwa wakati. Kuweka kwenda. Sawa. Tukiangalia safu katika JavaScript, hapa ni mfano wa haraka wa safu ya masharti. Na arrays unaweza kukua dynamically. Hawana ukubwa fasta njia ile ile wanayo yafanya katika C. Tunaweza kupata vipengele na tu mabano mraba. Hiyo inaonekana mengi kama PHP na mengi kama C, ambapo tunaweza kusema, katika kesi hii, kama nilitaka neno JavaScript, napenda Je, ARR mabano mraba na 0, 1, 2. Na kisha kama unakumbuka katika C wakati sisi alitaka kupata urefu wa safu, ni kweli annoying. Lakini katika JavaScript, super rahisi. Wote sisi kufanya, .length. Anatoa ni urefu. Hiyo ni. Watazamaji: Hiyo ni rahisi. HANNAH BLUMBERG: Yeah, hufanya maisha yako rahisi sana. OK, object-- huko. Vitu katika JavaScript kujisikia mengi kama structs katika C na arrays associative katika PHP. Kwa hiyo kile tumeona mengi ya ni JSON, ambayo anasimama kwa JavaScript Object nukuu. Na ni kimsingi njia ya jinsia takwimu zetu. Basi hebu angalia mfano, pengine njia rahisi. Hivyo hapa ni mfano wa kitu kwamba maduka darasani, CS50. Na wakati mimi kusema darasani, I mean kweli, si like-- yeah, bila shaka, CS50. Na utaona kwamba kila kitu katika kitu ni kwenda kuwa zilizomo katika braces curly. Na sisi kuanza kuhusisha majina uwanja au funguo na maadili tofauti. Hivyo unaweza kuanza kuona ni jinsi gani aina hii ya anahisi kama safu associative katika PHP. Hivyo sisi ni kwenda kujiunga uwanja au ufunguo jina, bila shaka, pamoja na kamba, CS50. Tunakwenda kuwa na mwalimu. Tunakwenda kuwa na TFS. Tunakwenda kuwa na idadi ya psets na tunakwenda na kumbukumbu. Na moja jambo zuri kutambua ni wote wa mambo haya na aina mbalimbali, na kwamba ni kabisa faini. Ni faini kwa kitu, kwa kweli, ni pengine inatarajiwa ajili kitu kuwa na mchanganyiko wa masharti na idadi na Booleans na arrays na kingine chochote waweza wanataka kuwa na kitu ndani ya yako. Na kumbuka kuwa hawa ni kwenda kuwa majina au funguo, na kisha sisi tu kuweka sawa na matumbo kidogo. Watazamaji: Nini hasa gani JSON maana gani? HANNAH BLUMBERG: Nini hasa gani JSON maana gani? JSON tu anasimama kwa JavaScript Object nukuu. Ni njia tu ya formatting. Naam. Ni njia ya formatting takwimu zetu. Katika C, ni structs. Katika PHP, ni associative arrays. Katika JavaScript, tuna vitu. Watazamaji: Hivyo CS50 ni kitu? HANNAH BLUMBERG: CS50 ni kitu katika kesi hii. Sasa, jinsi gani sisi kweli kupata mashamba hayo au kubadilisha mashamba hayo. Kwa mfano, tuseme tuliamua kwamba alitaka moja wachache pset muhula huu. Badala ya tisa, tuko tu kwenda na nane. Jinsi gani sisi kubadili hali hiyo? Loo, njia sahihi. Kuna njia mbili za tuweze kufanya hivyo. Namba moja ni kwa nukta nukuu na namba mbili ni pamoja na mraba bracket nukuu. Hivyo, kwa mfano, kama mimi alitaka mabadiliko au upatikanaji psets uwanja katika CS50 yetu kitu, kile atafanya ni CS50.psets, hivyo jina la kitu nukta jina la uwanja au muhimu. Sana vile vile, ni hasa sawa kufanya CS50, na kisha katika braces mraba, psets. Baridi? Naam. Watazamaji: Hivyo ni JSON kitaalam bado JavaScript, ingawa katika psets sisi kutenganisha ni nje [inaudible]? HANNAH BLUMBERG: Ni kweli. Hivyo swali ni, ni JavaScript na JSON sawa? Hivyo JSON ni nukuu, kimsingi njia ambayo sisi kuandika kitu kutoka JavaScript. Hivyo wao siyo sawa. Napenda kusema JavaScript, kuna ni vitu katika JavaScript. JSON inachukua vitu wale na Prints yao na maonyesho yao au maduka yao kwa njia nzuri. Hivyo JSON si Programu lugha kwa njia hiyo JavaScript ni. Ni tu nukuu kwa vitu yetu katika JavaScript. Naam. Watazamaji: Hivyo nini hasa [Inaudible] kukamilisha? HANNAH BLUMBERG: Ni kweli. Hivyo hii kweli haina chochote. Hii ni njia ya kupata. Hivyo hebu sema tulitaka mabadiliko idadi ya seti tatizo 9-8. Tunachofanya ni kufanya kitu kama CS50.psets = 8 ;. Yeah, swali kubwa. Hii ni tu kuonyesha syntax. Haina kweli kufanya kitu chochote muhimu. Maswali yoyote? Kusonga haki pamoja. Basi hebu tuangalie mfano wa jinsi ya haraka JavaScript kazi kwa sababu niliwaambia ni anafanya mambo yote haya ya baridi na inaruhusu sisi kurekebisha kurasa za mtandao. Hebu kweli kuona katika hatua. Hivyo kuchukua, kwa mfano, faili hili HTML. Na jambo nataka wewe kuzingatia ni tag hasa hili, ambayo ni kifungo, na kitambulisho search_button. Ni tu juu ya ukurasa. Hivyo sasa hebu angalia nini sisi kweli wanaweza kufanya. Naam, tuseme wakati wewe click kwamba kifungo, tunataka kufanya alert-- wewe clicked kifungo. Hebu angalia jinsi tunaweza kufanya hivyo. Hivyo window.onload-- hii si kitu kwamba wameweza kuona darasani, kwa hiyo Huwezi haja ya kujua kwa jaribio. Lakini hii kimsingi anasema, sawa, wito kazi hii wakati dirisha mizigo. Hivyo hiyo ni aina tu ya kuanzisha kanuni. Msiwe na wasiwasi sana kuhusu hilo. Nini nataka wewe kuzingatia ni katika hapa. Tunasema var searchButton sawa na document.getElementByID search_button. Hivyo kama unaweza nadhani, nini hii haina ni inasema, OK, kwenda kupata kipengele pamoja ID search_button. Na sasa tuna kuwa halisi kipengele na mimi nina kwenda kuhifadhi katika kutofautiana searchButton. Na sasa tunaweza kweli matumizi ya kwamba kipengele na mabadiliko hayo, au kupata maadili yake, mambo kama hayo. Tunaweza kweli kuanza kujihusisha na mtandao. Hivyo hapa nasema, sawa, sasa kwamba nina kuwa kifungo, wakati ni clicked, piga kazi hii bila majina. Hivyo hii ni mahali ambapo bila majina kazi kuwa na manufaa. Na je kazi nini? Naam, ni tu wito huu kazi macho na inasema, wewe clicked Search kifungo. Hivyo nini kitatokea kama mimi kwenda popote HTML huu anaishi na mimi bonyeza kifungo, Mimi itabidi kupata tahadhari dhana kidogo kwamba anasema wewe clicked kifungo. Hivyo mambo kwa kuzingatia here-- document.getElementByID anapata HTML fulani kipengele na kitambulisho huo. Na sasa tunaweza kuweka kile lazima kutokea wakati kwamba kipengele fulani ni clicked. Watazamaji: Tuna kuweka yote ya kwamba katika? HANNAH BLUMBERG: Sorry? Watazamaji: Je, tuna kanuni kimwili yote hayo? HANNAH BLUMBERG: Je, tuna kanuni kimwili yote hayo? Ndiyo. Si aina hii ya annoying? Hii ni mengi ya kificho. Watazamaji: Unaweza kuagiza kitu fulani. HANNAH BLUMBERG: Haki. Tunaweza kutumia kitu fulani. Na katika particular-- loo, ni kuniambia nina kufundisha sehemu. Hasa, hebu kutumia maktaba jQuery, kwa sababu hiyo ilikuwa kweli muda mrefu na kweli annoying na mimi nataka kuwa na uwezo wa kurahisisha hilo na kufanya hivyo mfupi na rahisi kuandika. Hivyo jQuery ni maktaba JavaScript. Hivyo JavaScript ni programu lugha; jQuery ni maktaba. Na inafanya rundo la vitu rahisi zaidi. Inafanya kubadilisha na kwenda katika kiasi HTML hati rahisi zaidi. Inafanya utunzaji matukio rahisi zaidi. Inafanya uhuishaji rahisi na inafanya Ajax rahisi zaidi. Basi hebu kuruka ndani wawili wa mambo hayo hivi sasa. Samahani. Kabla ya kufanya, baadhi syntax ya msingi. Hii ni nini zaidi wito kwa maktaba jQuery kuangalia kama. Sisi kutumia dola hii sign-- hakuna dalili uhusiano na PHP, tu inconvenient-- jina la selector, dot, na kisha hatua. Basi hebu angalia baadhi mifano halisi ya jambo hilo. Hivyo hii kweli ni sawa kificho kutokana na tukio slide. Hivyo hii kwa muda mrefu, mbaya kitu inakuwa hii nicer, ndogo jambo. Basi hebu jaribu kuvunja hii chini. Hii inasema, sawa, jQuery-- dola hii sign-- jQuery, kupata mimi dirisha. Hivyo hiyo ni selector. Wakati ni mizigo, piga kazi hii. Hivyo hiyo ni kila kitu ndani. SAWA. Hadi sasa, hivyo nzuri? Sawa. Sasa, jQuery, kupata mimi Jambo na kitambulisho search_button. Na nini ni clicked, piga kazi hii. Na kisha hii kazi ya sawa. Tu kufanya kidogo ya tahadhari, wewe clicked Search kifungo. Hivyo ni kweli ni nzuri. Ni kweli unabadilika na simplifies kanuni zetu. Jinsi gani mimi kujua kwamba ni ID search_button na si kama darasa search_button? Watazamaji: Hashtag? HANNAH BLUMBERG: Naam. Alama hii hash, ni tu kama CSS. Basi kumbuka, na CSS, wakati sisi alitaka kuchagua kitu na kitambulisho, tulikuwa chupa ishara. Na wakati sisi alitaka kuchagua kitu na darasa, sisi kutumia dot. Kubwa. Mantiki? Hivyo jQuery zinatakiwa tu kufanya maisha yetu rahisi. Naam. Watazamaji: Hivyo mimi nina kuchanganyikiwa kidogo kama kwa jinsi kazi bila majina kazi. Je, wewe jina anonymouse hii kazi, kazi? Jinsi ni wito? HANNAH BLUMBERG: Ni kweli. Hivyo kazi ni tu Keyword kwamba anasema, mimi nina kuhusu kufafanua kazi. Watazamaji: Oh, Sawa. HANNAH BLUMBERG: OK? Na kisha sisi kupita kama Hoja to-- hebu kuchukua one-- hii ndani ya click kazi. Hivyo yeah, hivyo kazi hiyo, kazi hii bila majina, inakuwa hoja halisi. Basi kumbuka katika JavaScript, sisi unaweza kutibu kazi kama maadili. Watazamaji: Oh, Sawa. HANNAH BLUMBERG: Naam. Mimi kama kwamba "loo." Nzuri. Maswali mengine? Muda? MARIA ZLATKOVA: Good. Nzuri. HANNAH BLUMBERG: Ajabu. Baadhi ya haraka na manufaa jQuery. Mimi si kwenda kupitia yote haya. Slides hizi itakuwa up online kidogo baadaye, hivyo unaweza kuangalia nje kidogo ya baadaye. Lakini kimsingi, kwa ujumla mfano ana ambapo tunasema, OK, hey, jQuery, hapa ni yangu selector na kisha hapa ni utekelezaji. Na unaweza kufanya mambo kama upatikanaji thamani ya fomu, kupata baadhi HTML, kudhibiti kile kinachotokea wakati mtumiaji elekeza fomu, mambo kama hayo. Ndiyo. Watazamaji: Hivyo katika mtihani, sisi ni kwenda haja kujua mengi kabisa kutoka jQuery nyaraka. Hivyo kutokana na kwamba sisi nakala / kuweka jQuery nyaraka na kudanganya karatasi yetu, ambapo ni mstari inayotolewa? Kama wangapi tunahitaji kujua? HANNAH BLUMBERG: Mkuu swali. Swali ni kimsingi kutokana na kwamba wewe hawawezi kupata nyaraka jQuery wakati wa mtihani, ni kiasi gani lazima wewe kujua? Sisi bila kutarajia wewe kuja na baadhi ya kazi random kwamba tunataka wanatarajia Google. Mambo ambayo ni haki mchezo ni napenda kusema tu aina ya syntax ujumla, kuwa na uwezo wa kuchagua na ID na na class-- hivyo tu kama CSS. Na kisha kazi halisi themself, tutaweza uwezekano kukuambia. Naam. Watazamaji: Hivyo wakati wewe kuchagua na darasa itakuwa na maana nukta. HANNAH BLUMBERG: Ndiyo, hasa. Nzuri. Wakati kuchagua na darasa, ni kwenda kuwa dot badala ya chupa ishara. Ndiyo. Watazamaji: Je, wewe kwenda juu tofauti kati ya kuchagua na ID na kwa tabaka la? HANNAH BLUMBERG: Ni kweli. Tofauti kati ya kuchagua ID na kuchagua na darasa. Hivyo kama Maria alisema kidogo mapema, kuna inaweza tu kuwa moja HTML kipengele pamoja ID kupewa, ambapo darasani, inaruhusu sisi kundi kundi mambo ya tofauti pamoja, hivyo mambo ambayo ni kuhusiana, lakini si sawa. Je, hiyo kujibu swali? Kutisha. Ndiyo. Watazamaji: Je, kama una nyingi mambo ambayo ni katika darasa moja? HANNAH BLUMBERG: Nini kinatokea kama una mambo mbalimbali kwamba ni darasa moja? Hivyo, kwa mfano, kama sisi ni kutumia safi tu JavaScript, tunataka kufanya kitu kama document.getElementsByClass. Na kisha nini kwamba kweli haina ni faida safu ya vipengele. Na una ama iterate juu ya yao au kupata ambayo moja unataka. Ni si kwenda kutoa wewe kipengele moja. Ni kwenda kukupa safu ya vipengele. Mkuu swali. Kitu kingine? Kutisha. Hivyo nadhani kama wewe ni ukoo na yoyote jQuery wewe aliona katika pset, unapaswa kuwa vizuri kwenda. Swali? Oh, hakuna. Mimi kwa kweli kuwa na kufundisha. Kupumzika. Ni utakuwa faini. Mimi itabidi kupata huko. Hebu majadiliano juu ya Ajax. Hivyo Ajax ni kwenda kuwa a-- vizuri, hebu kuanza na kile anasimama kwa. Ni kifupi. Ni anasimama kwa Asynchronous JavaScript na XML. Na XML ni kimsingi ni kwenda kuwa [Inaudible] kwa aina ya takwimu zetu. Lakini sisi si kweli kutumika XML. Badala yake, sisi tu kutumia JSON. Hivyo kimsingi, ni baadhi data-- Asynchronous, JavaScript, na data, katika kesi hiyo, JSON. Na lengo letu, kama sisi zilizotajwa kidogo mapema, ni kuwa na uwezo wa kufanya ombi, kuwa ombi hilo kufanya Jambo wake katika nyuma, lakini kuendelea kufanya lolote tulikuwa na madhumuni ya kufanya. Na kisha wakati habari ambazo ni tayari, basi tutaweza kuingiza. Basi hebu angalia nini hii kweli inaonekana kama. Na hii, unapaswa kuwa kidogo ukoo kutoka pset8, moja tu akageuka katika. Hivyo hapa ni jQuery halali kazi ili tupate wanataka kujua about-- ishara hii dola. Hivyo anasema jQuery kazi, .getJson. Na nini kazi hii haina ni inachukua URL na baadhi parameters-- hivyo nadhani katika kesi ya pset8, ilikuwa ni kama, URL ilikuwa articles.php na vigezo alikuwa kwenda = baadhi ya kanuni za posta. Na inasema, sawa, kufanya ombi kwa URL hii na vigezo fulani. Na kwamba hutokea tu. Wakati kukamilisha kufanya, ni ama kwenda kwa mafanikio kamili au ni kwenda kushindwa. Hivyo hii ni sawa na wito Rob na kumuuliza kufanya kitu fulani. Na kisha wakati yeye wito nyuma, yeye ni ama kwenda kusema mimi nina kufanyika au nilishindwa. Hivyo katika kesi ambapo uko kufanyika, unaweza kusema, OK, mimi nina kufanyika. Na kisha wewe piga kazi hii. Katika kesi hiyo, ni kwenda kuwa kazi ambayo inachukua baadhi ya habari. Moja sisi kwa kawaida huduma ya juu ni data, data kwamba tulikuwa kweli akarudi kutokana na wito .getJSON. Na unaweza kufanya kitu kwa hayo. Hivyo katika kesi ya pset8, sisi kuonyeshwa kama orodha. Tahadhari ni kwenda kuwa kazi kiitwacho kama ombi inashindwa kwa sababu yoyote. Na katika kesi ya pset8, sisi tu console.log yake. Maswali yoyote juu ya hilo? Naam. Watazamaji: Je, sisi tu kutumia kazi theta badala ya kazi, textStatus, jqHXR. HANNAH BLUMBERG: Ni kweli. Hivyo yeah, nadhani katika pset, sisi tu kuona kazi data. Hivyo ni the-- tu ndiyo, sawa. Hiyo ni nini tuliona katika pset. Hiyo ni kabisa faini. Hizi ni baadhi tu kama alitaka kujiondoa habari zaidi, haya ni mambo ambayo unaweza kupata kutoka .getJSON. Nzuri swali. Kitu kingine? Naam. Watazamaji: Hivyo .getJSON ni Ajax? HANNAH BLUMBERG: Sawa. Hivyo hii ni aina ya gumu sehemu. Ni kazi jQuery ambayo inaruhusu ufanye wito Asynchronous. Na simu hizo Asynchronous, hiyo ni nini tumekuwa akimaanisha kama Ajax. Naam. Kwamba alichukua yangu kweli kwa muda mrefu kwa kuvuta mbali nilipokuwa mwanafunzi. Watazamaji: Je, unaweza kusema kwamba tena? HANNAH BLUMBERG: Naam. Naweza kusema kwamba tena? Hii kazi .getJSON, ni kazi jQuery. Na itakuja kufanya wito Asynchronous. Na simu hizi Asynchronous, tumekuwa wamekuwa akimaanisha wale kama Ajax. Yoyote maswali mengine? Tuna tu dakika kadhaa wa kushoto. Na Maria kwenda kufuta na usalama na kisha tunakwenda kuwa tu kuhusu kosa. MARIA ZLATKOVA: Ajabu, sawa. Hivyo hii is-- tu kuchukua michache hilo la sekunde ya kuangalia juu ya hili. Na hii si kitu kubwa kweli kweli. Na unaweza mtu kuniambia kwa nini? Ni nini kinachoendelea katika foo na inaweza naweza uwezekano wa kusababisha jambo baya, na kile kwamba wito? Naam. Watazamaji: Kama hoja hiyo ni kupita katika ni wahusika zaidi ya 12, inaweza kufurika. MARIA ZLATKOVA: Haki. Kamilifu. Je, ni kwa aitwaye? Wewe tu zilizotajwa yake. Watazamaji: Buffer kufurika. MARIA ZLATKOVA: Yup, buffer kufurika. Hivyo hii ni kitu ambacho sisi rejea kama buffer kufurika. Na tunaona kwamba ndani ya foo, tumekuwa defined buffer yetu, c, na ukubwa wa 12. Hata hivyo, katika kuu, hatufanyi kuangalia kwa njia yoyote wakati wote iwapo argv1-- ili hizo ndizo hoja ya pili. Hatuna kuangalia kama ukubwa wa ni sahihi. Hivyo kama tulikuwa na user hasa kwa makusudi wanaoweka katika baadhi hoja kuwa alikuwa muda mrefu zaidi ya 12, na kisha uwezekano mipaka ya kwamba hoja, alikuwa na baadhi kificho kutekelezwa kwamba alikuwa anajaribu kufanya kitu mbaya nayo; basi hii, nini kitatokea, ingekuwa kupuuza kurudi pepe ya foo kazi, kusababisha kazi kwa wakati kurudi kutekeleza kwamba kanuni. Na kisha mambo mabaya inaweza kutokea. Je, hii maana kufanya kila mtu? Na tunawezaje kujikinga na hili? Mapendekezo yoyote? Kimsingi, ndani ya uwezekano wa foo, jinsi Tunaweza kuangalia kuhakikisha kuwa kwamba haiwezi kutokea? Watazamaji: Kama kawaida 12 ni ulizidi, ungependa kutenga kumbukumbu za ziada? MARIA ZLATKOVA: Pendekezo ni, kutenga kumbukumbu ya ziada ya ukubwa ilizidi. Kwa kweli, tunaweza kufanya kitu a rahisi sana kuliko kuwa vilevile. Tunaweza tu kupata urefu wa kamba ya hoja kwamba ni aliingia, kuangalia kama kwamba ni chini kuliko au sawa na 12-- ambayo ni nini tunataka kuwa kwa sababu hatutaki ni kuzidi mipaka ya buffer yetu. Na kisha kama hana, sisi wanaweza kufanya kazi na hoja. Na kisha kama itakuwa hivyo, sisi kweli wanataka kwa Yello uwezekano katika user. Lakini hii ni jinsi gani tunataka kufanya hivyo. Ndiyo. Watazamaji: Je wewe kueleza memcpy halisi haraka? MARIA ZLATKOVA: Oh, pole. Ndiyo. Memcpy inachukua chochote is-- pole, sawa. Memcpy inachukua vilivyomo katika bar, chochote ni kupita kwenye foo kama hoja mstari amri. Hivyo ni kwenda kuchukua argv1. Argv1 inaitwa bar hapa. Hivyo ni kwenda kuchukua bar na itakuja nakala yake ndani ya c. Watazamaji: Sawa. MARIA ZLATKOVA: Na itakuja copy-- Hoja ya tatu tu inahusu kwa kiasi gani ni kwenda nakala katika c. Watazamaji: Ah. Hivyo hii moja ya kuiga wote wa basi. MARIA ZLATKOVA: Yeah, ni kuiga yote. Yep. Kwanza, sisi kuhakikisha bar si sawa kwa null sababu ni pointer. Kisha sisi kupata urefu wa kamba bar. Sisi kuhakikisha kwamba ni chini ya au sawa hadi 12. Na kisha kwa sababu tumekuwa alihakikisha, tunaweza kweli memcpy na kuwa na uhakika kwamba hiyo ni sawa. Maswali yoyote? Kubwa. Nina maswali mawili kweli au uongo. Yeyote anaweza kuniambia mara moja kama hizi ni kweli au uongo? Ndiyo, ni uongo. Hasa. Wote wawili ni uongo. Hivyo kwa kutumia password moja ni wazo nzuri kwa kweli kamwe kwa sababu kama mtu anajua password yako, wanaweza tu kupata akaunti yako mengine yote. Na kisha icons kufanya lolote kuhakikisha usalama. Tunapaswa kawaida kuangalia kwa HTTPS badala ya HTTP na URL. Na aina nyingine ya mashambulizi kwamba tumekuwa zilizotajwa, Daudi ametaja katika hotuba, mashambulizi SQL sindano. Sisi tayari kuona kwamba kama sisi do not CS50 swala kazi anahakikisha kuwa SQL mashambulizi sindano haiwezi kutokea. Lakini kama sisi si kutumia CS50, quote, unquote "katika swala," tunataka kuwa ili kuhakikisha kuwa pembejeo mtumiaji si kweli baadhi SQL swala ambayo kusababisha zote meza yetu kuwa imeshuka au kitu mbaya kwa kutokea kwa database yetu. Kikao cha utekaji nyara ni aina nyingine ya shambulio kwamba kinachotokea wakati baadhi mbaya mtu anatumia kikao baadhi mhasiriwa ID ya kupata habari kuingia. Hivyo mfano yasiyo na maana sana ya kwamba ni kama kama tuna kompyuta ya umma, kisha mtu mbaya magogo katika na kisha wana kuki kwamba ni kuokolewa. Na kuki wala mabadiliko kwa kikao. Kisha sisi kuwa muathirika kwenda katika na kisha kuingia katika tovuti. Kuki wala mabadiliko kwa ajili ya kikao fulani. Na kisha muathirika magogo katika tovuti na kisha majani. Na kisha mtu ambaye huenda nyuma Basi unaweza bado kutumia ID yao kikao kupata taarifa zao. Hivyo hiyo ni mfano mmoja wa jinsi ambayo inaweza kutokea. Na kisha napenda wasiwasi sana kuhusu kificho maalum au chochote kama kwamba ambayo inaweza kusababisha hii, lakini kuwa na aina fulani ya wazo nini vigezo kushiriki katika hii ni. Na kisha kufanyia kichwa data ni aina nyingine ya shambulio ambayo ina Daudi kuongelea. Na ni haki inahusu nini kinaweza kutokea wakati majibu, HTTP majibu ndani ya kichwa yetu si sanitized vizuri. Na yeyote kati fields-- kwa mfano, kama mtu overwrites moja ya kichwa maadili vyenye chochote zaidi ya nini wanapaswa contain-- na kwa kweli vyenye Kwa mfano, 200 OK hali kificho, basi wao inaweza uwezekano wa kufanya kwa makusudi mambo wakati wao ni hawatakiwi. Lakini napenda kuwa na wasiwasi sana mengi kuhusu kificho maalum ambayo inaweza kusababisha hii, tu aina ya uelewa ngazi ya juu mambo kama hayo. Nadhani hii yote ni kwamba tuna ili kufidia. Ajabu. Mtu yeyote una maswali yoyote juu ya yoyote ya mambo ambayo sisi kufunikwa? Ndiyo. Watazamaji: Hivyo aina moja ya zaidi vifaa swali. Ni bidhaa hasa ililenga juu ya mambo baada ya jaribio 1? MARIA ZLATKOVA: Kwa hiyo Swali ni kwamba, ni maudhui mkazo zaidi juu ya mambo baada ya jaribio 1? Hivyo lengo ni juu baada ya Jaribio 1, isipokuwa kuwa tunahitaji kuzingatia mambo katika pset5 na mengi ya miundo data kwamba sisi mifuniko. Na hatuwezi kusema kwamba sisi Unaweza kupuuza chochote kabla kwamba kwa sababu hujenga juu yake pia. Hivyo kuzingatia kwamba, pamoja na pset5 nyenzo kama ikiwa ni pamoja na wanaohusishwa orodha, mwingi, foleni, na kila kitu Hana akaenda juu. HANNAH BLUMBERG: Haki. Naam, tulikwenda juu ya yote C mambo mwanzoni sana kwa haraka sana. Lakini kuhakikisha kufanya mapitio ya kwamba. Kurudi nyuma na kuangalia jaribio 0 mapitio. Wanandoa maelezo zaidi vifaa, tu wakati tuna mawazo yako. Sisi ni kwenda na masaa ya ofisi wote juu ya Jumatatu na Jumanne usiku. Wao wanaenda kuwa katika MD 119. Hii ni yote katika tovuti, hivyo kama huna kusikia, hakuna wasiwasi. MARIA ZLATKOVA: 8:30-11:00. HANNAH BLUMBERG: Yeah, 8:30-11:00. Tutaweza kuwa huko. Tutaweza kuwa kuna kujibu maswali. Ni pretty baridi na furaha. Nyie wanaweza kuuliza maswali yoyote kwamba una juu ya jaribio 1. Na jaribio 1 ni juu ya Jumatano, hivyo bahati nzuri. Kama una maswali yoyote, labda kuja kuzungumza na sisi hapa moja kwa moja. Baridi. Asante sana. MARIA ZLATKOVA: Asante sana, nyie. Watazamaji: Yay. [Makofi]