HANNAH Blumberg: Hæ allir. Við erum að fara að byrja bara nokkrar mínútur snemma þar sem við höfum allt fullt efnis að komast í gegnum. Ég er Hannah. Ég er TF. Maria er að fara að ganga til liðs okkur bara nokkrar mínútur. Hún kennir kafla rétt áður. Ég kenni kafla rétt eftir, þannig að við erum að fara að halda því til klukkutíma og hálfan. Svo eins og þú munt sjá hér, höfum við alveg nokkrar efni sem við þurfum að komast í gegnum, svo við munum vera að fara smá hratt. En ef á hverjum stað við að segja eitthvað of fljótt eða þú skilur ekki, ekki hika við að trufla með spurningum. Við viljum vera fær um að gera þetta endurskoða setu sem gagnlegt til ykkar allra og hægt er. Awesome. Svo skulum hoppa rétt með Sum efni sem við í raun mjög, mjög stuttlega fjallað fyrir quiz 0 í quiz 0 fundur. Svo að byrja með tengd listum. Svo bara vera viss um að þú hafa sumir grunnþekkingu um tengd listum og eru vel að gera sumir af the undirstöðu rekstur. Svo bara til að skoða, tengt Listarnir eru betri en fylki vegna þess að þeir geta vaxið mjög virk. Þannig að við höfum það mikið forskot. Við höfum séð þá notað í kjötkássa matskeið þegar við veit ekki nákvæmlega hversu margir það sem við erum að fara til að vilja til að setja inn gögn uppbygging okkar. Því miður höfum við stykki af tengda listanum allan minni, þannig að við munum ekki endilega að vera fær um að gera stöðugt tíma aðgang á hvaða þáttur í tengda listanum. Til þess að finna a Einkum þáttur, við að árétta allan leið frá upphafi. Svo hafa í huga að flest helstu aðgerðir eru omega af 1. Svo innskotið er bara að fara að taka 1. Eyða er að fara að taka n síðan vér að fara að finna það úr listanum. Og leita gæti tekið, í versta falli, n. Við getum ekki gert eitthvað eins og Tvíundarleit á tengda listanum þar sem við getum ekki bara handahófi hoppa til miðju. Cool. Awesome. A lítill hluti af stafla. Þetta, aftur, kom upp á spurningakeppni 0, svo þú ætti að vera frábær ánægð með það. En fyrir stafla, biðjum við þig að muna stafla af stæði. Og það er að fara að vera fyrst í, endast út. Þannig að við stafla hlutum upp í stafla, og þá ef við erum að reyna að taka eitthvað off-- sem við köllum pabbi burt sem stack-- komum burt the toppur. Og ef við viljum setja eitthvað í stafla, við köllum það að ýta. Svo það er alltaf að fara að vera að alast upp frá botni eins og stafla bakka. Awesome. Við höfum séð stafla framkvæmda bæði tengd listum og fylki. Ef þú ert að innleiða með fylki, þú vilt að ganga úr skugga um að halda utan um bæði stærð og getu. Svo stærð er að fara að vera núverandi Fjöldi hluta í stafla þinn, en getu er heildarfjöldi af hlutum sem þú getur geymt í stafla þinn. Cool. Mjög álíka, höfum við biðraðir. Í þessu tilviki, í stað þess að hugsa um stafla af stæði, hugsa um línu. Þetta er að fara að vera fyrst inn, fyrst út. Svo ef þú ert að undirbúa fyrir eitthvað í búð, við vonum að sá fyrsti í lína er að fara til að fá aðstoð fyrst. Í stað þess að segja ýta og skjóta eins og við gerum fyrir mánudaginn, við segjum bara enqueue og dequeue. Og aftur, ef þú ert innleiða þetta með fjölda, við þurfum að halda utan sem er ekki aðeins á stærð og getu, en einnig yfirmaður, sem er að fara að vera framan á biðröð okkar. Cool. Einhverjar spurningar um eitthvað af því? Awesome. Flytja rétt eftir. OK, kjötkássa matskeið. Hér er þar sem það byrjar að fá mjög áhugavert. Svo er kjötkássa borð eitt framkvæmd á tengin array. Svo í rauninni hvað gerðist er að við höfum allt þetta inntak, og við gefum það til kjötkássa virka sem segir, OK, þetta er þar í kjötkássa borð það tilheyrir. Svo einföldustu kjötkássa virka sem við höfum séð er bara að segja, OK, býst við viljum að setja strengir í kjötkássa töflunni okkar. Og mjög einföld hugmynd gæti verið að segja, OK, skulum raða bara með fyrsti stafur orðsins. Svo er hægt að sjá hér, taka við banana, við að setja það í gegnum kjötkássa virka, og það segir, hey, sem ætti að fara á vísitölu 1. Svo við getum í raun hugsa um kjötkássa borð og fullt af mismunandi fötunum. Og hver af þeim fötunum er að fara að halda höfuð tengda listanum. Og í því tengda listanum er þar sem við getum setti reyndar mismunandi stykki af gögn. Svo köfun svolítið meira í kjötkássa virka, hér er dæmi ég bara lýst þar sem við segjum bara, OK, taka fyrsta stafinn orðsins og við erum fara að flokka það í fötunum. Svo væntanlega, það verður 26 fötunum, einn fyrir hvern staf í stafrófinu. Hvers vegna er þetta ekki mikill kjötkássa virka? Hvað gerir þetta ekki tilvalið? Já. Áhorfendur: Þú ert að fara að hafa árekstra. HANNAH Blumberg: Já, einmitt. Þú ert að fara að hafa árekstra. Svo er það eitt. Og við munum tala um hvernig við getum festa árekstra á aðeins sekúndu. Annað vandamál með þetta einkum kjötkássa virka er að mismunandi okkar fötunum eru að fara að vera af nokkuð harkalegur mismunandi stærðum. Við vitum að það er allt fullt fleiri orð sem byrja á A en X, þannig að við erum að fara að hafa mjög ójafnvægi fötunum í kjötkássa töflunni okkar. Cool. Svo já, við skulum fara aftur til að benda á árekstrum. Hvað gerum við ef það er árekstur? Við höfum nokkrar mismunandi valkosti. Svo einn, svo býst við erum að reyna að setja Berry í kjötkássa töflunni okkar. Og við sjáum, ó, við viljum að setja það í skránni 1., en banani býr nú þegar. Hvað erum við að fara að gera? Við höfum tvo megin valkosti. Númer eitt er að við getum sagt, OK, það er ekkert pláss í skránni 1., en við skulum halda bara að horfa í gegnum þangað til við getum fundið annan opinn stað. Þannig að við munum segja, OK, skulum setja það í stað 3. Það er einn kostur. Það er kallað línuleg leit. Og Seinni valkosturinn er að segja, OK, vel, við skulum bara gera öllum þessum fötunum vera forstöðumenn tengd listum. Og það er allt í lagi ef það er meira en eitt í fötu. Við erum bara að fara að auka það á framan. Svo hér er hægt að sjá, OK, þegar við settum Berry, við bara tók banani, eins konar ýtti á smá og kastaði Berry þar. Og það er líka alveg í lagi. Þetta er kallað sérstakt chaining. Þú getur hugsað þetta eins konar eins An array af höfuð að tengjast listum. Einhverjar spurningar um kjötkássa töflur, kjötkássa virka? Awesome. Tré og reynir. Svo er tré hvers konar af gögn uppbygging þar sem það er einhvers konar stigveldi eða einhvers konar af röðun á mismunandi hlutum þínum. Og þetta mun verða frábær ljóst þegar við sjáum dæmi. Og við sáum tilraunir, ásamt með kjötkássa matskeið, í pset5-- sem, aftur, algerlega sanngjarn leikur fyrir þetta quiz-- sem annar gögnum mannvirki sem við getum geyma mismunandi hluti. Þegar um er að ræða orðabókinni, við geymt fullt af orðum. Svo skulum taka a líta á sumir tré. Svo er þetta dæmi um tré. Það er eins konar uppbyggingu, að valdakerfi, þar sem þú getur séð að þetta 1 hnút efst hefur einhverskonar stöðu ofan 2 og 3, sem eru yfir 4, 5, og 6 og 7, sem eru yfir 8 og 9. Svo það er allt átt við með tré, svo þú getur bara góður af mynd þetta í höfuðið. Nú höfum við nokkra sérhæfðari tré. Svo er eitt dæmi tvöfaldur tré. Og tvöfaldur tré er, aftur, bara að fara að vera gögn uppbygging með einhverskonar stigveldi, en hver hnúður Hægt er að hafa á flestum tvö börn. Það er þar sem hugtakið tvöfaldur kemur frá. Svo er þetta dæmi um tvöfaldur tré. Svo er það minni flokkur trjám. Nú skulum fá enn nákvæmari og tala um tvöfaldur trees-- tvöfaldur leit tré, frekar. Svo hér hugmyndin er ekki eini hjartarskinn hver hnútur hefur í mesta lagi tveimur börnum, en öll börn til vinstri eru að fara að vera minni og öll börnin til að rétt er að fara að vera stærri. Svo eftir á aðeins okkar tvöfaldur tré, það er engin tengsl á milli talnanna. En í tvöfaldur leit okkar tré, sem við sjáum, OK, hér er 44. Og sérhver tala vinstra megin við 44 er minni og allt til hægri er stærri. Og það heldur á hverjum stigi trénu. Svo hér, þetta er minni en 22 og þetta er stærri en 22. Og það er tvöfaldur leita tré. Hvers vegna eigum við held að það heitir tvíleitartré? Hvað reiknirit er það minna þig á? Áhorfendur: Binary leit. HANNAH Blumberg: Binary leit. Vegna þess að ef þú ert að leita að Einkum tala í þessu tré, á hverjum stað, getur þú bara högg burt helmingur af því tré, sem er frábært. Og svo það er að fara að gefa okkur eitthvað sem lítur mikið eins og tvöfaldur leit. Einhverjar spurningar? Allt í lagi, flott. Allt í lagi, reynir. Hvers manns hugljúfi. Þannig að þetta er dæmi sem við höfum séð fullt í bekknum. Og aftur, þetta er bara annað þannig að við getum geymt gögn. Þegar um er að ræða orðabókinni, aftur, þetta er bara að fara að vera strengi. Svo skulum sjá hvað þetta raunverulega lítur út eins og á aðeins lægra stigi. Svo skulum taka a líta á einum hnút í Trie. Og við sjáum, OK, það er að fara að vera Boolean og hnút, bendi á hnút. Og við sjáum að Boolean heitir is_word. Svo í raun, það er að fara að svara þessum litlu þríhyrninga sem segir, ef þú hefur fengið hér, þú hefur fundið fullkomið orð. Við vitum að "Turing" yfir hér er heill orð, en bara T-U-R er ekki orð vegna þess að við sjáum ekki þessi litla delta. Og að lítið Delta, aftur, samsvarar þetta is_word, þetta Boolean is_word. Og þá höfum við fjölda barna. Svo á hverju stigi, þú hafa ákveðna hnút, og hnút stig til að array af öllu stafrófinu. Svo þú sérð, aftur, í þessum picture-- ég fara að halda stökk aftur og forth-- sem að array efst hefur fullt af mismunandi hnúður koma burt af því. Það hefur 26 eða 27 ef þú vilt að fela auka staf. Og þetta gefur okkur leið til að geyma gögn okkar á þann hátt sem hægt er að leit á að þú getur litið upp frábær fljótur. Hvað er útlit tími fyrir Trie? Áhorfendur: [inaudible]. HANNAH Blumberg: Já. Í orði, það er stöðug tími. Það er bara að fara að vera á stærð við orðið sem þú vilt að fletta upp. Jafnvel ef við bæta zillion fleiri orð til Trie okkar, það er ekki að fara að taka okkur lengur til að ákvarða Ef tiltekið orð er í Trie. Svo er það mjög gott. Áhorfendur: Vissir þú bara frumstilla að array? Þú misstir punkt eða tvær. Getur þú talað bara um sem eitt augnablik? HANNAH Blumberg: Jú, alveg. Góð spurning. Spurningin var, við hafa array sem er fara að hafa hnút stjörnuna sem öfugt við bara hnút, ekki satt? Cool. Svo hér það sem við erum að segja er array okkar er bara að fara að vera ábendingum til annarra fylki. Svo það er essentially-- það konar líður eins og tengda listanum með þessum hætti þar sem hver af þessum börnum bara benda á næsta hnút. Og hvernig sem við reyndar ákveða, hey, OK, við höfum ítrekað í gegnum heilt orð, er þetta orð í orðabókinni, við athugum bara þessa is_word. Frábær spurning. Já. Áhorfendur: OK. Svo það var afturkreistingur fyrir Trie? HANNAH Blumberg: Jú. Svo afturkreistingur fyrir Trie fyrir uppflettingu er að fara að vera stöðug tími. Svo það er bara að fara að vera fjöldi bréfa í orðinu. Það er ekki háð Stærð orðabókina eða stærð gögn uppbygging. Svo hér er örlítið einfaldari dæmi. Í þessu tilfelli, þú getur séð að orðið kylfa er í orðabókinni og þú hefur zoom, en þú hefur ekki eitthvað eins dýragarðinum. Hvernig myndum við gera dýragarðinum? Hvernig eigum við að bæta dýragarðinum til okkar orðabók, til Trie okkar? Já. Áhorfendur: Gerðu is_word satt fyrir [inaudible]. HANNAH Blumberg: Good. Svo við myndum segja Z-O-O, og þá við myndum langar að skrá sig á kassann eins og heilbrigður. Great. Við skulum bera saman mjög stuttlega reynir móti kjötkássa matskeið. Reynir eru mjög mikill vegna þess, eins og ég sagði, þeir veita stöðug skipti útlit. En mikið ókostur er þeir eru humongous. Þú getur fengið tilfinningu, jafnvel með því að horfa á það, að það er að fara að taka a gríðarstór magn af minni. Svo þeir eru að fara að vera mikið stærri en kjötkássa matskeið, en þeir eru að fara að gefa okkur mun hraðar útlit sinnum. Svo er það eins konar þinn tradeoff, hvað þér þykir vænt um, hvort sem það er að stjórna hraða eða minni. Einhverjar spurningar um eitthvað af því, allar C gögn uppbygging. Beautiful. OK. Við erum að fara að fara á smá hluti af þróun vefur með Maria. MARIA ZLATKOVA: Lovely. OK. HANNAH Blumberg: Þú getur notað fartölvuna mína. MARIA ZLATKOVA: Nice. OK, flott. Eins og við snúum okkur til vefur þróun, talaði við smá um að breyta aðgangsheimildum skráa og möppur svo að þeir geti verið aðgengileg til annarra notenda, að í heiminum, og svo að við getum séð hvernig grundvallaratriðum við getum miðla þeim þegar við að þróa hluti eins vefsíður sem við höfum aðallega verið að gera. Þannig að við sáum chmod skipunina, sem er breyting ham, í grundvallaratriðum. Það er Linux stjórn og það breytist heimildir af skrá kerfi hlutum. Og skrá kerfi mótmæla er bara skrá, skrá, eitthvað sem þú getur breyta heimildum. Svo til að sjá skrá heimildir, við slá skipunina LS, lista, -L. Og þegar við slá það, við yfirleitt sjá nokkur heimildir að líta svona eins og þetta framan nafn á möppu. Svo vísar d að skrá. Og þá höfum við þrjú triads sem í grundvallaratriðum vísa til aðgangsheimildum annaðhvort notandi, hópur, eða heimurinn. Tegundir af heimildum sem við getum hafa þessa þrjá hópa fólks eru ýmist r fyrir að lesa, w fyrir skrifa, og x fyrir framkvæma. Og við getum haft þá fyrir hópurinn og heimurinn eins og heilbrigður. The erfiður hlutur er að stundum þegar við slá chmod skipunina, við myndum slá sumir tala sem samanstóð af þremur bitum. Þannig að við gætum gert eins 777 og að í grundvallaratriðum vísað til virðisauka af öllum þessum triads vegna r myndi vísa til 4, W myndi vísa til 2, og X myndi vísa til 1, þannig að þegar því er bætt upp, hvert af númerum myndi koma niður að uppsöfnuð tala að uppsöfnuð gildi milli 0 og 7. Svo við gætum einnig hafa 0 fyrir ekki heimildir á öllum. Og sem myndi grundvallaratriðum gefa okkur heimildir fyrir annaðhvort notanda, hópurinn, eða heimurinn. Einhverjar spurningar um þetta svo langt? Áhorfendur: Þú sagði lesið var 4? MARIA ZLATKOVA: Já. Áhorfendur: [inaudible]. HANNAH Blumberg: Yup. Áhorfendur: Og svo með því að bæta öllum þeim aðrir mundu benda númer. MARIA ZLATKOVA: Já. Já. Þetta eru frábær spurningar. Lovely. Næst, stökk við í HTML og a aðeins meira um þróun á vefnum. Svo HTML þýðir bara HyperText Markup Language. Og það er Markup tungumál sem er staðlað sem það er notað til að búa til vefsíður. Það er kallað Markup Language vegna þess að það er í raun ekki saman. Það þýðir ekki að segja hvernig sumir númer ætti að framkvæma eða eitthvað svoleiðis. Það lýsir bara og lýsir því hvernig vefur síða ætti að vera sett upp við hvert rununni og hvernig þeir ættu að líta til notandans. Sumir af the HTML tags sem við fór yfir eru eftirfarandi. Öll HTML skjöl okkar byrjaði með DOCTYPE HTML. Þá höfum við alltaf HTML tag. Við höfum höfuð og líkama. Og það er mikilvægt að HTML er Þessi tegund af hreiður uppbygging vegna þess að það er mjög skýr. Og þá verður það mjög ljóst þegar við þarf að opna og í raun loka tags. Og við þurfum alltaf að loka merki sem við höfum opnað. Og hér höfum við sumir af the tegund af hlutum framundan sem við viljum hafa. Þannig að við höfum, til dæmis, titill CS50. Og þá erum við í raun getur tengt stílblað sem skilgreinir hvernig við stíl vefsíðuna okkar. Það er CSS. Við ætlum að fara yfir það í næstu glærum eins og heilbrigður. Í líkamanum, við setjum sumir flokkar og auðkenni. Og eins og áminning, aftur, Auðkenni eru einstök og námskeið geta verið úthlutað til marga hluti. Og það þýðir bara að við getum notað flokka og auðkenni innan hins structures-- svo, að dæmi, innan CSS skrár eða stíl sheets-- að vísa til ákveðinna þátta og í rauninni segja að við viljum að stíll eða hönnun sumir þáttur á einhvern ákveðinn hátt. Og við vísa til þeirra með Auðkenni þeirra og flokkum. Og við getum einnig átt við mismunandi hlutir eftir tags eins og heilbrigður, en kenni og flokkar bara gefa okkur nokkrar fjölhæfni og hvað sérstaklega við vilja til að vísa til. Svo bara dæmi. Við getum aftur innan CSS skrá þar sem við viljir tilgreina nokkrar style-- svo liti, letur, og efni eins that-- við getum skilgreina stíl fyrir aðila. Svo sem myndi skilgreina það fyrir allan líkamann merkinu. En þá getum við einnig að skilgreina stíl fyrir #title. Og aftur, hashtag átt við okkar ID og punktur vísar til bekknum. Síðan fyrir Upplýsa við Einnig er hægt að setja nokkrar eiginleika. Og aftur, þegar við förum til baka, við höfðum okkar flokkur sem kallast upplýsingar og ID titill okkar. Og við sjáum að við vísa þeim með #title og Upplýsa. Áhorfendur: Vilt þú segir kassamerki [? ættleiða mig? ?] MARIA ZLATKOVA miður? Áhorfendur: Vilt þú segir kassamerki [? ættleiða mig? ?] MARIA ZLATKOVA: Hashtag þýðir barnsins, svo #title er átt við hvað sem þætti hafa þetta auðkenni heitir titill. Og þá er átt punktur í flokki. Svo vísar Lesblinda þessari frumefni vegna þess að það hefur flokks vöru. Já. Áhorfendur: Hvers vegna heldur þú greina þær í HTML? Hvers vegna segir þú vissir hlutir eru Kenni og ákveðin atriði eru bekknum? MARIA ZLATKOVA: Það er bara allt að you-- HANNAH Blumberg: Endurtaka spurningu. MARIA ZLATKOVA: Ó, fyrirgefðu. Hvers vegna eigum við að greina ákveðna þætti eins auðkenni og önnur atriði sem flokka? Það er bara vegna þess að það er virkilega oft hönnun val. Það gefur þér mikið af fjölhæfni í að vera fær um að segja að ég vil þetta tiltekna atriði að hafa þetta auðkenni vegna þess að þeir vilja að gera a einhver fjöldi af hlutur með það, og ég bara vilja til að skilgreina stíl, ákveðinn stíl eða lit hvað fyrir þessi atriði. Og leiðin til að gera það er bara að gefa það kenni. Og þá ef ég vil hafa a par af mismunandi hlutum að hafa það, í stað þess að fara og setja their-- í stað þess að gera það með því að tag því tag myndi að stilla hólf til að sjá alla merkinu fyrir hvert skipti sem tag er notað, þú getur stillt bekknum að mörg atriði. Og þá bara fá aðgang að bekknum og segja Ég vil að stíll þessum flokki þannig. Og aftur, bekknum getur verið margar mismunandi hlutir og ID er að vera einstakt. Frábærir spurningar. Aðrar spurningar? OK, ógnvekjandi. Aftur, þetta er hvernig þessar selectors eru vísað í CSS, með hashtag, með punkti, eða án þess að nokkuð fyrir framselja stíl einhverjum tag, eins og líkami. Og hér höfum við almennt setningafræði hvernig þetta er gert. Að endurtaka sumir bestu leiðirnar til HTML og CSS, við þurfum að, aftur, loka öllum HTML tög sem við opinn. Og það sem við með þér gera lokaverkefni þínum, sem og CS50 fjármálaráðherra, er að gera tryggja að öll HTML í gildi. Og það er gert með w3 Staðfestir. Og þá hvað við gerðum og það sem við mælum gera er að aðgreina stíl, svo CSS frá Markup HTML. Svo eitthvað sem tengist hvernig síðu er að fara að sjónrænt líta og hvernig það er að fara að breyta ætti að fara í CSS skjal. Og þá sniðinu segja hvernig hlutirnir eru í tengslum við hvert annað er HTML, og sem ætti að fara inn HTML skjölum. Einhverjar spurningar? MHM. Áhorfendur: Hvað nákvæmlega er að gerast á með síðu löggilding þegar við erum að staðfesta HTML sem [inaudible] búin? MARIA ZLATKOVA: Svo what-- hugsa þig. Og hvað nákvæmlega er að fara á með síðu löggilding og hvers vegna þurfum við að gera það? Í grundvallaratriðum, við þurfum að gera það vegna þess að einhver fjöldi af sinnum, vafrinn þinn, ef þú lokar ekki merki eða eitthvað svoleiðis, Vafrinn þinn er enn að fara að bakið á síðu og gæti enn vinna, en það er best æfa sig til að ganga úr skugga um að þú hefur, aftur, lokað öllum tags þinn, að allir þættir eru á þann hátt að þeir ættu að vera, og í rauninni að það er komi samninga sem eru settar. Það er, aftur, bara hlutur sem þú ættir að læra að vera að gera, öfugt við að hafa sloppier kóða og svoleiðis. Já. Ó fyrirgefðu. Ég hélt að þú værir að hækka hönd þína. Áhorfendur: Nei, ég var bara [inaudible]. MARIA ZLATKOVA: OK. Áhorfendur: Þakka þér. MARIA ZLATKOVA: Auðvitað, þakka þér. Svo aftur, fara á í hvernig upplýsingar eru fluttar og samskipti módel til að flytja upplýsingar. TCP / IP. TCP þýðir bara Sending Control Protocol og IP er átt við Internet Protocol. Og það bara átt við hvernig gögn eru afhent. Ef við höfum nokkrar upplýsingar sem þarf að afhenda you-- svo þú leggja fram beiðni um tiltekinn miðlara. Til dæmis, þegar við reyna að komast cs50.net, við leggja fram beiðni til CS50 miðlara og við sjá að við viljum fá Þessi tegund af upplýsingum. Og þá eru byggðar á þessari aðferðarlýsingu fyrir hvernig þessar upplýsingar eru afhent, miðlara gefur upplýsingar aftur til okkar, viðskiptavinurinn. Og þá erum við fær um að sjá upplýsingar fyrir síðuna og þá nota það. Svo þá Hypertext Transfer Protocol er bara annað siðareglur eða setja af samningum sem skilgreinir hvernig vefur flettitæki og the vefur framreiðslumaður ætti samskipti. Og setja þetta allt saman, HTTP, aftur, bara skilgreinir hvernig þetta HyperText skilgreint af HTML sem við höfum verið að vinna það, hvernig það ætti að vera frelsari til þú og hvernig þessi gögn sem er skilað til þín fær til þín. Og þess vegna, ef þú krakkar muna frá bekknum, við höfðum mikið af beiðnum og við höfðum mikið af setningafræði fyrir þessar beiðnir sem við erum að fara yfir núna. Svo aftur, þegar við sendum beiðni til miðlara, við verðum að skilgreina nokkra hluti. Þannig að við þurfum að finna þá tegund af beiðni sem við erum að setja. Og aftur, höfum við, til dæmis, GET er ein tegund af aðferð sem við höfum í beiðni okkar. Og þá er HTTP / 1.1 bara siðareglur sem við erum að nota núna. Flest af þeim tíma, það er að fara að siðareglur sem við erum að nota. Þannig að ef þú ert með spurningu svona á spurningakeppni þína. Það er samninga sem við höfum hingað til. Sviga átt við hvers konar af hlutum sem við erum að biðja. Þá, gestgjafi okkar er, til dæmis, í þessu tilfelli erum við að reyna að fara á google.com. Svo er þetta gildi fyrir a gestgjafi. Þetta er tegund af beiðni sem hægt væri að senda. Og þá tegund af svörun sem gæti að senda aftur, byggt á þessari bókun, er aftur, HTTP / 1.1. Svo er það HTTP útgáfa aftur. 200 OK er bara staða kóða. Og það í lagi er bara setning byggt á þeim stöðukóðanum. Og þá Content-Type átt við þá tegund sem er skilað til þín sem er fyrir þá vefsíðu sem þú færð og að vafranum þínum geta gera eftirá. Og það er texti / HTML. Áhorfendur: Hvað 1,1 meina? MARIA ZLATKOVA: Það er bara útgáfa of-- ó, hvað þýðir 1,1 meina? Það er bara útgáfa, the HTTP útgáfa af siðareglur sem við erum að nota. Frábær spurning. Aðrar spurningar? Áhorfendur: Gætirðu summa upp Content-Type raunverulegur fljótur? MARIA ZLATKOVA: Svo að er það sem miðlara. tegund information-- hvað er efnisgerð var spurningarnar. Svo sem var gerð upplýsingar sem þú færð til baka frá þjóninum, tegund gögn sem vafrinn getur þá láta sem þú ert að nota. Áhorfendur: Er það sem þetta siðareglur er að segja þér að gera? MARIA ZLATKOVA miður? Áhorfendur: Er það sem siðareglur segja? MARIA ZLATKOVA: The protocol-- Áhorfendur: --what á Content-Type er eða what-- MARIA ZLATKOVA: The siðareglur er byggt on-- hvað er siðareglur segja þér? Það er bara þannig að þessum upplýsingum var afhent þér miðað á hvaða tegund af siðareglur voru þessar upplýsingar fékk skilað til þín. Er að skynsamleg konar? HANNAH Blumberg: Þú er að hugsa um siðareglur eins a-- ég held prófessor Malan lýsti í bekknum og svona eins a-- það er eins og jafnvirði manna handshaking. Segja, eins og, hey, ég er beiðni og ég vita hvernig á að höndla HTTP af útgáfa 1.1. Og þá þjóninn segir, ó, OK, I-- og bæði til. Ég veit líka hvernig á að takast á við HTTP / 1.1. Og ég ætla að gefa þú aftur að sumt efni. Í þessu tilfelli, það er að fara að vera af gerðinni text / html. Svo það er góður af bara leið af þeim fyrir communicating-- MARIA ZLATKOVA: Það er bara staðfestir að þú ert báðir fylgja sömu siðareglur og að bæði viðskiptavinur og server-- svo Vafrinn þinn og server-- konar veist hvað þú ert að tala um og hafa venju fyrir brottför í gögnum. Áhorfendur: Svo Content-Type part-- Content-Type texta / html-- það er sérstakt hluti af sömu skilaboðum? Eða er það hluti af skulum segja, 200? Er 200 segja þeim það eða is-- MARIA ZLATKOVA: 200 segir það fór allt í lagi. Og þá er efnisgerð konar a Sérstakur hluti af sömu skilaboðum, og segja það, sem ég Kominn hefur þessa tegund af texta / html. Það er bara að gefa meiri upplýsingar. Hafa nokkuð að bæta? OK. Aðrar spurningar um þetta? Awesome. Svo nokkrar aðrar HTTP stöður sem við gætum fengið til viðbótar við 200 lagi, þær sem við höfum séð kannski hugsanlega mikið eru 403 og 404. Svo 404, ef þú varst að reyna að Aðgangur eitthvað sem er ekki til. Svo til dæmis, í þinn CS50 Fjármál psets, ef þú hefðir verið að flutningur quote.html og þú ekki hafa þessi skrá, en í staðinn hafði quote.php, sem myndi leiða til 404 Not Found vegna þess að skráin gæti ekki til. Fyrir 403 bannað, að er átt við heimildir. Svo ef einhver skrá er ekki lesið heimurinn, þú might fá a 403 aftur. Sumir aðrir sem þú gætir get-- 301, færð varanlega; 302, Found; 304, Breytt; 400, Bad Request; og þá Innri Server Error fyrir 500 og 503, Þjónusta ekki tiltæk. Já. Áhorfendur: Mun við ráð fyrir að leggja á minnið alla þá stöður? MARIA ZLATKOVA: Ég hefði þá á svindlari lak. [Hlátur] Áhorfendur: Erum við gert ráð fyrir að vita hvað kallar hvern og einn? MARIA ZLATKOVA: Eru þeir? HANNAH Blumberg: Fyrir þær sem við höfum hlaupa into-- Svo spurningin was-- MARIA ZLATKOVA: Eru þeir ráð fyrir að vita hvað hver einn af þessum stöðu númer gæti komið af stað? Svo fyrir þau sem við höfum notað og hljóp inn, myndi ég segja, já. Þannig að við höfum ákveðið séð 200 OK og fyrirlestra það í psets. Við höfum séð 403, 404. Fyrir hinar? HANNAH Blumberg: Ég myndi segja 500 virðist sanngjarn leikur. MARIA ZLATKOVA: 500, já. HANNAH Blumberg: Já. Bara hafa almenna tilfinningu af því sem veldur þeim. Og líka bara af þessum nöfn, þú getur konar eins að menntuð giska hvað raunverulega olli þeim. Til dæmis, fara varanlega, sennilega skráin var flutt til frambúðar. Áhorfendur: En á fyrri próf, það var svo hvernig býstu okkur að svara því? HANNAH Blumberg: That var þess virði núll stig. Spurningin um 418 á katli er tæknilega a HTTP stöðu, en það var þess virði núll stig. Vitanlega, þú ert ekki gert ráð fyrir að vita þá. Áhorfendur: Er það raunverulegur einn? HANNAH Blumberg: Það er alvöru einn, en það þýðir ekki neitt. Það er bara brandari. Internet fólk er fyndið. MARIA ZLATKOVA: Great spurningar, krakkar. Aðrar spurningar? Áhorfendur: Hvað er innri framreiðslumaður villa? MARIA ZLATKOVA: Innri villa framreiðslumaður bara þýðir að þú hefur verið ófær um að miðla með þjóninum fyrir sumir ástæða. Svo það er ekki endilega eitthvað sem þarf að gera við viðskiptavininn eða eitthvað svoleiðis. Ég veit ekki af tiltekinni dæmis sem við höfum farið yfir til að útskýra, en já. HANNAH Blumberg: Jú. Svo til dæmis, eins og við skulum segja að þú varst að vinna á Mashup og Google miðlara fór niður fyrir suma Ástæðan, máttur outage, við skulum segja. Það myndi vera innri miðlara villa eða einhvers konar of-- like you myndi ekki fá svar til baka. MARIA ZLATKOVA: Já. Það er bara þegar þú ert ófær um að miðla með þjóninum fyrir sumir ástæða vegna af því að fara niður eða einhver önnur ástæða. Svo stökk inn í PHP. PHP, ólíkt HTML, er forritunarmál. Og við byrjuðum að nota það vegna þess að það er mjög gagnlegt fyrir vefur þróun. Við notuðum það fyrst í CS50 fjármál. Og það hjálpar í rauninni okkur koma saman þetta Markup, hönnun, og hvernig við notum í raun upplýsingar til að birta það á vefsíðu. Svo PHP sjálft þýðir PHP Hypertext Preprocessor, svo það er endurkvæma backnorym af sjálfu sér. Og opna merkin fyrir PHP við vinstri og hægri örvarnar með spurningarmerkjum og PHP. Þannig að við höfum þegar séð fullt af henni. Nú erum við bara að fara að fara yfir sumir af the atriði um það. Svo með PHP, breytunni nöfn byrja með dollaramerki. Við tilgreinir ekki, aftur, breytu tegund lengur. Rétt eins og við gerðum með C, við þurfum ekki að gera það. Við getum gert fullt af mismunandi efni með breytum. Við getum sett þá saman eftir concatenating þá með punktur merki, sem við gátum ekki gert í C aftur. Aftur höfum við aðeins meira fjölhæfni með PHP í skilmálar af breytum. Aftur höfum við ekki meginhlutverki. Og PHP er túlkað öfugt við saman, Svo bara hvernig við vildum gera fyrir C skrár, við þurfum ekki að gera það fyrir PHP. Heldur á þann hátt að tungumálinu er rekið af sjálfu sér, það er túlkað. Og þá lauslega slegið bara þýðir að við þarft ekki að tilgreina breytu tegund og breytilegum gerðir er skilið á afturkreistingur. Áhorfendur: En hvað gerði þig meina með punktur samtenging? MARIA ZLATKOVA: Jú. Þegar við viljum setja hlutina together-- þannig að ef við fengum breytu sem hafði verðmæti 3 og við höfðum annað breyta sem hafði gildi band, við gætum sett breyturnar saman með því að setja punkt á milli þeirra og concatenating þá. Eða við gætum búið til a breyta nefndi og setja það saman með concatenating tvo strengi. Svo ef við hefðum streng í tvöföldu vitna og við setja punkt eftir það, og þá höfðum annað band, sem myndi skapa band með öllu. Áhorfendur: OK. MARIA LETTLAND: Var að hreinsa? Áhorfendur: Já. MARIA ZLATKOVA: OK. Já. Áhorfendur: Þegar þú segir túlka frekar en saman, ertu að tala um þig ekki þurfa að vera eins nákvæm þegar það kemur að því að PHP móti C? MARIA ZLATKOVA: Þegar við segjum túlka öfugt við saman, hvað er átt við? Svo það þýðir að við þurfum ekki executable skrá til að keyra PHP. Það þýðir að það keyrir eins og það fer. Er að skynsamleg? A hluti. HANNAH Blumberg: Svo þú er að hugsa um túlk sem annað forrit sem er ábyrgur fyrir að fara línu fyrir línu í gegnum PHP og í raun framkvæmd það, öfugt að setja saman það allt niður í tvöfaldur. Það þýðir í raun ekki neitt um hvernig ákveðin við þurfum að vera. Við þurfum samt að vera nákvæmur, og gera ekki gleyma semíkommu þína, og ganga úr skugga um þú þarft dollara Skráðu, og svoleiðis. Góð spurning. MARIA ZLATKOVA: Já. Svo línu fyrir línu, sem öfugt við C skrár, við verðum að gera allt endanlega áður en við getum í raun að keyra það. Það er helsti munurinn. En aftur, við getum ekki raunverulega vera minna sérstakur. Svo fylki í PHP tákna í raun pantað kort. Svo fylki félagi gildi til lykla. Tvær leiðir til að lýsa array, byggt á þessari setningafræði, við getum verið skýr að segja að við höfum fjölda og við höfum þetta key1 að leyfa að þetta gildi1, key2 sem varpar VALUE2. Eða við getum bara búa til array sem inniheldur gildi sig og þá takkarnir eru skilið á þann hátt. Einhverjar spurningar um þetta? Áhorfendur: Hvað myndi takka að vera í öðrum td? 0, 1, 2, 3? MARIA ZLATKOVA: Til dæmis, það er bara takkarnir í þetta þurfa ekki endilega gera a mismunur. Þeir skilgreina bara hvernig þú getur nota gildi innan þess. Svo ef við hefðum framhandleggur lykkja í PHP sem myndi leyfa okkur að fara í gegnum allar gildum, við getum farið í gegnum allar gildum, jafnvel þótt við hefðum eða höfðu ekki skilgreint a sérstakur lykill í síðunnar fyrri setningafræði. Svo jafnvel með þessari tegund af fjölda, við gátum samt hafa framhandleggur lykkja sem fer í gegnum hvert gildanna í helstu í array. Svo setningafræði á framhandleggur lykkja, byrjum við með fjölda. Þetta $ Arr breyta er raunveruleg array okkar að við þær eru skilgreindar í eina skyggnu sem gildi sem bókstaflega fer í gegnum hvert af þeim gildum, án tillits til þess hvort við höfðum lykil eða ekki. Og þá getum við gert eitthvað með gildi inni í framhandleggur lykkja. Svo aftur, ef við hefðum fylki svona hér created-- þannig að við höfum lykil foo og verðmæti Bar, lykillinn af Baz og gildi qux-- við getum haft framhandleggur lykkja sem fer í gegnum array sem lykill gildi og síðan gera eitthvað með lyklinum og / eða verðmæti. En við gerum ekki endilega alltaf verða að fá framhandleggur lykkjur sem fer í gegnum array eins og lykill kort til að gildi. Við getum farið í gegnum framhandleggur lykkja array sem gildi. HANNAH Blumberg: Og ég held to-- var þinn spurning, hvað er fólgið vísitölu? Áhorfendur: Kinda. MARIA ZLATKOVA: Oh. HANNAH Blumberg: Já, já. Svo í rauninni, ef þú tilgreinir ekki lykill, það er að fara að vera 01. MARIA ZLATKOVA: Já. Rétt eins og með C, það er núll verðtryggð ef þú tilgreinir ekki lykil. Áhorfendur: Sorry. Gætirðu reynt að tala svolítið hávær? Ég ætla að hafa smá vandræði heyra allt. MARIA ZLATKOVA: Ég er svo leitt. Já auðvitað. Svo viltu mér til að fara yfir þetta aftur? Eða er this-- Áhorfendur: Svo á fyrri slide-- ef þú getur bara farið aftur í eina sekúndu. MARIA ZLATKOVA: Auðvitað, því miður. Áhorfendur: Svo annað array hér ekki virðast hafa gildi að slá, konar [? orsök. ?] MARIA ZLATKOVA: Hægri, hægri. Áhorfendur: Svo er að vinna hvernig þegar þú segir það er allt eða ekkert. Fyrir mér, sem lítur út eins og a [? foo?] þegar. MARIA ZLATKOVA: Já, já. Svo aftur, þetta er panta kort í þessum skilningi að það er skilið, til dæmis, Vísitölur Hér er hægt að skilja sem 0, 1, 2, 3. Aftur, það er að hafa þá Vísitölur jafngildir okkar af því að hafa lykla varpað á gildi. Svo ef lykill okkar var 0-- miður. HANNAH Blumberg: Nei, það er Kalksteinn upp hér. Það er reyndar mjög gott. MARIA ZLATKOVA: Það er frábært. OK. Svo aftur, $ Arr 0 væri lykillinn að verðmæti 1. 0 væri lykillinn að verðmæti 1. Áhorfendur: Fyrirgefðu. Það er ósýnileg. HANNAH Blumberg: Allt í lagi, Nevermind. Chalk var slæm hugmynd. Ég tek það til baka. Þú getur hugsað lyklunum sem 0 kortum til verðmæti 1. MARIA ZLATKOVA: Já. Svo er þetta 0, þetta er 1, 2, 3. Þetta getur verið lyklana. Þú getur hugsa um þau as-- já. Svo í stað þess að þurfa skýr takkana, þeir konar Litið Vísitölur byrja á 0. The krít ekki hjálpa. Já. Áhorfendur: Fyrir framhandleggur lykkja, ef við vildum skoða sem gildi, það myndi bara sjálfkrafa vísitölu til 0? MARIA ZLATKOVA: Já. Það myndi fara í gegnum hvert af þeim gildum. Áhorfendur: [inaudible] sem 0 eða myndi það bara gera 0? MARIA ZLATKOVA: Þú þyrftir að segja sem dollaramerki og þá sumir breyta heiti, gildi. Áhorfendur: [inaudible]. MARIA ZLATKOVA miður? Áhorfendur: Sorry, ég er bara að reyna að muna. Hvernig myndir þú gera það ef þú getur gert það sjálfkrafa flokkun er bara 0 af? MARIA ZLATKOVA: Svo hvernig myndir þú gera það ef þú did ekki hafa ákveðna takka nöfn? Áhorfendur: Já. MARIA ZLATKOVA: Þú myndir bara define-- bara segja þér eins og sumir nafn. Svo í psets þínum, þú krakkar gætu muna framhandleggur $ umf $ raðir, við bjuggum okkur sjálf þessa $ röð segja við viljum fara í gegnum röð eins og $ raðir. Jafnvel þó við höfum ekki þetta skýr $ raðir skilgreint, við gátum bara farið og segja að þetta getur verið lykill okkar, og bara fara í gegnum hvert af þeim gildum. Áhorfendur: Svo er gildi ný breyta við erum að búa til að geyma [inaudible]? MARIA ZLATKOVA: Svo það er ekki eðli sínu nýja breytu. Það er breyta sem vísar til inni í fylkinu til hvers þeirra. HANNAH Blumberg: Það er nýtt breyta nafn. MARIA ZLATKOVA: Já, það er nýr breyta heiti, en það er ekki inherently-- já. Það er bara ný breyta að þú getur gert það. Svo bara hvernig við gerðum $ róa og $ raðir, raðir var nýtt heiti breytunnar sem við gætu búið í framhandleggur lykkja okkar. Það þarf ekki að preexist áður. Áhorfendur: Gætirðu farið í gegnum rökfræði fyrir hvern, með því að nota dæmi þarna? MARIA ZLATKOVA: MHM. Ó fyrirgefðu. Hér er dæmi. Viss. Svo fyrir hvert array-- svo sem þýðir að fara að þessu fylki eins og lykill value-- það er að fara að fara í gegnum þennan fjölda og fyrst að fara og fá foo er lykill foo og verðmæti bar. Og síðan á seinni endurtekning af fyrir lykkju, það er að fara að fara í gegnum og taka lykillinn Baz og gildi qux. Og þá er hægt að gera eitthvað við annað þeirra eða þau bæði. Áhorfendur: Svo hugmyndin á bak hafa lykilatriði að verðmæti, hvað þú endar aðgang? MARIA ZLATKOVA: Hvað er hugmynd af því að hafa a lykill benda að meta? Það er bara annar samningur, annar leið til að fara í gegnum array og vera fær um að fá aðgang annaðhvort lykill eða gildi eða bæði og nota þær. Áhorfendur: Hvað er hlutverk fyrir mælt fyrir um að framhandleggur keyrir í? Svo ef við vorum að bæta við þættir til array síðar, myndi þá vera the fyrstur sjálfur kallað í framhandleggur array, eða myndi það vera síðar? MARIA ZLATKOVA: Svo er það röð sem framhandleggur lykkja fer í gegnum array í? Það fer í gegnum fyrsta þáttur til síðasta frumefni, að síðustu bætt frumefni. Ef þú bætir þætti síðar, þeir myndu að accessed-- fyrstu þættir myndu að nálgast sem fyrst þættir array, og þá þú vilt fara í gegnum hvern þættir sem einskonar ordered-- ekki pantað, en á þann hátt að þeir hafa verið sett inn í array. Áhorfendur: Svo nýja þætti er bætt síðar? Svo þeir eru added-- þeir vera Síðustu sjálfur í [? endurtekning. ?] MARIA ZLATKOVA: Nýjar þættir can-- grundvallaratriðum, þegar nýja þætti er bætt við, eru þeir bætt við í lok fylkisins? Áhorfendur: Já. MARIA ZLATKOVA: Ég trúi því. Já. Og þá með framhandleggur lykkja, eftir að þú hefur bætt við nýjum þætti og þú fara í gegnum þá, nýja þætti myndi vera accessed-- nýju frumefni, ef það er bætt síðast, myndi það að nálgast síðasta. Áhorfendur: Getur þú gefið bara dæmi um eitthvað sem myndi [inaudible] með eitthvað með gildi eins og [inaudible] eða gildi, eins og hvernig þú vilt forsníða það? MARIA ZLATKOVA: Jú. Get ég gefa dæmi um hvað við myndum gera með verðmæti? Svo hvað þú krakkar gætu verið kunnugt er að við höfum farið í gegnum fjölda og í rauninni prentað hvert atriði, til dæmis, sem hluti af raðaður listi eða eitthvað sem. Er að skynsamleg eða viljum við to-- Áhorfendur: Getum við prentað þessi gildi út? MARIA ZLATKOVA: Já, við gætum prentað og þá $ rauninni gildi vegna þess að á sem tiltekið gildi, myndum við vera prentun verðmæti inni af því. Þannig að ef við vorum á fyrsta endurtekning okkar af því og við prentað $ gildi, við viljum að prenta bar. Áhorfendur: Eru einnig fyrir lykkjur í PHP eða bara framhandleggur lykkjur? MARIA ZLATKOVA: Það er einnig fyrir lykkjur í PHP. Og rökfræði þeirra er að mestu sama og það sem þú hefur verið að nota til að. Áhorfendur: Svo gildi þess er null. MARIA ZLATKOVA: Það er eins og hið sama. Já. Áhorfendur: Ég ætla bara að fara að spyrja. Svo þegar þú lýsa array, þú þarft ekki að segja hvaða stærð það er að fara að vera, sem þýðir að þú getur bara bæta við og taka í burtu þætti [inaudible]. MARIA ZLATKOVA: Yup. Já. Nákvæmlega. Þegar við lýsa fylki, við þarft ekki að segja hvaða stærð það er, svo við getum bara bæta þætti á það síðar eins og heilbrigður. Fleiri spurningar? Svo koma PHP og HTML saman, það sem við höfum seen-- vel, Til dæmis, í þessu dæmi, við höfum HTML formi sem hefur innsláttarreitinn. Og inntak reitur er bara nafn og þá hefur það Senda hnappinn. Og þegar þú ýtir á Senda hnappinn, í hello.php skrá okkar, vegna þess að aðferðin fyrir formi er fá, getum við aðgang hvað er nafn eftir þetta fá alþjóðlegt breytu sem is-- setningafræði fyrir það er $ _GET. Og þá getum við nálgast hvað notandi inntak inni í því formi að nafninu með því að tilgreina nafn því sviði. Aðrar spurningar eða eitthvað spurningar um þetta tiltekna dæmi? Áhorfendur: Hvar er PHP? MARIA ZLATKOVA: Hér. Svo er þetta opna tag okkar fyrir PHP. Áhorfendur: Einmitt. MARIA ZLATKOVA: Já. HANNAH Blumberg: The = er styttingin fyrir þetta er PHP og bara bergmál. Áhorfendur: Oh. MARIA ZLATKOVA: Já, því miður. Ég ætti að hafa sagt það skýrt. HANNAH Blumberg: Print. MARIA ZLATKOVA: Það er bara virka sem gerir okkur kleift að prenta eitthvað. Frábær spurning. Svo going-- já. Áhorfendur: Er að fara að vera alveg smá hönd kóðun PHP og HTML á spurningakeppni 1? MARIA ZLATKOVA: Það getur verið heilmiklar túlkun PHP og HTML, ekki endilega eins og a gríðarstór magn af erfðaskrá, þó að þú gætir þurft að skrifa framhandleggur lykkja, þó, til hliðar. Allir af lykkjur sem við þessu hér er sanngjarn leikur. Og það er að mestu leyti það. HANNAH Blumberg: Ég myndi vera tilbúinn. Á sama hátt og við spurði þig að skrifa fullt af C aðgerðir á spurningakeppni 0, Ég væri tilbúinn að gera Sama á PHP og Javascript. MARIA ZLATKOVA: Já. HANNAH Blumberg: Ég myndi segja a little-- eins og við erum ekki fara að gera þú skrifar mikið HTML síðu bara því það er svolítið leiðinlegur, en þú gætir þurft hluta. Það er algerlega sanngjarn leikur. Eins litlum HTML síðu, algerlega sanngjarnt. Áhorfendur: OK. Hvernig væri JavaScript eins og heilbrigður? HANNAH Blumberg: Já. Sanngjarn leikur JavaScript er. MARIA ZLATKOVA: Já. Það er alveg sanngjarn leikur. HANNAH Blumberg: Við munum fá til að í eins og 10 mínútur. MARIA ZLATKOVA: SQL, aftur, Structured Query Language. Það gerir í grundvallaratriðum okkur til að stjórna gögnum í Venslagagnagrunnur stjórnun kerfi. Það þýðir bara í rauninni að við höfum einhvers staðar að geyma ýmsar upplýsingar sem við gætum vilja til að nota í viðbót eða á einhvern annan hátt. Og þá höfum við fyrirspurnir til að fá Upplýsingar úr gagnagrunni okkar, eða til að setja upplýsingar í þeim. A einhver fjöldi af the sameiginlegur ones-- UPDATE, INSERT, SELECT, og eyða. Svo að uppfærslu, þetta er setningafræði til að uppfæra gögn í gagnagrunninum. Uppfæra þessa töflu sem heitir borð með því að segja SET, getum við sett nokkur gildi í öllum raðir til jafn eitthvað annað. Þannig að við getum einnig tilgreina sumir sérstakur Færslur sem við viljum breyta og það getur verið að nota þar. Og við getum tilgreina að við viljum bara að breyta sumum raðir þar sem hús fyrir, ef við hefðum borð nemenda og allir nemendur höfðu hús, svo við myndum bara breytt nokkur gildi þar hús jafnt Currier, til dæmis. Fyrir INSERT, getum við setja ákveðin gildi í töflu. Svo INSERT INTO töflu, og þá gildi, og þá í sviga, við að skilgreina hvaða gildi þú vilt setja inn. Svo INSERT INTO borð, col1 og col2, gildi er VAL1 og VAL2. Svo setur þetta í rauninni nýja línu inn töflu má gildin 1 og 2 undir dálkum 1 og 2. Og þá erum við að fara að fara yfir a fljótur dæmi um hvernig þetta lítur eins og í gagnasafn okkar smá. En þetta endanlega fyrirspurn sem ég held að við erum að fara að fara yfir, SELECT, það gerir okkur bara til að velja gögn úr töflu að hugsanlega nota það síðar. Og hvernig við gerum þetta er að við bara geyma það í sumum breytu. Og þá getum við hugsanlega notað hann aftur. Svo SELECT stjörnu merkir að velja allt. Það er bara styttingin til að velja allt. FRÁ borð þar, við erum að leita að einhverjum tilteknum skilyrðum, svo þar dálki jafngildir eitthvað, til dæmis. Ef við vildum bara að velja allt úr töflunni, Þetta velur bara alla dálka og allar færslur frá borði. Og þá DELETE FROM borð HVAR Col jafngildir eitthvað, þetta bara eyðir sumar róa frá borðinu okkar þar sem við höfum nokkrar sérstakar aðstæður. Í þessu tilfelli, skilyrði eru dálki jafngildir eitthvað. Svo bara fljótur dæmi um þetta. Ef við höfum þetta borð hérna og við setja það inn í töflu, þessi gildi, sem myndi setja nýja línu. Og ef við hefðum sjálfvirka aukningu, þetta myndi bara hækka skilríki frá 0 til 1 til 2. Ef við valið allt frá nemendum, það bara skilar öllum sviðum og allar umf. Hvar ári er meiri en eða jafnt og 2016, sem myndi bara snúa aftur Hannah og mig. Og þá ef við valið bara ári id og ár frá nemendum þar sem húsið er Cabot House, sem myndi aftur, aftur Hönnu og mig. Þá ef við eytt frá nemendum þar sem nafn er jafn Rob, sem myndi eyða allt röð. Og þá ef við setjum nafn, UPDATE nemendur SET nafn jafngildir Daven HVAR Húsið er jafn Cabot House, sem er að fara að fara í þessir raðir og þá uppfæra nafn. Og þá nokkrar SQL gögn tegundir eru CHAR, VARCHAR, INT, og fljóta. Þetta eru sanngjörn leik. Ég myndi fara aftur og ganga úr skugga um að þú veist og hafa þá á svindlari lak, hvað hver af þeim stafi hafa verið notað, hvað þú notað þá á psets þínum, og ganga úr skugga um að þú ert kunnuglegur og ánægð með að þurfa að velja frá mismunandi tegundir gagna í pset þinn. Já. Áhorfendur: Hvað var það borð geymt? Já, hvar er þessi tafla geymdar? MARIA ZLATKOVA: Jæja, núna, það er ekki geymt. Engu að síður, þar er þetta borð geymt? En það er hægt að geyma í SQL gagnagrunn. Áhorfendur: Og hvar er SQL gagnagrunnur? Í tölvunni, á netinu einhvers staðar, framreiðslumaður? MARIA ZLATKOVA: Það getur verið tala af ólíkur hlutur. HANNAH Blumberg: Við höfum interfaced með SQL töflur aðallega með phpMyAdmin. Þannig að við gætum beðið miðlara að geyma þá fyrir okkur. Við gætum geyma þá á tölvunni okkar. MARIA ZLATKOVA: Það fer bara eftir hvernig þú vilt gera það fyrir þig. En við höfum verið að geyma þá, sem Hannah getið, á phpMyAdmin, sem er á netinu. Og þá leið sem við notum PHP og SQL, geymum við það í sumum breytu það sem við höfum sent fyrirspurn til. Þannig að ef við velja allt úr sögunni þar USER_ID jafngildir fundur ID, sem myndi velja allar línur fyrir ákveðna aðila sem er skráður í frá sögu borð og raða þeim í raðir. A kaldur hlutur að vita er sem CS50 er fyrirspurn virka verndar gegn SQL innspýting tags. Það þýðir bara að það gerir viss inntak sem er rétt slegið inn og að sá sem er að slá inntak er ekki að reyna að inntak sumir illgjarn kóða til að annað hvort sleppa borðum okkar eða eyða öllu inni hjá okkur. A fljótur yfirlit af the Model View Controller líkan, það er bara leið til að skipuleggja og hugsa um kóða. Það er aftur, hönnun hugmyndafræði. Hvað það þýðir er að við can-- og það er góð regla til að aðgreina mismunandi hlutum af kóða okkar og hvað þeir stjórna í þessum þremur málin. Svo er að okkar mati oftast okkar sniðmát, skipulag okkar, hvernig sem við setjum hvernig númerið okkar lítur út. Það er að mestu leyti CSS skrár okkar og hvernig að við skilgreint hönnun númerið okkar, grundvallaratriðum. Stjórnandi okkar er að mestu leyti hvað við höfum verið að gera með PHP skrá. Svo aftur, að vinna með upplýsingar sem við höfum og skilgreina hvernig það upplýsingarnar eru notaðar, og þá liggur að upplýsingar annaðhvort inn á útsýni eða líkan. Og líkanið, á þann hátt að við höfum verið að nota er hefur verið hjá okkur, svo þar sem upplýsingar okkar er geymd svo það hefur eitthvað að lifa í, og eitthvað af kóða sem snýr að því hvernig að við fáum þær upplýsingar eða leiðin sem við uppfæra þær upplýsingar. Svo í MVC líkan, HTTP beiðnir eru sendar til vefþjóni. Þá er stjórnandi túlkar beiðni frá notanda og þá staðfestir notandi inntak. Það er valfrjálst að við höfum stjórnandi samskipti með líkan, svo eitthvað eins hjá okkur eða einhver önnur virkni sem relays upplýsingar. Og svo að lokum, stjórnandi fer upplýsingar inn á útsýni þannig að það getur verið veitt og að það getur verða sýnileg þeim sem um aðgang að vefsíðu. Einhverjar spurningar? Awesome. Svo aftur, en fyrirmynd, hlutverk þess, aftur, er viðvarandi geymsla upplýsinga, stjórna og skipuleggja gögn. Og það sem við höfum séð langt er MySQL gagnagrunnur og allar gagnaskrár sem getur notað. View, framsetningu upplýsinga til notandi, HÍ, eða notandi tengi. Og dæmi um þetta er HTML. Og þá erum við kannski hafa óveruleg PHP. Svo fyrir lykkju sem iterates yfir gögn sem eru prentaðar út er hluti af mati, sem öfugt við the stjórnandi. Og þá er mikið af PHP skrá okkar falla í stýringu flokki. Það sér bara notandi beiðnir og fær upplýsingar frá líkaninu. Stökk inn í skjalið Object Model, þetta bara vísar til þess hvernig HTML skjöl eru skipulögð. Og þeir eru skipulögð í tré uppbygging sem hefur stigveldi. Svo ef við höfum aðgang að [inaudible] framsetning skjalinu, við getum unnið með skjalinu, eins við vinna hluti í grundvallaratriðum. Og til að gera þetta svolítið skýrari, þegar við höfum mikið af okkar mismunandi merki bregðast að mismunandi leiðum í trénu okkar. Og þá í þessu dæmi, við hafa upphafsdegi skjal hnút. Við höfum þá HTML hnút okkar sem skiptist í höfuð og líkama. Head hefur titil og síðan titill inniheldur Halló, heimur. Og líkami okkar inniheldur bara halló, heimur eins og heilbrigður. Svo einhverjar spurningar um eitthvað af hlutir sem við falla svo langt? Og ef ekki, Hannah mun taka yfir með JavaScript. Awesome. HANNAH Blumberg: OK, flott. Ef eitthvað kemur upp með PHP eða HTML, eða einhverju efni Maria nær, við getum alltaf gert hlé. Við erum að gera betur á tími aftur, svo ógnvekjandi. Og bara til að fara aftur mjög fljótt við þetta, ef þú horfir á hvert exam síðasta ári, þetta kemur upp either-- hér er sumir HTML, gera þessa skýringarmynd. Eða hér er þetta skýringarmynd, að sumir HTML, svo ákveðið að æfa það. Og þá er það eitt öruggt Spurningin sem þú getur fengið rétt. Cool. Svo skulum við tala um JavaScript og hvernig það er svolítið frábrugðin tungumálum eins og PHP og C, tvö tungumál sem við sáum fyrir. Svo númer eitt, það er lauslega slegið. Það er eins og PHP, en ólíkt C Það er túlkað tungumál. Aftur, það er eins og PHP, ólíkt C Og þetta er að fara að leyfa okkur að use-- það virkar virkilega vel með vefsíðum. Það er að fara að leyfa okkur að vinna efni og hvernig það lítur út og hvað það gerir. Við erum að fara að sjá smá Ajax. Það gerir okkur kleift að eiga samskipti asynchronously með mismunandi netþjónum og fá upplýsingar. Og þetta er hlutur sem raunverulega skilur Javascript úr PHP og C er að það er viðskiptavinur-hlið. Bæði PHP og C eru oftast framreiðslumaður-hlið. Fyrir the hluti og nær eingöngu það við höfum séð, að minnsta kosti í þennan flokk, JavaScript virkar á client-megin, sem þýðir að vafrinn er í raun ábyrgur fyrir að keyra það. Og það þýðir að við gerum ekki þurfa að hafa samskipti við þjóninn. Svo það þýðir að það geta vera a einhver fjöldi hraðar vegna þess að það er í raun bara það Chrome, það er Safari, það er Firefox, hvað þér nota í raun í gangi þínum JavaScript. Áhorfendur: Hvað ósamstilltur meina? HANNAH Blumberg: Ah, hvað er asynchronously meina? Frábær spurning. Asynchronously means-- vel, efni sem við notum það er, OK, við eru að búa til vefsíðu og við þurfum að fá smá upplýsingar. Svo með dæmi um Mashup, einhverjar upplýsingar sem við gætum vilja er grein titla. Nú, could-- við einn valkost er að gera það í réttri og það þýðir skulum stöðva, fara að fá greinina, fá grein aftur, og þá bakið, en það væri mjög hægur. Það væri slæmt notandi reynsla því að þú myndir bara að sitja að bíða eftir eitthvað að svara. Asynchronously þýðir að við munum halda áfram að fara um viðskipti okkar, flutningur á síðunni, og við munum senda út beiðni Það er góður af fara að gerast í bakgrunni. Ég held að við notum dæmi í fyrirlestur starf Rob og sagði: hey, þú getur litið þetta upp fyrir mig og fá aftur til mín, öfugt við bara mér bíða á símanum. Svo þýðir asynchronously það gerist í bakgrunni burtu frá okkur samhliða. Frábær spurning. Eitthvað annað? Great. Við munum hoppa miklu meira í ósamstilltur beiðnir með Ajax. Áhorfendur: Er Javascript-- hvar það falla með Model-View-Controller? HANNAH Blumberg: Great spurning. Hvar er JavaScript fall með Model-View-Controller? Hm. Ég giska á að það getur fall-- þannig að við gerum ekki venjulega eins að troða henni inn í það hugmyndafræði, en ég held ég myndi segja, OK, svo JavaScript reyndar er að fara að leyfa okkur til að safna gögnum, túlka gögn, í raun gera þroskandi hluti með gögnin. Á þann hátt, er það mjög stjórn eins. En það er líka að fara að leyfa okkur að sýna hlutina og prenta það. Á þann hátt, er það mjög útsýni eins. Já. Svo það er góður af eins og PHP þar sem það getur konar bæði. Góð spurning. Eitthvað annað? Allt í lagi, ógnvekjandi. Flytja rétt eftir. Svo skulum sjá dæmi um hvernig við getum notað JavaScript í einn af verkefnum okkar á vefnum. Svo ég ætla að íhuga þetta index.html með fullt af HTML. Og það sem ég vil þig leggja áherslu á er þetta handrit tag. Og þetta segir, OK, ég vil að hlaupa sumir JavaScript og hér er þar sem það býr. Það býr í hello.js. Og mjög mikið eins og CSS, við gátum setja Javascript innan HTML. Hvers vegna getum við vilja til að skilja það út? Já. Áhorfendur: Auðveldara að umrita? HANNAH Blumberg: Já. Það er auðveldara að nota yfir mismunandi vefsíðum. Það heldur það hreinni. Það er bara gott. Awesome. Gott svar. Svo gott, svo þetta er að fara að vera index.html okkar. Og þá hérna er okkar agnarsmár JavaScript skrá. Og allt það segir er vakandi Halló, heimur. Svo hvað gerist er þegar þessa síðu renders-- þannig að ef þú ferð til hvaða vefsíðu þetta is-- allt sem er að fara að gerast er það er að fara að segja, OK, ég er að fara að keyra þennan JavaScript kóða. Og þetta JavaScript kóða bara segir vakandi Halló, heimur. Þannig að ég ætla að fá þetta vingjarnlegur lítill pop-up. Cool? Það er góður af eins og okkar fyrstu JavaScript program, okkar Halló, heimur. Við skulum líta svolítið meira um hvað setningafræði JavaScript lítur út. Og sérstaklega, við skulum bera saman það til C og PHP, sem við höfum séð áður. JavaScript, við erum að fara að hafa Var, nafn breytu, og þá raunveruleg gildi þess. Og við tilgreinir ekki tegund, bara eins og í PHP, en mjög ólíkt í C. Svo til dæmis, ef við vildum að geyma verðmæti 50, í C, myndum við að segja, hey, C, ég vil heiltölu Ég ætla að kalla það i, og gildi þess er 50. Í PHP, það er svolítið auðveldara. Við segjum, hey, ég vil breytu kallaði ég og gildi þess er 50. Mjög álíka, í JavaScript, við segja hey, ég vil breyta kallaði ég, gildi er 50. Sérhver síðari skipti sem ég nota i, ég þarf ekki að skrifa var. Það er bara ég frá þeim tímapunkti á. Á sama hátt, í C, þar sem þegar við segjum int i, við notum bara i. Cool? Allt í lagi. Færa um að lykkjur, sem betur fer, þetta nánast líta exactly-- Ég held að þeir séu nákvæmlega það sama og hvað lykkjur eru að fara að líta út eins og í eitthvað eins og C þar sem þinn fyrir lykkju er að fara að hafa þrjú parts-- frumstilling, ástand, og uppfærsla. A meðan lykkja, það lítur nákvæmlega sama. Við gefum bara það ástand. Og gera á meðan lykkja, aftur, nákvæmlega það sama. Við gefum það skilyrði. Skulum segja að ég vildi að árétta over-- Mig langaði til að gera eitthvað fimm sinnum. Í C, gætum við skrifað fyrir init ég er 0. Ég er minna en 5, ég ++. Eini munurinn, í JavaScript, í stað þess að segja int i jafngildir 0, við segjum Var ég er 0. Beautiful. Það er eini munurinn. Einhverjar spurningar um eitthvað af því? Já. Áhorfendur: Svo í PHP, það er sama hlutur, nema en eins breytu? Eða var það VAR dæmis? HANNAH Blumberg: Já. Svo í PHP, það er að fara að vera dollaramerki. Svo það er að fara að $ i jafningja 0, $ I er minni en 5, $ I ++. Frábær spurning. Nú skulum tala um virka yfirlýsingar. Í C, þegar við lýst yfir virka, við gáfum honum nafn og gáfum henni nokkrar breytur. Og í byrjun, skrifaði við gerð. JavaScript, allt sem við þarft að gera er að skrifa leitarorðið fall sem segir, hey, JavaScript, Ég er að fara að skilgreina fall. Í þessu tilfelli, það hefur nafn summa. Og það tekur tvær breytur, x og y. Takið eftir að við gerum ekki sama um tegundir x og y. Og rétt eins og C, höfum við þetta leitarorð aftur, svo við getum gert eitthvað eins aftur x og y. Og nú þegar við höfum skrifað þetta fyrst virka, getum við notað summan hvar sem er. Og það er algerlega fínt. Einn mjög kaldur hlutur óður í JavaScript sem er mjög ólíkt C er að virka getur að meðhöndla eins og gildum. Þannig að við getum gert eitthvað eins og hér þar sem ég býst við að ég ná þessu up-- Ég tekur upp VAR summan part-- og ég sagði bara virka XY jafngildir aftur x plús y. Það er það sem væri kallað nafnlaus aðgerð. Það er aðgerð án heitis. En þetta segir virka summa, bla, bla, bla, þetta myndi bara segja virka. En nú jafnvel þótt ég hafi þetta nafnlaus aðgerð, sem virka er í raun bara gildi. Við getum meðhöndla það eins og a gildi. Svo við getum vistað það í breytu sem sama leið að við getum geymt 50 í breytu. Þannig að við getum sagt, OK, ég vil breyta, það er kallað summa, og það er þetta fall. Svo þessir tveir hlutir eru í raun að fara að gera nákvæmlega það sama, en setningafræði er svolítið öðruvísi og svona skemmtilegt huga. Já. Áhorfendur: Svo þú gætir hringt a fall sem var nafnlaus með því að segja, summa sviga 2, 5? HANNAH Blumberg: Já. Þú getur hringt þetta nafnlaus virka á sama hátt. Þú vilt gera SUM (2, 5) ;. Það væri algerlega í lagi. Ef ég gerði það ekki Var Summa jafngildir virka, ef ég eyddi bara this-- Ég veit að það er á minni hendi, en þykjast Ég eyddi this-- þá sem virka er eins konar bara farið. Þú getur aldrei notað það aftur vegna þess að þú ert ekki með nafn fyrir það. Það er erfitt að vísa í eitthvað þú veist ekki hvað ég á að kalla. Góð spurning. Já. Áhorfendur: Getur þú vísað summan í öðrum stöðum með verðmæti x plús y? HANNAH Blumberg: Getur þú tilvísun summa í öðrum stöðum með gildi x plús y? Ég er ekki alveg viss um hvað þú átt við. Áhorfendur: Svo fortíðina hálf-nafnlaus virka er summan jafngildir þetta nafnlaus aðgerð, svo er summan nú breyta sem þú can-- HANNAH Blumberg: Hægri. Svo er summan breytan, en það er actually-- svo er summan breytilegt sem gildi er hlutverk. Svo er það fall, sem er eins konar a furðulegur hlutur að vefja höfðinu í kring þar sem við höfum verið að spila með C og þú getur ekki gert það í C. En nú getum við hringt summa sem sama hátt og við gætum hringt summan hér. Áhorfendur: OK. HANNAH Blumberg: Já. Góð spurning. Já. Áhorfendur: Svo við notum ekki frumgerðir í PHP eða JavaScript? HANNAH Blumberg: Nei, við þarf ekki að nota frumgerð, sérstaklega í JavaScript. Svo einn slæmur siður sem ég er að fara að segja að þú ættir ekki að gera er að þú þarft ekki að skrifa VAR I = 50. Þú getur bara byrjað að gera i = 50. Og vildi bara gera ég alþjóðlegt breytu. Það er mjög slæmt starf til aldrei segja explicity Var i, en það er eitthvað sem þú getur gert. Túlkurinn er ekki að fara að æpa á þig. JavaScript er nokkuð eins, þú getur gert það sem þú vilt. Ó fyrirgefðu. Það er tveir. Í appelsínugulum buxum. Gjörðu svo vel. Áhorfendur: Nei, þú ferð fyrst. Áhorfendur: Nei, ég var bara að segja Ég hafði ekki hönd mína. OK. Svo ef þú varst að hringja að í fyrsta skipti, nú summa, við köllum það á sama hátt, x, Y, eins hvert einasta skipti? HANNAH Blumberg: Já. Svo þessir tveir meginatriðum gera það sama. Áhorfendur: Og hvað er kostur þess að nota einn eða annan? HANNAH Blumberg: No kostur þess að nota einn eða annan. Ég vildi bara að sýna þér tvo mismunandi stykki af setningafræði. A einhver fjöldi af sinnum þar nafnlaus aðgerðir gera hafa tilgang er ef rök til annars Eftirlit skal vera fall. Og við munum sjá að í bara annað með Ajax. Þannig að ef það var ekki að gera allir skilningarvit, geyma það í hnakkanum. Það er þar sem nafnlaus virka gæti verið gagnlegt vegna þess að það er í raun ekki þess virði gefa það a nafn þar sem við erum bara að fara að nota það einu sinni. Já. Áhorfendur: Ef x og y breyta síðar á, mun summa breytast eins og heilbrigður? HANNAH Blumberg: Ef x og y breyting seinna, munt summa breytast eins og heilbrigður? Svo er þetta reyndar held eitthvað sem er, aftur, finnst það bara mjög mismunandi frá C. Þetta er ekki gildi. Það er ekki 5. Það er bara virka sjálft. Svo um leið og þú gefur það breytur, þá munt þú í raun að reikna gildi. MARIA ZLATKOVA: Og þá þú getur hringt í aðgerð og nota það til að fá smá gildi. HANNAH Blumberg: Hægri. Nákvæmlega. Já. Áhorfendur: Svo ef þú bara geyma það í breytu, eins var x jafngildir summu tveggja values-- HANNAH Blumberg: Já. Svo þú gætir bara gert VAR summan jafngildir summu tveggja gilda. Já. Aðrar spurningar? Já. Áhorfendur: En væri það rugla summu og summu? Eins og ef þú kallar breyta upphæð þitt, myndir þú kalla virka summu? HANNAH Blumberg: Mm. Mm. Ef þú gerðir eitthvað eins og, summa jafngildir summan 2, 5? Áhorfendur: Já. HANNAH Blumberg: Ég tel að myndi skrifa verðmæti summa. Svo annað áhugavert hlutur óður JavaScript er að einn breytu getur tekið á fullt af mismunandi gerðum. Bad æfa. Þú ættir ekki að gera eitthvað eins og það sem þú sagðir. En í C, ef ég er sett jöfn heiltala, við vitum að það er aldrei fara að verða band. Þetta er ekki raunin í JavaScript. Já, góð spurning. Eitthvað annað? Allt í lagi. Gera allt rétt á réttum tíma. Gæsla fara. Allt í lagi. Ef við lítum á fjölda í JavaScript, hér er a fljótur dæmi af fjölda strengi. Og fylki geta vaxið mjög virk. Þeir hafa ekki fastur stærð á sama hátt sem þeir gera í C. Við getum nálgast það þætti með aðeins hornklofum. Sem lítur mikið eins og PHP og mikið eins og C, þar sem við getum sagt, í þessu tilfelli, ef ég vildi orðið JavaScript, myndi ég ekki Arr hornklofa með 0, 1, 2. Og svo ef þú manst í C þegar við vildi fá lengd fylki, það var mjög pirrandi. En í JavaScript, frábær auðvelt. Allt sem við gerum, .length. Gefur það lengdir. Það er það. Áhorfendur: Það er einfalt. HANNAH Blumberg: Já, gerir líf þitt mun auðveldara. OK, object-- ekki þar. Hlutir í JavaScript feel a einhver fjöldi eins structs í C og tengin fylki í PHP. Svo það sem við höfum séð mikið af er JSON, sem stendur fyrir JavaScript Object Ritháttur. Og það er í grundvallaratriðum leið uppbyggingar gögn okkar. Svo skulum sjá dæmi, sennilega auðveldasta. Svo er hér dæmi um hlut sem geymir bekknum, CS50. Og þegar ég segi bekknum, ég meina auðvitað, ekki like-- já, að sjálfsögðu, CS50. Og þú munt sjá að allt í hlut er að fara að vera að finna í hrokkið axlabönd. Og við byrjum að tengja sviði nöfn eða lykla með mismunandi gildum. Svo þú getur byrjað að sjá hvernig þessu tagi finnst eins og tengin array í PHP. Þannig að við erum að fara að tengja á sviði eða lykillinn nafn, auðvitað, með band, CS50. Við erum að fara að hafa leiðbeinanda. Við erum að fara að hafa TFS. Við erum að fara að hafa fjölda psets og við erum að fara að hafa skráð. Og einn kaldur hlutur að hafa í huga er allt þetta hafa mismunandi gerðir, og það er algerlega fínt. Það er allt í lagi fyrir hlut, í raun, það er sennilega gert ráð fyrir hlut að hafa samsetningu af strengi og tölur og Booleans og fylki og hvað annað sem þú gætir vilt hafa inni hlut þinn. Og athugið að þetta er að fara að vera heiti eða lykla, og þá erum við bara setja það jafnt með smá ristli. Áhorfendur: Hvað nákvæmlega er JSON meina? HANNAH Blumberg: Hvað nákvæmlega er JSON meina? JSON stendur bara fyrir JavaScript Object Ritháttur. Það er bara leið til að forsníða. Já. Það er leið til að forsníða gögn okkar. Í C er það structs. Í PHP, það tengin fylki. JavaScript, höfum við hluti. Áhorfendur: Svo er CS50 hlut? HANNAH Blumberg: CS50 er hlut í þessu tilfelli. Nú, hvernig við í raun aðgang þessir reitir eða breyta þeim sviðum. Segjum til dæmis að við ákváðum að þú vildir einn færri pset þessa önn. Í stað þess að níu, við erum bara að fara að hafa átta. Hvernig myndum við breyta því? Oh, röng leið. Það eru tvær leiðir sem við getum gert það. Númer eitt er með punkti merki og númer tvö er með hornklofi tákn. Svo, til dæmis, ef ég vildi breyta eða aðgang sem psets sviði í CS50 hlut okkar, það sem ég myndi gera er að CS50.psets, svo nafn á hlutnum punktur nafn þess eða þeirra takkanum. Mjög álíka, það er nákvæmlega jafngildir gera CS50, og þá í hornklofa, psets. Cool? Já. Áhorfendur: Svo er JSON tæknilega JavaScript enn, jafnvel þó í psets við aðskilja hana út [inaudible]? HANNAH Blumberg: Jú. Svo spurningin er, eru JavaScript og JSON jafngildi? Svo er JSON merki, í grundvallaratriðum á þann hátt að við að skrifa út hlut frá JavaScript. Svo þeir eru ekki nákvæmlega það sama. Ég myndi segja JavaScript, það eru hlutir í JavaScript. JSON tekur þá hluti og prentar þá og birtir þær eða geymir þær í a ágætur vegur. Svo er JSON ekki forritun Tungumál á þann hátt að JavaScript er. Það er bara merki um hlutir okkar í JavaScript. Já. Áhorfendur: Og hvað nákvæmlega [Inaudible] ljúka? HANNAH Blumberg: Jú. Svo þetta er í raun gerir ekki neitt. Þetta er bara leið til að fá aðgang. Svo skulum segja að við vildum breyta fjöldi vandamál setur frá níu til átta. Hvað við gerum er að gera eitthvað eins CS50.psets = 8 ;. Já, frábær spurning. Þetta er bara til að sýna þér setningafræði. Ekki í raun að gera neitt gagnlegt. Einhverjar spurningar? Flytja rétt eftir. Svo skulum líta á a fljótur dæmi um hvernig JavaScript virkar vegna þess að ég sagði þér það gerir allt þetta kaldur hlutur og gerir okkur kleift að breyta vefsíðum. Við skulum sjá það í raun í aðgerð. Svo taka, til dæmis, þetta HTML skrá. Og það sem ég vil að þú að leggja áherslu á er Þetta tiltekna tag, sem er hnappur, með id search_button. Það er bara á síðunni. Svo nú skulum sjá hvað við getum í raun gert. Jæja, ætla þegar þú smellir á hnappinn, við viljum gera alert-- þú smellir á hnappinn. Við skulum sjá hvernig við getum gert það. Svo window.onload-- þetta er ekki eitthvað sem þú hefur séð í bekknum, því þarft ekki að vita það fyrir próf. En þetta í rauninni segir, OK, kalla Þessi aðgerð þegar gluggi opnast. Svo er það bara svona setup kóða. Ekki hafa áhyggjur svo mikið um það. Það sem ég vil að þú að leggja áherslu á er hér. Við segjum Var searchButton jafngildir document.getElementById search_button. Svo eins og þú might giska, hvað þetta gerir er að það segir, OK, fara að finna þáttur með ID search_button. Og nú höfum við að Raunveruleg þáttur og ég er að fara að geyma það í breyta searchButton. Og nú getum við í raun nota þessi þáttur og breyta því, eða opna gildum, svoleiðis. Við getum í raun byrjað að þátt með vefsíðu. Svo hér er ég að segja, OK, nú að ég hef sem hnappur, þegar það er smellt kalla þetta nafnlaus aðgerð. Svo er þetta þar nafnlaus aðgerðir verða gagnlegt. Og hvað heimtar virka gera? Jæja, það kallar bara á þessu viðvörun virka og það segir, þú smellir á Leita hnappinn. Svo hvað mun gerast ef ég fer til hvar þetta HTML býr og ég smelli á hnappinn, Ég næ ímynda smá viðvörun sem segir að þú smellir á hnappinn. Svo það að leggja áherslu á here-- document.getElementById fær einkum HTML þáttur með þessu auðkenni. Og nú getum við sett hvað ætti að gerast þegar sem einkum þáttur er smellt. Áhorfendur: Við verðum að setja allt sem í? HANNAH Blumberg miður? Áhorfendur: Þurfum við að líkamlega kóða allt? HANNAH Blumberg: Eigum við að þurfa að líkamlega kóða allt? Já. Er ekki svona pirrandi? Þetta er mikið af kóða. Áhorfendur: Þú gætir flytja eitthvað. HANNAH Blumberg: Hægri. Við gætum notað eitthvað. Og í particular-- ó, það er segja mér að ég verð að kenna kafla. Einkum skulum bókasöfn jQuery, því að það var í raun langur og mjög pirrandi og ég vil vera fær um að einfalda það og gera það styttra og auðveldara að skrifa. Svo er jQuery JavaScript bókasafn. Svo er JavaScript forritun Tungumál; jQuery er bókasafn. Og það gerir fullt af hlutum auðveldara. Það gerir að breytast og fara yfir HTML skjal miklu auðveldara. Það gerir meðhöndlun viðburðir auðveldara. Það gerir hreyfimynd auðveldara og það gerir Ajax auðveldara. Svo skulum hoppa í tveimur þessir hlutir núna. Afsakaðu mig. Áður en við gerum, sumir undirstöðu setningafræði. Þetta er það sem flestir kalla til jQuery bókasafn líta út. Við notum þessa dollara sign-- engin tenging merki á PHP, bara inconvenient-- nafn a val, punktur, og þá aðgerð. Svo skulum sjá sumir steypu dæmi um það. Þannig að þetta er í raun það sama númer frá the atburður renna. Svo verður þetta lengi, ljót hlutur þetta miklu betur, minni hlutur. Svo skulum reyna að brjóta þetta niður. Þetta segir, OK, jQuery-- þetta dollara sign-- jQuery, finna mér glugga. Svo er það val. Þegar það sækir, kalla þessa aðgerð. Svo það er allt inni. OK. Svo langt, svo góður? Allt í lagi. Nú, jQuery, finna mig á Málið með ID search_button. Og hvað það er smellt kalla þessa aðgerð. Og þá er þetta aðgerð er nákvæmlega sú sama. Bara gera smá viðvörun, þú smellir á Leita hnappinn. Svo það er mjög gott. Það þéttist í raun og einfaldar kóða okkar. Hvernig sem ég vissi að það er ID search_button og ekki eins og bekknum search_button? Áhorfendur: Hashtag? HANNAH Blumberg: Já. Þetta kjötkássa tákn, það er bara eins og CSS. Svo man, með CSS, þegar við langaði til að velja eitthvað af ID, við notuðum pund merki. Og þegar við vildum að velja eitthvað með bekknum, notum við punkt. Great. Meikar sens? Svo jQuery er ætlað að bara gera líf okkar auðveldara. Já. Áhorfendur: Þannig að ég er svolítið ruglaður hvernig nafnlaus aðgerð virkar. Ert þú nefna þessa anonymouse virka, virka? Hvernig er það kallað? HANNAH Blumberg: Jú. Svo er virka bara leitarorð sem segir, ég er að fara að skilgreina fall. Áhorfendur: Oh, OK. HANNAH Blumberg: OK? Og þá erum við að gefa það sem rök to-- skulum taka þessi innri one-- að smella aðgerð. Svo já, svo að virka, þetta nafnlaus aðgerð, verður raunveruleg rök. Svo man í JavaScript, við getur meðhöndla aðgerðir sem gildi. Áhorfendur: Oh, OK. HANNAH Blumberg: Já. Mér finnst að "ó". Nice. Aðrar spurningar? Time? MARIA ZLATKOVA: Good. Good. HANNAH Blumberg: Awesome. Sumir fljótur gagnlegt jQuery. Ég ætla ekki að fara gegnum allt. Þessar glærur verður upp á netinu smá síðar, svo þú getur athugað það út svolítið síðar. En í grundvallaratriðum, almenn mynstur heldur þar sem við segjum, OK, hey, jQuery, hér er minn val og þá hér er aðgerð. Og þú getur gert hlutina eins og aðgang að gildi formi, opna nokkrar HTML, stjórna hvað gerist þegar notandi leggur form, svoleiðis. Já. Áhorfendur: Svo í próf, við erum að fara að þurfa að vita alveg fullt af jQuery skjöl. Svo í ljósi þess að við afrita / líma jQuery skjöl til svindlari lak okkar, hvar er línan dregin? Eins og hvernig margir þurfum að vita? HANNAH Blumberg: Great spurning. Spurningin er í raun í ljósi þess að þú getur ekki opnað jQuery skjöl meðan á prófuninni, hversu mikið ætti þér veit? Við viljum ekki von á að koma upp með sumir af handahófi virka að við myndum búast við þér að Google. Hlutir sem eru sanngjörn leikur eru ég myndi segja bara svona almenna setningafræði, vera fær um að velja með ID og eftir class-- svo bara eins og CSS. Og þá í raun virka themself, munum við líklega segja þér. Já. Áhorfendur: Svo þegar þú velur með bekknum myndi þýða punktur. HANNAH Blumberg: Já, einmitt. Good. Þegar þú velur af bekknum, það er að fara að punktur í stað breska merki. Já. Áhorfendur: Vilt þú fara yfir mismun milli vals eftir ID og með bekknum? HANNAH Blumberg: Jú. Munurinn á milli val ID og val af bekknum. Svo sem Maria sagði svolítið fyrr, það getur aðeins verið einn HTML þáttur með þessu auðkenni, en tegund, það gerir okkur kleift að flokka fullt mismunandi þætti saman, svo hlutir sem eru tengdar, en ekki nákvæmlega það sama. Er að svara spurningunni? Awesome. Já. Áhorfendur: Hvað ef þú ert með marga það sem er í sama flokki? HANNAH Blumberg: Hvað gerist ef þú ert með marga hluti sem eru þau sömu Class? Svo, til dæmis, ef við erum bara með hreint JavaScript, við myndum gera eitthvað eins og document.getElementsByClass. Og þá hvað það raunverulega hjartarskinn er ávöxtun fjölbreytta þætti. Og þú þarft að annaðhvort kunnugt um þá eða finna hver sem þú vilt. Það er ekki að fara að gefa þú einn þáttur. Það er að fara að gefa þér fjölbreytta þætti. Frábær spurning. Eitthvað annað? Awesome. Þannig að ég held að ef þú ert kunnuglegur með allir jQuery þú sást í pset, þú ættir að vera gott að fara. Spurning? Ó nei. Ég hef í raun að kenna. Relax. Það verður allt í lagi. Ég þangað. Við skulum tala um Ajax. Svo Ajax er að fara að vera a-- vel, skulum byrja með það sem það stendur fyrir. Það er skammstöfun. Það stendur fyrir ósamstilltur JavaScript og XML. Og XML er í grundvallaratriðum er að fara að vera [Inaudible] með gerð gögn okkar. En við höfum ekki í raun notað XML. Þess í stað notum við bara JSON. Svo í rauninni, það er sumir data-- ósamstilltur, JavaScript, og gögn, í þessu tilfelli, JSON. Og markmið okkar, eins og við getið svolítið fyrr, er að vera fær um að gera beiðni, hafa að beiðni gera hlutur hennar í bakgrunnur, en halda áfram gera hvað við vorum ætlaði að gera. Og þá er þegar tilbúin, þá munum við fella hana. Svo skulum sjá hvað þetta reyndar lítur út. Og þetta, ættir þú að vera svolítið kunnugleg frá pset8, sá sem þú snúið bara í. Svo hér er gild jQuery fall sem við gætum langar að vita about-- þessum dollaramerki. Svo það segir jQuery virka, .getJson. Og hvað þessi aðgerð gerir er það tekur slóðina og sumir parameters-- svo ég held að í tilfelli af pset8, það var eins og, URL var articles.php og breytur var að fara = nokkur póstnúmer. Og það segir, OK, leggja fram beiðni til þetta URL með gefið breytum. Og það bara gerist. Þegar henni er lokið, það er annað hvort fara til að ljúka eða það er að fara að mistakast. Svo er þetta jafngildir símtali Rob og biðja hann að gera eitthvað. Og svo þegar hann kallar til baka, hann er annað hvort að fara að segja að ég er búin eða ég ekki. Svo er að ræða þar sem þú ert gert, segir þú, OK, ég er búin. Og þá þú kalla þessa aðgerð. Í þessu tilfelli, það er að fara til vera a fall sem tekur nokkrar upplýsingar. Sá sem við hugsa yfirleitt um gögn, gögn sem við vorum í raun aftur sem afleiðing af starf .getJSON. Og þú getur gert eitthvað við það. Þannig að um er að ræða pset8, Við birtum það í lista. Fail er að fara til vera a fall sem er kallað ef beiðnin ekki fyrir hvað sem ástæða. Og um er að ræða pset8, við console.log bara það. Einhverjar spurningar um það? Já. Áhorfendur: Er hægt að nota bara virka þeta í stað þess að virka, textStatus, jqHXR. HANNAH Blumberg: Jú. Svo já, ég held í pset, við sáum bara virka gögnum. Svo það er bara the-- já, OK. Það er það sem við sáum í pset. Það er algerlega fínt. Þetta eru bara ef þú vildir að draga út fleiri upplýsingar, þetta eru hlutir sem þú gætir fengið frá .getJSON. Góð spurning. Eitthvað annað? Já. Áhorfendur: Svo .getJSON er Ajax? HANNAH Blumberg: OK. Svo er þetta eins konar erfiður hluti. Það er jQuery aðgerð sem gerir þú að gera ósamstilltur símtöl. Og þeir ósamstilltur símtöl, það er það sem við höfum verið að vísa til sem Ajax. Já. Það tók mig mjög langan tíma að draga í sundur þegar ég var nemandi. Áhorfendur: Getur þú sagt það aftur? HANNAH Blumberg: Já. Get ég sagt það aftur? Þessi .getJSON virka, það er jQuery virka. Og það er að fara að gera ósamstilltur kalla. Og þessar ósamstilltur símtöl, höfum við verið að vísa til þeirra sem Ajax. Aðrar spurningar? Við höfum bara nokkrar mínútur eftir. Og Maria er að fara að sett upp með öryggi og þá erum við að fara að vera bara um að gera. MARIA ZLATKOVA: Awesome, OK. Þannig að þetta is-- bara taka a par hvað á að líta yfir þetta. Og þetta er ekki eitthvað mjög mikill. Og getur einhver sagt mér hvers vegna? Hvað er að gerast í foo og maí gæti hugsanlega leitt eitthvað slæmt, og hvað það er kallað? Já. Áhorfendur: Ef rök sem er samþykkt í er meira en 12 stafir, það gæti flæða. MARIA ZLATKOVA: Hægri. Perfect. Hvað er það kallað? Þú nefndir bara það. Áhorfendur: Buffer flæða. MARIA ZLATKOVA: Yup, biðminni flæða. Svo er þetta eitthvað sem við vísa til sem yfirflæði. Og við sjáum að inni foo, við höfum skilgreint biðminni okkar, c, með stærð sem 12. Hins vegar í meginatriðum eigum við ekki athuga á nokkurn hátt á öllum hvort argv1-- svo sem var annað rifrildi. Við stöðva ekki hvort stærð það er rétt. Svo ef við hefðum sérstaklega illgjarn notandi sem setja inn rök sem var lengur en 12, og þá hugsanlega utan við mörk af því rök, fengum inningarkóða að hann var að reyna að gera eitthvað slæmt með því; þá er þetta, hvað myndi gerast, myndi hunsa aftur heimilisfang foo virka, sem veldur því að virka til að þegar aftur til að framkvæma þessi númer. Og þá slæmur hlutur getur gerst. Er þetta skynsamleg alla? Og hvernig getum við vernda gegn þessu? Allar uppástungur? Í grundvallaratriðum, inni hugsanlega foo, hvernig getum við stöðva til tryggja að það getur ekki gerst? Áhorfendur: Ef stærð 12 er farið, þú vildi úthluta fleiri minni? MARIA ZLATKOVA: Uppástunga er, úthluta viðbótar minni stærð yfir. Reyndar getum við gert eitthvað mikið einfaldara en það sem vel. Við getum bara fá band lengd af þeim rökum að er gerður, athuga hvort það er minna en eða jafnt og 12-- sem er það sem við viljum það að vera vegna þess að við viljum ekki það að fara yfir mörk biðminni okkar. Og þá ef það virkar ekki, við geta unnið með rök. Og þá ef það gerist, við viljum í raun og veru til að Yello hugsanlega á notanda. En þetta er hvernig við viljum gera það. Já. Áhorfendur: Gætirðu útskýra memcpy raunverulegur fljótur? MARIA ZLATKOVA: Ó, fyrirgefðu. Já. Memcpy tekur hvað is-- miður, OK. Memcpy tekur hvað er í bar, hvað er liðinn á foo sem stjórn lína rifrildi. Svo það er að fara að taka argv1. Argv1 heitir bar hér. Svo það er að fara að taka bar og það er að fara að afrita það inn c. Áhorfendur: OK. MARIA ZLATKOVA: Og það er að fara að copy-- þriðja rök átt rétt að hversu mikið það er að fara að afrita inn c. Áhorfendur: Ah. Svo að afrita þessa manns allt það þá. MARIA ZLATKOVA: Já, það er að afrita allt það. Jebb. Fyrst, við að tryggja að bar er ekki jafnt á núll vegna þess að það er bendi. Þá fáum við strenginn lengd bar. Við að tryggja að það sé minna en eða jafnt og 12. Og þá vegna þess að við höfum gerði viss um, getum við í raun memcpy og vera viss um að það er í lagi. Einhverjar spurningar? Great. Ég hef tvær satt eða ósatt spurningum. Getur einhver sagt mér strax ef þær eru sannar eða rangar? Já, það er ósatt. Nákvæmlega. Báðir þeirra eru rangar. Svo nota eitt lykilorð er aldrei mjög góð hugmynd því ef einhver veit lykilorðið þitt, þeir geta bara nálgast allar aðrar reikningana. Og þá tákn ekkert gert til að tryggja öryggi. Við ættum að líta yfirleitt fyrir HTTPS stað HTTP og vefslóð. Og nokkrar aðrar gerðir af árásir sem við hefur minnst á, að Davíð hafi nefnt í fyrirlestur, SQL innspýting árásir. Við sáum þegar að ef við don't-- á CS50 fyrirspurn virka gerir viss um að SQL innspýting árásir geta ekki átt sér stað. En ef við vorum ekki að nota CS50, vitna, unquote "í fyrirspurn," yrðum við að ganga úr skugga um að notandi inntak er í raun ekki nokkur SQL fyrirspurn sem mun valda öllum töflur okkar til að vera niður eða eitthvað slæmt að gerast með hjá okkur. Session ræna er annar tegund af árás sem gerist þegar slæmar maður notar fundur sumir fórnarlambsins ID til að fá aðgang tenging upplýsingar. Svo mjög léttvæg dæmi um það er eins og ef við höfum opinber tölva, þá slæm manneskja skráir sig og þá þeir hafa smákökur sem eru vistuð. Og smákökur breytast ekki fyrir setu. Þá höfum við fórnarlambið fara í og inn í viðbót. Smákökur breytast ekki í tiltekinn fundur. Og þá fórnarlambið skráir sig inn the website og þá skilur. Og þá sá sem fer aftur getur þá samt notað fundur ID þeirra að nálgast upplýsingar þeirra. Svo er það eitt dæmi um hvernig það gæti gerst. Og þá myndi ég ekki hafa áhyggjur of mikill um ákveðna kóða eða neitt svona sem gæti valdið þessu, en hafa einhverskonar hugmynd hvað breytur sem taka þátt í þessu eru. Og þá notfæra haus gögn er annar tegund af árás sem hefur David hefur talað um. Og það vísar bara til hvað getur gerst þegar svar, HTTP Viðbrögð inni haus okkar er ekki sótthreinsa almennilega. Og eitthvað af fields-- td ef einhver birtist einn af haus gildi að innihalda neitt meira en hvað þeir ættu contain-- og raun innihalda, til dæmis, 200 OK stöðukóði, þá gæti hugsanlega gert illgjarn það þegar þeir eru ekki að. En ég myndi ekki hafa áhyggjur of mikið um tiltekna kóða sem gæti valdið þessu, bara svona skilning háttsettum svoleiðis. Ég held að þetta sé allt að við verðum að ná. Amazing. Einhver hefur einhverjar spurningar um eitthvað af því að við falla? Já. Áhorfendur: Svo einn svoleiðis meira skipulagningar spurning. Er efni aðallega beinst á það eftir spurningakeppni 1? MARIA ZLATKOVA: So Spurningin er, er efni áherslu aðallega á það eftir spurningakeppni 1? Svo er áhersla á eftir quiz 1, að undanskildum að við þurfum að leggja áherslu á hluti í pset5 og mikið af gögnum mannvirki að við falla. Og við getum ekki sagt að við getur hunsa neitt áður að vegna þess að það byggir á það eins og heilbrigður. Svo leggja áherslu á það, auk pset5 efni eins þ.mt tengd listum, stafla, biðraðir og allt sem Hannah fór yfir. HANNAH Blumberg: Hægri. Já, fórum við yfir allri C efni Í upphafi mjög fljótt. En vertu viss um að endurskoða það. Fara til baka og horfa á quiz 0. A par meira skipulagningar athugasemdum, bara á meðan við höfum athygli þína. Við erum að fara að hafa skrifstofutíma bæði á mánudag og þriðjudag. Þeir eru að fara að vera í MD 119. Þetta er allt á vef, þannig að ef þú heyrir það, engar áhyggjur ekki. MARIA ZLATKOVA: 08:30 til 11:00. HANNAH Blumberg: Já, 08:30 til 11:00. Við munum vera þar. Við munum vera þar til að svara spurningum. Það er nokkuð slappað og gaman. Þú krakkar geta spyrja spurninga sem þú ert með á spurningakeppni 1. Og quiz 1 er á Miðvikudagur, svo gangi þér vel. Ef þú hefur einhverjar spurningar, kannski koma að tala við okkur hér einn-á-einn. Cool. Kærar þakkir. MARIA ZLATKOVA: Takk kærlega, krakkar. Áhorfendur: Yay. [Applause]