R. J. AQUINO: Tegul tik pradėti. Taigi tai Viktorina 1. Štai keletas aukšto lygio informacija. Apie puslapis viktorinoje yra šiuo URL nebėra CS50.net, nors tai vis tiek veiks. Tai CS50.harvard.edu/quizzes/2013/1. Tai didelis puslapyje Apie, sakau, kur ir kada, tai kitą trečiadienį į kambarių krūva. Ir kitą trečiadienį, aš tai dvi dienas nuo dabar. Visa ši informacija yra. Bet tai yra kumuliacinės. Taigi viskas iš pirmojo pusmečio metus yra potencialiai ant viktorina, nes tu negali tikrai pažengusios dalykų C be, jei sąlygos ir už linijų ir pan. Bet ten bus dėl dėmesio medžiaga, kuriai taikomas nuo viktorina 0, pradedant structs ir failų I / O. Tai paprastai daugiau sunkiau nei Testas 0. Vidutinis paprastai mažesnės. Studijų sunku. Nors jūs studijuoti, įsitikinkite, kad naudojate CS50/discuss rašyti savo klausimus ir skaityti kitų žmonių klausimus. Taigi, jei jūs neturite kokių nors klausimų, prisijungti ir skaityti jūsų draugų klausimai. Jie tikriausiai geri klausimai. Ir imtis praktikos viktorinos. Mes buvo nubaustas viktorinos septynerių ar aštuonerių metų. Jie visi internete. Ateities klausimai yra panašūs senų klausimų. Štai kaip mes jas. Viktorina dar neegzistuoja. Nė vienas iš mūsų matė jį. Bet tai atrodys ankstesnių viktorinos. Dėl šios peržiūros sesijos, tai nėra Neišsamus temomis. Jūs galite ne tik dalyvauti tai ir tada būti visiškai pasiruošę viktorina. Priešingu atveju, tai nebūtų kad daug viktorinoje. Ir tai taip pat nebūtinai viskas, ko jums reikia žinoti apie bet pateikta tema. Tai reiškė, kad prisiliesti prie dalykų, mes, kuriems, priminti, ką mes taikoma, ir į kelią kurią mes ją apdengė. Bet jūs turite eiti toliau ir giliau, kai jūs studijuoti dvigubo patikrinimo kad žinote viską apie bet atsižvelgiant į temą ir, kad jūs užpildyti visi kampai, kurie buvo įtraukti į paskaitą. Viktorinos pastabos lieps eiti į raštininkas pažymi, laikrodžių paskaitų vaizdo įrašus. Tai geras būdas įsitikinti, kad jūs apėmė visas savo bazes. Taigi, nuo ko pradėti, kai aš padariau tai skaidres, bandžiau įdėti kur radau informacija. Taigi File I / O, pavyzdžiui, 7 savaitė, Pirmadienį paskaita, ir parašė 6 dalis ir problema Nustatyti visi Informacija apie failą I / O. Aš padariau tai už kiekvieną temą. Taigi tie pavadinimas skaidres gali būti naudinga jums. Taigi čia mes turime Failo I / O. Atminkite, kad Problemų nustatymas 5, mes panaudojome fopen, fclose, fwrite, fread ir fseek. Atsižvelgdama susigrąžintos 30ish JPEG ir atsižvelgdamas keičiamas ir sujaukė rastriniai, jums turėtų būti gana gerai susipažinęs su šių funkcijų ir kaip jie veikia. Jei nebėra pažįstamas, tikrai juos peržiūrėti. Ir įsitikinkite, kad jūs suprantate, ką įvairūs argumentai, kai jie naudojami. Tačiau bendri failų susijusių klaidų jums gali būti klausiama apie - gerai, jei jūs pamiršote patikrinti, ar fopen faktiškai dirbo prieš pradėdami eiti modifikuoti failą. Tai galėtų būti blogai. Jei jūs pamiršote fclose failą kad jūs fopened, kad panašus į Atminties nutekėjimas. Tai gana neblogai. Ir pamiršta patikrinti, ar jūs pasiektas failo galas prieš jus pradėti rašyti į jį. Taigi, jei jūs sakote, ei, aš ne failo pabaigos. Duok man 5 daugiau baitų. Na, tai tikriausiai nesiruošia dirbti taip, kaip tikitės. Tai tikrai jis failui I / O, nes mes padarėme tiek daug apie tai su problema nustatyti. Taigi, jei jums suprasti, kas vyksta į problemą, 5, prisiminti bitmats ir JPEG, tada jūs tikriausiai visi nustatyti File I / O. Jei tai tiek neaiškus, tikrai peržiūrės šią problemą nustatyti ir susijusi medžiaga. Structs buvo tema, kad buvo ant linija tarp viktorina 0 ir viktorina 1. Ar ne gana, kad už Testas 0 supjaustyti. Taigi jie tikrai bus Viktorina 1, 7 savaitė, pirmadienis. Kas yra struct? Čia parodysime struct. Tai tarsi naujo tipo. Tai tarsi konteinerį kelių sričių. Tokiu atveju, mes paskelbė struct studentas, kuris turi du laukus - eilutė, kad mes skambina pavadinimas ir int, kad mes skambina amžiaus. Taigi, kai aš pereiti aplink studentams ar aš pakeisti studentus, aš galės naudotis savo vardą ir savo amžių. Pažvelkime į tam tikrą kodą, kad. Čia mes matome, kad aš paskelbė studentas ai, kaip Aš pareiškiu, bet kintamasis - int x, int y, ir tt. Štai studentas ai. Jis prasideda nuo nieko jo srityse. Taigi, galime juos nustatyti. Galite nustatyti sritis yra struct su tašku. Taigi, aš čia sakė, kad s.name = RJ. Ir s.age = 21. Taip pat galite atnaujinti laukus pačiu būdu norite atnaujinti kintamojo vertė. Taigi noriu pasikeisti savo vardą iš RJ su jokie R. J. laikotarpiai spelta teisingas būdas. Būtų s.name = RJ, pats kaip mes sakėme, kad iš pradžių. Ir tada jūs galite gauti prieigą prie jų. Taigi, mes juos nustatyti. Mes atnaujinti juos. Taip pat galite gauti prieigą prie jų į labai vienodai. Taigi čia aš spausdinti R. J. Yra 21 metai. Ir aš pasinaudoti tomis vertybes su s.name ir s.age. Taigi, kad jungiamasi prie structs su dot žymėjimą. Taip, klausimas? Auditorija: Ar yra priežastis, dėl Ankstesnė skaidrė, kad tu negali įdėti studentas viršutinėje eilutėje, kaip Typedef struct studentas ir tada studentas pabaigoje? R. J. AQUINO: Taigi klausimas buvo, tai skaidrė, mes paprastai pasireiškia Typedef struct mazgas ir tada laukai struct ir tada žodis mazgas. Ir kodėl čia aš nesakiau, Typedef struct studentas ir tada laukai struct ir tada studentas? Taip yra todėl, kad man nereikia, kad pasiekti jį viduje struct. Taigi viskas OK palikti jį be pavadinimo. Galiu tiesiog palikite jį kaip anoniminis struct. Priežastis mes tai darome dėl susijusių sąrašų ir viskas yra, nes viduje jums reikia nuoroda į struct mazgai žvaigždė. Taigi struct turi turėti pavadinimą, todėl jūs galite prieiti prie jo vėliau. Tai smulkmena. Bet jūs paprastai pamatyti Typedef struct garbanotas petnešos, jei jums nereikia pavadinimas ir Typedef struct kai pavadinimas po klamrami jei bus reikia vardą. Štai geras klausimas. Ir šiuo klausimu, mes linkę keisti structs ir perduoti aplink structs pagal nuoroda, o ne vertę. Taigi mes tiesiog praeiti aplink rodykles structs vietoj einančios aplink structs patys. Taigi jūs labai dažnai bus naudojant, šiuo atveju, studentas * arba struct mazgas * arba mazgas * vietoj Išpardavimas studentų ar mazgų. Taigi čia jau sakiau, gerai, kintamasis PTR bus iš s adresas. Tai bus rodyklė studentas R. J. Taigi, mes galime gauti ne tose srityse, tas pats kaip mes nieko. Pirma, ID nuoroda žymiklį gauti struct. Štai * ptr ir tada taškas ir tada amžius. Taigi, norint pasiekti lauką, ir aš atnaujinti tai dabar 22, nes, tegul tarkim, jis buvo mano gimtadienis. Yra spartusis sintaksė naudojant rodyklę čia. Taigi PTR rodyklė amžius yra tik tas pats kaip * ptr.age. Dabar, kad ką jūs turite įsiminti ir prisiminti. Jūs jį naudojome pset6 daug, Speller pset. Bet iš tikrųjų tai yra tai, kas vyksta apie po gaubtu. Tai dereferencing žymiklį ir tada jį gauti. Klausimas? PUBLIKA: [nesigirdi]. R. J. AQUINO: Tad kodėl mes naudojant patarimų, kaip structs vietoj structs save? Priežastis būtų, jei jūs artimųjų struct prie funkcijos, tikriausiai norite važiuoti aplink tik 4 ar taip baitų, kurie atstovauja žymiklį, kaip o ne galimai 30 ar 40 baitų, kurie struct. Taigi artimųjų kažką funkcijos yra lengviau, kai dalykas yra mažesnio trumpas. Klausimas? PUBLIKA: Galbūt tai paminėjo pradžioje, bet ten kitas skaidres ant [nesigirdi]? R. J. AQUINO: Šios skaidrės bus iki po sesijos apžvalgos. Mes juos paskelbti svetainėje. Taigi pereinant ir juda šiek tiek greičiau, mes ketiname kalbėti apie duomenų struktūros. Yra daug. Mes apėmė jų krūva. Štai ką jums reikia suprasti, apie duomenų struktūrą. Jūs tikrai turėtų suprasti ne aukštos lygiu, ką kiekvienas struktūra. Ar galite paaiškinti anglų kalba savo draugas, kad nesiėmė CS50 kaip mes organizuoti savo duomenis ir kodėl mes norime naudojate kažką tokiu būdu? Tai dalykas, viena. Dalykas, du, suprasti įgyvendinimas. Taigi suprasti, kaip naudoti šiuos dalykus C Ir mes bus eiti per šį. Ir tada, ką trys būtų žinoti paleisti kartų ir apribojimai Įvairios struktūros jūs naudojate. Taigi suprasti, kodėl turėtumėte naudoti vietoj masyvo maišos lentelę. Suprasti, kaip greitai, vidutiniškai, susipažinimo su maišos lentelė. Suprasti, kokios operacijos yra greitas susijęs sąrašą, bet lėtai matricos ir atvirkščiai. Taigi, norint suprasti, kad jūs turite suprasti Big-O notacijos tiesiog žinoti Kaip kalbėti apie tai rūšių dalykų. Ir mes kalbame apie tai. Taigi pirmas dalykas, susijęs sąrašus. Čia yra aukšto lygio paveikslėlį Susietos sąrašą. Mes rodome tai klasei. Mes paprastai turi 10 žmonių stovint ant scenos. Bet mes turime mazgų serijos, kur kiekvienas mazgas turi tam tikrą vertę ir žymeklį iki kito vertės. Taigi, norint gauti iš vieno mazgo į kitą, jūs tiesiog pasakyti, duok man kitą mazgą. Jūs turite, kad mazgas. Duok kitą mazgą. Jūs turite, kad mazgas. Duok kitą mazgas ir tt kol nėra mazgas kairėje. Taigi ir toliau kalbėti apie tai aukšto lygio. Tai labai paprasta įterpti dalykus į susietą sąrašą. Jei nerūpi tvarka, galite tiesiog palikite jį pačioje pradžioje. Tai pastovus laikas. Bet tai sunku rasti vertę. Jei bandote paklausti yra septyni mano sąraše? Jūs turite pereiti per kiekvienas vertė. Ar ši septynių? Ar ši septynių? Ar ši septynių? Ar ši septynių? Vėl ir vėl. Ir tai O (n). Taigi, kai studijuoja viktorinos, palyginti tai su matricomis. Ar tai gerai? Dingo šviesa silpnas. Gerai. Kai yra susijęs sąrašas geriau? Kai yra masyvas geriau? Taigi pažvelkime į tam tikrą kodą. Čia yra potencialus mazgas. Tai konstrukto. Ji int n, kuris bus mūsų vertė. Ir ji turi struct mazgas * šalia, kuris Mūsų rodyklė į kitą mazgą. Taigi čia matome, kad buvome į įmušęs int mūsų mazgas. Bet jei tai buvo susiję sąrašas char žvaigždutės ar susijęs sąrašas plūdės, mes visiškai galėtų padaryti, kad per daug. Prisiminti pset6, tikriausiai turėjo susijęs sąrašas charakteristikų žvaigždės ar tik static char matricos. Pažvelkime čia operacijos. Taigi norime įterpti naują n į mūsų susietą sąrašą. Mes pradėti su galvos rodyklė, kuri yra rodyklė į šį mazgą, kuris turi vertė n ir artimiesiems rodykle, kad atkreipia dėmesį į šio mazgo reikšmė yra n ir kitą iš nulio, nes tai paskutinis mazgas. Taigi, laiko interesų, aš įdėti visą kodą ekrane. Ir mes vaikščioti per jį keletą eilučių vienu metu. Taigi čia yra kodas. Tikiuosi, tai perskaityti. Pirmas dalykas, kurį mes darome, yra mes malloc naują mazgas. Taigi ji daro žymeklį į naują mazgą, kad nelabai turi ką nors nustatyti iki dar. Mes įsitikinkite, kad naujas mazgas nėra lygus nuliui. Priešingu atveju, mes turime pasiduoti. Taigi patikrinus, kad mes dabar nustatyti vertes mazgas. Taigi mes įdėti naują n į mūsų n srityje. Ir mes nustatyti kitą rodyklę kad rodytų į originalus galva, todėl, kad mes galime dabar įdėjote šį mazgas į mūsų sąrašą. Galiausiai, mes turime pasaulinio galvos tašką į mūsų naują mazgą taip, kad jei mes buvome prasideda galvos, mums bus ne tai nauja pirmoji mazgas vietoj seni mazgas. Ir kai ši funkcija išeina, kintamasis naujas mazgas nebeegzistuoja, nes tai buvo vietos į funkciją. Taigi tai yra pasaulio valstybė. Mūsų pasaulinės vadovas atkreipia dėmesį į mūsų naują pirmą mazgą, o tai rodo mūsų pirmoji pradinė mazgas, kuris taškai į po to mazgo. Tai buvo intarpas. Tikiuosi, kad buvo gana paprasta laikytis. Jei abejojate, nupiešti paveikslą. Taigi manau, kad kalbame apie susiję sąrašus ir žiūri kodas yra labai nenaudinga. Kadangi žiūri į susijęs nuotrauką sąrašas leidžia man galvoti, o, taip Turiu šį mazgą čia. Bet jei aš atnaujinti šį žymeklį, jis baigiasi atjungtas. Ir Aš pamiršau, kur mazgas eina. Ir kodas išėjimus. Ir jūs turite kelis mazgus kad yra atjungtas. Ir jums nereikia baigti su sąrašas norite. Taigi, jei jūs padaryti nuotrauką ir tai padaryti žingsnis po žingsnio, tikiuosi, pamatysite teisinga tvarka dalykų, kalbant apie atnaujinti patarimų įsitikinti kad sąrašas ateina kartu. Įterpti yra gana paprasta. Daugiau sudėtingas būtų įterpimo į surūšiuoti sąrašą. Sudėtingesnė funkcija yra i ¹ trinti ir sužinoti, kad ieško per į sąrašą pamatyti, jei kažkas yra. Galbūt jūs tai padarė pset6 kai pateko į jūsų maišos lentelės ir sakėte, gerai, yra žodis obuolių mano susietą sąrašą? Taigi jums gali jau tai padarė. Bet tikrai, atnaujinti savo atmintį ir bandyti reimplement rasti ir reimplement ištrinti sujungtiems sąrašą. Pramogos šalutinis dėmesį, kad taip pat dvigubai susietų sąrašai, kur jūs turite patarimų, kurie nurodo į priekį ir atgal, kad tu gali eiti į kitas mazgas ir ankstesniais mazgas. Ir ten buvo nuo praėjusių metų klausimas viktorina tos rūšies, kalbėti apie dvigubai susietų sąrašus. Dabar, kad struktūra, kad esate gana susipažinę su, nes dauguma jums tikriausiai naudojamas juos pset6. Štai vienas, kad šiek tiek mažiau pažįstama. Kaip šalutinis dėmesį, aš manau, kad viktorina 1 yra pirmiausia sunkiau nei Testas 0, nes Daiktai jūs darote, jūs nebuvo padaryta, kaip daug. Norėdami įdėti, kad kitą būdą, nes viktorinoje 0, Jums buvo parašyta C. daug ir mes paprašė jums apie C Dėl Testas 1, mes ketiname paklausti apie PHP ir JavaScript kurį nebuvo parašyta, kaip daug. Mes ketiname paklausti apie C-kodu, kuris turite ne parašyta, kaip daug, Ši pažangi C dalykų. Taigi tikrai, praktiškai dalykų mes kalbėjo apie paskaitą, kuri jums nebūtinai daryti į problemą nustatyti. Kalbėjimo, kurios, jums neparašiau problema, kamino nustatyti. Bet tai buvo paskaita. Štai aukšto lygio vaizdą kaminai, kad mes parodysime kasmet. Tai iš padėklai krūvą Mather valgykla. Aukšto lygio, kaminai paskutinis in, first out duomenų struktūra. Tai reiškia, kad jūs ketinate įdėti daiktus - 1, 3, 7, 12, 14, neigiama 0. Vienas dalykas, aš negalėjo turėti sakė - neigiama 3, 0. Jūs įtraukėte visus šiuos dalykus in Ir naujausia jūs įtraukėte yra pirmasis vienas, kad ketina išeiti. Taigi jūs turite dvi operacijas - stumti ir pop. Visi išleidimą, kad buvau gestų, kaip tai yra stumti. Ir tada, kai aš pasiekti ir patraukti kažkas arba pasiekti viršuje patraukti kažkas, kad pop. Taigi, mes ketiname įgyvendinti kaminai. Ir mes parodėme jiems paskaitą naudojant matricas. Bet jūs galite padaryti juos naudojant susijusius sąrašus. Kamino konceptualus duomenų struktūra, o ne kaip įgyvendinimo konkrečių vienas. Taigi, ką tai galėtų atrodyti? Tai atrodytų lyg tai. Jūs turite integer dydį. Ir jūs turite reikšmių masyvą, kad mes telefonu padėklai, nes tai kas vaizdas buvo už mums - int padėklai - ir tada kai maksimali galia. Taigi, kas paskatintų atrodyti? Na, jei mes turime kamino s, tada stumti kažkas ant s, gautume iš s dydis. Ir tai būtų kitas atvira vieta mūsų masyvo. Taigi, jei mes turime tris dalykus mūsų kaminą, tada padėklai 3 būtų šalia atvira vieta, nes 0, 1, ir 2 jau užpildyti. Taigi, mes įdėti vertę į s.trays [s.size], trečioji vieta. Ir tada mes prieaugio s.size pasakyti, Ei, mes turėjome tris dalykus anksčiau. Dabar, mes turime keturis. Taigi kitą kartą jūs stumti, jūs ketina įdėti kažką į 4. Arba kitą kartą, kai pop, jūs ketinate pažvelgti į 4 3 vietoj ar whatever. Ir tada mes grįžti tiesa tarkim, ei, mums pavyko. Tai dirbo. Kaip nykščio taisykle, jei funkcija, kuri yra Manoma, kad grąžina true arba klaidinga visada grąžina true, galite padarei kažką blogo. Taigi tai veikia? Na, tai veikia puikiai 1, ir 2, ir 3, ir 4, ir penki. Tačiau galime pasakyti, kad aš pasiekti savo gebėjimus. Aš tada paleisti į problemą, nes jei dydis yra toks pat, kaip talpa, aš dabar bando daryti kažką į masyvas ten kur aš neturiu vietos. Taigi trumpas patikrinimas išspręsti šią problemą. Jei s.size == Talpa, return false. Kitaip, eiti ir daryti tai, ką mes padarėme. Taigi, ką dar galėtume paklausti apie už kaminai? Ką dar turėtumėte studijuoti? Ką dar turėtumėte praktikuoti? Na, įgyvendinant pasipriešinimo. Mes jau padarė stumti. Aš nustatyti, kad. Ne masyvas įgyvendinimas, kur naudoti susietą sąrašą, galbūt. Ne int įgyvendinimas. Mes padarėme Ints čia. Bet tai galėjo būti plūdės. Aš galėjo stygos. Jis galėjo char žvaigždutės. Pažvelkite pastaruosius viktorinos apie rūšių Klausimai mes Paklaustas apie kaminus. Aš pasakyti, kad mes, kuriems kaminai aplink tas pats kaip mes, kuriems jų metų praeitį. Taigi viktorinos klausimai turėtų būti geras rodiklis. Juda į priekį net greičiau, eilės. Jie kaip kaminai. Bet jie pirmieji, first out. Jei esate britų, žodis eilė tikriausiai padarė daug prasmės jums. Priešingu atveju jums gali tekti girdėjau apie tai, kaip linija. Jie veikia panašiai kaip ir linijos Apple Store. Pirmasis asmuo rodomi ne 03:00 ryte yra pirmasis asmuo pirkti savo iPad. Taigi, mes turime dvi operacijas - į eilę ir dequeue. Įtraukti į eilę kelia nors eilutėje. Dequeue išsitraukia pirmas asmuo nuo linijos. Vėlgi, mes galime įgyvendinti tai su masyvo. Taigi, kas yra struct mes parodė paskaitos? Tai buvo vienas. Vėlgi, numerius. Vėlgi, dydis ir tai naujas dalykas priekyje. Kodėl yra kažkas vadinamas priekyje? Tai Kito puslapis elementas dequeue. Tai tiesiog viduje sekti Pirmasis vaikinas pasirodyti, kad mes galite traukti ją, kai mes turime. Tikrai pažvelgti paskaitų ir pabandyti įgyvendinti į eilę ir dequeue kai studijuoja viktorina. Svarbių dalykų, galvoti apie tai. Vyniojimo aplink, jei priekinis plius dydis baigiasi didesnis nei pajėgumų. Vėlgi, jei savo struktūrą yra pilna, jūs ketinate turėti problemų. Hash lenteles jūs matęs. Dauguma jūsų tikriausiai įgyvendinti tai ant pset6. Tai struktūra, kuri siekia O (1) pastovus laiko įterpimas ir O (1) pastovus laikas peržvalgos. Be CS50, mes įgyvendinome tai, kaip sujungtų sąrašų masyvo. Pagrindinis komponentas maišos lentelę yra maišos funkcija. Taigi jis paverčia savo indėlį, tarkim, žodynas žodis į numerį, kuris bus mūsų indeksas. Ir mes naudosime šį rodiklį į mūsų masyvo. Taigi čia yra cute maža nuotrauka nuo study.50.net. Mes mesti visus žodžius į mūsų maišos funkcija. Ir maišos funkcija pasakoja kur dėti tuos žodžius. Tai viskas puikiai žemę, kurioje yra tik vienas žodis kiekvieną lizdą. Bet kaip jūs žinote iš pset6, yra Yra daugiau žodžių nei laiko tarpsnius. Taigi, kas atsitinka, kai jūs gauti susidūrimo? Užuot laikyti vieną vertę, tarkim, maišos 3 lentelę, laikyti susietą sąrašą. Ir todėl užuot kantalupos čia jūs turite susietą sąrašą kur pirmasis mazgas yra melionas. Ir kitas mazgas yra katė. Ir trečia mazgas susidūrimo, galime pasakyti, nes visi šie žodžiai prasideda su C. Taigi, dauguma iš jūsų tai padarė pset6. Jei tu negali padaryti maišos lentelę pset6 ir bandėte kažką panašaus trie, tikrai peržiūrės maišos lenteles. Jei tu tai padaryti pset6, tikrai peržiūrėti maišos lenteles. Ir jei tu jį pset6 ir jis nebuvo dirbti, teisus ir jus turėjo daug problemų su juo, tikrai peržiūrėti maišos lenteles. Taigi, pamoka tikrai tikrai peržiūrėti maišos lenteles. Didžioji mažuma bandėte iš bando ant pset6. Aukšto lygio vaizdą. Tai kažkas panašaus į tai, kai kiekvienas mazgas turi vaikų rinkinys, kuriame kiekvienas vaikas atitinka raide. Ir kiekvienas mazgas taip pat sako, Ei, aš esu žodį. Taigi šiuo atveju, žodis Maksvelo jei jums sekti M į A iki X-W-El-L-L ir atlikite jį vieną. Ir jūs gaunate šį simbolį, delta, kuri mes reiškia reiškia tai žodis. Taigi Maxwell žodis. Šios deltos yra visoje pažymintis kurie dalykai yra žodžiai ir kurios ko nėra. Taigi pset6, duomenų mes saugomi kartu su bet kuriuo iš mūsų mazgų buvo: "Aš esu Žodis. "Ir kietas dalykas apie bandymų yra jie įrodo, įterpimo ir lookup O (ilgis žodžio). Taigi tiesiog gauti per Maxwell, tai M-X-W-E L-L. Taigi, septynis ar aštuonis - Aš negaliu suskaičiuoti - žingsnių, kad iki galo ir patikrinkite dalykus. Taigi greitai įgyvendinti čia. Robas išgyveno susijęs sąrašą savo skrodimo. Taigi patikrinti, kad iš. Atsiprašau. Išgyveno jo skrodimo TRIE. Taigi patikrinti, kad iš. Bet iš esmės jūs turite kiekvienas mazgas turi 27 rodykles į kitą mazgų ir vieną Boolean ir aš žodį. Patikrinkite Rob vidurius imti kiek tai iš tikrųjų yra įgyvendinami. Mūsų galutinis struktūra, mūsų medžiai ir dvejetainiai paieškos medžiai. Taigi žiūri tai, tai buvo taikoma neseniai pirmadienis 8 savaitė. Medis yra panašus į TRIE, išskyrus jus nebūtinai turi 27 mazgų ne kiekvienas taškas. Ir jūs neturite šiuos duomenis į kiekvieną žingsnis, kuris reiškia, ar - Kelias nesvarbu. Kadangi trie, kelias iš viršaus į apačioje, Maksvelo buvo svarbu mums. Tačiau kiekvienas mazgas turi kelis vaikai, galbūt. Mes turime šiek tiek daugiau žodžių. Medžio šaknis yra pačiame viršuje. Ir mes sakome, kad labai Žemiausias mazgai, turintys ne vaikai lapai. Taigi, kaip TRIE, medis mazgų struktūra. Paplitęs tipas medį, kad mes ketiname kalbėti apie tai dvejetainis medis, kur kiekvienas mazgas neturi vaikų ar vienas vaikas ar du vaikus. Taigi ši nuotrauka nėra dvejetainis medis, nes mazgas 3 turi tris vaikus. Bet jei mes ignoruoti tuos, poilsio tai yra dvejetainis medis, nes jis parodo turtą, kad kiekvienas mazgas yra nulis, vienas arba du vaikai. Taigi, kaip galėtume išreikšti tai kodas? Galėtume turėti mazgas, kur kiekvienas mazgas turi viduje ji sveikasis skaičius, taip pat kaip žymeklį į kairėje medis ir rodyklė į ant medžio teisė, todėl dviejų vaikų. Kaip tai yra naudinga? Na, jei mes taisykles apie tai, kur mes įdėti mazgų, mes galime padaryti paieška greičiau. Taigi, čia yra iš dvejetainis paieškos koncepcija medis, kur visi mazgų paliko pomedžio turi mažesnę vertę kaip mazgas mes ieškome. Ir visi mazgai dešinėje poddrzewie turi didesnę vertę nei šaknų mazgas. Dabar, kad atrodo kaip žodžių daug. Aš ruošiuosi įdėti jį viduje dvigubai citatos ir parodyti jums nuotraukas. Taigi, čia yra pavyzdys, dvejetainis paieškos medis. Žiūrėkite, kad mes pradėti su 10. Viskas į kairę 10 yra mažesnė nei jo. Ir viskas į dešinę yra didesnis nei ji. Bet daugiau, nei, kad kiekvienas mazgas Medis išreiškia šią ypatybę. Taigi mazgas 7 yra prie 3 kairę ir 9 į dešinę. Taigi visi tie yra mažesnis nei 10. Bet žiūri tik tie, 7 turi 3 į jo kairę ir 9 į savo teisę. Ir panašiai dešinėje, 15 turi 14 į jo kairę ir 50 į savo teisę. Taigi trys mazgai ten, 15, 14, ir 50, taip pat galioja dvejetainis medis ar galioja dvejetainis paieškos medis. Ir jie visi didesni nei 10. Taigi jiems leidžiama būti apie teisę ten. Ar yra klausimas? PUBLIKA: Kaip jūs susidoroti, kai turite du Siódemek? R. J. AQUINO: Taip. Kaip jūs susidoroti su dviejų verčių kad yra tas pats? Kai dvejetainiai paieškos medžiai pasakyti, kad jums ignoruoti dublikatus, nes tikslas yra tiesiog pasakyti, aš mačiau šie dalykai iki šiol. Kai dvejetainiai paieškos medžiai Galima sakyti turi viduje mazgas skaičių. Kiti gali sakyti, kad viskas Kairėje pusėje yra mažesnis arba lygus. Ir viskas į dešinę yra didesnis nei. Tai tiesiog priklauso nuo to, ką problema yra jūs spręsti. Taigi žodyne, pavyzdžiui, jūs būtų nerūpi dublikatų. Galima būtų mesti juos. Bet kai kita problema galbūt nerūpi. Auditorija: Ar galima turėti su 15 kairėje, 1 kuris yra mažesnis nei 10? R. J. AQUINO: Ne Jei 14 čia buvo 1, tai reikštų, nebus galioja dvejetainis paieškos medis, nes viskas į dešinę 10, turi būti didesnė nei ji. Ir mes pamatyti, kodėl. Jeigu į paieškos žemę mano tikslas yra rasti 14, aš pradedu tuo šaknų. Taigi man atrodo. Gerai. Mes ketiname pradėti nuo šaknų. Pažvelkite į 10. Na, 14, mūsų tikslas, yra didesnis nei 10. Taigi ji turi būti dešinėje. Tai labai panašus į visus telefonu knyga dalykas, kurį mes padarėme, dvejetainiai ieškoti ten. Bet vietoj to, dvejetainio paieškos masyvo, mes dvejetainis ieškoti šio medžio. Taigi mes vis dar ieško 14. Na, 14 yra mažesnis nei 15. Taigi, jei jis yra mūsų medžio, ji turi būti šioje srityje čia. Ji turi būti į dešinę 10 ir 15 kairėje. Ir taip mes patikrinti šį mazgą. Ir Yay, mes pastebėjome, 14. Nesiruošiu vaikščioti per ją. Bet štai kodas. Tai tikrai gana paprasta, nes tai yra grįžtamojo. Ką galėtume paklausti jums padaryti viktorina? Galėtume paklausti, parašyti šį kodą. Galėtume paklausti pažvelgti į šio kodekso ir keisti šį kodą ir paaiškinti, ką tai daro. Taip. Klausimas? Auditorija: Ar šie skaidres bus prieinami kaip jie buvo paskutinį kartą? R. J. AQUINO: Taip. Taigi šios skaidrės bus tikrai būti skelbiami. PUBLIKA: Jie iš tikrųjų parašė dabar svetainėje. Davidas tiesiog padarė. R. J. AQUINO: Skaidres yra dabar svetainėje. Aš tikriausiai užlopyti apie pora su rašybos minėjau ir juos pašalinti. Bet ten srovė portalo svetainėje. Kiti dalykai, kuriuos gali užduoti jums tai padaryti - rašyti įdėklas. Rašyti pakartoti versiją grįžtamojo funkcija mes tiesiog jums parodžiau ar kalbėti apie šiuos dalykus, kaip ir dalys, žodžiais, sakiniais. Lyginant paleisti kartus ir paaiškinti ką jūs norite naudoti dvejetainius paieška medis vietoj maišos lentelę, pvz. Taigi suprasti šių struktūrų ne gana giliai lygiu. Suprasti, kaip rašyti juos, kaip juos naudoti, kaip kalbėti apie juos. Ir jums bus visas rinkinys. Klausimas? PUBLIKA: Kai rašote dvejetainis paieškos medis, kaip jūs nustatyti, kokios vertės padaryti jį kaip šaknų? R. J. AQUINO: Taigi klausimas buvo, ką vertė padaryti, kaip root? Priklausomai nuo jūsų kodas, galite gali turėti pasaulinį šaknis. Taigi jums gali būti tikėtina, turėjo pset6 pasaulio maišos lentelė. Arba galite perduoti šaknų ir kaip argumentą. Taigi tai paieškos funkcija čia mano argumentas mazgas *. Ir taip kokia mazgas atsitiktų būti žiūri yra vienas jūs gydyti kaip jūsų šaknies, kai pravažiuojate jį in Ir aš tikiu, visas rinkinys. Tie, kurie mano skaidres. Kitas asmuo gali ateiti apsikeitimo nešiojamas ir mikrofonas. ROB BOWDEN: Manau, kad gali turėti aiškinti šį klausimą skirtingai. Bet aš aiškinama kaip, jei turite skaičiai 1, 2, ir 3, kaip mes žinoti, kad 2 root , o ne 1 ar 3? Jei mes darome 2 šaknis, tada jis gražiai 1 ir 3 į kairę ir į dešinę. Bet jei 1 yra šaknis, tada tai 1 viršuje, 2 dešinę, 3 į dešinę. Taigi, pagal nutylėjimą, jūs nežinote, ką padaryti root. Ir bet algoritmas Mes tikimės jums, tik pirmas dalykas, kurį įterpti būtų šaknis. Ar mes norime duoti jums dvejetainį medį, jau kuris turi šaknis. Tačiau kiti algoritmai yra toks, kad šaknis bus atnaujinti, kad jei jums baigti tuo atveju, kai tai 1, 2, 3, ji automatiškai atnaujinti padaryti 2 naujos šaknų, kad jis vis dar gražiai subalansuota. ANGELA LI: Cool. Ei, vaikinai. Aš Angela. Ir aš ruošiuosi pribaigti savo C ir tada eiti į kai kuriuos mūsų interneto technologijos - HTTP, HTML ir CSS. Taigi pirmas dalykas yra buferis perpildymo atakų. Taigi, galime pažvelgti į šio kodekso išvaizdą. Tai gana paprasta. Yra funkcija rūšys. Ir ji negrąžina nieko. Bet tai trunka rodyklė į eilutę, vadinamą baras. Ir jis ketina paskelbti šį buferis, kuri yra simbolis matrica, kuri turi 12 slots. Ir ji naudoja memcpy, kuri yra tik funkcija, kuri kopijuoja iš vienos adresą į kitą. Taigi, tai bando kopijuoti į mūsų buferis, nepriklausomai nuo jų baras yra nukreipta. Taigi, bet idėja, kas yra negerai su šiuo kodu? PUBLIKA: Jei juosta yra ilgesnė nei C, jie bus perrašyti. ANGELA LI: Taip, tiksliai. Mes neturime jokių garantijų, kad baras bus mažesnis nei 12. Mes tik atlikti tikrą savavališkai 12. Ir mes buvome kaip, tikėkimės, kad mūsų vartotojas indėlis yra mažesnis nei 12 simbolių ilgio. Taigi idealus pasaulis, jei mūsų indėlis yra visada kaip ir tikėtasi, tada mes gauti kažkas panašaus, labas. Tai mažiau nei 12 simbolių. Ji gauna skaityti į char c. Ir tada mes kažką daryti su juo. Jis tikrai ne klausimas. Bet kenksminga asmuo galėtų padaryti kažkas daugiau, kaip šis, kur jie duoti mums ką baras yra nukreipta, jis ketina pažymėti šį didžiulis įvairių tiesiog aisiais. Ir tai yra būdas daugiau nei 12. Taigi jis ketina pereiti visą kelią žemyn čia, kur grąža adresas turi būti. Taigi, tarkime, šią funkciją vadinamas rūšys. Gal foo buvo vadinamas kai kurių kitų funkciją, kuri buvo vadinamas pagrindinis. Taigi, kai rūšys veikia, ji turi žinoti, kur grįžti. Jei foo buvo vadinamas tikru funkcija pavadinimu bazių, jis turi žinoti, kad tai turiu grįžti prie baz. Ir tai, ką šis atgalinis adresas žemyn čia mums. Bet jei mes jį perrašyti su kai kurių kitų adresą, šiuo atveju tai yra atstovavimas adresu Pačioje pradžioje šis buferis, tada kas iš tikrųjų nutiks tai, kad vietoj grįžta į baz, kuris vadinamas mūsų funkcija, tai tik ketinate eiti į šį kodeksą priekyje. Ir jei tai buvo, nes atėjo kenksmingos hakeris miestietis ir švirkščiamas tai, tada gal ši suma iš jo yra ne iš tikrųjų aisiais. Ir tai iš tikrųjų tik kodas, kuris pertraukos jūsų kompiuteris ar kažkas. Taigi turi būti gynybinė apie šį rūšiuoti dalykas, jūs turite niekada manyti, kad vartotojo įvestis yra tam tikras suma simbolių. Pavyzdžiui, kai jūs veikėte Speller, jums buvo pasakyta, kad žodžiai buvo tik bus 40 ženklai ilgai didžiausias. Ir tai buvo gera. Bet jei ne, tada jums reikės įsitikinkite, kad tik skaityti 45 simbolių vienu metu. Priešingu atveju, galite perrašyti Jūsų buferis. Bet apie tai, kad klausimai. Taip. Auditorija: Ar jums tiesiog pasikalbėti šiek tiek daugiau apie tai? ANGELA LI: Atsiprašome. Taip. PUBLIKA: mikrofonas yra tik vaizdo. Bandysiu ir projektų. Sveiki, vaikinai. Sup? Taigi eikime per keletą dalykų CS50 biblioteka, kurį jau naudojate visi semestrą, daugiausia gauti vartotojo įvesties. Kaip jūs žinote, jūs įtraukiate CS50 biblioteka, tiesiog daro CS50.h, kuris yra visi prototipai funkcijos, kurias galite naudoti, pavyzdžiui, GetString ir GetInt ir GetFloat, ir tt. Ir šitas eilutė CS50 biblioteka, kuri apibrėžia eilutę, kurioje vaikinai visi žinome, iki šiol yra tiesiog char *. Tačiau galime žvilgtelėti į kaip GetString veikia. Tai labai sutrumpinta. Jūs galite atsigriebti CS50 bibliotekos failus iš, manau, manuals.CS50.net. Ir jūs galite perskaityti faktinis funkcija. Bet tai taikoma kai svarbiausios dalys. Taigi, mes sukūrėme keletą buferį su kai pajėgumų. Ir ką mes darome, yra gausime vieną simbolį ne standartinės n metu. Štai kur vartotojas įėjimai Teksto konsolės. Ir taip mes einame skaityti pobūdžio tol, kol tai nėra nauja linija ir tai ne pabaiga failą, kurį yra iš standartinio įvesties pabaigos. Ir kiekvieną simbolį, kad mes skaitome, jei tas veikėjas galų gale pridedant į simbolių skaičių mes skaityti ir tai yra daugiau, nei mūsų pajėgumas, tada, ką mes darome, yra mes tiesiog keisti mūsų buferio, kad jis dvigubai ilgiau. Taigi dar kartą, tai apsaugo nuo buferio perpildymo atakų, nes jūs skaitote ir metu simbolis. Ir jeigu bet kuriuo metu jūs skaitote per daug daug, tiesiog plėsti savo buferio. Jūs padauginkite jį iš dviejų. Ir tada jūs turite daugiau galimybių. Priešingu atveju, jūs tiesiog pridėkite simbolių buferio. Ir kai jūs skaityti visus ženklai, ji susitrauks buferį atgal į normalaus dydžio, pridėti null terminatorius, ir tada grįžti. Dabar pažvelkime GetInt. Ar jus vaikinai skaityti tai? Galiu padidinti šiek tiek. Aš nežinau, kaip kompiuterių darbą. Nieko tokio. Aš negaliu padidinti tinkamai. Tai tikrai sunku. Aš atsiprašau. Leiskite tiesiog pažvelgti į tai. Taigi, kas GetInt daro tai pirmas skaito ir iš GetString, virvele, kurios mes įdiegėme anksčiau. Ir svarbi pažymėti čia tai, jei šis keitimasis, kad ji baigiasi skaitymas yra tarsi ne iš tikrųjų eilutę, tada mes tiesiog grįžti INT_MAX į atstovauti nesėkmę. Kodėl mes grįžtame INT_MAX vietoj Neigiamo 1 ar 1? Any ideas? PUBLIKA: [nesigirdi] neigiamas 1 ant vieno. ANGELA LI: Taip, tiksliai. Taigi, jūs būdas labiau tikėtina, kad tiesiog nori įvesti 1 arba neigiamo 1, kai pasirodys už n-tojo ir kokia ojo Maxes. Tai didžiulis. Jūs tikriausiai nesiruošia jį naudoti. Taigi tai yra kaip dizaino sprendimu, kad įsitikinkite, kad jums nereikia netyčia grąžina klaidos arba jūs neturite grąžinti 1, kuri gali būti apdoroti kaip teisingą atsakymą. Taigi, jei linija neegzistuoja, mes grįžtame LC-MAX. Priešingu atveju, mes naudojame sscanf, kuris yra tarsi scanf. Bet jis skaito iš eilutę. Ir mes turime tai suformatuotas eilutę, kuri yra% i% c. Ir mes stengiamės ir suderinti, kad su kokia vartotojo davė mums. Mes norime, kad suderintų dalykų būtų 1, tai reiškia, kad mes tik tikrai norite, kad atitiktų sveikasis skaičius apsuptas gal baltas vietos, o gal ir ne. Šiuo atveju, jei jūs įtraukėte į kažką kaip, baras neatitinka ne visi, nes ten turi būti pradžioje sveikasis skaičius. Taigi sscan niekada pasuko 0. Taigi jums nereikia grąžinti, kad. Arba, jei jūs įtraukėte į kažką kaip 1, 2, 3, A, B, C, kad nei vienas atitikmuo ir sveikas, bet taip pat charakteris po jo. Taigi sscanf grįš 2, kuris taip pat nėra idealus. Jūs nenorite, kad 1, 2, 3,, B, C, kad galioja int. Taigi, kad taip pat neveikia. Bet sako jūs įtraukėte į kažką panašaus 50. Tai atitiks% i, o tai reiškia, jis gaus skaityti į n. Ir dabar, n bus pateikta skaičius 50. Ir tada galite grąžinti ją. Priešingu atveju, jūs nukentėjo naujo. Ir tada jis tiesiog eina vėl, kol jūs gaunate tinkamą įvestį iš vartotojo. Bet apie tai, kad klausimų? PUBLIKA: Taigi, jei jums buvo išspausdinti iš GetInt reikšmė [nesigirdi] tai būtų tiesiog sveikas ir max? ANGELA LI: Taip. Taigi, jei jūs naudojate GetInt, turėtumėte daryti prielaidą, kad jūs nenorite Neribotos max būti galioja įėjimas, nes jūs ketinate manyti, kad tai buvo blogai. PUBLIKA: Jei mes neturėjome char c ir įdėti ką nors į 1, 2, 3, Sam, tai turėtų būti vis dar dirba 1, 2, 3? ANGELA LI: Manau, kad ji veiktų. Bet jūs nenorite 123Sam į būti galioja įvesties vartotojas. Tai tikrai ne int. Taigi, atrodo, kad nėra teisinga apdoroti jį kaip int. Gerai. Tokiu atveju, galime pereiti prie interneto. Taigi HTTP nėra kalba. HTTP yra tik standartų rinkinys kaip jums siųsti daiktus iš klientų, tai tu, serverių. Štai kiti žmonės internete. Taigi HTTP reiškia Hiperteksto Transfer Protocol. Tai širdis ir siela viso interneto. Hiperteksto dalis tiesiog nurodo į HTML. Perdavimas yra klientai, kaip jums atsiųsime prašymus serveriai, kurie suteikia atsakymus. Ir protokolas yra tik, kaip tai padaryti tikitės serverio elgtis? Ir kaip jūs turėtų elgtis pavyzdžiui, kad jūs galite supaprastinti šį komunikacijos procesas? Taigi HTTP užklausas atrodyti kaip tai daug. GET yra prašymo tipas. Vaikinai mačiau GET užklausų ir POST prašymai. Tai antras dalykas ten, / man, tai tiesiog URI ar kur jūs URL noriu eiti per kompiuterio. Taigi šis prašymas klausia puslapis, kaip www.facebook.com / mane. Ir tai GET užklausą. Ir tai HTTP/1.1, kad tik HTTP versija jūs naudojate. Tai beveik visada 1,1. Ir tada ten krūva kitų dalykų taip pat. Jūs iš tikrųjų galite pamatyti tai, jei atverti savo konsolę, kai esate naršyti internete. Atsakymai atrodyti daugiau, kaip šis. Viršutinė dalis, vėlgi, tipas HTTP jūs naudojate po statuso kodą. Taigi 200 Gerai yra viskas dirbo. Čia yra jūsų turinį. Jūsų turinys ketina laikytis. Ir tada jis pasakys, kokios turinio ir kitų dalykų taip pat. Būsenos kodai, yra keletas svarbiausi, kad jūs turėtumėte žinoti. 200 Gerai yra kaip viskas auksinis. Viskas veikia. 403 Forbidden. Tai jūs tikriausiai matė, jei Jūs pamiršote tinkamai chmod kažką. Tai reiškia, kad jūs neturite teisiųkeisti pasiekti, kad į serverį. Tai lyg ne, tu negali matyti. 404 reiškia, kad dalykas, neegzistuoja. Nerasta. Jūs tikriausiai matė, kad daug. 500 vidinė serverio klaida paprastai kaip kažkas nutiko ant šono serverio. Taigi, kai jūs vykdė pset7, jei jūs turėjote PHP klaidų, galėtų iš tikrųjų eiti į puslapį ir pamatysite Visa krūva PHP klaidų stuff. Bet tai paprastai nėra atsitikti, nes tinklapis tikrai norite pasakyti, kodėl jų svetainė neveikia. Jie tikriausiai tiesiog grįžti 500 vidinė serverio klaida. Ir tada ten 418 aš arbatinukas. Yra visa istorija apie kodėl tai dalykas. Bet jūs galite skaityti apie tai į savo laiką. Yra visa krūva kitos būsenos kodai taip pat. Bet tai yra tie, jūs turėtumėte žinoti. Taigi pakalbėkime apie HTML. HTML, atminkite, kad nėra programavimo kalba. Tai žymėjimo kalba. Tai reiškia, kad ji apibūdina turinį. Jis jums pasakys, ką HTML dokumentas atrodo kaip, ar ne, kaip jis atrodo bet kaip tai struktūriškai. Taigi jis apibrėžia struktūrą ir semantika tinklalapius. Tai kaip, tai dalis. Tai užsakoma sąrašas. Tai kaip mano puslapyje skyriuje. Štai pavadinimas. Ji stuff like that. Jis neturi stiliaus, bet kad, nes kad tai, ką jūs darote CSS. Ir atrodo, kad serijos iš įdėtos žymes. Taigi, norint naudoti su tikrai pagrindinis pavyzdys HTML puslapis, turite DOCTYPE deklaracija ten. Tai DOCTYPE deklaracija sakydamas, mes naudojame HTML5. Tada jūs turite didelį HTML tegus. Jame yra galva ir kūnas. Viduje galvos, jūs turite titulą. Štai kas vyksta pavadinime juostą savo naršyklėje. Mes turime nuorodą tegus kad nuorodos išoriniame stilių. Ir tada mes turime scenarijų, kuris traukia iš išorės "JavaScript" taip pat. Ir tada mūsų kūno viduje iš tikrųjų yra ką gauna rodomas puslapyje. Mes turime pastraipą ir tada vaizdas viduje toje dalyje. Tai vienas iš kačiukų nuotrauką. Atkreipkite dėmesį, kad paveikslėlis žymė uždaro pati. Taigi vietoj atidarymo su vaizdo ir tada darai kitą / vaizdas jums tiesiog tai mažai velniop čia ją uždaro. Ir paveikslėlis tegus taip pat turi šį klavišą vertė atributas vadinamas alt. Tai alternatyva tekstas, atsitinka, kai jūs Pakimba virš jo. Dauguma HTML elementai turi tam rakto dalykų, kad jums gali suteikti ją, įvairios pritaikymas. Taip. PUBLIKA: [nesigirdi]. ANGELA LI: Na, taip, tai atributas tegus. Taigi, jei jūs naudojate jQuery, galite padaryti pasirinkite image.getAttribute. Ir tada jūs galite ieškoti gauti alt atributas. Ir jis duos jums kačiukus. Jei žinote formas HTML, įvesties elementai turės pavadinimas atributus. Ir tai, kas PHP naudoja siųsti prašymai, kai yra pateikti forma. Auditorija: Ar jūs paminėti ką nors apie tai, kaip jei jūs naudojate kittens.jpg arba kažkas, kad turi Trūkstama aplankų ar kitus failus? ANGELA LI: Taip. Taigi, tai, kas vadinama santykinis kelias, nes aš ne duoti jūs pilnas kelias. Tai kaip tada, kai C, jei jūs fopen kai byla, jei fopen hi.txt, jog hi.txt yra tikimasi, kad pats katalogas, nebent jūs suteikiate jai daugiau sudėtingas kelias. PUBLIKA: Taigi jums gali nurodyti kurį aplanką [nesigirdi]? ANGELA LI: Taip. Ir jūs galite ieškoti, kaip tai padaryti. Bet jei aš norėjau gauti kittens.jpg iš patronuojančios kataloge, daryčiau .. / Kittens.jpg. Taip. Atsiprašau. Taip. O vyras, aš pamiršau, kad klausimą. Koks buvo klausimas? O klausimas buvo yra, kittens.jpg Tikimasi, kad į tą pačią direktoriją? Ir šiuo atveju, ji yra. Bet jūs taip pat gali suteikti jai tam tikrą kelią tokia, kad ji neturi būti. Geras? CSS. Taigi, CSS, kaip HTML, nėra programavimo kalba. CSS yra tik stiliaus taisyklių serija. Tai reiškia Cascading Style Sheets. Ir jūs jį naudoti kartu su HTML stiliaus puslapiuose. Taigi yra trys būdai galite jį įtraukti. Vienas iš būdų, galite tai padaryti yra galvos dalį savo HTML, galite tiesiog atidaryti stiliaus tegus ir tada klijuoti kai CSS taisykles ten. Tai gana gerai. Taip. Auditorija: Ar galėtumėte įdėti tie stiliaus žymės tarp jų, tegul tarkim, kūno ir / kūno. Ir tada jums bus stilius tik kūno. ANGELA LI: Galima. Jis bus dirbti. Bet jūs neturėtumėte, nes stilius yra tipo su metaduomenimis, kurie turi eiti į jūsų dokumente vadovas. Kūno tikrai turėtų būti tik kas iš tikrųjų vyksta rodomi jūsų puslapyje. PUBLIKA: Taigi jūs norite įdėti stilius jūsų galvos Stilius visą interneto puslapį, tiesa? ANGELA LI: Taip. Todėl pradėti stilių čia šie CSS taisykles bus taikoma visai puslapį, remdamiesi jų išrinkimo. Taigi, geriausias būdas tai padaryti yra vietoj turėti stiliaus tegus savo galva, turite šią nuorodą į išorės stiliumi lapas, kaip aš parodė jums Ankstesniame pavyzdyje. Kas tai yra jis bando ir mano, failą style.css ir tada išsitraukia jį ir naudoja, kad stilius puslapyje. Ir jūsų style.css būtų tiesiog pažvelgti, kaip šis. Tai būtų tiesiog CSS krūva. Ir, pagaliau, yra ir kitas būdas jums gali būti CSS, kuris tikrai neturėtų kada nors padaryti. Tai kvietimas inline stiliaus. Ir todėl bet koks HTML elementas taip pat gali imtis stiliaus atributas. Ir tada toje stiliaus atributas, galite suteikti jai CSS taisykles. Taigi šiuo atveju, nepriklausomai nuo div aš apibrėžiant čia, jis ketina turėti juodą foną ir balta teksto spalva. Bet jūs neturėtumėte daryti tai, nes tai, ką tai jis iškelia savo stilių viduje HTML. Ir aš žinau, mes jau kalbame apie HTML yra struktūros ir CSS stilius. Jei tai padarysite, tai mišiniai juos kartu. Ir tai nėra labai švarus. Taigi nereikia daryti. Naudojant CSS pavyzdį, iki ten, mes tiesiog pasirinkite HTML kūną dokumentinis. Ir mes panašiai, viskas bus Comic Sans. Aš taip pat nerekomenduojame. Bet tu gali tai padaryti. Antroji taisyklė čia, jis ketina pasirinkite ant elemento puslapis su ID vamzdynui. Taigi, ką HTML elementas, pasakiau ID = Pagrindinis, aš norėčiau duoti, kad 20 pikselių marža ir suderinti viską, visas tekstas, į centrą. Paskutinis dalykas keliu parenka CSS klasę. Taigi bet koks elementas puslapyje, kad daviau skyrius klasė, aš ruošiuosi padaryti tai fono spalva šviesiai mėlyna. Taip. Tai viskas, ką aš turiu. Klausimas? PUBLIKA: Ką hashtag prieš pagrindinius daryti? ANGELA LI: klausimas, ką prieš pagrindinį do hashtag? Šiuo atveju į maišos CSS reiškia Filtruoti pagal ID. Taigi, jei aš turėjo tam tikrą HTML elementas, pavyzdžiui, divid = Pagrindiniai, tai CSS taisyklė pasirenka dalykas su ID vamzdynui. Ir panašiai, priešais laikotarpis skyriuje yra Filtruoti pagal CSS klasę arba pasirinkite pagal HTML klasėje. PUBLIKA: Kodėl yra prieš 6 fono spalva? ANGELA LI: Taip. Taigi, klausimas, kodėl yra prieš 6 maišos? Tai kitoks, nei to maišos. Tai reiškia, kad jūs suteikiant šešioliktainis spalvos. Taigi, hex spalvos, tai tik atstovauja spalvą. Ir pamenate RGB triviečiai, kai tu su teismo ekspertizės pset? Tai panašu. Pirmieji du skaitmenys reiškia kiek raudona yra spalvos. Antra du atstovauti kiek žalia. Ir trečia atstovauja kiek žydras. Ir maišos tai vyksta atstovauti spalvą. Taigi, kas iš 0, 0, 0, 0, 0, 0 iki F, F, F, F, F, F galioja. Tai kai galioja spalva, kuri gali būti rodomas naršyklėje. Klausimas? PUBLIKA: Kas skirtumas tarp naudojant pagal ID ir klasės? ANGELA LI: klausimas yra tai, kas Skirtumas tarp naudojant pagal ID ir klasės? Jūs galite turėti tik vieną elementą HTML dokumentas, kuris turi tam tikrą vardą. Taigi, tik vienas dalykas, mano puslapyje leidžiama turėti ID Main. Taigi, jūs jį naudoti tai antraštė. Tai navigacija. Tai apačia. Klasės yra skirtingi, nes galite taikyti klases tiek HTML elementų kaip norite. Taigi, pavyzdžiui, aš padariau klasės skyrių, nes ten turbūt daugiau nei vienas skyriuje mano puslapyje. Jūs esate tik leidžiama turėti daugiau puslapio elementai su tos pačios klasės, tačiau tik viena su tam tikru ID. PUBLIKA: Taigi taškas yra klasė? ANGELA LI: Taip. Taškas žymi klasę. Cool. Tai viskas, ką aš turiu, vaikinai. Ačiū. [Plojimai] ZAMYLA CHAN: Sveiki, visi. Aš Zamyla. Aš ruošiuosi būti apimantis PHP, MVC, ir SQL šiandien. Medžiagos, kad aš būsiu daug danga bus gana daug tiesiai iš pset7. Gerai. Taigi, kas yra PHP? PHP reiškia PHP Hypertext Preprocessor. Taigi, savaime, yra grįžtamojo pavadinimas, kuris yra gana kietas. PHP yra server-side scripting language, ir ji suteikia varikliukus ir loginiai pagrindus mūsų svetainėje. Taigi Angela kalbėjome daug apie HTML ir CSS, kad bus padaryti struktūra svetainės. Bet kas, jei norite pakeisti, kad turinys dinamiškai arba jei ji skiriasi remiasi vartotojo ar tam tikros sąlygos? Štai kur PHP Įgijusi Dabar, paprastai, PHP gali užtrukti keletą mažiau eilučių įgyvendinti tą patį C Tai todėl, kad PHP rankenos atmintį valdymo programuotojas, o ne mums, turintys malloc nemokamai, dalykų, pavyzdžiui, kad. Bet kadangi PHP yra interpretacinis kalba, paprastai, tai gali atlikti šiek tiek lėčiau nei C, o yra parengta kalba. Kadangi mes judame programavimas kalbos, pažvelkime, kaip sintaksė skiriasi. Būkime labai atsargūs, ne susipainioti su šiuo klausimu. Taigi su PHP sintaksė, ar esate laikydamos Jūsų PHP viduje HTML failą arba per. php failą pats, jūs reikia pridėti kodą atvira PHP ir uždengiami PHP žodžius, pavyzdžiui, taip, kaip ir ekrane. Kintamieji PHP. Kiekvienas kintamasis bus pradėti $ ženklas, po kurio pavadinimu Jūsų kintamasis. Dabar kintamieji PHP yra laisvai įvedėte, tai reiškia, kad jums nereikia nurodyti, kokios duomenų tipą kai jūs skelbiantis jį. Tačiau tai nereiškia, kad jie neturi tipus visas. Taigi, jei aš pareiškiu, kintama ir tik nustatyti ji lygi 1, o tada aš pareiškiu, kitas kintamasis, nustatykite jį lygų "1", ir tada dar vienas 1,0, gerai, priklausomai nuo lygybės tipą operatoriai galiu naudoti, jei noriu palyginti per visų rūšių, tada jie bus lygūs. Bet jei aš noriu įsitikinti, kad tipai yra vienodi, PHP vis dar galite padaryti kad, nors mes neturime rodo kokia ji yra, kai mes pirma padaryti failą. Dabar, PHP, nors mes pereinant nuo programavimo kalbos iš C, mes vis dar turime savo patikimas, jei sąlyga, kaip tai. Mes vis dar turime, o kilpos, tik kaip tai, kur jūs įtraukėte į savo būklė ir tada organas kilpą. Ir tada mes taip pat turime už linijos, kurie paprastai atrodo taip. Taigi, jei aš norėjau pakartoti per visus devynių psets ir pateikti ir skambinti funkcija submitPset, tada aš galiu padaryti, kad čia, o vaikinai visi padaryti šio klausimo. Sveikiname, beje. Dėl fotoaparato, žmonės sakė, ačiū. Dabar, jei tu nenori tiesiog naudoti šią už linijos, tada PHP faktiškai taip pat yra dalykų, vadinamas foreach kilpos. Taigi, jei aš turėjo sveikųjų skaičių masyvas, 0 per 8, saugomas masyvo psets, tada aš gali turėti foreach ciklą, kad kartojasi per kiekvieną į psets skaičių. Ir tada galėčiau paskambinti pats veikia aštuonis kartus, kaip aš prieš. Taigi tai kiekvienos kilpos yra gražus, nes Jūs neturite, jei jūs nežinote, Tikslus ilgis masyvo, kad jūs buvo, tada naudojant šį foreach ciklas rūpinsis tai už jus. Taigi aš padariau psets masyvo. Pažvelkime į tai. Masyvai PHP paprastai yra tokia pati kaip tie, kad mes turėjo C, kur galite deklaruoti masyvą. Ir čia aš galiu deklaruoti tuščias masyvas ir tada sukurti dinamiškai naudojant indeksai, kaip sveikieji. Taigi 0 indeksą, aš ruošiuosi laikyti sveikas pavadintas 1. Tuo mano sąrašo 1 indeksą, aš ruošiuosi Norėdami išsaugoti reikšmę 2. Ir trečią indeksavimas Antrasis numeris, aš ruošiuosi saugoti skaičių 12. Dabar, tai yra gerai, nes veikia tai veikia gerai. Bet pasakyti, kad tai svarbu man ką kiekvienas puslapis turi. Man, 0 indekso tai, kaip Daugelis kačių turiu. Ir indeksas 1 reiškia, kaip daug pelėdos turiu. , O kitą tai, kaip daug šunų. Na, tada nurodyti, kad, užuot Kad nereikėtų atsiminti 0 susijęs su katės ir 1 į pelėdos, aš galiu naudoti Association masyvai, o tai reiškia, kad vietoj sveikieji kaip mano indeksų, Aš iš tikrųjų galite naudoti eilutes. Taigi, tai yra gana naudinga. Ir jūs iš esmės tik pakeisti sveikieji su stygos. Ir jūs turite masyvą. Taip. Auditorija: Ar yra priežastis, kodėl yra už sekundę pabraukimo dalis, nes mano sąraše yra masyvas. ZAMYLA CHAN: klausimas buvo, yra yra priežastis, kodėl yra pabrėžti tarp mano ir sąrašą? Ne. Tai tiesiog, kaip aš pavadinimų mano kintamasis. PUBLIKA: Dėl pirmas linija, tai vienas žodis. ZAMYLA CHAN: Mano atsiprašymai. Aš nustatyti, kad. Taip. Jie turėtų būti tas pats kintamasis vardas. Geras laimikis. Gerai. Taigi pereikime prie eilutės sąryšis. Jei aš norėjau imtis dvi eilutes, tada galiu Jungiant juos su dot operatorius. Taigi, jei aš turiu Milo kaip vardą ir bananų kaip pavardę, tada concatenating su dot operatorius ir tada pradėti tarpą tarp leis eilutę, kurioje Milo Bananų, o aš tada gali echo arba o, spausdinti. Kalbėdamas apie echo, pakalbėkime apie mažai naudinga - Oi. Aš atsiprašau. Keletas naudingų PHP funkcijos. Taigi, mes turime - techninių sunkumų. Vieną sekundę. Aš pasiunčiau jį. PowerPoint problemų. Ir mes vėl su PHP funkcijas. Ir mes vėl su PHP funkcijas. Taigi, mes turime reikalauti funkciją, jei jei pereisite faile, čia yra tik failo pavyzdys, Galiu perduoti in Tada, kad bus apimti PHP kodą iš šio failo, kad aš nurodyti. Ir jis įvertins, kad in Tada mes taip pat turime aidas, kuris yra lygiagreti printf. Išeiti yra lygiagreti pertrauka, kuris išeina iš bloko kodą, kurį viduj Ir tada tuščia patikrina, ar pateikta kintamasis yra kaip niekinis arba nulį, arba kas yra tapatinama su yra tuščia. Taip. PUBLIKA: Dėl styginių sąryšis dot operatorius vienas, PHP, yra tai, kad tas pats kaip ir "JavaScript", kur jis, naudojant už sąryšis taškas reiškia pliuso? Taigi, visą pavadinimą, galite turėti dolerį pasirašyti pirmą + ir tada + trukti? ZAMYLA CHAN: Taip. Taigi klausimas, ar PHP mes galite naudoti tą patį eilučių sujungimas kaip JavaScript su pliusu. Juozapas pateks į tai vėliau. Manau, kad jis turi tą skaidrę. Tiesą sakant, tai skiriasi. Taigi JavaScript, jums reikia naudoti plius Jungiant eilutes. Ir PHP, turite naudoti taškinę operatorių. Taigi jie skiriasi. Gerai. Taigi dabar, kad mes apėmė visas tai PHP, kur ji tikrai praversti? Na, tai praverčia, kai mes gali sujungti ją su mūsų HTML. Taigi, mūsų PHP duos mums galimybę keisti puslapio HTML turinį prieš jo pakrovimo. Taigi, remiantis skirtingomis sąlygomis, paprastai konkretus vartotojas, kuris yra prisijungti, mes galime rodyti skiriasi. Linda, ar turite klausimų? Auditorija: Ar jūs Jungiant sveikasis skaičius, taip pat? ZAMYLA CHAN: Taip, galite. Taigi klausimas, jei galite Jungiant sveikuosius skaičius ar kita variable.s dabar mes pereiti prie MVC, kuris yra paradigma, kad mes naudojamas pset7 ir interneto dizaineriai daug naudoti organizuoti kodą failus savo svetainėje. M reiškia modelio. Ir iš esmės, modelis bylos spręs su sąveikomis su duomenų baze. Peržiūrėti failus, jie yra susiję su estetika svetainėje. Ir kontrolieriaus rankenos vartotojų užklausas, analizuoja duomenys, ar kitą logiką. Be pset7, mes kartu modelį ir valdiklis. Ir mes tiesiog pavadino juos valdytojai ir įdėti juos į viešą abonentų knygą. Rodyti ir bylos, mes juos naudoti kaip šablonus šablonų katalogo. Taigi ši schema čia taip pat yra kad tos pačios rūšies padalijimo modelis ir violetinė reguliatorius čia kairėje ir dešinėje vaizdas. Taigi tai yra schema, kad kai kurie iš jūsų gali būti vertinamas ne darbo valandomis arba diagramos, kad mes buvo piešimo, kaip jūs buvo suprasti savo pset. Taigi čia tam tikroje valdiklio modelis valdytojas, mes turime funkcijas kurie susiję su užklausų SQL duomenų bazę, vykdyti PHP logika. Gal norėtumėte ieškoti Yahoo! akcijų Finansai. O gal jūs tiesiog patikrinti, išsiaiškinti, ar vartotojas buvo pateikta forma jau prieš turintys aplankė savo puslapį. Ir tada jūs taptų sudaro daugiau čia. Po to formos buvo pateiktas vartotojas, veiksmas, kuris buvo nurodyta formą HTML žymės rodytų puslapį, jis grįžta, kad duomenys. Taigi visa ta informacija būtų išsiųsti atgal į savo kontrolierius. Tada jūs tikriausiai daryti šiek tiek daugiau logika, kad ir gal vykdyti kelias daugiau užklausų SQL duomenų bazės ir tada, pagaliau, sugalvoti gražiai supakuoti informacijos rinkinys, kad galėtumėte praeiti į kitu šablonu kad rodomas tą informaciją. Dabar, kaip mes iš tikrųjų supakuoti kad informacija iki? Na, mes turime funkciją, vadinamą Užkrauta kad buvau functions.php failą pset7 kai pereisite į vardą failą, iš šablono pavadinimą. Ir tada jūs taip pat praeiti masyvą. Ir todėl, kad masyvą sudaro įvairi informacija kad norite perduoti in Dabar, kas bus pastovus šie pavyzdžiai yra tai, kad raktai arba, Veikiau į asociatyvų raktai matricos, jie yra tai, kas bus Tikimasi, kad nuolatinis pagal šabloną, nes ji žino, ji turi kažkas vadinamas pranešimą arba iškviestų pavadinimas. Ir tada teisingus dalykus, faktiniai dydžiai, todėl šiuo atveju, kas geras berniukas Milo, tie, kurie vyksta kad vertybės, kurios keičia kad kontrolierius keičiasi kiekvieną kartą arba remiantis tam tikromis sąlygomis ir praeis, kad in Taigi čia šablonus, mes matome, kad mes naudojate HTML specialiuosius simbolius, kurie tiesiog iš esmės reiškia, kad mes norime, gauti bendraamžių eilutę, vartotojo įdėti in Ir mes norime pakeisti pranešimą ten. Taigi, kai mes iš tikrųjų peržiūrėti byla, konkretus informacija perduodama in Atkreipkite dėmesį, kad svarbiausia, kaip padaryti darbai yra kad asociatyvų raktai matricos, tie tampa kintamasis pavadinimai čia. Ir tokiu būdu, kad pagrindinės vertybės masyvą, tada tampa vertė kintamąjį. Dabar leiskite pereiti prie SQL. Tai reiškia Struktūrinė Užklausų kalba. Ir taip, tai tik programavimo kalba, skirta valdyti duomenų bazes. Ir tai buvo naudinga mums mūsų pset7 finansai tinklapyje. Iš esmės, tai tik lengvas būdas stebėti ir valdyti objektus ir stalai ir susieti juos tarpusavyje. Dabar, manau, jūsų SQL duomenų bazės Iš esmės, kaip "Excel" failą, galbūt, su keliais skirtukais lapų. Taigi jums gali turėti keletą lentelių, galbūt, kad susiję vienas su kitu. Ir panašiai kaip Excel, turime daug funkcija, kad mes norime. Pavyzdžiui, mes galime pasirinkti tam tikros eilutės. Mes galime įterpti informaciją. Galime atnaujinti eilutes. Ir mes taip pat galite ištrinti dalykų. SQL atrinks kūrinius, pasirinkdami eilučių ar nurodytuose stulpeliuose iš eilutės duomenų bazė, kuri atitinka tam tikrus kriterijai, kuriuos rodo. Taigi čia kai matau SELECT * FROM burtininkai, kur namai = Ravenclaw, tada Aš pasirinkdami *, o tai reiškia, aš Pasirinkę kiekvieną stulpelį, kad eilutė iš wizards stalo, bet tik tada, jei namas stulpelis Lygu Ravenclaw. Dabar, tai yra grynas arba SQL. Taigi, jei aš nuėjau į phpMyAdmin, kuris yra konkretus būdas, kuriuo mes naudojame valdyti mūsų SQL duomenų bazės, tada galėčiau įterpti kad į phpMyAdmin svetainėje. Ir kad būtų įvykdyti. Bet mes iš tikrųjų nori daryti kad PHP pusėje. Taigi, kaip mes tai darome? Na, mes naudojame užklausą funkciją, kuri iš esmės vykdo, kad SQL užklausa. Naudojate? kaip vietos rezervavimo ženklą, galime praeiti tam tikras vertybės mūsų eilutę, kad mes norite pakeisti. Taigi, galbūt aš saugoti skiriasi vertybės curr_house, kurios yra dabartinės namą kad aš išgyvena. Taigi aš galiu praeiti, kad kaip vietos rezervavimo ženklą su klaustuku. Ir tada aš iš esmės vykdyti tas pats, kaip aš prieš, išskyrus dabar aš PHP. Ir užklausa grįš masyvą. Ir aš ruošiuosi laikyti eilėmis. Dabar klausimas visada gali žlugti. Galbūt SQL užklausos negalėjo vykdyti nes lentelė neegzistuoja. O gal stulpelis neegzistavo. Kažkas negerai. Na, šiuo atveju, jūs norite įsitikinti, įsitikinkite, kad jums patikrinti, ar užklausa grąžino klaidinga. Ir tai naudojant trigubą Lygu operaciją ten. Ir tada aš atsiprašau, kuris yra dar vienas CS50 funkcija, einančios žinutės. Ir jei jūs žiūrite į atsiprašyti visų jo tikrai yra padaryti apology.php. Taip. Auditorija: Ar galite paaiškinti, ką tai žvaigždučių nėra tarp pasirinkti ir iš? ZAMYLA CHAN: Taip, absoliučiai. Taigi tarp pasirinkti ir iš žvaigždė tai reiškia, kad aš noriu pasirinkti visą visa eilė nuo mano stalo. Galėjau nurodyta pasirinkite pavadinimas, Metai, namus. Ir aš norėčiau gauti tik šių trijų stulpeliai mano stalo. Bet jei aš sakau, pasirinkite *, tada aš gauti viską, tame stulpelyje. Tada aš ruošiuosi eiti jums gale pirmas. PUBLIKA: Taigi tai yra dar SQL, tiesa? Ar ši užklausa ar tai PHP? ZAMYLA CHAN: Mes užklausos. Taigi tai yra PHP. Taigi, naudojant PHP funkcijai užklausą mes vykdyti SQL užklausą. Auditorija: Ar kas nors SQL didžiosios ir mažosios raidės, kaip pasirinkti ar burtininkais ar namo? ZAMYLA CHAN: Ar kas nors SQL ir mažosios raidės? Manau, kad taip. Manau, kad SELECT ir FROM Ir kur yra didžiosios ir mažosios raidės. Ar ne? ROB BOWDEN: Taigi, tai atvirkščiai. Stulpelių pavadinimai ir stalo priemonės, visi jie yra didžiosios ir mažosios raidės. Tačiau nors iš MySQL raktinius žodžius, pavyzdžiui, SELECT, FROM, ir kur, jie yra ne didžiosios ir mažosios raidės. Gerai. Taigi, ką aš sakiau priešingai. Taigi visi MySQL raktažodžius - pasirinkti, iš, kur - tie, nėra didžiosios ir mažosios raidės. Bet visa kita yra. Gerai. Jūs priekyje. PUBLIKA: Jei aš $ eilutes pagal daugiau nei viena eilutė, tai reiškia yra tiesiog tampa masyvą? ZAMYLA CHAN: Taigi klausimas buvo, jei eilutės turi daugiau nei vieną eilutę į jį, nėra ji tampa masyvą? Taigi ji yra iš masyvą matricos jau. Taigi, net jei yra tik viena eilutė grįžo, tada jūs turite eiti į to rezultatas 0 indeksas. Ir tada jūs turite tą pirmą eilutę. Taip, Belinda? PUBLIKA: Naudodami ===, tai vienintelis atvejis? Ar yra kitų? ZAMYLA CHAN: Taigi šiuo atveju === yra palyginimas tarp tipų. Atsiprašau. === Yra palyginimas kad lygina tipus. Ir tada == palygina per visų rūšių. Auditorija: Ar galite paaiškinti, ką eilutės yra šioje situacijoje? Ar eilutėje duomenis? ZAMYLA CHAN: Į kitą skaidrę, aš paaiškinti, ką eilutės yra. Taigi, jei jūs neprieštaraujate, turintis ne apie tai. Ir tada jums į nugarą? PUBLIKA: Dėl funkcijų, pavyzdžiui, užklausos teikti ir atsiprašyti [nesigirdi]? ZAMYLA CHAN: klausimas, ar šios funkcijos - užklausos, atsiprašyti, ir padaryti - yra įprasta visame PHP. Tai yra tie, kurie CS50 rašė pset7. Jay? PUBLIKA: Kai jums reikia pasakyti, $ _SESSION, Yra tai, kad tik ID? Arba gali jums sakė, kad čia? ZAMYLA CHAN: Taigi klausimas buvo, kai mes naudojame $ _SESSION, tai buvo konkretus pasaulinį kintamąjį, kad mes naudojame. Štai šis kintamasis ketina būti vietos mūsų funkcija. Taigi mes tiesiog deklaruojant naujas kintamasis. PUBLIKA: Kaip atsiprašyti įgyvendintas? ZAMYLA CHAN: klausimas buvo, kaip yra atsiprašyti įgyvendintas? Ir manau, kad iš tikrųjų tai yra gana gera praktika vaikinai eiti į functions.php skyrių ir pažvelgti atsiprašyti ir pamatyti, kaip jūs galite turėti padaryti patys. Taigi, aš gali palikti, kad jums, bet tiesiog sako, kad jei peržvelgsite atsiprašyti, tai mano pranešimą, kurį pateikta atsiprašyti, ir tada ji teikia šią žinią. Bet daugiau klausimų? Aš myliu klausimus. Todėl nuolat juos ateina. PUBLIKA: [nesigirdi] echo arba print ten? ZAMYLA CHAN: klausimas buvo, galėtume ne tik įmušęs echo arba print ten. Taigi, kad būtų padaręs ką nors šiek tiek skiriasi. Kad būtų spausdinama užklausą nepavyko į tą - gerai, dabar, mes iš tikrųjų mūsų valdiklį. Taigi mes ne iš tikrųjų turėti HTML steigti čia. Atsiprašau, teikiant apologize.php iš tikrųjų nukreipia jus į apology.php. Gerai. Taigi dabar, eikime prie spręsti klausimas iš anksčiau apie tai, kas tikrai yra eilutės. Na, užklausa grįš eilučių masyvo. Ir kiekviena eilutė yra atstovaujama pagal masyvą. Taigi, jei aš vykdomas šiek tiek SQL užklausą ir Aš išsaugotą rezultatą eilučių, tada naudojant foreach ciklas, tada masyvas vardas yra pirmasis ten - eilutės. Ir tada aš ruošiuosi skambinti kiekviena eilutė ten $ row. Taigi Iteracja daugiau, kad galėčiau tada pasiekti nustatytą eilutę vardas stulpelį, metų stulpelis ir namo kolonėlė. Atkreipkite dėmesį, kad nebūčiau galėjusi tai padaryti su eilėmis, kadangi eilutės indeksavimo vardas neegzistuoja. Eilutės yra tik masyvas Association masyvai. Todėl jūs turite du lygius ten. Jei turite eilučių masyvą, jūs turite gauti į tą. Ir tada jūs galite patekti į stulpelius. Ar tai aišku? Taip, priekyje? PUBLIKA: [nesigirdi] atidaryti skliausteliuose [nesigirdi]? ZAMYLA CHAN: Atleiskite man? PUBLIKA: Atvirų skliausteliuose. ZAMYLA CHAN: Tai čia? Tai leidžia man būti kad kintamasis. Taip. PUBLIKA: Kai spausdinate, ar esate spausdinti HTML kodą? ZAMYLA CHAN: Taip. Kai aš spausdinti, tai čia yra viduje mano šablonas dabar, todėl mano nuomone MVC metodą. Taigi, aš spausdinti į HTML. PUBLIKA: Taigi, jei mes nuėjome į kūrėjas įrankiai paleidus tai, ką galėjome kad faktiškai kodą? ZAMYLA CHAN: Tai puikus klausimas, taip. Taigi, jei Jūs patekote į kūrėjo įrankiai į "Firefox", naudojant Firebug arba "Chrome", tada taip, tu gali pamatyti konkretaus HTML. Taigi tai nerodo $ row ["vardas"]. Tai rodo, priklausomai nuo to, pavadinimas yra toje eilutėje. PUBLIKA: Tiesiog bendras klausimas, ką tr ir td apibrėžiamas kaip? Kodėl mes [nesigirdi]? ZAMYLA CHAN: Lentelė eilutė tr, stalo tada td stulpelį. Gerai. PUBLIKA: Taip, tai lentelės duomenis. ZAMYLA CHAN: Stalo duomenys. Taip. PUBLIKA: Tai eilutė, kurioje eilutė yra traktuojama kaip stulpelyje? ZAMYLA CHAN: Atsiprašome. Ar galite tai pakartoti? PUBLIKA: kaip jūs vizualizuoti eilutes? ZAMYLA CHAN: Kaip jums vizualizuoti eilutės kokios būdu? Ar tu kalbi apie tai eilutės čia arba TR eilutės? PUBLIKA: Eilutės. ZAMYLA CHAN: Šios eilutės čia? Norėčiau įsivaizduoti, kad tai Aš įvykdysiu savo užklausą. Ir jis sako, gerai, aš turiu arba 0 iki n suma eilučių, kurios atitinka kriterijus, kad būtumėte suabejojo. Taigi turiu keletą eilučių skaičių. Taigi eilučių, kad $ eilutės, parduotuvės kiekvienas vienas iš tų eilučių masyvą. Taigi, net jei tai tik vienas iš jų, tai dar eilučių, atitinkančių jį masyvo. Taigi, pavyzdžiui, tai yra panašus į kai nerealu talpyklos iš vartotojų. Ir kriterijai buvo kur ID prilygsta sesijos ID. Yra tikrai tik viena eilutė kad galėtų suderinti, kad. Bet vis eilutės tik grįžo viena eilutė. Taigi, jūs turite eiti į eilutes, 0 indeksas, indekso talpyklos iš tikrųjų gauti į savo talpyklą. Auditorija: Ar spausdinimo funkcija ir pakartoti tą patį? ZAMYLA CHAN: Taip. Taip. Spausdinti to paties aidą. Auditorija: Ar foreach ciklas Vienintelis būdas indeksą į eilutes? ZAMYLA CHAN: Ar foreach ciklas Vienintelis būdas, kad jūs galite pakartoti per eilutėse? Ne. Taip pat galite naudoti už linijos, jei kad žinote ilgis eilutės masyvo. Auditorija: Ar galite jį pasiekti naudojant eilutę kaip [nesigirdi]? ZAMYLA CHAN: Taigi, jūs negalite prisijungti prie jos tik naudojant eilutę, jei jūs neturite foreach ciklas su sąlyga, kad Jūs nedeklaravo eilutę. Taip. Taip, yra baltos spalvos. PUBLIKA: Taigi, ką tr ir td daryti? ZAMYLA CHAN: Taigi tr ir td yra HTML žymes. tr parodo pradžią iš lentelės eilutėje. Ir kiekvienas td rodo nauja duomenų lentelės stulpelis. PUBLIKA: Dėl vaizdo, kas eilutė yra panašus, tik įsivaizduokite, SQL, kaip jie eilutę. [Nesigirdi]. ZAMYLA CHAN: Taip. Tai puiki vieta. Galite įsivaizduoti eilučių, kiek tik kaip Excel lentelėje, tiesiog iš eilučių sąrašas. Gerai. Gerai. Taigi dabar, kad mes perėjo pasirinkite, jei nėra jokių daugiau klausimų, mes pereiti į įdėklą. Taigi, jei aš norėjau įrašyti į kai kuriuos stalas ir įterpti tam tikrą stulpelį vertės, galėčiau įterpti save į Ravenclaw metais: 7. Bet kartais gali būti dublikatas vertybes, kaip matėme pset7 kai mes buvo atnaujiname mūsų portfelį. Taigi šiuo atveju, mes norime naudoti DUBLIKATAS KEY UPDATE, kad mes ne laikyti kelias eilutes su tuo pačiu Vertiname o ją atnaujinti. Tada mes iš tikrųjų turime atnaujinti, kurie nėra įterpti. Tai tiesiog atnaujinimas, kai jūs atnaujinsite tam tikra lentelė su teikiama kriterijai ir tada, pagaliau, ištrinti, kuri daro labai panašus dalykas. Auditorija: Ar galėtumėte trumpai eiti per dublikato rakto? ZAMYLA CHAN: Taip. Iš esmės čia turiu įterpti į gringotts, yra galleons, šios vertės. Bet ID, matyt, yra unikalus raktas vertė įsteigtas MySQL lentelėje. Taigi, jei aš jau, kad ID įsteigti, tada aš negaliu įterpti naują eilutę. Taigi, jei ji neegzistuoja jau, tada aš turiu ją atnaujinti. Viduryje į balta. PUBLIKA: Taigi įterpti, atnaujinti, ištrinti, ir pasirinkite, yra tie visi turimi vietoje [nesigirdi]? ZAMYLA CHAN: Taigi įterpti, atnaujinti, naikinti ir pasirinkite visi SQL užklausų. Taigi, jei jūs naudojate SQL, turėsite turimus. PUBLIKA: Atgal į praeitį viktorinos - ten buvo klausimas, kuris sprendžiamas jei turėjo lentelę ir norėjo įterpti testų rezultatus vienoje ir įdėsite jūsų vardas, kad jis neleis jums [Nesigirdi] draugo bandymo rezultatas. Kaip jūs darytumėte, kad su įdėklu? ZAMYLA CHAN: Taigi klausimas buvo apie ankstesnis vidurio klausimas. Aš ne žinoti, kuris tai ji yra dabar. Taigi, galbūt vėliau, jei norite sugalvoti ir parodyti man, tada aš galiu tikrai suteiks jums patarimus. Bet kalbant apie įterpiant dalykų, pavyzdžiui, atsižvelgiant kažkieno rezultatą, kai neturėtų, pakalbėkime apie SQL injection atakas. Taigi SQL injekcijos išpuolių iš esmės yra kai kažkas mano privalumas žemo saugumo būdas, kad jūs vartojate duomenis. Taigi čia, kaip ir CS50 finansų, kai prisijungsi, mes galime patekti į vartotojo vardą ir prisijungimo forma, pirmą teksto lauką, ir tada įveskite slaptažodį. Galbūt mūsų PHP kodas gali atrodyti kažkas panašaus į tai, kur $ vardas yra po duomenų vartotojo vardą ir slaptažodį yra po duomenų slaptažodis. Ir tada mes tiesiog vykdyti savo užklausą, tarkim, Gerai, gerai, mūsų užklausa ketina pasirinkti iš mūsų vartotojų, kur username is vienas, kad jie pateikė. Ir slaptažodis yra slaptažodis, tai reiškia, kad slaptažodžiai nesutampa. Dabar ką daryti, jei vietoj tikrųjų pateikiant faktinę slaptažodį, kaip 12345 ir atspėti ne Šakės kad sako slaptažodis ir bando nulaužti savo sąskaita, ką daryti, jei vietoj jie pateikė tai. Jie gali įvesti gal už slaptažodis spėjimas. Ir tada jie būtų baigti citata tada įveskite arba 1 = 1. Tai vaikščioti tiesiai į SQL užklausti ieškoti kažką panašaus į tai. Pasirinkite iš vartotojų, kur vardas = liežuvėlių ir slaptažodį Lygu lelija arba 1 = 1. Taigi arba slaptažodis būti teisingas arba 1 = 1, kuris visada yra tiesa. Taigi šiuo atveju, iš esmės, vartotojas gali pasinaudoti šia ir prisijunkite patys ir Hack kažkieno sąskaita. Štai kodėl mes norime, kad būtų išvengta kažkas turintis tai padaryti. Bet laimei, užklausos funkciją einančios į rezervuotų imsis priežiūra tai už jus. Be to, jūs paprastai niekada nori faktiškai pateikti slaptažodžius patys. Štai kodėl mes maiša arba užšifruoti juos į CS50 finansavimą. PUBLIKA: praeitis viktorina kalbėjo apie MySQL evakuacijos stygos. Ar mes turime nerimauti, kad? ZAMYLA CHAN: Tai geras klausimas. MySQL evakuacijos stygos yra tikrai funkcija, kuri buvo naudojama mūsų užklausą. Bet tikrai žiūrėti į tai. Aš sakyčiau, kad tai teisingas žaidimas žinoti kad jums reikia skambinti, kad funkcionuoti eilutę. Taip, Belinda? PUBLIKA: Kaip jūs žinote, kai tai vieno arba dvigubomis kabutėmis? O taip pat, manau, kaip ir paskaitos jums paminėti kažką apie neturi [nesigirdi] ar kažkas arba Antrasis singlas citata pabaigoje. Manau, kad jis atkreipė dėmesį į paskaitą, kad jums turėtų turėti kabutes 1 ir tada neturite kabutes ar kažką. PUBLIKA: [nesigirdi]. PUBLIKA: dalykas yra paskutinis nevedęs citata ten toje antroje dėžutėje ten neturėtų būti. [Nesigirdi] Nes kai jūs imtis, kad paskutinis nevedęs citata, ir atitikti jų turinio jei slaptažodis yra, jei turite, kad užklausa, ten kabutes ne pabaigos jau. Jūs norite naudoti, kad bendrosios citata kaip vienas, kad susiduria su viena [Nesigirdi]. Taigi, kas iš tikrųjų tame tekste dėžutė neturėtų turėti, kad. ZAMYLA CHAN: aš pakeisti. Gerai. Jei nėra kokių nors klausimų, tada aš perduoti jį per Juozapui kalbėti apie JavaScript ir tt. [Plojimai] JOSEPH ONG: Taigi mes veikia šiek tiek atsilieka. Taigi, jei turite palikti, kad viskas OK. Tačiau mes prašome, kad jūs nuolat savo galvas žemyn jei esate viduryje, todėl jūs neblokuotų fotoaparatą ir naudoti atgal išeiti, jei turite. Aš Juozapas beje. Sveiki. Bandymo, tikrinimo. Dan, yra tai, kad geras? Cool. Taigi vaizdo taip pat bus paskelbtas internete tiems, kurie palikti dabar. Nepatogu. Gerai. Taigi viktorina apžvalga. Tai katė. Dabar, "JavaScript", kuri yra gal ir ne kaip AAW kai kurie iš jūsų vaikinai. Gerai. Štai pirma, prisiminti iš Zamyla. Atminkite, kad PHP yra paleisti serverį. Ir daug kartų, vaikinai rašė kilpų PHP spausdinti HTML, tiesa? Taigi, kai šis kodeksas vykdo, kad HTML produkcija, kad jūs atspausdinti bus siunčiami vartotojui. Ir kai tai atsitiks, ne daugiau PHP gali būti paleisti, nebent jūs iš naujo įkelkite puslapį, iš Žinoma, kuri reexecutes PHP. Bet kai jūs atspausdinti tą HTML, jūs negalite eiti bet kur. Taigi, kad HTML yra siunčiamos vartotojui, kuri yra naršyklė per čia, kur Milo naudojant kompiuterį. Ir taip pat, yra keletas dalykų, kai mes išsiųsti HTML vartotojui. Kartais mes norime padaryti kažką panašaus kai paspausite ant kažko, mes norime įspėjimo dėžės pop-up, tas rūšių sąveika, pavyzdžiui, kai paspaudžiate raktas, kai paspausite kažką puslapis, aš noriu kažką atsitikti. Na, jūs negalite reexecute PHP kodas kartą, kad HTML yra nustatytas. Taigi, kaip jums tai padaryti? Pristatome naują kalbą, vadinamas "JavaScript", kuris veikia naršyklėje , kuri leidžia jums padaryti kažką HTML, kai jūs gaunate juos iš serverio. Ir tai, kodėl mes jį kliento pusėje skambinti programavimo kalba. Jis veikia jūsų kompiuteryje - klientas. Bet apie tai kiek klausimų? Kad paradigma prasminga žmonėms? Gerai. Geras. Gerai. Taigi pirmas dalykas, reikia pažymėti yra "JavaScript" yra ne PHP. Jie turi keletą skirtingų sintaksę, kurios mes pereiti į. Ir jie turi labai skirtingas naudojimo. "JavaScript", vėlgi, jūsų naršyklė, klientui. Serveris veikia kažkur kažkieno kompiuteris, kuris siunčia informaciją jums ištaisyti? Taigi, jei mes prašome rašyti PHP kodą ant egzaminą klausimą, nereikia rašyti "JavaScript" ir atvirkščiai. Jūs tiesiog prarasite taškų, ir jis nebus teisus. Taigi, galime patekti į kai sintaksės skirtumai - JavaScript kairėje ir PHP dešinėje. Pirmas dalykas, jūs pastebėsite, su JavaScript mes pareiškiame kintamuosius var raktažodį - V-R. PHP naudoti dolerio ženklą, kaip Zamyla aptarta anksčiau. Jei norite paskelbti Association masyvas, matome pažįstamą sintaksė Dešinėje pusėje su PHP. Kairėje pusėje, o naudoti garbanotas petnešos. Ir tada jūsų raktai yra kairėje. Tada jūs turite dvitaškis. Ir tada jūs turite vertybes kad jūs norite. Taigi tai, kaip galėtumėte tai padaryti PHP dešinėje pusėje tą sekundę linija, kuri prasideda Milo. Ir tai, kaip jūs tai darote kairėje pusėje JavaScript, jei norite ką mes vadiname objektas. Ir objektų JavaScript yra tik Association masyvai. Taigi, jei norite prieiti srityse, PHP jūs naudojate šį laikiklį sintaksė. Ir tokiu būdu, galite priskirti šiuo savininku lauko į Lauren. Na, "JavaScript", jei vienas nori pasiekti lauką ir pakeiskite jį, galite naudoti taškinę sintaksė. Taip pat galite naudoti laikiklį sintaksė. Bet jūs negalite naudoti dot sintaksės PHP. Kad neveiks. Jis veikia tik PHP. Ir, pagaliau, spausdinti dalykus konsolės, naudokite console.log, kuris vaikinai naudoti daug pset8. Galite console.log kad. Jei norite spausdinti masyvo PHP, turite naudoti spausdinimo r. Ir dešinėje pusėje, matote aš maišos simbolių eilučių sujungimas ten. Kažkas paklausė anksčiau. Aš naudoju plius JavaScript. Jei aš noriu Jungiant kažką PHP programavimo kalba, aš naudoju tašką. Tai yra skirtingi. Jei norite rašyti PHP kodą, nenaudoja pliuso. Jei rašote JavaScript kodas, nereikia rašyti tašką. Tai bus negerai. Ir jums bus liūdna. Taigi sintaksės skirtumus. Žinokite savo sintaksę, nes jei turite parašyti klausimą ir naudoti sintaksė iš tos kalbos, ji neveiks. Ir tai bus negerai. Taigi pakalbėkime apie kai kontrolės srauto skirtumus, kaip jūs naudojate kilpos kiekvienoje iš jų. Zamyla perėjo dešinėje pusėje. Daiktai dešinėje turėtų būti susipažinę. Pažvelkime kairėje pusėje. Kai jūs naudojate n kilpa JavaScript Jūsų kilpa kintamojo var i ten, kilpa per masyvo raktus. Taigi matote, pavadinimą, House, ir vaidmenį. Jei aš console.log I gauti pavadinimas, namo ir vaidmuo. Tai yra raktai. Be JavaScript, foreach ciklas eina virš šio masyvo reikšmes. Taigi, jūs pastebėsite, jie abu i. Bet čia PHP pusėje, jis spausdina iš Milo, CS50 ir Mascot. Tai yra PHP vertės. Taigi, tai yra, kaip šie du dalykai yra skirtingi į įvairias kalbas. Taigi, jei jūs naudojate foreach kilpa, nemanykite, kad tai suteikia jums raktus. Ir jei jūs naudojate už n kilpa, ne manyti, ji suteikia jums vertybes. Ar tai prasminga tiek, kiek? Kita skaidrė ketina parodyti jums kaip jūs galite pasiekti priešingą į kiekvieną iš jų. Na, jei jūs turite raktą JavaScript ir norite vertę iš, jūs tiesiog indeksas į masyvas su tuo. Taigi Milo ir aš jums ką norite - vertybes. Ten tai skiriasi sintaksė PHP. Jei tikrai nori žinoti, aš ne manau, mes parodė jį jums dar. Tačiau, jei jus domina, galite naudoti ši papildoma sintaksė dešinėje pusė, kuri tikrai padės jums gauti raktai PHP, kai jūs naudojate foreach ciklas. Taigi tik šiek tiek smulkmenos jei jus domina. Taigi, kad tik parodyti skirtumų tarp šių dviejų linijų. Nemaišyti juos, kai jūs programavimo klausimą. Bet apie tai klausimai. Cool. Gerai. JavaScript objektai. Aš kalbėjau apie juos. Jie kaip Association matricos. Vienas dalykas, aš norėčiau, kad jūs dėmesį čia yra tai, kad vertė į asociatyvų masyvas gali būti bet kas JavaScript. Jis netgi gali būti funkcija, kaip ten. Turiu funkciją, kuri yra vertė rakto. Ir jei noriu skambinti šią funkciją, Aš tiesiog prieiti prie žievės. Ir tada aš įdėti skliaustus po to. Ir tai veikia. Taigi kokių nors klausimų? Ar ne? Gerai. Geras. "JavaScript", pavyzdžiui, PHP, yra laisvai atspausdinti. Ką tai reiškia? Ji turi rūšys. Bet kai jūs paskelbti JavaScript kintamasis, jūs sakote var i. Jūs neturite pasakyti. Tai nėra dalykas. Jūs tiesiog pasakyti, kad kintamasis. Ir tada "JavaScript" atliks rūšys įtrauktos į Jums gaubtu. Mes galime laisvai konvertuoti tarp rūšys, nes šios. Taigi aš prasideda kaip skaičius šiuo atveju. Ir tada aš turiu eilutę. Ir aš dedu i ja. Ir aš perleisti jį atgal į i. Taigi, tą pirmą eilutę, i yra skaičius. Antroje eilutėje, dabar aš tampa eilutę, kai aš padaryti perskirstymą. Ir čia, aš tiesiog concatenating kad skaičius ant eilutę. Taigi matote, kad net buvau sveikasis skaičius pirmoje dalyje, tai tarsi panašaus virsta eilutę ir tada dedama į šį labas eilutę. Ir todėl, kad tai, ką turiu galvoje iš palaidų rašyti. Tai, kad jums konvertuoti tarp tipai labai lengvai. Ir tai dar ne mesti įspėjimai ne jums patinka C nėra. Taigi aš dabar yra Apie 123 į eilutę. Kitas. Mes taip pat galime laisvai palyginti tarp tipų. Taigi, jei jūs tiesiog naudoti ==, labai kaip PHP, JavaScript ar panašus dalykas. Styginių 123 yra toks pat, kaip numerio 123, kai jūs naudojate dvigubus lygu. Kai naudojamas triviečiai lygu, ji taip pat nori įsitikinti, kad tipas yra tas pats. Todėl, kad yra eilutė ir tai yra skaičius, nors jie abu 123, kai jūs naudojate trigubai lygios, jūs gaunate klaidinga. Per dvigubai lygu atveju, jūs gaunate tiesa, nes dvigubi lygu nėra rūpi tipo. Trivietis lygu neturi rūpintis tipo. Klausimai? Gerai. Ir dar apie JavaScript dalykas yra apimtis yra natūra pasaulinė nebent esate funkcijoje. Ir tai veikia ta pati būdas PHP faktiškai. Taigi eikime per šiame pavyzdyje. Aš nustatyti i 999. Ir tada aš einu į šią kilpą. Taigi, jei aš spausdinti i nurodyta tai už kilpa, tikiuosi, 0, 1, 2, 3, 4. Gaunu i = 4. Tai padidina i dabar 5 metu iš už linijos pabaiga. Ir tada ji sugenda iš kilpos, nes ji neatitinka sąlyga nebėra. Ką jūs manote, kad kitą console.log spausdina? Taigi, tai, ką jis darytų C. C nes jei jūs turite kaip var i ne ir jūs turite var i viduje kilpa, kaip už linijos, tada ji tampa tokia, kad tai scoped, kad du I "yra skirtingi. Be JavaScript, tai bus tik traktuoti kaip tą patį aš. Gaunu 5, nes tai buvo vertė po to, kai išėjo iš kilpos. Taigi tie i s yra tas pats aš. Ar tai prasminga? Na, tai turi prasmę JavaScript požiūris. Bet pati paradigma nėra perkelti į C. Jie turi įvairios apimties nustatymo taisyklės. Taip. PUBLIKA: [nesigirdi] ne funkcija [nesigirdi]? JOSEPH ONG: Taigi ne kokia funkcija? Taigi aš gausiu, kad tik sekundę. Taigi mes vadiname foo (i). Tai eina i į foo, didindami tai, tada registruoja jį. Taigi tai buvo 5. Taigi ji tampa 6. Bet ką aš kalbu apie tai, kad i tą funkciją. Nes tai parametras, tai scoped tą funkciją. Taigi, kai aš iš tikrųjų išeiti iš, kad funkcija, tai dabar ruošiuosi eiti atgal į senąjį i. Kad aš tik scoped nes tai funkcijoje. Ir mes turime sritį ir funkcijas. Bet mes neturime turėti galimybę ne funkcijų JavaScript. Ar tai prasminga? Taip. Klausimas. PUBLIKA: Tas pats [nesigirdi]? JOSEPH ONG: Taip taip. PHP programavimo kalba, tai tos pačios rūšies dalykas. Yra šiek tiek subtilumo iš tikrųjų. Bet jūs galite paklausti apie kad po peržiūros. Jūs neturite tikrai reikia žinoti kad subtilumas už viktoriną. Dėl visų ketinimų ir tikslų, pavyzdžiui, kintamieji, pasaulio ir PHP, nebent jie į funkciją, tas pats dalykas JavaScript. Taip. PUBLIKA: Kodėl tai yra leidžiama "JavaScript" ir ne kur kitur? JOSEPH ONG: Taigi, kodėl jis leido JavaScript o ne C? Tai tiesiog kas atėjo su "JavaScript" nusprendė, kad tai buvo OK "JavaScript". Taigi, tai tik kaip programavimo kalba konvencija, kaip mes norėtume pasakyti. Taip. PUBLIKA: Tad kodėl ji eiti 6-5? JOSEPH ONG: Taigi jis nuėjo 6-5, nes kai perėjau i į foo, kad aš viduje foo dabar scoped į foo, nes apimtis egzistuoja funkcijų "JavaScript". Bet kai aš išeiti iš čia, nes tai buvo scoped su funkcija, aš tiesiog naudojant reguliariai i, kad buvo viduje Valdymo srauto poilsio. Prasmės? Ar galiu perkelti? Gerai. Cool. Tai yra pripažįstamos objektai yra perduodama nuoroda. Jūs žinote, kaip kai pravažiuojate masyvas į C galėtumėte faktiškai pakeisti matrica? Tai tas pats "JavaScript". Jei galiu perduoti objektą, šiuo atveju, aš praėjo Milo į šį catify funkcija. Milo prasideda. Jo vardas Milo bananų. Galiu perduoti tą daiktą į funkciją nes tai daiktas, asociatyvus masyvas JavaScript. Kai aš atlikti operaciją tai veiklai, tai bus faktiškai pakeisti objektą. Taigi, tai įvyks tik objektų JavaScript, tiesiog patinka tai atsitinka už matricos viduje C. Taigi Milo pavadinimas bus faktiškai tapo katė dabar. Ar tai prasminga? Taigi tai veikia tik objektus. Objektai yra perduodami nuoroda. Taip. PUBLIKA: Taigi jūs sakote, kad priešingai kintamojo i. JOSEPH ONG: Taip. Kuris kintamasis i buvo tik skaičius, tiesa? Tai kaip C, kai pravažiuojate sveikasis skaičius, tai daro kopiją. Ir kai jums perduoti masyvą, ji iš tikrųjų pakeičia tikrąjį masyvo C. Tas pats atsitinka su JavaScript šiuo atveju. Gerai. Ir kitą Milo yra liūdna, nes jis dabar katė. Tai iš tikrųjų buvo Milo po kai kelionė pas veterinarą. Taigi, kaip mes naudojame JavaScript į tinklalapį? Mes galime jį įtraukti. Tai HTML kodas su striptizo žymes. Taigi turiu striptizo žymes ten. Ir tada aš įdėti šiek JavaScript kodas pagal scenarijų žymės. Ir tada jis atlieka tai. Kai aš tiesiog padaryk tai, kaip šis, tai vadinama inline JavaScript. Tai koks nepatogus, nes "JavaScript" yra faktiškai HTML. Geresnis būdas tai padaryti, daug gražiau, yra parašyti jūsų "JavaScript" išorinio failo ir tada pateikti scenarijų tegus su šaltiniu. Ir tai bus eiti į tą JavaScript failą ir skaityti JavaScript kodą kad failą vietoj. Ir tokiu būdu, jūs neturite turėti daug "JavaScript" ne jūsų pradžioje HTML failą, kuris leidžia tai tikrai nepatogus. Jūs tiesiog įdėti jį kažkur kitur. Ir tada jis bus skaityti iš ten. Ar tai prasminga? Įdarbinimo klausimais. Šiuo konkrečiu atveju, Scenarijus yra prieš kūną. Taigi, kai Aš įvykdysiu, kad ten nieko organizme dar. Gal tai padės šiek tiek daugiau jausmas, kai aš parodyti šią kitą dalį. Šiuo atveju scenarijus ateina po div. Taigi, iš tikrųjų atrodo div puslapyje pirmas. Čia šioje raudono apskritimo, matai pasirodo tekstas. Ir tada įspėjimas pasirodo. Pirmuoju atveju, nes scenarijus buvo prieš div Priminimas pasirodo pirmiausia. Ir tada div rodo po Jūs atmesti langelį. Taigi vykdymo klausimais. Taigi mes laikyti tai galvoje. Tai bus svarbu trupučiu. Gerai. Taip gerai, kaip jums laukti, kol visas puslapis yra pakrautas tada prieš jus vykdyti tam tikrą kodą? Mes gausite į tai mažai Kiek vėliau taip pat. Bet tiesiog laikyti šią vietą klausimai omenyje, kai mes atvykti į kitą skaidrę. Taigi, mes turime DOM dabar. Ir kas yra DOM? Taigi, jei jums pažvelgti į HTML kodą, tai tik teksto ekrane krūva. Taigi, kaip žinote, kad "JavaScript" tai yra HTML elementas? Taigi, mes turime turėti tam tikrą atmintį atstovavimas tai struktūra, kuri mes turime. Ir kai mes turime tai atminti atstovavimas JavaScript, mes vadiname kad DOM. Ir tai tik būdas, kad žmonės nusprendė kad mes turėtume atstovauti tai HTML struktūra, kaip. Ir ką tai DOM atrodo? Na, atminties reprezentacija, mes šį tekstą. Ir mes kreipiamės į atmintį atstovavimas. Taigi tai yra HTML. Taigi pirmiausia sužinoti, kad kiekvienas DOM medis dokumentą. Jis atrodo kaip medis. Ir dokumente yra HTML žyma, iš tikrųjų viskas viduje tai dabar. HTML tegus turi du vaikus. Ji turi galvą. Kad galva, jei peržvelgsite įdubimas ten, kaip jis struktūra tarp artimų žymeles, vadovas turi vaiką. Vaikas yra pavadinimas. Būtent. Dabar, mes turime kūno vaiką. Ir tada, kad kūnas turi vaikas vadinama šeima. Ir, kad šeima turi tris vaikus - Seniausias, viduryje, ir jauniausias. Taigi, jūs turėtumėte žinoti, kaip padaryti diagramą kaip šis, kai mes prašome jus, kaip nubrėžti diagramą, kai mes suteikiame jūs kairėje HTML. Žinoti, kaip gaminti DOM medį. Ir viduje šių dalykų, kad tik nors tekstas, kuris aš atstovaujama kaip maži langeliai. Ar tai DOM medžio struktūra, kad jausmą ir tai, ką DOM? Taigi, ką p stovėti? Čionai, p ten toje žyma yra dalis tegus HTML. Taigi jūs galite ieškoti. Bet tai tik reiškia, kad jis kai vietos tam tikru tekstu. Ir tai turi numatytąjį CSS stilius, nes tai dalis tegus. Bet tikrai ne nerimauti ta dalis per daug. Tiesiog žinau, tai rezervuotai kai tekste. Taip. Klausimas? Taip. Auditorija: Jūs ką tik paminėta CSS. Maišos šeimos ir maišos visi, kad kita yra iš esmės atstovaujančių IDS CSS? JOSEPH ONG: Taip, tiksliai. Aš gausiu kokius šios maišos reiškia per sekundę. Kai Angela perėjo CSS, ji kalbėjo apie CSS selektoriai. Tai yra CSS selektoriai, kad ji buvo kalbama apie. Taip, Rob? ROB BOWDEN: Aš taip pat norėčiau komentarą kad viduje žymės pavadinimą DOM taip pat tekstas mazgas. JOSEPH ONG: Teisė. Taigi viduje žymės pavadinimą, Turiu šiek tiek teksto DOM. Taigi tikrai, šis pavadinimas turėtų būti kaip mažai dėžutė ateina ne apie tai, kaip gerai. Bet tai tikrai ne klausimas, per daug šiuo atveju. Mes nerūpi apie teksto mazgų, kaip mes juos vadiname, per daug. Gerai, mes darome. Matyt, mes darome. Ir aš ją išspręsti, kad kai Aš įkelti jį vėl. Ar tai prasminga? Taigi, kaip mes dirbame su DOM? Kai jums susidoroti su DOM JavaScript yra du etapai. Galite pasirinkti DOM elementas. Ir tada daryti tai, ko jos. Taigi šiuo atveju, abstrakčiai, aš Pasirinkę vidurinį elementas. Ir tada daryti stuff pavyzdys jai būtų pakeisti tekstą. , Kurie būtų Bobas. Dabar, ką aš padariau buvo Pakeičiau Bob Milo šiuo atveju. Taigi, kaip mes iš tikrųjų tai padaryti? Kaip mes tai darome parinkimą? Ir kaip mes darome stuff dalykas, kai mes atlikome tai? Na, kaip jūs vaikinai išmoko šioje klasėje, naudojant tai, ką mes vadinamas JQuery. Taigi, kas yra jQuery? JQuery yra biblioteka, kuri leidžia JavaScript lengviau rašyti. Taigi, kažkas paėmė laiko ir rašė JQuery. JQuery yra tikrai parašyta JavaScript. Ir tada, nes dabar jie tai padarė, mes turi visa krūva funkcijų, mes galime naudoti, kad padaryti mūsų gyvena tikrai paprasta. Taigi, kas yra kai kurie iš ką ji daro? Tai daro pasirinkdami elementus lengviau. Tai leidžia keisti HTML, pridedant klasių lengviau. Tai leidžia "Ajax lengviau. Mes susisieksime, kad per sekundę. Ir tai panašu į C bibliotekų. Taigi jūs įtraukiate string.h, jums strlen. Jūs gaunate strcpy, visų šių dalykų. Kai yra JQuery, jums gražus būdų, kaip pasirinkti elementus pakeisti dalykų, ir tt. Jūs gausite papildomų funkcijų, kad "JavaScript" nesuteikia jums. Taigi JQuery yra ne "JavaScript. JQuery yra bibliotekoje tai parašyta "JavaScript", kuri leidžia "JavaScript" lengviau rašyti. Taigi JQuery yra ne programavimas kalba. Bet JavaScript. padaryti. Žinoma jūs gaunate savo terminologiją teisus. Turite klausimų? Taip. Ar tai klausimas? Gerai. Taigi, kaip jums naudoti JQuery? Na, kai rašote kai JavaScript kodą, ir jūs taip pat JQuery ne jūsų failo viršuje kaip scenarijaus failą, jūs naudojate dolerio ženklas dabar, kad gautumėte prieigą prie jQuery. Ir tai skiriasi nuo dolerio ženklas PHP. Tai tas pats simbolis jums tipo klaviatūra. Bet jie reiškia labai skirtingus dalykus. Doleris ženklas PHP reiškia tai kaip aš pareiškiu kintamąjį. Be JavaScript, kai jūs komplektacijoje jQuery, tai reiškia JQuery. Taigi, keep that in mind. Taigi, kaip gali mes pasirinkti DOM elementus? Na, kai jūs darote tai, kad negraži JavaScript būdu, jums prieigą dokumentuoti pasaulinį kintamąjį. Ir tada jums elementas pagal ID šeima. Tai tikrai ilgas ir žodinis ir nėra labai gražus. Arba jūs galite gauti visus elementus kad yra p tegus. Kuri veikia per "JavaScript". Bet mes niekada iš tikrųjų parodė, Jūs sintaksė per daug. Ką mes parodė jums buvo JQuery. Taigi, kad visa selektorių ten, kad buvo išreikštas JavaScript tiesiog gauna kondensuotas su šiuo labai gražus dolerio pasirašyti hashtag šeimą. Ir $ p, tik ten, kur tai patinka. Jei norite pasirinkti visus p žymes viduje šeima, mes padėkite tarpą tarp šių dviejų. Ir dabar mes turime visą p Tags viduje šeima. Ir atrodo pažįstamas? Na, Angela kalbėjo apie CSS selektorius. Duok man vieną sekundę. Ir todėl, kad pasirinkti elementą, jums tiesiog naudokite tą patį kaip ir jūs būtų padaryti su CSS selektorius. Jeigu jūs įtraukėte maišos priešais jo, jis atrenka pagal ID. Dot pasirenka pagal klases. Jei tik turi ką be maišos ar taškų, jis atrenka tuos žymes. Klausimai. Taip? PUBLIKA: Kai mes naudojame tašką iš mūsų HTML yra tas, kad ne JQuery? JOSEPH ONG: Dot mūsų HTML yra Javaskriptą dalykas. Tai ne JQuery dalykas. Būdas vaikinai išmoko jį su JQuery yra naudoti. html. Ir tada jūs išlaikė jį ką HTML bus. Taigi aš gausiu, kad tik Antroji iš tikrųjų. Taigi, kaip mes tai darome stuff elementas kai mes ją pasirinkote? Štai pavyzdys pasirinkdami elementą. Taigi, dabar mes norime daryti stuff su juo. Taigi šiuo atveju, leiskite man grįžti į ankstesnę skaidrę. Tai buvo Bobas anksčiau. Ir aš noriu pakeisti, kad viduje HTML Milo. Taigi aš vadinu HTML funkciją nuo elemento. Tai HTML funkcija elemento metodas. Ir tada aš duodu tai, ką Noriu HTML būti. Ir ji tiesiog pakeičia kas viduje kad tegus su kokia duosiu jį. Taip. Klausimas? PUBLIKA: hashtag naudojamas tik su JQuery. [Nesigirdi] mes ne naudoti, kad. JOSEPH ONG: Taip, tiksliai. Bet nesijaudinkite, per daug apie grynas "JavaScript". Aš tik noriu jus vaikinai sutelkti dėmesį į tai, kaip jūs norėčiau tai padaryti su jQuery, nes tai bus svarbu dalis nuo viktorina. Teisė. Būtent. Taigi matote, kad hashtag, kad atitinka pasirinkite elementą su ID viduryje, nes tos hashtag. Hashtag reiškia ID. Ir šis elementas turi apie vidurį ID. Štai elementas mes pasirenkame. PUBLIKA: [nesigirdi]. dolerio ženklas hashtag [nesigirdi]? JOSEPH ONG: Taigi ne. Klausimas galite naudoti. Vertę. Ir. Vertė veikia tik elementai kad yra įėjimai. Į JQuery, būtų . Val, ne. Vertė. Taigi aš gausiu nedidelį, pavyzdžiui, kad rodo, visa tai kartu per sekundę. Bet manau, kad tai padės šiek tiek fragmentą Prasminga, kad žmonės iki šiol. Norite pakeisti HTML, skambinti HTML metodą. Taip. Auditorija: Ar galite paaiškinti vėl metodas? JOSEPH ONG: Taigi metodas yra tiesiog funkcija, kuri priklauso vienai, šiuo atveju, vienas iš šių DOM elementų, nes jūs žr. I pasirinktas elementas pirmas. Tiesą sakant, leiskite naudoti pelę. Mane pasirinko elementą pirmas. Ir tada aš pavadino šį HTML veikti, kad jis turėjo. Ir todėl, kad ši funkcija priklauso šis dalykas, mes jį vadiname metodas. Tai tik išgalvotas pavadinimas juo. Pasakykite, kad dar kartą. Taigi nepamirškite, mes išrinkome elementas dabar. Ir mes jį viduje elementas kintamasis. Ištaisyti? Taigi, kai mes norime pakeisti HTML kodą viduje, nes jis buvo Bobas ir anksčiau, jūs norite pakeisti šį tekstą Milo. Taigi mes vadiname HTML. Ir mes pasakyti, kas viduje HTML šis elementas turėtų būti dabar. Ir todėl keičia jį į Milo, nes aš davė jam Milo. PUBLIKA: Taigi jie dirba kartu. [Nesigirdi] JOSEPH ONG: Taip, taip. Jie dirba kartu. Taigi, vienas iš jų pasirenka elementas pirmas. Ir antras daro kažkas į jį. Taip. PUBLIKA: [nesigirdi]. Jei šis metodas skiriasi nuo HTML turite metodą vienodą aktuali. JOSEPH ONG: Taip. Tai kitoks metodas. Tai kitoks metodas. Ir mes galime padengti, kad vos per sekundę kai mes turime pavyzdį. Noriu įsitikinti, kad mes paspartinti nes mes bėga laikas. Bet mes paleisti kelią per laiką dabar. Gerai. Cool. Taigi, jei norite pridėti klasę, ten Taip pat pridėti klasės metodas. Tai tiesiog tai, ką pavyzdys jūs galite padaryti su jQuery. Tai tiesiog prideda klasės. Jei norite jį pašalinti, galite skambinti remove. Tai tik dar vienas dalykas, jūs galite padaryti. Taigi daugiau pavyzdžių, ką galite padaryti. Taigi aš galiu tiesiog padėkite jį į kaip tai viršuje? Jauniausias pašalinti. Jei aš tiesiog paleisti, kad JavaScript metu mano failo viršuje, bus, kad veikia? Teisė. Kadangi viduryje dar neegzistuoja. Taigi tai yra nesiruošia dirbti. Vykdymo tvarka. Jis eina į viršų pirmas. Ką? PUBLIKA: Jauniausias dar neegzistuoja? JOSEPH ONG: Taip. Jauniausias dar neegzistuoja. Būtent. Auditorija: Jūs sakėte, viduryje. JOSEPH ONG: Atsiprašome. Jauniausias dar neegzistuoja. Ir kitas dalykas yra, aš ne įtraukti JQuery failą paklausti scenarijų src. Taigi, kad nesiruošia dirbti. Tiesą sakant, aš to nedarau kita skaidrė, kuri yra turėtų nustatyti, kad arba. Tačiau, kaip mes tai padaryti yra JavaScript tai įvykis, vykdomas. Taigi, ką mes darome, yra mes naudojame renginį Handler, kad tai įvyktų. Ir aš taip pasirinkite dokumentą nustatytas pirmas. Sakau, gerai, kai dokumentas yra pasiruošę, leiskite man paleisti funkciją. Taigi, kad viskas, kad sintaksės priemonėmis. Mane pasirinko dokumentą. Dabar, kai dokumentas yra įrengtas, paleisti funkciją. Ir taip čia kai dokumentas yra pasiruošę, o tai reiškia, visi HTML turi pakrautas, tada aš paleisti funkciją kuris pašalina tą elementą. Ir todėl dabar, kai aš paleisti šią funkciją kad perėjau į paruoštas, aš garantuoti, kad visi ant HTML puslapis ketina būti pirmas. Taip. Klausimas? PUBLIKA: Koks įvykis raktažodį per funkcija? JOSEPH ONG: Taigi tas įvykis raktinį žodį funkcija yra tik parametras, bus perduota funkcija bet kuriuo atveju. Tai tiesiog kažkas, kad jūs gaunate nemokamai. Naudodami pagrindines tvarkytojai pset8, kad renginys galėtų papasakoti ir jums, pavyzdys, kuris iš pagrindinių Paspaudus ant. Šiuo atveju, paruoštas atveju tai tikrai ne itin naudinga. Bet pagrindinis žemyn atveju, tai daugiau naudinga, nes jums žinoti, kuris Pagrindiniai paspaudėte pagal gauti raktą kodas išjungtas Šiuo atveju objektas. Ištaisyti? Ar tai prasminga? Gerai. Taip. Klausimas? PUBLIKA: Taigi jūs galite įdėti scenarijų tegus mažesnis žemyn? JOSEPH ONG: Taip taip. Galima įdėti scenarijų pažymėti mažesnis žemyn. Bet tada jis tiesiog tampa labai nepatogus. Ir mes norėtume centralizuoti visiems mūsų kodą vienoje vietoje. Ir tai leis mums tai padaryti. Prisiminti anksčiau sakiau ten gražiau būdas užtikrinti, kad elementai yra puslapyje prieš vykdyti kodą? Ir tai tik gražus būdas jums pasiekti, kad. PUBLIKA: [nesigirdi]. JOSEPH ONG: Taip. Jūs vis dar turite, tiesa? Nes atminkite, kad jūs įtraukti failą į puslapio viršuje. Taigi jis ketina atlikti pirmą kartą prieš jums puslapio apačioje. Gerai. Taigi, jūs taip pat galite pridėti skiriasi Renginio tipas prižiūrėtojas. Tai tik vienas apdoroja paspaudimų. Kai paspaudžiu ant jauniausias, tada ji bus pop-up su perspėjimu. Tai tiesiog kitoks Renginio tipas. Skirtingai nei parengties atveju, dabar naudoti įvykis paspaudimus, kai gaunate paspaudžia ant elemento. Ir todėl šiuo atveju, atminkite, spragtelėjimą prižiūrėtojas pridedamas prie jauniausias. Taigi, tai atsitinka tik tada, kai Aš spustelėkite jauniausias. Ir kitas, parengties atveju buvo pridėtas prie dokumento. Taigi laukia dokumento būti pasirengę. Prasmės? Manau, kad galiu judėti. Taip. Klausimas? PUBLIKA: [nesigirdi]. šiuo atveju jūs naudojate [nesigirdi]. JOSEPH ONG: O, taip, nes tai atveju, turiu laukti jauniausias elementas ekrane pasirodys pirmas kol aš galiu pridėti spustelėkite prižiūrėtojas tai, kuris yra, kodėl aš įdėti jį viduje iš dokumentas paruoštas. Gerai. Ir kitą, todėl tai yra didelis pavyzdys kaip jūs derinti viską. Tai yra tik formos patvirtinimo pavyzdys jūs mačiau paskaitos. Taigi imtis žingsnis po žingsnio, kaip jūs einate per šį. Ir jis bus visiškai Gerai. Tiesiog skaityti nuo viršaus iki apačios. Turiu formą apačioje. Kai dokumentas yra paruoštas, teikiu pateikti prižiūrėtojas formos, pavyzdžiui, kad kai aš pateikti formą, gaunu vertybes viduje kiekvienoje iš šių sąnaudų. Ir aš patikrinti, jei jis tuščias. Jei jis tuščias, aš return false, nes Nenoriu pateikti formą, nes forma yra neteisinga. Jei slaptažodis yra tuščias arba jis mažiau nei aštuonių simbolių, nemanau, pateikti forma, nes tai taip pat negerai. Ir return false tik apsaugo nuo pateikimo ir formos eiti į naują puslapį. Ir tikiuosi, tai turi prasmę. Manau, vaikinai turi eiti per šis kodas žingsnis po žingsnio savo. Ir kai jūs suprantate, ką pasirinkti elementai ir padaryti stuff jai iš tikrųjų reiškia, tai, kad daug prasmės jums. Taip? PUBLIKA: Ką reiškia pavadinimas = vardas reiškia? JOSEPH ONG: Taigi pavadinimas = vardas ir pavadinimas = slaptažodis reiškia tiesiog pažvelgti atributas kokia jūs pasirinkę. Ir tada, kad turi sutapti. Taigi mes einame į registracijos. Ir tada mes pažvelgti į visas sąnaudas ir registravimas. Ir tada mes pasirinkti vieną, kurios pavadinimas atributas yra lygi vardą. Taigi, kad pirmasis selektorių tik parenka vardas įėjimas. Ir antra selektorių tik parenka slaptažodis viena, nes tie turi jų pavadinimai požymiai nustatyti, ką jie turėtų būti. Klausimas? PUBLIKA: Teikimo kaip veikia apatinė dalis išspręsti viršutinę dalį? JOSEPH ONG: Štai, nes Renginio prižiūrėtojas. Taigi, mes laukia pateikti įvykį kad gauna atleistas iš formos. Ir tai viskas, kas yra pateikti. Kodėl aš vadinu pateikti ten? Ji sako, kai yra pateikta forma, Gaunu pateikti įvykį. Taigi, leiskite man tiesiog perimti kad ir tada paleisti šį kodą vietoj. Taip? PUBLIKA: Kodėl jūs turite turėti funkciją renginį? Kodėl negaliu tiesiog [nesigirdi]? JOSEPH ONG: Nes JavaScript, jūs turi deklaruoti funkcijų. Tai tiesiog kaip ji veikia JavaScript. Jūs turite pasakyti, kad tai, kas vyksta paleisti funkciją. Taigi sakai tai, kad esate tikisi funkciją čia vietoj tik garbanotas petnešos. Auditorija: O funkcija yra ką taip? JOSEPH ONG: Taip. Funkcija yra visa, kas viduje garbanotas petnešos po kad funkcija raktinį žodį. Taip? PUBLIKA: [nesigirdi]. JOSEPH ONG: Už pateikti? PUBLIKA: Ne, funkcijos be įvykio. JOSEPH ONG: Taip. Taigi be įvykio, Jūs galite turėti, kad. Jei jums nereikia renginį, tada galite tiesiog praleisti jį. Bet jei tai padarysite, tada jūs tiesiog padėkite jį ten. Taip. Greitas klausimas? PUBLIKA: [nesigirdi]. JOSEPH ONG: Taip. Nes tai, ką jums reikia padaryti, document.ready tiesiog sako laukti visus puslapio HTML įkelti pirmas. Ir paprastai, jūs norite, kad jūsų elementai vietoje prieš paleidžiant jokio kodo. Gerai. Mes turime gauti Ajax. Mes neturime daug laiko. Taigi, privalumus ir trūkumus. "JavaScript" yra lengviau bandymas rašyti su JQuery. Bet JQuery rūšies lėtai. Tai kaip PHP yra lėtesnis nei C, nes jis aiškinamas. Ir jQuery yra šiek tiek lėčiau nei "JavaScript", nes tai daro daug daug viskas po gaubtu. Ir todėl, jei jūs naudojate jQuery, tai tik šiek tiek lėčiau nei "JavaScript", nors ji suteikia jums gražią elegancija. Ir, pagaliau, "Ajax". Iki šiol su "Ajax", jūs dar nematėte Ajax pagal pset7 dar, nes kai tai padarysite, jums pateikti forma, citata. Jis įkelia naują puslapį. Taigi, galėsite gauti šį didelį baltą blykstės puslapyje, o kad antras puslapis apkrovoms, tiesa? Būtų tikrai malonu, jei jums neturėjo, kai šią blykstę. Kaip "Facebook", jei jūs tiesiog pereikite prie apačioje, ji priduria naują turinį be atnaujinti visą puslapį. Taigi, kažkas panašaus į tai būtų malonu. Tai yra JavaScript kodas kairėje pusėje. Jūs gaunate tai, kas yra viduje, kad pirkimo. Jūs gaunate atsargų info iš "Yahoo!" Ir tada jums padaryti didelį eilutę, sako, gerai, tai žinutė Noriu parodyti ekrane. Ir tada jūs galėsite įdėti šią žinią viduje kai kurių HTML elementas, kuris pasireiškia rodomas ekrane. Taigi, kad viskas, kad vyksta čia. Taigi, iš esmės, nes tai yra viskas "JavaScript" ir jums nereikia paleisti nebėra PHP, tai įsitikinkite, kad kad puslapis nėra atnaujinamas. Taigi, tai tik abstrakti idėja kad aš sakau čia dabar. Abstrakti idėja yra ta, kad jei jūs tai darote visi JavaScript, jūs neturite puslapio atnaujinimo. Bet kaip jūs iš tikrųjų tai padaryti? Na, iš tikrųjų, pakalbėkime apie problema su tai pirma. Problema yra JavaScript, vykdymas yra sinchroninis. Taigi jūs turite laukti vieną linija baigti prieš jus vykdyti kitą eilutę. Ir ką daryti, jei aš per Yahoo!, ir jų serveriai yra labai lėtas, ir užtrunka jiems tris sekundes duok man atgal, kad akcijų informacijos? Kai aš paspauskite, kad kainų linija, jei vykdymas yra sinchroninis, nes pagal nutylėjimą, ką jis tik ketina padaryti, tai Jūsų naršyklė ketina išlošti trys sekundės. Ir jūs nesiruošia galėtų padaryti nieko, kol jis gauna tuos duomenis. Tai bus įšaldytos. Ir tai blogai. Jūs nenorite, kad vartotojas turėti šaldytos tinklalapį. Ištaisyti? Tai tiesiog blogas. Visi sutinka? Jei naršote Facebook "ir ją pakimba, ir jūs negalite daryti nieko, jus gauti tikrai nusivylė. Taigi sprendimas yra mums padaryti kažką asinchroninis vietoj. Taigi visa tai asinchroninis dalykas sako yra, aš ruošiuosi paklausti URL kai kurių duomenų. Ir tada aš ruošiuosi nesustoti. Aš tiesiog ketina išlaikyti vykdant kokia kodas, kuris buvo po to. Ir tada, kai tie duomenys yra pasirengusi, tada aš jį apdoroti. Štai ir viskas, ji sako. Auditorija: "Ajax" tiesiog daro kodas asinchroninis? JOSEPH ONG: Tai asinchroninis būdas žavingas duomenis. Taigi pirmas dalykas, apie Ajax tai leidžia man gauti duomenis iš išorinio svetainėje. Ir antras dalykas yra tai, kad rūpinasi kad mano puslapyje nėra vilkinti, o aš žavingas, kad duomenis. Štai asinchroninis dalis. Nes jis eina kažkur kitur, nes sakau, kad nuolat vyksta, o tai žavingas, kad duomenys, kad todėl asinchroninis. Aš nuolat vykdyti. Taigi neišmeskite, kad asinchroninis idėja galvoje. Ir aš jums parodysiu, ką Skirtumas yra. Sinchroninis versija yra kairėje pusėje. Asinchroninis versija yra dešinėje pusėje. Pažvelkite numerius pamatysite, kurie veiksmai atitinka tai, ką vykdo kiekvienoje eilutėje. Ten, perspėjimas pasirodo pirmiausia. Kadangi gauti akcijų informaciją iš "Yahoo!" trunka tris sekundes, jis prekystalių tris sekundes. Ir tada jis įspėja kainą Po tų trijų sekundžių. Taigi dabar, kad įspėjimo rodo iki tuo metu - trys sekundės in Ir tada jis perspėja, kad. Taigi, jis tiesiog eina žingsnis po žingsnio. Tai, ką jūs vaikinai sutiktų, tiesa? Su asinchroniniu vykdymo, jūs įspėti pirmas. Tada galite išjungti šį URL. Ir jūs sakote, aš ruošiuosi tiesiog paprašyti duomenų. Ir tada aš ruošiuosi apdoroti jį vėliau. Taigi jis iš karto vykdo kitą eilutę, kai aš padaryti, kad asinchroninis prašymas. Taigi 0,001 sekundės, matote įspėjimą hi. Vykdyti šią funkciją, įspėjimo bye. O kadangi aš jau pažadėjau, kad aš būtų apdoroti duomenis vėliau kas atsitinka taip, kai tie duomenys grįžta vėliau tris sekundes, tada aš paleisti, kad funkcija, kad turiu ten. Taip? Auditorija: Ar galite nurodyti, ar paaiškinti, ką reiškia "Ajax"? JOSEPH ONG: Taigi "Ajax" yra taip, kad jei aš reikalingi duomenys, kai aš į svetainę, ir aš nenorite atnaujinti puslapį, tada Aš naudoju šią technologiją, vadinamą "Ajax". Tai iš esmės reiškia tiesiog, eik ir surask duomenis iš kitos svetainės. Ir tai padaryti tokiu būdu, kad tik neturi vilkinti savo tinklalapį. PUBLIKA: Taigi tai, kad neatskiriamas dalis "JavaScript" arba JQuery? JOSEPH ONG: Taigi kažkas rašė, kaip tai padaryti tai Javaskriptą seniai. Vienu metu, jis neegzistavo. Ir taip kas išrado šią techniką kad žmonės galėtų prašyti šiuos duomenis šiuo būdu. Ir jie parašė keletą daiktų padaryti tai už jus. Ir jQuery tik suteikia jums tai labai gražus būdas tai padaryti su šiuo $. gauti funkciją. klausimai? Galiu atsakyti į klausimus apie "Ajax" vėliau taip pat. Aš būsiu čia. Taigi leiskite mums paimti duomenis be atnaujinti puslapį. Ir tegul mums tai padaryti asinchroninis būdas, neprišąla puslapį. Per ilgas, ne skaityti, jei tai paaiškinimas buvo per ilgi. Taigi pagaliau, cross-site scripting išpuolių. Mes tai matėme Zamyla. Jei mano duomenų bazėje kažkas turi šį vardą, tai šis scenarijus žymeles, ir aš turėti tam tikrą mano puslapyje kodą, kuris spausdina iš žmonių vardų iš eilės, ar turiu kai "JavaScript" kodas, kuris įterpia šis pavadinimas į puslapį, ką HTML gauna pagaminta? Na, aš atsispausdinti HTML tegus. Spausdinti visus šiuos žodžius. Gaunu dalis, kur aš spausdinimas su draugais. Spausdinti Lauren iš. Spausdinti Milo iš. Ir tada mano vardas duomenų bazėje yra skriptas pranešimas unflattering Facebook "statusas. Nes aš įterpiamas šis į puslapį nes atrodo, kad JavaScript, kai šis puslapis bus siunčiamas vartotojui, jis bus vykdomas kaip JavaScript. Ir todėl tai, ką mes vadiname cross-site scripting išpuolių. Kažkas kelia kenkėjišką informaciją Jūsų duomenų bazę, kuri gali atitikti kai papildoma eilutė arba kai "JavaScript" eilutė. Ir kai jis bus atspausdintas, kad puslapis šiuo būdu, tai kas atsitinka taip, kad blogas kodas paleidžiama vykdyti kad aš neketinu ji gauti įvykdytas. Ir tai viskas cross-site skriptų ataka. Ir kaip jums gauti maždaug tai kaip Zamyla sakė. Jūs tiesiog wrap dalykų HTML specialių simbolių. Ir šį HTML specialūs simboliai yra PHP funkcija, kuri leis išvengti šios rūšies dalykas iš vyksta su jumis jei turite kenksminga eilutę duomenų bazėje. Jis tiesiog pabėga tai, kad ji nėra gauti aiškinama kaip HTML. Jis pakeičia mažai laikiklius su tuo, ką mes vadiname subjektai. Ir mes nuėjome per tai paskaitos taip pat. Taigi manau, kad vaikinai turėtų turėti gerai suvokti, kad. Klausimai? Taip. PUBLIKA: Taigi, kaip būtų [nesigirdi]? JOSEPH ONG: Pasakykite, kad dar kartą. PUBLIKA: Kaip būtų monitorius - JOSEPH ONG: Teisė. Taigi jūs turite ką nors, kad sako, kai Užsiregistruoti, įveskite savo vardą. Aš tiesiog įveskite šioje srityje, mano vardas yra stript pranešimas unflattering Facebook statusas arti scenarijaus žymė. Ir tai tik gauna įdėti į duomenų bazė, nes aš negaliu pasakyti ką nors pasaulyje neturi vardą su kairės rodyklės į jį arba žodis scenarijų jį. Tai neturi prasmės. Taigi aš tiesiog turi įsitikinti, kad aš Sanitarinės stuff, kol aš ją spausdinti dėmesį į šį puslapį. PUBLIKA: Taigi HTML specialios kortelės neleidžia scenarijaus žymes? JOSEPH ONG: Taip. Taigi ji nedraudžia scenarijų žymes. Jis tiesiog leidžia užtikrinti, kad script tegai negauna aiškinama kaip HTML arba - taip. Jis tiesiog ateina, kas ji iš tikrųjų yra. Gerai. Taigi, tai buvo viktorina apžvalga. Cool. [Plojimai]