JASON HIRSCHHORN: Welkom, iedereen, tot en met week 10. Dit is een spannende week omdat morgen is Quiz 1, die we zullen krijgen om in een tweede. Vandaag in doorsnede, we gaan om te gaan over een aantal middelen voor de quiz, en dan zal ik alle antwoorden vragen jullie te hebben. Uiteindelijk zullen we eindigen met enige oefening problemen. We kunnen de hele sectie door te brengen het beantwoorden van vragen. We kunnen de hele sectie door te brengen gaan over de praktijk problemen. We zullen alleen uitbreiden in te vullen de ruimte en tijd hebben we. Dus zette ik deze lijst iedere week, maar Het is bijzonder belangrijk deze week. Voor het bestuderen, als je niet begon al, oh boy. Maar hopelijk heb je al begonnen. En je gaat door de materialen en middelen hier vermeld. Ik zou sterk aanbevelen een aantal van deze. In het bijzonder, dictaten zijn ongelooflijk belangrijk en nuttig. De study.cs50.net biedt een grote primer op een hoop de onderwerpen die we behandeld. Het heeft ook een aantal grote praktijk problemen. En dan, Google is ook geweldig. Ik weet niet hoe je het zou gebruiken voor. Maar Google, als goed. Reik uit naar me op als u een vragen, opmerkingen of problemen. Kijk over de beoordeling sessie dia's van gisteravond. Of, als je wat tijd, bekijk de video. Ze bieden een heleboel nuttige materiaal en informatie. En probeer dekken zo niet alle, veel de onderwerpen die we hebben behandeld en dat u zou kunnen zien op de quiz. Spreken van de quiz, die zal morgen. Het is 75 minuten lang. Velen van jullie nemen het op 1 uur, en sommige van jullie zijn nemen het op 5:30. Voor de tijd die je neemt het en de locatie je neemt, zorg ervoor dat u kijken op de document op de CS50.net homepage. Vergeet niet dat je kunt krijgen een 8 1/2 met 11 vel om mee te nemen. Vaak hebben mensen niet dit gebruiken sheet helemaal tijdens de quiz. Maar echt, het is een ongelooflijk behulpzaam studie instrument. Zo samenstellen dat blad is wat Ik bracht waarschijnlijk drie of vier uur doen toen ik studeerde voor CS50 en dat was gemakkelijk de meest behulpzame manier kon ik studeren voor de quiz. Dus zelfs als je sommige andere mensen hebben studiegidsen om naar te kijken en gebruiken als verwijzingen, ik beveel maken van uw eigen studiegids, waardoor dat spul bij elkaar. Dat helpt echt je leren al het materiaal. Last but not least in deze rubriek, na de quiz morgen is er een meer lezing - volgende week maandag. Er is nog een gedeelte, niet naast Dinsdag voor Thanksgiving, maar de Dinsdag daarna. We gaan samen een ontmoeting voor een laatste afscheidsfeest en doen ook een aantal leuke dingen te krijgen jullie enthousiast over verdere studies in de informatica. Er is nog een project, een meer eerlijk, nog een Hackathon. We naderen het einde van CS50, die is spannend - maar ook, als je net als me, een beetje verdrietig. Voordat ik verder gaan, heeft iemand nog Voor vragen over wat we tot nu toe gedekt? OK, goed laten we gaan over een aantal vragen die je hebt voor de quiz en onderwerpen we zouden kunnen dekken. Dus dit is een lijst die ik in elkaar gezet. Het is niet uitputtend, maar hopelijk zal uw geheugen op te frissen als je hebben een aantal vragen over een van deze onderwerpen, of als u vragen hebt over praktijk problemen van quizzen in de afgelopen jaren. Ik had een paar vragen die waren gemaild om mij, maar ik wil af te houden op die even. Heeft iemand nog vragen hebben, problemen die zij niet begrijpen, antwoorden ze niet begrepen om ons begonnen? Avi. PUBLIEK: Kun je alleen gaan over DOM en Ajax echt snel? Zoals, wat we moeten weten of moet begrijpen over hen? JASON HIRSCHHORN: Ik ga om te beantwoorden algemeen deze vraag, wat doe ik moet weten over bepaald onderwerp x? Want ik heb het gevoel dat velen van u gaan om te vragen dat, of zijn nieuwsgierig naar. Dus voor zover het onderwerp was bedekt met lezing, of sectie, of op study.cs50.net, een probleem stellen, je vertrouwd zijn met het zou moeten zijn. Dus je hoeft niet op elk type weten van de tag die beschikbaar zijn in HTML is of elk type attribuut of eigendom kun je iets in CSS geven. Maar als je zag het in een lezing voorbeeld, als je het zag in een probleem set, moet u waarschijnlijk bekend zijn met het, vooral dingen die je zag in collegezaal. Dus hebben we het document besproken object model een beetje in sectie, meer dus in collegezalen. Je moet bekend zijn met dat veel van. En je moet bekend zijn met Ajax dezelfde mate. We zagen nooit ongelooflijk gevorderde of gecompliceerde voorbeelden van Ajax, dus je bent niet van plan om te worden gevraagd doen iets ontzettend gecompliceerd. Maar je zou worden gevraagd, hoe kan ik een Ajax bellen met behulp van jQuery? Dat is iets wat je hebt een aantal gezien keer voor, zowel in de beoordelen sessie en in collegezalen en het is slechts twee-ish regels code. Dus dat is iets wat je moet bekend te zijn met. Maar nogmaals, voor al deze onderwerpen, als je het hebt gezien voor, het is eerlijk spel. En we kunnen je vragen - uiteraard, we zijn ga je je dingen vragen nog niet eerder gezien. Coding iets wat je niet eerder gezien. Wat niet wil zeggen dat je niet gezien de instrumenten op te lossen dat probleem voor. Je hebt deze tools gezien. Bijvoorbeeld, op quiz 1, indien je nodig hebt om strlen coderen. We hebben niet eerder gecodeerd strlen. Maar je weet hoe je een te gebruiken voor loop, je weet hoe te gebruiken als de omstandigheden. Je weet hoe je variabelen in C. schrijven Het gaat om het zelfde ding hier te zijn. Je bent niet van plan om te worden gevraagd om te doen alles wat je nog niet eerder gezien, maar je kan gevraagd worden om, zoals, zet samen iets op een nieuwe manier, of oplossen van een ander soort problemen. Sorry, dat was niet specifiek voor uw vraag, maar ik kan geen antwoord geven over elk onderwerp wat je wel of niet te weten. Maar ook, sorry, laatste ding op dat. We hebben aanzienlijk meer tijd besteed op lijsten met links dan wij op Ajax. Je hebt Ajax niet in een probleem set. Een van de hoofdkenmerken van deze probleem stellen dat was lijsten met links. En we brachten veel tijd in college en punt gebruiken. Dus kansen zijn lijst met links zal meer komen vaak op de quiz dan Ajax wil. Of de vragen die te maken hebben met een link lijst zal meer punten waard zijn. Dus je kan zeker focussen en smalle in op dingen die meer waarschijnlijk op de proppen komen, want we hebben besteed meer tijd aan hen. OK andere vragen? Yeah. PUBLIEK: Kunnen we gaan over het gebruik van anonieme functies in JavaScript? Ik ben een beetje in de war zijn over. JASON HIRSCHHORN: Dus in JavaScript - Ik probeer te bedenken hoe ik zou dit kunnen schrijven over - dus laten we daadwerkelijk openen van deze code. Dus dit is code die we vorige week. En je hebt dit eerder gezien als je waren hier in paragraaf vorige week. Of je hebt iets gezien Soortgelijke eerder. Maar je kunt kijken naar deze eerste lijn. Dit is hoe je begint - iedereen eerder gezien dit. Als u wilt wat JavaScript-code te zetten, je zet het in deze, in de veronderstelling u gebruikt jQuery. Dit zegt, doe niets totdat het document geladen. En dan, Curt, hier zie je we iets als dit te doen - functie geopend Paren, gesloten Paren. Dus we zijn dit niet geven functie een naam. We zijn niet van plan om deze functie te definiëren hoort te lopen en vervolgens noem het een paar keer. We zijn net dit document zeggen vindt reeds een functie. Een paar dingen te doen. En we willen niet om de tijd door te brengen het geven van een naam of opslaan voor eeuwigheid. We willen gewoon een aantal dingen uit te voeren. Dus een anonieme functie sort van dient dat doel. Als je niet van plan om iets te gebruiken over en weer, dus je hoeft niet om het een naam geven - je gewoon willen gebruiken eenmaal - zou je gewoon zeggen functie, voor Bijvoorbeeld, in dit geval, en je bent gewoon het definiëren van iets dat kon je een naam te geven. Zoals, we konden deze functie uit te trekken en geef het een naam en dan roepen dat functioneren hier. Maar we hoeven niet omdat we niet tijd wil verspillen het geven van een naam of iets verspillen in onze naam de ruimte. En je zult zien dat veel. Zo zien we dat veel in deze code, maar je hebt dit eerder gezien bij je iets op - lopen dit soort code. We kunnen de code die we willen definiëren worden uitgevoerd wanneer we klikken, in dit geval, deze ID, als een aparte functie en voer die functie. Maar in dit geval, zijn we gewoon overslaan die stap en het in te bewegen hier en alleen maar om het definiëren van alles dat we willen dat er gebeurt en niet het geven van een naam. Die nog misschien niet uw vraag beantwoord. PUBLIEK: Nee, het doet. Ik bedoel, ik denk dat ik gewoon niet echt krijgen waarom het een zou zijn functioneren helemaal niet, hoor. Omdat het niet echt geroepen. Het heeft niet echt een naam. JASON HIRSCHHORN: Het is een functie in de zin dat het een aantal stappen, zoals je zou in een functie te zetten. En dan is dat de reden waarom we noemen het anonieme functie. We gaan niet om het een naam geven. We gaan niet proberen te verspillen om het te noemen, maar we konden. Anoniem functies, u kan altijd een naam geven. Dus bijvoorbeeld, deze code hier, konden we deze code in een zet functie en dan bellen deze functie hier. In plaats daarvan, zeggen wij, we gaan niet lastig te vallen met dat. We gaan gewoon schrijven het allemaal hier. Het is net als soms, als je wilt schrijven een vier lus in C - jullie hebben dit eerder gezien - misschien ben je itereren door een forloop in i gelijk is aan 0. Ik minder dan strlen. Of je gaat door een aantal array, kunt u matrix opslaan index i in bepaalde variabele. En u die variabele gebruiken. Dus je hoeft niet te matrix herschrijven bracket ik over en over en voorbij. En dat is een soort als een dummy variabele. Het is niet het dienen van veel ander doel dan uw code een beetje schoner te maken en makkelijker te lezen. Soortgelijke functie hier. Alleen maakt het een stuk makkelijker, maar functioneel is er geen verschil. Is dat een antwoord op je vraag? PUBLIEK: Ja. JASON HIRSCHHORN: OK .. Mario? PUBLIEK: Gisteren ze zetten vaak functie haakjes evenement. Betekent dat iets? Of is het voor zaken als zullen doen document.ready functie evenement. JASON HIRSCHHORN: We hebben dit gezien, en Nogmaals, dit zijn kleine dingen Waarschijnlijk Ik wil niet besteden te veel tijd aan. Want soms Ik wil niet dat mensen krijgen hysterisch dat ze niet gehoord over deze dingen dat veel. Maar we spraken een beetje over event handlers. Dus iets gebeurt, en vervolgens Deze functie wordt uitgevoerd. En dan willen we ook weten sommige details over wat gebeurde aan dit evenement. Dus denk terug om probleem set 4. Dat is waarschijnlijk de makkelijkste manier om begrijpen dat in break out. Er was een code - als een gebeurtenis zou gebeuren, maar evenement kan veel dingen betekenen. Als zou kunnen betekenen van de muis wordt geklikt, zou kunnen betekenen dat je een pijl toets in te drukken, et cetera, et cetera. Maar het is allemaal opgeslagen in deze generieke ding genaamd evenementen. En dan kunnen we zeggen, is dit evenement dit ding? Of is dit evenement dit ding? Of, wat voor soort gebeurd met die gebeurtenis? Dus dat is de reden waarom je die variabele creëren er om die extra informatie op te slaan over wat er precies gebeurd is dat je gaat te willen gebruiken in de functie. Maar nogmaals, dat is waarschijnlijk een van de minder belangrijke dingen super te zijn vertrouwd zijn. OK, wat andere vragen die mensen hebben hadden, of struikelblokken die ze hebben ondervonden tijdens het bekijken? We komen terug aan die lijst. Hoe zit het tijdens de training quizzen, indien mensen al hebben genomen die? Wat waren enkele problemen die struikelde jullie op? Ik weet voor een feit dat vorig jaar quiz was echt moeilijk. Publiek: Kunt u uitleggen wat een SQL-injectie aanval is? JASON HIRSCHHORN: OK, geweldig. Dus we spraken over dit een beetje. Er is een lezing over de veiligheid. En nogmaals, zoals ik al eerder zei, dit is een terzijde. Maar u zal worden gefrustreerd op de quiz als je wat kleine twee punt gelezen vraag, en je bent zoals, wanneer heb ik ooit leren dat? Al die dingen in die lezingen dat je niet denkt dat je die nodig zijn om weet, of je zou kunnen verdoezelen omdat ze hebben niet te maken met de probleem set, die zal waarschijnlijk komen weer op de quiz. Dus, koel, leuke dingen die je gewoon dacht David vertelde voor u om genieten, vertelde hij u voor u om genieten en om je gewoon super zijn enthousiast over het leren van alles er leren over informatica. Die dingen komen ook op quizzen. Dus, zelfs deze kleine dingen die dat niet deden rechtstreeks betrekking hebben op uw probleem ingesteld, zoals jullie zijn bekend met uit Quiz 0, zal waarschijnlijk komen. En dit is een goed voorbeeld van iets. Dus een SQL injectie aanvallen is wanneer u nog wat informatie van de gebruiker en u wilt invoegen in een tabel met behulp van een SQL-insert statement, maar je heeft de ingang niet ontsmetten van tevoren. Dus, natuurlijk we hebben gezien SQL-instructies. Ik zal gewoon open te stellen - laten we gaan - gaan we naar de review - Ik denk, dat het bedekt? Ik denk Samala deed. Dus we kunnen krijgen - Publiek: Waar heb je dit gevonden? JASON HIRSCHHORN: Dus als je naar CS50.net, quizzen, en dan kun je scroll over en krijg slides uit de evaluatie sessie. Maar je kunt zien is dit een goed voorbeeld van een SQL-injectie aanval. We nemen wat informatie van de gebruiker en ze geven ons een string, en dan hebben we willen die string voegen in een database. Over het algemeen gaan we saneren dat ingang, waardoor er enkele personages die gevaarlijk zijn. Bijvoorbeeld, in SQL strings, deze citaten - enkele aanhalingstekens of dubbele aanhalingstekens - iets betekenen. Ze betekenen eindigen deze string hier. En dus als de gebruiker geeft u een of een dubbel aanhalingsteken, zouden zij proberen te struikelen uw SQL query en Steek wat slechte dingen in. En als ze dat doen, kunnen ze krijgen controle van de database of doe wat dingen die je niet wilt dat ze doen. Dus dat is waarom wanneer we nemen SQL queries, ontsmetten we de invoer voor schoot de database, die betekent ontsnappen we deze tekens. We praten over dat in een tweede. Maar lang verhaal kort, een SQL-injectie aanval is als je dat niet doet - als je geen zorgen voor de ingang gaven ze je, voordat je je databank, kunnen ze, zoals je ziet neer hier, een query dat, in feite - ze in hun code hier beneden en deze selecte lijn hier zal selecteren alles van de tafel, ongeacht van wat het wachtwoord is gegeven. Want je hebt het of 1 is gelijk aan 1. Dus het is eigenlijk, lang verhaal kort, een manier om over te nemen in de database. De vraag is dan, voor jullie, is waar in p sets 7 heb je alles ontsmetten de ingangen om uw SQL-query? Waar kwam die stap gebeuren? Waar moet je voorkomen dat SQL-injectie aanvallen gebeuren in p set 7? Yeah. PUBLIEK: Crypt? JASON HIRSCHHORN: Dus het was niet encrypten. We hebben niet te maken je dit voor deze bijzonder probleem stellen, maar het gebeurt in de query functie. We eigenlijk schreef het voor u, en wij zorgden voor de desinfecterende ingangen voor jou. Maar in de afgelopen jaren, de studenten hebben gehad met de ingangen van hun eigen soort. In p set 7, veel van jullie - laat me open te stellen een ander bestand. Dus je zult hier merken een hoop mensen, in probleemwijken plaats 7, heeft niet gebeld deze functie op strings. Deze functie htmlspecialchars, opnieuw - deze string kunnen sommige dingen hebben dat in HTML iets anders. Net als een brace, een vierkant, of een hoek beugel iets betekenen in HTML. En dus als je afdrukt dat uit naar de scherm of als je gewoon dat en drukken dat uit aan uw HTML, dat macht iets wat je niet verwacht te doen. Dus htmlspecialchars gaat over al die personages die speciale hebben vergader-en ontsnapt ze. Dus het wordt afgedrukt als de tekst u wilt zien, in plaats van verknalt uw HTML. We noemden die functie in de header. En veel mensen vergeten te noemen functie in de code die je aan het schrijven was. Dus, bijvoorbeeld, als een aandeel naam had een hoeksteun erin en je bent vergeten Om deze functie, die hoek noemen beugel kon hebben afgeworpen wat HTML eruit zag. Maar oproepen van deze functie zal ontsnappen dat dus het daadwerkelijk wordt afgedrukt als een hoeksteun en niet gooien van uw HTML-code. Dezelfde reden die we hebben gezien, soms, slashes voor dubbele aanhalingstekens in een printf lijn omdat we niet willen dat de dubbele aanhalingstekens Down the string. We willen ze af te drukken naar het scherm. Dus dit alles is hetzelfde idee. Is dat een antwoord op je vraag? PUBLIEK: Zoiets. JASON HIRSCHHORN: Heeft u een follow-up? Publiek: Ik denk dat de SQL-injectie aanval heeft te maken met dat? Ik begrijp niet hoe de twee zijn gerelateerd. Waarom zou je de specialChars? JASON HIRSCHHORN: OK, dus de SQL injectie aanval is wanneer u injecteert sommige kwaadaardige strings in iemands programma, en ze nemen het gewoon en lopen de SQL-query met een string je ze gaf. Zoals je hier kunt zien, dat problemen zou kunnen opleveren. Dus de manier waarop je voorkomen dat tegen die je hun snaar te nemen dat ze geven u - zo deze string hier - en je ontsmetten het. Je ontsnappen aan alle dingen die zijn potentieel problematisch. Dus je hoeft ze niet te interpreteren als iets dat betekent iets. En een voorbeeld van die met HTML is deze functie. Dus het is hetzelfde idee hier. En ik was gewoon tonen u andere voorbeelden van wanneer je hebt eerder gezien dit idee. Ontsnappen input van de gebruiker voordat u afdrukt het uit aan een scherm of zetten het in een SQL-instructie. Publiek: Dus in dit geval, de gebruiker wordt knoeien met de programmeur. JASON HIRSCHHORN: Ja. Met al deze aanvallen op de beveiliging, dat is altijd het algemeen de gebruiker, of iemand, probeert te knoeien met u, de programmeur. En dit zijn manieren waarop u kunt voorkomen dat tegen hen. Publiek: Dus ik heb een vraag over hash functies. In Quiz 1 uit 2011, zijn er twee vragen over eenzijdige hashes. En ik vroeg me af wat dat betekende. JASON HIRSCHHORN: OK, die quiz? 2011? PUBLIEK: Ja. PUBLIEK: Quiz 1? PUBLIEK: [onverstaanbaar]. Dat is hetzelfde als hash een wachtwoord. Dat is niet om de dingen - JASON HIRSCHHORN: welke pagina het was? Publiek: Ik denk dat het 9 of 10, of beide. JASON HIRSCHHORN: Oke, ga je gang, Curt. U kunt beantwoorden terwijl we kijken. Publiek: Ik denk dat het praten over hashing een wachtwoord. Zoals, als iemand een wachtwoord invoert, u deze in een versleuteld ding. Dat is het wachtwoord hash, dat is verschillend van een hash functie die zet iets in een hash table. JASON HIRSCHHORN: Eens kijken. Laat me omhoog te trekken wat ze geven als het antwoord. En dan zullen we er doorheen lopen. Dus Curt gaf een goed voorbeeld van een one-way hash. Als we dit eerder gezien, we neem het wachtwoord en draai - herinneren, in p set 7, iemand zou hebben een wachtwoord dat is gewoon vergeten, maar dan wordt het gecodeerd in sommige echt lang ding. De one-way hash betekent dat het zeer eenvoudig om van de ene naar de andere, maar het is heel moeilijk om van de andere weg terug. En dus weet je, toen je het controleren wachtwoorden van de mensen in probleemwijken set 7, zou je hun te nemen - Dus, bijvoorbeeld, zeggen ze wilden hun wachtwoord te wijzigen, vraag je hen voor hun oude wachtwoord. Je nam hun oude wachtwoord. Je versleuteld zijn. En vergeleken de twee coderingen plaats unencrypting de oorspronkelijke een, want het is echt moeilijk om op die manier gaan. Yeah. Publiek: Hoe in de diepte werkt onze begrip van TelNet zijn? JASON HIRSCHHORN: Als het werd genoemd kort in collegezaal, op slechts een korte begrip. Ook hier weer het antwoord Avi's vraag - hoe meer dingen komen, hoe groter de kans het is je moet super zijn vertrouwd zijn met hen. Als ze alleen al komen in collegezaal, dat is slechts een plaats. Maar als ze komen in collegezaal, sectie, en een probleem stellen, je dan waarschijnlijk super te zijn vertrouwd zijn met hen. Dus ik had een vraag van eerder over - is was najaar 2010 - Quiz 1, laten we trekken - deze vraag op stapels en wachtrijen, die hadden we nogal wat tijd door te brengen het over in collegezalen, zelfs hoewel we niet echt ooit raakte het in paragraaf. Dus deze vraag geeft u een reeks van opdrachten en vragen wat wordt afgedrukt in dit geval. Dus dit is een volstrekt redelijke vraag die zouden kunnen worden van u gevraagd jongens, en dan moeten jullie in staat zijn om het te beantwoorden. Dus waarom niet je kijkt naar het voor 30 seconden, en dan als iemand wil voorstellen de antwoorden op mij, en dan lopen we er doorheen. Oke, die een antwoord heeft naar vraag 27? Yeah. PUBLIEK: Is het 1, 2, 3, 3? JASON HIRSCHHORN: Dat klopt. 27 is 1, 2, 3, 3. Dus laten we eens kijken hoe we dat kregen. Ten eerste, zeggen we, als s een wachtrij, wat wordt afgedrukt? Dus een q first in, first out. We hebben eerder gezien dat. We zagen het beeld van de mensen wachten bij de Apple Slaan om wat product te kopen. De eerste mensen in zijn de eerste mensen. De eerste dingen die in een wachtrij zijn de eerste dingen uit. Dus als we iets te duwen in een wachtrij, u op de 1, dan pop we de 1. Pop betekent gewoon nemen. In dit geval, gewoon iets nemen. We nemen de eerste ding, dat is een 1. Dus we dingen die we zetten drukken hier neer. Dit is niet langer in onze wachtrij. Duw we een 2 en 3, en We knallen het eerste ding. Opnieuw, omdat het een rij. Dus krijgen we een 2, dan zetten we op een andere 3 en bel opnieuw pop. Onze 3 is eerste. En dan hadden we een hele hoop andere dingen en gesprek pop. Maar nogmaals, aangezien dit een wachtrij first in, first out. We nemen het eerste wat dat ooit werd gezet inch Dat is onze 3. En in dit geval hebben we geen zorgen over al die andere dingen. Dus dat is als dit een wachtrij. Heeft u vragen over een wachtrij? Een stapel is anders. Wat is de afkorting we voor het begrijpen van een stapel? PUBLIEK: last in, first out. JASON HIRSCHHORN: LIFO, denk ik. Last in, first out. Dus een voorbeeld van een stapel zagen trays in een eetzaal. Wat lade is op de top wordt opgepikt. En dan als nieuwe trays komen in, krijgen ze bovenop. En dan wat er op top wordt opgepikt. Dus die bakken op de bodem macht blijf daar voor een tijdje. In dat geval geldt weer dat we trekken dit uit. We duwen op een, zodat men is de eerste in de rij. En we knallen iets af. En er is maar een ding daar, dus we verplaatsen 1 hier beneden. Dan zetten we op 2 en 3 en we pop iets af. Maar nogmaals, aangezien dit een wachtrij - of dit is een stapel, in plaats van - we nemen wat in de laatste was. Wat er ook in de laatste komt eerst. En 3 is in de laatste. Dus hebben we de 3 daar beneden, dan we op een andere 3 en we pop weer iets. Tot slot, we op de 4, 5, 6, en 7, en hier knallen we. En omdat het een stapel, we nemen wat er ook was in de laatste te zetten en schrijven dat hier beneden. Dus komen we uit op 1, 3, 3, 7. Heeft iemand nog vragen hebben over stacks of wachtrijen, of dit voorbeeld? OK. Laten we teruggaan naar de lijst met onderwerpen gaan. Niet op die manier, op deze manier. Welke andere vragen hebben mensen? Publiek: Ik weet niet hoe belangrijk dit is, maar ik was in de war door de verschil tussen de verschillende soorten talen zoals markup, samengesteld, geïnterpreteerd. JASON HIRSCHHORN: Dat is een goede vraag. Ik denk dat dat een beetje belangrijk, dus laten we gaan over het snel. De grote talen die we hebben gezien tot nu toe zijn C, PHP en JavaScript, in termen van programmeertalen. HTML, zoals u al zei, is het niet een programmeertaal. Het is een opmaaktaal. Dan hebben we CSS, die ook geen programmeertaal. We hebben ook gezien SQL, die niet een programmeertaal niet. Dus SQL kunt u schrijven query's voor een database. HTML is een opmaaktaal. Het bepaalt hoe de dingen zijn gestructureerd. En CSS kun je dingen stylen. Dat is waarschijnlijk de omvang voor wat je moet weten over deze drie. Maar het is meer interessant figuur de verschillen tussen C, PHP, en JavaScript. Dus een van de grootste verschillen, zoals u al zei, is hoe ze gecompileerd, of wat het equivalent is. Dus C is samengesteld. We zouden altijd lopen een compiler. En waar zijn dan je fouten wanneer u de C-compiler draaien? Waar komt het je het laten zien fouten in je code? Hoe weet je dat er een fout in uw code in C? Publiek: Het toont u in de terminal. JASON HIRSCHHORN: Het toont u in de terminal als u samenstellen. En als er fouten, het daadwerkelijk zal niet compileren. Dus je weet dat er fouten recht weg, van tevoren, voordat je zelfs uw code uit te voeren. Natuurlijk zou u uw code uitvoeren en krijgen een segmentatie fout, maar dat was waarschijnlijk omdat je deed sommige domme logica ding. Maar de code in met technisch allemaal correct en kon lopen. Dus C-code wordt van tevoren samengesteld. Hoe zit het met PHP code? Waar waren fouten in uw PHP-code? Hoe wist je dat je fouten had in je PHP-code? PUBLIEK: Run time? JASON HIRSCHHORN: Ja, als je zou draaien, zou je loopt de PHP code in de rug. En dan zou je een scherm weer te geven. Je zou een aantal dingen op de bovenkant te zien, maar dan zou je zien, zoals sommige oranje, lelijke tafel. En het zou een lijnnummer geven en zeg, blah, blah, blah, dit spul werkte niet. Dus PHP wordt regel voor regel en uitgevoerd op de server. En dan is het resultaat gestuurd aan u. Geweldig. Uitgevoerd in de server lijn per lijn en vervolgens verstuurd naar je. En als er een fout, zal het stuur u de fout, maar je zou kunnen hebben gekregen een aantal dingen van tevoren. Dus een deel van het zou hebben gewerkt, maar later, kunnen sommige dingen niet hebben niet gewerkt. Hoe zit het met JavaScript? Waar zag je JavaScript-fouten? In p set 8, toen je een fout, hoe wist je dat? Waar zou opdagen? PUBLIEK: In de console, onderaan. JASON HIRSCHHORN: In de console op de bodem. Het zou je het ook geven lijnnummer, en het zou weergegeven op de bodem. En JavaScript is niet uitgevoerd op de server. JavaScript werd verzonden naar uw computer, en toen was het tijd om te draaien de JavaScript, de JavaScript-was lopen per regel over de opdrachtgever, aan uw kant. Niet de server, de client. En evenzo, was gerund regel voor regel. En dan wanneer je zou een foutmelding krijgt, het zou opdagen op de bodem. Net als in PHP, een deel ervan zou kunnen uit te voeren, en dan krijg je misschien een fout later. Ook, wat anders PHP, indien je hebt een JavaScript-fout - zeggen dat je het recht niet code voor een waarschuwingsvenster - je zou kunnen blijven draaien uw programma. De doos waarschuwing niet zou werken, maar uw programma zou fijn zijn. Heel misschien die functie zou mislukken. Dus er is een aantal van de grootste verschil in termen van hoe deze talen, of hoe de programmeercode je schrijft eigenlijk geëvalueerd. Er zijn ook andere verschillen termen van - het grootste verschil we hebben gezien in termen van variabelen in de verschillende talen. Dus kan iemand mij een verschil tussen variabelen in de drie talen? Ja. PUBLIEK: In C, ze zijn strikt getypt. In de andere twee, ze zijn losjes getypt. JASON HIRSCHHORN: En Wat betekent dat? PUBLIEK: Dat in C, moet u aangeven het type van de variabele als u verklaren dat de variabele, zoals interbool of char. JASON HIRSCHHORN: Excellent. In C, we moesten altijd te zetten een type variabele. En we konden niet echt type. Je kon een geheel getal niet doen plus een string. Maar zoals we hebben gezien in deze andere talen, je eigenlijk kunt mixen types, en je nooit echt hoeft te geven iets wat een soort, ooit. Dus hoe weten we dingen zijn variabelen in PHP en JavaScript? PUBLIEK: In PHP, ze beginnen met een dollar teken. In JavaScript, wanneer u verklaren hen, moet je een bar. JASON HIRSCHHORN: Juist. Dus in PHP, ze beginnen met een dollar teken. In JavaScript moeten zij bar, hoewel soms ook niet echt moeten bar. Maar dat is juist. Dus dat is een groot verschil tussen variabelen. Ik denk dat die zijn waarschijnlijk, uit de bovenkant van mijn hoofd, de twee grootste verschillen tussen deze drie talen. Maar, ja. PUBLIEK: En de omvang van C variabelen beperkt tot de accolades, waar de anderen, het is net als, hij sterft als het in slechts een functie, maar anders, is - JASON HIRSCHHORN: Juist. Dus scope is iets anders in C. Als Herinnert u zich, accolades definiëren de reikwijdte van variabelen. Dus als het is gedefinieerd binnen een if aandoening, die zich in een lus, de variabele bestaat alleen daar. In JavaScript, wordt als een variabele gedefinieerd binnen een if staat - in een lus - het zal er voor die functie, maar het zal niet bestaan buiten die functie. Dus scope is een beetje flexibeler in JavaScript en PHP. Dat antwoord op de vraag? OK, andere vragen? We kunnen doen nog vier minuten van vragen, dan we springen in codering. PUBLIEK: Kunnen we gaan naar Ajax en praten over wat dat is? JASON HIRSCHHORN: Praat met Avi na. Hij vroeg die vraag eerder. PUBLIEK: My bad. JASON HIRSCHHORN: Geen zorgen. Publiek: Wat is JSON precies? JASON HIRSCHHORN: Wat is JSON? Wat is je vraag? PUBLIEK: Gewoon heel snel, het verschil tussen print en echo in PHP. JASON HIRSCHHORN: Waarom ga je niet google het verschil tussen print en echo? Klein verschil. Niet zo groot van een deal. Maar je moet zeker google het, en dat geef je een goed antwoord. JSON, waarschijnlijk groter van een deal. Staat voor JavaScript Object Notation. En toen hebben we gezien JSON gebruikt? Wanneer heb je gezien - waarom heb je wel het woord JSON? Wanneer heb je het gezien? PUBLIEK: Toen we kregen aandelenkoersen voor financiën. JASON HIRSCHHORN: Dus je zag het wanneer je krijgt aandelenkoersen voor financiën. En waarom heb je het gezien? PUBLIEK: Toen we het ophalen alle informatie die kwam in dat formaat. JASON HIRSCHHORN: Dus zou je krijgt - ja. Ga je gang. PUBLIEK: [onverstaanbaar] informatie van een object? JASON HIRSCHHORN: Allebei van die samen te stellen is het antwoord we zoeken. U wilt informatie van deze andere webpagina. En je zou hopen dat als je krijgen van die informatie, zou het aan u gepresenteerd in een soort van standaardformaat. Iedereen is waarschijnlijk bekend met door komma's gescheiden waarden. U kunt een Excel-spreadsheet of exporteren elk type spreadsheet als een lijst van komma's gescheiden waarden. En de komma's verdelen alle de verschillende gebieden. JavaScript Object Notation - JSON - is een ander standaardapparaat lay-out van de dingen. En dat is vaak hoe wij zoeken informatie uit onze Ajax queries. Dus in dit geval, we hebben het van de Yahoo website. Zij dingen terug te keren naar ons in een JSON object. En dan weten we, want het is een standaard, wat het is eruit gaat zien. Dus we kunnen doorlopen de array dat is teruggestuurd naar ons, de reeks van objecten die worden teruggestuurd naar ons. We hoeven waarschijnlijk nodig om de sleutels te weten, maar ze over het algemeen geven je documentatie in de website wanneer je halen wat JSON notatie voor hen. Ook kunt u JSON coderen van een object. Dus er is een functie JSON onderstrepen coderen. En zo kunt u een object dat je hebt gemaakt, JSON coderen, en door aan iets anders, als je wilt. En JSON decode bestaat ook voor een soortgelijk doel, of voor het tegenovergestelde doel. PUBLIEK: Moeten we weten codering voor hash tabellen en probeert? Of moeten we gewoon om te begrijpen hoe ze gebruikt worden, conceptueel? JASON HIRSCHHORN: Dus, steek uw hand als je wel een hash table voor p set 4 met een link lijst. Of p set 5. Dus dat was een overgrote meerderheid van de mensen. P set 5, 6, wie weet. Een lange tijd geleden. Dus de overgrote meerderheid van je deed hash tabellen met lijsten met links. En omdat dat is waarschijnlijk de meer gemeenschappelijke aanpak, en omdat we brachten veel tijd doen lijsten met links en hasj tabellen, moet u waarschijnlijk redelijk bekend is met hoe de code een hash table en een link lijst. En als je terugdenkt aan dat probleem set was niet echt zo hard als je verwacht. En er was een stuk minder code dan je verwacht. Ik zou zeggen dat je moet weten hoe te coderen een hash tabel of een lijst met links. Niet dat je zou worden gevraagd dat, se, maar je moet zeker weten dat. Ook als je kijkt door het verleden quizzen, zijn er veel geweest vragen over het schrijven van functies op lijsten met links of dubbel-gelinkte lijsten. Dat lijkt te komen elk jaar. Rechts invoegen op een lijst met links, rechts verwijderen uit een lijst met links, rechts invoegen voor een dubbel-gelinkte lijst, et cetera. Dus dat, ik voel me vrij comfortabel zeggen dat je moet weten dat. Voor proberen, zou ik zeggen dat je moet zeker weten hoe het werkt, en misschien geven een pseudocode voor hoe om het code en het op te zetten. Maar het zou de ergste niet in de wereld als je niet weet hoe je coderen in C. Het zou geweldig zijn als je wist hoe om het code in C, maar ik denk dat waarschijnlijk pseudocode voor een try zou het meest je nodig zou hebben om te weten voor een try. PUBLIEK: Extra krediet? JASON HIRSCHHORN: En hetzelfde met, als we gaan in binary search bomen, zou je nodig hebt - en je hebt gezien in het verleden, we hebben veel gedaan - je weet hoe binaire zoekboom werkt. U moet waarschijnlijk in staat zijn om een maken in pseudo-code. Maar omdat de overgrote meerderheid van mensen deed dat niet op het probleem set, ik zou zeggen dat het waarschijnlijk minder belangrijk dat u weet hoe de code en het opzetten van een boom als dat. Andere vragen? Ook kunnen we hen gedurende vragen als we door een aantal problemen. OK, we gaan om verder te gaan. Sla die glijbaan voor nu. Spreken van bomen, dat is de eerste vraag die ik heb voor jullie. Omdat dit een probleem is. Ik zou zeggen dat het zeer waarschijnlijk dat je je krijg je een probleem als dit op uw quiz waarin u wordt gevraagd om een ​​soort van inzetstuk te coderen, verwijderen, zoeken, voor een bepaald type van data structuur die we hebben gezien. Die komt elk jaar en we brachten een veel tijd de tweede helft van dit semester gaan over deze gegevenstypen. Dus nu, ik heb een knooppunt gedefinieerd in een binaire zoekboom. En wat ik zou willen dat je doet is gegeven een binaire zoekboom die begint op dit knooppunt ster wortel, vul het uitvoering van de volgende functie die toevallig een vondst functie zijn. En doe het met en zonder recursies. Dus ik wil dat je twee functies te schrijven. Een dit te doen met recursie, een dit te doen zonder recursie. En ga er niet vanuit dat de wortel zal niet null. Dus we zijn op zoek naar het gehele getal i in de boom te beginnen bij de wortel, en we moeten deze recursief schrijven en iteratief. Yeah. PUBLIEK: Dus je wilt dat we return true als we het vinden, en onwaar als we vinden het niet. JASON HIRSCHHORN: Hoe wist je dat? Hoe wist je dat? Publiek: Ik was eerst te vragen, maar ik was veronderstelling, omdat hij zegt bool bij het begin van de functie. JASON HIRSCHHORN: Juist. Het zegt bool, dus ik hoef niet eens te je vertellen wat ik verwacht u om terug te keren want er staat daar. Maar dat klopt. Terug, waar of onwaar. Dus voordat je begint, zou ik adviseren, als je niet bekend bent met binary search bomen, snel tekenen een foto van om uw begrip, rechts. Dat zal u ook helpen bij het schrijven uw code en het controleren van het. Nogmaals, je hoeft ook niet zoveel tijd op de quiz om alle dingen te doen vragen we jullie te doen. Dus het schrijven van pseudo-code is zeer behulpzaam. En wij in het algemeen te geven over - Als de pseudocode perfect juist, dat is over het algemeen 50% op een vraag. Dus het is niet een vaste regel, maar als je schrijft pseudocode en het is correct, het is over het algemeen 50%. Dus ik zou altijd aanraden - Als je weinig tijd ingedrukt, of zelfs als je bent gewoon proberen te achterhalen - te beginnen met de pseudocode. En tenslotte, als je dit kon schrijven allemaal in C, zou dat fantastisch zijn. Dus laten we eens drie minuten werken over dit programma. En dan gaan we schrijven pseudocode voor het gewoon een keer, en dan we gaan het recursief coderen en vervolgens iteratief. Als u vragen hebt, voel gratis steek je hand op. Blij om rond te lopen en ze te beantwoorden voordat we beginnen als groep. Laten we hervatten, en we gaan pseudocode de recursieve versie dit, en dan zullen we het coderen. Dus een recursieve functie moet twee dingen. Dit kan een vraag worden geantwoord dat je zou gevraagd worden. Moet twee dingen. Wie kan hun hand opsteken en vertel me wat de twee dingen die een recursieve functie nodig heeft? Per definitie heeft het twee dingen. Wat zijn die twee dingen? Nieuwe handen. Ja, Alden. Publiek: Dus ik weet niet precies wanneer Dit is de terminologie, maar - JASON HIRSCHHORN: Ik ben blij je bent het verhogen van uw hand. Publiek: Er moet een base case, en het moet een recursieve stap. JASON HIRSCHHORN: Perfect. Het moet een base case en een recursieve stap. Dus wat is ons basisscenario hier? PUBLIEK: F wortel gelijk is gelijk aan nul. Sorry, alleen in pseudocode, als het null. Als wortel is null. JASON HIRSCHHORN: Als wortel is null. Dat is uitstekend. Dat is ons basisscenario. Dat is wat we gaan om elke keer te controleren. En nulalternatief is de eerste wat je doet. Als u de base case hit, je bent klaar. Nu moeten we onze recursieve aanroep, en ik zou zijn bereid om te wedden dat we een paar nodig recursieve oproepen hier. Omdat het een boom, en we kon gaan meerdere manieren. Dus als wortel is null, we zijn goed. Wat stel je voor? En nu ga ik om te beginnen roepen op jullie, want ik weet dat jullie weten dit allemaal. Maar Annie, wat moet de volgende regel zijn? Wat als we het gevonden? Wat doen wij? PUBLIEK: Als we het gevonden? JASON HIRSCHHORN: Of wat moet zijn dat - geef me de pseudocode voor de lijn waar we vonden het. PUBLIEK: Als ik gelijk wortel i? JASON HIRSCHHORN: En dan wat doen we? PUBLIEK: return true. JASON HIRSCHHORN: Great. Dus als ik is i - oh, ze i beiden genoemd. Dat wordt verwarrend. Maar als ik is i return true. Dat is waarschijnlijk de volgende wat we moeten doen. Zinvol. OK, we hebben niet onze recursieve gedaan al gebeld, maar, omdat een recursieve oproep zou deze functie opnieuw bellen. Dus wat moet de volgende lijn van pseudocode zijn? Anna. Publiek: De linker kant. JASON HIRSCHHORN: Wees specifiek, dat wel. Dit is een binaire zoekboom, dus wat doet het controleren van de linkerzijde in? PUBLIEK: Dus knoop - Het spijt me, wortel. En arrow dan links. Node, knooppunt, sorry. Ik doe het niet goed lezen. Het heet knooppunt, toch? JASON HIRSCHHORN: Het zal wortel worden genoemd in die functie, maar hoe dan ook. De linkerzijde - ja? PUBLIEK: Als het niet gelijk i, dan gaan we bellen weer de functie? JASON HIRSCHHORN: Dat klopt. Als het niet gelijk ik, we gaan de functie opnieuw te bellen. Maar welke kant van de boom gaan we om de functie weer bellen? PUBLIEK: Aan de linkerkant. JASON HIRSCHHORN: We zijn niet altijd gaan noemen links, als het niet evenaren. PUBLIEK: Oh, sorry. Doe een beroep op de rechter. JASON HIRSCHHORN: We willen weten specifiek, maar - vergeet niet, in een binaire zoekboom, alles te de linkerkant is kleiner. Alles rechts kant is groter. Dus het is gewoon niet - ja, ga je gang. PUBLIEK: Als het minder dan ik, dan - als het op de linker - JASON HIRSCHHORN: Dus als ri is minder dan - dus als onze nummer is minder dan ik, welke kant willen we naar toe? PUBLIEK: We willen gaan naar rechts. JASON HIRSCHHORN: We willen gaan - laat mij trekken snel een boom. Als dit 5 zal dit 3. Dus als ri is minder dan vijf, wat kant willen we gaan? PUBLIEK: Sorry, wat? JASON HIRSCHHORN: Ons nummer is minder dan het aantal dat we kijken naar dit moment. PUBLIEK: Oh, dan willen we te gaan naar de linkerkant. Yeah. Sorry. JASON HIRSCHHORN: Precies. Geen zorgen. In de binaire zoekboom, alles lager is naar links, groter is aan de rechterkant. Dus als onze nummer lager is dan de i we controleren - want je ziet in de knooppunt heeft een i - dan wil je naar links. En dit is een gemakkelijke. Wat is er de andere lijn van pseudocode we nodig hebben om te schrijven? Carlos? PUBLIEK: Hetzelfde, je gewoon overschakelen het naar een groter dan teken en ga naar rechts. JASON HIRSCHHORN: Kunt u zeg het nog een keer? PUBLIEK: Als onze getal groter dan ik, ga naar rechts. JASON HIRSCHHORN: Excellent baan op de pseudocode. Laten we dit doen in het echte code. En nogmaals, dit pseudocode zal Waarschijnlijk krijg je, want het is correct, 50% op deze vraag. Maar deze pseudocode vertaalt zich ook een naar een, in wezen, in code. Dus laten we dit doen in C. Wie kan geven mij de eerste regel van de code? Eigenlijk, de eerste, voordat ik dat doe dat laat ik aan de kant - Publiek: Ik heb een vraag. Waarom heb je het inspringen lijn die ik je gaf? JASON HIRSCHHORN: Omdat Ik kon niet schrijven. Ik weet het niet. Je hebt gelijk. Die lijn moet daar zijn. OK, hier is onze functie. En laat me stoppen, ook, onze definitie van een knoop. Wat gebeurt er als we niet schrijven typedef? Weet iemand dat? Publiek: Het zou niet compileren. JASON HIRSCHHORN: Het zou compileren, ja. Publiek: Zou het slechts een verklaren Bijvoorbeeld in plaats van het maken van het een nieuwe Typ je kon verklaren meerdere gevallen van? JASON HIRSCHHORN: Dus het zou niet weten - het zou niet slechts verklaren een type. Je kon nog steeds maken veel knooppunten. Publiek: Maar zouden we niet moeten schrijven struct knoop elke keer? JASON HIRSCHHORN: Dat klopt. U zou hebben om struct knooppunt schrijven telkens in plaats van alleen knooppunt. Maar met typedef, kunt u gewoon schrijf knooppunt elke keer weer. OK, die heeft niet - ja, Avica. PUBLIEK: Als wortel gelijk gelijken null, return false. JASON HIRSCHHORN: Great, en dat is ons basisscenario. Volgende regel code. Iemand die niet heeft gegeven me een regel code nog? Yeah. PUBLIEK: Root pijl i gelijk gelijk aan i. Dan terug waar. JASON HIRSCHHORN: Great. Volgende regel? Yeah. Iemand anders? En dan kun je de volgende te gaan. PUBLIEK: Else als wortel pijl i is kleiner dan ik terugkeer functie genaamd vondst wortel - JASON HIRSCHHORN: Sorry. PUBLIEK: Return vondst wortel wijst naar links komma i. JASON HIRSCHHORN: Dus als ri groter dan het ding in de boom, we willen ga naar links? PUBLIEK: Nee, ik had dat geschakeld. JASON HIRSCHHORN: Welke? PUBLIEK: Nee, ja. Ik heb een minder dan ondertekenen daar. JASON HIRSCHHORN: Rechts, als ri is minder dan wat er in de wortel - onze huidige wortel - dan we wil naar links. En wat is de laatste regel, je? PUBLIEK: In principe is het zelfde ding, behalve schakelaar groter dan of gelijk aan minder dan en van links naar rechts. JASON HIRSCHHORN: Excellent. Heeft iemand enig vragen hierover? Dus sommige andere dingen die zouden hebben juist geweest is dat de ltiff zijn. Guess, technisch gezien, geen van deze echt moeten ook-ltiff zijn. Ook is er waarschijnlijk alleen een geval hier beneden. Dus dat is waarschijnlijk je laatste geval. Je hoeft niet eens dat-ltiff nodig. Maar waarschijnlijk goed om te schrijven het, om duidelijk te zijn. Yeah. PUBLIEK: Dus je denkt niet dat de quiz - als wij fouten maken, bijvoorbeeld, in syntax - kleine fouten in de syntaxis - hoe werkt dat krijgen genomen in de quiz? JASON HIRSCHHORN: Over het algemeen op de quiz, kleine fouten in de syntaxis of kleine stijlfouten niet verlies je punten. Dus als je een puntkomma vergeten hier, zou het OK zijn. Als je vergeten bent om dit haakje sluiten, dat OK zou zijn. Enorme syntax fouten die het veranderen functionele betekenis van je code dramatisch, misschien krijg je gehaald punten voor. Of in het algemeen, maar de indeling van je over het al dan niet uw code functies, zelfs - niet het ontwerp zo veel, en niet zijn stijl. Laten we nu de code van een iteratief versie van find. Dus het gaat redelijk vergelijkbaar zijn, maar Er zijn zeker gaan worden enkele belangrijke verschillen. Echter, onze pseudocode kan waarschijnlijk gaan - kunnen we nog wel een regel van de pseudocode en uitzoeken wat de lijn is in dit geval. Dus een iteratieve versie, welke denk je, Julia, moet zijn de eerste lijn? PUBLIEK: Nogmaals, in iteratieve boolean, je moet het opzetten van een lus, toch? JASON HIRSCHHORN: OK. PUBLIEK: Dus voor als, k, voor x gelijk is aan 0, x is kleiner dan ik. Of geen, x is dan de grootte van de boom. JASON HIRSCHHORN: The tree. Dus we weten niet echt de grootte van de boom, en we weten niet echt voor hoe vaak we kunnen gaan, dus wat is een ander type lus die misschien beter in dit geval? PUBLIEK: Indien anders? JASON HIRSCHHORN: Indien anders kan een lus niet. Dus wat is een soort lus kunnen we gewoon gaan tot sommige gevallen wordt voldaan? Wat is de enige andere soort lus in C naast een lus? PUBLIEK: Hoewel. JASON HIRSCHHORN: Terwijl, precies. In een while loop, niet moet weten hoe - een while lus voor lus kan doen de precies hetzelfde, maar het leuke over een tijdje lus die we niet nodig om te weten hoe groot onze boom. Dus we gaan te gaan tot wat? PUBLIEK: Totdat het gelijk de grootte van - JASON HIRSCHHORN: Nou, het is heel Soortgelijke onze recursief case. Dus - PUBLIEK: Terwijl wortel i is niet gelijk aan i. JASON HIRSCHHORN: Dat is echt dicht. Terwijl wortel i - laten we het proberen. Ik denk niet dat [onverstaanbaar] waar wortel i is niet gelijk aan i. We moeten kunnen om het in een beetje veranderen beetje, maar dat klinkt alsof het is vrij goed, voor nu. Dus zullen we dat doen. Vergeet ook niet, kunnen we niet aannemen per de vraag. Je hoeft er niet van uit dat de wortel zal niet null. Dus wat denk je dat het zeer eerste wat we moeten doen is? PUBLIEK: Doe hetzelfde ding als voorheen. Als de wortel gelijk is aan gelijken null, return false. JASON HIRSCHHORN: Great. Dus het zou kunnen zijn null. Dus we willen om zich te ontdoen van het meteen. En dan gaan we controleren of wortel i is niet gelijk aan i. Dus zeggen dat we op zoek in deze boom voor 3, wortel ik niet gelijk ik, nu we in onze while lus. Wat willen we doen? En nogmaals, het zal mooi zijn Soortgelijke onze recursieve versie. Yeah. PUBLIEK: Dus je zou willen herhalen, of blijf naar beneden de boom zolang de wortel is niet gelijk aan nul. JASON HIRSCHHORN: Zolang de wortel is niet gelijk aan nul? Publiek: De wortel dash i is niet gelijk aan nul. Alleen de wortel, ja. Als een lange als de wortel is niet gelijk aan null. JASON HIRSCHHORN: Dus je wilt om dit te veranderen in de root is niet gelijk aan nul? PUBLIEK: Ja. PUBLIEK: We kunnen combineren deze, toch? We hoeven niet de als, in eerste instantie. JASON HIRSCHHORN: OK, dus als we Niet doen - als we ze combineren, dus we gaan doen terwijl de wortel is niet gelijk aan nul, en indien de wortel gebeurt nul op het te zijn begin, wat doen we hier beneden doen? PUBLIEK: return false. JASON HIRSCHHORN: Great. Dus beide manieren waarschijnlijk zou hebben gewerkt. Dit is een andere manier en dit combineert het. Maar nogmaals, als je hoe dan ook deed, we zijn niet van plan af te nemen ontwerp wijst op de quiz. Maar dit ziet er goed uit. Dus terwijl wortel is niet gelijk null, wat is de eerste wat willen we controleren? Iemand anders? Null, wat is het eerste ding? PUBLIEK: Als ri lager is dan - oh, ik denk dat, als we al vond het in de wortel. Dus als wortel pijl i gelijk aan i - JASON HIRSCHHORN: Sorry? PUBLIEK: Als wortel pijl i is gelijk aan gelijk aan i - JASON HIRSCHHORN: Wat doen we? PUBLIEK: return true. JASON HIRSCHHORN: Great. En wat is het volgende? Jeff, wat is de volgende regel code? PUBLIEK: Als ik minder dan wortel pijl i, dan wortel gelijk is aan wortel pijl links. JASON HIRSCHHORN: Root gelijken wortel pijl naar links. Dus dat is waarschijnlijk de grootste verschil is hier in dit iteratieve versie in tegenstelling tot de recursieve versie. De recursieve versie, we roepen nogmaals op de functietoets. We zullen updaten wortel wanneer we de nieuwe functie aan te roepen. Hier hebben we het niet een nieuwe functie te bellen. We zijn gewoon updaten wortel in deze functie. Dat is uitstekend. En wat is de laatste regel van de code? Ja, Mario? PUBLIEK: Else wortel gelijken wortel pijl rechts. JASON HIRSCHHORN: Sorry? PUBLIEK: Root gelijken wortel pijl rechts. JASON HIRSCHHORN: Kunt u ook schrijf iets als dit? Publiek: Ik heb geen idee. JASON HIRSCHHORN: Je kunt niet. Je kunt niet doen plus gelijken. OK, dus dit ziet er goed uit. Waarom gaan we niet gewoon doen dat om het op te ruimen. Dit ziet er geweldig uit, en dit zou werken. En we zouden uitbreken. Als wortel links nietig was of de wortel rechts nietig was, zouden we hier te komen. Root zou gelijk zijn aan nul zijn. We willen van onze lus te breken, en we zouden valse terugkeren. Dus toen we uit te breken van de lus, we return false. En nogmaals, het een tijdje loop was perfect hier omdat we niet weten hoe grote onze boom is. We hebben geprobeerd om het te schrijven voor de loop, maar we realiseerde je hebt om erachter te komen hoe groot het is van tevoren. Yeah. PUBLIEK: Als dit niet een binaire zoekboom, zou het echt wiskunde-y zijn om het iteratief schrijven, toch? Zoals, als was het een boom, maar niet noodzakelijkerwijs - dus het was niet kleiner links, en al groter aan de rechterkant. Het zou wel heel moeilijk zijn te itereren over, toch? We zouden moeten redden wat er eerder was op in de boom en ga terug, en dat soort dingen. JASON HIRSCHHORN: Als het niet een binair zoekboom, al was het maar een boom en dingen waren niet gesorteerd als dit - en we eerder realiseerde toen Anna was ons te helpen dat het maken van het gesorteerde helpt ons veel - we zouden moeten, ja, altijd sparen waar we eerder waren. Maar veel kan waar we waren previouslys. Er zou een veel ouder knooppunten. Waarschijnlijk de beste manier om dat te doen zou zijn om te houden dingen duwen op sommige type stack of wachtrij. Je zou nooit moeten deze code want het is een moeilijk probleem. Maar je sommige dingen te duwen op een stapel of wachtrij en dan knallen ze af, en vervolgens te evalueren. En dan hebben enkele ander ding waar je eigenlijk zetten de knooppunten, en maak dan dat, en dan zoeken door dat. Dat zou de beste manier om het te doen. OK, vragen over dit probleem? PUBLIEK: Dit is op een verwante nota. Zullen we moeten doorlooptijden vergelijken voor hash tables, binaire zoekbomen, et cetera? JASON HIRSCHHORN: Waarschijnlijk. Dus laten we dat doen heel snel. Run tijd voor hash table - wat zijn de anderen? Binaire boom? PUBLIEK: Link lijsten. JASON HIRSCHHORN: OK, laten we het doen insert. Wat is de big O van insert op een hash table? Wat zijn de uitgangspunten je maakt? PUBLIEK: Je invoegen op de het begin van de link lijst. JASON HIRSCHHORN: Waarschijnlijk de eerste aanname is er geen botsingen. Als er geen botsingen, dan het inbrengen is een. Als er botsingen, en je bent doet aparte chaining en invoegen aan het begin van de koppellijst, dan is insertie constant. Als je doet een hash table, maar je bent een andere methode om met botsingen, wat is een andere methode? Wat is een andere methode om met botsing in een hash table? PUBLIEK: Lineair programmeren. JASON HIRSCHHORN: Lineair programmeren. Dus we gaan om te blijven kijken voor de volgende open plek. Dat is niet constant inbrengen tijd. Je zou kunnen hebben om door te gaan de hele tabel, zodat grote O van n zou kunnen zijn. Yeah. PUBLIEK: Anders gewoon koppelen? JASON HIRSCHHORN: We deden aparte chaining. Dat was de eerste. Dat is wat de link lijst. De fantasienaam is gescheiden chaining. Het kan elk type lijst structuur we toevallig om te doen in verband lijst. Dus nogmaals, de plaatsing op een hash table constant kon zijn. Hoe zit het inbrengen op een stapelaar wachtrij? PUBLIEK: Is dat niet constant? JASON HIRSCHHORN: Het is constante tijd. Je bent gewoon erop te drukken. OK. Inbrengen, wat waren de anderen? Op een keer te proberen? Wat is big O van plaatsing op een keer te proberen? PUBLIEK: Lengte is constant. Lengte van de langste - de lengte van het woord je invoegt. JASON HIRSCHHORN: Sorry? Wacht, dus wat heb ik gehoord? Je zei - wat zeg je? Wat was uw antwoord, Marcus? Publiek: De lengte van het woord je invoegt in karakters, de veronderstelling dat het een teken proberen. JASON HIRSCHHORN: OK, dus de lengte van het woord. We zullen een veronderstelling maken dat het is een reeks tekens. Je zei iets anders, dat wel. Je zei dat de lengte van langste woord. PUBLIEK: Dat is gewoon een constante, toch? JASON HIRSCHHORN: Waarom zou het zijn constant? PUBLIEK: Zoals, als je grote O gebruiken notatie, dan is het niet variëren op basis het aantal dingen zijn al in de try. JASON HIRSCHHORN: Dus zouden we zeggen dat het constante tijd. Het constant insertie en dat komt omdat dit idee - zeggen dat we een woord dat is 45, of een woord dat is 60, dat een constant aantal. En het zou gewoon ingevoegd constant in de tijd. In de praktijk echter, zou het niet, uiteraard gebeuren in een milliseconde, bijvoorbeeld. Maar we zouden zeggen grote O is constante voor een try. En dat is een van haar grootste voordelen. Hoe zit het met het inbrengen in een lijst met links? Gewoon een generieke, gesorteerd lijst met links? Yeah. Publiek: Ik had een vraag. Op de test, zouden ze ons de steeds vragen invoegtijd dat is vier stappen, of zoiets? Of is het gewoon - als je zegt invoegtijd is een, dat betekent constante tijd? JASON HIRSCHHORN: Ja, zouden ze altijd vragen, is het grote O van n? Big O van log n? N kwadraat constant. Dat zijn echt de enige die je moet weten. Hoe zit het inbrengen op gesorteerd lijst met links? Publiek: Ik had een vraag - een vraag - JASON HIRSCHHORN: Wat is het antwoord op die vraag, hoewel? PUBLIEK: Wacht, wat heb je vragen? JASON HIRSCHHORN: Wat is big O van inbrengen in een gesorteerde lijst met links? PUBLIEK: One? Nee wacht, Nee wacht, n. JASON HIRSCHHORN: N. Naast de link lijst. En wat was je vraag? PUBLIEK: Dus zou je schrijft o van k of o van 1 voor de - JASON HIRSCHHORN: Oh. Ik zou schrijven o van 1, waarschijnlijk. Er was een andere gegevensstructuur zo goed zou zijn. Boom, binaire zoekboom. Wat is de plaatsing op een binaire zoekboom? PUBLIEK: Login. JASON HIRSCHHORN: Dus, wat is het ergste geval in een binaire zoekboom? Dus als we toevallig beginnen bij 5, en elke nummer groter is dan 5, dan we hebben 5, 7, 9, 11, et cetera. In dit geval, het is eigenlijk gewoon een link lijst, en we moeten allemaal in te voegen helemaal aan het einde. Dus het is big O van n. Dat zou onze slechtste geval zijn op een binaire zoekboom. Uiteraard, zou je nooit bouwen een binaire zoekboom met 5 in de midden, wetende 5 zou als laagste nummer. Maar het zou kunnen zijn, als je vanaf nul te beginnen. Eventuele vragen over deze voordat ik verhuizen naar een andere vraag? Dat was een goede vraag. Ik zou grote O van weten - Publiek: Hoe zit het met het zoeken voor deze vier? JASON HIRSCHHORN: Zeker wij had zoeken en sorteren. We deden al die algoritmes, rechts. Wacht, was dat voor Quiz 1? Werd dat gedekt - heb je al dat vraag op Quiz 1? De grote O runtime van binary search, insertion sort, bubble sort? PUBLIEK: Ja. JASON HIRSCHHORN: Als je had dat vraag op Quiz 0, is de kans groot dat u niet krijgen exact dezelfde vraag op Quiz 1. Zou nog steeds goed zijn om die te leren kennen. U moet hopelijk weten gh reeds. Maar andere logaritmische runtimes zijn waarschijnlijk goed om te weten. Dingen die niet waren gedekt op Quiz 0. Net als al deze actoren op deze abstracte data types. OK, laten we verder gaan. Dit moet men vrij snel zijn. En dit is een nieuwe taal hebben we niet eigenlijk gecodeerd voor. Dit is een vraag te stellen om code in PHP. Dus overweeg onder de PHP array. Schrijf PHP en / of HTML codes zodanig dat voert een tabel met twee kolommen met TFs namen en huizen. Je hebt nog nooit eerder gedaan, dit specifieke probleem. Maar dit moet zeer vertrouwd te zijn wat u in probleem deed set 7. Dus ik zou bereid zijn om wed dat je zal zijn gevraagd om iets in PHP code die is zeer vergelijkbaar met wat je deed in opdracht gesteld 7. Ten eerste array is niet specifiek. Welk type array is dit? PUBLIEK: Associatieve. JASON HIRSCHHORN: Het is een associatieve array. En wat is het verschil tussen een associatieve array en een object? PUBLIEK: een object array heeft een index van gehele getallen, en een associatieve array is een index van een string, of iets dergelijks. JASON HIRSCHHORN: Dus een array van objecten zou indices van hebben gehele getallen, maar een object velden. Het heeft die velden namen als naam, huis, student. Heeft u een idee? PUBLIEK: Nou, associatieve array in PHP, toch? En object in JavaScript? JASON HIRSCHHORN: Eerlijk gezegd, er is geen verschil tussen de twee. Beide hebben snaren als de toetsen, en kan hebben eigenlijk alles als waarde. Verschillende talen bel een ding associatieve array, een ding een object. Dus eerlijk gezegd, is er geen echte verschil, maar er is zeker een aantal syntactische verschillen tussen de twee. Yeah. PUBLIEK: Dus is object ook gecodeerd onder de kap als een hash table, dan? JASON HIRSCHHORN: Wat doe je bedoel, gecodeerd onder de motorkap? PUBLIEK: We kregen te horen dat associatieve serie was technisch een hash table. Dus is ook technisch object een hash table? JASON HIRSCHHORN: Ik ga niet om die vraag te beantwoorden. Ik kom terug om je op dat. Maar ik zou niet denken van een van beide van hen als dat. Maar in elk geval, associatieve array en object, in het algemeen, mensen gebruiken die termen door elkaar. In dit geval, de koele deel is dat je kunt toetsen. Snaren sleutels, dan gewoon simpele nummers. Dus ik heb het over dit voor een tijdje. Hopelijk hebben sommige mensen gekregen begon op dit punt. We gaan een aantal PHP en HTML te schrijven code, zodanig dat we een twee-koloms tafel met TFs namen en huizen. OK, ik zou ook graag een header rij op deze tafel. Dus ik ga maar meteen in deze. We gaan naar bestand, nieuw, en we gaan - OK. Hoe start ik een tafel? Wat is de tag, Michael, een tafel beginnen? PUBLIEK: Tabel. JASON HIRSCHHORN: Tabel. En als ik een tag opent, is wat anders heb ik nodig? PUBLIEK: Een hoofd? Of, denk ik, klasse. JASON HIRSCHHORN: Dus, sorry. Neem aan dat we al geschreven doctab, HTML, al dat spul. Maar als ik deze tabel tag opent, is wat anders moet ik schrijven? voor valideren van HTML? PUBLIEK: Sluit het. JASON HIRSCHHORN: Sluit de tag. Hoe schrijf ik een close-table tag? PUBLIEK: Dot slash tafel. JASON HIRSCHHORN: Slash tafel, geweldig. Waarschijnlijk zinvol om zowel te schrijven van die samen omdat je hebt om het te doen. OK, als ik wil een kopregel, hoe Ik schrijf een kopregel met titels? PUBLIEK: Is het minder dan 10 uur in de buurt - TR, ja. JASON HIRSCHHORN: TR? PUBLIEK: Dan hetzelfde, de slash, ja. JASON HIRSCHHORN: OK, en geef me twee kolommen. PUBLIEK: T D? JASON HIRSCHHORN: OK. Ik wil twee kolommen. Geeft dit me twee kolommen? Hoeveel kolommen is dit? One. Dus laten we kopieer en plak deze. Dus eigenlijk, op de quiz, al deze code dat we tot nu toe was heb geschreven eigenlijk aan u gegeven. Maar je moet waarschijnlijk nog weten hoe het te schrijven. Yeah. PUBLIEK: Je huis is tussen de twee. JASON HIRSCHHORN: Boom. Het moet daar gaan, toch? Goed gesprek. Dus nogmaals, al die code is eigenlijk aan u gegeven op de werkelijke quiz. Maar het is leuk om het te schrijven, en je moet weten hoe om het te schrijven. Dus dit is waar je moet om uw code te starten. Wat hebben we nodig om hier te schrijven? Sorry, ik moet veranderen de naam van dit bestand. Dus we opgeslagen in een. HTML-bestand, niet in een. PHP-bestand. Deze dingen zou niets betekenen in een. PHP-bestand. Dus we zitten in een. HTML-bestand. Wat is het eerste wat Ik moet schrijven? Ik wil een aantal PHP zetten code in een HTML. PUBLIEK: PHP, zoals een andere wortel en vraagteken PHP, toch? JASON HIRSCHHORN: Great. En hoe kan ik uiteindelijk dat? PUBLIEK: Met een vraagteken. JASON HIRSCHHORN: Dat is geweldig. Dat is het eerste wat ik nodig als ik wil sommige PHP-code zetten hier. PUBLIEK:. Ik dacht dat een PHP bestand kon HTML nemen. JASON HIRSCHHORN: Yeah. Een. PHP bestand kan sommige nemen HTML en worden getoond. Dat was mijn fout. Ik probeerde na te bootsen wat het was op de quiz. OK, sorry om u te verwarren. Ja, practice.HTML. Nu gaan we zetten sommige PHP-code in Wat is de eerste regel van PHP code die ik moet schrijven? Ik ga om te gaan door deze array en maken het in een tabel. Yeah. PUBLIEK: U kunt gebruik maken van een voor H lus of een lus. JASON HIRSCHHORN: OK, wat wilt u gebruiken? Publiek: Ik zou gebruiken voor lus. Voor, en dan moet je doen dollarteken i gelijk is aan 0 puntkomma dollar teken dat ik minder dan 2. En dan puntkomma i dollar ondertekenen i plus plus. JASON HIRSCHHORN: Hoe u weet dat een 2 te gebruiken? PUBLIEK: Omdat er twee associatieve arrays binnen de grotere associatieve array. JASON HIRSCHHORN: Dus de grote ding is niet een associate array. Het grote ding is gewoon een normale array. Maar je hebt gelijk, er zijn twee associatieve arrays in onze grotere array. Dat is waarom je twee gebruiken. Ik voel me ongemakkelijk in de veronderstelling dat ze zijn 2, dus wat is een manier om te schrijven dit zonder de veronderstelling dat ze 2? PUBLIEK: [onverstaanbaar]? JASON HIRSCHHORN: OK, hoe denk je dat schrijven? PUBLIEK: Foreach dollarteken tfs of als dollarteken tf. JASON HIRSCHHORN: OK, dus voor elk tfs als tfs, ik wil, nu weer, heb mijn tafel. Dus wie kan mij de volgende regel code? PUBLIEK: Afdrukken en vervolgens in citaten, beugel tr einde bracket, einde citaat. Eind haakjes, puntkomma. JASON HIRSCHHORN: OK, en wat dat gaat doen? PUBLIEK: Het gaat om te zeggen, nieuwe rij. Het gaat zet de taggen voor een nieuwe rij. JASON HIRSCHHORN: Rechts, dit PHP, zoals we het eerder over had - dit PHP zal worden geëvalueerd, en vervolgens het gaat om uit te printen om dit bestand een tafel slepen, en dan is dat HTML wordt geëvalueerd. We zijn dit gewoon kopiëren HTML we hadden hier. Yeah. PUBLIEK: [onverstaanbaar]? JASON HIRSCHHORN: Sorry? Het is hier. Herfst 2012. Kijk niet naar de antwoorden, laten we lossen het samen. Dus drukken we tabelrij. Dus ben je waarschijnlijk in de swing van de dingen. Wat is de volgende regel van code moeten we om te schrijven? Assam, geef me de volgende regel code. PUBLIEK: U moet de naam van de tf's. Tf open haakjes, aanhalingsteken noem gesloten beugels. JASON HIRSCHHORN: Geef me hun naam. PUBLIEK: Je moet drukken dat. [Onderbreekt hem VOICES] JASON HIRSCHHORN: OK, Hoe druk ik het? [Onderbreekt hem VOICES] JASON HIRSCHHORN: ik mis iets nu. Wat mis ik? PUBLIEK: Je hebt een dollarteken. JASON HIRSCHHORN: Wat anders mis ik? Alles wat we tot nu toe hebben gedrukt is de tr. PUBLIEK: Sluit de tr na het. JASON HIRSCHHORN: Dus moeten we de tr na sluiten. Wie ziet wat we missen op lijn 16? Ja, Anna. PUBLIEK: Je moet openen een td en accolades. JASON HIRSCHHORN: En waar zetten we accolades? PUBLIEK: Rond de naam tf. JASON HIRSCHHORN: Zo? PUBLIEK: Ja. En sluit de td. JASON HIRSCHHORN: Net als dat? PUBLIEK: Heeft u dubbele aanhalingstekens nodig streepjes op de accolades? JASON HIRSCHHORN: Right here? Nee, dat doe je niet. Dus dat is precies goed. Yeah. PUBLIEK: Dus het verschil tussen deze en encatenating met stippen, indien je punten gebruiken, zou je moeten hebben de dubbele aanhalingstekens, dan een punt, vervolgens de stip - JASON HIRSCHHORN: Correct. Dus je zegt dat er een ultieme manier van schrijven van dit als dat. Wat de samenvoegingsoperator in JavaScript? PUBLIEK: Een plusteken. Je vergat te zetten de accolade terug. JASON HIRSCHHORN: Great. En er is nog een regel van code ontbreekt. Wie kan mij de laatste regel geven van code die we mist? PUBLIEK: Gewoon precies hetzelfde, gewoon met huis in plaats van de naam. Groot JASON HIRSCHHORN: Great. En je syntax is precies goed voor om dingen in een geassocieerde array. Dus in de eigenlijke quiz, je bent eigenlijk opgegeven tot hier. Dus deze code werd gegeven aan u. Het enige wat je moest schrijven waren deze vier lijnen en vergeet niet om Sluit de tabel tag. Jullie eigenlijk deed dat alles en meer. Yeah. Publiek: Dus het zou praktisch zijn hetzelfde als je gewoon had dat al in een grote druk gesprek, toch? En dan gewoon aaneengeschakeld het op, et cetera? JASON HIRSCHHORN: Net als dat? PUBLIEK: Ja. Het zou gewoon niet goed uitzien als je naar te kijken als je het inspecteren het element op uw website, toch? JASON HIRSCHHORN: Ik ga akkoord. Als ik geladen deze webpagina, zou ik zijn in staat om deze PHP code te zien, ooit? PUBLIEK: Nee JASON HIRSCHHORN: Nee. En eigenlijk, zou ik niet doen. PUBLIEK: Dit is geen HTML, toch? Dus je zou in staat zijn om - JASON HIRSCHHORN: Dus dit PHP zou geëvalueerd worden server-side. PHP wordt altijd geëvalueerd server-side, dus je bent nooit in staat om PHP code te zien. Publiek: Maar je zou in staat zijn om het resultaat zien van de prints. JASON HIRSCHHORN: Juist. En eerlijk gezegd zou niet zet het allemaal op de lijn. Het kan formatteren mooi voor jou, of het zou het op een lijn. Onduidelijk. Maar ja, goed punt. Publiek: Hoe komt het dat er geen tekst markeren voor een van de PHP-opdrachten? Want ik herinner me dat. JASON HIRSCHHORN: Omdat het een . HTML-bestand hier aan de top. Daar ga je. PUBLIEK: Als we de eerste methode met de voor loops, rechts, als we wilde toegang tot een TFS, zouden we doen tfs beugel 0 beugel, dan [Onverstaanbaar]? JASON HIRSCHHORN: U zou - dus je zegt voor de lus, u zou doen in dollarteken TFS beugel 1 of i, rechts. Of dollarteken i sluiten beugel en dan vierkante haken dubbele aanhalingstekens, ja. OK, uitstekend. We hebben nog snel een. Zeven minuten, dus ik wil te gaan over deze. Dit is een ander voorbeeld. We zijn nu een totaal andere taal. We hebben een aantal HTML-code. Het is een beetje klein op het scherm, maar Ik wil dat je echt doorheen kijken snel, en kan iemand mij vertellen, als ik naar deze webpagina te laden, wat ik zou zien? Beschrijf alles over deze webpagina. Noah? Wat zou ik zien? PUBLIEK: Code aan de voorkant van Google met gevoel voor tekst en een submit knop. JASON HIRSCHHORN: En wat zou de knop zeggen? PUBLIEK: Indienen. Oh, zoeken. Het spijt me. JASON HIRSCHHORN: Het zou zoeken zeggen. Vergeet niet, de naam. Wat doen we de naam voor? Deze naam attribuut, wat is dat wordt gebruikt voor? [Onderbreekt hem VOICES] PUBLIEK: Dat is zijn naam voor wanneer het klikte? JASON HIRSCHHORN: Dat kan. Maar wat weten we over het algemeen zien - waarom geven we deze naam van de wachtrij? Waarom doen we dat? Yeah. PUBLIEK: Is dat niet indexeren geworden van de super globale variabele? JASON HIRSCHHORN: Ja, in het algemeen als deze vorm zou voorleggen, en vervolgens waar zou dit voorleggen aan? Welke pagina? Noah, welke pagina zou dit voorleggen aan? Publiek: Ik ben niet zeker. JASON HIRSCHHORN: Waar konden we het kunnen vinden? Waar vind je wat pagina hij aan? Welke regel code? PUBLIEK: Vorm actie. JASON HIRSCHHORN: Precies. Actie. Zodat hij aan de zoekpagina. Backslash zoeken. Dus dat is precies goed. Welke methode? PUBLIEK: Get. JASON HIRSCHHORN: Get. Precies. Dus we dit lezen. Dit gaat om een ​​vorm te zijn. Je hebt helemaal gelijk. Twee dingen over de vorm, de titel van de pagina en de top zou zijn van Google. Dus hier zijn twee vragen die u moet kunnen beantwoorden over deze pagina. Als deze HTML leeft op deze website en de gebruiker invoert bug in deze tekst hier veld, wat URL de gebruiker zichzelf te vinden op het indienen van het formulier? Dus we hebben dit hier. Ik ga terug naar deze pagina, dat wel. Ik zie je schrijven dit eerste deel. Kan iedereen zien hier? OK, Mario, je denkt te weten? Welke pagina? PUBLIEK: Backslash zoeken. JASON HIRSCHHORN: Ik ga om hier naar beneden te verplaatsen. OK, backslash zoekvraag mark q gelijk bug. Iemand een andere suggestie? Yeah. Dus hoe krijgen we dit? Nou, we hebben dit eerder gezien. En je kwam met dit eerder. Je had gelijk, Noach, dat de actie is ons te vertellen wat pagina gaan we. We weten ook welke methode. We doen krijgen. En het verschil tussen GET en POST is dat displays krijgen in de URL en post niet. Dus als ik schreef na daar in de methode, wat zou anders zijn? Publiek: Het zou gewoon zijn slash zoeken. JASON HIRSCHHORN: Het zou gewoon slash zoeken. Niets dan hier zou gebeuren. Maar omdat het een te krijgen, de URL wordt als volgt weergegeven. Eerst zien we een vraagteken en zien we de naam en de waarde. Zeggen dat er een andere tekst veld en Ik gaf het een naam van r en I-ingang een waarde, rups. Wat zou dit nu eruit? Ik heb nog een tekstveld, geef ik een naam van r en een waarde heeft van rups. PUBLIEK: Nadat bar je zou moeten de ampersand rups. JASON HIRSCHHORN: Dat is niet ampersand. PUBLIEK: Of gewoon wat de en het symbool. JASON HIRSCHHORN: Ja, nee. Je had gelijk, ik had het mis. Dat is hetzelfde als een g. PUBLIEK: Caterpillar. r gelijk rups, sorry. JASON HIRSCHHORN: Is er geen r daar? PUBLIEK: Nee, er is. JASON HIRSCHHORN: We praten over dat na de les. Zo is het precies. Dus de en correct is. En dan kon je veel van deze hebben, en ze zouden allemaal worden samengevoegd samen met die en. Dus dat is precies goed. Er is nog een vraag. Schets DOM deze HTML, te beginnen met document. We kunnen dat doen in twee minuten. We zullen het hier doen. Ik kom terug naar deze webpagina te gaan. OK, we beginnen met een document. Wat is het volgende? Dus als je het lezen van - PUBLIEK: HTML. JASON HIRSCHHORN: HTML is de volgende. We gaan tag gaan tag. Wat is er na HTML? PUBLIEK: Head. JASON HIRSCHHORN: Head. Wat is na het hoofd? PUBLIEK: Titel. JASON HIRSCHHORN: Titel. En titel heeft een waarde van Google, maar ik ga niet schrijft dat voor nu. OK, waar gaat het lichaam heen? PUBLIEK: Ook loskomen van de HTML. JASON HIRSCHHORN: Precies. Lichaam komt off van hier. Heeft iedereen zien waarom dat het geval is? U zou waarschijnlijk in staat zijn om erachter te dit uit, ook, zelfs als ik niet hoefde deze mooie inspringen. De inspringen geeft het soort weg, maar je kunt zien dat het hoofd-tag heeft gesloten, wat waarschijnlijk betekent dat we kan hier niet naar beneden gaan. We moeten terug naar wat was vlak voor het hoofd tag, of onder dat. We zijn zelfs met het hoofd tag. En onder het lichaam gaat vormen. Onder vorm, zijn er twee ingangen. OK. Dat is alles wat ik heb. Quiz 1 is morgen. Ik ben zo blij voor jullie. Het gaat om een ​​ontploffing te zijn. Als u - PUBLIEK: [applaus] JASON HIRSCHHORN: Oh stop, stop. Maar nee, ik maak een grapje. Als u vragen heeft, recht na sectie, zal ik buiten. Als u vragen heeft vanavond, voel je vrij om te bellen, e-mail, Gchat, Postduif me. Veel succes morgen. Heb een prachtige Thanksgiving break, als ik zie je niet voor die tijd. En ik zie je na Thanksgiving op dinsdag voor onze laatste sectie feest ooit. PUBLIEK: [onverstaanbaar]. JASON HIRSCHHORN: Great. OK, ik zie jullie volgende week of twee weken. En veel succes morgen.