[Powered by Google Translate] [Wythnos 9]
[David J. Malan - Harvard University]
[Mae hyn yn CS50. - CS50.TV]
Mae pob hawl. Croeso yn ôl. Mae hyn yn CS50, ac mae hyn yn dechrau o wythnos 9.
Heddiw rydym yn canolbwyntio yn benodol ar ddylunio, bellach yng nghyd-destun C
ond yng nghyd-destun PHP ac yn dipyn o SQL a rhywfaint o JavaScript,
yn enwedig tuag at ddiwedd y ddau pset 7 a hefyd eich prosiect terfynol.
Yn wir, os ydych yn ar yr adeg honno yn eich prosiect terfynol
lle yn ôl pob tebyg fel o awr neu ddwy yn ôl i chi o leiaf yn dechrau rhoi rhywfaint o feddwl
i'ch prosiect terfynol ac rydych yn meddwl y byddech yn hoffi i gydweithio gydag 1 neu 2 cyd-ddisgyblion,
os ydych chi'n cael trafferth cysylltu â dywedodd cyd-ddisgyblion,
mae croeso i chi lenwi'r ffurflen yn cs50.net/partners/form.
'I jyst yn gofyn i chi pwy ydych chi, pa fath o brosiect yr ydych chi'n meddwl am,
lle rydych yn byw ychydig am resymau logistaidd.
Ac yna os ydych chi am gadw llygad ar dros yr wythnos nesaf, neu felly mae'r URL daenlen yno,
gallwch wedyn weld fersiwn darllen yn unig y doc Google
lle rydym yn casglu y wybodaeth honno.
Felly, os ydych am weithio gyda rhywun, ar bob cyfrif yn teimlo'n rhydd i estyn allan at bobl
drwy gyfrwng y mecanwaith hwnnw.
Ond mae'r rhan fwyaf o Folks yn gwneud solo gwaith. Mae hynny'n hollol iawn.
Felly peidiwch teimlo fod hyn yn mewn unrhyw ffordd yn orfodol.
Ar ddydd Gwener mai fi oedd ddim ac mae rhai o'r tîm yn y fan hon,
theatr wag am y rhan fwyaf.
Roedd 3 dwristiaid yn eistedd i fyny yno, felly, yr oedd ychydig yn lletchwith.
Yr hyn yr ydym yn siarad amdano oedd cronfeydd data a buom yn siarad am pset 7 a ychydig bach.
Ac os nad oeddech yn digwydd i ddal y ar fideo eto, mae hynny'n iawn.
Byddaf yn ceisio diffinio unrhyw delerau y byddem fel arall yn cymryd yn ganiataol
yn seiliedig ar ddydd Gwener ddarlith.
>> Ond heddiw, rydym yn mynd i geisio cael chi i'r pwynt
nid yn unig yn gallu gwneud rhywbeth fel pset 7
ond mewn gwirionedd yn deall beth sy'n mynd ymlaen o dan y cwfl,
yn enwedig rhai o'r tyniadau yr ydym yn eu rhoi ar waith yn y ffeil functions.php
i wneud eich bywyd ychydig yn haws, ond fel eich bod yn deall y pen draw
fel bod pan fydd yr olwynion hyfforddiant yn dod oddi mewn ychydig wythnosau, gallwch dal i oroesi
yn y byd go iawn a gwneud y pethau heb unrhyw fframwaith CS50 o dan chi.
Mae hyn yn _SESSION $, ar gyfer y rhai ohonoch sy'n gyfarwydd
neu sydd eisoes yn dal y fideo ar ddydd Gwener, beth mae SESIWN gadewch i ni wneud
mewn cais ar y we PHP seiliedig?
Mae hwn yn newidyn superglobal, sy'n golygu ei fod yn debyg o ran ysbryd i GET a SWYDD
a rhai eraill, ond beth yw hyn yn beth defnyddiol ar gyfer?
>> Beth yw SESIWN cael ei ddefnyddio? Yeah. [Myfyrwyr] Logio i mewn
Mae'n ddrwg gennym? [Myfyrwyr] Logio i mewn Logio i mewn Yn wir.
Yn pset 7, yn defnyddio hwn superglobal SESIWN i hwyluso logio i mewn
A beth sy'n braf am hyn superglobal yw ei fod yn arae cysylltiadol.
Mae amrywiaeth cysylltiadol, galw i gof, yn unig yw amrywiaeth ond mae eu mynegeion nid oes rhaid i fod yn rhifau
fel 012. Gallant fod yn rhifau neu gallant fod hyd yn oed llinynnau.
Ac felly os ydych chi wedi syrthio i mewn i pset 7 eto, efallai y byddwch yn cofio ein bod yn storio ID allweddol o'r enw
mewnol y arae cysylltiadol y mae eu gwerth yn rhywbeth fel 123 -
beth bynnag fo'r wedi mewngofnodi ar hyn o bryd yn ID defnyddiwr yn.
Y cymhelliad ar gyfer hyn yw hyd yn oed ar ôl y defnyddiwr wedi ymweld â localhost
neu fy ngwefan yn fwy cyffredinol, ac yna maen nhw wedi logio i mewn,
hyd yn oed os nad ydynt yn cliciwch ar un o'r cyswllt neu ddychwelyd i fy ngwefan am 5 munud
neu hyd yn oed am awr neu hyd yn oed y dydd ond maent yn gadael eu ffenestr porwr agored,
Gall drwy'r superglobal yr wyf yn cofio eu bod wedi mewngofnodi
>> Mewn geiriau eraill, mae'n caniatáu i mi storio ychydig yn hir dymor unrhyw beth a fynnaf am y defnyddiwr.
A allwch chi feddwl am y peth mewn gwirionedd fel yr ymgnawdoliad o trol siopa.
Mae lleoedd fel Amazon yn amlwg yn gadael i chi roi pethau mewn basged siopa,
ond HTTP, y protocol sy'n yn gyrru y We, yn heb ddinasyddiaeth
yn yr ystyr bod pan fyddwch yn ymweld â gwefan,
ar gyfer y rhan fwyaf nad oes gennych rhywfaint o gysylltiad rhwydwaith cyson
rhwng eich porwr a 'r gweinyddwr.
Cyn gynted ag y byddwch wedi lawrlwytho'r HTML a JPEG a GIFs a hynny i gyd,
y cysylltiad yn mynd i ffwrdd, ac os oes gen ti gopi o'r HTML a whatnot o'r gweinydd.
Ond os yw'r gweinydd eisiau cofio rhywbeth amdanoch chi,
y baich ar y gweinydd i mewn gwirionedd yn cofnodi'r wybodaeth honno.
Ac felly i chi y rhaglennydd sydd â rheolaeth dros y gweinydd
Gall rhoi unrhyw beth rydych am y rhan fwyaf o tu fewn y casgliad cysylltiadol superglobal
a bydd yno y tro nesaf y defnyddiwr yn dod yn ôl,
boed hynny munud neu hyd yn oed diwrnod yn ddiweddarach, oni bai eu bod yn cau eu ffenestri porwr,
lle SESIWN pwynt diflannu.
Felly, mae'n storio dros dro, mae'n nad ydynt yn gyson, ac mae i fod i fynd i ffwrdd
cyn gynted ag y defnyddiwr yn cau eu porwr - nid yn unig y tab, yn aml y porwr cyfan,
a thrwy hynny yn effeithiol logio y defnyddiwr allan.
Felly, sut mae hyn yn beth gweithredu mewn gwirionedd?
Gadewch i ni edrych yn sydyn ar enghraifft syml buom yn edrych ar ddydd Gwener.
Ar gyfer y rhai anghyfarwydd, roedd hi mor syml â hyn.
Mae hon yn dudalen ar y we y mae ei unig ddiben mewn bywyd yw i ddweud wrthyf
sawl gwaith yr wyf wedi ymweld â'r dudalen hon.
Dyma'r tro cyntaf yma ar ddydd Llun fy mod yn ymweld â hi, er mwyn iddo ddweud 0 gwaith.
>> Ond os byddaf yn dechrau ail-lwytho y dudalen hon, mae'n dweud 1 amser, 2, 3, 4, 5,
a bydd hyn yn y pen draw dim ond cadw ar gyfrif i fyny, i fyny, i fyny, i fyny, i fyny
ar gyfer pob tro y byddaf yn cliciwch gwirionedd Reload arno.
Felly, sut mae hyn yn gweithio? Gadewch i mi fynd y tu mewn o hyn ffeil o'r enw counter.php.
Mae rhan uchaf ohono yn holl sylwadau las, ond y rhan ddiddorol yma.
Ar llinell 13 rydym yn galw hyn session_start swyddogaeth,
ac mae hynny'n llythrennol gyd angen i chi ei wneud os ydych am gael mynediad
at y superglobal arbennig o'r enw $ _SESSION.
Sy'n ei gwneud yn bosibl o gwbl, ac fe welwn yn y man sut mae hynny'n bosibl o gwbl.
Yn llinell 16 rhybudd hyn rwy'n ei wneud.
Os yw'r allwedd, a elwir yn wrth - mewn geiriau eraill, y gwerth mynegai - "cownter" y
yn bodoli y tu mewn o hyn a elwir yn SESIWN amrywiaeth, yna beth ydw i'n ei wneud ag ef yn y llinell isod?
Beth yw llinell 18 yn ei wneud?
>> [Ymateb y myfyrwyr Anghlywadwy] Beth sy'n bod? [Myfyrwyr] Storio'r gwerth. Da.
Mae'n storio'r gwerth sydd yn SESIWN ar hyn o bryd mewn newidyn newydd dros dro lleol,
$ Cownter ym mhob llythrennau bach.
Sylwch fod PHP eisoes yn cael ei ychydig yn ddiog yma.
Hysbysiad nad oes gennym unrhyw sôn am int neu arnofio neu linyn neu unrhyw beth fel 'na
oherwydd PHP yn cael ei deipio wan, lle nad oes rhaid i chi nodi'r math o newidyn,
ac yn yr achos yma nid wyf wedi hyd yn oed yn datgan eto.
Rwy'n datgan ei fod y tu mewn o'r rhain braces cyrliog ac yn wahanol i C, mae hyn yn mewn gwirionedd yn iawn.
Waeth pa mor ddwfn nythu datganiad newidyn hwn ym maes PHP -
tu mewn cyrliog Brace, y tu mewn o cyrliog Brace ac ati -
bydd yn yn y hyn o bryd mewn amser yn bodoli ar gyfer gweddill y rhaglen,
er gwell neu er gwaeth.
Felly, ar unwaith yn dod yn fyd-eang cyn gynted ag y byddwch yn ei ddiffinio fel yr ydym ni'n ei wneud yma.
>> Fel arall, os nad wyf yn gweld bod yna unrhyw beth yn y superglobal SESIWN,
Rwy'n ôl pob golwg ymgychwyn y cownter amrywiol i 0,
a thrwy hynny dim ond gan dybio nad yw'r defnyddiwr wedi bod yma o'r blaen.
Ac yna mae hyn wrth gwrs yn incrementing y cownter sut?
Rwy'n diweddaru'r gwerth y tu mewn o hyn arae cysylltiadol
drwy ei gosod yn gyfartal i ba bynnag cownter ar hyn o bryd yw + 1.
Os byddaf yn sgroliwch i lawr yma i'r HTML y dudalen, mae'n mewn gwirionedd yn eithaf syml.
Y cyfan yr wyf wedi yng nghorff y dudalen hon yn, "Rydych wedi ymweld â'r safle amser fel-a-blaen."
Ac mae hyn yn lluniad PHP.
Os ydych yn ei wneud <? =, Mae hyn yn cyfateb yn effeithiol i'r hyn swyddogaeth?
Mae'n wir yn cyfateb i rywbeth fel printf, yr ydym wedi gweld sawl gwaith yn C,
er, fel y gwyddoch eisoes o'r fanyleb yn pset 7,
print hefyd yn swyddogaeth mai dim ond yn argraffu rhywbeth, nid yw'n mewn gwirionedd yn defnyddio codau fformat,
a gallwch ddweud mewn gwirionedd adlais yn ogystal.
Maen nhw i gyd erioed mor ychydig yn wahanol er bod yr effaith net yn y pen draw yr un fath.
Felly, y defnydd hwn o'r arwydd hafal yn unig fath o ffordd cain o wneud hynny
yn fwy cryno nag y byddech fel arall yn gallu gwneud hynny.
Felly dyna'r cyfan y safle hwn yn ei wneud. Mae'n yn argraffu gwerth y cownter.
Sut mae hyn i gyd yn digwydd mewn gwirionedd?
Efallai y byddwch yn cofio wythnos neu ddwy yn ôl i ni ddechrau edrych o dan y cwfl
ar sut y tudalen ar y we yn gweithio drwy ddefnyddio'r tab Arolygydd.
>> Chrome y mae hyn yn y fersiwn Mac y fersiwn Windows, a hyd yn oed y fersiwn Linux,
a Firefox a IE fecanweithiau tebyg lle rydych yn cael y debugger adeiledig mewn
tu mewn i'r porwr.
Gadewch i ni edrych ar y canlynol.
Rydym wedi cael criw cyfan o tabs yma, a dwyn i gof bod yr un leftmost yn Elfennau,
ac ni waeth pa mor godawful y HTML a JavaScript mewn tudalen,
dwyn i gof bod y tab Elfennau alli 'n weithredol lywio'r HTML hierarchaidd
ac yn braf ac yn daclus.
Felly, os ydych yn ceisio dysgu o wefan fel Google neu Facebook
neu mewn gwirionedd unrhyw wefan, yn sylweddoli eich bod yn ôl pob tebyg yn well eich byd
edrych ar y cod ffynhonnell y modd hwn yn hytrach na edrych ar y ffynhonnell crai,
a all fod yn llanast, fel yr ydym wedi gweld yn enwedig ar Google safle.
Felly, os wyf yn lle hynny cliciwch ar y tab Rhwydwaith yma,
gadewch i ni weld beth sy'n digwydd pan fyddaf yn ymweld â'r dudalen hon.
Yn gyntaf gadewch i mi egluro fy cache.
Rydw i'n mynd i fynd i mewn i Gosodiadau yn Chrome ac yna ewch i Hanes
ac yna Clirio'r holl ddata pori.
Efallai y byddwch yn ei ddefnyddio i wneud hyn at ddibenion eraill, [chwerthin]
ond pan ddaw i wefannau datblygu, mewn gwirionedd mae'n ddefnyddiol -
os ydych chi'n chwerthin eich bod yn gwybod. [Chwerthin]
Mae'n mewn gwirionedd yn ddefnyddiol iawn wrth ddatblygu gwefannau oherwydd y gwir yw
pethau fel 'cookies' a phethau fel ffeiliau HTML cached, ffeiliau JavaScript cached
mewn gwirionedd gall fod yn cur pen mawr, oherwydd os am ba bynnag reswm
y porwr yn penderfynu cache rhai ffeil ac eto yr ydych wedi gwneud newidiadau i'r ffeil ar y gweinydd
ond nid yw'r porwr wedi sylweddoli mewn gwirionedd fod y ffeil wedi newid
ac felly nid yw'n mewn gwirionedd yn ail-lwytho i lawr hyd yn oed pan fyddwch yn clicio ar y botwm Reload,
un o'r ffyrdd mwyaf surefire i ddim ond gwneud yn siŵr nad yw'r nam yn gyda'ch cod,
'i' ag ymddygiad y porwr, yw mynd i mewn yma yn eich porwr
a dim ond clirio'r hanes cyfan fel nad oes unrhyw ddryswch.
>> Ac yna os ydych wir eisiau bod yn paranoid, roi'r gorau iddi y porwr, cychwynnwch y peiriant,
ac yna gwneud yn siŵr bod pob yn gweithio fel y disgwylir.
Felly, yn fyr, clirio cache yn dda wrth wneud datblygiad.
Felly dyma ni yn cael y tab Rhwydwaith.
Yn flaenorol, wedi ymweld â'r safle 9 gwaith, ond gadewch i mi fynd yn ei flaen yn awr a chliciwch Reload.
A dwi'n yn ôl i lawr i 0.
Gadewch i ni mewn gwirionedd yn gweld sut y mae bod y superglobal SESIWN yn cael ei weithredu.
Dw i'n mynd i glicio ar y cais HTTP 1 a wnaed,
ac mae hyn yn ffenestr debugging yn gadael i mi edrych y tu mewn o hynny.
Dyma yr wyf yn gweld dim ond yr ymateb gan y gweinydd, ac nid yw ddiddorol.
Rwyf wedi gweld hyn mewn unrhyw nifer o ffyrdd.
Ond yr hyn sy'n dechnegol ddiddorol yn y penawdau.
Os byddaf yn sgroliwch i lawr yma ac yn canolbwyntio ar y penawdau cais a chliciwch ffynhonnell barn,
hyn yr wyf i'n mynd i weld yn llythrennol y cais HTTP
mai dim ond yn mynd o fy porwr i 'r gweinyddwr,
GET sef y gair operative ac yna / counter.php yr enw ffeil,
HTTP/1.1 dim ond bod y fersiwn o'r HTTP bod fy porwr yn ei ddefnyddio.
Mae'r llinell yma yn atgoffa ychydig o borwr i weinydd beth yw enw'r gweinydd yn
ei fod am siarad â nhw.
Ac yna y gweddill o hyn yn weithiau diddorol, ond nad ydynt yn berthnasol ar hyn o bryd.
>> Mae hyn yn unig fath o chwilfrydedd.
Cryptig er bod y llinyn yw, unrhyw tro y bydd eich porwr yn ymweld â gwefan
ei fod yn hysbysu'r gweinyddwr pa borwr rydych yn ei ddefnyddio
a pha system weithredu yr ydych yn ei ddefnyddio a pha fersiwn o hynny.
Felly, os ydych chi erioed wedi meddwl sut y gwefannau fel CNN a whatnot
gwybod beth yw'r canrannau o ddefnyddwyr Mac ar y defnyddwyr y We PC,,
Defnyddwyr IE, defnyddwyr Chrome ac yn y blaen, mae'n oherwydd ein holl borwyr
yn dweud bob un wefan allan yno yr hyn ydym.
Nid yw o reidrwydd yn cynnwys gwybodaeth bersonol adnabyddadwy,
ond mae'n dweud wrth y gweinydd beth yw eich cyfeiriad IP a pha borwr a OS rydych yn ei ddefnyddio.
Felly dyna lle bo'r wybodaeth hon.
Ond beth sydd yn fwy diddorol nawr pan ddaw i'r sesiynau hyn yn y pennawd ymateb.
Gadewch i mi cliciwch gweld ffynhonnell nesaf i ymateb.
Beth sy'n ddiddorol yma yw ychydig o bethau.
1, rydym yn cael yn ôl cod statws 200.
Rydym byth yn gweld y cod statws oherwydd mae hynny'n golygu popeth yn iawn.
Mae'n golygu llythrennol iawn yn wahanol i rywbeth arall.
Beth yw nifer weithiau gwelwn sy'n ddrwg? [Myfyrwyr] 404.
404, ffeil heb ei ganfod, efallai y byddwch yn 403 tramgwydd ar eisoes,
sy'n cael ei wahardd, sy'n golygu eich bod wedi anghofio rhywbeth chmod, yn fwyaf tebygol.
Ac mae 'na griw o bobl eraill.
>> Down yma, dyma ychydig yn wallgof.
Fi 'n sylweddol newydd ei ysgrifennu y ffeil ychydig funudau yn ôl drwy ludo i mewn i gedit.
Pam y dudalen hon yn dod i ben yn 1981 cyn bod mewn gwirionedd roedd We?
Beth sy'n mynd ymlaen yno?
>> [Ymateb y myfyrwyr Anghlywadwy] Y stamp amser. Ond pam?
Mae'n braidd yn fympwyol, ond mewn gwirionedd mae'n ddefnyddiol.
Beth mae hyn yn ei ddweud wrth fy porwr yn y ffeil PHP ydych wedi gofyn dim ond wedi dod i ben eisoes.
Yn wir, mae'n dod i ben 30 mlynedd yn ôl.
Ond beth mae hynny'n ei olygu mewn gwirionedd?
Mae'n jyst yn golygu y tro nesaf y defnyddiwr yn ymweld y dudalen hon,
boed hynny drwy ail-lwytho neu deipio URL yn y bar cyfeiriad,
gwnewch yn siŵr eich mynd i nôl copi newydd ohono.
Mae hwn yn fath o enghraifft o chwalu cache,
gair dwp mai dim ond yn golygu ceisio annog porwyr
o mewn gwirionedd yn HTML caching sydd wedi cael ei anfon o weinyddwr
fel nad ydych yn taro yn ddamweiniol ail-lwytho ac yna gweld yr un fersiwn y ffeil.
Chi mewn gwirionedd eisiau i'r gweinydd i anfon copi newydd.
Felly, mae'r ffaith ei bod yn 1981 yn unig yn golygu bod dyna beth mae'r cyfarpar wedi ei dewis
fel dyddiad mympwyol yn y gorffennol.
Ond y llinell llawn sudd go iawn yn awr yr un.
Hyd yn oed o flaen 50 eich bod yn debyg yn fras gyfarwydd â 'cookies'.
Fel ar hyn o bryd, yn enwedig ymhlith y rhai llai cyfforddus neu yn y canol,
beth yw cwci yn eich dealltwriaeth ar hyn o bryd
er ein bod chi ar fin gwneud eich dealltwriaeth mwy technegol?
Beth yw cwci? Yeah.
[Myfyrwyr] Gwybodaeth am y defnyddiwr, fel os ydynt wedi ysgrifennu eu henw defnyddiwr neu rywbeth.
>> Da. Mae'n gwybodaeth am y defnyddiwr, p'un a ydynt wedi teipio yn ei enw defnyddiwr yn barod.
Mae cwcis yn ffordd lle gall gweinyddwyr cofio rhywbeth am ddefnyddiwr.
A beth mae cwci mewn gwirionedd yn ffeil destun neu ryw ddilyniant o bytes
sydd wedi eu plannu gan y gweinydd tu mewn i'ch porwr,
a thu mewn y ffeil neu ymysg y rhai beit yw rhyw fath o dynodwr.
Efallai ei fod yn llythrennol eich enw defnyddiwr, ond yn fwy aml mae'n rhywbeth mwy cryptig-edrych
fel hyn peth yma - bo8dal3ct ac yn y blaen - mae hyn yn llinyn alffaniwmerig mawr iawn
bod mewn gwirionedd yn golygu dim ond i fod yn dynodwr unigryw i chi.
Neu gallwch feddwl amdano fel math o stamp llaw rhithwir.
Os byddwch yn mynd i ryw glwb neu parc adloniant, i gofio eich bod wedi talu mewn gwirionedd
ac wedi mynd i mewn, maent yn rhoi sticer bach coch ar eich llaw o ryw fath,
a bod yn atgoffa'r bobl wrth y cownter yr ydych eisoes wedi talu
a gallwch fynd a dod fel y mynnwch.
Mae cwcis yn ychydig yn debyg o ran ysbryd i hynny.
Y tro cyntaf i mi ymweld â'r wefan hon, yr wyf newydd wneud ar ôl clirio fy cache,
y, gweinydd gwe yr offer yn yr achos hwn, yn rhoi stamp ar fy llaw
y mae ei enw yn cael ei PHPSESSID, sesiwn ID,
y mae eu gwerth yn y llinyn alffaniwmerig hir iawn.
>> Felly dyna bellach yn fath o addurno ar fy llaw fel bod y tro nesaf i daro ail-lwytho
neu â llaw ymweld â'r URL mewn porwr,
fy porwr drwy ddiffiniad o HTTP yn mynd i gyflwyno'r stamp llaw
eto ac eto ac eto.
Felly, er nad yw'r gweinydd yn o reidrwydd yn gwybod pwy ydw i,
maent o leiaf yn gwybod fy mod yn yr un defnyddiwr neu o leiaf, yn fwy penodol, y porwr un.
Ac felly yn y pen draw sut y mae'r superglobal SESIWN cael ei weithredu.
Mae'r gweinydd wedi ddim syniad pwy ydych chi pan fyddwch yn edrych eto ar wefan ar gyfer yr ail neu'r trydydd tro
oni bai eich bod yn cyflwyno hyn stamp llaw.
A chyn gynted ag y byddwch yn cyflwyno'r stamp llaw,
y gweinydd gwe yn ei hanfod yn mynd i mewn i gronfa ddata bach ei hun
a gwiriadau, iawn, yr wyf wedi gweld dim ond y stamp llaw bo8dal3ct defnyddiwr ac yn y blaen.
Gad i mi weld pa wybodaeth y rhaglennydd wedi ei storio
tu mewn i'r superglobal am y defnyddiwr,
ac yna gadewch i mi wneud yn siŵr bod y data eto tu mewn i'r SESIWN superglobal
fel y gall y rhaglennydd ail-gael mynediad at y data
hyd yn oed os cafodd ei osod rhai munudau neu oriau yn ôl.
Geiriau Felly, yn eraill, cwcis, a oedd yn cael rap gwael ers peth amser
oherwydd ansicrwydd mewn porwyr a gallant mewn gwirionedd yn torri ein preifatrwydd a hyn i gyd,
maent mewn gwirionedd wedi cyfleustodau mawr oherwydd hebddynt
byddech yn gyson yn logio i mewn i bob tudalen Facebook byddwch yn ymweld
neu bob e-bost Gmail eich bod yn darllen os nad yw'r porwr oedd gennych ryw ffordd o gofio
eich bod wedi dilysu eisoes.
>> Felly, yn y ffordd hon cwcis yn cael eu hanfon yn ôl ac ymlaen ar draws y wifren.
Arall chwilfrydedd am gwcis, yn enwedig yma, yw bod hyn yn gyfan gwbl yn cleartext.
Does dim amgryptio digwydd yma o gwbl,
ac yn wir rwy'n ei ddefnyddio HTTP ar hyn o bryd.
Un o'n ffefrynnau yn eiliadau CS50, sydd bellach yn 2 flynedd yn ôl,
oedd o gwmpas yr amser y bydd dull o'r enw Firesheep ddaeth allan.
Roedd hwn yn ddarn rhad ac am ddim o feddalwedd sy'n cael ei wneud gan ymchwilydd diogelwch
fel galwad sgil-ar gyfer y gymuned i ddweud yn union sut y gweithredir atrociously
mecanweithiau dilysu penodol ar y We yn.
Felly, am beth amser, Facebook roedd bron yn gyfan gwbl dros HTTP, HTTPS ddim.
A hyd yn oed os nad oes gennych syniad sut y mae'r crypto yn gweithio, S yn ddiogel
felly mae'n golygu fod o leiaf rywfaint o amgryptio dan sylw.
Facebook ddim yn arfer amgryptio enwau defnyddwyr a chyfrineiriau,
ond cyn gynted ag y byddwch yn edrych ar eich pokes neu eich negeseuon neu eich bwyd anifeiliaid newyddion,
hynny i gyd oedd heb ei amgryptio.
Felly roedd Gmail hyd nes dim ond blwyddyn neu 2 yn ôl.
Unrhyw amser y byddwch yn logio i mewn, ie, maent yn defnyddio amgryptio diogel,
ond ar ôl hynny nad oeddent. Ac efallai pam hynny?
Pam na dim ond defnyddio cryptograffeg bob amser mewn achosion defnyddio fel hyn?
Beth sy'n bod? Rwy'n credu fy mod glywed rhywbeth. [Myfyrwyr] Cyflymder.
Cyflymder, dde? Mae yna ffyrdd o gwmpas hyn.
Ond os ydych yn unig fath o feddwl am y peth rhesymegol, os byddwch yn amgryptio rhywbeth,
rhaid i chi wneud o leiaf ychydig mwy o waith.
Yn pset 2 pan fyddwch ar waith Cesar neu Vigenere neu hyd yn oed Agenna,
dim ond argraffu llinyn yn gymharol hawdd.
Amgryptio ac yna printio llinyn cyn lleied â phosibl yn gofyn am waith ychydig yn fwy.
>> Am wefannau poblogaidd super fel Google a Facebook,
os oes rhaid i chi wneud mwy o waith ar gyfer pob defnyddiwr ar gyfer pob tudalen ar y we unigol fyddant yn ymweld,
mai dim ond yn cymryd amser CPU mwy.
Ac os ydych angen amser CPU mwy, efallai y bydd angen mwy o weinyddion,
sy'n golygu efallai y bydd angen mwy o arian.
Ac felly am flynyddoedd lawer mae hyn nid yn unig mewn gwirionedd yn arfer gorau.
Byddai pobl yn defnyddio amgryptio SSL dim ond pan oedd angen iddynt.
Ond mae'n troi allan, ac fel y cyd gyda Firesheep gwneud super glir,
pan fyddwch guys sydd ar hyn o bryd ar Facebook ar hyn o bryd -
Allan o chwilfrydedd, gadewch i ni weld os byddwch yn fess i fyny.
Os ydych chi ar Facebook ar hyn o bryd mewn rhai tab, hyd yn oed os nad yw'n foregrounded,
yw URL eich HTTP neu HTTPS?
[Fyfyrwyr lluosog] S. S? [Chwerthin]
Iawn. Unrhyw HTTP? Dim ond 1? Iawn.
Felly, gall pob un ohonom darnia y boi yn cyfrif Facebook ar hyn o bryd.
Ar gyfer y rhan fwyaf mae hyn wedi dod yn troi ymlaen yn ddiofyn, o leiaf mewn rhai gwefannau.
Ac stori fer hir, os nad yw eich traffig ar y we yn cael ei amgryptio,
nid yn unig y mae'r HTML mynd yn ôl ac ymlaen ar draws y WiFis heb ei amgryptio,
felly peidiwch pethau fel 'cookies' yn mynd yn ôl ac ymlaen ar draws yr awyr
heb unrhyw fath o amgryptio.
Felly, os oes gennych dim ond ychydig o savvy raglennu neu ychydig o Googling sgiliau
i ddod o hyd i feddalwedd rhad ac am ddim sy'n gwneud hyn, y cyfan mae'n rhaid i chi ei wneud yw eistedd yn Starbucks
neu eistedd mewn maes awyr lle mae wedi y cyfan heb ei amgryptio WiFi
a dim ond gwylio am eiriau allweddol fel Set-Cwci: neu PHPSESSID
oherwydd os ydych yn cael y savvy dechnegol i dim ond gwylio y WiFi
ar gyfer yr holl ddarnau sy'n llifo trwy gydol yr awyr am y patrwm hwn,
yna gallwch ddweud bod PHPSESSID guy yn digwydd bod yn bo8dal ac yn y blaen.
Ac yna eto os ydych yn ddigon savvy dechnegol neu os oes gennych yr offeryn cywir,
gallwch wedyn dim ond ad-drefnu eich porwr hun i ddechrau cyflwyno y stamp llaw
i Facebook.com, a Facebook yn unig yn mynd i gymryd yn ganiataol eich bod yn y dyn
oherwydd nad yw pob eu bod yn gwybod yw pwy ydych chi ond eich bod yn cael y dynodwr unigryw.
Felly os ydych yn dwyn y dynodwr unigryw a'i gyflwyno i'r gweinydd gwe fel eich hun,
maent yn jyst yn mynd i ddangos i chi porthiant newyddion y person hwnnw
neu negeseuon y person hwnnw neu pokes.
>> A byddwn yn Google nawr sut i weithio'r HTTPS ar gyfer Facebook efallai.
Ond y mae mewn gwirionedd mor syml â hynny.
Ac felly Facebook a Google ac ati wedi gotten yn dda iawn ar hyn,
ond cadwch lygad allan yn fwy ar gyfer unrhyw wefannau byddwch yn ymweld nad ydynt yn defnyddio HTTP
ac yn cael rhyw fath o wybodaeth sensitif ar eu cyfer,
boed yn ariannol neu bersonol neu debyg.
Os nad ydynt yn defnyddio hyn, gall o bosib cwcis fel hyn fod yn hawdd iawn eu dwyn
a meithrin hynny, a dyna'n union yr hyn a wnaeth Firesheep.
Doeddech chi ddim rhaid i chi fod yn rhaglennydd.
Y cyfan sydd wedi ei wneud oedd wedi cael cysylltiad rhyngrwyd, llwytho i lawr offeryn hwn am ddim,
a'r hyn y byddai'n ei wneud yw i chi logio i mewn, ac yna byddai'n dangos i chi enwau Facebook
pawb yn Sanders, yn yr arddangosiad arbennig, o'ch cwmpas
a phob rhaid i chi ei wneud oedd cliciwch ar eu henw a'r meddalwedd awtomeiddio'r broses
o arogli y cwci, gan ei gyflwyno i Facebook fel eich hun,
ac, voila, rydych yn mewngofnodi
Felly, mae hyn yn un arall o'r rhai "peidiwch â gwneud hyn" yn swyddogol.
Os oes gennych eich rhwydwaith cartref eich hun ac rydych am i botsian, ar bob cyfrif,
ond yn sylweddoli hyn yn croesi'r llinell ar amgylchedd y brifysgol.
>> Ond y nod yma yw ein bod yn pwysleisio nid sut i wneud hyn
ond sut i amddiffyn yn erbyn y mathau hyn o bethau.
Ac mae'r ateb dibwys yma, er ei fod ei hun yn ddiffygiol,
yw i 'n sylweddol leihau'r defnydd o unrhyw safleoedd nad ydynt yn defnyddio HTTPS yn gyson.
Felly safleoedd fel Facebook a Google yn gynyddol blychau ticio
lle gallwch ddewis i mewn i'r math hwn o beth,
a banciau wedi cael hyn ers blynyddoedd am resymau tebyg.
Felly, dim ond ychydig bach o ffactor ofn os gallwn. Ond dyna ni yn gryno.
Dyna sut y mae gweinydd yn cofio pwy ydych chi.
A chyn gynted ag y gallant gofio pwy ydych chi, gallant gofio unrhyw beth amdanoch chi
bod y rhaglennydd wedi ei storio y tu mewn o hyn superglobal arbennig o'r enw $ _SESSION.
Ac ar gyfer pset 7 rydym yn ei ddefnyddio trivially yn unig i gofio int,
sef ID unigryw y defnyddiwr sydd wedi logio i mewn,
fel ein bod yn gwybod eu bod wedi bod yno o'r blaen.
Unrhyw gwestiynau yna ar sesiynau neu cwcis neu yn y blaen?
Nid Firesheep yn gweithio cystal anymore,
a rhaid i chi roi eich cyfrifiadur i mewn i modd cymysg arbennig
felly rydych yn mewn gwirionedd yn gwrando am draffig ar wahân i chwi eich hunain.
Felly, os ydych yn llwytho i lawr ar hyn o bryd Firesheep, yn sylweddoli ei fod yn ddim cweit mor hawdd
ag y bu eu dangos.
Mae pob hawl. A pheidiwch â gwneud hynny yn Sanders. Ei wneud ar y cartref.
Cronfeydd Data.
Un o'r pethau a wnaethom yn pset iawn 7 fwriadol
oedd yn rhoi i chi sampl tabl cronfa ddata ar gyfer defnyddwyr sydd â rhai IDs defnyddiwr,
rhai enwau defnyddwyr, ac mae rhai cyfrineiriau wedi eu amgryptio ynddo.
Ac fel y gwelwch, os nad ydych wedi eisoes, rydych chi'n mynd i gael i newid y tabl ychydig.
Rydych yn mynd i gael i ychwanegu rhywfaint o cache i bob un o'r defnyddwyr yn y tabl,
a ydych yn mynd i gael i ychwanegu un arall, bwrdd hanes tabl portffolios,
neu efallai ei alw'n rhywbeth arall.
Ond o ran meddwl am sut i wneud hyn, gadewch i ni agor offeryn hwn
a ddefnyddiwyd gennym ar ddydd Gwener, ond os anghyfarwydd, yr offer comes ag offeryn
a elwir yn phpMyAdmin a ysgrifennir gyd-ddigwyddiad yn PHP,
ond mae ei phwrpas mewn bywyd, ar ôl i mi logio i mewn yma fel jharvard ag ysgarlad,
yw rhoi i mi yn ffordd hawdd ei ddefnyddio o wylio a newid fy gronfa ddata.
>> Mae'r gronfa ddata fy mod yn rhedeg ar y peiriant a elwir MySQL.
Mae hyn yn boblogaidd iawn, ac mae'n cronfa ddata ffynhonnell agored am ddim sy'n rhyfeddol o hawdd i'w defnyddio,
yn enwedig gyda blaen yn dod i ben fel hyn.
Beth mae hyn yn offeryn yn caniatáu imi ei wneud, er enghraifft, yn poke o amgylch byrddau.
Gadewch i mi fynd yn ei flaen ac yn gwneud hyn.
Ar ddydd Gwener aethom ati i greu tabl o'r enw myfyrwyr a oedd yn syml super.
Roedd 3 colofn - id, enw, ac e-bost - ac yr wyf llaw mewnosod un neu ddau o resi
fel David Davies a Mike yn yr enghraifft hon.
Gadewch i ni gymryd y bit pellach, a gadewch i ni dybio ein bod eisiau cofio mwy o
na dim ond enw ac e-bost am ddefnyddiwr.
Gadewch i mi cliciwch Strwythur yma ar y brig.
Ac eto, y pset teithiau cerdded i chi trwy'r camau angenrheidiol yma,
felly peidiwch â phoeni os yw rhai o hyn yw ychydig yn gyflym.
Wedyn dw i'n mynd i glicio yma.
Rydw i'n mynd i ychwanegu rhai nifer o golofnau ar ôl e-bost
oherwydd yr wyf am ychwanegu rhywbeth fel tŷ.
Anghofiais i gofnodi tŷ myfyriwr.
Gadewch i mi cliciwch Go, ac yn awr mae gennym y ffurflen hon, yn anffodus ychydig yn eang o'r chwith i'r dde,
ond rwy'n mynd i alw enw'r tŷ hwn maes,
ac yna y math wyf yn awr yn rhaid i ddewis.
Felly, gadewch i ni gael sgwrs fer am y mathau gwahanol i mewn MySQL
oherwydd tra PHP ei deipio wan ac mae'n fath o chwarae yn gyflym ac yn rhydd gyda mathau,
mewn cronfa ddata yn enwedig ei bod yn bwysig super i'w ddefnyddio mewn gwirionedd teipio o fantais i chi
oherwydd mae un o'r pethau a MySQL chronfa ddata pheiriannau eraill ei wneud i chi
yw sicrhau bod nad ydych yn rhoi data ffug yn eich cronfa ddata.
Mae hyn yn fath o wall rhad ac am ddim wirio ar gael i chi.
>> Am ty mae'n amlwg nad ydym am iddo fod yn int, sy'n werth 32-bit i mewn MySQL.
Fe wnaethon ni siarad yn fyr ar ddydd Gwener am varchar, sy'n sefyll am hyd torgoch amrywiol.
Beth yw hwn? Mae hyn yn caniatáu i chi nodi eich bod am i hyn fod yn llinyn o ryw fath.
Dydych chi ddim wir yn gwybod ymlaen llaw pa mor hir ydyw,
felly byddwn yn fympwyol yn dweud y gall enw tŷ fod yn 255 o gymeriadau,
ond gallech fynd â 32, 64 - unrhyw nifer mewn gwirionedd.
Ond y fantais o ddefnyddio varchar dros cae o'r enw torgoch yw beth?
Dim ond os byddaf yn reddfol sgroliwch i lawr yma, sylwch mae torgoch ac mae varchar.
Varchar yw unrhyw hyd a torgoch amrywiol; char yn hyd torgoch sefydlog.
Yn seiliedig Felly dim ond ar y diffiniad hwnnw, beth yw'r fantais neu anfantais o bob un o'r rhain?
Mewn geiriau eraill, sy'n gofalu am y gwahaniaeth, neu pam y dylech chi ofalu?
>> Yeah. [Myfyrwyr] Varchar Mae mwy o hyblygrwydd, ond yn cymryd mwy o gof.
Da. Varchar yn cymryd mwy - Gadewch i ni weld. Dwi ddim yn siŵr os wyf yn clywed yr hawl honno.
Allwch chi ddweud unwaith eto?
[Myfyrwyr] dywedais varchar mae'n debyg bod gan fwy o hyblygrwydd, ond mae'n cymryd i fyny mwy o gof.
Diddorol. Iawn. Varchar yn ôl pob tebyg yn rhoi mwy o hyblygrwydd, ond yn cymryd mwy o gof.
Nid yw'r olaf yn wir o reidrwydd.
Mae'n dibynnu ar y cyd-destun, ond gadewch i ni ddod yn ôl at hynny.
>> [Ymateb y myfyrwyr Anghlywadwy] Yn union.
Mae'n mewn gwirionedd yn wir y bydd torgoch fel arfer yn defnyddio mwy o gof
oherwydd bod torgoch, fel yn C, yn debyg i llinyn, ei fod yn amrywiaeth o gymeriadau.
Felly, os ydych yn dweud maes torgoch o hyd 255,
y gronfa ddata yn llythrennol yn mynd i roi 255 o gymeriadau.
Ac os bydd y tŷ yn dod i ben i fyny fod yn gymeriadau MATHER a 6 cyfanswm,
rydych yn gwastraffu dros 200 o gymeriadau.
>> Felly varchar yn effeithiol dim ond defnyddio fel nifer o gymeriadau ag y bo angen
hyd at uchafswm.
Ond mae'r pris a dalwch mewn gwirionedd perfformiad, o bosibl.
Os ydych yn gwybod ymlaen llaw bod eich holl dannau yn mynd i fod yn 8 cymeriadau -
er enghraifft, mae'n debyg eich bod angen cyfrineiriau o hyd 8 -
y upside o ddefnyddio maes torgoch ar adegau, ond nid yn aml,
yw pennu hyd sefydlog ar gyfer rhywbeth fel cyfrinair
oherwydd erbyn hyn y gall y gronfa ddata hyd yn oed yn fwy craff.
Os yw'n gwybod bod pob maes torgoch, pob llinyn mewn colofn yn yr un hyd,
chi fynd yn ôl y nodwedd o fynediad ar hap.
Gallwch neidio o gwmpas ymhlith y gwahanol feysydd torgoch yn eich tabl cronfa ddata
oherwydd meddwl am gronfa ddata fel rhesi a cholofnau.
Felly, os yw pob un o'r llinynnau yn yr un hyd,
eich bod yn gwybod bod yr un cyntaf ar beit 0, yr un nesaf ar 8 beit
ac yna 16, yna 24 ac yn y blaen.
Felly, os bydd yr holl dannau o'r un hyd, gallwch neidio o gwmpas yn llawer mwy effeithlon.
Felly, gall hynny fod yn fanteisiol o ran perfformiad,
ond yn nodweddiadol nad oes gennych y moethus o wybod ymlaen llaw,
felly mae varchar yw'r ffordd i fynd.
Dyma un arall manylion a oedd yn rhedeg hyd yn oed Facebook yn y pen draw.
Ints yn wych, ac rydym yn fath o eu defnyddio yn ddiofyn unrhyw adeg ydym am nifer,
ond mae'n dim ond 32 ddarnau.
>> A hyd yn oed er nad oes Facebook eithaf gael 4 biliwn o ddefnyddwyr yn awr,
mae bendant rhai pobl allan yna gyda chyfrifon lluosog
neu gyfrifon sydd wedi cael eu hagor ac yna ar gau,
ac felly Facebook ei hun yr wyf yn credu ychydig flynyddoedd yn ôl roedd yn rhaid i newid o int
i, fel y gelwir aptly, bigint, sydd ychydig yn 64 did yn lle hynny.
Felly, mae hyn hefyd yn benderfyniad dylunio.
Byddech yn rhyfeddol o lwcus os yw eich prosiect terfynol yn troi startup,
wedi 4 biliwn a 1 defnyddiwr, rhoi neu gymryd,
ac os felly gallai defnyddio ints fod ychydig yn shortsighted.
Ond mewn gwirionedd, eich defnyddwyr tabl yn ôl pob tebyg iawn gyda ints.
Ond ar gyfer rhywbeth fel pset 7, fel eich bwrdd hanes,
allai fod gennych miloedd, miliynau o ddefnyddwyr os ydych yn esblygu i mewn i etrade.com.
Felly, tra efallai nad oes gennych fwy na 4 biliwn o ddefnyddwyr,
y gallai rhai defnyddwyr oes gennych fwy na 4000000000 trafodion dros gyfnod o amser -
yn prynu ac yn gwerthu a phethau yn eu hanes.
Felly, os ydych yn rhagweld - unwaith eto, mae'r rhain yn broblemau da i gael os oes gennych hyn yn llawer o ddata -
os ydych yn rhagweld data yn fwy na'r maint o int,
mynd gyda rhywbeth fel bigint yw cyfarwyddyd nid yn ddigon aml a fabwysiadwyd gan ddylunwyr
oherwydd bod pobl yn ffigwr nid yw hynny'n mynd i fod yn broblem,
ond mae'n hyn yn hawdd i'w ddewis rhywbeth mwy na hynny.
Degol rydym yn ei ddefnyddio yn pset 7, sy'n nodi manylder sefydlog
fel y gallwch osgoi'r materion yn ymwneud fflotiau a dyblau a reals ac yn y blaen.
>> Ac yna mae rhai meysydd eraill yma. Byddwn yn chwifio ein dwylo arnyn nhw i ryw raddau.
Ond dyddiadau, amseroedd i gyd yn cael fformat a ragnodwyd yn MySQL,
a'r fantais o ddyddiadau storio fel dyddiadau ac nid varchars
golygu y gall y gronfa ddata mewn gwirionedd fformadu i mewn fformatau gwahanol,
a yw fformat yr Unol Daleithiau neu fformat Ewropeaidd neu yn y blaen - bynnag yr ydych ei eisiau -
yn llawer mwy effeithlon na phe bai'n ddim ond rhai varchar generig.
Ac yna mae rhywfaint o deuaidd eraill, varbinary, smotiau.
Mae'r rhain yn bethau mawr deuaidd, a gallwch hefyd storio data deuaidd
yn ogystal â data geometrig mewn cronfa ddata.
Ond i ni, byddwn fel arfer yn gofalu am ints a varchars ac yn y blaen.
Gadewch i ni orffen i fyny yr enghraifft hon gyda tŷ.
Bydd House Rydw i'n mynd i fod yn fympwyol dweud 255 chars.
Yna gwerth rhagosodedig y gallem wneud hyn.
Gallem yn ddiofyn yn rhoi pawb yn Mather House, er enghraifft.
Dyna sut y gallem nodi bod y gronfa ddata
Dylai sicrhau bod rhywun bob amser yn werth. Ond byddaf yn gadael hynny.
Yn wir, ar gyfer pobl sy'n byw oddi ar y campws ac nid mewn tŷ,
efallai Fi 'n weithredol am nodi bod y gwerth diofyn ar gyfer tŷ NULL,
ac yna mae angen i mi brithwch y blwch yma a dweud wrth y gronfa ddata ei fod yn iawn os bydd tŷ y defnyddiwr yn null.
>> Unwaith eto, mae hyn yn un arall mecanwaith amddiffyn y gallwch eu rhoi yn eu lle
felly nid oes hyd yn oed yn rhaid i chi roi yn eich cod PHP o reidrwydd.
Bydd y gronfa ddata yn sicrhau bod pethau'n neu nad ydynt yn NULL.
Ac yna yn olaf, Priodoleddau.
Dim un o'r rhain yn wir yn berthnasol.
Binary, heb eu llofnodi - un o'r rhain yn berthnasol i varchar.
Mynegai.
Oes rhywun yn gwybod neu gofio neu os oes gennych ddyfalu ynghylch yr hyn mynegai yn
ar gyfer rhywbeth fel tŷ?
Mae hyn hefyd mewn gwirionedd yn benderfyniad pwysig wrth ddylunio ac yn gymharol hawdd.
I'r rhai nad ydynt wedi gweld eto, ar ddydd Gwener ni siarad yn fyr am allweddi cynradd.
Mewn tabl cronfa ddata, allwedd gynradd yn y maes neu golofn
unigryw sy'n nodi rhesi yn y tabl.
Felly, yn y tabl ar hyn o bryd mae gennym IDs, mae gennym enwau a negeseuon e-bost.
Pa un o'r rheini yw'r ymgeisydd gorau i fod yn allwedd gynradd,
sydd â'r rôl i adnabod unigryw rhesi?
Mae'n debyg ID.
Gellir dadlau, gallem hefyd yn defnyddio'r hyn er bod?
Efallai y gallech chi ddefnyddio e-bost oherwydd mewn theori mae'n unigryw
oni bai bod pobl yn cael eu rhannu cyfrifon e-bost.
Ond y gwir amdani yw, os ydych yn defnyddio ID rhifol fel 1234,
dyna dim ond 32 darnau, tra gallai cyfeiriad e-bost fod hyn bytes llawer o hwn neu bytes lawer.
Felly, o ran effeithlonrwydd ar gyfer dynodwyr unigryw,
mae'n tueddu i fod arfer da yn unig i ddefnyddio int
hyd yn oed os oes gennych rywfaint ymgeisydd llinyn y gallech dadlau defnyddio.
>> Am rywbeth tebyg i dŷ, ni ddylai hyn fod yn allwedd gynradd
oherwydd wedyn dim ond 1 person yn byw yn Mather ac 1 person yn lledrwr ac yn y blaen.
Yn yr un modd, ni ddylai hyn fod yn unigryw.
Y gwahaniaeth rhwng ysgolion cynradd ac unigryw yw bod yn yr achos ein tabl ar hyn o bryd,
Byddai adnabod yn sylfaenol, ond nid e-bost yn sylfaenol ar gyfer y rheswm hwn rydym newydd ei grybwyll -
perfformiad - ond dylai fod yn unigryw.
Felly, gallwch barhau i orfodi unigryw heb wneud yr hawliad
ei fod yn faes gynradd super pwysig.
Ond mae hyn yn un yn eithaf defnyddiol: Mynegai.
Os ydych yn gwybod ymlaen llaw am eich prosiect terfynol, ar gyfer pset 7, neu yn gyffredinol,
bod y tŷ maes yn mynd i fod yn rhywbeth yr ydych yn chwilio ar lawer
defnyddio'r gair allweddol dethol neu rywbeth arall,
yna gallwch preemptively ddweud wrth y gronfa ddata i weithio ei hud
a gwneud yn siŵr ei bod yn creu mewn cof unrhyw strwythurau data angenrheidiol ffansi
i hwyluso chwiliadau sy'n seiliedig ar dŷ.
Efallai bydd yn defnyddio'r tabl hash, efallai y bydd yn defnyddio rhestr cysylltiedig.
Mewn gwirionedd, mae'n tueddu i ddefnyddio coeden, yn aml strwythur a elwir yn B-coed -
Nid goeden ddeuol ond B-coed - sy'n coeden eang iawn
y gallech eu gweld mewn dosbarth fel CS124, y dosbarth strwythurau data.
Ond yn fyr, nid oes rhaid i chi boeni am hynny wrth ddefnyddio meddalwedd cronfa ddata smart.
Alli jyst dweud hynny, "Mynegai y maes hwn fel y gallaf chwilio am yn fwy effeithlon."
>> Os byddwch yn gadael hwn i ffwrdd ac rydych yn ceisio chwilio am bawb yn y gronfa ddata sy'n byw yn Mather,
bydd yn datganoli i chwiliad llinol.
Ac os oes gennych chi 6000 undergrads i gyd yn byw mewn rhyw dŷ,
ydych chi'n mynd i chwilio'r bwrdd cyfan i ddod o hyd i'r Matherites,
ond os ydych yn dweud Mynegai, gobeithio y bydd yn rhywbeth agos at chwiliad logarithmig
i ddod o hyd y mathau hynny o fyfyrwyr.
Mae hyn yn unig yw nodwedd rhad ac am ddim i droi ymlaen,
hyd yn oed er ei fod yn dod am bris o ryw faint o ofod.
Yn olaf, auto-cynyddiad, y maes hwn AI,
a dim ond yn golygu os ei fod yn int, ac nad ydych am i ofalu i gynnydd eich hun
bob tro y mae defnyddwyr newydd, gwirio bod,
a bydd pob defnyddiwr sy'n cael ei fewnosod yn awtomatig yn cael ID newydd.
Gadewch i ni cliciwch Save, ac yn awr gad i ddod o hyd i fai ag y dyluniad hwn.
Os byddaf yn mynd i mewn i Browse, hysbysiad bod Mike a fy nhŷ yn null.
Gallaf ddefnyddio phpMyAdmin i olygu'r hyn â llaw.
Gallaf fynd i mewn yma a theipiwch Mather ac yna pwyswch Enter,
ac yn awr yn sylwi ar y tabl yn wahanol.
Ond rhybudd gallwn i wneud rhywbeth arall yn ogystal.
David ID yw 1, felly phpMyAdmin unwaith eto yn unig yw offeryn gweinyddol;
nid yw hyn yn rhywbeth eich defnyddwyr yn cael eu byth yn mynd i weld.
Felly, os wyf yn lle hynny cliciwch y tab SQL i fyny top -
ac unwaith eto, bydd pset 7 yn eich cyflwyno i fwy o ymholiadau am hyn -
Gallaf manually gweithredu'r gorchymyn SQL ymholiad strwythuredig iaith
Defnyddwyr DIWEDDARIAD SET ty = 'Pfoho' BLE id = 1.
Mae'r ymholiadau SQL yn, 'n glws ddigon,' n bert darllenadwy o'r chwith i'r dde.
Diweddariad y tabl defnyddwyr, gosod y cae o'r enw tŷ i Pfoho
lle mae ID y defnyddiwr yw 1.
Neu gallwn hyd yn oed wneud lle e-bost = 'malan@harvard.edu'.
Cyn belled ag y unigryw yn nodi i mi, a fyddai'n gweithio cystal.
Ond ID tueddu i fod yn berfformiad uwch, felly gadewch i ni wneud hynny.
Gadewch i ni cliciwch Go. Iawn, nid yw lecture.users yn bodoli. Beth yw fy camgymeriad?
Beth yw'r tabl o'r enw yn y fan yma?
Mae'n cael ei alw myfyrwyr yn unig oherwydd dyna beth a wnaethom hyd yma ar y chwith uchaf.
Mae'n cael ei alw nad yw myfyrwyr, defnyddwyr. Cliciwch Felly Ewch yn awr.
1 rhes yr effeithir arnynt. Ymholiad gymerodd 0.01 eiliad.
Os cliciwch wyf Pori yn awr, bellach yn byw Malan yn Pfoho.
Felly, dyna un arall blas o SQL, ond bydd y pset cerdded chi drwy ychydig mwy o hynny.
>> Mae penderfyniad dwp rwyf eisoes wedi gwneud yma.
Byddwn yn dadlau bod y cynllun newydd hwn gronfa ddata yn aneffeithlon
oherwydd bod y mwy o bobl i mi ychwanegu at y tabl myfyrwyr,
y mwyaf ohonom wyf dechrau ychwanegu, y mwyaf o TFS wyf dechrau ychwanegu,
rydym yn mynd i ddechrau i weld beth ddiswyddiadau yn y tabl hwn?
>> Yeah. [Myfyrwyr] Gweld ei fod yn fyfyrwyr, rydym yn defnyddio yr un fath [Anghlywadwy]
Mae'r un peth - Iawn, yn union.
Felly, os 400 o bobl yn byw yn Mather, rhoi neu gymryd,
yn y pen draw y tabl hwn yn mynd i gael 400 rhesi sy'n dweud "Mather," "Mather,"
"Mather," "Mather," "Mather."
Rydym yn gwastraffu pob un o'r rhain bytes, ac mae 'na ychydig o siopau bwyd parod yno.
1, mae achos gornel crazy lle os bydd rhywun yn talu llawer o arian
ac yn ailenwi Mather, rydym yn awr yn rhaid i ni newid ein tabl cronfa ddata gyfan.
Nid yw hynny'n mynd i ddigwydd yn aml, er Pfoho ei alw unwaith yn North House 15 mlynedd yn ôl,
felly mae'n digwydd. Ond nid dyna'r cyfan y gymhellol.
Mwy grymus na achos cornel fel bod o angen i ddiweddaru'r data mewn swmp
ar gyfer cronfa ddata yn cael ei pam yr ydych yn storio MATHER eto ac eto ac eto ac eto?
Mae hynny'n llawer o chars, 6 chars.
Na allwn ni wneud hyd yn oed yn well na hynny, yn enwedig ar gyfer Pforzheimer?
Yn sicr, gallwn wneud yn well na'r hyn a nifer o gymeriadau.
Pam na dim ond cysylltu dynodwr unigryw gyda phob ty
a siop, ar gyfer pob defnyddiwr? Felly, gadewch i ni geisio hyn.
Yn hytrach na dim ond defnyddiwch y tabl myfyrwyr, gadewch i mi fyned i fyny i fy cronfa ddata ddarlith yma ar y chwith uchaf.
Hysbysiad yma mae'n dweud Creu bwrdd.
Gadewch i mi creu tabl newydd o'r enw tai.
Y nifer o golofnau yn mynd i fod 2. Enter.
Nawr rwyf wedi 2 gae.
Rydw i'n mynd i alw hyn yn yr enw, ac mae'n mynd i fod yn varchar o hyd 255,
>> ond mae hynny'n eithaf mympwyol. Gadewch i mi roi hyn i lawr yma gan gonfensiwn.
Felly, rhowch ID yma. Gadewch i ni roi i bob tŷ dynodwr unigryw.
Gadewch i ni roi i bob tŷ yn enw.
Gadewch i ni nodi y bydd y dynodwr yn heb eu llofnodi yn unig gan gonfensiwn sy'n defnyddio dim ond rhifau positif.
Gadewch i ni fynd ymlaen a rhowch hwn yn auto-cynyddiad maes am y tro.
Ac a oes angen unrhyw beth arall?
Gadewch i ni fynd yn ei flaen a chliciwch Cadw.
Nawr mae gennyf ail dabl.
Hysbysiad o'r neilltu fel hyn yw gorchymyn SQL ychydig yn cryptig
y byddech wedi gorfod teipio â llaw os na ddefnyddir arf gweinyddol fel phpMyAdmin.
Felly reswm arall rydym yn ei defnyddio.
Mae'n fath rhyfeddol o ddefnyddiol o pedagogically oherwydd gallwch glicio o gwmpas
a chyfrif i maes sut mae pethau'n gweithio drwy dim ond copïo a gludo yr hyn a wnaeth phpMyAdmin.
Ond mae'r gorchymyn tabl Create yw'r hyn ei ddienyddio yn unig, a dyma fy tabl.
Gadewch i mi fynd yn ei flaen yn awr ac yn defnyddio SQL amrwd yn hytrach na gorsymleiddio'r drwy glicio ar y tab Insert.
Gadewch i mi yn RHOWCH I tai,
ac rydw i'n mynd i ddweud yr enw y tŷ yn mynd i gael gwerth o 'Mather'.
Dyna ni. Mae'r gystrawen yn ychydig yn fwy cryptig.
Dyma'r enw y caeau ydym am i fewnosod.
Mae'r rhain yn y gwerthoedd rydym am i fewnosod y meysydd hynny. Gadewch i mi cliciwch Go.
1 rhes mewnosod gymerodd 0.02 eiliad. Gadewch i mi cliciwch Pori yn awr.
>> Hysbysiad os wyf cliciwch Pori, mae Mather, y mae eu ID yw drwy awtomeiddio y rhif 1.
Gadewch i mi wneud un arall. Gadewch i mi fynd i mewn i'r tab SQL.
RHOWCH I dai. Mae enw'r ty yn mynd i gael gwerth o Pfoho ac yn y blaen.
Ewch. A allaf ddal i wneud hyn eto ac eto ac eto.
Neu os ydych yn diflasu gan ddefnyddio phpMyAdmin, gallwch ddefnyddio'r tab Insert
ac nid rhaid i deipio'r SQL crai.
Alli jyst daro allan yn gyflymach drwy deipio, er enghraifft, lledrwr, Mewnbynnu,
ac yn awr os ydym cliciwch Pori, mae lledrwr gydag ID o 3.
Felly mae hyn yn hyn a olygwn wrth auto-cynyddiad.
Ond yn awr mae'n rhaid i ni atgyweiria rhywbeth yn fyfyrwyr.
Yn myfyrwyr beth ddylai math data y maes tai yn awr yn?
Dylai fod yn int, dde?
Felly, y nod yma yw i ffactor allan, a elwir fel arall yn normaleiddio, mae'r tablau
fel nad ydym yn storio gwybodaeth redundantly mewn unrhyw un o fy tablau.
Ac eto, y llwybr yr ydym yn ar yma yn mynd i ddweud Mather, Mather,
Mather, Mather, Pfoho, Pfoho, Pfoho, Pfoho, sy'n hynod ddi-waith
o ran y wastraffus y chars.
Felly, gadewch i mi fynd yn ei flaen ac yn newid hyn drwy glicio Strwythur,
a gadewch i mi fynd yn ei flaen a gwirio oddi ar y cae tŷ, cliciwch ar Change,
ac yn awr yr wyf i'n mynd i newid hyn i fod yn int.
255 yn berthnasol bellach.
Gadewch i mi fynd yn ei flaen a dweud mae hynny'n iawn os yw'n dal i fod NULL. Achub.
Nawr myfyrwyr tabl wedi cael ei newid yn llwyddiannus,
ac yn sylwi eto tŷ yn int.
Fel o'r neilltu, anwybyddwch y rhif mewn cromfachau pan ddaw i ints.
>> Mae hyn am resymau etifeddiaeth.
Yn ôl yn y dydd pan nad oedd gennych GUIs, chi yn hytrach na wedi cael gorchymyn amgylchedd llinell,
10 a 11 a bennir yn y drefn honno faint o gymeriadau dylech ddangos
yn y ffenestr terfynell i mewn gwirionedd yn dangos caeau.
Mae ganddo ddim i'w wneud gyda hyd did y maes gwirioneddol, fel y byddwn yn unig yn anwybyddu hynny am y tro.
Nawr rhaid i mi fynd i mewn i'r tabl.
Ac os David yn byw yn Mather, ni ddylai tŷ fod yn 0,
sydd yn ddiofyn gwerth int agosaf at NULL.
Dylai fyw yn fewnol 1.
Gadewch i ni fympwyol dweud bod bywydau Mike yn Pfoho, felly ty rhif 2.
Nawr mae fy tabl yn edrych ychydig yn fwy cryptig.
Ond yn ystyried effeithlonrwydd.
Rwyf nawr yn defnyddio dim ond 32 did i adnabod y tŷ,
sy'n golygu mae dim ond 1 diffiniad canonaidd o fy nhŷ Mather a Pfoho
a dyna yn y tabl tai.
Felly, os ydw i am awr yn ailymuno y tablau hyn, yn meddwl amdano fel hyn.
Mae gen i fy myfyrwyr bwrdd, ac ar yr ochr dde mae niferoedd hyn, 1 a 2.
1 yn Mather, 2 yn Pfoho.
Mae gennym niferoedd hynny yr un yn y tabl hwn arall, a elwir yn dai,
1 a 2 a 3 ar gyfer y 3 o dai.
Yr hyn yr ydym yn awr yn dymuno ei wneud yw cael y gallu yn cod, PHP a SQL,
i ddatrys y ailymuno tablau hyn, lle os yw'r rhain yn y myfyrwyr ac mae'r rhain yn y tai,
rydym am i rhywsut eu cyfuno fel bod 1 llinell i fyny gyda 1,
2 llinellau i fyny gyda 2, ac fel y gallwn chyfrif i maes lle mae David
a lle mae Mike a lle mae pawb arall yn byw.
I wneud hyn, gallwn gyflawni ymholiad SQL fel y canlynol.
SELECT * O myfyrwyr YMUNO tai AR -
Ac yn awr yr hyn y caeau ydym ni eisiau ymuno ar?
Felly students.house = houses.id.
>> Mae cryptic ychydig, ond mae hyn yn golygu rhan llythrennol creu tabl newydd dros dro
dyna'r canlyniad ymuno â myfyrwyr a thai.
A sut ydych chi eisiau i gyfuno flaenau fy mysedd yma?
Gosod 'maes tai gyfartal i'r tai' y myfyrwyr maes ID.
Ac os wyf cliciwch nawr Ewch, i mi gael yn ôl yn union beth oeddwn yn gobeithio.
David yn Mather, Mike yn Pfoho, ac yr wyf hefyd yn gweld y dynodwyr unigryw.
Ond y pwynt yw nawr mae gen i dabl cyflawn.
Ac felly y cludfwyd yma am pset 7 neu yn wir ar gyfer y prosiect terfynol:
Os ydych yn dod o hyd eich bod yn storio unrhyw ddarn o wybodaeth redundantly,
boed yn dŷ, efallai ei fod yn ddinas, y wladwriaeth, a ZIP
lle gall ZIP fel arfer ond nid bob amser yn cael ei ddefnyddio fel dynodwr unigryw,
ydynt yn mynd drwy'r ymarfer yn feddyliol ac yna gyda rhywbeth fel phpMyAdmin
ffactoreiddio fod data cyffredin oherwydd yn enwedig gan fod eich gwefan yn cael mwy ddefnyddio'n dda
ac yn fwy poblogaidd, dyma sut y byddwch yn gwneud yn siwr bod popeth yn gyflym super,
trwy roi y gronfa ddata awgrymiadau o ran unigryw ag y bo modd.
Dyna oedd llawer.
Unrhyw gwestiynau? Mae pob hawl. Gadewch i ni gymryd seibiant 5-munud yno ac regroup.
Mae pob hawl.
Mae'r canlynol yn enghraifft a ddefnyddiwyd rai blynyddoedd yn ôl pan fyddaf yn cymryd CS161,
sef y dosbarth systemau gweithredu yn y coleg
sydd yn adnabyddus am fod yn anhygoel ond mae llawer crazy o waith,
ac mae'n canolbwyntio mewn gwirionedd ar rai o'r problemau lefel isel sy'n codi mewn systemau gweithredu
a hefyd hyd yn oed yn y byd o gronfeydd data.
>> Roedd y stori a ddywedwyd gan fy athro, Margo Seltzer, y flwyddyn honno oedd fel a ganlyn.
Tybiwch fod gennych oergell dorm bach i chi a'ch roommate
ac mae'r ddau ohonoch wir yn hoffi llaeth.
Felly, byddwch yn dod adref o'r diwrnod un dosbarth, mae eich roommate nid yw eto yno,
byddwch yn agor yr oergell, a ydych yn sylweddoli, "O damn, rydym yn allan o laeth."
Felly, byddwch yn cau yr oergell, byddwch yn cerdded ar draws y stryd i CVS
a chael yn y llinellau hir yn gynyddol i brynu ychydig o laeth ar CVS.
Yn y cyfamser, eich roommate yn dod adref o'i ddosbarth,
dod i mewn i'r ystafell, yn agor yr oergell wir eisiau ychydig o laeth,
agor yr oergell a, "Damn, dim llaeth."
Felly, ef neu hi yn dod i ben yr oergell, cerdded allan y drws, ac yn mynd i Parc Busnes Awyrofod
neu yn rhywle ar wahân i CVS lle nad ydych chi'n mynd i daro i mewn i bob eraill
i fynd i gael ychydig o laeth.
Wrth gwrs, ychydig funudau yn ddiweddarach, y ddau ohonoch fynd yn ôl adref
ac yn awr ydych yn cael llaeth dwywaith cymaint ag y byddwch mewn gwirionedd yn eisiau.
Ac yn cael llaeth, yn awr mae'n mynd i fynd drwg oherwydd eich bod yn hoffi llaeth
ond nad ydych yn wir yn hoffi llaeth, felly, yn awr mae gennych ormod o laeth, felly mae'n mynd i sur.
Mae hwn yn ofnadwy, sefyllfa ofnadwy.
Beth allai fod wedi datrys y sefyllfa anodd pe baech yn y cartref roommate cyntaf? Ydw.
[Myfyrwyr] Dylech fod wedi gadael nodyn. [Chwerthin]
Da. Dylech fod wedi gadael nodyn.
Dylech fod wedi rhoi nodyn Post-it neu fel dweud, "Gone am laeth,"
ac yna eich roommate fyddai cysyniadol wedi cael eu cloi allan mewn gwirionedd yn gwneud hynny.
Neu gallech fynd gam ymhellach 1.
Gallech llythrennol cloi'r oergell gyda rhyw fath o clo,
ac yn awr bydd eich roommate yn llythrennol yn cael ei gloi allan o'r oergell.
Os ydym yn cyffredinoli yn ôl i raglennu,
gallwch chi bron yn meddwl am yr oergell fel rhyw fath o amrywiadwy neu strwythur,
rhyw fath o gynhwysydd am wybodaeth.
Y broblem sylfaenol yma yw bod y ddau ohonoch yn cael archwilio
neu ddarllen y cyflwr y strwythur data,
ond eich gweld ar adegau gwahanol ac eto ddau ohonoch gwneud penderfyniad
yn seiliedig ar gyflwr y byd ar y rhai eiliadau gwahanol mewn pryd.
Felly pe baech wedi cloi yr oergell, byddech wedi o leiaf osgoi eich roommate
o fod wedi wedi gallu i archwilio cyflwr y byd,
felly ni allai ef neu hi wedi gwneud y penderfyniad hwnnw.
Felly, cronfeydd data, gan ei fod yn troi allan, yn cael y broblem hon yn gyson.
>> Gadewch i ni weld os allwn adeiladu senario.
Tybiwch eich bod yn fath o guy gwael ac yr ydych yn mynd i Bank of America
neu un o'r llefydd eraill yn y sgwâr sydd â cwpl ATMs ochr yn ochr,
a rhywsut i chi cyfrifedig gwybod sut i ddyblygu cerdyn ATM - nid yw pob bod anodd.
Mae'n dim ond stribed magnetig.
Ac felly yr hyn yr ydych am geisio ei wneud yw chwarae'r gêm hon
lle byddwch yn rhoi 1 cerdyn i 1 peiriant, un arall cerdyn yn y peiriant arall,
ac rydych yn y bôn am geisio codi arian ar yr un pryd,
oherwydd dychmygu y stori yn mynd fel a ganlyn.
Mae'r peiriant ar y chwith yn cymryd eich cerdyn a'ch PIN,
ac yna dweud, "Rhowch i mi $ 100."
Mae'r ATM yn cael ei raglennu yn gyntaf i wneud dethol ar ei gronfa ddata neu eu cyfwerth arnoch -
beth bynnag gronfa ddata mae'n defnyddio - i weld y mae hyn yn ddefnyddiwr gael o leiaf $ 100 yn ei gyfrif?
Os felly, yna boeri allan y $ 100 a $ 100 thynnu oddi ar eu cydbwysedd.
Ond wrth gwrs, os oes peiriannau lluosog yma neu ffyrdd lluosog o arolygu
y cyflwr y byd, y vault banc, i weld faint o arian sydd gennych,
Mae'n debyg mai dim ond trwy hap y peiriant ar y chwith a'r dde
ddau yn gofyn y cwestiwn hwnnw ar hyn o bryd yn fras yr un mewn pryd.
>> A gall hyn yn sicr yn digwydd. Peiriannau ATM yn cyfrifiaduron y dyddiau hyn.
Felly, os y peiriant ar y chwith yn dweud, "Oes, mae gennych o leiaf $ 100,"
yn y cyfamser y peiriant ar y dde yn dweud, "Oes, mae gennych o leiaf $ 100,"
yna y ddau ohonynt ymlaen i orffen eu rhaglenni ac mewn gwirionedd yn boeri allan y $ 100
a dweud, "Yn y gorffennol oedd gennych $ 200."
"Gadewch i mi ddiweddaru'r y newidyn i yn awr yn $ 100 ar ôl yn y cyfrif."
Ond os yw'r ddau ohonynt wedi gwirio balans eich cyfrif ac wedi canfod ei fod yn $ 200
ac mae'r ddau ohonynt wedyn yn gwneud y math a tua 200 - 100,
y peiriannau wedi allai boeri allan ddau biliau $ 100 ym mhob peiriant,
ond maent wedi diweddaru dim ond eich swm balans cyfrif i fod yn $ 100.
Mewn geiriau eraill, rydych chi wedi eu cymryd allan $ 200, ond oherwydd eu bod yn arolygu cyflwr y byd
ar yr un pryd ac yna gwneud penderfyniad ar sail y gwerth hwnnw,
nad ydyn nhw'n gwneud y math cywir yn y pen draw.
Felly, mewn sefyllfa banc yn rhy ydych wir eisiau i gael rhyw fath o cloi allan
fel bod cyn gynted ag y byddwch wedi edrych ar y cyflwr rhai newidyn
mae hynny'n bwysig iawn, fel eich balans cyfrif,
peidiwch â gadael i unrhyw un arall wneud penderfyniadau ar sail hynny hyd nes eich bod yn gwneud eich gwneud beth,
lle yn yr achos hwn chi yw'r ATM ar y chwith.
Lock pawb arall allan.
Gallwch ei gyflawni mewn gwirionedd yr effaith hon mewn dwy ffordd wahanol.
>> Y ffordd symlaf i mewn MySQL yn llinell o SQL a roesom i chi
yn y set problem fanyleb sy'n edrych yn union fel hyn.
Mewnosod yn y tabl - beth bynnag fe'i gelwir - yn id, yn symbol, a chyfran, a nifer y cyfrannau,
y gwerthoedd canlynol, er enghraifft.
Os nad ydych wedi darllen y fanyleb eto, mae hyn yn enghraifft yn ymwneud â sut rydych chi'n mynd ati i
prynu 10 cyfran o'r stoc hwn ceiniog am Arlywydd Skroob,
ID defnyddiwr y mae ei digwydd i fod yn rhif 7?
Mae hyn yn dweud RHOWCH YN fwrdd y id canlynol, symbol, a nifer y cyfrannau
o 7, 'DVN.V', a 10.
Ond - ond, ond, ond - yr ail linell yn un pwysig.
AR rhannu DIWEDDARIAD ALLWEDDOL DYBLYG = cyfranddaliadau + GWERTHOEDD (cyfranddaliadau).
Felly, yn gwbl cryptic-edrych ar yr olwg gyntaf.
Ond y ffaith bod y SQL query, er ei fod yn lapio ar 2 llinellau,
yw 1 ymholiad hir, mae'n golygu ei fod yn atomig
yn yr ystyr y bydd ymholiad hwn naill ai gael eu gweithredu i gyd gyda'i gilydd neu ddim o gwbl.
Ac yn ôl y diffiniad o MySQL, dyna sut y maent yn gweithredu ymholiad hwn.
Mae gan ddiffiniad yn y llawlyfr gwarantu i weithredu i gyd ar unwaith neu ddim o gwbl.
Y cymhelliad ar gyfer hyn fel a ganlyn.
Os yn yr achos hwn yr ydych yn ceisio prynu 10 cyfran o stoc,
mae'n fath o stori un fath â'r llaeth, mae'n fath o stori un fath â'r ATM.
>> Os ydych yn gwneud y camgymeriad o ddefnyddio'r gystrawen
ond yn hytrach yn dewis o'r gronfa ddata i weld faint o gyfranddaliadau y stoc ceiniog
yn Llywydd Skroob gael, ac mae'n debyg fod ganddo 10 cyfran,
ac yna rhai eiliad yn ddiweddarach rydych wedyn yn gwneud datganiad UPDATE,
sy'n datganiad arall yn SQL sy'n dweud mynd yn ei flaen ac ychwanegu 10 mwy o gyfranddaliadau
i ei 10 ar hyn o bryd fel bod yn ddelfrydol mae'r cyfanswm yn 20,
y broblem yw bod mewn systemau cronfa ddata heddiw ac oherwydd mewn cyfrifiaduron heddiw
gennych proseswyr lluosog, creiddiau lluosog -
mewn geiriau eraill, gall cyfrifiaduron yn llythrennol yn gwneud pethau lluosog ar unwaith -
does dim sicrwydd bod eich SELECT a'ch DIWEDDARIAD yn yr achos hwn
yn mynd i ddigwydd gefn wrth gefn.
Felly byddai senario gwael fod i chi wneud y SELECT
i weld faint o gyfrannau o stoc hwn geiniog yn Skroob gael,
ac yna dim ond drwy siawns arall ymholiad cronfa ddata yn cael ei gyflawni -
efallai ei Skroob mewn ffenestr arall porwr ceisio prynu 10 cyfran
mewn ffenestr arall yn gyfan gwbl, yn debyg iawn i'r ATM -
ac yn debyg bod un arall yn cael ymholiad rhwng SELECT a'r DIWEDDARAF.
Gallai fod yn wir bod Skroob awr yn colli rhai nifer y cyfrannau
oherwydd broses arall yn arolygu cyflwr ei fyd,
neu ei fod yn cael mwy o gyfranddaliadau nag y dylai fod wedi.
Ni fyddwn yn mynd i mewn i'r manylion yn union yr hyn y byddai rhai llinellau stori arbennig fod,
ond y pwynt yw os ydych yn rhaid i chi wirio gwerth newidynnau ac wedyn yn gwneud penderfyniad,
os oes risg o rywun arall yn gwneud rhywbeth yn y canol y 2 datganiadau,
fel y gall ddigwydd mewn systemau multiprocessor, yn Multicore systemau,
cyfrifiaduron gyda'r gallu i wneud pethau lluosog ar unwaith, gall pethau drwg yn digwydd
cyfrifon banc fel ei ddebydu yn anghywir, prynu llaeth dwywaith cymaint,
neu yn yr achos hwn y nifer anghywir o gyfranddaliadau.
Ond mae ffordd haws i feddwl am hyn.
>> Mae'n troi allan bod SQL hefyd yn cefnogi, os byddwch yn ffurfweddu eich bwrdd yn gywir,
rhywbeth o'r enw trafodion, y byddwn yn dadlau mewn gwirionedd yn haws i ddeall
na hyn, ond nid yw'n 1-leinin, felly mae'n mewn gwirionedd ychydig yn cymryd mwy o ran.
Nid oes yn llythrennol datganiad yn y SQL a elwir yn CYFLAWNI'R START.
Yn union fel mae SELECT, Y NEWYDDION DIWEDDARAF, mewnosod, dileu, a YMUNO a bagad o bobl eraill,
mae geiriau allweddol fel CYFLAWNI'R START.
A beth ydych yn ei wneud wedyn yng nghyd-destun pset 7 -
Nid oes rhaid i chi wneud hyn ar gyfer pset 7; mae'n ymwrthod yn benodol fel nad oes angen,
ond ar gyfer prosiectau terfynol gall fod yn ddefnyddiol -
os ydych yn galw ymholiad o CYFLAWNI'R START ac yna un arall ymholiad
ac yna un arall ymholiad ac yna un arall, un arall, ac un arall,
Ni fydd ymholiadau hynny mewn gwirionedd yn cael ei weithredu hyd nes y byddwch yn ffonio y datganiad SQL YMRWYMO,
ac ar yr adeg, boed 2 ddatganiad neu 20 ddatganiadau, byddant i gyd yn cael eu gweithredu ar unwaith,
sy'n golygu na all unrhyw un arall yn ddamweiniol prynu llaeth gormod neu ddebyd gormod o arian
neu brynu cyfranddaliadau gormod o oherwydd bydd eich holl ymholiadau gweithredu
gefn wrth gefn wrth gefn wrth gefn.
Ac mae hyn yn super bwysig, yn enwedig pan fyddwch yn gwneud rhywbeth fel hyn.
Mae hyn yn enghraifft mympwyol sy'n dweud gadewch i ni roi'r wybodaeth ddiweddaraf i'r cyfrif banc
drwy osod cydbwysedd cyfartal i gydbwysedd - $ 1000 os yw'r rhif y cyfrif yw 2.
Ac yna y datganiad ail nawr gadewch i adneuo fod $ 1000
i rywun arall cyfrif banc eu cyfrif rhif yw 1.
>> Mewn geiriau eraill, mae hyn yn enghraifft berffaith o ble rydych am wneud yn siŵr
bod y ddau o'r datganiadau hyn yn digwydd neu ddim o gwbl
oherwydd fel arall y cwsmer yn mynd i gael sgriwio
a ydych yn mynd i gymryd eu harian a pheidio gadael yn rhywle arall,
neu'r banc yn mynd i gael sgriwio ble rydych chi'n mynd i ollwng yr arian
ond nid mewn gwirionedd yn tynnu oddi wrth gyfrif y defnyddiwr.
Felly rydych chi am y ddau ohonynt i weithredu gyda'i gilydd.
Felly mynd i mewn i'r trafodion byd.
Felly dyna rhywbeth i gadw yng nghefn eich meddwl,
nid yn gymaint at ddibenion dim ond prosiect terfynol,
ond os ydych chi am fynd â'ch prosiect terfynol yn rhywle,
os ydych am i ddechrau rhai cwmni o'i amgylch,
os ydych am i ddatrys problem ryw grŵp myfyriwr ar y campws
ac mewn gwirionedd yn cael byw, gwefan weithredol, mae'r rhain yn y math o namau cynnil a all godi
os nad ydych yn llwyr meddwl beth all ddigwydd os 2 o bobl
yn ceisio cael mynediad at eich gwefan ar hyn o bryd yn llythrennol un pryd,
lle gallai eu ymholiadau fel arall yn cael eu cydblethu.
>> Yn barod ar gyfer rhai JavaScript, mae teaser ohono?
Mae hyn yn ein hiaith olaf ar gyfer y semester. Mae pob hawl.
Diolch byth, JavaScript yn edrych yn iawn, iawn, yn debyg iawn i'r 2 iaith, C a PHP,
ydym wedi ei wneud hyd yn hyn.
Does dim JavaScript yn pset 7, ond ei fod yn offeryn hynod ddefnyddiol
pan ddaw i wneud ar y we prosiectau terfynol neu mewn gwirionedd dim ond rhaglennu ar y we yn fwy cyffredinol.
Felly trosolwg cyflym o'r hyn a elwir DOM.
Dyma dudalen we syml super sydd wir yn unig yn dweud helo, byd
yn y teitl ac yn y corff.
Gan fod y bant wedi bod yn awgrymu ers peth amser,
yn wir mae hierarchaeth i dudalennau gwe.
Gallwn dynnu hyn snippet un o HTML fel coeden,
meddwl yn ôl at ein trafodaethau am strwythurau data yn C, fel a ganlyn.
Mae gennyf rywfaint o nod gwraidd arbennig o'r enw y nod ddogfen,
a byddwn yn gweld y analog o hyn yn JavaScript mewn dim ond hyn o bryd.
Mae'r plentyn cyntaf a phlant yn unig o hynny yn yr achos hwn yw y tag HTML.
Does dim mapio uniongyrchol i'r doctype.
Dyna beth arbennig, felly dylem ei hanwybyddu pan ddaw i hyn DOM,
y goeden hon Gwrthrych Ddogfen Model.
Sylwch fod y tag HTML yr wyf wedi darlunio fympwyol fel petryal,
Mae 2 o blant: pen a chorff.
>> Mae'r rhai yn cael eu tynnu yn yr un modd fel petryalau.
Mae'n ystyrlon ddarluniadol y pen yn ar ochr chwith y corff.
Y goblygiad yw bod pen yn gyntaf yn y goeden.
Felly mae mewn gwirionedd yn archebu i goeden pan fyddwch yn tynnu fel hyn,
er bod y siapiau a whatnot yn fympwyol.
Pennaeth y cyfamser mae un plentyn o'r enw teitl,
a theitl mewn gwirionedd wedi ei phlentyn ei hun, sef "helo, byd",
yr wyf yn fwriadol yn tynnu fel hirgrwn yma i wneud yn ychydig yn wahanol i'r petryal.
Mae'r petryalau yn elfennau, tra helo, byd sydd mewn gwirionedd yn nod testun.
Felly, mae'n nod yn y goeden, ond mae'n fath gwahanol o nod
felly tynnais fympwyol wahanol.
Yn yr un modd mae corff yn cael blentyn o'r enw helo, byd yn ogystal,
nod mor wahanol er eu bod yn gyd-ddigwyddiad yr un testun,
ond yr wyf wedi tynnu gan ddefnyddio yr un siâp. Felly sy'n gofalu?
Wel, beth sy'n braf am HTML yw ei fod yn cael y natur hierarchaidd.
A beth braf am JavaScript ac yn enwedig llyfrgelloedd sydd ar gael am ddim
ac yn boblogaidd fel jQuery, gallwch lywio strwythur y goeden fel rhyfeddol o hawdd.
Unrhyw un o'r pethau a wnaethom yn C gyda awgrymiadau a choed tramwyo a recursing ar nodau
plentyn chwith i blentyn dde, yn sydyn gallwn ddatrys o gymryd yn ganiataol
fel rhyfeddol o ddadlennol os nad ychydig yn rhwystredig
ond nid yw bron yn ffordd effeithiol i fynd ati i raglennu.
Ac felly gyda'r ieithoedd hyn ar lefel uwch fel JavaScript
byddwn yn gallu ymdopi goeden hon yn llawer mwy reddfol.
>> Ac yn wir y gystrawen yn mynd i fod yn eithaf cyfarwydd.
Os nad ydych erioed wedi gweld o'r blaen JavaScript, mae hyn yn gyfeiriad neis iawn
oddi wrth y Folks Mozilla, y bobl sy'n gwneud Firefox,
felly peidiwch â theimlo croeso i chi bori bod yn eich hwylustod.
Beth fyddwch chi'n dod o hyd i - ac mae'r sleidiau yn union i'r hyn rydym yn defnyddio y diwrnod o'r blaen -
yn yr un modd, prif mynd.
Felly, pan fyddwch yn ysgrifennu rhaglen yn JavaScript, nid oes prif swyddogaeth.
'Ch jyst ddechrau ysgrifennu cod.
Ond mae gwahaniaeth allweddol rhwng JavaScript a C a PHP
yw, er i C a PHP hyd yn hyn wedi cael eu gweithredu ochr y gweinydd
gan y ddyfais wrth yr achos hwn neu yn fwy cyffredinol gan weinyddwr,
JavaScript drwy ddyluniad yn cael ei gyflawni fel arfer gan porwr.
Mewn geiriau eraill, efallai y byddwch yn ysgrifennu JavaScript cod, gan ein bod ar fin,
ar weinydd yn y peiriant, ond eich bod yn cynnwys ymhlith eich HTML, ymysg eich CSS,
ymhlith eich GIFs a'ch PNGs a'ch JPEG
fel bod pan fydd y defnyddiwr yn ymweld eich dudalen ar y we, os ydych yn defnyddio JavaScript,
y cod JavaScript yn dod o'r gweinydd i borwr,
ac mae'n porwr sydd mewn gwirionedd yn weithredu.
Felly, mae i hyn oblygiadau ystyrlon ar gyfer eiddo hyd yn oed deallusol.
Mae'n fath o gwirion i hyd yn oed meddwl am ddiogelu eich eiddo deallusol pan ddaw i JavaScript cod
oherwydd yn ôl natur yr iaith y mae'n cael ei weithredu fel arfer gyda'r ddwy porwr.
>> Gallwch gymylu'r ei, sy'n golygu y gallwch ei wneud yn edrych yn crazy ac yn hyll
heb gofod, enwau amrywiol ofnadwy, i'w gwneud yn anoddach i bobl i ddwyn eich IP,
ond yr allwedd yw ei fod yn cael ei gyflawni ochr porwr.
Hyd yn oed er fel ochr y gweinydd o'r neilltu gellir JavaScript cael ei ddefnyddio,
yr achos defnydd mwyaf cyffredin ar hyn o bryd yn dal i fod ar y porwr.
A dyma sut mae'n edrych. Dyma os-arall os-adeiladu arall yn union fel C, yn union fel PHP.
Dyma mynegiad Boole pan fyddwch yn "neu" 2 pethau at ei gilydd.
Dyma pan fyddwch yn "a" 2 pethau at ei gilydd.
Dyma yw, ddatganiad switsh sydd yn debyg i PHP
yn y gallwch newid ar wahanol fathau o werthoedd.
Dolenni yr un modd yn gyfrifol am ddolenni yma, sydd wedi'u strwythuro yn union â'r hyn yr ydym wedi ei weld o'r blaen.
Er dolennau, rydym wedi got wneud tra dolenni.
Newidynnau, erioed mor ychydig yn wahanol.
Rydych yn datgan newidynnau fel chi ei wneud yn PHP a C,
ond yn yr un modd yn JavaScript deipio wan.
Nid ydych yn pennu int neu arnofio neu linyn neu unrhyw beth fel 'na fel arfer.
Gallwch nodi var.
Nid oes rhaid i chi nodi var, ond mae ganddo oblygiadau os nad ydych yn ei wneud.
Fel rheol, os byddwch yn hepgor var, ydych yn ddamweiniol greu newidyn byd-eang yn hytrach na lleol.
Felly, gadewch i mi eich bod yn cynnig bron bob amser yn unig dweud var ac yna enw'r newidyn.
Nid yw'n fath, dim ond var gyfer amrywiol.
Byddai hyn yn enghraifft, boed yn 123 neu "helo, byd".
Araeau yn bresennol a syntactically tebyg i PHP.
Byddaf yn dweud rhifau var ac yna byddaf yn defnyddio cromfachau sgwâr eto i ddatgan newidyn
mae ei fath yw amrywiaeth sydd y niferoedd penodol ynddo gwahanu gan atalnodau.
Ac yna yn olaf, dyma'r unig un sydd wir yn edrych yn wahanol.
Dwyn i gof bod yn PHP byddem wedi gweithredu arae cysylltiadol i fyfyriwr
fel Zamyla a allai edrych fel hyn, lle y newidyn cael ei alw'n myfyrwyr.
Mae'r cromfachau sgwâr yn golygu yma hon arae.
>> Mae'r ffaith nad rwy'n ei ddefnyddio mynegeion rhifol ond llinynnau - id, ty, a'ch enw -
golygu bod hwn yn arae cysylltiadol,
ac mae'r rhain saethau gyda'r symbol hafal a braced ongl
yn golygu bod y allweddol yw "id", y gwerth yw 1;
yr allwedd yw "ty", mae'r gwerth yn Winthrop House;
yr allwedd yw "enw", y gwerth yn Zamyla Chan.
Felly mae 3 allweddi y tu mewn o hyn arae cysylltiadol, pob un ohonynt wedi ei werth ei hun.
Rydym wedi gweld hynny yn pset 7, neu yn fuan bydd, yn JavaScript un syniad,
ond mae'n mynd i edrych fel hyn.
Myfyrwyr fel var - dim arwydd doler a dim sôn am fath o hyd ond var -
gyfartal ac yna agor braces cyrliog oherwydd yn JavaScript pan fydd gennych parau gwerth allweddol,
chi mewn gwirionedd yn defnyddio rhywbeth o'r enw gwrthrych.
Ac efallai y rhai ohonoch a oedd yn cymryd APCS neu debyg gofio gwrthrychau o Java
neu ieithoedd tebyg.
Nid yw JavaScript yn Java, yn gyntaf oll.
Roedd blynyddoedd dylunio penderfyniad bwriadol yn ôl i guro oddi ar rywbeth arall a oedd yn boblogaidd,
ei enw, er nad oes ganddo perthynas sylfaenol i Java ei hun.
JavaScript wedi gwrthrychau, ac rydych yn eu creu drwy gyfrwng y nodiant Brace cyrliog.
Gwrthrychau yn JavaScript yn 'n bert lawer cyfateb i araeau cysylltiadol yn PHP
pan ddaw i storio data y tu mewn ohonyn nhw.
>> Ond gall hyd yn oed yn fwy pwerus yn JavaScript i chi gysylltu yn hawdd iawn swyddogaethau
tu mewn gwrthrych, ac er y gallwch wneud hyn mewn ieithoedd eraill,
mae'n eithaf patrwm cyffredin, fel y cawn ni weld.
Yn fyr, mae hyn yn cynrychioli gwrthrych yn fyfyriwr, sydd yn arbennig o Zamyla,
ac mae'n debyg gysyniadol, ychydig syntactically wahanol iawn i hyn.
Gadewch i ni mewn gwirionedd yn defnyddio JavaScript mewn ffeil.
Mae'n troi allan yna tag sgript.
Rydym wedi gweld tag arddull ac rydym wedi gweld tagiau HTML eraill.
Mae'r tag sgript mewn gwirionedd yn cynnwys rhai cod JavaScript.
Gadewch i mi fynd i mewn i'r peiriant lle mae gennym rhywfaint o cod ffynhonnell ymlaen llaw-a wnaed.
Nid wyf wedi postio eto ar y wefan, ond byddaf yn gwneud hynny ar ôl y dosbarth.
Gadewch i ni agor yr un yma, blink.html.
Yn ôl yn y 1990au, roedd llythrennol yn tag HTML a elwir yn y tag amrantiad,
a dyma un o'r tagiau mwyaf rhyfeddol gorddefnyddio ar y Rhyngrwyd
lle byddech yn ymweld â rhai 1990au arddull tudalen ar y we a dechrau gweld testun fflachio i chi fel hyn,
canlyniadau'r tag ardalydd, a oedd wedi mynd testun fel hyn.
Un o'r adegau prin lle mae'r byd wedi cytuno mewn gwirionedd ar safon ar y we,
pawb ar draws y bwrdd ladd y tag Blink rai blynyddoedd yn ôl.
Ond gallwn atgyfodi gyda JavaScript er mwyn dangos y pŵer sydd gennych
pan fyddwch yn gallu ysgrifennu rhaglen tu mewn i dudalen we.
Yn gyntaf gadewch i sgip dros y pethau newydd ac yn canolbwyntio yn unig ar yr hen.
>> Dyma'r hen bethau yn yr enghraifft hon.
Mae gen i, tag HTML a tag pen, a tag teitl.
Yna, mae gen i tag corff yma gyda div, sy'n galw i gof yn unig yw is-adran hirsgwar y dudalen
fy mod i wedi cael ID unigryw fympwyol o "cyfarch" i,
yn unig felly mae gen i ffordd o unigryw cyfeirio ato, sydd â rhywfaint o destun syml iawn:
helo, y byd.
Nawr, gadewch i mi sgrolio i fyny i ben y ffeil a gweld beth sy'n newydd.
Y peth cyntaf sy'n atodol newydd yw'r tag sgript,
a thu mewn y tag sgript rhybudd yr wyf wedi datgan swyddogaeth.
I ddatgan swyddogaeth mewn JavaScript, eithaf tebyg i PHP,
yn llythrennol ysgrifennu swyddogaeth yna enw'r swyddogaeth, cromfachau,
ac efallai rhai dadleuon os bydd yn cymryd unrhyw.
Yna mae gen i fy brês cyrliog fel arfer, ac yn awr mae gennym rywfaint o cod ychydig yn newydd,
ond gadewch i ni weld beth mae hyn yn ei olygu.
Felly div var, mae hyn yn golygu rhoi i mi div elwir yn amrywiol.
Gallwn fod wedi galw ei foo, ond yr wyf eisiau iddo gael ei alw div
am resymau a fydd yn glir mewn eiliad.
Yna mae'n troi allan yn JavaScript - ac mae hyn yn JavaScript cod yn rhan annatod o fy nhudalen we -
mae newidyn byd-eang arbennig o ryw fath a elwir yn ddogfen.
JavaScript mewn gwirionedd yn iaith gwrthrych-oriented.
Ni fyddwn yn mynd i fanylder wrth 50 o ran yr hyn y mae hynny'n ei olygu,
ond am nawr yn gwybod bod gwrthrych yn 'n bert lawer fel strwythur.
Fel y gwelsom ffordd yn ôl pan fydd yn un o'r broblem cynharaf yn gosod
lle rydym yn rhoi llawer o wybodaeth mewn strwythur,
yn yr un modd yn cael ei gofnodi yn strwythur arbennig sy'n dod gyda'r porwr,
yn dod ag unrhyw dudalen ar y we. Nid yw'n rhywbeth yr wyf yn creu.
Y tu mewn strwythur hwn ddogfen hon, fodd bynnag, nad ydych wedi dim ond data
ond hefyd mae gennych swyddogaethau.
>> Ac unrhyw tro y byddwch yn cael swyddogaeth tu mewn i strwythur, y tu mewn gwrthrych,
fe'i gelwir yn ddull. Ond y peth.
Mae dull yn swyddogaeth mai dim ond fel y digwydd i fod y tu mewn o rywbeth arall.
Felly, mae hyn yn golygu bod y newidyn byd-eang arbennig a elwir yn ddogfen
wedi swyddogaeth o'r enw getElementById sy'n llythrennol yn gwneud hynny.
Bydd yn mynd â chi elfen o'r DOM, Dogfen Gwrthrych coed Model,
y mae eu ID sydd yn y cyfarchiad achos.
Mewn geiriau eraill, yr holl amser rydym yn ei wario ar strwythurau data yn dod i chwarae yma.
Y llun yma o DOM ein bod wedi eiliad yn ôl,
er bod y dudalen yn ychydig yn wahanol, os oedd gennyf div yn y llun,
Byddai pa document.getElementById dychwelyd i mi fod yn effeithiol pwyntydd
at y petryal yn y goeden, mae cyfeiriad at y petryal yn y goeden.
Felly, dyna beth mae'n ei olygu mewn gwirionedd ffonio un o'r swyddogaethau hynny.
Yn yr achos hwn eto, mae'n div. Nid yw'n gorff neu deitl.
Felly, gadewch i ni weld beth Yna wneud gyda'r div nawr bod gennyf yn y tu mewn o hyn div amrywiol o'r enw.
Mae'n troi allan gyda JavaScript gennych y gallu i tweak y CSS ar eich tudalen ddynamig.
Hyd yn hyn, yr holl CSS rydym wedi ei wneud, er yn gyfyngedig, yn nodweddion arddull,
neu lle arall ydym ni wedi rhoi CSS?
Yr wyf yn fath o ddifetha bod un. Yn y tag steil ar ben y ffeil.
Neu trydydd safle wedi bod yn?
>> Mae ffeil allanol, rhywbeth. Css.
Felly, y rhai yn y 3 lle rydym wedi gwneud CSS hyd yn hyn,
ond y ddalfa yw ein bod wedi codio galed y cyfan.
Rydych wedi penderfynu wrth i chi colomen i mewn i pset 7, rydym yn penderfynu cyn ddarlithio hyn y byddai ein CSS fod.
Ond os ydych am newid eich CSS, alli 'n weithredol wneud hynny
unwaith y byddwch yn cael iaith raglennu gwirioneddol.
CSS, HTML - ieithoedd nad rhaglennu. JavaScript yn.
Felly, mae'n troi allan, cyn gynted ag y byddwch yn cael un o'r rhai a petryalau o'r goeden
a elwir yn y DOM, mae wedi ei hun rhywfaint o ddata y tu mewn ohono.
Felly y div yr wyf newydd ei afael o'r goeden wedi hyn byddwn yn galw eiddo y tu mewn ohono
a elwir yn arddull, a'r eiddo arddull ei hun wedi eiddo o'r enw gwelededd.
Byddwn yn gwybod hyn yn unig drwy edrych i fyny llawlyfr defnyddiwr CSS yn.
Mae'n troi allan yna gwelededd CSS eiddo sy'n gwneud beth mae'n ei ddweud.
Mae'n gwneud rhywbeth gweladwy neu beidio, yn weladwy ai peidio.
A sut ydych yn gwneud hynny yw hyn.
Rwy'n gofyn programmatically os yw gwelededd y div yn cael ei guddio,
beth ydw i'n ei newid i? Gweladwy.
Arall os nad yw'r gwelededd y dudalen hon wedi ei guddio, yn rhesymegol wyf yn ei wneud yn gudd.
Nid oes gennyf unrhyw syniad pam ei fod yn weladwy ac yn gudd ac nid gweledig ac anweledig.
Roedd hwn yn benderfyniad ddyluniad gwael ar hyd y ffordd.
Ond y rhai yn wir yn croes yn CSS: weladwy ac yn gudd.
Mae hyn i gyd yn ei wneud yw ei fod yn golygu newid y CSS o fy ffeil ar ac oddi ar, ar ac oddi ar
ar gyfer y div penodol.
Ond unwaith eto, mae hwn yn swyddogaeth a elwir yn Blink. Pryd mae'r swyddogaeth Blink galw?
Mae'n troi allan fod yna un arall arbennig a elwir yn ffenestr byd-eang amrywiol,
debyg o ran ysbryd i'r ddogfen, ond tra bod y ddogfen yn cyfeirio at eich tudalen ar y we,
fel y goeden DOM, anfonwyd yr HTML chi oddi ar y gweinydd,
ffenestr yn cyfeirio at y crôm o'i gwmpas, y bar cyfeiriad, y bar teitl,
a'r holl bethau o gwmpas eich tudalen we.
>> Ac mae'n troi allan fod y gwrthrych ffenestr yn y tu mewn swyddogaeth arbennig yn galw setInterval
sy'n gwneud beth mae'n ei ddweud.
Bydd yn gosod egwyl - yn yr achos hwn pob 500 milieiliadau -
ac, yn cymryd dyfalu, beth rwyt ti'n mynd i wneud pob 500 milieiliadau?
Mae'n mynd i weithredu y Blink swyddogaeth.
A beth braf yma yw y gallem fod wedi gwneud hyn yn C erioed hyd yn oed er ein bod yn gwneud hynny.
C yn cael rhywbeth o'r enw awgrymiadau swyddogaeth lle gallwch basio swyddogaethau o gwmpas
fel dadleuon.
Yn yr un modd yn JavaScript byddwch yn mynd heibio enw swyddogaeth yn swyddogaeth arall.
Ac yn sylwi ar yr hyn rwy'n ei wneud. Dydw i ddim yn gwneud hyn.
Os byddaf yn rhoi cromfachau ar ôl y Blink, byddai hynny'n golygu galw'r swyddogaeth amrantiad.
Os byddaf yn hepgor yn, mae hynny'n golygu dyma yw swyddogaeth Blink
fel y gall setInterval alw pob 500 milieiliadau.
Felly, y canlyniad terfynol, erchyll er ei bod yn, yw os byddaf yn mynd i mewn i localhost ac yn mynd i blink.html,
Yr wyf yn awr yn cael hyn yn digwydd eto ac eto.
Ac os wyf mewn gwirionedd Archwilio Elfen, gadewch i ni weld os allwn ni weld hyn.
Gadewch i mi Archwilio Elfen, gadewch i mi sgroliwch i lawr dim ond ychydig bach,
gadewch i mi ddewis Elfennau dros yma, ac yn sylwi ar y tu mewn DOM o Chrome arolygydd.
Mae'n llythrennol yn newid yn ôl ac ymlaen pob 500 milieiliadau.
Os awn at ein cyfaill Nate,
os ydych chi erioed wedi meddwl sut mae hyn yn gweithio, syniad tebyg gydag egwyl,
ond Nate mewn gwirionedd yn gwneud defnydd effeithiol iawn o liw yn yr achos penodol yma.
Felly gall yr hyn a mwy ydym yn ei wneud mewn gwirionedd â hyn?
Gadewch i ni agor enghraifft arall a rhoi cynnig ar rywbeth
dyna programmatically hyd yn oed yn fwy defnyddiol na gwneud pethau Blink.
Gadewch i mi fynd i mewn ein ffurflenni cyfeiriadur heddiw ac yn mynd i form0.
Dyma ffurf fwyaf salw bosibl y gallwn i ddod o hyd i,
a gadewch i mi yn unig yn dangos i chi sut mae'n edrych mewn porwr.
>> Gadewch i mi fynd i mewn i localhost / ffurflenni, ac mae hyn yn form0.
Mae hon yn ffurflen HTML super hyll sydd â rhai caeau gyfer e-bost, ar gyfer cyfrinair,
cyfrinair, ac yna blwch bach i gytuno i rai telerau ac amodau.
Mae'r dal yw os byddaf yn ymweld y ffurflen hon ac nid wyf yn dymuno rhoi i chi fy nghyfeiriad e-bost,
Nid wyf am i gytuno i'r telerau ac amodau efallai, gallaf glicio Cofrestru
ac mae'n gadael i mi drwy beth bynnag.
Mae hyn yn digwydd i gyflwyno i ffeil o'r enw PHP dwp dump.php.
Mae'r holl mae'n ei wneud yw argraffu'r cynnwys o $ _GET yn unig ar gyfer dibenion diagnostig.
Dyna oedd yr hyn a gyflwynwyd gan y defnyddiwr yn unig nawr.
Ond mae'n debyg yr ydym mewn gwirionedd am i ddilysu cyflwyniad ffurflen y defnyddiwr.
Gadewch i mi fynd i mewn i fersiwn 1.
Mae hyn yn form1.html. Mae'n edrych yn esthetaidd yr un mor ddrwg, ond sylwi pa mor ffansi ydyw.
Os cliciwch i'n Cofrestru heb gydweithio, i mi gael yelled.
"Rhaid i chi ddarparu eich cyfeiriad e-bost."
Mae pob hawl. Felly, gadewch i mi roi cynnig ar hynny. Felly malan@harvard.edu. Nid oes angen cyfrinair.
Cofrestru. "Rhaid i chi ddarparu cyfrinair." Mae pob hawl.
Felly, byddaf yn darparu cyfrinair rhuddgoch. Cofrestru.
"Nid yw'r cyfrineiriau'n cydweddu." Rhaid i mi nawr deipio i mewn yma rhuddgoch.
Yr wyf yn ddamweiniol gwirio hynny. Cofrestru.
"Mae'n rhaid i chi gytuno i'r telerau ac amodau." Mae pob hawl. Cytuno yno. Cofrestru.
Ac yn awr ei fod yn dangos 'm' r allbwn diagnostig dros yno.
>> Felly, beth ddigwyddodd yn unig?
Rydym wedi cael y gallu i ddilysu cyflwyniadau ffurflen.
Yn wir, os gwnaethoch chi blymio i mewn i pset 7, mae swyddogaeth yn ymddiheuro
sy'n ei gwneud yn eithaf hawdd i gweiddi ar y defnyddiwr gyda neges ar y sgrin.
Rwy'n defnyddio mecanwaith ychydig yn wahanol, mae'r swyddogaeth yn effro,
nad yw'n swyddogaeth sydd wedi gwenu arno gan ei fod yn gwneud negeseuon i ddefnyddwyr sy'n hyll iawn.
Ond gadewch i ni weld beth rwy'n ei wneud yma.
Mae hyn yn form1.html, ac yn sylwi fy mod yn cael rhywfaint o gystrawen 'n bert cyfarwydd:
, tag corff tag ffurflen, priodoledd gweithredu, priodoledd dull.
Ond sylwi wyf wedi rhoi fy ffurflen ID unigryw ar gyfer hwylustod.
Yna gen i faes e-bost y mae ei fath yn destun,
maes cyfrinair mae ei fath yn faes cyfrinair cadarnhau, y mae ei fath gan gyfrinair,
ac yna checkbox y mae ei enw yn gytundeb dros yma, math yn checkbox.
Ac yna mae gen i botwm cyflwyno.
Ond sylwi ar y brig beth arall sydd gen i.
Yn gyntaf oll, mae defnydd arall o'r tag sgript.
Os oes gennych rhywfaint o cod JavaScript mewn ffeil arall, yn union fel gyda CSS, gallwch ei gynnwys.
A ydych yn gwneud hynny gyda ffynhonnell sgript, ac yna sylwi rwy'n cysylltu pob golwg
i googleapis.com i lwybr hir iawn ond enw ffeil y mae ei dod i ben yn jquery.min
ar gyfer o leiaf. js.
jQuery yn llyfrgell poblogaidd super ar gyfer JavaScript mai dim ond yn gwneud JavaScript
yn oed yn fwy defnyddiwr-gyfeillgar i'w ddefnyddio.
Mae'n dod yn effeithiol o safon de facto.
Felly er bod yr hyn yr ydych chi ar fin i weld yn bur JavaScript per se,
ei bod yn llyfrgell ar ben JavaScript yn debyg iawn i'r llyfrgell CS50 yn haen
ar ben lefel isel C cod; y realiti yw bron pawb ar y Rhyngrwyd yn ei ddefnyddio.
Felly, nid yw'r rhain yn olwynion hyfforddiant. Mae hyn yn unig arfer gorau y dyddiau hyn.
Nawr sylwi isod dyna fy tag sgript ei hun, ac yn sylwi ar yr hyn yr wyf wedi ei wneud yma.
Mae'n troi allan bod jQuery gwneud rhywbeth ffansi bach.
JavaScript cynnwys arwyddion ddoler, ond maent yn ddiystyr.
>> Maent yn debyg y llythyren A neu B neu C.
jQuery wedi mabwysiadu'r yn syml y confensiwn neu math o hawliad osod at y ffaith
y bydd $ fydd eu symbol arbennig.
Felly, cyn gynted ag y byddwch yn llwytho'r ffeil JavaScript byd-eang i fyny yma gyda'r tag sgript,
oes gennych fynediad i'r newidyn byd-eang arbennig sy'n cael ei alw $.
Mae'n fwy priodol a elwir yn jQuery, ond nid yw hynny'n edrych yn bron mor sexy â $.
Ond $ oes unrhyw ystyr arbennig. Yn PHP oedd ystyr arbennig.
Roedd yn rhaid i gael o flaen newidyn.
Mae hyn yn unig yn beth sexy eu bod wedi cymryd ar.
Beth sy'n mynd ymlaen yma?
Hysbysiad Rwy'n mynd heibio i'r swyddogaeth jQuery fy nogfen byd-eang amrywiol
ac yna rwy'n galw. barod.
Pa jQuery yn ei hanfod yn ei wneud yw ei fod yn caniatáu i chi gymryd rhai pethau JavaScript fanila
fel y gwrthrych ddogfen, y gwrthrych ffenestr,
ac os byddwch yn ei throsglwyddo i mewn i'r swyddogaeth jQuery -
ac unwaith eto, i fod yn glir, mae hyn yn swyddogaeth a elwir yn jQuery -
beth mae'n ei wneud yw dychwelyd i chi fersiwn arbennig o ddogfen
sydd â mwy o ymarferoldeb sy'n gysylltiedig ag ef.
Felly, yn JavaScript amrwd, nid oes swyddogaeth barod,
ond os byddwch yn pasio dogfen i'r swyddogaeth jQuery yn gyntaf,
yn dychwelyd i chi fersiwn arbennig o'r gwrthrych ddogfen
sy'n meddu ar nodweddion ffansi mwy.
A dyna pam mae pobl yn ei hoffi. Mae'n gwneud pethau'n haws i'w wneud, gan ein bod am eu gweld.
Felly beth mae hyn yn llinell o god yn ei olygu?
Mae'r llinell o god yma yn golygu pan fydd y ddogfen yn barod -
mewn geiriau eraill, unwaith y bydd y porwr yn cael ei wneud darllen y ffeil top i'r gwaelod -
mynd yn ei flaen a gweithredu'r swyddogaeth ganlynol.
Yr hyn sy'n wirioneddol ddiddorol yn JavaScript - a PHP wedi hyn, yn ogystal -
yn ymdrin â swyddogaethau ddienw.
Yn JavaScript, gallwch ddatgan swyddogaethau nad oes ganddynt enw ond mae ganddynt gorff.
Sylwi ar yr hyn sy'n digwydd yma.
>> Mae hon yn swyddogaeth a elwir yn barod, a 'i jyst yn golygu gwneud y canlynol
pan fydd y dudalen we gyfan yn barod, pan mae popeth yn ei ddarllen i mewn o'r gweinydd.
Beth ydych chi eisiau ei wneud? Rwyf am i weithredu darn o god.
Sylwch fod nad ydym am i weithredu cod hwn ar unwaith.
Os byddaf yn hepgor hyn, byddai hyn yn golygu ar unwaith yn dechrau cyflawni y llinellau hyn o god.
Ond y ffaith fy mod i'n dweud na, na, na, lapio hyn mewn swyddogaeth anhysbys fel hyn
Nid yw dull yn ei gyflawni eto; alw yn y pen draw.
Gwelsom hyn funud yn ôl yn ein enghraifft o ffurflen flaenorol.
Pa swyddogaeth wnaethom ni galw yn y pen draw, 500 milieiliadau yn ddiweddarach? Blink.
Felly, yr un syniad.
Unwaith eto, hyd yn oed os yw hyn yn edrych ychydig yn rhyfedd, dim ond yn cymryd ar hyn o bryd ar ffydd
bod i ddatgan swyddogaeth dienw sy'n cael ei alw yn y pen draw,
rydych yn syml ysgrifennu swyddogaeth () {
Felly, pa god ydym yn mynd i weithredu yn y pen draw? Mae'r canlynol.
Mae hyn hefyd yn edrych yn bach newydd, ond mae hyn yn golygu dyma y swyddogaeth jQuery,
ac mae hyn yn awr yw llwybr byr.
Mae hyn yn snippet o HTML ar waelod y sgrin, wrth gwrs, rhywfaint o gynrychiolaeth coed.
Nid yw hwn. Mae'r dudalen hon yn fwy diddorol na hyn helo, byd enghraifft.
Ond mae rhywfaint o goed sy'n cyfateb i'r HTML.
Byddai'n fod yn boen yn y gwddf i gael i weithredu rhyw fath o swyddogaeth ailadroddus
i ddechrau yn y nod gwraidd ac yna dod o hyd i'r nod y mae ei adnabod yn cofrestru.
Felly beth jQuery gwneud super hawdd i ni yn llythrennol hyn.
Mynd yn ei flaen a chael i mi beth bynnag div neu ffurflen beth bynnag, beth bynnag HTML elfen
Mae ID cofrestru.
Mae hyn yn cyfateb i document.getElementById ('gofrestru').
>> Pam mae pobl yn hoffi jQuery?
Oherwydd ei fod yn fyrrach i deipio. Ond dyna i gyd ydyw. Mae yr un syniad.
Cael 'm' r tag ei ​​adnabod yn cofrestru.
A pan fydd y tag, sy'n digwydd i fod yn ffurf, yn cael ei gyflwyno,
fynd yn ei flaen a gweithredu cod hwn.
Felly, gadewch i ni gymryd un yn edrych yn awr ar sut rydym yn gwneud dilysu ffurflen.
Mae'r gystrawen yn cyfaddef cryptig ar y dechrau, ond beth sy'n mynd ymlaen?
Os bydd hyn yn llinell o god yn wir, yr wyf i'n mynd i gweiddi ar y defnyddiwr i ddarparu ei gyfeiriad e-bost.
Felly, beth yw y llinell hon o god?
$ Golygu jQuery. Nawr sylwi ar hyn.
Mae hyn yn fath o fel CSS.
Os ydych wedi syrthio i mewn i CSS eto, byddwch yn gwybod bod hyn yn golygu elfen y mae ei adnabod yn cofrestru.
Mae'r gofod yn golygu dod o hyd i blentyn neu un o ddisgynyddion cofrestru ei enw ei fewnbynnu.
Ac yna y peth hyn yn y sgwâr cromfachau yn hidlo ychydig.
A hyd yn oed os yw hyn yn edrych yn cryptic, mae hyn yn golygu mynd at y ffurflen y mae ei adnabod yn cofrestru,
mynd i'r mewnbwn y tu mewn elfen o'r ei enw yw e-bost,
ac yna yn cael ei werth, waeth beth fo'i werth yn digwydd i fod -
asdf os dyna'r cyfan yr wyf wedi'i deipio neu malan@harvard.edu os dyna beth yr wyf deipio.
Felly, os yw gwerth y maes e-bost y ffurflen i == ddim, gweiddi ar y defnyddiwr.
Arall os yw gwerth y maes cyfrinair == ddim, gweiddi ar y defnyddiwr.
>> Arall os yw gwerth y maes cyfrinair yn gyfartal â'r gwerth y maes gadarnhau,
sef yr elfen ffurf arall, gweiddi ar y defnyddiwr.
Ac yna yn olaf - ac mae hyn yn un hefyd rywfaint o gystrawen newydd ei hun,
ond unwaith y byddwch wedi ei weld, mae'n o leiaf ychydig yn fwy rhesymol -
arall os yw'r ffurflen y mae ei adnabod yn cofrestru Mae elfen mewnbwn y mae ei enw yn gytundeb
ac mae'n cael ei wirio, mynd yn ei flaen ac yn gweiddi ar y defnyddiwr.
Felly, yr wyf yn llwyr gyfaddef hyn yn gwbl llethol ar yr olwg gyntaf.
Mae'n llawer o gystrawen newydd. Ond mae pob un jQuery yn dilyn y mathau hyn o batrymau.
Ac yn onest, doeddwn i ddim hyd yn oed yn gwybod hyn yn bodoli hyd nes ychydig funudau yn ôl.
Googled I, "Sut ydych chi'n gwirio os yw blwch yn cael ei wirio yn jQuery?"
ac mae hyn yn y gystrawen, oherwydd mae gwahanol ffyrdd o wneud hynny
â chod JavaScript gwirioneddol amrwd.
Felly, fel y dudalen cyntaf o 7 Set Problem pwysleisio,
pset 7 yn fawr iawn yn ymarfer mewn bootstrapping eich hun
lle'r ydym wedi darparu, gobeithio, fframwaith cysyniadol i'w defnyddio i fynd i'r afael â'r pset.
>> Ond, fel sy'n digwydd yn aml gyda dylunio ar y we, mae i fyny i chi mewn gwirionedd i chwilota o amgylch,
ymgorffori pytiau o god ac enghreifftiau o'r we cyn belled â'ch bod yn eu dyfynnu
unol â'r telerau ar y ddalen gyntaf,
ac yn sylweddoli bod dysgu HTML, CSS, JavaScript a hyd yn oed SQL
ei olygu mewn gwirionedd i fod yn yr ymarfer hwn yn y cartref wrth i ni ddechrau cymryd y olwynion hyfforddiant i ffwrdd.
Ac yn sylweddoli hefyd mae cymaint o bethau arall y gallwch ei wneud gyda porwr.
Y tu mewn y rhan fwyaf o'r elfennau hyn mae yna bethau eraill a elwir yn trin y digwyddiad.
A hyd yn oed er ein bod dim ond yn edrych ar rai o'r enw onsubmit a onready,
gallwch wneud pethau fel onkeydown, onkeyup,
fel pan fydd y defnyddiwr yn cyffwrdd allweddol, gallwch wrando am hynny ac i fyny allweddol.
Gmail llwybrau byr bysellfwrdd.
Sut mae Google yn gweithredu allweddell shortcuts fel C ar gyfer cyfansoddi?
Maent yn gwrando ar gyfer digwyddiadau, gan eu bod yn galw, fel onkeypress neu onkeyup a onkeydown.
Os ydych wedi erioed ehededig eich llygoden dros rai ddewislen
ac yn sydyn, voila, dewislen yn ymddangos, neu y lliw newidiadau graffig,
sut maen nhw'n gwneud hynny?
Yn hytrach na gwrando am onready neu onsubmit, byddwch yn gwrando am onmouseover neu onmouseout.
>> Felly, yn fyr, gyda'r rhain yn sylfaenol syml iawn ein bod wedi dechrau crafu wyneb heddiw
a byddwn yn plymio yn bellach i ddydd Mercher, mae gennych, yn gynyddol,
pŵer i weithredu y mathau o bethau yr ydych chi eisoes yn gyfarwydd â hwy.
Felly, gadewch i ni dod i ben yno, a byddwn yn parhau â hyn ddydd Mercher.
>> [CS50.TV]