DAVID Malan: Pob hawl. Mae hyn yn CS50, ac mae hyn yn diwedd yr wythnos naw. Mae wedi bod yn corwynt dros y dyddiau diwethaf. Ac problem yn gosod saith, os ydych yn pen-glin ddwfn i mewn iddo, yn sylweddoli bod dipyn o bit newydd sy'n i mewn 'na. Ond gadewch i ni weld os na allwn darnau popeth ynghyd yma yn fyr cyn hynny gwyro i ffwrdd i mewn eto cyfeiriad a gweld arall lle arall y gallwn fynd. Hyd yn hyd yn hyn, rydym wedi siarad am HTML. Rydym wedi siarad am CSS. Rydym wedi siarad am PHP. Rydych chi wedi dechrau i gael profiad o SQL. Heddiw, byddwn yn siarad ychydig am JavaScript. Ond sut mae pob un o'r rhain gwahanol ieithoedd yn ffitio i'w gilydd? Felly, buom yn siarad yr wythnos diwethaf am yr syniad o gael gweinydd. Felly, gadewch i ni dim ond tynnu petryal hwn fel gweinydd gwe yma. A gweinydd gwe yn gwasanaethu sicr ffeiliau. Ac mae rhai o'r ffeiliau hynny Gall fod yn ffeiliau HTML. Felly, un o'r pethau y mae weinydd y we Gall boeri allan a allai fod yn ffeil y byddwn yn unig yn tynnu fel hyn sy'n cynnwys rhai HTML. Felly, yn nhermau lleygwr, beth Nid HTML yn gadael i chi ei wneud? GYNULLEIDFA: Page edrych 'n glws. DAVID Malan: OK, gwnewch dudalen edrych yn neis, er fy mod yn credu fy mod i wedi profi fel arall. Felly HTML yn gadael i chi osod allan tudalennau strwythurol, ac mae'n eich galluogi i fath o esthetaidd farcio dudalen, farcio cynnwys statig, fel eich bod yn yna gall weld gyda porwr gwe. Ond dyna yw'r allwedd. Mae'n cynnwys statig. Rydych yn ysgrifennu, rydych yn arbed iddo, ac yna yr ydych llong. A 'r gweinyddwr gwe wedyn yn gwasanaethu i fyny at eich ymwelwyr. Ond rydym stylize pethau gan ddefnyddio gwahanol iaith yn gyfan gwbl. Rydym yn dechrau defnyddio'r nodwedd arddull ar rai tagiau. Ac mae'r priodoledd arddull gadewch i ni osod pethau fel maint a lliw ffont. Ac mae'n debyg eich bod wedi dechrau i ddarganfod, neu chi cyn bo hir ewyllysio i derfynol prosiectau o bosibl, ond eraill eiddo y gallwch eu defnyddio yn y CSS. Ac felly yn nhermau lleygwr, beth wir felly y CSS yn ei wneud? Dim ond enghreifftiau o hynny yw'r rheini. Beth mae'n ei gadael i chi wneud hynny HTML Nid yw'n ymddangos i o'r hyn rydym wedi gweld hyd yn hyn? GYNULLEIDFA: Diffinio arddulliau eich pen eich hun. DAVID Malan: Diffinio arddulliau eich pen eich hun. Felly, diffinio pethau fel dosbarthiadau wrth i chi allai fod wedi dod ar eu traws, neu unigryw nodi nodau mewn dogfen felly y gallwch eu stylize. Ond yn fwy penodol, byddwn i'n dweud bod CSS 'n sylweddol yn gadael i chi gymryd pethau y filltir olaf ac yn caniatáu i chi nodi llawer yn fwy manwl gywir estheteg, tra HTML ar gyfer y rhan fwyaf yn gadael strwythuro eich tudalennau. A hyd yn oed er bod rhai diffygion, fel rydym yn gweld y tag ar gyfer tag pennawd, a siarad yn fras gwneud pethau mawr a beiddgar. Dyna diffiniad eithaf generig y tag - mawr a beiddgar. Pa maint y ffont yw hynny? Pa liw yw hynny? Pa mor feiddgar yw hynny? A CSS yn gadael i chi yn fwy fân alaw pethau fel 'na. Yn ogystal â gosodiad, gan fod rhai ohonoch wedi gweld. Ac yn ddidwyll, CSS yn ychydig yn iaith anniben. Mae'n bwerus iawn yn y gallwch wneud llythrennol unrhyw wefan yr ydych wedi gweld ar y we heddiw ag ef, ond mae'n fath o boen yn y gwddf. Ac mae rhai ohonoch wedi Ciciodd eich pen yn erbyn y waliau sydd eisoes yn unig i wneud rhywbeth twp fel canolfan ddewislen ar problem yn gosod saith os ydych wedi gotten i y pwynt hwnnw yn barod. Ond yn sylweddoli, y pethau hynny mynd yn haws dros gyfnod o amser. Byddwch yn dechrau i hysbysiad batrymau. Ac eto, bydd Google yn eich ffrind ar gyfer y gwahanol ffyrdd y gallwch datrys y mathau hyn o broblemau. Ac yr wyf yn meiddio dweud gyda CSS, HTML a mwy yn gyffredinol, gallwch ddatrys problemau mewn llawer mwy o ffyrdd, pob un a allai iawn yn dda fod yn gywir, nag y gallech yn rhywbeth fel C, hyd yn oed bellach PHP, neu JavaScript. Mae dim ond nifer o wahanol ffyrdd i osod pethau allan. Ond mae hyn yn dechrau cael anniben, rydym meddai. Unig fath o commingling eich HTML a eich CSS â'r priodoledd arddull yn ychydig yn flêr. Ac felly rydym yn dweud yn lle, rhyw fath o siarad yn haniaethol, y dylech o leiaf yn dechrau i ffactor eich CSS yn ôl pob tebyg. Nid yw eich steil priodoleddau, ond o leiaf defnyddiwch y tag arddull tu mewn yr hyn rhan o dudalen we? GYNULLEIDFA: Head. DAVID Malan: Yn y pen. Hyd yn hyn, dim ond cael y teitl i fyny yno, ond gallwch hefyd ychwanegu arddull tagio, a gallwch roi eich CSS fras siarad tuag at frig y dudalen. Ond yna rydym yn cymryd pethau un cam ymhellach ac yr ydym yn ffactor sy'n gwybod mwy i mewn i ffeil ar wahân. Ac felly y ddwy ffeil hyn yn rhywsut nawr cysylltiedig. Ac yn wir yr oedd y tag a wnaeth hynny. A beth oedd yn un o'r trosfwaol cymhellion ar gyfer ffactoreiddio ein CSS oed yn fwy? GYNULLEIDFA: reusability. DAVID Malan: reusability. Iawn? Efallai eich bod wedi gweld yn saith eisoes yn gosod-p bod llawer o'r tudalennau, y prynu dudalen, mae'r dudalen gwerthu, y tudalen portffolio, mae'n debyg strwythuro braidd yn yr un modd. Mae logo cyllid CS50 ar y brig oni bai eich bod wedi penderfynu newid. Mae 'na troedyn yn y waelod y tudalennau. A CSS yn caniatáu i chi wedyn ffactor allan i mewn i ffeil ar wahân felly os ydych chi am newid rhywbeth yn fyd-eang ar draws eich safle cyfan, gallwch mewn gwirionedd dim ond ei newid mewn un lle. Ond mae pris a dalwch o bosibl drwy gael ddileu ffactorau y CSS o fy ffeil HTML i mewn i wahān ffeilio cyfeirio gyda'r tag, a welodd yr ydym ni ar ddydd Llun. Beth allai fod yn anfantais o hyn? Gan feddwl yn ôl wythnos yn ôl i'r adeg pan rydym yn siarad am HTTP a TCP / IP a sut y rhyngrwyd yn gweithio. Rhywbeth dros yma? GYNULLEIDFA: Mae'n cymryd mwy o amser. DAVID Malan: Mae'n cymryd mwy o amser. Pam? GYNULLEIDFA: [Anghlywadwy]. DAVID Malan: Yeah. Felly mae'n dadlau cymryd ychydig mwy o amser. Oherwydd bod un, mae'r CSS yn amlwg nid yn yr un ffeil. Felly, yn awr rhaid i chi wneud nad un, ond dau gais. A phob un o'r ceisiadau hynny fel y gwelsom yn Chrome yn yr Arolygydd fel y'i gelwir, ac yr ydym yn edrych ar y tab rhwydwaith, pob o ffeiliau hynny yn gofyn am un HTTP cais, a welodd yr ydym yn cymryd rhai swm o amser. Nawr, efallai nid yw'n llawer. Efallai ei fod yn dim ond 20 milieiliadau. Efallai ei fod yn 200 milieiliadau. Ond meddyliwch am dudalen fel Facebook, neu CNN, neu Google, sy'n llawer fwy na'r enghreifftiau rydym wedi edrych ar hyd yn hyn. Efallai y tudalennau hynny wedi dwsinau o ffeiliau, Gallai pob un ohonynt yn gofyn am llwytho i lawr o ffeil. Fel y gall pethau a allai fod yn dechrau i arafu. Ac yn enwedig y dyddiau hyn pan rydym i gyd yn ffonau symudol yn ein pocedi a cysylltiadau rhyngrwyd yn arafach, yn gorfod aros ychydig yn fwy o milieiliadau, mae ychydig mwy o milieiliadau ar gyfer ychwanegol Gall ffeiliau mewn gwirionedd fod yn araf. Latency yw'r gair sy'n disgrifio'r fath o aros i chi bod gennych eich bod yn profi wrth aros am rhywfaint o darn o wybodaeth. Ond mae â'i ben. Felly, nid yw'n pob math o - y mae mewn gwirionedd dipyn o si-so yma. Anfantais yn awr, ond gall pa borwyr wneud os ydynt yn smart er mwyn osgoi gorfod gofyn i'r un styles.css ffeilio eto gall fod i wneud beth? Cache ei. Felly caching - C-A-C-H-E - gyffredinol yn golygu yma dim ond i achub y ffeilio eich cais y tro cyntaf, a Yna edrychwch ar eich cache ar ei gyfer. Gwiriwch eich bod yn fath o gynhwysydd storio, ac os oes gennych copi o styles.css, hyd yn oed os yw rhai eraill yn tudalen yn y p-set, neu unrhyw wefan, gofyn am hynny eto, dim ond i roi defnyddiwr yr un copi cached. Peidiwch â thrafferthu gofyn amdano. Anfantais yno, fodd bynnag, gan fod rhai ohonoch wedi baglu drosodd yn y p-set. Os byddwch yn gwneud newid ar y gweinydd a byddwch yn mynd yn ôl at y porwr ac rydych ail-lwytho, weithiau y porwr yn chi ffafr ac nid yw'n trafferthu ail-lwytho i lawr eich ffeil styles.css oherwydd, yn dod ar, beth yw'r groes bod arddulliau hyn sy'n defnyddio Facebook yn mynd i newid awr i awr neu o ddydd i ddydd? Mae'n eithaf isel. Efallai y byddant yn newid dros amser, ond nid gan y funud neu fesul awr. Felly tric, dim ond FYI wrth wneud ar y we datblygu, yn aml yn dal i lawr y sifft allweddol ar gyfer achos hwn ac yna cliciwch ail-lwytho yn eich porwr, a bydd hynny fel arfer yn dweud wrth y ail-lwytho porwr popeth, hyd yn oed os ydych eisoes wedi yn y cache. Felly eto, upsides ac anfanteision, ond mae pob un ohonynt yn y pen draw dylunio penderfyniadau. Felly nawr, ni wnaethom yn unig terfyn ar y stori yma. Os wyf yn awr yn mynd yn ôl ac yn ôl ac yn ôl a yn ôl, rydym yn dechrau cyflwyno nid yn unig HTML, ond PHP. Felly, yn nhermau lleygwr, beth yn PHP gadewch i ni ei wneud? GYNULLEIDFA: [Anghlywadwy]. DAVID Malan: Beth sy'n bod? GYNULLEIDFA: Cyflwyno rhesymeg i mewn i'r cod. DAVID Malan: Yeah, cyflwyno rhesymeg yn eich cod. Felly mae'n iaith raglennu gwir gyda dolenni, a newidynnau, a swyddogaethau, ac amodau, ac mae pob un y pethau yr ydym wedi bod yn defnyddio ffordd yn ôl pan ers dechrau. A PHP, yr ydym wedi gweld, gellir ei ddefnyddio naill ai yn y llinell orchymyn - mae'n Nid oes rhaid i chi gael unrhyw beth i'w wneud â'r we, er bod hynny'n mewn gwirionedd ei darddiad a'r hyn y mae'n tueddu i fod yn dda am ac yn ffafriol i - ond gallwch ddefnyddio PHP gan natur yn unig y ffaith bod ganddo print () swyddogaeth, a printf () swyddogaeth, neu adlais () swyddogaeth. Mae tusw o ffyrdd yr ydych Gall argraffu testun gyda PHP. Felly, gallwch ddefnyddio'r rhaglenni hyn iaith i'r allbwn yn union yr hyn yr ydym yn sôn amdanynt cyn. Gallwch gynhyrchu yn ddeinamig eich HTML. Efallai nad y cyfan ohono. Efallai eich bod pethau cod caled, fel y pennawd, i mewn na'r troedyn, a logo, a bod eich taflenni arddull, a hynny i gyd. Ond ar gyfer rhywbeth fel sefydlu p saith, lle rydych chi'n trin stociau a gan ddangos portffolio y defnyddiwr, sy'n mynd i newid yn ddeinamig, gallech yn sicr yn defnyddio PHP a'r rhesymeg y mae'n ei roi chi fel iaith raglennu i allbwn ddeinamig is-setiau y dudalen. Felly, pan fyddwch yn siarad am wefannau deinamig, neu raglenni ar y we, dyna hyn yr ydych yn wir yn siarad am. Gan ddefnyddio iaith fel PHP, neu bethau a elwir yn Python, Ruby neu, neu Java, neu eto ieithoedd eraill, i holi cronfa ddata yn aml, neu weinydd arall, a Yna boeri allan HTML ddeinamig. Nawr bod y canlyniad terfynol, wrth fynd heibio, yn bod y HTML y rhan fwyaf o wefannau, gan gynnwys eich saith set-p, yn ôl pob tebyg mynd i fod yn llanast mawr os ydych yn edrych ar y ffynhonnell cod mewn porwr. Nid yw hyn yn beth mawr. Ar y pwynt hwn, pan yr ydym yn gofalu am arddull, yr ydym yn gofalu am y pethau eich bod yn ysgrifennu. Ni fyddwn yn gofalu am y pethau bod yr hyn eich allbynnau cod. Felly peidiwch â phoeni am bant yma os yw'n PHP sy'n mewn gwirionedd yn outputting stwff. Wedi'r cyfan, ni fydd y porwr gofal, ac ni fydd dynol yn edrych yn y ffynhonnell beth bynnag. Rydym ni, y staff, er enghraifft, byddai yn edrych ar eich PHP. Felly, gadewch i mi roi enghraifft cyflym yn awr pam arall y gallai hyn fod yn ddefnyddiol. Felly, dweud y gwir, ni allaf gofio'r ddiwethaf amser Roeddwn i'n arfer C i ddatrys problem yn y y byd go iawn. Yr oedd yn ôl pob tebyg yn yr ysgol i raddedigion pan Roedd angen i mi ddefnyddio iaith sy'n yn weddol lefel isel a roddodd i mi y cyfle i wneud rhywbeth yn uchel iawn perfformio i arbed mewn gwirionedd cymaint o CPU cylchoedd ag y gallwn, i raddau helaeth oherwydd fy mod yn defnyddio setiau data mawr, a phob cylch CPU cyfrif. A dweud y gwir, hyd yn oed mewn pethau fel ffonau y dyddiau hyn a dyfeisiau eraill lle nad ydych yn llwyr cael cymaint o cof ac nid ydych yn llwyr fod â llawer o CPU, defnyddio ieithoedd yn gyflymach yn dal i apelio. Ond yn y byd go iawn, pan fyddwch yn unig am daflu rhywfaint o rhaglen at ei gilydd i dadansoddi rhywfaint o ddata, neu os ydych wedi casglu criw cyfan o gofrestriadau ar gyfer rhywfaint o grŵp myfyrwyr ac rydych am iawn awtomeiddio gyflym anfon e-bost o un i un i bob un o'r rhai a cofrestredig, rydych yn mynd i estyn am iaith ar lefel uwch na C fel petai. Rhywbeth fel PHP neu Python, neu Ruby, neu hanner dwsin o bobl eraill sy'n bodoli y dyddiau hyn. Ond mae'r tri yn ôl pob tebyg yr hawl mwyaf ffasiynol yn awr. A beth mae hyn yn golygu yw y gallwch chi agor sefydlu golygydd testun fel gedit neu y rhan fwyaf o unrhyw beth arall ac yna dim ond dechrau Cod ysgrifennu heb orfod poeni am lunio, heb orfod wir yn poeni am reoli cof, cadw mewn cof fodd bynnag, fod ychydig Bydd annibendod yn y pen draw yn dod yn ôl i frathu chi os bydd y set ddata yn cael mwy o faint neu os yw'r broblem yn cael fawr. Ond beth mae hyn yn ei olygu i ni yw y canlynol. Gadewch i mi fynd yn ei flaen ac yn rhedeg sillafu o broblem a chwech. Felly, mae hyn yn fy rhoi ar waith-seiliedig trie fy mod yn defnyddio ar y mawr bwrdd lle nad oeddwn perfformio mor dda. Byddwn yn dod yn ôl ymhen wythnos a ailedrych ar y rhai oedd yn y pen draw ar ben y bwrdd mawr yn ein darlith diwethaf. Ond am y tro, gadewch i mi fynd yn ei flaen a dim ond rhedeg fy ateb yn y testun, ac fe wnawn y Brenin Iago Beibl, ac yma rydym yn mynd. Felly, y rhai yn yr holl sôn, geiriau wedi'u camsillafu allan o y Brenin Iago Beibl. Ac mae fy rhoi ar waith yn cymryd hanner eiliad i gyd. Felly, nid yn rhy ddrwg ar y cyfrifiadur penodol. Ond meddyliwch am faint o codio Roedd rhaid i mi ysgrifennu. Meddyliwch faint o cod bu'n rhaid i chi ysgrifennu. Meddyliwch faint o oriau rydych chi'n ei wario yn y D-neuadd neu eich dorm neu lle bynnag mewn gwirionedd yn codio i fyny ateb hwnnw. Wel, os wyf mewn gwirionedd yn cael lefel uwch iaith fel PHP, cymryd sylw o'r beth y gallaf ei wneud yma. Yn gyntaf, mae'n debyg bod hyn yn lle hynny eich cod dosbarthu. Mae hon yn ffeil o'r enw sillafu. Mae ar gael fel rhan o heddiw cod dosbarthu. Ac yr wyf i'n mynd i chwifio fy llaw yn y rhan fwyaf o'r manylion, ond mae hyn mewn gwirionedd yn enghraifft ddiddorol o sut y efallai y byddwch porthladd iaith fel C drosodd i PHP. Wyf yn llythrennol agor dwy ffenestr testun, un gyda fy fersiwn C o speller.c, ac yr wyf newydd ddechrau cyfieithu yn fy ben i PHP a deipio gan ddefnyddio y swyddogaethau cyfatebol agosaf. Felly, mae rhai o'r pethau hyn yn wahanol. Gwelsom tro diwethaf na PHP yn defnyddio cynnwys yn yr un ffordd. Mae'n defnyddio ei gwneud yn ofynnol fel arfer, er bod gynnwys yn bodoli. Diffinio ychydig yn wahanol i # Ddiffinio'n C, ond mae hynny'n sut yr ydym yn gwneud yn gyson. $ Argc mae'n troi allan yn bodoli yn PHP, felly rydym wedi gweld hynny o'r blaen. Newidynnau yn unig yw'r rhain, a phob un sy'n dechrau gydag arwyddion ddoler. Dwyn i gof dyma griw o bwyntiau fel y bo'r angen. Felly stori fer hir, rydych yn croeso i troi drwy'r hyn os chwilfrydig, mae hyn yn bron i trosi llinell-am-linell y Fersiwn C o speller.c i mewn PHP. A allech chi wneud hyn eto ar gyfer hanner dwsin o ieithoedd eraill. Ond yr hyn sy'n ddiddorol yw hyn. Neu beth sy'n dweud y gwir digalon yw hyn. Gadewch i mi fynd yn ei flaen a theipiwch am dictionary.php, ac yn honni fy mod yn mynd i fynd yn ei flaen ac ail-weithredu problem gosod chwech yma. Felly, gadewch i ni yn cynnig cyntaf yn y ffeil, fydd yn cael ei rhoi ar waith yn PHP, felly gadewch i mi agor fy tagiau fel 'na. Gadewch i mi roi fy hun yn fyd-eang amrywiol, $ maint yn cael sero. Ac yr wyf i'n mynd i roi fy hun tabl hash. Byddaf yn defnyddio tabl hash ar gyfer y peth hyn. Sut ydw i'n datgan tabl hash yn PHP? Wneud. OK. Braced braced agos mor agored cynrychioli beth yn PHP, fel yr ydym wedi gweld? Amrywiaeth, ond mae amrywiaeth a allai fod yn amrywiaeth cysylltiadol. Arae cysylltiadol yn strwythur data sy'n allweddi gysylltiedig â gwerthoedd. Nawr yn y symlaf mynegeio'n rhifol amrywiaeth, allweddi hynny'n beth? Zero, un, dau, tri, dde? Hen ysgol pethau yn ôl oddi wrth C. Ond gall hefyd fod yn llinynnau fel foo, a bar, neu Maxwell, neu unrhyw llinyn o'r fath. Felly, yr wyf yn gallu trosoledd y mewn dim ond hyn o bryd. Gadewch i mi fynd yn ei flaen ac yn datgan swyddogaeth fel - gadewch i ni wneud llwyth () yn gyntaf. Felly llwyth swyddogaeth (). A PHP yn ychydig yn wahanol yn y yn llythrennol deipio swyddogaeth, ond peidiwch â theipio math dychwelyd. Rydw i'n mynd i fynd yn ei flaen a dweud bod y Dylai swyddogaeth llwyth () cymryd mewn ddadl $ geiriadur, dim ond fel fersiwn C gwnaeth. Rydw i'n gwneud hynny ar y cof. Ac yr wyf yn cynnig fy mod mynd i wneud hyn. Rwy'n dim ond yn mynd i wneud foreach. Rydw i'n mynd i alw swyddogaeth o'r enw ffeil (), gan fynd yn enw'r y ffeil, sef y newidyn $ Geiriadur â $ gair. Ac yna y tu mewn fy ar gyfer ddolen yma, rwy'n mynd i fynd yn ei flaen ac yn ei storio yn fy $ Tabl bod $ gair yn cael wir. Wneud. O, aros. Wneud. OK. Dyna'r llwyth () swyddogaeth ddweud mewn PHP. Yn awr, pam y mae hynny'n gweithio? A dwi'n fath o twyllo yma. Felly, un, foreach a welsom amser yn fyr diwethaf. 'I jyst yn golygu y gallwch ailadrodd dros amrywiaeth heb trafferthu gyda fi ac n ac yn ogystal a mwy, a hynny i gyd. Geiriadur, wrth gwrs, enw'r ffeil, rhywbeth fel mawr neu fach, y ddau geiriaduron ni ddefnyddiwyd y tro diwethaf. Ffeil yn swyddogaeth sy'n agor i fyny y testun ffeiliau, yn darllen yn linell wrth linell, a dwylo chi yn ôl amrywiaeth enfawr, pob un o'r elfennau y mae eu yn lein o'r ffeil. Felly dyna cyfuniad o fopen, a fread, ac er bod dolen, a mmap, a hynny i gyd. Yn olaf, fel gair yn unig yn golygu bod yn y amrywiol Rydw i'n mynd i gael mynediad at ar bob fersiwn yn y cylch hwn. Felly, yn fyr, mae hyn yn un leinin yma'n golygu agor y ffeil y mae ei enw yn geiriadur, y newidyn, ailadrodd dros fesul llinell, a phob tro y byddwch yn cael llinell, storio mewn gair amrywiol o'r enw, ac yna gwneud rhywbeth gyda gair. Beth ydw i am ei wneud? Yr wyf am roi gair i mewn i fy tabl hash. Wel, gallaf roi rhywbeth yn fy hash tabl yn union fel yn C ddefnyddio cromfachau sgwâr. Dyma'r enw ar gyfer fy tabl hash. Rydw i'n mynd i mynegai i mewn i'r hash tabl yn y lleoliad hwn. Felly nid braced sero, nid braced un. Quote Braced rhywbeth unquote, beth bynnag y gair hwnnw. Ac yn union fel y gallai fod gennych yn eich trie gwaith bwrdd hash, 'ch jyst storio effeithiol yn Boole, ymhlyg neu benodol. Wneud. Dw i'n storio gwir werth. Erbyn hyn mae un neu ddau o bethau Im 'yn torri corneli ar yma. Yn dechnegol, mae mynd i fod yn llinell newydd yn blino, / n, ar ddiwedd y pob un o'r geiriau hyn. Felly, mae'n debyg y dylwn alw swyddogaeth PHP a elwir yn chop (), a fydd yn yn llythrennol torri bod i ffwrdd. Ac yr wyf angen mewn gwirionedd wneud un peth arall. Mae'n debyg y dylwn cynyddiad maint ar bob ailadrodd, felly rwy'n cadw golwg yn fyd-eang o'r hyn ydyw. Ac yn ddidwyll, ac mae hyn yn un o'r agweddau stupider o PHP, os ydych yn gan ddefnyddio newidyn byd-eang, mae angen i chi i ddweud yn benodol eich bod. Felly, yr wyf i'n mynd i deipio mewn gwirionedd yn fyd-eang $ Maint, $ bwrdd byd-eang, ac yn awr fy swyddogaeth yn gyflawn. Felly, ddim cweit mor syml ag o'r blaen, ond yn ôl pob tebyg yn cymryd llai o amser nag y C fersiwn hwn, efallai? OK. Felly nawr gadewch i ni wneud y siec () swyddogaeth. Gadewch i ni weld os yw hyn o leiaf yn cymryd y o oriau ar ben ei bod wedi cymryd ni yn C. Felly gadewch i mi fynd yn ei flaen, ac yn datgan gwirio fel swyddogaeth. Cymryd mewn gair dadl, sydd yn mynd i ddod o sillafu. Ac yr wyf i'n jyst yn mynd i wirio a yw'r yn dilyn ISSET amrywiol, bwrdd braced strtolower geiriau - gadewch i ni gydbwyso fy holl cromfachau - wedyn yn dychwelyd yn wir. Arall - a oedd mewn gwirionedd yn anodd rhan o'r rhaglen hon. Else, yn dychwelyd ffug. Wneud. Dyna siec (). Nawr, pam mae hyn yn gweithio? Wel, un yr wyf yn pasio mewn gair, sydd yn llinyn. Dau, rwy'n gwirio tu mewn i'r hash bwrdd, sydd wedi galw $ bwrdd. Rydw i'n ei orfodi i lythrennau bach drwy ffonio swyddogaeth eithaf tebyg tolower () yn C, ond mae hyn yn y gair cyfan, Nid yw cymeriad sengl. Ac os wedi ei osod, mewn geiriau eraill, mae mae gwerth osod, mewn geiriau eraill, os yw'n wir, yna ie, mae hwn yn air. Gan fy mod yn ei roi yno gyda llwyth (). Ac os nad yw, i ddim yn mynd i ddychwelyd ffug. Nawr bod y lleill yn hawdd. Maint y swyddogaeth (), sut ydw i'n gwneud hyn? Yr wyf yn y bôn yn dychwelyd $ faint. Ond yr wyf angen dechnegol gwneud hyn beth blino. Ac mewn gwirionedd i fyny clywed, roeddwn yn torri un gornel yn ormod. Fi 'n sylweddol angen i ni wneud $ bwrdd byd-eang. Ond y cael ei ddweud, dadlwytho). Dadlwytho () yn anhygoel. Dadlwytho swyddogaeth (). Sut ydw i'n eisiau i weithredu dadlwytho ()? Wneud. OK. Felly dadlwytho (), rheoli cof yn cymryd gofal llwyr am i chi yn rhywbeth fel PHP a llawer ieithoedd lefel uwch. Felly, mae hyn yn anhygoel. Fel pam y uffern wnaethom ni wario y gorffennol wyth wythnos yn ogystal ar ysgrifennu C yn ôl pob golwg araf iawn, mewn gwirionedd amser cymryd llawer o broblemau gyda degau o oriau o yn gweithio o dan ein gwregysau? Wel, am un peth, gallai hyn weithio iawn ar gyfer y rhaglenni bach. Yn sicr sped i fyny fy amser datblygu. Ond gadewch i ni weld beth fydd yn digwydd yn y byd go iawn. Gadewch i mi fynd i mewn i cyfeiriadur hwn mewn terfynell ffenestr. Mae sillafu. Ac yn sylwi wrth fynd heibio, ac efallai eich bod wedi dod ar draws hyn yn broblem a osodwyd chwech neu broblem a osodwyd saith. Nid oes yn llym yn rhaid i chi ben ffeiliau PHP gyda. php. Os byddwch yn rhoi llinell fel 'na un gyntaf yn y brig, mae hynny'n llinell arbennig o gystrawen sydd yn eu hanfod yn golygu dod o hyd i y rhaglen o'r enw PHP a'i ddefnyddio i dehongli y ffeil. Felly, does neb yn gwybod yn iawn bod Rydw i'n cynnal rhaglen PHP. Gallaf redeg 'i jyst fel pe bai yn rhywbeth a luniwyd ym C. Ond dyma y peth. A dweud y gwir, gadewch i ni wneud hyn eto. Dropbox/pset6 /. Mae sillafu. OK, 0.44 eiliad. Mae'n got gyflymach y tro hwn. Nawr, gadewch i ni fynd i mewn i'r fersiwn PHP. Cyffwrdd 'n glws. Ond dim ond yn meddwl faint o amser Yr wyf yn arbed ar oriau swyddfa. OK. Felly 3.59 eiliad, sydd mewn gwirionedd nid yw'n swnio'n gywir chwaith. Ond mae hynny oherwydd stori hir yn fyr, pan fyddwch yn argraffu allan lawer iawn o bethau i'r sgrin, bod ei hun yn arafu pethau i lawr. Yr hyn y mae mewn gwirionedd yn cymryd y CPU yn y offer yn 3.59 eiliad, yn wahanol i C, a gymerodd 0.44 eiliad yn fwyaf diweddar. Dyna wir gorchymyn o maint gwahanol. Felly, lle y pris yn dod o? Pam ei fod mor llawer arafach? Pam mae PHP perfformio mor wael? Danielle? GYNULLEIDFA: Nid ydych oedd mewn gwirionedd ddefnyddio tabl hash. DAVID Malan: Doeddwn i ddim wir yn ddefnyddio tabl hash. Felly, yr wyf yn fath o ddim. Felly mae'n arae cysylltiadol. Mae'r rhan fwyaf tebygol os bydd y bobl yn PHP yn wir yn smart, maent yn eu defnyddio o dan y cwfl tabl hash go iawn ar waith yn rhywbeth fel C neu C + +. Ond. Yeah. GYNULLEIDFA: [Anghlywadwy]. DAVID Malan: Yeah. Felly mae gan bob un o'r swyddogaethau ysgrifennais yn awr - mewn gwirionedd, gallwch ddweud bod unwaith eto yn ychydig yn uwch? GYNULLEIDFA: Mae pob un o'r swyddogaethau a chi wedi cynnwys Mae llawer mwy llawn gapasiti na - DAVID Malan: Felly dyna wir iawn. Mae llawer mwy o uwchben ein bod ni'n ddim wir yn gweld trwy ganolbwyntio yn unig ar dictionary.php, yr wyf newydd ei ysgrifennu. Ar y llaw arall, mae 'na gyfieithydd cyfan mynd yn y cefndir. Yn wir, pan yr wyf yn rhedeg y rhaglen hon, mae'n Nid oedd yn rhedeg sero a rhai a luniwyd gynllunio ar gyfer fy CPU Intel. Yn hytrach, yr oedd yn rhedeg fesul llinell Cod PHP sy'n edrych yn union fel rydym yn ei deipio. Ac felly pryd bynnag y byddwch yn defnyddio iaith dehongli, rydych mewn gwirionedd yn talu pris hwn. Mae'n mynd i gymryd peth amser i ddarllen eich ffeil top i'r gwaelod, o'r chwith i'r dde, ac yna gweithredu pob lein eto ac eto. Nawr mewn gwirionedd, yn enwedig ar y we, gallwch chi mewn gwirionedd yn hwyluso'r broses hon drwy caching canlyniadau'r Cod PHP yn cael ei dehongli. Ac mae hynny'n gwneud synnwyr ar y we, gan fod os nad oes gennych un defnyddiwr yn ei gael mi yma, ond 1,000 neu 10,000 o ddefnyddwyr, yna efallai y tro cyntaf y ffeil yn mynediad ei fod yn araf, ond ar ôl hynny mae'n llawer cyflymach. Ond mae hyn hefyd, unwaith eto, yn oddi ar masnach. Ac ar gyfer rhywbeth fel data ymchwil gosod, neu rywbeth mawr fel hyd yn oed hyn, bydd eich defnyddwyr yn y pen draw yn dechrau teimlo bod arafu. Felly, yn fyr, dehongli ieithoedd yn fawr iawn yn ffasiynol, yn boblogaidd iawn, ac dweud y gwir, mae'n debyg yr ieithoedd yr ydych Dylai cyrraedd ar gyfer wrth ddatrys problemau dilyn CS50. Ond yn sylweddoli faint yr ydych yn wirioneddol cymryd yn ganiataol o dan y cwfl 'n sylweddol y rhai yn y gorffennol nifer o wythnosau yn y hash tablau, a choed, a cheisiau, sy'n cael eu defnyddio yn y pen draw i mewn gwirionedd gweithredu pethau fel braced agored, braced sgwâr, y gallwn yn awr ddiolchgar cymryd yn ganiataol. Felly, gadewch i ni edrych yn awr yn y cyd-destun ar y we. Ac yr wyf yn crybwyll y tro diwethaf y mae criw o superglobals yn PHP fod Nid yw yn wir yn berthnasol ar y llinell orchymyn. Eu bod yn fwy perthnasol yn y cyd-destun o ddefnyddio PHP mewn cyd-destun we. Felly, yn rhedeg PHP ar weinydd y we er mwyn i gynhyrchu pethau fel HTML. Ac rydym yn bwrw golwg ar $ _GET a $ _POST, a dyna lle yn awtomatig defnyddwyr mewnbwn yn dod i ben i fyny yn syml os byddwch yn cyflwyno ffurfio at ffeil yn dod i ben mewn. php ar y we gweinydd fel yr offer. Ond gadewch i ni edrych yn fras ar $ _COOKIE A ​​$ _SESSION. Yn nhermau lleygwr, beth yw cwci fel eich bod yn deall yn y cyd-destun ddefnyddio'r we? GYNULLEIDFA: Ffeil ar y cyfrifiadur. DAVID Malan: Yeah. Mae'n ffeil ar gyfrifiadur y defnyddiwr blannwyd gan ba bynnag gwefan ydych yn digwydd i ymweld. Felly, pan fyddwch yn mynd i Facebook, pan fyddwch yn mynd i bankofamerica.com, pan fyddwch yn mynd i google.com, pan fyddwch yn mynd i bron unrhyw gwefan yn y byd y dyddiau hyn, gan gynnwys cs50.net, mae cwci yn cael ei phlannu ar eich cyfrifiadur, sy'n naill ai gwerth storio yn RAM yn eich cyfrifiadur er cof eich porwr, neu weithiau yn wir ffeil storio ar eich disg galed. A beth sy'n nodweddiadol ei storio yn y ffeil Nid yw eich enw defnyddiwr, nad yw eich cyfrinair, fel arfer nid rhywbeth sensitif oni bai nad yw'r wefan mor dda gyda'u diogelwch, ond yn hytrach mae'n dynodwr unigryw mawr ymhlith pethau eraill. Mae'n LandLine rhif ar hap mawr plannu ar eich gyfrifiadur ond gallwch feddwl amdano fel fath o stamp llaw rhithwir fel o clwb neu ryw parc adloniant sy'n yn caniatáu i'r staff, y perchnogion y gwasanaeth, i gofio pwy ydych chi. Felly, os bydd nifer mawr ar hap yn debyg 12345678, er bod hynny'n amlwg yn heb fod yn rhy ar hap, meddyliwch am fod y stamp llaw pan fyddwch yn ymweld facebook.com am y tro cyntaf, maent yn stamp y rhif ar eich llaw. Ac yna oherwydd eich bod yn siarad HTTP, rydych yn bod yn porwr, ac oherwydd Facebook yn amlwg yn siarad yr un fath ag ar y we gweinyddwr, mae'r HTTP protocol yn dweud bod unrhyw adeg rydych wedyn yn ymweld â facebook.com, boed yn ail yn ddiweddarach, awr yn ddiweddarach, hyd yn oed y diwrnod nesaf, cyn belled â nad ydych wedi yn benodol logio allan, sydd yn effeithiol yn debyg i olchi eich dwylo. HTTP yn dweud y dylech gyflwyno eich stamp llaw bob tro y byddwch yn dychwelyd at y wefan. Beth Facebook felly y yw eu edrych ar y stamp llaw a maent yn ei ddweud, oh, 123456789. Nid wyf yn gwybod ar yr olwg gyntaf bod hyn yn yw David Malan yng Nghaergrawnt, Massachusetts, ond gallant wirio eu cronfa ddata a dweud, oh, y person ar ei gyfrifiadur rydym yn plannu 123456789 yw David Malan o Gaergrawnt, Massachusetts. Gadewch i ni ddangos bod defnyddiwr yna ei broffil dudalen neu ei Newyddion Feed. Ond mae problem yma os yw hyn yn yw sut y we yn wir yn gweithio. Gadewch i ni edrych ar enghraifft gyflym. Gadewch i ni mewn gwirionedd yn mynd i ddweud facebook.com. Ond cyn i ni allai fynd yno, gadewch i mi fynd yn ei flaen ac yn agor i fyny Chrome yn Arolygydd i lawr yma. Gadewch i mi edrych ar y tab rhwydwaith. Ac yn awr gadewch i ni fynd yn ei flaen a theipio yn https://facebook.com. Ac yr wyf i'n gwneud hynny fel nad ydym yn gweld holl ail-gyfeiriadau a gwastraff y rhai amser yn edrych trwy y rheiny. Gadewch i mi daro chofnoda. Mae pob hawl. Rydym yn gweld criw cyfan o geisiadau. Fe ddaw Facebook. Mae criw cyfan o ffeiliau. Ac yma, fesul fy sôn am latency tro diwethaf, dyna llawer o geisiadau HTTP. Ond mae'r un cyntaf yn ôl pob tebyg y mwyaf diddorol. Felly, gadewch i ni sgroliwch i lawr yma, ac 'N annhymerus' chwyddo i mewn mewn eiliad. Mae hyn yn mynd i fod yn fath o llanast, ond gadewch i ni weld. Facebook yn anfon ni criw cyfan o bethau. Ond Whoa, yn ddiddorol. Maent yn plannu nid un, ond mae pedwar stampiau llaw ar fy llaw yma. Set-cwci, Set-cwci, gosod-cookie, gosod-cwci. Ac mae ychydig o nodweddion yma. Mae pob un ohonynt sôn am rai fath o ddod i ben. Ac mae'n edrych fel Facebook yn gobeithio i gofio i mi tan 2015. Felly dyna yn ôl pob tebyg erbyn pa bryd y Mae'n rhaid i mi allgofnodi neu eu bod annhymerus 'yn unig gymryd yn ganiataol fy mod Nid yw dod yn ôl. Felly dyna mewn gwirionedd gweddus faint o amser. Ac mae rhai eraill yn bethau sy'n mynd ymlaen yma. Mae'n ymddangos bod y cwci yn rymus ddileu gan ddweud ei fod yn dod i ben yn 1970 cyn cwcis yn bodoli. Felly mae'r porwr yn unig yn mynd i gymryd yn ganiataol OK, dyna fel golchi'r dwylo stamp. Ond yn awr pan fydd fy porwr yn gwneud cais dilynol - gadewch i mi fynd yn ei flaen ac yn gwneud hyn eto ac ail-lwytho. Nawr gadewch i mi sgrolio yn ôl i'r top cais ac yn mynd i lawr yma, yn gofyn am penawdau. Sylwi ar hyn. Felly, yn awr yr wyf i'n dan nad penawdau ymateb, ond sylwi mae'n dweud cais penawdau. Ac yn sylwi bod fy porwr fel rhan o ei gais ar ôl taro ail-lwytho wedi anfon y canlynol o leiaf gwybodaeth. Heb ei osod-cwci, ond cwci. Felly mae hwn yn y llinell, y pennawd HTTP felly i siarad, lle mae fy porwr yn fath o heb fy wybod ei gyflwyno fy llaw ar gyfer yr arolygiad Facebook. Felly gall cwcis hyn fod yn a ddefnyddir wedyn ar gyfer yr hyn? I gofio pwy ydych chi, neu gofio sut sawl gwaith ydych wedi bod yno, neu unrhyw beth mewn gwirionedd. Felly dyma counter.php. A gadewch i mi chwyddo i mewn ar y ffont. A phob tro y byddaf yn ail-lwytho'r dudalen hon, rhybudd mae'n cofio faint o weithiau Rydw i wedi bod yno. Wel, nid yw hynny'n bob un sy'n drawiadol. Gadewch i 'jyst yn cau tab hynny, ac yn awr gadewch i ni fynd yn ôl at http://localhost/counter.php. O, mae hynny'n ddiddorol. Mae'n dal i cofio, hyd yn oed er fy mod yn cau'r tab. Ac yn ddidwyll, os wyf yn cau'r porwr, os cânt eu gweithredu yn y ffordd iawn, yr wyf yn Gallai dal i gofio bod defnyddiwr hwn yn sy'n ef neu hi oedd y tro cyntaf, a dim ond unwaith y byddaf yn mynd i'r ddewislen Chrome, sy'n dros yma yma, ac ewch i Hanes, a chliciwch Clear Pori Data, gan y gall rhai ohonoch ei gael yn y yn y gorffennol, dim ond wedyn y bydd eich cwcis mewn gwirionedd yn cael eu dileu yn ystod y we datblygiad. Felly, os ydym yn mynd - gadewch i ni gau i fyny gedit yma. Ac os ydym yn mynd yn awr at y ffeil hon. Gadewch i mi fynd i mewn i'n vhosts / localhost / y cyhoedd, a gadewch i mi wneud counter.php. Hysbysiad bod hwn yn 'n bert rhaglen syml. Mae'n wefan eithaf syml. Felly ben y ffeil yn unig sylwadau. Ond dyma llinell newydd y gallwch wedi gweld eisoes mewn gosod-p saith, session_start (). Mae hon yn llinell o god PHP sy'n yn y bôn yn dweud wrth y gweinydd gwe, gwneud yn siwr i gael gwared dwylo a gwneud yn siwr i wirio stampiau llaw. Dyna'r cyfan llinell sy'n gwneud, ac mae'n gwneud yr holl broses honno i ni. Yna, yn sylwi fy mod i wedi jyst got dwy gangen yma. Os yw'r allwedd cownter tu mewn hon newidyn byd-eang arbennig a elwir yn $ _SESSION Ei osod - mewn geiriau eraill, os oes rhywfaint o werth yno - gadewch i ni ei gael ac yn ei storio mewn leol amrywiol o'r enw $ cownter. Else, gadewch i ni neilltuo $ cownter gwerth diofyn o 0. Nawr dyma un agwedd ar PHP sy'n yn fendith ac yn felltith. PHP yn ychydig yn flêr. Felly, tra yn C, yr hyn y byddai'r cwmpas y cownter wedi bod yn naill ai yma neu yma? Byddai wedi bod yn cyfyngu i braces cyrliog hynny. Dyfalu beth? Yn PHP, mae'n bodoli hyd yn oed y tu allan i'r rhai braces cyrliog, yma, ac yma, ac yma, ac yma, a hyd yn oed i lawr isod. Felly, yr wyf yn dweud hyn yn fendith yn yr ystyr nad oes rhaid i chi feddwl fel galed fel y gwnaethom wythnosau yn ôl. Ond mae hefyd yn dipyn o felltith yn y ni waeth ble rydych yn defnyddio amrywiol o ran PHP, o leiaf mewn rhaglen fel hyn, mae'n fyd-eang hygyrch i gwell neu er gwaeth. Felly, rhaid i chi gadw mewn cof nawr bod efallai na fydd eich newidynnau heb eu diffinio. Efallai eich bod wedi diffinio nhw i rywle arall. Ond beth ydw i'n mynd i'w wneud yn y pen draw? Rydw i'n mynd i storio y tu mewn y byd-eang amrywiol fel gwerth y cownter yr allwedd canlyniad gwneud cownter ac 1. Felly, mae hyn yn unig yw rhifyddeg sy'n gwneud y incrementation y cownter. Ac mae'r ffaith fy mod yn storio fod gwerth yn ôl i mewn yma yw ei olygu i hanfod diweddaru'r gronfa ddata i cofiwch fod 123456789 defnyddiwr wedi bod yn yma ddwy waith. A phan wyf yn ei wneud eto y tro nesaf y byddaf yn ail-lwytho y dudalen, mae'n mynd i wirio fy stamp llaw a dweud, oh, 123456789 defnyddiwr yn awr bod yma dair gwaith. Ac felly beth PHP a thebyg ieithoedd yn ei wneud i ni yw eu bod yn figuring sut a ble ac am ba hyd i storio gwerthoedd yn y arbennig superglobal. Ac mae hyn yn superglobal y tro nesaf y byddaf yn ewch i'r dudalen hon yn fath o magically cyn-boblog, yn llawn gwerthoedd sy'n oedd y tro diwethaf i chi ymweld â hi, a oedd hynny'n eiliad yn ôl, yr wythnos yn ôl, neu yn 2013, ac rydym yn siarad yn awr tua 2015. PHP a 'r gweinyddwr gwe cymryd gofal hynny i gyd i chi. GYNULLEIDFA: [Anghlywadwy]. DAVID Malan: Newidynnau yn PHP yn yn y bôn bob amser yn fyd-eang oni bai eich eu datgan tu mewn i swyddogaeth, ac yna maent yn lleol i y swyddogaeth yn unig. Ond oherwydd nid wyf wedi ysgrifennu unrhyw swyddogaethau, maent yn awr yn effeithiol byd-eang drwy gydol fy holl ffeiliau yma. GYNULLEIDFA: A oes ffordd i'w gwneud yn lleol? DAVID Malan: A oes unrhyw ffordd i'w gwneud yn lleol? Dim ond drwy eu lapio mewn i swyddogaethau. Pa yn y fersiwn ddiweddaraf o PHP, gallwch wneud hyn gyda swyddogaeth dienw. Ond yn fwy ar hynny yn y nghyd-destun JavaScript. Ond yr ateb byr yw na. Ateb hwy yn gadarnhaol. Nice. Cwestiwn cwis Da. Mae pob hawl. Felly, yn olaf, y dudalen ei hun yn mewn gwirionedd yn eithaf syml. Sylwch fod ar ôl i mi adael modd PHP, dwyn i gof bod yr holl bethau yma i lawr isod yn unig yn mynd i gael tafod allan crai i'r porwr. Sy'n iawn, oherwydd yr wyf yn awyddus i anfon y defnyddiwr rhai HTML, ond dwi ddim eisiau i ddiweddaru bod HTML ddeinamig. Ac un ffordd y gallaf wneud hyn yw i ddatrys o yn gyflym iawn ollwng yn ôl i PHP modd, defnyddiwch marc cwestiwn braced agored arwydd cyfartal, ac yna allbwn gwerth y cownter. Neu os mae hyn yn edrych ychydig yn cryptig, mae hyn yn arwydd cyfartal mewn gwirionedd dim ond rhai siwgr cystrawennol ar gyfer hyn printf ($ cownter). Ond dweud y gwir, dyna dim ond ychydig yn hyll ac ychydig yn blino i deipio. Felly PHP iawn 'n glws yn cynnig nodwedd hon lle gallwch ddweud yn fwy gryno yn yr un modd. Felly beth sy'n mynd ymlaen o dan y cwfl? Gadewch i ni yn gyflym edrych ar y rhwydwaith tab yma am counter.php. A gadewch i mi fynd yn ei flaen ac yn gyntaf gadewch i ni yn glir eich cwcis. Data pori clir gadewch i ni ers y dechrau o amser. Nawr, gadewch i ni fynd yn ôl dros yma. Nawr, gadewch i ni ail-lwytho'r dudalen. A dwi'n ôl ar sero. Gan fod fy stamp llaw wedi cael ei olchi, Yr wyf yn awr yn cael cwci newydd. Yn wir, os wyf yn edrych ar y tab rhwydwaith a edrych ar y penawdau ymateb, sylwch bod y peiriant yn cael ei anfon i mi cwci ei enw braidd yn fympwyol, ond yn fath o rhesymol, PHPSESSID. Ac mae'n anfon fy hyn yn wir rhif ar hap mawr. Dyw hi ddim yn eithaf rhif. Dyw hi ddim yn eithaf hecsadegol. Mae'n rhyw fath o linyn alffaniwmerig, ond mae'n debyg ei fod yn hap. A dyna yw'r stamp llaw er mwyn siarad a Im 'yn cyfeirio at. Yn y cyfamser, os byddaf yn cliciwch ail-lwytho ac yna edrych ar yr ail linell ar gyfer fy ail cais, yn sylwi nawr bod fy nghais penawdau yn cynnwys PHPSESSID hafal i hyn, Nid yw gosod-cwci, ond dim ond cwci. Ac mae hynny'n gyflwyniad fy porwr o fy stamp llaw. Felly, yn awr fel teaser, a byddwn yn siarad mwy am hyn mewn wythnos neu ddwy, ond ym mha ffordd y mae hyn yn gwneud i chi , eich cyfrif Facebook agored i niwed agored i niwed, ac eraill o'r fath cyfrifon agored i niwed? GYNULLEIDFA: Os oes gan rywun eich cwci. DAVID Malan: Yeah, os bydd rhywun yn Mae gan eich cwci. Yr wyf yn golygu wirioneddol, yn debyg iawn i rai ohonoch efallai wedi rhoi cynnig ar fel clwb neu parc difyrion, os ydych yn ceisio rywbeth fel hyn i gopïo'r stamp, er yn ôl i law rhywun arall, ac yna ef neu hi yn ei gyflwyno fel eu pen eu hunain, os yw'n mewn gwirionedd yn edrych union yr un fath, 123456789, yna y we gweinydd yn ymddangos yn unig yn mynd i ymddiried bod defnyddiwr, rydych yn. Ac mae hyn yn wir yn hanfodol bygythiad unrhyw tro y byddwch yn defnyddio cwcis oherwydd pe bai rhywun yn unig Negeseuon ebost twyllodrus felly siarad â'ch cwci, mae'r ffigurau hyn y mae'n ei yw, naill ai drwy wirioneddol gopïo ei drwy edrych ar eich cyfrifiadur a bod fel, OK. Cwci David yw JJ3JIK ac yn y blaen, ac yna eu bod yn ddigon craff i wybod sut i ddatrys y llaw anfon yr cwci o borwr neu o rhaglen y maent yn ysgrifennu, gallent yn llwyr logio i mewn i wefan â chi. Nid yw'n sy'n anodd i esgus bod yn rhywun arall oni bai ein bod ailymweld p-set dau, a gyflwynodd beth? GYNULLEIDFA: cryptograffeg. DAVID Malan: Ychydig ychydig o cryptograffeg. Cryptograffeg syml, o leiaf yn y safon argraffiad, ond crypto serch hynny. lai. Felly, mae'n troi allan os byddwch yn amgryptio pob un penawdau hyn gan ddefnyddio rhywbeth yr ydych Efallai yn gwybod mwy cyfarwydd fel SSL, haen soced ddiogel, neu URLs https://, Yna yr holl bethau hyn, rydym wedi bod yn glancing yn mewn gwirionedd amgryptio, sy'n golygu ei fod fel chi Ni ellir darllen y stamp llaw. Dim ond gall facebook.com, neu google.com, neu yn yr achos hwn, gall yr offer darllen y stamp llaw. Yn drasig, fodd bynnag, ac unwaith eto, mae hyn yn yn rhy priodol gyda'r stwff NSA yn ddiweddar, hyd yn oed SSL yn breakable. Ac mae'n mewn gwirionedd nad caled hyd yn oed agenna amgryptio. Nid yn gymaint trwy gracio y amgryptio, ond drwy twyllo'r y porwr i decrypting y data cyn pryd. Ond unwaith eto, byddwn yn tynnu eich â hynny cyn bo hir. Am y tro, dim ond bod ofn. Mae'n drasig math o wir. Mae pob hawl. Felly, lle mae hyn yn awr yn gadael i ni? Wel, gadewch i ni wneud hyn. Gadewch i ni fynd yn ei flaen ac yn cymryd cyflym ymlid cyn inni gymryd egwyl. Ac yr wyf yn meddwl y byddwn yn oedi'n ychydig yn hirach heddiw, ond yr ydym yn mynd i blymio i mewn i , a oedd yn rhywbeth newydd sbon ac yn rhywiol yn hogi eich awydd am hyd yn oed mwy. Felly dyna'r ymlid. Felly SQL, rydym yn dechrau siarad am erioed felly yn fyr y tro diwethaf. Byddwch yn wir yn cael eich dwylo budr gyda rhywfaint ohono yn gosod-t saith. Ac o ran lleygwr, beth sydd SQL - S-Q-L - ei wneud i chi? Beth yw hwn? Yeah. GYNULLEIDFA: Gadewch i chi data mynediad. DAVID Malan: Yeah. Mae'n gadewch i chi data mynediad mewn cronfa ddata. Strwythuredig Ymholiad Iaith. Ac mae hyn yn ei hanfod yn iaith raglennu. Mae nodweddion ohoni sydd ni fyddwn yn hyd yn oed ddefnyddio yn y dosbarth. Ond gallwch yn effeithiol diffinio swyddogaethau. Maent yn galw eu storio gweithdrefnau SQL. Ond byddwn yn ei gadw eithaf syml a dim ond ddefnyddio ar gyfer rhai gweithrediadau sylfaenol fel dewis data, mewnosod data, diweddaru data, a dileu data. A allwch chi wir yn meddwl cronfa ddata, fel cronfa ddata SQL, fel dim ond yn Microsoft Excel. Oherwydd bod SQL yn cyfeirio at perthynol cronfa ddata, lle perthynas yn unig yn golygu tablau. Rhesi a cholofnau. Felly, unrhyw beth y gallwch ei roi mewn taenlen fel hyn neu Google Docs, gallech roi i mewn i gronfa ddata SQL drwy ddatgan tabl. Nawr, sut yr ydych mewn gwirionedd yn cael mynediad wybodaeth honno? Wel, gyda gorchmynion neu ymholiadau fel hyn. SELECT, RHOWCH, DIWEDDARIAD, ac DILEU. Ac ar gyfer y rhan fwyaf, y rhai yw'r pedwar yn unig gynhwysion bydd angen i chi gwneud rhywbeth eithaf rymus yn broblem a osodwyd saith. Nawr yn ôl yn y dydd, byddai chi mewn gwirionedd rhyngweithio gyda chronfa ddata mewn ffenestr terfynell du a gwyn yn yn brydlon amrantu fel hyn. A'r gronfa ddata rydym yn rhedeg ar y Gelwir teclyn yn MySQL, sy'n injan gronfa ddata ffynhonnell am ddim ac yn agored. Os ydych yn Google a darllen y Wicipedia erthygl hon, byddwch yn gwybod bod yr enw yn ychydig o newid ar gyfer rhai fersiynau o Linux. Cronfa ddata maria mewn gwirionedd fforc fel petai o MySQL. Byr stori hir, prynu Oracle MySQL. Oracle yn gwmni mawr. Mae pobl wedi bod yn poeni y byddai'n parhau i fod yn ffynhonnell mor agored mwyach, felly mae hyn yn unig yw copi o MySQL sy'n dal i fod yn rhad ac am ddim, ffynhonnell agored o hyd, a gosod yn Fedora Linux yn ddiofyn. Ond mae hyn yn fath o boen yn y gwddf i gael gyfarwydd â gronfa ddata y ffordd hon. Felly, rydym yn cynnwys yn y peiriant CS50 offeryn ffynhonnell agored am ddim o'r enw phpMyAdmin. Dim ond cyd-ddigwyddiad bod mae'n ysgrifennu yn PHP. Does dim sylfaenol angen ar gyfer PHP yma. Ond mae hyn yn unig yw offeryn ar y we sy'n rydym yn llwytho i lawr rhad ac am ddim, gosod yn yr offer, sy'n ein galluogi i gael rhyngwyneb defnyddiwr graffigol ag ef i edrych ar y set-p saith cronfa ddata gyda i greu cronfeydd data newydd, dweud ar gyfer eich prosiect terfynol hun os ydych wedi fel, yn y pen draw yn creu gwefannau deinamig fel CS50 Cyllid sy'n eich galluogi i holi data a ddiweddaru data ddynamig. Nad ydych yn mynd i gael i ddefnyddio dim ond ffeil testun syml neu CSV. Alli 'n weithredol defnyddio cronfa ddata smart rhaglen er mwyn i chi gyflawni mwy ymholiadau soffistigedig na dim ond darllen drwy bopeth llinol. Felly, er enghraifft, mae hyn yn hyn yr ydym yn rhoi chi allan o'r blwch ar gyfer set-t saith. Mae hwn yn tabl gyda mae'n debyg o leiaf dair colofn, ac un ohonynt yw enw defnyddiwr, ac un ohonynt yw hash, a'r llall o'r rhain yw adnabod. Ond y peth diddorol, a dim ond i tynnu sylw at un meddwl yma, enw defnyddiwr yn ôl pob tebyg eisoes yn unigryw, dde? Yr wyf yn golygu, y rhan fwyaf o unrhyw wefan, os oes gennych enw defnyddiwr, mae Ni all fod yn ddau Caesars. Ni ellir cael dau malans. Ni ellir cael dau jharvards. Mae ei unigryw. Fel arall, nid ydynt yn gwybod pa jharvard ydyw mewn gwirionedd. Felly, yr hyn a allai fod yn gymhelliant i hefyd cael drydedd golofn ar y chwith yno a elwir yn ID, sy'n edrych fel nifer sy'n un modd unigryw? Mae'n teimlo ychydig yn ddi-waith i mi ar yr olwg gyntaf. Pam y gallai fod yn gymhellol i gael nid yn unig enwau defnyddwyr unigryw, ond hefyd rhifau unigryw? GYNULLEIDFA: Gallent gael yr un cyfrinair. DAVID Malan: Efallai y bydd pobl yn cael yr un cyfrinair, yn sicr. Gallai hynny ddigwydd gwbl. Ond os oes ganddynt enw defnyddiwr unigryw hwn, yr wyf yn fyddai'n dadlau nad yw hynny'n wir mater, oherwydd os ydynt teipio eu enw defnyddiwr, dim ond angen i mi wirio eu cyfrinair, eu hash o hynny. Pam arall? GYNULLEIDFA: Hymprydiwr chwilio. DAVID Malan: chwilio gyflymach. Pam? GYNULLEIDFA: ID yn unig un. DAVID Malan: ID Dim ond un cymeriad, neu i fod yn fwy manwl gywir, mae'n LandLine rhif, felly mae'n debyg 32 darnau neu rywbeth fel 'na. Er bod y enw defnyddiwr, mae'n debyg Jason I fyny Hirschhorn yno yn fath o chwerthinllyd hir, ac mae'n mynd i mynd â fi lawer mwy o amser i linyn cymharu H-I-R-S-C-H-H-O-R-N, ac efallai a / 0 neu rywbeth fel 'na, er mwyn i chwilio am Jason, yn hytrach na dim ond gan ddweud rhowch rif defnyddiwr dau mi. Dyna 32 o ddarnau. Mae'n INT unigol sy'n rhaid i chi gymharu. Ac yn wir, dyna pam mae cronfeydd data yn union yn tueddu i neilltuo IDs unigryw i rhesi ynddynt. Nawr pa fathau data eraill sydd heblaw INT ac i bob golwg llinynnau fel hyn? Wel, i fod yn fwy priodol, Cronfeydd data SQL, fel MySQL, rhaid caeau CHAR. Ac torgoch ychydig yn gamarweiniol Nid yw CHAR sengl. Mae cae CHAR mewn cronfa ddata MySQL yn un neu fwy o gymeriadau, ond mae'n nifer penodol o gymeriadau. Felly, er enghraifft, os byddaf yn mynd drosodd i phpMyAdmin oherwydd efallai y byddwch yn barod, neu yn fuan bydd problem yn gosod saith, ac yr wyf yn mynd i fy gronfa ddata, a dim ond am hwyl, gadewch i greu tabl newydd o'r enw profi gyda dim ond dwy golofn. 'N annhymerus' yna cliciwch Go. A bydd hyn yn dod yn eithaf cyfarwydd, yn enwedig wrth i chi tincer o gwmpas ar eich pen eich hun. Yma, efallai y byddwn yn teipio adnabod i greu tabl newydd o'r math INT. Ond yma efallai y byddwn deipio enw defnyddiwr i ail-greu y tabl hwnnw yn gynharach. Ac yn sylwi gen i criw cyfan o fathau i ddewis o'u plith. Ac mae hyn hefyd dyna pam phpMyAdmin yn fath o 'n glws. Mae'n fath o hunan-addysgu yn eich bod gall dim ond math o bwynt, a chliciwch, a edrych ar bwydlenni dropdown, a chasglu o bod yr hyn bwerau SQL yn rhoi i chi. Ac yn wir, os byddaf yn dewis CHAR, byddaf wedyn yn rhaid i nodi hyd, na sut llawer o werthoedd, faint o chars. Gwerthoedd mor gyffredin iawn yw pethau fel 255, ond mae hynny'n ychydig yn hir. Fel arfer yn wyth am enw defnyddiwr. Ond mae hynny'n ychydig bach y dyddiau hyn. Felly, mae hyn yn benderfyniad dylunio. A yw'n 8 nod max, 32, 255, 1,000? Mae'n wir i fyny i chi. Ond cae CHAR yn nifer penodedig. Felly dewiswch rhy ychydig ac rydych yn fath o sgriwio os ydych am enw defnyddiwr hirach. Dewiswch gormod o a beth sy'n anfantais? GYNULLEIDFA: [Anghlywadwy]. DAVID Malan: Mae'n LandLine wastraffus. Yn union fel yn C, os oes gennych fwy darn o gof nag sydd ei angen, rydych yn dim ond gwastraffu amser ac yn gwastraffu gofod. Felly, fel dewis arall, yn bodoli VARCHAR, sy'n datrys y broblem hon drwy trin hyd nid fel hyd penodol, ond fel uchafswm hyd, a defnyddio nifer amrywiol o chars, sydd wedyn yn yn tueddu i ddefnyddio dim ond cymaint o chars ag y byddwch yn ei angen mewn gwirionedd. Mae hynny'n swnio'n berffaith. Pam nad ydym yn cael gwared ar y Data CHAR deipio wedyn? Beth allai fod yn anfantais o ddefnyddio VARCHARs, sy'n swnio'n fel ei fod yn ennill neis? Yeah? GYNULLEIDFA: [Anghlywadwy]. DAVID Malan: OK, yn dda. Felly, os yw pob un eich data yn yr un hyd, beth yw'r pryder? GYNULLEIDFA: Oherwydd eich bod yn gwastraffu data trwy ddweud wrthynt i gyd. DAVID Malan: Felly, os eich holl ddata yn yr un hyd, fodd bynnag, byddwn yn dadlau bod bennu uchafswm hyd ar VARCHAR yn wahanol i pennu hyd penodol ar CHAR os eich bod yn gwybod y rhif hwnnw ymlaen llaw. Ond mae yn wir, ac 'n annhymerus' math o darn o'r ateb hwnnw y realiti bod yna dal i fod yn max, a allai fod yn boen, yn enwedig os ydych yn yn dod ar draws enw person sy'n anarferol o hir na wnaethoch rhagweld. Ac mae hefyd ychydig yn llai effeithlon i chwilio mewn gwirionedd ar VARCHARs fel hytrach na chars chwilio, yn enwedig ar gyfer tablau hir sy'n cael llawer ac llawer o ddata. Felly yma hefyd, thematig eto dim dewis amlwg. Felly, dim ond i roi ymdeimlad o eraill yr ydych yn mathau o ddata a allai fod o ddiddordeb naill ai ar gyfer gosod-t saith neu mewn y dyfodol, mae INT. Mae BIGINT, a oedd yn yn debyg hir iawn. Mae'n tueddu i fod yn 64 ddarnau. Mae degol, gyda degol a byddwch yn gweld yn y broblem set, sy'n llawer ateb glanach i'r problemau yr ydym yn a gafwyd gyda arnofio ac fel y bo'r angen bwynt anfanyldeb. Ac yna mae DyddiadAmser. Mae llythrennol math data sydd wedi i edrych fel y flwyddyn, mis, diwrnod, ac awr, munud, ac yn ail. Ond mae cronfeydd data SQL hefyd pethau byddwn yn galw mynegeion. A mynegai yn rhywbeth yr ydych nodi wrth greu y tabl i wneud y chwiliadau a gweithrediadau eraill yn fwy effeithlon. Yn benodol, mae rhywbeth a elwir yn y mynegai CYNRADD chi a allai datgan fel a ganlyn. Gwnaethom hyn i chi gyda'r tabl defnyddwyr yr ydym yn ei roi i chi. Ond sylwi os wyf yn ail-greu â llaw y tabl defnyddwyr yma yn rhoi ei fod yn enw o ddefnyddwyr. Rwyf eisoes penodedig adnabod. Yr wyf yn benodol INT. Yr wyf yn benodol enw defnyddiwr gyda uchafswm 32 nod. Ond os ydym yn cadw sgrolio yn y deg ffenestr o led, rhybudd yna criw o bethau eraill y gallaf bennu. Un, gallaf nodi priodoleddau fel, eich bod yn gwybod beth, mae hyn yn Dylai INT fod HEB EI ARWYDDO. Nid wyf am rifau negyddol, felly gadewch i ni ei gwneud yn HEB EI ARWYDDO. Nid Null yn berthnasol yma oherwydd Dwi ddim am i bob defnyddiwr i gael rhif unigryw. Dydw i ddim am iddo fod null. Ond mae hyn yn ddiddorol. Gallaf nodi bod adnabod yn naill ai'r allwedd gynradd o'r gronfa ddata hon, neu ei fod yn unigryw, neu ei fod yn mynegeio, neu destun llawn. Felly, ar gyfer dibenion heddiw, stori hir byr, PRIMARY yn golygu y bydd hyn yn fod yn gysyniadol ac yn dechnegol y maes yr ydym yn eu defnyddio i unigryw adnabod defnyddwyr. Felly, pan fyddwn yn edrych i fyny i ddefnyddwyr, mae hyn yn fath o addewid i edrych i fyny yn bennaf gan y dynodwr unigryw. A bydd y gronfa ddata yn sicrhau, os ydych yn gael rhif defnyddiwr 3, ni allwch gorfforol mewnosod defnyddiwr arall â'r un rhif 3. Bydd y gronfa ddata yn unig wrthod i arbed eich newidiadau. Sy'n beth da, oherwydd eich bod yn gallu amddiffyn eich hun rhag eich hun. hunan Fel arall, enw defnyddiwr. Felly, yr ail res, galw i gof, yn y maes enw defnyddiwr. Felly, yr ail res yma yw enw defnyddiwr, fel y gwnaethom ar y pellaf ar y chwith yno. Felly, beth arall y gallwn am y manylion? Dydw i ddim yn caniatáu, yn ôl SQL, i nodi dau allweddi cynradd. gallwch nodi allwedd ar y cyd lle rydych yn edrych ar y ddau faes, ond nid ydynt yn gallu unigol fod yn allweddi cynradd. Felly dyna allan o'r cwestiwn. Felly, y gallai yr wyf am i ddewis? Wel, UNIGRYW yn debyg o ran ysbryd i allwedd gynradd lle rydych yn nodi hyn Bydd y maes yn unigryw, ond mae'n ddim yn mynd i fod yr un Rwy'n defnyddio drwy'r amser. Ac nid ydym yn mynd i ddefnyddio'r un bob yr amser ar gyfer yr hyn reswm eto? Mae'n arafach o bosibl os mae'n enw defnyddiwr hir. Dim ond yn wastraff amser. MYNEGAI, yn y cyfamser, yn nodi ei fod yn ddim yn mynd i fod yn unigryw, ond hoffwn i chi weithio eich hud o dan y cwfl i wneud yn gyflymach i mi chwilio ar y maes hwn. Felly mae hyn mae'n debyg nad yn berthnasol yma. Am enw defnyddiwr, byddwn i'n dadlau bod UNIGRYW yn ateb da. Ond mae'n debyg ein bod yn gwneud defnyddwyr yn fwy diddorol na dim ond enwau defnyddwyr, hashes, a rhifau adnabod. Beth pe baem yn rhoi pobl enwau llawn? Beth pe baem yn rhoi cyfeiriadau iddynt a data arall amdanynt? Wel, os ydych yn nodi bod colofn mewn cronfa ddata yn cael ei mynegeio, mae hynny'n golygu bod MySQL, neu Oracle, neu beth bynnag cronfa ddata ydych yn defnyddio, weithio ei hud ac yn defnyddio rhyw fath o ddata ffansi strwythur fel coeden, neu trie, neu tabl hash, neu rywbeth i warantu bod pan fyddwch yn chwilio am ddata gan ddefnyddio dewis ar y maes arbennig hwnnw - ddangos i mi fel pawb bod yn byw ar Stryd Rhydychen. Mae ymholiad fel 'na. Os ydych chi wedi nodi o flaen llaw y ydych chi eisiau mynegai ar y maes hwnnw, y Bydd chwiliadau yn llawer, llawer cyflymach. Os nad ydych yn pennu mynegai, y gorau gallwch ei wneud yw chwiliad llinol os nid yw'n cael ei datrys. Ond os eich bod yn nodi MYNEGAI, y smart pobl sydd wedi gwneud y gronfa ddata - pobl fel chi sy'n awr yn gwybod coed a ceisiau a thablau hash - Bydd adeiladu ddata o'r fath yn awtomatig strwythur RAM i wneud yn siŵr bod chwiliadau hynny yn llawer cyflymach. Testun llawn yn y cyfamser yn debyg o ran ysbryd, ond yn caniatáu i chi wneud nod-chwiliwr chwiliadau, fel dangoswch i mi bawb a yn byw ar strydoedd sy'n dechrau gyda'r Llythyr O am ba bynnag reswm. Gallwch wneud chwiliadau nod-chwiliwr fel 'na. Neu, pethau fwy cymhellol fel sioe mi pawb sydd â'r gair - ddangos i mi i bawb y mae ei enw yn dechrau gyda llythyr penodol. Gallwch chwilio am eiriau allweddol yn y modd hwn. Mae pob hawl. Felly, mae cyfleoedd dylunio yno o bosibl. Mae eraill sy'n 'n annhymerus' chwifio fy nwylo ar. Mae'n troi allan y gallwch gael gwahanol beiriannau storio. Ac mae hyn yn fwy dirgel nag sydd ei angen yn sicr ar gyfer datrys gosod saith. Yn ddiofyn, rydych guys yn defnyddio rywbeth o'r enw InnoDB. Byddwch yn gweld sôn am hyn yn rhywle yn rhyngwyneb phpMyAdmin mwyaf tebygol. Ond yn gwybod bod yna dylunio eraill penderfyniadau sydd o botensial diddordeb yn dod prosiectau terfynol os byddwch yn gwneud rhywbeth ar y we. Ond gadewch i ni wneud hyn. Gadewch i ni fynd yn ei flaen ac yn rhoi hyn ar yr sgrîn fel ymlid ar gyfer stori eich cynnwys chi, a roommate, a gwydraid o laeth. Gadewch i ni gymryd dau funud neu felly dorri yma. Ac os gallwch ffon o gwmpas, gadewch i ni ddod yn ôl, yn edrych ychydig yn fwy yn SQL, a yna ychydig o JavaScript gyda wyth mewn cof set-t. Mae pob hawl. Felly, gadewch i ni fynd i feddwl am achos cornel a all godi yn hawdd iawn yng nghyd-destun defnyddio cronfa ddata, neu dweud y gwir, hyd yn oed gan ddefnyddio pethau byd go iawn fel ATM i gael arian. Felly dyma oergell. Gadewch i ni dybio eich bod wedi cael un hefyd yn eich dorm neu eich tŷ. A oes gennych chi un roommate, ac mae'r ddau ydych yn wir yn hoffi llaeth er enghraifft. Felly, byddwch yn dod adref o ddosbarth un diwrnod. Nad yw ef neu hi'n eto ôl. I chi agor yr oergell. Ydych wir eisiau gwydraid mawr o laeth. Does dim llaeth. Felly, beth ydych chi'n ei wneud? Rydych yn cau'r oergell. Chi cydio eich allweddi. Rydych yn mynd allan i'r sgwâr. A ydych yn mynd i mewn lein yn CGG at y rhai pethau hunan ddesg dalu, sydd bob amser yn cymryd mwy o amser nag yn cael arianwyr. Anyhow. Felly, yna, yn y cyfamser, dot dot dot, eich roommate yn dod adref ac ef neu hi yn yr un modd mae hankering ar gyfer rhai llaeth. Felly, ef neu hi yn agor yr oergell, yn edrych y tu mewn, a oh, damn. Dim llaeth. Felly, ef neu hi yn bennaeth allan, yn digwydd i fynd i'r CVS arall, a oedd ond yn bloc i ffwrdd am ryw reswm, a'i fod mae'n cael yn unol i brynu ychydig o laeth. Yn y cyfamser, byddwch yn dod adref, ef neu mae hi'n dod adref, a beth chi yn y pen draw gael? Dwywaith cymaint o laeth. Ond nad ydych yn wir yn hoffi llaeth bod llawer. Felly, nawr eich bod yn cael cymaint o laeth sydd bellach yn un ohonynt yn unig yn mynd i fynd yn sur yn y pen draw. Felly, mae hyn yn broblem yn wael iawn. Iawn? Felly, beth sydd wedi digwydd? Felly y bôn, mae hyn yn fath am enghraifft chwerthinllyd. Ond o dan y cwfl, yr hyn yr ydym wedi cael digwydd yma yn y ddau chi wedi gwirio gyflwr rhai darn o cof, yr oergell. Mae'r ddau chi wedi gwirio y wladwriaeth rhai amrywiol. Ddau ohonoch tynnodd gasgliad eich bod yna wedi gweithredu ar. Ond yn anffodus, tra bydd eich roommate oedd yn y siop, cyflwr y amrywiol newid, ef neu hi yn dod yn ôl ac yn awr yn awyddus i newid y wladwriaeth, ond mae eisoes wedi cael ei newid ar iddo ef neu hi. Ac wrth gwrs, ni fyddai ef neu hi wedi mynd i'r siop os ydynt yn gwybod eich bod yn barod ar y ffordd. Felly, yn y byd go iawn, sut allech chi osgoi'r broblem hon, gan dybio eich bod wedi oergell, mae gennych roommate, ac rydych mewn gwirionedd yn hoffi llaeth? GYNULLEIDFA: Cyfathrebu. DAVID Malan: Cyfathrebu. OK. Ond sut y byddwch yn cyfathrebu? GYNULLEIDFA: Gadewch nodyn. DAVID Malan: Gadewch nodyn, dde? Bob amser yn gadael nodyn, ar gyfer cefnogwyr y sioe. Mae pob hawl, felly bob amser yn gadael nodyn, neu rhoi wirioneddol fel clo neu rywbeth ar yr oergell sy'n cadw eich roommate rhag archwilio cyflwr newidyn hwnnw. Yn awr, pam y gallai hyn fod yn germane i problem set saith, neu i ATM. Wel, dychmygu byd mewn ATM lle efallai y byddwch yn gallu mynd i fyny at ATM peiriant yma, ac ATM arall yma. Ac mae hyn yn digwydd yn aml iawn. Ac mae'n debyg oedd gennych ddau cardiau ATM, sydd yn bosibl cael. A byddwch yn logio i mewn i'r ddau peiriannau yn effeithiol ar yr un pryd, gobeithio er nad oedd unrhyw un yn edrych. Ac yna byddwch yn teipio eich PIN yn fras ar yr un pryd. Ac yna ydych yn gwneud ymholiad cydbwysedd i weld faint o arian sydd gennych. A gadewch i ni ddweud eich bod wedi $ 100 ar ôl yn eich cyfrif. Felly, yn y bôn yr un pryd, rydych yn dweud un, sero, sero, nodwch. A ydych yn gobeithio cael rhywfaint o arian yn ôl. Ond faint o arian y gallech ei gael yn ôl? Nawr gyfrifiaduron ar ddiwedd y dydd, yn enwedig os ydynt yn siarad Nid yw gweinyddwyr, o reidrwydd yn gwneud pethau yn y drefn sy'n cael ei ddisgwyl. Felly, mae'n debyg yr hyn sy'n digwydd, oherwydd y beth bynnag materion cyflymder rhwydwaith yno , neu faterion CPU sydd ar gael, neu unrhyw beth fel 'na, mae'n debyg bod y ATM gyntaf yn gwirio eich cydbwysedd a gweld, oh, y person hwn $ 100. Ond wedyn yn cael canolbwyntio ar y ffordd oherwydd efallai copi wrth gefn yn digwydd ac felly mae'n arafu. Neu efallai tra'n gwirio, y rhwydwaith cysylltiad got ychydig yn arafach oherwydd hyn yn unig yn digwydd. Maent yn dyfeisiau corfforol. Felly, yn y cyfamser, yr ail ATM yn gofyn yr un cwestiwn. Faint o arian mae David wedi? 100 $ yw'r ateb. Ond oherwydd bod y ATM cyntaf heb eto anfonwyd y neges tynnu $ 100, yn ATM wedi arolygu cromen y banc, gweld yno yn $ 100 yno, ac yn awr ddau peiriannau a allai fod yn mynd i boeri allan ateb. Yn awr, mae hyn yn wych i chi mewn rhyw ffordd os yw'r hyn y banc yn ei wneud yn y pen draw yn newid y swm i finws 100 erbyn gosod y newidyn cyfateb i'ch cyfrif banc gyfartal i 0, yn hytrach na i wneud minws 100. Nawr yn yr achos gwaethaf ar gyfer y banc - neu yn y gorau ar gyfer y banc, yn y cyfamser, maent yn rhoi i chi $ 200, a eich cyfrif banc yn awr yn dangos negyddol $ 100, sydd nid yn wir yn o fudd i chi o gwbl. Ond y pwynt yw fod y ras hon amod ar gyfer dau roommates cael llaeth, neu ar gyfer dau ATMs ceisio cael arian parod a newid cyflwr o gladdgell ar yr un pryd yn bodoli unrhyw tro y byddwch yn cael cronfa ddata. Nawr yn broblem gosod saith, y mater hwn yn codi yn yr ystyr, os ydych yn prynu cyfran o stoc Facebook, ac yna enghraifft, byddwch yn prynu ail gyfran o Facebook stoc, mae angen i chi wneud penderfyniad gan fod y rhaglennydd. Er mwyn penderfynu sut i ddiweddaru'r cronfa ddata, odds yn ydych yn mynd i cael un rhes ar gyfer y stoc, ac mae hyn yn yn un ffordd o weithredu. A ydych yn mynd i gael un gyfran o FB, sydd yn eu stoc Ticker symbol am enw defnyddiwr hwn, neu y defnyddiwr hwn ID y dynodwr unigryw. Ond gall yr un stori yn digwydd yma. Os ydych yn SELECT yn SQL, fel y gwelwch mewn datrys gosod saith pan fyddwch yn gweld, oh, David un gyfran o stoc Facebook. Gadewch i mi yn awr yn newid hyn i fod yn ddau cyfranddaliadau, oherwydd ei fod am i brynu ail gyfran. Ond mae'n debyg David mewn gwirionedd roedd dau porwr ffenestri ar agor, neu'n debyg y ei fod yn cyfrif ar y cyd gyda dau briod, ac mae'r ddau ohonynt yn cael eu ceisio i berfformio yr un llawdriniaeth, yno, hefyd, y potensial yn bodoli am benderfyniad i fod yn gwneud yn seiliedig ar y flwyddyn flaenorol cyflwr y byd - y cyfrif un gyfran - a'r ddau berson, neu'r ddau gweinyddwyr, yn awr ceisio dweud gynyddiad i ddau cyfranddaliadau. Ond yn yr achos hwn, efallai y byddwch wedi codi arian i mi ar gyfer y ddau gyfranddaliadau, ond gynyddrannedig dim ond bod un adeg. , Y broblem sylfaenol Felly, yn fyr yma, fel yn achos y jôc am adael nodi, neu roi clo arni, yn os oes dau o bobl, neu ddau edafedd - meddwl yn ôl i grafu - Gall archwilio cyflwr rhai amrywiol ac yna ceisio newid hynny amrywio, ond nid y ddau beth yn digwydd yn y un pryd, ond yn gallu cael eu torri ar draws gan bethau eraill yn digwydd, gall data fynd i mewn i gyflwr rhyfedd iawn. A gallwch elwa neu gallwch ddioddef yn yr ystyr yr enghraifft arian. Felly, yn broblem set saith, rydym yn rhoi i chi un llinell hon o'r cod, sy'n hir stori fer, yn datrys hyn yn broblem yn MySQL. Mae'r cyfarwyddyd hir iawn nad yw'n hyd yn oed yn ffitio ar un llinell ar y sgrin yma yn sicrhau bod eich llawdriniaeth yn yr hyn a elwir atomig. Mae'r cyfan yn digwydd ar yr un pryd, neu nid yw'n digwydd o gwbl. Ni all yr ymadrodd hir iawn yn cael eu torri ar draws yn rhannol. A beth mae'n ei wneud yn llythrennol yr hyn y mae'n ei ddweud. Rhowch i mewn i rai tabl canlynol tri chae gwerthoedd penodol hynny, ond ar allweddol dyblyg, peidiwch â gwneud mewnosodiad. Gwneud y wybodaeth ddiweddaraf. Felly, mae hyn yn debyg gwneud SELECT a INSERT felly i siarad ar yr un pryd. A beth yw'r allwedd sy'n debyg cael eu cyfeirio at y fan hon? Mae'n troi allan, a byddwch yn gweld hyn yn problem yn gosod spec saith yn, oherwydd rydym wedi datgan bod un allwedd unigryw yn y tabl hwn penodol fel bod ni allwch gael rhesi lluosog ar gyfer yr un defnyddiwr gyda'r yr un symbol stoc ceiniog - yn yr enghraifft hon yma, DVN.V yn stoc ceiniog gwirion ein bod yn cyfeirio atynt yn y fanyleb. Oherwydd ein bod wedi datgan ei fod yn unigryw, beth mae hyn yn ei olygu yw, os ydych yn ceisio mewnosod rhes dyblyg, rydych yn yn hytrach na mynd i ddiweddaru heb unrhyw un arall yn cael cyfle i newid cyflwr y byd chwaith. Felly, yn fyr, mae hyn yn sicrhau pethau'n atomig. Yn fwy cyffredinol, fodd bynnag, cronfeydd data fel MySQL - ac nid oes angen nodwedd hon i chi am p-set saith, ond ei gadw mewn golwg ar gyfer y dyfodol - gefnogi'r hyn a elwir yn trafodion, lle gallwch ddweud DECHRAU CYFLAWNI'R llythrennol. Yna gallwch weithredu dau ddatganiad SQL. A datganiad SQL, fel y byddwch yn gweld mewn saith gosod-p, yn edrych ychydig yn rhywbeth fel hyn. Diweddariad o'r enw gyfrif bwrdd. Gosod y golofn cydbwysedd cyfartal i ba bynnag y golofn cydbwysedd ar hyn o bryd yw minws 1,000 ble mae'r rhif, yr rhif y cyfrif, fel y ID defnyddiwr, yn hafal i 2, ac yna diweddaru cyfrif dot dot dot. Felly, mewn termau lleyg, beth yw y ddau yn ymholiadau yn ymddangos i fod yn ei wneud yn y synnwyr byd go iawn o fancio? GYNULLEIDFA: Trosglwyddo i arbedion. DAVID Malan: Yn union. Drosglwyddo arian o un cyfrif i'r llall. Ac mae hyn yn enghraifft arall lle rydych yn wir eisiau y ddau beth ddigwydd neu na fydd yn digwydd. Dydych chi ddim eisiau rhywbeth i gael yn y canol ohonynt ac o bosibl llanast i fyny y math, neu llanast i fyny faint o arian sydd gennych, neu faint arian y mae'r banc wedi. Felly, beth sydd wir yn neis am drafodion yn MySQL yw hynny, ac cronfeydd data yn fwy cyffredinol, yw eu bod yn a phobl smart sydd wedi rhoi ar waith nodweddion hyn yn chyfrif i maes sut i wneud yn siŵr bod y ddau beth hynny yn digwydd neu ddim o gwbl. Ac os ydych yn wir yn anelu at wneud gwefan sy'n cael ei ddefnyddio gan bobl ar campws, pobl yn y byd go iawn, yn gwneud rhywbeth yn yr ystyr startup, mae'r rhain yn y math o penderfyniadau dylunio sy'n yn dod yn erioed mor bwysig. Fel arall, byddwch yn dechrau colli data, colli defnyddwyr, neu yn yr achos gwaethaf fel rydym wedi gweld yma, o bosibl colli arian. Felly eto, yn fwy am hynny yn broblem a osodwyd saith, yn ogystal â efallai ar gyfer rhai o'r chi mewn prosiectau terfynol. Felly, gadewch i ni newid y darlun oedd gennym funud yn ôl yn unig yn un ffordd fwy. Felly, gadewch i mi mewn gwirionedd weld os gallaf - Na, mae hynny'n mynd. Yno y mae. Felly dyma lle rydym yn gadael y tro diwethaf. Ac mae'n troi allan rydym yn mynd i toss un peth arall i mewn i'r gymysgedd yma - iaith o'r enw JavaScript. Felly, mewn gwirionedd yn cyd-fynd JavaScript yn y darn hwn - a doeddwn i ddim yn eithaf yn gadael digon o le, felly nid yw hyn bellach wrth raddfa. OK, mae hyn yn wir yn pathetic. Iawn, felly dyna JavaScript. Mae pob hawl. Dwi wir yn gwneud ei fod yn cam. Mae pob hawl. Felly JavaScript yn rhaglennu arall iaith, ac mae ein olaf, os yw hynny'n helpu sicrwydd nad oes llawer mwy o'r hydrantau tân yma. Felly JavaScript hefyd yn dehongli iaith, sy'n golygu nad ydych yn llunio i mewn i sero a rhai. Rydych yn unig redeg. Ond yr hyn sy'n sylfaenol wahanol gyda JavaScript fel arfer eich bod yn peidiwch â rhedeg ar eich gweinydd gwe. Nid yw'n cael ei redeg yn y offer per se. Yn hytrach, mae'n cael ei lwytho i lawr gan ddefnyddiwr drwy HTTP yn eu porwr - Chrome, Safari, Internet Explorer, Firefox, beth bynnag - ac mae'n y porwr sy'n executes hyn iaith raglennu benodol. Felly, i fod yn glir, PHP hyd yn hyn wedi bod yn eu gweithredu naill ai yn y llinell orchymyn yn ein ffenestr du a gwyn, ar weinydd fel y peiriant, cyfrifiadur hoffi'r offer, neu mae wedi bod yn gyflawni gan weinydd y we rhedeg ar gyfrifiadur. Ond mae'r thema yma yw bod PHP hyd yn hyn wedi ei weithredu ochr y gweinydd, felly y defnyddiwr a phorwr y defnyddiwr byth yn gweld llinell o god PHP. Yn wir, os ydych chi erioed yn agor porwr i eich gwefan neu arall a'ch bod mewn gwirionedd yn gweld y cod PHP yn eich ffenestr, rhywun wedi sgriwio i fyny. Oherwydd nad yw'n fod i fod yn hanfon at porwr yn uniongyrchol. Mae'n i fod i gael eu gweithredu a troi i mewn i rywbeth fel HTML. Ond JavaScript yn ei hanfod y gwrthwyneb. Mae'n i fod i gael ei redeg fel arfer y tu mewn o ffenestr porwr y defnyddiwr. A pha fathau o wefannau yn defnyddio JavaScript yna y dyddiau hyn? Fel llythrennol pob gwefan poblogaidd. Pob gwefan eich bod guys yn ôl pob tebyg defnyddio bob dydd yn defnyddio JavaScript ar gyfer y symlaf a hyd yn oed y nodweddion sexiest. Felly, rhywbeth fel Facebook Sgwrs os ydych yn defnyddio hynny. Sut mae hynny'n gweithio mewn gwirionedd? Dda hyd yn hyn, yr holl bethau rydym wedi wneud gyda HTML a PHP yn tybio y chi dynnu i fyny URL, ac rydych daro Chofnoda, a byddwch yn gweld rhywfaint o gynnwys HTML. A ydych yn cliciwch ar y ddolen, sy'n newid y URL, yn newid y dudalen, a reloads rhywfaint o gynnwys newydd. Cliciwch URL arall neu gyflwyno ffurflen, rydych yn cael cludo i dudalen arall a byddwch yn gweld rhywfaint o gynnwys newydd. Ond gan ddefnyddio rhywbeth fel Facebook Sgwrs, neu Gchat, neu Google Maps, yn anaml mae'r dudalen gyfan adnewyddu fel bod byddwch yn gweld sgrîn gwyn ychydig eiliadau a Yna, cynnwys newydd. Yn hytrach, tudalennau gwe heddiw yn ddeinamig cael eu diweddaru unwaith eto a eto ac eto pob math o'r tu ôl i'r llenni. Ac mae'n troi allan pan fyddwch yn mynd i'r rhywbeth fel Facebook, neu Gchat, neu Gmail, a'r diweddariadau dudalen yn awtomatig heb ail-lwytho y sgrîn gyfan, yr hyn sydd wedi digwydd yw bod eich porwr wedi gwneud math o gyfrinachol ceisiadau HTTP ychwanegol - nid ar gyfer tudalennau gwe cyfan, ond dim ond ar gyfer darnau bach o ddata, fel y neges chwim bod eich ffrind yn unig hanfon atoch, neu y diweddariad statws hwnnw rhywun newydd ei anfon atoch, neu tweet bod rhywun newydd anfon. Mae'n dim ond gwneud ceisiadau bach ar gyfer data, ac yna defnyddio JavaScript, mae hyn yn iaith raglennu, i newid yr hyn y dudalen we yn edrych fel heb y gweinydd yn helpu, heb y gweinydd cynhyrchu y HTML. Felly, yn fyr, gall JavaScript yn cael ei ddefnyddio, yna i nôl data newydd, nid yn unig o y gweinydd heb ail-lwytho yn ei gyfanrwydd tudalen neu gyflwyno ffurflen. Gellir hefyd ei ddefnyddio i newid DOM fel y'i gelwir - model gwrthrych ddogfen - sydd ychydig y ffordd ffansi ar gyfer gan ddweud y goeden o HTML ein bod yn gweld y tro diwethaf. Felly, er mwyn tawelu meddwl, JavaScript syntactically mor debyg i C yn ogystal. Does dim prif swyddogaeth. Rydych yn unig yn dechrau ysgrifennu'r cod a bydd yn cael ei weithredu, neu dehongli yn fwy priodol. Bydd amodau yn edrych fel hyn. Dim wahanol i C neu PHP o ran hynny. Mynegiadau Boole neu-ed gyda'i gilydd yn edrych fel hyn. Anded gyda'i gilydd yn edrych fel hyn. Bydd switshis edrych fel hyn. Ar gyfer dolenni edrych fel hyn. Er y bydd dolenni edrych fel hyn. Wneud tra bydd dolenni edrych fel hyn. Mae hyn yn newydd. Felly nid JavaScript Mae foreach adeiladu fel y cyfryw, ond mae lluniad hwn am i amrywiol o ran amrywiaeth, a fi yn hyn o achos yn dod yn werth mynegai. Felly mae'n ychydig yn wahanol i'r hyn a foreach, er bod fersiynau newydd o JavaScript yn dod allan drwy'r amser, felly hyd yn oed nodweddion iaith hyn yn esblygu. Ac wrth fynd heibio, JavaScript y dyddiau hyn Gellir hefyd ei ddefnyddio ar weinydd yn union fel PHP ddefnyddio fframwaith o'r enw Node.js. Un o CS50 yn TFS, Kevin, wedi arwain seminar ar Node.js sydd ar gael yn cs50.net/seminars. Felly, os ydych yn chwilfrydig, yn gwybod eich bod yn Gellir defnyddio hwn ar yr ochr gweinydd fel yn dda, ond mae hynny'n duedd gweddol ddiweddar, ond yn un bwerus ar hynny. Mae hyn ychydig yn wahanol. Mae hwn yn amrywiaeth yn JavaScript. A beth taro chi fel gwahanol yn erbyn C neu PHP? Mae ychydig o straeon cyflym gallwn ddweud yma. Beth sydd ar goll erbyn PHP? GYNULLEIDFA: [Anghlywadwy]. DAVID Malan: Ie? Mae'n ddrwg gennym, yn dweud eto? GYNULLEIDFA: Heb ddatgan y math o amrywiol. DAVID Malan: Nid ydym yn datgan y math o amrywiol. Felly, mewn gwirionedd yn eithaf fel PHP, nid ydym yn nodi'r mathau o newidyn hwn. Yn hytrach, rydym yn fwy cyffredinol dweud var ar gyfer amrywiol. Nid oes gennym niwsans PHP o'r arwydd doler, sydd, er ddiflas i math, yn ei gwneud yn fwy amlwg bod rhywbeth yn newidyn. Tra yma, rydym yn fath o yn ôl i Ymagwedd C o ddim ond ffonio amrywiol gan yr enw yr ydym am ei roi, fel rhifau. A hefyd fel PHP, rydym wedi cromfachau sgwâr ar gyfer y gwerthoedd y tu mewn i'r amrywiaeth. Felly newidynnau mewn JavaScript hefyd gallai edrych fel hyn. Hysbysiad yma mae hwn yn llinyn o'r enw s, ond yn yr un modd rydym heb ei nodi ei fod yn llinyn. Yma er yn nodwedd nad yw'n yn bodoli yn union yr un ffordd yn PHP, ond ychydig yn yr un modd. Mae hwn yn gwrthrych yn JavaScript. A gwrthrychau yn fath o Fyddin Swistir Cyllell o strwythur data yn eich bod Gellir eu defnyddio ar gyfer unrhyw nifer o bethau. Yma, er enghraifft, rydym yn datgan newidyn a elwir dyfynbris. Y math o newidyn hwnnw yn wrthrych. Gallwch chi feddwl am hyn fel strwythur C sydd â allweddi a gwerthoedd. Symbol yn allweddol. FB yn werth, mae'n debyg symbol stoc. Adain Garpiog. Price yn allweddol arall, ac mae ei gwerth yn mae'n debyg pwynt fel y bo'r angen, neu nifer yn fwy cyffredinol yn JavaScript, o $ 49.26. Felly nid oes gan PHP - nid ydym wedi gweld mewn gwrthrychau PHP yn eithaf fel hyn, ond yr ydym yn gweld yn analog, a oedd yn beth? GYNULLEIDFA: [Anghlywadwy]. DAVID Malan: araeau cysylltiadol. Felly, tra mae gan PHP araeau cysylltiadol y mae ei gystrawen yn erioed ychydig er wahanol - gwelsom y cromfachau sgwâr. Rydym yn gweld y symbolau saethau 'n annaearol. Mae JavaScript gwrthrychau, ond mae hyn yn yn bennaf gwahaniaeth semantig a gyfystyr gwahanol am y tro. Fodd bynnag, wrth fynd heibio, PHP hefyd gwrthrychau mewn ffordd sy'n Java a eraill ieithoedd gwrthrychau mewn rhaglennu gwrthrych-oriented. Ond byddwn yn defnyddio'r rhain yn unig ar gyfer mathau data am y tro. Gwrthrychau a araeau cysylltiadol. Gallai hyn un yn ei gwneud yn ychydig yn fwy clir. Dyma pam y mae gwrthrych yn ddefnyddiol. Pan fyddwch eisiau i ddatgan yn fyfyriwr, fel Zamyla, gallwn mewn gwirionedd grynhoi fel petai y tu mewn o hynny gwrthwynebu ddefnyddio cromfachau cyrliog yn union fel cyn criw cyfan o allweddi a gwerthoedd yma. Mae gennym adnabod, tŷ, ac enw ar gyfer Zamyla, wedi'i ddilyn gan hanner colon fel arferol ar y diwedd. Down yma hefyd, mae hyn ychydig yn wahanol, ond hefyd yn bwerus iawn y dyddiau hyn. Dyma amrywiaeth, a gwn fod oherwydd mae 'na braced sgwâr i fyny top a braced sgwâr ar y gwaelod. Ac mae hyn yn amrywiaeth o ba ddata teipio ymddangos yn JavaScript? Mae hwn yn amrywiaeth o mae'n edrych fel dri gwrthrych. Ac yr wyf yn gwybod ei fod yn gwrthrych yn unig oherwydd y braces cyrliog. Ac yn sylwi mae Brace cyrliog agored, rhai pethau, Brace cyrliog yn agos, coma, yna mae rhai yn fwy, coma, ac yna mae rhai yn fwy. Felly dyna dri dadleuon gwahanu gan ddau atalnodau. Felly mae hwn yn amrywiaeth o dri gwrthrych. A phob un o'r amcanion hynny yn ymddangos yn myfyriwr neu aelod o staff o rai didoli, pob un â adnabod, tŷ, ac enw. Ond yr wyf wedi galw hyn yn rhywbeth a elwir yn JSON - JavaScript Nodiant Gwrthrych. Ac mae hyn yn fformat data sydd mewn gwirionedd yn mor boblogaidd iawn ac yn ffasiynol y dyddiau hyn, os ydych yn ysgrifennu cais sy'n defnyddio Facebook API, mae'r Twitter API, mewn gwirionedd bron unrhyw API allan yno y dyddiau hyn, gan gynnwys rhai o'r CS50 ei hun, yr data rydych yn mynd yn ôl nid yw yn hen fformat CSV ysgol. Oherwydd dwyn i gof sy'n CSV yn super syml. Mae yr un colofnau gwahanu gan atalnodau. Data JSON yn rhoi mwy o metadata chi. Mae'n cysylltu allwedd gyda phob gwerth felly nid oes rhaid iddynt i ychydig gymryd yn ganiataol y y golofn 0 yn un gwerth, colofn un yn un arall, colofn dau yn un arall. Popeth mewn gwrthrych JSON yma fath o hunan-ddisgrifio, oherwydd y mae pob un o enwau yn y ffeil hon wedi llythrennol enwi o flaen fel llinyn a ddyfynnir. Felly, gadewch i ni edrych ar y ychydig o enghreifftiau yma. Gadewch i mi fynd i mewn i'r peiriant. A gadewch i mi fynd i mewn i'n vhost cyfeiriadur i gyhoeddus. A gadewch i mi fynd i mewn i'r JavaScript cyfeiriadur. A gadewch i ni fynd yn ei flaen ac yn agor i fyny dom-0.html, lle mae DOM yn unig yn golygu model gwrthrych ddogfen. Mae'n y stwff goeden y mae Cyfeiriais ato yn gynharach. A gadewch i mi gynnig y canlynol. Dyma dudalen ar y we y mae ei corff yn eithaf syml. Felly, i lawr yma yn y gwaelod, sylwi gen i ffurflen. Rydym wedi gweld rhai o'r blaen. Mae ganddo ddau mewnbynnau, un sydd â ID enw, un ohonynt math o cyflwyno, a'r cyntaf un o fath yn destun. Felly, mae hyn mewn gwirionedd yn swnio'n eithaf syml. Gadewch i ni fynd yma. Gadewch i ni fynd yn ôl i'r dudalen hon yma. Gadewch i ni fynd i mewn i localhost, ac yn mynd i mewn i ein cyfeirlyfr JavaScript, ac yn mynd i dom-0, ac yma mae gennym ffurflen hon. Felly dyna mae'n debyg i gyd y dudalen hon ei wneud. Mae ganddo enw cae gyda a botwm Anfon. Ond dydw i ddim yn mynd i ddefnyddio PHP yma. Rydw i'n mynd i wneud popeth ochr y cleient fel petai yn JavaScript fel a ganlyn. Sylwch fy mod yn wir wedi rhoi enw maes mewnbwn hwn yn unigryw dynodwr, a fydd mewn gwirionedd yn achub fi beth amser mewn munud. Ac yn sylwi fy mod wedi cyflwyno tag arall yn y pen fy dudalen we, mae'r  tag. Felly mae'n yn yr ystyr bod JavaScript yn iaith raglennu-ochr cleientiaid. Yn yr achos hwn, yn union fel CSS, yr wyf wedi rhoi yn syth tu mewn fy HTML. Ond rhybudd Rwyf wedi datgan swyddogaeth sy'n edrych ychydig fel PHP syntactically, ond mae hyn yn mewn gwirionedd JavaScript, oherwydd unwaith eto, mae'n ar ochr cleientiaid yn y porwr. Ac yn cymryd dyfalu beth mae hyn yn mynd i ei wneud, er bod rhai o'r gystrawen yma yn newydd. GYNULLEIDFA: Dywedwch helo i bwy bynnag. DAVID Malan: Mae'n mynd i ddweud helo i bwy bynnag yn ymweld y dudalen hon. Felly, sut? Felly sylwi, mae'n troi allan yn JavaScript mae 'na rybudd () swyddogaeth. Mae hon yn swyddogaeth fath iawn o drist bod mewn gwirionedd dim ond yn tueddu i cythruddo defnyddwyr. Dyw hi ddim yn un a ddylai chi wir yn defnyddio fel arfer, ond mae'n gyflym ac yn fudr ffordd o'r math o argraffu rhywbeth i ddefnyddiwr graffigol rhyngwynebu, fel porwr. Hysbysiad yma fy mod i wedi cael llinyn mewn dyfynodau sengl. Mae'n ymddangos bod yn wahanol i C, JavaScript mewn gwirionedd yn rhaid i chi ddefnyddio un dyfyniadau, a dweud y gwir dim ond math y confensiwn arddulliadol ymhlith JavaScript rhaglenwyr i ddefnyddio dyfynodau sengl. PHP, maent mewn gwirionedd ychydig yn ystyr gwahanol. Ond ar hyn o bryd, dim ond yn gwybod bod dyna'r unig reswm. Mae'r confensiwn yn JavaScript yn aml i defnyddio dyfynodau sengl, ond gallem ddefnyddio dyfynodau dwbl yn y ddau le hefyd. Felly, mae hyn yn ddiddorol. Dwyn i gof tro diwethaf yr oedd ein bod llun ar y sgrin oedd yn tynnu coeden lle rydych yn cael y nod HTML, ac mae'r pen nod, a'r corff nod, ac yna rhywfaint o destun. Ond roedd un nod arbennig yn y top iawn fy mod wedi galw y ddogfen. Wel, mae'n troi allan yn JavaScript, unrhyw tro y byddwch yn ysgrifennu rhaglen yn JavaScript mewn porwr, gennych fynediad i newidyn byd-eang arbennig. Debyg o ran ysbryd i superglobals PHP yn, cael ei alw'n hwn yn pob dogfen llythrennau bach. Mae'n debyg i strwythur, ond mae strwythur hwn hefyd mae ganddo swyddogaethau tu mewn iddo. Felly dim ond mae ganddo strwythur C data fel arfer. Ond mae gwrthrych JavaScript gan fod hyn yn dechnegol hefyd ganddo swyddogaethau, elwir fel arall yn ddulliau, tu mewn iddo. A gallwch ffonio swyddogaeth tu mewn gwrthrych yn llythrennol yn gwneud ei enw, dot, ac yna enw'r y swyddogaeth, neu eto dull. Dim ond yn gyfystyr, mewn gwirionedd. A beth mae swyddogaeth hon yn ei wneud? Gallwch fath o ddyfalu o'i henw. Cael elfen erbyn adnabod. Felly, mae hyn yn mynd i chwilio'r dudalen ar y we, chwilio y goeden, yn chwilio am beth bynnag nod, elfen AKA, mae gan ID unigryw o dyfyniad unquote enw. Ac yna beth ydw i'n mynd i'w wneud? Rydw i'n mynd i gael y gwerth tu mewn y nod yn y goeden, ac rwy'n mynd i ddweud rywsut helo wrth yr enw hwnnw. Felly, yn cymryd dyfalu, er nad rydym wedi gweld hyn eto, beth mae'r plws symbolau yn golygu yma ac yma yn ôl pob tebyg? GYNULLEIDFA: Concatenate. DAVID Malan: Concatenate. Iawn, ac mae'r rhain yn unig math o dylunio penderfyniadau pobl a wnaed o flynyddoedd yn ôl. Yn PHP, rydych concatenate pethau gyda dotiau. Yn C, yr ydych yn neidio drwy nifer o gylchoedd a ffoniwch swyddogaethau fel strcopy () neu strcat () neu swyddogaethau eraill o'r fath. Ond yn JavaScript, byddwch yn defnyddio pwyntiau cadarnhaol. Felly, mae hyn yn unig yw cydgadwyno tri llinynnau - helo, enw, ac yna pwynt ebychnod. Felly, pryd a pham y mae swyddogaeth hon a elwir er bod? Wel, yn cymryd dyfalu oddi wrth y HTML ar y gwaelod. Pam fod cyfarch () Enw'r neu pryd? Mae'n debyg, fel y gorau gallaf ddweud, ar cyflwyno, pan fydd y ffurflen hon yn cael ei chyflwyno, Rydw i'n mynd i wneud beth bynnag sydd tu mewn dyfyniadau hyn. Ac yn benodol, yr wyf i'n mynd i alw cyfarch () ac yna dychwelyd ffug. Wel, gadewch i ni weld beth y rhwyd effaith yma yn gyntaf. Felly, gadewch i mi fynd yn ei flaen a theipio i mewn, dyweder, Loren, Cyflwyno. Helo Loren. Gadewch i ni weld os efallai hyn yn unig oedd gweithrediad lwcus. Na. Felly, mae'n teipio allan beth bynnag enwi Fi 'n weithredol yn rhoi yno. Ond sylwi beth sydd ddim yn newid. Mae'r URL yn dal i fod dom-0.html. Does dim register.php. Does dim ail ffeil. Does dim priodoledd gweithredu. Felly, beth mae hyn yn ffug dychwelyd wneud yn ôl pob tebyg? Pam ydw i'n galw cyfarch () ac yna dychwelyd ffug yn ôl pob tebyg? Beth sy'n digwydd fel arfer pan fyddwch yn clicio Cyflwyno ar ffurflen a bod hyd yn oed gennym gweld yn ystod yr wythnos diwethaf? GYNULLEIDFA: [Anghlywadwy]. DAVID Malan: Mae'n mynd yn rhywle, dde? Mae'n mynd i ryw URL cyrchfan. Ond dydw i ddim am i hynny ddigwydd yma. Rwyf am i fy dudalen gwefan hon i fod yn gwbl deinamig fel Gmail, lle unwaith y byddwch chi'n yno, byddwch yn aros yno. Nid yw'r URL yn newid mewn ffordd sy'n yn nodi y dudalen gyfan yn ail-lwytho. Yn hytrach, Fi jyst eisiau newid rhywbeth fel argraffu rhywbeth yma ar y sgrin. Wel gadewch i mi lanhau hyn i fyny ychydig. Gadewch i mi agor na dom-0, ond gadewch i mi agor dom-2. Yn union fel eich bod wedi gweld rhai gystrawen yma. Mae'n ymddangos bod hyn yr ydym newydd oedd yn defnyddio JavaScript amrwd. Felly, mae hyn yn wir yr iaith JavaScript. Efallai y bydd rhai ohonoch yn gwybod am llyfrgell o'r enw jQuery. Felly nid jQuery yr un fath beth â JavaScript. Mae'n dim ond llyfrgell bod wir yn smart guy ysgrifennu a boblogeiddio o'r fath bod bron pawb yn y byd yn awr defnyddio jQuery wrth ddefnyddio Javascript. Ac ar yr olwg gyntaf, yn onest, mae'n yn edrych ychydig yn fwy cryptig. Ond byddwch yn dod o hyd, yn enwedig os byddwch yn mynd yno ar gyfer eich prosiect terfynol gyda gwe datblygu, fe welwch fod hwn glanhau pethau i fyny ac yn arbed i chi dipyn o ychydig linellau o god. Felly, gadewch i ni dim ond cipolwg ar sut y y ffurflen hon yn gweithio. Sylwi ar yr hyn wnes i dynnu yn ôl pob golwg o fy HTML? Does dim ar gyflwyno trin fel petai. Does dim priodoledd. Oherwydd eich bod yn gwybod, beth Doeddwn i ddim wir yn ei hoffi? Roeddwn yn teimlo fel ein bod yn gostwng i hen arferion yno. Yn union fel ei fod yn dechrau teimlo flêr i intermingle ddau CSS gyda HTML, oherwydd eich bod yn fath o taflu gwahanol ieithoedd ar draws y lle, yn yr un modd oedd hyn yn dechrau teimlo'n fel ffordd ddrwg i fynd i lawr lle Im 'yn rhoi cod JavaScript tu mewn fy HTML yn hytrach na ffactoreiddio allan. Felly dyna y wers yma. Yn dom-2.html, rwy'n ffactoreiddio allan. Ac yr wyf i'n gwneud pethau ychydig yn wahanol. Am y tro, dw i'n mynd i chwifio fy nwylo ar beth mae hyn yn wir yn o dan y cwfl. Ond dim ond am nawr cymryd yn ganiataol bod yn gyntaf linell o god yn y llyfrgell hon a elwir yn jQuery yn unig yn golygu pan fydd y ddogfen yn barod, gwnewch y canlynol. Oherwydd y gall tudalennau gwe gymryd peth amser i lwytho. Efallai eich bod ar y rhyngrwyd araf cysylltiad, a gallai fod yn nyddu ac yn troelli, ac yn olaf mae'n llwytho. Mae hynny'n linell o god yn unig yn dweud aros hyd nes y dudalen gyfan yn barod, mae'r ddogfen yn barod, cyn gweithredu cod hwn. Ac yn awr yn sylwi, mae hyn yn ôl pob tebyg y mwyaf defnyddiol gyntaf cymryd i ffwrdd o jQuery. Mae'r llinell yma yn debyg iawn o ran ysbryd i linell llawer hirach hyn yma. Tra mewn cod JavaScript crai, mae gwrthrych byd-eang ddogfen yn bodoli sy'n mae iddo swyddogaeth o'r enw getElementById (), y bobl a ysgrifennodd symleiddio jQuery hynny i ddweud arwydd doler, ac yna tu mewn cromfachau yn rhoi dau ddyfynbris, ac yna rhoi symbol hash dilyn gan y ID unigryw yr ydych am i afael. Felly, mae hyn yn cyfateb i document.getElementById. Yn y cyfamser,. Cyflwyno yn unig yn golygu ar cyflwyno ba ffurf bynnag y ydych yn cyfeirio atynt ar y chwith, ewch ymlaen a gweithredu hyn. Ond mae hyn yn awr yn y chwilfrydedd hefyd. Beth sy'n rhyfedd am yr hyn y Rwyf wedi tynnu sylw yma? Nid yn unig y mae'n fath o syntactically newydd, mae hefyd yn rhywbeth ar goll. GYNULLEIDFA: dim ond Mae'n cael ei alw swyddogaeth? Nid Mae'n cael ei alw yn effro? DAVID Malan: Yeah. Wel, felly effro () i lawr yma, i fod yn deg. Ond nid oes sôn am enw, fel y gwyddoch, foo neu rhywbeth i fyny yma. Ac yn wir, mae hyn yn un o nodweddion o JavaScript hynny'n eithaf pwerus, ond hefyd yn eithaf newydd. A PHP mewn gwirionedd wedi hyn hefyd. Gadewch i mi fynd yn ei flaen ac yn gwneud rhywbeth real gyflym. Gadewch i mi fynd yn ei flaen ac yn rhoi hyn allan yma. Gadewch i mi wneud hyn. Swyddogaeth. Gadewch i ni yn galw trafodwr hwn (). Swyddogaeth trin fel petai. Rhywbeth sy'n delio â rhywfaint o weithredu. Gadewch i mi lanhau fy bant. A rhoi hyn yma. A rhoi hynny yma. Yep. OK. Felly nawr gen i swyddogaeth o'r enw trin () nad wyf yn wir yn gwybod yr hyn y mae'n ei wneud eto. Mae'n dal i fod y pethau yn unig. Wps. Cymryd gormod. Gadewch i ni wneud hyn. Mae pob hawl. Mae'n ddrwg gennym. Mae pob hawl. Gadewch i mi wneud hyn. OK. Mae hynny'n edrych yn neis ac yn syth ymlaen yn awr. Gadewch i mi wneud hyn. Gwnewch hyn. Ac yn iawn. Felly nawr, gadewch i ni roi hyn dros yma. Dim mwy o raglenni ar y hedfan. OK. Felly nawr, gadewch i ni fynd yn ôl i lle y dechreuodd y stori. Yn flaenorol, yr wyf yn dweud bod y llinell yma golygu pan fydd y ddogfen yn barod, ewch ymlaen a gwneud hyn. Beth ydw i am ei wneud? Wel yn benodol, yr wyf am i fynd ymlaen a gwneud y canlynol. Gweithredu y llinell o god, ac yna yr hyn yr wyf am i chi ei wneud yw galw hyn yn gweithredu pan fydd y ffurflen yn cael ei chyflwyno. Nawr mae hyn yn yr hyn sy'n ddiddorol. Nid yw hyn ynddo'i hun yn swyddogaeth. Hysbysiad Nid wyf yn rhoi cromfachau yma yn y ffordd arferol. Rwy'n llythrennol basio swyddogaeth o'r enw trin () i swyddogaeth arall enw chyflwyno () fel dadl yn er ei fod yn debyg i amrywiol. Ac mae hyn yn un o nodweddion JavaScript, yn ymdrin â swyddogaethau eu hunain yn wir dim ond gwrthrychau. Yn wir, maent yn wir yn unig newidynnau o ryw fath. Ac os yw enw'r y swyddogaeth yn drafodwr (), nid oes unrhyw reswm na allaf ei throsglwyddo i mewn fel dadl yma. Ac mae hyn yn golygu pan fydd y ffurflen gyda ID y demo yn gyflwynwyd, ffoniwch y swyddogaeth hon. Ond yn awr, os wyf yn dadwneud yr holl o hyn, Yna, pam wnes i efallai yn gwneud hwn funud yn ôl? Wel, mae hyn yn swyddogaeth ddienw. Oherwydd dweud y gwir, yr wyf yn sylweddoli pam yr ydw i'n trafferthu i wastraff amser datgan swyddogaeth a elwir yn trin () yn unig i alw mewn un a dim ond un lle? Os nad wyf yn angen yr enw, ac nid wyf yn angen i alw yn fwy nag un lle, gadewch i ni dim ond gweithredu'r swyddogaeth iawn lle rwy'n ei angen. Ac felly JavaScript a PHP cymorth hyn yn cael eu galw'n swyddogaethau dienw sy'n caniatáu i mi i wneud yn union hynny yma. Ond rydym yn dim ond crafu'r wyneb. Gadewch i ni tynnu coes gyda dim ond cwpl enghreifftiau terfynol yma. Os byddaf yn mynd i mewn i quote.php. Sylwch fod hyn mewn gwirionedd yn PHP swyddogaeth, rhaglen PHP, a ysgrifennais sy'n disgwyl yn baramedr HTTP a elwir yn symbol, a gallaf basio i mewn gwerth fel FB. Ac os ydym mewn gwirionedd yn edrych ar y ffynhonnell cod, mae hyn yn ymholi wefan rhad ac am ddim enw Yahoo Cyllid, yn union fel p-set saith, ac mae'n dychwelyd i mi rhywbeth yn debyg y fformat a elwir yn JSON - Nodiant Gwrthrych JavaScript. Dim ond gwrthrych. Sylwch ar y braces cyrliog, y dyfyniadau, y colon, a'r atalnodau. Nawr yn y cyfamser, mae hyn yn 'n bert oera. Oherwydd y gall yr wyf yn ôl pob tebyg yn defnyddio rhaglenni iaith i gynhyrchu URLs sy'n edrych fel hyn yn ddeinamig, iawn? Gallaf newid hyn i Google a mynd yn ôl Google pris stoc o $ 1,017.55. Felly, gadewch i ni weld os na allwn ddefnyddio hyn nawr. Gadewch i mi fynd i Ajax-0 yma, sy'n edrych fel y canlynol. Mae'n dim ond gwefan sydd wedi ffurflen gyda botwm. Gadewch i mi yma fynd yn ei flaen a theipiwch yn YHOO am y symbol stoc Yahoo, cliciwch Get Dyfyniad, ac yn awr yn sylwi rydw i wedi gotten neges gyda 32.86. Gadewch i mi mewn gwirionedd yn mynd i fersiwn ffansi y dudalen hon, fersiwn dau, a fath yn gadewch i ni yn dweud Microsoft, MSFT. Get Quote. Ac yn awr sylwi, dim rhybudd. Hysbysiad lle mae'n dweud pris i'w benderfynu? Mae symlaf o enghreifftiau a awgrymiadau ar ba Gchat, a Facebook Sgwrs, a Gmail, ac eraill o'r fath gwefannau yn ei wneud trwy gwirionedd newid y dudalen we. Sylwi ar hyn. Gadewch i mi ail-lwytho y dudalen. Gadewch i mi agor Arolygydd Chrome yn. Gadewch i mi fynd i'r elfennau tab i lawr yma. Nawr sylwi os byddaf yn chwyddo i mewn i lawr yma ac agor yr hyd, sylwi bod hyn yn fy HTML DOM - fy nogfen model gwrthrych. Mae hyn yn fy HTML. Ond yn awr yn sylwi, hyd yn oed er ei fod yn mynd i fod ychydig yn anodd ei weld yn y ddwy le ar unwaith, os wyf yn teipio FB i fyny yma, gwyliwch y gwaelod y sgrin yn unig. Mae'n newid mewn gwirionedd fy HTML ar y hedfan. Ac mae'n gwneud hyn yn eithaf syml drwy wneud rhywbeth fel hyn. Os byddaf yn agor Ajax-2, sylwch gweithredu rhywbeth mor sexy fel , hyd yn oed er 'i' eithaf hyll, ond soffistigedig â hynny swyddogaethol, mae rhai HTML ar y gwaelod. Ond sylwi Roeddwn i'n arfer i tag. Nid ydym wedi defnyddio hyn o'r blaen, ond mae hyn yn fel, ond nid yw'n gorfodi popeth ar linell newydd. Mae'n gwneud ardal hirsgwar ar yr un llinell yn y bôn. Hysbysiad a roddais yn ID yn y pris. Ac mae'n troi allan drwy ddefnyddio'r un Llyfrgell JavaScript, mae gennyf swyddogaeth Gelwir dyfyniad () sy'n cael ei alw pryd bynnag y y ffurflen yn cael ei chyflwyno. A beth rwy'n ei wneud yw hyn. Rwy'n datgan amrywiol o ran JavaScript a elwir yn url, gan arbed gwerth quote.php? symbol =. Mewn geiriau eraill, yr wyf fy hun wyf yn dechrau i baratoi cais HTTP, ac yna Rwy'n cydgadwyno ar hynny gyda mwy beth bynnag yr elfen gyda'r ID o symbol yw, yr hysbysiad yw bod maes testun i'r dde i lawr yma. Felly, yn union fel oedd gennym ffurflenni yn y gorffennol. Ac yna mae'n troi allan yn jQuery, os ydych yn ffonio. val (), sy'n galw o val swyddogaeth, swyddogaeth gwerth, sy'n cael beth bynnag yw'r defnyddiwr wedi teipio i mewn Ac yna yr holl draffig rhwydwaith sy'n digwydd yw hyn. $. GetJSON. Ac wrth fynd heibio, arwydd doler yn dim ond nodiant llaw-fer. Mae'n wirioneddol jQuery.getJSON. Mynd i mi i JSON o'r URL, a phan y cais yn dod yn ôl, galw hyn swyddogaeth ac yn pasio i mewn fel y ddadl beth bynnag daeth yn ôl oddi wrth y gweinydd. Felly, mewn geiriau eraill, os byddaf yn mynd yn ôl at y porwr, ac yr wyf yn mynd yn ôl i quote.php, beth yw fy porwr yn ei wneud yn mynd yn darn hwn o ddata. A phan fyddaf yn mynd at y dudalen we yma, rhybudd os ydym yn hytrach ewch i'r rhwydwaith tab ac yn glir, ac yna teipiwch rhywbeth fel GOOG ar gyfer Google a Get Dyfyniad, sylwch nad oedd y dudalen yn newid. Ond mae cais HTTP ei wneud, a beth daeth yn ôl yma os ydym yn edrych ar y ymateb criw cyfan o JSON ein bod yn gweld diwedd gyda y llinell hon syml yma. Mae data ar yr hyn a gotten o'r gweinydd. Price yn enw'r allweddol Rwy'n poeni am. Felly data.price rhoi i mi hynny. Nawr yn y cyfamser, ac mae hyn yn yw'r enghraifft olaf. Gallwch wneud hyd yn oed mwy ar y dudalen. Un mewn gwirionedd, wel dau. Gallwn ddod yn ôl y tag, os ydych yn cofio hyn. Dyna JavaScript. Gallwn wneud hynny. Gyffrous iawn. Byddwn yn gadael hynny fel Cliffhanger. Ond yn fwy cyffrous, gallwch gwneud pethau fel hyn. Os byddaf yn mynd i geolocation-1, mae'n troi allan sy'n Chrome yn gwybod ein bod yn hydred lledred 42.37. -71.10. Felly, mae hyd yn oed yn fwy yno ar gael i chi. Ond mwy am hynny yr wythnos nesaf. Welwn ni chi ddydd Llun.