[CHWARAE CERDDORIAETH] DAVID Malan: Mae hwn yn CS50, ac mae hyn yn ddechrau wythnos wyth. Ac rydym yn edrych ymlaen felly i groesawu yn ôl, syndod mawr, Ramon CS50 ei hun Galvan, uwch yn codi sydd wedi bod gwario'r sawl mis diwethaf ers mis Gorffennaf yn LA, yn Hollywood, yn llythrennol yn gweithio ar deledu newydd sbon sioe o'r enw Colony, y crëwr ohonynt mewn gwirionedd yn alum Harvard ei hun. Ac felly rydym yn gyffrous iawn i weld hyn ymddangosiad cyntaf ar y rhwydwaith UDA mis Ionawr. Felly aros diwnio ar gyfer hynny, ac ar gyfer mwy o Ramon ar gyfer yr wythnosau i ddod. Gwybod nawr bod y diwedd yn agos. A beth mae hyn yn golygu yw nad oes i gyd bod llawer ar ôl o CS50, drist i ddweud. Rydym wedi dim ond tri broblem setiau left-- mae ' problem a osodwyd six-- sydd yn eich dwylo yn awr neu yn fuan, sy'n ddyledus yn ddiweddarach yn y week-- i fod i bontio'r ein bydoedd o'r llinell orchymyn, lle rydym wedi treulio'r rhan fwyaf o'n hamser yn defnyddio C, a byd rhaglennu we. Wel, byddwch yn gweld llawer o syniadau fenthycwyd gan y gwaith archa bannod, ond hefyd llawer o newydd a syniadau diddorol sydd hefyd yn mynd i fod germane am cymwysiadau symudol ac ar gyfer technoleg, yn fwy cyffredinol, gyda yr ydych guys i gyd yn gyfarwydd dyddiau hyn ar gliniaduron a ffonau ac yn y blaen. Felly, byddwch yn rhoi ar waith nad tudalen ar y we, neu wefan fel y cyfryw, ond yn weinydd y we gwirioneddol. Byddwch yn ysgrifennu gweddill weinydd y we a ysgrifennwyd yn C, y mae ei bwrpas mewn bywyd yw derbyn ceisiadau HTTP, y rhai amlenni rhithwir byddwn yn cadw siarad am, ac mewn gwirionedd yn ymateb naill ai gyda rhai content-- statig fel dot HTML ffeil, neu JPEG dot neu unrhyw nifer arall o ffeiliau, neu hyd yn oed ffeil PHP lle eich gwe gweinydd yn mynd i ddehongli bod PHP cod a boeri allan y canlyniadau. Nawr, rydym wedi darparu chi gyda cryn dipyn o fframwaith i iddo-- yn wir y cod dosbarthu ar gyfer problem osod chwech yn fwy na 1,000 llinellau hir, a llawer o sydd yn sylwadau, i fod yn fair-- ond mae hyn yn ei olygu mewn gwirionedd i fod yn gyfle i gael eich dwylo budr deifio yn brosiect eithaf mawr yr ydym wedi benodol iawn cerfio allan darnau o ar eich rhan, fel bod yn wir pan fyddwch yn gadael CS50 a mynd i mewn i'r byd go iawn o raglenni ac yn awyddus i dabble mewn unrhyw nifer o brosiectau, bydd yn rhaid i llawer mwy i chi cysur lawrlwytho rhywfaint o ffynhonnell cod, mae rhai ffynhonnell agored prosiect ar y we, a deifio mewn a gwneud newidiadau yr ydych yn gweld yn dda. Problem yn gosod saith yn mynd i fod am gwneud eich cais ar y we eich hun sy'n cymryd mewnbwn deinamig a yn cynhyrchu allbwn deinamig yn y ffurflen gwefan etrade.com-debyg. Ac broblem a osodwyd Bydd wyth canolbwyntio ar eto iaith arall a elwir yn JavaScript. Yn y cyfamser, y rownd derfynol prosiect ar y gorwel. Mae'r hyn a elwir yn cyn-cais yn ddyledus wythnos o heddiw ymlaen. Cyn-proposal-- unol â'r fanyleb, sydd ar website-- CS50 yn yn gyfle eithaf achlysurol ar gyfer i chi anfon e-bost 'n bert gryno at eich cyd-addysgu dim ond i roi gwybod iddo neu hi o'r hyn yr ydych yn meddwl, i defnyddiwch ef neu hi fel seinfwrdd. Ac mae ganddynt bwyll check-- p'un a ydych yn meddwl am brathu i ffwrdd yn rhy llawer neu efallai rhy ychydig, neu efallai nad oes gennych syniad o gwbl ac yn awyddus i gymryd rhan mewn sgwrs. Wedi hynny yn gynnig ac adroddiad statws, y CS50 hackathon hyn a elwir yma yn Caergrawnt ar gyfer myfyrwyr Harvard a Yale fel ei gilydd. Mae'r prosiect terfynol yn gweithredu wedyn ddyledus. Ac yna ffair CS50 yma, yng Nghaergrawnt, yn ogystal ag un arall yn New Haven. Felly y cynnig, yn edrych ar y wefan ar gyfer manylion hynny. Ond yn fwy cyffrous, hefyd, yn cyfle i gael eich dwylo budr, a bod eich meddyliau yn agored i gyfanrwydd criw o bynciau ac offer a'r technegau sy'n ategol i maes llafur craidd y cwrs, ond cysylltiedig serch hynny. A hefyd cerrig camu wych gwneud prosiectau terfynol 'n sylweddol oera sy'n mynd ymhell y tu hwnt ddeunydd rydym wedi cynnwys yn ffurfiol yn broblem yn gosod neu yn y ddarlith. Felly ewch at wefan CS50 ar gyfer y roster cyfan o seminarau. Os nad ydych yn cofrestru eto, mae hynny'n iawn. Mynd yn ei flaen ac yn ymuno o hyd ac fe fyddwn ni'n dilyn i fyny gyda dolen ffrydio byw, y dydd a'r amser ar y wefan. A bydd popeth yn cofnodi a rhoi ar-lein os na allwch wneud y dyddiau ac amseroedd penodol. O ran yr hyn sydd o'n blaenau thereafter-- dda, wrth gwrs, mae y hackathon CS50. Mae'r llun, galw i gof, o wythnos sero cymryd tua 4 AC mewn un noson yn ystod y blynyddoedd diwethaf. Mae'r ffair CS50, sydd unwaith eto yn cael ei gynnal yn y ddwy ddinas. Ac yna, dim ond i blannu'r hadau, er ein bod yn dal i cael y mis a mwy ar ôl o semester, os hoffech chi ymuno â dysgu CS50 ei hun staff, ac rydych am ddechrau meddwl am ddod yn CA, neu gyd-addysgu, yn gwybod bod byddwn yn dechrau siarad mwy am hynny yn ddiweddarach semester hwn. Ond yn y llun yma yw y rhan fwyaf o'r tîm eleni. Ac felly, PHP-- ac roeddwn i mor drist yr wythnos diwethaf fod [? Allyse?] Garedig mynd i'r ymdrech o gael ni hyn props hyfryd nad oeddwn yn y pen draw gan ddefnyddio, felly mae'n gwirionedd dim ond yn edrych fath o dwp ein bod wedi rhaw eistedd yma i gyd Diwrnod ddydd Mercher diwethaf, ac ychydig llwy. Ond roedd hyn yn fy metaphoric ffordd o geisio paentio y darlun o pam ein bod yn trawsnewid o C i iaith fel PHP. A gallai yr un peth yn wir am unrhyw nifer o Java languages--, Python, Ruby neu tusw o others-- ond tra yn C, er enghraifft, ysgrifennu rhaglen yn C Efallai fod fel arfer yn cymryd llwy fel hyn a chloddio twll yn y ddaear, yn y tywod neu'r baw. PHP yn caniatáu i chi gymryd llawer brathiadau mwy allan o'r broblem, ysgrifennu llawer llai cod ddefnyddio offeryn llawer llai, oherwydd mae cymaint mwy ymarferoldeb pieced yn. Yn awr, pe baem yn wir yn ddramatig, byddem yn rywbeth i'w rhaw yma, ond felly y bo. Yn y cyfamser, y llall trosiad daethom o hyd i yw, wrth gwrs, fe allech chi yn defnyddio rhywbeth fel wrench i morthwyl mewn rhywbeth fel hoelen. Ond wrth gwrs, yr hawl offeryn i ddefnydd yn mynd i fod nid yn gymaint y iaith o'r enw C-- ac yn awr Fi jyst yn flin [? Sanders,?] Yn ôl pob tebyg, byddwn yn atgyweiria bod later-- felly yr offeryn hawl i ddefnyddio yn aml Nid yn mynd i fod yr offeryn lefel isaf. Ac yn wir, nid yw C yn iaith y y rhan fwyaf ohonoch yn mynd erioed i'w defnyddio, neu a ddylai ddefnyddio reidrwydd eto. Ac yn wir, ychydig secret-- yr unig dro Rwy'n defnyddio fy hun C 'n bert lawer rhwng Medi a Rhagfyr bob cwymp semester. A dyna oherwydd ein ei ddefnyddio fel cyfle i ddysgu hanfodion o raglennu, a gydag ef chyfrifiadur hanfodion gwyddoniaeth, data strwythurau, algorithmau a like-- ond yn gyflym iawn byddwch yn gweld nawr bod y gystrawen ac mae'r syniadau sy'n sail i C mor rhyfeddol drosglwyddadwy i mwy modern ieithoedd lefel uwch, fel PHP a Python a Perl a Java ac Amcan-C-- mewn gwirionedd, nid yn gymaint Amcan-C-- ond Swift, mae'r rhain yn fwy newydd ieithoedd y mae llawer ohonoch fydd Yna dabble gyda phrosiect terfynol i chi. Felly, heb ado pellach, gadewch i ni mewn gwirionedd yn defnyddio PHP i ddatrys rhai problemau. Dwyn i gof bod yn gynnar, olaf wythnos, rydym yn unig a ddefnyddir CS50 IDE, rydym yn ysgrifennu rhaglen bach Dinky mai dim ond dweud, "Helo byd." Ac yna yr wyf yn achub mewn ffeil o'r enw hello.php. Ac yna yr wyf yn rhedeg y gorchymyn yma. A pham? Yn Saesneg, beth sy'n mynd ymlaen fan hyn? Beth oedd yr wyf yn ei wneud pan Rhedais gorchymyn hwn? Yeah? GYNULLEIDFA: Mae rhywfaint o PHP swyddogaeth sy'n darllen beth sy'n in-- deall bod. DAVID Malan: Da, mae rhywfaint o swyddogaeth PHP-- a gadewch i mi fod yn fwy penodol, mae rhaglen o'r enw PHP, a.k.a. Cyfieithydd ar y pryd, sy'n deall cynnwys y hello.php, ac mae'n ei ddehongli top i gwaelod, o'r chwith i'r dde, ac yn gwneud yr hyn gorchmynion rhai ddweud. Mae'r gorchmynion yn hello.php, wrth gwrs, yn unig yw ffynhonnell code-- swyddogaethau a newidynnau a dolenni a yn y blaen, yr ydym ni ein hunain wedi dechrau ysgrifennu mewn PHP. Ond yn wahanol i C, sef iaith llunio, PHP 'ch jyst ysgrifennu, a'i redeg. Allwch chi hepgor y cam middleman o trosi i zeros a rhai, ac yna rhedeg. Ac felly beth yw upside o hyn? Pam yr ydym yn sgipio y cam? Pam mae ieithoedd mwy modern yn tueddu i hepgor y cam hwn? Beth oedd y budd-dal? Neu dim ond reddfol? Hyd yn oed os nad ydym i wedi ysgrifennu llawer PHP o'r blaen, beth sy'n fuddiol am beidio â llunio eich cod yn eich barn chi? Na? Ddim yn ymrwymo? Crafu eich pen? Yeah. GYNULLEIDFA: Mwy deinamig. DAVID Malan: Mwy deinamig? Beth wyt ti'n meddwl? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Iawn, da, felly yn dibynnu ar y mewnbwn, Nid oes rhaid i chi lunio ei bob tro. Ac y mae mewn gwirionedd fel syml â that-- beth yw'r pwynt o barhau i lunio eich cod? Mae hyn yn unig yn gam sy'n making-- mae hyn yn ei gwneud yn ofynnol, am y gorffennol nifer o wythnosau, dwywaith cymaint o gamau fel dim ond yn rhedeg eich rhaglen. Mae wedi bod yn ddefnyddiol o ran gweld bod chi gweld rhai negeseuon gwall ac yn y blaen, ond mae'n dal i fod yn unig yn gam blino. Ac felly rhaglenwyr gwireddu dros gyfnod o amser, beth am yr ydym yn dechrau ysgrifennu ieithoedd nad ydynt Mae angen y cam eithaf mecanyddol, fel y gall dim ond ysgrifennu eich cod a'i redeg. Ond beth oedd y pris ein bod yn welsom talu yr wythnos diwethaf, gydag un enghraifft benodol? Do? Cyflymder. Felly [? beth sydd] dehonglwyr? ychydig yn arafach, yn y zeros a rhai yn neis ac yn gyflym ar gyfer cyfrifiadur i ddeall, gan fod y Intel CPU, neu beth bynnag ydyw, dim ond yn deall beth sy'n mynd ymlaen gyda phatrymau rhai o ddarnau. Tra cyfieithydd yn rhaglen sydd wir yn Mae i ddarllen y ffynhonnell ASCII cod eich bod wedi ysgrifennu, ac yn ei addasu, fel petai, neu chyfrif i maes sut y mae'n trosi yn y pen draw i zeros a rhai. Felly mae'n cymryd dim ond ychydig dipyn o daro perfformiad. Felly mae'n dipyn o fasnach-off. Nawr, os ydym yn gwneud hyn dros yma, gadewch i mi mynd yn ei flaen a gwneud esiampl fel a ganlyn. Os byddaf yn mynd i mewn yma, ffeiliau newydd, dw i'n mynd i achub mae hyn eto yn hello.php. Ac yn awr rwy'n mynd i fynd yn ei flaen a dweud, "print helo byd" - a dwyn i gof y gallaf eu defnyddio print, nid wyf yn ei wneud gorfod defnyddio print-F. Ac yn awr i lawr yma, os wyf yn gwneud PHP o hello.php, yr wyf yn huh-- nid yw'n ymddangos i wedi dehongli iddo. Beth wnes i ei wneud o'i le? GYNULLEIDFA: Y breichledau onglog. DAVID Malan: Yeah, mae angen i chi y top ongl braced fyny. Felly mae'n fath o blino, ond chi ddod i arfer ag ef yn gyflym. Os oes rhaid i mi ysgrifennu cod PHP, yr wyf yn Yn gyffredinol, mae angen i ddweud wrth y rhaglen, neu ddweud wrth y cyfieithydd, hey PHP, yma hon rhywfaint cod PHP. Ac yna ar gyfer mesur da, fyddwn i gau'r hyn nid gyda hyn, ond yn hytrach gyda chwestiwn dim ond ongl marc braced, fel bod yn awr i lawr yma, os wyf yn rhedeg hyn eto, yn awr Yr wyf yn cael y canlyniad a ddymunir. Nawr, gadewch i ni wneud bychan Optimization, yn union fel eich bod wedi ei weld o'r blaen. Mae hyn yn fath o blino fy mod rhaid i redeg hello.php gofod PHP, oherwydd yn y gorffennol yr wyf yn Gallai dim ond ysgrifennu dot slaes enw rhaglen, sydd yn fath o 'n glws. Mae'n fath o brofiad y defnyddiwr yn well. Felly, mae'n troi allan y gallwch wneud hyn yn PHP gyda'r wyf canlynol-- Gall defnyddio hyn yn deg cryptig incantation ar y brig yma, a elwir yn gyffredinol yn shebang, lle mae hyn yn symbol miniog, fel petai, mae hwn yn bang neu ebychnod. Ac mae hyn yn awr yw y llwybr i raglen ar system Linux nodweddiadol sy'n yn cael ei alw'n amgylchedd, neu env. Ac mae hyn line-- stori hir un llinell short-- yn unig yn dweud, hey cyfrifiadur, dod o hyd i'r PHP cyfieithydd i mi yn yr amgylchedd, yn ei chael yn yn eich cof, fel petai. A beth braf yn awr, yn cael ei os byddaf yn mynd i lawr fan hyn, Gallaf ei wneud dot slaes helo dot php, or-- hmm. Caniatâd gwadu. Wel, byddwch yn gweld hyd yn oed mwy o hyn gyda phroblem yn gosod saith, os ydych wedi gwneud hynny'n barod, gyda chaniatâd. Mae'n ymddangos bod angen i mi i weithredu gorchymyn yma Gelwir [? chamod?] ar gyfer newid mode-- yn fantais x hello.php. Angen i mi [Anghlywadwy] yr un yma ychwanegol cam sydd yn dweud fy nghyfrifiadur, gwneud gweithredadwy hello.php. Ac yn awr gwylio beth happens-- dot slaes hello.php, 'i jyst yn rhedeg. Nid oes angen imi nodi y cyfieithydd anymore. Ac yr wyf yn ei gwneud yn hyd yn oed yn prettier, o hyd, os wyf yn ail-enwi y peth hyn. Os byddaf yn symud hello.php i ddim ond Hello-- felly yn sylwi yn y chwith uchaf, enw'r rhaglen yw yn wir, yn awr yn unig Helo. Nawr gallaf ei gwneud yn edrych fel rhaglen C, hyd yn oed er 'i' ysgrifennu yn PHP-- neu dweud y gwir unrhyw nifer ieithoedd eraill. Felly gwella ymylol, dim gwahaniaeth swyddogaethol. Ond mae'n dim ond ychydig chwilfrydedd yn awr, fel y gallwch ysgrifennu rhaglenni mewn unrhyw iaith, ac nad yw'r defnyddiwr yn gwneud rhaid i gwybod neu'n poeni beth hynny. Wel, gadewch i ni edrych ar fwy Enghraifft cymhellol yn awr fy mod yn chwipio i fyny o flaen llaw. A gelwir hyn yn quote.php. Ac mae'n ar gael ar-lein. Ac yn sylwi ei bod yn eithaf short-- ond ei fod yn rhaglen llinell gorchymyn sy'n mynd i edrych i fyny prisiau stoc i mi, sydd yn mynd mewn gwirionedd i fod yn germane i broblem a osodwyd saith. Felly, gadewch i ni weld beth rwy'n ei wneud. Ar y brig mae gen y braced agored PHP marc cwestiwn. Yna mae gen y llinell hon, lle yr wyf ei gwneud yn ofynnol ffeil o'r enw functions.php-- rydyn ni'n mynd i weld mwy am hyn yn ychydig, ond mae hyn yn debyg C fersiwn miniog yn cynnwys, lle rydych eisiau mynd yn cynnwys ffeil arall. PHP yn galw yn ei gwneud yn ofynnol, er ei fod hefyd yn cael cynnwys swyddogaeth. Ac mae'n troi allan y function.php yn dim ond rhywbeth Ysgrifennais cyn y dosbarth. Wyf yn ei roi yn yr un cyfeiriadur, oherwydd Roeddwn i eisiau ffactor rhai cod y gallem eisiau ei ddefnyddio mewn mannau eraill. Yn y cyfamser, mae'n debyg y gallwch casglu yr hyn sy'n digwydd yma. Mae hyn yn ychydig yn wahanol i C-- ond beth ddylwn i ei olygu wrth sicrhau defnydd priodol? Drosi hyn yn fwy technegol. O dan ba amgylchiadau ydw i'n rhoi'r gorau iddi y rhaglen, neu sy'n gadael? Yeah? GYNULLEIDFA: Pan nad oes gennych dwy ddadl llinell orchymyn. DAVID Malan: Pan nad oes gennyf i fynnu dadleuon llinell. A chofiwch mai un o'r rheini dadleuon yw enw'r rhaglen ei hun. A'r ail yn mynd i fod gair arall yr wyf yn teipio ar ôl yr anogwr. Felly yn union fel C, mae hyn yn yw fy ffordd o wirio, oedd y defnyddiwr yn cydweithredu a rhedeg y rhaglen wrth i mi bwriadwyd? Yn awr, mae rhywbeth ychydig yn wahanol gyda C-- yn gyntaf oll i ni cael y arwydd doler, a'r hyn nad doler llofnodi ddynodi yn PHP? Dim ond amrywiol. Dyna all-- unig newidyn ddilyn gan beth bynnag y dymunwch i mewn gwirionedd yn ei alw. Hysbysiad yna rywbeth ar goll o fy rhaglen PHP, yn union fel yr oedd ar goll ddiwethaf wythnos, yn erbyn C, sef yr hyn? Mae math, ond hefyd yn rhywbeth arall. Nid oes rhywbeth function-- brif swyddogaeth. Does dim prif swyddogaeth. Rydych yn unig yn dechrau ysgrifennu eich cod heb orfod i chi boeni am gweddol mympwyol confensiwn o enwi rhai diofyn prif swyddogaeth. Felly arg C yn unig mewn gwirionedd newidyn byd-eang bod y cyfieithydd yn gwneud ar gael i mi. Yn awr, mae hyn yn ddiddorol. Felly edrych i fyny stwff. Stoc arwydd Doler ar y chwith, dyna fy amrywiol. Ar yr ochr dde, mae pob golwg swyddogaeth yn PHP a elwir yn am-edrych sy'n Rydw i'n pasio fy llinell gorchymyn diwethaf dadl canlynol-- beth bynnag yw'r gair. A byddwn yn gweld sut mae hyn yn gweithio mewn munud. Ac yna yn olaf i ddim yn gwybod am y pris. Dw i'n argraffu un gyfran o fath ac o'r fath. A chofiwch, mae hyn yn y ffordd PHP-- ffordd yn PHP-- lle nad oes rhaid i chi ei wneud yr arwydd doler S anymore. Alli jyst ddefnyddio braces cyrliog a plwg yn rhai amrywiol. Nid oes rhaid i chi boeni am gan ddefnyddio printf yn yr un modd. Ac wrth fynd heibio, pan fyddwch yn rhoi newidyn tu mewn dyfynodau dwbl fel hyn, ydych yn defnyddio techneg ffansi Gelwir rhyngosod amrywiol. Mae'n jyst yn golygu plwg y newidyn yn fan hyn. Ac wrth fynd heibio, mae rhai ohonoch chi sy'n dod o gefndiroedd rhaglenni eraill, efallai na fyddwch yn defnyddio dyfynodau sengl o gwmpas llinynnau i wneud hyn. Rhaid i chi ddefnyddio dyfynodau dwbl ar gyfer rhyngosod amrywiol i weithio. Fel arall, wnewch chi helpu yn llythrennol gweld braces cyrliog hynny. Felly yn olaf, gadewch i ni fynd yn ei flaen ac yn rhedeg hyn. Gadewch imi wneud fy terfynell ychydig yn fwy. Gadewch i mi fynd yn ei flaen ac yn rhedeg tu mewn fy dyfyniad cyfeiriadur. [? CDsource?] [? AC?] [? dyfyniad?] dyfyniad PHP dot PHP, ac yr wyf i'n mynd i chwilio am rywbeth fel GOOG, sef ei symbol Ticker, ac un gyfran o ei enw newydd, Wyddor Inc, yn costio $ 717, fel y heddiw. Mae pob hawl, os ydym am rhedeg hyn eto, bydd unrhyw un wedi stoc Ticker arall maent yn awyddus i edrych i fyny? Microsoft yn fy marn i yr un yma, MSFT-- $ 53. Yr wyf yn meddwl Yahoo yw efallai hynny. A Facebook yw bod. Felly beth yw rhaglen hon yn ei wneud? Ymddengys fod y hud i gael eu hymgorffori yn y swyddogaeth honno am-edrych. Felly gadewch i ni edrych yn sydyn. Mae'n troi allan nad yw'n dod gyda PHP, 'i' yn functions.php. Ac ni fyddwn yn mynd drwy mae hyn yn fanwl iawn, ond sylwi ar y gair operative yma yw hynny ar-lein chwech o functions.php-- Yr wyf yn llythrennol yn dweud swyddogaeth. Yr wyf yn nodi enw fy swyddogaeth. Yna nodi unrhyw dadleuon, neu baramedrau, Rwyf am swyddogaeth honno i take-- unrhyw fath. Ac yna yr wyf yn rhoi ar waith. A byddaf chwifio fy llaw yn y gweithredu, gan ei fod yn iawn yn eithaf datblygedig erbyn hyn, ond byddwn yn ei weld eto mewn gwirionedd mewn wythnos yn broblem a osodwyd saith. Ond gallaf lanhau hyn i fyny, hefyd. Rwyf hefyd yn cynnwys yn Cod heddiw fersiwn o dyfyniad, sydd heb unrhyw ffeil dot PHP. Gan fod yr hyn sydd yn ôl pob tebyg yn y ben y rhaglen o'r enw yn unig ddyfynnu? Mae hynny fel y'i gelwir shebang-- y incantation eithaf cryptig sy'n dweud yn dod o hyd PHP ac yna redeg ar fy cod yma. Mae pob hawl, fel bod yn dod â ni i lle'r ydym yn gadael i ffwrdd adeg-- diwethaf er gyda rhai enghreifftiau mwy datblygedig. Unrhyw gwestiynau hyd yn hyn am PHP neu beth rydym yn ei wneud? No-- iawn. Yeah? GYNULLEIDFA: Y tu mewn i'r Ffeiliau HTML, a oes you-- [? a ydych chi?] [? dim ond yn ei alw?] mae [Anghlywadwy] ffeil PHP? DAVID Malan: Cwestiwn da. Mewn cyd-destun y we, yr ydym ni'n yn llythrennol ar fin newid i, nad ydych yn defnyddio hyn a elwir yn shebang ar y brig, oherwydd bod y server-- we yn aml yn rhaglen o'r enw Apache neu Microsoft IIS, Gwybodaeth Rhyngrwyd Server, neu unrhyw nifer o feddalwedd weinydd gwe eraill, yn gwybod bod pan y gwêl ffeil dot PHP, ei fod yn Dylai rhedeg y cyfieithydd arno. Nid yw'n edrych ar y llinell gyntaf. Felly mae hyn castia llinell gyntaf yn unig pan fyddwch chi'n ysgrifennu llinell gorchymyn programs-- lle na fyddwn yn ei wneud super aml, ond mae'n ein ffordd o bontio ein enghreifftiau C yn hyn mae ein PHP. Felly gadewch i ni yn wir pontio'r byd hwn o fyd llinell orchymyn i'r we drwy wneud y canlynol. Gadewch i mi fynd yn ei flaen ac yn tynnu dros yma am ychydig funudau'n. Felly, os oes gennym weinydd y we, neu yn hytrach os oes gennym fy ngliniadur dros yma, y byddaf yn tynnu fel hyn. A dyma mae gennym y rhyngrwyd yn ryw fath. Ac yna dros yma, mae gennym weinydd mewn building-- dyma sut mae'r rhyngrwyd works-- ac i mewn yma yn weinydd gyda rhai goleuadau efallai. Beth sy'n digwydd mewn gwirionedd rhwng y ddau gysylltiadau? Felly, yn yr adeilad hwn yn weinydd y we. Dyna dim ond cyfrifiadur sy'n rhedeg rhai gweithredu system, efallai y feddalwedd am ddim o'r enw Apache, a CS50 IDE yn rhedeg. Felly gallwch mewn gwirionedd meddwl yr adeilad hwn fel yr adeilad yn sydd CSt0 IDE yn cael ei storio. Dyna lle pob un ohonoch wedi cyfrifon, lle mae pob un ohonoch cael eich gweinydd gwe eich hun rhedeg, bob un ohonoch cael eich URLs unigryw eu hunain, wrth i ni ddechrau trafod, a byddwch yn gweld mwy yn P. gosod chwech. Dyma fy ngliniadur yn rhywle arall ar y rhyngrwyd. Ac felly pan fyddaf yn ymweld â URL sy'n perthyn i mi, bod traffig ar y rhyngrwyd yn mynd dros at 'r gweinyddwr, y gweinydd derbyn HTTP request-- fel cael index.html ac mae'n ymateb i hynny dudalen we. Felly dyna y patrwm cyffredinol. Tra bod popeth i fyny hyd yn hyn heddiw, mae popeth oedd yn digwydd yn unig yn y cyfyngiadau adeilad hwn. Roeddwn yn defnyddio fy laptop, ond Roeddwn yn gysylltiedig â CS50 IDE, felly pob un o'r rhaglenni hynny Roeddwn yn rhedeg Roedd tu mewn y gweinydd, ei hun. Ond yn awr, gadewch i ni ddechrau ailddefnyddio PHP i ysgrifennu rhai rhaglenni gwirioneddol y yn cael eu gwasanaethu gan weinydd y we. Ac i wneud hyn, dw i'n mynd i fynd i mewn i criw cyfan o enghreifftiau sy'n cyflwyno syniad hwn yma. Felly, mae hyn yn fath o ffordd ffansi o yn disgrifio patrwm rhaglennu. Ac yn wir, wrth i chi adael CS50 neu weithio ar brosiectau terfynol, neu gymryd rhai dilyn ar y dosbarth, byddwch yn dechrau gweld bod y world-- yn enwedig ar ôl tyfu i fyny gydag ieithoedd fel C sy'n level-- super isel sylweddoli fod yna well ffyrdd o feddalwedd ysgrifennu. Mae rhai batrymau gallwch eu dilyn, ffyrdd penodol o drefnu eich ffeiliau a ffyrdd o enwi eich swyddogaethau, fel bod stori hir yn fyr, mae'r byd wedi dod i fyny gyda criw cyfan o acronymau ac enwau am ffyrdd o raglennu. Yn unig yw'r rhain dechnegau y gallech eu defnyddio. A galwodd un ohonynt yn MVC, ar gyfer Model View Rheolwr. Ac mae hyn yn unig yw, ar gyfer Erbyn hyn, mae cymhleth rhy ffordd o ddweud sut y dylech osod allan gwefan sy'n seiliedig ar PHP-, yn ein hachos ni. Sut ydych chi'n trefnu eich ffeiliau, sut ydych chi'n trefnu eich rhesymeg, mewn ffordd sy'n ei gwneud yn haws i ysgrifennu gwefannau mwy cymhleth? Ac yn wir, yr ydym annhymerus 'yn gyflym gyrraedd yno gyda p-set saith. Felly, yn y byd o MVC, rydych yn mynd i weld bod ein cod all gyffredinol gael ei nodweddu fel naill ai cod enghreifftiol, neu god rheolwr, neu edrych ar cod. Ac yr wyf i'n mynd i gorsymleiddio'r fel follows-- y rheolwr yw'r ymennydd eich rhaglen, 'i' ble pob un o'r rhesymeg diddorol yn digwydd. Felly popeth yr ydym wedi bod ysgrifennu hyd yn hyn yn y dosbarth, yn fath o fel rheolwr code-- mae'n rheoli eich rhaglen, eich dolenni, eich amodau, eich swyddogaethau a newidynnau a hynny i gyd. Barn, yn awr, yn mynd i fod ychydig yn mwy amlwg ym myd y we. Golygfa yw'r estheteg ar eich gwefan. Dyma'r hyn y mae'r defnyddiwr yn sees-- y delweddau, y tablau HTML, y tagiau HTML, a phob o hynny, pob un o'r esthetig blewog pethau nad yw'n sy'n anodd i ysgrifennu, ond yn unig yw hyn yr ydych yn cynhyrchu, yw barn fel y'i gelwir, estheteg. A model, yn y pen draw, yn mynd i fod yn stuff-- cronfa ddata sy'n byddwn yn dechrau plymio i mewn i bob po fwyaf ddydd Mercher. Felly rheolwr yw'r rhesymeg, farn yw y pethau esthetig, a model yn mynd i fod lle rydym yn storio ein data gwirioneddol. Felly gadewch i ni edrych ar hyn yn fwy diriaethol gyda'r enghraifft ganlynol. Rydw i'n mynd i fynd i mewn i fy cyfeiriadur yma o ffynhonnell heddiw code-- pob un ohonynt ar gael ar-lein. Ac yr wyf i'n mynd i fynd i mewn i fersiwn sero. Ac yma yw-- gadewch i ni ei alw yn Fersiwn sero gwefan CS50 yn. Does dim llawer yma o gwbl. Mae'n syml iawn dudalen we sy'n yn ôl pob tebyg gan ddefnyddio'r hyn HTML tags-- unig dyfalu o enghreifftiau yn y gorffennol? Beth yw hwnna? H1-- am hynny beiddgar mawr yn ôl pob tebyg teitl, y logo i fyny top, CS50. A beth arall sydd wrth chwarae? Yeah? GYNULLEIDFA: Rhestr heb drefn. DAVID Malan: list-- heb drefn felly mae'r UL tag ac efallai ychydig o tagiau LI. Ac os nad ydych yn cofio hyn, nid yw o bwys yn onest. Mae'r rhain yn fath ysgafn o Manylion gweithredu HTML eich bod yn gyflym edrych i fyny ac eich bod yn ôl ar eich ffordd. Byddwn yn canolbwyntio mwy ar y rhaglenni syniadau sy'n darnau juicier. Felly, gadewch i jyst yn cymryd cyflym edrych ar y HTML-- ac yn wir os wyf yn agor y farn ffynhonnell yma, yup, dyna'n union beth sy'n mynd ymlaen fan hyn. Mae tag UL. Nythu y tu mewn o hynny yw tagiau LI. Ac yna yr wyf yn benthyg y URL y maes llafur ei hun yma. Ac yna yn y lectures.php yn ôl pob golwg dudalen arall a gynhyrchir ddynamig mae hynny'n mynd i gael, gadewch i ni see-- AH, y pythefnos cyntaf o ddarlith. Felly wythnos sero ac un wythnos, gadewch i ni edrych ar this-- os byddaf yn edrych ar dudalen y ffynhonnell, hefyd yn super syml. Mae'r rhain yn arwain at ddwy dudalen Gelwir week0.php, a week1.php. Felly, yn ystyried yn awr beth sy'n digwydd. Pan fyddaf yn clicio ar week0.php, fy ngliniadur yn gwneud cais am week0.php. Mae'r gweinydd gwe, a.k.a., CS50 IDE, yn derbyn bod amlen rhithwir. Mae'n gweld neges fel, yn cael week0.php. Yna caiff ei dehongli'r ffeil, top i'r gwaelod, o'r chwith i'r right-- y ffeil Gelwir week0.php-- a poeri allan y canlyniadau. Felly, tu mewn y ffeil, week0.php, rhaid iddynt fod yn y rhesymeg rheolwr sy'n cynhyrchu HTML hwn, a byddwn yn fuan yn gweld hynny. Ond am nawr, gadewch i mi cliciwch ar wythnos sero, ac erbyn hyn mae gennym Mercher a Gwener, ac yn awr mae gennym y sleidiau yn araf o wythnos sero. Ac efallai y byddwch yn cofio hyn o ffordd yn ôl pan. Felly dyna i gyd y wefan hon yn ei wneud. Felly gadewch i ni ystyried sut y mae'n gwneud hyn. Rydw i'n mynd i fynd yn ôl i mewn i'r cod ffynhonnell yma, yn CS50 IDE, ac yr wyf i'n mynd i agor index.php. Ar frig y ffeil yn griw o sylwadau. Ac yna yng nghanol y ffeil, mae'n troi allan, dim cod PHP o gwbl. Oherwydd os nad oes gennych unrhyw un o'r chi braced agored tagiau PHP marc cwestiwn, rydych yn rhydd i ddim ond rhoi HTML. Oherwydd bod yr hyn y mae'r PHP cyfieithydd i fod i'w wneud, yw pan mae'n darllen file-- hon top i'r gwaelod, o'r chwith i'r right-- dim ond dehongli cod y gwêl rhwng cromfachau ongl y rhai cwestiynu marc. Ac unrhyw beth arall nad yw'n cydnabod fel PHP, 'i jyst poeri allan. A HTML Ai ymhlith y pethau bydd yn jyst boeri allan. Felly, gallai hyn gael ffeil cael ei alw index.html, ond rwy'n enwi popeth dot PHP fel carreg gamu. Lectures.php-- yr un modd underwhelming, dim ond rhywfaint o HTML. Week0.php, yn yr un modd dim ond rhai HTML. Ond yn awr gadewch i ni roi ar y het peirianneg diarhebol, ac yn ystyried sut y gallwn wella hyn. Nid yw'n anodd i wneud hyn, ond yr wyf yn fath o ddatganoli i mewn i copi a gludo. Ac yn wir, os wyf yn gwneud wythnos dau, yr ydych yn gwybod yr hyn yr wyf yn ôl pob tebyg i'n mynd i wneud? Rydw i'n mynd i fynd i week1.php, rwy'n mynd i dynnu sylw at bopeth. Rydw i'n mynd i gopïo, bastio ' i mewn i ffeil newydd o'r enw week2.php, tweak rhai URLs, a bod ar fy ffordd. Felly seiliedig ar yr hyn rydym wedi a welir yn C yn barod, nid yw hyn yn teimlo'n iawn, gobeithio. Copi, past anaml yr ateb cywir. Felly, beth allwn ni ei ddechrau ei wneud i wella hyn? Ble mae'r cyfleoedd ar gyfer dylunio gwell? Erbyn i mi gyrraedd wythnos wyth, mae'n mynd i fod yn wirioneddol yn blino os wyf am newid y ffont o bob un o fy tudalennau, neu os ydw i eisiau i newid strwythur y cynllun. Felly, ble mae'r cyfle ar gyfer dylunio gwell? Wel, gadewch i ni ystyried beth sydd rhannu ar draws pob un o'r ffeiliau hyn. Dyma wythnos un, dyma wythnos sero, dyma lectures.php, dyma index.php-- beth yr un fath ac yr hyn sy'n wahanol, yn fras sy'n siarad, ym mhob un o'r ffeiliau hyn? Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Iawn, yn dda. Felly mae 'na batrwm, yn sicr, lle bob tro rwy'n dewis ddarlith I, Ddylwn i fod yn creu dudalen edrych yn debyg iawn. Ac felly efallai y gallaf trosoledd y ffaith bod mewn gwirionedd, rydym yn fwriadol rhifiadol mynegeio ein lectures-- os caf ei roi hyd yn oed mwy geiriau yn eich ateb. A beth yw'r unig beth, mewn gwirionedd, sy'n newid rhwng wythnos one-- a gadewch i mi sgrolio i lawr, felly mae'n fwy neu lai yn yr un place-- felly dyma wythnos sero, yn fras ar y brig. Dyma wythnos un, wythnos sero, wythnos un, wythnos sero. OK, yn llythrennol os ydych yn gwybod unrhyw raglen o gwbl, mae hyn yn awr yn union fel gêm paru patrwm. Felly beth sy'n wahanol? Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Da, felly mae'r teitl yn newid, erioed mor ychydig. Zero yn mynd, wrth gwrs, i un. Un peth sy'n digwydd yn y tag H1. Ac nid ydym yn hollol yn ei weld mor hawdd, oherwydd bod y URLs ychydig yn hir. Ond mae rhai URLs yn newid ychydig. Ond nid yr hyn sy'n newid yw, os caf yn dweud, mae'r rhan fwyaf o gynnwys y page-- y tag HTML yn yr un fath, mae'r pennaeth yn yr un fath, y teitl bron yr un fath, mae'r corff yn yr un fath, a bron popeth arall yr un fath ac eithrio ar gyfer tweaks bach hynny. Felly, sut y gallwn fynd ati i ffactoreiddio rhywfaint o hyn allan? Wel gadewch i mi yn cynnig yn union bod yn y fersiwn nesaf. Felly dyma mewn fersiwn un, Mae gen i'r union un ffeiliau, yn ogystal â ychydig o rai eraill. Dyma index.php-- a hyd yn oed os nad ydych erioed wedi ei weld o'r blaen PHP, beth ydw i'n ei wneud yn ôl pob tebyg i ddatrys hyn problem-- seiliedig ar yr hyn a welwch yma? Yeah, yw bod ychydig o ymrwymiad? Na? Ie, yn mynd ar. GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Yep. GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Fi angen i chi siarad dim ond ychydig yn uwch. GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Iawn, yn dda. Ac yr wyf yn think-- ei fod yn anodd eu clywed you-- ond yr wyf yn credu yr hyn yr ydych yn ei gael ar yw bod y tagiau a oedd yn gyffredin i fyny top, ac y tagiau a oedd yn gyffredin ar y gwaelod, erbyn hyn wedi cael eu hystyried allan, neu relegated i'r hyn ffeiliau? Header.php a footer.php-- ac rydym yn mynd i wneud rhai tweaks i mynd i'r afael â'r pryder 'ch jyst a godwyd am y niferoedd sy'n newid, er enghraifft, os wyf yn eich clywed yn iawn. Ond mae hynny'n ymddangos i fod hanfod ohono. Os oedd llawer iawn o diswyddo ar frig y dudalen, a llawer iawn o diswyddo ar y gwaelod, gadewch i ni llythrennol dim ond tynnu sylw at a thorri cynnwys hwnnw allan, roi mewn file-- ar wahân yn union fel y syniad o CSS, lle'r ydym yn ffactor allan estheteg debyg iawn, rhowch mae'n mewn ffeil dot PHP ar wahân, defnyddio'r ei gwneud yn ofynnol mechanism-- sy'n yn debyg C include-- miniog sy'n yn ei hanfod fel dweud fynd chrafangia 'r cynnwys header.php, ac yn copïo a gludo nhw yma. Ond beth mae hyn yn ei olygu yw bod bellach yn index.php, mae gennyf rhai ddwy linell. Yn lectures.php, rwyf hefyd yn cael y rhai ddwy linell. Yn week0.php, rwyf hefyd yn cael y rhai ddwy linell. Felly nawr, os wyf am newid teitl fy holl dudalennau, neu yr wyf am newid y strwythur sylfaenol, Gallaf newid yn awr mewn dim ond un lle, neu ddau header places-- a throedyn, yn y drefn honno. Nawr bod y cod yn cychwyn i edrych ychydig yn fwy cryptig, dde? Ond os ydych yn meddwl am yr hyn y mae'r dudalen yn doing-- os ydw i'n gofyn am week0.php, yn union fel ar y tynnu dros Yma-- pan ofynnir am week0.php, beth yw ystyr hynny? Yn llythrennol, y ffeil yn ar gais y porwr. A.k.a. Mae'r we server-- CS50 ID-- hennill hwn ffeiliau, week0.php, ac yn darllen mae'n top i'r gwaelod, o'r chwith i'r dde. Ar-lein un, mae'n dod ar eu traws yn syth braced agored PHP marc cwestiwn, ei gwneud yn ofynnol header dot PHP, ac yn y blaen yr hyn y mae'r cyfieithydd PHP does-- sy'n hadeiladu i mewn i'r we gweinydd, oherwydd ein ragosodedig am you-- mae'n mynd yn awtomatig i mewn i header.php, copïau y cynnwys, eu pastau yma. Ond yna mae'r cyfarfyddiadau cyfieithydd question mark braced agos, felly mae'n ei wneud i gyd yn meddwl. Nawr 'i jyst blindly poeri allan linellau dau drwy saith, am ei fod yn dim ond HTML amrwd. Yn rhoi'r cyfle i linell wyth, ac yn gwneud hynny un hud again-- agor y ffeil, grabbing y cynnwys, ac gwneud yn ofynnol iddynt neu eu gludo i'r dde ac yna neu yno. Ond yr wyf yn jyst cyfeirio at nam. Mae hwn yn gam rhannol yn ôl, oherwydd os edrychwn yn header.php, Rydw i wedi fath o dorri cornel. Pa nodwedd wnes i roi'r gorau er i ennill y dyluniad gwell dadlau? Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Yeah, yr wyf yn fath o dorri cornel nontrivial. Rydych sylw at y ffaith bod yr hyn oedd yn newid oedd y teitl, mae'r rhif yn y teitl, a'r nifer yn y H1. Felly fy ateb oedd, OK, gadewch i ni dim ond ail-enwi y dudalen, ac nid ymdrin â hynny problem o gwbl. Felly mae hynny'n rhannol chymryd cam yn ôl yn sicr. Ond yr hyn sy'n nodedig yma yw bod yr hyn yr wyf wedi'i wneud ei gynnwys fel arall allan yr holl bethau cyffredin. Ac yn footer.php, yn sylwi fy mod yn ffactor allan i gyd, er yn llai, pethau cyffredin. Felly, mae angen i mi fod yn gallu rhywsut yn awr cymryd cam arall ymlaen, a atgyweiria bod materion teitl. Felly, gadewch i ni wneud hynny. Gadewch i mi fynd i mewn i fy ail fersiwn yma, sydd, unwaith eto, yr un ffeiliau heblaw am un ychwanegiad newydd. Ac mae'n ychydig yn fwy amleiriog, ond gadewch i ni weld os byddwn yn Gall canfod ar wahân yr hyn sy'n digwydd yma. Felly, yn lle ei gwneud yn ofynnol header.php, a footer.php, Yr wyf yn ymddangos i fod yn ei gwneud yn ofynnol un yn unig file-- gelwir, wrth gwrs, helpers.php. A gadewch i mi nodi yn awr, beth sydd tu mewn helpers.php yn unig yw criw o swyddogaethau a ysgrifennais, yn union fel o'r blaen. Ond yr wyf yn ei alw helpers.php. Nawr mae'n debyg, yn llinell tri a 10, rwy'n ffonio dau functions-- rendr pennawd, troedyn rendro. Mae'r rhai nad ydynt yn dod gyda PHP, ysgrifennais y rhai fy hun. Ac yr wyf yn eu rhoi mewn helpers.php. Nawr, rydym wedi gweld dim ond cystrawen hwn unwaith, ac yr oedd yn super fyr. Ond mae hyn yn ôl pob golwg yn ddadl i rendro pennawd, y swyddogaeth. Pam ydw i'n gwybod hynny? Wel dyma ben paren, dyma paren agored. Ac wrth gwrs, yn union fel yn C, unrhyw beth rhwng y cromfachau rhai yn input-- neu ddadl i'r swyddogaeth. Beth yw'r math data y ddadl hon, seiliedig ar yr hyn yr wyf wedi tynnu sylw? Beth mae cromfachau sgwâr y rhai yn nodi, yn seiliedig ar wythnos diwethaf? Yeah, ei fod yn array-- yn benodol amrywiaeth cysylltiadol. A chystrawen hon rhaid cyfaddef ychydig yn ffynci, ond mae hyn yn dim ond pasio mewn un pâr gwerth allweddol. Yr allwedd yw, dyfynnwch unquote teitl, ac mae'r gwerth yn CS50. Os ydym wedi gwneud hyn yn C, y gallai yn lle hynny edrych yn fwy fel hyn, dim ond quote unquote CS50-- neu mewn gwirionedd byddai'n cyrliog braces, neu rywbeth fel 'na yn C, lle yr allwedd yn sero, a gwerth yn CS50. Ond unwaith eto, yn PHP, er bod y cystrawen yw, unwaith eto, ychydig yn od, mae'n eich galluogi i basio mewn geiriau yn lle rhifau i gysylltu allweddi gyda gwerthoedd. Felly beth mae hyn i gyd yn ei olygu? Os byddaf yn mynd i mewn i helpers.php, gadewch i ni edrych ar y swyddogaeth hon. renderHeader.php, yn hytrach renderHeader yw fy swyddogaeth, a gwn fod gan fy mod yn gweld yr allweddair ffwythiant yma. Mae hyn yn newydd o C-- ei debyg yn cymryd dadl o'r enw data-- ond gallwn i wedi galw hyn unrhyw beth, ond yr wyf yn ei alw data, dim ond i fod ychydig yn clean-- a dim ond yn cymryd dyfalu, yn enwedig os ydych wedi rhaglennu mewn rhyw arall iaith ar lefel uwch o'r blaen, rhywbeth uwchlaw C, yn gysyniadol. Beth mae braced agored cyfartal yn ôl pob tebyg braced sgwâr yn ei olygu? Neu beth y gallai ei olygu? Nid ydym wedi gweld hyn yn C. Yeah? Amrywiaeth gwag. Yn benodol, mae hyn yn golygu, os nad yw'r defnyddiwr yn galw renderHeader gyda dadl, rydw i'n dal i fynd i gael dadl o'r enw data, ond mae ei gwerth diofyn yn mynd i fod amrywiaeth wag. Felly mae'n dim ond cyfleustra 'n glws. Nid oes rhaid i mi gweiddi ar y defnyddiwr, neu ddweud chi wedi defnyddio fy swyddogaeth anghywir. Gallaf roi diofyn y defnyddiwr gwerth, os dwi ddim yn arbennig gofal. Yn awr y swyddogaeth hon, rwy'n mynd i chwifio fy nwylo ar. Ond mae swyddogaeth y darn hwn yn caniatáu ni basio newidynnau hyn yn y data i header.php yn y modd canlynol. Ac mae hyn yn y darn olaf, Yr wyf yn meddwl, cystrawen ffynci. Dyma fy fersiwn newydd o header.php-- ei yn arfer dweud, yn llythrennol, ar agor braced Teitl CS50, a dyna ni. Ac un peth ar gyfer yr H1. Nawr mae'n debyg yn dweud rhywbeth 'n bert ffynci. A gadewch i mi symleiddio'r hyn am funud fel a ganlyn. Mae hyn yn hyn yr wyf i wedi newid fy enw i fod. Fodd bynnag, mae'n mynd ychydig yn hyll i cromfachau agored yn gyson gyda PHP, ac yna defnyddiwch y ffwythiant print. Mae'n ymddangos bod PHP Mae llaw-fer nodiant ar gyfer hyn, sydd ychydig arwydd cyfartal, sydd yn dechnegol yn swyddogaeth a elwir yn adleisio yn lle print, ond mae'n yr un peth, yn effeithiol. Mai dim ond yn edrych yn well. Mae'n dim ond cystrawennol siwgr, os mynnwch, sy'n gwneud fy cod yn edrych ychydig yn well. Ond mae'n troi allan, ac byddwn yn gweld hyn eto cyn bo hir, mae'n rhaid i ni yn galw hyn annoyingly swyddogaeth hir o'r enw HTML chars arbennig mewn PHP, gan ei fod yn troi allan mae rhai mewnbynnau y gallai'r defnyddiwr ei roi i ni, neu y gallai defnyddwyr roi i ni, sydd yn mynd i dorri ein safle. Ond byddwn yn gweld bod nesaf wythnos gyda JavaScript. Ond am nawr, dim ond yn gwybod bod y ffeil, headers.php, yn syml yn cymryd y teitl sy'n Yr wyf yn pasio i mewn, mae'n gwneud siŵr ei fod yn ddiogel i gael eu chwistrellu i mewn i we dudalen, ac mae'n poeri allan fel fy deitl ac fel fy F1. Felly, os byddaf yn mynd i mewn i hyn fersiwn yn awr, sylwi bod ddarlithoedd wedi ei deitl yn ôl, wythnos sero wedi ei deitl yn ôl, a yn wir, mae'r HTML i ddim yn cynhyrchu yn union beth yw fy fersiwn cyntaf was-- ac eithrio ar gyfer fy gofod gwyn, am fy mod i wedi dechrau fformatio fy cod ychydig yn wahanol. Ond rydw i wedi ei gynhyrchu i gyd y cod Rwy'n poeni am. Felly gadewch i mi oedi am ychydig funudau'n a gweld os oes unrhyw gwestiynau neu ddryswch Rydw i wedi creu. Mae pob hawl, felly gadewch i Twist ychydig yn galetach yma i weld a oes 'na cyfle i wella. Roedd gan Helpers.php hefyd hon swyddogaeth, a elwir yn renderFooter. A beth nodedig am renderHeader, a renderFooter? Ac eto, ar gyfer dibenion heddiw, yn gwybod bod y swyddogaeth dyfyniad yn unig fy ffordd o ddadleuon pasio i mewn i header.php a footer.php. Mae'n ddrwg gennym? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Yeah, yr wyf yn unig newidiodd y gofyn am linell. Felly llythrennol, dwi wedi ymrwymo bechod o copïo a gludo, unwaith eto. Nid yw'n nifer enfawr o linellau, ond yn dod on-- os ydw i'n gopïo a chludo popeth dim ond i newid un gair bach, ac mae'r un gair bach sy'n Alan pwyntiau allan yw footer yma, yn erbyn pennawd yma. Fel arall, mae popeth yn union yr un fath, ac eithrio ar gyfer, wrth gwrs, enwau y swyddogaeth yn. Felly, beth y gallem ei wneud yn well? Wel gadewch i mi agor y fersiwn yma, lle yn helpers.php, pam nad ydw i'n jyst cael ychydig callach am hyn? Ysgrifennwch ychydig yn fwy cymhleth cod, ond alw yn rendr? Felly beth rwyf wedi newid yn sylfaenol? Mae'n cymryd dadl now-- dwy ddadl, data o hyd. Ac yna beth yw'r cyntaf enw yn ôl pob tebyg yn cael ei ddefnyddio ar gyfer, yn seiliedig ar yr hyn yr ydych yn darllen yma? Hyd yn oed os bydd rhai o'r gystrawen yn dal yn newydd. Beth yw templed arwydd doler? Mae'n ddrwg gennym? GYNULLEIDFA: Pennyn neu droedyn. DAVID Malan: Pennyn neu droedyn. Felly mae'n debyg, penderfynais os yr unig beth sy'n newid yw'r hyn yr wyf am dempled i print-- a thrwy thempled Yr wyf yn golygu hyn yn lasbrint ar gyfer Cod yr wyf am ei allbwn, ond yr wyf am i blygio mewn rhai values-- felly os mai dim ond header neu troedyn, pam nad wyf parameterize hynny a ffoniwch yr arwydd doler ddadl templed? Ac yna y gystrawen ffynci caniatáu i mi i greu llwybr mewn newidyn yma. Felly llwybr arwydd doler yn amrywio. Beth mae cystrawen hwn ei wneud, os ydych yn gyfarwydd? Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Yn union. Os templed yw, dyfynnwch unquote, pennawd, neu os templed yw, dyfyniad unquote, troedyn, y llinell yno fy mod wedi tynnu sylw, llinell wyth, yn syml, gan gymryd bod enw, fel pennawd, a gydgadwyno'r gyda dot PHP. Felly, nid oedd gennym gweithredwr hon yn C. Mae hyn gweithredwr dot yn yn beth anhygoel yn PHP-- os ydych chi'n gyfarwydd â JavaScript, neu Java, gallwch ddefnyddio'r plws lofnodi i wneud concatenation. Yn C, mae'n boen yn y neck-- a dwi mor flin, yn p-set chwech, rydych yn mynd i gael i wneud this-- ei fod yn boen yn y gwddf i concatenate llinynnau. Pam? Wel, oherwydd os oes gennych llinyn sy'n ydyn nhw o hyd, a llinyn arall sy'n ydyn nhw o hyd, nid ydych yn gallu eu plwg at ei gilydd. Beth sy'n rhaid i chi ei wneud yn lle hynny yn C? Yeah? GYNULLEIDFA: [Anghlywadwy] DAVID Malan: Mae'n rhaid i chi malloc cof, neu ddefnyddio amrywiaeth ar y corn. Ac mewn gwirionedd yn rhaid i chi wneud y casgliad yn ddigon mawr i gyd-fynd hyn plws hyn, yn ogystal â'r slaes sero. Yna concatenate nhw at ei gilydd gan ddefnyddio troi cath neu â llaw gyda gyfer dolen, neu unrhyw nifer o dechnegau. Ac rydym yn dangos i chi gwpl mewn chwe set-t. Mae'n boen yn y gwddf. Ac mae hyn yn wir yr hyn yr wyf yn ei olygu am mae hyn yn erbyn this-- fel C yn erbyn PHP. Rydych yn unig yn cael cymaint mwy ymarferoldeb ar gyfer rhad ac am ddim, fel y gallwch ganolbwyntio, yn ddelfrydol, ar yr hwyl rhan o godio, mae'r prosiect yr ydych am i ddatrys, yn hytrach na'r manion lefel isel. Felly, mae hyn yn unig yn cynhyrchu header.php neu footer.php yn seiliedig ar ba un yr wyf yn galw. Ac yn wir os byddaf yn mynd i mewn i index.php, rhybudd cyfan sydd ei changed-- Yn hytrach na galw rendrad pennawd neu troedyn rendr, Im 'yn galw rendr, wedi'i ddilyn gan y enwi o'r templed yr wyf am ei wneud. A byddwch yn gweld hyn, hefyd, yn broblem yn gosod saith, lle yr ydym yn caniatáu i chi ddefnyddio'r un swyddogaeth i wneud sypiau a sypiau o dudalennau gwe gwahanol. Felly yn hytrach na drigo yn rhy llawer mwy ar y rhai details-- pa byddwch yn gweld eto yn seven-- set problem gadewch i ni edrych ar awr ddechrau ateb i broblem fwy diddorol. Hyd yn hyn, nid oes dim rydym wedi ei wneud Mae data cadw. Yn wir, yr unig adeg rydym wedi arbed erioed rhywbeth yr ydym wedi ei wneud yn y dosbarth hwn yw pan gawsom demo syml iawn dro yn ôl, lle rydym yn defnyddio ffeil IO yn C, ac yr wyf yn meddwl fy mod deipio yn fy enw i, a Enw Hannah, ac enw Maria, neu efallai enw Andy, ac yna rydym yn arbed file-- CSV comma separated ffeil gwerthoedd. Ac rydym yn defnyddio fopen-- wyf yn meddwl rydym yn defnyddio fprintf fel yr wyf yn cofio, ac rydym yn arbed ffeil. Yn awr, dyna'r symlaf ffurf cronfa ddata. Os ydych am wneud gwefan ar gyfer y Rhaglen Frosh IMS, lle Grwpiau myfyrwyr Grwpiau Cymuned Gall gofrestru ar gyfer chwaraeon, rydych yn ddelfrydol am wneud rhywbeth gyda data hwnnw. Yr wythnos diwethaf, yr ydym yn gwneud dim gyda'r data-- ydym newydd ei ddweud, rydych wedi cofrestru, nid mewn gwirionedd. Neu efallai yr wyf yn anfon e-bost y Proctor, a dyna ni. Ond byddai'n braf pe gallwn rhoi'r proctor ffeil CSV, fel ffeil Excel. Neu well eto, byddai'n braf pe gallwn rhoi enwau defnyddwyr hynny 'a dorm enwau a hynny i gyd i mewn i gronfa ddata sy'n dim ond yn byw am byth, nes i mi yn dewis dileu data. Mae cronfa ddata sy'n caniatáu mi i holi gwybodaeth. Ac yn wir, dyna beth cronfa ddata yn. Rydym yn cyflwyno heddiw, ac yr wythnos nesaf, hefyd, yn dechnoleg Gelwir SQL-- mae Ymholiad Strwythuredig Iaith, sydd yn iaith arall. Mae'n hanfod yn rhaglennu iaith, ond ar gyfer cronfeydd data. A chronfa ddata ar hyn o bryd, dim ond feddwl fel fersiwn super ffansi o Microsoft Excel, neu Google Taenlenni, neu Rhifau Apple. Mae'n gyffredinol rhaglen sy'n caniatáu chi storio criw cyfan o ddata mewn rhesi a cholofnau, yn eithaf fel chi efallai yn Excel. Ond yr hyn sy'n braf, yn enwedig os nid ydym yn super gyfarwydd â Excel, beth SQL yn caniatáu i chi ei wneud yw ymholiad hwn gwybodaeth drwy ysgrifennu llinellau o god lle y gallwch, hyd yn oed os yw eich Mae gan gronfa ddata miliwn o resi ynddo, gallwch ddod o hyd pethau gyflym super. Yn wir, Excel yn arbennig o ddrwg o setiau data mawr. Ac yn wir, hyd at ychydig mlynedd yn ôl, troi allan Byddai Excel ond yn caniatáu i chi storio hyd at 65,535 rhesi o data-- sy'n swnio fel llawer, ond ar yr amser oeddwn yn fyfyriwr grad, ac yr wyf yn cofio baglu dros hwn oherwydd fy mod yn cynhyrchu Ffeiliau CSV ar gyfer fy ymchwil ac yr wyf yn yn awyddus i'w dadansoddi yn gyflym at jyst agor i fyny yn Excel. Wrth gwrs, fy nghyfrifiadur jyst damwain, gan fy mod wedi mwy na 65,000 o rhesi. Ond ble wnaeth y 65,535 yn dod? Beth oedd yn Microsoft yn ei wneud, yn ôl pob tebyg? Os ydych yn dda gyda eich pwerau o ddau? Yeah, maent yn defnyddio 16-bit gwerth i gynrychioli'r rhif rhes. A dau i 16 yw 65,536-- un minws, oherwydd os ydych sero mynegai yn golygu bod yn y nifer fwyaf o resi gallwn i gael. Ac 'i jyst yn benderfyniad dyluniad yn. Erbyn 16 darnau arbed, maent yn gyfyngedig i mi i 16,000 rhesi, yn hytrach na 4 biliwn, y gellid wyf wedi cael yn ddelfrydol. Ond am nawr, rydyn ni'n mynd i gyflwyno hyn fwy mewn cyd-destun y we. A beth sy'n neis am SQL yw bod hyd yn oed er 'i' 'n bert pwerus a' n bert soffistigedig, mae'n wir boils i lawr i bedwar weithrediadau allweddol, pedwar swyddogaethau allweddol, os will-- byddwch yn dewis, ar gyfer adfer data, chwilio ar gyfer data; dileu neu ddileu data; mewnosod ar gyfer ychwanegu rhesi at y gronfa ddata; a diweddaru. Felly os ydych chi erioed wedi defnyddio Google Taenlenni, Rhifau'n Afal, Microsoft Excel, yr ydych wedi eu gweithredu, fwyaf tebygol, i gyd o'r gweithrediadau hyn fel dynol drwy dim ond yn defnyddio eich bysellfwrdd a mouse-- mewnosod data, gan ddefnyddio eich llygaid i ddewis neu chwilio am ddata, neu ddata diweddaru, neu ddileu data. Felly beth mae hyn yn ei olygu? Wel, cyn-osod yn CS50 IDE yn rhaglen o'r enw MySQL. Mae'n rhad ac am ddim, yn agored-ffynhonnell cronfa ddata sy'n super poblogaidd. Facebook, er enghraifft, yn ei ddefnyddio i hyn dydd, ymhlith offer eraill y maent yn eu defnyddio. Ac mae llawer o wefannau poblogaidd iawn defnyddio ei i raddau helaeth oherwydd ei fod yn gyflym, ac am ei fod yn rhad ac am ddim. Er sicr dewisiadau eraill yn bodoli. Ac efallai y bydd rhai ohonoch chi dabble gyda dewisiadau eraill ar gyfer prosiectau terfynol. Mae hwn yn screenshot, yn y cyfamser, o offeryn ar y we a elwir yn phpMyAdmin. Mae'n gyd-ddigwyddiad bod y dull ar y we hefyd hysgrifennu mewn iaith, PHP, ond yr hyn mae'n fod i'w wneud yn rhoi i ni yn seiliedig ar y we rhyngwyneb i gronfa ddata. Gan fod MySQL fel arfer yn rhywbeth, yn hanesyddol, i chi Byddai rhyngweithio gyda dim ond gyda llinell orchymyn. A byddai'n super blino ac dirgel i gael teipio gorchmynion testunol i ddewis data, mewnosod data, a dileu data. Felly, mae rhai pobl ar y rhyngrwyd Ysgrifennodd rhaglen ar y we mai dim ond gadewch i ni reoli mae'r data yn ein cronfa ddata. Mae fel glicio ddwywaith ar Excel, a rhedeg fersiwn ar y we ohono. A beth rydych yn mynd i ddefnyddio hwn ar gyfer yn y pen draw yr wythnos nesaf, nid mewn chwech a osodwyd-p, ond yw adeiladu rhywbeth Gelwir CS50 Cyllid, a oedd yn yn mynd i gael cronfa ddata o defnyddwyr, gydag enwau defnyddwyr a chyfrineiriau, doler symiau eu bod yn yn eu cyfrifon banc. Mae'n mynd i fod yn rhywbeth rydych yn ei ddefnyddio i storio y symbolau a'r symiau o stociau bod defnyddwyr wedi prynu gan ddefnyddio rhith ddoleri y byddwch yn rhoi iddynt. Ac mae'n mynd i ganiatáu i ddefnyddwyr i gofrestru ar gyfer eich safle, fel bod hyd yn oed eich ffrindiau gall gwrandewch ar eich gwefan ac mewn gwirionedd yn cofrestru, logio i mewn, ac yn chwarae o gwmpas a cheisio dod o hyd fai yn eich cod, a cheisio dod o hyd chwilod yn eich gwefan. A byddant yn syml gofrestru drwy gan ychwanegu eu hunain, yn effeithiol, trwy cod i chi ysgrifennu at eich cronfa ddata. Er enghraifft, mae hyn yn screenshot cyflym o'r hyn y gallai cronfa ddata yn edrych fel. Roedd hyn o un o solutions-- llynedd mae hyn yn debyg i Excel mini ffeil, storio yn ein cronfa ddata, storio yn y meddalwedd o'r enw MySQL. Ar yr ochr chwith, rwyf wedi yn ôl pob golwg cael rhif unigryw bob defnyddiwr. Yn yr ail golofn, rydw i wedi rhoi pawb defnyddiwr name-- fy hun yn eu plith. Ac ar yr ochr dde, Rydw i wedi rhoi hash iddynt. Nawr mae hyn mewn gwirionedd cyfrinair, ond nid yw'n cyfrinair testun plaen. Mae'n cyfrinair amgryptio, os byddwch, neu gyfrinair hash. Y byddwn yn dod yn ôl at cyn bo hir. Ond os ydych wedi darllen erioed erthygl am sut eich cyfrinair ar ryw banc neu ryw Efallai y wefan, wedi cael ei gyfaddawdu, Yn gyffredinol, gall olygu un o ddau beth. Felly, mae hyn yn unig yw dyfyniad o chwech o ddefnyddwyr. Mae pob un ohonoch yn gallu nawr ffigur allan drwy hacio neu gracio pa cyfrineiriau ein chwech o bobl yn cael eu. Ond os ydych chi wedi gotten erioed rhybudd neu ymddiheuriad gan gwmni neu wefan dywediad, ddrwg gennym, haciwr dorrodd i mewn ein cronfa ddata, mae'n debyg y dylech chi newid eich cyfrinair, beth allai hynny olygu? Wel, un, gallai olygu y cwmni wedi bod yn fwy moronic, ac wedi bod yn storio eich cyfrinair mewn colofn fel hyn, heb ei amgryptio. Sy'n golygu bod y gwrthwynebwr, oedd yn dwyn y gronfa ddata, llythrennol yn gwybod eich enw defnyddiwr a chyfrinair. Dyna y senario gwaethaf posibl. Ac fel y gwelwch yn p-set saith, mor hawdd i'w hosgoi. Does dim esgus o gwbl am hynny ffurf o hurtrwydd yn y rhyngrwyd heddiw. Two-- a byddwn yn dod o hyd rhai erthyglau i dystio i'r ffaith bod hyn yn dal yn digwydd, nonetheless-- dau, efallai y gwrthwynebwr dwyn y fersiwn hon o'r gronfa ddata. Sydd yn dal math o ddrwg, oherwydd erbyn hyn maent yn gwybod bod gen i chwech o gwsmeriaid, Yr wyf yn gwybod yr enwau defnyddwyr o chwe cwsmeriaid hynny, ac yr wyf yn gwybod yr amgryptio fersiwn, neu fersiynau hashed, cyfrineiriau chwe cwsmeriaid hynny. Ond unrhyw un ohonoch a allai wedi ei wneud [? Haciwr 2?] lle rydych wedi cracio cyfrineiriau, neu gymryd a edrych ar y fersiwn o'r broblem set, pam ei fod yn dal ychydig yn worrisome os yw'r gwrthwynebwr yn gwybod eich hash cyfrineiriau? GYNULLEIDFA: Oherwydd y gallent mynd i mewn y geiriadur cyfan i mewn i'r swyddogaeth hash. Ac os yw eich cyfrinair yn eiriadur gair, [? gallant jyst match--?] DAVID Malan: Yn union, mae'r gwrthwynebwr gall dim ond ysgrifennu cod, fel y mae rhai ohonoch chi gwnaeth i [? Hacker?] 2, lle byddwch yn ailadrodd drosodd holl eiriau yn y geiriadur, neu bob gyfuniadau posibl o A drwy Z ac un drwy nine-- sy'n swnio fel llawer, ac y mae. Ond ar gyfer cyfrifiadur, mae'n eithaf darn cyflym. Ac yn wir, dyna oedd y pwynt o [? Haciwr 2,?] Oedd i gymryd pethau hynny yn llythrennol yn edrych fel hyn, a pheiriannydd cefn yr hyn y mae'n mewn gwirionedd oedd. Felly byddwn yn edrych ar sut y gallwn storio'r hyn yn fwy effeithlon. Troi allan, diolch byth yn MySQL, mae yn mynd i fod fathau o ddata. Ac un o'r rhannau hwyl am dylunio cronfa ddata, i fod yn onest, mewn gwirionedd yn penderfynu drosoch eich hun sut y dylech cynrychioli'r data? Os byddwch yn cynrychioli nifer ffôn fel yn int, fel nifer mawr, neu hir? Neu ydych chi mewn gwirionedd yn ei wneud fel dilyniant o chars? A gall fod iawn Effeithiau heb fod yn ddibwys o hyn. Yn wir, un o'r cynharaf straeon germane, hwyl yw pan fydd Mark Zuckerberg yn adeiladu Facebook, yr oedd yn ysgrifenedig yn wreiddiol yn, ac yn dal ei ysgrifennu i raddau helaeth yn PHP. Ac un o'r heriau mwyaf roeddent yn eu hwynebu yn gynnar yn graddio. Pan fyddant yn cadw ychwanegu ar ôl ysgol ysgol ar ôl ysgol, hyd y gwn i, un o'r atebion gwreiddiol yn ei hanfod i gopïo a gludo rhai o'r cronfeydd data a rhai o'r cod, fel bod Harvard oedd rhedeg ar ei ben ei hun gweinydd, a MIT yn rhedeg ar ei ben ei hun gweinydd. Ac roedd hyn yn pam, ar gyfer rhai ohonoch a allai yn cofio, nad oeddech yn gallu cael ffrindiau mewn rhwydweithiau eraill. Mae'n debyg nad oes rhaid i ffrindiau yn MIT neu Harvard 10 mlynedd yn ôl, ond ni allai chi rhychwantu rhwydweithiau am y rheswm hwnnw yn rhannol. Ac un o'r heriau mwyaf ar gyfer Mark ac i gwmnïau fel Facebook mewn gwirionedd yn trin cannoedd a miloedd a miliynau o geisiadau yr eiliad. Felly, y pethau y byddwn yn dechrau siarad am yr wythnos hon yn wir yn mynd i fod yn germane i ysgrifennu meddalwedd da, ac popularly offer llwyddiannus sy'n Gellir trin llawer o ddefnyddwyr. Felly, byddwn yn siarad am bethau fel mynegeio a chwilio, ond dyna yw hi i heddiw. Byddwn yn eich gweld am fwy ar ddydd Mercher. [CERDDORIAETH - "Seinfeld" THEMA] DAVID Malan: Gallwch chi i ef, a thynnu oddi wrtho. Ac nid oes rhaid i chi daro ag rhai swm a bennwyd ymlaen llaw o gof. Wel, beth sy'n bod yn mynd i gael ei alw? SIARADWR 1: Wel, beth sy'n mynd ymlaen? SIARADWR 2: Beth ydych chi'n ei olygu? Mae'n rhoi darlith. DAVID Malan: A gallwn ddefnyddio swyddogaeth a elwir yn malloc i memory-- SIARADWR 1: Pam nad yn ei freichiau yn symud? SIARADWR 2: Wel that's-- eich bod yn gwybod, mae hynny'n normal. Mae'n union fel ei fod wedi dim ond selsig mawr yn hongian yno. SIARADWR 1: Mae hynny'n normal? SIARADWR 2: Yeah, yr wyf yn meddwl ein bod chymryd yn ganiataol ei fod yn ddamweiniol disodli ei diaroglydd gyda superglue.