HANNAH Blumberg: Tere kõigile. Me läheme alustada vaid paar minutit varem sest meil on palju materjali läbi saama. Ma olen Hannah. Ma olen TF. Maria läheb ühinevad meil vaid paar minutit. Ta õpetab paragrahvi õigus enne. Ma õpetan paragrahvi õigus pärast, et me ei kavatse hoida seda poolteist tundi. Nii nagu näete siin, on meil üsna mõned teemad on meil vaja, et saada läbi, nii me minema natuke kiire. Aga kui igal hetkel me midagi öelda liiga kiiresti või te ei saa aru, vabalt katkestada küsimusi. Me tahame, et oleks võimalik teha seda vaatab seansi kasulik teile kõigile kui võimalik. Fantastiline. Nii saab hüpata paremale sisse mõned teemad, mida me tegelikult väga lühidalt kaetud jaoks Viktoriin 0 viktoriinis 0 läbivaatamise istungil. Nii algab ahelloendid. Nii lihtsalt veendumaks, et on mõned baasteadmised ahelloendid ja on mugav teha mõned põhilised toimingud. Nii lihtsalt vaadata, mis on seotud nimekirjad on parem kui massiivid sest nad võivad kasvada dünaamiliselt. Nii et meil on see suur eelis. Me oleme näinud neid kasutada in hash tabeleid, kui me ei tea täpselt, kui palju asju, mida me ei kavatse taha lisada meie andmestruktuur. Kahjuks oleme tükki lingitud nimekirja üle mälu, nii et me ei pea tingimata olema võimeline tegema pidevat aja juurdepääsu mis tahes element seotud nimekirja. Selleks, et leida Eelkõige element, me on itereerima kõiki tee alguses. Nii pea meeles, et enamik põhiline tegevus on omega 1. Nii sisestada lihtsalt aega võtab 1. Kustuta kavatseb võtta n, sest me minema leida loendist. Ja otsing võiks võtta, halvimal juhul n. Me ei saa teha midagi binaarne otsing ahelloend sest me ei saa lihtsalt juhuslikult hüpata keskel. Cool. Fantastiline. Natuke korstnad. See omakorda tuli üles viktoriini 0, siis peaks olema super rahul ta. Aga korstnad, palume mäleta virn. Ja see saab olema esimene, viimane välja. Nii me korstna asju pakis, ja seejärel Kui me üritame teha midagi off-- mida me nimetame popping välja stack-- me tuleme välja tippu. Ja kui me tahame panna midagi pakis, me nimetame seda lükates. Nii see on alati saab olema suureks alt nagu virn. Fantastiline. Me oleme näinud korstnad ellu nii ahelloendid ja massiivid. Kui oled rakendamisel massiivid, mida soovid veenduda, et jälgida nii suuruse ja võimsusega. Nii suurus saab olema praeguse mitmeid asju oma korstnat, kuid tootmisvõimsuse koguarv asju saab salvestada oma korstnat. Cool. Väga sarnaselt, meil on järjekorrad. Sel juhul asemel mõtlema virna plaate, mõtle line. See saab olema esimene, first out. Seega, kui olete vooder üles midagi poest, Loodame, et isik kõigepealt line läheb aidanud esimene. Selle asemel, et öelda push and pop nagu me teeme korstnat, me lihtsalt öelda Lisa järjekorda ja dequeue. Ja jälle, kui olete rakendatakse seda massiivi, meil vaja jälgida mitte ainult suurus ja suutlikkuse, vaid ka peas, mis saab olema ees meie järjekorda. Cool. Kõik küsimused mis tahes selle? Fantastiline. Liikumine paremale mööda. OK, hash tabeleid. Siin, kus ta hakkab saada tõesti huvitav. Nii hash tabelis on üks rakendamine on assotsiatiivne massiiv. Ühesõnaga, mis juhtus on meil kõik see sisend, ja me anname selle räsi funktsioon, mis ütleb, OK, see on koht, kus on hash tabelis see kuulub. Nii lihtsaim hash funktsiooni et me oleme näinud, on lihtsalt öeldes, OK, oletame me taha panna stringid meie hash tabelit. Ja tõesti lihtne idee võib öelda, OK, olgem lihtsalt sorteerida esimene täht sõna. Nii et näete, siin, võtame banaan, me paneme ta läbi hash funktsiooni, ja ta ütleb, hey, et peaks minema indeks 1. Nii saame sisuliselt mõelda hash tabeli hunnik erinevaid ämbrid. Ja kõik need ämbrid läheb hoida pea ahelloend. Ja et ahelloendid on koht, kus saame tegelikult panna erinevaid tükke andmeid. Nii sukeldumine natuke rohkem arvesse hash funktsiooni, siin näitel ma lihtsalt kirjeldatud, kus me lihtsalt öelda, OK, võta esimene täht sõna ja me oleme läheb sorteerida see ämbrid. Nii arvatavasti, seal saad 26 ämbrid, üks iga täht. Miks ei ole see suur hash funktsiooni? Mis teeb selle mitteideaalse? Jah. Sihtrühm: Sa lähed on kokkupõrkeid. HANNAH Blumberg: Jah, täpselt. Sa lähed on kokkupõrkeid. Nii et üks asi. Ja me räägime, kuidas me suudame määrata kokkupõrkeid vaid teine. Teine probleem on selles Eelkõige hash funktsiooni on see, et meie erinevad ämbrid ei kavatse olla päris drastiliselt erineva suurusega. Me teame, et seal on palju rohkem sõnu, mis algavad kui X, nii et me lähed on väga tasakaalustamata ämbrid meie hash tabelit. Cool. Nii et jah, lähme tagasi punkti kokkupõrkeid. Mida me teeme, kui seal on kokkupõrge? Meil on paar erinevat võimalust. Nii et üks, nii et arvan, et me üritame panna marja meie hash tabelit. Ja me näeme, oh, me tahame pane see indeks 1, kuid banaani juba elab seal. Mida me teeme? Meil on kaks peamist võimalust. Number üks on võime öelda, OK, pole ruumi indeks 1, kuid olgem lihtsalt hoida vaadates läbi kuni leiame teise avatud kohapeal. Nii me ütleme, OK, paneme selle koha 3. See on üks võimalus. Seda nimetatakse lineaarselt katsetamine. Ja teine ​​võimalus on öelda, OK, noh, olgem lihtsalt kõik need ämbrid olla juhid ahelloendid. Ja see on OK, kui seal on rohkem kui üks asi ämber. Me lihtsalt läheb lisada see peale ees. Nii et siin näed, OK, kui me lisada marja-, me lihtsalt võttis banaan, millist surutakse see üle natuke ja viskas marja seal. Ja see on ka täiesti korras. Seda nimetatakse eraldi ühendamine. Sa ei mõtle seda tüüpi, nagu massiivi pead ahelloendid. Kõik küsimused räsi tabelid, hash funktsioonid? Fantastiline. Puud ja proovib. Nii puu on mingisugune andmestruktuuri kus on olemas mingisugune hierarhia või mingisugune järjekohale oma erinevate objektide kohta. Ja see muutub super selge, kui me näeme näiteks. Ja me nägime üritab koos koos räsitabeli, in pset5-- mis jällegi täiesti aus mäng selle quiz-- teise andmeid struktuure, et suudame salvestada erinevaid asju. Juhul sõnastik, meil salvestatud hunnik sõnu. Võtame pilk mõned puud. Nii et see on näide puu. See on mingi struktuur, et hierarhiline struktuur, kus saab näha, et Selle 1 sõlm tipus on mingi rank üle 2 ja 3, mis on ülevalpool 4, 5 ja 6 ja 7, mis on ülal 8 ja 9. Nii et kõik mean puu, nii et saate lihtsalt selline pildi sellest oma peaga. Nüüd on meil paar rohkem spetsialiseerunud puud. Nii et üks näide on Binääripuu. Ja Binääripuu on, uuesti, lihtsalt läheb andmestruktuur mingi hierarhiat, kuid iga sõlm võib olla maksimaalselt kaks last. See, kui sõna binaarne pärineb. Nii et see on näide Binääripuu. Nii et väiksema kategooria puud. Nüüd lähme veelgi täpsem ja rääkida binaarne trees-- Kahendotsingupuu puud, pigem. Nii et siin mõte on mitte ainult ei iga sõlm on kõige rohkem kaks last, kuid kõik last ikkagi vasakule ei kavatse olla väiksem ja kõik last ikkagi õigus saab olema suurem. Nii teate lihtsalt meie Binääripuu, seal on mingit seost numbrid. Aga meie binaarne otsing puu, näeme, OK, siin on 44. Ja iga number vasakul 44 on väiksem ja kõike paremale on suurem. Ja mis hoiab igas tase puu. Nii et siin on see väiksem kui 22 ja see on suurem kui 22. Ja see on kahendotsingupuu. Miks me mõtleme seda nimetatakse Kahendotsingupuu? Mis algoritm see meenutab sulle? Sihtrühm: Binary otsing. HANNAH Blumberg: Binary otsing. Sest kui sa otsid Eelkõige number selles puude, igas punktis, võid lihtsalt koputama off pool puud, mis on suurepärane. Ja nii, et see saab meile midagi mis näeb välja palju nagu binaarne otsing. Kas küsimusi on? Olgu, lahe. Olgu, püüab. Igaühel lemmik. Nii et see on näide, et oleme näinud hunnik klassis. Ja jällegi, see on lihtsalt üks nii, et me saame salvestada andmeid. Juhul sõnastik jällegi See on lihtsalt saab olema stringid. Vaatame, mida see tegelikult Tundub veidi madalamal tasemel. Võtame pilk ühes sõlme Prefiksipuu. Ja me näeme, OK, seal saab olema loogilise ja sõlme, kursor sõlme. Ja me näeme, et Loogiline nimetatakse is_word. Nii et sisuliselt, et on läheb vastavad Nende vähe kolmnurgad, mis ütleb, kui olete saanud siin olete leidnud täielikku sõna. Me teame, et "Turingi" üle Siin on täielik sõna, samas lihtsalt T-U-R ei ole sõna sest me ei näe, et väike delta. Ja see väike delta jällegi vastab see is_word, Selle Loogiline is_word. Ja siis on meil hulgaliselt lapsi. Nii et igal tasandil, siis on eriti sõlme, ja et sõlm punktid kaasa massiivi kogu tähestikku. Nii et näete, jälle, Selles picture-- ma olen läheb, et hoida tagasi hüpates forth--, et massiivi tipus on hunnik erinevaid sõlmed tulevad välja sellest. See on 26 või 27, kui soovite lisada extra iseloomu. Ja see annab meile viis säilitada meie andmeid viisil, mis võib nägi et võid otsida super kiire. Mis on lookup aeg Prefiksipuu? Sihtrühm: [kuuldamatu]. HANNAH Blumberg: Jah. Teoreetiliselt on see pidev aega. See on ainult kavatse olla suurus sõna, mida soovite otsida. Isegi kui me lisame Hirveän rohkem sõnu meie Prefiksipuu, see ei hakka meid enam kindlaks teha kui antud sõna on Prefiksipuu. Nii see on tõesti kena. Sihtrühm: Kas sa lihtsalt initsialiseerida et massiivi? Sa jäid punkti või kaks. Kas sa lihtsalt rääkida et teist? HANNAH Blumberg: lgatahes. Hea küsimus. Küsimus oli, me on massiiv, mis on läheb on sõlm staar mitte ainult sõlm, eks? Cool. Nii et siin see, mida me ütleme on meie massiiv on lihtsalt saab olema viiteid teistele massiivid. Nii see essentially-- seda liiki tundub ahelloend sel viisil kus iga neist lastest Lihtsalt punkti järgmise sõlme. Ja nii, et me tegelikult kindlaks, hei, OK, oleme kordasid läbi kogu Ühesõnaga, on see sõna sõnastikku me lihtsalt vaadata seda is_word. Hea küsimus. Jah. Sihtrühm: OK. Mis oli runtime jaoks Prefiksipuu? HANNAH Blumberg: Muidugi. Nii runtime Prefiksipuu eest lookup saab olema pidev aega. Nii et see on lihtsalt saab olema tähtede arv sõna. See ei sõltu Suurus sõnastik või suurus andmestruktuuri. Nii et siin on veidi lihtsam näide. Sel juhul on näha, et Sõna nahkhiir on sõnastikus ja teil on zoom, kuid sa ei ole midagi loomaaias. Kuidas me teeme loomaaed? Kuidas lisada zoo meie sõnastik, meie Prefiksipuu? Jah. Sihtrühm: Tee is_word tõsi [kuuldamatu]. HANNAH Blumberg: Hea. Nii et me ütleks, et Z-O-O, ja siis me suudaksime soovite kontrollida off, et kast samuti. Hea. Olgem võrrelda väga lühidalt püüab versus hash tabeleid. Püüab on tõesti suur sest, nagu me ütlesime, nad annavad pideva tööajaga otsing. Aga suur puudus on nad humongous. Saad mõttes, isegi vaadates seda, et see läheb võtma tohutu mälu. Nii nad ei kavatse olla palju suurem kui hash tabeleid, aga nad ei kavatse anda meil palju kiiremini lookup korda. Nii et mingi oma Miinuseks, mida sa hoolid, kas see on kiirus või mälu. Kõik küsimused ühelgi et kõik C andmestruktuuride. Ilus. OKEI. Me läheme edasi liikuda vähe natuke veebi arengut Maria. MARIA ZLATKOVA: Armas. OKEI. HANNAH Blumberg: Võite kasutada oma sülearvuti. MARIA ZLATKOVA: Nice. OK, lahe. Astume nüüd veebis areng, me rääkisime natuke umbes õiguste muutmist faile ja katalooge nii, et nad võivad olla kättesaadavad teiste kasutajatega, et maailmas, ja nii, et me näeme, kuidas Põhimõtteliselt saame saata nad kui me arendame asjad veebilehed et oleme enamasti teinud. Nii nägime chmod käsk, mis on muutmise režiimi, põhimõtteliselt. See on Linux käsk ja see muudab juurdepääsu õigused failisüsteemi objektide kohta. Ja failisüsteemi objekti lihtsalt kataloogi, faili midagi, mida saab muuta õiguseid. Nii, et näha faili õigusi, me tippige käsk ls nimekirja, -l. Ja kui me kirjutame, et me tavaliselt näha mõningaid õigusi mis näevad välja justkui niimoodi ees kataloogi nime. Nii d viitab kataloogis. Ja siis on meil kolm triaadid et põhimõtteliselt vaadake õigusi kas kasutaja, grupi või kogu maailmas. Liigid õigusi, et suudame on nende kolme inimrühma kas r lugemiseks, w kirjutada, ja x sooritamiseks. Ja meil on neid, rühma ja ka maailma. Keeruline on see, et mõnikord kui me tippige chmod käsk, meil oleks tüüp mõned number mis koosnes kolmest bitti. Nii et me võiks teha nagu 777 ja et põhimõtteliselt nimetatud lisaväärtus Iga nimetatud kolmikut sest r viitaks 4, w oleks viidata 2 ja x viitaks 1, nii et kui liita, kõik numbrid oleks tulnud alla kumulatiivne arv kumulatiivne väärtus vahemikus 0 kuni 7. Nii võiksime ka 0 ilma õigused üldse. Ja mis oleks põhimõtteliselt annab meile load kas kasutaja rühma või kogu maailmas. Kõik küsimused selle siiani? Sihtrühm: Sa ütlesid, et lugeda oli 4? MARIA ZLATKOVA: Jah. Sihtrühm: [kuuldamatu]. HANNAH Blumberg: Jah. Sihtrühm: Ja siis, lisades kõik need teised näitaks oma number. MARIA ZLATKOVA: Jah. Jah. Need on suured küsimused. Armas. Edasi me hüppas HTML ja veidi rohkem veebi arengut. Nii HTML tähendab lihtsalt HyperText Markup Language. Ja see on juurdehindlus keeles, mis on standard et seda kasutatakse, et luua veebilehti. Seda nimetatakse märgistuskeel sest see ei ole tegelikult koostatud. See ei ütle, kuidas mingi kood peaks täidetakse või midagi sellist. See lihtsalt joonistab ja kirjeldab, kuidas veebi lk tuleks luua iga oma elemendi ja kuidas nad peaksid otsima kasutaja. Mõned HTML sildid, mis me läks üle on järgmine. Kõik meie HTML dokumendile algas DOCTYPE html. Siis meil on alati html tag. Meil on pea ja keha. Ja see on oluline, et HTML on selline pesastatud struktuuri sest see on väga selge. Ja siis see muutub väga selge, kui me vaja avada ja tegelikult lähedal sildid. Ja meil on alati vaja sulgeda sildid, et oleme avanud. Ja siin on meil mõned liigid asju ette, et me tahame olla. Nii et meil on näiteks pealkiri CS50. Ja siis me tegelikult võimalik ühendada laadilehte mis määrab, kuidas me stiilis meie veebilehel. See on CSS. Me läheme üle seda Järgmise paari slaidid samuti. Kehas, seadsime mõned tunnid ja sümbolid. Ja meeldetuletuseks, jälle, ID on unikaalne ja klassid saab määrata mitu elementi. Ja see tähendab lihtsalt, et saame kasutada klassi ja sümbolid teistes structures-- nii, et Näiteks jooksul CSS failide või stiili sheets-- viidata konkreetsetele elemendid ja põhimõtteliselt öelda, et tahame stiilis või kujundada mõned element mõnel kindlal viisil. Ja me nimetame neid oma ID ja klassid. Ja me saame viidata ka erinevaid asju sümbolitega samuti, kuid sümbolid ja klasside lihtsalt annab meile mitmekülgsus ja mida konkreetselt me tahan viidata. Nii lihtsalt näide. Saame taas jooksul CSS faili, kus me soovite määrata mõne style-- nii värve, fonte ja värki selle-- saame määratleda stiili keha. Nii et seda defineeriks Kogu keha tag. Aga siis me saame määrata ka stiili jaoks #title. Ja jälle hashtag viitab meie ID ja dot viitab meie klassis. Ja siis, et Infot me Samuti saab määrata mõningaid omadusi. Ja jällegi, kui me läheme tagasi, oli meil klassi nimetatakse info ja meie ID pealkiri. Ja me näeme, et me nimetame neile #title ja Infot. Sihtrühm: Kas Te ütleksite hashtag [? vastu mind? ?] MARIA ZLATKOVA: Vabandust? Sihtrühm: Kas Te ütleksite hashtag [? vastu mind? ?] MARIA ZLATKOVA: Hashtag tähendab ID, nii #title viitab iganes elemendid on see ID nimetatakse pealkiri. Ja siis dot viitab klassi. Nii Infot viitab see element sest tal on klassis info. Jep. Sihtrühm: Miks sa eristada neid HTML? Miks sa ütled teatud asjad ID ja teatud asjad on klassis? MARIA ZLATKOVA: See on lihtsalt kuni Sa-- HANNAH Blumberg: Korda küsimust. MARIA ZLATKOVA: Oh, vabandust. Miks me eristada teatud elemendid IDS ja muid elemente nagu klassi? See on lihtsalt sellepärast, et see on tõesti sageli disaini valik. See annab teile palju mitmekülgsus on võimalik öelda, et ma tahan seda eriteema on see ID, sest nad tahavad teha palju asju sellega, ja ma ainult soovite määratleda stiili, teatud stiili või värvi iganes selle eseme. Ja kuidas seda teha on lihtsalt andes talle ID. Ja siis, kui ma tahan olla paari erinevaid objekte võttes, et selle asemel läheb ja millega their-- selle asemel, et teha seda, mida tag sest sildist valid kogu tag iga kord, kui silt on kasutatud, saate määrata klassi mitu elementi. Ja siis lihtsalt juurde, et klassi ja öelda Ma tahan stiilis Selle klassi nii. Ja jälle klassi saab olla mitu erinevat toodet ja ID peab olema unikaalne. Hea küsimusi. Muid küsimusi? OK, awesome. Jällegi, see on, kuidas neid selektoreid on viidatud CSS koos hashtag, dot, või ilma midagi määrates stiilis mõned sildi, nagu keha. Ja siin on meil üldiselt süntaks, kuidas seda tehakse. Kordan mõned parimad tavad HTML ja CSS, peame taas sulge kõik HTML sildid, et avame. Ja mida soovitame teil teha oma lõplik projekte, samuti CS50 Finance, on teha Veenduge, et kõik teie HTML kinnitab. Ja see on tehtud koos W3 süntaksi. Ja siis, mida me tegime ja mida soovitame teed on eraldades stiili, nii et CSS on juurdehindlus HTML. Nii midagi, mis käsitleb kuidas Sinu lehele läheb visuaalselt välja ja kuidas see saab muuta peaks minema CSS dokument. Ja siis oma juurdehindlus öelda, kuidas asjad on teineteise suhtes on HTML, ja mis peaks minema sees oma HTML dokumente. Kas küsimusi on? Mhm. Sihtrühm: Mis täpselt toimub edasi lehel valideerimine kui me valideerida HTML, et [kuuldamatu] loodud? MARIA ZLATKOVA: Nii what-- arvan, et sa. Mis täpselt toimub edasi lehel valideerimine ja miks me peame seda tegema? Põhimõtteliselt me ​​peame tegema, et sest palju kordi, brauseri, Kui te ei sulgu silt või midagi sellist, Teie brauser on ikka veel muuda lehekülg ja võib veel palju tööd, aga see on hea tava, et veenduda, et oled jälle suletud kõik oma silte, et kõik oma elemendid on nii, et nad peaksid olema, ja põhimõtteliselt, et see, mida konventsioone, mis on eelseadistatud. See on jällegi vaid asi, mida tuleks saab õppida tegema, vastandina võttes sloppier kood ja värki. Jah. Oi vabandust. Ma arvasin, et sa tõsta oma käsi. Sihtrühm: Ei, ma olin lihtsalt [kuuldamatu]. MARIA ZLATKOVA: OK. Sihtrühm: Aitäh. MARIA ZLATKOVA: Muidugi, aitäh. Nii jälle toimub, kuidas teabe edastamise ja kommunikatsiooni mudelid teabe edastamiseks. TCP / IP. TCP tähendab lihtsalt Ülekanne Control Protocol ja IP viitab Internet Protocol. Ja see lihtsalt viitab kuidas on andmed esitanud. Kui meil on mõningaid andmeid, et peab toimetatakse teile-- teete taotluse teatud server. Näiteks kui me pääsemast cs50.net, teeme taotluse CS50 server ja me näha, et me tahame saada selline teave. Ja siis põhinevad käesoleva protokolli kuidas seda teavet ei esita, server annab infot meile tagasi, kliendi. Ja siis me saame näha teave lehekülje ja siis kasuta seda. Siis Hypertext Transfer Protocol on lihtsalt üks protokoll või seada konventsioone, mis määrab, kuidas veebibrauser ja veebiserver peaks suhtlema. Ja paneb see kõik koos, HTTP jällegi lihtsalt määratleb, kuidas seda hüperteksti määratletud poolt HTML, et me oleme töötanud see, kuidas see peaks Teieni ja kuidas need andmed, mis on Teile saadetud saab sulle. Ja sellepärast, kui te poisid mäletan alates klassis oli meil palju taotlusi ja meil oli palju süntaks Nende nõuab, et me oleme lähe kohe sinna. Nii jälle, kui me saata taotluse server, meil määratleda paar asja. Seega on meil vaja leida tüüp Taotluse et me kehtestamisel. Ja jälle on meil näiteks GET on ühte tüüpi meetod et meil on meie taotlus. Ja siis HTTP / 1.1 on alles protokolli, et me kasutame praegu. Enamik aega, et läheb protokollile, et me kasutame. Nii et kui teil on küsimus niimoodi oma viktoriini. See on konventsioonid et meil on nii palju. Längkriipsu viitab, millist asju me taotlenud. Siis meie host on näiteks selles Juhul, me üritame minna google.com. Nii et see on raha hulk. See on taotluse liik mida võiks saata. Ja siis tüüpi vastuse, mis võiks saadetakse jällegi põhineb Selle protokolli on jälle HTTP / 1.1. Nii et HTTP versioon uuesti. 200 OK on just staatus koodi. Ja see OK on lihtsalt fraas põhineb selle staatuse koodi. Ja siis Content-Type viitab tüüpi mis tagastatakse sulle, et on eest, et veebilehe, et saate ja et teie brauser saab muuta hiljem. Ja see on text / html. Sihtrühm: Mida 1.1 tähendab? MARIA ZLATKOVA: See on lihtsalt versioon of-- oh, mida ei 1.1 tähendab? See on lihtsalt versioon, HTTP versioon protokoll, mis me kasutame. Hea küsimus. Muud küsimused? Sihtrühm: Kas sa Kokkuvõttes Content-Type reaalne kiire? MARIA ZLATKOVA: Nii et on see, mida server. tüüpi information-- mis on Sisu tüübi järgi oli küsimusi. Nii et oli tüübist informatsiooni, et saad tagasi serverist tüübist andmed, et brauser saab siis muuta, et te kasutate. Sihtrühm: Kas see, mida see Protokolli ütlen teile teha? MARIA ZLATKOVA: Vabandust? Sihtrühm: Kas see, mida protokolli öelda? MARIA ZLATKOVA: protocol-- Sihtrühm: --what Content-Type on või what-- MARIA ZLATKOVA: Protokoll põhineb nüüd-- mis on protokolli ütlen teile? See on lihtsalt nii et see teave toimetati sa põhinev kohta, millist protokolli Kas sellest teabest oli saanud toimetatakse sulle tagasi. Kas see teeb mõttes omamoodi? HANNAH Blumberg: Sa ei mõtle protokoll kui a-- Ma arvan, professor Humala kirjeldas klassis, kui selline nagu a-- see on nagu samaväärne inimese handshaking. Ütle, mõtled, ma olen taotluse ja ma oska HTTP versioon 1.1. Ja siis server ütleb, oh, OK, I-- ja nii on olemas. Ma tean ka, kuidas tulla toime HTTP / 1.1. Ja ma annan Teile tagasi mõned sisu. Sel juhul läheb tüübiks text / html. Nii et see on omamoodi lihtsalt viis neist communicating-- MARIA ZLATKOVA: See on lihtsalt kinnitades, et sa oled nii järgides sama protokolli ja et nii kliendi ja server-- nii Teie brauser ja server-- omamoodi tea, mida sa oled räägi ja on konventsiooniga möödub andmeid. Sihtrühm: Nii Content-Type part-- Sisu-Type text / html-- see on Eraldi osa samal sõnum? Või on see osa oletame, 200? Kas 200 ütle neile, et ega on-- MARIA ZLATKOVA: 200 ütleb, et see kõik läks OK. Ja siis sisu tüüp on omamoodi Eraldi osa sama sõnumit, ja öeldes asi, mis ma Tagastatud on selline text / html. See lihtsalt annab rohkem infot. Kas midagi lisada? OKEI. Muid küsimusi selle? Fantastiline. Nii mõned teised HTTP staatused, et me võiksime saada lisaks 200 OK, need, mis me oleme näinud äkki võib-olla palju on 403 ja 404. Nii 404, kui sa üritasid Juurdepääs midagi, mida ei ole olemas. Nii näiteks oma CS50 Finance psets, kui sa olid muudab quote.html ja sa ei pea selle faili vaid siis tuli quote.php, et tulemuseks oleks 404 Not Found sest fail ei pruugi eksisteerida. Sest 403 keelatud, et viitab õigused. Nii et kui mõned faili ei ole loetav maailma, võite saada 403 tagasi. Mõned teised, et sa võiksid get-- 301, püsivalt liigutatud; 302, leitud; 304, Modifitseeritud; 400, Bad Request; ja siis Internal Server Error eest 500 ja 503, mis ei ole kättesaadavad. Jah. Sihtrühm: me oodata pähe kõik need staatused? MARIA ZLATKOVA: oleksin neid oma petma lehte. [NAER] Sihtrühm: Kas me oodata tea, mis vallandab iga üks? MARIA ZLATKOVA: Kas nad on? HANNAH Blumberg: Sest need, mis me oleme joosta into-- nii küsimus was-- MARIA ZLATKOVA: Kas nad on eeldatavasti tean, mida igaüks neist staatus koodid võivad vallanduda? Nii et need, kes me oleme, mida kasutatakse ja jooksin, ma ütleksin, jah. Nii oleme kindlasti näinud 200 OK ja loenguid seda psets. Me oleme näinud 403, 404. Teiste jaoks? HANNAH Blumberg: oleksin öelda 500 tundub aus mäng. MARIA ZLATKOVA: 500, yeah. HANNAH Blumberg: Jah. Lihtsalt on üldises mõttes mis põhjustab neid. Ja ka just need nimed, saate liiki nagu teha haritud arvan nii mis tegelikult põhjustas neile. Näiteks liikuda pidevalt, ilmselt faili on liigutatud jäädavalt. Sihtrühm: Aga eelmine eksam oli nii kuidas sa kavatsed meid vastata, et? HANNAH Blumberg: See oli väärt null punkti. Küsimus 418 kohta teekann on tehniliselt HTTP staatuse, kuid see oli seda väärt null punkti. Ilmselt sa ei ole eeldatavasti teavad neid. Sihtrühm: Kas see on reaalne? HANNAH Blumberg: See on tõeline üks, kuid see ei tähenda midagi. See on lihtsalt nali. Internet inimesed on naljakad. MARIA ZLATKOVA: Hea küsimusi, poisid. Muid küsimusi? Sihtrühm: Mis on internal server viga? MARIA ZLATKOVA: sisemine serveri viga lihtsalt tähendab, et teil on olnud ei suuda suhelda server mingil põhjusel. Nii see ei ole tingimata midagi, mis on pistmist kliendi või midagi sellist. Ma ei tea ühtegi konkreetne näide et oleme läinud üle seletada, aga jah. HANNAH Blumberg: Muidugi. Nii näiteks nagu olgem ütled töötasid Mashup ja Google server läks mõned Põhjus, voolukatkestus, oletame. See oleks internal server viga või mingi of-- meeldib sulle ei saa vastust tagasi. MARIA ZLATKOVA: Jah. See on lihtsalt, kui sa oled ei suuda suhelda server mingil põhjusel, sest see läheb alla või mõnel muul põhjusel. Nii hüppas PHP. PHP, erinevalt HTML, on programmeerimiskeelt. Ja me hakkasime seda kasutada, sest see on väga kasulik veebi arengut. Esmalt kasutati seda CS50 Finance. Ja see põhimõtteliselt aitab meil tuua koos selle juurdehindlus, projekteerimise, ja kuidas me tegelikult kasutada teavet näidata asju veebilehele. Nii PHP ise tähendab PHP Hypertext eeltöötlus, nii et see on rekursiivne backnorym ise. Ja avamist silte PHP me vasakule ja paremale nooled küsimärke ja php. Nii et me oleme juba näinud kamp ta. Nüüd me lihtsalt läheb minema üle mõned põhilised asjad midagi. Nii PHP muutuja nimed algavad dollari märk. Me ei täpsusta, jälle, muutuva kirjuta enam. Nii nagu me tegime koos C, me ei pea seda tegema. Me ei saa teha hunnik erinevaid kraam muutujaid. Me ei pane neid kokku liitmisel neid dot märke, mis me ei saanud teha C uuesti. Jällegi, meil on natuke rohkem mitmekülgsus PHP poolest muutujaid. Jällegi, meil pole põhifunktsioon. Ja PHP tõlgendatakse vastandina koostamiseks Nii lihtsalt, kuidas me ei tee C-faile, me ei pea seda tegema PHP. Aga mitte see, kuidas keel juhib ise, see on tõlgendanud. Ja siis lõdvalt kirjutatud tähendab lihtsalt, et me ei ole määrata muutuja tüübist ja muutuja tüüpi mõistetakse käivitamisel. Sihtrühm: Aga mida sa mõtlen dot ahel? MARIA ZLATKOVA: Muidugi. Kui me tahame, et õiglus jalule together-- nii et kui meil oli mõned muutuja oli väärtus 3 ja meil oli teise muutuja, mis oli väärtus string, me võiks panna muutujaid kokku pannes dot nende vahel ja concatenating neid. Või me võiksime luua muutuja nimega nimi ja pane see koos concatenating kaks stringi. Nii et kui meil oli string topelt hinnapakkumisi ja paneme dot pärast seda, ja siis oli meil veel üks string, mis looks string üldse. Sihtrühm: OK. MARIA Läti: Oli selge? Sihtrühm: Jah. MARIA ZLATKOVA: OK. Jah. Sihtrühm: Kui sa ütled tõlgendada mitte koostada, sa räägid sa ei pea olema nii konkreetsete kui tegemist PHP versus C? MARIA ZLATKOVA: Kui me ütleme tõlgendada erinevalt koostamiseks Mida tähendab? Nii et see tähendab, et me ei pea käivitatava faili käivitada PHP. See tähendab, et see töötab see läheb. Kas see on mõtet? Natuke rohkem. HANNAH Blumberg: Nii et sa ei mõtle tõlgi kui mõni teine ​​programm, mis vastutab läheb rida-realt läbi PHP ja tegelikult käivitamata, mitte et kompileerimisel kõik alla binaarne. See tegelikult ei tähenda midagi kuidas konkreetsed peame olema. Meil on veel vaja, et olla täpne, ja mitte unustasite semikooloniga, ja veenduge, sul on dollari märk, ja asju. Hea küsimus. MARIA ZLATKOVA: Jah. Nii rida-realt, kui Erinevalt C-faile, peame kogu lõplik Enne saame tegelikult kasutada seda. See on peamine erinevus. Aga jälle, me ei saa tõesti vähem spetsiifilised. Nii massiivid PHP esindavad tegelikult korrastatud kaart. Nii massiivid assotsieerunud väärtused võtmed. Kaks võimalust tunnistada massiiv, mis põhineb selle süntaks, saame olla selgem öeldes on meil hulgaliselt ja meil on see key1 et kaardistatud Selle väärtuses1, key2 mis seob väärtus2. Või saame lihtsalt luua massiivi mis sisaldab väärtusi iseenesest ja siis võtmed mõista nii. Kõik küsimused selle? Sihtrühm: Mis oleks võtmed olema teine ​​näide? 0, 1, 2, 3? MARIA ZLATKOVA: Näiteks, see on lihtsalt võtmed selles ei pruugi muuta. Nad lihtsalt määrata, kuidas saad kasuta väärtusi sees on. Nii et kui meil oli foreach loop PHP, mis võimaldab meil läbida kõik väärtused, saame läbida kõik väärtused, isegi kui meil oleks või ei oleks määratud konkreetse võtit saidi Eelmise süntaks. Nii isegi selline massiivi, võiksime veel on foreach loop mis läheb läbi iga väärtuste võtmes massiivi. Nii süntaks foreach loop, hakkame koos massiivi. See $ arr muutuja on meie tegelik massiivi et meil on määratletud eelmise slaidi kui väärtus, mis sõna otseses mõttes läheb läbi iga väärtusi, olenemata sellest, kas meil oli oluline või mitte. Ja siis me saame teha midagi väärtus sees foreach loop. Nii jälle, kui meil oli hulgaliselt nagu see siin created-- nii et meil on võti suva ja väärtust baar, võti baz ja väärtust qux-- meil on foreach loop et läheb läbi massiivi põhiväärtus ja tehke midagi võtme ja / või väärtuse. Aga me ei pruugi alati pea olema foreach silmad, et läheb läbi massiivi võti kaardi väärtus. Me ei lähe läbi foreach loop massiivi väärtuse. HANNAH Blumberg: Ja ma arvan mina-- oli oma küsimus, mida on kaudne indeks? Sihtrühm: Kinda. MARIA ZLATKOVA: Oh. HANNAH Blumberg: Jah, jah. Ühesõnaga, kui sa ei määra oluline, see saab olema 01. MARIA ZLATKOVA: Jah. Just nagu C, see on null indekseeritud kui sa ei määra oluline. Sihtrühm: Vabandust. Kas sa püüad keelt kõnelevate natuke valjem? Mul on natuke probleeme kuulmise kõike. MARIA ZLATKOVA: Mul on nii kahju. Jah, muidugi. Nii sa tahad mind minna üle selle uuesti? Või on see-- Sihtrühm: Nii eelmise slide-- kui võid lihtsalt minna tagasi ühe sekundi. MARIA ZLATKOVA: Muidugi kahju. Sihtrühm: Nii teine massiivi siin ei ole tundub, et on väärtus sisestada, mingis mõttes [? põhjusliku seose. ?] MARIA ZLATKOVA: Õigus, õigus. Sihtrühm: Niisiis, kuidas see toimib kui te ütlete, et see kõik või mitte ükski. Mulle see välja näeb [? suva?] juba. MARIA ZLATKOVA: Jah, jah. Nii jälle see on tellitud kaart selles mõttes et seal on arusaadav, näiteks indeksid Siit võib mõista kui 0, 1, 2, 3. Jällegi, see on, võttes neid indeksid on meie samaväärne võttes võtmed vastenduseks väärtusi. Nii et kui meie peamine oli 0-- kahju. HANNAH Blumberg: No, seal kriit siin. See on tegelikult väga kena. MARIA ZLATKOVA: See on tore. OKEI. Nii jälle $ arr 0 oleks võti väärtus 1. 0 oleks võti väärtus 1. Sihtrühm: mul on kahju. See on nähtamatu. HANNAH Blumberg: Olgu, nevermind. Kriit oli halb mõte. Ma võtan selle tagasi. Sa ei mõtle võtmed kui 0 kaartide väärtus 1. MARIA ZLATKOVA: Jah. Nii et see on 0, siis on 1, 2, 3. Need võivad olla oma võtmed. Sa ei mõtle neid kui-- yeah. Seega ei pea selgesõnaline võtmed, nad omamoodi mõistetakse indeksid algavad 0. Kriit ei aidanud. Jah. Sihtrühm: Sest foreach loop, Kui me tahame, et vaadata, kui väärtus, See oleks lihtsalt automaatselt indeks 0? MARIA ZLATKOVA: Jah. See läheks läbi iga väärtusi. Sihtrühm: [kuuldamatu] kui 0 või oleks see lihtsalt ei 0? MARIA ZLATKOVA: Sa oleks öelda, kui dollari märk ja siis mõned muutuja nimi, väärtusega. Sihtrühm: [kuuldamatu]. MARIA ZLATKOVA: Vabandust? Sihtrühm: Vabandust, ma olen lihtsalt üritan meeles pidada. Kuidas sa seda tegid, kui sa ei saa seda teha automaatselt indekseerimine on lihtsalt 0? MARIA ZLATKOVA: Niisiis, kuidas sa seda tegid Kui te ei ole konkreetse võtme nimi? Sihtrühm: Jah. MARIA ZLATKOVA: Sa lihtsalt define-- lihtsalt öelda end mõne nime. Nii teie psets, kutid võiks mäletan foreach $ rida $ rida, Lõime paigaldada see $ rida öeldes me tahame minna läbi rida $ rida. Kuigi meil ei olnud Selle selgesõnaline $ rida määratletud, me võiks lihtsalt minna ja öelda võib see olla meie peamine, ja lihtsalt minna läbi iga väärtusi. Sihtrühm: Nii on väärtus uue muutuja me luua salvestada [kuuldamatu]? MARIA ZLATKOVA: Nii see ei ole olemuselt uus muutuja. On muutuja, mis viitab sees massiivi igale neist. HANNAH Blumberg: See on uus muutuja nimi. MARIA ZLATKOVA: Jah, see on uue muutuja, Aga see ei ole inherently-- yeah. See on lihtsalt uus muutuja et võite seda teha. Nii lihtsalt, kuidas me tegime $ rida $ rida, rida oli uue muutuja, mida me võiks luua meie foreach loop. See ei pea preexist enne seda. Sihtrühm: Kas sa lähed läbi Loogika iga näitel olemas? MARIA ZLATKOVA: Mhm. Oi vabandust. Siin on näide. Muidugi. Nii iga array-- nii see tähendab, et minna selle massiivi peamiste value-- et läheb minna läbi selle massiivi ja esimene minna ja saada suva on võti suva ja väärtust baar. Ja siis teisel iteratsiooni silmus, see saab läbida ning võtta võti baz ja väärtust qux. Ja siis saab midagi teha kumbki neist või mõlemad. Sihtrühm: Nii idee võttes oluline punkt, et väärtus, Mida sa lõpuks pääseda? MARIA ZLATKOVA: Mis on idee võttes võtme juhtides väärtustada? See on lihtsalt üks kokkulepe, teise kuidas läheb läbi massiivi ja pääse kas võti või väärtus või mõlemad ning neid kasutada. Sihtrühm: Mis roll Tellimiseks et foreach jookseb? Nii et kui me olime lisada elemendid massiivi hiljem oleks need olla esimesed, kes kutsutud foreach massiiv, või oleks hiljem? MARIA ZLATKOVA: Mis on järjekorras, et foreach loop läbib massiivi? See läheb läbi esimese element viimasele element, viimasele lisatud element. Kui lisate elemendid hiljem, nad oleksid saab accessed-- esimene elemente, juurde kui esimene elemendid massiivi, ja siis tahaks minna läbi iga elemente nagu omamoodi ordered-- ei ole tellinud, kuid nii, et nad on pandud massiivi. Sihtrühm: Nii uued elemendid lisatakse hiljem? Nii nad added-- nad olla viimase omadega [? iteratsiooni. ?] MARIA ZLATKOVA: New elemendid can-- Põhimõtteliselt, kui lisatakse uusi elemente, nad lõppu lisatakse massiivi? Sihtrühm: Jah. MARIA ZLATKOVA: Ma usun, et. Jah. Ja siis oma foreach loop, kui olete lisanud uusi elemente ja lähete nende kaudu uued elemendid oleksid olla accessed-- uus element, kui see on Lõpuks lisatakse oleks kättesaadav viimase. Sihtrühm: Kas sa anda näiteks midagi, mis oleks [kuuldamatu] midagi koos väärtus nagu [kuuldamatu] või väärtus, meeldib, kuidas sa formaat, mis? MARIA ZLATKOVA: Muidugi. Kas ma saan tuua näite, mida me teeks koos väärtus? Mis te poisid võiksid olla tuttav on, et me oleme läbi käinud hulgaliselt ja põhimõtteliselt trükitud iga osa, näiteks osana et nimekiri nummerdada või midagi sellist. Kas see on mõtet või ei taha me mina-- Sihtrühm: Kas me printida need väärtused välja? MARIA ZLATKOVA: Jah, me võime printida ja siis põhimõtteliselt $ väärtus, sest kell mis eriline väärtus, oleksime trükkimiseks raha sees on. Nii et kui me olime meie esimene esitus seda ja me trükitud $ väärtus, oleksime trükkimine baar. Sihtrühm: Kas on olemas ka silmuseid PHP või lihtsalt foreach silmad? MARIA ZLATKOVA: Ei ka silmad PHP. Ja nende loogika on enamasti sama, mida olete juba harjunud. Sihtrühm: Nii et selle väärtus on null. MARIA ZLATKOVA: See on nagu sama. Jah. Sihtrühm: Ma lihtsalt küsin. Nii et kui sa tunnistada massiivi, siis ei ole vaja öelda, mis suurus see läheb olla, mis tähendab, et saate lihtsalt lisada ja ära võtta elemendid [kuuldamatu]. MARIA ZLATKOVA: Jah. Jep. Täpselt. Kui me kinnitame massiivi, me ei pea ütlema, millise suurusega on, nii me lihtsalt lisada elemente peale seda ka hiljem. Rohkem küsimusi? Nii tuua PHP ja HTML kokku mida me oleme seen-- hästi, näiteks selles näites on meil HTML kujul, mis on sisendiks valdkonnas. Ja sisestusväli on lihtsalt nimi ja siis on nuppu Esita. Ja kui vajutate Esita nuppu, meie hello.php faili sest meetod kujul on saada, suudame iganes on nimi Käesoleva saada globaalse muutuja on-- süntaks on $ _GET. Ja siis saame juurdepääsu olenemata kasutaja sisend sees, et vormi nimi määrates nimi selles valdkonnas. Muid küsimusi või mis tahes küsimustele see konkreetne näide? Sihtrühm: Kus on PHP? MARIA ZLATKOVA: Siin. Nii et see on meie avamist silt PHP. Sihtrühm: Oh, eks. MARIA ZLATKOVA: Jah. HANNAH Blumberg:? = On stenografisti on see, PHP ja lihtsalt kaja. Sihtrühm: Oh. MARIA ZLATKOVA: Jah, vabandust. Ma oleks pidanud selgeks teinud. HANNAH Blumberg: Print. MARIA ZLATKOVA: See on lihtsalt funktsioon mis võimaldab meil printida midagi. Hea küsimus. Nii going-- jah. Sihtrühm: Kas seal saab olema üsna natuke käsi kodeerimine PHP ja HTML kohta viktoriini 1? MARIA ZLATKOVA: Ei saa olla päris palju tõlgendus PHP ja HTML, ei pruugi nagu suur hulk kodeerimine Kuigi sa võisid kirjutada foreach loop, kuigi jaoks silmus. Iga aasade et me katta siin on aus mäng. Ja ongi enamasti see. HANNAH Blumberg: ma oleks valmis. Samamoodi, et me palusime teil kirjuta kamp C funktsioone viktoriin 0, Ma oleks valmis tegema Samal aastal PHP ja JavaScript. MARIA ZLATKOVA: Jah. HANNAH Blumberg: Ütleksin little-- nagu me ei ole läheb sul kirjutada suur HTML lk lihtsalt sellepärast, et see on natuke tüütu, kuid sa võisid osad. See on täiesti aus mäng. Nagu väike HTML lehel täiesti õiglane. Sihtrühm: OK. Kuidas JavaScript ka? HANNAH Blumberg: Jah. JavaScript on aus mäng. MARIA ZLATKOVA: Jah. See on täiesti aus mäng. HANNAH Blumberg: Me saame omaga nagu 10 minutit. MARIA ZLATKOVA: SQL jällegi Structured Query Language. Sisuliselt võimaldab meil õnnestub andmed relatsioonandmebaasis juhtimine süsteem. See lihtsalt tähendab põhimõtteliselt et meil on kuskil salvestada mõned andmed, et saaksime taha kasuta veebilehel või mõnel muul viisil. Ja siis on meil päringud saada teavet meie andmebaasi või sisestada teavet neile. Palju ühist ones-- UPDATE, INSERT, SELECT, ja kustutada. Nii UPDATE, see on süntaks ajakohastamise andmed andmebaasis. Uuendamine selles tabelis nimega laua juurde SET, saame mõned väärtused kõigis rida võrdsele midagi muud. Nii saame ka täpsustada teatavaid kirjed, mis me tahame muuta ja mida saab vajaduse korral kasutatakse. Ja meil on võimalik määrata, et me tahame ainult muuta mõned read, kus maja, kui meil oleks tabel õpilaste ja kõik oli õpilastel maja, nii et me oleks vaid muuta mõned väärtused Kui maja on võrdne Currier, näiteks. Sest INSERT, saame sisestada teatud väärtused tabeli. Nii INSERT INTO tabel, ja seejärel väärtusi, ja siis sulgudes, me täpsustada mis väärtustab soovite sisestada. Nii INSERT INTO tabel, col1 ja col2, väärtus on VAL1 ja VAL2. Nii et see lisab põhimõtteliselt uue rea sisse tabel, mis sisaldab väärtusi 1 ja 2 Veerus 1 ja 2. Ja siis me läheme üle kiire näide sellest, kuidas näeb välja nagu meie andmebaasis natuke. Aga see viimane päringu, et ma arvan, et me läheme üle, VALI, see lihtsalt võimaldab meil Valige andmed tabelist et võib-olla kasutada seda hiljem. Ja kuidas me seda on meil lihtsalt hoidke seda mõned muutuja. Ja siis me saame võib-olla seda uuesti kasutada. Nii SELECT star tähendab vali kõik. See on lihtsalt stenografist valimiseks kõik. FROM tabel, kus me otsime mõned konkreetsed tingimused, seda siis, kui kolonn võrdub midagi, näiteks. Kui me lihtsalt tahtsin vali kõik tabelist, see lihtsalt valib kõik veerud ja kõik read tabelist. Ja siis kustutada tabelis KUS col võrdub midagi, see lihtsalt kustutab mõned rida meie tabelis kus meil on mõned konkreetsed tingimused. Sel juhul tingimused on veerus võrdub midagi. Nii lihtsalt kiire näide sellest. Kui meil on see tabel siin ja me pistke see tabel, need väärtused, mis lisab uue rea. Ja kui meil oli auto-juurdekasvu, see oleks lihtsalt juurdekasvu meie ID 0-1 to 2. Kui me valisime kõik üliõpilased, see lihtsalt tagastab kõik väljad ja kõik read. Kus aastal on suurem kui või võrdne 2016 et oleks lihtsalt tagasi Hannah ja mina. Ja siis, kui me lihtsalt valitud aastal id ja aasta õpilased kus maja on Cabot House, et oleks jälle tagasi Hannah ja mina. Siis, kui me kustutatakse õpilaste kus nimi on võrdne Rob, mis kustutab kogu rida. Ja siis, kui me seame nimi, UPDATE õpilased Määra nimi võrdub Daven KUS maja on võrdne Cabot House, et läheb minema need read ja seejärel ajakohastada nime. Ja siis paar SQL andmete tüüpe CHAR, varchar, INT, ja sularahaga. Need on aus mäng. Ma tahaks minna jälle ja veenduge, sa tead ja on neid oma petma lehte, mida kõik need tegelased on kasutatud, milliseid sa kasutada neid oma psets, ja veenduge, et olete tuttav ja rahul võttes valida Eri tüüpi andmeid oma pset. Jah. Sihtrühm: Mis oli, et tabelis salvestatud? Jah, kus on selles tabelis hoitakse? MARIA ZLATKOVA: Noh, kohe, et see ei ole salvestatud. Igatahes, kus on selles tabelis hoitakse? Kuid see ei saa olla säilitatud SQL andmebaasi kantud. Sihtrühm: Ja kus on SQL andmebaasi? Kui arvuti online kuskil serveris? MARIA ZLATKOVA: See võib olla mitmeid erinevaid asju. HANNAH Blumberg: oleme liidestatud SQL tabelid enamasti phpMyAdmin. Nii võiksime küsida server salvestada neid meile. Võiksime talletamiseks oma arvutisse. MARIA ZLATKOVA: See lihtsalt sõltub kuidas sa tahad teha seda ise. Aga meil on talletamiseks nende peale, nagu Hannah mainitud, kohta phpMyAdmin, mis on võrgus. Ja siis kuidas me kasutame PHP ja SQL, me salvestada see mõningaid muutuja mida oleme päringu eest. Nii et kui valime kõikide ajaloost kus user_id võrdub Session ID, mis valib kõik read konkreetse isiku on sisse logitud ajaloost laua ja sorteeri need read. Lahe asi on teada et CS50 päringu funktsiooni kaitseb SQL süst sildid. See tähendab lihtsalt, et see tagab sisend, mis on sisestatud õige ja et isik, kes siseneb sisend ei püüa sisend mõned pahatahtlik kood kas tilk meie toidulaual või kustutada kõik sees meie andmebaasi. Kiire ülevaade Mudel Vaata Controller mudeli see on lihtsalt viis, kuidas korraldada ja mõelda koodi. See on jällegi disaini paradigmaga. Mida see tähendab, et me can-- ja see on hea tava eraldada erinevad osad Meie koodi ja mida nad kontrollida neisse kolme paradigmad. Nii et meie arvates on kõige sagedamini meie malle, meie paigutus, kuidas et me seame kuidas meie kood tundub. See on peamiselt meie CSS faile ja kuidas et meil määratletud disain meie koodi põhimõtteliselt. Meie kontroller on enamasti see, mida oleme teinud PHP faile. Nii jälle koostööd teavet, mis meil on ning määratleda, kuidas see andmeid kasutatakse, ja siis möödaminnes, et teave kas peale vaadata või mudeli. Ja mudel, nii, et me oleme on kasutan on olnud meie andmebaasi seda siis, kui meie andmed on salvestatud nii see on kuskil elada, ja mõni kood, mis on seotud sellega, kuidas et me saame seda teavet või nii, et me ajakohastab seda teavet. Nii et MVC mudel, HTTP taotlused saata veebiserverisse. Siis, kontroller tõlgendab taotluse kasutajale ja siis kinnitab kasutaja sisend. See on vabatahtlik, et meil on kontroller suhelda koos mudeliga, nii et midagi nagu meie andmebaasi või mõne muu funktsiooni mis edastab teavet. Ja siis lõpuks, kontroller läbib info peale vaade nii, et see võib olla sulatatud ja et seda saab muutuvad nähtavaks ühelegi isikule juurdepääsu veebilehele. Kas küsimusi on? Fantastiline. Nii jälle, mudeli, selle funktsiooni jällegi Püsiva teabe talletamises, haldamise ja korraldamise andmeid. Ja mida me oleme näinud nii palju on MySQL andmebaasi ja mis tahes andmefaile, et võib kasutada. Vaata, informatsiooni esitamise kasutaja, UI, või kasutajaliidese. Ja näide selle kohta on HTML. Ja siis me võib-olla minimaalne PHP. Nii jaoks silmus, mis itereerib üle andmed, mis on välja prinditud kuulub seisukohal, nagu Erinevalt kontroller. Ja siis palju meie PHP faile jagunevad kontroller kategooriasse. See lihtsalt tegeleb kasutajate soovide ja saab teavet mudel. Hüpates Dokumendi Object Model, see lihtsalt viitab sellele, kuidas HTML dokumendid on korraldatud. Ja nad organiseeritud puuks struktuur, mis on hierarhia. Nii et kui meil on juurdepääs [kuuldamatu] esitus dokumendi, saame töötada koos dokumendiga, nagu me manipuleerida objekte põhimõtteliselt. Ja teha seda natuke selgem, kui meil on palju meie erinevad sildid vastata to teistmoodi meie puu. Ja siis selle näite me on alates dokumendi sõlme. Meil on siis meie HTML sõlme mis jaguneb pea ja keha. Head on pealkiri ja seejärel Pealkiri sisaldab hello, world. Ja meie keha lihtsalt sisaldab tere, ka maailma. Seega igasugused küsimustele tahes asju, mida me katta nii palju? Ja kui ei, Hannah hakkab üle võtta JavaScript. Fantastiline. HANNAH Blumberg: OK, lahe. Kui midagi kerkib PHP või HTML, või kraami Maria kaetud, saame alati pausi. Me teeme paremini jälle, nii lahe. Ja just minna tagasi tõesti kiiresti sellele, kui te vaatate iga viimase aasta eksami, see kerkib either-- siin mõned HTML, teha seda skeemi. Või siin on see skeem, teha mõned HTML, nii et kindlasti harjutada seda. Ja siis see on ühe garanteeritud Küsimus, et saad õige. Cool. Nii räägime JavaScript ja kuidas see on natuke erinevad keeled nagu PHP ja C, kahe keele nägime ette. Nii number üks, see on lõdvalt kirjutatud. See on nagu PHP, kuid erinevalt C. See on tõlgendatud keeles. Jällegi, see on nagu PHP, erinevalt C. Ja see läheb võimaldab meil use-- see toimib tõesti kenasti veebilehti. See saab meile võimaluse manipuleerida sisu ja kuidas see välja ja mida ta teeb. Me näeme natuke Ajax. See võimaldab meil suhelda asünkroonselt erinevate serverite ja saada teavet. Ja see on asi, mis tõesti eraldab JavaScript PHP ja C on, et see on kliendipoolse. Mõlemad PHP ja C on tavaliselt server-side. Enamasti ja peaaegu täielikult, mida oleme näinud, vähemalt Selle klassi JavaScript tegutseb kliendipoolse, mis tähendab, et brauser on tegelikult vastutab töötab ta. Ja see tähendab, et meil ei ole vaja suhelda server. Seega tähendab see võib olla palju kiiremini sest see on tegelikult lihtsalt see Chrome, see on Safari, see on Firefox, mida iganes sa kasuta tegelikult töötab teie JavaScript. Sihtrühm: Mida asünkroonne tähendab? HANNAH Blumberg: Ah, mida ei asünkroonselt tähendab? Hea küsimus. Asünkroonselt means-- noh, sisu, kus Me kasutame seda on OK, me loote veebilehe ja me peame teatud informatsiooni. Nii et näiteks Mashup, mõningaid andmeid, et me tahta on artikli pealkirju. Nüüd could-- üks võimalus on teha seda sünkroonselt ja see tähendab, olgem lõpetada, mine saada artikkel, saada article tagasi ja seejärel muuta, kuid see oleks väga aeglane. See oleks halb kasutaja kogemus sest sa oleks lihtsalt istub seal ootab midagi vastata. Asünkroonselt tähendab me jätkata läheb meie äri muudab lehe ja Saadame off taotluse see on selline läheb juhtub taustal. Ma arvan, et me kasutame näiteks Loeng kutsuda Rob ja öelda, Hei, kas sa vaatad seda üles mina ja saada tagasi mulle, mitte ainult mulle ootab telefoni. Nii asünkroonselt tähendab see juhtub taustal meilt paralleelselt. Hea küsimus. Midagi veel? Hea. Me hüpata palju rohkem arvesse asünkroonne taotlusi Ajax. Sihtrühm: Kas JavaScript-- kus ei see langema Model-View-controller? HANNAH Blumberg: Hea küsimus. Kust JavaScript sügisel koos Model-View-controller? Hm. Ma arvan, et see võib fall-- nii et me ei ole tavaliselt meeldib lirts see, et paradigma, kuid ma arvan, et ma ütleksin, OK, nii et JavaScript tegelikult läheb lubada Meie andmete kogumiseks, tõlgendada, tegelikult teevad mõtestatud asju andmetega. Sellisel juhul, see on väga kontrolli jms. Aga see ka läheb, et saaksime näidata asju ja print asju. Sellisel juhul, see on väga arvates moodi. Jah. Nii et see on selline nagu PHP Kui see võib selline olla nii. Hea küsimus. Midagi veel? Olgu, awesome. Liikumine paremale mööda. Vaatame näiteks kuidas saame kasutada JavaScript ühes meie veebi programmidele. Nii et ma pean seda index.html hunnik HTML. Ja asi, mida ma tahan, et sa keskenduda on see script tag. Ja seda ütleb, OK, ma jooksen mõned JavaScript ja siin on koht, kus ta elab. See elab hello.js. Ja väga palju nagu CSS, võiksime pane JavaScript jooksul HTML. Miks võib tahame eraldi välja? Jah. Sihtrühm: Lihtsam kirjutada? HANNAH Blumberg: Jah. See on lihtsam kasutada üle erinevaid veebilehti. See hoiab asju puhtamaks. See on lihtsalt hea tava. Fantastiline. Hea vastus. Nii hea, nii et see läheb olla meie index.html. Ja siis siin on meie tilluke JavaScript faili. Ja kõik see ütleb, on hoiatus Tere, maailm. Mis juhtub on see, kui see leht renders-- nii et kui te lähete ükskõik kodulehel see on-- kõik, mis juhtub on see läheb öelda, OK, ma olen läheb käivitada JavaScripti koodi. Ja see JavaScripti koodi lihtsalt ütleb alert Hello, world. Nii et ma lähen seda sõbralik väike pop-up. Cool? See on selline nagu meie kõige esimene JavaScript programm, meie Hello, world. Vaatame natuke rohkem sellest, mida süntaks JavaScript välja näeb. Ja just, olgem võrrelda seda C ja PHP, mida me oleme näinud. In JavaScript, me ei kavatse olla var nimi muutuja ja seejärel selle tegelikku väärtust. Ja me ei täpsusta tüüp, lihtsalt nagu PHP, kuid väga erinevalt C. Nii näiteks, kui sooviksime Väärtuse salvestamiseks 50, C, me oleks võinud öelda, hey, C, tahan täisarv, Ma kutsun seda i ja selle väärtus on 50. PHP, see on natuke lihtsam. Me ütleme, hei, ma tahan muutuja nimetatakse i ja selle väärtus on 50. Väga Samamoodi JavaScript, me ütlevad hei, ma tahan muutuja nimega i, selle väärtus on 50. Iga järgnev aeg, et ma kasutan i, ma ei vaja kirjutada var. See on lihtsalt i sealt edasi. Samamoodi, C, kus kui me ütleme, int i, me lihtsalt kasutada i. Cool? Hästi. Liikumine on silmad, Õnneks need peaaegu otsida exactly-- Ma arvan, et nad täpselt sama suur, nagu silmad hakkavad nägema midagi C, kus teie jaoks silmus läheb on kolm osa- käivituse seisund ja ajakohastatud. Aega loop, tundub täpselt sama. Me lihtsalt anda talle seisukorras. Ja teha, kui silmus, jälle täpselt sama. Anname see tingimus. Oletame, et ma tahtsin korrata over-- Tahtsin teha midagi viis korda. In C, võiksime kirjutada init'it i võrdub 0. i on väiksem kui 5, i ++. Ainus erinevus, JavaScript, selle asemel, et öelda int i võrdub 0, ütleme var i võrdub 0. Ilus. See on ainus erinevus. Kõik küsimused mis tahes selle? Jah. Sihtrühm: Nii PHP, see on sama asi, välja arvatud, kuid nagu muutuja? Või oli see, et var näiteks? HANNAH Blumberg: Jah. Nii PHP, see läheb olla dollari märk. Nii see läheb $ i võrdsete 0, $ i on väiksem kui 5, $ i ++. Hea küsimus. Nüüd räägime funktsiooni deklaratsioonid. In C, kui me kuulutatud funktsioon, andsime talle nime ja andsime mõned parameetrid. Ja alguses, me kirjutasime tüübist. In JavaScript, kõik me pead tegema, on kirjutada märksõna funktsioon, mis ütleb, hei, JavaScript, Ma olen umbes määratleda funktsiooni. Sel juhul on nimi summa. Ja see võtab kaks argumenti, x ja y. Pange tähele, et me ei hooli tüüpide kohta x ja y. Ja nagu C, meil Selle märksõna tagastamise, nii et me saame teha midagi nagu tagasipöördumine x ja y. Ja nüüd, kui me oleme kirjutanud selle esimese funktsiooni, saame kasutada summa kuskil. Ja see on täiesti korras. Üks väga lahe asi JavaScript et on väga erinevalt C on see, et funktsioone saab kohelda nagu väärtusi. Nii saame teha midagi siin kus ma arvan, et ma katta see up-- Ma kaetud var summa part-- ja me lihtsalt ütles funktsiooni xy võrdub tagastamise x pluss y. See on see, mida oleks nn anonüümne funktsioon. See funktsioon ilma nimeta. Käesolev ütleb funktsiooni summa, blah, blah, blah, see oleks lihtsalt öelda funktsioon. Aga nüüd, kuigi mul on see anonüümne funktsioon, et funktsioon on tõesti ainult raha. Me võime ravida nagu väärtus. Nii saame salvestada see muutuja sama kuidas me võiksime hoida 50 muutujana. Nii võime öelda, OK, ma tahan varieeruv, seda nimetatakse summa, ja see on see funktsioon. Nii et need kaks asja on tegelikult kavatseb teha täpselt sama asi, aga süntaks on veidi erinev ja omamoodi lõbus märkus. Jah. Sihtrühm: Nii võid helistada funktsiooni, mis oli anonüümne, öeldes, summa sulgudes 2, 5? HANNAH Blumberg: Jah. Teil on võimalik helistada anonüümseid funktsiooni samamoodi. Sa peaks summa (2, 5) ;. See oleks täiesti korras. Kui ma ei teinud var summa võrdub funktsiooni, kui ma lihtsalt kustutatakse see-- Ma tean, et see minu poolt kuid teeselda ma välja see-- siis et funktsioon on selline lihtsalt läinud. Sa ei saa kunagi seda uuesti kasutada, sest Te ei ole nimi. On raske viitab millelegi sa ei tea, mida nimetame. Hea küsimus. Jah. Sihtrühm: Kas te viite summa mujal väärtusega x pluss y? HANNAH Blumberg: Kas sa viide summa mujal väärtusega x pluss y? Ma pole päris kindel, mida sa mõtled. Sihtrühm: Nii oma mineviku semi-anonüümsed funktsioon on summa on võrdne selle anonüümne funktsioon, nii et summa on Nüüd muutuja, mis sa can-- HANNAH Blumberg: Right. Nii summa on varieeruv, aga see on actually-- nii summa on muutuva kelle väärtus on funktsioon. Seega on funktsioon, mis on selline imelik asi wrap pea ümber sest me oleme mänginud C ja sa ei saa seda teha, et C. Aga nüüd me nimetame lööme kokku Samamoodi võiks nimetada summa siin. Sihtrühm: OK. HANNAH Blumberg: Jah. Hea küsimus. Jah. Sihtrühm: Nii et me ei kasuta prototüübid PHP või JavaScripti? HANNAH Blumberg: Ei, me ei pea kasutama prototüüpe, eriti JavaScript. Nii et üks halb tava asi, mis ma olen ütled, et sa ei peaks tegema on sa ei pea kirjutama var i = 50. Sa võid lihtsalt hakkan i = 50. Ja oleks lihtsalt i globaalne muutuja. See on väga halb tava kunagi öelda selgesõnaliselt var i, kuid see on midagi, mida saate teha. Tõlk ei ole läheb kisa teile. JavaScript on päris sarnased sa võid teha, mida tahad. Oi vabandust. Seal on kaks. Oranžiga püksid. Lase käia. Sihtrühm: Ei, sa lähed esimest. Sihtrühm: Ei, ma lihtsalt ütlen Mul ei olnud mu kätt üles. OKEI. Nii et kui sa olid kõne Esimesel korral nüüd Kokkuvõttes, Me nimetame seda samamoodi, x, y, nagu iga kord? HANNAH Blumberg: Jah. Nii et need kaks sisuliselt teha sama asja. Sihtrühm: Ja mis see eelis kasutades üht või teist? HANNAH Blumberg: No ära kasutades üht või teist. Ma lihtsalt tahtsin näidata teile kaks erinevaid tükke süntaks. Palju kordi, kus anonüümne funktsioonid on küll eesmärk on, kui argument teise funktsiooni peaks olema funktsioon. Ja me näeme, et lihtsalt teise Ajax. Nii et kui see ei ole mingit mõtet, pange see tagasi oma peaga. See, kui anonüümne funktsioon võib olla kasulik sest see ei ole tõesti väärt andes talle nime, sest me oleme lihtsalt kavatsete kasutada seda üks kord. Jah. Sihtrühm: Kui x ja y muutus hiljem kohta, mis kokkuvõttes muuta ka? HANNAH Blumberg: Kui x ja y muutus hiljem, siis Kokkuvõttes muuta ka? Nii et see on tegelikult olen arvan, midagi, mis on, Jällegi, see lihtsalt tundub väga erinev C. See ei ole väärtust. See ei ole 5. See on lihtsalt funktsioon ise. Nii kiiresti kui sa annad selle parameetrid siis sa tegelikult arvutada väärtus. MARIA ZLATKOVA: Ja siis võite helistada funktsiooni ja seda kasutada, et saada mingi väärtus. HANNAH Blumberg: Right. Täpselt. Jah. Sihtrühm: Nii et kui sa lihtsalt pange see muutuja, nagu var x võrdub summaga kaks values-- HANNAH Blumberg: Jah. Nii et sa võiksid lihtsalt teha var summa võrdub summa kaks väärtust. Jah. Muid küsimusi? Jah. Sihtrühm: Aga kas see segadusse summa ja summa? Nagu siis, kui te helistate oma muutuva summaga, te helistate funktsiooni summa? HANNAH Blumberg: Mm. Mm. Kui sa tegid midagi nagu, summa võrdub summa 2, 5? Sihtrühm: Jah. HANNAH Blumberg: Ma arvan, et oleks kirjutada väärtus summa. Nii veel üks huvitav asi JavaScript on see, et ühe muutuja võib võtta kamp erinevat tüüpi. Bad praktikas. Sa ei tohiks midagi teha nagu mida sa just ütlesid. Aga C, kui i on seatud võrdne täisarv, me teame, et see on kunagi hakkab muutuma string. See ei ole juhtum JavaScript. Jah, hea küsimus. Midagi veel? Hästi. Teeme kõik õigel ajal. Hoiame läheb. Hästi. Kui me vaatame massiivi JavaScript, siin Kiire näiteks massiivi stringe. Ja massiivid võib kasvada dünaamiliselt. Nad ei ole fikseeritud suurus samamoodi et nad teevad C. Me ei pääse elemente vaid nurksulgudes. See näeb välja palju nagu PHP ja palju nagu C, kus me saame öelda, sel juhul, kui ma tahtsin sõna JavaScript, oleksin ei Arr nurksulgudes oleva 0, 1, 2. Ja siis, kui sa mäletad C, kui me tahtsin saada pikkus array, see oli tõesti tüütu. Aga JavaScript, super lihtne. Kõik me teeme, LENGTH. Annab see pikkused. Nii see on. Sihtrühm: See on lihtne. HANNAH Blumberg: Jah, teeb su elu palju lihtsamaks. OK, object-- ole olemas. Objektid JavaScript tunne palju nagu struktuurideks C ja assotsiatiivne massiivid PHP. Mida me oleme näinud Palju on JSON, mis tähistab JavaScript Object Märge. Ja see on põhimõtteliselt nii, struktureerimise meie andmeid. Vaatame näiteks, ilmselt kõige lihtsam. Nii et siin on näide objekti mis talletab klassi, CS50. Ja kui ma ütlen klassi, ma mõtlen muidugi ei like-- jaa, muidugi, CS50. Ja te näete, et kõik objekti läheb sisalduva lokkis traksid. Ja hakkame siduda väljanimede või võtmed koos erinevaid väärtusi. Nii saab alustada näha, kuidas selline tundub assotsiatiivne massiiv PHP. Nii et me läheme siduda valdkonnas või võti nimi, muidugi, nööri, CS50. Me läheme on õpetaja. Me läheme on TF. Me läheme on mitmeid psets ja me ei kavatse on salvestatud. Ja üks lahe asi on tähele panna kõiki need asjad on erinevad, ja see on täiesti korras. See on hea objektile, tegelikult see on ilmselt oodata objekti on kombinatsioon stringid ja numbrite tõeväärtused ja massiivid ja mis iganes sa võiksid tahad olla sees oma objekti. Ja pange tähele, et need hakkavad olema nimed või võtmed, ja siis me lihtsalt seadke see võrdne veidi jämesooles. Sihtrühm: Mida täpselt JSON tähendab? HANNAH Blumberg: Mis täpselt ei JSON tähendab? JSON lihtsalt seisab JavaScript Object Märge. See on lihtsalt viis formaati. Jah. See viis vormingu meie andmeid. In C, see on struktuurideks. PHP, see on assotsiatiivne massiivid. In JavaScript, meil objekte. Sihtrühm: Nii CS50 on objekt? HANNAH Blumberg: CS50 on objekti sel juhul. Nüüd, kuidas me tegelikult juurdepääs neis valdkondades või muuta neis valdkondades. Oletame näiteks, et me otsustasime, et sa tahtsid ühe vähem pset see semester. Selle asemel üheksa, me oleme lihtsalt läheb aega kaheksa. Kuidas me seda muuta? Oh, valesti. On kaks võimalust, et me saame seda teha. Number üks on koos dot märke ja number kaks on koos nurksulg märke. Nii näiteks, kui ma tahtis muuta või juurdepääsu psets valdkonnas meie CS50 objekti, mida ma teeksin on CS50.psets, nii objekti nimetuse dot nimi valdkonnas või võti. Väga sarnaselt, see on täpselt samaväärne teha CS50 ja seejärel kandiliste sulgudega, psets. Cool? Jah. Sihtrühm: Nii on JSON tehniliselt JavaScript ikka, kuigi on psets me eraldi välja [kuuldamatu]? HANNAH Blumberg: Muidugi. Seega on küsimus selles, kas JavaScript ja JSON samaväärne? Nii JSON on märke, põhiliselt nii, et me kirjutame välja Objekti JavaScript. Nii nad ei ole täpselt sama. Ütleksin JavaScript ei on objekte JavaScript. JSON võtab neid objekte ja prindib ja kuvab need või salvestab need kena viis. Nii JSON ei ole programmeerimine keelt nii, et JavaScript on. See on lihtsalt märke Meie objektid JavaScript. Jah. Sihtrühm: Nii, mida täpselt [Kuuldamatu] lõpetada? HANNAH Blumberg: Muidugi. Nii see tegelikult ei tee midagi. See on lihtsalt viis pääseda. Ütleme, et me tahame muuta arvu probleem komplekti üheksalt kaheksale. Mida me teeme, on midagi nagu CS50.psets = 8 ;. Jah, suur küsimus. See on lihtsalt, et näidata teile süntaks. Tegelikult ei tee midagi kasulikku. Kas küsimusi on? Liikumine paremale mööda. Nii vaatame kiire näide sellest, kuidas JavaScript töötab, sest ma ütlesin, et see teeb kõiki neid asju, cool ja võimaldab meil muuta veebilehti. Olgem tegelikult näen seda tegevust. Nii, et võta näiteks see HTML faili. Ja asi, mida ma tahan, et sa keskenduda on see silt on, mis on nupp, id search_button. See on lihtsalt lehel. Nüüd vaatame, mis saame tegelikult teha. Noh, oletame, kui klõpsate seda nuppu, tahame teha alert-- klõpsasite nuppu. Vaatame, kuidas me saame seda teha. Nii window.onload-- see ei ole midagi et oled näinud klassis, seega ei vaja seda teada viktoriini. Aga see põhimõtteliselt ütleb, OK, kõne seda funktsiooni, kui aken koormusi. Nii et see lihtsalt selline setup koodi. Ära muretse nii palju, et. Mida ma tahan, et sa keskenduda on siin. Me ütleme var searchButton võrdub document.getElementById search_button. Nii nagu te võite arvata, Mis see on öeldud, OK, mine leia element ID search_button. Ja nüüd on meil see tegelik element ja ma olen läheb seda säilitada muutuja searchButton. Ja nüüd me saame tegelikult kasutada, et element ja seda muuta, või juurdepääsu oma väärtusi, asjad niimoodi. Me võime tegelikult hakata suhelda veebilehele. Nii et siin ma ütlen, OK, nüüd, et mul on et nupp, kui see on klõpsatud, nimetame seda anonüümne funktsioon. Nii et see on koht, kus anonüümne funktsioonid osutuda kasulikuks. Ja mida see funktsioon teeb? Noh, see lihtsalt nõuab seda alarmi ja ta ütleb, klõpsasite nuppu Otsi. Mis juhtub, kui ma lähen sinna, kus Selle HTML elab ja ma vajutan nuppu, Ma saan väljamõeldud vähe alert mis ütleb, et sa klõpsad nupule. Nii asjad keskenduda siin-- document.getElementById saab konkreetse HTML element ID-ga. Ja nüüd saame Mis juhtub, kui et konkreetne element on klõpsatud. Sihtrühm: Meil ​​on panna kõik, et? HANNAH Blumberg: Vabandust? Sihtrühm: Kas me peame füüsiliselt koodi kõike seda? HANNAH Blumberg: Kas me peame füüsiliselt koodi kõike seda? Jah. Kas see ei ole mingi tüütu? See on palju koodi. Sihtrühm: Sa võiksid importida midagi. HANNAH Blumberg: Right. Me võiksime kasutada midagi. Ja particular-- oh, see on mulle öelda, ma pean õpetama osa. Eelkõige olgem kasutada raamatukogu jQuery, sest see oli tõesti pikk ja väga tüütu ja ma tahan, et oleks võimalik seda lihtsustada ja teha seda lühem ja lihtsam kirjutada. Nii jQuery on JavaScript raamatukogu. Nii JavaScript on programmeerimine keelt; jQuery on raamatukogu. Ja see teeb hunnik asju lihtsamaks. See muudab muutuv ja läheb üle HTML dokumendi palju lihtsam. See muudab käsitsemise sündmuste lihtsam. See muudab animatsiooni lihtsamaks ja see teeb Ajax lihtsam. Nii saab hüpata kaks need asjad kohe. Vabandage. Enne teeme, mõned põhilised süntaks. See on see, mida enamik kõnesid jQuery raamatukogu nägema. Me kasutame seda dollari sign-- mingit seost märk PHP, lihtsalt inconvenient-- nime valija, dot, ja seejärel hagi. Vaatame mõned konkreetseid näiteid sellest. Nii on see tegelikult sama kood ürituse slide. Nii et see pikk, kole asi muutub see palju ilusam, väiksem asi. Nii proovime jaotada see. See ütleb, OK, jQuery-- selle dollar sign-- jQuery, leia mind aknast. Nii see on valija. Kui see laeb, nimetame seda funktsiooni. Nii et see kõik sees. OKEI. Siiamaani on kõik korras? Hästi. Nüüd, jQuery, leida mulle Asi ID search_button. Ja mis see on klõpsatud, nimetame seda funktsiooni. Ja siis see funktsioon on täpselt sama. Lihtsalt teha natuke tähelepanelik, klõpsasite nuppu Otsi. Nii et see on väga tore. On tõesti kondenseerub ja lihtsustab meie koodi. Kuidas ma tean, et see on ID search_button ja ei meeldi klassi search_button? Sihtrühm: Hashtag? HANNAH Blumberg: Jah. See hash sümbol, see on nagu CSS. Seega pidage meeles, CSS, kui me tahtsin valida midagi, mida ID, me kasutasime naelamärk. Ja kui me tahame, et valida midagi klassi, me kasutame dot. Hea. On loogiline? Nii jQuery peaks lihtsalt meie elu lihtsamaks. Jah. Sihtrühm: Nii et ma olen natuke segaduses kuidas anonüümne funktsioon töötab. Kas oskad nimetada seda anonymouse funktsioon, toimida? Kuidas seda nimetatakse? HANNAH Blumberg: Muidugi. Nii funktsioon on lihtsalt märksõna, et ütleb, ma olen umbes määratleda funktsiooni. Sihtrühm: Oh, OK. HANNAH Blumberg: OK? Ja siis võtame seda kui argument mina-- võtame selle sisemise one-- et click funktsiooni. Nii et jah, nii et funktsiooni, see anonüümne funktsioon, muutub tegelik argument. Seega pidage meeles JavaScript, me ravib toimib väärtusi. Sihtrühm: Oh, OK. HANNAH Blumberg: Jah. Mulle meeldib, et "oh." Nice. Muud küsimused? Time? MARIA ZLATKOVA: Hea. Väga hea. HANNAH Blumberg: Awesome. Natuke kiiret kasulik jQuery. Ma ei lähe kaudu kõiki neid. Need slaidid on up online natuke hiljem, siis võite vaadata see natuke hiljem. Aga põhimõtteliselt, üldine muster hoiab, kus me ütleme, OK, hei, jQuery, siin on minu valija ja siis siin on hagi. Ja seda saab teha asju Juurdepääs väärtus vorm, juurdepääsu teatud HTML, kontrolli, mis juhtub siis, kui kasutaja esitab vormi, asjad niimoodi. Jah. Sihtrühm: Nii et eksam, me ei kavatse vaja teada üsna palju alates jQuery dokumentatsiooni. Nii, arvestades, et me kopeeri / kleebi jQuery dokumentatsiooni meie petma lehte, Kus joont? Nagu mitu me vaja teada? HANNAH Blumberg: Hea küsimus. Küsimus on selles, sisuliselt, arvestades, et sa ei pääse jQuery dokumentatsioon katse ajal, kui palju tuleb teil tean? Me ei oota, et sa tuleksid koos mõne juhusliku funktsiooni et ootame teid Google. Asjad, mis on aus mäng on Oleksin öelda lihtsalt selline üldine süntaks, peab saama valida, mida ID ja poolt class-- nii nagu CSS. Ja siis tegelik funktsioonid iseenda, me tõenäoliselt öelda. Jah. Sihtrühm: Nii et kui valite klassi tähendaks dot. HANNAH Blumberg: Jah, täpselt. Väga hea. Kui valite klassi, see saab tuleb dot asemel naelamärk. Jah. Sihtrühm: Kas sa minna üle erinevust vahel valides ID ja klass? HANNAH Blumberg: Muidugi. Erinevus valimine ID ja valides klassi. Nii nagu Maria ütles natuke varem, siis saab olla vaid üks HTML element etteantud ID, samas klassis, see võimaldab meil grupp kamp erinevate elementide kokku nii et asjad, mis on seotud, kuid mitte täpselt sama. Kas see vastus küsimusele? Fantastiline. Jah. Sihtrühm: Mida teha, kui sul on mitu asju, mis on samas klassis? HANNAH Blumberg: Mis juhtub Kui teil on mitu asja, on samas klassis? Nii näiteks, kui me oleme lihtsalt puhta JavaScript, me teeks midagi document.getElementsByClass. Ja mis siis, et tegelikult teeb on tagastab massiivi elemente. Ja sa pead kas Käi neid või leida, mida soovid. Ta ei kavatse anda Teile ühe elemendi. See läheb teile massiivi elemente. Hea küsimus. Midagi veel? Fantastiline. Nii et ma arvan, et kui te olete juba tuttav mis tahes jQuery nägime pset, siis peaks olema hea minna. Küsimus? Oh ei. Ma tõesti õpetada. Lõdvestuge. Seda saad trahvi. Ma saan seal. Räägime Ajax. Nii Ajax läheb a-- hästi, Alustame mida see tähendab. See on akronüüm. Ta seisab Asynchronous JavaScript ja XML. Ja XML on põhimõtteliselt saab olema [Kuuldamatu] reageerimisel tüübi meie andmed. Aga me ei ole tegelikult kasutatakse XML. Selle asemel, me lihtsalt kasutada JSON. Ühesõnaga, see on mingi data-- asünkroonne JavaScript ja andmeid, sel juhul, JSON. Ja meie eesmärk, kui me rääkisime natuke varem, on, et oleks võimalik teha taotluse, on see taotlus teha Oma asi tausta, kuid jätkata mida iganes me kavatsevad teha. Ja siis, kui see teave on valmis, siis me lisada see. Vaatame, mida see tegelikult välja näeb. Ja see, siis peaks olema natuke tuttav alates pset8, üks just lahkus. Nii et siin on kehtiv jQuery funktsiooni, et me võiksime tahad teada about-- see dollari märk. Nii et see ütleb jQuery funktsiooni, .getJson. Ja mida see funktsioon ei ole see võtab URL ja mõned parameters-- nii et ma arvan, et juhul, of pset8, see oli nagu, URL oli articles.php ja parameetrid ei lähe = mõned sihtnumber. Ja ta ütleb, OK, teeb taotluse Selle URL antud parameetrite järgi. Ja see lihtsalt juhtub. Kui ta lõpetab, on kas läheb edukalt või siis läheb suuda. Nii et see on samaväärne kõne Rob ja küsida temalt midagi. Ja siis, kui ta helistab, et ta on kas ütlen ma olen teinud või ma ei suutnud. Nii juhul, kui sa oled teinud, sa ütled, OK, ma olen teinud. Ja siis nimetame seda funktsiooni. Sel juhul on see saab olema funktsioon, mis võtab teatud informatsiooni. Üks me tavaliselt hoolivad on andmeid, andmeid, et me tegelikult tagasi tõttu helistades .getJSON. Ja saab sellega midagi teha. Nii puhul pset8, Kuvasime seda nimekirjakeskkonnaks. Fail saab olema funktsioon mida nimetatakse kui taotlus ei mingil põhjusel. Ja kui tegemist on pset8, me lihtsalt console.log ta. Küsimusi on? Jah. Sihtrühm: Kas me lihtsalt kasutada funktsiooni teeta asemel funktsiooni, textStatus, jqHXR. HANNAH Blumberg: Muidugi. Nii et jah, ma arvan, et pset, me just nägin funktsiooni andmeid. Nii et see on lihtsalt the-- jah, OK. See, mida me nägime pset. See on täiesti korras. Need on vaid siis, kui sa tahtsid tõmmake Lisainformatsiooni Need on asjad, mis võid saada alates .getJSON. Hea küsimus. Midagi veel? Jah. Sihtrühm: Nii .getJSON on Ajax? HANNAH Blumberg: OK. Nii et see on selline keeruline osa. See on jQuery funktsiooni, mis võimaldab et sa asünkroonne kõned. Ja need, asünkroonne kõned, mis on mida me oleme viidates nii Ajax. Jah. See võttis mul väga palju aega tõmba peale, kui olin üliõpilane. Sihtrühm: Kas oskate öelda, et jälle? HANNAH Blumberg: Jah. Kas ma saan öelda, et jälle? See .getJSON funktsiooni, see on jQuery funktsiooni. Ja see läheb teha asünkroonne kõne. Ja need asünkroonne kõned oleme on silmas neid nagu Ajax. Muid küsimusi? Meil on vaid paar minutit aega. Ja Maria läheb pakkima turvalisuse ja siis me läheme tuleb lihtsalt teha. MARIA ZLATKOVA: Awesome, OK. Nii et see on-- lihtsalt võtta paar sekundit vaadata üle selle. Ja see ei ole midagi tõesti suur. Ja kas keegi mulle öelda, miks? Mis toimub suva ja võib võiksid potentsiaalselt põhjustada midagi halba, ja mida seda nimetatakse? Jah. Sihtrühm: Kui argument, mis on möödunud aastal rohkem kui 12 tähemärki, see võiks voolata. MARIA ZLATKOVA: Right. Perfect. Mis on selle nimi? Sa lihtsalt mainisin seda. Sihtrühm: buffer overflow. MARIA ZLATKOVA: Jah, buffer overflow. Nii et see on midagi, mida me vaadake kui buffer overflow. Ja me näeme, et sees suva, oleme määratud meie puhver, c, mõõtmetega 12. Kuid peamine, meil ei ole vaadake kuidagi üldse kas argv1-- et oli teine ​​argument. Me ei kontrolli, kas suurus on asjakohane. Nii et kui meil oli eriti pahatahtlik kasutaja kes panna mõned argument, et oli enam kui 12 ja seejärel potentsiaalselt piiridest, mis argument, olid mõned käivitatava koodi et ta üritas teha midagi halba sellega; siis see, mis juhtub, oleks alistada tagastamise aadress suva funktsiooni, põhjustades funktsiooni millal tagasi täita selle koodi. Ja siis halbu asju võib juhtuda. Kas see mõtet kõigile? Ja kuidas me saame kaitsta seda? Kõik soovitused? Põhimõtteliselt sees potentsiaalselt suva, kuidas saame veenduge et see ei saa juhtuda? Sihtrühm: Kui suurus 12 on ületatud, siis oleks eraldada täiendavaid mälu? MARIA ZLATKOVA: Soovituslikud on eraldada lisamälu suuruse ületanud. Tegelikult me ​​saame teha midagi Palju lihtsam kui hästi. Me võime lihtsalt saada string pikkusega argument, mis on sisestatud, kontrollida, kas see on vähem kui või võrdne 12-- mis on see, mida me tahame seda olla, sest me ei taha see ületanud meie puhvri. Ja siis, kui seda ei ole, me saab tööd argument. Ja siis, kui see on olemas, me tegelikult tahame to Yello potentsiaalselt kasutaja. Aga see, kuidas me seda teha. Jah. Sihtrühm: Kas te saaksite selgitada memcpy reaalne kiire? MARIA ZLATKOVA: Oh, vabandust. Jah. Memcpy võtab iganes on-- vabandust, OK. Memcpy võtab iganes on baarides, mis iganes on möödas peale suva kui käsurea argument. Nii see läheb võtma argv1. Argv1 nimetatakse baar siin. Nii see läheb võtma bar ja see läheb kopeerige see c. Sihtrühm: OK. MARIA ZLATKOVA: Ja see läheb copy-- kolmas argument lihtsalt viitab kui palju see läheb kopeerida c. Sihtrühm: Ah. Nii et see kellegi kopeerimine see kõik siis. MARIA ZLATKOVA: Jah, see kopeerides kõik. Yep. Esiteks, me veenduge, baar ei ole võrdne null, sest see on osuti. Siis saame stringi pikkus baar. Oleme veendunud, et see on väiksem või võrdne 12. Ja siis, kuna me oleme kindlaks teinud, saame tegelikult memcpy ja olla kindel, et see on OK. Kas küsimusi on? Hea. Mul on kaks õige või vale küsimusi. Kas keegi mulle öelda kohe kui need on õiged või valed? Jah, see on vale. Täpselt. Mõlemad on vale. Nii kasutades ühte parooli ei ole kunagi tõesti hea mõte sest kui keegi teab Parooli nad saavad lihtsalt kasutada kõiki oma teisi kontosid. Ja siis ikoonid ei tee midagi turvalisuse tagamiseks. Peaksime tavaliselt otsida HTTPS asemel HTTP ja URL. Ja mõned muud tüüpi rünnakuid, et oleme mainitud, et David on mainitud Loeng, SQL süst rünnakud. Me juba nägime, et kui me don't-- CS50 päringu funktsiooni tagab, et SQL süst rünnakud ei saaks tekkida. Aga kui me ei kasuta CS50, tsitaat, lõppeb "päringu," oleks meil veenduda, et kasutaja sisend ei ole tegelikult mõned SQL päring, mis paneb kõik meie toidulaual olema langenud või midagi halba juhtub meie andmebaasi. Seansiärandamise on Teist tüüpi rünnak mis juhtub, kui halbu inimene kasutab mõne ohvri istungil ID pääseda sisselogimise andmeid. Nii väga triviaalne näide, mis on nagu siis, kui meil on avalikku arvutit, siis halb inimene logib ja siis neil küpsised, mis on salvestatud. Ja küpsiseid ei muutu istungil. Siis oleme ohvri minna ja siis logige kodulehel. Küpsised ei muutu teatud istungil. Ja siis ohver logib veebilehel ning seejärel lahkub. Ja siis isik, kes läheb tagasi Seejärel saab endiselt kasutada oma sessiooni ID juurdepääsu oma andmed. Nii et üks näide kuidas see võiks juhtuda. Ja siis ma ei muretse liiga palju konkreetsete koodi või midagi niimoodi, mis võiks põhjustada seda, kuid võttes mingi idee, mida muutujate kaasatud sellesse on. Ja siis manipuleerides päise kaudu andmed on teist tüüpi rünnak mis on David on rääkinud. Ja see lihtsalt viitab Mis võib juhtuda, kui vastus, HTTP Vastuseks sees meie päise kaudu ei desinfitseeritakse korralikult. Ja ükskõik fields-- näiteks kui keegi kirjutab üks päise kaudu väärtused sisaldama midagi enamat kui mida nad peaksid contain-- ja tegelikult sisaldada näiteks 200 OK staatus koodi, siis nad võiks teha pahatahtliku asju, kui nad ei peaks. Aga ma ei muretse liiga palju konkreetse koodi mis võivad põhjustada seda, justkui mõista kõrgetasemelise asju. Ma arvan, et see on kõik et meil katta. Amazing. Igaüks on mingeid küsimusi igal asju, mida me katta? Jah. Sihtrühm: Nii et üks omamoodi rohkem logistilist küsimus. Kas sisu keskendunud peamiselt asju pärast viktoriini 1? MARIA ZLATKOVA: Nii Küsimus on, kas sisu keskenduti peamiselt asju pärast viktoriini 1? Nii keskendutakse pärast Viktoriin 1, välja arvatud et me peame keskenduma asju pset5 ja palju andmestruktuuride et meil kaetud. Ja me ei saa öelda, et me ei saa eirata midagi enne et kuna see põhineb ka seda. Nii keskenduda, et pluss pset5 materjal nagu ka ahelloendid, korstnad, järjekorrad, ja kõike et Hannah läks üle. HANNAH Blumberg: Right. Jah, me läksime üle kogu C kraami Alguses väga kiiresti. Aga veenduge, et vaadata seda. Mine tagasi ja vaadata viktoriini 0 vaadata. Paar rohkem logistilist märkmeid, lihtsalt samas on meil oma tähelepanu. Me ei kavatse on tööaega nii esmaspäeval ja teisipäeva õhtul. Nad lähed olema MD 119. See on kõik veebilehel, et kui te ei kuule seda, ei muretse. MARIA ZLATKOVA: 8:30-11:00. HANNAH Blumberg: Jah, 8:30-11:00. Me oleme seal. Me oleme seal, et vastata küsimustele. See on päris chill ja lõbus. Te saate esitada küsimusi et teil on viktoriini 1. Ja viktoriini 1 on Kolmapäev, et õnne. Kui teil on küsimusi, võibolla Tule räägi meile siin üks-ühele. Cool. Suur tänu. MARIA ZLATKOVA: Tänu nii palju, poisid. Sihtrühm: Jee. [APPLAUSE]