R.J. Aquino: Við skulum bara byrja. Svo er þetta Quiz 1. Hér eru nokkur hár-láréttur flötur upplýsingar. About síðu fyrir prófið er á þessum URL, ekki lengur CS50.net, þó að vilja enn vinna. Það er CS50.harvard.edu/quizzes/2013/1. Það er stór Um síðuna, segja þér hvar og hvenær, þ.e. næsta miðvikudag í fullt af herbergjum. Og með því að næsta miðvikudag, ég meina tvo daga. Allar þessar upplýsingar séu þar. En það er uppsöfnuð. Svo allt frá fyrstu sex ári er hugsanlega á spurningakeppni, vegna þess að þú getur í raun ekki gert nákvæma hlutir í C ​​án ef aðstæður og fyrir lykkjur og þess háttar. En það verður lögð áhersla á efni sem falla síðan Quiz 0, byrja með structs og skrá I / O. Það er yfirleitt meira krefjandi en Quiz 0. Meðaleinkunn er yfirleitt lægri. Læra erfitt. Á meðan þú ert að læra, vera viss um að nota CS50/discuss að senda inn spurningar þínar og lesa spurningar annarra. Svo ef þú ert ekki einhverjar spurningar, skrá þig inn og lesa spurningar vina þinna. Þeir eru sennilega góðar spurningar. Og taka æfa Skyndipróf. Við höfum verið að gefa Skyndipróf fyrir sjö eða átta ár núna. Þeir eru allir á netinu. Framundan spurningar eru svipaðar í gömlu spurningum. Það er hvernig við tökum þá. The quiz er ekki til ennþá. Enginn af okkur hefur séð það. En það mun líta út eins og fyrri Skyndipróf. Fyrir þessa endurskoðun fundur, þetta er ekki tæmandi listi yfir málefni. Þú getur ekki bara sækja það og þá vera fullkomlega tilbúinn fyrir prófið. Annars, myndi það ekki vera að mikið af spurningakeppni. Og þetta er heldur ekki endilega allt sem þú þarft að vita um hvaða tilteknu efni. Það er ætlað að fletta ofan af þér að því sem við höfum fjallað, minna þig á hvað við falla, og hvernig sem við tekur það. En þú verður að ganga lengra og dýpra þegar þú nema til tvöfaldur-stöðva að þú veist allt um hverju topic og að þú hafir fyllt í öllum hornum sem voru fjallað í fyrirlestri. Spurningakeppni athugasemdum segja þér að fara til Scribe athugasemdum, horfa fyrirlestur myndbönd. Það er góð leið til að ganga úr skugga um að þú hafir Afgreidd Allar bækistöðvar. Svo að byrja, þegar ég gerði þetta skyggnur, reyndi ég að setja þar sem ég fann upplýsingar. Svo fyrir skrá I / O, til dæmis, Vika 7, Mánudagur fyrirlestur og staða Kafla 6 og Heimadæmi allir hafa upplýsingar um skrá I / O. Ég hef gert þetta fyrir hvert atriði. Svo þessir titill skyggnur heimilt verið gagnlegt fyrir þig. Svo hér höfum við skrá I / O. Mundu, í Heimadæmi 5, notuðum við fopen, fclose, fwrite, fread og fseek. Having batna 30ish JPEG og hafa breytt og boðberi með bitmaps, ættir þú að vera nokkuð kunnuglegur með þessum aðgerðum og hvernig þeir vinna. Ef þú ert ekki lengur þekki, örugglega skoðað þær. Og vertu viss um að skilja hvað mismunandi rök eru, þegar þeir eru notaðir. En sameiginlega skrá tengdum galla þú gætir verið beðin um - Jæja, ef þú hefur gleymt að athuga hvort fopen unninn áður en þú ferð að breyta skrá. Það gæti verið slæmt. Ef þú hefur gleymt að fclose skrá að þú hafir fopened, sem er svipað og A minni leka. Það er ansi slæmt. Og gleyma að athuga hvort þú hefur náð í lok skrána áður en þú byrja að skrifa á það. Þannig að ef þú segir, hey, ég er í í lok skrárinnar. Gefðu mér 5 fleiri bæti. Jæja, það er líklega ekki að fara að vinna út eins og þú býst við. Það er í raun það fyrir skrá I / O, vegna þess að við gerðum svo mikið af því með vandamálið sett. Þannig að ef þú skilið hvað var í gangi í Heimadæmi 5, muna bitmats og JPEG, þá þú ert líklega allt sett skrá I / O. Ef það er dálítið loðinn, ákveðið að endurskoða þá vandamálið stilla og tengd efni. Structs umfjöllunarefni sem voru á lína milli Quiz 0 og Quiz 1. Ekki alveg að skera fyrir Quiz 0. Svo þeir örugglega vera á Próf 1, Vika 7, mánudagur. Hvað er strúktúr? Hér sýnum við strúktúr. Það er eins og nýr tegund. Það er eins og gámur fyrir mörgum sviðum. Í þessu tilfelli höfum við lýst strúktúr nemandi sem hefur tveimur sviðum - band sem við köllum nafn og int sem við köllum aldur. Svo þegar ég framhjá um nemendur eða ég breyta nemendum, ég vera fær um að aðgang nafn sitt og aldur þeirra. Við skulum líta á einhverjum kóða fyrir það. Hér sjáum við að ég hef lýst nemandi s, rétt eins og Ég lýsi hvaða breytu - int x, int Y, et cetera. Hér er nemandi s. Hann byrjar með ekkert á sviðum hans. Svo við skulum setja þá. Þú stillir reiti á strúktúr með DOT. Svo ég hef sagt hér að s.name = RJ. Og s.age = 21. Þú getur einnig uppfæra reiti á sama hátt sem þú vilt uppfæra gildi breytu. Svo vil ég að breyta nafni mínu frá RJ með Engar tímabila R.J. stafsett réttan hátt. Það væri hægt að s.name = RJ, sama eins og ég sagði það upphaflega. Og þá er hægt að nálgast þær. Þannig að við höfum sett þá. Við höfum uppfært þær. Þú getur einnig nálgast þær í mjög sama hátt. Svo hér er ég að prenta út R.J. Er 21 ára gamall. Og ég er að fá aðgang að þeim gildum með s.name og s.age. Svo það er aðgangur structs með punktur sýndur. Já, spurning? Áhorfendur: Er einhver ástæða á Fyrri mynd sem þú hefur ekki sett nemandi á efstu línu, eins typedef struct nemandi og þá nemandi í lok? R.J. Aquino: Svo spurningin var, á þessi mynd höfum við yfirleitt séð typedef strúktúr hnút og þá akurland strúktúr og þá orðið hnút. Og hvernig koma hér Ég sagði ekki, typedef struct nemandi og þá akurland strúktúr og þá námsmaður? Ástæðan er sú að ég þarf ekki að aðgang að henni inni í strúktúr. Svo það er allt í lagi að láta það án nafns. Ég get bara láta það eins og nafnlaus strúktúr. Ástæðan að við gerum það fyrir tengd listum og hlutir er vegna þess að inni þú þarft að vísa til struct hnúður stjörnu. Svo hefur strúktúr að hafa nafn, svo þú geta aðgangur það síðar. Það er a moll smáatriðum. En þú munt yfirleitt sjá typedef strúktúr hrokkið axlabönd ef þú þarft ekki nafn og typedef strúktúr sumir heiti fylgt eftir hrokkið axlabönd ef þú vilt þarf nafn. Svo er það góð spurning. Og á þeim tímapunkti, við hafa tilhneigingu til að breyta structs og fara í kring structs með tilvísun, ekki við gildi. Þannig að við munum bara fara í kring ábendingum til structs stað þess liggur í kringum structs sig. Svo þú ert mjög oft að fara að vera með því að nota, í þessu tilfelli, Nemi * eða struct node * eða node * staðinn út nemendum eða hnúður. Svo hér hef ég sagt, OK, breytu PTR er að fara að vera heimilisfang s. Það er að fara til vera the bendiprik til nemanda R.J. Svo við getum fengið á þessum sviðum það sama og við fáum neitt. First, ID tilvísun músina að fá strúktúr. Það er * PTR og þá punktur og þá aldri. Svo til að fá aðgang á sviði, og ég hef uppfært það nú til 22, vegna þess, við skulum segja, það var afmælið mitt. There 'a smákaka setningafræði nota örina hér. Svo PTR arrow aldur er bara það sama og * ptr.age. Nú, það er eitthvað sem þú verður að leggja á minnið og muna. Þú notaðir það mikið í pset6, á Speller pset. En þetta er í raun það sem er að gerast á undir hetta. Það er dereferencing músina og þá fá aðgang að henni. Spurning? Áhorfendur: [inaudible]. R.J. Aquino: Svo hvers vegna við erum að nota Ábendingum og structs stað þeirrar structs sig? Ástæðan væri ef þú ert liggur A strúktúr að aðgerð, sennilega langar að fara í kring bara 4 eða svo bœti sem tákna músina, eins og öfugt við hugsanlega 30 eða 40 bytes sem eru í strúktúr. Svo liggur eitthvað að virka er auðveldara þegar hlutur er minni í stuttu máli. Spurning? Áhorfendur: Þú gætir hafa minnst á í upphafi, en það eru aðrar renna upp á [inaudible]? R.J. Aquino: Þessar glærur verður upp eftir endurskoðun fundur. Við munum birta þær á vefnum. Svo áhrifamikill á og færa á örlítið hraðar, við erum að fara að tala um gögn mannvirki. There ert a einhver fjöldi. Við tekur fullt af þeim. Hér er það sem þú ættir að skilja um gögn uppbygging. Þú ættir virkilega að skilja á hár stigi hvað hver uppbygging er. Geturðu útskýrt á ensku til þín vinur sem hefur ekki tekið CS50 hvernig við erum að skipuleggja gögn okkar og hvers vegna við myndum vera með eitthvað á þennan hátt? Það er sem maður. Hlutur tveir, skilja framkvæmd. Svo að skilja hvernig á að nota þessa hluti í C. Og við munum vera að fara yfir þetta. Og þá hlutur þriggja yrði vita hlaupa sinnum og þeim takmörkunum sem Ýmsir hlutar sem þú ert að nota. Svo að skilja hvers vegna þú myndir nota kjötkássa borð í stað fjölda. Skilja hversu hratt, að meðaltali, aðgang kjötkássa borð er. Skilja hvað aðgerðir eru hratt á tengda listanum en hægur á fylki og öfugt. Svo að skilja að, verður þú að skilja Big-O tákn bara að vita hvernig á að tala um þessa konar hluti. Og við munum tala um það. Svo fyrsta sem, tengd listum. Hér er a hár-láréttur flötur mynd um tengda listanum. Við sýnum þetta í bekknum. Við höfum yfirleitt 10 manns standa á sviðinu. En við höfum röð hnúta þar sem hver hnútur hefur einhverja gildi og bendi til næsta gildi hennar. Svo að fá frá einum hnút til annars, þú bara segja, gefa mér næsta hnút. Þú hafa þessi hnút. Gefa mér næsta hnút. Þú hafa þessi hnút. Gefa mér næsta hnút og svo framvegis þangað til það er engin hnút vinstri. Svo halda áfram að tala um það á háu stigi. Það er mjög auðvelt að setja hlutina í tengda listanum. Ef þú hefur ekki sama um röð, þú getur bara sleppt því rétt í byrjun. Það er stöðug skipti. En það er erfitt að finna gildi. Ef þú ert að reyna að spyrja, er sjö á listanum mínum? Þú þarft að fara í gegnum hvert einasta gildi. Er þetta sjö? Er þetta sjö? Er þetta sjö? Er þetta sjö? Aftur og aftur. Og það er O (n). Svo þegar að læra fyrir prófið, bera þetta með fylki. Er það í lagi? Ljósin fór lítil. OK. Þegar er tengdur listi betra? Þegar er fylki betra? Svo skulum líta á nokkur númer. Hér er möguleiki hnút. Það er strúktúr. Það hefur int N, þar sem verður gildi okkar. Og það hefur strúktúr node * næst, sem er bendillinn okkar á næsta hnút. Svo hér, getum við séð að við gerðist að hafa sett við int í hnút okkar. En ef þetta væri tengt listi af bleikju stjörnur eða tengds lista af fljóta, við algerlega gæti gert það líka. Man í pset6, hafði þú sennilega tengdur listi af bleikju stjörnurnar eða bara truflanir bleikju fylki. Við skulum líta hér á aðgerð. Þannig að við viljum setja inn nýtt n í tengda listanum okkar. Við byrjum út með höfuð músina sem er bendi á þennan hnút sem hefur gildi af n og við hliðina á músina sem benda til þennan hnút er gildi N og A við hliðina af engu, vegna þess að það er síðasta hnút. Svo í þágu tíma, ég mun setja alla kóða á skjánum. Og við munum ganga í gegnum það nokkrar línur í einu. Svo hér er númer. Ég vona að það er læsileg. The fyrstur hlutur sem við gerum er við malloc nýjan hnút. Svo það gerir bendi á nýjan hnút sem er ekki alveg með neitt stillt upp í það enn. Við athugum að tryggja að nýja hnútur er ekki núll. Annars höfum við að gefast upp. Svo hafa athugað það, við nú setja gildin í hnút. Þannig að við setjum nýja n í n okkar sviði. Og við setjum næsta músina til að benda á upprunalega höfuð, svo að við getum nú hafa sett þetta Hnútur í listanum okkar. Að lokum, höfum við yfirmaður benda til nýjan hnút okkar, þannig að ef við værum að byrja á höfði, við viljum vera á þessu nýjum fyrsta hnút í stað þess að gamla fyrsta hnút. Og þegar þessi aðgerð hættir að breytu nýr hnútur er ekki lengur til, því það var staðbundið við aðgerðina. Svo er þetta ástand í heiminum. Yfirmaður okkar bendir til nýja okkar fyrsta hnút, sem bendir til okkar Upprunalega fyrsta hnút, sem bendir í hnút eftir það. Það var innsetning. Ég vona að væri tiltölulega einfalt að fylgja. Hvenær í vafa, teikna mynd. Þannig að ég kemst að því að tala um tengd listum og horfa á númerið er mjög ekki gagnlegt. En að horfa á mynd af tengdur listi gerir mig að hugsa, ó, svo Ég hef þennan hnút hér. En ef ég endurnýja þessi músina, það endar ótengdur. Og ég hef gleymt hvar hnúturinn fer. Og númerið hættir. Og þú ert með margar hnúður sem aftengist. Og að þú endir ekki upp með á listanum sem þú vilt. Þannig að ef þú draga myndina og gera það skref fyrir skref, vonandi, munt þú sjá réttri röð af hlutum með tilliti til uppfæra ábendingum til að tryggja að listinn kemur saman. Innskotið er tiltölulega einfalt. A flóknari einn væri að setja inn í raðað lista. A flóknari aðgerð er að eyða og finna, svo að leita í gegnum lista til sjá ef eitthvað er þar. Kannski þú gerðir þetta í pset6 þegar þú fékk í kjötkássa töflunni og þú sagðir, vel, er orðið epli í tengda listanum mínum? Svo þú kannt að hafa þegar gert þetta. En ákveðið, hressa minni þitt og reyna að reimplement Finndu og reimplement eyða í tengda listanum. Gaman hlið minnispunktur, það einnig tvöfalt linked listum, þar sem þú hefur ábendingum sem vísa bæði fram og afturábak, þannig að þú gætir farið til Næsta hnút og í fyrri hnút. Og það var spurning um síðasta ári quiz af þeirri tegund, að tala um tvöfalt linked listum. Nú, það er uppbygging sem þú ert tiltölulega kunnugur, vegna þess að flestir af þú sennilega notað þá á pset6. Hér er eitt sem er dálítið minna þekkja. Eins og a hlið minnispunktur, ég held að Quiz 1 er aðallega erfiðara en Quiz 0, vegna þess að efni sem þú ert að gera, þú hafa ekki gert eins mikið. Til að setja það annar vegur, fyrir Quiz 0, þú hefðir skrifað mikið af C Og við bað þig um C. Fyrir Quiz 1, við erum að fara að biðja þig um PHP og JavaScript, sem þú hef ekki skrifað eins mikið um. Við erum að fara að spyrja þig um C-kóða sem þú hefur ekki skrifað eins mikið um, Þessi háþróaða C dót. Svo ákveðið, æfa the efni við talaði um í fyrirlestri sem þú ekki endilega gera á vandamálinu stillt. Talandi um, hefurðu ekki skrifað stafla á Heimadæmi. En það var í fyrirlestri. Hér er háttsettum mynd af stafla sem við sýnum á hverju ári. Það er stafla af stæði í the Mather matsalur. Á háu stigi, eru stafla síðasta í, fyrst út gögn uppbygging. Sem þýðir að þú ert að fara að setja hlutina í - 1, 3, 7, 12, 14, neikvæð 0. Eina sem ég gat ekki sagði - neikvæð 3, 0. Þú setur allt þetta inn Og það síðasta sem þú setur í er fyrsta einn sem er að fara að koma út. Þannig að þú hefur tvær aðgerðir - ýta og skjóta. Allt af að setja í að ég var gesturing svona eru ýta. Og svo þegar ég ná í til að grípa eitthvað eða ná á toppinn að grípa eitthvað, sem er popp. Þannig að við erum að fara að innleiða stafla. Og við sýndum þeim í fyrirlestri nota fylki. En þú gætir gert þær nota tengd listum. Stafli er huglæg gögn uppbyggingu, ekki eins og er framkvæmd-sérstakur einn. Svo hvað myndi það líta út? Það myndi líta svona svona. Þú vilt hafa heiltölu stærð. Og þú vilt hafa fjölbreytta gildi sem við köllum stæði, því það er hvað myndin var um okkur - int stæði - og þá nokkrar hámarks getu. Svo hvað myndi ýta líta út? Jæja, ef við erum með stafla S, þá að ýta eitthvað á s, myndum við fá stærð s. Og það myndi vera næsta opinn blettur af array okkar. Þannig að ef við höfum þrjá hluti í stafla okkar, þá stæði 3 myndi vera næsta Open blettur, vegna þess að 0, 1, og 2 eru nú þegar fyllt upp. Þannig að við að setja gildi inn s.trays [s.size] er þriðja staðnum. Og þá erum við stighækkun s.size að segja, hey, við höfðum þrjú atriði áður. Nú höfum við fjórir. Svo í næsta skipti sem þú ýta, þú ert að fara að setja eitthvað inn í 4. Eða næsta skipti sem þú skjóta, þú ert að fara að líta á 3 í stað 4 eða hvað sem er. Og þá munum við aftur sannir segja, hey, tók við. Þetta virkaði. Sem þumalputtaregla, ef fall sem er að koma til baka satt eða rangar alltaf skilar satt, þú getur hafa gert eitthvað rangt. Svo virkar þetta? Jæja, það virkar fínt fyrir 1, og 2, og 3, og 4, og fimm. En við skulum segja að ég ná getu mína. Ég hef þá hlaupa inn í a vandamál, vegna þess að Ef stærð er það sama og getu, ég er nú að reyna að setja eitthvað inn í array þar sem ég hef ekki pláss. Svo stutt stöðva til að laga þetta. Ef s.size == getu, return false. Annars, fara og gera það sem við gerðum. Svo hvað getum við beðið um fyrir stafla? Hvað annað ætti að læra? Hvað annað ætti að æfa? Jæja, innleiða popp. Við gerðum nú þegar ýta. Ég laga það. A non-array framkvæmd, þar þú notar tengda lista, kannski. A non-Int framkvæmd. Við gerðum ints hér. En það gæti hafa verið fljóta. Ég hefði getað verið strengir. Það gæti hafa verið bleikju stjörnur. Horfðu á undanförnum Skyndipróf fyrir hvers konar spurningar sem við höfum beðið um stafla. Ég segi að við falla stafla kring það sama og við höfum fjallað þá í árum áður. Svo quiz spurningar ættu vera góð vísbending. Áfram enn hraðar, biðraðir. Þeir eru eins og stafla. En þeir eru fyrst inn fyrst út. Ef þú ert breskur, orðið biðröð sennilega gert mikið vit til þín. Annars getur þú haft heyrði um það sem línu. Þeir vinna eins og línu á Apple Store. Fyrsta manneskjan til að mæta á 03:00 að morgni er fyrsta maður að kaupa iPad hans. Þannig að við höfum tvær aðgerðir - Velja slembið skinn og dequeue. Velja slembið skinn setur einhvern í línu. Dequeue togar fyrsta manneskja af línunni. Again, getum við að innleiða þetta með fylki. Svo er það strúktúr sem við sýndi í fyrirlestri? Það var þessi maður. Aftur, tölur. Aftur, stærð og þetta nýja hlutur framan. Hvers vegna er það eitthvað sem kallast framan? Það er við vísitölu í næsta þáttur til dequeue. Það er bara innbyrðis halda utan um fyrsta strákur að mæta, þannig að við geta draga það út þegar við þurfum að. Ákveðið útlit á fyrirlestur skýringum og reyna að innleiða Velja slembið skinn og dequeue þegar nám fyrir prófið. Mikilvægt atriði til að hugsa um. Umbúðir í kring ef framan auk stærð endar stærri en getu. Aftur, ef uppbygging er fullur, þú ert að fara að hafa vandamál. Hash töflur sem þú hefur séð áður. Flest ykkar sennilega framkvæmda þessir á pset6. Það er uppbygging sem miðar að O (1) föstu tíma sett í og ​​O (1) föstu tíma útlit. Í CS50, til framkvæmda við þetta sem fylki af tengd listum. The Key Component að kjötkássa borð er kjötkássa virka. Svo það breytir inntak þitt, við skulum segja, orðabók orð, í fjölda, sem er að fara að vera skránni okkar. Og við munum nota sem vísitölu í fylking okkar. Svo hér er sætur lítill mynd frá study.50.net. Við henda öll orð í kjötkássa virka okkar. Og kjötkássa virka segir okkur hvar á að setja þessi orð. Þetta er allt frábært í landinu þar það er bara eitt orð fyrir hvert rifa. En eins og þú manst eftir frá pset6, þar eru fleiri orð en rifa. Svo gerist það þegar þú fá árekstur? Í stað þess að geyma eitt gildi í, segjum, kjötkássa borð 3, þú geymt tengda listanum. Og svo í stað þess að þurfa cantaloupe hér, myndir þú hafa a tengda listanum, þar sem fyrsti hnútur er cantaloupe. Og næsta hnút er köttur. Og þriðja hnút er árekstur, við skulum segja, því öll þessi orð byrja með C. Svo mest af þú gerðir þetta fyrir pset6. Ef þú hefur ekki gert kjötkássa borð á pset6 og þú reynt eitthvað eins og A trie, örugglega endurskoða kjötkássa matskeið. Ef þú did gera það á pset6, örugglega endurskoða kjötkássa matskeið. Og ef þú gerðir það á pset6 og það gerði ekki vinna út alveg rétt og þú hafði mikið af vandræðum með það, örugglega endurskoða kjötkássa matskeið. Svo í raun er lexía ákveðið endurskoða kjötkássa matskeið. Mikill minnihluti þú reyndir út reynir á pset6. Háttsettum mynd. Það er eitthvað eins og þetta, þar sem hver hnútur hefur sett af börnum, þar sem hver Barnið samsvarar bréfi. Og sérhver hnútur segir einnig, hey, ég er orð. Svo í þessu tilviki, orðið Maxwell, ef þú fylgir m á A til að X-W-E-L-L og þá fylgja það einu. Og þú færð Þetta tákn, Delta, sem við signify að meina þetta er orðið. Svo er Maxwell orð. Þessar deltas eru allan merkja sem hlutirnir eru orð og sem hlutirnir eru ekki. Svo í pset6, gögn sem við geymd ásamt einhverju tengipunkta okkar var "Ég er orð. "Og kaldur hlutur óður reynir er þeir sýna innsetningu og fletta í O (lengd orði). Svo bara að komast í gegnum Maxwell, það er M-A-X-W-E-L-L. Svo sjö eða átta - Ég get ekki treyst - skref til að fá að enda og athuga það út. Svo fljótur framkvæmd hér. Rob fór í gegnum tengd lista í krufningarskýrslum hans. Svo stöðva það út. Sorry. Fór í gegnum trie í krufningarskýrslum hans. Svo stöðva það út. En þú hefur í rauninni hver hnútur hefur 27 ábendingum til næstu hnúður og einn Boolean fyrir er ég orð. Skoðaðu postmortem Rob fyrir hvernig þetta í raun er hrint í framkvæmd. Endanleg uppbyggingu okkar, trjánum okkar og tvíleitartré. Svo að horfa á þetta, þetta var fjallað síðast Vika 8, mánudagur. A tré er svipað og trie, nema þér ekki endilega hafa 27 hnútar á hvert lið. Og þú þarft ekki þessi gögn á hverjum skref sem táknar hvort - Slóðin liggur ekki máli. En a trie, leiðin frá toppi til botn, Maxwell, var mikilvægt fyrir okkur. En hver hnútur hefur marga börn, kannski. Við höfum sumir fleiri orðaforða. Rót trésins er á mjög toppur. Og við segjum að mjög bottommost hnúður sem hafa ekki börn eru blöð. Svo eins og trie, tré er uppbygging hnúta. Algeng tegund af tré sem við erum að fara að tala um er tvöfaldur tré, þar hver hnútur hefur engin börn eða eitt barn eða tvö börn. Svo er þetta ekki mynd hér tvöfaldur tré, vegna þess að hnútur 3 á þrjú börn. En ef við værum að hunsa þá, restin það er tvöfaldur tré því það sýnir eign sem hver hnútur hefur enginn, einn eða tvö börn. Svo hvernig getum við tjáð þetta í kóða? Við gætum haft hnút þar sem hver hnútur hefur heiltala innan þess, sem og sem bendi á trénu til vinstri og bendi á tré við rétt, svo báða krakkana. Hvernig er þetta að gagni? Jæja, ef við tökum reglur um hvar við setja hnúður, getum við gera leitina hraðvirkari. Svo er það hugtak í tvískiptri leit tré, þar sem allir hnútar á vinstri subtree hafa minni verðmæti en hnúturinn við erum að horfa á. Og allir hnútar á hægri hluttré hafa meiri verðmæti en rót hnút. Nú, það lítur út eins og a einhver fjöldi af orðum. Ég ætla að setja það inn tvöfaldur vitna og sýna ykkur mynd. Svo hér er dæmi um tvöfaldur leita tré. Sjá að við byrjum með 10. Allt vinstra megin við 10 er minni en það. Og allt til hægri er stærri en það. En meira svo en það, hver hnútur tré tjáir þessa eign. Svo hnúturinn 7 hefur 3 við vinstri og 9 til hægri. Svo allar þessar eru minni en 10. En að horfa á bara þá er 7 hefur 3 til vinstri hennar og 9 á rétt hans. Og álíka á hægri, 15 hefur 14 til vinstri hennar og 50 á rétt hans. Svo þrír hnútar þarna, 15, 14, og 50, eru einnig gild tvöfaldur tré eða gilt Tvíundarleit tré. Og þeir eru allir stærri en 10. Svo þeir hafa leyfi til að vera á hægri þar. Er það spurning? Áhorfendur: Hvernig heldur þú að takast þegar þú hefur tvo sjö og sjö? R.J. Aquino: Já. Hvernig gera þú taka með tveimur gildum sem eru þeir sömu? Sumir tvíleitartré segja að þú hunsa afrit, því að markmiðið er bara að segja, ég hef séð þetta svo langt. Sumir tvíleitartré þú gætir sagt hafa telja inni á hnút. Aðrir gætu sagt að allt að vinstri er minna en eða jafnt og. Og allt til hægri er stærra en. Það veltur bara á hvað Vandamálið er að þú ert að leysa. Svo í orðabók, til dæmis, þú myndi ekki hugsa um afrit. Þú myndir henda þeim út. En einhver önnur vandamál sem þú gætir kæra. Áhorfendur: Er það mögulegt að hafa A 1 vinstra megin við 15, sem er minna en 10? R.J. Aquino: Nei Ef 14 hér voru 1, þetta myndi ekki vera gilt Tvíundarleit tré, því allt til hægri 10 þarf að vera stærri en það. Og við munum sjá hvers vegna. Ef í landi leit Markmið mitt er að finna 14, byrja ég á rót. Svo ég leita. OK. Við erum að fara að byrja á the rót. Líta á 10. Jæja, 14, miða okkar, er stærri en 10. Svo verður það að vera á hægri. Þetta er mjög svipað allan símann bók sem við gerðum, tvöfaldur leita þar. En í stað þess tvöfaldur leit í fylki, erum við tvöfaldur leita í þessu tré. Þannig að við erum enn að leita að 14. Jæja, 14 er minni en 15. Þannig að ef það er í tré okkar, verður það vera á þessu sviði hér. Það verður að vera til hægri á 10 og vinstra megin við 15. Og svo við athugum þennan hnút. Og yay, höfum við fundið 14. Ég ætla ekki að fara að ganga í gegnum það. En hér er kóðinn. Það er í raun tiltölulega einfalt, því þetta er endurkvæma. Hvað gætum við biðja þig um að gera á spurningakeppni? Við gætum beðið þig að skrifa þennan kóða. Við gætum beðið þig um að líta á þetta númer og breyta þessum kóða og útskýra hvað það er að gera. Já. Spurning? Áhorfendur: Eru þessir glærur fara að vera aðgengileg sem þeir voru síðasta skipti? R.J. Aquino: Já. Svo þessar glærur mun örugglega vera staða. Áhorfendur: Þeir eru í raun staða núna á vefnum. Davíð gerði bara það. R.J. Aquino: The skyggnur eru núna á vefnum. Ég mun sennilega plástur upp nokkra að innsláttarvillur sem ég benti og festa þá. En það er nú útgáfa á vefnum. Aðrir hlutir sem við gætum beðið þig að gera - skrifa innskotið. Skrifa endurtekningu útgáfu af endurkvæma virka við sýndum það bara þér eða tala um þessa hluti, eins og í málsgreinar, í orðum, í setningar. Að bera saman tíma sinnum og útskýra hvað þú vilt að nota tvöfaldur Leita tré fyrir í stað þess að kjötkássa borð, til dæmis. Svo að skilja þessar stofnanir á ansi djúpt stig. Skilja hvernig á að skrifa þau, hvernig á að nota þá, hvernig á að tala um þá. Og þú munt vera allur setja. Spurning? Áhorfendur: Þegar þú ert að skrifa á Tvíundarleit tré, hvernig gera þú ákvarða hvaða gildi við gera það sem rót? R.J. Aquino: Svo spurningin var, hvað gildi gera þér sem rót? Það fer eftir kóðanum þínum, þú kunna að hafa alþjóðlegt rót. Svo þú gætir hafa líklega haft í pset6 alþjóðlegt kjötkássa borð. Eða þú gætir standast rót í sem rök. Þannig að þetta leita virka hér tekur rifrildi hnút *. Og svo hvað hnút þú skyldir vera horfa á er það sem þú ert að meðhöndla sem rót þína þegar þú gefa það inn Og ég er allur setja. Þeir eru glærur mínar. Næsta manneskja getur komið skipti í fartölvu og mic. ROB BOWDEN: Ég held að ég gæti hafa túlka þessi spurning á annan hátt. En ég túlka það eins og ef þú ert tölurnar 1, 2, og 3, hvernig við vita til að græða 2 rót í stað þess að 1 eða 3? Ef við tökum 2 rót, þá er það fallega 1 og 3 til vinstri og hægri. En ef 1 er rót, þá er það 1 til efst, 2 rétt, 3 til hægri. Svo sjálfgefið, þú veist ekki hvað á að gera rót. Og fyrir hvaða reiknirit við erum að búast við gefa þér, bara það fyrsta sem þú innskotið væri rót. Eða við myndum gefa þér tvöfaldur tré sem er þegar til sem hefur rót. En önnur reiknirit til þannig að rót mun uppfæra, þannig að ef þú endað í aðstöðu þar sem það er 1, 2, 3, það myndi sjálfkrafa uppfæra gera 2 nýja rót, svo að það er samt fallega rólegur. ANGELA LI: Cool. Hey, krakkar. Ég er Angela. Og ég ætla að klára af okkar c og þá fara inn í sumir af vefnum okkar tækni - HTTP, HTML, og CSS. Svo er það fyrsta sem biðminni Yfirfall Árásir. Þannig að við skulum kíkja á þessa kóða. Það er frekar einfalt. There 'a virka foo. Og það þýðir ekki aftur neitt. En það tekur í músina í streng sem heitir bar. Og það er að fara að lýsa þessu stuðpúða, sem er eðli array sem hefur 12 rifa. Og það notar memcpy, sem er bara virka sem eintök frá einu vistfangi í annað. Þannig að þetta er að reyna að afrita í biðminni okkar frá hvað bar er að benda á. Svo hvað er einhver hugmynd rangt með þennan kóða? Áhorfendur: Ef bar er lengri en C, munu þeir skrifa. ANGELA LI: Já, einmitt. Við höfum enga ábyrgð á barinn er að fara að vera minna en 12. Við gerðum bara nokkrar handahófskennt fjölda 12. Og við vorum eins og, við skulum vona að inntak notenda okkar er minni en 12 stafir að lengd. Svo í fullkomnum heimi, ef inntak okkar er alltaf eins og búist, þá munum við fá eitthvað eins og, halló. Það er minna en 12 stafir. Það fær að lesa í bleikju c. Og þá erum við að gera eitthvað með það. Það skiptir ekki máli. En illgjarn maður gæti gert eitthvað meira eins og þetta, þar sem þeir gefa okkur hvað bar er bendir til, það er að fara að benda á þetta gríðarstór fylking af réttlátur svör. Og þetta er leiðin lengri en 12. Svo það er að fara að fara alla leið niður hér að þar sem ávöxtun vistfang sem á að vera. Svo skulum segja þessa aðgerð er kallað foo. Kannski foo var kallaður af sumum öðrum virka, sem var kallaður af helstu. Svo þegar foo er í gangi, það þarf að vita hvar á að snúa aftur til. Ef foo var kallaður af sumum virka heitir Baz, það hefur til að vita að það er fékk að fara aftur til Baz. Og það er það sem þetta aftur heimilisfang niður hér að segja okkur. En ef við skrifa yfir hana með einhverjum öðrum heimilisfang, í þessu tilfelli, þetta er framsetning netfanginu upphafi þessum dúa, þá hvað er í raun og veru að fara að gerast er að stað þess að skila aftur til Baz, sem kallast fallið, það er bara að fara að fara til the andlit af þessum kóða. Og ef þetta var það vegna þess að illgjarn spjallþráð dude kom og sprautað þetta, þá kannski þessi upphæð af er A er í raun ekki svör. Og það er í raun bara kóðann sem brýtur tölvunni eða eitthvað. Svo til að vera í vörn um þessa tegund af hlutur, þú þarft að aldrei gera ráð fyrir að notandi inntak er ákveðin magn af stöfum. Til dæmis, þegar þú varst að gera Speller, var þér sagt að orð voru bara að fara að vera 40 stafir langur hámark. Og það var gott. En ef ekki, þá þú þyrftir að ganga úr skugga um að aðeins lesið í 45 stafi í einu. Annars gætir þú skrifa biðminni þinn. Einhverjar spurningar um það. Já. Áhorfendur: Gætirðu talað bara aðeins meira um þetta? ANGELA LI: Því miður. Já. Áhorfendur: The MIC er bara fyrir vídeó. Ég mun reyna og verkefni. Hæ, krakkar. Sup? Svo skulum við fara yfir nokkur atriði í CS50 bókasafn, sem þú hefur verið að nota allt önn, aðallega að fá notandi inntak. Eins og þú veist, eru þér CS50 bókasafn því bara að gera CS50.h sem inniheldur öll prufueintök af aðgerðir sem hægt er að nota, eins og GetString og GetInt og GetFloat, et cetera. Og það er þetta ein lína í CS50 bókasafn sem skilgreinir streng, sem þú krakkar vita allt núna er bara char *. En við skulum taka gægjast á hvernig GetString virkar. Þetta er mjög stytt útgáfa. Þú getur draga upp CS50 bókasafn skrá frá, held ég, manuals.CS50.net. Og þú getur lesið í gegnum í raun virka. En þetta nær sum mikilvægi hluta. Þannig að við höfum búið til nokkur biðminni með einhverjum hætti. Og hvað við gerum er að við fáum einn staf í einu frá venjulegu n. Það er þar sem notandi inntak texti í vélinni. Og svo við erum að fara að lesa í eðli svo lengi sem það er ekki nýtt lína og það er ekki enda skráar sem er endir af standard input. Og fyrir hvern staf sem við lesum í, ef að eðli endar bæta við fjölda þeirra stafa sem við höfum lesið í og sem er meira en getu okkar, þá er það sem við gerum við breyta bara okkar biðminni þannig að það er tvisvar sinnum eins lengi. Svo aftur, þetta vernda gegn buffer Yfirfall Árásir, því þú lest í persóna í einu. Og ef á hvaða tímapunkti sem þú lesið í of margir, þú stækka bara biðminni þinn. Þú margfaldar það með tveimur. Og þá þú fá meira pláss. Annars, þú bætir bara staf til biðminni. Og eftir að þú hefur lesið í öllum stafir, mun það minnka biðminni aftur niður í venjulegan stærð, að bæta við null Terminator, og fara síðan aftur. Nú, við skulum líta á GetInt. Getur þú krakkar lesa þetta? Ég get zoom í bita. Ég veit ekki hvernig tölvur vinna. Aldrei hugur. Ég get ekki stækkað almennilega. Þetta er mjög erfitt. Fyrirgefðu. Við skulum líta aðeins á þetta. Svo hvað GetInt gerir er það les fyrst í streng frá GetString, sem við höfum innleitt áður. Og mikilvægur þáttur í að hafa í huga hér er ef þetta hlutdeild sem það endar lestur er eins og í raun ekki streng, þá erum við aftur bara INT_MAX til tákna bilun. Hvers vegna eigum við að fara aftur INT_MAX staðinn neikvæðri 1 eða 1? Einhverjar hugmyndir? Áhorfendur: [inaudible] neikvæð 1 á einn. ANGELA LI: Já, einmitt. Svo þú ert leið líklegri til að bara að inntak 1 eða neikvæða 1 þegar beðið fyrir NTH og hvað NTH maxes. Það er gríðarstór. Þú ert líklega ekki að fara að nota það. Svo er þetta eins og hönnun ákvörðun til ganga úr skugga um að þú ert ekki óvart skila villu eða þú snúa ekki 1, sem gæti að flokka sem rétt svar. Þannig að ef línan er ekki til, við aftur INT-MAX. Annars skaltu nota við sscanf, sem er eins Scanf. En það les úr streng. Og við höfum þetta sniðinn band, sem er% i% c. Og við að reyna að passa að með hvað notandinn gaf okkur. Við viljum fjölda samsvörun hlutum til að vera 1, sem þýðir að við aðeins virkilega að passa heiltölu umkringdur kannski hvítt rúm, kannski ekki. Í þessu tilfelli, ef þú setur í eitthvað eins bar, bar passar ekki á öllum, vegna þess að það þarf að vera heiltala í upphafi. Svo sscan aldrei snúið 0. Svo þú aftur ekki. Að öðrum kosti, ef þú setur í eitthvað eins og 1, 2, 3, A, B, C, sem samsvarar bæði heiltölu en einnig eðli eftir það. Svo sscanf mun skila 2, sem Einnig er ekki hugsjón. Hægt viljum ekki 1, 2, 3, A, B, C vera gilt Int. Svo sem einnig virkar ekki. En segjum að þú setja í eitthvað eins og 50. Sem mun samsvara% I, sem þýðir það mun fá að lesa í n. Og nú, n mun innihalda fjölda 50. Og þá getur þú farið með hana. Annars, þú högg á Aftur. Og þá fer það bara aftur þangað þú færð rétta inntak frá the notandi. Einhverjar spurningar um það? Áhorfendur: Svo ef þú varst að prenta út verðmæti GetInt á [inaudible] myndi það vera bara tala og max? ANGELA LI: Já. Svo ef þú notar GetInt, ættir þú að gera ráð fyrir sem þú vilt ekki tu max til vera gilt inntak, vegna þess að þú ert að fara að gera ráð fyrir að það var slæmt. Áhorfendur: Ef við ekki hafa bleikju c og einhver setja í 1., 2., 3., Sam, myndi það enn vinna fyrir 1, 2, 3? ANGELA LI: Ég held að það myndi virka. En þú vilt ekki 123Sam til að vera gilt inntak af notanda. Það er í raun ekki int. Svo það virðist ekki sanngjarnt að flokka það sem int. OK. Í því tilviki, við skulum fara á netið. Svo HTTP er ekki tungumál. HTTP er bara setja staðla fyrir hvernig þú senda það frá viðskiptavinum, það er þér, til netþjóna. Það er annað fólk á vefnum. Svo HTTP stendur fyrir HyperText Transfer Protocol. Það er hjarta og sál af öllum vefnum. The Hypertext hluti bara vísar til HTML. Flutningurinn er viðskiptavinum eins þú verður að senda beiðni til netþjóna, sem gefa svör. Og bókun er bara, hvernig þú von á miðlara til að hegða sér? Og hvernig ert þú ímyndaður til að hegða sér þannig að þú getur hagræða þetta samskipti ferli? Svo HTTP beiðnir líta mikið eins og this. GET er tegund af beiðni. Þú krakkar hafa séð komast óskir og POST beiðnir. Sem second hlutur þarna, / mér, sem er bara URI eða vefslóð þar sem þú langar að fara í her. Þannig að þetta beiðni er að biðja um að síðu, eins og www.facebook.com / mín. Og það er FÁ beiðni. Og þá er þetta HTTP/1.1, það er bara útgáfa af HTTP þú ert að nota. Það er nánast alltaf 1.1. Og þá er það fullt af öðrum hlutum líka. Þú geta raunverulega sjá þetta ef þú opna stjórnborðið þegar þú ert að vafra um vefinn. Viðbrögð líta eitthvað meira svona. Efsti hluti er, aftur, tegund HTTP þú ert að nota eftir stöðukóðanum. Svo er 200 OK allt í uppnámi út. Hér er innihald. Efni þitt er að fara að fylgja. Og þá mun það segja þér hvað konar af efni og önnur efni líka. The Staða númer, það eru nokkrar mikilvæg sem þú ættir að vita. 200 OK er eins golden allt er. Allt virkar. 403 Forbidden. Þetta sem þú hefur sennilega séð ef þú hefur gleymt að chmod eitthvað almennilega. Það þýðir að þú þarft ekki heimildir til aðgang að á þjóninum. Það er eins og, nei, þú getur ekki séð það. 404 þýðir að hlutur er ekki til. Fannst ekki. Þú hefur sennilega séð að mikið. 500 Innri Framreiðslumaður Villa er yfirleitt eins og eitthvað hafi farið úrskeiðis á hlið miðlarans. Svo þegar þú varst að innleiða pset7, ef þú hefðir PHP villur, þú gætir reyndar fara á síðuna og sjá allt fullt af PHP villa efni. En það þýðir ekki að jafnaði gerast, vegna þess að vefsíður gera ekki raunverulega vilja til segja þér hvers vegna þeirra staður er brotinn. Þau mun líklega bara aftur á 500 Innri Framreiðslumaður Villa. Og þá er það 418 ég er katli. Það er allt saga um hvers vegna það er hlutur. En þú getur lesið um það á þínum eigin tíma. There 'a heild búnt af öðrum númerum stöðu líka. En þetta eru þær þú ættir að vita. Svo skulum við tala um HTML. HTML, man, er ekki forritunarmál. Það er Markup Language. Það þýðir að það lýsir efni. Það segir þér hvað HTML skjal lítur eins eða ekki hvað það lítur út eins og en hvernig það er byggt upp. Svo það skilgreinir uppbyggingu og merkingarfræði vefsíðum. Það er eins og þetta er málsgrein. Þetta er raðaður listi. Þetta er eins og a hluti af síðunni minni. Hér er titillinn. Það er svoleiðis. Það skiptir ekki stíll einhverju að vegna þess það er það sem þú gerir í CSS. Og það lítur út eins og röð af hreiður tags. Svo til að nota dæmi um raunverulega undirstöðu HTML síðu, hefur þú DOCTYPE Yfirlýsing þar upp. Þetta DOCTYPE yfirlýsingu er segja, við erum að nota HTML5. Þá hefur þú stór HTML merki. Það inniheldur höfuð og líkama. Höfði, hefur þú titil. Það er það sem fer í titlinum bar af vafranum þínum. Við hafa tengil merki sem tengir í utanáliggjandi stíll lak. Og þá erum við með handritinu sem togar frá utanaðkomandi JavaScript eins vel. Og þá er í raun inni líkama okkar hvað fær birtist á síðunni. Við höfum fengið lið og síðan mynd inni þeirri málsgrein. Þetta er mynd af kettlingunum. Takið eftir því að myndin tag lokar sig. Svo í stað þess að opna með mynd og þá gera annað / myndir, þú bara hafa þetta litla skástrik hér, sem lokar það. Og myndin tag hefur einnig þennan takka gildi eiginleiki kallast alt. Það er val texta sem gerist þegar þú sveima yfir það. Flest HTML þættir hafa sumir lykill gildi hlutir sem þú getur gefið það, ýmsir customization. Já. Áhorfendur: [inaudible]. ANGELA LI: Jæja, svo er það eiginleiki við merkinu. Þannig að ef þú varst að nota jQuery, gætir þú Ekki velja image.getAttribute. Og þá er hægt að leita að fá alt eigindi. Og það mun gefa þér kettlinga. Ef þú manst form í HTML, inntak þættir munu hafa nafn eiginleika. Og það er það sem PHP notar til að senda beiðnir þegar mynd er send inn. Áhorfendur: Vissir þú nefnir eitthvað um hvernig ef þú notar kittens.jpg eða eitthvað sem hefur saknað skrá mappa eða öðrum skrám? ANGELA LI: Já. Svo er þetta það sem er kallað ættingja leið, vegna þess að ég ætla ekki að gefa þú fulla slóð. Þetta er eins og þegar í C ​​ef þú gerir fopen sumir skrá, ef þú fopen hi.txt, að hi.txt er gert ráð fyrir að vera í sama skrá, nema þú gefa það a fleiri flókin leið. Áhorfendur: Svo þú gætir tilgreina sem möppu [inaudible]? ANGELA LI: Já. Og þú getur litið upp hvernig á að gera það. En ef ég vildi fá kittens.jpg út foreldraráðs skrá, myndi ég gera .. / Kittens.jpg. Já. Sorry. Já. Ó maður, ég gleymdi spurningunni. Hver var spurningin? Ó, spurningin var er, kittens.jpg gert ráð fyrir að vera í sömu möppu? Og í þessu tilfelli, er það. En þú getur einnig gefa það ákveðinni leið þannig að það þarf ekki að vera. Gott? CSS. Svo CSS, eins og HTML, er ekki forritunarmál. CSS er bara röð af stíl reglum. Það stendur fyrir Cascading Style Sheets. Og þú notar það í tengslum með HTML stíl síðum. Þannig að það eru þrjár leiðir þú getur falið það. Ein leið sem þú getur gert það er í höfuðið hluti af HTML kóðanum, þú getur bara opna stíl tag og þá standa sumir CSS reglum þar. Það er nokkuð í lagi. Já. Áhorfendur: Gætirðu sett þá stíl tags í milli, við skulum segja, líkama og / body. Og þá væri stíl aðeins í líkamanum. ANGELA LI: Þú gætir. Það munum vinna. En þú ættir ekki, því hönnun er konar lýsigögn sem ætti að fara í yfirmaður skjalið þitt. Líkami ætti virkilega bara að innihalda hvað er í raun að fara að mæta á síðuna þína. Áhorfendur: Svo þú vilt setja stíl í hausnum til stíll alla vefsíðu, ekki satt? ANGELA LI: Já. Svo að setja stíl hér, þessir CSS reglur mun gilda um alla síðuna byggt á selectors þeirra. Svo er betri leið til að gera það í staðinn að hafa stíl tag í höfuðið, þú hefur þennan tengil til utanaðkomandi stíl lak eins og ég sýndi þér í dæmið. Hvað þetta gerir er að það reynir og finnur skrá style.css og þá draga það í og notar að eins og stíll á síðunni. Og style.css þína myndi bara líta svona út. Það væri bara fullt af CSS. Og að lokum, það er önnur leið sem þú getur falið í sér CSS, sem þú í raun ætti ekki alltaf að gera. Það er kalla inline stíl. Og svo allir HTML þátturinn er einnig taka stíl eigindi. Og þá í því stíl eigindi, þú getur gefið það CSS reglum. Svo í þessu tilviki, hvað div ég skilgreina hérna, það er að fara að hafa svartan bakgrunn og hvítt texta lit. En þú ættir ekki að gera þetta, því það þetta gerir er að það setur stíl þinn inni HTML. Og ég veit að við höfum verið að tala um HTML er uppbygging og CSS er stíll. Ef þú gerir þetta, blandar það þá saman. Og það er ekki mjög hreinn. Svo gera það ekki. Með því að nota dæmi um CSS, það upp, við bara að velja líkama HTML heimildarmynd. Og við erum eins, allt er að fara að vera Comic Sans. Ég líka ekki mæla með því. En þú gætir gert það. Seinni reglan hérna, það er að fara að velja atriði á síðu með ID Main. Svo hvað HTML frumefni, sagði ég ID = Helsta, ég ætla að gefa að A 20-punkta framlegð og samræma allt, allan texta, að miðju. The síðastur hlutur velur með CSS bekknum. Svo allir liður á síðunni sem ég gaf hluti bekknum, ég ætla að gera það bakgrunnur litur ljósbláu. Yep. Það er allt sem ég fékk. Spurning? Áhorfendur: Hvað gerir hashtag áður helstu gera? ANGELA LI: Spurningin er, hvað gerir hashtag áður helstu gera? Í þessu tilviki, tætið í CSS þýðir Select by auðkenni. Þannig að ef ég hefði einhverja HTML frumefni, eins og arð = helstu, þetta CSS regla velur Málið með ID Main. Og sömuleiðis, tímabilið í framan kafla er að velja um CSS bekknum eða velja með HTML bekknum. Áhorfendur: Hvers vegna er það hefur áður 6 í bakgrunnslit? ANGELA LI: Já. Svo er, hvers vegna er spurningin þar kjötkássa áður en 6? Þetta er öðruvísi en kjötkássa. Þetta þýðir að þú ert að gefa A sextánskur lit. Svo álög litir, þetta bara táknar lit. Og þú manst RGB triples þegar þú did the réttar pset? Þetta er svipað. Fyrstu tveir tölustafir tákna hversu mikið rautt er í lit. Seinni tveir fulltrúar hversu mikið grænt. Og þriðja táknar hversu mikið af bláum. Og kjötkássa er þetta er að fara til að tákna lit. Svo nokkuð frá 0, 0, 0, 0, 0, 0 allt að F, F, F, F, F, F er í gildi. Það er einhver gild litur sem hægt er vera birt af vafranum þínum. Spurning? Áhorfendur: Hver er munurinn á milli nota við ID og með bekknum? ANGELA LI: Spurningin er hvað er munurinn á milli nota við ID og bekk? Þú getur aðeins haft einn þáttur í að HTML skjal sem hefur gefið kenni. Svo aðeins eitt á síðunni minni er leyfilegt að hafa ID Main. Svo þú nota það fyrir þetta er haus. Þetta er flakk. Þetta er fót. Classes eru mismunandi, vegna þess að þú getur gilda námskeið eins mörgum HTML þættir eins og þú vilt. Svo til dæmis, ég gerði flokks kafla, því það er sennilega meira en eitt kafla á síðuna mína. Þú ert bara leyfilegt að hafa eins og margir atriði á síðunni með sama Class en aðeins einn með ákveðnu ID. Áhorfendur: Svo táknar punktur bekknum? ANGELA LI: Já. A punktur táknar bekknum. Cool. Það er allt sem ég hef fengið, krakkar. Þakka þér. [Applause] ZAMYLA CHAN: Hæ, allir. Ég er Zamyla. Ég ætla að vera nær PHP, MVC og SQL í dag. A einhver fjöldi af the efni sem ég ætla að nær er að fara að vera ansi mikið rétt út af pset7. Allt í lagi. Svo er það sem PHP? PHP stendur fyrir PHP Hypertext Preprocessor. Svo það, í sjálfu sér, er endurkvæma nafn, sem er laglegur kaldur. PHP er framreiðslumaður-hlið forskriftarþarfir tungumál, og það veitir í vefumsjónarkerfið og rökrétt undirstöður á heimasíðu okkar. Svo Angela talaði mikið um HTML og CSS sem mun gera uppbygging af the website. En hvað ef þú vilt breyta því að efni virk eða ef það er breytilegt byggt á notanda eða ákveðnar aðstæður? Það er þar PHP koma inn Nú, yfirleitt PHP gæti tekið nokkrar minna línur til að framkvæma það sama í C. Það er vegna þess að PHP annast minni stjórnun fyrir forritara, öfugt við okkur að þurfa að malloc frjáls, hlutur eins og þessi. En þar sem PHP er túlkandi tungumál, yfirleitt, gæti það framkvæma svolítið hægar en C, sem er unnin tungumál. Vegna þess að við erum að flytja forritun tungumálum, við skulum líta á hvernig setningafræði verður mismunandi. Skulum vera mjög varkár ekki til fá rugla með þetta. Svo með PHP setningafræði, hvort sem þú ert embedding PHP þinn inni í HTML skrá eða innan. PHP skrá sig, þú þarf að láta kóðann í opinn PHP og lokuðu PHP tags eins segir, eins og á skjánum. Breytur í PHP. Hver einasta breytu hefst með the $ skilti eftir nafni breytu þinn. Nú, eru breytur í PHP lauslega slegið, sem þýðir að þú þarft ekki að benda á hvað gögnin gerð er þegar þú ert að lýsa það. En það þýðir ekki að þeir ekki hafa allir gerðir yfirleitt. Svo ef ég lýsa breytu og bara sett það jafnt og 1, og þá skal ég lýsa annar breytu, setja það jafn "1," og þá annað 1,0, vel, eftir tegund jafnréttis rekstraraðila sem ég nota, ef ég vil bera yfir allar gerðir, þá þeir 'vera jafnir. En ef ég vil vera viss um að tegundir eru jafnir, PHP geta enn gert að jafnvel þótt við benda ekki hvaða tegund það er þegar við fyrst gera skrána. Nú, í PHP, jafnvel þótt við séum að skipta yfir frá forritun tungumálum af C, höfum við enn okkar traustur ef ástand, rétt eins og þetta. Við höfum enn á meðan lykkjur okkar, bara eins og þetta, þar sem þú setur í þinn ástand og þá líkami í lykkju. Og þá höfum við einnig okkar fyrir lykkju, sem yfirleitt lítur svona út. Þannig að ef ég vildi að iterate yfir allt níu psets og senda og hringja í virka submitPset, þá get ég gert það hér, sem þið hafið öll gert með þessum tímapunkti. Til hamingju, við the vegur. Fyrir myndavélina, fólk sagði, þakka þér. Nú, ef þú vildir ekki bara að nota þessa fyrir lykkju, þá PHP reyndar einnig hefur það sem kallast framhandleggur lykkjur. Þannig að ef ég hefði fjölda heiltölur 0 gegnum 8, geymdar í array psets, þá gæti ég hafa a framhandleggur lykkja sem iterates yfir hvert númer í psets. Og þá gæti ég hringt sama virka átta sinnum, bara eins og ég gerði áður. Þannig að þetta fyrir hvern lykkja er ágætur, vegna þess að þú þarft ekki að ef þú veist ekki nákvæmlega lengd fylkisins sem þú hafa, þá nota þessa framhandleggur lykkja mun sjá um það fyrir þig. Svo ég gerði psets sem fylki. Við skulum líta á það. Fylki í PHP eru yfirleitt þau sömu og þau sem við höfum haft í C, þar þú getur lýsa fjölda. Og hér, get ég lýst því yfir tómt array og þá byggja upp virk með því að nota vísitölur sem heiltölur. Svo vísitölu 0, ég ætla að geyma heiltala nefndur 1. Á vísitölu 1 á listanum mínum, ég er að fara að geyma gildið 2. Og í þriðja kemba En The Seinna númerið, ég ætla að geyma fjölda 12. Nú, þetta er í lagi af því að virkar það virkar vel. En segja að það skiptir mig hvað hver vísitölu heldur. Fyrir mig, vísitölu 0 þýðir hversu margir kettir sem ég hef. Og vísitalan 1 þýðir hversu margir uglur sem ég hef. Og hið næsta þýðir hversu marga hunda. Jæja, þá er það að tilgreina að í stað þess að þurfa að muna 0 tengist kettir og 1 til uglur, get ég notað tengin fylki, sem þýðir að í stað heiltalna í vísitölur mínum, Ég get reyndar notað strengi. Svo er þetta alveg gagnlegur. Og þú hefur í raun bara skipt þær heiltölur með strengi. Og þar sem þú ert með tengin array. Já. Áhorfendur: Er einhver ástæða hvers vegna það er undirstrikanir fyrir þá síðari hluti, vegna þess að minn listi hefur array. ZAMYLA CHAN: Spurningin var, er ástæða fyrir því að það er undirstrika milli og listanum mínum? Nei Það er bara hvernig ég er að nefna breytu minn. Áhorfendur: Á fyrsta lína, það er eitt orð. ZAMYLA CHAN: Apologies minn. Ég laga það. Já. Þeir ættu að vera þau sömu breytu nafn. Góður fengur. OK. Þannig að við skulum fara til band samtenging. Ef ég vildi taka tvo strengi, þá get ég concatenate þá með punktur símafyrirtækinu. Svo ef ég hef Milo sem fyrsta nafn og Banana sem síðasta nafn, þá concatenating með punktur rekstraraðila og þá setja inn bil á milli mun gera a band sem inniheldur Milo Banani, sem ég get þá echo eða, frekar, prenta út. Talandi um echo, við skulum tala um nokkrar gagnlegar - oops. Fyrirgefðu. Nokkrar gagnlegar PHP virka. Þannig að við höfum - tæknilegra erfiðleika. Eina sekúndu. Ég sendi það. PowerPoint vandamál. Og við erum aftur með PHP virka. Og við erum aftur með PHP virka. Þannig að við höfum þurft virka, þar ef það líður í skrá, hér er bara dæmi um skrá sem Ég gæti framhjá inn Þá sem vilja fela í PHP kóðann frá þessi skrá sem ég kynna. Og það mun meta það inn Þá höfum við einnig echo, sem er samsíða printf. Hætta er samhliða að brjóta, sem hættir blokk númer sem þú ert inn Og síðan tæma athugar hvort tiltekin breytu er eins tómt eða núll eða hvað er jafnað með því að vera tómur. Já. Áhorfendur: Fyrir streng samtenging punktur stjórnandi einn, í PHP, er að sama og í JavaScript sem það er með punktur að samtenging þýðir plús? Svo fyrir fullt nafn, gætir þú hafa dollara skráir þig inn fyrst + og þá + endast? ZAMYLA CHAN: Já. Svo spurningin var hvort í PHP við geta notað sama streng samtenging eins í JavaScript með plús-merkjum. Og Jósef mun komast inn í það síðar. Ég held að hann hefur a renna á því. Raunverulega, það er öðruvísi. Svo í JavaScript, þú þarft að nota PLÚS að concatenate strengi. Og í PHP, þú þarft að nota punktur rekstraraðila. Svo þeir eru öðruvísi. OK. Svo nú er að við höfum fjallað alla þetta PHP, þar sem það raunverulega komið sér vel? Jæja, það kemur sér vel þegar við getur sameinað það með HTML okkar. Svo PHP okkar mun gefa okkur kraft til að breyta HTML efni síðunnar áður en hleðsla hennar. Svo byggt á mismunandi aðstæður, yfirleitt sérstakur notandi sem er skráður inn, getum við sýna mismunandi upplýsingar. Linda, varstu með spurningu? Áhorfendur: Getur þú concatenate heiltala einnig? ZAMYLA CHAN: Já, þú getur það. Svo var spurningin ef þú getur concatenate heiltölur eða öðrum variable.s nú, færa okkur á MVC, sem er hugmyndafræði sem við notuðum í pset7 og mikið af vefur hönnuður nota fyrir skipuleggja kóðann í skrá á vefsvæði þeirra. M stendur fyrir Model. Og í rauninni, árgerð skrá vilja takast með samskipti við gagnagrunn. Skoða skrár, tengjast þeir til fagurfræði af the website. Og stjórnandi handföng beiðni notanda, flokka gögn, er önnur rökfræði. Í pset7, sameina við líkan og stjórnandi. Og við bara hringdi þá stýringar og setja þá í opinberri skrá. Og skoða skrár, notum við þá sem sniðmát í sniðmátamöppunni skrá. Þannig að þetta skýringarmynd hér táknar einnig að sams konar deild við fyrirmynd og stjórnandi í fjólublátt hérna vinstra megin og útsýnið til hægri. Þannig að þetta er teikning sem sum ykkar kann að hafa séð á skrifstofutíma eða skýringarmyndir sem við vorum að teikna eins og þú voru vangaveltur út pset þinn. Svo hér, í tilteknu stjórnandi, líkan stjórnandi, höfum við aðgerðir sem tengjast samskipta SQL gagnasafn, framkvæmd PHP rökfræði. Kannski þú myndir líta upp lager í Yahoo! Fjármál. Eða kannski, þú vildi bara athuga sjá hvort notandi hafi lagt fram mynda þegar áður hafa heimsótt síðuna þína. Og þá þú vildi láta Eyðublað hérna. Eftir þessi mynd hafi verið lögð af notanda, aðgerð sem var tilgreint í HTML merki Eyðublaðið er myndi kynna síðuna að það skilar þessi gögn til. Svo allar þessar upplýsingar væri sendur aftur til stjórnandi þinn. Þá myndi sennilega gera aðeins meira rökfræði á það og kannski framkvæma nokkrar Fleiri fyrirspurnir í SQL gagnagrunn og þá loks koma upp með fallega pakkað sett af upplýsingum sem þú myndir fara í inn í einhvern annan sniðmát sem birtist þær upplýsingar. Nú, hvernig gera við pakka í raun að upplýsingar upp? Jæja, höfum við fall sem kallast Render sem var í functions.php skrá í pset7, þar sem þú fara í nafni skrá, nafn á sniðmáti. Og þá þú fara líka í að tengin array. Og svo stendur að tengin array mismunandi upplýsingar sem þú vilt fara inn Nú, hvað er að fara að vera stöðug í Þessi dæmi er að lykla eða, frekar, lyklar tengin fylki, þeir eru það sem er að fara að vera gert ráð fyrir að vera stöðug með því að sniðmátið, því það veit það þarf eitthvað sem heitir skilaboð eða nefndi. Og þá hluti á hægri, raunveruleg gildi, þannig að í þessu tilfelli, sem er góður drengur og Milo, eru þeir að fara að vera gildin sem eru að breytast að stýringin breytist í hvert skipti eða byggjast á ákveðnu ástandi og mun fara sem inn Svo hér í sniðmát, sjáum við að við eru að nota HTML sérstaka stafi, sem bara í rauninni þýðir að við viljum að fá jafningi band sem notandi setur inn Og við viljum að skipta skilaboð þar. Svo þá þegar við skoða raunverulega skráin, tiltekna upplýsingar eru liðin inn Athugaðu að lykillinn hvernig bakið verk er að lyklar við tengin fylki, þá verða breytilegir nöfn hér. Og svo gildin þessi lykill Í tengin array verður þá gildi breytunnar. Nú, við skulum fara til SQL. Það stendur fyrir Structured Query Language. Og svo er þetta bara forritun tungumál af ásettu ráði til að stjórna gagnagrunna. Og það kom sér vel fyrir okkur í pset7 fjármál heimasíðu okkar. Í meginatriðum, það er bara auðveld leið til að fylgjast með og stjórna hlutum og töflur og tengja þau við hvert annað. Nú, hugsa um SQL þinn gagnasafn grundvallaratriðum eins og Excel skrá, ef til vill, með mörgum grábröndóttur köttur blöð. Svo þú gætir hafa margar töflur, til vill, sem tengd hvort við annað. Og mikill eins og Excel, höfum við mikið af virkni sem við viljum. Til dæmis getum við valið ákveðnar raðir. Við getum sett upplýsingar. Við getum uppfært raðir. Og við getum einnig eyða hlutum. SQL velja verk með því að velja raðir eða röð af tilgreindum dálka A gagnasafn sem passa ákveðin viðmið sem þú tilgreinir. Svo hérna þegar ég sé að velja * frá galdramenn þar sem húsið = Ravenclaw, þá Ég er að velja *, sem þýðir að ég er velja hvert einasta dálk í því róa frá töframaður borðið en aðeins ef húsið dálki jafngildir Ravenclaw. Nú, þetta er hreint eða SQL. Þannig að ef ég fór í phpMyAdmin, sem er sérstakan hátt sem við notum til að stjórna SQL gagnagrunna okkar, þá gæti ég sett inn að í phpMyAdmin website. Og það myndi framkvæma. En við viljum í raun og veru að gera að á PHP megin. Svo hvernig gerum við það? Jæja, við notum fyrirspurn virka, sem grundvallaratriðum keyrir sem SQL fyrirspurn. Nota? sem tákn, getum við fara í tilteknar gildi til band okkar sem við langar að skipta. Svo kannski er ég að geyma mismunandi gildi í curr_house, sem sýnir núverandi hús að ég ætla í gegnum. Svo ég get framhjá að í sem tákn með spurningarmerki. Og þá ég í grundvallaratriðum framkvæma á sama og ég gerði áður, nema nú er ég í PHP. Og fyrirspurn mun skila að tengin array. Og ég ætla að geyma það í raðir. Nú fyrirspurn getur alltaf mistakast. Kannski SQL fyrirspurn gæti ekki keyrt af því að taflan ekki til staðar. Eða kannski, dálkurinn ekki til. Eitthvað fór úrskeiðis. Jæja, í því tilviki, youll 'vilja til gera viss um að þú athuga hvort fyrirspurn aftur ósatt. Og það er með því að nota þrefalda jafngildir rekstur þar. Og þá ég afsökunar, sem er annar CS50 virka, sem liggur í skilaboðum. Og ef þú lítur inn biðjumst, allt það raunverulega gerir er bakið apology.php. Já. Áhorfendur: Gætirðu útskýrt hvað það star er á milli Veldu og svo úr? ZAMYLA CHAN: Já, algerlega. Svo stjarna í milli Veldu og svo úr þýðir að ég vil velja öllu heila röð af borðum mínum. Ég hefði getað gefið til kynna með því að velja nafn, ár, hús. Og ég vildi bara fá þessir þrír dálka í töflunni minni. En ef ég segi að velja *, þá ég fá allt í þeim dálki. Þá er ég að fara að fara þér í bak fyrst. Áhorfendur: Svo er þetta enn í SQL, ekki satt? Er þetta fyrirspurn eða er þetta PHP? ZAMYLA CHAN: Við erum í fyrirspurn. Svo er þetta í PHP. Svo nota PHP virka fyrirspurn, við erum að framkvæma SQL fyrirspurn. Áhorfendur: Er nokkuð í SQL há-og lágstöfum, eins veldu eða galdramenn eða húsi? ZAMYLA CHAN: Er eitthvað í SQL há-og lágstöfum? Ég tel svo, já. Ég tel að Veldu og svo úr Og hvar eru há-og lágstöfum. Nei? ROB BOWDEN: Svo er það hið gagnstæða. Dálkinum nöfn og borðið hætti, Allir sem eru há-og lágstöfum. En einhverju MySQL lykilorðin, eins SELECT, og hvert, eru þeir ekki há-og lágstöfum. OK. Svo andstæða þess sem ég sagði. Svo allt í MySQL leitarorð - velja, frá, þar sem - þeir eru ekki há-og lágstöfum. En allt annað er. OK. Þú í framan. Áhorfendur: Ef ég hef $ raðir varðar fleiri en eina röð, þýðir það er bara verður að tengin array? ZAMYLA CHAN: Svo spurningin var hvort raðir hefur meira en eina röð í það, er það verða tengin array? Svo er það fylki í tengin fylki nú þegar. Svo jafnvel ef það er aðeins einn róður aftur, þá þú vilt verða að fara til Vísitala 0 þeirrar niðurstöðu. Og þá þú vilt hafa þessi fyrstu röðinni. Já, Belinda? Áhorfendur: Þegar þú notar ===, er þetta eina dæmi? Eða eru aðrir? ZAMYLA CHAN: Svo í þessu tilfelli, === er samanburður á tegundum. Sorry. === Er samanburður að bera saman þær tegundir. Og þá == ber saman öllum gerðum. Áhorfendur: Getur þú útskýrt hvað röðum er í þessu ástandi? Er það röð af gögnum? ZAMYLA CHAN: Í næstu skyggnu, ég er að fara að útskýra hvað raðir er. Þannig að ef þú dont 'hugur að halda burt á það. Og þá þú á bakinu? Áhorfendur: Fyrir aðgerðir eins fyrirspurn, bakið og biðjast afsökunar [inaudible]? ZAMYLA CHAN: Spurningin var hvort þessar aðgerðir - fyrirspurn, afsökunar, og veita - eru algeng um PHP. Þetta eru þau sem CS50 skrifaði fyrir pset7. Og Jay? Áhorfendur: Þegar þú þarft að segja $ _SESSION, Er að einungis fyrir auðkenni? Eða þú gætir hafa sagt að hér? ZAMYLA CHAN: Svo spurningin var, þegar við notum $ _SESSION, sem var sérstakur alþjóðlegt breytu sem við erum að nota. Hér þessi breyta er að fara að vera staðbundið við virka okkar. Þannig að við erum bara að lýsa yfir nýja breytu. Áhorfendur: Hvernig er afsökunar hrint í framkvæmd? ZAMYLA CHAN: Spurningin var, hvernig er afsökunar til framkvæmda? Og ég held að þetta er í raun nokkuð góð æfing fyrir ykkur að fara í á functions.php kafla og líta á afsökunar og sjá hvernig þú gætir hafa gert það sjálfur. Svo ég gæti skilið það til þín en bara segja að ef þú horfir á afsökunar, þá tekur það skilaboðin sem þú lögð til afsökunar, og þá er það gerir þessi skilaboð. Einhverjar fleiri spurningar? Ég elska spurningum. Svo að halda þeim að koma. Áhorfendur: [inaudible] echo eða prenta það? ZAMYLA CHAN: Spurningin var, gætum við ekki bara hafa sett echo eða prenta það. Svo sem hefði gert eitthvað örlítið öðruvísi. Sem hefði prentað fyrirspurn ekki inn í það - Jæja, núna erum við í raun og veru í stýringu okkar. Þannig að við í raun ekki hafa HTML sett upp hér. Afsökunar með því að flutningur apologize.php reyndar tilvísanir þú apology.php. OK. Svo nú skulum við fara að takast á við spurning frá fyrr um hvað raunverulega er raðir. Jæja, fyrirspurn mun skila fylki af línum. Og sérhver röð er táknuð með tengin array. Svo ef ég hef framkvæmt nokkur SQL fyrirspurn og Ég hef geymt niðurstöðuna í raðir, þá nota framhandleggur lykkja, þá array nafn er sá fyrsti þar - raðir. Og þá ætla ég að hringja sérhver röð í það $ röð. Svo iterating yfir það, ég get þá aðgang Name dálkinn gefinna ROW er, ári dálki, og hús dálki. Athugið að ég hefði ekki getað gera þetta með raðir, vegna Raðir vísitölu name er ekki til. Raðir er bara fylki af tengin fylki. Þannig að þú hefur tvö stig þar. Þegar þú hefur fjölbreytta raðir, þú þarft að komast inn í það. Og þá getur þú nálgast dálka. Gerði að gera það alveg ljóst? Já, í framan? Áhorfendur: [inaudible] opna sviga fyrir [inaudible]? ZAMYLA CHAN: Fyrirgefðu mér? Áhorfendur: Opnar sviga. ZAMYLA CHAN: Þessir hér? Það er að leyfa mér að fela sem breytu. Já. Áhorfendur: Þegar þú hefur prentað, þú ert prentun og HTML kóða? ZAMYLA CHAN: Já. Þegar ég prenta, þetta hér er inni sniðmát mitt nú, svo mín sýn á MVC aðferð. Þannig að ég ætla að prenta inn í HTML. Áhorfendur: Svo ef við fórum inn verktaki verkfæri eftir að keyra þetta, við gátum sem reyndar í kóða? ZAMYLA CHAN: Þetta er frábær spurning, já. Þannig að ef þú fórst inn í tæki verktaki í Firefox nota Firebug eða Króm, þá já, þú gætir sjá sérstaka HTML. Svo það myndi ekki sýna $ röð ["nafn"]. Það myndi sýna hvort nafn er í röðinni. Áhorfendur: Bara almenn mál, hvað eru tr og td skilgreind sem? Hvers vegna ættum við [inaudible]? ZAMYLA CHAN: Tafla róður TR, borð keppnisstjóra þá dálki. OK. Áhorfendur: Já, það er borð gögn. ZAMYLA CHAN: Tafla gögn. Já. Áhorfendur: Það er röð þar sem röð er meðhöndluð eins og a dálki? ZAMYLA CHAN: Því miður. Geturðu endurtekið þetta? Áhorfendur: Hvernig myndir þú sjón raðir? ZAMYLA CHAN: Hvernig myndir þú sjón raðir í hvaða hátt? Ertu að tala um þessar raðir hér eða tr raðir? Áhorfendur: raðir. ZAMYLA CHAN: Þessar raðir hér? Ég myndi sjón þetta sem Ég framkvæma fyrirspurn minni. Og það segir, allt í lagi, ég hef annaðhvort 0 til n magn af línum sem passa við skilyrðin að þú hefðir sent fyrirspurn. Svo ég hef fengið fjölda lína. Svo raðir, the $ raðir, verslanir hvor einn af þeim línum í array. Svo jafnvel ef það er bara einn af þeim, það er ennþá fjölda raðir sem passa hana. Þess vegna, til dæmis, er þetta svipað og þegar þú sóttur skyndiminni frá notendum. Og viðmiðanirnar var þar ID jafngildir fundur ID. Það raunverulega er aðeins ein röð sem gæti passa það. En samt raðir aftur bara einn róður. Svo þú vilt verða að fara til raðir, Vísitala 0, vísitölu skyndiminni til í raun fá að skyndiminni. Áhorfendur: Er prenta virka í takt við það sama? ZAMYLA CHAN: Já. Já. Prenta bergmál af sama. Áhorfendur: Er framhandleggur lykkja í Eina leiðin til að kemba í raðir? ZAMYLA CHAN: Er framhandleggur lykkja eina leiðin sem þú getur iterate gegnum raðir? Nei Þú getur líka notað for lykkju, enda að þú veist lengd af array röðinni er. Áhorfendur: Gætirðu nálgast það nota röð sem [inaudible]? ZAMYLA CHAN: Svo þú getur ekki opnað það bara að nota röð ef þú ert ekki með framhandleggur lykkja tilskildu að þú hefur ekki lýst röð. Já. Já, í hvíta. Áhorfendur: Svo hvað TR og td gera? ZAMYLA CHAN: Svo TR og td eru HTML tags. TR sýnir upphaf um borð röð. Og hver td táknar ný borð gögn dálki. Áhorfendur: Fyrir visual hvað röð er eins, bara ímyndað SQL, hvernig þeir hafa röð. [Inaudible]. ZAMYLA CHAN: Já. Það er frábær benda. Þú getur sjón raðir sem bara eins og í Excel töflunni, bara listi af the lína. OK. Allt í lagi. Svo nú er að við höfum farið yfir velja, ef það eru ekki einhverjar fleiri spurningar, við munum fara yfir á Insert. Þannig að ef ég vildi setja inn nokkrar borð og setja ákveðna dálk gildi, gæti ég sett mig í Ravenclaw í 7. En stundum það gæti verið afrit gildi, eins og við sáum í pset7 þegar við voru að uppfæra okkar eigu. Svo í þessu tilfelli, viljum við nota ON Afrit KEY UPDATE, svo að við gerum ekki geyma margar línur með sama gildi heldur uppfæra hana. Þá höfum við í raun uppfærslu, sem er ekki innskot. Það er bara að uppfæra þar til þú uppfærir í ákveðinni töflu með tilteknu viðmiðanir og þá loks, eyða, sem gerir mjög svipað hlutur. Áhorfendur: Gætirðu stuttlega fara yfir afrit lykill? ZAMYLA CHAN: Já. Raun hér, hef ég INSERT INTO Gringott er, galleons þessi gildi. En ID, væntanlega, er ótvíræða gildi sett upp í MySQL töflunni. Þannig að ef ég nú þegar hafa þessi ID sett upp, þá get ég ekki setja inn nýja röð. Þannig að ef það er ekki til nú þegar, þá verð ég að uppfæra hana. Í miðri á hvítu. Áhorfendur: Svo INSERT, UPDATE, eyða, og velja, eru þeir allt í boði staðbundið [inaudible]? ZAMYLA CHAN: Svo setja, endurnýja, eyða, og velja eru öll SQL fyrirspurnum. Svo þegar þú ert að nota SQL, þú munt hafa þá í boði. Áhorfendur: aftur til fortíðar Skyndipróf - það var spurning sem fjallað ef þú hefðir borð og vildi setja próf skora í einu og þú setja nafn þitt svo það mun ekki láta þig [Inaudible] skora vinar þíns. Hvernig myndir þú gera það með innskoti? ZAMYLA CHAN: Svo spurningin var um fyrri miðjan tíma spurning. Ég er ekki kunnugt um hver einn það er núna. Svo kannski síðar, ef þú vilt að koma upp og sýna mér, þá get ég örugglega gefa þér ráð. En að tala um að setja hluti, eins og taka stöðuna einhvers þegar þú ætti ekki, við skulum tala um SQL innspýting árás. Svo er SQL innspýting árás meginatriðum þar sem einhver tekur Kosturinn við lágt öryggi leiðin sem þú ert að taka í gögnum. Svo hér, rétt eins og í CS50 fjármál, þegar við skráður inn, getum við inn í username í innskráningu formi, fyrsta textareitinn, og svo inn í lykilorð. Kannski PHP kóðann okkar gæti litið eitthvað eins og þetta, þar sem $ notandanafn er eftir gögn notandanafn og lykilorð er eftir gögn lykilorð. Og þá erum við að framkvæma bara fyrirspurn okkar, segjum, OK, vel, fyrirspurn okkar er að fara að velja frá notendum okkar, þar notandanafnið er eitt sem þeir skila. Og lykilorðið er lykilorðið, sem þýðir að Lykilorðin stemma. Nú, hvað ef í stað þess að í raun og veru skila inn lykilorðið, eins og 12345 og giska á prong sem segir lykilorð og reyna að hakk þeirra reikningur, hvað ef í staðinn þeir skilað þessu. Þeir gætu slá í kannski giska á lykilorð. Og þá myndu þeir klára vitna þá tegund í eða 1 = 1. Það myndi hraða beint inn í SQL fyrirspurn að líta eitthvað eins og this. Veldu frá notendum þar sem notandanafn = prongs og lykilorð jafngildir Lily eða 1 = 1. Svo hefur annaðhvort lykilorð til að vera rétt eða 1 = 1, sem er alltaf satt. Svo í þessu tilfelli, í grundvallaratriðum, sem notandi getur nýta þetta og bara að skrá þig sig í og ​​hakk reikningur einhvers. Svo að hvers vegna við viljum forðast einhver að þurfa að gera þetta. En sem betur fer, fyrirspurn virka með brottför í staðgengla mun taka sjá um þetta fyrir þig. Einnig munt þú yfirleitt aldrei vilja til raunverulega skila lykilorð sjálfir. Þess vegna höfum við kjötkássa eða brengla þá í CS50 fjármál. Áhorfendur: Fortíðin quiz talaði um MySQL flýja strengi. Þurfum við að hafa áhyggjur af því? ZAMYLA CHAN: Það er góð spurning. The MySQL flýja strings er ákveðið fall sem var notað í fyrirspurn okkar. En ákveðið að líta inn í það. Ég myndi segja að það er sanngjarn leikur að vita sem þú vilt þurfa að kalla það virka á band. Já, Belinda? Áhorfendur: Hvernig veistu hvenær það er einfalda gæsalöpp eða gæsalappa? Og líka, mér finnst eins og í fyrirlestri sem þú getið eitthvað um að hafa ekki á [inaudible] eða eitthvað eða annað eins vitna í lokin. Ég held að hann benti á í fyrirlestri sem þú ert ímyndaður til hafa úrfellingarmerki 1 og þá ekki úrfellingarmerki eða eitthvað. Áhorfendur: [inaudible]. Áhorfendur: Málið er síðasta einn vitna í það í þeirri seinni reitinn ætti ekki að vera þarna. [Inaudible] Því þegar þú tekur það síðasta einn vitna út og passa þetta fyrir efni þar sem lykilorðið er, ef þú ert að fyrirspurn, það er einn vitna í enda þegar. Þú vilt nota þessi einn vitna og sú sem snýr að einn [Inaudible]. Svo er það í raun í þeim texta kassi ætti ekki að hafa það. ZAMYLA CHAN: Ég breyta því. OK. Ef það eru ekki einhverjar spurningar, þá ég gefa það yfir til Jósefs að tala um JavaScript, et cetera. [Applause] JOSEPH Ong: Þannig að við erum að keyra svolítið á bak. Svo ef þú ert að fara, það er allt í lagi. En við biðjum að þú haldir höfuð niður ef þú ert í the miðja, svo þú ekki loka á myndavélinni og þú notar aftur hætta ef þú ert til. Ég er Jósef við á leiðinni. Hæ. Próf, próf. Dan, er þessi góður? Cool. Svo the vídeó verða einnig settar á netinu fyrir þá sem verða að fara núna. Klaufalegur. OK. Svo quiz endurskoðun. Þetta er Cat. Nú, JavaScript, sem er kannski ekki sem Aww fyrir sum ykkar krakkar. OK. Svo er það fyrsta, muna úr Zamyla. Mundu að PHP er keyra á þjóninum. Og hellingur af sinnum, þið skrifaði lykkjur í PHP til að prenta út HTML, ekki satt? Svo þegar að kóðinn keyrir, sem HTML framleiðsla sem þú prenta út fær sent til notandans. Og þegar það gerist, ekki fleiri PHP getur að hlaupa, nema þú hefur hlaðið niður síðunni, af Auðvitað, sem reexecutes PHP. En þegar þú hefur prentað út sem HTML, þú getur ekki farið neitt. Þannig að HTML er send yfir til notandans, sem er vafrinn hérna, þar sem Milo er að nota tölvuna. Og svo vel, að það eru nokkrir hlutir þegar við sendum HTML til notanda. Stundum viljum við gera eitthvað eins og þegar þú smellir á eitthvað, við viljum viðvörun reiti til skjóta upp kollinum, þær tegundir af samskipti, eins og þegar þú ýtir á lykill, þegar þú smellir eitthvað á síðu, ég vil eitthvað að gerast. Jæja, getur þú ekki reexecute PHP númer eitt að HTML er sett. Svo hvernig gera þú gera þetta? Við kynna nýtt tungumál sem heitir JavaScript, sem keyrir í vafra sem leyfir þér að gera hlutina HTML eftir að þú færð þá frá þjóninum. Og þetta er hvers vegna við köllum það viðskiptavinur-hlið forritunarmál. Það virkar á tölvunni þinni - viðskiptavinur. Einhverjar spurningar um að svo langt? Sem fyrirmynd er vit í að fólk? OK. Gott. Allt í lagi. Svo the fyrstur hlutur til að hafa í huga er JavaScript er ekki PHP. Þeir hafa nokkrar mismunandi setningafræði, sem við munum fara inn. Og þeir hafa mjög mismunandi nota. JavaScript, aftur, fyrir þinn vafra, fyrir viðskiptavininn. Þjónninn keyrir einhvers staðar á einhvers annars tölva sem sendir upplýsingar til þín, rétt? Þannig að ef við biðjum ykkur að skrifa PHP kóðann á prófspurninga, ekki skrifa JavaScript og öfugt. Þú munt bara missa stig, og það mun ekki vera rétt. Þannig að við skulum fá inn í sumir setningafræði munur - JavaScript til vinstri og PHP til hægri. The fyrstur hlutur þú munt taka með JavaScript, lýsa við breytum með sem var leitarorð - V-A-R. PHP notaði dollaramerki, sem Zamyla rætt fyrr. Ef þú vilt lýsa tengin array, sjáum við kunnuglega setningafræði á hægra megin við PHP. Á vinstri hlið, í stað þess þú notar hrokkið axlabönd. Og þá lyklar eru á vinstri. Þá verður þú tvípunkt. Og þá þú hafa gildin sem þú vilt. Svo er þetta hvernig þú myndir gera það í PHP hægra megin við þá sekúndu línu sem byrjar á Milo. Og það er hvernig þú myndir gera það á vinstri hlið JavaScript ef þú vilt það sem við köllum hlut. Og hlutir í JavaScript eru bara tengin fylki. Þannig að ef þú vilt fá aðgang að sviðum, í PHP þú notar þetta krappi setningafræði. Og þetta leið, getur þú ráðið virkni þetta eigandi reit til Lauren. Jæja, í JavaScript, ef einn vill til aðgang akur og breyta því, þú getur nota punktur setningafræði. Þú getur einnig notað krappi setningafræði. En þú getur ekki notað punktur setningafræði í PHP. Það mun ekki vinna. Það virkar aðeins í PHP. Og að lokum, til að prenta það til vélinni, þú nota console.log sem þú krakkar nota mikið í pset8. Þú getur console.log það. Ef þú vilt prenta fylki í PHP, þú þarft að nota prenta r. Og hægra megin, sjá þig ég kjötkássa band samtenging þarna. Einhver spurði áðan. Ég nota plús í JavaScript. Ef ég vil concatenate eitthvað í PHP, nota ég punktur. Þetta eru mismunandi. Ef þú ætlar að skrifa PHP kóðann, ekki nota plús. Ef þú ætlar að skrifa JavaScript kóða, ekki skrifa punkt. Það mun vera rangt. Og þú munt vera dapur. Svo setningafræði munur. Vita setningafræði þínum, því ef þú ert að skrifa spurningu og þú notar setningafræði frá röngum tungumáli, það mun ekki virka. Og það mun vera rangt. Svo skulum við tala um einhverja stjórn flæði mismunandi, hvernig þú notar lykkjur í hverju þeirra. Zamyla fór yfir hægri hlið. Stuff á hægri hlið ætti að vera kunnugt. Við skulum líta á á vinstri hlið. Þegar þú notar fyrir N LOOP í JavaScript, lykkja breyta þinn, var ég þarna, lykkja yfir takkana array. Svo þú sérð nafnið, hús, og hlutverk. Ef ég console.log i, fæ ég nafn, hús, og hlutverk. Þeir eru lyklarnir. Í JavaScript, er framhandleggur lykkja fer yfir þau gildi þessarar array. Svo sérðu að þær eru bæði i. En hér á PHP megin, það prentar út Milo, CS50 og Mascot. Þeir eru gildin í PHP. Svo að þetta eru hvernig þessir tveir eru öðruvísi á mismunandi tungumálum. Þannig að ef þú ert að nota framhandleggur lykkja, gera ráð ekki að það gefur þér lykla. Og ef þú ætlar að nota fyrir N LOOP, ekki taka það gefur þér gildi. Er þetta skynsamleg svo langt? Næsta mynd er að fara að sýna þér hvernig þú getur fengið aðgang að gagnstæða í hvert þeirra. Jæja, ef þú hefur lykillinn í JavaScript og þú vilt að gildi út, þú vísitölunni bara inn í array með það. Svo Milo af ég mun fá þér hvað þú vilt - gildin. Það er þetta mismunandi setningafræði í PHP. Ef þú vilt virkilega að vita það, ég er ekki held að við höfum sýnt það að þú enn. En ef þú hefur áhuga, getur þú notað þetta viðbótar setningafræði til hægri hlið sem mun í raun að láta þig fá lyklar í PHP þegar þú ert að nota framhandleggur lykkja. Svo bara smá fróðleiksmoli ef þú hefur áhuga. Svo er það bara að sýna fram á munur á milli þessara tveggja lykkjur. Ekki blanda þá upp þegar þú ert forritun spurningu. Einhverjar spurningar um það. Cool. Allt í lagi. JavaScript hlutum. Ég talaði um þá. Þeir eru eins og tengin fylki. Eina sem ég vil að þú að hafa í huga hér er um að gildi sem er á tengin array geta verið nokkuð í JavaScript. Það getur jafnvel verið að virka, eins þarna. Ég er með fall sem er gildi takka. Og ef ég vil kalla að virka, Ég aðgang bara gelta. Og þá er ég setja sviga eftir það. Og það virkar. Svo einhverjar spurningar? Nei? OK. Gott. JavaScript, eins og PHP, er lauslega slegið. Hvað þýðir það? Það hjartarskinn hafa gerðum. En þegar þú lýsa JavaScript breytu, segja þér var i. Þú segir ekki. Það er ekki hlutur. Þú segir bara að það er breytilegt. Og þá JavaScript mun annast gerðir undir hetta fyrir þig. Við getum frjálslega umbreyta á milli gerðir vegna þessa. Svo ég fer út sem tala í þessu tilfelli. Og þá hef ég streng. Og ég bæti ég við það. Og ég breyta henni aftur inn i. Svo á þessi fyrstu línu, Ég er fjöldi. Á annarri línu, ég verður nú band eftir að ég gera reassignment. Og hér er ég bara að concatenating að tala inn á band. Svo þú sérð að jafnvel þó að ég var heiltala í fyrsta hluta, það er tegund af eins og að vera breytt til a band og síðan verið bætt við á þessi hello band. Og svo er það sem ég meina með því að lausu inn. Það er að þú umbreyta á milli gerðir mjög auðveldlega. Og það þýðir ekki að kasta viðvaranir á þig eins og C gerir. Svo inniheldur ég nú halló 123 á band. Next. Við getum einnig að vild bera saman milli tegunda. Svo ef þú notar bara ==, mjög mikið eins og í PHP, JavaScript er svipað hlutur. The string 123 er hinn sami og fjöldi 123 þegar þú notar tvöfalda jafn. Þegar það er notað þrefaldur jafn, einnig vill til að tryggja að gerð er sú sama. Svo vegna þess að það er a band og það er tala, jafnvel þó þeir séu báðir 123, þegar þú notar þrefaldur jafnt, þú færð rangar. Í tvöfaldur jafngildir tilfelli, þú færð satt, því tvöfaldur Jafnt ekki sama um tegund. Þrefaldur Jafnt er sama um tegund. Spurningar? OK. Og annar hlutur óður í JavaScript er umfang er eins konar alþjóðlegt nema þú sért í aðgerð. Og það virkar á sama leið í PHP raun. Svo skulum við fara í gegnum þetta dæmi. Ég setti ég í 999. Og þá fer ég í þetta fyrir lykkju. Þannig að ef ég er i prentun út í þetta fyrir lykkja, búast ég 0, 1, 2, 3, 4. Ég fá að i = 4. Það hækkar i nú 5 á í lok for lykkju. Og þá brýst út úr lykkja, vegna þess að það uppfyllir ekki ástand lengur. Hvað finnst þér um að næstu console.log prentar út? Svo er það hvernig það myndi gera í C. Í C, því ef þú ert eins og Var ég úti og þú hefur VAR I inni í lykkju, eins og fyrir lykkju, þá gerir það það svo að það er scoped að tveir i eru mismunandi. Í JavaScript, það verður bara að meðhöndla það sem sama i. Ég fæ 5, vegna þess að það var verðmæti eftir að það lauk út úr lykkja. Svo þeir sem ég er eru þau sömu i. Er að skynsamleg? Jæja, gerir það vit í JavaScript sjónarmiði. En sama hugmyndafræði er ekki bera yfir C. Þeir hafa mismunandi scoping reglur. Já. Áhorfendur: [inaudible] utan virka [inaudible]? JOSEPH Ong: Svo utan sem virka? Þannig að ég ætla að fá til að í aðeins sekúndu. Svo við köllum foo (i). Þetta fer ég í foo, þrepum það, og þá logs það. Svo það var 5. Þannig að það verður 6. En það sem ég er að tala um er sem ég á að virka. Því það er viðfang, það er scoped til að virka. Svo þegar ég fæ reyndar út af því virka, það er nú að fara að fara aftur í gamla i. Að ég er aðeins scoped því það er í aðgerð. Og við höfum svigrúm og hlutverk. En við höfum ekki svigrúm utan aðgerðir í JavaScript. Er að skynsamleg? Já. Spurning. Áhorfendur: Sami [inaudible]? JOSEPH Ong: Svo já. Í PHP, það er sama tegund af hlutur. Það er örlítil lipurðar í raun. En þú getur spurt mig um að eftir endurskoðun. Þú gera ekki raunverulega þörf til vita að lipurðar fyrir spurningakeppni. Fyrir alla intents og tilgangi, eins og breytur, alþjóðlegt og PHP, nema þeir eru í aðgerð, sama hlutur í JavaScript. Já. Áhorfendur: Hvers vegna er þetta leyft í JavaScript og ekki hvar annars staðar? JOSEPH Ong: Svo hvers vegna er það leyfilegt í JavaScript og ekki í C? Það er bara sá sem kom upp með JavaScript ákvað að þetta væri í lagi í JavaScript. Svo er það bara eins og forritunarmál venju eins og við myndum segja. Já. Áhorfendur: Svo hvers vegna did það fara 6-5? JOSEPH Ong: Svo það fór 6-5, vegna þess að þegar ég fór ég í foo, að Ég inni í foo er nú scoped til foo, því svigrúm er í aðgerðir í JavaScript. En þegar ég komast héðan, því það var scoped að aðgerðinni, ég er bara nota almenna i sem var inni restin af flæði stjórna. Skynsamleg? Get ég flutt á? Allt í lagi. Cool. Samþykki þetta er hluti eru látin fara inn með tilvísun. Þú veist hvernig þegar þú fara fylki í C þú gætir reyndar breyta array? Það er sama í JavaScript. Ef ég fara framhjá hlut, í þessu tilfelli, I liðin Milo í þennan catify virka. Milo byrjar. Nafn hans er Milo Banana. Ég fara að mótmæla í aðgerð því það er hlutur, sem tengin array í JavaScript. Þegar ég framkvæma aðgerð í þeirri aðgerð, mun það raunverulega breyta hlutnum. Þannig að þetta mun aðeins gerast fyrir hluti í JavaScript, bara eins og það gerist fyrir fylki inni í nafni C. Svo Milo er mun í raun verða köttur núna. Er að skynsamleg? Þannig að þetta virkar eingöngu fyrir hlutum. Objects eru látin fara inn með tilvísun. Já. Áhorfendur: Svo þú ert að segja að í mótsögn við breyta ég. JOSEPH Ong: Já. Sem breyta ég var bara tala, ekki satt? Það er eins og í C þegar þú standast heil tala sem gerir það afrit. Og þegar þú framhjá array, reyndar það breytir í raun array í C. Það sama gerist með JavaScript í þessu tilfelli. Allt í lagi. Og næst, Milo er sorglegt vegna þess að hann er nú köttur. Það var reyndar Milo eftir sumir ferð til dýralæknis. Svo hvernig við notum JavaScript á vefsíðu? Við getum farið yfir þær. Þetta er HTML kóða með Fjarlægja tög. Svo ég hef Fjarlægja tög þar. Og þá er ég setja smá JavaScript númer innan handritið tags. Og þá það framkvæmir þetta. Þegar ég geri bara svona, það er kallast inline JavaScript. Það er góður af sóðalegur, vegna þess að JavaScript er í raun í HTML. A betri leið til að gera þetta, miklu betur, er að skrifa þitt Javascript í ytri skrá og gefðu handrit tag við gjafa. Og þetta mun fara til JavaScript skrá og lesa JavaScript úr að skrá í staðinn. Og með þessum hætti, þú þarft ekki mikið af JavaScript í byrjun af þinn HTML skrá, sem gerir það virkilega sóðalegt. Þú setur bara það einhvers staðar annars. Og þá mun það lesa það þaðan. Gerði það vit? Staðsetningartilboð mál. Í þessu tiltekna tilviki handrit er fyrir líkamann. Svo þegar ég framkvæma það, það er ekkert í líkamanum ennþá. Kannski mun þetta gera svolítið meira skynja þegar ég sýna þetta næsta hluta. Í þessu tilviki, handritið kemur á eftir div. Svo div virðist í raun á fyrstu síðu. Hérna í þessu litla rauðum hring, þú sérð textinn birtist. Og þá viðvörun sýnir sig. Í fyrsta lagi, vegna þess að forskrift var fyrir div, sem Alert sýnir sig fyrst. Og þá div sýnir sig eftir þú sleppa the kassi. Svo skiptir máli framkvæmd. Þannig að við munum halda þetta í huga. Þetta mun vera mikilvægur í litla bita. OK. Svo vel, hvernig heldur þú að bíða þar til allt síðu er hlaðinn þá áður en þú framkvæma sumir merkjamál? Við munum fá inn í þetta litla hluti seinna líka. En bara að halda þessari staðsetningu mál í huga fyrir þegar við koma til annars renna. Svo við fáum að DOM núna. Og hvað er DOM? Þannig að ef þú horfir á HTML kóða, það er bara fullt af texta á skjánum. Svo hvernig hjartarskinn JavaScript vita að þetta er HTML frumefni? Þannig að við verðum að hafa einhverja minni framsetningu á þessu mannvirki sem við höfum. Og þegar við höfum þetta í minni Fulltrúar í JavaScript, við köllum að DOM. Og það er bara þannig að fólk ákvað að við ættum að tákna þetta HTML uppbygging eins. Og hvað þýðir þetta DOM líta út? Jæja, í minni framsetning, við tökum þennan texta. Og við snúa það inn í minni framsetning. Þannig að þetta er HTML. Þannig að við að finna fyrst út að sérhver DOM tré hefur skjal. Það lítur út eins og tré. Og skjalið inniheldur HTML tag, í raun allt inni af þessu núna. HTML tag á tvö börn. Það hefur höfuð. Að höfuð, ef þú horfir á inndrátt þarna á hvernig það er byggt upp milli loka tags, höfuð hefur barn. Barnið er titill. Nákvæmlega. Nú höfum við líkama barn. Og þá hefur þessi líkami er barn sem heitir fjölskylda. Og að fjölskyldan á þrjú börn - elsta, miðja, og yngsti. Svo þú ættir að vita hvernig á að teikna skýringarmynd svona þegar við spyrja þig hvernig að draga skýringarmynd þegar við gefum þú HTML vinstra megin. Vita hvernig á að framleiða DOM tré. Og inni í þessum hlutum, það er bara einhver texti, sem ég hef fulltrúa eins litla kassa. Hefur þessi DOM tré uppbyggingu gera vit og hvað DOM er? Svo hvað þýðir p standa fyrir? Yfir hér, p þarna í þessi tag táknar tag lið í HTML. Svo þú getur litið það upp. En það þýðir bara að það er einhver pláss fyrir texta. Og það hefur sumir sjálfgefið CSS stíl, því það er lið tag. En í raun ekki að hafa áhyggjur sem hluti of mikið. Bara veit að það er tákn fyrir einhvern texta. Já. Spurning? Já. Áhorfendur: Þú nefndir bara CSS. Kjötkássa fjölskyldu og tætið allt það efni er í grundvallaratriðum fulltrúi auðkenni í CSS? JOSEPH Ong: Já, einmitt. Ég næ hvað þessar kjötkássa meina í annað. Þegar Angela fór yfir CSS, hún talaði um CSS selectors. Þetta eru CSS selectors sem hún var að tala um. Já, Rob? ROB BOWDEN: Ég myndi einnig athugasemd að DOM inni titli tag er einnig texti hnút. JOSEPH Ong: Hægri. Svo inni í titli tag, Ég hef einhvern texta DOM. Svo í raun, þetta titill ætti að hafa eins og lítill kassi koma burt af það eins og heilbrigður. En það skiptir ekki máli of mikið í þessu tilfelli. Við í raun ekki sama um texta hnúta, eins og við köllum þá, of mikið. OK, gerum við. Apparently, gera við. Og ég mun festa að þegar Ég hlaða hana aftur. Er að skynsamleg? Og hvernig eigum við að vinna með DOM? Alltaf þegar þú takast á við DOM í JavaScript, það eru tvö skref. Þú velur DOM frumefni. Og þá þú gerir það til þess. Svo í þessu tilfelli, abstractly, hef ég valið miðju frumefni. Og þá dæmi um að gera efni að það væri að breyta texta. Það er notað til að vera Bob. Nú, það sem ég gerði að það var ég breytti Bob til Milo í þessu tilfelli. Svo hvernig gerum við raunverulega þetta? Hvernig eigum við að gera Val? Og hvernig gerum við það að gera efni til hlutur þegar við höfum tekið það? Jæja, hvernig þið hafið lært það í þessum flokki er með því að nota eitthvað sem við heitir jQuery. Svo er það jQuery? jQuery er bókasafn sem gerir JavaScript auðveldara að skrifa. Svo einhver tók tíma og skrifaði jQuery. jQuery er reyndar skrifaður JavaScript. Og þá vegna þess að þeir gerðu þetta, við nú hafa a heild búnt af störfum sem við getum notað að gera okkar býr mjög auðvelt. Svo hvaða ert sumir af the atriði það gerir? Það gerir að velja þætti auðveldara. Það gerir að breyta HTML, bæta bekkjum auðveldara. Það gerir Ajax auðveldara. Við munum fá til að í sekúndu. Og það er hliðstætt C bókasöfnum. Svo þú látir string.h, þú færð strlen. Þú færð strcpy, öll þessi atriði. Þegar þú látir jQuery, þú færð gott leiðir til að velja atriði til að breyta hlutir, et cetera. Þú færð auka virkni sem JavaScript er ekki að gefa þér. Svo er jQuery ekki JavaScript. jQuery er bókasafn sem er skrifað í JavaScript sem gerir JavaScript auðveldara að skrifa. Svo er jQuery ekki forritun tungumál. En JavaScript er. gera. Jú þú færð hugtök hægri. Einhverjar spurningar? Já. Er að spurningu? Allt í lagi. Svo hvernig gera þú nota jQuery? Jæja, þegar þú ert að skrifa nokkrar JavaScript kóða og þú fela í jQuery efst á skránni sem handrit skrá, þú nota dollaramerki nú til að fá aðgang að jQuery. Og þetta er frábrugðin dollara merki í PHP. Það er sama tákni skrifar á lyklaborðinu þínu. En þeir meina mjög mismunandi hluti. Dollaramerki í PHP þýðir þetta er hvernig ég lýsa yfir breytu. Í JavaScript, þegar þú hefur innifalinn jQuery, hún stendur fyrir jQuery. Svo halda að í huga. Svo hvernig gætum við valið DOM þætti? Jæja, þegar þú gerir það ljóta JavaScript Þannig þú aðgang að skjal alþjóðlegum breytu. Og þá færðu þáttur eftir ID fjölskyldu. Þetta er mjög löng og wordy og ekki mjög gott. Eða þú getur fengið alla þætti sem eru p tag. Það virkar líka í JavaScript. En við aldrei virkilega sýndi þú setningafræði of mikið. Hvað við sýndum þér var jQuery. Svo að allt val þarna upp að var sett fram í JavaScript bara fær þéttur í þessa mjög ágætur dollara undirrita hashtag fjölskyldu. Og $ p, bara þar sem það er eins og þessi. Ef þú vilt að velja öll p tags inni í fjölskyldunni, leggjum rúm milli. Og nú, fáum við alla p tags inni fjölskyldu. Og líta kunnuglega? Jæja, Angela talaði um CSS selectors. Gefðu mér eina sekúndu. Og svo í röð til að velja stak, þú notar bara það sama og þú myndu gera með CSS val. Ef þú setur kjötkássa framan það velur hann eftir ID. A punktur velur með bekkjum. Ef þú ert bara hlutur án kjötkássa eða punktar velur hann þau merki. Spurningar. Já? Áhorfendur: Þegar við nota punkt í okkar HTML, er það ekki jQuery? JOSEPH Ong: Dot í HTML okkar er JavaScript hlutur. Það er ekki jQuery hlutur. The vegur þú krakkar lært það með jQuery er að nota. HTML. Og þá þú staðist það hvað HTML er að fara til vera. Þannig að ég ætla að fá til að í bara annað í raun og veru. Og hvernig eigum við að gera efni til frumefni þegar við höfum valið það? Svo er það dæmi um velja stak. Svo nú, viljum við að gera efni til þess. Svo í þessu tilviki, láta mig fara aftur í fyrri mynd. Það var Bob áður. Og ég vil breyta því inni HTML Milo. Svo ég kalla HTML virka úr frumefni. Sem HTML virka er Aðferð til þess að frumefni. Og þá er ég að gefa það hvað Ég vil HTML til að vera. Og það kemur í stað bara hvað er inni í sem tag með hvað ég get gefið það. Já. Spurning? Áhorfendur: The hashtag er notað aðeins í jQuery. [Inaudible] við myndum ekki nota það. JOSEPH Ong: Já, einmitt. En ekki hafa áhyggjur of mikill um hreint JavaScript. Ég vil bara að þú krakkar að einblína á hvernig þú myndi gera það með jQuery, því það er að fara til vera the mikilvægur hluti á spurningakeppni. Rétt. Nákvæmlega. Svo þú sérð að hashtag, þannig að samsvarar til að velja frumefni með ID miðja af því hashtag. Hashtag þýðir ID. Og þetta þáttur hefur ID miðju. Svo er það þáttur við að velja. Áhorfendur: [inaudible]. dollaramerki hashtag [inaudible]? JOSEPH Ong: Svo ekki. Spurningin er hægt að nota. Gildi. Og. Gildi virkar einungis á þætti sem eru inntak. Í jQuery, væri . Val, ekki. Gildi. Þannig að ég næ að litlu dæmi sem sýnir allt þetta í samsetningu í annað. En ég held að þetta þjónar smá bút vit í að fólk svo langt. Vilja til að breyta HTML, hringja í HTML aðferð. Já. Áhorfendur: Getur þú útskýrt Aðferðin aftur? JOSEPH Ong: Svo er aðferð bara fall sem tilheyrir einum, í þessu ræða, eitt af þessum DOM þætti, því þú sérð að ég valið frumefnið fyrst. Reyndar langar mig að nota músina. Ég valdi frumefnið fyrst. Og síðan hringdi ég þennan HTML kóða virka að það hefði. Og af því að þessi aðgerð tilheyrir þetta, við köllum það aðferð. Það er bara fínt nafn fyrir það. Segja það aftur. Svo man, við valið þátturinn núna. Og við búin að setja það inn í þátturinn breytu. Rétt? Svo þegar við viljum breyta HTML á inni, því það var Bob áður, þú vilt breyta þessi texti til Milo. Svo við köllum HTML. Og við segjum það hvað HTML inni þessi þáttur ætti að vera núna. Og svo breytist það það að Milo, vegna þess að ég gaf það Milo. Áhorfendur: Svo þeir eru að vinna saman. [Inaudible] JOSEPH Ong: Já, já. Þeir eru að vinna saman. Svo velur einn af þeim frumefnið fyrst. Og sú síðari er eitthvað að honum. Já. Áhorfendur: [inaudible]. Ef þessi aðferð er frábrugðin í HTML þú hefur þá aðferð jafnan raun. JOSEPH Ong: Já. Það er aðra aðferð. Það er aðra aðferð. Og við getum ná að í aðeins eina sekúndu þegar við komum til dæmi. Ég vil tryggja að við að flýta vegna þess að við erum að keyra út af tími. En við höfum keyrt hátt yfir tíma núna. OK. Cool. Svo ef þú vilt bæta við flokk, það er einnig að bæta tegund aðferð. Þetta er bara dæmi um hvað þú getur gert með jQuery. Sem bætir bara á bekknum. Ef þú vilt fjarlægja það, þú getur hringt Fjarlægja. Það er bara annar hlutur sem þú getur gert. Svo fleiri dæmi um hluti sem þú getur gert. Svo get ég setti bara það á efst svona? Yngsta Remove. Ef ég framkvæmi bara að Javascript á efst á minn skrá, mun það vinna? Rétt. Vegna miðja er ekki til ennþá. Þannig að þetta er ekki að fara að vinna. Framkvæmd þess. Það fer upp á topp fyrst. Hvað? Áhorfendur: Yngsti er ekki til enn? JOSEPH Ong: Já. Yngsta er ekki til ennþá. Nákvæmlega. Áhorfendur: Þú sagðir miðja. JOSEPH Ong: Því miður. Yngsta er ekki til ennþá. Og annar hlutur er að ég hef ekki ma jQuery skrá spyrja handrit src. Svo það er ekki að fara að vinna. Reyndar gerði ég ekki gera það í næsta mynd, sem er ætlast til að festa það heldur. En hvernig við gerum þetta er JavaScript er atburður ekið. Svo er það sem við notum við atburði stjórnandinn að gera þetta gerast. Og svo ég svo skjalið setur fyrst. Ég segi, allt í lagi, þegar skjalið er tilbúinn að láta mig hlaupa aðgerð. Svo er það allt það setningafræði leið. Ég valdi skjalið. Nú, þegar skjalið er tilbúin, hlaupa aðgerðina. Og svo hérna þegar skjal er tilbúin, sem þýðir allar HTML hefur hlaðinn, þá er ég að keyra aðgerðina sem fjarlægir þessi þáttur. Og svo núna, þegar ég keyra þessa aðgerð að ég fór inn í tilbúin, ég er tryggt að allir HTML á síða er að fara að vera til fyrst. Já. Spurning? Áhorfendur: Hvað er atburður leitarorð innan virka? JOSEPH Ong: Svo að atburður leitarorð í fall er bara breytu sem fær staðist til the virka fyrir hvaða atburð. Það er bara eitthvað sem þú færð ókeypis. Þegar þú ert að nota helstu dýraþjálfari í pset8, sem atburður gæti sagt þér, að dæmi, hver lykill þú ýtt á. Í þessu tilviki, fyrir tilbúinn atburði, það er í raun ekki frábær gagnlegt. En fyrir lyklinum niður atburði, það er meira gagnlegt, vegna þess að þú færð að vita hver Lykill þú ýtt við aðgangur lykill númer af þeim atburði mótmæla. Rétt? Er að skynsamleg? OK. Já. Spurning? Áhorfendur: Svo getur þú sett handrit tag neðar? JOSEPH Ong: Svo já. Þú gætir sett handritið tag neðar. En þá verður það bara virkilega sóðalegur. Og okkur langar að miðlægur öll af kóða okkar á einum stað. Og þetta mun leyfa okkur að gera það. Man áðan og ég sagði það er ágætur leið til að sjá til þess að þættir eru á síðunni áður en þú framkvæma kóðann? Og þetta er bara ágætur vegur þú vildi ná því. Áhorfendur: [inaudible]. JOSEPH Ong: Já. Þú þarft samt að, ekki satt? Vegna muna, þú ma skrá á efst á síðu. Svo það er að fara að framkvæma fyrst áður þú fá til the botn af the blaðsíða. OK. Svo þú getur líka bæta við mismunandi tegund atburður dýraþjálfari. Þetta ferli bara smelli. Þegar ég smelli á yngsta, þá það mun skjóta upp kollinum með viðvörun. Þetta er bara mismunandi tegund samskipta. Öfugt við tilbúinn ef þú nú nota Smelltu atburði þegar þú færð smellir á frumefni. Og svo í þessu tilfelli, muna, smelltu stjórnandinn fylgir yngstu. Svo gerist það bara þegar Ég smelli á yngstu. Og í hitt, tilbúin atburður var fest við skjalið. Svo það bíður skjalið að vera tilbúinn. Skynsamleg? Ég held að ég geti fara áfram. Já. Spurning? Áhorfendur: [inaudible]. í þessu tilfelli þú nota [inaudible]. JOSEPH Ong: Ó, já, vegna þess að í þessari ræða, ég verð að bíða eftir að yngsta þáttur til að birtast á skjánum fyrst áður en ég get hengja smella dýraþjálfari til það, sem er ástæða þess að ég setti það inn skjals tilbúin. OK. Og næst, þannig að þetta er stór dæmi um hvernig þú vildi sameina allt. Þetta er bara formi staðfestingar dæmi þú hefur séð í fyrirlestri. Svo taka það skref fyrir skref eins og þú ferð í gegnum þetta. Og það verður að vera algerlega í lagi. Bara að lesa hana frá toppi til botn. Ég er með mynd neðst. Þegar skjalið er tilbúið, ég að hengja leggja stjórnandinn að formi, þannig að þegar ég senda inn mynd, fæ ég gildin inni hvor af þeim aðföngum. Og ég athuga hvort það er auður. Ef það er autt, aftur ég rangar, vegna þess að Ég vil ekki að senda inn mynd, vegna þess að formið er rangt. Ef lykilorð er tóm eða það er minna en átta stafir, gef ég ekki form, því það er einnig rangt. Og aftur ósatt bara veg eyðublaðið frá að senda og fara til nýja síðu. Og vonandi, þetta er skynsamlegt. Ég held að þú krakkar ættu að ganga í gegnum þetta númer skref fyrir skref á eigin spýtur. Og þegar þú skilur hvað velja þætti og gera efni til þess reyndar felst, þetta mun gera a einhver fjöldi af skilningarvit til þín. Já? Áhorfendur: Hvað gerir NAME = Notendanafn meina? JOSEPH Ong: Svo NAME = Notendanafn og nafn = Lykilorð þýðir bara að líta á eiginleiki hvað þú ert að velja. Og þá þarf það að passa. Svo við förum inn í skráningu. Og þá erum við að líta á öllum aðföngum og skráning. Og þá erum við að velja einn þar sem nafn eiginleiki er jafn notendanafni. Svo að fyrsta val aðeins velur innskráningarorð inntak. Og það annað val aðeins velur lykilorðið einn, vegna þess að þeir hafa Nafn eiginleiki þeirra sett eins og hvað þeir eiga að vera. Spurning? Áhorfendur: Um skil, hvernig virkar neðri hluta leysa efsti hluti? JOSEPH Ong: Svo er það vegna þess af the atburður dýraþjálfari. Þannig að við erum að bíða eftir að senda inn atburð sem fær rekinn úr formi. Og það er allt sem er sent inn. Hví ég kalla leggja upp þarna? Það segir, þegar formið er lögð, Ég fæ senda inn atburð. Svo láta mig stöðva bara þessi og þá hlaupa þennan kóða í staðinn. Já? Áhorfendur: Hvers vegna ertu með að hafa virka atburði? Hvers vegna getur þú ekki bara [inaudible]? JOSEPH Ong: Vegna þess að í JavaScript, þú að lýsa þeim störfum. Það er bara hvernig það virkar JavaScript. Þú þarft að segja það er að fara að keyra aðgerðina. Svo þú ert að segja það sem þú ert von á aðgerðir hérna í stað þess að bara hrokkið axlabönd. Áhorfendur: Og virka er hvað segir? JOSEPH Ong: Já. Fallið er hvað er inni the hrokkið axlabönd eftir sem virka leitarorð. Já? Áhorfendur: [inaudible]. JOSEPH Ong: Til að senda inn? Áhorfendur: Nei, fyrir virka án the atburður. JOSEPH Ong: Já. Svo án the atburður, þú getur haft það. Ef þú þarft ekki á atburðinn, þá getur þú bara sleppt því. En ef þú gerir það, þá þú bara setja það þarna. Já. Fljótur spurning? Áhorfendur: [inaudible]. JOSEPH Ong: Já. Því það sem þú þarft að gera, document.ready segir bara bíða fyrir alla HTML á síðunni til að hlaða fyrst. Og yfirleitt, þú vilt þætti þínum í stað áður en þú keyrir allir kóðann. Allt í lagi. Við verðum að komast til Ajax. Við höfum ekki mikinn tíma. Svo kostir og gallar. JavaScript er auðveldara að reyna skrifa með jQuery. En jQuery er góður af hægur. Það er eins og PHP er hægari en C, því það er túlkað. Og jQuery er svolítið hægar en JavaScript, vegna þess að það gerir mikið af hlutur undir the hetta. Og svo ef þú ert að nota jQuery, það er bara svolítið hægar en JavaScript, jafnvel þó að það gefur þér gott glæsileika. Og að lokum, Ajax. Svo langt með Ajax, hefur þú ekki séð Ajax að því er varðar pset7 enn, því þegar þú gerir það, þú sendir inn form til að vitna í. Það hleðst upp nýja síðu. Þannig að þú færð þennan stóra hvíta glampi á síðunni á meðan að seinni síðunni álag, rétt? Það væri mjög gott ef þú ekki hafa þetta blikka. Eins og Facebook, ef þú flettir bara að botn, bætir það nýtt efni án hressandi alla síðuna. Svo eitthvað eins og þetta væri gaman. Þetta er JavaScript kóða á vinstri hlið. Þú færð það sem er inni á þeirri inntak. Þú færð stofnsins upplýsingar frá Yahoo! Og þá þú gera a stór band sem segir, OK, þetta er sá boðskapur sem ég vil að sýna á skjánum. Og þá setja þessi skilaboð inn sumir HTML þátturinn sem fær birtist á skjánum. Svo er það allt sem er að gerast hér. Svo í grundvallaratriðum, því þetta er allt JavaScript og þú þarft ekki að hlaupa lengur PHP, þetta mun ganga úr skugga um að síðan endurnýjast ekki. Svo er þetta bara ágrip hugmynd að ég er að segja hér í bili. Sem ágrip Hugmyndin er sú að ef þú gerir það allt í JavaScript, þú þarft ekki síðu hressa. En hvernig þú gerir í raun þetta? Ja, reyndar, við skulum tala um vandamál með þetta fyrst. A vandamál er í Javascript, framkvæmd er samstilltur. Svo þú verður að bíða í einn lína að klára áður en þú framkvæma næstu línu. Og hvað ef ég ætla yfir í Yahoo!, og þeirra framreiðslumaður ert mjög hægur, og það tekur þá þrjár sekúndur til gefa mig aftur að birgðir upplýsingar? Þegar ég högg að verð lína, ef framkvæmd er samstilltur, eins og það er með því að sjálfgefið, hvað það er bara að fara að gera er að Vafrinn þinn er að fara að tefja fyrir þrjár sekúndur. Og þú ert ekki að fara að vera fær um að gera nokkuð á meðan hún fær þessi gögn. Það er að fara að vera frosinn. Og það er slæmt. Þú vilt ekki að notandi hafa fryst vefsíðu. Rétt? Það er bara slæmt. Allir sammála? Ef þú ert að vafra Facebook og það frýs og þú getur ekki gert neitt, þú fá mjög svekktur. Svo lausnin er við tökum eitthvað ósamstilltur staðinn. Svo segir allt þetta ósamstilltur hlutur er, ég ætla að biðja þetta URL fyrir sumum gögnum. Og þá ætla ég að halda áfram. Ég ætla bara að fara að halda framkvæmd hvað kóða sem var eftir það. Og þá að gögn er þegar tilbúinn, þá mun ég vinna það. Það er allt það er að segja. Áhorfendur: Ajax gerir bara kóða ósamstilltur? JOSEPH Ong: Það er ósamstilltur leið að ná í gögn. Svo the fyrstur hlutur óður í Ajax er það leyfir mér að fá gögn frá utanaðkomandi website. Og seinni hlutur er að það gerir viss þessi síða mín hefur ekki tefja á meðan ég er sækja þessi gögn. Það er ósamstilltur hluti af því. Vegna þess að það fer í burtu annars staðar, vegna þess að ég segi að ég að halda áfram á meðan það er að sækja þessi gögn, sem gerir það ósamstilltur. Ég að halda áfram að framkvæma. Svo halda að ósamstilltur hugmynd í huga. Og ég skal sýna þér hvað munurinn er. The samstilltur útgáfa er á vinstri hlið. Ósamstilltur útgáfa er á hægri hlið. Horfir á tölurnar til að sjá hvaða skref í samræmi við það keyrir á hverri línu. Þarna, viðvörun sýnir sig fyrst. Því að fá lager upplýsingar frá Yahoo! tekur þrjár sekúndur, tefur það í þrjár sekúndur. Og þá viðvörun það verð eftir þeim þrjár sekúndur. Svo nú, sem láta sýnir upp á þeim tíma - þrjár sekúndur sig inn Og þá viðvörun það með eftir það. Svo fer það bara skref fyrir skref. Það er eins og það sem þú krakkar myndi taka við, rétt? Með ósamstilltur framkvæmd, Ertu vakandi fyrst. Þá þú fara burt á þessa slóð. Og þú segir, ég ætla að bara biðja um gögnin. Og þá ætla ég að vinna úr henni seinna. Svo keyrir það strax næsta lína eftir að ég gera það ósamstilltur beiðni. Svo 0,001 sekúndur, sjá þér vakandi hæ. Keyra að virka, vakandi bless. Og vegna þess að ég lofaði að ég myndi vinna úr gögnum síðar, hvað gerist er þegar þessi gögn koma til baka þremur sekúndum síðar, þá er ég að keyra að fall sem ég hef þarna. Já? Áhorfendur: Gætirðu tilgreina eða skýra hvað Ajax þýðir? JOSEPH Ong: Svo er Ajax hátt að ef ég þarft gögn þegar ég er á vefsíðu og ég vil ekki að uppfæra síðuna, þá Ég nota þessa tækni kallast Ajax. Sem í raun þýðir bara, fara sækja gögn frá öðru vefsvæði. Og gera það á þann hátt að aðeins ekki tefja vefsíðu mína. Áhorfendur: Svo er að felast hluti af JavaScript eða jQuery? JOSEPH Ong: Svo einhver skrifaði leið til að gera þetta í JavaScript fyrir löngu síðan. Á einum stað, gerði það ekki til. Og svo einhver finna þessa tækni til að leyfa fólki að biðja þessi gögn í þessari tísku. Og þeir skrifaði smá dót að gera það fyrir þig. Og jQuery gefur bara þér þetta mjög ágætur vegur að gera það með þessu $. fá virka. spurningar? Ég get svarað spurningum um Ajax síðan líka. Ég kem hér. Svo það skulum okkur ná í gögn án glæða síðuna. Og það skulum við gera þetta í ósamstilltur leið að ekki frjósa á síðunni. Of lengi, ekki lesa ef þessi skýring var of löng fyrir þig. Að endingu, kross-site forskriftarþarfir árásum. Við sáum þetta með Zamyla. Ef í gagnasafn einhvern mínum hefur þetta nafn, sem er þetta handrit tag, og ég hafa sumir merkjamál á síðuna mína sem prentar út nöfn fólks í röð, eða ég hef sumir JavaScript kóða sem setur þetta nafn inn á síðunni, hvað HTML fær framleitt? Jæja, prenta ég út HTML merki. Ég prenta út allar þessar skipanir. Ég fæ að þeim hluta þar sem ég er prentun út með vinum mínum. Ég prenta Lauren út. Það prentað Milo út. Og þá nafn mitt í gagnagrunninum er handrit staða unflattering Facebook staða. Vegna þess að ég sett þetta inn á síðunni vegna þess að það lítur út eins og JavaScript, þegar þessari síðu fær sent til notandans, það gets framkvæma og JavaScript. Og svo er þetta það sem við köllum kross-staður forskriftarþarfir árás. Einhver setur skaðlegum upplýsingum í gagnasafninu sem gæti átt við sumir viðbótar band eða sumir JavaScript band. Og þegar það fær prentaðar út til síðu í tísku, hvað þá gerist er að slæmt kóða gets framkvæma að ég vissi ekki ætla fyrir það að fá fram. Og það er allt kross-staður forskriftarþarfir árás er. Og hvernig þú færð í kring þetta er eins og Zamyla sagði. Þú sett bara hlutina í HTML sérstaka tákn. Og þetta HTML sérstaka stafir er PHP virka sem mun koma í veg fyrir þessa tegund af hlutur gerist fyrir þig ef þú hafa a illgjarn band í gagnagrunninn. Það sleppur bara það, þannig að það er ekki fá túlka sem HTML. Það kemur í stað litlu sviga við það sem við köllum aðila. Og við fórum yfir þetta í fyrirlestri líka. Þannig að ég held að þú krakkar ættu að hafa góð tök á því. Spurningar? Já. Áhorfendur: Svo hvernig væri á [inaudible]? JOSEPH Ong: Segja að aftur. Áhorfendur: Hvernig myndi fylgjast - JOSEPH Ong: Hægri. Svo þú hefur eitthvað sem segir, þegar Ég skráð, tegund í nafni mínu. Ég gerð bara á því sviði, ég heiti stript staða unflattering Facebook Staða loka handrit tag. Og það bara fær setja inn í gagnasafn, því ég get ekki sagt að einhver í heiminum er ekki með nafn með vinstri ör í það eða á Orðið handrit í það. Það þýðir í raun ekki skynsamleg. Svo ég er bara að ganga úr skugga um að ég sanitize efni áður en ég prenta það út við síðu. Áhorfendur: Svo HTML sérstökum kortum veg handrit tags? JOSEPH Ong: Já. Svo það kemur ekki í veg handrit tags. Það gerir bara viss um að handrit tags fæ ekki túlka sem HTML eða - já. Það kemur bara upp eins og hvað það er í raun. Allt í lagi. Svo sem var quiz endurskoðun. Cool. [Applause]