R.J. Aquino: Pieņemsim tikai sākt. Tātad šī ir viktorīna 1. Šeit ir daži augsta līmeņa informāciju. Par lapa viktorīnas ir šis URL, vairs CS50.net, lai gan tas joprojām strādā. Tas ir CS50.harvard.edu/quizzes/2013/1. Tas ir liels Par lapu, stāsta jums kur un kad, proti, nākamo trešdien ķekars numuriem. Un līdz nākamajam Trešdiena, es nozīmē divas dienas no tagad. Visa šī informācija ir tur. Bet tas ir kumulatīvi. Tātad viss no pirmajā pusē gadā ir iespējams uz viktorīnu, jo jūs nevar īsti darīt uzlabotas lietas C bez, ja apstākļi un cilpas un tamlīdzīgi. Bet būs uzsvars uz izejvielas, uz kurām kopš Viktorīna 0, sākot ar structs un File I / O. Tas parasti vairāk grūtāks nekā viktorīnā 0. Vidējais vērtējums parasti ir zemāka. Cītīgi jāmācās. Kamēr jūs studējat, pārliecinieties, lai izmantotu CS50/discuss, lai pēc jūsu jautājumiem un izlasīt citu cilvēku jautājumiem. Tātad, ja jums nav nekādu jautājumu, piesakieties un lasīt savu draugu jautājumiem. Viņi, iespējams, ir labi jautājumi. Un veikt praksi viktorīnas. Mēs esam sniedzot viktorīnas septiņus vai astoņus gadus. Viņi visi ir tiešsaistē. Nākotnes jautājumi ir līdzīgi veco jautājumiem. Tas ir, kā mēs viņus. Viktorīna vēl neeksistē. Neviens no mums ir redzējis. Bet tas izskatās iepriekšējie viktorīnas. Šajā pārskatīšanas sesijā, tas nav izsmeļošs tēmām. Jūs varat ne tikai apmeklēt šo un pēc tam būt pilnīgi gatavs viktorīnas. Pretējā gadījumā nebūtu ka daudz viktorīnā. Un tas arī nav obligāti viss, kas jums jāzina par kādu dota tēma. Tas ir domāts, lai pakļaut jūs lietām mēs esam uz, jums atgādināt to, ko mēs aptvēra, un veids, kas mēs uz to. Bet jums būs jāiet tālāk un dziļāk, ja jūs mācīties, lai vēlreiz pārbaudiet ka jūs zināt visu par kādu konkrētu tēmu un, ka jūs esat aizpildīta visas stūriem, kas bija uz lekciju. Viktorīnu piezīmes pateiks, lai dotos uz Scribe piezīmes, pulksteņu lekciju video. Tas ir labs veids, lai pārliecinātos, ka jūs esat aptvēra visas savas bāzes. Tātad iesākumam, kad es šos slaidi, es mēģināju likt, kur es atklāju informāciju. Tātad File I / O, piemēram, nedēļa 7, Pirmdiena lekcija, un ievietojis 6.pants un problēmu Set visiem ir Informācija par failu I / O. Es esmu darījusi šo par katru tēmu. Tātad šie virsraksts slaidi var būt noderīga jums. Tāpēc šeit mēs esam File I / O. Atcerieties, ka Problēma Uzstādīt 5, mēs izmantojām fopen, fclose, fwrite, fread un fseek. Ņemot atgūti 30ish JPEG un kam mainīti un messed ar bitkartes, jums vajadzētu būt diezgan pazīstams ar šīm funkcijām un kā viņi strādā. Ja jums vairs nav pazīstami, noteikti pārskatiet tos. Un pārliecinieties, ka jūs saprotat, ko dažādi argumenti, kad viņi lieto. Bet kopējā failu saistītās bugs Jums var būt jautāja par - labi, ja esat aizmirsis, lai pārbaudītu, vai fopen faktiski nostrādātās pirms dodaties modificēt failu. Tas varētu būt slikti. Ja esat aizmirsis fclose failu ka jūs esat fopened, kas ir līdzīgs atmiņas noplūde. Tas ir diezgan slikti. Un aizmirst, lai pārbaudītu, vai jūs esat sasnieguši failu pirms jums sāciet rakstīt uz to. Tātad, ja jūs sakāt, hey, es esmu faila beigas. Dodiet man vēl 5 baiti. Nu, tas ir iespējams, nebūs strādāt, kā jūs sagaida. Tas ir tiešām tas, lai File I / O, jo mēs darījām tik daudz no tā ar problēmu komplektu. Tātad, ja jums saprast, kas notiek problemātiskajās Set 5, atcerieties bitmats un JPEG, tad jūs, iespējams, visi noteikti File I / O. Ja tas ir mazliet izplūdušas, noteikti pārskatīs šo problēmu komplektu un saistītā materiāla. Structs bija jautājums, kas bija līnija starp Viktorīna 0 un viktorīnā 1. Nav gluži padarīt griezumu viktorīnā 0. Lai viņi būs noteikti par Viktorīna 1, 7 nedēļa, pirmdiena. Kas ir struktūrai? Šeit mēs parādīsim struct. Tas ir tāpat kā jauna tipa. Tas ir tāpat kā ar konteineru vairākiem laukiem. Šajā gadījumā mēs esam deklarēti struct students, ka ir divas jomas - virkne, kas mēs esam aicinot nosaukums un int, ka mēs aicinām vecumu. Tātad, kad es iet apkārt studentiem vai I modificēt studentus, es būšu spējīgs piekļūt savu vārdu un savu vecumu. Apskatīsim kādu kodu, kas. Šeit mēs redzam, ka es esmu deklarēts students s, tāpat kā Es apliecinu jebkuru mainīgais - int x, int y, un tā tālāk. Lūk students s. Viņš sāk ar neko savās jomās. Tā ļauj noteikt tos. Jūs noteikti laukus kādas struktūrai ar punktu. Tāpēc es esmu šeit teicis, ka s.name = RJ. Un s.age = 21. Jūs varat arī atjaunināt laukus tāpat jūs atjaunināt vērtība ir mainīgs. Tāpēc es vēlos mainīt savu vārdu no RJ ar Nav laika periodi, R.J. speltas pareizais veids. Tas tiks s.name = RJ, pats kā mēs teicām to sākotnēji. Un tad jūs varat piekļūt tiem. Tāpēc mēs esam, kas viņiem. Mēs esam atjauninājuši tos. Jūs varat arī piekļūt tiem tajā pašā veidā. Tātad, šeit es esmu izdrukāšana R.J. Ir 21 gadus vecs. Un es esmu piekļūt šīs vērtības ar s.name un s.age. Tātad, kas ir piekļūt structs ar dot apzīmējumu. Yep, jautājums? Mērķauditorija: Vai ir iemesls par iepriekšējais slaidu, ka jums nav likts students augšējā rindā, piemēram typedef struktūrai students un pēc tam students beigās? R.J. Aquino: Tātad jautājums bija par Šī slaidu, mēs esam parasti redzējuši typedef struktūrai mezglu un tad no struct lauki un Pēc tam vārds mezglā. Un cik nāk šeit es neteicu, typedef struktūrai students un tad lauki struktūrai un pēc tam students? Iemesls ir tas, ka man nav nepieciešams piekļūt iekšpusē struktūrai. Tātad, tas ir OK, lai atstāt bez nosaukuma. Es varu vienkārši atstāt to kā anonīms struktūrai. Iemesls mēs to saistītiem sarakstiem un viss ir tāpēc, ka iekšā jums ir nepieciešams atsauces struct mezglus zvaigzni. Tā struktūrai ir jābūt vārdu, lai jūs varētu to piekļūt vēlāk. Tā ir neliela detaļa. Bet jūs parasti redzēt typedef struktūrai cirtaini bikšturi, ja jums nav nepieciešams vārds un typedef struktūrai dažas nosaukumu seko cirtaini bikšturi, ja jūs vajag nosaukumu. Tātad, tas ir labs jautājums. Un šajā brīdī, mums ir tendence mainīt structs un iet apkārt structs ar atsauces, nevis vērtības. Tāpēc mēs vienkārši iet apkārt norādes uz structs nevis iet apkārt structs sevi. Tātad jūs esat ļoti bieži būs Izmantojot šajā gadījumā, students * vai struct mezglā * vai mezglu * vietā kas studentiem vai mezgliem. Tātad, šeit es esmu teica, OK, mainīgais PTR būs adrese s. Tas būs rādītājs studentam R.J. Tātad, mēs varam iegūt šajās jomās tāds pats kā mēs kaut. Pirmkārt, ID atsauces rādītāju iegūt struct. Tas ir * PTR un pēc tam dot un tad vecuma. Tātad, lai piekļūtu lauku, un es esmu atjaunināts tas tagad līdz 22, jo, pieņemsim teiksim, tā bija mana dzimšanas diena. Tur īsceļu sintakse Izmantojot bultiņu šeit. Tāpēc PTR arrow vecums ir tikai tāds pats kā * ptr.age. Tagad tas ir kaut kas jums ir iegaumēt un atcerēties. Tu lieto to daudz kas pset6, Pareizrakstības PSET. Bet tas ir faktiski, kas notiek par zem motora pārsega. Tas dereferencing rādītāju un pēc tam piekļūt. Jautājums? Mērķauditorija: [nedzirdama]. R.J. Aquino: Tad kāpēc mēs, izmantojot norādes, kā structs vietā structs sevi? Iemesls varētu būt, ja jūs iet struktūrai uz funkciju, jūs, iespējams, vēlas, lai iet apkārt tikai 4 vai tik baiti, kas pārstāv rādītāju, kā Atšķirībā no potenciāli 30 vai 40 baiti, kas ir struktūrai. Tā iet kaut uz funkciju ir vieglāk, ja lieta ir mazāks īss. Jautājums? Mērķauditorija: Jūs, iespējams, ir minēts šajā sākumā, bet ir tur citi slaidi augšu uz [dzirdams]? R.J. Aquino: Šie slaidi būs sagatavots pēc pārskatīšanas sesijas. Mēs pēc tās tīmekļa vietnē. Tā pārvietojas uz un pārvietojas uz nedaudz ātrāk, mēs nokļūsim līdz runāt par datiem struktūras. Tur ir daudz. Mēs uz ķekars no tiem. Lūk, ko jums vajadzētu saprast par datu struktūru. Jums patiešām vajadzētu saprast, pie augsta līmenī, ko katrs struktūra. Vai jūs varat paskaidrot angļu Jūsu draugs, kas nav veikusi CS50 kā mēs organizēt savus datus, un tāpēc mēs gribētu var izmantot kaut ko šādā veidā? Tas ir lieta, viens. Lieta divi, saprast īstenošanu. Tātad, saprast, kā izmantot šīs lietas C. Un mēs iet pār to. Un tad lieta trīs būtu zināt palaist reizes un ierobežojumi dažādas struktūras, jūs izmantojat. Tātad, saprast, kāpēc jūs varētu izmantot hash tabulu, nevis masīva. Saprast, kā ātri, vidēji piekļūt hash tabulu ir. Saprast, ko operācijas ātri uz saistīts saraksts, bet lēni par masīvu un vice versa. Tātad, lai saprastu, ka jums ir saprotu, Big-O notācija tikai zināt Kā runāt par šiem veidu lietas. Un mēs runājam par to. Tātad pirmā lieta, kas saistīta sarakstus. Šeit ir augsta līmeņa attēlu gada saistītajā sarakstā. Mēs parādīsim to klasē. Mums parasti ir 10 cilvēki stāvot uz skatuves. Bet mums ir virkne mezglu, kur katrai mezgls ir kāda vērtība un rādītāju lai tās nākamajā vērtību. Tātad, lai nokļūtu no viena mezgla uz nākamo, jūs tikai teikt, dod man nākamo mezglu. Jums ir, ka mezglā. Dodiet man nākamo mezglu. Jums ir, ka mezglā. Iedodiet man nākamo mezglu un tā tālāk kamēr nav mezglā kreisi. Tā turpināt runāt par tā augstā līmenī. Tas ir ļoti viegli ievietot lietas uz saistītajā sarakstā. Ja Jums nav jārūpējas par to, lai, jūs varat piliens to labi sākumā. Tas ir nemainīgs laika. Bet tas ir grūti atrast kādu vērtību. Ja jūs mēģināt jautāt, ir septiņi manā sarakstā? Jums ir jāiet cauri katru vērtību. Tas ir septiņi? Tas ir septiņi? Tas ir septiņi? Tas ir septiņi? Atkal un atkal. Un tas ir O (n). Tātad, ja mācās par viktorīnu, salīdzināt to ar masīviem. Vai tas ir OK? Gaismas devās blāvs. OK. Ja ir saistīts saraksts labāk? Ja ir masīvs labāks? Tātad, pieņemsim apskatīt dažas kodu. Šeit ir potenciāls mezglā. Tā struktūrai. Tas ir int n, kas būs mūsu vērtība. Un tas ir struct mezglā * blakus, kas ir mūsu rādītājs uz nākamo mezglu. Tāpēc šeit mēs varam redzēt, ka mēs noticis , ir likts int mūsu mezglā. Bet, ja tas būtu saistīts saraksts char Pagaidām vai saistīts saraksts pludiņiem, mēs pilnīgi varētu darīt, ka pārāk. Atceros pset6, jūs, iespējams, bija saistīts saraksts rakstur zvaigznes vai tikai statiskā char masīvi. Apskatīsim šeit operācijas. Tāpēc mēs vēlamies, lai ievietotu jaunu n mūsu saistīts sarakstā. Mēs sākt ar galvu rādītāju, kas ir rādītāju uz šo mezglu, kas ir no n vērtības un tuvāko rādītājs, kas norāda uz šajā mezglā ir vērtība n un tuvākā null, jo tas ir pēdējais mezgls. Tā interesēs laika, es gribu nodot visu kodu uz ekrāna. Un mēs staigāt pa to dažas līnijas vienlaicīgi. Tātad, šeit ir kods. Es ceru, ka tas ir lasāms. Pirmā lieta, ko mēs darām, ir mēs malloc jaunu mezglu. Tātad, tas padara rādītāju uz jaunu mezglu, kas nav gluži ir kaut kas noteikti up to vēl. Mēs pārliecinieties, ka jaunā mezglu nav null. Pretējā gadījumā mums ir atdot. Tā ir pārbaudīts, ka mēs tagad noteiktas vērtības, kas mezglā. Tāpēc mēs uzdodam jauno n mūsu n laukā. Un mēs, kas nākamo rādītāju, lai norādītu oriģināls galvu, lai mēs varētu Tagad ir ievietota šī mezglu mūsu sarakstā. Visbeidzot, mums ir pasaules galvas punktu mūsu jauno mezglu, lai gadījumā, ja mēs būtu sākas galvā, mēs varētu būt šīs jaunu pirmo mezgla vietā vecais pirmās mezglā. Un, kad šī funkcija izejām, mainīgais jaunu mezglu vairs nepastāv, jo tas bija vietējā funkcijai. Tātad tas ir valsts pasaulē. Mūsu pasaules galvenais norāda uz mūsu jauno Pirmais mezglā, kas norāda uz mūsu oriģināla pirmās mezglā, kas punkti uz mezglu pēc tam. Tas bija ievietošanas. Es ceru, ka bija samērā vienkārši sekot. Ja šaubāties, uzzīmēt attēlu. Tāpēc es uzskatu, ka runājot par saistīti saraksti un meklē kods ir ļoti neder. Bet apskatot priekšstatu par saistīts saraksts ļauj man domāt, oh, tāpēc Man ir šī mezglā šeit. Bet, ja es mainīšu šo rādītāju, tas beidzas līdz atvienots. Un es esmu aizmirsis, kur mezglu iet. Un kodu izejām. Un jums ir vairākas mezglu kas tiek atvienoti. Un jums nav galu galā ar sarakstu, kuru vēlaties. Tātad, ja jūs izdarīt attēlu un darīt to soli pa solim, cerams, jūs redzēsiet pareizu lietu kārtību attiecībā uz atjaunināšanu norādes, lai pārliecinātos, ka ka sarakstā nāk kopā. Ieliktnis ir salīdzinoši vienkārša. Sarežģītāka viens varētu būt ievietošanai sakārtoti sarakstā. Sarežģītāks uzdevums ir izdzēst un atrast, lai skatoties caur saraksta redzēt, ja kaut kas ir tur. Varbūt jūs to pset6 kad jūs iekāpa savā hash tabulu, un jūs teicāt, labi, ir vārds ābolu manā saistīta sarakstā? Tātad, jums var jau to ir izdarījušas. Bet noteikti, atsvaidzināt savu atmiņu un mēģināt reimplement atrastu un reimplement izdzēst par saistītajā sarakstā. Jautri sānu piezīmi, tur arī divkārt saistīts sarakstus, kur jums ir norādes, kas norāda gan uz priekšu un atpakaļ, lai jūs varētu doties uz blakus mezglu un iepriekšējā mezglu. Un tur bija jautājums par pagājušā gada viktorīna šāda veida, runājot aptuveni divkārt saistīts sarakstus. Tagad tas ir struktūra, kas tu esi diezgan pazīstami ar, jo lielākā daļa no jums, iespējams, izmanto tos pset6. Lūk, viens, kas ir nedaudz mazāk pazīstami. Kā pusē piezīmi, es domāju, ka Quiz 1 ir galvenokārt grūtāk nekā Viktorīna 0, jo sīkumi jūs darāt, jūs nav darīts tik daudz. Likt, ka citu ceļu, lai Viktorīna 0, jums bija uzrakstījis daudz C Un mēs jautāja jums par C. Quiz 1, mēs esam gatavojas lūgt jums par PHP un JavaScript, kas jums nav rakstīts kā daudz. Mēs ejam, lai jums jautāt par C-kodu, Jums nav uzrakstījis tik daudz, šis modernais C sīkumi. Tāpēc noteikti, praksē stuff mēs runāja par lekciju, kas jums ne vienmēr darīt uz problēmu komplektu. Runājot par kuru, jums nav rakstīts kaudze uz problēmu komplektu. Bet tas bija lekciju. Šeit ir augsta līmeņa attēlu skursteņi, ka mēs parādīsim katru gadu. Tas ir kaudze paletes Mather ēdamzāle. Augstā līmenī, skursteņi ir pēdējais iekšā, pirmais ārā datu struktūra. Tas nozīmē, ka jūs gatavojas nodot lietas - 1, 3, 7, 12, 14, negatīvi 0. Viena lieta, ko es nevarētu būt teica - negatīvs 3, 0. Jūs nodot visas šīs lietas iekšā Un pēdējais jums īstenot, ir pirmais viens, kas gatavojas iznākt. Tāpēc jums ir divas darbības - push un pop. Visi liekot, ka man bija žestu, piemēram, tas ir push. Un tad, kad es sasniegs līdz grab kaut vai sasniedz uz augšu sagrābt kaut kas, kas ir pop. Tāpēc mēs esam gatavojas īstenot skursteņi. Un mēs parādīja tos lekciju izmantojot bloki. Bet jūs varētu darīt to izmantojot saistītos sarakstus. Kaudze ir konceptuāls datu struktūra, nepatīk īstenošanai-specifisks. Tātad, ko tas var izskatīties? Tas izskatās kaut kas līdzīgs šim. Jūs ir veselu izmēru. Un jūs ir vērtību masīvu, kas mēs aicinām paplātes, jo tas ir kāda aina bija mums - int paplātes - un pēc tam daži maksimālo jaudu. Tātad, kas liktu izskatās? Nu, ja mums ir kaudze s, tad spiediet kaut kas uz s, mēs iegūtu lielums s. Un tas būtu nākamais atvērt vietas mūsu masīvs. Tātad, ja mums ir trīs lietas, kas mūsu steku, tad paplātes 3 būtu nākamais open spot, jo 0, 1, un 2 jau ir piepildītas. Tāpēc mēs ieliekam vērtību uz s.trays [s.size], trešās vietas. Un tad mēs solis s.size teikt, hey, mums bija trīs lietas, pirms. Tagad mums ir četri. Tāpēc nākamreiz, kad jūs push, jūs esat gatavojas nodot kaut uz 4. Vai nākamreiz pop, jūs gatavojas apskatīt 4 3 vietā vai neatkarīgi. Un tad mēs atgrieztos uzticīgi teiksim, hey, mums izdevās. Tas strādāja. Kā noteikums īkšķis, ja funkcija, kas ir vajadzēja atgriezties true vai viltus vienmēr atgriež taisnība, jūs varat ir darījuši kaut ko nepareizi. Tātad tas darbojas? Nu, tas darbojas naudas sodu par 1, un 2 un 3, un 4, un pieci. Bet pieņemsim, ka es sasniegt savu jaudu. Esmu tad uzskriet problēmas, jo ja izmērs ir tāds pats kā jaudu, Es tagad mēģina kaut ko uz masīvs, kur man nav vietas. Tik īsu pārbaudi, lai noteiktu to. Ja s.size == JAUDA, atgriezties viltus. Pretējā gadījumā, iet un darīt to, ko mēs darījām. Tātad, ko vēl mēs varētu lūgt jau apmēram skursteņi? Ko vēl vajadzētu mācīties? Ko vēl vajadzētu nodarboties? Nu, īstenojot pop. Mums jau bija push. Es noteikt to. Nav masīvs īstenošanu, kurā Jūs izmantojat saistīts saraksts, iespējams. Nav int īstenošanu. Mēs to darījām Ints šeit. Bet tas varētu būt bijis pludiņi. Es varētu būt bijis stīgas. Tas varētu būt bijis char zvaigznes. Paskaties pēdējos viktorīnas no veidiem jautājumi, mēs esam jautāja par skursteņi. Es saku, ka mēs uz skursteņi apkārt tāds pats kā mēs esam uz tās gadus iepriekš. Tātad viktorīna jautājumi būtu būt labs rādītājs. Virzās uz priekšu vēl ātrāk, rindas. Viņi, piemēram, skursteņi. Bet viņi pirmais iekšā, pirmais ārā. Ja jūs esat Lielbritānijas, vārdu rindā iespējams, veikusi daudz nozīmē jums. Pretējā gadījumā jums var būt dzirdējuši par to kā līniju. Viņi strādā kā līnijas pie Apple veikala. Pirmā persona, lai parādās pie 03:00 no rīta, ir pirmais personai iegādāties savu iPad. Tātad mums ir divas operācijas - Enqueue un dequeue. Enqueue liek kāds līniju. Dequeue velk pirmais persona off līnijas. Atgādināsim, ka mēs varam īstenot to ar masīvu. Tātad, kas ir struktūrai mums parādīja lekciju? Tas bija tas viens. Atkal, skaitļi. Atkal, lielumu un šī jaunā lieta front. Kāpēc ir kaut kas ko sauc front? Tas ir indekss nākamā elements dequeue. Tas ir tikai iekšēji sekotu pirmais puisis, kas parādās, lai mēs var pull it out, kad mums ir nepieciešams. Noteikti apskatīt lekciju piezīmes un mēģināt īstenot Enqueue un dequeue pētot uz viktorīnas. Svarīgas lietas, kas domā par. Iesaiņošana apkārt, ja priekšējā plus izmērs nonāks lielāks nekā jaudas. Atkal, ja jūsu struktūra ir pilna, jūs gatavojas ir problēma. Hash tabulas esat redzējis. Lielākā daļa no jums, iespējams, īsteno šo par pset6. Tā ir struktūra, kas tiecas uz O (1) konstantā ievietošanas un O (1) nemainīgs laiku lookup. In CS50, mēs īstenojām to kā masīvs saistītas sarakstiem. Galvenais elements, lai hash tabulu ir hash funkciju. Tātad, tas pārveido jūsu ieguldījumu, teiksim, vārdnīca vārdu, uz numuru, kas būs mūsu indeksu. Un mēs izmantot šo indeksu mūsu masīvs. Tātad, šeit ir cute maz attēlu No study.50.net. Mēs mest visus vārdus mūsu hash funkciju. Un hash funkcija stāsta kur likt šos vārdus. Tas viss ir liels zemes, kur tur ir tikai viens vārds par katru slota. Bet kā jūs atceraties no pset6, tur ir vairāk vārdu nekā slots. Tātad, kas notiek, ja jūs saņemt sadursmes? Tā vietā, lai uzglabātu vienu vērtību, teiksim, hash 3 tabulu, uzglabāt saistīts saraksts. Un tā vietā, kantalupe šeit jums būs saistīts saraksts, kur pirmais mezgls ir cantaloupe. Un nākamais mezgls ir kaķis. Un trešais mezgls ir sadursme, pieņemsim saka, jo visi šie vārdi sākas ar C. Tātad, lielākā daļa no jums bija šis pset6. Ja jums nav darīt hash tabulu pset6 un esat mēģinājuši kaut ko līdzīgu trie, noteikti jāpārskata hash tabulas. Ja jūs darīt to pset6, noteikti pārskatīt hash tabulas. Un, ja jūs to pset6, un tā nav izstrādāt taisnība un jums bija daudz problēmas ar to, noteikti pārskatīt hash tabulas. Tā mācība tiešām ir noteikti pārskatīt hash tabulas. Lielākā minoritāte no jums mēģināja kas mēģina uz pset6. Augsta līmeņa attēlu. Tas ir kaut kas līdzīgs šim, kur katra mezgls ir kopums bērniem, kur katrs bērns atbilst vēstuli. Un katru mezglu arī saka, hey, es esmu vārdu. Tātad šajā gadījumā, vārdu Maxwell, ja jums sekot M līdz A līdz X-W-A-L-L, un pēc tam tas vēl vienu. Un jūs saņemt šo simbolu, Delta, kas mēs neizsaka nozīmē tas ir vārds. Tāpēc Maxwell ir vārds. Šīs deltas ir visā iezīmējot kuras lietas ir vārdi un kuri lietas nav. Tātad pset6, datus mēs glabāti līdzās kāds no mūsu punktiem bija "Es esmu vārdu. "Un cool lieta par mēģina ir tie liecina ievietošanu un lookup O (garuma vārda). Tik vienkārši, lai saņemtu ar Maxwell, tas ir M-A-X-W-A-L-L. Tātad, septiņi vai astoņi - Es nevaru rēķināties - soļi, lai nokļūt līdz beigām un pārbaudīt lietas. Tik ātri īstenošana šeit. Rob pārdzīvoja saistīts uzskaitīt viņa līķa sekcija. Lai pārbaudītu, ka out. Piedodiet. Pārdzīvoja Trie viņa līķa sekcija. Lai pārbaudītu, ka out. Bet jūs būtībā ir katrs mezgls ir 27 norādes uz nākamo mezglu un viens Būla lai es esmu vārdu. Pārbaudiet Rob līķa sekcija, cik tas patiesībā ir īstenots. Mūsu gala struktūru, mūsu koki un bināro meklēšanas koku. Tātad, aplūkojot tos, tie tika ietverti pavisam nesen nedēļa 8, pirmdiena. Koks ir līdzīgs Trie, izņemot tevi ne vienmēr ir 27 mezgli pie katrs punkts. Un jums nav šos datus katrā solis, kas nozīmē, vai - ceļš nav nozīmes. Tā trie, ceļš no augšas uz apakšas, Maxwell, bija svarīgi, lai mums. Bet katrs mezgls ir vairākas bērni, varbūt. Mums ir dažas vairāk vārdu krājumu. Koka saknes ir pašā augšā. Un mēs sakām, ka ļoti viszemākais mezglu, kas ir ne bērni ir lapas. Tā kā Trie, koks ir struktūra mezgliem. Sastopamā koku veida, ka mēs ejam runāt, ir bināro koku, kur katrs mezgls nav bērnu vai viens bērns vai divi bērni. Tātad, šī aina šeit nav bināro koku, jo mezglu 3 ir trīs bērni. Bet, ja mēs ignorēt tos, pārējo no tā ir bināro koku, jo tas parāda īpašumu, katra mezgla ir nulle, viens vai divi bērni. Tātad, kā mēs varētu paust šo kodu? Mēs varētu būt mezglu, kurā katrs mezgls ir integer iekšpusē tā, kā arī kā rādītājs uz koku pa kreisi un rādītāju uz koku uz labi, tāpēc abiem bērniem. Kā tas ir lietderīgi? Nu, ja mēs noteikumus par to, kur mēs likts mezglus, mēs varam padarīt meklēšanu ātrāk. Tātad tur ir jēdziens bināro meklēšanu koku, kur visi mezgli atstāja subtree ir mazāka vērtība nekā mezglu mēs meklējam. Un visi mezgli labajā apakškoka ir lielāka vērtība kā root mezglā. Tagad tas izskatās daudz vārdu. Es esmu gatavojas nodot to iekšpusē dubultā citātus un parādīs attēlu. Tātad, šeit ir piemērs bināro meklēšanas koku. Redzēt, ka mēs sākam ar 10. Viss pa kreisi 10, ir mazāks par to. Un viss pa labi ir lielāks par to. Bet vairāk nekā, ka katrs mezgls koks izsaka šo īpašumu. Tāpēc mezglu 7 ir 3 līdz kreisās un 9 pa labi. Tātad, visi no tiem ir mazāks nekā 10. Bet meklē tikai tiem, 7 ir 3 tā pa kreisi un 9 līdz tās tiesības. Un tāpat labajā pusē, 15, ir 14 lai tā pa kreisi un 50, lai tā labi. Tātad trīs mezglus tur, 15, 14, un 50, ir arī derīga bināro koku vai derīga bināro meklēšanas koku. Un viņi visi ir lielāks nekā 10. Tāpēc tie ir atļauts būt par turpat. Vai ir jautājums? Mērķauditorija: Kā jūs tiekat galā, kad Jums ir divi Sevens? R.J. Aquino: Jā. Kā jūs tiekat galā ar diviem lielumiem , kas ir vienādi? Daži bināro meklēšanas koku teikt, ka jums ignorēt dublikātus, jo mērķis ir tikai teikt, es esmu redzējis šīs lietas līdz šim. Daži bināro meklēšanas koku jūs varētu teikt ir skaits iekšpusē mezglā. Citi varētu teikt, ka viss kreisā ir mazāks par vai vienāds ar. Un viss pa labi ir lielāks nekā. Tas vienkārši ir atkarīgs no tā, ko Problēma ir tā, jūs esat atrisināt. Tātad vārdnīcu, piemēram, jūs nebūtu rūp dublikātus. Jūs varētu mest ārā. Bet kāda cita problēma, jūs varētu rūpēties. Mērķauditorija: Vai ir iespējams, ka 1 pa kreisi 15, kas ir mazāks nekā 10? R.J. Aquino: Nē. Ja 14 šeit ir 1, tas nav derīgs bināro meklēšanas koku, jo viss uz tiesībām 10 ir būt lielāks par to. Un mēs redzēsim, kāpēc. Ja zemes meklējumos mans mērķis ir atrast 14, es sāku pie saknes. Tāpēc es izskatos. OK. Mēs ejam, lai sāktu pie saknes. Paskaties 10. Nu, 14, mūsu mērķis, ir lielāks nekā 10. Tātad tas ir labajā pusē. Tas ir ļoti līdzīgs visai telefonu grāmata, ko mēs darījām, bināro meklēt tur. Bet tā vietā bināro meklēšanu masīva, mēs esam binārais meklējot šo koku. Tāpēc mēs joprojām meklējam 14. Nu, 14, ir mazāks nekā 15. Tātad, ja tas ir mūsu koku, tai jābūt būt šajā jomā šeit. Tai jābūt tiesībām uz 10 un pa kreisi 15. Un tā mēs pārbaudām šo mezglu. Un Yay, mēs esam atraduši 14. Es neesmu gatavojas iet caur to. Bet šeit ir kods. Tas ir tiešām diezgan vienkārši, jo tas ir rekursīvs. Ko mēs varētu lūgt jums to darīt uz viktorīnu? Mēs varētu lūgt jums rakstīt šo kodu. Mēs varētu lūgt jums apskatīt šo kodu un mainīt šo kodu, un paskaidrot, ko tā dara. Jā. Jautājums? Mērķauditorija: Vai šie slaidi būs pieejami, jo tie bija pēdējo reizi? R.J. Aquino: Jā. Tātad šie slaidi noteikti būs ievietojis. Mērķauditorija: Viņi tiešām ievietojis tagad mājas lapā. David vienkārši darīja to. R.J. Aquino: Slaidi ir tagad mājas lapā. Es droši vien aizlāpīt pāris par typos es ievēroju un noteikt tiem. Bet tur ir pašreizējā versija uz vietas. Citas lietas, ko mēs varētu lūgt, lai jūs darīt - rakstīt ievietot. Rakstīt atkārtošanas versiju rekursīvas funkcijas mēs tikko parādīja jums vai runāt par šīm lietām, tāpat kā punkts, vārdos, teikumos. Salīdzinot palaist laiku un izskaidrojot ko jūs vēlaties izmantot bināro meklēšana koku vietā hash tabulu, piemēram. Tāpēc saprotu šīs struktūras pie diezgan dziļā līmenī. Saprast, kā rakstīt tos, kā izmantot tos, kā runāt par tiem. Un jūs visu komplektu. Jautājums? Mērķauditorija: Kad esat rakstiski bināro meklēšanas koku, kā jūs noteikt, kāda vērtību padara to par saknes? R.J. Aquino: Tātad jautājums ir, ko vērtība, jūs darīt, jo saknes? Atkarībā no jūsu kodu, jūs var būt globāla saknes. Tātad, jums var būt iespējams, bija pset6 globāla hash tabulu. Vai jūs varētu pāriet saknes kas kā argumentu. Tāpēc šis meklēšanas funkcija šeit ņem argumentu mezglu *. Un tā kāds mezgla tev gadās būt meklē ir viens jūs ārstē kā jūsu saknes, kad jūs nodot to collas Un es esmu visu komplektu. Tās ir manas slaidi. Nākamais cilvēks var nākt swap ar portatīvo datoru un mikrofonu. ROB BOWDEN: Es domāju, ka es varētu būt interpretēja šo jautājumu savādāk. Bet es interpretē to kā, ja jums ir skaitļus 1, 2 un 3, kā mēs jāzina, lai padarītu 2 saknes pretstatā 1 vai 3? Ja mēs 2 saknes, tad tas ir labi 1 un 3 pa kreisi un pa labi. Bet, ja 1 ir sakne, tad tas ir 1 top, 2 labi, 3 pa labi. Tātad pēc noklusējuma, jūs nezināt ko darīt saknes. Un jebkura algoritmu mēs sagaidām, lai dot jums, tikai pirmā lieta, jūs ieliktnis būtu saknes. Vai mēs gribētu jums bināro koku, kas jau pastāv, ka ir saknes. Bet citi algoritmi pastāv tāds, ka saknes atjauninās, lai gadījumā, ja jums nonākt situācijā, kur tas ir 1, 2, 3, tas automātiski atjaunināt veikt 2 jauno saknes, lai tas joprojām ir labi līdzsvaroti. ANGELA LI: Cool. Hei, puiši. Es esmu Angela. Un es esmu gatavojas, lai pabeigtu pie mūsu C un tad doties uz kādu no mūsu mājas tehnoloģijas - HTTP, HTML un CSS. Tātad pirmā lieta ir buferis pārpildes uzbrukumiem. Tātad, pieņemsim to apskatīt šo kodu. Tas ir diezgan vienkārši. Tur ir funkcija foo. Un tas neatgriežas neko. Bet tas notiek tādā rādītājs uz virkni sauc bar. Un tas notiek, to paziņot buferis, kas ir raksturs masīvs, kas ir 12 slots. Un tā izmanto memcpy, kas ir tikai funkcija, kas kopijas no vienas adreses uz citu. Tātad šis mēģina iekopēt mūsu bufera no jebkādiem josla ir vērsta uz. Tātad, kāda ideja, ko es daru nepareizi ar šo kodu? Mērķauditorija: Ja josla ir garāks par C, tie tiks pārrakstīta. ANGELA LI: Jā, tieši tā. Mums nav nekādu garantiju, ka bar būs mazāks par 12 gadiem. Mēs tikko veikts kādu patvaļīgu skaitu 12. Un mēs bijām kā, pieņemsim ceram, ka Mūsu lietotāja ievadi ir mazāks nekā 12 rakstzīmes garš. Tātad, ideālā pasaulē, ja mūsu ieguldījums ir vienmēr kā plānots, tad mēs iegūtu kaut kas līdzīgs, sveiki. Tas ir mazāk nekā 12 rakstzīmes. Tas izpaužas lasīt uz char c. Un tad mēs kaut ko darīt ar to. Tas nav īsti jautājums. Bet ļaunprātīgs cilvēks varētu darīt kaut ko vairāk, piemēram, tas, kur viņi dod mums kāds josla ir vērsta uz, tas notiek, lai norādītu uz šo milzīgo masīva vienkārši s. Un tas ir veids, kā ilgāks par 12 gadiem. Tātad, tas notiek, lai iet visu ceļu noteikti šeit, kur atdeve adrese, ko izmanto, lai būtu. Tātad pieņemsim, ka šo funkciju sauc foo. Varbūt foo sauca kādu citu funkcija, kuru sauca par galveno. Tātad, ja foo darbojas, tai ir zināt, kur atgriezties. Ja foo sauca kādu funkciju nosaukts baz, tas ir zināt, ka tas ir got, lai dotos atpakaļ uz Baz. Un tas ir, ko tas atpakaļadresi noteikti šeit ir stāsta mums. Bet, ja mēs pārrakstīt to ar kādu citu adrese, šajā gadījumā tas ir pārstāvniecība adresē Pašā sākumā šo buferi, tad to, kas patiesībā notiek varētu notikt ir tas, ka tā vietā, lai atgriežoties Baz, kuru sauc par mūsu darbību, tas ir tikai kas iet uz priekšu ar šo kodu. Un, ja tas bija tur, jo ļaunprātīgs hakeris dude nāca un injicējis šo, tad varbūt šī summa no s nav faktiski ir. Un tas ir faktiski tikai kodu, kas pārtraukumus datoru vai kaut ko. Tātad, lai būtu aizsardzības par šāda veida lieta, jums ir nekad pieņemt, ka lietotāja ievade ir zināma daudzums rakstzīmes. Piemēram, ja jūs darījāt Pareizrakstības, jūs esat teicis, ka vārdi bija tikai būs 40 rakstzīmes ilgi maksimums. Un tas bija labs. Bet, ja ne, tad jums būs pārliecinieties, lai tikai lasīt 45 zīmes vienlaicīgi. Pretējā gadījumā jūs varētu pārrakstīt Jūsu buferis. Kādi jautājumi par to. Jā. Mērķauditorija: Vai jūs vienkārši runāt nedaudz vairāk par šo? ANGELA LI: Sorry. Jā. Mērķauditorija: mic ir tikai video. Es centīšos un projekts. Hi, guys. Sup? Tātad, pieņemsim iet pāri dažas lietas CS50 bibliotēka, kas jūs esat, izmantojot visi semestris, galvenokārt saņemt lietotāja ievadi. Kā jūs zināt, jūs iekļaut CS50 bibliotēka, tikai darot CS50.h, kas satur visus prototipus funkcijas, ko varat izmantot, piemēram, GetString un GetInt, un GetFloat, uc. Un tur tas ir viens līnija CS50 bibliotēka, kas definē virkni, kas jūs guys visi zinām, ko tagad ir tikai char *. Bet pieņemsim palūrēt kā GetString darbi. Tas ir ļoti saīsinātā versija. Jūs varat uzvilkt CS50 bibliotēkas failus no, manuprāt, manuals.CS50.net. Un jūs varat izlasīt faktisko funkciju. Bet tas attiecas uz dažām svarīgas detaļas. Tāpēc mēs esam izveidojuši dažus buferi ar kādu jaudu. Un tas, ko mēs darām, ir mēs saņemam vienu rakstzīmi laikā no standarta n. Tas ir, ja lietotājs izejvielas tekstu konsole. Un tāpēc mēs esam gatavojas lasīt raksturs, ja vien tas nav jauns līniju, un tas nav beigām failu, kuru ir beigas standarta ievades. Un par katru rakstzīmi, ka mēs to lasot, ja šis raksturs nonāks pievienojot uz zīmju skaitu mēs esam lasīt in, un kas ir vairāk nekā mūsu spējas, tad ko mēs darām, ir, mēs vienkārši mainīt mūsu buffer tā, ka tas ir divreiz tik ilgi. Tātad vēlreiz, tas aizsargā pret buferi pārpildes uzbrukumiem, jo ​​jūs lasot rakstzīmju laikā. Un, ja kādā brīdī jūs lasīt pārāk daudz, jūs vienkārši paplašināt savu buferi. Jūs reizināt to ar divi. Un tad jums ir vairāk vietas. Pretējā gadījumā jūs vienkārši pievienot raksturs buferis. Un pēc tam, kad esat lasīt visu rakstzīmes, tas saruks buferi atpakaļ uz leju, lai normāla izmēra, pievienojiet null terminator, un pēc tam atgriezties. Tagad aplūkosim GetInt. Vai jūs guys izlasīt šo? Es varu tuvinātu mazliet. Es nezinu, kā datori strādā. Nekas. Es nevaru tuvinātu pareizi. Tas ir patiešām grūti. Piedod. Pieņemsim tikai apskatīt šo. Tātad, ko GetInt tas ir tas pirmais lasījuši virknē no GetString, kas mēs esam īstenots pirms tam. Un svarīga daļa atzīmēt, šeit ir, ja šādam dalījumam, ka tas beidzas līdz lasījums ir kā faktiski nav virknes, tad mēs vienkārši atgriezties INT_MAX pie pārstāvēt neveiksmes. Kāpēc mēs atgriežamies INT_MAX vietā Negatīvā 1 vai 1? Jebkuras idejas? Mērķauditorija: [dzirdams] negatīvs 1 par vienu. ANGELA LI: Jā, tieši tā. Tātad jūs esat daudz vairāk varētu vienkārši vēlaties ievadi 1 vai negatīvo 1, kad tiek prasīts par n un neatkarīgi n Maxes. Tas ir milzīgs. Jūs, iespējams, nav gatavojas to izmantot. Tātad tas ir kā dizaina lēmums pārliecinieties, ka jums nav nejauši atpakaļ kļūda vai arī jums nav atgriezties 1, kas varētu būt analizēts kā pareizo atbildi. Tātad, ja līnijas nav, mēs atgriežamies INT-MAX. Pretējā gadījumā mēs izmantojam sscanf, kas ir kā scanf. Bet tas skan no virknes. Un mums ir šī formatēta virkne, kas ir% i% c. Un mēs cenšamies un saskaņot, ka ar neatkarīgi no lietotāja mums deva. Mēs vēlamies skaitu saskaņoto lietas ir 1, kas nozīmē, ka tikai patiešām vēlaties, lai atbilstu veselam skaitlim ieskauj varbūt balta telpas, varbūt ne. Šajā gadījumā, ja jūs nodot kaut ko piemēram, bārs neatbilst vispār, jo tur ir jābūt integer sākumā. Tāpēc sscan nekad pagriezās 0. Tātad jums nav atgriezties to. Alternatīvi, ja jūs nodot kaut ko , piemēram, 1, 2, 3, A, B, C, kas atbilst gan vesels skaitlis, bet arī raksturu pēc tā. Tāpēc sscanf atgriezīsies 2, kas arī nav ideāls. Nevēlaties 1, 2, 3,, B, C, ir iedarbīgs int. Lai arī nedarbojas. Bet saku jums īstenot kaut ko līdzīgu 50. Ka tiks atrasti% i, kas nozīmē, tā kļūs nolasīt n. Un tagad, n satur skaitli 50. Un tad jūs varat atgriezties to. Pretējā gadījumā jūs hit Mēģināt vēlreiz. Un tad tikai iet atkal, līdz Jūs saņemsiet pienācīgu atdevi no lietotāja. Kādi jautājumi par šo? Mērķauditorija: Tātad, ja jums bija izdrukāt vērtība GetInt par [dzirdams] tas būtu tikai skaitlim un maks? ANGELA LI: Jā. Tātad, ja jūs izmantojat GetInt, jums vajadzētu pieņemt, ka jūs nevēlaties, n-max līdz ir derīgs ieguldījums, jo jūs gatavojas pieņemt, ka tas bija slikti. Mērķauditorija: Ja mums nebūtu char c un kāds ievietot 1, 2, 3, Sam, vai tas joprojām strādā 1, 2, 3? ANGELA LI: Es domāju, ka tas varētu strādāt. Bet jūs nevēlaties 123Sam lai derīgam input lietotājs. Tas nav īsti int. Tātad tas nešķiet godīgi izanalizēt to kā int. OK. Tādā gadījumā, pieņemsim pāriet uz internetu. Tāpēc HTTP nav valoda. HTTP ir tikai standartu kopumu, lai kā jūs nosūtīt lietām no klientiem, tas ir jums, lai serveriem. Tas ir citi cilvēki tīmeklī. Tāpēc HTTP apzīmē hiperteksta Pārsūtīšanas protokols. Tā ir sirds un dvēsele no visa interneta. Hiperteksta daļa tikko atsaucas uz HTML. Nodošana ir klienti, piemēram, jūs nosūtīs pieprasījumus serveri, kas sniedz atbildes. Un protokols ir vienkārši, kā darīt jūs sagaida serveris izturēties? Un kā jūs vajadzēja uzvesties piemēram, ka jūs varat racionalizēt šo komunikācijas process? Tāpēc HTTP pieprasījumus izskatās daudz, piemēram, šis. GET ir pieprasījuma veids. Jums puiši ir redzējuši GET pieprasījumus un POST pieprasījumus. Ka Otrā lieta ir, / me, tas ir tikai URI vai URL, kur jūs gribu iet ietvaros uzņēmējas. Tāpēc šo prasību lūdz lapas, piemēram, www.facebook.com / man. Un tas ir GET pieprasījumu. Un tad tas HTTP/1.1, tas ir tikai versija HTTP jūs izmantojat. Tas ir gandrīz vienmēr ir 1,1. Un tad tur ir ķekars citas lietas too. Jūs faktiski var redzēt, šiem, ja jūs atvērt savu konsoli, kad esat pārlūkojot tīmekli. Atbildes meklēt kaut ko vairāk, kā šis. Augšējā daļa ir, atkal, HTTP veida jūs izmantojat kam seko statusa kodu. Tātad 200 OK ir viss izstrādāts. Šeit ir jūsu saturu. Jūsu saturs ir gatavojas sekot. Un tad tas jums pateiks, kāda veida Satura un citas lietas too. Statusa kodi, ir maz svarīgi tiem, kas jums būtu jāzina. 200 OK ir kā viss ir zelta. Viss strādā. 403 Aizliegts. Šī jūs droši vien esat redzējuši, ja tu aizmirsi pareizi chmod kaut ko. Tas nozīmē, ka jums nav atļaujas, lai piekļūt, ka uz serveri. Tas ir tāpat, nē, jūs nevarat redzēt. 404 nozīmē, ka lieta nav. Nav atrasts. Jūs, iespējams, esat redzējis, ka daudz. 500 Iekšējā servera kļūda parasti piemēram, kaut kas nogāja greizi uz pusi no servera. Tātad, kad jūs bijāt īstenojot pset7, ja jums bija PHP kļūdas, jūs varētu faktiski iet uz lapu un redzēt Visa ķekars PHP kļūdas sīkumi. Bet tas parasti nav notikt, tāpēc, ka tīmekļa vietnēs nav patiešām vēlaties pateikt, kāpēc viņu vietā tiek bojāta. Viņi droši vien tikai atpakaļ 500 Internal Server Error. Un tad tur ir 418 Esmu tējkanna. Tur ir viss stāsts par kāpēc tas ir lieta. Bet jūs varat lasīt par to, ka par savu laiku. Tur viss ķekars citi statusa kodus. Bet tie ir tie, Jums vajadzētu zināt. Tāpēc parunāsim par HTML. HTML, atcerieties, nav programmēšanas valodu. Tas ir iezīmēšanas valoda. Tas nozīmē, ka tas apraksta saturu. Tā stāsta jums to, ko HTML dokuments izskatās patīk vai ne, kā tas izskatās bet cik tas ir strukturēts. Tāpēc tas definē struktūru un semantika interneta lapas. Tas ir, piemēram, tas ir punkts. Tas ir pasūtīts saraksts. Tas ir kā sadaļā manu lapu. Šeit ir virsraksts. Tas sīkumi, piemēram, ka. Tas nav stils kādu no tā, ka ka tas, ko jūs darāt CSS. Un tas izskatās sēriju ligzdotu tagus. Tātad, lai izmantotu piemēru patiešām pamata HTML lapas, jums ir DOCTYPE deklarācija tur. Tas DOCTYPE deklarāciju sakot, mēs esam izmantojot HTML5. Tad jums ir liels HTML tagu. Tā satur galvu un ķermeni. Iekšpusē galvu, jums ir titulu. Tas ir tas, ko iet nosaukumā joslā pārlūkprogrammu. Mums ir saite tagu, kas saista ārējā stila lapas. Un tad mums ir skripts, kas velk no ārēja JavaScript kā arī. Un tad iekšpusē mūsu ķermenī ir faktiski kas izpaužas redzams lapā. Mēs esam ieguvuši punktu, un pēc tam attēlu iekšā šajā punktā. Tas viens ir priekšstatu par kaķēniem. Ievērojiet, ka attēls tag aizveras pati. Tā vietā atvērt ar attēlu un tad darot citu / attēlu, jūs tikai šo mazo slīpsvītru šeit, kas aizver to. Un attēla tagu ir arī šo taustiņu vērtība atribūts sauc alt. Tas ir alternatīvs teksts, notiek, kad jūs lidināties pār to. Lielākā daļa HTML elementiem ir dažas galvenās vērtības lietas, ko jūs varat dot to, dažādi pielāgošanu. Jā. Mērķauditorija: [nedzirdama]. ANGELA LI: Nu, tā tas ir atribūts tag. Tātad, ja jūs, izmantojot jQuery, jūs varētu do izvēlieties image.getAttribute. Un tad jūs varat meklēt saņemt alt atribūtu. Un tas dos jums kaķēni. Ja jūs atceraties formas HTML, ievadi elementi būs nosaukums atribūtus. Un tas, ko PHP izmanto, lai nosūtītu pieprasījumus, ja ir iesniegti veidlapu. Mērķauditorija: Vai jūs pieminēt kaut ko par to, kā tad, ja jūs izmantojat kittens.jpg vai kaut kas ir pazudis failu mapes vai citus failus? ANGELA LI: Jā. Tātad šis ir tas, ko sauc relatīvā ceļš, jo es neesmu dodot Jums pilnu ceļu. Tas ir tāpat, ja C, ja jūs fopen kādu failu, ja jums fopen hi.txt, ka hi.txt ir gaidāms, ka tas pats direktoriju, ja vien jūs arī tā vairāk sarežģīts ceļš. Mērķauditorija: Tātad, jūs varētu norādīt kura mape [dzirdams]? ANGELA LI: Jā. Un jūs varat meklēt, kā to izdarīt. Bet, ja es gribēju, lai saņemtu kittens.jpg out mātes direktorijā, es varētu darīt .. / Kittens.jpg. Jā. Piedodiet. Jā. Ak, cilvēks, es aizmirsu jautājumu. Kāds bija jautājums? Ak, jautājums bija ir, kittens.jpg sagaidāms, ka vienā un tajā pašā direktorijā? Un šajā gadījumā tā ir. Bet jūs varat arī piešķir tai noteiktu ceļu tāds, ka tas nav jābūt. Labs? CSS. Tātad CSS, piemēram, HTML, nav programmēšanas valodu. CSS ir tikai virkne veidošanas noteikumus. Tas nozīmē Cascading Style Sheets. Un jūs to izmantot kopā ar HTML, lai stila lapas. Tātad ir trīs veidi Jūs varat iekļaut to. Viens veids, kā jūs varat darīt, ir galvas daļa no jūsu HTML, jūs varat vienkārši atvērt stilu tagu un tad stick daži CSS noteikumi tur. Tas ir diezgan OK. Jā. Mērķauditorija: Vai jūs nodot tos style tagus starp, pieņemsim teiksim, ķermeņa un / body. Un tad jums būtu stils tikai organismā. ANGELA LI: Jūs varētu. Tā būs darbs. Bet jums nav, jo stils ir veida metadatu ka vajadzētu aiziet vadītājs dokumenta. Ķermenis patiešām vajadzētu būt tikai to, kas patiesībā notiek, lai parādīsies uz jūsu lapu. Mērķauditorija: Tātad jūs vēlaties nodot stilu galvu stilu Visa mājas lapā, vai ne? ANGELA LI: Jā. Tātad, liekot stilu šeit, šie CSS noteikumi kas attiecas uz visu lapā, pamatojoties uz to selektoru. Tātad labāks veids, kā to darīt, ir nevis Kam stils tagu galvu, jums ir šī saikne ar ārējo stilu loksne, piemēram, es parādīja jums Iepriekšējā piemērā. Kas tas ir tas mēģina un konstatē failu style.css un tad velk to in un izmanto, ka stilus lapā. Un jūsu style.css būtu tāpat izskatās šādi. Tas būtu tikai ķekars CSS. Un visbeidzot, tur ir vēl viens veids, kā jūs var ietvert CSS, kas jums patiešām nevajadzētu kādreiz darīt. Tas ir aicinājums inline stils. Un tāpēc jebkurš HTML elements var arī veikt stila atribūtu. Un tad šī stila atribūtu, Jūs varat arī tā CSS noteikumus. Tātad šajā gadījumā, lai kāds div es esmu nosakot tieši šeit, tas būs ir melna fona un balta teksta krāsa. Bet jums nevajadzētu darīt, jo tas, ko tas ir tas liek savu stilu iekšpusē jūsu HTML. Un es zinu, ka mēs esam runājuši par HTML ir struktūra un CSS ir stila. Ja jūs to izdarītu, tas maisījumi tos kopā. Un tas nav ļoti tīrs. Tāpēc nav darīt. Izmantojot piemēru CSS, tur augšā, mēs vienkārši izvēlieties ķermeni HTML dokumentālo. Un mēs esam līdzīgi, viss ir būs Comic Sans. Es arī nedomāju, iesaku. Bet jūs varētu darīt. Otrais noteikums tieši šeit, tas notiek , lai izvēlētos elementu par lapa ar ID maģistrāles. Tātad, neatkarīgi HTML elementu, es teicu ID = Galvenais, es esmu gatavojas sniegt, ka 20 pikseļu starpība un saskaņot visu, visu tekstu, uz centru. Pēdējā lieta, ko izvēlas ar CSS klasi. Tāpēc jebkurš elements uz lapu, kas man deva sadaļā klases, es esmu gatavojas darīt to fona krāsa gaiši zila. Yep. Tas ir viss, ko es saņēmu. Jautājums? Mērķauditorija: Kāda hashtag pirms galvenās darīt? ANGELA LI: Jautājums ir, ko dara hashtag pirms galveno uzdevumu? Šajā gadījumā, hash kas CSS ir izvēlieties pēc ID. Tātad, ja man bija daži HTML elements, piemēram, divid = galvenais, tas CSS noteikums izvēlas lieta ar ID maģistrāles. Un līdzīgi, periods priekšā sadaļa ir izvēlēties, ko CSS klasi vai atlasīt pēc HTML klasē. Mērķauditorija: Kāpēc ir ir pirms 6 fona krāsu? ANGELA LI: Jā. Tātad jautājums ir, kāpēc ir hash pirms 6? Tas ir savādāka nekā šī hash. Tas nozīmē, ka jūs dodot heksadecimālo krāsu. Tātad hex krāsu, tas tikai ir krāsu. Un atceraties RGB trīskāršojas, kad jūs Kriminālistikas PSET? Tas ir līdzīgi. Pirmie divi cipari ir cik daudz ir sarkanā krāsā. Otrais divi pārstāv cik zaļš. Un trešais apzīmē cik daudz zilā krāsā. Un hash tas notiek pārstāvēt krāsu. Lai kaut ko no 0, 0, 0, 0, 0, 0 līdz F, F, F, F, F, F ir derīga. Tas ir sava derīgs krāsa, kas var parādīt jūsu pārlūkprogrammā. Jautājums? Mērķauditorija: Kāda ir atšķirība starp izmantojot pēc ID un klases? ANGELA LI: Jautājums ir par to, kas ir starpība starp izmantojot ar ID un klases? Jums var būt tikai viens elements HTML dokuments, kas ir dota ID. Lai tikai viena lieta, par manu lapu ir atļauts turēt ID Main. Tātad jūs to izmantot, tas ir iesākums. Tas ir navigācijas. Šī ir kājenes. Nodarbības ir atšķirīgi, jo jūs varat piemēro klases tik daudz HTML elementus kā jūs vēlaties. Tā, piemēram, man bija klases nodalījuma, jo tur ir iespējams vairāk nekā viens nodaļa manā lapā. Jūs tikai atļauts, lai būtu tik daudz elementi lapā ar pašu klase, bet tikai viens ar noteiktu ID. Mērķauditorija: Tātad dot pārstāv klasē? ANGELA LI: Jā. Punkts ir klasi. Atdzist. Tas ir viss, ko es esam ieguvuši, puiši. Paldies. [Aplausi] ZAMYLA Chan: Hi, visiem. Es esmu Zamyla. Es esmu gatavojas aptver PHP, MVC, un SQL šodien. Materiāla, ka es būtu daudz segums būs diezgan daudz tieši no pset7. Labi. Tātad, kas ir PHP? PHP nozīmē PHP hiperteksta Apstrādātāju. Tāpēc tas pats par sevi, ir rekursīvs nosaukumu, kas ir diezgan atdzist. PHP ir servera puses skriptu valoda, un tas nodrošina aizmuguri un loģisko pamatojumu, mūsu mājas lapā. Tātad Angela runāja daudz par HTML un CSS, kas padarīs struktūra mājas lapā. Bet kas notiks, ja jūs vēlaties mainīt saturu dinamiski, vai, ja tas ir atšķirīgs balstoties uz lietotāja vai konkrēti nosacījumi? Tas ir, ja PHP nāk collas Tagad, parasti, PHP var aizņemt dažas mazāk līnijas, lai īstenotu to pašu C. Tas ir tāpēc, ka PHP rokturi atmiņu pārvaldība programmētājs, pretstatā mums, kam malloc bezmaksas, lietām, piemēram, ka. Bet tā kā PHP ir interpretācijas valoda, parasti, tas varētu izpildīt nedaudz lēnāk nekā C, kas ir apkopota valoda. Jo mēs esam pārvietojas programmēšana valodas, aplūkosim, kā sintakse atšķiras. Būsim ļoti uzmanīgi, lai saņemt sajaukt ar to. Tātad ar PHP sintaksi, vai jums ir Iekļaujot jūsu PHP iekšpusē HTML failu vai ar. php failu sevi, jūs nepieciešams pievienot kodu atklātā PHP un slēgtās PHP tagus, piemēram, izriet, tāpat kā uz ekrāna. Mainīgie PHP. Katru mainīga sāksies ar $ zīme, kam seko nosaukums Jūsu mainīgs. Tagad, mainīgie PHP ir brīvi drukāti, kas nozīmē, ka jums nav nepieciešams lai norādītu, kāda datu tipu ir tad, kad jūs esat nedeklarējot. Tomēr tas nenozīmē, ka viņi nav nekādu veidu vispār. Tātad, ja es apliecinu, mainīgo un vienkārši noteikt tas ir vienāds ar 1, un tad es apliecinu Vēl viens mainīgais, kas to ir vienāds ar "1", un tad vēl viens 1,0, labi, atkarībā no vienlīdzības tipa operatoriem es izmantoju, ja es gribu, lai salīdzinātu visos veidos, tad viņi būs vienāds. Bet, ja es gribu, lai pārliecinātos, ka veidi ir vienādi, PHP joprojām var darīt ka, lai gan mēs neliecina kāda veida tas ir, kad mēs vispirms veikt failu. Tagad, PHP, lai gan mēs esam pārejot no programmēšanas valodas no C, mums joprojām ir mūsu drošs, ja nosacījums, tāpat kā šo. Mums joprojām ir mūsu, vienlaikus cilpas, tikai kā šis, kur jūs nodot savu stāvoklī, un pēc tam korpuss no cilpas. Un tad mums ir arī mūsu cilpa, kas parasti izskatās šādi. Tātad, ja es gribēju, lai atkārtot visā deviņi psets un iesniegt un zvanu funkcija submitPset, tad es varu darīt, ka šeit, kas jums puiši ir visas veikta saskaņā ar šo punktu. Apsveicu, ko veidā. Kamerai, cilvēki teica paldies. Tagad, ja jūs nevēlaties, lai tikai izmantot šo cilpa, tad PHP faktiski arī ir lietas, ko sauc foreach cilpas. Tātad, ja man bija masīva integers, 0 līdz 8, glabājas masīvs psets, tad es varētu būt foreach cilpa, kas vairākkārt uzsvērts, nekā katru numuru psets. Un tad es varētu zvanīt pats darbojas astoņas reizes, tāpat kā es darīju agrāk. Tāpēc šis katram cilpa ir jauki, jo Jums nav, ja jūs nezināt, precīzs garums masīva, kas jums ir, tad, izmantojot šo foreach cilpa parūpēsies par jums. Tāpēc es psets kā masīvs. Apskatīsim to. Masīvi PHP parasti ir tāds pats kā tie, kas mēs esam bija C, kur Jūs varat deklarēt masīvu. Un šeit, es varu paziņot, tukšu masīvu un pēc tam veidot dinamiski, izmantojot indeksi, kā veselus skaitļus. Tātad indeksu 0, es esmu gatavojas glabāt vesels skaitlis nosaukts 1. Pie indeksu 1 manā sarakstā, es esmu gatavojas lai saglabātu vērtību 2. Un trešajā indeksu, bet Otrais numurs, es esmu gatavojas saglabāt numuru 12. Tagad tas ir labi, jo darbojas tā darbojas labi. Bet saka, tas ir svarīgi, lai man ko katrs indekss tur. Man, indekss 0 nozīmē, cik daudzi kaķi man ir. Un indekss 1 nozīmē, cik daudz pūces esmu. Un nākamais nozīmē, cik daudz suņiem. Nu, tad norādīt, ka, tā vietā, , kam atcerēties 0 attiecas uz kaķi un 1 līdz pūces, es varu izmantot asociatīvas bloki, kas nozīmē, ka vietā integers kā maniem rādītājiem, Es patiesībā var izmantot virknes. Tātad tas ir diezgan noderīga. Un jūs esat būtībā vienkārši aizvieto veseli skaitļi ar stīgām. Un tur jums ir asociatīvā masīva. Jā. Mērķauditorija: Vai ir iemesls, kāpēc tur ir pasvītrojums par otro daļu, jo mans saraksts ir masīvs. ZAMYLA Chan: Jautājums bija, ir ir iemesls, kāpēc tur ir uzsvērt starp manu un sarakstu? Nē. Tas ir tikai, cik es esmu nosaucot mans mainīgs. Mērķauditorija: On pirmais līnija, tas ir viens vārds. ZAMYLA Chan: Atvainojos. Es noteikt to. Jā. Tām ir jābūt vienādam mainīgā nosaukums. Labs loms. OK. Tāpēc pieņemsim pāriet uz virkni konkatenācija. Ja es gribēju ņemt divas virknes, tad es varu saķēdēt tos ar dot operatoram. Tātad, ja man ir Milo kā vārds un Banana kā uzvārdu, tad konkatenācijas ar dot operatoram un pēc tam liekot atstarpi starp dos virkni, kas satur Milo Banānu, ko es varu, tad atbalss, vai, drīzāk izdrukāt. Runājot par ECHO, parunāsim par maz noderīgs - Ups. Piedod. Dažas noderīgas PHP funkcijas. Tāpēc mums ir - tehniskas grūtības. Vienu sekundi. Es to sūtīju. PowerPoint problēmas. Un mēs esam atpakaļ ar PHP funkcijas. Un mēs esam atpakaļ ar PHP funkcijas. Tāpēc mums ir nepieciešama funkcija, kur ja jums iet failā, lūk, ir tikai piemērs failu, kas Es varētu iet iekšā Tad tas būs PHP kodu No šīs lietas materiāliem, kas man norāda. Un tā novērtēs, ka iekšā Tad mums ir arī atbalss, kas ir paralēli printf. Izeja ir paralēli, lai izjauktu, kas iziet no bloka kods, kas tu esi iekšā Un tad tukšas pārbauda, ​​vai, ņemot vērā mainīgais ir kā Null vai nulles vai kāds ir pielīdzināts to tukšu. Jā. Mērķauditorija: Par string konkatenācija dot operatoram vienu, PHP, ir tāda, ka tāpat kā JavaScript, kur tas ir, izmantojot dot uz konkatenācija ir plus? Tātad pilns vārds, jūs varētu būt dolārs paraksta pirmo + un tad + pēdējā? ZAMYLA Chan: Jā. Tātad jautājums bija, vai PHP mums var izmantot to pašu string konkatenācija kā JavaScript ar plusiem. Un Jāzeps būs iekļuvuši, ka vēlāk. Es domāju, ka viņš ir slaids par to. Patiesībā, tas ir atšķirīgs. Tātad JavaScript, jums ir nepieciešams, lai izmantotu plus saķēdēt stīgas. Un PHP, jums ir izmantot dot operatoram. Tāpēc viņi atšķiras. OK. Tāpēc tagad, ka mēs esam uz visiem Tas PHP, kur tas tiešām noderēs? Nu, tas nāk ērts, ja mēs var apvienot to ar mūsu HTML. Tātad mūsu PHP dos mums spēku mainīt kādas lapas HTML saturu pirms tā iekraušanas. Tātad, pamatojoties uz dažādiem apstākļiem, parasti īpašais lietotājs, kas ir pieteicies, mēs varam parādīt dažādu informāciju. Linda, jūs ir jautājums? Mērķauditorija: Vai jūs varat saķēdēt integer arī? ZAMYLA Chan: Jā, tas ir iespējams. Tātad jautājums ir, ja jūs varat saķēdēt skaitļu vai cita variable.s tagad mēs pāriet uz MVC, kas ir paradigma, ka mēs izmantojām pset7 un daudz web dizaineriem izmantot organizējot kodu failus savā mājas lapā. M apzīmē modeli. Un būtībā, modelis faili tiks galā mijiedarbību ar datu bāzi. Skatītu failus, tie attiecas uz estētika mājas lapā. Un kontrolieris rokturi lietotājs pieprasa, parses dati, vai citu loģiku. In pset7, mēs kopā modeli un kontrolieris. Un mēs vienkārši sauc tos kontrolieriem un viņus publiskajā direktorijā. Un apskatīt failus, mēs tos izmantot kā veidnes veidnes direktorijā. Tātad šī shēma šeit ir arī ka paša veida dalīšanu ar modelis un kontrolieris purpura šeit pa kreisi un skats pa labi. Tātad tas ir shematisks, ka daži no jums var būt redzējis pie darba laika vai diagrammas, ka mums bija zīmēšanas, kā jūs Tika norādītas savu PSET. Tātad šeit, konkrētajā kontrolieris, modelis kontrolieris, mums ir funkcijas kas attiecas uz vaicājumiem SQL datu bāzes, izpildot PHP loģika. Varbūt jūs varētu uzmeklēt krāja Yahoo! Finanses. Vai varbūt jūs varētu vienkārši pārbaudīt, redzētu, vai lietotājs ir iesniedzis forma jau, pirms apmeklējis jūsu lapu. Un tad jūs varētu padarīt veido vairāk nekā šeit. Pēc tam, kad tika iesniegta šī veidlapa lietotājs, darbība, kas bija norādīts veidlapas HTML tagu varētu norādīt uz lapu, kas ir atgriežas, lai dati. Tāpēc visa šī informācija būtu nosūtīta atpakaļ uz jūsu kontrolieris. Tad jūs, iespējams, darīt nedaudz vairāk loģika par šo un varbūt veikt dažas vairāk vaicājumus SQL datu bāzē un Tad, beidzot, nākt klajā ar labi pildīta informācijas kopums, kas jums varētu pāriet uz kādu citu veidni kas redzams šo informāciju. Tagad, kā mēs patiesībā pakete šī informācija up? Nu, mums ir funkciju sauc apmetuma kas bija functions.php failu pset7, kur jums iet ar nosaukumu failu nosaukumu veidni. Un tad jūs arī pāriet asociatīvā masīva. Un tā, ka asociatīvā masīva pārstāv atšķirīga informācija ka jūs vēlaties, lai iet iekšā Tagad to, kas būs nemainīga Šie piemēri ir tas, ka atslēgas vai, Drīzāk atslēgas asociatīvā bloki, tie ir to, kas būs būs nemainīgs ar veidni, jo tā zina, tai ir kaut ko sauc par ziņu vai sauc nosaukums. Un tad lietas uz labo faktiskās vērtības, tāpēc šajā gadījumā, kurš ir labs zēns un Milo, tie gatavojas būt vērtības, kas mainās ka kontrolieris mainās katru reizi vai arī pamatojoties uz noteiktu stāvoklī un iet, ka iekšā Tātad šeit veidnes, mēs redzam, ka mums izmanto HTML speciālās rakstzīmes, kas tikko būtībā nozīmē, ka mēs gribam lai iegūtu vienaudžu virkni, kas lietotājs likts collas Un mēs gribam, lai aizvietotu ziņa tur. Tāpēc tad, kad mēs faktiski apskatītu failu, specifisku informācija tiek nodota iekšā Ņemiet vērā, ka galvenais, kā padarīt darbu ir ka atslēgas asociatīvā bloki, tie kļūst mainīgas nosaukumi šeit. Un tā vērtības minētās atslēgu asociatīvā masīva tad kļūst mainīgā vērtība. Tagad, pieņemsim pāriet uz SQL. Tas nozīmē Strukturētais Vaicājumu valodu. Un tā tas ir tikai plānošanas valoda, kas paredzētas lai pārvaldītu datu bāzes. Un tas nāca parocīgs mums Mūsu pset7 finanšu mājas lapā. Būtībā, tas ir tikai vienkāršs veids, kā izsekot un pārvaldīt objektus un tabulas un saite ar otru. Tagad, domāju, ka jūsu SQL datu bāzē Pamatā kā Excel failu, iespējams, ar vairākiem tabbed lapām. Lai jūs varētu būt vairākas tabulas, iespējams, kas saistīti viens ar otru. Un daudz, piemēram, Excel, mums ir daudz funkcionalitāte, ko mēs gribam. Piemēram, var izvēlēties dažas rindas. Mēs varam ievietot informāciju. Mēs varam atjaunināt rindas. Un mēs varam arī izdzēst lietas. SQL atlasīt darbus, izvēloties rindas vai rinda norādītajiem kolonnām no datu bāze, kas atbilst noteiktu kritēriji, kas jums norāda. Tātad, nekā šeit, kad es redzu, izvēlieties * no wizards kur māja = Ravenclaw, tad Es esmu izvēloties *, kas nozīmē, ka es esmu Izvēloties katru kolonnu, kas rindā no burvji tabulā, bet tikai tad, ja māja kolonna vienāds Ravenclaw. Tagad tas ir tīrs un SQL. Tātad, ja es devos uz phpmyadmin, kas ir īpašs veids, kā mēs izmantot, lai pārvaldītu mūsu SQL datu bāzēm, tad es varētu ievietot ka uz phpMyAdmin mājas lapā. Un tas varētu izpildīt. Bet mēs patiešām vēlamies darīt ka par PHP pusē. Tātad, kā mēs to darām? Nu, mēs izmantojam vaicājumu funkciju, kas būtībā izpilda, ka SQL vaicājumu. Lietojat? kā vietturi, mēs varētu pāriet dažās vērtības, lai mūsu stīgu, kas mums vēlaties aizstāt. Tāpēc varbūt es esmu uzglabāt dažādi vērtības curr_house, kas atspoguļo pašreizējo māju ka es esmu iet cauri. Lai es varētu iet, ka kā vietturi ar jautājuma zīmi. Un tad es būtībā izpildīt tas pats, kas man bija agrāk, izņemot Tagad, es esmu PHP. Un vaicājums atgriezīs asociatīvā masīva. Un es esmu gatavojas glabāt to rindās. Tagad vaicājums vienmēr var neizdoties. Varbūt SQL vaicājums nevar izpildīt jo tabula neeksistē. Vai varbūt, kolonna nepastāvēja. Kaut kas nogāja greizi. Nu, tādā gadījumā, jūs vēlaties, lai Noteikti pārbaudiet, vai vaicājums atgriezās nepatiesa. Un tas ir, izmantojot triple vienāds darbību tur. Un tad es atvainojos, kas ir vēl viens CS50 funkcijas, kas iet īsziņā. Un, ja paskatās uz atvainojos, viss, tiešām ir padarīt apology.php. Jā. Mērķauditorija: Vai jūs varētu paskaidrot, ko tas star nav starp izvēlieties un no? ZAMYLA Chan: Jā, pilnīgi noteikti. Tā zvaigzne starp izvēlēties un no nozīmē, ka es vēlos, lai izvēlētos visu Visu rindu no mana galda. Es varētu esmu norādījusi izvēlieties nosaukumu, gadu, māju. Un es varētu tikai iegūt šiem trim kolonnas mana galda. Bet, ja es saku izvēlieties *, tad es ņemšu iegūt visu šajā kolonnā. Tad es iešu jums atpakaļ pirmās. Mērķauditorija: Tātad tas ir vēl SQL, vai ne? Tas ir jautājums vai tas ir PHP? ZAMYLA Chan: Mēs esam vaicājumu. Tātad šis ir PHP. Tātad, izmantojot PHP funkciju vaicājumu, mēs esam izpildes SQL vaicājumu. Mērķauditorija: Vai ir kaut kas SQL reģistrjutīga, piemēram, izvēlieties vai burvjiem, vai māja? ZAMYLA Chan: Vai kaut kas SQL reģistrjutīga? Es uzskatu, ka jā. Es uzskatu, ka SELECT un FROM un kur ir reģistrjutīga. Nē? ROB BOWDEN: Tātad, tas ir pretējs. Kolonnu nosaukumus un galda līdzekļi, visi no tiem ir reģistrjutīga. Bet jebkuru no MySQL atslēgas vārdiem, piemēram SELECT, FROM, un ja tie nav reģistrjutīga. OK. Tātad pretēji tam, ko es teicu. Tāpēc visi MySQL atslēgvārdiem - izvēlēties no, ja - tie nav reģistrjutīga. Bet viss pārējais ir. OK. Jums priekšā. Mērķauditorija: Ja man ir $ rindas ziņā vairāk nekā viena rinda, tas nozīmē ir vienkārši kļūst asociatīvā masīva? ZAMYLA Chan: Tātad jautājums ir, vai rindas ir vairāk nekā viena rinda tajā, tai tas kļūst asociatīvā masīva? Tātad tas ir masīvs asociatīvās masīvi jau. Tātad, pat tad, ja tur ir tikai viena rinda atpakaļ, tad jūs ir jādodas uz indekss 0 minētā rezultāta. Un tad jūs ir šo pirmo rindu. Jā, Belinda? Mērķauditorija: Ja jūs izmantojat ===, tas ir vienīgais gadījums? Vai ir citi? ZAMYLA Chan: Tātad šajā gadījumā, === ir salīdzinājums dažādos tipos. Piedodiet. === Ir salīdzinājums kas salīdzina veidi. Un tad == salīdzina visos veidos. Mērķauditorija: Vai jūs varat izskaidrot, ko rindas ir šajā situācijā? Tas datu rinda? ZAMYLA Chan: Ar nākamo slaidu, es esmu gatavojas izskaidrot, kas rindas ir. Tātad, ja jums nav prātā, kam off par to. Un tad jūs atpakaļ? Mērķauditorija: Par funkcijām, piemēram, vaicājumu, apmetuma un atvainoties [dzirdams]? ZAMYLA Chan: Jautājums bija, vai šīs funkcijas - vaicājumu, atvainojos, un padarīt - ir kopīgs visā PHP. Tie ir tie, kas CS50 rakstīja pset7. Un Jay? Mērķauditorija: Ja jums ir nepieciešams pateikt $ _SESSION, Ir tas, ka tikai ID? Vai jūs varētu būt teicis, ka šeit? ZAMYLA Chan: Tātad jautājums bija, kad mēs izmantojam $ _SESSION, tas bija īpašs globālais mainīgais, ka mēs izmantojam. Lūk, šis mainīgais ir gatavojas ir vietējā mūsu funkciju. Tāpēc mēs esam tikai deklarējot jaunu mainīgs. Mērķauditorija: Kā atvainoties īstenoti? ZAMYLA Chan: Jautājums bija, kā tiek atvainoties īstenots? Un es domāju, ka tas ir faktiski diezgan Laba prakse, lai jūs guys iedziļināties functions.php sadaļā un apskatīt atvainojos, un redzēt, kā jūs varētu būt izdarīt pats. Lai es varētu atstāt, ka jums, bet tikai saka, ka, ja paskatās atvainojos, tad tā veic ziņu, ka jums iesniegts atvainoties, un tad padara šo ziņu. Kādi vēl jautājumi? Es mīlu jautājumus. Lai saglabātu tos nāk. Mērķauditorija: [dzirdams] echo vai print tur? ZAMYLA Chan: Jautājums bija, mēs varētu ne tikai gūt vārtus echo vai print tur. Tā, ka būtu darījis kaut ko nedaudz atšķiras. Kas būtu iespiests vaicājumu nav vērā, ka - labi, tagad mēs esam patiesībā mūsu kontrolieris. Tāpēc mums nav faktiski ir HTML izveidot šeit. Atvainojos, padarot apologize.php faktiski novirza jūs apology.php. OK. Tāpēc tagad, iesim tālāk, lai risinātu Jautājums no iepriekš par to tiešām ir rindas. Nu, vaicājums atgriezīs masīvs rindas. Un katrā rindā ir pārstāvēta ar asociatīvo masīvu. Tātad, ja es esmu veikti daži SQL vaicājumu un Man uzglabā rezultātu rindās, tad izmantojot foreach cilpa, tad masīvs vārds ir pirmais tur - rindas. Un tad es saukšu katrā rindā tur $ rindā. Tā atkārtojot pār to, ka es pēc tam var piekļūtu dotajā rindā vārds kolonnu, gadā kolonna, un mājas kolonnas. Ņemiet vērā, ka es nebūtu varējusi izdarīt ar rindām, jo ​​rindas indekss vārds neeksistē. Rindas ir tikai masīvs asociatīvas bloki. Tātad jums ir divi līmeņi tur. Kad esat masīvs rindās jums ir, lai saņemtu uz to. Un tad jūs varat piekļūt kolonnas. Vai tas būtu skaidrs? Jā, priekšā? Mērķauditorija: [dzirdams] atvērtu kronšteini [dzirdams]? ZAMYLA Chan: Pardon me? Mērķauditorija: Atvērtās iekavās. ZAMYLA Chan: Tie šeit? Kas ir kas ļauj man, lai iekļautu ka mainīgais. Jā. Mērķauditorija: Drukājot, jūs drukāšanas HTML kodu? ZAMYLA Chan: Jā. Drukājot, tas šeit ir iekšā mans veidni tagad, lai mans viedoklis par MVC metodi. Tāpēc es esmu drukājot uz HTML. Mērķauditorija: Tātad, ja mēs devāmies uz attīstītāju instrumentus pēc darbības to, mēs varētu ka faktiski kodu? ZAMYLA Chan: Tas ir liels jautājums, jā. Tātad, ja jūs iegāja izstrādātāju rīki Firefox, izmantojot Firebug vai Hroms, tad jā, jūs varētu skatīt īpašo HTML. Tāpēc tas neparāda $ row ["nosaukums"]. Tas liecina, atkarībā no tā, vārds ir šajā rindā. Mērķauditorija: Just vispārīgs jautājums, kādi ir tr un td definēta kā? Kāpēc mēs [dzirdams]? ZAMYLA CHAN tabula rinda tr, tabula tad td kolonnu. OK. Mērķauditorija: Jā, tas ir tabulas datus. ZAMYLA Chan: Tabulas dati. Jā. AUDITORIJA: Tas ir rinda, kas rinda tiek uzskatīta kā kolonnā? ZAMYLA Chan: Sorry. Vai jūs varat atkārtot, ka? Mērķauditorija: Kā jums vizualizēt rindas? ZAMYLA Chan: Kā jūs iztēloties rindas, kāda veida veidā? Vai jūs runājat par šiem rindas šeit vai TR rindas? Mērķauditorija: Rindas. ZAMYLA Chan: šīs rindas šeit? Es gribētu iztēloties to kā Es izpildīt manu vaicājumu. Un tā saka, OK, man ir vai nu 0 līdz n daudzums rindu, kas atbilst kritērijiem ka jums bija apšaubīja. Tāpēc man ir daži rindu skaitu. Tāpēc rindās, tad $ rindas, veikali katrs viens no tiem rindu masīvu. Tātad, pat ja tas ir tikai viens no viņiem, tas ir joprojām masīvs rindas, kas atbilst to. Tātad, piemēram, tas līdzīgi kā tad, kad jūs fetched cache no lietotājiem. Un kritēriji, tur bija, kad ID ir vienāds ar sesijas ID. Tur tiešām tikai viena rinda kas varētu atbilst to. Bet joprojām rindas tikko atgriezies viena rinda. Tātad jūs iet uz rindām, indekss 0, indekss kešatmiņu faktiski nokļūt jūsu kešatmiņu. Mērķauditorija: Vai drukāšanas funkciju ECHO to pašu? ZAMYLA Chan: Jā. Jā. Izdrukāt atstarojas pats. Mērķauditorija: Vai foreach cilpa Vienīgais veids, kā indeksēt rindās? ZAMYLA Chan: Vai foreach cilpa vienīgais veids, ka jūs varat atkārtot, izmantojot rindām? Nē. Jūs varat arī izmantot, lai cilpas, ar nosacījumu, ka jūs zināt garumu rindas ir masīvs. Mērķauditorija: Vai jūs varētu piekļūt izmantojot rindu kā [dzirdams]? ZAMYLA Chan: Tātad, jūs nevarat piekļūt tikai izmantojot rinda, ja jums nav foreach cilpa ar nosacījumu, ka Jums nav deklarējuši rindu. Jā. Jā, ir baltā krāsā. Mērķauditorija: Tātad, ko tr un td darīt? ZAMYLA Chan: Tik tr un td ir HTML tagus. tr norāda sākumu no tabulas rindas. Un katrs td norāda Jaunā tabulas dati kolonna. Mērķauditorija: Par vizuālo kāda rinda ir, piemēram, tikai iedomāties, SQL, kā tie ir rinda. [Dzirdams]. ZAMYLA Chan: Jā. Tas ir liels punkts. Jūs varat iztēloties rindas, kā tikai tāpat kā Excel tabulā, tikai saraksts rindām. OK. Labi. Tāpēc tagad, ka mēs esam izgājuši vairāk nekā izvēlēties, ja tajā nav vairāk jautājumu, mēs iet pāri uz ieliktni. Tātad, ja es gribēju ievietot dažus galda un ievietot konkrētu kolonnu vērtībām, es varētu ievietot sevi uz Ravenclaw ar 7 gadu. Bet dažreiz varētu būt dublikāts vērtībām, kā mēs redzējām pset7 kad mēs Tika atjaunināt mūsu portfolio. Tātad šajā gadījumā, mēs vēlamies izmantot ON DUPLICATE KEY UPDATE, tā ka mums nav uzglabāt vairākas rindas ar to pašu vērtība, bet gan atjaunot to. Tad mums tiešām ir atjauninājumu, kas nav insert. Tas ir tikai update, kur jūs atjaunināt noteiktā tabulā ar dots kritērijiem, un pēc tam, visbeidzot, dzēst, kas dara ļoti līdzīga lieta. Mērķauditorija: Vai jūs varētu īsumā iet pa dublikāta atslēgu? ZAMYLA Chan: Jā. Būtībā šeit, man ir ievietot gringotts, ir galleons, šīs vērtības. Bet ID, domājams, ir unikāla atslēga vērtība izveidota MySQL tabulā. Tātad, ja man jau ir, ka ID izveidotas, tad es nevaru ievietot jaunu rindu. Tātad, ja tas neeksistē jau, tad man ir to atjaunināt. Vidū ar baltu. Mērķauditorija: Tātad ievietot, atjaunināt, dzēst, un izvēlieties, ir tie visi ir pieejami lokāli [dzirdams]? ZAMYLA Chan: Tātad ievietot, atjaunināt, dzēst un atlasīt visi SQL vaicājumu. Tātad, ja jūs izmantojat SQL, jums ir tie, kas pieejami. Mērķauditorija: Atpakaļ uz iepriekšējo viktorīnas - tur bija jautājums, kas jārisina ja jums bija galda un gribēja ievietot pārbaužu rezultāti vienā un jums ievietot Jūsu vārds tāpēc tas neļaus jums [Dzirdams] Jūsu drauga testa rezultāts. Kā jūs darīt ar ieliktni? ZAMYLA Chan: Tātad jautājums bija par iepriekšējā vidēja termiņa jautājumu. Es neesmu informēts par kuriem kāds tas ir šobrīd. Tātad, varbūt pēc tam, ja jūs vēlaties, lai nākt klajā un parādiet man, tad es varu noteikti dos jums padomus. Bet runājot par ievietojot lietām, piemēram, ņemot kādu rezultātu, kad jūs nedrīkst, parunāsim par SQL injekcijas uzbrukumiem. Tāpēc SQL injekcijas uzbrukumu būtībā ja kāds ņem priekšrocība zemo drošības Veidā, ka jūs lietojat datos. Tātad šeit, tāpat kā CS50 finanšu, kad mēs pieteicies, mēs varam ievadīt lietotājvārds pieteikšanās formā, pirmais tekstlodziņš, un tad ievadiet paroli. Varbūt mūsu PHP kods varētu izskatīties kaut kas līdzīgs šim, kur $ lietotājvārds ir pēc datu lietotājvārdu un paroli ir pēc datu parole. Un tad mēs vienkārši izpildīt savu vaicājumu, teiksim, Labi, labi, mūsu vaicājums gatavojas izvēlieties kādu no mūsu lietotājiem, ja lietotājvārds ir viens, ka tie iesniegti. Un parole ir parole, kas nozīmē, ka paroles sakrīt. Tagad, kas notiks, ja tā vietā, lai reāli iesniedzot faktisko paroli, piemēram, 12345 un guessing pie dakšas, kas saka parole un mēģina kapāt to kontu, kas notiks, ja tā vietā viņi iesniedza šo. Tie varētu tipa varbūt uzminēt paroli. Un tad viņi varētu pabeigt quote tad ierakstiet vai 1 = 1. Kas straujiem tieši SQL vaicājumu, lai izskatās kaut kas līdzīgs šim. Izvēlieties kādu no lietotājiem, ja lietotājvārds = prongs un paroli vienāds lilija vai 1 = 1. Tātad vai nu parole ir ir pareizs vai 1 = 1, kas vienmēr ir taisnība. Tātad, šajā gadījumā, būtībā, lietotājs var izmantot šo un vienkārši piesakieties paši iekšā un kapāt kāds konts. Tātad, tas ir iemesls, kāpēc mēs vēlamies izvairīties kāds, kam to darīt. Bet par laimi, vaicājums funkcija, ko garāmejot vietturu notiks rūpes par to, lai jums. Arī jūs parasti nekad vēlaties faktiski iesniegt paroles paši. Tieši tāpēc mēs sajaukts vai šifrēta tos CS50 finansēm. Mērķauditorija: pagātne viktorīna runāja par MySQL evakuācijas stīgas. Vai mums ir jāuztraucas par to? ZAMYLA Chan: Tas ir labs jautājums. MySQL evakuācijas stīgas ir noteikti funkcija, kas tika izmantots mūsu query. Bet noteikti izpētīt to. Es teiktu, ka ir godīga spēle zināt ka jūs nepieciešams, lai izsauktu, ka funkcionē uz virknes. Jā, Belinda? Mērķauditorija: Kā jūs zināt, kad tas ir vienu pēdiņām vai pēdiņās? Un arī, es jūtos kā lekciju jūs minēja kaut ko par to, kam nav [dzirdams], vai kaut vai Otrais singls quote beigās. Es domāju, ka viņš norādīja, lekciju, ka Jūs esat vajadzēja būt apostrofu 1 un tad nav apostrofiem vai kaut ko. Mērķauditorija: [nedzirdama]. Mērķauditorija: lieta ir pēdējais vienotā quote tur šajā otrajā ailē nevajadzētu būt tur. [Dzirdams] Jo, kad jūs lietojat, ka pagājušajā single Citējot, un saskaņot tos saturu ja parole ir, ja jums ir, ka vaicājumu, tur vienu citātu pie beigas jau. Jūs vēlaties izmantot šo vienu citātu kā viens, kas saskaras ar vienu [Dzirdams]. Tātad, kas patiesībā ir šī teksta box nevajadzētu būt, ka. ZAMYLA Chan: Es mainīt. OK. Ja nav kādi jautājumi, tad es ņemšu nodot to pa Jāzepam runāt par JavaScript, uc. [Aplausi] JOSEPH ONG: Tātad mēs darbojas mazliet atpaliek. Tātad, ja jums ir atstāt, tas ir OK. Bet mēs lūdzam, lai jūs saglabāt savu galvu uz leju ja tu esi vidū, tāpēc jums nav bloķēt kameru, un jūs izmantojat atpakaļ izejas, ja jums ir. Es esmu Jāzeps, ko veidā. Hi. Tests, pārbaude. Dan, ir tas, ka laba? Atdzist. Tāpēc video arī tiks publicēta internetā par tiem, kas atstāt tagad. Neērts. OK. Tā viktorīna pārskatīšanu. Tas ir kaķis. Tagad, JavaScript, kas varbūt nav kā AAW dažiem no jums, puiši. OK. Tātad, tas ir, pirmkārt, atsaukt no Zamyla. Atcerieties, ka PHP ir darbojas uz servera. Un daudz reižu, jūs puiši rakstīja cilpas PHP izdrukāt HTML, vai ne? Tātad, kad šis kods izpilda, ka HTML izejas, ka jūs izdrukāt tiek nosūtīta lietotājam. Un, kad tas notiek, ne vairāk PHP nevar palaist, ja vien jūs pārlādēt lapu, no Protams, kas reexecutes PHP. Bet tad, kad jūs izdrukāt šo HTML, Jūs nevarat iet nekur. Lai HTML tiek nosūtīts pa lietotājam, kas ir pārlūks nekā šeit, kur Milo ir, izmantojot datoru. Un tik labi, ir vairākas lietas, kad mēs sūtīt HTML lietotājam. Dažreiz mēs vēlamies darīt kaut ko līdzīgu kad jūs noklikšķiniet uz kaut ko, mēs vēlamies trauksmes kastes, lai pop up, šos veida mijiedarbību, piemēram, nospiežot taustiņu, kad jūs noklikšķiniet uz kaut ko par lapas, es gribu kaut ko notikt. Nu, jūs nevarat reexecute PHP kodu, kas reiz, ka HTML ir iestatīts. Tātad, kā jūs darīt? Mēs ieviest jaunu valodu, ko sauc par JavaScript, kas darbojas pārlūkprogrammā , kas ļauj jums darīt lietas HTML kad saņemat tos no servera. Un tas ir iemesls, kāpēc mēs to saucam par klienta puses programmēšanas valodu. Tas darbojas uz jūsu datora - klients. Visus jautājumus par to līdz šim? Ka paradigma ir jēga cilvēkiem? OK. Labs. Labi. Tātad pirmā lieta, atzīmēt ir JavaScript nav PHP. Tie ir daži atšķirīgu sintaksi, ko mēs iedziļināties. Un viņi ir ļoti atšķirīgs lietojums. JavaScript, atkal, lai jūsu pārlūkprogramma, lai klientam. Servera darbojas kaut kur kāds cits dators, kas nosūta informāciju jums, pareizi? Tātad, ja mēs lūdzam jūs rakstīt PHP kodu par eksāmenu jautājumu, nerakstiet JavaScript un vice versa. Jūs tikai zaudēt punktus, un tas nebūs labi. Tātad, pieņemsim nokļūt daži sintakses atšķirības - JavaScript kreisajā pusē un PHP labajā pusē. Pirmā lieta, jūs paziņojums ar JavaScript, mēs paziņojam mainīgos lielumus VAR atslēgvārds - V-A-R. PHP izmanto dolāra zīmi, kā Zamyla apspriests agrāk. Ja jūs vēlaties deklarēt asociatīvo masīvs, mēs redzam pazīstamo sintaksi uz labajā pusē ar PHP. Kreisajā pusē, vietā Jūs izmantojat cirtaini lencēm. Un tad jūsu taustiņi ir kreisajā pusē. Tad jums ir kolu. Un tad jums ir vērtības ka jūs vēlaties. Tātad, tas ir, kā jūs varētu darīt to PHP labajā pusē, ar šo otro līnija, kas sākas Milo. Un tas, kā jūs varētu darīt to kreisajā pusē JavaScript, ja vēlaties tas, ko mēs saucam par objektu. Un objekti JavaScript ir tikai asociatīvas bloki. Tātad, ja jūs vēlaties, lai piekļūtu laukus, kas PHP jūs izmantot šo stiprinājuma sintaksi. Un šādā veidā, jūs varat pārdalīt tas īpašnieks lauks Lauren. Nu, JavaScript, ja vēlaties, lai piekļūt lauku un mainīt to, jūs varat izmantot dot sintaksi. Jūs varat arī izmantot stiprinājuma sintaksi. Bet jūs nevarat izmantot dot sintakse PHP. Tas nestrādās. Tas darbojas tikai PHP. Un, visbeidzot, lai drukātu lietas konsole, jūs izmantojat console.log, kas jūs guys izmantot daudz pset8. Jūs varat console.log to. Ja vēlaties drukāt masīvs PHP, jums ir izmantot drukas r. Un labajā pusē, jūs redzat i hash string konkatenācija tur. Kāds jautāja agrāk. Es izmantoju plus JavaScript. Ja es gribu, lai saķēdēt kaut PHP, es izmantot dot. Tie ir atšķirīgi. Ja jūs esat rakstiski PHP kodu, neizmanto plus. Ja jūs esat rakstiski JavaScript kods, nerakstiet punktu. Tas būs nepareizi. Un jums būs skumji. Tā sintakses atšķirības. Zina savu sintaksi, jo, ja jums ir uzrakstīt jautājumu, un jūs izmantojat sintaksi no nepareizā valodā, tas nedarbosies. Un tas būs nepareizi. Tāpēc parunāsim par kādu kontroli plūsmas atšķirības, kā jūs izmantojat cilpas katrā no tiem. Zamyla piegāja labajā pusē. Sīkumi labajā pusē būtu jāzina. Apskatīsim kreisajā pusē. Kad jūs izmantot n cilpu JavaScript, Jūsu cilpa mainīgo, VAR i tur, cilpa pār taustiņiem masīva. Tātad jūs redzat vārdu, māja, un lomu. Ja es console.log i, man vārds, māja, un uzdevums. Tie ir atslēgas. JavaScript, foreach cilpa iet pār vērtībām šī masīvs. Tātad, jūs ievērosiet, ka viņi abi i. Bet šeit uz PHP pusē, tas drukā out Milo, CS50, un Mascot. Tās ir vērtības PHP. Tātad tie ir, kā šie divi ir atšķirīgas dažādās valodās. Tātad, ja jūs izmantojat foreach cilpa, neuzskatiet, ka tā dod jums atslēgas. Un, ja jūs izmantojat, lai n cilpas, nav pieņemu, tas dod jums vērtības. Vai tas ir jēga tik tālu? Nākamais slaids ir gatavojas parādīs kā jūs varat piekļūt pretējo in katrs no tiem. Nu, ja jums ir atslēga JavaScript un jūs vēlaties, vērtību, kas, jūs vienkārši indekss par masīvs ar to. Tāpēc Milo I saņems to, ko vēlaties - vērtības. Tur tas ir atšķirīgs sintakses PHP. Ja jūs patiešām vēlaties zināt, man nav domāju, ka mēs esam parādīja to jums vēl. Bet, ja jūs interesē, jūs varat izmantot šo papildu sintakse labajā pusē puse, kas faktiski ļauj iegūt atslēgas PHP, ja jūs izmantojat foreach cilpa. Tāpēc tikai mazliet nieki ja jūs interesē. Tātad, tas ir tikai, lai pierādītu atšķirības starp šīm divām cilpas. Nejauciet tos, kad jūs esat programmēšanas jautājumu. Kādi jautājumi par to. Atdzist. Labi. JavaScript objekti. Es runāju par tiem. Viņi, piemēram, asociatīvas bloki. Viena lieta, ko es gribētu, lai jūs atzīmēt šeit ir tas, ka vērtība ir asociatīvās masīvs var būt jebkas JavaScript. Tas var būt pat funkcija, tāpat tur. Man ir funkcija, kas ir vērtība taustiņu. Un, ja es vēlos, lai izsauktu šo funkciju, Es vienkārši piekļūt mizu. Un tad es ielieciet iekavas pēc tam. Un tas darbojas. Tātad, kādi jautājumi? Nē? OK. Labs. JavaScript, piemēram, PHP, ir brīvi drukāti. Ko tas nozīmē? Tas ir veidi. Bet, ja jūs atzīt JavaScript mainīgais, jūs sakāt VAR i. Jums nav pateikt. Tas nav lieta. Jūs vienkārši teikt, tas ir mainīgs. Un tad JavaScript veiks veidi saskaņā ar kapuci jums. Mēs varam brīvi konvertēt starp veidiem, jo ​​to. Tāpēc es uzsāk veikt kā skaitlis šajā gadījumā. Un tad man ir virkne. Un es pievienot i to. Un es pārdalīt to atpakaļ uz i. Tātad šajā pirmajā rindā, i ir numurs. Otrajā rindā, es tagad kļūst string pēc man zvejā. Un šeit, es esmu tikai konkatenācijas šis skaits uz virkni. Tātad jūs redzat, ka, lai gan man bija integer pirmajā daļā, tas ir sava no kā tiek pārvērsts string un pēc tam tiek pievienots uz šo sveiki virkni. Un tā, ka tas, ko es domāju ar vaļēju rakstīt. Tas ir, kas jums konvertēt starp veidi ir ļoti viegli. Un tas nav mest brīdinājumi pie jums patīk C dara. Tāpēc man tagad ir sveiki 123 uz virkni. Nākamais. Mēs varam arī brīvi salīdzināt starp veidiem. Tātad, ja jūs vienkārši izmantot ==, ļoti piemēram, PHP, JavaScript nav līdzīga lieta. String 123 ir tāds pats kā skaitu 123, ja jūs izmantojat dubulto vienāds. Ja to izmanto triple vienāds, bet arī vēlas, lai pārliecinātos, ka veids ir tāds pats. Tāpēc, ka ir virkne, un tas ir numuru, pat ja viņi abi 123, ja jūs izmantojat triple vienāds, jums nepatiesa. In dubultā vienāds gadījumā, jums ir taisnība, jo dubultā vienāds nav rūp veidu. Triple vienādības tas rūp veidu. Jautājumi? OK. Un vēl viena lieta par JavaScript ir joma ir sava veida globāls, ja jūs in funkciju. Un tas darbojas tajā pašā kā PHP faktiski. Tātad, pieņemsim iet caur šo piemēru. Es noteikti i 999. Un tad es dodos uz šis cilpas. Tātad, ja es esmu drukāšanu i noteikti šis cilpa, I gaidīt 0, 1, 2, 3, 4. Es varu i = 4. Tā soli es tagad līdz 5 pie beigām, lai cilpa. Un pēc tam tas saplīst no cilpas, jo tas neatbilst nosacījums vairs. Ko jūs domājat, ka nākamajā console.log izdrukā? Tātad tas, ko tā varētu darīt, C. C, jo, ja jums ir, piemēram VAR i ārpuses un jums ir VAR i iekšpusē cilpa, piemēram, cilpa, tad tas padara tāds, ka tas ir scoped, ka divi i s ir atšķirīgi. JavaScript, tas būs tikai pret to kā tādu pašu i. Man 5, jo tas bija vērtība pēc tam, kad tas iziet no cilpas. Tā, ka šie i s ir vienādi i. Vai tas ir jēga? Nu, tas ir jēga no JavaScript viedokļa. Bet pats paradigma nav pārnest uz C. Tās ir dažādas jomas noteikšanā noteikumi. Jā. Mērķauditorija: [dzirdams] ārpus funkciju [dzirdams]? JOSEPH ONG: Tātad, ārpus kuras funkcija? Tāpēc es nopirkšu, ka tikai sekundi. Tāpēc mēs saucam foo (i). Šis iet i vārtos foo, pieaugumu tā, un pēc tam reģistrē to. Tātad tas bija 5. Tātad, tas kļūst par 6. Bet tas, ko es runāju par to ir ka man šāds statuss. Jo tas ir parametrs, tas ir scoped šai funkcijai. Tātad, kad es tiešām izkļūt no tā funkcija, tas ir tagad gatavojas iet atpakaļ uz veco i. Kas i ir scoped tikai tāpēc, ka tas ir funkciju. Un mēs esam jomu un funkcijas. Bet mums nav joma ārpus Funkciju JavaScript. Vai tas ir jēga? Jā. Jautājums. Mērķauditorija: Same [dzirdams]? JOSEPH ONG: Tātad yeah. PHP, tas ir paša veida lieta. Tur ir nedaudz smalkumu faktiski. Bet jūs varat uzdot man par ka pēc pārskatīšanas. Jums nav tiešām ir nepieciešams zināt ka asums uz viktorīnas. Attiecībā uz visiem nolūkiem un, līdzīgi mainīgie, pasaules un PHP, ja vien viņi ir funkcijas, tajā pašā lieta JavaScript. Jā. Mērķauditorija: Kāpēc tas ir atļauts JavaScript un nav kur citur? JOSEPH ONG: Tātad, kāpēc tas ir atļauts JavaScript nevis C? Tas ir tikai tas, kurš nāca klajā ar JavaScript nolēma, ka tas bija OK JavaScript. Tātad, tas ir tāpat kā programmēšanas valodu konvencija, kā mēs teiktu. Jā. Mērķauditorija: Tad kāpēc to iet 6-5? JOSEPH ONG: Tātad tas gāja 6-5, jo, kad es izturējis i uz foo, ka i iekšpusē foo tagad scoped uz foo, jo apjomu pastāv funkcijas JavaScript. Bet tad, kad man no šejienes, jo tas Tika scoped funkcijai, es esmu tikai izmantojot regulāru i, kas bija iekšā pārējā kontroles plūsmu. Jēga? Vai es varu doties tālāk? Labi. Atdzist. Šī pieņemšana ir objekti ir pagājis ar atsauci. Jūs zināt, kā tad, kad jūs ejat masīvs uz C, jūs varētu faktiski mainīt masīvu? Tas ir tas pats, JavaScript. Ja es nodot objektu, šajā gadījumā, es pagājis Milo šajā catify funkciju. Milo sāk out. Viņa vārds ir Milo Banana. Es nodot šo objektu funkciju jo tas ir objekts, asociatīvais masīvs JavaScript. Kad es veiktu operāciju šāds statuss, tā būs faktiski mainīt objektu. Tāpēc tas notiks tikai objektiem JavaScript, tāpat kā tas notiek uz blokiem iekšpusē C. Tātad Milo vārdu kas faktiski ir kļuvis kaķis tagad. Vai tas ir jēga? Tāpēc tas darbojas tikai objektiem. Objekti tiek nodoti ar atsauci. Jā. Mērķauditorija: Tātad jūs sakāt, ka atšķirībā no mainīgo i. JOSEPH ONG: Jā. Mainīgu man bija tikko numuru, vai ne? Tas ir tāpat kā C, kad iet skaitlim, tas padara kopiju. Un, kad jūs iet masīvs, tā faktiski maina faktisko masīva C. Tas pats notiek ar JavaScript šajā gadījumā. Labi. Un nākamais, Milo ir skumji, jo viņš tagad kaķis. Tas bija faktiski Milo pēc daži brauciens uz vet. Tātad, kā mēs izmantot JavaScript kādā mājas lapā? Mēs varam iekļaut to. Tas ir HTML kods, ar striptīza tagiem. Tāpēc man ir striptīza tagus tur. Un tad man kādu JavaScript kods ietvaros skriptu tagus. Un tad izpilda to. Kad es vienkārši darīt to, kā šis, tas ir sauc inline JavaScript. Tas ir sava veida netīrs, jo JavaScript ir faktiski HTML. Labāks veids, kā to izdarīt, ir daudz jaukāk, ir rakstīt savu JavaScript ārējā faila un pēc tam sniedz skriptu tag ar avotu. Un tas dosies uz šo JavaScript failu un lasīt JavaScript kodu ka failu vietā. Un šādā veidā, jums nav daudz JavaScript sākumā savu HTML failu, kas padara tas tiešām netīrs. Jūs vienkārši ielieciet to kaut kur citur. Un tad tas būs lasīt to no turienes. Bija, ka ir jēga? Izvietošana jautājumiem. Šajā konkrētajā gadījumā Skripts ir pirms organismā. Tātad, kad es izpildīt, ka tur ir nekas organismā vēl. Varbūt tas būs mazliet vairāk sajust, kad es parādītu šo nākamo daļu. Šajā gadījumā, scenāriju nāk pēc div. Tāpēc div faktiski parādās lapā pirmās. Tepat šajā maz sarkans aplis, redzat parādās teksts. Un tad brīdinājums parādās. Pirmajā gadījumā, jo skripts bija pirms div, brīdinājums parādās pirmās. Un tad div parādās pēc Jūs noraidīt lodziņu. Tā izpildes jautājumiem. Tāpēc mēs paturēt to prātā. Tas būs svarīgi ar mazliet. OK. Tik labi, kā jūs jāgaida, kamēr Visa lapa ir ielādēta, tad pirms jums izpildīt kādu kodu? Mēs nokļūt šajā maz mazliet vēlāk too. Bet tikai turēt šo izvietojumu jautājumi prātā, kad mēs nāk uz citu slaidu. Tāpēc mēs nokļūt DOM tagad. Un kāda ir DOM? Tātad, ja paskatās HTML kodu, tas ir tikai ķekars tekstu uz ekrāna. Tātad, kā tas JavaScript zina, ka tas ir HTML elements? Tāpēc mums ir jābūt dažas atmiņas pārstāvība šīs struktūru, kas mums ir. Un, ja mums ir tas atmiņā pārstāvība JavaScript, mēs aicinām ka DOM. Un tas ir tikai veids, ka cilvēki nolēma ka mums ir jāveido šī HTML struktūra, kā. Un ko tas DOM izskatās? Nu, atmiņas pārstāvību, mēs šo tekstu. Un mēs savukārt to atmiņā pārstāvība. Tātad šis ir HTML. Lai mēs vispirms uzzināt, ka katrs DOM koks ir dokumentu. Tas izskatās kā koks. Un dokuments satur HTML tag, faktiski viss iekšpusē šo tagad. HTML tags ir divi bērni. Tas ir galva. Ka galvu, ja paskatās iedobi tur, kā tas ir strukturēts starp tuviem tagiem, galva ir bērns. Bērns ir virsraksts. Tieši tā. Tagad, mums ir ķermeņa bērns. Un tad, ka iestāde ir bērnu sauc par ģimeni. Un ka ģimene ir trīs bērni - vecākā, vidējā un jaunākā. Tātad, jums vajadzētu zināt, kā to izdarīt diagrammu kā šis, kad mēs jautājam, kā uzzīmēt shēmu, kad mēs dodam Jūs HTML pa kreisi. Zina, kā ražot DOM koku. Un iekšpusē no šīm lietām, tur ir tikai kādu tekstu, ko es esmu pārstāvis kā maz kastes. Vai tas DOM koka struktūru padarīt izjūta un kāda DOM ir? Tātad, ko tas p kandidēt? Vairāk nekā šeit, p tur Šajā tag ir punkts tag HTML. Tātad jūs varat skatīties to uz augšu. Bet tas tikai nozīmē, ka ir dažas vieta kādu tekstu. Un tas ir dažas noklusējuma CSS stilu, jo tas ir tag punktu. Bet nav īsti jāuztraucas par šī daļa ir pārāk daudz. Tikai zinu, ka tas ir vietturis kādu tekstu. Jā. Jautājums? Jā. Mērķauditorija: Jūs vienkārši minēja CSS. Hash ģimeni un hash visu, kas stuff ir būtībā pārstāv ID CSS? JOSEPH ONG: Jā, tieši tā. Es nopirkšu, ko šie hashes nozīmē sekundē. Kad Angela piegāja CSS, viņa runāja par CSS selektori. Tie ir CSS selektori, ka viņa runā. Jā, Rob? ROB BOWDEN: Es arī vēlētos komentēt ka DOM iekšpusē nosaukums tag ir teksta mezglā. JOSEPH ONG: Right. Tā iekšpusē nosaukumu tag, Man ir dažas teksta DOM. Tik tiešām, šis nosaukums būtu, piemēram, mazā kastīte nāk nost no tā, kā labi. Bet tas nav īsti jautājums pārāk daudz šajā gadījumā. Mums nav īsti rūp teksta mezgliem, kā mēs to saucam, ir pārāk daudz. Labi, mēs darām. Acīmredzot, mēs darām. Un es noteikt, ka tad, kad Es augšupielādēt to vēlreiz. Vai tas ir jēga? Tātad, kā mēs strādājam ar DOM? Ikreiz, kad jūs nodarbojas ar DOM in JavaScript ir divi soļi. Izvēlaties DOM elementu. Un tad jūs darīt lietas, lai to. Tātad šajā gadījumā, abstrakti, es esmu izvēlēts vidējo elementu. Un tad piemērs darot lietas to varētu mainīt tekstu. Kas kādreiz bija Bob. Tagad, ko es darīju to es biju mainījies Bobs Milo šajā lietā. Tātad, kā mēs patiešām to dara? Kā mēs to izvēloties? Un kā mēs darām lietas, kas lieta, kad mēs esam spēruši? Nu, kā jūs puiši ir iemācījušies to šajā klasē ir, izmantojot kaut mēs sauc jQuery. Tātad, kas ir jQuery? jQuery ir bibliotēka, kas padara JavaScript vieglāk rakstīt. Tātad, kāds bija laiks un rakstīja jQuery. jQuery ir faktiski rakstīts JavaScript. Un tad tāpēc, ka viņi to izdarīja, mēs tagad ir visai ķekars funkcijas, mēs varam izmantot, kas padara mūsu dzīvo patiešām viegli. Tātad, kādi ir daži no lietas, tā dara? Tas padara izvēloties elementus vieglāk. Tas padara mainās HTML, pievienojot klases vieglāk. Tas padara Ajax vieglāk. Mēs nokļūt, ka sekundē. Un tas ir analogi C bibliotēkām. Tātad jūs arī string.h, jums strlen. Jūs saņemsiet strcpy, visas šīs lietas. Kad jūs iekļaut jQuery, jums jauki veidi, kā izvēlēties elementus, lai mainītu lietas, un tā tālāk. Jūs saņemsiet papildus funkcionalitāti, kas JavaScript nedod jums. Tāpēc jQuery nav JavaScript. jQuery ir bibliotēka, kas ir rakstīts JavaScript, kas ļauj JavaScript vieglāk rakstīt. Tāpēc jQuery nav programmēšanas valoda. Bet JavaScript ir. padarīt. Pārliecināts, ka jūs saņemsiet savu terminoloģiju labi. Kādi jautājumi? Jā. Ir tas jautājums? Labi. Tātad, kā jūs izmantojat jQuery? Nu, ja jūs esat rakstiski daži JavaScript kodu un jūs iekļaut jQuery augšpusē jūsu failu, jo skripta failu, jūs izmantot dolāra zīmi tagad, lai iegūtu piekļuvi jQuery. Un tas ir atšķirīgs no dolāra zīmi PHP. Tas pats simbols jums rakstīt uz tastatūras. Bet tie ir ļoti dažādas lietas. Dolāra zīmi PHP nozīmē, ka šis ir, kā es deklarēt mainīgo. JavaScript, kad esat iekļauts jQuery, tas nozīmē jQuery. Lai saglabātu, ka prātā. Tātad, kā mēs varbūt izvēlēties DOM elementus? Nu, ja jūs to neglīts JavaScript veidā, jūs varat piekļūt dokumentēt globālo mainīgo. Un tad jums elementa ID ģimeni. Tas ir ļoti garš un izplūdis un nav ļoti jauki. Vai jūs varat saņemt visus elementus ka ir p tag. Kas darbojas pārāk JavaScript. Bet mēs nekad īsti parādīja Jūs sintakse pārāk daudz. Ko mēs parādīja jums bija jQuery. Tā, ka visu selektoru uz augšu tur, ka Tika izteikts JavaScript tikai kļūst kondensē uz šo ļoti jauku dolāru paraksta hashtag ģimeni. Un $ p, tieši tur, kur tas ir, piemēram, ka. Ja jūs vēlaties, lai atlasītu visus p tagus iekšā ģimeni, mēs liekam atstarpi starp diviem. Un tagad, mēs visi p tags iekšā ģimeni. Un izskatās pazīstami? Nu, Angela runāja par CSS selektoru. Dodiet man vienu sekundi. Un tāpēc, lai izvēlētos elementu, jūs vienkārši izmantot to pašu, ko jūs darītu ar CSS selektoru. Ja jūs likts hash priekšā par to, ka izvēlas pēc ID. Punkts izvēlas pēc to kategorijām. Ja jums vienkārši ir lieta bez hashes un punkti, tas izvēlas šos tagus. Jautājumiem. Jā? Mērķauditorija: Kad mēs izmantojam dot mūsu HTML, ir tas, ka nav jQuery? JOSEPH ONG: Dot mūsu HTML ir JavaScript lieta. Tas nav jQuery lieta. Kā jūs guys iemācījušies to ar jQuery ir izmantot. html. Un tad jūs nodot to visu, HTML būs. Tāpēc es nopirkšu, ka tikai otrais faktiski. Tātad, kā mēs darām lietas, lai elementam kad mēs esam izvēlēti to? Tātad tas ir piemērs izvēloties elementu. Tāpēc tagad, mēs vēlamies darīt lietas ar to. Tātad šajā gadījumā, ļaujiet man atgriezties ar iepriekšējo slide. Tas bija Bob agrāk. Un es vēlos to mainīt iekšā HTML uz Milo. Tāpēc es aicinu HTML funkciju no elementa. Tas HTML funkcija ir metode elementa. Un tad es arī tā, ko Es gribu HTML būt. Un tas tikai aizvieto to, kas ir iekšpusē ka tag ar ko es arī tā. Jā. Jautājums? Mērķauditorija: hashtag tiek izmantots tikai ar jQuery. [Dzirdams] mēs nevarētu izmantot. JOSEPH ONG: Jā, tieši tā. Bet neuztraucieties pārāk daudz par tīra JavaScript. Es tikai gribu, lai jūs guys, lai koncentrētos uz to, kā jūs darītu to ar jQuery, jo kas būs svarīgs daļa uz viktorīnas. Tiesības. Tieši tā. Tātad jūs redzat, ka hashtag, lai atbilst izvēlētos elementu ar ID vidū, jo šo hashtag. Hashtag nozīmē ID. Un šis elements ir ID vidū. Tātad tas ir elements, mēs izvēlētos. Mērķauditorija: [nedzirdama]. dolāra zīmi hashtag [dzirdams]? JOSEPH ONG: Tātad nav. Jautājums ir, jūs varat izmantot. Vērtību. Un. Vērtība darbojas tikai uz elementiem kas ir izejvielas. JQuery, tas būtu . Val, nav. Vērtību. Tāpēc es nopirkšu mazu piemēru, kas pierāda tas viss kopā sekundē. Bet es domāju, ka tas kalpo maz fragmentu jēga cilvēkiem līdz šim. Vēlaties mainīt HTML, zvaniet HTML metodi. Jā. Mērķauditorija: Vai jūs varat izskaidrot metode atkal? JOSEPH ONG: Tātad metode ir tikai funkcija, kas pieder pie viena, jo tas gadījumā, viena no šīm FAD elementiem, tāpēc, ka jūs redzēt, I vispirms izvēlas elementu. Patiesībā, ļaujiet man izmantot peli. Es izvēlētos elementu pirmās. Un tad es sauc šo HTML funkcionē, ​​ka tā bija. Un tāpēc, ka šī funkcija pieder šī lieta, mēs to saucam par metodi. Tas ir tikai iedomātā nosaukuma par to. Saka, ka atkal. Līdz ar to atcerēties, mēs izvēlējāmies elements tagad. Un mēs esam nodot to iekšpusē elements mainīgs. Labot? Tātad, ja mēs gribam mainīt HTML uz iekšā, jo tas bija Bob pirms jums vēlaties mainīt šo tekstu Milo. Tāpēc mēs saucam HTML. Un mēs pateikt to, ko HTML iekšā šis elements ir tagad. Un tā tas maina to Milo, tāpēc es sniedza tai Milo. Mērķauditorija: Tātad viņi strādā kopā. [Dzirdams] JOSEPH ONG: Jā, jā. Viņi strādā kopā. Tāpēc viens no viņiem izvēlas elements pirmās. Un otrs dara kaut kas uz to. Jā. Mērķauditorija: [nedzirdama]. Ja šī metode atšķiras no HTML Jums ir metode vienādiem faktiskajiem. JOSEPH ONG: Jā. , Kas ir atšķirīga metode. , Kas ir atšķirīga metode. Un mēs varam aptvert, ka tikai otrā kad mēs nokļūt piemēru. Es gribu, lai pārliecinātos, ka mēs paātrināt jo mēs esam pietrūkt laika. Bet mēs esam darbojas kā laika nekā tagad. OK. Atdzist. Tātad, ja jūs vēlaties pievienot klasi, tur ir arī add klases metode. Tas ir tikai piemērs tam, ko jūs varat darīt ar jQuery. Ka tikai piebilst klasi. Ja jūs vēlaties, lai novērstu to, Jūs varat zvanīt noņemt. Tas ir tikai vēl viena lieta, ko jūs varat darīt. Tāpēc vairāk piemēru lietas jūs varat darīt. Tāpēc es varu tikai nodot to piemēram, tas top? Jaunākais noņemt. Ja es tikai izpildīt, ka JavaScript ir top mana failu, būs, kas strādā? Tiesības. Jo vidū vēl neeksistē. Tāpēc tas nav dodas uz darbu. Izpildes rīkojumu. Tā iet uz augšu pirmās. Kas? Mērķauditorija: Jaunākais pagaidām vēl neuzrakstītu? JOSEPH ONG: Jā. Jaunākajam vēl neeksistē. Tieši tā. Mērķauditorija: Jūs teicāt vidū. JOSEPH ONG: Sorry. Jaunākajam vēl neeksistē. Un otra lieta ir man nav ietvēra jQuery failu jautāt script src. Tāpēc tas nav dodas uz darbu. Patiesībā, man nav darīt, ka nākamais slaids, kas ir vajadzēja noteikt, ka vai nu. Bet kā mēs to darām, ir JavaScript ir notikums virza. Tātad, ko mēs darām, ir mēs izmantojam notikumu Handler, lai tas notiktu. Un tāpēc es izvēlētos dokumentu noteikt pirmās. Es saku, OK, ja dokuments ir gatavs, ļaujiet man palaist funkciju. Tātad tas ir viss, kas sintakses līdzekļiem. Es izvēlētos dokumentu. Tagad, kad dokuments gatavs, palaist funkciju. Un tā nekā šeit, kad dokuments ir gatavs, kas ir visas HTML ir piekrauts, tad es palaist funkciju kas noņem šo elementu. Un tāpēc tagad, kad es palaist šo funkciju ka es nonākt gatavs, es esmu jāgarantē, ka visi HTML uz lapa gatavojas pastāv pirmās. Jā. Jautājums? Mērķauditorija: Kas ir notikums atslēgvārds saskaņā ar funkciju? JOSEPH ONG: Tāpēc, ka pasākums atslēgvārds funkcija ir tikai parametrs, kas izpaužas nodots funkcijai jebkurā gadījumā. Tas ir tikai kaut kas Jūs saņemsiet bez maksas. Ja jūs izmantojat galvenās manipulatori pset8, ka pasākums varētu jums pastāstīt, par Piemērs, kas taustiņa on. Šajā gadījumā, lai gatavā gadījumā tas tiešām nav super noderīga. Bet par galveno leju notikumu, tas ir vairāk noderīgi, jo jums ir jāzina, kas taustiņa, piekļūstot taustiņu kods off šo notikumu objektu. Labot? Vai tas ir jēga? OK. Jā. Jautājums? Mērķauditorija: Tātad, jūs varat ievietot script tag zemāk? JOSEPH ONG: Tātad yeah. Jūs varētu likt skriptu tag zemāk. Bet tad tas tikai kļūst ļoti netīrs. Un mēs vēlētos, lai centralizētu visas Mūsu koda vienā vietā. , Un tas ļaus mums, lai to izdarītu. Atceros, agrāk es teicu, ka ir nicer veidā, lai nodrošinātu, ka elementi lapā, pirms jūs izpildīt kodu? Un tas ir tikai jauks veids jūs varētu paveikt to. Mērķauditorija: [nedzirdama]. JOSEPH ONG: Jā. Jums joprojām būs, vai ne? Jo atceros, tu iekļauts failu augšpusē lapā. Tātad, tas notiek, lai izpildītu vispirms pirms jums uz lapas apakšā. OK. Tātad jūs varat pievienot arī dažādi notikuma apdarinātājs veidu. Tas viens vienkārši apstrādā klikšķiem. Kad es noklikšķiniet uz jaunākais, tad tas pop up ar brīdinājumu. Tas ir tikai atšķirīgs notikuma veids. Atšķirībā no gatavības notikumu, jūs tagad Izmantojiet Click notikumu, kad saņemat noklikšķina uz elementa. Un tāpēc šajā gadījumā, atcerieties, klikšķi apdarinātājs tiek pievienota jaunākajam. Tā tas notiek tikai tad, ja Es noklikšķiniet uz jaunākais. Un otra, gatavu gadījumā tika pievienots dokumentam. Tāpēc tas gaida dokumentu būtu gatava. Jēga? Es domāju, ka es varētu doties tālāk. Jā. Jautājums? Mērķauditorija: [nedzirdama]. šajā gadījumā jūs izmantojat [nedzirdama]. JOSEPH ONG: Ak, jā, jo šī gadījumā, man ir jāgaida jaunākais elements, kas parādīsies uz ekrāna pirmo reizi pirms es varētu pievienot noklikšķiniet apdarinātājs tas, kas ir iemesls, kāpēc man to iekšā gada dokuments gatavs. OK. Un nākamais, tāpēc tas ir liels piemērs kā jūs varētu apvienot visu. Tas ir tikai formas validācijas piemērs Jūs esat redzējuši lekciju. Tāpēc ņemt to soli pa solim, kā jums iet caur šo. Un tas būs pilnīgi OK. Tikai izlasīt no augšas uz leju. Man ir forma apakšā. Ja dokuments ir gatavs, es piešķiru pakļauties kopējs veidā, tā, ka kad es iesniegt veidlapu, man vērtības iekšpusē katru no šīm izejvielām. Un es varētu pārbaudīt, ja tas ir tukšs. Ja tas ir tukšs, es atgriezties viltus, jo Es nevēlos, lai iesniegtu veidlapu, jo forma ir nepareizi. Ja parole ir tukša vai arī tā ir mazāk par astoņām rakstzīmēm, man nav jāiesniedz forma, jo tas ir arī nepareizi. Un atgriezties viltus tikai novērš veidā no iesniegšanas un dodas uz jaunu lapu. Un, cerams, tas ir jēga. Es domāju, ka jūs guys vajadzētu iet cauri Šis kods soli pa solim uz savu. Un, kad jūs saprotat, ko izvēlēties elementi un darīt lietas, kas tai faktiski nozīmē, tas dos daudz nozīmē jums. Jā? Mērķauditorija: Kāda name = lietotājvārds nozīmē? JOSEPH ONG: Tātad name = lietotājvārds un name = parole nozīmē tikai apskatīt atribūts neatkarīgi jūs izvēlēties. Un tad tas ir jāsakrīt. Tāpēc mēs ejam uz reģistrāciju. Un tad mēs skatāmies uz visām izejvielām un reģistrāciju. Un tad mēs izvēlēties vienu, kuru nosaukums atribūts ir vienāds ar lietotājvārdu. Tāpēc, ka pirmais selektors tikai izvēlas lietotājvārds ieejas. Un tas otrs selektors tikai izvēlas parole viens, jo tie ir To nosaukums atribūti noteikt, kādi viņi vajadzēja būt. Jautājums? Mērķauditorija: Iesniedzot, kā tas apakšējā daļa atrisināt augšējo daļu? JOSEPH ONG: Tātad tas ir tāpēc, gada notikumu apdarinātājs. Tāpēc mēs gaidām iesniegt notikumu kas izpaužas karsētie no formas. Un tas ir viss, kas ir jāiesniedz. Kāpēc es aicinu iesniegt tur? Tajā teikts, kad tiek iesniegts formu, Man iesniegt notikumu. Tāpēc ļaujiet man tikai pārtvert to un tad palaist šo kodu vietā. Jā? Mērķauditorija: Kāpēc jums ir ir funkcija notikumu? Kāpēc nevar jūs vienkārši [dzirdams]? JOSEPH ONG: Jo JavaScript, jūs ir jādeklarē funkcijas. Tas ir tikai, kā tas darbojas JavaScript. Jums jāsaka, ka tas notiek palaist funkciju. Tātad jūs esat stāsta to, ka tu esi gaida funkciju šeit vietā tikai cirtaini bikšturi. Mērķauditorija: Un funkcija ir kāds šāds? JOSEPH ONG: Jā. Funkcija ir viss, kas ir iekšā cirtaini bikšturi pēc šī funkcija atslēgvārdu. Jā? Mērķauditorija: [nedzirdama]. JOSEPH ONG: For iesniegt? Mērķauditorija: Nē, funkcijai bez pasākuma. JOSEPH ONG: Jā. Tātad bez pasākuma, Jums var būt, ka. Ja jums nav nepieciešams gadījumā, tad jūs varat vienkārši izlaist to. Bet, ja jūs darāt, tad jūs vienkārši ielieciet to tur. Jā. Ātrs jautājums? Mērķauditorija: [nedzirdama]. JOSEPH ONG: Jā. Jo to, kas jums jādara, document.ready vienkārši saka gaidīt visiem HTML lapā, lai slodze pirmo reizi. Un parasti, jūs vēlaties, lai jūsu elementi vietā, pirms jūs darbināt jebkuru kodu. Labi. Mums ir, lai saņemtu Ajax. Mums nav daudz laika. Tā plusi un mīnusi. JavaScript ir vieglāk mēģināt rakstīt ar jQuery. Bet jQuery ir sava veida lēns. Tas ir tāpat kā PHP ir lēnāks nekā C, jo tas ir interpretēts. Un jQuery ir nedaudz lēnāks nekā JavaScript, jo tas ir daudz lietas, ar kapuci. Un tādēļ, ja jūs izmantojat jQuery, tas ir tikai mazliet lēnāks nekā JavaScript, lai gan tas dod jums jauku eleganci. Un, visbeidzot, Ajax. Līdz šim ar Ajax, neesat redzējuši Ajax ziņā pset7 vēl, jo kad jūs darāt, jūs iesniedzat veidlapa citātu. Tas slodzes jaunu lapu. Tātad jums šo lielo balto zibspuldzi lappusē, bet, ka otrajā lapā slodzes, pareizi? Būtu ļoti jauki, ja jūs nebija šis flash. Piemēram, Facebook, ja jūs vienkārši atrodiet apakšas, tā piebilst, jaunu saturu bez atsvaidzināt visu lapu. Tātad kaut kas līdzīgs tas būtu jauki. Tas ir JavaScript kods kreisajā pusē. Jūs saņemsiet to, kas ir iekšā šīs ieejas. Jūs saņemsiet akciju info no Yahoo! Un tad jūs veicat lielu virkni, kas saka, OK, tas ir vēstījums es gribu parādīt uz ekrāna. Un tad jūs nodot šo ziņu iekšā daži HTML elements, kas izpaužas parādīti uz ekrāna. Tātad tas ir viss, kas notiek šeit. Tātad, būtībā, jo tas ir viss JavaScript un jums nav nepieciešams, lai palaistu vairs PHP, tas būs pārliecināties ka lapā nav atsvaidzināt. Tāpēc tas ir tikai abstrakta ideja ka es saku šeit tagad. Abstrakta ideja ir tāda, ka, ja jūs to visi JavaScript, jums nav lpp atsvaidzināt. Bet kā jūs tiešām darīt? Nu, patiesībā, parunāsim par problēma ar šo pirmo. Problēma ir tā, JavaScript, izpilde ir sinhronā. Tātad jums būs jāgaida uz vienu līnijas, lai pabeigtu pirms jums izpildīt nākamo rindiņu. Un kas notiks, ja es esmu gatavojas pār Yahoo!, un viņu serveri ir ļoti lēns, un tas aizņem viņiem trīs sekundes, lai dod man atpakaļ šo akciju info? Kad es hit, ka cenu līniju, ja izpilde ir sinhronā, kā tas ir ar noklusējuma, kas tas ir tikai gatavojas darīt, ir jūsu pārlūkprogrammā gatavojas apstāsies uz trīs sekundes. Un jūs neesat gatavojas, lai varētu to izdarīt kaut gan tas izpaužas, ka dati. Tas būs jāiesaldē. Un tas ir slikti. Jūs nevēlaties, lai lietotājs ir saldēti mājas lapā. Labot? Tas ir tikai slikti. Visi piekrīt? Ja jūs pārlūkošanu Facebook un to sasalst, un jūs nevar darīt neko, jums riktīgi neapmierinātas. Tāpēc risinājums ir mēs kaut ko asinhrono vietā. Tātad tas viss asinhrono lieta saka ir, es esmu gatavojas lūgt šo URL dažiem datiem. Un tad es esmu gatavojas, lai saglabātu turpinās. Es esmu tikai gatavojas glabāt izpildes kāds kods, kas bija pēc tam. Un tad, kad šie dati ir gatava, tad es to apstrādāt. Tas ir viss, kas saka. Mērķauditorija: Ajax tikai padara kods asinhrono? JOSEPH ONG: Tas ir asinhrons veids fetching datus. Tātad pirmā lieta, par Ajax tas ļauj man iegūt datus no ārēja vietnē. Un otra lieta ir tā nodrošina ka mana lapa nav nelaist, kamēr es esmu Ienesot šos datus. Tas ir asinhronā daļa no tā. Jo tas iet pie kaut kur citur, tāpēc es saku, ka glabāt notiek, kamēr tas ir pievilcīgs, ka dati, kas padara asinhrono. Es turpinu izpildes. Lai saglabātu, ka asinhrono ideja prātā. Un es jums parādīs, ko atšķirība ir. Sinhronais versija ir kreisajā pusē. Asinhronais versija ir labajā pusē. Paskaties numura, lai redzētu, kas pasākumi atbilst tam, ko izpilda katrā rindā. Tur, brīdinājums parādās pirmās. Jo kļūst akciju info no Yahoo! ir trīs sekundes, tas stendiem trīs sekundes. Un tad tas brīdina cenu Pēc šiem trim sekundēm. Tāpēc tagad, ka trauksmes šovi up tolaik - trīs sekundes iekšā Un tad tas brīdina par pēc tam. Tātad, tas vienkārši iet soli pa solim. Tas ir tāpat kā tas, ko jūs guys varētu pieņemt, pareizi? Ar asinhrono izpildi, jūs brīdināt pirmās. Tad jums iet off uz šo URL. Un tu saki, es esmu gatavojas tikai lūgt datiem. Un tad es esmu gatavojas apstrādāt to vēlāk. Tātad, tas nekavējoties izpilda nākamais rindā pēc tam man darīt, ka asinhrono pieprasījumu. Tātad 0,001 sekundes, jūs redzat brīdinājuma hi. Izpildīt šo funkciju, trauksmes bye. Un tāpēc es solījumu, ka es varētu apstrādāt datus vēlāk, ko notiek, ir tad, kad, ka dati nāk atpakaļ trīs sekundes vēlāk, tad es palaist, ka funkcija, kas man ir tur. Jā? Mērķauditorija: Vai jūs varētu precizēt, vai noskaidrot, kas Ajax nozīmē? JOSEPH ONG: Tātad Ajax ir tā, ka, ja es vajag datus, kad es esmu par mājas lapā, un es nevēlas, lai atsvaidzinātu lapu, tad Es izmantot šo tehnoloģiju, ko sauc Ajax. Tas būtībā nozīmē tikai to, aiziet atnest datus no citas mājas lapā. Un darīt to tādā veidā, ka tikai nav kabīne manu mājas lapā. Mērķauditorija: Tā ir, ka raksturīga daļa JavaScript vai jQuery? JOSEPH ONG: Tātad kāds rakstīja veidu, kā izdarīt tas JavaScript sen. Vienā brīdī tas nebija. Un lai kāds izgudroja šo tehniku lai ļautu cilvēkiem pieprasīt šos datus šādā veidā. Un viņi rakstīja daži sīkumi lai to izdarītu jums. Un jQuery tikai dod jums šo ļoti jauks veids, kā to izdarīt ar šo $. get funkciju. jautājumi? Es varu atbildēt uz jautājumiem par Ajax pēc tam too. Es būšu šeit. Tāpēc tas pieņemsim mums atnest datus bez atsvaidzināt lapu. Un pieņemsim mums darīt to asinhronā veidā, kas nesasalst lapu. Pārāk garš, nav lasīt, ja tas izskaidrojums ir pārāk garš, lai jums. Tātad beidzot, cross-site skriptu uzbrukumiem. Mēs redzējām to ar Zamyla. Ja manā datu bāzē kāds ir šo vārdu, kas ir šis skripts tagu, un es ir dažas kodu savā lapā, izdrukas no cilvēku vārdus pēc kārtas, vai man ir daži JavaScript kodu, kas ievieto šis nosaukums uz lapu, ko HTML izpaužas ražo? Nu, es izdrukāt HTML tagu. Es izdrukāt visus šos tagus. Man uz to daļu, kur es esmu druka veic ar saviem draugiem. Es izdrukāt Lauren out. Tā izdrukāt Milo out. Un tad mans vārds datu bāzē ir skripts post unflattering Facebook statusu. Jo es ievietota to uz lapu jo izskatās, ka JavaScript, kad lapu tiek nosūtīts lietotājam, tas izpaužas izpildīts, JavaScript. Un tā tas ir tas, ko mēs saucam cross-site skriptu uzbrukums. Kāds liek ļaunprātīgu informāciju jūsu datu bāzi, kas varētu atbilst daži papildu virkni vai daži JavaScript virkne. Un, ja tā izpaužas jāizdrukā uz lpp šādā veidā, tad kāda notiek tā, ka slikti kods tiek izpildīts ka man nav paredzējis lai to saņemtu izpildīts. Un tas ir viss, cross-site skriptu uzbrukums ir. Un kā jums apkārt tas ir kā Zamyla teica. Jūs vienkārši wrap lietas HTML speciālie simboli. Un šī HTML speciālie simboli ir PHP funkcija, kas novērš šāda veida lieta no notiek ar Jums Ja jums ir ļaunprātīga string jūsu datu bāzē. Tas tikai izplūst tā, lai tas nav saņemt interpretēt kā HTML. Tas aizstāj maz kronšteini ar to, ko mēs saucam vienībām. Un mēs devāmies pa to lekciju too. Tāpēc es domāju, ka jūs guys ir jābūt labu izpratni par to. Jautājumi? Jā. Mērķauditorija: Tātad, kā būtu [dzirdams]? JOSEPH ONG: Saka, ka atkal. Mērķauditorija: Kā būtu monitors - JOSEPH ONG: Right. Tātad jums ir kaut kas, kas saka, ja Es reģistrs, tipa manā vārdā. Es vienkārši ierakstiet šajā jomā, mans vārds ir stript post unflattering Facebook statuss tuvu skriptu tag. Un tas tikai izpaužas nodot datu bāzē, jo es nevaru pateikt, kāds pasaulē nav vārdu ar kreiso bultiņu tajā vai vārdu skriptu tajā. Tas nav īsti jēgas. Tāpēc es vienkārši ir, lai pārliecinātos, ka es sanitize stuff pirms es to izdrukāt , lai lapā. Mērķauditorija: Tātad HTML īpašas kartes novērš skriptu tagus? JOSEPH ONG: Jā. Tāpēc tas netraucē skriptu tagus. Tas tikai padara pārliecināts, ka script tags nesaņem interpretēt kā HTML vai - yeah. Tas tikai nāk uz augšu, kā tas, ko tas patiesībā ir. Labi. Tā, ka bija viktorīna pārskatīšanu. Atdzist. [Aplausi]