HANNAH Blumberg: Helo bawb. Rydym yn mynd i ddechrau arni dim ond ychydig o funudau yn gynnar gan fod gennym lawer cyfan o ddeunydd i gael drwy. Rwy'n Hannah. Rwy'n TF. Maria yn mynd i fod yn ymuno ni mewn dim ond cwpl o funudau. Mae'n dysgu adran dde cyn. Rwy'n dysgu adran hawl ar ôl, felly rydym yn mynd i'w gadw'n i'r awr a hanner. Felly, fel y gwelwch yma, mae gennym gryn ychydig o bynciau mae angen i ni i gael drwy, felly byddwn yn mynd ychydig yn gyflym. Ond os ar unrhyw adeg rydym yn dweud rhywbeth yn rhy gyflym neu os nad ydych yn ei ddeall, croeso i dorri ar draws gyda chwestiynau. Rydym am fod yn gallu gwneud hyn Sesiwn mor ddefnyddiol adolygu i bob un ohonoch ag y bo modd. Awesome. Felly gadewch i ni neidio i'r dde gyda rhai pynciau yr ydym mewn gwirionedd iawn, a gwmpesir yn fyr iawn ar gyfer y cwis 0 yn y sesiwn adolygu cwis 0. Felly gan ddechrau gyda rhestrau cysylltiedig. Felly, dim ond gwnewch yn siŵr eich bod wedi rhywfaint o gwybodaeth sylfaenol am restrau cysylltiedig ac maent yn gyfforddus yn gwneud rhai o'r gweithrediadau sylfaenol. Felly, dim ond i adolygu, yn gysylltiedig rhestrau yn well na araeau oherwydd y gallant dyfu ddynamig. Felly, rydym wedi bod fantais enfawr. Rydym wedi gweld eu defnyddio mewn tablau hash pan fyddwn ddim yn gwybod yn union faint o pethau rydyn ni'n mynd i eisiau i fewnosod i mewn i'n strwythur data. Yn anffodus, mae gennym darnau o y rhestr cysylltiedig i gyd dros gof, felly ni fyddwn o anghenraid yn gallu gwneud mynediad amser yn gyson i unrhyw elfen yn y rhestr cysylltiedig. Er mwyn dod o hyd i elfen benodol, rydym yn rhaid i ailadrodd yr holl ffordd o'r dechrau. Felly cadw mewn cof bod y rhan fwyaf o'r gweithrediadau sylfaenol omega o 1. Felly mewnosod yn unig yw mynd i gymryd 1. Dileu yn mynd i gymryd n ers i ni rhaid i chi fynd yn ei chael yn oddi ar y rhestr. A gallai chwilio cymryd, ar y gwaethaf, n. Ni allwn wneud rhywbeth fel chwilio deuaidd ar restr cysylltiedig gan na allwn yn unig ar hap neidio i'r canol. Cwl. Awesome. Mae ychydig bach o staciau. Mae hyn, unwaith eto, daeth i fyny ar gwis 0, er mwyn i chi Dylai fod yn super yn gyfforddus ag ef. Ond ar gyfer staciau, rydym yn gofyn i chi i gofio pentwr o hambyrddau. Ac mae'n mynd i fod yn gyntaf yn, bara allan. Felly rydym yn dal dŵr pethau i fyny yn y pentwr, ac yna os ydym yn ceisio cymryd rhywbeth off-- yr ydym ffoniwch popping off y stack-- rydym yn dod oddi ar y brig. Ac os ydym am roi rhywbeth yn y pentwr, rydym yn galw ei gwthio. Felly, mae bob amser yn mynd i fod yn tyfu i fyny o'r gwaelod fel pentwr o hambyrddau. Awesome. Rydym wedi staciau a welwyd ar waith gyda'r ddau rhestrau cysylltiedig a arrays. Os ydych yn gweithredu gyda arrays, yr ydych am i wneud yn siŵr i gadw golwg ar y maint a gallu. Felly maint yn mynd i fod y cerrynt nifer o bethau yn eich stac, tra bod capasiti yw cyfanswm y o bethau y gallwch storio yn eich pentwr. Cwl. Yn yr un modd iawn, mae gennym ciwiau. Yn yr achos hwn, yn hytrach na meddwl am pentwr o hambyrddau, yn meddwl am linell. Mae hyn yn mynd i fod yn gyntaf i mewn, cyntaf allan. Felly os ydych yn leinin i fyny ar gyfer rhywbeth yn y siop, rydym yn gobeithio y bydd y person yn gyntaf yn llinell yn mynd i gael help yn gyntaf. Yn hytrach na dweud gwthio a pop fel rydym yn ei wneud ar gyfer stac, rydym yn unig yn dweud enqueue a dequeue. Ac eto, os ydych yn gweithredu hyn gydag amrywiaeth, mae angen i ni gadw golwg nid yn unig y maint a gallu, ond hefyd y pen, a oedd yn yn mynd i fod ar flaen ein ciw. Cwl. Unrhyw gwestiynau am unrhyw un o hynny? Awesome. Symud i'r dde ar hyd. OK, tablau hash. Dyma lle mae'n dechrau cael yn ddiddorol iawn. Felly tabl hash yn un gweithredu o amrywiaeth cysylltiadol. Felly, yn y bôn yr hyn a ddigwyddodd yn gennym yr holl mewnbwn hwn, ac yr ydym yn ei roi i hash swyddogaeth sy'n dweud, OK, dyma lle yn y tabl hash mae'n perthyn. Felly y swyddogaeth hash symlaf ein bod wedi gweld yn cael ei dim ond dweud, OK, mae'n debyg ein bod am roi llinynnau yn ein tabl hash. A syniad syml iawn allai fod i ddweud, OK, gadewch i ni dim ond trefnu yn ôl y lythyren gyntaf y gair. Fel y gallwch weld yma, rydym yn cymryd banana, rydym yn ei roi trwy swyddogaeth hash, ac y mae'n ei ddweud, hey, bod Dylai mynd ar fynegai 1. Felly, gallwn ei hanfod feddwl am hash bwrdd fel criw o wahanol bwcedi. Ac mae pob un o'r bwcedi rhai yn mynd i ddal y pennaeth rhestr cysylltiedig. Ac yn y rhestr honno cysylltiedig yw lle y gallwn mewn gwirionedd yn rhoi gwahanol ddarnau o ddata. Felly deifio ychydig bach yn fwy i mewn i swyddogaeth hash, dyma yr enghraifft Fi jyst Disgrifiodd lle rydym yn unig yn dweud, OK, yn cymryd y llythyr cyntaf y gair ac rydym yn mynd i ddatrys i mewn i'r bwcedi. Felly yn ôl pob tebyg, bydd yna 26 o bwcedi, un ar gyfer pob llythyren o'r wyddor. Pam nad yw hyn yn swyddogaeth hash fawr? Beth sy'n gwneud hyn heb fod yn ddelfrydol? Yeah. GYNULLEIDFA: Rydych chi'n mynd i gael gwrthdrawiadau. HANNAH Blumberg: Yeah, yn union. Rydych yn mynd i gael gwrthdrawiadau. Felly dyna un peth. A byddwn yn siarad am sut y gallwn atgyweiria gwrthdrawiadau mewn dim ond eiliad. Problem arall gyda hyn swyddogaeth hash arbennig yw bod ein gwahanol bwcedi yn mynd i fod o eithaf sylweddol wahanol feintiau. Rydym yn gwybod bod yna llawer gyfan mwy o eiriau sy'n dechrau gyda A na X, felly rydym yn mynd i gael iawn bwcedi anghytbwys yn ein tabl hash. Cwl. Felly ie, gadewch i ni fynd yn ôl at pwynt y gwrthdrawiadau. Beth ydym yn ei wneud os oes gwrthdrawiad? Mae gennym gwpl opsiynau gwahanol. Felly un, felly mae'n debyg ein bod yn ceisio i roi aeron yn ein tabl hash. Ac rydym yn gweld, o, yr ydym am i'w roi yn mynegai 1, ond banana eisoes yn byw yno. Beth ydym yn mynd i'w wneud? Mae gennym ddau brif ddewis. Rhif un yw y gallwn ddweud, OK, does dim lle yn fynegai 1, ond gadewch i ni jyst cadw edrych drwy hyd nes y gallwn ddod o hyd fan agored arall. Felly, byddwn yn dweud, OK, gadewch i ni ei roi yn y fan a'r lle 3. Dyna un opsiwn. Mae hynny'n cael ei alw llinol treiddgar. Ac ail ddewis yn ei ddweud, OK, wel, gadewch i jyst yn gwneud pob un o'r bwcedi hyn fod penaethiaid rhestrau cysylltiedig. Ac mae'n iawn os mae mwy nag un peth mewn bwced. Rydym yn jyst yn mynd i atodi iddo ar y tu blaen. Felly dyma y gallwch weld, OK, pan fyddwn yn mewnosod aeron, rydym yn dim ond yn cymryd banana, math o gwthio dros ychydig a thaflu aeron i mewn 'na. A dyna gwbl iawn hefyd. Gelwir hyn yn gadwyno ar wahân. Gallwch feddwl am hyn fel math o fel amrywiaeth o benaethiaid i restrau cysylltiedig. Unrhyw gwestiynau am hash tablau, swyddogaethau hash? Awesome. Coed a geisiau. Felly coeden yn unrhyw fath o strwythur data lle mae rhyw fath o hierarchaeth neu ryw fath o Safle i'ch gwahanol wrthrychau. A bydd hyn yn dod yn super glir pan fyddwn yn gweld enghraifft. Ac rydym yn gweld ceisiau, ynghyd gyda byrddau hash, yn pset5-- sydd, unwaith eto, gêm hollol deg ar gyfer hyn quiz-- fel data arall strwythurau sydd o fewn ein gallu storio pethau gwahanol. Yn achos geiriadur, rydym yn storio bwnsied o eiriau. Felly, gadewch i ni edrych ar rai coed. Felly, mae hyn yn enghraifft o goeden. Mae ganddo fath o strwythur, bod strwythur hierarchaidd, lle gallwch weld bod mae hyn 1 nod ar y brig Mae rhyw fath o safle uwch na 2 a 3, sydd yn uwch na 4, 5, a 6 a 7, sydd yn uwch na 8 a 9. Felly dyna i gyd yn ei olygu i coed, er mwyn i chi yn unig fath o'r llun hwn yn eich pen. Yn awr, mae gennym un neu ddau o coed mwy arbenigol. Felly, un enghraifft yn goeden ddeuaidd. A choeden deuaidd yw, unwaith eto, dim ond yn mynd i fod yn strwythur data gyda rhyw fath o hierarchaeth, ond mae pob un o'r nodau Gall gael ar y mwyaf ddau o blant. Dyna lle y gair deuaidd yn dod. Felly, mae hyn yn enghraifft o goeden deuaidd. Felly dyna categori llai o goed. Nawr, gadewch i ni gael hyd yn oed yn fwy penodol ac siarad am chwiliad deuaidd trees-- deuaidd coed, yn hytrach. Felly dyma mae'r syniad yn cael ei nid yn unig y mae pob nôd cael ar y mwyaf ddau o blant, ond mae pob un o'r plant i'r chwith yn mynd i fod yn llai a phob un o'r plant i'r iawn yn mynd i fod yn fwy. Felly sylwi mewn dim ond ein goeden ddeuol, mae ' dim perthynas rhwng y rhifau. Ond yn ein chwiliad deuaidd coeden, rydym yn gweld, OK, dyma 44. A phob rhif ar ochr chwith y 44 yw popeth yn llai ac i'r chwith yn fwy. A bod yn dal ar bob lefel y goeden. Felly dyma, mae hyn yn llai na'r 22 ac mae hyn yn fwy na 22. A dyna goeden chwiliad deuaidd. Pam rydym yn meddwl ei fod yn cael ei alw coeden chwiliad deuaidd? Pa algorithm mae'n ei yn eich atgoffa? GYNULLEIDFA: Chwilio Binary. HANNAH Blumberg: Chwilio Binary. Oherwydd os ydych yn chwilio am Rhif arbennig yn y goeden hon, ar bob pwynt, gallwch guro oddi ar hanner y goeden, sy'n wych. Ac felly mae hynny'n mynd i roi rhywbeth i ni sy'n edrych yn llawer fel chwiliad deuaidd. Unrhyw gwestiynau? Mae pob hawl, oer. Mae pob hawl, yn ceisio. Ffefryn ni i gyd. Felly, mae hyn yw'r enghraifft a rydym wedi gweld criw yn y dosbarth. Ac eto, mae hyn yn unig yw arall ffordd y gallwn storio data. Yn achos geiriadur, unwaith eto, mae hyn yn unig yw mynd i fod llinynnau. Felly, gadewch i ni weld beth mae hyn mewn gwirionedd edrych fel ar lefel ychydig yn is. Felly, gadewch i ni edrych mewn un nod mewn trie. Ac rydym yn gweld, OK, mae mynd i fod yn Boolean a nod, pwyntydd at nod. Ac rydym yn gweld bod y Gelwir Boolean is_word. Felly y bôn, dyna mynd i gyd-fynd i trionglau bach hyn, sy'n yn dweud, os ydych chi wedi gotten yma, eich bod wedi dod o hyd i air cyflawn. Rydym yn gwybod bod "weledol" dros dyma air gyflawn, ond dim ond T-U-R nid yn air oherwydd nid ydym yn gweld mai ychydig delta. A bod ychydig delta, unwaith eto, cyfateb i is_word hwn, is_word Boole hwn. Ac yna mae gennym amrywiaeth o blant. Felly, ar bob lefel, byddwch yn fod â nod penodol, ac y pwyntiau nod at amrywiaeth o wyddor cyfan. Fel y gallwch weld, unwaith eto, yn picture-- hwn rwy'n mynd i gadw neidio yn ôl ac forth-- bod y casgliad ar y brig Mae criw o wahanol nodau dod oddi ar ohono. Mae ganddo 26, neu 27 os ydych am i gynnwys gymeriad ychwanegol. Ac mae hyn yn rhoi i ni yn ffordd i storio ein data mewn modd y gellir ei edrych ar y gallwch edrych i fyny super gyflym. Beth yw'r amser am-edrych am trie? GYNULLEIDFA: [Anghlywadwy]. HANNAH Blumberg: Yeah. Mewn theori, mae'n amser cyson. Dim ond mynd i fod maint y gair yr ydych eisiau edrych i fyny. Hyd yn oed os byddwn yn ychwanegu zillion mwy o eiriau i'n trie, nid yw'n mynd i fynd â ni yn hwy i benderfynu os air a roddir yn y trie. Felly dyna neis iawn. GYNULLEIDFA: A wnaethoch chi jyst ymgychwyn y arae? Byddwch yn colli pwynt neu ddau. A allwch chi jyst siarad am hynny am eiliad? HANNAH Blumberg: Cadarn, yn hollol. Cwestiwn da. Y cwestiwn oedd, rydym yn cael amrywiaeth sy'n mynd i gael seren nôd fel hytrach na dim ond nod, dde? Cwl. Felly dyma beth yr ydym yn ei ddweud yw ein amrywiaeth yn unig mynd i fod yn awgrymiadau i araeau eraill. Felly, mae'n essentially-- ei fath o teimlo fel rhestr cysylltiedig yn y modd hwn lle mae pob un o'r plant hyn dim ond tynnu sylw at y nôd nesaf. A'r ffordd yr ydym yn mewn gwirionedd yn penderfynu, hey, OK, rydym wedi bwysleisiodd drwy cyfan air, yn y gair hwn yn y geiriadur, rydym yn unig yn gwirio is_word hwn. Cwestiwn mawr. Yeah. GYNULLEIDFA: OK. Felly beth oedd y Rhedeg gyfer y trie? HANNAH Blumberg: Cadarn. Felly mae'r Rhedeg am trie ar gyfer am-edrych yn mynd i fod amser yn gyson. Felly, 'i' jyst yn mynd i fod y nifer o lythyrau yn y gair. Nid yw'n ddibynnol ar y maint y geiriadur neu faint y strwythur data. Felly dyma enghraifft ychydig yn symlach. Yn yr achos hwn, gallwch weld bod y gair ystlumod yn y geiriadur a bod gennych chwyddo, ond i chi Nid oes rhaid i rhywbeth fel sw. Sut y byddem yn gwneud sw? Sut rydym yn ychwanegu at ein sw geiriadur, at ein trie? Yeah. GYNULLEIDFA: Gwneud is_word wir am y [Anghlywadwy]. HANNAH Blumberg: Da. Felly, byddem yn dweud Z-O-O, ac yna rydym Byddai'n well am wirio oddi ar y bocs hefyd. Great. Gadewch i ni gymharu fyr iawn ceisio yn erbyn tablau hash. Ceisiau yn wirioneddol wych oherwydd, fel y dywedasom, maent yn darparu am-edrych cyson-amser. Ond anfantais enfawr yw eu bod humongous. Gallwch gael yr ystyr, hyd yn oed wrth edrych arno, ei fod yn mynd i gymryd llawer iawn o gof. Felly, maent yn mynd i fod yn llawer fwy na tablau hash, ond maen nhw'n mynd i roi ni amserau am-edrych yn gynt o lawer. Felly dyna fath o dy tradeoff, yr hyn yr ydych yn gofalu amdano, boed yn cyflymder neu gof. Unrhyw gwestiynau ar unrhyw un sydd, pob un o'r strwythurau data C. Beautiful. IAWN. Rydym yn mynd i symud ymlaen i ychydig ychydig o ddatblygiad ar y we gyda Maria. MARIA ZLATKOVA: Lovely. IAWN. HANNAH Blumberg: Gallwch ddefnyddio fy ngliniadur. MARIA ZLATKOVA: Nice. OK, oer. Wrth i ni symud yn awr at y we datblygu, buom yn siarad ychydig am caniatadau newid o ffeiliau a chyfeiriaduron fel y gallant fod yn hygyrch i ddefnyddwyr eraill, i'r byd, ac fel y gallwn weld sut bôn gallwn eu cyfleu pan fyddwn yn datblygu pethau fel wefannau ein bod ni wedi bod yn ei wneud yn bennaf. Felly, rydym yn gweld y gorchymyn chmod, sydd yn newid modd, yn y bôn. Dyna gorchymyn Linux a mae'n newid caniatâd mynediad o system ffeiliau gwrthrychau. Ac gwrthrych system ffeiliau yn dim ond cyfeiriadur, ffeil, unrhyw beth y gallwch newid y caniatâd o. Felly, er mwyn gweld hawliau'r ffeil, rydym deipio 'r ls gorchymyn, rhestr, -L. A phan fyddwn deipio hynny, rydym yn fel arfer yn gweld rhai caniatadau sy'n edrych fath o fel hyn o flaen enw cyfeiriadur. Felly d yn cyfeirio at cyfeiriadur. Ac yna mae gennym dri Trioedd y bôn cyfeirio at y caniatadau naill ai defnyddiwr, grŵp, neu y byd. Mae'r mathau o ganiatadau a allwn gael ar gyfer y tri grŵp o bobl naill ai'n r ar gyfer darllen, w am ysgrifennu, a x ar gyfer gweithredu. A gallwn gael rhai ar gyfer y grŵp a byd yn ogystal. Y peth anodd yw bod weithiau pan fyddwn yn deipio 'r archa chmod, byddem yn teipio rhywfaint rhif a oedd yn cynnwys tri ddarnau. Felly, gallem ei wneud fel 777 a bod y bôn cyfeirio at y gwerth ychwanegol o bob un o'r trioedd hyn gan y byddai r cyfeirio at 4, byddai w cyfeirio at 2, a byddai x cyfeirio at 1, felly pan ei ychwanegu i fyny, bob un o'r rhifau yn dod i lawr i nifer cronnus at werth cronnus rhwng 0 a 7. Felly, gallem hefyd gael 0 nid ar gyfer unrhyw ganiatâd o gwbl. A byddai hynny yn y bôn ei roi i ni y caniatâd ar gyfer naill ai y defnyddiwr, y grŵp, neu'r byd. Unrhyw gwestiynau am hyn hyd yn hyn? GYNULLEIDFA: dywedodd chi ddarllen yn 4? MARIA ZLATKOVA: Ydw. GYNULLEIDFA: [Anghlywadwy]. HANNAH Blumberg: Yup. GYNULLEIDFA: Ac yna drwy ychwanegu bawb Byddai eraill yn dangos eich rhif. MARIA ZLATKOVA: Yeah. Yeah. Mae'r rhain yn gwestiynau mawr. Hyfryd. Nesaf, rydym yn neidio i mewn HTML ac yn ychydig mwy am ddatblygiad ar y we. Felly HTML yn unig yn golygu Iaith Arwyddnodi HyperText. A dyna y markup iaith sy'n safon ei fod yn a ddefnyddir i greu tudalennau gwe. Mae'n cael ei alw yn iaith markup oherwydd nid yw'n llunio mewn gwirionedd. Nid yw'n dweud sut y dylai rhywfaint cod gael eu gweithredu neu unrhyw beth fel 'na. 'I jyst yn darlunio ac disgrifio sut y we Dylid dudalen yn cael ei sefydlu gyda phob un o'i elfennau a sut y dylent edrych i'r defnyddiwr. Mae rhai o'r tagiau HTML i ni Aeth drosodd yn y canlynol. Mae ein holl ddogfennau HTML dechrau gyda'r html DOCTYPE. Yna, rydym bob amser yn cael y tag html. Mae gennym pen a chorff. Ac mae'n bwysig bod HTML wedi y math hwn o strwythur nythu am ei fod yn glir iawn. Ac yna mae'n dod yn amlwg iawn pan fyddwn yn Mae angen i agor a gwirionedd tagiau agos. Ac rydym bob amser angen i gau tagiau ein bod wedi agor. A dyma mae gennym rai o'r mathau o bethau i ddod yr ydym am eu cael. Felly, rydym wedi, er enghraifft, teitl CS50. Ac yna rydym mewn gwirionedd Gall gysylltu dalen arddull sy'n diffinio sut yr ydym yn arddull ein gwefan. Dyna CSS. Rydym yn mynd i fynd drosto yn y ddwy nesaf o sleidiau yn ogystal. O fewn y corff, rydym yn gosod rhai dosbarthiadau a rhifau adnabod. Ac fel nodyn atgoffa, unwaith eto, IDs yn unigryw a dosbarthiadau Gellir neilltuo i eitemau lluosog. Ac mae hynny'n ei olygu yw bod gallwn ddefnyddio dosbarthiadau a IDs o fewn structures-- arall felly, er enghraifft, o fewn ffeiliau CSS neu arddull sheets-- i gyfeirio at elfennau penodol ac yn y bôn yn dweud ein bod am steilio neu ddylunio rhyw elfen mewn rhyw ffordd benodol. Ac rydym yn cyfeirio atynt gan eu IDs a dosbarthiadau. A gallwn hefyd gyfeirio at bethau gwahanol gan dagiau yn ogystal, ond IDs a dosbarthiadau dim ond rhoi i ni rai amryddawn a beth yn benodol yr ydym yn am gyfeirio at. Felly, dim ond yn enghraifft. Rydym yn gallu, unwaith eto, o fewn ffeil CSS lle rydym yn awyddus i ddiffinio rhai style-- felly lliwiau, ffontiau, a phethau fel that-- ein gallu diffinio'r arddull ar gyfer corff. Felly byddai hynny'n ei ddiffinio ar gyfer yr tag corff cyfan. Ond yna gallwn hefyd ddiffinio arddull ar gyfer #title. Ac eto, mae'r hashtag yn cyfeirio at ein ID a'r dot yn cyfeirio at ein dosbarth. Ac yna ar gyfer yr .info, rydym yn Gall hefyd osod rhai priodoleddau. A thrachefn, pan fyddwn yn mynd yn ôl, rydym wedi cael ein dosbarth o'r enw info a'n theitl adnabod. A gallwn weld ein bod yn cyfeirio iddynt gan #title a .info. GYNULLEIDFA: A fyddech yn dweud hashtag [? mabwysiadu i mi? ?] MARIA ZLATKOVA: Mae'n ddrwg gennyf? GYNULLEIDFA: A fyddech yn dweud hashtag [? mabwysiadu i mi? ?] MARIA ZLATKOVA: hashtag golygu ID, felly #title yn cyfeirio at ba bynnag elfennau wedi adnabod hwn a elwir teitl. Ac yna y dot yn cyfeirio at ddosbarth. Felly .info yn cyfeirio at yr elfen hon oherwydd mae wedi y wybodaeth y dosbarth. Yup. GYNULLEIDFA: Pam ydych chi'n eu gwahaniaethu yn y HTML? Pam ydych chi'n dweud pethau penodol yn cael eu IDs a rhai pethau yn y dosbarth? MARIA ZLATKOVA: Dyna i fyny i you-- HANNAH Blumberg: Ailadrodd y cwestiwn. MARIA ZLATKOVA: O, sori. Pam rydym yn gwahaniaethu rhwng rhai elfennau fel IDs ac elfennau eraill fel dosbarthiadau? Dyna dim ond am ei fod yn 'n sylweddol yn aml yn ddewis dylunio. Mae'n rhoi llawer ohonoch hyblygrwydd mewn bod gallu dweud fy mod am i'r eitem benodol i gael ID hwn oherwydd eu bod am i wneud llawer o bethau ag ef, ac yr wyf yn unig eisiau i ddiffinio arddull, arddull penodol neu liw beth bynnag ar gyfer yr eitem honno. A'r ffordd o wneud hynny yn unig gan roi ei wneud yn adnabod. Ac yna os wyf am gael un neu ddau o eitemau gwahanol cael, yn lle mynd a gosod their-- yn hytrach na gwneud iddo gan tag oherwydd byddai'r tag gosod y gell ar gyfer y tag cyfan am bob tro y tag yn cael ei ddefnyddio, gallwch chi osod dosbarth i eitemau lluosog. Ac yna dim ond mynediad i'r dosbarth ac yn dweud Rwyf am arddull y dosbarth hwn y ffordd honno. Ac eto, gall y dosbarth fod yn wahanol eitemau lluosog ac mae'r ID rhaid iddo fod yn unigryw. Cwestiynau Great. Unrhyw gwestiynau eraill? OK, awesome. Unwaith eto, dyma sut y dewiswyr hyn wedi'u cyfeirio yn CSS, gyda hashtag, gyda dot, neu heb unrhyw beth am aseinio arddull rhyw tag, fel corff. A dyma mae gennym y cyffredinol cystrawen o sut mae hyn yn cael ei wneud. I ailadrodd rhai gorau arferion ar gyfer HTML a CSS, mae angen i ni, unwaith eto, yn agos i gyd y tagiau HTML yr ydym yn agor. A beth rydym yn argymell eich wneud ar gyfer eich prosiectau terfynol, yn ogystal ag ar gyfer CS50 Cyllid, yw gwneud yn siwr bod pob un o'ch HTML dilysu. Ac mae hynny'n ei wneud gyda'r W3 Dilysydd. Ac yna hyn a wnaethom a yr hyn rydym yn argymell yn ei wneud yn gwahanu arddull, felly CSS rhag HTML markup. Felly unrhyw beth sy'n ymwneud â pha mor eich tudalen yn mynd i edrych ar eu golwg a sut y mae'n mynd i gael eu haddasu Dylai fynd i mewn i ddogfen CSS. Ac yna eich markup yn dweud sut mae pethau mewn perthynas â'i gilydd yn HTML, a ddylai fynd i mewn o'ch dogfennau HTML. Unrhyw gwestiynau? MHM. GYNULLEIDFA: Beth yn union sy'n digwydd ymlaen â'r dudalen dilysu pan fyddwn ni'n dilysu'r HTML sy'n [Anghlywadwy] creu? MARIA ZLATKOVA: Felly what-- meddwl eich. Felly beth yn union sy'n digwydd ymlaen gyda dudalen ddilysu a pham y mae angen i ni wneud hynny? Yn y bôn, mae angen inni wneud hynny am fod llawer o weithiau, eich porwr, os nad ydych yn cau tag neu rywbeth fel 'na, eich porwr yn dal i fynd i rendr tudalen ac efallai yn dal i weithio, ond mae'n arfer da i wneud yn siŵr bod rydych wedi, unwaith eto, ar gau dy pob tag, bod eich pob elfen yn y ffordd y dylent fod, ac yn y bôn ei bod yn erbyn y confensiynau sydd wedi eu rhagosod. Mae'n, unwaith eto, dim ond beth y dylech yn dysgu i fod yn ei wneud, yn hytrach na chael cod sloppier a phethau fel 'na. Yeah. O, sori. Roeddwn i'n meddwl eich bod yn codi eich llaw. GYNULLEIDFA: Na, yr wyf yn unig oedd [Anghlywadwy]. MARIA ZLATKOVA: OK. GYNULLEIDFA: Diolch yn fawr. MARIA ZLATKOVA: Wrth gwrs, diolch i chi. Felly unwaith eto, yn mynd ymlaen i sut gwybodaeth yn cael ei throsglwyddo a modelau cyfathrebu i drosglwyddo gwybodaeth. TCP / IP. TCP yn unig yn golygu Trosglwyddo Protocol Rheoli a IP yn cyfeirio at Protocol Rhyngrwyd. Ac mai dim ond yn cyfeirio at y ffordd y caiff data ei gyflwyno. Os byddwn yn cael rhywfaint o ddata sy'n Mae angen cyflwyno i you-- felly byddwch yn gwneud cais am weinydd penodol. Er enghraifft, pan fyddwn yn ceisiwch gael gafael ar cs50.net, rydym yn gwneud cais i y gweinydd CS50 ac rydym yn weld ein bod am gael y math hwn o wybodaeth. Ac yna yn seiliedig ar y protocol hwn am sut mae'r wybodaeth hon yn cael ei chyflwyno, y gweinydd yn rhoi gwybodaeth yn ôl i ni, y cleient. Ac yna rydym yn gallu gweld yr wybodaeth ar gyfer y dudalen ac, defnyddiwch hi. Felly, yna Protocol Trosglwyddo Hyperdestun yn unig yw protocol arall neu osod o gonfensiynau sy'n diffinio sut y porwr gwe a'r gweinydd gwe Dylai cyfathrebu. Ac yn rhoi hyn i gyd gyda'i gilydd, HTTP, unwaith eto, dim ond diffinio sut hyperdestun hwn a ddiffinnir gan y HTML ein bod wedi bod yn gweithio iddo, sut y dylid ei gyflwyno i chi a sut mae bod data sy'n cael ei ddarparu i chi yn cael i chi. A dyna pam, os ydych yn guys yn cofio o ddosbarth, cawsom lawer o geisiadau a chawsom lawer o gystrawennau ar gyfer ceisiadau hyn ein bod mynd i fynd dros hyn o bryd. Felly eto, pan fyddwn yn anfon cais i weinydd, mae'n rhaid i ni ddiffinio un neu ddau o bethau. Felly, mae angen i ni ddod o hyd i'r math o gais yr ydym yn gosod. Ac eto, yr ydym, er enghraifft, GET yn un math o ddull sydd gennym yn ein cais. Ac yna HTTP / 1.1 yn unig yw protocol yr ydym yn ei ddefnyddio ar hyn o bryd. Mae'r rhan fwyaf o'r amser, sy'n mynd at y protocol yr ydym yn ei ddefnyddio. Felly os oes gennych gwestiwn fel 'na ar eich cwis. Dyna y confensiynau fod gennym hyd yn hyn. Slaes yn cyfeirio at pa fath o bethau rydym yn gofyn. Yna, mae ein gwesteiwr yw, er enghraifft, yn hyn achos, yr ydym yn ceisio mynd i'r google.com. Felly, mae hyn yw gwerth am lu. Mae hwn yn fath o gais a allai gael ei anfon. Ac yna yn fath o ymateb a allai yn cael ei anfon, unwaith eto, yn seiliedig ar y protocol hwn, unwaith eto, HTTP / 1.1. Felly dyna y fersiwn HTTP eto. 200 OK yn unig yw y cod statws. A dyna OK yn unig yw ymadrodd yn seiliedig ar y cod hwnnw statws. Ac yna y Cynnwys-Type yn cyfeirio at y math sy'n cael ei ddychwelyd atoch sy'n am y dudalen gwefan eich bod yn derbyn a bod eich porwr Gall rendro ar ôl hynny. A dyna text / html. GYNULLEIDFA: Beth mae 1.1 yn ei olygu? MARIA ZLATKOVA: Dyna dim ond y Fersiwn o- oh, beth yw 1.1 yn ei olygu? Dyna dim ond y fersiwn, mae'r HTTP fersiwn o'r protocol yr ydym yn ei ddefnyddio. Cwestiwn mawr. Cwestiynau eraill? GYNULLEIDFA: A allech crynhoi Cynnwys-Type gyflym go iawn? MARIA ZLATKOVA: Er mwyn i yw'r hyn y gweinydd. y math o information-- beth yw math o gynnwys oedd y cwestiynau. Felly yr oedd y math o wybodaeth yr ydych yn mynd yn ôl o'r gweinydd, y math o data y gall y porwr, yna rendrad eich bod yn ei ddefnyddio. GYNULLEIDFA: A yw bod yr hyn y mae hyn protocol yn dweud i chi ei wneud? MARIA ZLATKOVA: Mae'n ddrwg gennyf? GYNULLEIDFA: A yw bod yr hyn y mae'r protocol yn ei ddweud? MARIA ZLATKOVA: Y protocol-- GYNULLEIDFA: --what y Cynnwys-Type yn cael neu what-- MARIA ZLATKOVA: Y protocol hwn yn seiliedig on-- beth yw'r protocol ddweud wrthych? Dyna dim ond y ffordd bod y wybodaeth hon ei gyflwyno i chi yn seiliedig ar ba fath o brotocol Roedd y wybodaeth hon yn cael ddosbarthu yn ôl atoch. A yw hynny'n gwneud synnwyr fath o? HANNAH Blumberg: Chi gallu meddwl am brotocol fel a-- Rwy'n credu Athro Disgrifiodd Malan ei yn y dosbarth fel math o fel a-- mae fel sy'n cyfateb i ysgwyd llaw ddynol. Dweud, fel, hey, rwy'n cais ac yr wyf yn gwybod sut i drin HTTP o fersiwn 1.1. Ac yna y gweinydd yn dweud, oh, OK, I-- a'r ddau yn bodoli. Rwyf hefyd yn gwybod sut i ddelio â HTTP / 1.1. Ac yr wyf i'n mynd i roi rydych yn ôl rhywfaint o gynnwys. Yn yr achos hwn, mae'n mynd i fod o fath text / html. Felly mae'n fath o dim ond ffordd ohonynt am communicating-- MARIA ZLATKOVA: 'I' jyst cadarnhau eich bod yn y ddau yn dilyn yr un fath protocol a bod y ddwy y cleient a'r server-- felly eich porwr ac mae'r server-- fath o yn gwybod beth rydych chi'n siarad am a chael y confensiwn am basio mewn data. GYNULLEIDFA: Felly mae'r Content-Type Rhan honno-- testun Cynnwys-Type / html-- dyna rhan ar wahân o'r un neges? Neu a yw'n rhan o gadewch i ni ddweud, 200? A yw 200 yn dweud wrthynt bod neu yw-- MARIA ZLATKOVA: 200 yn dweud y cyfan yn mynd yn iawn. Ac yna math o gynnwys yn fath o rhan ar wahân o'r un neges, a dweud y peth yr wyf yn wedi dychwelyd y math hwn o destun / html. Dim ond ei fod yn rhoi mwy o wybodaeth. Unrhyw beth i'w ychwanegu? IAWN. Unrhyw gwestiynau eraill am hyn? Awesome. Felly, mae rhai Statws HTTP eraill sy'n gallem gael yn ychwanegol at 200 OK, rhai yr ydym wedi gweld efallai o bosibl yn llawer yn 403 a 404. Felly 404, os ydych yn ceisio rhywbeth mynediad nad yw'n bodoli. Felly, er enghraifft, yn eich Psets CS50 Cyllid, os ydych chi wedi bod yn rendro quote.html ac nid oedd gan y ffeil i chi, ond yn lle hynny oedd gennych quote.php, bod yn arwain at 404 Ni chafodd ei darganfod oherwydd efallai na fydd y ffeil yn bodoli. Am 403 gwahardd, bod yn cyfeirio at y caniatâd. Felly os bydd rhai ffeil nad yw'n ddarllenadwy gan y byd, efallai y byddwch yn cael o 403 ddychwelyd. Mae rhai eraill eich bod allai get-- 301, Wedi symud yn barhaol; 302, wedi ei ddarganfod; 304, Modified; 400, Cais Drwg; ac Gwall Gweinydd yna Mewnol ar gyfer 500 a 503, y Gwasanaeth Ddim ar gael. Ydw. GYNULLEIDFA: Byddwn yn disgwyl i ar gof yr holl Statws hynny? MARIA ZLATKOVA: Byddai gennyf nhw ar eich taflen twyllo. [Chwerthin] GYNULLEIDFA: A ydym yn disgwyl i gwybod beth mae pob un sbarduno? MARIA ZLATKOVA: A ydynt? HANNAH Blumberg: Ar gyfer rhai yr ydym i wedi rhedeg into-- felly y cwestiwn was-- MARIA ZLATKOVA: A ydynt yn disgwyl i gwybod beth mae pob un o'r rhain statws Efallai y codau gael ei sbarduno gan? Felly, ar gyfer y rhai yr ydym wedi defnyddio ac yn rhedeg i mewn, byddwn yn dweud, ie. Felly, rydym yn bendant wedi gweld 200 OK ac yn darlithio mewn psets. Rydym wedi gweld 403, 404. Ar gyfer rhai eraill? HANNAH Blumberg: Hoffwn dweud 500 yn ymddangos yn gêm deg. MARIA ZLATKOVA: 500, yeah. HANNAH Blumberg: Yeah. Dim ond yn meddu ar synnwyr cyffredinol o'r hyn sy'n eu hachosi. A hefyd yn unig gan y rhain enwau, gallwch fath o fel gwneud ddyfalu'n fel at yr hyn mewn gwirionedd yn achosi iddynt. Er enghraifft, yn symud yn barhaol, yn ôl pob tebyg yw'r ffeil wedi symud yn barhaol. GYNULLEIDFA: Ond ar blaenorol arholiad, roedd hynny sut ydych chi'n disgwyl i ni ateb hynny? HANNAH Blumberg: Bod yn werth sero pwynt. Mae'r cwestiwn ar 418 ar y tebot yn dechnegol statws HTTP, ond roedd yn werth sero pwynt. Yn amlwg, nid ydych yn disgwyl iddo wybod iddynt. GYNULLEIDFA: A yw'n un go iawn? HANNAH Blumberg: Mae'n go iawn un, ond nid yw'n golygu unrhyw beth. 'I' jyst yn jôc. Pobl Rhyngrwyd yn ddoniol. MARIA ZLATKOVA: Cwestiynau Fawr, guys. Unrhyw gwestiynau eraill? GYNULLEIDFA: Beth yw gwall gweinydd mewnol? MARIA ZLATKOVA: Mewnol Gwall gweinydd yn unig yn golygu eich bod wedi bod gallu cyfathrebu gyda'r gweinydd am ryw reswm. Felly nid yw'n reidrwydd rhywbeth sydd wedi ei wneud gyda'r cleient neu rywbeth fel 'na. Nid wyf yn gwybod am unrhyw enghraifft benodol ein bod wedi mynd drosodd i egluro, ond yeah. HANNAH Blumberg: Cadarn. Felly, er enghraifft, fel gadewch i ni dweud oeddech yn gweithio ar mashup ac aeth gweinydd Google i lawr ar gyfer rhai rheswm, outage, gadewch i ni ddweud. Byddai hynny'n gweinydd mewnol wall neu o- ryw fath hoffi i chi Ni fyddai cael ymateb yn ôl. MARIA ZLATKOVA: Yeah. 'I' jyst pan fyddwch chi'n gallu cyfathrebu gyda'r gweinydd am ryw reswm oherwydd ohono'n mynd i lawr neu ryw reswm arall. Felly neidio i mewn PHP. PHP, yn wahanol i HTML, yn iaith raglennu. Ac rydym yn dechrau ei ddefnyddio oherwydd ei fod yn ddefnyddiol iawn ar gyfer datblygu ar y we. Rydym yn ei ddefnyddio gyntaf yn CS50 Cyllid. Ac yn y bôn yn ein helpu i ddod ynghyd markup hwn, y dyluniad, a sut yr ydym mewn gwirionedd yn defnyddio gwybodaeth i arddangos pethau ar dudalen we. Felly PHP ei hun yn golygu PHP Hypertext Preprocessor, felly mae'n backnorym ailadroddus ei ben ei hun. Ac agor tagiau ar gyfer PHP ydym y chwith a saethau i'r dde gyda'r marciau cwestiwn a php. Felly, rydym eisoes wedi gweld criw ohono. Yn awr, rydym yn jyst yn mynd i fynd dros rai o'r pethau sylfaenol am y peth. Felly, gyda PHP, y newidyn henwau yn dechrau gyda'r arwydd doler. Nid ydym yn pennu, unwaith eto, newidyn teipiwch anymore. Yn union fel y gwnaethom gyda C, Nid oes angen i ni wneud hynny. Gallwn wneud griw o wahanol stwff gyda newidynnau. Rydym yn gallu eu rhoi at ei gilydd drwy eu gydgadwyno'r gyda'r dot nodiant, a oedd yn Ni allem wneud yn C eto. Unwaith eto, mae gennym ychydig yn fwy amryddawn gyda PHP yn nhermau newidynnau. Unwaith eto, nid oes gennym brif swyddogaeth. A PHP Dehonglir yn hytrach na llunio, Felly, dim ond sut yr ydym yn gwneud ar gyfer ffeiliau C, nid oes gennym i wneud hynny ar gyfer PHP. Ond yn hytrach, y modd y mae'r iaith yn cael ei redeg gan ei hun, mae'n cael ei ddehongli. Ac yna teipio llac dim ond yn golygu ein bod Nid oes rhaid i bennu newidyn math a mathau amrywiol yn cael eu deall yn Rhedeg. GYNULLEIDFA: Ond beth wnaethoch chi olygu wrth dot concatenation? MARIA ZLATKOVA: Cadarn. Pan fyddwn eisiau rhoi pethau together-- felly os oedd gennym ryw newidyn sy'n Roedd gwerth 3 ac roedd un arall yr ydym yn newidyn nad oedd gan y gwerth llinyn, gallem roi'r newidynnau at ei gilydd trwy roi dot yn rhyngddynt ac yn eu gydgadwyno'r. Neu gallem greu Enw a elwir newidyn ac yn ei roi at ei gilydd gan gydgadwyno'r dau llinynnau. Felly, os oedd gennym llinyn yn dwbl dyfyniadau ac rydym yn rhoi dot ar ôl iddo, ac yna cawsom llinyn arall, bod Byddai creu llinyn yn gyfan gwbl. GYNULLEIDFA: OK. MARIA Latfia: A oedd hynny yn eglur? GYNULLEIDFA: Yeah. MARIA ZLATKOVA: OK. Ydw. GYNULLEIDFA: Pan fyddwch yn dweud dehongli yn hytrach na llunio, Nid ydych chi'n siarad am i chi ei wneud Mae angen i fod mor benodol wrth mae'n dod at PHP yn erbyn C? MARIA ZLATKOVA: Pan fyddwn yn dweud ddehongli yn hytrach na llunio, beth ydym yn ei olygu? Felly mae hynny'n golygu nad oes angen i ni ffeiliau gweithredadwy i redeg PHP. Mae'n golygu ei fod yn rhedeg ag y mae'n mynd. A yw hynny'n gwneud synnwyr? Mae ychydig yn fwy. HANNAH Blumberg: Felly yr ydych gallu meddwl am cyfieithydd fel rhaglen arall sy'n gyfrifol am fynd fesul llinell drwy PHP ac mewn gwirionedd yn gweithredu arno, yn hytrach na i lunio cyfan i lawr i deuaidd. Nid yw'n mewn gwirionedd yn golygu unrhyw beth am y ffordd benodol mae angen i ni fod. Mae angen i ni fod yn fanwl, ac nid ydynt anghofio'ch hanner colon, a gwneud yn siŵr eich bod wedi eich arwydd doler, a phethau fel 'na. Cwestiwn da. MARIA ZLATKOVA: Yeah. Felly fesul llinell, fel hytrach na gyda ffeiliau C, rhaid i ni wneud y rownd derfynol i gyd cyn y gallwn mewn gwirionedd yn rhedeg. Dyna'r prif wahaniaeth. Ond unwaith eto, ni allwn mewn gwirionedd fod yn llai penodol. Felly araeau yn PHP yn cynrychioli mewn gwirionedd map harchebu. Felly gwerthoedd araeau cysylltiol i allweddi. Roedd y ddwy ffordd ddatgan array, yn seiliedig ar gystrawen hon, gallwn fod yn fwy eglur wrth ddweud gennym amrywiaeth ac yr ydym wedi key1 hwn sy'n mapio i value1 hwn, key2 sy'n mapio value2. Neu gallwn jyst greu amrywiaeth sy'n cynnwys y gwerthoedd hun ac yna yr allweddi yn cael eu deall mewn ffordd. Unrhyw gwestiynau am hyn? GYNULLEIDFA: Beth fyddai yr allweddi fod yn yr ail enghraifft? 0, 1, 2, 3? MARIA ZLATKOVA: Er enghraifft, 'i' jyst Nid yw yr allweddi yn y yn ei wneud o reidrwydd gwneud gwahaniaeth. Maent yn unig yn diffinio sut y gallwch Defnyddiwch y gwerthoedd tu mewn iddo. Felly, os oedd gennym foreach dolen yn PHP a fyddai yn ein galluogi i fynd drwy'r holl werthoedd, gallwn fynd trwy'r holl werthoedd, hyd yn oed os oedd gennym ai peidio wedi diffinio allwedd penodol o fewn y safle cystrawen blaenorol. Felly, hyd yn oed gyda'r math hwn o amrywiaeth, gallem dal gael dolen foreach sy'n mynd drwy bob o'r gwerthoedd yn yr allwedd yn y rhesi. Felly, y gystrawen o foreach dolen, rydym yn dechrau gydag amrywiaeth. Mae'r newidyn $ arr yw ein amrywiaeth gwirioneddol ein bod yn y diffinnir yn y sleid flaenorol fel gwerth sy'n mynd llythrennol drwy bob un o'r gwerthoedd, waeth a cawsom allweddol neu beidio. Ac yna gallwn wneud rhywbeth gyda werth tu mewn i'r ddolen foreach. Felly eto, pe bai gennym amrywiaeth fel hyn yma created-- felly mae gennym y allweddol y foo a gwerth bar, yr allwedd Baz a gwerth qux-- gallwn gael dolen foreach sy'n yn mynd trwy amrywiaeth fel gwerth allweddol ac yna gwneud rhywbeth gyda'r allwedd a / neu werth. Ond nid ydym yn ei wneud o reidrwydd bob amser rhaid cael foreach dolenni bod yn mynd trwy amrywiaeth fel map allweddol i werth. Gallwn fynd drwy'r array dolen foreach fel gwerth. HANNAH Blumberg: Ac yr wyf yn meddwl canlynol-- oedd eich cwestiwn, beth yw'r mynegai ymhlyg? GYNULLEIDFA: Kinda. MARIA ZLATKOVA: Oh. HANNAH Blumberg: Yeah, yeah. Felly y bôn, os nad ydych yn pennu allwedd, mae'n mynd i fod yn 01. MARIA ZLATKOVA: Yeah. Yn union fel gyda C, 'i' sero mynegeio os nad ydych yn pennu allweddol. GYNULLEIDFA: Mae'n ddrwg gennyf. Allech chi roi cynnig ar siarad ychydig bach yn uwch? Rwy'n cael ychydig o trafferth clywed popeth. MARIA ZLATKOVA: Rydw i mor flin. Yeah, wrth gwrs. Felly, ydych chi eisiau i mi i fynd dros hyn eto? Neu a yw this-- GYNULLEIDFA: Felly ar y slide-- blaenorol os gallech fynd yn ôl am eiliad. MARIA ZLATKOVA: Wrth gwrs, mae'n ddrwg gennyf. GYNULLEIDFA: Felly yr ail Nid yw amrywiaeth yma yn gwneud ymddangos i fod â gwerth i allweddol, fath o [? achosiaeth. ?] MARIA ZLATKOVA: Iawn, ar y dde. GYNULLEIDFA: Felly sut mae hynny'n gweithio pan fyddwch yn dweud ei fod yn gyd neu ddim un. I mi, sy'n edrych fel a [? foo?] yn barod. MARIA ZLATKOVA: Yeah, yeah. Felly unwaith eto, mae hwn yn map archebu yn yr ystyr hwn bod yn cael eu deall, er enghraifft, y mynegeion Gellir yma eu deall fel 0, 1, 2, 3. Unwaith eto, mae hynny'n cael rhai mynegeion yw ein gyfwerth o gael allweddi wedi'u mapio ar werthoedd. Felly os yw ein allweddol oedd 0-- n chwith. HANNAH Blumberg: Na, mae 'sialc i fyny fan hyn. Mae'n mewn gwirionedd neis iawn. MARIA ZLATKOVA: Mae hynny'n wych. IAWN. Felly unwaith eto, byddai $ arr 0 fod yn yr allwedd ar gyfer y gwerth 1. Byddai 0 fod yn allweddol ar gyfer y gwerth 1. GYNULLEIDFA: Mae'n ddrwg gen i. Mae'n anweledig. HANNAH Blumberg: pob hawl, Nevermind. Roedd Chalk yn syniad drwg. Yr wyf yn cymryd yn ôl. Gallwch chi feddwl am yr allweddi fel 0 fapiau i werth 1. MARIA ZLATKOVA: Yeah. Felly, mae hyn yn 0, mae hyn yn 1, 2, 3. Gall y rhain fod yn eich allweddi. Gallwch feddwl amdanynt as-- yeah. Felly, yn lle cael allweddi penodol, eu bod yn math o ddeall fel bod mynegeion yn dechrau ar 0. Nid oedd y sialc oedd yn helpu. Yeah. GYNULLEIDFA: Ar gyfer y ddolen foreach, pe baem am weld y fel gwerth, byddai'n jyst yn awtomatig mynegai i 0? MARIA ZLATKOVA: Yeah. Byddai'n mynd drwy bob un o'r gwerthoedd. GYNULLEIDFA: [Anghlywadwy] fel 0 neu a fyddai ddim ond yn ei wneud 0? MARIA ZLATKOVA: Byddai gennych i ddweud wrth arwydd doler ac yna rhywfaint o enw amrywiol, gwerth. GYNULLEIDFA: [Anghlywadwy]. MARIA ZLATKOVA: Mae'n ddrwg gennyf? GYNULLEIDFA: Mae'n ddrwg gennym, rwy'n dim ond ceisio cofio. Sut fyddech chi ddim os ydych yn gallu gwneud hynny awtomatig mynegeio yn unig 0 o? MARIA ZLATKOVA: Felly sut y byddech yn gwneud hynny os na wnaethoch enwau allweddol penodol? GYNULLEIDFA: Yeah. MARIA ZLATKOVA: Byddwch byddai dim ond define-- dim ond dweud eich hun fel rhyw enw. Felly efallai yn eich psets, rydych guys cofiwch foreach $ rhes â $ rhesi, rydym yn creu ein hunain hwn $ rhes dweud rydym am fynd drwy res â $ rhesi. Hyd yn oed er nad oedd gennym y $ benodol rhesi diffiniedig, gallem dim ond yn mynd a dweud y gall hyn fod yn ein allweddol, a dim ond yn mynd drwy bob un o'r gwerthoedd. GYNULLEIDFA: Felly mae gwerth newidyn newydd rydym yn creu i storio [Anghlywadwy]? MARIA ZLATKOVA: Felly nid yw'n hanfod newidyn newydd. Mae'n newidyn sy'n cyfeirio at y tu mewn y rhesi i bob un ohonynt. HANNAH Blumberg: Mae'n enw newidyn newydd. MARIA ZLATKOVA: Yeah, mae'n enw newidyn newydd, ond nid yw'n inherently-- yeah. Mae'n dim ond newidyn newydd y gallwch wneud hynny. Felly, dim ond sut ydych gwnaethom $ Rhwyfo â $ rhesi, rhesi Roedd enw newidyn newydd yr ydym Gallai creu yn ein dolen foreach. Nid oes rhaid iddo i preexist cyn hynny. GYNULLEIDFA: A allech chi fynd trwy'r rhesymeg ar gyfer pob un, gan ddefnyddio'r enghraifft yno? MARIA ZLATKOVA: MHM. O, sori. Dyma enghraifft. Cadarn. Felly, ar gyfer pob un array-- felly mae hynny'n golygu mynd i'r casgliad hwn yn allweddol value-- sy'n mynd i fynd drwy'r amrywiaeth hon ac yn mynd yn gyntaf ac yn cael foo, mae'r foo allweddol a'r bar gwerth. Ac yna ar yr ail ailadroddiad o'r ddolen ar gyfer, mae'n mynd i fynd drwy'r ac yn cymryd y Baz allweddol a'r qux gwerth. Ac yna gallwch chi wneud rhywbeth gyda naill neu'r llall ohonynt neu'r ddau ohonynt. GYNULLEIDFA: Felly, y syniad y tu ôl bod â bwynt allweddol i werth, beth ydych chi'n pen draw gael mynediad? MARIA ZLATKOVA: Beth yw'r syniad o gael pwyntio allweddol i werthfawrogi? Dim ond confensiwn arall, un arall ffordd o fynd drwy'r amrywiaeth a bod yn gallu cael mynediad at naill ai'r allweddol neu werth neu ddau ac yn eu defnyddio. GYNULLEIDFA: Beth yw'r rôl i'r orchymyn bod y foreach yn rhedeg i mewn? Felly, pe baem yn ychwanegu elfen i'r amrywiaeth yn ddiweddarach, Byddai hynny yn y rhai cyntaf galw i mewn yr amrywiaeth foreach, neu a fyddai'n nes ymlaen? MARIA ZLATKOVA: Felly beth yw y drefn y mae'r foreach ddolen yn mynd trwy amrywiaeth i mewn? Mae'n mynd drwy'r cyntaf elfen i'r elfen olaf, at yr elfen ychwanegu diwethaf. Os ydych yn ychwanegu elfennau yn nes ymlaen, byddent fod yn accessed-- elfennau cyntaf y byddai cael mynediad fel y cyntaf elfennau o'r array, ac yna byddech yn mynd drwy bob un o'r yr elfennau fel math o ordered-- Nid yw harchebu, ond mae'r ffordd y mae maent wedi cael eu rhoi yn y rhesi. GYNULLEIDFA: Felly elfennau newydd yn cael eu hychwanegu yn nes ymlaen? Felly maen nhw'n added-- byddant yn y rhai olaf yn y [? ailadrodd. ?] MARIA ZLATKOVA: Elfennau Newydd can-- yn y bôn, pan fydd elfennau newydd yn cael eu hychwanegu, maen nhw'n cael eu hychwanegu at ddiwedd y rhesi? GYNULLEIDFA: Yeah. MARIA ZLATKOVA: Yr wyf yn credu hynny. Ydw. Ac yna gyda'ch dolen foreach, ar ôl i chi wedi ychwanegu elfennau newydd a byddwch yn mynd drwyddynt, yr elfennau newydd fyddai fod accessed-- yr elfen newydd, os yw'n Ychwanegodd ddiwethaf, byddai'n cael mynediad ddiwethaf. GYNULLEIDFA: Allwch chi jyst roi enghraifft o rywbeth a fyddai [Anghlywadwy] gyda rhywbeth gyda gwerth fel [Anghlywadwy] neu werth, hoffi sut y byddech yn fformadu hynny? MARIA ZLATKOVA: Cadarn. A allaf roi enghraifft o'r hyn y byddem yn ei wneud gyda'r gwerth? Felly, beth y gallech guys fod yn gyfarwydd â yw ein bod yn wedi mynd drwy amrywiaeth a'i argraffu yn y bôn pob un o'r elfennau, er enghraifft, fel rhan o rhestr neu rywbeth sy'n harchebu. A yw hynny'n gwneud synnwyr neu ydyn ni eisiau i'r canlynol-- GYNULLEIDFA: A allwn ni argraffu'r gwerthoedd hyn allan? MARIA ZLATKOVA: Yeah, gallem argraffu ac yna y bôn $ werth oherwydd ar hynny werth penodol, byddem yn argraffu werth tu mewn iddo. Felly, os oeddem ar ein iteriad cyntaf ohono ac rydym hargraffu $ gwerth, byddem yn argraffu bar. GYNULLEIDFA: A oes yna hefyd am dolenni yn PHP neu dim ond ddolenni foreach? MARIA ZLATKOVA: Mae hefyd ar gyfer dolenni ym PHP. Ac mae eu rhesymeg yn bennaf y un fath â'r hyn yr ydych wedi bod yn ei ddefnyddio i. GYNULLEIDFA: Felly ei werth yn null. MARIA ZLATKOVA: Mae fel yr un fath. Yeah. GYNULLEIDFA: Im 'jyst yn mynd i ofyn. Felly pan fyddwch yn datgan array, nid oes angen i chi i ddweud pa faint mae'n mynd i fod, sy'n golygu eich bod yn gallu jyst adio a chymryd ymaith elfennau [Anghlywadwy]. MARIA ZLATKOVA: Yup. Yup. Yn union. Pan fyddwn yn datgan amrywiaeth, rydym yn Nid oes angen i ddweud pa faint y mae, er mwyn i ni dim ond ychwanegu elfennau arno nes ymlaen hefyd. Mwy o gwestiynau? Felly dod â PHP a HTML gyda'i gilydd, hyn yr ydym wedi seen-- yn dda, er enghraifft, yn yr enghraifft hon, mae gennym ffurflen HTML sydd â maes mewnbwn. A'r cae mewnbwn yn enwi dim ond ac yna mae ganddo botwm Anfon. A phan fyddwch yn pwyswch y Submit botwm, yn ein ffeil hello.php, oherwydd bod y dull ar gyfer y ffurflen yn cael, gallwn gael mynediad beth bynnag sydd wrth enw gan hyn yn cael newidyn byd-eang sy'n yw-- y gystrawen ar ei gyfer yn $ _GET. Ac yna gallwn gael mynediad beth bynnag fo'r mewnbwn defnyddwyr tu mewn y ffurflen ar gyfer enw trwy nodi enw'r y maes hwnnw. Unrhyw gwestiynau eraill neu unrhyw cwestiynau ar yr enghraifft benodol? GYNULLEIDFA: Ble mae'r PHP? MARIA ZLATKOVA: Yma. Felly dyma ein tag agoriadol ar gyfer yr PHP. GYNULLEIDFA: O, iawn. MARIA ZLATKOVA: Ydw. HANNAH Blumberg:? Y = yn llaw-fer am hyn yw PHP a dim ond adlais. GYNULLEIDFA: Oh. MARIA ZLATKOVA: Yeah, mae'n ddrwg gennyf. Dylwn fod wedi gwneud hynny'n glir. HANNAH Blumberg: Print. MARIA ZLATKOVA: Mae'n dim ond y swyddogaeth sy'n ein galluogi i argraffu rhywbeth. Cwestiwn mawr. Felly going-- ie. GYNULLEIDFA: A oes yn mynd i fod yn eithaf ychydig o codio â llaw o PHP a HTML ar gwis 1? MARIA ZLATKOVA: Gall fod cryn dipyn o ddehongliad o PHP a HTML, nid o reidrwydd fel llawer iawn o codio, er efallai bydd rhaid i chi ysgrifennu dolen foreach, fodd bynnag, mae ar gyfer dolen. Unrhyw un o'r dolenni sydd gennym cwmpasu yma yw gêm deg. A dyna yn bennaf iddo. HANNAH Blumberg: Byddwn yn cael ei baratoi. Yn yr un modd yr ydym yn gofyn i chi ysgrifennu criw o swyddogaethau C ar cwis 0, Byddwn yn barod i wneud y un peth yn PHP a JavaScript. MARIA ZLATKOVA: Yeah. HANNAH Blumberg: Byddwn yn dweud a little-- fel nad ydym yn mynd i wneud i chi ysgrifennu HTML anferth tudalen dim ond oherwydd mae hynny'n ychydig ddiflas, ond efallai y byddwch yn cael rhan. Dyna gêm hollol deg. Fel dudalen HTML bach, yn hollol deg. GYNULLEIDFA: OK. Beth am yn JavaScript hefyd? HANNAH Blumberg: Yeah. Gêm deg JavaScript ar. MARIA ZLATKOVA: Yeah. Dyna gêm hollol deg. HANNAH Blumberg: Byddwn yn cael at hynny yn debyg 10 munud. MARIA ZLATKOVA: SQL, unwaith eto, Iaith Ymholiad Strwythuredig. Mae'n bôn yn ein galluogi i reoli data mewn rheoli cronfa ddata berthynol system. Mai dim ond yn y bôn yn golygu bod gennym rywle i storio rhywfaint o ddata y gallai rydym am defnyddio mewn gwefan neu ar ryw ffurf arall. Ac yna mae gennym ymholiadau i gael gwybodaeth o'n cronfa ddata, neu i fewnosod gwybodaeth ynddynt. Mae llawer o'r comin ones-- DIWEDDARIAD, RHOWCH, SELECT, a DELETE. Felly, er DIWEDDARIAD, mae hyn yn y gystrawen am ddiweddaru data mewn cronfa ddata. Diweddaru'r tabl hwn a elwir yn tabl trwy ddweud SET, gallwn osod rhai gwerthoedd yn yr holl rhesi i rywbeth cyfartal arall. Felly, gallwn hefyd nodi rhai penodol ceisiadau yr ydym am eu addasu a gall hynny fod yn defnyddio LLE. A gallwn nodi mai dim ond eisiau addasu rhai rhesi lle mae'r tŷ ar gyfer, pe bai gennym tabl o fyfyrwyr ac roedd pob un o'r myfyrwyr tŷ, felly byddem yn unig yn addasu rhai gwerthoedd lle bo tŷ hafal lledrwr, er enghraifft. Ar gyfer RHOWCH, gallwn fewnosod gwerthoedd penodol mewn tabl. Felly INSERT I bwrdd, ac yna y gwerthoedd, ac yna mewn cromfachau, rydym yn nodi sy'n gwerthfawrogi yr hoffech ei fewnosod. Felly INSERT I bwrdd, col1 a col2, y gwerth yn val1 a val2. Felly, mae hyn yn mewnosod y bôn rhes newydd i mewn tabl cynnwys y gwerthoedd 1 a 2 o dan y colofnau 1 a 2. Ac yna rydym yn mynd i fynd dros enghraifft cyflym o sut mae hyn yn edrych yn fel yn ein cronfa ddata ychydig. Ond mae ymholiad olaf hwn yr wyf credu ein bod ni'n mynd i fynd dros, SELECT, 'i jyst yn ein galluogi i ddewis data o dabl o bosibl ei ddefnyddio wedyn. A'r ffordd yr ydym yn gwneud hyn yw ein dim ond ei storio mewn rhyw newidyn. Ac yna gallwn o bosibl ei ddefnyddio eto. Felly seren SELECT yn golygu dewis pob. Dyna dim ond yn llaw-fer ar gyfer dewis bawb. O dabl BLE, yr ydym yn edrych ar gyfer rhai cyflyrau penodol, felly lle mae colofn yn dychwelyd rhywbeth, er enghraifft. Os ydym yn unig yn awyddus i dewis pob o dabl, mae hyn yn unig yn dewis yr holl golofnau a phob rhesi o dabl. Ac yna DILEU GAN bwrdd LLE col hafal rhywbeth, mae hyn yn unig yn dileu rhai rhes oddi wrth ein bwrdd lle mae gennym rai amodau penodol. Yn yr achos hwn, mae'r amodau yn golofn yn dychwelyd rhywbeth. Felly, dim ond yn enghraifft gyflym o hyn. Os oes gennym y tabl hwn yn iawn yma ac rydym yn mewnosod i mewn tabl, gwerthoedd hyn, a fyddai'n mewnosod rhes newydd. Ac os oedd gennym auto-cynyddiad, byddai hyn dim ond cynyddiad ein ID 0-1 to 2. Os byddwn yn dewis i gyd gan fyfyrwyr, mae'n dim ond yn dychwelyd yr holl feysydd a phob rhesi. Lle flwyddyn yn fwy na neu'n hafal i 2016, Byddai hynny yn unig yn dychwelyd Hannah a minnau. Ac yna os ydym yn unig a ddewiswyd id flwyddyn a blwyddyn GAN myfyrwyr lle mae'r tŷ yn Cabot House, bod Byddai, unwaith eto, yn dychwelyd Hannah a minnau. Yna, os ydym yn dileu gan fyfyrwyr lle mae enw yn hafal i Rob, a fyddai'n dileu y rhes gyfan. Ac yna os ydym yn gosod y enw, myfyrwyr DIWEDDARIAD Enw SET yn dychwelyd i Daven LLE tŷ yn hafal Cabot House, mae hynny'n mynd i fynd i rhesi hynny ac yna diweddaru'r enw. Ac yna ychydig o fathau o ddata SQL yn CHAR, VARCHAR, INT, a float. Mae'r rhain yn cael eu gêm deg. Byddwn yn mynd ar ôl tro a gwnewch yn siŵr eich bod yn gwybod ac yn eu cael ar eich taflen twyllo, ystyr pob un o'r cymeriadau hynny wedi cael eu defnyddio ar gyfer, beth ydych yn eu defnyddio ar eich psets, a gwnewch yn siŵr eich bod yn gyfarwydd a gyfforddus â gorfod dewis o wahanol fathau o ddata yn eich pset. Ydw. GYNULLEIDFA: Beth oedd y tabl hwnnw ei storio? Yeah, lle mae tabl hwn ei storio? MARIA ZLATKOVA: Wel, ar hyn o bryd, nid yw'n cael ei storio. Beth bynnag, lle mae tabl hwn ei storio? Ond gellir ei storio mewn cronfa ddata SQL. GYNULLEIDFA: A ble mae'r gronfa ddata SQL? Yn y cyfrifiadur, ar-lein rhywle, y gweinydd? MARIA ZLATKOVA: Gall fod yn nifer o bethau gwahanol. HANNAH Blumberg: Rydym wedi rhyngwynebu â Tablau SQL yn bennaf â phpMyAdmin. Felly, gallem ofyn gweinydd i'w storio ar ein cyfer. Gallem yn eu storio ar ein cyfrifiadur eich hun. MARIA ZLATKOVA: 'I jyst yn dibynnu ar sut yr ydych am ei wneud i chi eich hun. Ond rydym wedi bod yn storio iddynt, fel y crybwyllwyd Hannah, ar phpMyAdmin, sydd yn ar-lein. Ac yna y ffordd yr ydym yn defnyddio PHP a SQL, rydym yn ei storio i mewn i rai newidyn yr hyn yr ydym wedi holi amdano. Felly, os ydym SELECT gyd O hanes lle user_id hafal i id SESIWN, Byddai bod yn dewis yr holl rhesi ar gyfer y person penodol sydd wedi mewngofnodi oddi hanes bwrdd a didoli i mewn rhesi. Peth cŵl i wybod yw swyddogaeth honno ymholiad CS50 yn amddiffyn yn erbyn tagiau pigiad SQL. Mai dim ond yn golygu ei fod yn gwneud yn siwr mewnbwn sy'n cael ei gofnodi yn gywir a bod y person sy'n yn mynd i mewn i'r mewnbwn Nid yn ceisio mewnbwn rhai maleisus cod naill ai i ollwng ein tablau neu ddileu popeth tu mewn ein cronfa ddata. Mae trosolwg cyflym o'r Model Model View Rheolwr, 'i' jyst yn ffordd o drefnu a meddwl am cod. Mae'n eto, patrwm dylunio. Yr hyn mae hynny'n ei olygu yw ein bod yn can-- ac mae'n arfer da i wahanu gwahanol rannau o'n cod a'r hyn y maent rheoli i mewn y tri patrymau. Felly mae ein barn ni yn fwyaf aml ein templedi, mae ein cynllun, y ffordd ein bod yn gosod sut y mae ein cod yn edrych. Mae hynny'n bennaf ein ffeiliau CSS a'r ffordd ein bod yn diffinio dyluniad ein cod, yn y bôn. Mae ein rheolwr yn bennaf yr hyn rydym wedi bod yn ei wneud gyda ffeiliau PHP. Felly unwaith eto, gan weithio gyda'r wybodaeth sydd gennym a diffinio sut y mae hynny'n gwybodaeth yn cael ei ddefnyddio, ac yna basio y wybodaeth naill ai ar yr olygfa neu'r model. Ac y model, y ffordd yr ydym i wedi bod yn defnyddio yw wedi bod yn ein cronfa ddata, felly lle mae ein gwybodaeth yn storio felly mae wedi rhywle i fyw mewn, ac unrhyw rai o'r cod sy'n ymwneud â'r ffordd ein bod yn cael y wybodaeth honno neu'r ffordd yr ydym yn diweddaru'r wybodaeth honno. Felly, yn y model MVC, HTTP ceisiadau yn cael eu hanfon at weinydd y we. Yna, mae'r dehongli rheolwr y cais gan y defnyddiwr ac yna dilysu'r mewnbwn defnyddwyr. Mae'n ddewisol bod gennym y rheolwr cyfathrebu gyda model, felly rywbeth fel ein cronfa ddata neu ryw swyddogaethau eraill hynny cyfleu gwybodaeth. Ac yna yn olaf, y rheolwr yn pasio gwybodaeth ymlaen i'r olygfa fel y gall fod yn rendro ac yn ei allu yn dod yn weladwy i unrhyw berson mynediad at y dudalen we. Unrhyw gwestiynau? Awesome. Felly eto, y model, ei swyddogaeth, unwaith eto, yn storio parhaus o wybodaeth, rheoli a threfnu data. A hyn yr ydym wedi ei weld hyd yn yn hyn yw'r gronfa ddata MySQL ac unrhyw ffeiliau data a allai eu defnyddio. View, cyflwyno gwybodaeth i y defnyddiwr, y UI, neu rhyngwyneb defnyddiwr. Ac yr enghraifft o hyn yw HTML. Ac yna gallai fod yn rhaid fach iawn PHP. Felly mae am ddolen bod ailadrodd dros ddata sy'n cael eu hargraffu yn rhan o'r olygfa, fel y gwrthwynebu i'r rheolwr. Ac yna llawer o'n ffeiliau PHP dod o fewn y categori rheolwr. 'I jyst yn ymdrin â cheisiadau defnyddwyr a yn cael gwybodaeth oddi wrth y model. Neidio i mewn i'r Ddogfen Model Gwrthrych, mae hyn yn unig cyfeirio at y ffordd HTML dogfennau yn cael eu trefnu. Ac maen nhw'n eu trefnu i mewn i goeden strwythur sydd â hierarchaeth. Felly, os ydym yn cael mynediad i [Anghlywadwy] cynrychiolaeth o'r ddogfen, gallwn weithio gyda'r ddogfen, fel rydym yn trin gwrthrychau yn y bôn. Ac i wneud hyn ychydig bach yn gliriach, pan mae gennym lawer o'n gwahanol tagiau ymateb i wahanol lwybrau yn ein coeden. Ac yna ar gyfer yr enghraifft hon, rydym yn yn cael y nôd ddogfen cychwyn. Mae gennym, felly, ein nod HTML hynny rhannu'n pen a chorff. Mae gan Pennaeth teitl ac yna teitl yn cynnwys helo, byd. Ac mae ein corff yn unig yn cynnwys helo, byd yn ogystal. Felly unrhyw gwestiynau ar unrhyw un o'r pethau yr ydym sylw hyd yma? Ac os nad yw, bydd Hannah cymryd drosodd gyda JavaScript. Awesome. HANNAH Blumberg: OK, oer. Os bydd unrhyw beth yn dod i fyny gyda PHP neu HTML, neu unrhyw un o'r pethau Maria a gwmpesir, gallwn bob amser yn oedi. Rydym yn gwneud yn well ar ar ôl tro, felly awesome. A dim ond i fynd yn ôl yn gyflym iawn i hyn, os edrychwch ar bob arholiad flwyddyn ddiwethaf, mae hyn dod i fyny either-- yma yw rhai HTML, yn gwneud diagram hwn. Neu dyma diagram hwn, yn gwneud rhai HTML, felly yn bendant ymarfer hynny. Ac yna dyna un Gwarantedig gwestiwn y gallwch ei gael yn iawn. Cwl. Felly, gadewch i ni siarad am JavaScript a sut y mae'n ychydig yn wahanol i ieithoedd fel PHP a C, y ddwy iaith a welsom ymlaen llaw. Felly rhif un, mae wedi teipio llac. Mae hynny fel PHP, ond yn wahanol i C. Mae'n iaith dehongli. Unwaith eto, mae hynny'n debyg PHP, yn wahanol i C. A hyn yn mynd i'n galluogi i use-- ei yn gweithio 'n sylweddol' n glws gyda tudalennau gwe. Mae'n mynd i ganiatáu i ni i drin cynnwys a sut y mae'n edrych a'r hyn y mae'n ei wneud. Rydym yn mynd i weld ychydig o Ajax. Mae'n caniatáu i ni gyfathrebu asynchronously gyda gwahanol gweinyddwyr a chael gwybodaeth. Ac mae hyn yn beth sydd wir yn gwahanu oddi wrth JavaScript PHP a C yw ei bod yn ar ochr cleientiaid. Mae PHP a C yn fel arfer ochr y gweinydd. Ar gyfer y rhan fwyaf a bron yn gyfan gwbl beth rydym wedi gweld, o leiaf yn y dosbarth hwn, JavaScript yn gweithredu ar ochr cleientiaid, sy'n golygu bod y porwr mewn gwirionedd yn gyfrifol am redeg. Ac mae hynny'n golygu nad ydym yn ei wneud Mae angen i ryngweithio gyda'r gweinydd. Felly mae'n golygu y gall fod yn llawer cyflymach oherwydd ei fod mewn gwirionedd dim ond ei fod yn Chrome, 'i' Safari, 'i' Firefox, beth bynnag yr ydych defnyddiwch gwirionedd yn rhedeg eich JavaScript. GYNULLEIDFA: Beth mae asynchronous yn ei olygu? HANNAH Blumberg: Ah, beth yn golygu asynchronously? Cwestiwn mawr. Asynchronously yw-- yn dda, y cynnwys lle rydym yn ei ddefnyddio y mae, OK, yr ydym yn creu tudalen ar y we ac mae angen inni gael rhywfaint o wybodaeth. Felly, gyda yr enghraifft o mashup, rhywfaint o wybodaeth y gallem ei eisiau yw teitlau erthygl. Nawr, rydym could-- un opsiwn yw i wneud hynny synchronously ac mae hynny'n golygu gadewch i stopio, ewch cael yr erthygl, cael yr erthygl cefn, ac yna rendro, ond byddai hynny'n wir yn araf. Byddai hynny'n profiad y defnyddiwr gwael oherwydd byddai fyddwch chi ond yn eistedd yno yn aros am rywbeth i ymateb. Asynchronously golygu ein fe parhau i fynd am ein busnes, gan wneud y dudalen, ac byddwn yn anfon oddi ar gais math o hynny'n mynd i yn digwydd yn y cefndir. Rwy'n credu ein bod yn defnyddio'r enghraifft mewn Darlith o alw Rob a dweud, hey, gallwch edrych hyn i fyny i mi a dod yn ôl i mi, yn hytrach na dim ond fi aros ar y ffôn. Felly asynchronously golygu ei fod yn digwydd yn y cefndir i ffwrdd oddi wrthym ochr yn ochr. Cwestiwn mawr. Unrhyw beth arall? Great. Byddwn yn neidio llawer mwy i mewn ceisiadau asynchronous gyda Ajax. GYNULLEIDFA: A yw JavaScript-- lle mae yn disgyn gyda model-weld-reolydd? HANNAH Blumberg: Cwestiwn Fawr. Ble mae JavaScript disgyn gyda model-weld-reolydd? Hm. Amcana gall fall-- felly nid ydym yn ei wneud fel arfer hoffi squish ag ef i'r patrwm, ond mae'n debyg byddwn yn dweud, Iawn, felly JavaScript mewn gwirionedd yn mynd i ganiatáu ni i gasglu data, dehongli data, mewn gwirionedd yn ei wneud pethau ystyrlon gyda data. Yn y ffordd honno, mae'n iawn o reolaeth-debyg. Ond mae hefyd yn mynd i'n galluogi i arddangos pethau ac argraffu pethau. Yn y ffordd honno, mae'n iawn olygfa-debyg. Yeah. Felly mae'n fath o fel PHP yn lle y gall fod yn fath o ddau. Cwestiwn da. Unrhyw beth arall? Mae pob hawl, awesome. Symud i'r dde ar hyd. Felly, gadewch i ni weld enghraifft o sut y gallwn ddefnyddio JavaScript yn un o'n rhaglenni ar y we. Felly byddaf yn ystyried hyn index.html gyda criw o HTML. A'r peth rwyf am i chi canolbwyntio ar a yw hyn yn tag script. Ac mae hyn yn dweud, OK, yr wyf eisiau rhedeg rhai JavaScript a dyma lle mae'n byw. Mae'n byw yn hello.js. Ac yn debyg iawn CSS, gallem rhoi JavaScript fewn y HTML. Pam y gallai rydym am i wahanu 'ii maes? Yeah. GYNULLEIDFA: Haws i ailysgrifennu? HANNAH Blumberg: Yeah. Mae'n haws i'w defnyddio ar draws tudalennau gwe gwahanol. Mae'n cadw pethau glanach. Mae'n arfer da yn unig. Awesome. Ateb da. Felly da, felly mae hyn yn mynd i fod yn ein index.html. Ac yna lawr yma yw ein ffeil JavaScript bach bach. A'r holl mae'n ei ddweud yn effro Helo, byd. Felly beth sy'n digwydd yw pan dudalen hon renders-- felly os byddwch yn mynd i ba bynnag gwefan mae hyn yw-- cyfan sydd yn mynd i ddigwydd a yw'n mynd i ddweud, OK, dwi'n mynd i redeg y cod JavaScript. Ac mae hyn cod JavaScript dim ond dweud effro Helo, byd. Felly, yr wyf i'n mynd i gael hyn Ychydig pop-up gyfeillgar. Cwl? Dyna fath o fel ein cyntaf JavaScript rhaglen, mae ein Helo, byd. Gadewch i ni edrych ychydig yn fwy am yr hyn y cystrawen JavaScript yn edrych fel. Ac yn benodol, gadewch i ni gymharu â C a PHP, yr ydym wedi gweld o'r blaen. Yn JavaScript, rydym yn mynd i gael var, enw'r newidyn, ac yna ei werth gwirioneddol. Ac nid ydym yn pennu math, dim ond fel yn PHP, ond yn wahanol iawn yn C. Felly er enghraifft, os oeddem am i storio gwerth 50, yn C, byddai'n rhaid i ni ddweud, hey, C, yr wyf am yn gyfanrif, Rydw i'n mynd i alw i, ac mae ei gwerth yn 50. Yn PHP, mae'n ychydig yn haws. Rydym yn dweud, hey, yr wyf am newidyn Gelwir ff ac mae ei gwerth yn 50. Yn yr un modd iawn, yn JavaScript, rydym yn dweud hey, yr wyf am newidyn enw i, ei werth yw 50. Bob tro wedi hynny yr wyf yn ei ddefnyddio i, nid oes angen i mi ysgrifennu var. Dim ond fi o'r pwynt hwnnw ymlaen. Yn yr un modd, yn C, lle unwaith y byddwn yn dweud int i, rydym yn unig yn defnyddio i. Cwl? Iawn. Gan symud ymlaen at dolenni, yn ffodus, mae'r rhain bron edrych exactly-- Rwy'n credu eu bod yn union yr un fath â'r hyn a dolenni yn mynd i edrych fel yn rhywbeth fel C lle mae eich am ddolen yn mynd i gael tri parts-- yn initialization, cyflwr, a'r wybodaeth ddiweddaraf. Mae dolen tra, mae'n edrych yn union un fath. Rydym yn unig yn rhoi yn amod. A do tra dolen, unwaith eto, yn union yr un fath. Rydym yn rhoi yn amod. Lets 'ddeud fy mod i eisiau ailadrodd over-- Roeddwn i eisiau gwneud rhywbeth bum gwaith. Yn C, efallai y byddwn yn ysgrifennu ar gyfer init ff yn dychwelyd 0. ff yn llai na 5, fi ++. Unig wahaniaeth, yn JavaScript, yn lle dweud int i dychwelyd 0, yr ydym yn dweud ff var dychwelyd 0. Beautiful. Dyna yr unig wahaniaeth. Unrhyw gwestiynau am unrhyw un o hynny? Ydw. GYNULLEIDFA: Felly, yn PHP, 'i' yr un fath beth, ac eithrio ond fel newidyn? Neu oedd bod yn enghraifft var? HANNAH Blumberg: Yeah. Felly, yn PHP, mae'n mynd i fod yn arwydd doler. Felly, mae'n mynd i $ ff gyfartal 0, $ ff yn llai na 5, $ i ++. Cwestiwn mawr. Nawr, gadewch i ni siarad am datganiadau swyddogaeth. Yn C, pan fyddwn yn datgan swyddogaeth, rydym yn rhoddodd enw ac rydym yn rhoddes rhai paramedrau. Ac ar y dechrau, rydym yn ysgrifennu y math. Ym JavaScript, cyfan yr ydym rhaid ei wneud yw ysgrifennu y swyddogaeth gair allweddol sy'n yn dweud, hey, JavaScript, Rwy'n ar fin i ddiffinio swyddogaeth. Yn yr achos hwn, mae wedi enw swm. Ac mae'n cymryd dwy ddadl, x ac y. Sylwch nad ydym yn poeni am y mathau o x ac y. Ac yn union fel C, yr ydym wedi dychwelyd gair allweddol hwn, fel y gallwn wneud rhywbeth fel dychwelyd x ac y. Ac yn awr ar ôl i ni wedi ysgrifennu hyn yn gyntaf swyddogaeth, gallwn ddefnyddio swm yn unrhyw le. A dyna gwbl iawn. Un peth 'n sylweddol oera am JavaScript sydd yn iawn yn wahanol i C yw y gall swyddogaethau ei drin fel werthoedd. Felly, gallwn wneud rhywbeth fel yma lle Mae'n debyg fy mod yn cwmpasu hyn up-- Yr wyf yn gorchuddio swm var Rhan honno-- ac rydym newydd ei ddweud xy ffwythiant yn dychwelyd dychwelyd x plws y. Dyna beth fyddai'n cael ei alw swyddogaeth dienw. Mae'n swyddogaeth heb enw. Er bod hyn yn dweud swyddogaeth swm, blah, blah, blah, byddai hyn dim ond dweud swyddogaeth. Ond yn awr hyd yn oed er fy mod wedi swyddogaeth dienw hwn, swyddogaeth honno mewn gwirionedd dim ond gwerth. Gallwn drin fel gwerth. Felly gallwn gadw mewn newidyn yr un fath ffordd y gallem storio 50 mewn newidyn. Felly, gallwn ddweud, OK, Rwyf am gael amrywiol, fe'i gelwir yn swm, ac mae'n swyddogaeth hon. Felly y ddau beth mewn gwirionedd mynd i wneud yr un peth yn union, ond y gystrawen yn ychydig gwahanol a math o nodyn hwyliog. Yeah. GYNULLEIDFA: Felly gallech alw swyddogaeth a oedd yn ddienw drwy ddweud, cromfachau Swm 2, 5? HANNAH Blumberg: Yeah. Gallwch ffonio hyn dienw swyddogaeth yn yr un modd. Y byddech yn gwneud swm (2, 5) ;. Byddai hynny'n gwbl iawn. Os nad wyf yn gwneud swm var hafal swyddogaeth, os Fi jyst dileu this-- Dwi'n gwybod ei fod ar fy llaw, ond esgus wyf yn dileu this-- yna swyddogaeth honno yn unig wedi mynd fath o. Ni Gallwch ei ddefnyddio eto oherwydd nad oes gennych enw ar ei gyfer. Mae'n anodd i gyfeirio at rywbeth nad ydych yn gwybod beth i'w alw. Cwestiwn da. Yeah. GYNULLEIDFA: Allwch chi gyfeirio swm lleoedd eraill gyda gwerth o x plws y? HANNAH Blumberg: Allwch chi Cyfeirnod swm mewn mannau eraill â'r gwerth x plws y? Dydw i ddim yn hollol siŵr beth ydych yn ei olygu. GYNULLEIDFA: Felly eich gorffennol lled-dienw swyddogaeth yw swm yn hafal i'r hyn swyddogaeth yn ddienw, felly swm yn Erbyn hyn newidyn eich bod can-- HANNAH Blumberg: Iawn. Felly swm yw'r newidyn, ond mae'n actually-- felly swm yn newidyn y mae ei gwerth yn y swyddogaeth. Felly mae'n swyddogaeth, sydd yn fath o yn beth rhyfedd i lapio eich pen o gwmpas ers i ni wedi bod yn chwarae gyda C ac nad ydych yn gallu gwneud hynny yn C. Ond erbyn hyn gallwn alw grynhoi y un ffordd y gallem alw swm yma. GYNULLEIDFA: OK. HANNAH Blumberg: Yeah. Cwestiwn da. Yeah. GYNULLEIDFA: Felly nid ydym yn defnyddio'r prototeipiau yn PHP neu JavaScript? HANNAH Blumberg: Na, yr ydym Nid oes angen i ddefnyddio prototeipiau, yn enwedig yn JavaScript. Felly, un peth arfer gwael fy mod mynd i ddweud na ddylech ei wneud yw nid oes rhaid i chi ysgrifennu var i = 50. Gallech jyst dechrau gwneud i = 50. A byddai dim ond gwneud i newidyn byd-eang. Mae'n arfer gwael iawn i byth yn dweud ff var ddiamwys, ond mae'n rhywbeth y gallwch ei wneud. Nid yw'r cyfieithydd yn mynd i gweiddi ar chi. JavaScript yn eithaf tebyg, gallwch wneud yr hyn rydych ei eisiau. O, sori. Mae dau. Yn y pants oren. Cer ymlaen. GYNULLEIDFA: Na, byddwch yn mynd yn gyntaf. GYNULLEIDFA: Na, yr oeddwn yn dweud Doeddwn i ddim yn cael fy llaw i fyny. IAWN. Felly, os ydych yn ffonio hynny tro cyntaf, yn awr grynhoi, rydym yn galw ei yr un ffordd, x, y, fel bob tro? HANNAH Blumberg: Yeah. Felly ddau yma yn y bôn gwneud yr un peth. GYNULLEIDFA: A beth yw'r fantais o ddefnyddio'r un neu'r llall? HANNAH Blumberg: Dim mantais o ddefnyddio'r un neu'r llall. Fi jyst eisiau i ddangos eich dau gwahanol ddarnau o gystrawennau. Mae llawer o weithiau lle ddienw swyddogaethau oes gennych bwrpas yw os y ddadl i un arall Dylai swyddogaeth fod yn swyddogaeth. A byddwn yn gweld bod yn dim ond yn ail gyda Ajax. Felly os nad oedd yn gwneud unrhyw synnwyr, ei storio yng nghefn eich pen. Dyna lle mae ddienw Gallai swyddogaeth fod yn ddefnyddiol gan nad yw'n wir yn werth gan roi enw ers i ni yn unig mynd i'w ddefnyddio unwaith. Yeah. GYNULLEIDFA: Os yw x ac y newid yn ddiweddarach ymlaen, bydd swm yn newid hefyd? HANNAH Blumberg: Os yw x ac y newid nes ymlaen, bydd swm yn newid hefyd? Felly, mae hyn mewn gwirionedd yr wyf yn yn meddwl rhywbeth sy'n, eto, 'i jyst yn teimlo'n wahanol iawn gan C. Nid yw hon yn werth. Nid yw'n 5. Dim ond y swyddogaeth ei hun. Felly, cyn gynted ag y byddwch yn ei roi paramedrau, yna byddwch mewn gwirionedd yn cyfrifo gwerth. MARIA ZLATKOVA: Ac yna gallwch ffonio'r swyddogaeth ac yn ei ddefnyddio i gael rhywfaint o werth. HANNAH Blumberg: Iawn. Yn union. Yeah. GYNULLEIDFA: Felly, os ydych yn unig ei storio yn y newidyn, fel var x hafal swm o ddau values-- HANNAH Blumberg: Yeah. Felly gallech jyst yn gwneud swm var yn hafal i swm o ddau werth. Yeah. Unrhyw gwestiynau eraill? Yeah. GYNULLEIDFA: Ond byddai hynny drysu swm a swm? Fel os byddwch yn ffonio eich swm amrywiol, byddech yn galw'r swm swyddogaeth? HANNAH Blumberg: Mm. Mm. Os ydych wedi gwneud rhywbeth fel, swm hafal swm 2, 5? GYNULLEIDFA: Yeah. HANNAH Blumberg: Credaf fod Byddai ysgrifennu dros y gwerth y swm. Mor ddiddorol arall beth am JavaScript yw y gall newidyn unigol yn cymryd ar griw o wahanol fathau. Arfer gwael. Ni ddylech wneud rhywbeth fel yr hyn yr ydych newydd ei ddweud. Ond yn C, os i ei osod cyfartal i yn gyfanrif, rydym yn gwybod ei fod byth yn mynd i fod yn llinyn. Nid yw hyn yn wir yn JavaScript. Yeah, cwestiwn da. Unrhyw beth arall? Iawn. Gwneud popeth yn iawn ar amser. Cadw fynd. Iawn. Os ydym yn edrych ar amrywiaeth yn JavaScript, dyma enghraifft cyflym o amrywiaeth o dannau. A gall araeau dyfu'n ddeinamig. Nid ydynt yn cael maint sefydlog yr un ffordd eu bod yn gwneud yn C. Gallwn gael mynediad i'r elfennau gyda dim ond y cromfachau sgwâr. Sy'n edrych yn llawer fel PHP a llawer fel C, lle y gallwn ddweud, yn yr achos hwn, os oeddwn i eisiau gair JavaScript, fyddwn i yn arr cromfachau sgwâr gyda 0, 1, 2. Ac yna os ydych yn cofio yn C pan fyddwn yn awyddus i gael hyd amrywiaeth, roedd yn blino. Ond yn JavaScript, super hawdd. Y cyfan yr ydym yn ei wneud, .length. Rhoi iddo y darnau. Dyna ni. GYNULLEIDFA: Mae hynny'n syml. HANNAH Blumberg: Yeah, yn gwneud eich bywyd yn llawer haws. OK, nid object-- yno. Gwrthrychau yn teimlo JavaScript llawer fel structs yn C ac araeau cysylltiadol yn PHP. Felly, yr hyn yr ydym wedi gweld llawer o yw JSON, a oedd yn yn sefyll am JavaScript Nodiant Gwrthrych. Ac mae'n bôn yn ffordd o strwythuro ein data. Felly, gadewch i ni weld enghraifft, Mae'n debyg yr hawsaf. Felly dyma enghraifft o gwrthrych sy'n storio y dosbarth, CS50. Ac wrth ddweud dosbarth, yr wyf yn golygu wrth gwrs, Nid like-- yeah, y cwrs, CS50. A byddwch yn gweld bod popeth yn y gwrthrych yn mynd i gael eu cynnwys mewn braces cyrliog. Ac rydym yn dechrau i gysylltu enwau caeau neu allweddi gyda'r gwerthoedd gwahanol. Fel y gallwch ddechrau i weld sut y math hwn o teimlo fel amrywiaeth cysylltiadol yn PHP. Felly rydym yn mynd i gysylltu â'r cae neu yr enw allweddol, wrth gwrs, gyda'r llinyn, CS50. Rydym yn mynd i gael hyfforddwr. Rydym yn mynd i gael TFS. Rydym yn mynd i gael nifer y psets ac rydym yn mynd i fod wedi eu cofnodi. Ac un peth oer i'w nodi yw pob un y pethau hyn yn cael gwahanol fathau, ac mae hynny'n gwbl iawn. Mae'n iawn am wrthrych, mewn gwirionedd, Mae'n debyg ei fod yn disgwyl am wrthrych i gael cyfuniad o linynnau a rhifau a Booleans a rhesi a beth bynnag arall gallech chi am gael y tu mewn i'ch gwrthrych. Ac yn nodi bod y rhain yn mynd i fod yr enwau neu allweddi, ac yna rydym yn unig ei osod yn gyfartal gydag ychydig o colon. GYNULLEIDFA: Beth yn union mae JSON yn ei olygu? HANNAH Blumberg: Beth yn union y mae JSON yn ei olygu? JSON jyst yn sefyll am Nodiant Gwrthrych JavaScript. 'I' jyst ffordd o fformatio. Yeah. Mae'n ffordd o fformatio ein data. Yn C, mae'n structs. Yn PHP, mae'n araeau cysylltiadol. Yn JavaScript, mae gennym gwrthrychau. GYNULLEIDFA: Felly CS50 'an gwrthwynebu? HANNAH Blumberg: CS50 yn y gwrthrych yn yr achos hwn. Nawr, sut ydyn ni'n mynediad mewn gwirionedd y meysydd hynny na newid y meysydd hynny. Er enghraifft, mae'n debyg ein bod penderfynwyd y ydych am gael un yn llai pset semester hwn. Yn hytrach na naw, rydym yn jyst yn mynd i gael wyth. Sut y byddem yn newid hynny? O, ffordd anghywir. Mae dwy ffordd y gallwn wneud hynny. Rhif un yn y dot nodiant a rhif dau yw gyda'r nodiant braced sgwâr. Felly, er enghraifft, os wyf yn eisiau newid neu fynediad maes psets yn ein gwrthrych CS50, beth fyddwn i'n ei wneud yw CS50.psets, felly enw'r gwrthrych dot enw'r cae neu'r allweddol. Yn yr un modd iawn, 'i' yn union sy'n cyfateb i wneud CS50, ac yna mewn braces sgwâr, psets. Cwl? Yeah. GYNULLEIDFA: Felly a JSON technegol JavaScript dal, er bod yn y psets ydym gwahanu 'ii [Anghlywadwy]? HANNAH Blumberg: Cadarn. Felly, y cwestiwn yw, yn Cyfwerth JavaScript a JSON? Felly JSON yn nodiant, yn y bôn y ffordd yr ydym yn ysgrifennu allan gwrthrych o JavaScript. Felly, nid ydynt yn union yr un fath. Byddwn yn dweud JavaScript, yno yn cael eu gwrthrychau yn JavaScript. JSON yn cymryd gwrthrychau hynny a yn eu printiau ac yn eu harddangos neu'n eu storio mewn ffordd braf. Felly nid JSON yn rhaglennu iaith y ffordd y mae JavaScript mae. Dim ond y nodiant ar gyfer ein hamcanion yn JavaScript. Yeah. GYNULLEIDFA: Felly beth yn union [Anghlywadwy] cwblhau? HANNAH Blumberg: Cadarn. Felly, mae hyn mewn gwirionedd yn gwneud dim. Mae hyn yn unig yn ffordd i gael mynediad. Felly, gadewch i ni ddweud ein bod am newid mae nifer y setiau problem 9-8. Yr hyn yr ydym yn ei wneud yw gwneud rhywbeth fel CS50.psets = 8 ;. Yeah, cwestiwn mawr. Mae hyn yn unig i ddangos i chi cystrawen. Nid yw'n mewn gwirionedd yn gwneud unrhyw beth defnyddiol. Unrhyw gwestiynau? Symud i'r dde ar hyd. Felly gadewch i ni edrych ar enghraifft cyflym o sut JavaScript yn gweithio oherwydd yr wyf yn dweud wrthych ei fod gwneud yr holl bethau hyn ac oer yn ein galluogi i addasu tudalennau gwe. Gadewch i ni mewn gwirionedd yn ei weld ar waith. Felly, yn cymryd, er enghraifft, mae hyn yn ffeil HTML. A'r peth yr wyf am i chi ganolbwyntio ar ei tag arbennig hon, sy'n botwm, gyda id search_button. Dim ond ar y dudalen. Felly nawr gadewch i ni weld beth gallwn ei wneud mewn gwirionedd. Wel, mae'n debyg pan i chi glicio botwm, rydym am wneud alert-- cliciwyd y botwm. Gadewch i ni weld sut y gallwn wneud hynny. Felly window.onload-- nid yw hyn yn rhywbeth eich bod wedi gweld yn y dosbarth, felly Ni fydd angen iddynt gwybod ei fod ar gyfer y cwis. Ond mae hyn yn dweud y bôn, OK, ffoniwch swyddogaeth hon pan fydd y llwythi ffenestr. Felly dyna unig fath o cod setup. Peidiwch â phoeni gymaint am hynny. Yr hyn yr wyf am i chi ganolbwyntio arno yw i mewn yma. Rydym yn dweud searchButton var hafal document.getElementByID search_button. Felly, fel y byddech yn dyfalu, beth mae hyn yn ei wneud yw ei fod yn dweud, OK, ewch dod o hyd i'r elfen gyda search_button ID. Ac yn awr rydym wedi bod Elfen gwirioneddol ac rwy'n mynd i'w storio mewn searchButton amrywiol. Ac yn awr y gallwn ni yn ei ddefnyddio elfen honno a'i newid, neu gael mynediad at ei werthoedd, pethau fel 'na. Gallwn mewn gwirionedd yn dechrau ymgysylltu â'r dudalen we. Felly dyma yr wyf yn dweud, OK, nawr bod gen i hynny botwm, pan gaiff ei glicio, yn galw hyn yn swyddogaeth dienw. Felly dyma lle ddienw swyddogaethau yn dod yn ddefnyddiol. A beth mae'r swyddogaeth yn ei wneud? Wel, 'i jyst yn galw hwn swyddogaeth effro ac mae'n ei ddweud, cliciwyd y botwm Chwilio. Felly, beth fydd yn digwydd os byddaf yn mynd i ble bynnag HTML hwn yn byw ac yr wyf yn clicio ar y botwm, 'N annhymerus' yn cael rhybudd bach ffansi sy'n dweud eich bod yn clicio ar y botwm. Felly mae'r pethau i ganolbwyntio ar Yma-- document.getElementByID yn cael HTML penodol elfen gyda'r ID roddir. Ac yn awr y gallwn osod yr hyn a ddylai ddigwydd pan bod elfen benodol ei glicio. GYNULLEIDFA: Mae'n rhaid i ni roi hynny i gyd i mewn? HANNAH Blumberg: Mae'n ddrwg gennyf? GYNULLEIDFA: Oes rhaid i ni godio yn gorfforol hynny i gyd? HANNAH Blumberg: A oes gennym i godio yn gorfforol hynny i gyd? Ydw. Onid yw y math hwn o blino? Mae hyn yn llawer o god. GYNULLEIDFA: Gallech fewnforio rhywbeth. HANNAH Blumberg: Iawn. Gallem ddefnyddio rhywbeth. Ac yn particular-- oh, 'i' yn dweud wrthyf rhaid i mi ddysgu adran. Yn arbennig, gadewch i ni defnyddio'r llyfrgell jQuery, oherwydd dyna oedd yn wir hir ac yn wir yn blino ac yr wyf am fod yn gallu symleiddio ei ac yn ei gwneud yn fyrrach ac yn haws i ysgrifennu. Felly jQuery yn llyfrgell JavaScript. Felly JavaScript yw rhaglennu iaith; jQuery yn llyfrgell. Ac mae'n gwneud criw o bethau yn haws. Mae'n gwneud newid ac yn mynd ar draws dogfen HTML yn llawer haws. Mae'n gwneud digwyddiadau trin yn haws. Mae'n gwneud animeiddio yn haws ac mae'n gwneud Ajax yn haws. Felly gadewch i ni neidio i mewn i ddau o pethau hynny ar hyn o bryd. Esgusodwch fi. Cyn i ni ei wneud, mae rhai gystrawennau sylfaenol. Mae hyn yn beth yn galw fwyaf i y llyfrgell jQuery edrych. Rydym yn defnyddio doler hwn sign-- unrhyw arwydd gysylltiad i PHP, jyst inconvenient-- enw detholydd, dot, ac yna gweithredu. Felly, gadewch i ni weld rhai enghreifftiau pendant o hynny. Felly, mae hyn mewn gwirionedd yr un fath cod o'r sleid digwyddiad. Felly, mae hyn, beth hyll hir yn dod yn , y peth hyn yn llawer brafiach llai. Felly gadewch i ni geisio i dorri'r hyn i lawr. Mae hyn yn dweud, OK, jQuery-- doler hon sign-- jQuery, dod o hyd i mi y ffenestr. Felly dyna y dewisydd. Pan fydd llwythi, ffoniwch swyddogaeth hon. Felly dyna popeth y tu mewn. IAWN. Hyd yn hyn, felly da? Iawn. Yn awr, jQuery, dod o hyd i mi y peth gyda search_button adnabod. A'r hyn y mae'n ei glicio, yn galw swyddogaeth hon. Ac yna mae hyn swyddogaeth yn yn union yr un fath. Dim ond gwneud ychydig o effro, cliciwyd y botwm Chwilio. Felly mae'n neis iawn. Mae wir cyddwyso ac symleiddio ein cod. Sut oedd Gwn fod 'i' search_button ID ac nid fel search_button dosbarth? GYNULLEIDFA: hashtag? HANNAH Blumberg: Yeah. Mae hyn yn symbol hash, 'i' yn union fel CSS. Felly cofiwch, gyda CSS, pan fyddwn yn yn awyddus i ddewis rhywbeth gan adnabod, defnyddiwyd y arwydd bunt. A phan fyddwn yn awyddus i ddewis rhywbeth yn ôl dosbarth, rydym yn defnyddio'r dot. Great. Gwneud synnwyr? Felly jQuery i fod i dim ond gwneud ein bywyd yn haws. Yeah. GYNULLEIDFA: Felly rwy'n ychydig yn ddryslyd fel i sut y swyddogaeth dienw yn gweithio. A ydych yn enwi anonymouse hwn swyddogaeth, yn gweithredu? Sut mae'n cael ei alw? HANNAH Blumberg: Cadarn. Felly swyddogaeth yn unig yw gair allweddol sy'n Meddai, rwy'n ar fin i ddiffinio swyddogaeth. GYNULLEIDFA: O, OK. HANNAH Blumberg: OK? Ac yna rydym yn ei drosglwyddo fel dadl canlynol-- gadewch i ni gymryd hwn one-- mewnol i'r swyddogaeth cliciwch. Felly ie, fel bod swyddogaeth, swyddogaeth dienw hwn, yn dod dadl go iawn. Felly cofiwch yn JavaScript, rydym yn Gall trin swyddogaethau fel gwerthoedd. GYNULLEIDFA: O, OK. HANNAH Blumberg: Yeah. Rwy'n hoffi bod "oh." Nice. Cwestiynau eraill? Amser? MARIA ZLATKOVA: Da. Da. HANNAH Blumberg: Awesome. Mae rhai jQuery defnyddiol gyflym. Dydw i ddim yn mynd i fynd drwy bob un o'r rhain. Bydd y rhain sleidiau yn i fyny ar-lein ychydig bach yn ddiweddarach, fel y gallwch wirio allan ychydig yn ddiweddarach. Ond yn y bôn, mae'r cyffredinol patrwm yn dal lle rydym yn dweud, OK, hey, jQuery, dyma fy dewiswr, ac yna dyma gweithred. A gallwch wneud pethau fel mynediad yr gwerth y ffurflen, gael mynediad i rai HTML, rheoli beth sy'n digwydd pan fydd y defnyddiwr yn cyflwyno ffurflen, pethau fel 'na. Ydw. GYNULLEIDFA: Felly, yn y arholiad, rydym yn mynd i angen i wybod cryn dipyn o y ddogfennaeth jQuery. Felly o ystyried ein bod yn copïo / gludwch y jQuery dogfennaeth at ein taflen twyllo, ble mae'r llinell a dynnwyd? Fel sawl un sydd angen i ni ei wybod? HANNAH Blumberg: Cwestiwn Fawr. Y cwestiwn yw yn ei hanfod o gofio bod chi Ni all gael mynediad at y dogfennau jQuery yn ystod y prawf, faint dylech gwybod? Ni fyddem yn disgwyl i chi ddod i fyny gyda rhywfaint o swyddogaeth hap y byddem yn disgwyl i chi Google. Pethau sy'n cael eu gêm deg yw Hoffwn dweud yn union fath o gystrawen gyffredinol, yn gallu dewis drwy adnabod a drwy class-- felly yn union fel CSS. Ac yna y swyddogaethau gwirioneddol hun, byddwn yn debygol o yn dweud wrthych. Yeah. GYNULLEIDFA: Felly pan fyddwch yn dewis yn ôl dosbarth yn golygu dot. HANNAH Blumberg: Ie, yn union. Da. Pan fyddwch yn dewis yn ôl dosbarth, mae'n mynd i gael dot yn lle'r arwydd bunt. Ydw. GYNULLEIDFA: A fyddai'r chi mynd dros y gwahaniaeth rhwng ddewis trwy ID a chan y dosbarth? HANNAH Blumberg: Cadarn. Y gwahaniaeth rhwng dewis ID a dewis fesul dosbarth. Felly, fel y dywedodd Maria yn ychydig bach yn gynharach, mae Gall dim ond un elfen HTML gyda ID roddir, tra bod y dosbarth, mae'n ein galluogi i grŵp bagad o elfennau gwahanol at ei gilydd, felly phethau sy'n gysylltiedig, ond nid yn union yr un fath. A yw hynny'n ateb y cwestiwn? Awesome. Ydw. GYNULLEIDFA: Beth os oes gennych lluosog pethau sydd yn yr un dosbarth? HANNAH Blumberg: Beth sy'n digwydd os oes gennych pethau lluosog sy'n yn yr un dosbarth? Felly, er enghraifft, os ydym yn dim ond drwy ddefnyddio JavaScript pur, byddem yn gwneud rhywbeth fel document.getElementsByClass. Ac yna beth sy'n gwneud mewn gwirionedd yn amrywiaeth o elfennau yn dychwelyd. Ac mae'n rhaid i chi naill ai ailadrodd drosodd nhw neu ddod o hyd i pa un yr ydych ei eisiau. Dyw hi ddim yn mynd i roi chi elfen sengl. Mae'n mynd i roi i chi amrywiaeth o elfennau. Cwestiwn mawr. Unrhyw beth arall? Awesome. Felly, yr wyf yn meddwl os ydych yn gyfarwydd â Gwelodd unrhyw jQuery chi yn y pset, dylech fod yn dda i fynd. Cwestiwn? O, na. Mae gen i addysgu mewn gwirionedd. Ymlaciwch. Bydd yn braf. 'N annhymerus' yn cyrraedd yno. Gadewch i ni siarad am Ajax. Felly Ajax yn mynd i fod a-- dda, gadewch i ni ddechrau gyda'r hyn y mae'n ei gynrychioli. Mae'n acronym. Mae'n sefyll am Asynchronous JavaScript a XML. Ac XML yn y bôn yn mynd i fod [Anghlywadwy] gyda math o ein data. Ond nid ydym wedi defnyddio XML mewn gwirionedd. Yn lle hynny, rydym yn unig yn defnyddio JSON. Felly y bôn, mae'n rhai data-- asynchronous, JavaScript, a data, yn yr achos hwn, JSON. Ac mae ein nod, wrth i ni grybwyll ychydig yn gynharach, yw bod yn gallu gwneud cais, wedi bod yn ei wneud cais ei beth yn y cefndir, ond yn parhau wneud beth bynnag yr oeddem yn bwriadu ei wneud. Ac yna pan fydd y wybodaeth yn yn barod, yna byddwn yn ei ymgorffori. Felly, gadewch i ni weld beth mae hyn yn mewn gwirionedd yn edrych fel. Ac mae hyn, dylech fod yn ychydig bach cyfarwydd o pset8, yr un yr ydych newydd ei droi i mewn. Felly dyma jQuery dilys swyddogaeth sy'n gallem am wybod about-- hon arwydd doler. Felly mae'n dweud swyddogaeth jQuery, .getJson. A beth swyddogaeth hon yn ei wneud yw ei cymryd URL a rhywfaint o parameters-- felly yr wyf yn meddwl yn yr achos o pset8, roedd hi fel, yr URL yn articles.php a'r paramedrau oedd mynd = rhywfaint cod post. Ac y mae'n ei ddweud, OK, yn gwneud cais i URL hwn â'r paramedrau a roddir. Ac mae hynny'n unig fydd yn digwydd. Pan fydd yn gorffen, mae'n naill ai yn mynd i gwblhau yn llwyddiannus neu mae'n mynd i fethu. Felly, mae hyn yn cyfateb i alwad Rob a gofyn iddo wneud rhywbeth. Ac yna pan mae'n galw yn ôl, ei fod yn naill ai mynd i ddweud fy mod yn ei wneud neu yr wyf yn methu. Felly, yn yr achos lle rydych yn wneud, yr ydych yn dweud, OK, dwi'n ei wneud. Ac yna byddwch yn ffonio y swyddogaeth hon. Yn yr achos hwn, mae'n mynd i fod yn swyddogaeth sy'n cymryd rhywfaint o wybodaeth. Mae'r un yr ydym fel arfer yn gofalu amdano yw data, y data yr ydym a ddychwelwyd mewn gwirionedd o ganlyniad i alw .getJSON. A allwch chi wneud rhywbeth ag ef. Felly, yn achos pset8, rydym yn arddangos fel rhestr. Methu yn mynd i fod yn swyddogaeth Gelwir hynny yw os yw'r cais yn methu am ba reswm bynnag. Ac yn achos pset8, rydym yn unig console.log hynny. Unrhyw gwestiynau ar hynny? Yeah. GYNULLEIDFA: Allwn ni jyst arfer theta ffwythiant yn hytrach na swyddogaeth, textStatus, jqHXR. HANNAH Blumberg: Cadarn. Felly ie, yr wyf yn meddwl yn y pset, rydym yn unig yn gweld data swyddogaeth. Felly dim ond the-- ie, OK. Dyna beth a welsom yn y pset. Mae hynny'n hollol iawn. Mae'r rhain yn unig os ydych eisiau i dynnu allan rhagor o wybodaeth, mae'r rhain yn y pethau sy'n gallech gael oddi .getJSON. Cwestiwn da. Unrhyw beth arall? Yeah. GYNULLEIDFA: Felly .getJSON yw Ajax? HANNAH Blumberg: OK. Felly, dyma'r math o ran anodd. Mae'n swyddogaeth jQuery sy'n caniatáu chi wneud galwadau asynchronous. A galwadau asynchronous hynny, dyna yr hyn yr ydym wedi bod yn cyfeirio at fel Ajax. Yeah. Cymerodd Mae hynny'n fy amser hir iawn i tynnu ar wahân pan oeddwn yn fyfyriwr. GYNULLEIDFA: Allwch chi ddweud hynny eto? HANNAH Blumberg: Yeah. A allaf ddweud hynny eto? Mae'r swyddogaeth hon yn .getJSON, mae'n swyddogaeth jQuery. Ac mae'n mynd i wneud alwad asynchronous. A galwadau asynchronous hyn, rydym wedi bod yn cyfeirio at hynny fel Ajax. Unrhyw gwestiynau eraill? Mae gennym dim ond cwpl o funudau ar ôl. A Maria yn mynd i lapio fyny gyda diogelwch ac yna rydym yn mynd i'w dim ond am wneud. MARIA ZLATKOVA: Awesome, OK. Felly, mae hyn yw-- dim ond yn cymryd un neu ddau o eiliadau i edrych dros hyn. Ac nid yw hyn yn rhywbeth wirioneddol wych. A gall rhywun ddweud wrthyf pam? Beth sy'n digwydd yn foo a gall gallai o bosibl yn arwain at rhywbeth drwg, a beth sy'n cael ei alw? Yeah. GYNULLEIDFA: Os bydd y ddadl sy'n basiwyd yn yn fwy na 12 nod, gallai orlifo. MARIA ZLATKOVA: Iawn. Perffaith. Beth yw ei enw? Yr ydych newydd sôn amdano. GYNULLEIDFA: Clustogi orlif. MARIA ZLATKOVA: Yup, byffer gorlifo. Felly, mae hyn yn rhywbeth yr ydym cyfeirio ato fel gorlif byffer. Ac rydym yn gweld bod tu mewn foo, rydym wedi diffinio'n ein byffer, c, gyda maint o 12. Fodd bynnag, yn y prif, nid ydym yn ei wneud gwiriwch mewn unrhyw ffordd o gwbl a oedd y argv1-- fel bod oedd yr ail ddadl. Nid ydym yn gwirio a yw'r maint y mae'n briodol. Felly, os ydym wedi cael defnyddiwr yn enwedig maleisus sy'n rhoi mewn rhyw ddadl a oedd yn mwy na 12, ac yna o bosib tu hwnt i ffiniau hynny ddadl, roedd gan rai cod cyflawnadwy ei fod yn ceisio gwneud rhywbeth drwg ag ef; yna mae hyn, beth fyddai'n digwydd, Byddai gwrthwneud y ffurflen cyfeiriad y swyddogaeth foo, gan achosi i'r swyddogaeth â phryd dychwelyd i weithredu y cod. Ac yna gallai pethau drwg yn digwydd. A yw hyn yn gwneud synnwyr i bawb? A sut y gallwn amddiffyn yn erbyn hyn? Unrhyw awgrymiadau? Yn y bôn, tu mewn o bosibl foo, sut gallwn wirio i wneud yn siŵr na all hynny ddigwydd? GYNULLEIDFA: Os yw maint 12 yn cael ei rhagori, byddech yn dyrannu cof ychwanegol? MARIA ZLATKOVA: Awgrym yw, dyrannu cof ychwanegol o faint rhagori. A dweud y gwir, gallwn wneud rhywbeth llawer symlach na hynny hefyd. Gallwn dim ond cael hyd llinyn y ddadl sy'n cael ei gofnodi, gwiriwch os yw hynny'n llai na neu'n hafal i 12-- sef yr hyn yr ydym am ei i fod oherwydd nad ydym am iddo i ragori ar y ffiniau ein byffer. Ac yna, os nad yw'n gwneud hynny, rydym yn gallu gweithio gyda'r ddadl. Ac yna os ydyw, yr ydym mewn gwirionedd yn eisiau i yello o bosibl yn y defnyddiwr. Ond mae hyn yn sut y byddem yn gwneud hynny. Ydw. GYNULLEIDFA: Allech chi esbonio gyflym memcpy go iawn? MARIA ZLATKOVA: O, sori. Ydw. Memcpy cymryd beth bynnag yw-- ddrwg gennym, OK. Memcpy yn cymryd beth bynnag yw ym mar, beth bynnag ei ​​basio ar foo gan fod y ymresymiad llinell orchymyn. Felly, mae'n mynd i gymryd argv1. Gelwir Argv1 bar fan hyn. Felly, mae'n mynd i gymryd bar a mae'n mynd i gopïo mewn i c. GYNULLEIDFA: OK. MARIA ZLATKOVA: Ac mae'n mynd i copy-- y drydedd ddadl yn unig yn cyfeirio i faint y mae'n mynd i gopïo i mewn i c. GYNULLEIDFA: Ah. Felly copïo yr un yma yn y cyfan ohono wedyn. MARIA ZLATKOVA: Yeah, 'i' gopïo cyfan ohono. Yep. Yn gyntaf, rydym yn gwneud yn siwr nad yw'r bar yn cyfartal i null am ei fod yn pwyntydd. Yna rydym yn cael hyd llinyn y bar. Rydym yn gwneud yn siŵr ei fod yn llai na neu'n hafal i 12. Ac yna oherwydd ein bod i wedi gwneud yn siŵr, y gallwn mewn gwirionedd memcpy a bod yn siŵr bod hynny'n iawn. Unrhyw gwestiynau? Great. Mae gennyf ddau gwestiwn gywir neu'n anghywir. A all unrhyw un ddweud wrthyf yn iawn i ffwrdd os yw'r rhain yn gywir neu'n anghywir? Ydy, mae'n ffug. Yn union. Mae'r ddau ohonynt yn ffug. Felly ddefnyddio cyfrinair sengl yn syniad da byth yn wir oherwydd os bydd rhywun yn gwybod eich cyfrinair, gallant yn unig gael mynediad at eich holl gyfrifon eraill. Ac yna eiconau gwneud dim er mwyn sicrhau diogelwch. Dylem fel arfer yn edrych am HTTPS yn lle HTTP a'r URL. Ac mae rhai mathau eraill o ymosodiadau yr ydym wedi crybwyll, fod David wedi crybwyll yn ddarlithio, ymosodiadau pigiad SQL. Rydym eisoes yn gweld bod os ydym yn don't-- y Swyddogaeth ymholiad CS50 yn sicrhau bod SQL Ni all ymosodiadau pigiad digwydd. Ond os nad ydym yn defnyddio CS50, dyfyniad, unquote "yn ymholiad," byddai'n rhaid i ni wneud yn siŵr bod y Nid yw mewnbwn defnyddwyr mewn gwirionedd rhyw SQL ymholiad a fydd yn achosi pob ein tablau i gael ei ollwng neu rhywbeth drwg i digwydd gyda ein cronfa ddata. Herwgipio Sesiwn yn math arall o ymosodiad sy'n digwydd pan mae rhai drwg person yn defnyddio sesiwn rhyw dioddefwr Adnabod I Gael Mynediad y wybodaeth fewngofnodi. Felly yn enghraifft dibwys iawn o hynny yw fel os oes gennym gyfrifiadur cyhoeddus, yna bydd y person drwg logiau i mewn ac yna mae ganddynt cwcis sy'n cael eu harbed. Ac nid cwcis yn newid ar gyfer y sesiwn. Yna, rydym wedi y dioddefwr yn mynd i mewn ac yna logio i mewn i'r wefan. Nid yw'r cwcis yn newid am sesiwn penodol. Ac yna y dioddefwr logs i mewn y wefan a wedyn yn gadael. Ac yna y person sy'n mynd yn ôl Gall wedyn barhau i ddefnyddio eu ID sesiwn i gael mynediad at eu gwybodaeth. Felly dyna un enghraifft o sut y gallai hynny ddigwydd. Ac yna ni fyddwn yn poeni gormod am cod neu unrhyw beth penodol fel 'na allai achosi hyn, ond mae cael rhyw fath o syniad beth newidynnau sy'n gysylltiedig â hyn yn cael eu. Ac yna trin header data yn fath arall o ymosodiad fod gan David wedi siarad am. Ac 'i jyst yn cyfeirio at beth all ddigwydd pan yr ymateb, mae'r HTTP ymateb tu mewn i'n header Nid yw glanweithio iawn. Ac unrhyw rai o'r fields-- er enghraifft, os bydd rhywun yn overwrites un o'r pennawd gwerthoedd i gynnwys unrhyw beth mwy na hyn y dylent ei contain-- ac mewn gwirionedd gynnwys, er enghraifft, 200 Cod statws OK, yna maent yn gallai wneud yn faleisus pethau pan nad ydynt yn fod i. Ond ni fyddwn yn poeni gormod llawer am y cod penodol a allai achosi hyn, yn unig fath o ddealltwriaeth pethau lefel uchel fel 'na. Rwy'n credu bod hyn i gyd bod yn rhaid i ni dalu. Amazing. Dylai unrhyw un gennych unrhyw gwestiynau ar unrhyw o'r pethau yr ydym yn eu cynnwys? Ydw. GYNULLEIDFA: Felly, un math o mwy cwestiwn logistaidd. A yw'r cynnwys canolbwyntio'n bennaf ar bethau ar ôl cwis 1? MARIA ZLATKOVA: Felly cwestiwn yw, a yw'r cynnwys canolbwyntio'n bennaf ar bethau ar ôl cwis 1? Felly mae'r ffocws ar ôl cwis 1, ac eithrio bod angen i ni ganolbwyntio ar bethau mewn pset5 ac mae llawer o'r strwythurau data ein bod yn cynnwys. Ac ni allwn ddweud ein bod yn Gall anwybyddu unrhyw beth cyn hynny oherwydd ei fod yn adeiladu ar hynny hefyd. Felly ganolbwyntio ar hynny, ynghyd â deunydd pset5 fel gynnwys rhestrau cysylltiedig, staciau, ciwiau, a phopeth bod Hannah aeth drosodd. HANNAH Blumberg: Iawn. Yeah, aethon ni dros yr holl bethau C ar y dechrau yn gyflym iawn iawn. Ond gwnewch yn siwr i adolygu hynny. Ewch yn ôl a gwyliwch yr adolygiad cwis 0. Mae cwpl nodiadau mwy logistaidd, dim ond er ein bod wedi eich sylw. Rydym yn mynd i gael oriau swyddfa y ddau ar ddydd Llun a dydd Mawrth nos. Maent yn mynd i fod yn MD 119. Mae hyn i gyd ar y wefan, felly os nad ydych yn ei glywed, nid oes unrhyw bryderon. MARIA ZLATKOVA: 8:30-11:00. HANNAH Blumberg: Yeah, 8:30-11:00. Fe fyddwn ni yno. Byddwn yno i ateb cwestiynau. Mae'n oeri 'n bert ac yn hwyl. Gallwch guys ofyn unrhyw gwestiynau eich bod yn ei gael ar cwis 1. Ac cwis 1 ar Dydd Mercher, felly pob lwc. Os oes gennych unrhyw gwestiynau, efallai dod sgwrs i ni i fyny yma un-i-un. Cwl. Diolch yn fawr iawn. MARIA ZLATKOVA: Diolch o galon, guys. GYNULLEIDFA: Yay. [Cymeradwyaeth]