HANNAH Blumberg: Ahoj všetci. Chystáme sa začať len pár minút čoskoro pretože máme veľa materiálu prejsť. Ja som Hannah. Som TF. Maria sa bude spojenie nám za pár minút. Sekcia Učí tesne pred. Učím sekcie právo po, takže ideme aby ju udržali na hodinu a pol. Tak ako uvidíte tu, máme dosť niekoľko tém musíme dostať cez, takže budeme ísť trochu rýchlo. Ale ak sa v ktoromkoľvek bode povieme niečo príliš rýchlo, alebo nechcete pochopiť, neváhajte a prerušiť s otázkami. Chceme byť schopní, aby sa tento preskúma relácii ako užitočné pre všetkých z vás, ako je to možné. Úžasné. Takže poďme skočiť priamo v s niektoré témy, že sme vlastne veľmi, veľmi stručne sa vzťahuje na kvíz 0 v prieskumnom zasadnutí kvíz 0. Takže počínajúc spojových zoznamov. Takže len uistite sa, že máte nejaké základné znalosti o spojových zoznamov a sú pohodlne robiť niektoré zo základných operácií. Takže len preskúmať, spojený zoznamy sú lepšie ako polia pretože oni môžu rásť dynamicky. Takže máme tú obrovskú výhodu. Videli sme je použitý V stoly mriežky, kedy sme neviem presne, koľko čo budeme chcieť vložiť do našej dátovej štruktúry. Bohužiaľ, máme kusy prepojený zoznam všade pamäť, takže nemusí byť nutne schopný robiť konštantnom čase prístup akéhokoľvek prvku v Google zoznamu. Aby bolo možné nájsť Najmä prvok, my musieť opakovať všetky cesta od začiatku. Takže majte na pamäti, že väčšina Základné operácie sú omega kyseliny 1. Takže vložka je jednoducho bude trvať 1. Zmazať bude trvať n, pretože sme musieť ísť nájsť ju zo zoznamu. A hľadanie môže trvať, v najhoršom prípade, n. Nemôžeme urobiť niečo ako binárne vyhľadávanie na Google zoznamu pretože nemôžeme len náhodne skok do stredu. Super. Úžasné. Trochu stohov. To opäť prišiel na kvíz 0, takže vás by mali byť super pohodlné s ním. Ale pre komíny, žiadame vás pamätať stoh zásobníkov. A to bude prvý, posledný von. Tak sme stack veci v zásobníku, a potom ak sa snažíme, aby sa niečo, off-- ktorý nazývame praskanie off stack-- sme prišli z vrcholu. A ak chceme dať niečo v stohu, hovoríme to tlačiť. Takže je vždy bude vyrastať z dna ako stĺpca podložiek. Úžasné. Videli sme komíny implementovaná s oboma prepojené zoznamy a polia. Ak ste sa vykonáva s poli, chcete aby sa ubezpečil, sledovať, ako veľkosť a kapacita. Takže veľkosť bude aktuálna rad vecí vo vašom stacku, vzhľadom k tomu, kapacita je celkový počet vecí, ktoré môžete uložiť do vášho stacku. Super. Veľmi podobne, máme fronty. V tomto prípade, namiesto toho premýšľať o stoh priehradiek, myslím, že na riadku. To bude prvý dovnútra, prvý von. Takže ak ste čakajú, až pre niečo v obchode, dúfame, že sa osoba po prvýkrát v linka bude musí pomôcť ako prvý. Namiesto toho, hovorí tlačiť a pop ako my na stack, my len povedať čakací a Dequeue. A opäť, ak ste sa vykonáva to s radom, musíme sledovať nie iba veľkosť a kapacity, ale aj hlava, ktorá bude predná časť našej fronty. Super. Akékoľvek otázky týkajúce sa niečo z toho? Úžasné. Pohybujúce sa vpravo pozdĺž. OK, hashovacie tabuľky. Tu je miesto, kde to začína naozaj zaujímavé. Takže hash tabuľka je jedna implementácia asociatívneho poľa. Takže v podstate, čo sa stalo je máme všetky tohto vstupu, a dáme ju do hash funkcia, ktorá hovorí, OK, to je miesto, kde v hash tabuľka patrí. Takže najjednoduchšie hashovacie funkcie že sme videli, je len hovorí, OK, predpokladám, že chceme dať reťazca v našom hash tabuľky. A naozaj jednoduchý nápad by mohlo byť povedať, v poriadku, nech to len radiť podľa Prvé písmeno slova. Takže si môžete pozrieť tu, berieme banán, dáme cez transformačné funkcie, a hovorí, hej, že by mal ísť na indexe 1. Takže môžeme v podstate myslieť na hash stôl ako veľa rôznych vedierka. A každá z týchto lopaty sa deje držať hlavu prepojeného zoznamu. A v tomto zozname Google je miesto, kde môžeme skutočne dať rôznych kusov dát. Takže potápanie trochu viac do funkcie hash, tu je Príklad Proste opísal, kde sme len povedať, OK, vezmi prvé písmeno slová a my sme bude triediť do vedier. Tak pravdepodobne, bude tam 26 vedierka, jeden pre každé písmeno abecedy. Prečo nie je to skvelá funkcia hash? Čo je to non-ideál? Jo. Divákov: Idete mať kolízie. HANNAH Blumberg: Jo, presne tak. Budeš mať kolízie. Takže to je jedna vec. A budeme hovoriť o tom, ako môžeme opraviť kolíziám len sekundu. Ďalší problém s týmto najmä hashovacie funkcie je, že náš líši lopaty sa bude docela drasticky rôznych veľkostí. Vieme, že tam je oveľa viac slov, ktoré začínajú ako X, takže budeme mať veľmi nevyvážené vedierka v našej hash tabuľky. Super. Tak jo, poďme sa dostať späť do bod kolízií. Čo budeme robiť, keď tam je kolízia? Máme niekoľko rôznych možností. Takže človek, takže predpokladám, že sa snažíme dať bobule do našej tabuľky hash. A vidíme, oh, chceme dať do indexu 1, ale banán už tam žije. Čo budeme robiť? Máme dve hlavné možnosti. Číslo jedna je, môžeme povedať, v poriadku, tam nie je miesto v indexe 1, ale nech to len hľadať ďalej skrz kým sa nám nepodarí nájsť ďalšie voľné miesto. Takže budeme hovoriť, OK, Povedzme to v mieste 3. To je jedna možnosť. Tomu sa hovorí lineárne sondovania. A druhá možnosť hovorí, OK, dobre, nech to len, aby každý z týchto vedierka byť vedúci spojových zoznamov. A je to v poriadku, ak je toho viac ako jednu vec v vedre. Sme len tak pripojiť ho na prednej strane. Takže tu vidíte, OK, Keď sme vložená bobule, my si vzal banán, druh tlačil ju trochu a hodil bobule tam. A to je taky úplne v pohode. To sa nazýva samostatný reťazenie. Môžete si myslieť na to ako niečo ako rad hláv na spojových zoznamov. Akékoľvek otázky týkajúce hash stoly, hashovacie funkcie? Úžasné. Stromy a pokusov. Takže strom je nejaký druh dátové štruktúry v ktorom tam je nejaký druh hierarchie alebo nejaký druh o poradí na vaše rôzne objekty. A to sa stane výborný jasné, kedy vidíme príklad. A my sme videli pokusy, spolu sa stoly mriežky, v pset5-- ktorý, znovu, naprosto poctivá hra pre tento quiz-- ako ďalšie dát štruktúry, ktoré môžeme ukladať rôzne veci. V prípade slovníka, sme skladovať veľa slov. Takže poďme sa pozrieť na niektoré stromy. Tak to je príklad stromu. Má druh štruktúry, že hierarchickej štruktúre, kde môžete vidieť, že Tento uzol 1 v hornej časti má nejaký hodnosti nad 2 a 3, , Ktoré sú vyššie ako 4, 5 a 6 a 7, ktoré sú nad 8 a 9. Tak to je všetko, myslíme strom, takže si môžete len tak Picture to vo vašej hlave. Teraz máme pár špecializovanejšie stromy. Takže jeden príklad je binárny strom. A binárny strom je, znovu, len bude dátová štruktúra s nejakou hierarchie, ale každý z uzlov môžu mať maximálne dve deti. To je miesto, kde slovo binárne pochádza. Takže toto je príklad binárneho stromu. Tak to je menšie kategórie stromov. Teraz poďme ešte konkrétnejšie a hovoriť o binárny trees-- binárneho vyhľadávania stromy, skôr. Tak tu je nápad nie je len každý uzol má u väčšiny dvoch detí, ale všetky deti do vľavo sa bude menší a všetky deti do právo sa bude väčšia. Takže oznámenia v práve našej binárny strom, je tu medzi číslami žiadny vzťah. Ale v našom binárne vyhľadávanie strom, vidíme, OK, tu je 44. A každé číslo na ľavej strane 44, je menšie a všetko vpravo je väčšia. A to platí u každej úroveň stromu. Tak tu, to je menšia než 22, a to je väčšia ako 22. A to je binárny vyhľadávací strom. Prečo si myslíme, že je to len binárny vyhľadávací strom? Čo algoritmus to vám pripomína? Divákov: Binárne vyhľadávanie. HANNAH Blumberg: Binárne vyhľadávanie. Pretože ak hľadáte Najmä čísla v tejto vetve, na každom mieste, stačí zaklopať off polovica stromu, čo je skvelé. A tak, čo sa deje, aby nám niečo že vyzerá ako binárne vyhľadávanie. Nejaké otázky? Dobre, v pohode. V poriadku, sa snaží. Obľúbený každého z nás. Tak to je príklad, ktorý sme videli veľa v triede. A opäť, je to len ďalší spôsob, ako môžeme ukladať dáta. V prípade slovníka, opäť, je to len bude reťazca. Takže poďme sa pozrieť, čo to vlastne vyzerá ako na mierne nižšej úrovni. Takže poďme sa pozrieť na jednom uzle v trie. A vidíme, OK, tam sa deje byť logická a uzol, ukazovateľ na uzla. A vidíme, že Boolean sa nazýva is_word. Takže v podstate, to je bude zodpovedať na týchto malých trojuholníky, ktoré hovorí, ak ste sem dostali, ste našli kompletné slovo. Vieme, že "Turing" cez Tu je kompletný slovo, keďže, len T-U-R nie je slovo pretože my nevidíme tú malú delta. A ten malý trojuholník, opäť, zodpovedá tomuto is_word, tento Boolean is_word. A potom máme rad detí. Takže na každej úrovni, budete majú zvláštne uzol, a že uzol ukazuje na array celej abecedy. Takže vidíte, zase, V tomto picture-- Som bude držať skákanie späť a forth--, že, že pole na vrchole má veľa rôznych uzly prichádzajúce z nej. To má 26, alebo 27, ak chcete, zahrnúť osobitný charakter. A to nás si dáva spôsob ukladania naše dáta a to spôsobom, ktorý môže byť prizerali že sa môžete pozrieť na super rýchly. Aká je doba vyhľadávania na trie? Divákov: [Nepočuteľné]. HANNAH Blumberg: Jo. Teoreticky je to konštantná čas. Je to len bude byť veľkosť slovo, ktoré chcete vyhľadať. Aj keď pridáme obrovské množstvo viac slov našej trie, nie je to bude trvať nás dlhšie na určenie v prípade, že dané slovo je v trie. Tak to je naozaj pekné. Divákov: Práve si inicializovať, že pole? Prišli ste na bod alebo dva. Môžeš len hovoriť o že na sekundu? HANNAH Blumberg: Jasné, určite. Dobrá otázka. Otázkou bolo, my majú celý rad, ktorý je bude mať uzol hviezdy as na rozdiel od púhych uzla, že jo? Super. Tak tu, čo hovoríme je naša pole je práve Bude odkazy na ďalšie polia. Takže to essentially-- to druh cíti ako Google zoznamu týmto spôsobom kde každý z týchto detí len bod na ďalší uzol. A to tak, že sme vlastne určiť, hej, OK, sme opakoval cez celý slovo, je toto slovo v slovníku, sme len skontrolovať túto is_word. Veľká otázka. Jo. Divákov: OK. Takže to, čo bolo runtime pre trie? HANNAH Blumberg: Iste. Takže runtime pre trie pre vyhľadávanie bude konštantný čas. Takže je to len bude byť počet písmen v slove. To nie je závislé na Veľkosť slovníka alebo veľkosť dátové štruktúry. Tak tu je to trochu jednoduchšie príklad. V takom prípade môžete vidieť, že slovo bat je v slovníku a máte zoom, ale vy nemajú niečo ako zoo. Ako by sme urobiť zoo? Ako môžeme pridať zoo na náš slovník, k nášmu trie? Jo. Publikum: Urobiť is_word platí pre [nepočuteľných]. HANNAH Blumberg: Dobrý. Takže by sme povedať, Z-O-O, a potom sme si chcete zaškrtnúť políčko, že rovnako. Skvelé. Porovnajme veľmi stručne sa snaží proti stoly mriežky. Pokusy sú naozaj skvelé pretože, ako sme povedali, poskytujú konštantný-time vyhľadávanie. Ale obrovská nevýhoda je, že sú humongous. Môžete získať pocit, dokonca aj pri pohľade na to, že to bude trvať obrovské množstvo pamäte. Takže oni bude oveľa väčšie ako hash tabuľky, ale idú dať nás oveľa rýchlejšie časy vyhľadávania. Takže to je druh vášho Kompromis, čo vám záleží, či už je to rýchlosť alebo pamäť. Akékoľvek otázky na nič z toho, všetky C dátových štruktúr. Krásne. OK. Chystáme sa prejsť na trochu bit vývoj webových aplikácií s Máriou. MARIA Zlatkov: Lovely. OK. HANNAH Blumberg: Môžete používať svoj notebook. MARIA Zlatkov: Nice. OK v pohode. Ako sme sa presťahovať teraz na web vývoj, hovorili sme trochu o meniacich sa oprávnenia súborov a adresárov tak, aby mohli byť prístupné pre ostatných užívateľov, do sveta, a tak, že môžeme vidieť, ako v podstate im môžeme oznámiť pri vývoji webových stránok veci ako že sme väčšinou robili. Takže sme videli príkaz chmod, čo je režim zmeniť, v podstate. To je príkaz Linux a mení povolenie na prístup z objektov systému súborov. A objekt súborový systém len adresár, súbor, čokoľvek, čo môžete zmeniť povolenia. Takže vidieť súbor oprávnení, sme zadajte príkaz ls -l, zoznam. A keď sme typ, ktorý sme zvyčajne vidieť nejaké oprávnenie ktoré vyzerajú nejako takto v prednej časti názvu adresára. Takže d odkazuje na adresár. A potom máme tri trojice, ktoré v podstate odkazujú na oprávneniami buď užívateľ, skupina, alebo svet. Typy oprávnenia, ktoré môžeme mať pre tieto tri skupiny ľudí sú buď r pre čítanie, w pre písať, a X pre spustiť. A môžeme mať pre tých, skupina a svet rovnako. Najťažšie vec je, že niekedy keď sme zadajte príkaz chmod, by sme zadajte nejaké číslo že sa skladala z troch bitov. Takže sme mohli urobiť ako 777, a ktoré v podstate odvolával sa na pridanej hodnote každého z týchto triad pretože r odkazuje na 4, by w odkazujú na 2, a x odkazuje na 1, takže keď spočítajú, každé z čísel príde až na kumulatívnej číslo na súhrnnou hodnotou medzi 0 a 7. Tak by sme mohli tiež 0 k vôbec žiadne oprávnenie. A to by v podstate dá nám oprávnenia buď pre užívateľov, skupina, alebo svet. Akékoľvek otázky týkajúce sa to tak ďaleko? Divákov: ste povedal čítať bol 4? MARIA Zlatkov: Áno. Divákov: [Nepočuteľné]. HANNAH Blumberg: Jo. Divákov: A potom pridaním všetci tí, iní by uveďte vaše číslo. MARIA Zlatkov: Jo. Jo. To sú veľké otázky. Lovely. Ďalej sme skočili do HTML a niečo viac o vývoj webových aplikácií. Takže HTML jednoducho znamená, HyperText Markup Language. A to je značky jazyk, ktorý je štandardný že to používa na vytvorenie webovej stránky. Volá sa to značkovací jazyk pretože to nie je v skutočnosti zostavujú. Nehovorí, ako nejaký kód by mal byť vykonané, alebo niečo také. Je to len a vymedzuje opisuje, ako web stránka by mala byť zriadená s každým z jej prvkov a ako by mali vyzerať pre užívateľov. Niektoré z HTML tagov, ktoré sme prešiel sú nasledovné. Všetky naše dokumenty HTML začala s DOCTYPE html. Potom máme vždy html tag. Máme hlavu a telo. A to je dôležité, že má HTML tento druh vnorené štruktúry pretože to je veľmi jasné. A potom sa to stáva veľmi jasné, kedy my je potrebné otvoriť a zatvoriť vlastne tagy. A vždy je potrebné zavrieť tagy, ktoré sme otvorili. A máme tu niektoré z typov vecí najbližších, ktoré chceme mať. Takže máme, napríklad, názov CS50. A potom sme vlastne môžete prepojiť štýlov že definuje, ako štýl naše webové stránky. To je CSS. Chystáme sa ísť cez to v ďalší pár snímkov rovnako. V tele, nastavíme niektoré triedy a ID. A ako pripomienka, znovu, ID sú jedinečné a triedy možno priradiť k viac položiek. A to práve znamená, že môžeme použiť triedy a ID v rámci druhej structures-- tak, pre Napríklad v rámci CSS súborov alebo štýlu sheets-- sa odkazovať na zvláštne prvky a v podstate hovoria, že chceme štýl alebo navrhnúť nejaký prvok nejakým konkrétnym spôsobom. A máme na mysli im ich ID a triedy. A môžeme tiež odkazovať na rôzne veci podľa tagov rovnako, ale ID a triedy nám len dať nejaké všestrannosť a čo konkrétne my chcete odkázať. Takže len príklad. Môžeme opäť v rámci súbor CSS, kde sme chcete definovať niektoré style-- takže farby, typ písma, a tak podobne that-- môžeme definovať štýl pre telo. Tak, že by ju definujú pre celé telo tag. Ale potom sa môžeme tiež definovať štýl pre #title. A opäť sa hashtag sa vzťahuje k nášmu ID a dot odkazuje na našej triedy. A potom sa pre .info, sme môžete tiež nastaviť niektoré atribúty. A opäť, keď sa vrátime, sme mali triedy nazvanej info a náš titul ID. A my môžeme vidieť, že hovoríme ktoré im #title a .info. Divákov: Povedal by ste, mriežka [? prijíma ma? ?] MARIA Zlatkov: Sorry? Divákov: Povedal by ste, mriežka [? prijíma ma? ?] MARIA Zlatkov: hashtag znamená ID, takže #title sa týka akýchkoľvek prvkov majú toto ID s názvom titulu. A potom dot odkazuje na triedu. Takže .info sa odkazuje na tento prvok preto, že má informácie triedy. Áno. Divákov: Prečo vás odlíšiť je v HTML? Prečo hovoríte, niektoré veci sú ID a niektoré veci sú triedy? MARIA Zlatkov: To je len na vás-- HANNAH Blumberg: Zopakujte otázku. MARIA Zlatkov: Oh, prepáč. Prečo rozlišujeme určité prvky ako ID a ďalšími prvkami, ako sú triedy? Je to len preto, že je to naozaj často výber designu. To vám dáva veľa všestrannosť v tom, že schopný povedať, že som chcem túto konkrétne položky mať toto ID, pretože chcú urobiť veľa vecí s ním, a ja som len chcete definovať štýl, určitý štýl alebo farbu bez ohľadu na túto položku. A spôsob, ako to urobiť, je jednoducho dávať to ID. A potom, ak chcem mať niekoľko rôznych položiek ktoré majú, že miesto ísť a nastavenie their-- namiesto toho, robiť ho tag, pretože by tag nastaviť bunku pre celý tag pre každú dobu sa používa, že tag, môžete nastaviť triedu na viacerých položiek. A potom už len prístup k danej triede a hovoriť Chcem štýle s triedu, ktorá cestu. A opäť, trieda môže byť viac rôznych položiek a ID musí byť unikátne. Veľké otázky. Nejaké ďalšie otázky? OK, úžasné. Opäť platí, že je to, ako sa tieto voliča sú spomenuté v CSS, s hashtag, s bodkou, alebo bez ničom priradenie štýl nejakého tagu, ako telo. A máme tu všeobecný syntax, ako sa to robí. Ak chcete zopakovať niektoré najlepšie postupy pre HTML a CSS, musíme znova, zatvorte všetky značky HTML, ktoré sme otvorené. A to, čo sme vás odporúča urobiť pre vaše záverečných prác, ako aj pre CS50 financie, je, aby sa istí, že všetky vaše HTML potvrdzuje. A to urobil s W3 Validator. A potom to, čo sme robili a to, čo odporúčame robiť oddeľuje štýl, takže CSS z HTML značky. Takže všetko, čo sa týka ako vaša stránka bude vizuálne vyzerať a ako to bude upravený by mal ísť do CSS dokumentu. A potom sa vaše značky hovoriť, ako sa veci sú vo vzťahu k sebe navzájom, je HTML, a to by malo ísť dovnútra z vašich dokumentov HTML. Nejaké otázky? MHM. Divákov: Čo presne sa deje na s validáciu stránky keď sme potvrdzovanie HTML, že [nepočuteľný] vytvoril? MARIA Zlatkov: Takže what--, že ty. Takže čo presne sa deje Na stránke s validáciou a prečo musíme urobiť, že? V podstate, musíme k tomu, že pretože mnoho časov, váš prehliadač, ak nechcete uzavrieť tag alebo niečo také, Váš prehliadač je stále na vykreslenie stránku a môže stále fungovať, ale to je najlepšia prax, aby sa uistil, že ste opäť zavrel všetky svoje značky, že všetky vaše prvky sú tak, že by mali byť, a v podstate, že je touto konvencie, ktoré sú prednastavené. Je to opäť, len vec, ktorú by ste mali je naučiť sa robiť, na rozdiel od mať nedbalejší kód a tak podobne. Jo. Oh, prepáč. Myslel som, že zvyšovanie ruku. Publikum: Nie, len som [nepočuteľných]. MARIA Zlatkov: OK. Divákov: Ďakujem. MARIA Zlatkov: Samozrejme, ďakujem. Takže znova, deje na tom, ako informácie sa prenáša a komunikačné modely k prenosu informácií. TCP / IP. TCP jednoducho znamená, Prevodovka Control Protocol a IP odkazuje na internetový protokol. A to len odkazuje na spôsob akým sú dáta doručená. Ak máme nejaké údaje, ktoré je potrebné doručiť tak vás-- urobíte žiadosť o nejakom serveri. Napríklad, keď sme pokuse o prístup k cs50.net, urobíme žiadosť CS50 servera a my vidieť, že chceme dostať tento druh informácií. A potom sa na základe tohto protokolu na to, ako je táto informácia doručená, server poskytuje informácie späť k nám, klient. A potom sme schopní zobraziť informácie pre stránku a potom ju použiť. Takže Hypertext Transfer Protocol je len ďalší protokol alebo nastavenia dohovorov, ktoré určuje, ako webový prehliadač a webový server by mali oznamovať. A to všetko uvedenie spolu, HTTP, opäť, definuje, ako len to hypertext definované o HTML, ktoré sme pracovali to, ako to by malo byť dodaný na vás a ako to dáta, ktorá je dodávaná na vás dostane k vám. A to je dôvod, prečo, ak vy pamätať z triedy, mali sme veľa žiadostí a mali sme veľa syntaxe pre tieto požiadavky, ktoré sme ísť cez práve teraz. Takže znova, keď sme sa poslať požiadavka na server, musíme definovať niekoľko vecí. Preto musíme nájsť typ požiadavke, že sme nastavenie. A opäť, máme, napríklad, GET je jeden typ metódy že máme v našej žiadosti. A potom HTTP / 1.1 je len Protokol, ktorý používame v súčasnosti. Väčšinu času, že sa deje do protokolu, že používate. Takže ak máte dotaz takto na kvíz. To je konvencie že máme tak ďaleko. Spätné lomítko označuje, aká vecí sme požiada. Potom, náš hostiteľ je, napríklad, v tomto Prípad, snažíme sa ísť na google.com. Tak toto je hodnota pre hostiteľa. Jedná sa o typ žiadosti ktoré by mohli byť zaslané. A potom typ reakcie, ktoré by mohli byť odoslaný, opäť na základe tohto protokolu, je opäť, HTTP / 1.1. Tak to je zase verzia protokolu HTTP. 200 OK je len stavový kód. A to v poriadku, je len fráza na základe tohto stavového kódu. A potom Content-Type Odkazuje na typ ktorá je vrátená sa vám, že je pre danú webovú stránku, ktorá sa zobrazí a že vo vašom prehliadači môže spôsobiť neskôr. A to je text / html. Divákov: Čo to 1.1 znamená? MARIA Zlatkov: To je práve verzia of-- oh, čo 1.1 znamená? To je len verzia, HTTP Verzia protokolu, ktorý sme používate. Veľká otázka. Ďalšie otázky? Divákov: Mohli by ste zhrnúť Content-Type naozaj rýchlo? MARIA Zlatkov: Takže to je to, čo je server. typ information--, čo je typ obsahu bolo otázky. A tak, že bol typ informácie, ktoré sa dostanete späť zo servera, typ Dáta, že prehliadač potom môžu vykreslenie, ktoré používate. Divákov: Je to to, čo táto Protokol je ti robiť? MARIA Zlatkov: Sorry? Divákov: Je to to, čo protokol povedať? MARIA Zlatkov: The protocol-- Publikum: --what Content-Type je alebo what-- MARIA Zlatkov: Protokol je založený on-- čo je protokol hovorím? Je to presne tak, ako že tieto informácie sa vydal na vás na báze o aký druh protokolu bola táto informácia sa dostal doručený späť k vám. Dáva to zmysel druh? HANNAH Blumberg: Vy môže myslieť protokolu ako je-- Myslím, že profesor Malan popisoval to v triede ako niečo ako je-- to je ekvivalent ľudskej handshaking. Povedzme, rovnako ako, hej, ja som žiadosť a ja vedieť, ako zaobchádzať HTTP verzie 1.1. A potom server hovorí, oh, OK, já-- a obaja existujú. Tiež viem, ako sa vysporiadať s HTTP / 1.1. A ja idem dať vám späť nejaký obsah. V tomto prípade, bude to byť typu text / html. Takže je to trochu len spôsob, z nich communicating-- MARIA Zlatkov: Je to len potvrdzujúci, že ste a to ako po rovnakej Protokol a to ako klient a tak server-- Váš prehliadač a server-- trochu viem, čo ste hovorí, a majú konvencie pre odovzdávanie v dátach. Divákov: Takže Content-Type part-- Content-Type text / html-- to je Samostatnou časťou rovnakej správe? Alebo je to súčasťou povedzme, 200? Má 200 Povedzte im, že alebo je-- MARIA Zlatkov: 200 hovorí, že to všetko prebehlo v poriadku. A potom typ obsahu je niečo ako Samostatnou časťou rovnakej správe, a hovoriť, čo mám Vrátený má tento typ text / html. Je to len dávať viac informácií. Mať niečo dodať? OK. Nejaké ďalšie otázky o tom myslíte? Úžasné. Takže niektoré ďalšie HTTP stavy, ktoré by sme sa mohli dostať navyše k 200 OK, Tie, ktoré sme videli možno možno veľa, sú 403 a 404. Takže 404, ak ste sa snažili Prístup niečo, čo neexistuje. Tak napríklad vo vašej CS50 Financie psets, ak ste boli rendering quote.html a ste nemali tento súbor, ale namiesto toho ste mali quote.php, že by malo za následok 404 Not Found pretože súbor nemusí existovať. Pre 403 zakázané, že odkazuje na oprávnenie. Takže ak nejaký súbor nie je čitateľné svet, by ste mohli dostať 403 sa vrátil. Niektorí iní, že by vás mohli get-- 301, Trvalo presunuté; 302, nájdené; 304, Modified; 400, Bad Request; a potom Vnútorná chyba servera pre 500 a 503, Služba nie je k dispozícii. Áno. Divákov: Will sme očakávali pamätať všetky tie stavy? MARIA Zlatkov: Ja by som mal je na ťahák. [SMIECH] Divákov: Sme očakáva viem, čo spúšťa každý z nich? MARIA Zlatkov: Sú? HANNAH Blumberg: Pre tých, ktoré sme spustiť into-- takže otázka was-- MARIA Zlatkov: Sú Očakáva sa, vedieť, čo každé z týchto stave kódy by mohli byť vyvolané? Takže pre tých, ktoré sme použili a narazil na, povedal by som, že áno. Takže sme určite videli 200 OK a prednášal ju psets. Videli sme 403, 404. Pre tých ostatných? HANNAH Blumberg: Rád by som hovoria, 500 sa zdá spravodlivé hry. MARIA Zlatkov: 500, jo. HANNAH Blumberg: Jo. Stačí mať všeobecný pocit z toho, čo je spôsobuje. A tiež práve nimi mená, môžete druh rovnako ako vykonať kvalifikovaný odhad ako k čomu vlastne spôsobilo ich. Napríklad presunúť natrvalo, pravdepodobne Súbor bol presunutý natrvalo. Divákov: Ale na predchádzajúcu skúška, tam bol tak ako si nás očakávať, že to odpovedať? HANNAH Blumberg: To stálo za nula bodov. Otázka na 418 na kanvicu je technicky stav HTTP, ale stálo to za nula bodov. Je zrejmé, že nie ste Očakáva sa, že ich poznáme. Divákov: Je to skutočný? HANNAH Blumberg: Je to skutočný človek, ale to nič neznamená. Je to len vtip. Internetové ľudia sú smiešne. MARIA Zlatkov: Veľké otázky, chlapi. Nejaké ďalšie otázky? Divákov: Čo je vnútorná chyba serveru? MARIA Zlatkov: Vnútorné chyba servera len Znamená to, že ste boli schopný komunikovať so serverom z nejakého dôvodu. Takže to nie je nevyhnutne niečo, čo má čo do činenia s klientom, alebo niečo také. Neviem o žiadnej konkrétnej príklad že sme prešli na vysvetlenie, ale jo. HANNAH Blumberg: Iste. Tak napríklad, ako je či to že ste pracovali na mashup a server Google klesli pre niektoré Dôvodom, výpadok prúdu, povedzme. To by byť interný server Chyba, alebo nejaký druh of-- ťa rád by sa nedostal odpoveď späť. MARIA Zlatkov: Jo. Je to len, keď ste schopný komunikovať so serverom z nejakého dôvodu nasledujúcich dôvodov to ísť dole, alebo nejaký iný dôvod. Takže skákanie do PHP. PHP, na rozdiel od HTML, je programovací jazyk. A my sme začali používať, pretože je to veľmi užitočné pre vývoj webových aplikácií. Prvýkrát sme sa používal to v CS50 financií. A to v podstate pomáha nám priviesť spolu toto značenie, dizajn, a ako vlastne používať údaje zobraziť veci na webovej stránke. Takže PHP samo o sebe znamená, že PHP Hypertext Preprocessor, takže je to rekurzívne backnorym sám. A otvorenie značky pre PHP sme ľavý a pravú šípku s otáznikmi a php. Takže sme už videli veľa to. Teraz sme to len tak prejsť niektoré základné veci o tom. Takže s PHP, premenné názvy začínajú znakom dolára. Nechceme špecifikovať, znovu, typ premenná ešte. Rovnako ako sme to urobili s C, nepotrebujeme k tomu, že. Môžeme robiť veľa rôznych veci s premennými. Môžeme dať dohromady tým, že je zřetězením s tečkové notácie, ktorý sme nemohli urobiť v C znova. Opäť platí, že máme trochu väčšiu univerzálnosť s PHP, pokiaľ ide o premenných. Opäť platí, že nemáme mať hlavnú funkciu. A PHP je interpretovaný na rozdiel od skompilovaný, Tak, ako sme sa vytvoriť pre súbory C, nemusíme robiť, že pre PHP. Ale skôr tak, že jazyka je prevádzkovaný sám o sebe, je interpretovaný. A potom voľne zadali jednoducho znamená, že my Nemusíte špecifikovať premennú typ, a typy premenných sa rozumie za behu. Divákov: Ale to, čo ste urobil mysli dot konkatenace? MARIA Zlatkov: Iste. Keď chceme dať veci together-- takže ak by sme mali nejaké premenné mal hodnotu 3 a my sme mali ďalšie premenná, ktorá mala hodnotu reťazca, by sme mohli dať dohromady premenné tým, že bodku medzi nimi a zreťazenie je. Alebo by sme mohli vytvoriť premenná s názvom názov a dať to dokopy zreťazenie dvoch reťazcov. Takže ak sme mali reťazec v double citácie a kladieme bodku za ním, a potom sme mali ďalšie reťazec, ktorý by vytvorila reťazec úplne. Divákov: OK. MARIA LOTYŠSKO: Bolo to jasné? Divákov: Jo. MARIA Zlatkov: OK. Áno. Divákov: Keď sa povie vykladať skôr ako skompilovaný, hovoríte o vás nie musí byť čo najkonkrétnejšie, pokiaľ ide o PHP v porovnaní s C? MARIA Zlatkov: Keď hovoríme, vykladať tak, na rozdiel od skompilovaný, Čo máme na mysli? Takže to znamená, že nepotrebujeme spustiteľné súbory spustiť PHP. To znamená, že to beží, ako to chodí. dáva to zmysel? Trochu viac. HANNAH Blumberg: Takže vy môže myslieť na tlmočníka ako ďalší program, ktorý je zodpovedný pre prechod riadok po riadku pomocou PHP a vlastne spustením, ako protichodný k zostavovanie to všetko až do binárne. To nie je v skutočnosti nič neznamená o tom, ako špecifické musíme byť. Stále potrebujeme byť presné, a nie zabudli bodkočiarka, a uistite sa, máte znak dolára, a podobné veci. Dobrá otázka. MARIA Zlatkov: Jo. Takže riadok po riadku, as na rozdiel od so súbormi C, musíme celý finále než budeme môcť skutočne spustiť. To je hlavný rozdiel. Ale opäť, nemôžeme naozaj menej konkrétne. Takže pole v PHP predstavujú vlastne objednal mapa. Takže pole pridružených hodnôt ku kľúčom. Tieto dva spôsoby, ako deklarovať poľa, na základe tejto syntax, môžeme byť viac explicitný keď hovorí, máme rad a máme túto key1, ktorá mapuje tento hodnota1, key2, ktorá mapuje hodnota2. Alebo môžeme len vytvoriť pole , Ktorý obsahuje hodnoty sám a potom sú kľúče chápať spôsobom. Akékoľvek otázky na to? Divákov: Čo by kľúče sa v druhom príklade? 0, 1, 2, 3? MARIA Zlatkov: Napríklad, je to len kľúče v tejto nemusí nutne urobiť zmenu. Jednoducho definovať, ako je to možné použiť hodnoty vnútri nej. Takže ak sme mali foreach slučka v PHP, ktorý by nám umožní prejsť všetky hodnoty, môžeme ísť cez všetky hodnoty, aj keď sme mali, alebo že nie je definovaný konkrétny kľúč v rámci webu predchádzajúca syntax. Takže aj tento druh z poľa, mohli by sme ešte majú slučky foreach že prechádza každý hodnôt v kľúči v poli. Takže syntax foreach slučka, začneme s radom. Táto $ arr premenná je naša skutočná array , Že je definovaná v predchádzajúci snímok ako hodnota, ktoré doslova ide cez každú z hodnôt, bez ohľadu na to, či sme mal kľúč, alebo nie. A potom môžeme niečo urobiť s hodnota vnútri slučky foreach. Takže znovu, ak sme mali pole takhle tady created-- takže máme kľúč foo a hodnoty bar, kľúč Baz a hodnotu qux-- môžeme mať slučky foreach, ktorý prechádza poľa ako na hodnoty kľúča a potom robiť niečo s kľúčom a / alebo hodnoty. Ale nie nevyhnutne vždy musí mať foreach slučky, ktorá prechádza poľom ako kľúčový mapy do hodnoty. Môžeme ísť cez foreach slučky pole ako hodnotu. HANNAH Blumberg: A myslím, že to-- bola vaša otázka, čo je implicitný index? Divákov: Kinda. MARIA Zlatkov: Oh. HANNAH Blumberg: Jo, jo. Takže v podstate, ak nechcete zadať kľúč, to bude 01. MARIA Zlatkov: Jo. Rovnako ako v C, je to nula indexované ak nechcete zadať kľúč. Divákov: Ospravedlňujem sa. Mohli by ste skúsiť hovoriť trochu hlasnejšie? Mám trochu ťažkosti všetko sluchu. MARIA Zlatkov: Je mi to veľmi ľúto. Samozrejme. Tak chceš so mnou ísť cez to znova? Alebo je tohle-- Divákov: Tak na predchádzajúcu slide-- pokiaľ môžete jednoducho vrátiť na jednu sekundu. MARIA Zlatkov: Samozrejme, je mi ľúto. Divákov: Takže druhý array tu nie je Zdá sa, že majú hodnotu pre zadanie, druh [? príčina. ?] MARIA Zlatkov: Dobre, dobre. Divákov: Tak ako to funguje keď hovoríte, že je to všetko, alebo nič. Pre mňa, že vyzerá ako a [? foo?] už. MARIA Zlatkov: Jo, jo. Takže znovu, to je objednať mapa v tomto zmysle , Že sa rozumie, napríklad indexy tu je možné chápať ako 0, 1, 2, 3. Opäť platí, že to majú tí, Indexy je naša ekvivalentná mať kľúče mapovaných na hodnoty. Takže ak naše kľúčové bolo 0-- ľúto. HANNAH Blumberg: Nie, Je tu krieda sem. V skutočnosti je to naozaj pekné. MARIA Zlatkov: To je skvelé. OK. Takže znovu, $ arr 0 by bolo kľúč pre hodnotu 1. 0 by byť kľúčom pre hodnotu 1. Divákov: Je mi to ľúto. Je to neviditeľné. HANNAH Blumberg: Dobre, nevadí. Krieda bol zlý nápad. Beriem to späť. Môžete si myslieť kľúčov as 0 mapy na hodnotu 1. MARIA Zlatkov: Jo. Takže to je 0, to je 1, 2, 3. Tie môžu byť vaše kľúče. Môžete si myslieť z nich as-- jo. A tak namiesto toho, explicitné kľúče, sú nejako chápané ako indexy začínajúce pri 0 ° C. Krieda nepomohlo. Jo. Obecenstvo: pre foreach slučky, Ak by sme chceli zobraziť ako hodnota, by to jednoducho automaticky index na 0? MARIA Zlatkov: Jo. To by prejsť každú z hodnôt. Divákov: [Nepočuteľné] as 0 alebo by to jednoducho urobiť 0? MARIA Zlatkov: Tie by museli teda ako znak dolára a potom niektorí názov premennej, hodnota. Divákov: [Nepočuteľné]. MARIA Zlatkov: Sorry? Publikum: Ospravedlňujem sa, že som Len sa snažím spomenúť. Ako by ste si, že ak to dokážeš automatickej indexácie je len 0 z? MARIA Zlatkov: Tak ako by ste to urobil ak ste nemali konkrétne mená kľúčov? Divákov: Jo. MARIA Zlatkov: Tie by jednoducho define-- len povedať, sami seba ako nejaká mená. Takže vo vašich psets, vy by mohla pamätať foreach $ riadok $ ako riadky, sme vytvorili sami túto $ riadok porekadlá chceme prejsť rade, ako $ riadky. Aj keď sme nemali Tento explicitné $ riadkov definovaný, mohli by sme jednoducho ísť a hovoria, že toto môže byť náš kľúč, a jednoducho prejsť každú z hodnôt. Divákov: Takže je hodnota nová premenná vytvárame uložiť [nepočuteľných]? MARIA Zlatkov: Takže to nie je neodmysliteľne nový variabilný. Je to premenná, ktorá odkazuje na vnútri poľa na každý z nich. HANNAH Blumberg: Je to nový názov premennej. MARIA Zlatkov: Jo, je to nový názov premennej, ale nie je to inherently-- jo. Je to len nová premenná ktoré môžete urobiť. Tak, ako sme to urobili robiť $ Rade, ako $ riadky, riadky bol nový názov premenné, ktoré sme mohol vytvoriť v našej foreach slučke. Nemusí sa preexist pred tým. Divákov: Mohol si prejsť Logika pre každý, na príklade tam? MARIA Zlatkov: Mhm. Oh, prepáč. Tu je príklad. Iste. Takže pre každý tak array-- to znamená, že ísť do tohto poľa ako kľúč value--, čo sa deje prejsť tohto poľa a ako prvý ísť a dostať foo sa key foo a hodnota bar. A potom na druhý iterácii slučky for, že to bude prejsť a vziať kľúč baz a hodnota qux. A potom môžete niečo urobiť s jeden z nich alebo oba. Divákov: Takže myšlienka ktoré majú kľúčový bod na hodnotu, čo ste skončili prístup? MARIA Zlatkov: Aká je idea mať kľúč ukazujúce na hodnotu? Je to len ďalší konvencie, ďalšie spôsob, ako prechádza poľom a sú schopní pristupovať buď kľúč alebo hodnotu, alebo oboje a ich použitie. Divákov: Aká je úloha pre nariadiť, že foreach pracuje v? Takže ak by sme mali pridať prvky do poľa neskôr by ti, byť prvý z nich zavolal foreach poli, alebo by to bolo neskôr? MARIA Zlatkov: Takže to, čo je objednávka, že foreach slučka prechádza pole v? To prechádza prvý element na posledný prvok, na poslednú pridaný prvok. Ak pridáte prvky neskôr, oni odkázaný byť accessed-- prvý prvky by získať prístup ako prvý prvky poľa, a potom by som šiel cez každého prvky ako akýsi ordered-- nie je objednané, ale tak, že ich uvedenie do poľa. Divákov: Takže nové prvky sú pridané neskôr? Takže oni added-- budú byť posledný z nich v [? iterácie. ?] MARIA Zlatkov: Nové prvky can-- v podstate, keď sú pridané nové prvky, sa pridali do konca poľa? Divákov: Jo. MARIA Zlatkov: Myslím, že áno. Áno. A potom sa svojím slučky foreach, potom, čo ste pridali nové prvky a ísť cez ne, nové prvky by byť accessed-- nového prvku, pokiaľ je to pridaná ako posledná, bolo by byť prístupné ako posledný. Divákov: Môžete len dať príklad niečoho, čo by [nepočuteľných] s niečím s hodnotou ako [nepočuteľný] alebo hodnoty, Páči sa mi, ako by ste formátovať, že? MARIA Zlatkov: Iste. Môžem uviesť príklad toho, čo budeme robiť s hodnotou? Takže to, čo si chlapci by mohlo byť oboznámení s je, že sme prešli pole a v podstate tlačený každý z prvkov, napríklad ako súčasť objednal zoznam alebo niečo, čo. Dáva to zmysel, alebo chceme to-- Divákov: Môžeme vytlačte si tieto hodnoty von? MARIA Zlatkov: Jo, mohli by sme vytlačiť a potom v podstate $ value, pretože v že konkrétne hodnota, budeme tlač hodnotu vnútri nej. Takže ak sme boli na našej prvej iteráciu to a my tlačený $ value, budeme tlačiť bar. Divákov: Sú tu tiež slučky v PHP alebo len foreach slučky? MARIA Zlatkov: Existuje aj pre slučiek v PHP. A ich logika je väčšinou rovnako ako to, čo ste boli zvyknutí. Divákov: Takže jeho hodnota je null. MARIA Zlatkov: Je to ako rovnaký. Jo. Divákov: Ja som jednoducho ísť opýtať. Takže keď ste vyhlásiť poľa, nepotrebujete povedať, čo veľkosť to bude byť, čo znamená, že môžete len pridať a odniesť prvky [nepočuteľných]. MARIA Zlatkov: Jo. Áno. Presne tak. Keď sme sa vyhlásiť poľa, my Nemusíte hovoriť, čo veľkosť to je, takže môžeme len pridať prvky na to aj neskôr. Ďalšie otázky? Takže prinášať PHP a HTML dohromady, to, čo sme seen-- dobre, Napríklad, v tomto príklade, máme HTML forma, ktorá má vstupné pole. A je vstupné pole len názov a potom má tlačidlo Odoslať. A keď stlačíte tlačidlo Odoslať Tlačidlo, v našej hello.php súbore, pretože metóda pre formu je dostať, môžeme pristupovať čo je v názve tým získať globálny premennú, ktorá je-- syntax pre to je $ _GET. A potom môžeme získať prístup bez ohľadu na Užívateľ vstup vnútri daného formulára pre názov zadaním názvu tejto oblasti. Akékoľvek ďalšie otázky alebo akejkoľvek Otázky týkajúce sa tejto konkrétnej príklad? Divákov: Kde je PHP? MARIA Zlatkov: Tu. Tak toto je naša otváracia tag pre PHP. Publikum: Áno, jasné. MARIA Zlatkov: Áno. Hannah Blumberg? Odpoveď: = je skratka k tomu je PHP a len ozvena. Divákov: Oh. MARIA Zlatkov: Jo, je mi ľúto. Mal som urobil to jasné. HANNAH Blumberg: Print. MARIA Zlatkov: Je to proste funkcie ktorý nám umožňuje tlačiť niečo. Veľká otázka. Takže going-- áno. Divákov: Je tam bude dosť trochu ruky kódovanie PHP a HTML na kvíz 1? MARIA Zlatkov: Tam môže byť slušné množstvo interpretácia PHP a HTML, nie nevyhnutne ako obrovské množstvo kódovanie, aj keď budete musieť napísať foreach slučky, aj keď, je pre slučke. Jedno zo slučiek, ktoré sme pokrytie tu je poctivá hra. A to je väčšinou to. HANNAH Blumberg: Ja by som byť pripravený. Rovnakým spôsobom, že sme vás o to prosil napísať veľa funkcií C na kvíz 0, Chcel by som byť pripravení robiť To isté v PHP a JavaScript. MARIA Zlatkov: Jo. HANNAH Blumberg: Povedal by som, little--, ako že nie sme bude, aby ste napísať obrovský HTML stránky len preto, že je to trochu nudné, ale môžete mať dielov. To je úplne fér hra. Rovnako ako malý HTML stránky, úplne fér. Divákov: OK. Ako sa asi v JavaScripte rovnako? HANNAH Blumberg: Jo. JavaScript je fér. MARIA Zlatkov: Jo. To je úplne fér hra. HANNAH Blumberg: Dostaneme sa, že v, ako je 10 minút. MARIA Zlatkov: SQL, znovu, Structured Query Language. To v podstate nám umožňuje spravovať dáta v relačný databázový systém. To v podstate znamená, len že máme niekde ukladať niektoré dáta, že by sme mohli chcieť použitie na internetových stránkach alebo v nejakej inej forme. A potom sme sa dostať otázky Informácie z našej databázy, alebo vložiť informácie v nich. Veľa spoločného ones-- UPDATE, INSERT, SELECT a DELETE. Takže pre UPDATE, to je syntaxe pre aktualizáciu dát v databáze. Aktualizácia túto tabuľku nazvanú stôl tým, že hovorí SET, môžeme nastaviť niektoré hodnoty vo všetkých riadkov na rovnej niečo iné. Takže môžeme tiež určiť niektoré konkrétne položky, ktoré chceme zmeniť a to môže byť pomocou WHERE. A môžeme určiť, že chceme len upraviť niektoré riadky, kde dom, keby sme mali tabuľku študentov a všetci študenti mali dom, tak by sme len zmeniť niektoré hodnoty kde dom sa rovná Jirchářích napríklad. Pre INSERT, môžeme vložiť určité hodnoty do tabuľky. Takže INSERT INTO tabuľky, a potom sa hodnoty, a potom sa v zátvorkách, špecifikujeme ktoré hodnoty chcete vložiť. Takže INSERT INTO tabuľky, col1 a COL2, je hodnota VAL1 a hodnota2. Takže to v podstate vloží nový riadok do tabuľku, ktorá obsahuje hodnoty 1 a 2 V stĺpci 1 a 2. A potom budeme ísť cez rýchly príklad toho, ako to vyzerá rovnako ako v našej databáze trochu. Ale to, že som v konečnom dotaz že budeme ísť cez, SELECT, to nám práve umožňuje k výberu dát z tabuľky eventuálne používať neskôr. A spôsob, ako to urobiť, je, že sme stačí uložiť ho do nejakej premennej. A potom môžeme prípadne znovu použiť. Takže SELECT hviezda znamená vyberte všetky. To je len skratka pre výber všetkých. FROM stolu, kde hľadáme pre niektoré špecifické podmienky, tak kde stĺpec sa rovná niečo, napríklad. Ak by sme len chceli vybrať všetko z tabuľky, to len vyberie všetky stĺpce a všetky riadky z tabuľky. A potom DELETE FROM tabuľka WHERE col rovná niečo, to len odstráni niektoré riadok z nášho stola kde máme nejaké špecifické podmienky. V tomto prípade, podmienky sú stĺpec sa rovná niečo. Takže len rýchly príkladom. Ak máme túto tabuľku tu a my vložte ju do tabuľky, tieto hodnoty, že by vloženie nového riadku. A keby sme mali auto-prírastok, to by len zvýšiť našu ID od 0 do 1 až 2. Ak sme vybrali všetci zo študentov to, Len vráti všetky polia a všetky riadky. Kde rok je väčšia než alebo sa rovná 2016, že by jednoducho vráti Hannah a ja. A potom, ak sme práve zvolená id rok a rok od študentov kde dom je Cabot dom, že by sa opäť vrátiť Hannah a ja. Potom, ak sme sa ruší od študentov kde názov je presne Rob, ktoré by odstrániť celý riadok. A potom, keď sme sa nastaviť meno, UPDATE študenti SET názov rovná Daven KDE Dom je rovná Cabot dom, ktorý pôjde do tie riadky a aktualizovať názov. A potom niekoľko dátových typov SQL sú CHAR, VARCHAR, INT, a plavidlo. Sú to poctivá hra. Chcel by som ísť znova a uistite sa, že viete, a mať ich na vašej ťahák, čo každý z týchto znakov, boli použité pre to, čo ste použili je na svojich psets, a uistite sa, že ste sa zoznámili a pohodlné s musieť vybrať z rôznych typov dát vo vašom pset. Áno. Divákov: Čo to bolo, že tabuľka uložená? Áno, ak je táto tabuľka uložená? MARIA Zlatkov: No, práve teraz, to nie je uložené. V každom prípade, ak je táto tabuľka uložená? Ale to môže byť uložené v databáze SQL. Divákov: A kde je SQL databázy? V počítači, online Niekde, server? MARIA Zlatkov: To môže byť počet rôznych vecí. HANNAH Blumberg: sme prepojený s SQL tabuľky väčšinou s phpMyAdmin. A tak by sme mohli požiadať server uložiť je pre nás. Mohli by sme ich uložiť na vlastnom počítači. MARIA Zlatkov: Záleží len na ako chcete, aby to pre seba. Ale my sme boli skladovanie je, ako bolo uvedené Hannah, na phpMyAdmin, ktorý je online. A potom spôsob, akým využívame PHP a SQL, uložíme ho do nejakej premennej čo sme požiadaný na. Takže ak budeme chcete vybrať všetky z histórie kde USER_ID rovná ID relácie, že by vybrať všetky riadky pre konkrétnu osobu, ktorá je zaznamenaná z histórie stôl a triediť ich do radov. Cool vec je vedieť, je že funkciu dotazu CS50 je chráni proti SQL injection tagy. To jednoducho znamená, že dbá na to, vstup, ktorý je zadaný správny a že osoba, ktorá vstupuje do vstupu sa nesnaží vstup niektoré druhy škodlivého Kód buď klesnúť naše stoly alebo odstrániť všetko vnútri našej databáze. Rýchly Prehľad Model model View Controller, je to len spôsob, ako organizovať a premýšľať o kóde. Je to opäť, dizajn paradigma. Znamená to, že sme can-- a je to dobré praxe na oddelenie jednotlivých častí z nášho kódu a to, čo ovládanie do týchto troch paradigiem. Takže náš pohľad je najčastejšie naša šablóny, naše dispozície, ako že sme si stanovili, ako náš kód vyzerá. To je hlavne naša CSS súborov a spôsob, akým že sme definovali návrh nášho kódu, v podstate. Náš regulátor je väčšinou to, čo sme robili s PHP súbory. Takže znovu, prácu s informácie, ktoré máme a definovanie ako to informácie sa používajú, a potom odovzdá túto informáciu a to buď na zobrazenie alebo modelu. A model, tak, že máme Používam v ktorom bolo naše databázy, takže kde naše informácie uložený tak, že má niekde k životu, a niektorú z kód, ktorý sa vzťahuje na spôsob, akým že sme si tieto informácie alebo spôsob, akým môžeme uvedené informácie aktualizuje. Takže v modeli MVC, HTTP Žiadosti sú odosielané na webový server. Potom sa interpretuje regulátor požiadavka od užívateľa a potom overuje vstup užívateľa. Je voliteľná, že máme regulátor komunikovať s modelom, tak niečo ako našej databáze alebo nejaké iné funkcie že relé informácie. A nakoniec, regulátor odovzdá informácie na pohľad tak, že to môže byť tavené a že môže stáva viditeľným na akúkoľvek osobu prístupu na webové stránky. Nejaké otázky? Úžasné. Takže znovu, model, jeho funkcie, opäť, je trvalé uchovávanie informácií, správu a organizáciu dát. A to, čo sme videli tak ak je databáza MySQL a všetky dátové súbory, ktoré môžu používať. Pohľad, prezentácia informácií Užívateľ, užívateľské rozhranie, alebo užívateľské rozhranie. A príkladom je HTML. A potom by sme mohli mať minimálnu PHP. Takže pre sláčiky, ktorá iteruje cez dáta, ktoré sú vytlačené je súčasťou toho názoru, as na rozdiel od regulátora. A potom veľa našich PHP súbory spadajú do kategórie regulátora. Je to len spracováva požiadavky užívateľov a získava informácie z modelu. Skákanie do dokumentu Object Model, to len sa vzťahuje na spôsob, akým HTML dokumenty sú organizované. A oni sú organizované do stromu štruktúra, ktorá má hierarchiu. Takže ak máme prístup k [nepočuteľných] reprezentácie dokumentu, môžeme pracovať s dokumentom, ako sme manipuláciu s objektmi v podstate. A aby to trochu jasnejšie, keď Máme veľa našich rôzne značky reagovať sa rôznymi cestami v našom stromu. A potom sa pre tento príklad, sme majú počiatočný uzol dokumentu. Máme teda naše HTML uzol ktorá rozdeľuje do hlavy a tela. Hlava má titul a potom titul obsahuje ahoj, svet. A naše telo práve obsahuje ahoj, svet rovnako. Takže akékoľvek otázky týkajúce sa niektorý z veci, ktoré sme doteraz na ktoré sa vzťahuje? A ak nie, bude Hannah prevziať s JavaScriptom. Úžasné. HANNAH Blumberg: OK, v pohode. Ak niečo príde s PHP alebo HTML, alebo niektorý z vecí Maria vzťahuje, môžeme vždy pozastaviť. Robíme lepšie čas znova, tak úžasné. A len preto, aby sa vrátiť veľmi rýchlo na to, keď sa pozriete na každý Minuloročné skúška, to prichádza either-- tu niektoré HTML, aby tento diagram. Alebo tu je to schéma, aby niektoré HTML, takže určite praktizovať to. A potom to je jeden zaručené Otázka, ktorá sa môžete dostať pravdu. Super. Tak poďme hovoriť o JavaScripte a ako je to trochu odlišný od jazykov, ako je PHP a C, oba jazyky sme videli predtým. Takže číslo jedna, je to voľne zadali. To je ako PHP, ale na rozdiel od C. Je to interpretovaný jazyk. Opäť platí, že je ako PHP, na rozdiel od C a to sa chystá, aby nám to use-- funguje naozaj dobre s webovými stránkami. Bude to nám umožňuje manipulovať obsah a ako to vyzerá, a čo to robí. Budeme vidieť trochu Ajax. To nám umožňuje komunikovať asynchrónne s rôznymi servermi a získať informácie. A to je vec, ktorá naozaj oddeľuje JavaScript z PHP a C je to, že je na strane klienta. Obaja PHP a C sú zvyčajne na strane servera. Z väčšej časti, a takmer úplne, čo sme videli, aspoň v táto trieda, JavaScript pôsobí na strane klienta, čo znamená, že prehliadač je vlastne zodpovedný za spustením. A to znamená, že my nie je potrebné komunikovať so serverom. Takže to znamená, že môže byť oveľa rýchlejší pretože je to vlastne len, že je to Chrome, to je Safari, Firefox je to, čo vás používať v skutočnosti spustený váš JavaScript. Divákov: Čo to asynchrónne znamená? HANNAH Blumberg: Ach, čo to asynchrónne znamená? Veľká otázka. Asynchrónne means-- dobre, obsah, v ktorom používame to je, OK, vytvárajú webové stránky a potrebujeme získať nejaké informácie. Tak na príklade mashup, Niektoré informácie, že by sme mohli chcieť Je tituly článok. Teraz sme could-- jednu možnosť je to synchrónne a to znamená, poďme zastaviť, choď si článok, ten článok Späť, a potom render, ale to by bolo celkom pomalé. To by bolo zlé užívateľské skúsenosti pretože by ste len sedieť čaká na niečo reagovať. Asynchrónne znamená, že budeme aj naďalej sa o našom podnikaní, vykresľovanie stránky, a budeme odoslať žiadosť Je to niečo ako ísť do stáť v pozadí. Myslím, že sme použiť príklad v prednáška volanie Rob a hovorí, hej, môžete sa pozrieť toto hore Pre mňa a vrátiť sa ku mne, na rozdiel od práve mne čakanie na telefóne. Takže asynchrónne znamená, že sa stane V pozadí sa od nás paralelne. Veľká otázka. ešte niečo? Skvelé. Budeme skákať oveľa viac do asynchrónnych požiadaviek s Ajax. Divákov: Má JavaScript-- Odkiaľ spadnúť s Model-View-Controller? HANNAH Blumberg: Veľká otázka. Odkiaľ JavaScript pád s Model-View-Controller? Hm. Myslím, že to môže fall-- takže my zvyčajne Páči sa prebiť ju do toho paradigma, ale myslím, že by som povedal, OK, takže JavaScriptu v skutočnosti bude umožnenie nám zhromaždiť údaje, interpretovať dáta, vlastne robiť zmysluplné veci s dátami. Týmto spôsobom, je to veľmi podobné ovládanie. Ale je to tiež bude, aby nám umožňujú zobraziť vecí a tlačové veci. Týmto spôsobom, je to veľmi pohľad-podobne. Jo. Takže je to niečo ako v PHP kde môže byť trochu oboje. Dobrá otázka. ešte niečo? V poriadku, úžasné. Pohybujúce sa vpravo pozdĺž. Tak sa pozrime, príklad o tom, ako môžeme použiť JavaScript v jednom z našich webových programov. Tak som si to považujú index.html s partiou HTML. A vec, ktorú chcem ťa zamerať sa na to tag skript. A to hovorí, OK, ja chcem spustiť niektoré JavaScript a tu je miesto, kde to žije. Žije vo hello.js. A veľmi podobne ako CSS, mohli by sme vložiť JavaScript v HTML. Prečo by sme mohli chcieť oddeliť to? Jo. Divákov: Ľahšie prepísať? HANNAH Blumberg: Jo. Je to jednoduchšie používať naprieč rôzne webové stránky. Udržuje veci čistejšie. Je to proste dobré praxe. Úžasné. Dobrá odpoveď. Tak dobre, takže to sa deje aby bol naším index.html. A potom tu je naša malinké súbor JavaScript. A všetko, čo hovorí, že je ostražitý Hello, world. Takže čo sa stane, keď je Táto stránka renders-- takže ak idete na akejkoľvek webovej stránky to je-- všetko, čo sa bude diať Je to bude hovoriť, OK, ja som chystá spustiť tento kód JavaScript. A tento kód JavaScript len hovorí upozornenie Hello, world. Takže budem si to Priateľská malá pop-up. V pohode? To je niečo ako naša prvá JavaScript programu, naše Hello, world. Poďme sa pozrieť trochu viac o tom, čo syntaxe JavaScriptu vyzerá. A konkrétne, poďme porovnať ju s C a PHP, ktoré sme videli predtým. V JavaScriptu, budeme mať var, názov premennej, a potom jeho skutočná hodnota. A my neurčíte typ, len rovnako ako v PHP, ale veľmi na rozdiel od C. Tak napríklad, keď sme chceli pre uloženie hodnoty 50, v C, museli by sme povedať, hej, C, chcem celé číslo, Chystám sa to nazvať i, a jeho hodnota je 50. V PHP, je to trochu jednoduchšie. My hovoríme, hej, ja chcem premennú Zavolal som a jeho hodnota je 50. Veľmi podobne, v JavaScript sme hovoria hej, chcem premenná zavolal som, jeho hodnota je 50. Každý ďalší čas, ktorý som použiť i, nemám potrebu písať var. Je to len som od tohto okamihu. Rovnakým spôsobom, v C, kde sa akonáhle povieme int i, my stačí použiť i. V pohode? Dobre. Presun do slučky, našťastie, tieto takmer vyzerať exactly-- Myslím, že sú presne rovnaké ako to, čo slučky budú vyzerať v niečo ako C, kde sa vaše pre sláčiky bude mať tri parts-- inicializácii, podmienka, a aktualizácie. Slučka while, to vyzerá presne rovnaký. Práve sme dať podmienku. A robiť, kým slučka, opäť, presne rovnaké. Dávame to podmienkou. Povedzme, že som chcel opakovať over-- Chcel som urobiť niečo päťkrát. V jazyku C, môžeme písať pre init i rovná 0. i je menší ako 5, i ++. Jediný rozdiel, v JavaScripte, namiesto toho hovorí, int i = 0, hovoríme var i = 0. Krásne. To je jediný rozdiel. Akékoľvek otázky týkajúce sa niečo z toho? Áno. Divákov: Takže v PHP, je to rovnaké vec, s výnimkou ale ako premenné? Alebo to bol príklad var? HANNAH Blumberg: Jo. Takže v PHP, bude to byť znak dolára. Tak to bude aj $ rovným 0, $ i je menší ako 5, $ i ++. Veľká otázka. Teraz poďme hovoriť o deklarácie funkcie. V jazyku C, keď vyhlásil funkcie, dal nám meno a dal nám niektoré parametre. A na začiatku, sme napísali typ. V JavaScript, všetko, čo sme musíte urobiť, je napísať funkcia kľúčové slovo hovorí, hej, JavaScript, Chystám sa definovanie funkcie. V tomto prípade, má názov súčet. A to trvá dva argumenty, X a Y. Všimnite si, že je nám jedno, o typoch x a y. A rovnako ako C, my máme tento návrat kľúčové slovo, takže môžeme niečo urobiť ako spiatočný x a y. A teraz zrazu písali sme to prvýkrát funkcie, môžeme použiť súčet kdekoľvek. A to je úplne v pohode. Jedna naozaj cool vec, o JavaScript, že je veľmi na rozdiel od C je to, že funkcie môžu zaobchádzať ako hodnoty. Takže môžeme niečo také tu kde som, že som to pokryť up-- Zakryl som si var súčet part-- a my sme len povedal Funkcia xy rovná sa spiatočná X plus y. To je to, čo by bol nazývaný anonymné funkcie. Je to funkcia bez názvu. Vzhľadom k tomu, táto funkcia hovorí suma, bla, bla, bla, To by len povedať funkciu. Ale teraz, aj keď mám táto anonymný funkcie, táto funkcia je naozaj len hodnotu. Môžeme to zaobchádzať ako hodnotu. Takže môžeme uložiť do premennej rovnakého Spôsob, akým mohol uložiť 50 v premennej. Takže môžeme povedať, v poriadku, chcem variabilné, je to len súčet, a je to práve táto funkcia. Takže tieto dve veci sú v skutočnosti robiť presne to isté, ale syntax je trochu odlišný a druh zábavné poznámky. Jo. Divákov: Takže ste mohli nazvať funkcia, ktorá bola anonymná tým, že hovorí, Suma konzola 2, 5? HANNAH Blumberg: Jo. Môžete volať to anonymný funkcie rovnakým spôsobom. Tie by to súčet (2, 5);. To by bolo úplne v pohode. Keby som to neurobil var suma rovná funkcie, keď som práve zmazal tohle-- Viem, že je na mojej strane, ale predstierať, že vypúšťa tohle-- potom táto funkcia je druh jednoducho preč. Môžete nikdy znovu použiť, pretože nemáte jeho názov. Je ťažké odkazovať na niečo neviete, ako to nazvať. Dobrá otázka. Jo. Divákov: Môžete odkazovať sumu v ďalších miest s hodnotou X plus Y? HANNAH Blumberg: Môžete referencie súčet v okolí s hodnotou X plus y? Nie som si úplne istý, čo máte na mysli. Divákov: Takže vaše minulosť semi-anonymný funkcia je súčet je rovný tejto Funkcie anonymné, takže súčet Teraz premenná, ktorá vám can-- HANNAH Blumberg: Správne. Aby súčet je premenná, ale je to actually-- aby súčet je premenná, ktorej hodnota funkcie. Tak to je funkcia, ktorá je druh podivné veci zabaliť hlavu okolo od tej doby sme sa hrať s C a môžete to robiť v C. Ale teraz sa môžeme nazývať sa spočítajú Rovnako tak by sme mohli nazvať súčet tu. Divákov: OK. HANNAH Blumberg: Jo. Dobrá otázka. Jo. Divákov: Takže nepoužívajte prototypy v PHP alebo JavaScript? HANNAH Blumberg: Nie, my Nemusíte používať prototypy, najmä v JavaScripte. Takže človek praxe vec zle, že som chcel povedať, že by ste nemali robiť ich nemusíte písať var i = 50. Dalo by sa jednoducho začať robiť i = 50. A bude len aby aj globálnej premennej. Je to veľmi zlé praxe nikdy nehovor výslovne var i, ale je to niečo, čo môžete urobiť. Tlmočník nie je bude revať na vás. JavaScript je celkom rád, môžete robiť, čo chcete. Oh, prepáč. Je tu dva. V oranžovej nohavice. Choďte do toho. Publikum: Nie, tie prvé. Publikum: Nie, ja som len povedať Nemal som svoju ruku. OK. Takže ak ste boli volať že prvýkrát, teraz zhrnúť, hovoríme, že rovnakým spôsobom, x, y, rovnako ako každý čas? HANNAH Blumberg: Jo. Takže tieto dve v podstate robia rovnakú vec. Divákov: A aká je výhoda použitie jedného alebo druhého? HANNAH Blumberg: žiadna výhoda použitie jedno alebo druhé. Chcel som vám ukázať dva rôzne časti syntaxe. Mnohokrát, kde anonymný Funkcie majú zmysel ak je argument na iný funkcia by mala byť funkcia. A uvidíme, že v len na druhom mieste s Ajax. Takže ak to nedávalo žiadny zmysel, uložte ho do zadnej časti hlavy. To je miesto, kde anonymný Funkcie môžu byť užitočné pretože to nie je naozaj stojí za to dávať to meno, pretože sme len bude raz použiť. Jo. Divákov: Ak je x a y neskôr zmeniť na, bude súčet zmení rovnako? HANNAH Blumberg: Ak je x a y zmena neskôr, zhrnie zmení rovnako? Takže to je vlastne ja myslím, niečo, čo je, znova, to jednoducho cíti veľmi odlišné z C. Toto nie je hodnota. Nie je to 5. Je to len samotná funkcia. Takže akonáhle si ho parametre, potom budete skutočne vypočítať hodnotu. MARIA Zlatkov: A potom môžete volať funkciu a používať to, aby si nejakú hodnotu. HANNAH Blumberg: Správne. Presne tak. Jo. Divákov: Takže ak ste práve uložte ju do premennej, ako var x sa rovná súčtu dvoch values-- HANNAH Blumberg: Jo. Takže ste mohli len robiť var súčet sa rovná súčtu dvoch hodnôt. Jo. Nejaké ďalšie otázky? Jo. Divákov: Ale by to zmiasť sumu a sumu? Rovnako ako Ak zavoláte svoje variabilné sumy, by volanie funkcie sumu? HANNAH Blumberg: MM. Mm. Ak ste niečo ako, suma sa rovná súčtu 2, 5? Divákov: Jo. HANNAH Blumberg: Verím, že by sa prepísať hodnotu sumy. Takže ďalší zaujímavé vec, o JavaScriptu je to, že jedna premenná môže trvať na veľa rôznych typov. Zlá prax. Nemali by ste robiť niečo ako to, čo ste práve povedal. Ale v C, ak som je nastavený rovná celé číslo, vieme, že to nikdy stane reťazec. To nie je prípad v JavaScripte. Jo, dobrá otázka. ešte niečo? Dobre. Robiť všetko presne na čas. Vedenie ísť. Dobre. Ak sa pozrieme na pole v JavaScripte, tu je rýchly príklad pole reťazcov. A pole môže rásť dynamicky. Oni nemajú pevné veľkosti rovnakým spôsobom že to robia v C. Môžeme prístup k prvky s len v hranatých zátvorkách. To vyzerá veľa ako PHP a množstvom ako je C, kde sa môžeme povedať, v tomto prípade, keby som chcel slovo JavaScript, urobil by som to sa arr hranatých zátvoriek s 0, 1, 2. A potom, ak si spomínate, keď sme v C chcel dostať dĺžku poľa, to bolo naozaj otravné. Ale v JavaScriptu, super ľahké. Všetko, čo robíme, .length. Dáva jej dĺžky. To je všetko. Divákov: To je jednoduché. HANNAH Blumberg: Jo, robí váš život oveľa jednoduchší. OK, object-- tam nie je. Objekty v JavaScripte pocit veľa ako structs v C a asociatívne pole v PHP. Takže to, čo sme videli Veľa je JSON, ktorý je skratka pre JavaScript Object Notation. A je to v podstate spôsob, štruktúrovať naše dáta. Tak uvidíme príklad, asi najjednoduchšie. Tak tu je príklad objektu ktorý ukladá triedu, CS50. A keď hovorím triedu, mám na mysli samozrejme, Nie je jako-- jo, beh, CS50. A uvidíte, že všetko v objekte sa bude obsiahnutá do zložených zátvoriek. A začneme spájať názvy polí alebo klávesy s rôznymi hodnotami. Takže môžete začať vidieť, ako tento druh cíti ako asociatívne pole v PHP. Takže budeme spájať poľa alebo názov kľúča, samozrejme, s reťazcami, CS50. Budeme mať inštruktora. Budeme musieť TFS. Budeme mať niekoľko psets a budeme mať zaznamenané. A jedna super vec k poznámke je všetky tieto veci majú rôzne typy, a to je úplne v poriadku. To je v poriadku pre objekt, v skutočnosti, je to asi očakávali pre objekt mať kombinácia reťazcov a čísla a Booleans a polia a čokoľvek iné, čo by ste mohli Chcete mať vo vnútri vášho objektu. A všimnite si, že tieto sa bude názvy alebo kľúče, a potom sme len nastaviť tak, rovný s malou hrubého čreva. Divákov: Čo presne JSON znamená? HANNAH Blumberg: Čo presne to JSON znamená? JSON len skratka pre JavaScript Object Notation. Je to len spôsob, ako formátovania. Jo. Je to spôsob, ako formátovania naše dáta. V jazyku C, je to structs. V PHP, je to asociatívne pole. V JavaScriptu, máme objekty. Divákov: Takže CS50 to objekt? HANNAH Blumberg: CS50 je objekt v tomto prípade. A teraz, ako to vlastne prístup tieto polia alebo zmeniť týchto polí. Predpokladajme napríklad, že sme sa rozhodli, že ste chcel jeden menej pset tomto semestri. Namiesto toho, deväť, my sme len bude mať osem. Ako by sme to zmeniť? Oh, zle. Existujú dva spôsoby, ako to môžeme urobiť. Číslo jedna je s bodkou notácie a číslo dva je s hranatých zátvorkách notácie. Tak napríklad, ak I chceli zmeniť alebo prístup poľa psets v našej CS50 objekte, čo budem robiť, je CS50.psets, takže názov objektu bodkou názov poľa alebo kľúče. Veľmi podobne, to je presne to, ekvivalentná k tomu CS50, a potom v hranatých zátvorkách, psets. V pohode? Jo. Divákov: Tak je JSON technicky stále JavaScript aj keď v psets sme oddeliť ju [nepočuteľných]? HANNAH Blumberg: Iste. Takže otázka znie, sú JavaScript a JSON ekvivalent? Takže JSON je zápis, v zásade tak, že sme sa zapísať objekt z jazyka JavaScript. Takže to nie sú úplne rovnaké. Povedal by som, že JavaScript tam sú objekty v JavaScripte. JSON vezme tie objekty a vytlačí je a zobrazuje ich alebo ukladá ich v príjemnom spôsobom. Takže JSON nie je programovací jazyk, tak, že JavaScript je. Je to len zápis pre v JavaScripte naše objekty. Jo. Divákov: Takže čo presne [Nepočuteľný] kompletnú? HANNAH Blumberg: Iste. Takže to vlastne nič nerobí. To je len spôsob, ako získať prístup. Takže povedzme, že by sme chceli zmeniť počet problémových sád z deviatich na osem. To, čo robíme, je niečo urobiť ako CS50.psets = 8;. Jo, skvelá otázka. To je len ukázať vám syntax. Nie je v skutočnosti robiť nič užitočného. Nejaké otázky? Pohybujúce sa vpravo pozdĺž. Takže poďme sa pozrieť na rýchly príklad toho, ako JavaScript funguje, pretože som vám povedal, že to robí všetky tieto veci a chladné nám umožňuje upravovať webové stránky. Poďme sa skutočne vidieť v akcii. Tak sa napríklad tento súbor HTML. A vec, ktorú chcem, aby si zamerať, je tento konkrétny tag, ktorý je tlačidlo, s id search_button. Je to len na stránke. Takže teraz uvidíme, čo môžeme vlastne robiť. No, predpokladám, že keď kliknete na toto tlačidlo, chceme urobiť alert-- ste klikli na tlačidlo. Pozrime sa, ako to môžeme urobiť. Takže window.onload-- to nie je niečo, že ste videli v triede, a preto nebudú musieť poznať na kvíz. Ale to v podstate hovorí, OK, call Túto funkciu použite pri načíta okno. Tak to je len trochu nastavenie kódu. Nebojte sa toľko o tom. To, čo chcem, aby ste zamerať, je tu. Hovoríme var searchButton rovná document.getElementById search_button. Takže, ako asi tušíte, čo to robí, je to hovorí, OK, choď nájsť prvok s ID search_button. A teraz máme, že Aktuálny prvok a ja som chystá uložiť v variabilný searchButton. A teraz môžeme skutočne používať tento prvok a zmeniť alebo otvoriť svoje hodnoty, takéto veci. Môžeme skutočne začať zapojiť s webovou stránkou. Tak tu hovorím, v poriadku, teraz, keď mám toto tlačidlo, keď na neho kliknete, volanie tejto anonymné funkcie. Takže toto je miesto, kde anonymný Funkcia sa stal užitočným. A čo robí funkcie robiť? No, to jednoducho nazýva funkcia upozornenia a hovorí, ste klikli na tlačidlo Hľadať. Takže čo sa stane, keď pôjdem tam, kam tento HTML žije a ja kliknite na tlačidlo, Dostanem vymysleného trochu upozornenie ktorý hovorí, že ste klikli na tlačidlo. Takže veci, aby sa zamerali na here-- document.getElementById dostane konkrétnu HTML prvok s daným ID. A teraz môžeme nastaviť čo sa má stať, keď že určitý prvok kliknutie. Divákov: Musíme dať všetko v? HANNAH Blumberg: Sorry? Divákov: Musíme fyzicky kódovať všetko, že? HANNAH Blumberg: Musíme fyzicky kódovať všetko, že? Áno. Nie je to trochu nepríjemné? To je veľa kódu. Divákov: Dalo by sa niečo importovať. HANNAH Blumberg: Správne. Mohli by sme použiť niečo. A v particular-- ach, to je mi hovoril, musím naučiť sekcii. Najmä, poďme používať knižnicu jQuery, pretože to bolo naozaj dlhá a naozaj otravné a ja chcem, aby bolo možné ho zjednodušiť a aby bolo kratšie a jednoduchšie napísať. Takže jQuery je knižnica JavaScript. Takže JavaScript je programovací Jazyk; jQuery je knižnica. A to robí veľa vecí jednoduchšie. To je meniace sa a ísť naprieč dokument HTML oveľa jednoduchšie. To je akcia pre manipuláciu s jednoduchšie. To robí animácie jednoduchšie a to je Ajax jednoduchšie. Takže poďme sa skočiť do dvoch tie veci hneď teraz. Prepáčte mi. Než tak urobíme, niektoré základné syntaxe. To je to, čo väčšina volaní knižnica jQuery vyzerať. Používame tento dolár sign-- žiadne pripojenie znamenie PHP, Len inconvenient-- na meno Volič, bodka, a potom akcie. Takže poďme sa pozrieť na nejaké konkrétne príklady, ktoré. Takže to je vlastne rovnaký Kód zo snímky udalosti. Tak dlho, škaredá vec sa stane to oveľa krajší, menšie vec. Takže poďme sa pokúsiť rozčleniť tento systém. To hovorí, OK, jQuery-- tento dolár sign-- jQuery, nájdite mi okno. Tak to je volič. Keď sa to načíta, túto funkciu volať. Takže to je všetko vo vnútri. OK. Zatiaľ je všetko dobré? Dobre. Teraz, jQuery, nájsť ma o tá vec s ID search_button. A čo na neho kliknete, volanie tejto funkcie. A potom sa táto funkcia je presne to isté. Len to trochu výstrahy, ste klikli na tlačidlo Hľadať. Takže je to naozaj pekné. Je to naozaj kondenzuje a zjednodušuje náš kód. Ako som vedel, že je to ID search_button a nie ako triedny search_button? Publikum: hashtag? HANNAH Blumberg: Jo. Tento symbol hash, je to len ako CSS. Takže pamätajte, že sa CSS, keď sme sa chcel vybrať niečo podľa ID, sme použili libry. A keď sme chceli vybrať niečo podľa triedy, používame bodku. Skvelé. Dáva zmysel? Takže jQuery má len aby sa náš život jednoduchší. Jo. Divákov: Takže som trochu zmätený, ako s tým, ako anonymný funkcia pracuje. Myslíte si názov tohto anonymný funkcie, fungujú? Ako sa to volá? HANNAH Blumberg: Iste. Takže funkcia je len kľúčové slovo hovorí, že som asi pre definovanie funkcie. Publikum: Oh, OK. HANNAH Blumberg: OK? A potom sme to prejsť ako Argument to-- poďme tento vnútorný one-- funkciu click. Tak jo, takže funkcie, táto anonymný funkcie, sa stáva skutočný argument. Takže pamätajte v JavaScripte, my môže liečiť funkcie ako hodnoty. Publikum: Oh, OK. HANNAH Blumberg: Jo. Páči sa mi, že "Aha." Nice. Ďalšie otázky? Time? MARIA Zlatkov: Dobrý. Dobre. HANNAH Blumberg: Úžasné. Niektoré rýchle užitočné jQuery. Nebudem ísť cez všetky z nich. Tieto snímky budú up on-line trochou neskôr, takže môžete skontrolovať it out o niečo neskôr. Ale v podstate, generálny vzor drží kde hovoríme, OK, hej, jQuery, tu je moja Volič, a potom je tu akcia. A vy môžete robiť veci, ako je prístup k Hodnota formy, prístup k niektorým HTML, Ovládanie čo sa stane, keď používateľ predložia formulár, také veci. Áno. Divákov: Takže v skúška, budeme potrebovať vedieť, veľa z dokumentácie jQuery. Takže vzhľadom k tomu, že sme sa kopírovať / vložiť jQuery dokumentácia k našej ťahák, Kde je čiara? Rovnako ako to, koľko potrebujeme vedieť? HANNAH Blumberg: Veľká otázka. Otázkou je, v podstate vzhľadom na to, že vás nemôže získať prístup k dokumentácii k jQuery počas testu, koľko by ste mali vieš? Nemali by sme očakávať, že vám príde s nejakou náhodnou funkciou že by sme vás očakávať, že Google. Veci, ktoré sú poctivá hra sú by som hovoria len tak všeobecné syntaxe, budú môcť vybrať podľa ID a podľa class-- tak len ako CSS. A potom skutočné funkcie themself, budeme pravdepodobne povie. Jo. Divákov: Takže keď zvolíte podľa triedy by znamenalo bod. HANNAH Blumberg: Áno, presne tak. Dobre. Ak vyberiete podľa triedy, bude to sa bodka namiesto libry. Áno. Publikum: Chceli by ste prejsť tým rozdielom, medzi výberom podľa ID a podľa triedy? HANNAH Blumberg: Iste. Rozdiel medzi výberu ID a výberu podľa triedy. Tak ako hovorí Maria a trochu skôr, tam môže byť iba jedným prvkom HTML s daným ID, vzhľadom k tomu, triedy, to nám umožňuje skupine banda rôznych prvkov dohromady, takže veci, ktoré sa vzťahujú, ale nie presne to isté. Znamená to, že odpoveď na otázku? Úžasné. Áno. Divákov: Čo keď máte viac veci, ktoré sú v rovnakej triede? HANNAH Blumberg: Čo sa stane, ak máte viac vecí, ktoré sú rovnakej triedy? Tak, napríklad, keď sme len s použitím čistého JavaScript budeme robiť niečo také document.getElementsByClass. A potom, čo to vlastne robí je vráti pole prvkov. A budete musieť buď iterácii je alebo zistiť, ktorý z nich chcete. Nebude to dať Ste jediný prvok. Bude to, aby vám pole prvkov. Veľká otázka. ešte niečo? Úžasné. Takže si myslím, ak ste oboznámení s akýkoľvek jQuery ste videli v pset, mali by ste byť dobré ísť. Otázka? Ale nie. Naozaj musím učiť. Odpočívajte. Bude to v poriadku. Budem tam dostať. Poďme sa baviť o Ajax. Takže Ajax bude je-- dobre, začnime s tým, čo to znamená. Je to skratka. To je skratka pre asynchrónny JavaScript a XML. A XML je v podstate bude [Nepočuteľný] s typom našich dát. Ale my sme to vlastne použitý XML. Namiesto toho stačí použiť JSON. Takže v podstate, je to nejaký data-- asynchrónne, JavaScript, a dáta, V tomto prípade, JSON. A náš cieľ, ako sme už uviedli trochu skôr, je, aby bolo možné, aby sa Požiadavka, že sa žiadosť robiť jeho vec v pozadia, ale aj naďalej robiť, čo sme boli v úmysle robiť. A potom, keď sú tieto informácie pripravený, potom budeme začleniť ju. Takže poďme sa pozrieť, čo to v skutočnosti vyzerá. A to, mali by ste byť trochu povedomý od pset8, ten, ktorý ste práve obrátil. Tak tu je platný jQuery funkcia, ktorú by sme mohli Chcete vedieť about-- tento znak dolára. Tak to hovorí funkcie jQuery, .getJson. A to, čo táto funkcia robí, je to trvá URL a niektoré parameters-- takže myslím, že v prípade, z pset8, bolo to ako, URL bola articles.php a Parametre bol go = nejaký poštové smerovacie číslo. A hovorí, OK, podať žiadosť adresovanú Táto adresa URL s danými parametrami. A to sa jednoducho stáva. Keď to skončí, je to buď bude úspešne dokončiť alebo to bude na neúspech. Tak to je ekvivalent výzvy Rob a požiadať ho, aby niečo urobiť. A potom, keď mu zavolá späť, je to buď chystá povedať, že som urobil, alebo som zlyhal. Takže v prípade, kam hotovo, hovoríte, OK, ja som urobil. A potom budete volať túto funkciu. V tomto prípade, bude to byť funkcia, ktorá zoberie nejaké informácie. Ten zvyčajne zaujíma je dát, Dáta, ktoré sme vlastne vrátili ako výsledok volanie .getJSON. A vy môžete urobiť niečo s ním. Takže v prípade pset8, my zobrazené ako zoznam. Fail bude funkcia ktorá je aktivovaná, ak požiadavka zlyhá z akéhokoľvek dôvodu. A v prípade pset8, my len console.log to. Akékoľvek otázky na to? Jo. Divákov: Môžeme stačí použiť funkciu theta namiesto funkcie, textStatus, jqHXR. HANNAH Blumberg: Iste. Tak jo, myslím, že v pset, sme práve videli funkciu dáta. Takže je to len the-- áno, OK. To je to, čo sme videli v pset. To je úplne v poriadku. To sú len ak ste chceli vytiahnuť viac informácií, to sú veci, ktoré by ste mohli dostať od .getJSON. Dobrá otázka. ešte niečo? Jo. Divákov: Takže .getJSON je Ajax? HANNAH Blumberg: OK. Tak toto je ten druh chúlostivé časti. Jedná sa o funkciu, ktorá umožňuje jQuery ste k tomu asynchrónne volanie. A tie asynchrónne volanie, to je čo sme na mysli ako Ajax. Jo. To mi trvalo naozaj dlho ťahať od seba, keď som bol študentom. Divákov: Môžete povedať, že znovu? HANNAH Blumberg: Jo. Môžem povedať, že znovu? Táto funkcia .getJSON, to je funkcia jQuery. A bude to robiť asynchrónne volanie. A tieto asynchrónne volanie, máme bol na mysli tie, ako Ajax. Nejaké ďalšie otázky? Máme len pár minút odišiel. A Maria sa chystá zabaliť s bezpečnosťou a potom pôjdeme napríklad len o hotové. MARIA Zlatkov: Super, OK. Tak to je-- len vziať pár sekúnd sa pozrieť cez to. A to nie je niečo, čo naozaj skvelé. A môže mi niekto povedať, prečo? To, čo sa deje v foo a môžu sa mohol potenciálne vyústiť v niečo zlé, a čo, že sa volá? Jo. Divákov: V prípade, že tvrdenie, že je prešiel v roku je viac ako 12 znakov, to môže pretekať. MARIA Zlatkov: Správne. Perfektné. Ako sa to volá? Práve ste sa o tom zmienil. Divákov: pretečeniu vyrovnávacej pamäte. MARIA Zlatkov: Jo, pretečeniu vyrovnávacej pamäte. Tak to je niečo, čo označujeme ako pretečeniu vyrovnávacej pamäte. A vidíme, že vo vnútri foo, sme formulovali sme vyrovnávacej pamäte, C, o veľkosti 12. Avšak, v hlavnej, my nie zistiť v žiadnom prípade vôbec či tak, že argv1-- bol druhý argument. Nechceme kontrolovať, či Veľkosť je to vhodné. Takže ak sme mali Používateľ so zlými úmyslami, najmä ktorí sa dať do nejakej tvrdenie, že bol dlhšie ako 12 rokov, a potom prípadne za hranice, ktoré Argument, mal nejaký spustiteľný kód že sa snaží urobiť niečo zlé s tým; potom to, čo by sa stalo, by sa prepísať návrat adresa funkcie foo, spôsobujúce funkciu, ktorá pri vracať na vykonanie tohto kódu. A potom sa zlé veci sa môže stať. Má to zmysel, aby všetky? A ako môžeme chrániť proti tomu? Nejaké návrhy? V podstate, vo vnútri potenciálne foo, ako môžeme skontrolovať, aby sa ubezpečil , Že sa nemôže stať? Divákov: Keď sa prekročí veľkosť 12, by ste prideliť ďalšie pamäť? MARIA Zlatkov: návrh je, prideliť prekročené ďalšie pamäť veľkosti. V skutočnosti, môžeme urobiť niečo oveľa jednoduchšie, než je tiež. Môžeme len získať dĺžka reťazca argumentu, ktorý je zadaný, skontrolovať, či, ktorý je menej alebo rovné 12-- čo je to, čo to chceme byť, pretože nechceme to prekročiť medze našej pamäti. A potom, ak to tak nie je, my môže pracovať s argumentom. A potom, ak sa tak stane, budeme skutočne chcú na Yello potenciálne u používateľa. Ale to je, ako by sme to urobiť. Áno. Publikum: Mohli by ste vysvetliť memcpy naozaj rýchlo? MARIA Zlatkov: Oh, prepáč. Áno. Memcpy vezme čokoľvek je-- ľúto, OK. Memcpy berie, čo je v baroch, čo je odovzdaný na foo ako argument príkazového riadku. Takže to bude trvať argv1. Argv1 sa nazýva bar tu. Takže to bude trvať a baru to bude kopírovať to do cca. Divákov: OK. MARIA Zlatkov: A bude to copy-- tretí argument jednoducho sa odkazuje na to, ako veľmi to bude kopírovať do cca. Divákov: Ah. Takže toto je kopírovanie všetko to potom. MARIA Zlatkov: Jo, je to kopírovanie všetko. Jo. Po prvé, sme sa uistite, že bar nie je rovná null, pretože je to ukazovateľ. Potom sme si dĺžka reťazca bar. Snažíme sa o to, že je to menšie ako alebo rovný 12. A potom preto, že sme uistil, môžeme vlastne memcpy a uistite sa, že to je v poriadku. Nejaké otázky? Skvelé. Mám dve true alebo false otázky. Môže mi niekto povedať hneď ak ide o pravdivé alebo nepravdivé? Áno, je to falošné. Presne tak. Obaja z nich sú falošné. Takže za použitia jedno heslo je nikdy naozaj dobrý nápad pretože ak niekto vie, vaše heslo, môžu len prístup ku všetkým vaše ďalšie účty. A potom ikony robiť nič aby bola zaistená bezpečnosť. Mali by sme sa zvyčajne vyzerajú na HTTPS miesto HTTP a URL. A niektoré ďalšie druhy útoky, ktoré sme uvádzané že David je uvedené v prednáška, SQL injection útoky. Už sme videli, že ak budeme ne-- Funkcia CS50 dotaz zaručuje, že SQL injection útoky nemôže nastať. Ale keď sme neboli používať CS50, citát, koniec citátu "v dotazu" by sme sa uistiť, že vstup užívateľa nie je vlastne nejaký SQL dotaz, ktorý spôsobí, všetko naše stoly byť zrušený alebo niečo zlé na stane s našej databáze. Session je únos iný typ útoku že sa stane, keď niektoré zlé osoba používa relácie nejaké obete ID pre prístup k prihlasovacie údaje. Takže veľmi triviálne príklad, ktorý je ako keď máme verejného počítača, potom je zlý človek prihlási a potom majú súbory cookie, ktoré sú uložené. A cookies nemení na zasadnutí. Potom máme obeť ísť a potom sa prihlásiť na webových stránkach. Cookies sa nemení pre určitú reláciu. A potom obeť prihlási do webové stránky a potom odíde. A potom ten, kto sa vracia potom môžu aj naďalej používať svoje ID relácie pre prístup k ich informácie. Takže to je jeden z príkladov, ako sa to mohlo stať. A potom by som si starosti príliš veľa o zvláštny kód alebo čokoľvek ako to, ktoré by mohli spôsobiť to, ale má nejaký nápad, čo zahrnuté premenné sú v tom. A potom manipulácia hlavičky Dáta je iný typ útoku že má Dávid hovoril o. A to len odkazuje na čo sa môže stať, keď boli reakcie, HTTP odozva vnútri našej hlavičky nie je správne dezinfikujú. A každý z fields-- napríklad, ak niekto prepíše jeden z hlavičky Hodnoty, ktoré majú obsahovať nič viac, než čo by mali contain-- a vlastne obsahovať, napríklad, 200 OK stavový kód, potom sa by mohli robiť škodlivý veci, keď nemáš. Ale ja by som si starosti príliš moc o osobitným kódom ktoré by mohli spôsobiť to, len trochu porozumenia na vysokej úrovni také veci. Myslím, že to je všetko, že musíme pokryť. Amazing. Každý, kto má nejaké otázky u ktoréhokoľvek z vecí, ktoré sme na ktoré sa vzťahuje? Áno. Divákov: Takže jeden druh viac logistické otázka. Je zameraná predovšetkým obsah na veci, po kvíz 1? MARIA Zlatkov: So Otázkou je, je obsah zameraná predovšetkým na veci po kvíz 1? Takže je kladený dôraz na neskôr kvíz 1, s výnimkou že sa musíme sústrediť na veci v pset5 a mnoho dátových štruktúr že sa vzťahuje. A nemôžeme povedať, že sme môžete ignorovať čokoľvek predtým, než že preto, že nadväzuje na to, ako dobre. Tak sa zameriavajú na to, že navyše pset5 materiál ako zahŕňajúce prepojené zoznamy, stohy, fronty, a všetko, čo že Hannah prešiel. HANNAH Blumberg: Správne. Jo, išli sme cez všetky veci C hneď na začiatku veľmi rýchlo. Ale uistite sa, že preskúmať. Vráťte sa späť a pozerať sa na kvíz 0 hodnotení. Pár viac logistické poznámky, Len keď máme vašu pozornosť. Budeme mať úradné hodiny a to ako v pondelok a utorok večer. Chystajú sa byť v MD 119. To všetko je na webových stránkach, tak ak nechcete počuť, žiadne starosti. MARIA Zlatkov: 08:30 do 11:00. HANNAH Blumberg: Jo, 08:30 do 11:00. Budeme tam. Budeme tam odpovedať na otázky. Je to celkom chladno a zábavné. Vy môžete klásť žiadne otázky že budete mať na kvíz 1. A kvíz 1 je Streda, tak veľa šťastia. Ak máte akékoľvek otázky, možno prísť s nami hovoriť tady one-on-one. Super. Ďakujem veľmi pekne. MARIA Zlatkov: Díky moc, chlapci. Divákov: Hurá. [APPLAUSE]