JASON Hirschhorn: Bine ai venit, toată lumea, la saptamana 10. Aceasta este o saptamana interesanta, deoarece mâine este Quiz 1, pe care le va primi la un al doilea. Astăzi, în secțiune, vom merge peste unele resurse pentru testul, și atunci voi răspunde la orice și toate întrebări voi avea. Și vom termina în cele din urmă cu unele probleme practice. Ne putem petrece întreaga secțiune răspunzând la întrebări. Ne putem petrece întreaga secțiune trecând peste problemele de practică. Vom extinde doar pentru a umple spațiu și timp avem. Așa că am pus această listă în fiecare săptămână, dar este deosebit de important în această săptămână. Pentru a studia, dacă nu aveți a început deja, oh boy. Dar sperăm că le-ați început deja. Și aveți de gând prin intermediul materialelor și resurse enumerate aici. Mi-ar recomanda foarte un număr dintre acestea. În special, note de curs sunt extrem de important și util. Study.cs50.net oferă o mare primer pe un lot de subiectele pe care le acoperit. Ea are, de asemenea, unele de mare practica probleme. Și apoi, Google este mare, prea. Nu știu ce ți-ar folosi pentru. Dar folosesc Google, de asemenea. Ajunge la mine dacă aveți orice întrebări, comentarii, sau nelămuriri. Uită-te peste sesiunea de revizuire slide-uri din noaptea trecută. Sau, dacă aveți ceva timp, viziona clipul video. Ele oferă o mulțime de ajutor materiale și informații. Și să încerce și să acopere, dacă nu toate, multe dintre subiectele pe care le-am acoperit și pe care le s-ar putea vedea pe testul. Vorbind de test, care va fi mâine. E 75 minute lung. Mulți dintre voi luați-o la 1 ora, iar unii dintre voi sunt lua-o la 5:30. Pentru moment, o iei și Locul de amplasare esti o luați, asigurați-vă că să verificați documentul pe pagina de pornire CS50.net. Amintiți-vă că puteți obține un 8 1/2 de 11 de coli pentru a lua cu tine. Deseori, oamenii nu folosesc acest foaie la toate în timpul testului. Dar, de fapt, acesta este un incredibil instrument de studiu util. Astfel a pune împreună că foaia este ceea ce Mi-am petrecut, probabil, trei sau patru ore fac atunci când am fost studiat pentru CS50, și că a fost ușor de cele mai utile modul în care am putea studia pentru testul. Deci, chiar dacă aveți un alt de persoane ghiduri de studiu sa se uite la și folosesc ca trimiteri, am foarte recomanda face propriul ghid de studiu, punând chestia asta împreună. Care vă ajută într-adevăr să învețe tot materialul. Ultimul, dar nu cel mai puțin în această secțiune, după mâine test există un mai prelegere - lunea viitoare. Există mai mult de o secțiune, nu viitoare Marți înainte de Ziua Recunostintei, dar Marți după aceea. Ne vom întâlni împreună pentru o finala la revedere de partid și de a face, de asemenea, unele rece lucruri pentru a obține voi incantati studii suplimentare în informatică. E mai mult un proiect, unul mai mult echitabil, unul mai Hackathon. Suntem aproape de sfârșitul lui CS50, ceea ce este interesant - dar, de asemenea, daca esti ca mine, un pic trist. Înainte de a merge mai departe, nimeni nu avea întrebări cu privire la ceea ce ne-am acoperit până acum? OK, bine să mergem peste câteva întrebări pe care le au pentru testul și subiecte am putea acoperi. Deci, aceasta este o listă care am pus împreună. Este în nici un caz exhaustivă, dar sperăm că va împrospăta memoria dumneavoastră dacă au unele întrebări cu privire la oricare dintre aceste subiecte, sau dacă aveți întrebări cu privire la probleme de practică de la concursuri în ultimii ani. Am avut câteva întrebări care au fost prin e-mail la mine, dar vreau să dețină în afara pe cele pentru o secundă. Are cineva întrebări, problemele ei nu au înțeles, răspunsurile ei nu au înțeles pentru a obține noi a început? Avi. Audiența: Poți să te duci peste DOM și Ajax foarte repede? Cum ar fi, ceea ce avem nevoie să știm sau să să înțeleagă despre ei? JASON Hirschhorn: am de gând să răspundă la în general, această întrebare a, ceea ce fac eu trebuie să știți despre un subiect dat x? Pentru că am un sentiment multi dintre voi sunt de gând să mă întrebi asta, sau sunt curios despre asta. Deci, în măsura în care subiectul a fost acoperite în curs, sau secțiune, sau pe study.cs50.net, o problemă de set, tu ar trebui să fie familiarizat cu ea. Deci, nu aveți nevoie să știți fiecare tip de de tag-ul, care este disponibil în HTML sau fiecare tip de atribut sau de proprietate vă pot da ceva în CSS. Dar dacă ați văzut-o într-un exemplu de curs, dacă ați văzut într-o problemă set, ar trebui să fie, probabil, familiarizat cu ea, în special lucruri ai văzut în curs. Așa că am discutat documentul Object Model un pic în secțiune, cu atât mai mult în curs. Ar trebui să fie familiar cu care o mare parte din ea. Și ar trebui să fie familiarizat cu Ajax în aceeași măsură. Nu am vazut incredibil de avansat sau exemple complicate de Ajax, astfel încât tu nu vei fi întrebat facă ceva incredibil de complicat. Dar s-ar putea fi întrebat, cum fac eu face un apel Ajax folosind jQuery? Care este ceva ce ai văzut un număr de ori înainte, atât în revizui sesiune și în curs, și e doar linii două-ish de cod. Astfel că este ceva ce ar trebui să să fie familiarizat cu. Dar, din nou, pentru toate aceste subiecte, dacă le-ați văzut înainte, acesta este un joc cinstit. Și am putea să vă întreb - în mod evident, suntem de gând să ceară Tine lucruri nu s-au văzut înainte. Codificare ceva ce nu avea văzut înainte. Care nu este de a spune că nu aveți văzut instrumentele necesare pentru a rezolva această problemă înainte. Ați văzut aceste instrumente. De exemplu, la testul 1, dacă aveți nevoie de codul de strlen. Noi nu am codat strlen înainte. Dar știi cum să folosească o pentru buclă, știi cum să folosească în cazul în care condițiile. Știi cum să scrie variabile în C. O să fie același lucru aici. Nu sunteți de gând să se cere să facă ceva ce nu am mai văzut înainte, dar s-ar putea fi rugat sa, cum ar fi, pune ceva împreună într-un mod nou, sau rezolva un alt tip de problemă. Ne pare rău, că nu a fost specific pentru dvs. întrebare, dar eu nu pot răspunde cu privire la fiecare subiect ceea ce face sau nu trebuie să știe. Dar, de asemenea, îmi pare rău, ultimul lucru pe care. Am petrecut mult mai mult timp pe liste de link decât avem pe Ajax. Nu ați folosit Ajax într-un set de probleme. Una dintre caracteristicile principale ale care problema stabilit că a fost liste de link-uri. Și am petrecut o mulțime de timp în curs secțiune și folosind-o. Deci, șansele sunt lista de link-ul va veni mai mult de multe ori cu privire la testul de Ajax voință. Sau întrebările au de a face cu link-ul Lista va fi în valoare de mai multe puncte. Astfel, puteți cu siguranță, concentrându-și îngustă în pe lucruri care sunt mai mult probabil să vină pentru că avem a petrecut mai mult timp pe ele. OK orice alte întrebări? Da. Audiența: Putem merge cu privire la utilizarea funcții anonime în JavaScript? Sunt o sunt puțin confuz despre asta. JASON Hirschhorn: Deci, in JavaScript - Încerc să mă gândesc cum m-am ar putea scrie aceasta pe - asa ca hai sa deschidem de fapt, acest cod. Deci, aceasta este codul pe care am făcut-o săptămâna trecută. Și ați văzut acest lucru înainte, dacă au fost aici, în secțiunea săptămâna trecută. Sau ați văzut ceva similar cu acesta înainte. Dar poti sa te uiti la aceasta prima linie. Acesta este modul de a începe - toată lumea a văzut acest lucru înainte. Dacă doriți să puneți un cod JavaScript, l-ai pus în acest, presupunând sunteți folosind JQuery. Acest lucru se spune, nu face nimic până încărcat documentului. Și apoi, Curt, tu vezi aici facem ceva de genul asta - funcție paren deschise, închise paren. Deci, noi nu se dau acest funcționeze un nume. Noi nu vom defini această funcție ar trebui să ruleze și apoi numesc o grămadă de ori. Ne spui doar acest document are deja o funcție. Un cuplu de lucruri de făcut. Și nu vrem să-și petreacă timpul dându-i un nume sau salvați-l pentru eternitate. Vrem doar să facem niște lucruri. Deci, o funcție de sortare anonim de servește în acest scop. Când nu sunteți de gând să folosiți ceva de peste si peste din nou, astfel încât nu aveți nevoie să-i dea un nume - trebuie doar doriți să-l utilizați o dată - v-ar spune doar funcția, pentru exemplu, în acest caz, iar tu esti doar definirea ceva care ai putea da un nume. Cum ar fi, am putea scoate această funcție din și da un nume și apoi apel care funcționează aici. Dar noi nu trebuie să facem pentru că noi nu vreau să pierd timpul dându-i un nume sau pierdem ceva în spațiu numele nostru. Și veți vedea că o mulțime. De exemplu, vom vedea că o mulțime în acest cod, dar ați văzut acest lucru înainte, atunci când faceți clic pe ceva - rula acest tip de cod. Am putea defini codul pe care ne-o dorim pentru a rula atunci când faceți clic, în acest caz, acest ID, ca o funcție separată și apoi executați această funcție. Dar, în acest caz, ne-am doar sărind peste acest pas și de ao muta în aici și doar la definirea totul pe care ne-o dorim să se întâmple și nu dându-i un nume. Că încă nu s-ar putea avea răspuns la întrebarea dumneavoastră. Audiența: Nu, nu. Vreau să spun, cred că pur și simplu nu fac într-adevăr Înțeleg de ce ar fi o funcționeze la toate, totuși. Pentru că nu se fi într-adevăr numit. Ea nu are într-adevăr un nume. JASON Hirschhorn: Este o funcție în sentimentul că este o serie de etape, ca și cum te-ar pune într-o funcție. Și atunci de ce noi numim o funcție anonim. Noi nu mergem să-i dea un nume. Noi nu vom pierde încercând de nume, dar am putut. Funcții anonime, te poate oferi întotdeauna un nume. Deci, de exemplu, acest cod de aici, am putea pune acest cod în interiorul unui funcția și apoi apel această funcție aici. În schimb, spunem noi, nu ne vom să se ocupe cu asta. Suntem doar de gând să scrie totul chiar aici. E ca si cum, uneori, atunci când scrii o buclă în patru C - voi au văzut acest lucru înainte - poate ai iterarea prin forloop în i este egal cu 0. I este mai mică de strlen. Sau te duci prin unele array, puteți salva matrice indicele i în unele variabile. Și utilizați acea variabilă. Deci, nu aveți nevoie pentru a rescrie matrice suport i de peste si peste si peste. Și asta e un fel de o variabilă. Nu se servesc mult alt scop decât pentru a face codul un pic mai curat și mai ușor de citit. Funcție similară aici. Doar face un pic mai ușor, dar funcțional nu e nici o diferență. Asta răspunde la întrebarea dvs.? Publicul: Da. JASON Hirschhorn: OK .. Mario? Audiența: Ieri au pus de multe ori Funcția paranteze eveniment. Asta înseamnă ceva? Sau este pentru lucruri cum ar fi pe care le-ar face document.ready eveniment funcție. JASON Hirschhorn: Am văzut acest lucru, și din nou, acestea sunt lucruri mici, care probabil că nu vreau să petrec prea mult timp pe. Pentru că, uneori, eu nu vreau ca oamenii te speriat că ei nu au a auzit despre aceste lucruri atât de mult. Dar am vorbit un pic despre Stivuitoare eveniment. Așa se întâmplă ceva, și apoi această funcție este executată. Și apoi ne-am, de asemenea, vreau să știu cateva detalii despre ceea ce sa întâmplat în acest caz. Deci, cred că înapoi la problema stabili 4. Asta e, probabil, cel mai simplu mod de a înțelege că în pauza afară. Nu a fost un cod - ca un eveniment se va întâmpla, dar eveniment poate însemna multe lucruri. Dacă ar putea însemna mouse-ul se face clic, se ar putea însemna te-a lovit o tastă săgeată, et cetera, et cetera. Dar totul este salvat în acest generic lucru numit de evenimente. Și atunci putem spune, este acest eveniment chestia asta? Sau este acest eveniment chestia asta? Sau, ce fel de sa întâmplat cu acest eveniment? Deci, de aceea vă creați că variabila acolo pentru a salva aceste informații suplimentare despre ceea ce sa întâmplat exact asta ai de gând să doriți să utiliza în funcție. Dar, din nou, asta e, probabil, una dintre lucruri mai puțin importante pentru a fi super- familiarizat cu. OK, ce alte întrebări au oameni a avut, sau pietre de poticnire care le-au întâlnit în timp ce revizuirea? Vom reveni la această listă. Ce despre timpul testelor de practică, în cazul în care oamenii s-au luat pe cei deja? Care au fost unele probleme care împiedicat voi up? Știu că pentru un fapt că anul trecut test a fost foarte greu. Audiența: Puteți explica ce un atac SQL injection este? JASON Hirschhorn: OK, mare. Așa că am vorbit despre asta un pic. Există o prelegere pe securitate. Și, din nou, așa cum am menționat mai devreme, aceasta este o parte. Dar va fi frustrat pe testul atunci când ai citit unele mici două puncte întrebare, iar tu esti ca, atunci când am învățat vreodată asta? Toate aceste lucruri în aceste prelegeri că tu nu cred că ai nevoie de stiu, sau ai putea luciu peste, deoarece ei nu au avut de a face cu set problemă, cei care probabil se va veni din nou la testul. Deci, rece, lucruri amuzante pe care tocmai ați crezut că David a fost spus pentru a vă bucurați-vă, el a fost vă spun pentru a vă se bucura si de a face doar să fii super- incantati de a învăța totul nu este de a învăța cu privire la informatică. Acele lucruri, de asemenea, veni la teste. Deci, chiar și aceste lucruri mici, care nu au direct legate de problema dumneavoastră stabilit, ca voi sunt familiarizați cu de la Quiz 0, va veni probabil în sus. Și acest lucru este un exemplu bun de ceva. Deci, un atacuri SQL injection este atunci când a lua niște informații de la utilizator și pe care doriți să-l inserați într-un tabel cu ajutorul o inserție SQL declarație, dar tu nu a igieniza de intrare înainte de timp. Deci, în mod evident, am văzut Instrucțiuni SQL. Voi deschide doar în sus - să mergem - vom merge la revizuirea - Cred că, cine a acoperit? Cred că Samala făcut. Astfel încât să putem obține - Audiența: Unde ai găsit asta? JASON Hirschhorn: Deci, dacă te duci la CS50.net, teste, iar apoi puteți derulați peste și să obțină diapozitive din sesiunea de reexaminare. Dar puteți vedea acest lucru este un exemplu bun de un atac SQL Injection. Vom lua niște informații de la utilizator și ei ne dau un șir, și apoi ne-am doriți să îl inserați ca șir într-o bază de date. În general, vom steriliza că intrare, ceea ce înseamnă că există unele caractere care sunt periculoase. De exemplu, în șiruri SQL, aceste citate - ghilimele simple sau ghilimele - înseamnă ceva. Ei spun capăt acestui șir de aici. Și astfel, dacă utilizatorul vă oferă un singur sau un citat dublu, acestea ar putea fi încearcă să excursie la interogare SQL și introduce unele lucruri rele în ea. Și dacă ei fac asta, ei ar putea castiga de control al bazei de date sau de a face ceva lucruri pe care nu doriți să le facă. De aceea ori de câte ori ne-am lua SQL interogări, vom steriliza de intrare înainte de inscrie in baza de date, care inseamna ca scapa de aceste caractere. Vom vorbi despre asta într-o secundă. Dar pe scurt, o injecție SQL atac este dacă nu faci asta - dacă nu aveți grijă de intrare te-au dat înainte de a pune dvs. baze de date, ele pot, așa cum veți vedea în jos aici, executați o interogare care, de fapt - au pus în codul lor de aici și această linie selectați aici vor selecta totul, de la masă, indiferent de ceea ce este dat parola. Pentru că aveți sau 1 este egal cu 1. Deci, practic, pe scurt, o modalitate de a prelua baza de date. Întrebarea, apoi, pentru voi, este în cazul în care în seturi p 7-ai steriliza toate intrările la întrebările dumneavoastră SQL? În cazul în care sa întâmplat acest pas? În cazul în care nu vă împiedică SQL injection Atacurile de la întâmplă în p set 7? Da. Audiența: Crypt? JASON Hirschhorn: Deci nu a fost cripta. Noi nu am face asta pentru acest special problema stabilit, dar se întâmplă în funcția de interogare. Noi de fapt am scris pentru tine, și am avut grijă de igienizarea intrări pentru tine. Dar, în ultimii ani, elevii au avut să tastați intrările pe cont propriu. În p set 7, o mulțime de tine - lasa-ma sa deschid un alt fișier. Deci, veți observa aici o mulțime de oameni, în problema stabilit 7, nu a sunat această funcție pe siruri de caractere. Această funcție, htmlspecialchars, din nou - acest șir ar putea avea unele lucruri că în HTML însemna altceva. Ca o bretele, un pătrat, sau un unghi suport înseamnă ceva în HTML. Și așa că, dacă imprimați că, din partea ecran sau dacă luați doar că și imprima că pentru a HTML-ul, care ar putea faci ceva ce nu se aștepta. Astfel htmlspecialchars trece peste toți cei personaje care au speciale întâlnire și-i scapă. Deci, acesta devine imprimate ca textul vrei sa vezi, mai degrabă decât înșurubare HTML dumneavoastră. Am sunat ca funcție în antet. Și o mulțime de oameni a uitat să apel care funcționează în Codul scriai. Astfel, de exemplu, dacă un nume de stoc a avut un Suport de unghi în ea și ați uitat pentru a apela această funcție, că unghiul suport ar fi aruncat de pe ce HTML-ul arata ca. Dar de asteptare această funcție va scăpa că așa este de fapt imprimă ca o Suport de unghi și nu arunca off codul HTML. Din același motiv, ne-am văzut, uneori, slash înainte de ghilimele duble într-o linie printf pentru că nu vrem ghilimele duble jos șir. Vrem să le imprimați dovedit a ecranului. Deci, toate acestea este aceeași idee. Asta răspunde la întrebarea dvs.? Audiența: Un fel de. JASON Hirschhorn: Îți au un follow-up? Audiența: Cred ca injecție SQL atac are de a face cu asta? Nu înțeleg cum cele două sunt legate. De ce ai face specialchars? JASON Hirschhorn: OK, deci SQL atac de injectare este atunci când vă injectați niște sfori malware în cuiva programul, și ei doar l ia si fugi interogarea SQL cu un șir le-ai dat. După cum puteți vedea aici, că ar putea fi problematică. Deci, modul în care a preveni împotriva care este luați șir lor, pe care le dau tu - deci acest șir de aici - și tu-l steriliza. Să scape de toate lucrurile pe care sunt potențial problematice. Astfel încât să nu le interpreta ca pe ceva asta înseamnă ceva. Și un exemplu de care cu HTML este această funcție. Deci, este aceeași idee aici. Și am fost doar aratandu-va alte exemple de când ați văzut această idee înainte. De a scăpa de intrare de utilizator înainte de imprimare l la un ecran sau punerea în interiorul o declarație SQL. Audiența: Deci, în acest caz, utilizatorul se joacă cu programator. JASON Hirschhorn: Da. Cu toate aceste atacuri de securitate, care este mereu în general utilizatorului, sau cineva, încearcă să te pui cu tine, programator. Și acestea sunt moduri în care puteți preveni împotriva lor. Audiența: Deci, am o întrebare despre funcții hash. În Quiz 1 din 2011, există două întrebări despre hash cu o singură față. Și mă întrebam ceea ce a însemnat. JASON Hirschhorn: OK, care test? 2011? Audienta: Da. Audiența: Quiz 1? Audiența: [inaudibil]. E ca și cum hashing o parolă. Asta nu se pune lucrurile - JASON Hirschhorn: Ce pagină a fost? Audiența: Cred că a fost 9 sau 10, sau ambele. JASON Hirschhorn: Bine, merge mai departe, Curt. Puteți răspunde în timp ce ne uitam. Audiența: Cred că vorbește despre hashing o parolă. Ca, atunci când cineva intră într-o parolă, te transforma într-un lucru criptat. Asta e hash parola, care este diferită de o funcție hash care pune ceva într-un tabel hash. JASON Hirschhorn: Să vedem. Lasă-mă să trageți în sus ceea ce au da ca raspunsul. Și apoi vom plimba prin ea. Deci, Curt a dat un exemplu foarte bun unui-un singur sens hash. Când am văzut asta, am ia parola și rotiți - amintiți-vă, în p set 7, cineva s-ar putea au o parolă care este doar o parolă, dar apoi devine criptate în ceva foarte lung. -Un fel hash înseamnă că este foarte ușor pentru a trece de la un mod la altul, dar este foarte greu pentru a merge de la alt mod spate. Și ca să știi, atunci când au fost de verificare parolele oamenilor în problema set 7, v-ar lua lor - astfel, de exemplu, spun ei a vrut să schimba parola lor, să le cereți pentru lor parola vechi. Ai luat lor parola vechi. Ai criptat. Si apoi a comparat cele două encryptions mai degrabă decât unencrypting originalul o, pentru că este într-adevăr greu pentru a merge în acest fel. Da. Audiența: Cât de în profunzime are noastră înțelegere de TelNet trebuie să fie? JASON Hirschhorn: În cazul în care a fost menționat scurt în curs, doar o scurtă înțelegere. Din nou, înapoi la răspunsul la întrebarea lui Avi - mai multe lucruri vin, cu atât mai probabil se va trebui să fie super- familiarizat cu ele. În cazul în care au venit doar în curs, asta e doar un singur loc. Dar în cazul în care au venit în curs, secțiune, și o problemă de set, atunci probabil trebuie să fie super- familiarizat cu ele. Deci, am avut o întrebare de la mai devreme despre - este a fost toamna anului 2010 - Quiz 1, să trageți în sus - această întrebare pe stive și cozile, pe care am făcut-și petreacă un pic echitabil de timp vorbesc despre în curs, chiar deși nu am făcut-o cu adevărat a lovit vreodată în secțiune. Deci, această întrebare este oferindu-vă o serie de de comenzi și care vă solicită ce se imprimă în acest caz. Deci, aceasta este o chestiune cu totul rezonabil care ar putea fi întrebat de tine baieti, și apoi voi ar trebui să să fie capabil să răspundă. Deci, de ce nu te uiți la el pentru 30 de secunde, iar apoi, dacă cineva vrea să propune răspunsurile la mine, și apoi ne vom plimba prin ea. În regulă, care are un răspuns la întrebarea 27? Da. Audiența: Este 1, 2, 3, 3? JASON Hirschhorn: Asta-i drept. 27 este 1, 2, 3, 3. Așa că haideți să ne uităm la modul în care ne-am înțeles. În primul rând, noi spunem, în cazul în care s este o coadă, ceea ce se imprimă? Deci, o q este primul intrat, primul ieșit. Am mai văzut asta înainte. Am văzut imaginea poporului așteptare la Apple Magazin pentru a cumpăra unele produse. Primii oameni din sunt primii oameni afară. Primele lucruri pe care într-o coadă sunt primele lucruri afară. Deci, dacă am împinge ceva într-o coadă, vă împinge o, apoi am pop 1. Pop înseamnă doar scoate. În acest caz, să ia doar ceva. Ne scoate primul lucru, care este un 1. Deci, vom pune lucrurile pe care le imprima pe aici. Acest lucru nu mai este în coada noastră. Apoi am împinge pe un 2 si un 3, și am pop de pe primul lucru. Din nou, pentru că este o coadă. Așa că am obține un 2, apoi am pus pe un alt 3 și suna din nou pop. 3 noastră este în primul rând. Și apoi am avut o grămadă de alte lucruri si de apel pop. Dar, din nou, din moment ce aceasta este o coadă, primul intrat, primul ieșit. Ne scoate primul lucru care a fost pus vreodată inch Asta e 3 noastră. Și, în acest caz, noi nu vă faceți griji despre toate aceste lucruri. Deci, asta e, dacă acest lucru este o coadă. Orice întrebări cu privire la o coadă? Un teanc de diferit. Care este acronimul avem pentru a înțelege o stivă? AUDIENTA: Ultimul intrat, primul ieșit. JASON Hirschhorn: LIFO, cred. Ultimul intrat, primul ieșit. Așa că am văzut un exemplu de o stivă de tăvi într-o sală de mese. Oricare ar fi tava este pe partea de sus devine crescut. Și apoi, dacă noi tăvi venit in, ele se pune pe partea de sus. Și apoi tot ce este pe top devine ridicat. Deci, aceste tăvi pe puterea de jos sta acolo pentru o vreme. În acest caz, din nou, vom trage asta. Ne împinge pe unul, așa o este prima în linie. Și ne-am pop ceva off. Și nu există decât un singur lucru acolo, așa că ne-am muta o aici. Apoi ne-am pus pe 2 și 3 și am pop ceva off. Dar, din nou, din moment ce aceasta este o coadă - sau aceasta este o stivă, mai degrabă - vom lua tot ce a fost în trecut. Tot ce este în ultimul iese primul. Și 3 este în trecut. Așa că am pus trei acolo jos, apoi ne-am pus pe un alt 3 și noi pop din nou ceva. În cele din urmă, ne-am pus pe 4, 5, 6, și 7, și aici ne-am pop. Și pentru că este o stivă, vom lua tot ce a fost pus în trecut și scrie că aici. Așa că am termina cu 1, 3, 3, 7. Are cineva întrebări despre stive sau cozi, sau acest exemplu? OK. Să ne întoarcem la lista de subiecte. Nu pe acolo, în acest fel. Ce alte întrebări oamenii au? Audiența: Nu stiu cat de important acest lucru este, dar am fost confundat de către diferență între diferitele tipuri de limbi, cum ar fi marcare, compilate, interpretate. JASON Hirschhorn: Asta-i o întrebare bună. Cred că este destul de importantă, asa ca hai sa trecem peste ea repede. Mari limbile pe care le-am vazut pana acum sunt C, PHP, JavaScript și, din punct de vedere de limbaje de programare. HTML, așa cum ați menționat, nu este un limbaj de programare. Este un limbaj de marcare. Și apoi ne-am CSS, care este, de asemenea, nu un limbaj de programare. Am văzut, de asemenea, SQL, care nu este un limbaj de programare, fie. Deci, SQL vă permite să scrie interogări pentru o bază de date. HTML este un limbaj de marcare. Acesta definește modul în care sunt structurate lucrurile. Și CSS vă permite să stilizați lucruri. Asta e, probabil, în măsura în ceea ce trebuie să știți despre cei trei. Dar este mult mai interesant de a figura diferențele dintre C, PHP, și JavaScript. Deci, una dintre cele mai mari diferențe, așa cum ați menționat, este modul în care acestea sunt compilat, sau orice echivalentul este. Astfel încât C este compilat. Ne-ar fi mereu un compilator. Și atunci unde sunt erorile când executați compilatorul C? În cazul în care nu vă arată erori în codul dvs.? De unde știi că e un eroare în codul in C? Audiența: Acesta vă arată în terminal. JASON Hirschhorn: Acesta vă arată în terminale ca esti compilarea. Și dacă există erori, ea nu va compila de fapt. Astfel încât să știți că există erori corecte departe, înainte de timp, înainte de a chiar rula codul. Desigur, s-ar putea rula cod și a obține o eroare de segmentare, dar care a fost probabil pentru că ați făcut ceva logică prostie. Dar codul dvs. cu punct de vedere tehnic toate corecte și ar putea rula. Deci, cod C se compilat înainte de timp. Ce zici de cod PHP? În cazul în care au fost erori în codul PHP? Cum ai stiut ca ai avut erori în codul PHP? Audiența: Timpul de execuție? JASON Hirschhorn: Da, atunci când ar fugi, ar fi Cod PHP în spate. Și atunci ar afișa un ecran. S-ar putea vedea unele lucruri pe partea de sus, dar apoi te-ar vedea, cum ar fi, unele , masă urât portocaliu. Și vă va oferi un număr de linie și să zicem, bla, bla, bla, chestia asta nu au de lucru. Deci, PHP este interpretat linie cu linie și executat pe server. Iar atunci rezultatul este trimis la tine. Mare. Executat în linia de servere de linie și apoi trimis la tine. Și dacă există o eroare, va trimite tu eroarea, dar s-ar putea avea ajuns niște lucruri înainte de timp. Deci, o parte din ea s-ar putea au lucrat, dar mai târziu, unele lucruri nu s-ar putea avea nu a lucrat. Ce despre JavaScript? Unde ai vedea erori JavaScript? În p set de 8, atunci când ai o eroare, cum ai știut? În cazul în care ar apărea? Audiența: În consola, în partea de jos. JASON Hirschhorn: în consolă, pe partea de jos. Acesta vă va oferi, de asemenea, număr de linie, și că ar fi apar pe partea de jos. Și JavaScript nu a fost executat pe server. JavaScript a fost trimis la computer, și apoi când a fost timp pentru a rula JavaScript, JavaScript a fost rula linie cu linie pe client, pe partea ta. Nu server, partea de client. Și în mod similar, a fost rula linie cu linie. Și atunci când v-ar lua o eroare, ar apărea în partea de jos. Ca și PHP, o parte din ea ar putea executa, și apoi s-ar putea obține o erori mai târziu. De asemenea, un pic PHP, spre deosebire, dacă ai o eroare de JavaScript - spune că nu a făcut dreapta cod pentru o cutie de alertă - ai putea continua să fie difuzate program. Caseta de avertizare nu ar funcționa, dar programul ar fi bine. Doar poate că funcția nu ar reuși. Deci, există unele dintre cele mai mari diferență în ceea ce privește modul în care acestea limbile, sau modul în care codul de programare scrieți sunt evaluate de fapt. Există și alte diferențe în punct de vedere - cea mai mare diferență am văzut în termeni de variabile în diferite limbi. Deci, poate cineva să-mi dea o diferență între variabile în cele trei limbi? Da. Audiența: In C, sunt strict tastat. În celelalte două, sunt vag tastat. JASON Hirschhorn: Și Ce înseamnă asta? Audienta: Asta în C, trebuie să declare tipul variabilei când declarați variabila, cum ar fi interbool sau char. JASON Hirschhorn: Excelent. În C, mereu am avut de a pune un tip de o variabilă. Și nu am putut amesteca cu adevărat tipuri. Nu ai putea face un întreg plus un șir. Dar, așa cum am văzut în alte limbi, de fapt, se poate amesteca tipuri, și nu aveți cu adevărat să dea ceva un tip, vreodată. Deci, cum știm lucrurile sunt variabile în PHP și JavaScript? Audiența: În PHP, încep să cu un semn dolar. În JavaScript, atunci când declara ei, trebuie să aveți un bar. JASON Hirschhorn: Corect. Deci, în PHP, care începe cu un semn dolar. În JavaScript, ei trebuie să aibă bar, deși, uneori, ei nu fac de fapt, trebuie să aibă bar. Dar asta e corect. Astfel că este o mare diferență între variabile. Cred că acestea sunt, probabil, de pe partea de sus a capul meu, cele două cele mai mari diferențele dintre acestea trei limbi. Dar, da. Audiența: Și domeniul de aplicare al variabilelor C este limitată la acolade, în cazul în care celelalte, e doar ca, moare daca este doar o funcție, dar altfel, e - JASON Hirschhorn: Corect. Deci, domeniul de aplicare este ușor diferită în C. Ca vă aduceți aminte, acolade defini Domeniul de aplicare al variabilelor. Deci, dacă acesta a fost definit în interiorul unei dacă condiție, care este în interiorul o pentru buclă, variabila există doar acolo. În JavaScript, dacă o variabilă este definită în interiorul o condiție în cazul în care - intr-o pentru buclă - va exista pentru această funcție, dar nu va exista în afara funcției. Deci, domeniul de aplicare este un pic mai flexibil în JavaScript și PHP. Care răspunde la întrebare? OK, orice alte întrebări? Putem face mai mult de patru minute de întrebări, atunci vom sari în codificare. Audiența: Putem merge în Ajax și vorbesc despre ceea ce este asta? JASON Hirschhorn: Vorbeste după la Avi. El a cerut această întrebare mai devreme. Audiența: Greșeala mea. JASON Hirschhorn: Nu vă faceți griji. Audiența: Ce este mai exact JSON? JASON Hirschhorn: Ce este JSON? Care este întrebarea dvs.? Audiența: Doar foarte repede, diferența dintre imprimare și ecou în PHP. JASON Hirschhorn: De ce nu te google diferența dintre imprimare și ecou? Diferență ușoară. Nu că mare lucru. Dar ar trebui să-l Google cu siguranta, și că voi da un răspuns bun. JSON, probabil, mai mare de o afacere. Standuri pentru JavaScript Object Notation. Și când am văzut JSON folosit? Când l-ai văzut - de ce nu te cunosc cuvântul JSON? Când l-ai văzut? Audiența: Când am fost obtinerea stoc citează pentru finanțare. JASON Hirschhorn: Deci ai văzut ea când au fost obtinerea de stoc citează pentru finanțare. Și de ce l-ai văzut? Audiența: Când am fost preluarea toate informațiile pe care a venit în acel format. JASON Hirschhorn: Deci, v-ar lua - Da. Dă-i drumul. Audiența: [inaudibil] informație dintr-un obiect? JASON Hirschhorn: Ambele celor pune împreună este răspunsul căutăm. Aveți nevoie de informații de la acest alt pagina de web. Și v-ar spera că atunci când ești obtinerea că de informații, ar fi prezentat la tine la un anumit tip a format standardizat. Toată lumea este, probabil, familiarizat cu valori separate prin virgulă. Puteți exporta o foaie de calcul Excel sau orice tip de foaie de calcul ca o listă de Valori separate prin virgulă. Și virgulele împărți toate diferite domenii. JavaScript Object Notation - JSON - este un alt tip de standardizat aspectul de lucruri. Și asta e de multe ori cum am prelua informații de la interogări noastre Ajax. Deci, în acest caz, am luat- de pe site-ul Yahoo. Ei se întorc la lucrurile ne într-un obiect JSON. Și atunci știm, pentru că e un standard, ce e O să arate ca. Deci, putem repeta prin matrice care a revenit la noi, gama de obiecte care sunt returnate la noi. Avem nevoie, probabil, să știe cheile, dar, în general, vă dau documentație în site-ul, atunci când te preluarea unele JSON notație pentru ei. De asemenea, puteți JSON codifica un obiect. Deci, există o funcție JSON subliniere codifica. Și astfel încât să puteți lua un obiect care care le-ați creat, JSON se codifica, și trece-l pe la ceva altfel, dacă doriți să. Și JSON decodare există, de asemenea, pentru un scop similar, sau pentru scop opus. Audiența: Nu avem nevoie să știm de codificare pentru tabele de dispersie și încearcă? Sau avem nevoie doar pentru a înțelege modul în care acestea sunt utilizate, conceptual? JASON Hirschhorn: Deci, ridica mana dacă ai făcut un tabel hash pentru p set 4 cu o listă de link. Sau p set 5. Astfel că a fost o mare majoritate de oameni. P set 5, 6, cine știe. Acum o lungă perioadă de timp. Deci, marea majoritate a ai făcut hash tabele cu liste de link-uri. Și pentru că asta e, probabil, mai mult abordare comună, și pentru că am petrecut o mulțime de timp a face liste de link-uri și hash mese, ar trebui să fie, probabil, destul de familiarizați cu modul de cod un tabel hash și o listă de link-ul. Și dacă vă gândiți la această problemă stabilit, nu a fost într-adevăr la fel de tare ca v-ați așteptat. Și acolo a fost mult mai puțin cod decât v-ați așteptat. Aș spune că ar trebui să știi cum să cod un tabel hash sau o listă de link-ul. Nu că ai fi cerut ca, în mod necesar, dar ar trebui să știu cu siguranță că. De asemenea, dacă te uiți prin teste trecute, au existat o mulțime de întrebări cu privire la scrierea funcții pe liste de link-uri sau liste de dublu-legate. Care pare să vină în sus în fiecare an. Introduce dreapta pe o listă de link-ul, chiar șterge dintr-o listă de link-ul, introduceți corect pentru o listă dublu-legate, etc. Așa că, mă simt destul de confortabil să spui că ar trebui să știi asta. Pentru încercare, aș spune că ar trebui să cu siguranță știu cum funcționează, și poate da unele pseudocod pentru modul în care să-l cod și a pus-o. Dar nu ar fi cel mai rău lucru în în lume, dacă nu știi cum să cod se în C. Ar fi minunat dacă ați știut cum să-l cod în C, dar cred că probabil pseudocod pentru a încerca ar fi fi cel mai mult ar avea nevoie să cunoască pentru a încerca. Audiența: credit Extra? JASON Hirschhorn: Și același cu, dacă ne-am du-te în copaci binar de căutare, s-ar putea nevoie - și le-ați văzut în trecut, am făcut o mulțime de - știți cum arbore binar de căutare de lucrări. Ar trebui să fie, probabil, posibilitatea de a stabilit o în cod pseudo. Dar, pentru că marea majoritate a oamenilor nu a făcut asta pe problema set, aș spune că e, probabil, mai puțin important să știți cum să codul și a înființat un copac de genul asta. Orice alte întrebări? De asemenea, le putem cere de-a lungul așa cum am trece prin unele probleme. OK, ne vom muta pe. Skip că diapozitiv pentru acum. Vorbind de copaci, care este primul intrebare am pentru voi. Pentru că aceasta este o problemă. Aș spune că e foarte probabil veți a obține o problemă ca acest test pe dvs. vă cer să cod anumit tip de insert, șterge, de căutare, pentru un tip de din structura de date care le-am văzut. Care vine în fiecare an, și am petrecut o mulțime de timp de-a doua jumătate a acestui semestru merge peste aceste tipuri de date. Deci, chiar acum, am definit un nod într-un arbore binar de căutare. Și ceea ce aș dori să faceți este dat un arbore binar de căutare care începe la această rădăcină stea nod, finaliza punerea în aplicare a funcției de mai jos, care se întâmplă să fie o funcție de descoperire. Și-l face cu și fără recursions. Așa că vreau să scrie două funcții. O face acest lucru cu recursivitate, un face acest lucru fără recursivitate. Și nu presupune că rădăcină va fi non-nul. Deci, suntem în căutarea pentru întreg i în arborele începând de la rădăcină, și avem nevoie de pentru a scrie acest recursiv și iterativ. Da. Audiența: Deci, vrei să ne întoarcem adevărat dacă vom găsi, și fals în cazul în care ne-am nu-l găsesc. JASON Hirschhorn: De unde știi? Cum ai știut asta? Audiența: am întrebat în primul rând, dar am fost presupunând, deoarece se spune bool la începutul funcției. JASON Hirschhorn: Corect. Se spune bool, așa că nici măcar nu trebuie să vă spun ceea ce mă aștept să vă mai întoarceți deoarece se spune acolo. Dar asta e drept. Reveni, adevărat sau fals. Deci, înainte de a începe, aș recomanda, dacă nu sunteți familiarizat cu arbori de căutare binare, desen rapid o imagine de ea pentru a obține dvs. înțelegere, corect. Care vă va ajuta, de asemenea, atunci când scrieți codul și verificarea-l. Din nou, de asemenea, nu au atât de mult timp pe testul pentru a face toate lucrurile vă cerem să facem. Deci, scrierea de cod pseudo este de foarte mare ajutor. Și, în general, ne-am da de - în cazul în pseudocod este perfect corect, că este în general, de 50% pe o întrebare. Deci, nu este o regulă greu și rapid, dar în cazul în care scrii doar pseudocod și este corect, este, în general de 50%. Așa că aș recomanda mereu - daca esti presat de timp, sau chiar dacă esti doar încercarea de a-mi dau seama - începând cu pseudocod. Și, în sfârșit, dacă ai putea scrie acest toate în C, care ar fi fantastic. Așa că haideți să luăm trei minute pentru a lucra la acest program. Și apoi ne-am de gând să scrie pseudocod pentru el doar o dată, și apoi am de gând să-l cod recursiv și apoi iterativ. Dacă aveți întrebări, simt ridica gratuit mâna. Fericit să se plimbe și să le răspundă înainte de a începe ca un grup. Să ne relua, și vom pseudocod versiunea recursiv de acest lucru, iar apoi o vom cod. Deci, o functie recursiv are nevoie de două lucruri. Acest lucru ar putea fi o întrebare care ai putea fi întrebat. Are nevoie de două lucruri. Cine poate ridica mâna și spune-mi ceea ce cele două lucruri o recursive Funcția are nevoie? Prin definiție, are două lucruri. Care sunt cele două lucruri? Noi mâini. Da, Alden. Audiența: Deci, eu nu sunt sigur dacă aceasta este terminologia, dar - JASON Hirschhorn: Mă bucur că te ridica mana. Audiența: Este nevoie de un caz de bază, și are nevoie de un pas recursiv. JASON Hirschhorn: Perfect. Este nevoie de un caz de bază și un pas recursiv. Deci, ceea ce este cazul bazei noastre de aici? Audiența: F rădăcină egal este egal cu zero. Îmi pare rău, doar în pseudocod, daca este nul. În cazul în care rădăcină este nul. JASON Hirschhorn: Dacă rădăcină este nul. Asta-i excelent. Acesta este cazul nostru de bază. Asta e ceea ce vom pentru a verifica de fiecare dată. Și cazul de bază este primul lucru pe care îl faci. Dacă te-a lovit cazul de bază, ați terminat. Acum, avem nevoie de apelul nostru recursiv, și mi-ar fi dispus să parieze avem nevoie de un cuplu recursiv apeluri aici. Pentru că este un copac, și ne-am ar putea merge mai multe moduri. Deci, în cazul în care rădăcină este nul, suntem bine. Ce propui? Și acum am de gând să înceapă strigând pe voi, pentru că știu că voi cu toții acest lucru. Dar Annie, ce ar trebui să linia următoare să fie? Ce se întâmplă dacă am găsit-o? Ce facem? Audiența: Dacă l-am găsit? JASON Hirschhorn: Sau ce în sensul că - da-mi pseudocod pentru linie de unde l-am găsit. Audiența: În cazul în care i este egal cu radacina i? JASON Hirschhorn: Și atunci ce facem? Audiența: Înapoi adevărat. JASON Hirschhorn: Mare. Deci, în cazul în care i este i - oh, ei numesc amândoi i. Care devine confuz. Dar dacă i este i întoarcă adevărat. Asta e, probabil alta lucru ar trebui să facem. Are sens. OK, acum nu am făcut recursive nostru numesc încă, deși, pentru că o recursive apel ar suna din nou această funcție. Deci, ce ar trebui să următoarea linie de pseudocod fi? Anna. Audiența: în partea stângă. JASON Hirschhorn: Fii specific, totuși. Acesta este un arbore binar de căutare, astfel încât ceea ce este verificarea pe partea stângă implică? Audiența: Deci, nod - Îmi pare rău, rădăcină. Și apoi săgeată stânga. Nod, nod, îmi pare rău. Nu am citit-o în mod corespunzător. Se numește nod, corect? JASON Hirschhorn: Acesta va fi numit rădăcină în această funcție, dar nici un fel. În partea stângă - Da? Audiența: În cazul în care nu este egal i, atunci vom apela funcția din nou? JASON Hirschhorn: Asta-i drept. În cazul în care nu este egal i, vom pentru a apela din nou funcția. Dar ce parte a arborelui mergem pentru a apela din nou funcția? Audiența: Pe partea stângă. JASON Hirschhorn: Noi nu suntem întotdeauna de gând să-l numesc stânga, în cazul în care nu-l egaleze. Audiența: Oh, îmi pare rău. Suna pe dreapta. JASON Hirschhorn: Vrem să știm în mod specific, deși - amintiți-vă, într-o arbore binar de căutare, totul pentru a în partea stângă este mai mic. Totul la dreapta în partea stângă este mai mare. Deci, nu e doar - Da, dă-i drumul. Audiența: În cazul în care este mai puțin decât mine, atunci - daca este pe partea stângă - JASON Hirschhorn: Deci, dacă ri este mai mică de - așa că, dacă numărul nostru este mai mic i, ce parte vrem să mergem? Audiența: Vrem să mergem pentru partea dreaptă. JASON Hirschhorn: Vrem să mergem - permiteți-mi trage un copac rapid. Dacă acest lucru este 5, aceasta va fi 3. Deci, dacă ri este mai mic de cinci, ceea ce lateral nu vrem să mergem? Audiența: Îmi pare rău, ce? JASON Hirschhorn: număr nostru este mai puțin decât numărul suntem uita la acum. Audiența: Oh, atunci ne-o dorim pentru a merge la stânga. Da. Scuze. JASON Hirschhorn: Exact. Nu vă faceți griji. În binar arbore de căutare, totul inferioară este la stânga, mai mare este la dreapta. Deci, în cazul în care numărul nostru este mai mic decât i suntem de verificare - pentru că veți vedea în nod, are un i - atunci vrei să mergi la stânga. Și aceasta este una usoara. Ce este altă linie de pseudocod avem nevoie pentru a scrie? Carlos? Audiența: Același lucru, doar treceți se la o mai mare semn și du-te la dreapta. JASON Hirschhorn: Poți spun ca mai mult de o dată? Audiența: În cazul în care numărul nostru este mai mare decât am, du-te la dreapta. JASON Hirschhorn: Excelent de locuri de muncă pe pseudocod. Să facem acest lucru în cod reală. Și din nou, aceasta va pseudocod probabil te, pentru că e corect, de 50% la această întrebare. Dar acest pseudocod, de asemenea, traduce o la unul, în esență, în cod. Așa că haideți să ne facem acest lucru în C. Cine poate da mi prima linie de cod? De fapt, în primul rând, înainte de a face că, lasă-mă să trag pe dreapta - Audiența: Am o întrebare. De ce ai liniuță linie ți-am dat? JASON Hirschhorn: Deoarece Nu aș putea scrie. Nu știu. Ai dreptate. Această linie ar trebui să fie acolo. OK, aici este funcția noastră. Și lasă-mă să trag pe dreapta, de asemenea, definiția noastră a unui nod. Ce se întâmplă dacă nu am făcut- scrie typedef? Stie cineva? Audiența: Nu ar compila. JASON Hirschhorn: Ar fi compila, da. Audiența: ar declara doar o exemplu, în loc de a face o nouă tip ar putea declara mai multe cazuri de? JASON Hirschhorn: Deci, nu ar fi știu - aceasta nu ar fi declare doar un singur tip. Ai putea face încă o mulțime de noduri. Audiența: Dar nu ar trebui să ne Trimite nod struct de fiecare dată? JASON Hirschhorn: Asta-i drept. Tu ar trebui să scrie nod struct de fiecare dată, în loc de doar nod. Dar cu typedef, puteți doar Trimite nod de fiecare dată. OK, care nu a dat - Da, Avica. Audiența: Dacă rădăcină egal la egal la egal null, return false. JASON Hirschhorn: Mare, și că este cazul nostru de bază. Linia următoare de cod. Cineva care nu a dat mi-o linie de cod încă? Da. Audiența: Root săgeată i este egal egal cu i. Apoi să se întoarcă adevărat. JASON Hirschhorn: Mare. Linia următoare? Da. Altcineva? Si apoi poti sa te duci viitoare. Audiența: Altfel dacă rădăcină săgeată i este mai mică decât i se întoarcă Funcția numit rădăcină find - JASON Hirschhorn: Îmi pare rău. Audiența: rădăcină de returnare find puncte de la stânga virgulă i. JASON Hirschhorn: Deci, dacă ri este mai mare decât lucrul în copac, vrem să du-te la stânga? Audiența: Nu, am avut schimbat. JASON Hirschhorn: Care dintre ele? Audiența: Nu, da. Am avea o mai puțin de semn acolo. JASON Hirschhorn: Corect, dacă ri este mai puțin decât ceea ce este în rădăcină - rădăcină nostru actual - apoi am vreau să merg la stânga. Și ceea ce este ultima linie, tu? Audiența: Practic același lucru, cu excepția comuta mai mare decât sau egal cu mai puțin și de la stânga la dreapta. JASON Hirschhorn: Excelent. Are cineva intrebari despre acest lucru? Deci, alte lucruri care ar au fost corect este că ar putea fi-ltiff. Ghici, punct de vedere tehnic, nici una dintre aceste într-adevăr, de asemenea, trebuie să fie-ltiff. De asemenea, nu există, probabil, doar un caz aici. Deci, asta e, probabil, ultimul caz. Nici măcar nu au nevoie de asta-ltiff. Dar, probabil, bun pentru a scrie aceasta, să fie clar. Da. Audiența: Deci tu nu crezi testul - dacă am face greșeli, de exemplu, în sintaxă - erori de sintaxă mici - cum că se ia în testul? JASON Hirschhorn: În general, pe testul, mici erori de sintaxă sau mici erori de stil să nu pierzi puncte. Deci, dacă ați uitat un punct și virgulă aici, ar fi bine. Dacă ați uitat să închideți această paranteză, care ar fi OK. Erori de sintaxă imense care modifica semnificația funcțională a codului dramatic, s-ar putea obține luate de pe puncte pentru. Sau, în general, doar de clasificare dacă sau nu dvs. Funcțiile de cod, chiar - Nu designul său atât de mult, și nu stilul său. Să acum un cod iterativ versiune a găsi. Asa ca va fi destul de similare, dar există cu siguranță va fi unele diferențe cheie. Cu toate acestea, pseudocod nostru probabil se poate merge - putem lua încă o linie de pseudocod și dau seama ce linie este în acest caz. Deci, într-o versiune iterativ, ceea ce crezi, Julia, ar trebui să fi prima linie? Audiența: Din nou, în boolean iterativ, aveți nevoie pentru a configura o pentru buclă, corect? JASON Hirschhorn: OK. Audiența: Deci, pentru ca, k, pentru x este egal cu 0, x este mai mic decât am. Sau nu, x este mai mic decât dimensiunea de copac. JASON Hirschhorn: copac. Deci, noi nu știm cu adevărat de mărimea copac, și nu știm cu adevărat pentru de câte ori putem merge, deci ceea ce este o alt tip de buclă care ar putea fi mai bine în acest caz? Audiența: Dacă altcineva? JASON Hirschhorn: Dacă altcineva nu poate fi o buclă. Deci ce este un tip de buclă putem doar du-te până unele cazuri este îndeplinită? Care este singurul alt tip de buclă în C, în afară de o buclă? Audiența: în timp ce. JASON Hirschhorn: În timp ce, exact. Într-o buclă în timp ce, nu trebuie să știe cum - o buclă în timp și pentru bucla poate face același lucru exact, dar un lucru frumos despre o buclă în timp ce este nu avem nevoie să știe cât de mare copac nostru este. Așa că am de gând să meargă până ce? Audiența: Până egal dimensiunea - JASON Hirschhorn: Ei bine, e foarte similar cu cazul nostru recursiv. Așa - Audiența: În timp ce rădăcină i nu este egal cu i. JASON Hirschhorn: Asta e foarte aproape. În timp ce radacina i - hai să încercăm. Nu cred ca [inaudibil] unde rădăcină i nu i egal. S-ar putea nevoie pentru a schimba într-o mică bit, dar că sună ca e destul de bun, pentru acum. Deci, vom face asta. De asemenea, amintiți-vă, nu ne putem asuma pe problema. Tu nu presupune că rădăcină va fi non-nul. Deci, ce crezi că foarte primul lucru pe care ar trebui să facem este? Audiența: Doar face la fel lucru ca și mai înainte. Dacă rădăcina este egal cu egal null, return false. JASON Hirschhorn: Mare. Așa că ar putea fi nul. Așa că vrem să scape de-l imediat. Și apoi vom merge de verificare în cazul în care radacina i nu este egal cu i. Deci, spune că sunteți în căutarea în acest copac pentru 3, radacina i nu este egal i, acum suntem în buclă în timp ce noastre. Ce vrem să facem? Și din nou, o să fie destul de similar cu versiunea noastră recursiv. Da. Audiența: Deci ai vrea de a repeta, sau continua merge în jos copac, atâta timp cât rădăcina nu este egal cu zero. JASON Hirschhorn: atâta timp cât rădăcină nu este egal cu null? Audiența: rădăcină bord i nu este egal cu zero. Doar rădăcina, da. Ca timp cât rădăcina este nu este egal cu null. JASON Hirschhorn: Deci, vrei pentru a schimba acest lucru în rădăcină nu este egal cu zero? Audienta: Da. Audiența: Am putea combina astea, nu? Nu avem nevoie dacă, inițial. JASON Hirschhorn: OK, deci dacă noi nu - dacă le combina, așa vom face în timp ce rădăcină nu este egal cu zero, și dacă rădăcina se întâmplă să fie nul la început, ce facem aici? Audiența: Înapoi false. JASON Hirschhorn: Mare. Deci, în ambele sensuri, probabil, ar fi lucrat. Acesta este un mod diferit, și acest lucru se combină. Dar, din nou, în cazul în care ai făcut-o oricum, suntem nu va decola de design puncte pe testul. Dar acest lucru arata bine. Deci, în timp ce rădăcină nu este egal nul, ceea ce este primul lucru pe care doriți să verificați? Altcineva? Nul, ceea ce este primul lucru? Audiența: Dacă ri este mai mică de - oh, cred că, dacă am deja găsit-o în rădăcină. Deci, dacă rădăcină săgeată i este egal cu i - JASON Hirschhorn: Îmi pare rău? Audiența: Dacă rădăcină săgeată i este egal egal cu i - JASON Hirschhorn: Ce facem? Audiența: Înapoi adevărat. JASON Hirschhorn: Mare. Și ce urmează? Jeff, ceea ce este următoarea linie de cod? Audiența: În cazul în care i este mai mic de rădăcină săgeată i, atunci rădăcină este egal cu radacina săgeată stânga. JASON Hirschhorn: egali Root rădăcină săgeată stânga. Deci, asta e, probabil, cel mai mare diferență aici, în acest iterativ Versiunea spre deosebire de versiune recursiv. Versiunea recursiv, ne-am apela din nou funcția. Vom fi actualizarea rădăcină, atunci când numim noua funcție. Aici nu suntem de asteptare o nouă funcție. Suntem pur și simplu doar de actualizare rădăcină în această funcție. Asta-i excelent. Și ceea ce este ultima linie de cod? Da, Mario? Audiența: egal rădăcină altceva rădăcină săgeată dreapta. JASON Hirschhorn: Îmi pare rău? Egali Root: PUBLICUL rădăcină săgeată dreapta. JASON Hirschhorn: Ai putea, de asemenea, scrie ceva de genul asta? Audiența: Nu am nici o idee. JASON Hirschhorn: Nu se poate. Nu se poate face egali plus. OK, deci acest lucru arată bine. De ce nu am face asta să-l curețe. Aceasta arată foarte bine, iar acest lucru va funcționa. Și ne-ar izbucni. Dacă rădăcină stânga a avut dreptate nul sau rădăcină a fost nul, ne-ar veni aici. Root ar fi egală cu zero. Ne-ar ieși din bucla noastre, și ne-am întoarce false. Așa că atunci când ne-am iesi din buclă, ne întoarcem false. Și din nou, o bucla în timp ce a fost perfect aici, pentru că nu știm cum mare copac nostru este. Am încercat să scrie pentru bucla, dar ne-am a dat seama că trebuie să dau seama cum mare este inainte de timp. Da. Audiența: În cazul în care acest lucru nu a fost un binar arbore de căutare, ar fi real, matematica-y să-l scrie iterativ, corect? Ca, în cazul în care acesta a fost un copac, dar nu în mod necesar - asa ca nu a fost tot mai mici de pe stânga, și tot mai mare din partea dreaptă. Ar fi foarte dificil a repeta peste ea, nu? Ne-ar trebui pentru a salva ceea ce a fost mai devreme pe în copac și du-te înapoi, și chestii de genul asta. JASON Hirschhorn: În cazul în care nu a fost un binar arbore de căutare, în cazul în care acesta a fost doar un copac și lucrurile nu s-au clasificate în funcție de genul asta - și ne-am dat seama mai devreme, atunci când Anna a ne ajuta ca ceea ce face sortat ne ajută foarte mult - am avea nevoie pentru a, da, salvați întotdeauna unde am fost înainte. Dar ar putea exista o multime de unde am fost previouslys. Ar putea exista o multime de noduri mamă. Probabil cel mai bun mod de a face acest lucru ar fi fie pentru a păstra împingând lucrurile pe unele tip de stivă sau coadă. Tu nu ar trebui să cod acest pentru că este o problemă greu. Dar voi împinge unele lucruri pe o stivă sau coadă și apoi pop le-off, și apoi evaluarea lor. Și apoi au un alt lucru în cazul în care esti de fapt punerea nodurile, și apoi a crea că, și apoi căutare prin asta. Care ar putea fi cel mai bun mod de a face acest lucru. OK, întrebări cu privire la această problemă? Audiența: Aceasta este pe o notă conexe. Va trebui să ne compara ori Run pentru tabele de dispersie, binar arbori de căutare, etc? JASON Hirschhorn: Probabil. Deci, haideți să facem asta foarte repede. Rula timp de tabel hash - ceea ce sunt ceilalți? Arbore binar? Audiența: liste de link-uri. JASON Hirschhorn: OK, hai să facem inserție. Care este O mare de inserție pe un tabel hash? Care sunt ipotezele ce faci? Audiența: Te introducerea la începând din lista de link-ul. JASON Hirschhorn: Probabil primul ipoteză este că nu există coliziuni. Dacă nu există coliziuni, atunci timpul de inserare este unul. Dacă există coliziuni, și tu ești face înlănțuirea separată și inserarea la începutul listei legături, atunci inserare este de asemenea constant. Dacă faci un tabel hash, dar tu au o metodă diferită de a face cu coliziuni, ceea ce este o metodă diferită? Ce este o metodă diferită de a face cu coliziune într-un tabel hash? Audiența: programarea liniară. JASON Hirschhorn: programarea liniară. Așa că am de gând să continui să cauți pentru următorul loc deschis. Că nu este timp de inserare constant. Ai fi putut să treacă prin întregul tabel, astfel încât ar putea fi O mare de n. Da. Audiența: În caz contrar, doar înlănțuirea? JASON Hirschhorn: Am făcut-o înlănțuirea separată. Care a fost primul. Asta e ceea ce lista de link-ul. Numele fantezie este înlănțuirea separată. Ar putea fi orice tip de structură liste se întâmplă să facem în lista de link-ul. Deci, din nou, inserția pe un tabel hash ar putea fi timp constant. Ce zici de inserare pe o coadă stivuitor? Audiența: Nu e constant? JASON Hirschhorn: E timpul constant. Esti doar împingându-l pe. OK. Inserare, care au fost celelalte? Pe o încercare? Ce este O mare de inserție pe o încercare? Audiența: lungime este constantă. Lungime de cel mai lung - lungimea cuvântului te introducerea. JASON Hirschhorn: Îmi pare rău? Așteaptă, deci ce am auzit? Ai spus - ceea ce i-ai spus? Care a fost răspunsul tău, Marcus? Audiența: Lungimea cuvântului esti inserarea în caractere, presupunând că aceasta este o încercare de caracter. JASON Hirschhorn: OK, deci lungimea cuvântului. Vom face o presupunere că este un șir de caractere. Ai spus ceva diferit, totuși. Ai spus lungime de cel mai lung cuvânt. Audienta: Asta e doar constant, corect? JASON Hirschhorn: De ce ar fi sa fie constant? Audiența: Ca și, dacă utilizați O mare notație, atunci ea nu variază în funcție de cu privire la numărul de lucruri pe care sunt deja în încercare. JASON Hirschhorn: Deci ne-ar spune că e timpul constant. Este inserție constantă, și asta pentru că această idee - spune ca avem un cuvânt care este de 45, sau un cuvânt care este 60, care are un număr constant. Și ar fi introdus doar în timp constant. În practică însă, acesta nu ar fi, în mod evident, se întâmplă într-o milisecunda, de exemplu. Dar ne-ar spune mare este O constantă pentru un try. Și asta e unul din ei cele mai mari avantaje. Ce zici de inserare într-o listă de link? Doar o, sortat lista generic link? Da. Audiența: Am avut o întrebare. La testul, le-ar cere vreodată ne timp de inserare că sunt patru etape, sau ceva? Sau este pur și simplu - cand spui timp de inserare este una, asta înseamnă că doar de timp constant? JASON Hirschhorn: Da, le-ar întreba mereu, este O mare de n? O mare de log n? N pătrat constant. Cei care sunt într-adevăr singura cele de care aveți nevoie să știți. Ce zici de inserție pe sortat lista link? Audiența: Am avut o întrebare - o intrebare - JASON Hirschhorn: Care este răspunsul la această întrebare, deși? Audiența: Stai, ce ai cere? JASON Hirschhorn: Ce este O mare de introducerea într-o listă de link clasificate în funcție? Audiența: O? Nu, așteaptă, nu așteptați, n. JASON Hirschhorn: N. lângă lista de link-ul. Și ce a fost întrebarea dvs.? Audiența: Deci te-ai scrie o de k sau o din 1 pentru - JASON Hirschhorn: Oh. Mi-as scrie o de 1, probabil. Nu a fost o altă structură de date care ar fi fost bine. Copac, arbore binar de căutare. Ce e de inserție pe o binar arbore de căutare? AUDIENTA: Login. JASON Hirschhorn: Deci, ce este cel mai rău caz într-un arbore binar de căutare? Deci, dacă se întâmplă să înceapă la 5, și fiecare număr este mai mare de 5, atunci ne-am luat 5, 7, 9, 11, etc. În acest caz, este practic doar un link lista, și avem nevoie de a introduce toate modul la sfârșitul anului. Deci, este O mare de n. Asta ar putea fi cel mai rău caz noastră pe un arbore binar de căutare. Evident, nu te-ar construi un arbore binar de căutare cu 5 în de mijloc, știind 5 ar fi cel mai mic număr. Dar ar putea fi, dacă ești incepand de la zero. Orice întrebări cu privire la acest lucru înainte de a mă trece la o altă întrebare? Asta a fost o întrebare bună. As vrea sa stiu O mare de - Audiența: Ce despre căutarea pentru cei patru? JASON Hirschhorn: Cu siguranță ne am căutare și sortare. Am făcut toate aceste algoritmi, corect. Stai, a fost că pentru Quiz 1? A fost faptul că a acoperit - ai avut deja că întrebare pe Quiz 1? O mare Runtime de căutare binare, un fel de introducere, cu bule fel? Audienta: Da. JASON Hirschhorn: Dacă ați avea ca întrebare pe Quiz 0, șansele sunt că nu va obține aceeași întrebare exact la Quiz 1. Ar putea fi încă bine să știți cele. Ar trebui să sperăm că știți deja gh. Dar alte runtime logaritmice sunt, probabil, bine de știut. Lucruri care nu au fost acoperite pe Quiz 0. La fel ca toți acești operatori de pe aceste tipuri de date abstracte. OK, să trecem mai departe. Acest lucru ar trebui să fie destul de rapid. Și acest lucru este un nou limbaj noi nu avem de fapt codificate înainte. Aceasta este o întrebare cerut să cod în PHP. Deci, ia în considerare matrice PHP de mai jos. Scrie PHP și / sau HTML coduri astfel încât să furnizează un tabel cu două coloane cu TFS nume și case. N-ai mai făcut asta înainte, această problemă specifică. Dar acest lucru trebuie să fie foarte familiar ceea ce ai făcut în problema stabilit 7. Deci, aș fi dispus să parieze va fi a cerut să cod ceva în PHP care este foarte similar cu ceea ce a făcut în problema stabilit 7. În primul rând, matrice nu este atât de specific. Ce tip de matrice este aceasta? Audiența: asociativă. JASON Hirschhorn: E un tablou asociativ. Și ceea ce este diferența dintre un tablou asociativ și un obiect? Audiența: Un tablou obiect are un index de numere întregi, și un tablou asociativ este un index de un șir de caractere, sau ceva de genul asta. JASON Hirschhorn: Deci, o serie de obiecte ar avea indici de numere întregi, ci un obiect are câmpuri. Ea are acele domenii nume, cum ar fi nume, casa, de student. Ai o idee? Audiența: Ei bine, asociativ matrice este în PHP, nu? Și obiect este în JavaScript? JASON Hirschhorn: Sincer, nu exista nici o diferență reală între cele două. Ambele au siruri de caractere ar fi cheile, și poate au practic tot ca valoare. Limbi diferite apela unul lucru tablou asociativ, un singur lucru un obiect. Deci, sincer, nu există o reală diferență, dar există cu siguranță unele diferențe sintactice între cele două. Da. Audiența: Deci, este obiect, de asemenea, codificate în capota ca un tabel hash, atunci? JASON Hirschhorn: Ce te Adică, codificate sub capota? Audiența: Ni sa spus că asociativ matrice a fost punct de vedere tehnic hash masă. Deci, este obiect, de asemenea, punct de vedere tehnic un tabel hash? JASON Hirschhorn: Eu nu am de gând pentru a răspunde la această întrebare. Voi reveni la tine pe asta. Dar nu mi-ar gândi, fie de cei de genul asta. Dar, în orice fel, tablou asociativ și obiect, în general, oamenii folosesc cele termeni alternativ. In acest caz, partea rece este puteți utiliza tastele. Siruri de caractere ar fi chei, mai degrabă decât doar numere simple. Așa că am vorbit despre asta pentru o vreme. Din fericire, unii oameni au ajuns a început în acest sens. Vom scrie un PHP si HTML cod, astfel că vom obține o coloană doi tabel cu nume TFS și case. OK, eu, de asemenea, ar dori un antet rând pe acest tabel. Așa că am de gând pentru a obține direct în aceasta. Mergem la dosar, noi, și am de gând să - OK. Cum încep o masă? Ce-i tag-ul, Michael, pentru a începe un tabel? Audiența: Tabelul. JASON Hirschhorn: Table. Și dacă am deschis o etichetă, ceea ce altceva mai am nevoie? Audiența: Un cap? Sau, cred, de clasă. JASON Hirschhorn: Deci, îmi pare rău. Să presupunem că am scris deja doctab, HTML, toate chestiile astea. Dar dacă am deschis această etichetă de masă, ceea ce altceva mai am nevoie pentru a scrie? pentru a valida HTML? Audiența: Închide-l. JASON Hirschhorn: Închideți tag-ul. Cum scriu o etichetă prim-masă? Audiența: Dot slash masă. JASON Hirschhorn: Slash masă, mare. Probabil că are sens să scrie atât a celor împreună, deoarece le-ați luat pentru a face acest lucru. OK, dacă vreau un rând de antet, cum Scriu un rând antet cu titluri? Audiența: Este mai puțin mult de 10 de ore aproape - TR, da. JASON Hirschhorn: TR? Audiența: Apoi același lucru, slash, da. JASON Hirschhorn: OK, și Dă-mi două coloane. Audiența: T D? JASON Hirschhorn: OK. Vreau două coloane. Face acest lucru dă-mi două coloane? Cât de multe coloane este aceasta? Unul. Deci, haideți să copiați și inserați acest. Deci, de fapt, la testul, toate acest cod pe care le-am scris până acum a fost de fapt dat de tine. Dar ar trebui, probabil, încă știu cum să-l scrie. Da. Audiența: Casa ta este între cele două. JASON Hirschhorn: Boom. Acesta ar trebui să meargă acolo, corect? Bun apel. Deci, din nou, tot acest cod este de fapt dat la tine la testul real. Dar este distractiv să-l scrie, și tu ar trebui să știe cum să-l scrie. Deci, acest lucru este în cazul în care aveți nevoie pentru a începe codul. De ce avem nevoie pentru a scrie aici? Îmi pare rău, am nevoie pentru a schimba numele acestui fișier. Deci, l-am salvat într-un fișier HTML., nu într-un fișier PHP.. Aceste lucruri ar însemna nimic într-un fișier PHP.. Deci suntem într-un fișier HTML.. Care este primul lucru Am nevoie pentru a scrie? Vreau să pun niște PHP cod într-un HTML. Audiența: PHP, cum ar fi un alt morcov și semn de întrebare PHP, corect? JASON Hirschhorn: Mare. Și cum am termina asta? Audiența: Cu un semn de întrebare. JASON Hirschhorn: Asta-i grozav. Asta e primul lucru de care am nevoie, dacă vreau pentru a pune un cod PHP aici. Audiența:. M-am gândit un PHP fișier ar putea lua HTML. JASON Hirschhorn: Da. Un fișier PHP. Poate dura ceva HTML și să fie afișate. Asta a fost greșeala mea. Am fost doar încercarea de a imita ceea ce a fost pe testul. OK, îmi pare rău pentru a te confunda. Da, practice.HTML. Acum am de gând să pună un cod PHP inch Care este prima linie de Cod PHP ar trebui să scriu? Am de gând să treacă prin această matrice și-l face într-un tabel. Da. Audiența: Puteți folosi fie o pentru H buclă sau o pentru buclă. JASON Hirschhorn: OK, ce Nu doriți să utilizați? Audiența: Mi-ar folosi o pentru buclă. Pentru, și apoi ai face semn dolar i este egal cu zero virgulă dolar semna i mai mic de 2. Și apoi punct și virgulă i dolar semn că, plus, plus. JASON Hirschhorn: Cum știți să folosiți un 2? Audiența: Pentru că au existat două matrice asociative din mare tablou asociativ. JASON Hirschhorn: Deci, mare lucru de nu o matrice asociat. Mare lucru este doar o matrice normală. Dar ai dreptate, există două tablouri asociative în gama noastră mare. De aceea, voi folosi două. Mă simt inconfortabil presupunând că sunt 2, deci ceea ce este un mod de a scrie acest lucru fără a presupunând că acestea sunt 2? Audiența: [inaudibil]? JASON Hirschhorn: OK, cum Nu ai scris asta? Audiența: semn dolar foreach TFS sau ca dolar semn tf. JASON Hirschhorn: OK, deci pentru fiecare TFS ca TFS, vreau să, acum din nou, au masa mea. Deci, cine-mi poate da următoarea linie de cod? Audiența: Print, și apoi în citate, la sfârșitul suport tr suport, citat final. Paranteze end, punct și virgulă. JASON Hirschhorn: OK, și ce că de gând să faci? Audiența: O sa spun, rând nou. Se va pune tag-ul pentru un rând nou. JASON Hirschhorn: Corect, acest PHP, cum ar fi am vorbit despre mai devreme - aceasta PHP va fi evaluat, iar apoi se va imprima la acest fișier un câlți de masă, și apoi că HTML vor fi evaluate. Noi doar copierea acest HTML-am avut aici. Da. Audiența: [inaudibil]? JASON Hirschhorn: Îmi pare rău? E chiar aici. Fall 2012. Nu te uita la răspunsuri, haideți să-l rezolva împreună. Așa că am imprima rând de tabel. Deci, esti, probabil, în leagăn de lucruri. Care e următoarea linie de cod avem nevoie pentru a scrie? Assam, dă-mi următoarea linie de cod. Audiența: Ai nevoie de numele TF. Tf paranteze ghilimele deschise numele paranteze închise. JASON Hirschhorn: Spune-mi numele lor. Audiența: Ai nevoie pentru a imprima acest lucru. [VOCI interpune] JASON Hirschhorn: OK, cum pot imprima? [VOCI interpune] JASON Hirschhorn: Îmi lipsește ceva acum. Ce-am pierdut? Audiența: Ai nevoie de un semn dolar. JASON Hirschhorn: Ce mai sunt eu lipsesc? Tot ce am tipărit până acum este tr. Audiența: Închideți tr după el. JASON Hirschhorn: Deci, avem nevoie pentru a închide după tr. Care vede ceea ce ne lipsește pe linia 16? Da, Anna. Audiența: Ai nevoie pentru a deschide un TD și acolade. JASON Hirschhorn: Și unde nu am pus acolade? Audiența: Aproximativ numele tf. JASON Hirschhorn: Cum ar fi acest lucru? Audienta: Da. Și apoi închideți TD. JASON Hirschhorn: Cum ar fi asta? Audiența: Ai nevoie de dublu citat semne de lângă acolade? JASON Hirschhorn: Chiar aici? Nu, tu nu faci. Deci, asta e exact dreapta. Da. Audiența: Deci, diferența dintre care și encatenating cu puncte este, în cazul în care utilizați puncte, ar trebui să aibă ghilimele duble, apoi un punct, apoi dot - JASON Hirschhorn: Corect. Vrei să spui că nu e un final mod de a scrie acest lucru ca asta. Ce operatorul de concatenare în JavaScript? Audiența: Un semn plus. Ai uitat să pună cret bretele spate. JASON Hirschhorn: Mare. Și există o linie mai mult de cod lipsește. Cine poate da-mi ultima linie de cod ne lipsește? Audiența: Doar exact același lucru, doar cu casa in loc de nume. Mare JASON Hirschhorn: Mare. Și sintaxa este exact potrivit pentru obtinerea lucrurile într-o matrice asociat. Deci, în testul real, ești de fapt, dat până aici. Deci, acest cod a fost dat la tine. Tot ce a trebuit să scrie au fost acestea patru linii și nu uitați să inchide tagurile masă. Voi de fapt a făcut toate că și mai mult. Da. Audiența: Deci, ar fi funcțional la fel dacă ați avut doar că toate în un apel de imprimare mare, corect? Și apoi doar concatenate l pe, etc? JASON Hirschhorn: Cum ar fi asta? Audienta: Da. Pur si simplu nu ar arata bine daca ai fi uita la ea atunci cand esti inspectarea elementul de pe site-ul dvs., nu? JASON Hirschhorn: Sunt de acord. Dacă am încărcat această pagină web, ar fi I posibilitatea de a vedea acest cod PHP, vreodată? Audiența: Nu. JASON Hirschhorn: Nu. Și, de fapt, eu nu ar fi. Audiența: Acest lucru nu este HTML, corect? Deci, s-ar putea fi capabil de a - JASON Hirschhorn: Deci asta ar fi PHP fi evaluate pe partea de server. PHP este evaluată întotdeauna pe partea de server, așa nu sunteți niciodată posibilitatea de a vedea cod PHP. Audiența: Dar ai fi în stare să vedea rezultatul printuri. JASON Hirschhorn: Corect. Și sincer, nu s-ar putea pune totul pe linie. S-ar putea-l formatați frumos pentru tine, sau s-ar putea pune-l pe o singură linie. Neclare. Dar, da, bun punct. Audiența: Cum de nu e nu evidențierea textului pentru oricare dintre comenzile PHP? Pentru că îmi amintesc văzând că. JASON Hirschhorn: Pentru că este o . HTML file aici în partea de sus. Acolo te duci. Audiența: Dacă am făcut metoda inițială cu de bucle, drept, dacă ne a vrut pentru a accesa o TFS, ar fi noi face suport TFS 0 suport, apoi [Inaudibil]? JASON Hirschhorn: Tu ar fi - astfel încât să spui pentru pentru bucla, voi ar face în dolar semn suport TFS 1 sau i, drept. Sau semnul dolarului i închide suport și apoi paranteză ghilimele duble, da. OK, excelent. Avem o mai rapid unul. Șapte minute, așa că vreau pentru a trece peste asta. Acesta este un alt exemplu. Suntem acum o cu totul altă limbă. Avem un cod HTML. Este un fel de mic de pe ecran, dar Vreau să te uiți prin ea într-adevăr rapid, și poate cineva spune-mi, dacă ar fi să încărcați această pagină web, ceea ce ar vedea? Descrie totul despre această pagină web. Noah? Ce văd? Audiența: Cod la partea din față a Google cu un simt pentru text și o buton submit. JASON Hirschhorn: Și ce ar spune butonul? Audiența: Trimiteti. Oh, căutare. Îmi pare rău. JASON Hirschhorn: S-ar spune de căutare. Amintiți-vă, nume. Ce ne folosim nume pentru? Acest atribut nume, ceea ce este care utilizează? [VOCI interpune] Audienta: Asta-i numele său pentru atunci când se face clic pe? JASON Hirschhorn: Asta ar putea fi. Dar ce vedem in general - de ce ne dau această coadă nume? De ce nu vedem asta? Da. Audienta: Asta nu deveni index de variabila super-global? JASON Hirschhorn: Da, în general, atunci când această formă s-ar prezenta, și apoi în cazul în care va prezenta acest lucru? Ce pagină? Noah, ce pagina va prezenta acest lucru? Audiența: Nu sunt sigur. JASON Hirschhorn: În cazul în care ar putea putem găsi? În cazul în care nu veți găsi ceea ce Pagina se supune? Ce linie de cod? Audiența: acțiune Form. JASON Hirschhorn: Exact. Acțiune. Deci, se depune la pagina de căutare. Căutare backslash. Deci, asta e exact dreapta. Ce metodă? Audiența: Ia. JASON Hirschhorn: Ia. Exact. Așa că am citit asta. Acest lucru va fi un formular. Ai dreptate. Două lucruri cu privire la forma, titlul pagină și în partea de sus ar fi Google. Deci, aici sunt două întrebări ar trebui să fie în măsură să răspundă cu privire la această pagină. În cazul în care acest lucru HTML locuiește la acest website și utilizatorul introduce bug în acest text câmp chiar aici, ce URL-ul va utilizatorul se afla pe depunerea formularului? Deci avem acest drept aici. Am de gând să se întoarcă la această pagină, totuși. Voi scrie această primă parte. Se poate vedea toată lumea de aici? OK, Mario, crezi că știi? Ce pagină? Audiența: căutare Backslash. JASON Hirschhorn: am de gând să se mute aici. OK, backslash căutare întrebare marca q este egal cu bug. Oricine are o sugestie diferit? Da. Deci, cum putem obține acest lucru? Ei bine, am văzut asta înainte. Și ai venit cu asta mai devreme. Ai avut dreptate, Noe, ca acțiune ne spune ce Pagina vom. De asemenea, știm ce metodă. Facem GET. Și diferența dintre get și post este că obține afișează în URL-ul și post nu. Deci, dacă am scris stâlpul din dreapta acolo în metodă, ceea ce ar fi diferit? Audiența: Ar fi doar fie de căutare slash. JASON Hirschhorn: Ar fi doar să fie slash căutare. Nimic pe aici s-ar întâmpla. Dar, pentru că este o obține, URL-ul este afișată după cum urmează. În primul rând vom vedea un semn de întrebare și vom vedea numele și valoarea. Spun ca a fost un alt câmp de text și I-am dat un nume de r și eu o intrare valoare, omidă. Ce s-ar asta acum arata ca? Am un câmp de text mai mult, dau un nume de r și o valoare de omidă. Audiența: Dupa bar ai avea omida ampersand. JASON Hirschhorn: Asta-i nu ampersand. Audiența: Sau pur și simplu, indiferent de și simbolul. JASON Hirschhorn: Da, nu. Ai avut dreptate, m-am înșelat. Asta e ca o g. Audiența: Caterpillar. r este egal cu omidă, îmi pare rău. JASON Hirschhorn: Este nu r acolo? Audiența: Nu, nu este. JASON Hirschhorn: Vom vorbi despre care după clasa. Asta-i exact corect. Deci, și este corectă. Și atunci ai putea avea multe dintre acestea, și le-ar fi toate concatenate împreună cu care și. Deci, asta e exact dreapta. Există o întrebare mai mult. Schița DOM acest HTML, începând cu documente. Am putea face asta în două minute. O vom face aici. Voi reveni la această pagină web. OK, vom începe cu documente. Ce urmează? Deci, atunci când sunteți de lectură prin - Audiența: HTML. JASON Hirschhorn: HTML este următorul. Vom merge tag-ul de tag-ul. Ce e după HTML? Audiența: Cap. JASON Hirschhorn: Head. Ce-i după cap? Audiența: Titlu. JASON Hirschhorn: Titlu. Și titlu are o valoare de Google, dar eu nu am de gând să scrie că în pentru acum. OK, unde corpul merge? Audiența: De asemenea, vine de pe HTML. JASON Hirschhorn: Exact. Corp iese de aici. Nu toată lumea a vedea de ce că e cazul? Ar trebui să fie, probabil, în măsură să dau acest lucru, de asemenea, chiar dacă nu am avea acest indentare frumos. Indentare fel de ea dă departe, dar puteți vedea că tag-ul cap are a fost închis, ceea ce ne-am ce înseamnă, probabil, nu poate merge în jos aici. Avem nevoie pentru a merge înapoi la orice a fost chiar înainte de capul tag-ul, sau sub care. Suntem chiar cu tag-ul cap. Și cu trupul se forma. Sub formă, există două intrări. OK. Asta e tot ce am. Quiz 1 este mâine. Sunt atât de emoționată pentru voi. O să fie o explozie. Dacă aveți - Audiența: [aplauze] JASON Hirschhorn: Oh stop, stop. Dar nu, glumesc. Dacă aveți întrebări, nu după secțiune, voi fi afară. Dacă aveți orice întrebări în seara asta, nu ezitați să sunați, e-mail, Gchat, operator de transport mă porumbel. Noroc mâine. Avea o pauză minunat de Ziua Recunostintei, dacă eu nu te văd înainte de atunci. Și vă voi vedea dupa Ziua Recunostintei marți de finală noastre secțiune parte vreodată. Audiența: [inaudibil]. JASON Hirschhorn: Mare. OK, voi vedea voi viitoare săptămână, sau în două săptămâni. Și noroc mâine.