[00:00:02] [Tónlist spila] HANNAH: Hi, allir. Þakka ykkur kærlega fyrir að koma út í ógeðslegur veðri fyrir spurningakeppni eitt endurskoða setu. Eins og þú krakkar vita, quiz einn er þetta miðvikudag. Þannig að við erum að fara að fara í gegnum fullt af efni. DAVIN: Hey, get ég sagt eitthvað alvöru fljótur? HANNAH: Já, Davin er að fara að segja eitthvað alvöru fljótur. DAVIN: Sorry. Bara raunverulegur fljótur, ef þú hefur einhverjar spurningar um próf, getur þú farið á netinu. Fara á 2014 quiz einn, um próf. Það fékk flutninga um hvar á að fara, hvenær á að fara. Ef þú ert samtímis skráðir, erum við fara að hafa makeup quiz á 05:30. Eða ef þú sendir mér mál, þú hefur einhverja aðra útgáfu. En 05:30 er að gera upp tími á miðvikudag. En ef þú hefur einhverjar spurningar, almennar spurningar, á netinu hefur alla flutninga. Svo að athuga það fyrst. [00:00:47] HANNAH: Awesome. Svo er hér stór listi af efni að við erum að fara að fara í gegnum í dag. Ég ætla að ná öllum C efni, sem er að fyrsta dálki. Svo C efni sem við falla eftir quiz núll. Byrjar með tengdan lista, sem felur ábendingum. [00:01:05] Allt í lagi, þannig að við sáum þetta í síðustu endurskoðun fundur, þannig að ég ætla að fara í gegnum þetta er svolítið hraðar. Bara hækka hönd þína ef þú vilt mig til að hægja á eða takast eitthvað frekar. En við notum tengd listum því við byrjuðum í C með fylki. Og fylki eru frábær, en Vandamálið er að þeir hafa fasta stærð. Tengdir listar leyfa okkur að búa til virk stór gögn uppbygging. [00:01:28] Og við höfum undirstöðu starfsemi okkar, setja, eyða, og leita. Og við getum gert innleggi í versta tilfelli stöðug skipti ef við setjum bara það í upphafi. Eyða og leita, versta ræða stór ó af n tíma. Svo aftur, bara til að snúa gegnum þessar myndir, Ég veit að við sáum þessar síðasta sinn, en við vilja til að halda utan um tengda listanum okkar með því að halda utan um yfirmaður tengda listanum okkar. Þar sem við vitum að hver hnúta okkar er bara að fara að benda á Næsta hnút í tengda listanum okkar. [00:01:58] Svo er það hvernig við höldum utan. Jafnvel þó að þetta eru ekki samfelld stykki af minni, við getum fundið þá bara með fylgja mismunandi örvum. Hér er uppbygging okkar fyrir tengda lista hnút. Við sáum þetta síðasta sinn. Við höfum struct hnút okkar. Og það hefur tvo eiginleika. Númer eitt, í raun gildi viljum við geyma. Í þessu tilfelli, er það heil tala. Það gæti verið streng, gæti það vera bleikju, hvað sem þú vilt. Og þá verðum við að halda utan um næsta hnút í tengda listanum okkar. Svo það er að fara til vera a bendi á næsta hnút. Ef þú varst bara að gera leita, eins og ég sagði áður, þú vilt að fylgja örvarnar niður. Innsetning, viltu halda utan hvar restin af listanum er. Og þú vilt að beina höfðinu að benda á nýja frumefni okkar, sem í þessu tilfelli er einn, og þá mun benda til sem eftir er af tengda listanum. Svo aftur, ég veit að þetta er lítið hluti af a endurtaka af spurningakeppni núll. Þannig að við verðum að vera mjög varkár um í hvaða röð við gera þessar pointings svo við gerum ekki missa utan um aftan á listanum. OK, einhverjar spurningar með bara ein tengd listum? Awesome, OK, flott. [00:03:06] Svo nú erum við að fara að fara á eitthvað bara örlítið flóknara, tvöfalt tengd listum. Svo til viðbótar við að halda lag af næstu hnút, við viljum líka að halda utan af fyrri hnút. Og þetta gerir okkur kleift að ef við erum á einhverjum tímapunkti í tengda listanum okkar, ekki aðeins að fara fram, en einnig kunnugt aftur á bak. Því eins og við sáum í eintengdan lista, ef við vorum á einhverjum hnút, og allt í einu, ákváðum við, reyndar, ég vil fara að hnúturinn rétt fyrir mér, þú vilt að fara alla leið aftur til höfuðs og kunnugt gegnum þar til þú fannst hnúturinn þú varst að leita að. [00:03:35] Svo gerir þetta hluti örlítið auðveldara þar sem við erum reyna að kunnugt gegnum tengda listanum okkar. En það þarf okkur að halda utan um einn meira músina, svo einn hnút stjörnu. Allt í lagi, svo hér kemur skemmtilega hluti. Við erum að fara að æfa framkvæmd fjarlægja fyrir tvöfalt tengd listum. Svo er þetta eitthvað sem er algerlega sanngjarn leikur fyrir próf. Það sýndi sig á síðustu Skyndipróf. Svo ákveðið að vera tilbúinn að kóða svolítið í C Ekki gleyma að með öllum þetta gaman PHP og JavaScript, við höfum enn að muna að gera C. Svo bursta upp á að ef þú ert að tilfinning ryðgaður. [00:04:12] Allt í lagi, við skulum sjá hvort við getum gert þetta. OK, flott. Þannig að við erum að fara að reyna að breyta rétt í hér, og vonandi fer þetta eins og til stóð. Allt í lagi, er einhver vilja til að gefa mér tillaga um hvernig ég ætti að byrja? Eina forsenda ég gerð er að ég þegar hafa uppbygging skilgreindur eina sem ég sýndi á síðustu síðu, á síðasta renna. Og ég er að geyma höfuð Tengd listi í sumum músina heitir lista. Hefur einhver vilja til fá mér byrjaði? [00:04:42] Áhorfendur: Getur þú búa til nýja hnút að hringja í gegnum listann? [00:04:45] HANNAH: Awesome, svo við erum að fara að búa til ný hnút að skríða í gegnum listann. Mér finnst að. Ég verð bara að kalla það bendi ef það er allt í lagi. Og hvar ætti það að byrja upphaflega? [00:04:57] Áhorfendur: Sennilega á yfirmaður listanum. HANNAH: Beautiful. Við viljum byrja á höfuðið, sem Ég sagði er að fara að vera geymd í listanum. Awesome. Svo langt, svo góður. Og nú, markmið okkar er að kunnugt gegnum listann þar er að finna hnút með gildi n að við viljum eyða. OK? [00:05:13] Svo er nú sá hluti þar við viljum kunnugt gegnum. Getur einhver benda a leið til að kunnugt gegnum? [00:05:19] Áhorfendur: Lykkja. [00:05:20] HANNAH: Lykkja. Ég elska það. Sérstaklega, við getum reynt á meðan lykkja. OK, og við vitum að við höfum náð the endir af listanum okkar þegar það? Áhorfendur: Þegar bendillinn er null. HANNAH: Þegar bendillinn er null. Beautiful, ég elska það. OK, flott. Svo hryggur ef hljóp Brace minn er konar detta ekki á skjánum. Við tókum það aftur. OK, flott. Hvað er næst? [00:05:48] Þannig að við vitum að við viljum eyða hnúturinn sem hefur gildi n. Svo skulum finna tilfelli þar finnum reyndar hnút okkar. Svo hvernig myndi ég athuga það? Ég myndi bara segja ef músina, og þá ef ég vilja fá verðmæti út úr bendi, Ég bara arrow n, jafngildir n, breytu að við gaf þessa aðgerð, sem hnút sem við viljum í raun og veru eyða. Einhverjar spurningar upp fyrr hér? Allt í lagi. OK, svo nú skulum teikna a fljótur mynd á borð til að sjón þessa. [00:06:24] Svo skulum segja að það er yndislegt hnút okkar. Og það hefur gildi, ég bara segja fjórir. Og það bendir til næsta hnút í tengda listanum okkar. Og það er ekkert fyrir það. Þannig að við höfum fyrri okkar benda að engu. Í þessu tilfelli, benda okkur aftur á bak. OK, bara að setja upp minn tengd lista hérna. Og við höfum lista sem vísar að þessari uppbyggingu til að byrja með. Ég teikna einn meira fyrir sakir heilleika. OK. Ég skal benda þessum framherja. Og ég skal benda á að einn til baka. Úbbs, því miður. Já, fékk þetta aftur á bak. Gera það aftur. OK, það sem við förum. Allt í lagi, fékk það. OK, hér er mynd af okkur. [00:07:21] OK, þannig að við viljum íhuga tveimur tilvikum. Fyrsta mál er ef hnút við viljum eyða er á mjög upphafi listanum okkar. Og þá er það annað tilfelli sem við viljum að íhuga er ef það er einhvers staðar annars. Ég skil að þetta algerlega sóðalegur teikna með öllum útþurrkun minn, en vonandi munum við reyna að gera þetta skýrt með nokkrum kóða. [00:07:40] OK, þannig að við skulum ná málið þar sem við fundum hnút okkar, og það er á mjög byrja á tengda listanum okkar. Einhver gefa mér tillaga hér um hvað Ég ætti að gera í raun fjarlægja hnút okkar? Það er svolítið erfiður. OK? [00:07:56] Áhorfendur: Þú þarft að taka hnút sem myndi vera fyrir það og gera það benda til að eitt sem væri á eftir honum, og taka hnút sem væri eftir það og gera það bent til hnút áður en það. HANNAH: Einmitt. OK, svo er þetta málið where-- við höfum tvö tilvik. Við höfum því tilviki að hnút sem við erum að leita að er framan á listanum. OK, og þá málið að þér lýst er annars, ekki satt? Það er einhvers staðar annars staðar á listanum. Svo þú segir, við þurfum að líta á hnút fyrri, og gera fyrri hnút benda á næsta hnút. Svo skulum segja að við erum reyna að taka út fimm í mjög sóðalegur teikningu mína hérna. Við viljum tryggja að Four Points nú í sex. Fjórir í næstu stig í sex. Og sex í fyrri stig til fjórum. Það er markmið okkar hér, ekki satt? Þetta er það sem ég held að þú bara sagt þarna. [00:08:56] OK, þannig að við skulum fá að fyrsta verk. Við skulum gera hafa fyrri bendi fyrri. Svo fjögurra er við hliðina að benda á hvað? Einmitt, í þessu tilfelli, sex. Svo við ættum að segja músina, næst. OK? Allt í lagi. Svo skulum við fá losa af this ljóta mynd og reyna að draga örlítið ágætur einn. Við höfum lista höfuð okkar hér. Og það bendir til fyrsta hnút í tengd lista okkar, sem við sögðum er fjórir. Hér er annað hnút okkar, fimm. Og í þriðja hnút okkar, sex. Bara að reyna að draga nákvæmlega sama mynd, bara smá meira hreinlegur. OK, svo fjórum er næst upphaflega bendir til fimm. Næstu stig til sex fimm er. Sex er fyrri stig í fimm. Og fimm er fyrri stig til fjórum. Svo miklu betur! OK, flott. [00:10:04] Svo nú, hvað við gerðum bara hér, þessi lína af kóða, sem segir bendi fyrri næst, svo hvað þýðir það? Það þýðir að ef við erum að horfa á fimm, fara til baka hnút, og það er næst ætti nú benda til fimm er við hliðina. Svo í raun, hvað það er að gera er sem er að hreinsa þetta örina og gera það að sleppa rétt yfir fimm. Er það ljóst? Ég veit það getur verið svolítið sketchy. Ég séð höfuð kinkar kolli. Það er gott. OK, flott. Nú, hvað er næsta skref? [00:10:39] Ég hef endurstilla næst. Nú, sem önnur arrow þarf ég að breyta? Þessi hérna. Six er fyrri. Við viljum ekki sex er fyrri til að benda á fimm lengur. Við viljum það til að benda á fjórar. Er myndin skynsamleg? Svo nú getum við í raun að taka fimm útskráning. Svo skulum við fá þessi stykki. Hvað ætti ég að gera áður en ég endurstilla sex er fyrri til fjórum? Einhverjar hugmyndir þar? [00:11:14] Áhorfendur: Free hnút milli þá með því að setja það til að núll? HANNAH: Cool. Ákveðið, enda markmið okkar er að fara að vera að losa hnút. Þannig að við getum gert það hérna. Free músina. Algjörlega. En jafnvel áður en það, skulum just-- markmiði rétt okkar hér er að setja músina næst fyrri jafn músina fyrri. Ég veit að þetta er að fá nær upp. OK, við skulum take-- kaldur. Geta allir séð þetta botn lína? Eða er það frábær pínulítill? [00:11:50] Svo áður en við framkvæmum þessi lína hér, við viljum til að tryggja að bendillinn næsta er ekki null. Vegna þess að ef bendillinn næst er null, hvaða villa mun ég fá þegar ég reyni að tilvísun núll músina? Áhorfendur: Seg kenna. HANNAH: A seg kenna, falleg. OK, þannig að ef það er ekki null, þá getum við endurstilla. Og við höfum sex stig á ný til fjögurra. Spurningar Fram til þessa benda? Já? [00:12:17] Áhorfendur: Í fyrsta þinn ef yfirlýsingu, gerði þig meina að hafa ör næst, eða [inaudible]? HANNAH: Ég ætlaði músina ör n. Svo í grundvallaratriðum, það sem ég er að reyna að gera er að segja, núverandi hnút sem ég er iterating yfir, núverandi hnút sem Ég er að horfa á, ég ætla að geyma í músina. Og ég vil vita bendi er gildi, sem í þessu tilfelli er n. Og ég vil sjá, er hnúturinn Ég er að leita fyrir hnút Ég er miða að því að eyða? Svo er það hvers vegna við höfum hér músina n. [00:12:47] Áhorfendur: Svo arrow fara til n setur þú gildið og geyma það í hnút kallast n? [00:12:55] HANNAH: Svo það er eins og ef ég er fara í gegnum þetta tengda listanum og benda á fimm. Ef ég vil fá þessi gildi, ef Ég vil fá að tala, 5, Ég verð að gera músina ör n. Cool? Já. [00:13:07] Áhorfendur: Er n nafn breytu? HANNAH: Já. Svo ef við flettir aftur einn renna, n er nafn af verðmæti inni á hnút í tengda listanum okkar. Og ég veit að það er hægt að fá smá svolítið ruglingslegt vegna þess að við einnig hringir hlutur að við viljum eyða n. Svo er það þar sem ein lína kemur frá. Já? [00:13:27] Áhorfendur: Hvað hefur þú [Inaudible] hvernig þeir vinna? A bendi [inaudible]? [00:13:35] HANNAH: Jú. Ertu að tala about-- sem lína? Áhorfendur: Síðasta lína [inaudible]. [00:13:44] HANNAH: Jú, OK. Svo skulum líta á myndinni í Til að reyna að útskýra þetta. Fyrirgefðu, fyrir myndavél, spurningin var getum við útskýrt bendi arrow næsta bendi fyrri. OK, þannig að við skulum segja að við erum á fimm og markmið okkar er að eyða fimm. Svo músina næst, sem af þessum þrjú hnúta er að gefa okkur? Það færir okkur að sjötta hnút, ekki satt? [00:14:10] OK, svo nú erum við að biðja fyrir fyrri sex er. OK? Og við erum að endurstilla þetta að vera jafn fjórum, sem gerðist að vera fimm er fyrri. Ég veit, það er frábær erfitt að halda utan um. Ég mæli virkilega þú teikna myndir ef þú færð spurningu eins og þessa. Já? [00:14:30] Áhorfendur: Er ástæðan fyrir því að við höfum ekki a [inaudible]? [00:14:37] HANNAH: Einmitt. Svo spurningin var, hvers vegna við ekki að athuga hér? Hvers vegna eigum við ekki að þurfa að athuga að bendillinn fyrri er ekki jafn núll? Og það er vegna þess að við höfum þegar aðskilin út raunin ef bendillinn er í upphafi. Mjög góð spurning. Allt annað á þessu? OK, flott. Svo skulum klára það upp. Við erum næstum þarna. [00:14:59] Svo hvað ef það er í forsvari? Hvað ef í stað þess að reyna að eyða fimm, við vildum í raun að eyða fjórum? Hvað myndi ég að gera? Jæja, ég vil að endurstilla höfuð mitt við það? Hrópa það út? Áhorfendur: The einn eftir það. HANNAH: Beautiful. OK, svo við viljum lista til að benda til hvað bendillinn okkar næsta hnúturinn. Good. Og bara fyrir heilleika áratugnum sakir, við viljum langar að athuga að svo lengi sem listi okkar er ekki núll, svo lengi sem lista okkar er ekki tómur, þá þarf að setja fyrri jafn okkar til null. Spurning svo langt? Eitt skref í burtu from--? [00:15:53] Áhorfendur: Væri ef Listinn er ekki jafn núll? [00:15:55] HANNAH: Já, þú ert algerlega rétt. Ég er svo leitt. Er listi er ekki jafn núll. Awesome. Reynt að koma þessu öllu á skjánum. Það er góður af falla burt. Því miður, krakkar. Og síðast en ekki síst, allir við þurfum að gera er að fara aftur. OK. Það var mikið crammed í mjög fljótt. Taktu annað að líta þetta aftur. Segðu mér ef þú hefur einhverjar spurningar. Já? [00:16:20] Áhorfendur: Ef listinn er að höfuð, then-- bíða, Nevermind. [00:16:26] HANNAH: OK, gott. Svo er þetta ef listi er á höfði, við að fjarlægja það til hvað við settum. Já? [00:16:31] Áhorfendur: Getur þú útskýrt sem fyrst ef staðhæfing aftur? Ef bendillinn á móti n er jafnt n? HANNAH: Jú. Svo er markmið okkar á þessu öllu virka að eyða hnút sem hefur gildi n. Þannig að ef við finnum, eins og við erum iterating gegnum listann okkar, hnúturinn með gildi n, það er sá sem við viljum eyða. Svo öll við að eyða með gerist innan þess stór ef yfirlýsingu. Er að vit? Cool. Já? [00:16:59] Áhorfendur: Kannski þú bara getur ekki séð það, en ekki þú þarft einnig línu til að fletta í gegnum listann? HANNAH: Awesome. Við skulum koma þessu upp smá, og við munum kasta það rétt í botn. Kannski stjórnin vildi ' verið örlítið betri hugmynd. Svo hvernig væri að ég flyt músina áfram? [00:17:17] Áhorfendur: Pointer jafngildir músina plús einn. [00:17:20] HANNAH: Beautiful. Svo að leyfa okkur að áfram iterating gegnum. OK. Áhorfendur: Vildi ekki að það að vera annað? HANNAH: Eitt sinn? Áhorfendur: Væri ekki það að vera er annað eftir stóra gamla ef yfirlýsing [inaudible]? HANNAH: Hvaða hluti? Fyrirgefðu. [00:17:38] Áhorfendur: The traversal, ætti ekki það að vera í annað? HANNAH: Þú algerlega gæti haft annað. Því að ég hef aftur rétt þar, þú þarft ekki að öðru. En já, góð spurning. OK, já? Áhorfendur: Getum við hugsað músina sem er að flytja í gegnum listann sem taka á gildi hvers hnút í listanum? Eða ættum við að hugsa um það sem konar ytri á listann? [00:18:00] HANNAH: Annaðhvort einn er fínn, held ég. The vegur ÉG ímyndað sér er Ég segi, OK, ég er bendill. Og þetta er ég. Þetta er hönd mín. Ég ætla að benda á mismunandi hlutir sem mig langar til að kunnugt gegnum. First, ég ætla að benda yfirmaður listanum. Og það segir mér að ég er fara að benda á fjórar. Og svo ég, að vera utan við listann, Ég get bent á hvert þessara þátta. Þannig að ég hugsa um sjálfan mig sem músina. Áhorfendur: Svo þegar þú eyðir einn af þeim þáttum, þú eyðir sjálfur, svo að segja. HANNAH: Einmitt. Svo þú eyða hlutur þú ert að benda á. Svo í dæminu að við sáum þar sem við erum reyna að eyða fimm, þegar ég er að benda á fimm, Ég vil eyða sem ég er að benda á. Nákvæmlega rétt. Já? Áhorfendur: Höfum við séð um að tilfelli þar sem n er ekki á listanum? HANNAH: Ef n er ekki á listanum? Allt sem er að fara að gerast er að þú ert fara að iterate gegnum og kunnugt í gegnum, og þá, þú ert að fara að fá að músina tilvera null, og þá þú ert að fara að gera. [00:18:48] Áhorfendur: Svo eigum við að fara aftur eitthvað? HANNAH: Við gætum. Leiðin að ef skilgreint þetta virka, segi ég bara að það skilar ógilt óháð. En þú gætir hafa eitthvað eins aftur heiltölu og hafa það aftur neikvæð 1 ef það tekst ekki. Eitthvað svoleiðis. Spurningar with-- já? Áhorfendur: [inaudible]? HANNAH: Sorry? Áhorfendur: [inaudible]? HANNAH: Jú. Svo er að actual-- Þegar við höfum gert allt þetta verk að færa allar þessar örvar í kring, allt okkar Markmiðið var að losna við hnút að við erum að leita að. Þannig að í þessu tilfelli, frjáls músina, ef ég er að benda á fimm, það er eins og að þurrka þetta miðju hnút. Það er ókeypis bendill hluti. Að skynsamleg? [00:19:29] Áhorfendur: Svo jafnvel hugsun þú gerðir ekki [inaudible]? [00:19:31] HANNAH: Þannig að við ráð fyrir við upphaf við fengum lista sem var already-- þeir höfðu setja þetta saman. Svo í því skyni að byggja þetta lista, hlýt þeir [inaudible]. Cool. Allt annað með þetta? Já? [00:19:46] Áhorfendur: Hvað ef listinn ekki jöfn núll línu? [Inaudible]? HANNAH: Hérna? Áhorfendur: Já. HANNAH: OK, allt sem ég er að gera er ég bara að gera viss að áður en ég reyni að dereference lista, áður en ég reyni að opna fyrri, Ég vil vera viss um að það er ekki null svo ég fæ ekki seg kenna. Cool. [00:20:08] OK, ég veit að þetta var alveg a einhver fjöldi til að komast í gegnum. Þannig að þetta renna verður í boði fyrir þig. Svo þú getur farið í gegnum það nánar. Já? [00:20:17] Áhorfendur: Hvers vegna listinn [inaudible]? HANNAH: Jú. Svo listi bendir raunverulega til þessi þáttur hérna, fyrsta þáttur í listanum. Svo það er ekki hægt að hafa fyrri. Já? [00:20:31] Áhorfendur: Er bendi benda á sama heimilisfang í minni? Er það benda til sömu heimilisfang í minni sem hnút að það er að benda á? [00:20:40] HANNAH: Já, bendir það við þessa hnút í minni. [00:20:43] Áhorfendur: Einmitt, svo þegar þú [inaudible]? [00:20:47] HANNAH: Í vissum skilningi, já. OK. Allt í lagi, við skulum fara með þetta. Og ef þú hefur fleiri spurningar, kyrr í lok, og við getum farið í gegnum það aftur. OK, flott. Nú fáum við að fara að kjötkássa borðum, tilraunir, og tré, sem þú fékkst frábær kynnast í p-setja fimm, Speller. [00:21:04] Svo er kjötkássa borð bara array með eintengdan lista eða tvöfalt tengd listum koma burt af því. Þannig að við höfum einhvers konar af tengin array. Og hvernig vitum við hver af þessum fylki fötunum til að komast inn, við notum kjötkássa virka. Svo í þessu tilviki, getur einhver giska á hvað kássufall væri bara byggt á einhverjum af inntak og framleiðsla? [00:21:31] Áhorfendur: Letter fjöldi stafrófinu. HANNAH: Einmitt. Það setur bara þá í stafrófsröð. Allt sem byrjar með A er sett í fyrsta fötu. Allt með B er sett inn í Annað fötu, svo á og svo framvegis. Awesome, OK. Og kjötkássa virka er einhver fall sem tekur í orði og mun segja þér hvað fötu það tilheyrir í. Svo sem færsla í okkar array það tilheyrir í. [00:21:55] Svo í hvert sinn sem ég gefa mína kjötkássa virka orð, það ætti að segja mér það sama setja hvert einasta skipti. Þannig að ef við notum kjötkássa virka frá fyrra glærunni þar sem við erum að flokkun eftir að fyrsti stafur í stafrófinu, í hvert sinn sem ég gef mínum kjötkássa virka "epli" það ætti alltaf að gefa mér aftur 0. Svo ef ég hef epli að setja í kjötkássa borð mitt, ef ég gef "epli" í kjötkássa virka minn, það ætti að segja, fara að setja það í fötu 0. Ef ég er að leita að óákveðinn greinir í ensku epli í kjötkássa borð mitt og ég segi, þar hreystiverk epli lifandi, þú spyrja kjötkássa virka. Og það segir, fara Fata 0. Allt í lagi? Spurningar með kjötkássa virka? Awesome. [00:22:34] Hér er örlítið meira nákvæmar útskýringar um hvað kjötkássa virka gæti litið út. Allt í lagi. Nú, vandamálið með kjötkássa virka er í fullkomnum heimi, við myndum bara hafa einn hlutur í hverri fötu. En í raun og veru, það er ekki aðeins eitt orð sem byrjar með A. Það er ekki aðeins eitt orð sem byrjar með B. So í þessu tilfelli, ef við skyndilega fá "Berry" og við viljum að setja það í kjötkássa töflunni okkar, og við sjáum, ó, nei, banani er nú þegar, hvað erum við ætla að gera? [00:23:03] Jæja, höfum við tvo valkosti. Fyrsti valkosturinn er línuleg leit, sem bara þýðir fara finna næsta tóm fötu. Fara að finna næsta tóma array færslu. Og bara setja "Berry" þar. Svo ég veit að það er ætlast til að fara með banana í fötu einu. En bara setja það í fötu þremur, því fötu þrjú er tóm. Annar valkostur er sennilega hvað þú framkvæma í þinn p-setja, þar sem þú hafði sérstakt læsa. Svo að hver fötunum þínum, hvert array þætti þína, ekki aðeins heldur eitt orð, en í raun og veru heldur bendi til lista af orðum. Þannig að ef þú hefðir banani í kjötkássa töflunni og þú vildir skyndilega að bæta berjum, ekkert vandamál. Bara bæta berjum á til enda, eða upphaf, um tengda listanum þínum. OK, ógnvekjandi. Spurningar með kjötkássa töflur áður en við höldum á? [00:23:58] Allt í lagi. Tré og reynir. OK, þannig að þetta var annar valkostur til að hrinda orðabók. Þú gætir hafa gert a reyna. Svo það er sérstakt konar tré sem hegðar sér eins og multi-láréttur flötur kjötkássa töflunni. Svo þú munt sjá mynd þar sem þú ert með array sem bendir til fullt af fylki að benda á fullt af fylki að benda á fullt af fylki. Og við munum sjá nákvæmlega hvað það myndi líta út eins og á framtíð renna. Og almennt, tré er bara allir gagnagrind þar sem gögn er skipulögð í sumum stigveldi. Svo þar sem við sáum við höfum einhvers konar skilning af efra stigi, næsta stig, a næsta stig, a næsta stig. Svo er þetta sennilega ljóst með ákveðin dæmi. Svo hér er tré okkar. Þú getur séð að það hefur einkum stigum að við byrjum með því rót hnút, einn. Og við getum farið niður í gegnum tré okkar. [00:24:50] A tvöfaldur tré er ákveðin tegund af tré. Og eina forskrift tvíundartrés er að hver hnútur hefur á flestum tveimur laufum. Svo þú ert ekki að fara að sjá eitthvað Af þessum hnútar hafa þrjú eða fjögur eða einhver önnur tala af laufum. Og þá jafnvel nákvæmari er tvöfaldur leita tré þar sem hvert hnút vinstra megin við hnútur er að fara að hafa gildi minni. Og hvert gildi til rétt er að fara að vera stærri. Svo ef þú sérð 44 er rót okkar, til vinstri, 11, 22, og 33 eru allir minni en rót okkar. Og á hægri eru tölur bigger-- 66, 55, og 77. Og þessi eiginleiki sannast á hverju stigi í trénu. [00:25:37] Svo þegar við förum niður 22, 11, og 33, enn 11 er minni en 22 og 33 er stærri en 22. Og þetta gerir það auðveldara að leita því ef við erum að leita fyrir a tala, við vitum nákvæmlega hvaða útibú að fylgja niður. Þannig að þetta ætti að minna þig á smá tvöfaldur leit. Já? [00:25:56] Áhorfendur: Svo þegar þú ert lýsa tvöfaldur, þú sagðir það hefur á flestum tveimur laufum? HANNAH: Mm-HM. Áhorfendur: Gæti það hafa minna? HANNAH: Já. Svo skulum segja, til dæmis, þú ekki hafa enn ýmislegt og þú getur ekki fylla upp allur þinn lauf, það er allt í lagi ef maður hefur einn. OK? Awesome. Allar aðrar spurningar um tré? OK. [00:26:16] Til baka á reynir okkar eins og ég var að tala um svolítið fyrr, hvernig við höfum þessar multi-láréttur flötur fylki. Þannig að í þessu tilfelli, byrjum við á toppinn. Og við getum fylgst hverjum orð niður. Svo skulum segja að við vildum að leita að Turing. Við byrjum á T, fylgja henni niður til fjölda sem inniheldur U, og fylgja henni niður þar til við ná þessu litla delta sem segir okkur, já, þú fundið orð. Ljóst á reynir? Nokkuð að fara þarna? Já? Áhorfendur: Er tákn delta hafa að hernema pláss innan try? HANNAH: Já, svo er það ekki endilega einu sinni að vera a Delta. En við þurfum einhvern hátt til segja okkar computer-- miður, svo að við vitum að TUR er ekki orð. Vegna skulum segja að við höfðum ekki þessi hugmynd um Delta, þetta hugtak Hamingju þú fundið orð, það myndi fara í gegnum og kunnugt T-U-R, og þá segja, ógnvekjandi, ég fann það! Það hlýtur að vera orð. En það er í raun ekki. Við viljum allt Turing að vera orð. Svo verðum við að hafa eitthvað á að enda sem segir til hamingju, þú hefur fundið lögmæt orð. Áhorfendur: Svo ef þú hefðir eins 26 stafir í stafrófinu, myndir þú hefur í raun 27 lyklar í prufa þinn? [00:27:24] HANNAH: Awesome, já. Svo í raun, held ég að verður á næstu glæru. Ta-da! Þar sem ef þú ert a hnút í prufa þinn, þú ert fara að hafa 27 börn í stað 26. Einhverjar spurningar með það? Já? Áhorfendur: Af hverju reynir að taka upp svo mikið pláss [inaudible] eins og þú fara? Hvers vegna er það talið vera [inaudible]? HANNAH: Jú. Förum aftur. Spurningin er, hvers vegna eru reynir svo miklu stærri en eitthvað eins og kjötkássa töflunni. Svo fyrir hvert af þessum stigum, jafnvel þótt þær séu ekki dregin hér, þú þarft að hafa öll 26 stafir. Og ástæðan fyrir því að þú getur ekki segja, ó, en eins og fyrir Turing, I þarf ekki að hafa neitt af þeim sömu hlutina á the láréttur flötur af U. Jæja, ef skyndilega þú vildir bæta eitthvað sem var eins og T-H, þú vilt þarft að hafa getu að bæta þessi orð. Svo fyrir hvert einasta bréf, þú ert að fara að hafa að hafa fullt af fylki koma burt af því. Svo er hægt að sjá hvernig það myndi fá mjög stór, mjög hratt. Aðrar spurningar? Allt í lagi. Já? [00:28:29] Áhorfendur: Hvenær eru tilraunir hraðar en kjötkássa matskeið? [00:28:33] HANNAH: Hvenær eru tilraunir hraðar en kjötkássa matskeið? Svo ef þú átt í raun slæmt kjötkássa virka. Svo skulum segja að ég var eins og, hér er kjötkássa virka þinn. Sama hvað orð þú gefur mér, ég er alltaf að fara að setja það í array færslu 0. Og svo við á endanum með bara að setja allt í einu stóru lengi tengda listanum. Og svo leit tími myndi taka í versta falli n ef það er á enda á listanum okkar. Með try, höfum við bara að kunnugt gegnum stafina í orðinu. Svo jafnvel ef við bætt fullt fleiri orð til að reyna okkar, það myndi ekki taka okkur lengur að finna ákveðna orð. [00:29:09] Allt sem við þurfum að gera er að dæmi, í þessu tilfelli, skulum segja að við erum að leita að zoom, við myndum bara að kunnugt yfir Z-O-O-M, fjögur bréf. Svo er það bara lengd orðsins zoom. Það skiptir ekki máli hversu margir fleiri orð við að setja í þessari reyna. Við getum alltaf fá það í þeim fjórum skrefum. Awesome. Já? [00:29:32] Áhorfendur: Svo [inaudible] er fylki, ekki satt? [00:29:34] HANNAH: Mm-HM. Áhorfendur: Ef þú ert leita [inaudible] þarft þú að fara í gegnum array til að finna [inaudible]? HANNAH: Jú. Áhorfendur: Er ekki að taka meiri tíma? HANNAH: Ef ég ætla að segja að array minn er alltaf að fara að vera A, B, C, D, E, F, G, bla bla bla, þannig að ef ég veit alltaf að það er í sömu nákvæmlega röð, ef ég veit alltaf að það er í stafrófsröð, Ég get bara sagt O er fjöldi svo og svo í stafrófinu. Bara hoppa að þeim stað. Vegna muna, með fylki, getum við aðgang allir þáttur þeirrar array í föstu tími ef við vitum hvar við erum að leita. Já? [00:30:09] Áhorfendur: Á fyrri renna [inaudible] 27, en 26 fyrir það fyrsta. [00:30:14] HANNAH: Sorry? [00:30:15] Áhorfendur: Er ekki fyrst einn 0, svo myndi það ekki vera 26? [00:30:18] HANNAH: Jú, þannig að þegar við segjum 27, það er að fara að gefa okkur vísitölur 0 gegnum 26. En ef þú telur raunverulega þá út, það er að fara að vera 27. Góð spurning. Eitthvað annað? Já? [00:30:31] Áhorfendur: Svo eru tilraunir hægari en kjötkássa matskeið? [00:30:34] HANNAH: tilraunir eru að fara að vera í kenning, hraðar en kjötkássa matskeið en taka meira minni. Já? Áhorfendur: [inaudible]? [00:30:45] HANNAH: Fyrirgefðu, ég vissi ekki heyrt í þér. Áhorfendur: [inaudible]. 0-25 gefur þér 26. [00:30:54] HANNAH: 0 til 25 myndi gefa þér 26, ekki satt. [00:30:56] Áhorfendur: Og þá [inaudible]. HANNAH: Hægri. Svo er fjöldi sem við erum að tilgreina fjöldi af hlutur í fylking okkar. Þannig að ef við höfum 27, það er að fara að gefa okkur 0 gegnum 26., sem mun gefa US pláss fyrir, í þessu tilfelli, Ég er ekki þar á meðal úrfellingarmerki. Þannig að við erum að fá 0 í 25 eru fyrstu 26 bókstafir, eða allt 26 bókstafir. Og þá að síðustu hlutur á færslu 26, er að fara að vera að stöðva merkja, eða S. Eitthvað annað? Awesome. Týnt rúm mitt. OK, flott. [00:31:31] Þannig að við snert þegar á þessu. En stóra viðskipti burt milli reynir og kjötkássa matskeið er sem reynir gefa, í kenning, stöðug líta upp sinnum en að nota a heild einhver fjöldi af minni. Allt í lagi, nú höfum við aðeins minna flókið mannvirki, og við munum vera með C, og við munum fara rétt eftir. [00:31:49] Svo stafla, sáum við þetta í fyrirlestri þar sem þú hafa eitthvað eins a stafla af bakka, þar sem það the síðastur hlutur þú setur á mánudaginn er að fara að vera the fyrstur hlutur þú taka burt. Svo er það sem raunverulega skilgreinir stafla er að síðasta sem þú setur á er að fara til vera the fyrstur sem þú tekur burt. Og hugtök sem við notum ef við erum að fara að setja eitthvað, ef við erum að fara að bæta eitthvað við stafla okkar, við köllum að þrýsta. Og ef við tökum eitthvað burt, við köllum það pabbi. Og ef við erum að fara að innleiða stafla, vér þarf að vera viss um að halda utan um bæði stærð og getu. Svo heildarfjöldi staka við getum halda og núverandi fjöldi staka að við erum að halda. [00:32:27] Og mjög álíka, höfum við biðraðir. Og eini munurinn er í stað þess að við stöflum, við sögðum síðasta sem við setjum á er það fyrsta sem við tökum burt. Svo með biðraðir, sem fyrsta sem við setja í er að fara til vera the fyrsta sem við tökum út. Svo er þetta eins og ef þú ert raun að undirbúa á verslun og þú ert að hjálpa, þá fyrsta manneskjan í línu ætti að vera fyrsta manneskjan til að hjálpa. Svo það væri biðröð. [00:32:52] Þannig að við þurfum að halda utan um stærð, getu, og höfuð þar sem við erum að fara að taka á alla framan af listanum í stað á bak. Spurningar um það? Allar C spurningum sem eru að angra þig? Gögn uppbygging, neitt af þessu skemmtilegt? Allt í lagi, flott. Svo ég afhenda það Alison til hoppa í einhvern meiri forritun. [00:33:14] Alison: Oh, munum við sjá. Við munum sjá hversu vel ég gera hér. OK, ég ætla að reyna að fljúga í gegnum þetta efni, krakkar. Hannah fór mjög í dýpt á öllum hlutum hennar. Ég ætla að reyna að gefa þú fljótur sprengja yfirlit svo að við getum fengið að Davin með öllum gaman JavaScript og öryggi hluti kannski þú í raun langar að heyra meira um. [00:33:33] OK, eins og Hannah sagði, ef þú hefur einhverjar spurningar, Ég ætla of hratt, vinsamlegast láttu mig vita. Ég mun svara spurningum eftir þörfum. Svo til að byrja, við erum að fara að byrja með sennilega einn af mjög fyrstur hlutur þú lært með vefnum forritun, heimildir. Svo CHMOD, þú krakkar ætti hef verið húsbændur á þessu með öllum vefnum forritun sem þú hefur verið að gera undanfarið. Það er í rauninni bara stjórn að breytingar heimildir eða heimildir af skrá kerfi hlutum okkar. Að sjálfsögðu, að í raun og veru sjá þetta, ef þú ert hafa allir vandræði með þessum á vandamál stillir, þú gætir hafa notað LS -l, sem er langur, að fá þá skoðun góður af eins og þetta, þar sem þú sérð í raun allt heimildir fyrir skrána. [00:34:16] Og í raun, við erum bara að fara að fara gegnum ansi hratt bara nokkuð mikið hvað hvert þessara meina. Þannig að við höfum d hérna, sem bara stendur fyrir möppuna. Vitanlega hérna, sjáum við rwx, sem er læsileg, writeable og executable. Þetta gæti einnig verið fulltrúa sem bits, sem við munum fá inn á næstu síðu. Svo að hver triad sem við sáum hér, svo það er þrjár triads. Við höfum rwx, r ekkert x og r ekkert x fyrir þessa fyrstu skrá. Það er þetta almenna byggingu. [00:34:49] Þannig að við höfum sumir skrá. Við höfum sumir notendahópur með þessum heimildum. Sumir hóp sem hefur þessar heimildir, og heimur sem hefur leyfi. Þú getur hugsað þetta sem triad. Þú getur hugsað þetta eins og þremur bitum. Svo þeir geta halda gildi allt frá 0 upp 7, sem er hvers vegna stundum við höfðum þú chmod 600 í stað þess að chmod RW hvað sem er. Við munum fá inn dæmi þar. En í grundvallaratriðum, getur þú hugsa af þessum sem annaðhvort bara rwx, eða þú getur hugsa um þau eins og sumir Fjöldi þar sem þetta fyrsta hér táknar fjölda milli 0 og 7, þetta second einn táknar fjölda milli 0 og 7, og sú þriðja táknar fjölda milli 0 og 7, OK? [00:35:38] r hefur gildið 4. w hefur gildið 2 og x hefur gildið 1, sem er hvers vegna þetta leyfi hér yrði chmod 700. Vegna þess að í þessu tilfelli hér, segir það sem við hafa fyrsta hluti þar er snúið á. Þannig að við höfum 4 um les. Annað hluti er snúið á fyrir w, sem er 2, svo nú höfum við 6. Og þriðja hluti er snúið á fyrir x, sem er 1, svo við fáum sjö. Og auðvitað, hópnum okkar og veröld okkar eru hver 0. Svo er þetta líka jafnvirði chmod 700. Og ég myndi örugglega reyna að skilja kortlagning milli þeirra. Ég er ekki viss um að ef það hefur koma upp á spurningakeppni áður, en það væri Spurningin sem ég gæti beðið. [00:36:18] Bara svolítið að fara jafnvel frekar í chmod hér, hér er mjög almenn uppbygging chmod símtali. Svo auðvitað, höfum við chmod hér. Tilvísanir, hvað er átt við er sem við erum að gefa þessar heimildir til eða sem eru við að taka þetta heimildir í burtu frá. Þannig að við höfum hér í leyfi, eins og við höfum gefið þér chmod plús x, eins og við munum sjá fljótlega. a þýðir bara gefa þessum tilteknu heimildir til allra. Gefðu þeim öllum. Svo þú gætir vel hafa u auk x eða g plús x eða o plús X eða heila- og þegar í stað. Svo að fyrsti hluti er alltaf að fara að vera tilvísanir. Hver erum við að gefa þessar heimildir til, eða sem eru við að taka þá í burtu frá? [00:37:03] The second einn er rekstraraðili. Svo þú krakkar hafa að mestu fjallað plús. Þetta gefur leyfi til hver sem þú ert að gefa þeim, en mínus, þá er rökrétt, fjarlægja þá. Svo ekkert of hræðileg þar. Og þá Flasshamir er það sem við ræddum um með að lesa, skrifa eða framkvæmd. Svo plús x þýðir að gefa executable heimildir til allra. Og þá, að sjálfsögðu, sem sérstakur skrá eða möppu. OK? Allir góður með chmod? Ekki svo slæmt? [00:37:37] OK, svo HTML, einhver ykkar eru nógu gömul to-- MySpace aldur? Ég sendi þetta lið mitt, og bókstaflega helmingur fólk horfði á mig eins og ég væri brjálaður. Og ég var eins og, krakkar, við erum ekki að gamli. Komdu. Svo HyperText Markup Language, það er heiðarlega bara leið fyrir þig að sýna ákveðna hluti á vefnum. Svo það er Markup Language. Það er ekki a forskriftarþarfir tungumál. Það er engin rökfræði í það. Það er einfaldlega að breyta vegur sumt er sýnt. OK, svo það er mikilvægt greinarmunur að gera. Það er talið Markup Language, ekki forskriftarþarfir tungumál. [00:38:12] Svo hér höfum við HTML tög okkar. Á þessum renna eru sennilega flest þau sem þú ættir að þekkja og vera mjög sátt við. Svo augljóslega, höfum við HTML tag okkar, sem tilnefni að allt í milli þessara tveggja verður HTML. Við höfum sumir tengilinn, sem augljóslega mun gefa þér tengill á ytri vefsíðu. Sumir titill, innan höfuð okkar hér. Og við höfum líkama okkar með H1, sem er a haus, svo það verður að gera það gott og djörf og stærri. Og þá höfum við nokkur p, sem er a málsgrein. Þú ættir sennilega vita og þekki það eins og hvernig mynd er sett, eru einhverjar aðrar flokkar haus? Ég myndi örugglega vera ánægð með div. Svo þessir hafa meirihluta tags að þú ættir að þekkja. En auðvitað, eins og með allt í CS 50, listinn er ekki tæmandi. Svo tryggja þú bursta upp á það. [00:39:08] CSS, svo CSS, ef einhver ykkar að horfa Málþingið minn frá tveimur vikum síðan, er í raun bara leið að stíll á síðunni? OK, þannig að við höfum sumir Markup Language. HTML, sem sér um bara texta og þar sem það gæti verið á síðunni. En CSS er í raun það sem gerir það nokkuð. Þú gætir hafa þetta í HTML skrár, en eins og við munum tala um síðar, Ég er nokkuð viss um að það gæti næsti renna, það er algengt, og í raun framkvæmd sem við hvetjum raun, fyrir þig að halda þeim aðskilin þegar við tala um MVC og að heil hugmyndafræði. Það er í raun það sem þetta straumar inn. [00:39:42] Svo CSS er bara leið til að gera hlutina líta nokkuð. Það hér, eins og líkami og #title og Upplýsa, þessir eru kallaðir selectors og hvað þeir gera er að þeir velja tiltekna hluti innan HTML skjalinu og gilda hvað stíl, hvað tegund af hlutur sem þú vilt, það tiltekna þáttur þinn vefur síðu. Svo hér höfum við bakgrunnslit og lit og leturfjölskyldu sem er verið að beitt til hvað er í líkamanum. Svo ef við leit aftur hér, það myndi ekki gilda um titilinn. Það myndi aðeins gilda um hvað er í þessum líkama selectors, OK? [00:40:22] Með titli hér, þetta er fara til vera the sami hlutur, lit textans vera blár er bara að fara að hafa áhrif á hvað er innan Titillinn selectors. Eins og upplýsa hér, textinn verður bleikur, hvað er upplýsingar, sem er hérna. Svo það eina sem væri bleikt á þessari síðu er dagsetning, Mánudagur 17 Nóvember, 2014. OK, svo CSS er bara leið til að hafa meiri stjórn over-- já? [00:40:48] Áhorfendur: Hvers vegna gera þú hafa að nota kjötkássa með titilinn? [00:40:51] HANNAH: Næsta skyggna, lofa! Við munum fá það. Svo er þetta vegna við þurfum að nota kjötkássa. Svo selectors taka á þremur form sem við tölum við ykkur um. Ég fyou vilt læra meira, það er nóg þarna úti. Það er frábært CSS skjöl. There er a tag nafn, sem hefur að gera með aðeins þinn venjulegum tags í HTML. Svo h1, p, div, h2, þessir tegund af hlutur. Og við getum bara nefna þá sem er. Svo eins og við sjáum hér með líkami, það er eðlilegt tag. Þannig að við getum bara setja líkamann þegar við erum að tala í CSS skrá okkar. [00:41:26] Með titli, allt ástæðan að við hafa þetta kjötkássa er að við höfum það sem er talin ID. Svo er auðkenni ætti alltaf að vera einstök innan HTML síðuna þína þannig að þegar þú ert vísa til þess, að þú veit að þú ert bara að vísa eina sérstaka hlutur. Þannig að í þessu tilfelli hér, með okkar h1 hér, CS 50 endurskoðun fundur, við höfum id titli. Svo í röð til að bara vísa til að stykki af HTML okkar, við gerum kjötkássa titil. Bara með því að venju, eru auðkenni tilnefnd með kjötkássa fyrir framan þá. Á sama hátt, sjá við upplýsingar hér er a tegund. Og svo bekknum með CSS er tilnefnd sem punktur flokki eða punktur hvað sá flokkur er. Svo í þessu tilfelli hér, það er upplýsingar. [00:42:10] Svo ég tek það til baka. Báðir þessir væri bleikur fyrir CSS okkar hér vegna þess að þeir báðir hafa flokk upplýsingar. Og í CSS skrá okkar, höfum við tilnefnt að eitthvað með flokki upplýsingar skal vera bleikur. Er að skynsamleg? Já? [00:42:27] Áhorfendur: Ef þú værir að gera allt í líkamanum hvíta, og þá reyna að gera eitthvað inni það blár, myndi það valda vandræðum? [00:42:34] HANNAH: Svo er CSS Cascading Style Sheets. Svo er hvað átt er botn mun hafa forgang. Svo ef þú gerir eitthvað með líkamanum, og þú gerir allt hvítt, og þá seinna á að breyta titlinum eða þú breyta texta innan líkama, það birtist það. Svo nokkuð í átt að botn mun hafa forgang. Já? [00:42:56] Áhorfendur: Og auðkenni eru einstök, en flokkar getur verið? HANNAH: Hægri. Svo auðkenni ætti að vera einstakt, og flokkar geta vísa til eins mörgum hlutum eins og þú vilt. Aðrar spurningar? Já. [00:43:09] Áhorfendur: [inaudible]. Ég er að spá í hvort sem skiptir máli. HANNAH: Fyrirgefðu, hvað var spurningin? Áhorfendur: Það er lítill "F" og fjármagn "F." HANNAH: Svo munurinn milli litlu "f" og fjármagn "F" ætti ekki að gera a mismunur. Svo "F" verður 15 hvor vegur. Cool, eitthvað annað? Allir góður, CSS? Já? [00:43:30] Áhorfendur: Sorry. Getur þú sért með og kenni? [00:43:35] HANNAH: Já, þú getur. Things að hafa bæði flokk og kenni. Og ég mæli prófa þetta á eigin spýtur. CSS þú munt læra best bara með því að gera eitthvað, mjög einfalt vefsíðu, teikna upp smá CSS, og bara sjá hvernig þeir hafa samskipti. Og þú munt fá mjög góð, leiðandi vit fyrir því hvernig það virkar. [00:43:56] OK, allir góður með CSS? Þú ert öll að fara að gera falleg vefsíður með CSS núna. OK, bestu starfsvenjur, bara atriði sem þarf að hafa í huga, það that-- þetta er hvers vegna við bryggju þú fyrir hönnuður og whatnot. Svo loka öllum HTML tags. Svo ef þú ert með opinni yfirbyggingu, það ætti að vera nálægt líkamanum. Ef þú ert með opið málsgrein, það ætti að vera nálægt mgr. Athugaðu að sjá síðuna þína í gildi. Þú krakkar ættu að vera mjög kunnugur með þetta frá p-setja sjö með CS 50 fjármál með w3 í gildi. Og eins og ég sagði áður, eitt af stóru málin okkar er að aðgreina stíl með CSS frá sniðinu, sem er HTML. Og þá að sjálfsögðu höfum við Þessi mikli XKCD niður hér. Yay, grínisti léttir! [00:44:38] OK, TCP / IP. Milli þessara og HTTP, grundvallaratriðum þeir eru bæði siðareglur. Svo þú gætir bara hugsa þeirra sem setja reglur sem stjórna hvernig hlutirnir færa yfir netið. Svo sending stjórna siðareglur, eða Internet Protocol, er bara leið til að ganga úr skugga um að gögn fær þar sem það er að fara og að við vitum ef við erum alltaf vantar gögn. Svo ef þú krakkar hugsa til baka til fyrirlestur nokkrar vikur síðan með Davíð þar sem við vorum fjögur umslag, þeir voru öll talin eins og einn af fjórum, tveir af fjórum, þrír af fjórum, fjórir fjórir, þetta er bara safn reglna. Við sögðum, OK, þegar við erum senda fleiri en einn pakka, við erum að fara að tala það með hvaða tala það er og hversu margir alls sem notandinn ætti að fá. [00:45:19] Og þetta er bara að segja hver er að taka gögnin hvort þeir hafa fengið allt eða ef eitthvað villtist á leiðinni. Og þeir þurfa að biðja um það aftur. Þetta er í raun bara safn reglna. Það er hvernig er hægt að hugsa um það, OK? Og einnig, skilgreinir það höfn, sem þú krakkar can-- ég veit á fyrirlestri þeir höfðu alla lista af höfnum. En við höfum ekki þá hér núna. [00:45:41] Svo Hypertext Transfer Protocol er, aftur, það er annar siðareglur. Svo það er annað sett af reglum sem fjalla, í þessu tilfelli, hvernig HyperText er flutt. Svo það gerir bara vafra til að tala við vefþjónum. Og eins og ég sagði hér, að það er eins manna Handshaking. Það er bara leið til að stjórna hvernig vefur framreiðslumaður er fara að hafa samskipti við vafrann þinn. Og við höfum bara nokkra af dæmum. Við höfum nokkrar beiðnir hér þar GET er aðferð. Við höfum HTTP 1.1, sem er siðareglur útgáfa fyrir okkur. Og þá, gestgjafi, sem er hvað við erum í raun að reyna að fá aðgang. Og þá, eins og þú sérð hér, við fá svar við þessu 200 OK og HTTP svar okkar kóða. Við hafa a stór listi sem ég er að fara að draga upp í eina sekúndu að þið ætti að þekkja. Og við höfum þessa gerð efnis texti / HTML, sem bara segir hvaða tegund af gögnum erum við að fá frá the framreiðslumaður, OK? Þessi vél og þetta efnisgerð eru hluti af HTTP haus. Hægt er að hafa eins fáar eða eins litlu og nauðsynlegt fyrir samhengi við það sem þú ert að fást við. Stundum þú munt hafa a einhver fjöldi af upplýsingar sem koma frá miðlara. Kannski þeir eru að biðja um mikið upplýsinga frá notanda. Það er mismunandi eftir samhengi. Ef þú horfir á CS 50 Study, það er mikið meira um það. En við höfum mikið til að fá í gegnum, þannig að ég ætla að fara að fara rétt á undan ef það er í lagi með ykkur? Cool. Bíddu. Ég hef ákveðið að allt listi of-- huh! Ég veit ekki hvers vegna þetta er alla leið hérna. Ég hélt að ég flutti bókstaflega það á meðan ég var sitting-- [00:47:15] DAVIN: Viltu kenna það? Eða viltu að ég að kenna það? [00:47:17] Áhorfendur: Ég hélt að við gætum bara að sýna þeim að byrja með. Ég meina, þú getur farið inn þá enn frekar, en ég hélt að það gerði meira vit þar sem ég var bara að tala um HTTP stöður. Svo er hér allt listi. Ég giska á hvað er að fara að gerast er Davin er að fara að fara í þau síðar. En það er allt listi, a sýnishorn af smekk að koma. OK, við erum að fara að blow-- þetta er að fara að vera PHP hrun námskeið eins og enginn annar. [00:47:41] Svo PHP, Hypertext Preprocessor, það er endurkvæma backronym, sem þýðir að það hét eitthvað annað. Og þá voru þeir eins og þetta skiptir ekki skynsamleg. Svo þeir sem heitir bara it-- og það var skammstöfun, svo þeir gerðu bara það PHP Hypertext Preprocessor, sem bara gerir ekkert vit. Fun saga. Það er forritunarmál. Svo eins mikið og ég undirstrika að HTML er ekki forritunarmál, það er Markup Language, PHP er forritunarmál. Hvernig þú veist þetta er vegna þess að það er rökfræði. Það eru conditionals. Við höfum breytur, en við ekkert af þessum hlutum í HTML. [00:48:12] Allt í lagi, þá höfum við þetta litla bita hér er að eins bragð af PHP. Svo grunnatriði, breytilegum nöfn byrja með dollaramerki. Fullt af fólki eins og það. Minnir okkur peninga. Það er allt frábært. Við viljum öll PHP. Svo við gerum tilgreina ekki tegund breytu lengur. Það ræðst á hlaupa tíma. Túlkurinn verður eins, ó, munum við bara að keyra í gegnum, og í samræmi við samhengi, Við munum sjá hvað gerðir gerðir þessar breytur þurfa að hafa. Það er engin Helsta hlutverk. Things verður bara hlaupa. Þú krakkar með innflutning þinn í síðasta p-setja, munt þú taka eftir þessu. Það var í raun ekki Helsta hlutverk. Þú skrifar bara það sem þú vildir að gerast. Og það gerðist bara svona. Svo er það PHP fyrir þig. [00:48:56] Fylki eru mjög svipuð. Við höfum enn þessa krappi. Hér höfum við nokkur breytu heitir Arr, og það er jafn to-- við höfum eðlilegt okkar krappi merki. Og við höfum sumir lykill gildi. Og stór munur á milli C og PHP fylki er að við getum haft þetta associate-- við að tengja gildin við lykla. Þannig að í stað þess bara að hafa fylki sem er verðtryggð með fjölda eða stöðu þess frumefnis í fylkinu, við getum raunverulega tengja það með lykli. Þar sem við getum sagt, OK, ég vil hvað gildi er í tengslum við ávöxtum. Og kannski höfum við ávöxtum fór banana. Svo það myndi skila banana okkur. [00:49:41] En í grundvallaratriðum, the öflugur hlutur óður í this er að ef þú krakkar muna að kynningu frá fyrirlestri þar sem við í rauninni rewrote Speller í PHP, og það was-- útlit var í raun bara eins og, er þetta lykillinn til? Það er í raun eins konar krafti það. Þú þarft ekki að kunnugt gegnum fylking þinni. Þú þarft ekki að vita hvað pláss það er í. Það gæti verið í lok eða í byrjun. Svo lengi sem þú veist lykilinn sem er í tengslum við verðmæti, PHP getur bara spýta þessi gildi strax aftur út á þig, OK? [00:50:09] Og þá erum við líka bara hafa bara vegna þess að við getur haft lykill gildi pör þýðir ekki að þú þarft að. Þú getur líka bara búið eðlilegt array eins og hér, á neðri hlutanum, þar sem það er bara einn, tveir, þrír, fjórir. Þeir eru gildi okkar. Og í raun, eru lyklar þeirra vísitölur. Svo lykillinn að einn vildi vera núll. Lykillinn fyrir tvo væri einn. Svo framvegis og svo framvegis, nema þú framselja sérstaklega lykil þú gætir ráð fyrir að gildi er bara vísitölu þeirra. Er að gera skilningarvit til alla? Engin spurning? Awesome. [00:50:38] OK, framhandleggur er leið til að kunnugt um fylki þínum. Þannig að við höfum eitthvað hér, bara almenn uppbygging. Svo framhandleggur, nafn array okkar, eins og hvað þú vilt hringja í hvert þáttur í array þinn, og við getum gert eitthvað með þessi þáttur eða það gildi. Þannig að við höfum dæmi hér. Við höfum tengin array með þessum tveimur færslum með bar sem tengist foo og qux vera í tengslum við Baz. Svo lyklar eru foo og Baz. Gildi eru bar og qux. Svo framhandleggur, höfum við array okkar hér, eins og the lykill gildi par. Þetta gerir okkur kleift að komast bæði á takkann og gildi. Kannski þú vilt bara gildi, en í þeim tilvikum þú gætir bara að gera eins og samkomulagi og $ virði, og þá eru bara aðgang verðmæti eins og þú kunnugt um. En kannski, fyrir suma Ástæðan, þú vilt á takkann, sem er ástæða þess að ég valdi þetta dæmi í staðinn. Svo þú getur raunverulega vinna takkann og gildi í þessu tilfelli. OK? Spurning? [00:51:41] Áhorfendur: Ef þú vildir bara vinna takkann, myndi þú þarft að gera foreach-- [00:51:45] Alison: Hægri. Svo ef þú vildir vinna bara á takkann, þú vildi samt þörf á þessari setningafræði því ef þú bara hafa ARR sem eitthvað, sem eitt, það er fara að gera ráð sem þú vilt gildi, ekki lykillinn. Svo ef þú alltaf bara eins Arr eins, kannski er þetta eins og $ frumefni, það er að fara að gera ráð fyrir að þú ert að spyrja fyrir aðeins gildi á hverjum tímapunkti. Ef þú vilt sérstaklega að gera eitthvað með lykli, jafnvel ef þú ert ekki að fara að gera neitt með verðmæti, þú þarft þessa uppbyggingu að við höfum hér þar sem þú ert sérstaklega að spyrja fyrir bæði takkann og gildi. Frábær spurning. Eitthvað annað? Cool. [00:52:27] Allt í lagi, PHP og HTML. Oh, við erum aftur að p-setja sjö aftur. Þannig að þetta ætti að líta svolítið kunnuglegt. Svo er þetta nokkur einföld HTML formi sem hefur einhverja inntak nafn halló. Og við sjáum að við höfum aðferð okkar FÁ. Og ef við minnumst úr okkar p-sett, þegar þetta form er lögð fram, það sendir fylki kallast $ _GET sem hefur allar þessar aðföngum eða breytur frá mynd sem ætti að vera handleika í PHP okkar. Svo í þessu tilfelli, the notandi myndi setja í þeirra nafni. Þeir senda hana inn. Og við sjáum að við fáum smá array hér. Við höfum GET array okkar. Og við erum að fá aðgang nafn. [00:53:11] Svo sem segir, OK, gefa mér að gildi sem er tengd við nafn, nefna að vera lykillinn hér. Og það kort beint við það við sögðum nafn inntak okkar er. Þannig að þetta var að gefa þér lykilinn að því er að fara að vera í fylking hér. Er að gera skilningarvit til alla? Já? [00:53:32] Áhorfendur: Er nafnið í GET vísa að fjólubláa línu í [inaudible]? [00:53:36] Alison: Það vísar til þetta hér. Svo þessi reitur hérna, það vísar á þetta nafn hér. Þannig að þetta gæti hafa verið nefnd eins símanúmer eða hvað sem er. Þetta nafn reyndar segir, hvað Ertu að kalla þennan reit? Hvernig ætlar þú að vísa til þessu sviði? Og nafnið er í raun eins, við erum segja þennan reit er kallað nafn. Það er hvernig við ætlum að opna það. [00:53:59] Áhorfendur: Svo er það eins, inntaksnafn jafnt Bob, and-- [00:54:02] Alison: Hægri, þá myndi fá Bob þarna niðri. Einmitt. Allir kaldur? Allt í lagi, svo fá á móti pósti, þetta eru tveir helstu leiðir að við framhjá gögn á HTTP beiðni. Þú krakkar ættu að hafa séð báðir þessir vonandi. Svo við FÁ, upplýsingarnar er í gegnum vefslóð. Svo ef þú gerir alltaf Google leit, YouTube, þú munt sennilega taka nokkur spurningarmerki. Og þá, öll orð að þú setur bara í það. Og POST fer gögnin í HTTP skilaboð líkamans. Svo ólíkt FÁ, þú konar íhuga að gögnin séu faldir fyrir notendum. En hvað er í raun mikilvægt að skilja er að þetta er enn eins óörugg og FÁ. The hliðstæðan Ég vil nota er ef þú ert númer bankareiknings og þú skrifar það á utan umslag, sem er nokkuð hættulegt. Ef þú varst að skrifa það á stykki af pappír og setja það inni í umslag, það er samt mjög óöruggt vegna allt sem þú þarft að gera er að opna það upp og líta á raunverulegt innihald boðanna sjá það. Þannig að þetta er "falinn" og fólk eins og til held að það er öruggt, en það er í raun ekki. Og ég er viss um Davin mun komast inn í það meira, kannski. En það er mikilvægt greinarmunur að gera og eitthvað mjög gott að skilja. [00:55:15] OK, SQL, Structured Query Language. Allt efni sem við höfum séð svo nýlega! Svo það er í rauninni bara hannað, augljóslega, til að stjórna gögnum. Þú krakkar höfðu mikla reynslu með þetta í töflum þínum með PHP MyAdmin. Og það eru fjórar algengar fyrirspurnir að við viljum að þú krakkar vita. Þannig að það er uppfærsla, setja inn, velja og eyða. Svo tryggja þú vita þá mjög vel. Við erum að fara að fara í gegnum þá mjög hratt. [00:55:40] Svo uppfæra, í raun, eins og það þú might hugsa það er, það uppfærir bara gögn í gagnagrunninn. Þannig að við höfum nokkur dæmi hér. Þetta er almenna uppbygging uppfærsla fyrirspurn. Þannig að við að uppfæra töfluna að við erum að tala um. Og við viljum að setja ákveðin gildi, tilteknar dálkar jafnt tilteknum gildum. Þannig að þetta bara uppfærir borð, breyta gildi í öllum röðum í þessu tilfelli. Svo í þessu einn hérna, í raun dæmi, höfum við insert-- miður. Það renna háþróaður án mín átta sig á því. [00:56:17] Þannig að þetta uppfærslur borð sett col1 jafnt að VAL1 þar hús jafnt "CURRIER." Hvað þetta gerir er það breytist aðeins, það bara uppfærir þessi gildi í tilteknum stöðum. Þannig að í þessu fyrsta, það breytist þetta gildi fyrir allt í töflunni, OK? Það er að fara að breyta þessu dálkur fyrir hvert einasta færslu, fyrir hvert einasta röð. En þetta þar, þú gætir hugsa um það sem undankeppni. Svo það er bara að fara að breyta það í mjög sérstökum stöðum. Svo í p-setja sjö, þegar þér kannski uppfærð magn af peningum að þinn notandi hafði, hafði sennilega sumir þar ID jafngildir fundur ID, ekki satt? [00:56:53] Því að þú hlýddir ekki að breyta upphæð af peningum fyrir hvern einstakling sem var að nota vefsíðuna þína. Þú vildir að breyta því fyrir einn sérstakur maður, sem maður að vera hver var að nota það á þeim tíma. Ekki satt? OK, svo setja, settu ákveðin gildi í borðum. Þetta er eins og þegar þú ert búa til nýja notendur. The almenna byggingu hér er að setja inn hvaða borð við erum að tala um. Values, enda gildi sem við viljum í raun að setja inn. OK, svo sem við sjáum hér, við hafa sett í töflunni. Þetta er ákveðin dálka með samsvaraði verðmæti þeirra. Svo segir þetta, innskot ný röð inniheldur gildi VAL1 og VAL2 undir Þessi sérstöku dálkum. [00:57:33] Svo kannski þú vilt bara til að fylla út helmingi hlutum í þessari röð. Það er það sem þessi hluti leyfir hér þú gerir. Það leyfir þér raunverulega ákveða hvaða hluta. Já? [00:57:44] Áhorfendur: Getur þú aðeins [inaudible] frumur í röð [inaudible]? [00:57:52] Alison: Ef þú fyllir bara í ákveðnum hlutum röð þína, restin af þeim frumum eru bara tóm. Svo lengi sem þú leyfir þeim að vera tómur, það er ekki vandamál. Ef þú reynir að nálgast þær, það er fara til baka nokkur tóm frumefni. En það er mikilvægt að vita að í ákveðnum töflum, þeir hafa til að fá að vera núll. Þú gætir hafa keyrt inn í a vandamál á þinn p-setja vegna þess að við ekki láta allir af gildum vera null. En þú getur tilgreint valfrjáls gildi í töflunni. [00:58:26] OK, velja, þannig að þetta er bara leið til að komast ákveðin gögn úr töflu á sumir kennimerki sem þú vilt. Svo velja stjörnu frá töflunni þar Col jafngildir eitthvað þýðir bara, gefa mér öll gögn sem tengjast þar sem þetta tiltekna dálkur er satt. Svo stjarna í þessu tilfelli mun skila heila röð fyrir þig, OK? [00:58:49] Og þá, í ​​þessu tilfelli, velja stjörnu frá Taflan bara þér allt borð. Og þá, eyða augljóslega, það bara eyðir línuna í töflunni. Svo eyða úr töflunni, hvaða borð við erum tilvísanir, þar sem sumir sérstakur kennimerki eða einhver skilyrði er satt. Já? [00:59:07] Áhorfendur: Spurning. Hvers vegna ert þú að nota tvöfalt vitna, og hvort þér gera gæsalappa eða einn vitna, hjartarskinn það gera a mismunur? [00:59:13] Alison: gæsalöppum eða einfalda gæsalöpp ekki gera a mismunur í SQL. Ég hélt að ég sá aðra spurningu. Já? [00:59:20] Áhorfendur: Er það ekki áhrif hvað fær slapp úr fyrirspurninni? [00:59:25] Alison: Rob? [00:59:27] Rob: Hvað áttu við með slapp úr fyrirspurninni? [00:59:31] Áhorfendur: Ef einhver hefur einn fyrirspurn í formi of-- [00:59:36] Rob: Ef einhver var að setja einn vitna í, þá eins lengi og þú ert að sanitizing inntak þitt, þá skiptir ekki máli. En ef þú ert að nota einn vitna og þú ert rangt sleppi inntak þinn, þá já, þeir þurfa að setja eitt vitna til þess að brjóta númerið þitt. ef þú notar gæsalöppum, þeir þurfa að setja tvöfalt vitna að brjóta kóðann. En svo lengi sem þú flýja það rétt, það skiptir ekki máli. Það er bara að fara að þýða á réttan tákn samt. [00:59:59] Áhorfendur: Hvað þýðir flýja meina? Alison: Jæja, eins og Sanitizing og flýja. The próf sem við höfum, mikill XKCD grínisti sem þeir draga upp þar sem þú þarft, oh-- Rob: Það er síðasta mynd. Alison: Það er síðasta mynd, virkilega? Oh my god. Þar fara, fullkominn. OK, svo í rauninni er hægt að sprauta eitthvað í þessa SQL fyrirspurn þar sem það brýtur þína númer, eða eins og David sýndi í bekknum, ef við höfum sumir einn vitna 1 er jafnt og 1 og ef í númerið okkar, við bara beint afrita það í, og við höfum endar einn vitna, það sem gerist er að við fáum sumir tjáning sem metur að satt að vilja láta einhvern slá gagnagrunninum okkar og fá gögn sem við vil ekki þá að fá. Svo sanitizing inntak bara þýðir að tryggja að við erum sleppi þessum stafir og tilnefningu þá sem stafir og ekki hluti sem ætti að vera heimilt að taka bókstaflega sem eins og SQL staðhæfing okkar. [01:01:04] Svo stór hlutur sem ég sagði að þið ættu að vera að nota voru HTML sérstök stafir, sem er eitthvað að þú might vilja til taka a líta á. OK, eyða. Gagnatög, þetta mun allt vera á netinu. Þar sem við höfum 15 mínútur eftir, ég er bara að fara að fara í gegnum þetta. PHP og SQL, í grundvallaratriðum er þetta bara höfðum við fyrirspurn fall sem hjálpaði vernda gegn þessi illgjarn árás. Svo þegar þú notar fyrirspurn, við vorum að tryggja að hlutirnir voru sótthreinsa og whatnot. [01:01:36] MVC er bara hugmyndafræði, svo líkan, skoða, stjórnandi. Það er bara leið til að halda hlutum gott og skipt upp á sama hátt að við hafa tilhneigingu til að þáttur út kóða í aðgerðir. Þetta er bara vefur hönnun ramma sem gerir þér kleift að gera það sama. Ég ætla að sleppa þessu. [01:01:54] Þetta er eitthvað sem ég væri frábær notalega með. Það er a mikill lítill borð þar. Það gefur þér virkni dæmi um fyrirmynd. Ég ætla bara að fara í gegnum þetta vegna þess að ég virkilega Davin að vera fær um að tala. Ef þú hefur einhverjar spurningar, skaltu ekki hika. Ég kem hér á eftir. Bara koma að tala við mig. Með þessi, höfum við HTTP stöður. Og Davin er að fara að blása í gegnum þetta í 15 mínútur. Þetta er að fara að vera mikill. [01:02:17] DAVIN: OK. Uh, Mic þinn? Já. Því miður. Alison: leið til að vera tilbúinn. DAVIN: Nei, ég er tilbúin. Ég er tilbúinn. Við skulum gera þetta. Það er tilbúið. OK. Því miður. Ég hella niður kaffi á mig. Ég veit ekki hvort ég er meira uppnámi að ég líta asnalega, eða að ég hef ekki kaffi lengur. Engu að síður, bara fljótur tilkynning um blaði þið hafið. Þannig að þetta blað sem þú krakkar hafa ekki opinbera hvað er á prófinu. Þetta er opinber hvað er á prófinu. Einnig, á heimasíðu, segja við þú, OK, þetta mun vera á prófinu. Svo í smá svindlari lak þú þarft, ekki opinbert. Og það eru mistök á það. Svo best að bara í blindni að nota það. Svo, það er það já. Svo skulum við fá inn í þennan raunverulegur fljótur. [01:03:05] Svo HTTP staða. Svo hvað gerist þegar website, allt er í lagi. Allt er í lagi. Allt kemur aftur til þú eins og þú vilt. Þú færð 200 lagi. 301, þar sem við höfum séð að 301 áður? Bíddu, hvað er uppi? Því miður. Við sáum i tini fyrirlestur á öryggi. Svo á öryggi, þannig að ef David slegið í HTTP og þá reynt að fara í cs50.net, þú ert að fara að sjá 301 flutt. Hvers vegna? Vegna þess að það er að fara að beina þú sjálfkrafa að HTTPS okkar. [01:03:35] Svo 301 flutti, bara það grundvallaratriðum a utanáskrift. Og er hægt að hugsa um það eins og þetta. Allir af stöður sem byrja með 2 áratugnum, þeir eru eins, OK, allt er í lagi. Allir af stöður sem byrja með 3, eru þeir utanáskrift. Stöður sem byrja 4, sem þýðir það er einhvers konar viðskiptavinur villa. Stöður sem byrja 5, það er einhvers konar villa miðlara. Svo þú brjóta konar upp að staða eins og þessi. Svo 304 ekki ekki breytt, þannig að í þínum server.c p-setur, þannig að við skulum segja þér hlaðinn cat.html. Allt kemur til baka, þú færð 200s, OK, frábært. [01:04:03] Við skulum segja að þú endurnærð það. Jæja, inni sem cat.html, þú hafa a JPEG. Jæja, það JPEG er ekki fara að fá Reloaded. Þú ert ekki að fara að senda annað GET beiðni til the framreiðslumaður, og þá fá allar þær upplýsingar til baka. Það er að fara að bara be-- er image fara að vera afrit á tölvunni þinni. Og svo þessi mynd verður 304. Svo það er ekki verið breytt. Ef þú lokar út þá, ljóst kex, og þá hressa og reyna að hlaða þá síðu aftur, þú ert að fara að sjá 200s. Þú ert ekki að fara að sjá að 304. [01:04:28] 400, slæmt beiðni alvöru fljótur, eins og ef þú voru að fara að senda JSON mótmæla miðlara og JSON mótmæla þínar rangar, þú munt sjá eitthvað svona. 403, bannað. Þegar myndir þú sjá a bannað? Sennilega Sennilega? Áhorfendur: chmod. DAVIN: chmod, já. Svo þú hefur ekki sett heimildir rétt. 404, fannst ekki. Það er bara ekki þarna. Svo ef þú skrifar í röngum slóð. 500, innri framreiðslumaður villa, the framreiðslumaður sennilega var ekki rétt stilltur. Eitthvað ekki af þinni hálfu, en eitthvað á miðlara megin. Og 503? A einhver fjöldi af fólk sá 503s í síðustu p-setja. Þegar væri að gerast? Ég heyrði hvíslar. [01:05:05] Áhorfendur: Þegar Google ákveður þú ert vélmenni. DAVIN: Já, þegar Google ákveður þú ert vélmenni, þú færð 503s. Svo er það vegna yfirálags. Ef þú baðst frá þjóninum of mikið, það er yfirleitt tímabundin. Og flest ykkar eftir það. Svo þú sást 503. Þú gætir hafa tekið smá brot, þá 503s fór í burtu, og allt var í lagi. [01:05:20] Gabe: Real fljótur, þegar þú krakkar fá 500 í sennilega þetta síðasta vandamál setja? Já? [01:05:27] Áhorfendur: Venjulega ef framreiðslumaður hefur skrá rangan stað eða [inaudible] þeirra vél [inaudible]. [01:05:34] Gabe: Svo það gæti verið stillingar mál í PHP þinn á vefþjóninum þínum. En það gæti verið bara eitthvað eins semíkommu að þínum gleymdi. Ef þú ert að skrifa PHP, sumir rangt setningafræði gæti fengið þér eitthvað svoleiðis. OK? [01:05:46] DAVIN: Cool. Viltu að ég geri bara allt til AJAX? [01:05:51] Gabe: [inaudible]. DAVIN: OK. Svo er það DOM? Hvað er DOM standa fyrir? [01:05:55] Áhorfendur: Document Object Model. DAVIN: Nice. Og hvers vegna eigum við eins og það? Awesome. Einmitt, svo það bara leyfa okkur að fá aðgang HTML, skoðar okkar mjög hratt. Hvers vegna? Vegna þess að við erum að meðhöndla okkar síðu, meðhöndla HTML tags okkar, meðhöndla allt eins og ef þeir eru hluti. Ef við erum að meðhöndla þá eins og þeir eru hlutir, þá hvað getum við gert? Jæja, við getum hringt aðgerðir á þeim. Og þetta er mikilvægt hverju? Jæja, vegna þess að við erum að fara að nota JavaScript til að uppfæra HTML okkar, uppfæra þessa hluti. Þannig að ef við förum þá eins og hlutir, getum við þá kalla aðgerðir á þeim. Ég ætla að fá inn í þetta smá meira þegar ég fer inn í JavaScript, en þú hefur öll séð eins document.getElementByID. Svo er þinn skjal þáttur, fá eininguna með því auðkenni, svo þú ert að fara að horfa fyrir sumir ID í HTML tag. Og þá er hægt að gera eitthvað annað við það. Til dæmis, eins og document.body, þá er hægt að auka við barn. Svo þú ert að fara að finna skjalið. Þú hefur skjalið. Þú ert að fara að finna líkamann. Þú fannst líkamann. Og þá, þú ert að fara að kalla sumir virka á það. Svo auka barn, og þú getur auka sumir HTML á enda inni líkama þinn. Svo í grundvallaratriðum, þú ert bara meðhöndla það eins og hlut. Þú ert að meðhöndla HTML merki sem hlut. Og það gerir það mjög auðvelt og fljótur að fara í gegnum þá. En það gerir þig líka að hringja virka á þá svo þú geta handleika og breyta þætti. [01:07:04] Gabe: Í ljósi þessa, hvers vegna er JavaScript svo a ágætur tungumál til að hafa samskipti við HTML? Stuðlar eru, þegar fólk var að velja tungumál fyrir vafrann fyrir hlið viðskiptavinur, JavaScript er mjög gott, það er mjög gott að meðhöndlun hluti. Og hlutir eru góður af eins hlutir sem birtast í HTML, svo það er mjög auðvelt fyrir JavaScript að gera svona meðhöndlun. DAVIN: Nice. Svo er hér bara dæmi. Þannig að ég held á spurningakeppni á síðasta ári, eða kannski tvö ár síðan, við bað þig að búa til tré. Svo er þetta nákvæmlega það sem þú vilt gera. Svo þú byrjar út með skjalinu. Og þá þú í rauninni bara horfa á tags. Svo ef þú horfir, við byrja með HTML tag. Og þá, þú færð vísbendingar um hvernig á að gera þetta byggist á inndrátt. Svo höfuð konar útibú burt. Inni í höfðinu, höfum við annar tag titli. Svo þá höfum við titil tag. Og inni að við höfum sumir band. Og svo við tákna band í hring. Og allir merki eru í reitum. [01:07:54] Og ef þú horfir, ef vér hugsa um þetta sem tré, og við skulum segja að HTML er foreldri, þá höfuð og líkama eru að fara að vera systkini. Þeir eru báðir að fara að vera börn foreldrisins. Svo vegna þess að þeir eru bæði systkini, eru þeir að fara að vera eins konar hlið hvert annað í tré fyrirmynd okkar. Og þá, þú í rauninni gera nákvæmlega það sama. Svo ekki erfitt, en við höfum beðið spurningar eins og þetta áður á spurningakeppni. Gabe: Er einhver hafa spurningar svo langt? Er það gott? DAVIN: Cool. JavaScript, OK, gott efni. Svo JavaScript, hvað er JavaScript? Jæja, JavaScript is-- það er flókið, en þetta eru nokkrar af hápunktum að þú ættir að hafa í huga. First, það lauslega slegið. Hvað þýðir það? Svo PHP was-- já, hvað er uppi? [01:08:35] Áhorfendur: Þú þarft ekki að beinlínis fram hvaða tegund af breytu er. DAVIN: Perfect. Svo hann sagði að þú þarft ekki að skýrt fram hvaða breytu. Það er einmitt rétt. Svo í C, ef ég hefði int i jafngildir 50, þá í PHP, það er bara svona, $ i, jafngildir 50. Þá í JavaScript, hvað myndi kalla að vera? Var, ekki satt? Það væri eins og var ég jafngildir 50. En þú þarft ekki að vera eins, OK, þetta er int. OK, þetta er band. Engin þörf á að gera það. Það er túlkað tungumál. Svo hvað þýðir það? [01:09:04] Áhorfendur: Ekki unnin. [01:09:06] DAVIN: Hvað ekki saman við? Já? [01:09:11] Áhorfendur: Þú þarft ekki að endurskipuleggja kóða að fá það tilbúið fyrir tölvan að keyra hana. Það er bara tekið á þeim tíma framkvæmd og tölvan [inaudible]. DAVIN: Já, svo það er að fara að fara í gegnum túlk. En þú ert nákvæmlega rétt. Svo þú ert aldrei að fara að þýða það, ekki satt? Þegar þú varst að gera þinn PHP og JavaScript kóða, þú aldrei kallað safna saman. Þú kallaðir aldrei eitthvað eins og gera eða eitthvað svoleiðis. Það er vegna þess að það er túlkað. Svo í hvert skipti sem hún fer í gegnum vafra, það fer í gegnum túlk. Og það er að fara að túlka það bara í rauntíma strax fyrir þig. Svo hvað eru nokkur jákvæður og neikvæður að hafa túlkað tungumál og hafa þýtt tungumál? Svo compiling-- já, hvað er uppi? [01:09:50] Áhorfendur: túlka er hægari. DAVIN: Í hvaða skilningi? [01:09:57] Áhorfendur: Eftir þig safna saman, þú ert ekki að gera einhverjar auka skref til að framkvæma það, en á þessu [inaudible]. [01:10:04] DAVIN: Hægri, fullkominn. Svo það sem þú segir er í rauninni að setja saman, þegar þú saman, hefur þú a mikið af upfront kostnaði, ekki satt? Þú ert að fara að taka saman það. En eftir að þú safna saman það, sem þýðanda er að fara að fínstilla það. Það er að fara að vera fljótur. Það er að fara að í grundvallaratriðum vera eins hratt og það getur verið. Með túlkun, þér aldrei hafa þessi upfront kostnaður. Frekar, það er að fara að vera örlítið hægar hvert einasta skipti sem þú túlka það. Og þú ert að fara að þurfa að túlka það á hverjum einasta skipti. Þannig að í stað þess að hafa þetta eitt sinn kostnað, nú þú ert fara að túlka það í hvert skipti sem síðu gerir. [01:10:29] Svo túlkar eru góð vegna þess að þú þarft ekki að þýða það, en þeir eru illa í að sérhver tími síðan opnast, það er fara að túlka þetta JavaScript. Og það er að fara að keyra örlítið hægar en ef þú varst að taka saman það. Leyfir þér að communicate-- ó, bíddu. Notað til að vinna að efni og útliti. Við ræddum bara um það. Það notar DOM. AJAX, munum við fá inn AJAX í smá. Og þá er það viðskiptavinur hlið. Svo er PHP miðlara megin. JavaScript er viðskiptavinur hlið. Hvað eru jákvæðir að því? Það segir það. Það er fljótlegra, ekki satt? Þar sem þú þarft ekki to-- það hraðar. Þú þarft ekki að eiga samskipti með einhver önnur tæki. Ef þú ert bara á þinn viðskiptavinur, þú ert aldrei fara að fara og sjá hvað er á þjóninum og þá skýrslu aftur eða eitthvað svoleiðis. Svo hefur tilhneigingu viðskiptavinur hlið til vera svolítið hraðar. [01:11:15] Gabe: Já, en þetta þýðir ekki PHP er hraðar en JavaScript eða eitthvað af þess háttar. Þeir hlaupa góður yfir í það sama hraði vegna þess að þeir eru báðir túlka tungumál. The hlutur sem er hægt hér er beiðni. Svo þú ert í raun að fara alla leið yfir til Brasilíu að fá smá upplýsingar sem býr þar. En PHP og JavaScript, þeir konar hlaupa á sama hraða. Það er ekki það að einn er hraðar en hitt. Þetta einnig bragð spurning hér. Svo JavaScript verður aldrei vél númer, satt eða ósatt? [01:11:47] Áhorfendur: False. Gabe: False. Það þarf að vera vél númer vegna vél númer er það eina vélin skilur. Jafnvel þó að það er ekki saman, það verður samt vél númer vegna þess að túlkur er bara a program sem fer línu fyrir línu og umbreytir þessi lína í eitthvað sem tölvan skilur. OK? Cool. [01:12:08] DAVIN: Hér er bara mjög einfalt Halló heimur JavaScript program. Svo ég veit ekki if-- þú hefur séð þetta. En þú ert bara HTML hér. Og í stað þess að í raun að setja JavaScript í handritinu tags, svo þú vilt að jafnaði setja það í höfuðið. Þú hefur handrit tags. Þú falla það þar. Allt sem við höfum gert hér er að við höfum tengt in-- þannig að við höfum tengt í JavaScript skrá eins og þetta. Og þú hefur gert allt þetta, ekki satt? Svo þegar þú varst að nota jQuery og underscore.js í síðustu p-sett, þú þarft ekki tonn af kóða upp í handrit tags, upp í höfðinu á þér. Þú gætir gert það, en í staðinn þú ert bara að tengja það í. Og þú ert að tengja það í bara eins og þú gerir með CSS. Svo gerir það bara auðveldara að lesa svo númerið þitt er ekki eins og 1000 línur á lengd með tonn af aðgerðum sem þú might ekki vera með. [01:12:52] Þess í stað, þú hlekkur bara í. Það compartmentalizes það. Það er eins og að skrifa nokkur haus skrá og þá meðal að haus skrá í C Hugsaðu um það eins og þetta. Svo hvað þýðir þetta? Jæja, þetta er að fara að keyra. Það er að fara að heyrast. Svo þú ert að fara að fá smá skjóta upp kollinum sem heitir Halló heimur. Quick spurning, bara geðheilbrigði stöðva, svo þú sérð hér í líkamanum, segja líkama, HTML hér. Hvað kemur fyrst? Get ég séð líkama, HTML hér, eða get ég séð viðvörun fyrst? [01:13:19] Áhorfendur: Alert. [01:13:20] DAVIN: Hægri. Hann segir vakandi. Hvers vegna? [01:13:22] Áhorfendur: Þar sem þú fara frá toppur til botn. [01:13:24] DAVIN: Já. Perfect. Svo segir hann, þú ferð frá toppi til botn, sem er alveg rétt. Þú ert að fara að fara frá toppur til botn. Og í JavaScript, jQuery, hefur þú fall sem er eins onload, eða tilbúinn, og það segir, OK, bíddu þangað til allan HTML hefur hlaðinn. Og þá, hringja í JavaScript. Þar sem við höfum ekki hér, mjög fyrstur hlutur sem er að fara að gerast er það er að fara að fara frá toppur til botn. Það er að fara að lemja það JS kalla, það er að fara að heyrast. Eftir að þú smellir á OK, sem láta fer í burtu. Þá er það að fara að sýna þú líkaminn HTML hér. Nice. [01:13:54] OK, svo bara alvöru fljótur, skrifa JavaScript er frábær fljótur. Til að lýsa breytu, var nafn. Svo í C, hefur þú int i, hefur þú til að lýsa hvers konar tegund það er. PHP, $. JavaScript, var. Við ræddum um þetta. Allt í lagi, við skulum fara. [01:14:11] Lykkjur, sama. Sami hlutur. Virka yfirlýsingar, svo bara eins og þú hafir séð í C. Það eina sem öðruvísi er svo þegar þú færð að önnur forritunarmál, eins og þegar þú tekur 51 á næsta ári og þú ert að gera með OCAML, þú getur tekist á við nafnlaus virka. Svo er það einmitt það sem þú ert hér. Svo þú vilja til setja í summu, einhvers konar summa gildi. En þú gætir bara verið að gera það einu sinni. Svo þú vilt ekki að kalla það fall summa, gefa það a virka yfirlýsingu. Þess í stað, þú notar bara það sem nafnlaus aðgerð. Og þú hefur séð þetta mikið. Þú munt sjá dæmi um þetta í nokkra skyggnur. Já, við munum sjá. Gabe: Góð spurning. Þegar þú might vilja til nota nafnlaus virka hér? Í grundvallaratriðum, þegar þú vilt eitthvað, eins atburði, að gerast. Svo þegar músin er smellt, til dæmis, þú vilja sumir virka að vera gestur. Svo þú fara til the atburður stjórnandinn, framhjá þér að atburðinum konar, sem virka sem þú vilja vera kallaður. Og hvað þú ert liggur er eins og, í lok dagsins, bara bendi á að kennsla, að virka. Svo það er ekki eins og þú ert að brottför allt númer, rétt eins og bendi aðgerðina. Og svo, þegar einhver smellir á mús, þá virka fær kallað. [01:15:17] DAVIN: Fylki, svo þú hafa array yfirlýsingu. Þá fylki til að setja hlutina í. Raunverulegur fljótur, hvað mun þetta prenta út? Hvað mun þriðja þáttur að vera? [01:15:31] Áhorfendur: "JS". [01:15:32] DAVIN: Hægri, það væri "JS." Bíddu, fara til baka. Hvað er lengd? [01:15:37] Áhorfendur: Three. DAVIN: Three, ekki satt? Einmitt það sem þú hugsar. OK, nú fara. Fylki, getur þú bætt þeim eitthvað. Svo er hægt að fara út Fyrstu mörk þeirra. Bara eitthvað til að hafa í huga. PHP, JavaScript, þeir smá aðeins meira fyrirgefa hvað varðar hluti eins og þessi. Hlutir, mjög mikið eins og structs í C, mjög mikið eins tengin fylki í PHP. Þú hefur öll haft reynslu með þetta. Svo JSON, þegar þú ert að brottför JSON fram og til baka í p-setja átta, það er hlutur þinn. [01:16:03] Svo já, dæmi, raunverulegur fljótur dæmi. Hér er hlutur. The vegur þú vísa þessu hlut, svo bara alvöru fljótur, skulum segja að ég vildi finna út, OK, hvað er námskeiðið? Og svo að mótmæla nafn hér er CS50. Og þá ef ég hefði tengin array, hvernig myndi ég gera það? Ég ætla að nota lykil, ekki satt? Þannig að ég hef nafn fylkisins. Ég hef krappi, tilvitnanir, lykill, endir vitna, enda krappi, og það mun vísa að þáttur inni tengin array minn. Hvernig set ég vísað Auðvitað inni hlut minn? Hver veit? [01:16:39] Áhorfendur: [inaudible]. [01:16:40] DAVIN: Hvað er upp? Áhorfendur: CS50.course. DAVIN: Hægri, já. Svo CS50.course. Svo hvernig þú vísað hluti inni í JSON mótmæla er með punkti. [01:16:48] Áhorfendur: Þú getur einnig notað array setningafræði. [01:16:53] DAVIN: OK, allt í lagi. [01:16:54] Gabe: Þú getur einnig notað CS50 krappi, band, eins og gæsalappa. Áhorfendur: Ég held að það er eins og PHP. Gabe: Það er það sama. DAVIN: Fine! En þú munt sjá þetta á öðrum stöðum. Já, svo halda áfram. Þetta er það sem ég sagði bara. Svo í JavaScript jQuery dæmi. Svo er þetta DOM minn, ekki satt? Raunverulegur fljótur, þannig að ég hef a höfuð, halló heimur, líkami. Ég er með hnappinn. Það segir "ýta mér," svo ég vil að ýta því. Og ég vil gera eitthvað þegar það er smellt. Einmitt, við hliðina. [01:17:31] Einmitt, svo er þetta mitt JavaScript. Svo er bara auðveldara jQuery leið til að skrifa JavaScript. Þannig að þetta, og það sem ég ætla að sýna þú næst, er að fara að vera jQuery, eru eins. Svo þeir vilja gera sömu hlutina. Bara jQuery hefur tilhneigingu til að vera svolítið auðveldara. Fólk tilhneigingu til eins og það meira. Það hefur a einhver fjöldi af virkni. Svo fólk hafa tilhneigingu til að nota jQuery. Þú allar notað jQuery í síðustu p-setja. Svo hvað þetta gerir? Hvað mun þetta Javascript-- svo þetta er bara látlaus JavaScript. Hvað mun þetta gera? Hvað mun það gera? [01:18:03] Svo fyrst þú sérð glugga onload. Ekki satt? Svo við fengum ekki að sjá að áður. Þannig að þetta er að fara að bíða þar öllum glugganum sækir. Svo það er að fara að bíða þangað til HTML, allar myndirnar hlaða áður en það gerir eitthvað. Svo skulum segja DOM okkar hefur hlaðinn. Allt er þar. Þá hvað er að fara að gerast? Já? [01:18:19] Áhorfendur: Button birtist. [01:18:22] DAVIN: The hnappur er þar nú þegar. Já, svo á hnappinn er þar nú þegar. En þetta er að fara að segja, OK, ef ég smelli á hnappinn, svo á hnappinn er þegar það, eins og þessi HTML tag. Bíddu, fara aftur raunverulegur fljótur. Þetta merki rétt hérna er fara til vera a hnappur þegar. Það er nú þegar hnappur. En þá, sem JavaScript tag, hérna, segir, OK, ég vil að fá eininguna með því auðkenni, svo leita hnappinn segir bara, OK, ég vil að kortleggja þessa breytu til þess hnappinn. Svo að breyta er bara auðveldari leið til að fá aðgang að hnappinn. Og ég segi, OK, ef ég smelli sem hnappinn, þannig að ef ég smelli fyrir að sá hluti, og þessi þáttur er átt við hnappurinn, ef ég á hana, þá vil ég að hringja í aðgerð. Hér er einn af þeim nafnlaus aðgerðir við vorum að tala um. [01:19:03] Bara hringja sumir virka. Inni að virka, í grundvallaratriðum eitthvað sem við höfum séð mikið, vakandi. Þú smellir á hnappinn Leita. Það er að fara að í grundvallaratriðum hafa hnappinn. Þú smellir á það. Þú færð að viðvörun. X út. Það er hann. Já? [01:19:16] Áhorfendur: Svo ef þú setur handritið [Inaudible], handrit tag í HTML? [01:19:21] DAVIN: Þú getur sett handriti tag beint í höfuðið vegna þess að þú hefur þetta onload. Það er líka að þú ert smell. Svo það er að fara að bíða þangað til þú smellir á eitthvað. En onload er bara til að vera örugg, að gera skugga um að allt fullt í HTML fyrirfram. Já? Þú vilt segja eitthvað? [01:19:40] Gabe: [inaudible]. DAVIN: Já. [01:19:42] Áhorfendur: Svo onload forðast skilgreina breytu leita hnappinn bara með því að segja document.getElementByID leita hnappinn punktur [inaudible]. [01:19:49] DAVIN: Ákveðið, en þá band fær bara mikið. Einmitt, svo er þetta bara til að gera það auðveldara fyrir þig, já. Já? [01:19:56] Áhorfendur: Hvar gerði við búa window.onload? Eða document.ready? [01:19:58] DAVIN: Já, það er. Já, það er, kannaði ég. [01:20:02] Gabe: Ekki fyrir þá til að hugsa um. [01:20:03] DAVIN: OK, þannig að ég ætla að fara að segja þér engu að síður. Svo í rauninni, bara almennt, svo window.onload bíður fram DOM, allur HTML, fullt. Það bíður fram myndir hlaða. Það bíður þangað til allt fullt. document.ready, það bara bíður fram DOM fullt þínum. Þegar HTML er allt þarna, einu sinni DOM er það, byrjar að keyra. Það er eini munurinn. [01:20:23] Gabe: Quick geðheilbrigði athuga hér. Þannig að þetta er hægt að sjá konar eins línu af kóða, ekki satt? Vegna þess að það er window.onload jafngildir fullt af efni. Þegar JavaScript les þetta, satt eða rangar, sem virka fær keyrð. False. OK? Hvað gerist hér, þú ert bara farið þessi aðgerð sem nafnlaus virka að window.onload. Og svo þegar það er að fara að í raun fá fram? Þegar gluggi opnast. Það er atburður. Svo er það jus t sem við erum að tala um áðan, ekki satt? Svo þegar atburður gerist, fallið gerist. Sami hlutur með onClick. [01:20:59] DAVIN: OK, svo einhver tók burt document.ready. En þetta mun vera nákvæmlega same-- Áhorfendur: The dollari skilti, sem er document.ready. Það er flýtileið. [01:21:07] DAVIN: Ó, það er? OK, Þannig að þetta þýðir document.ready, flýtileið. En þetta er það sama og window.onload nema fyrir smá munur Ég sagði þér frá. Og þetta er jQuery. Þannig að þetta er nákvæmlega sama thing-- þetta er JavaScript. Þetta er just-- sumir hugsa um það sem meira ljós þyngd, sléttur útgáfa sem hefur hellingur af virkni að þú munt sennilega vera með. Svo er þetta nákvæmlega það sama. [01:21:34] Svo það að eins konar benda á. Svo í öðrum td við hafði document.getElementByID, svo við höfðum þetta lengi band sem er að fara að fá þáttur af þeirri ID það hefur. Það er komi þessu símtali hérna. Svo þú sérð dollaramerki, þá sérðu vitna, hashtag. Hashtag er alltaf val. Það segir, OK, þetta hefur að gera með auðkenni. Hvað er val fyrir flokk? [01:21:56] Áhorfendur: Dot. [01:21:57] DAVIN: Dot, ekki satt. Ef þú ert bara að fara að Veldu merki, hvað er það? Það er bara tag, nákvæmlega. Og þú getur notað það hér, eins og heilbrigður. [01:22:05] Gabe: Og tag, er átt við eins div, til dæmis, eða höfuð. [01:22:08] DAVIN: Eða aðili eða p eða eitthvað svoleiðis, já. Svo hér, OK, í stað þess að segja document.getElementByID, þetta er bara nákvæmlega það sama. Bara í jQuery, það er styttra. Svo er það einfaldara. Svo, ekki meira onClick, bara smella. jQuery virka, kalla þessa aðgerð. Alert er nákvæmlega sama. Svo það er svolítið minni, eða svolítið styttri, heldur lítið bit-- fólk það er svolítið auðveldara að skrifa út, svolítið auðveldara að skilja. En þetta er jQuery. A einhver fjöldi af fólk að fá smá dálítið ruglaður og áhyggjur og þeir hugsa, OK, jQuery er öðruvísi en JavaScript. Ég verð að muna þetta tveir mismunandi hlutir. Það er ekki. Ég meina, það er mismunandi setningafræði. En jQuery er JavaScript. Það er bara að því er virðist betri útgáfa sem gæti verið auðveldara að skilja að fólk notar. Gabe: Já, að vera heiðarlegur, það dollaramerki sem þú sérð í jQuery, það er bara nafn á aðgerð sem jQuery skilgreinir. Það hefur ekki neitt sérstakt. Er það er bara nafn fall, bara eins og þú gætum skilgreint dollaramerki. [01:23:03] DAVIN: Einmitt, svo talað um þetta. Nokkur gagnleg atriði. Ég var að horfa aftur á gömlu Skyndipróf. Á undanförnum Skyndipróf par, þeir þurfti að nota hluti eins og þetta. Svo document.ready, svo ganga úr skugga um að allt er hlaðinn áður en þú byrjar að gera hlutina. Veldu auðkennið eða velja flokki, myndi það bara vera vitna punktur sumir bekknum, enda vitna. Leggja fram, þannig að ef þú ert senda mynd og kalla þessi aðgerð eftir formi leggur. Value, þannig að við skulum segja að ég átti mynd uppgjöf, eins og notandanafn, tölvupóst, hvað sem er. Ég hafði textabox. Þannig að ég ætla að slá inn í þessi textareitinn. Jæja, ef þú vilt fá verðmæti út af því að textareitinn, notar þú punktur Val. Og þá, hérna, punktur HTML er það sama er eins skjal punktur getElementByID punktur Innerhtml. Svo það er að fara að fara aftur þú HTML frá þeim ID. Hér þú notar bara ID eða hvað punktur HTML. Það mun fá HTML frá því frumefni. Ef þú vildi þá breyta því HTML, getur þú framhjá henni eitthvað. Svo þú vilt vera eins og punktur HTML, og þá inni, vitna, ný HTML eða eitthvað. [01:24:05] Gabe: OK, svo AJAX. Mér finnst virkilega að skilja AJAX mjög vel. Svo ég vil ykkur til skilja AJAX mjög vel. Vegna þess að ef þú gerir það, þú ert ansi mikið að fara að skilja allt sem hefur að gera með HTTP, PHP, JavaScript vegna það allt kemur saman í AJAX. AJAX er ekki tungumál. AJAX er tækni. Og það notar fullt af mismunandi verkfæri. AJAX stendur fyrir ósamstilltur JavaScript XML. Svo aðferð, tungumálið, gögnin. [01:24:36] Svo helstu tungumál sem við notum í AJAX til að kveikja allt og að höndla allt síðar er JavaScript. Það er hvers vegna það tengist mjög nálægt JavaScript. Og þá er ósamstilltur vegna þess að við gerum það ekki allt í einu þegar við erum að hlaða síðuna. Þetta er hlutur sem við getum gera hlutina konar samhliða. The aðalæð hugmynd á bak AJAX er sem þú vilt það að fá smá tilteknar upplýsingar. Til dæmis, þegar þú ert að skrifa nýja notandanafn þegar þú skráir notandanafn, Notendanafnið mitt er abc123. Og þá, í ​​lok sem mynd, þú þarft að smella á Senda. Og það þurfti að fara til the framreiðslumaður, og þá athuga hvort í gagnagrunninum, abc123 er þar nú þegar. Og ef það er nú þegar, segir hann, notandanafn er þegar í gagnagrunninum. Og þeir, þú þarft að fylla út öllu formi aftur. Og það var virkilega, virkilega slæmt. [01:25:23] Og þá fólk segja, OK, hvers vegna getur ekki við bara gera lítið HTTP beiðni til réttlátur stöðva til að sjá hvort þessi notandi er í gagnagrunninum áður en notandinn þurfti að leggja allt formi? Svo til dæmis, þegar notandi lýkur slá abc123, skulum fara bara til miðlara a lítill bita og bara sannur eða falskur frá miðlara til að sjá hvort það er gilt notandanafn eða ekki. OK, svo er það eitt af helstu notar AJAX nú á dögum enn. [01:25:49] DAVIN: Svo raunverulegur fljótur, í að Ajax hringja í jQuery, þú gætir endilega að þér vil það að vera samstilltur. Þú ættir ekki að gera þetta. En þú getur gert það. Og ef þú gerðir það, hvað myndi gerast? Jæja, til dæmis, þegar þú ert fá fréttir eða hvað, Vafrinn þinn er bara að fara að bíða þar sem allt símtalið er lokið í stað þess að láta þig gera annað hlutina rétt eftir að þú smellir því. [01:26:14] Gabe: Það er ekki farið aftur. Oh my god. Sorry! Yup. "Í the fortíð, viðskiptavinur þarf að beiðni allt efni á vefsíðu. " Það er það sem ég sagði. Það gerir okkur kleift að senda viðbótar GET eða POST beiðnir án þess að hafa að endurræsa vafrann okkar. Svo í lok dagsins erum við í raun að gera HTTP beiðnir hér að nota JavaScript. Því áður, sem við notuðum bara JavaScript að breyta HTML sem þegar kom. Og nú getum við notað það til tengi með the vefur framreiðslumaður eins og heilbrigður. Leiðin þetta gerist er að við höfum viðskiptavinur. Davin er viðskiptavinur. Og hann hefur alla JavaScript gangi því HTML er heimsk. JavaScript er klár. Svo hefur davin Davin klár hans hluti og heimsk hluti hans. Hann er að fara að nota Smart hluta hans nú. Hann er að fara að nota JavaScript til beiðni, til dæmis, hvort abc123 er í gagnagrunninum eða ekki. [01:27:04] Svo Davin, vinsamlegast, þú bara senda mér HTTP beiðni. Þakka þér. Svo sendi hann bara HTTP beiðni. Þú sérð það? Og það er bara á sama hátt að allir HTTP beiðni er send. The flettitæki, Google Króm eða eitthvað, er fara að sjá að Davin er reyna að senda HTTP beiðni, að fara að hjálpa HM svolítið. Og það er að fara að fara alla leið til the framreiðslumaður. Nú, the framreiðslumaður er að fara að hafa PHP hér, eða önnur tungumál. Rétt eins og í venjulegum HTTP beiðni. Það er ansi mikið eðlilegt HTTP beiðni. [01:27:31] Og þá, þjóninum er að fara að segja, OK, Davin vill mig til að athuga hvort þessi abc123 er í gagnagrunninum. Fara tala fyrirmyndinni. Líkanið segir það er ekki. abc123 er góð notandanafn. Og þá er vefur framreiðslumaður er að fara að nota PHP til að veita einhvers konar skrá. Það gæti verið bókstaflega bara skrá sem inniheldur "já" í það, eða "nei, eða eitthvað svoleiðis. Það gæti verið einhver skrá. [01:27:54] Það gæti verið eins og ég ætla að senda Davin mynd af önd ef það er í gagnagrunninum og senda mynd af hamsturinn ef það er ekki í gagnagrunninum. Það var svoldið heimsk, en það mun virka. OK, þannig að ég sendi önd til Davin. Davin fékk önd. Og nú, sem er að fara að takast á við önd? Klár hluti Davin á ný, svo JavaScript, ekki satt? JavaScript sendi beiðni, og JavaScript er að fara að fá beiðni og túlka það á einhvern hátt. [01:28:22] Og í þessum skilningi, það er að fara að segja, OK, ef önd þá er ég góður. Ef hamsturinn, þá er ég að fara að segja, nei, notandanafn þegar er til í gagnagrunninum. En yfirleitt, þú ert ekki að fara að senda önd. Þú ert að fara að senda eitthvað örlítið betri. Og það sem við notum er XML. Og nú nýverið, notum við JSON. JSON er bara JavaScript Object Ritháttur, sem er í grundvallaratriðum þú færð Öll JavaScript mótmæla. Og þú setur það í skrá, rétt eins og sem CS50 hlutur sem þú krakkar sáu. Þú setur það í skrá, og þú sendir það yfir til Davin. [01:28:53] Þannig að í þessu tilfelli, myndi ég gera JavaScript hlut og bara segja, notandi er til, já. Eða notandi til, nr. Og senda hana aftur til hans. Og hvers vegna JSON? Vegna einstaklings sem er að fá þetta er fara að nota JavaScript að takast á við viðbrögð. Og JavaScript virkar svo vel vegna þess að það heitir JavaScript Object Ritháttur. Ekki satt? Svo hann getur bara hringja í aðgerð og fá þetta ágætur hlutur frá viðbrögðum. Og þá er hann að fara að vita hvort að notandinn hefur í gagnagrunninum eða ekki. [01:29:22] Svo þú sérð, það allt að koma saman í vefþjóni, og þá er það einn HTTP beiðni og einn HTTP svar og allt. Svo tryggja þú krakkar skilur þetta AJAX símtali því það hjálpar þér að skilja allt af þeim hugtökum sem við erum að tala um. [01:29:37] Svo er hér dæmi AJAX með jQuery. Og hér, við gerum við fá JSON. Þannig að við erum ekki að reyna að fá að mynd af köttur hér, eða önd. Við erum að reyna að fá JSON skrá. Og þá erum við að bíða þar til það er gert, punktur gert. Það þýðir að ég er að bíða eftir svari. Það gæti tekið smá tíma. Þá, þú sérð smá hleðsla. Ef þú vilt gera það í vefsíðuna þína. Svo punktur gert, og hvað þá gerist þegar það er gert? Þú fara í nafnlaus virka, rétt eins og við sáum áður. Vegna gert er atburður, bara eins að smella á mús eða hvað, fyrir jQuery. Svo þú fara í þessa aðgerð með gögn, texta, stöðu, og jqXHR. Og í rauninni, það er bara nokkrar breytur að þú getur notað síðar til að hafa stöðu HTTP beiðni, gögn sem það er að fara að senda til baka til þín. Svo þá getur þú síðar túlka það og gera eitthvað þroskandi við það. Og ef það tekst ekki, þegar það gæti ekki? Jæja, þegar HTTP beiðni gefur þú 500 eða eitthvað svoleiðis. Þá er að fara að segja þér staða, hvers konar bilun sem var, og alls konar hlutir. Þú þarft að ganga úr skugga um til að takast á bæði málin, annars program fer brjálaður. [01:30:42] DAVIN: Svo já, þetta er einmitt það sem þú sást á síðasta þínum p-setja. Raunveruleg AJAX símtal er í FÁ JSON. Það er hringt. Og þá, punktur gert er eins tékka hvort það er vel. Ef það er vel, þú vilt að gera eitthvað með þeim gögnum. Þú færð til baka frá því að JSON Biðja um gögn. Það er það sem þú færð til baka. Svo ef þú manst frá þinn p-sett, a einhver fjöldi af þú varst eins og gögn krappi ég eða hvað, punktur tengil eða titil. Whatever kemur aftur frá þeim JSON, hvað svæðin eru í því JSON mótmæla, það er það sem þú ert að fá til baka. Gögn er það sem þú ert að fá til baka. Texti stöðu, bara eitthvað sem gerir þér kleift að vita hvað gerðist. Og þá, jqXHR, það er bara sem jQuery XML HTTP beiðni. Það er bara eins og hlut. Og þá ekki, alveg eins og Gabe sagði. Gabe: Í litla dæmi okkar abc123 bara að athuga hvort það er í gagnagrunninum eða ekki, gögnin væri eitthvað sem þú myndi gera, ef gögn punktur notandanafn er, sem er það sem PHP þinn mynda fyrir þú, ef gögn punktur notandanafn er, þá Ég ætla til að láta, notandi nafn er þegar til. Annars, ég ætla bara að fara að láta notandi áfram að fylla út formið. OK, öryggi, flott. [01:31:50] DAVIN: Viltu mig að? [01:31:52] Gabe: Mér finnst þetta einn. Svo eitthvað lítur að kannast. Við erum næstum búin. Svo er þetta bara dæmi þið sá í bekknum. Þú varst að nota argv1 hér. Það er eins og a stjórn lína rifrildi. Og við erum að mem afritun sem í biðminni stærð 12. Hvað er vandamálið hérna? Buffer flæða! Þar sem við höfum biðminni af stærð 12. argv1 gæti hafa stærð tveir milljarðar. Við gerum ekki allir mörk stöðva. Svo við gætum afrita mikið af minni. Og við munum vera sérstaklega slæmt um þetta. Hvað getum við gert það er mjög meina í þessu tilfelli? Já? Áhorfendur: Hluti af tveimur milljörðum hlutum inniheldur executable kóða sem skilar [Inaudible]. Gabe: Einmitt. Svo er að hvers konar hlutur sem fólk notar að Flótti iPhone, til dæmis. Svo svoleiðis. Þar sem þú getur bara gert tækið framkvæma allir kóðann sem þú vilt. The festa, svo er festa auðvelt. Bara athuga mörk. Þú athuga null því ég við athugum alltaf for null þegar við erum að fást við strengi. Og þá, þú tekið band lengd áður. Og ef streng lengd er gild band lengd, sem er innan 0 og 12, þá erum við góð. [01:33:03] DAVIN: Ef þú velur ekki fyrir null, raunverulegur fljótur, hvað mun gerast? Það verður seg kenna. Hvers vegna verður það seg kenna? Þar sem þú ert að hringja strlen á null. Gabe: Já. True eða False, með einu lykilorð er góð hugmynd. [01:33:19] Áhorfendur: False. [01:33:20] Gabe: False. Nota margar aðgangsorð og stór, löng sjálfur. Hengilás tákn tryggja öryggi. [01:33:26] Áhorfendur: False. [01:33:27] Gabe: False. Það þýðir ekki neitt. Það er bara tákn. SSL ver gegn a maður í miðja árás. Áhorfendur: False. Gabe: False. OK, þannig að allir þeir sem eru rangar. Nice. [Inaudible] Langar þig til að tala um þetta? Snúa. DAVIN: Tegundir árásum, maður í miðjunni. Hvað er maður í miðja árás? Áhorfendur: [inaudible]. DAVIN: Ef þú sendir HTTP beiðni, gætu þeir gert þetta, ekki satt? En ef þú ætlar að senda HTTPS, þeir verður að öllum líkindum ekki vera fær um að gera þetta. Það er hellingur af stöðum ásamt tenginguna þína. Þú hefur leið. Þú hefur DNS framreiðslumaður. Ef einhver er fær um að líkamlega sjá hvað þú ert að senda, svo er einhver geti í raun að fá á milli þín, viðskiptavinur og miðlara, og er fær um að sjá hvað þú ert að senda, þetta er maður í miðja árás. Svo til að sjá hvað þú ert að reyna að fá frá the framreiðslumaður, eða er fær um að see-- verra, þú might vera fær til að sjá kex eða eitthvað svoleiðis. [01:34:16] Svo til dæmis, ef þú ert ekki að nota SSL, hann gæti verið fær um að sjá fundur kenni smákökur. Og þetta er kallað fundur ræna því hann sér ID fótspor þitt, og þá er hann fær um að fara til að website og þykjast vera þú. Því bara eins og í PHP, muna þegar við skráður inn, hvað gerum við? Við setjum fundur ID jafnt ID. Svo sem auðkennir þig. Það er hvers vegna þú getur séð eigu þinni og eignasafn ekki allir annars. [01:34:38] Jæja, ef ég er fær um að fá að kex, þá get ég skráð þig inn þá síðu. Og þá get ég bara að skoða dótið þitt og byrja að kaupa og selja efni. Svo er þessi fundur ræna. En þú ættir ekki að vera fær um to-- svo þér Hægt er að nota manninn í miðju árás jafnvel þótt þær séu með SSL. En þú ættir ekki að vera fær um að. Ef þeir eru að nota SSL, þú getur ekki fundur hijack. Hvers vegna? Vegna þess að það er allt dulkóðuð, ekki satt? ef það er dulkóðuð, og ég er enn maður á að miðja, ég fæ samt gögnunum. Það er allt í lagi. En það er dulkóðuð. Svo ég get ekki raunverulega að nota það. Svo er að tveir. [01:35:09] Raunverulegur fljótur, kross síða beiðni falsanir. Það er bara ef það er tengill og að tengillinn virkar eitthvað að þér finnst ekki að það ætti að gera. Svo til dæmis, ef tengingin var að fara að kaupa hlutabréf eða selja hlutabréf, og þú ekki vita það. Þú smellt á tengilinn, sendi beiðni keypt eða selt eitthvað sem þú ætlaði ekki að gera. Það er það. [01:35:25] Cross staður forskriftarþarfir, svo hér, þú ert að brottför í gegnum breytilegum q, stað þess að velta í einhvers konar gildi, kannski q er eins nafn. Þannig að í stað þess að velta q jafn Davin eða eitthvað svoleiðis, ef þú notar ekki HTML sérstök stafir, ef þú ekki flýja þetta til að tryggja að það er OK, þá gæti ég fara í staðinn, við skulum segja hér ég er að segja prenta eða eitthvað svoleiðis, þá gæti ég fara hér handrit hringja. [01:35:51] Þannig er þá, í ​​stað þess að bara að fá breytu, Ég myndi þá keyra þessa handrit hringja. Svo inni þessi handrit kalla, hvað þýðir það að gera? Document punktur staðsetningu, það er að fara að breyta staðsetningu skjalsins. Þannig að ég ætla að beina til staðar. Það heitir slæmur strákur í þetta dæmi, mjög gott. Gat ekki hugsa um orðið. Og þá, það er jafnvel verra er að ég er að fara að ákveða síðan kex, sem er nokkur breytu sem ég hef á þessari vefsíðu. Ég ætla að setja það jafnt að skjal punktur kex. Því ég er að fara að stela kex þinn. Og ég ætla að beina nokkrar upplýsingar til a website að þú ættir ekki að fá aðgang. Og þetta gerist allt vegna þess að þú ert ekki sleppi hvað þú hefur séð. Já? [01:36:29] Áhorfendur: Svo bara til gera það ljóst, að það er vulnerable.com að er viðkvæmt fyrir þessu. Svo að tengill getur birst á hverri síðu. Einhver smellir á það, fer til vulnerable.com. Þú ert með fótspor á vulnerable.com. Segjum Facebook er viðkvæmt, svo facebook.com. Þú ert Facebook kex þinn. Hvað er þetta að gera, þú ert fara til facebook.com, það er strax Áframsendi þú að badguy.com, en þar á meðal upplýsingar um kex þinn. Svo er það fljótleg endurvísa, en Facebook kex þitt fylgir með því endurvísa, og það er hvernig þeir [inaudible]. Gabe: Já, það er sumir mjög mean hlutir að fólk getur gert ef það er þetta. Til dæmis, ef Facebook leyft allir að breyta notandanafni, og þeir vildu ekki gera allir heilindarathugunum, svo þú gæti sett á JavaScript hlutur sem breytingar mynd í hamsturinn. Og það setur sömu JavaScript í alla sem skoðar síðuna þína. Svo allir sem skoðanir síðuna þína hefur það sama í the notandi nafn. Og vegna þess að það er a veira, það berst veldishraða. DAVIN: Við munum sleppa síðasta einn, og þá erum við að því loknu. Svo er þetta bara annað dæmi. Svo er þetta sem þeir eru ekki sleppi SQL borðið. Svo er hægt að sleppa því. Svo þú vilt að flýja það. Það var fyrri dæmi með kross síða forskriftarþarfir. Því miður við rann svolítið seint. Á morgun, því miður! Á morgun, höfum við skrifstofutíma. Svo Viðtalstími í Cabbot 8:00-11:00. Á opnunartíma skrifstofu eru aðeins fyrir quiz spurningum.