[MIZIK jwe] DAVID Malan: Sa a se CS50, ak sa a se kòmansman an nan semèn uit. Apre sa, nou ap tèlman eksite akeyi tounen, gwo sipriz, pwòp Ramon CS50 nan Galvan, yon wo grade k ap monte ki te depans mwa ki sot pase plizyè depi Jiyè nan LA, nan Hollywood, literalman ap travay sou yon mak nouvo televizyon montre rele Koloni, kreyatè a nan yo ki se aktyèlman yon alun Harvard tèt li. Se konsa, nou ap trè eksite yo wè sa a premye sou rezo a USA sa a mwa janvye. Se konsa, rete branche pou sa, ak pou plis Ramon pou semèn ki ap vini yo. Konnen kounye a ke fen an se tou pre. Ak sa ki sa sa vle di se ke gen nan pa tout sa ki anpil rete nan CS50, tris yo di. Nou gen jis twa pwoblèm kouche bò gòch- gen nan pwoblèm mete six-- ki se nan men ou kounye a oswa byento pral, akòz pita nan week-- vle di ke yo pon mond nou an nan liy la bay lòd, kote nou te depanse pifò nan tan nou an lè l sèvi avèk C, ak mond lan nan pwogram entènèt. Oke, ou ap wè yon anpil nan lide prete nan men travay la liy lòd, men tou, yon anpil nan nouvo ak lide enteresan ki yo tou pral fè konvnabl pou mobil aplikasyon pou ak pou teknoloji, plis jeneralman, ak kote ou mesye yo tout yo konnen yo sèjousi sou laptops ak telefòn ak renmen an. Se konsa, ou pral aplike pa yon paj wèb, oswa yon sit entènèt se pou chak, men yon sèvè sit entènèt vrè. Ou pral ekri tout rès yon sèvè sit entènèt ekri nan C, ki gen objektif nan lavi se yo resevwa demann HTTP, sa yo ki anvlòp vityèl nou kenbe pale sou, ak aktyèlman reponn swa ak kèk content-- estatik tankou yon dot HTML dosye, oswa yon dot JPEG oswa nenpòt lòt kantite dosye, oswa menm yon dosye PHP kijan entènèt ou sèvè ki pral ka esplike nou rèv ki PHP Kòd ak krache soti rezilta yo. Koulye a, nou te bay ou ak byen yon ti jan nan fondasyon pou l-- tout bon an Kòd distribisyon pou pwoblèm mete sis se sou 1,000 liy long, se yon anpil nan ki se kòmantè, yo dwe fair-- men sa a se reyèlman vle di yo dwe yon opòtinite yo ka resevwa men ou plonje sal nan yon jistis gwo pwojè ke nou te trè espesyalman fè mete pòtre soti moso nan pou ou, se konsa ki vrèman lè ou sòti CS50 ak antre nan mond reyèl la nan pwogram epi ou vle travayèz nan nenpòt ki kantite pwojè, ou pral gen pi plis konfò Téléchargez kèk sous Kòd, gen kèk sous louvri pwojè sou entènèt la, ak plonje nan ak fè chanjman ki ou wè anfòm. Pwoblèm mete sèt a pwal sou fè aplikasyon pwòp ki baze sou wèb ou ki pran opinyon dinamik ak pwodui dinamik pwodiksyon nan fòm lan nan yon sit entènèt etrade.com-renmen. Ak pwoblèm mete uit pral konsantre sou ankò yon lòt lang ke yo rekonèt kòm JavaScript. Pandan se tan, final la pwojè se sou orizon an. Sa yo rele pre-Pwopozisyon an se akòz yon semèn soti nan jodi a. Pre-proposal-- pou chak spesifikasyon la, ki se sou website-- CS50 nan se yon opòtinite bèl aksidantèl pou ou voye yon imel bèl somèr parèy ansèyman ou jis yo enstrwir l ' oswa li nan sa ki w ap panse, nan itilize l 'oswa li kòm yon tablo kònen klewon. Epi yo gen yon saniti check-- si wi ou non w ap panse sou mòde koupe twò lajan oswa petèt twò piti, oswa petèt ou pa gen okenn lide tou sa epi ou vle angaje yo nan yon konvèsasyon. Apre sa se yon pwopozisyon ak estati rapò, sa yo rele CS50 Hackathon a isit la nan Cambridge pou Harvard ak Yale elèv yo sanble. Pwojè a final la aplikasyon se lè sa a garanti dwa moun. Lè sa a, yon jis CS50 isit la, nan Cambridge, osi byen ke yon lòt nan New Haven. Se konsa, pwopozisyon an, pran yon gade nan sit entènèt la pou moun Nap. Men, plis excitingly, tou, se yon opòtinite yo ka resevwa men ou sal, ak lespri nou fèm ou ouvè a yon antye pakèt moun sou sijè ak zouti ak teknik ki Segondè progranm debaz kou a nan, men Alòske ki gen rapò. Epi tou wòch bèl bagay STEPPING fè vrèman fre pwojè final ki mache byen pi lwen pase materyèl nou te kouvri fòmèlman nan pwoblèm kouche oswa nan konferans. Se konsa, ale nan sit entènèt CS50 a pou Lis a tout antye nan seminè. Si ou pa enskri ankò, sa a, se amann. Ale pi devan epi enskri toujou ak nou pral swiv moute ak yon lyen difizyon ap viv, jou a ak tan se sou sit entènèt la. Apre sa, tout bagay pral vin anrejistre epi mete sou entènèt si ou pa ka fè nan jou ak lè patikilye. Tankou sa ki bay manti devan thereafter-- byen, nan kou, gen nan Hackathon nan CS50. Sa a foto, sonje, ki soti nan semèn zewo pran alantou 4 AM Yon jou swa nan ane sot pase yo. Jis nan CS50, ki ankò pral pran plas nan tou de vil yo. Lè sa a,, jis ki plante a pitit pitit, menm si nou toujou gen yon mwa plis rete nan semès, si ou ta renmen rantre nan pwòp ansèyman CS50 nan anplwaye yo, epi ou vle kòmanse panse sou vin tounen yon CA, oswa ansèyman parèy, konnen ke nou pral kòmanse pale plis sou sa pita nan semès. Men, isit la se foto pi fò nan ekip ane sa a. Se konsa, PHP-- epi mwen te tris konsa semèn pase a ke [? Allyse?] Dous te ale nan efò sa a pou trape nou sa yo akseswar bèl bagay ke mwen pa t 'fini lè l sèvi avèk, se konsa li vrèman jis gade kalite estipid ke nou te yon pèl chita isit la tout jou Mèkredi dènye a, ak yon ti kras kiyè. Men, sa a te metaforik mwen fason pou ap eseye penti foto a sou rezon ki fè nou ap tranzisyon soti nan C rive nan yon lang tankou PHP. Ak menm bagay la te kapab di nan nenpòt ki kantite languages-- Java, Piton, Ruby oswa grap nan others-- men tandiske nan C, pou egzanp, ekri yon pwogram nan C ta ka tipikman fè tankou pran yon kiyè tankou sa a ak fouye yon twou nan nan tè, nan sab la oswa pousyè tè a. PHP pèmèt ou pran anpil pi gwo mòde soti nan pwoblèm nan, ekri byen lwen mwens Kòd lè l sèvi avèk yon zouti byen lwen ki pi piti, paske gen nan anpil plis fonctionnalités pieced an. Koulye a, si nou te reyèlman dramatik, nou ta gen yon bagay yo pèl isit la, men se konsa se pou li. Pandan se tan, lòt la metafò nou te vini ak se, nan kou, ou te kapab sèvi ak yon bagay tankou yon kle , yon mato nan yon bagay tankou yon klou. Men, nan kou, dwa pou zouti yo sèvi ak ki pral yo dwe pa tèlman nan ak lang yo rele C-- e kounye a, mwen jis énervé [? Sanders,?] Pwobableman, nou pral ranje ki later-- konsa zouti nan dwa sèvi ak souvan a pa pral yo dwe zouti sa a nivo ki pi ba. Ak tout bon, C se pa yon lang ki pi fò nan w ap janm ale yo sèvi ak, oswa yo ta dwe nesesèman itilize ankò. Lè an reyalite, yon ti kras secret-- tan la sèlman Mwen sèvi ak C tèt mwen se bèl anpil ant Mwa septanm ak mwa desanm nan chak sezon otòn semès. Epi sa a, paske nou sèvi ak li kòm yon opòtinite yo anseye fondamantal yo a pwogramasyon, epi ak sa òdinatè fondamantal syans, done estrikti, algoritm ak nan like-- men trè byen vit pral ou wè kounye a ke sentaks la ak lide yo kache C yo, se pou bèl transfere nan plis modèn pi wo nivo lang, tankou PHP ak Piton ak pèrl ak Java ak Objektif-C-- aktyèlman, pa tèlman Objektif-C-- men Swift, sa yo plus lang ke anpil nan ou pral Lè sa a, travayèz avèk ou final pwojè. Se konsa, san yo pa plis tarde, kite a aktyèlman itilize PHP yo rezoud kèk pwoblèm. Sonje byen, byen bonè nan, dènye semèn, nou jis itilize CS50 IDE, nou te ekri yon pwogram ti kras miyon ki jis te di, "Alo lemonn." Lè sa a, Mwen sove l 'nan yon dosye rele hello.php. Lè sa a, mwen kouri kòmandman sa a. E poukisa? Nan lang angle, ki sa k ap pase sou isit la? Ki sa ki te mwen fè lè Mwen kouri kòmandman sa a? Yeah? ODYANS: Genyen kèk PHP fonksyon ki li sa k ap in-- konprann sa. DAVID Malan: Bon, gen nan kèk fonksyon PHP-- ak kite m 'gen plis espesifik, gen nan yon pwogram yo rele PHP, a.k.a. Yon entèprèt, ki konprann sa ki nan hello.php, epi entèprete li anwo jouk anba, gòch a dwat, ak fè sa ki sa yo kòmandman yo di. Kòmandman yo nan hello.php, nan kou, se jis sous fonksyon code-- ak varyab ak pasan ak renmen an, ke nou tèt nou te kòmanse ekri nan PHP. Men, kontrèman ak C, ki se yon lang konpile, PHP ou jis ekri li, epi kouri li. Ou sote ki etap entèrmedyèr nan konvèti li nan zewo ak moun yo, ak Lè sa a kouri li. Se konsa, ki sa ki yon tèt nan sa a? Poukisa nou sote etap la? Poukisa lang plis modèn yo gen tandans sote etap sa a? Ki sa ki te benefis la? Oswa jis entwitif? Menm si nou pa te ekri anpil PHP anvan, sa ki nan benefisye sou pa konpile kòd ou a ou panse? Se pa? Pa komèt? Grate tèt ou a? Yeah. ODYANS: Plis dinamik. DAVID Malan: Plis dinamik? Sa'w vlé di? ODYANS: [fèbl] DAVID Malan: OK, bon, se konsa depann sou opinyon an, ou pa bezwen konpile li chak fwa. Apre sa, li vrèman se kòm senp tankou sa that-- se pwen an nan k ap kontinye yo konpile kòd ou a? Sa a se jis yon etap sa a, se making-- sa a se ki mande, pou plizyè ki sot pase a semèn, de fwa tankou anpil etap kòm jis kouri pwogram ou an. Li te itil nan wè ke ou wè kèk mesaj erè ak pou fè, men li la toujou jis yon etap anmèdan. Se konsa, reyalize pwogramasyon apre yon sèten tan, poukisa pa fè sa nou kòmanse ekri lang ki pa fè sa bezwen ke etap san patipri mekanik, se konsa ki ka jis ekri kòd ou a epi kouri li. Men, sa ki te pri a ke nou te wè nou peye semèn pase a, ak yon sèl egzanp patikilye? Wi? Vitès. Se konsa, [? ki sa?] entèprèt la yon ti kras pi dousman, nan ki zewo ak moun yo yo se bèl ak vit pou yon òdinatè yo konprann, paske nan Intel CPU, oswa kèlkeswa sa li ye, jis konprann sa k ap pase sou ak sa yo ki modèl nan miyèt moso. Lè nou konsidere ke yon entèprèt se yon pwogram ki vrèman gen li sous la ASCII Kòd ke ou te ekri nan Liv la ak konvèti li, se konsa pale, oswa figi konnen kouman li konvèti finalman zewo ak inite. Se konsa, li jis pran yon ti kras ti jan nan yon frape pèfòmans. Se konsa, li yon ti jan nan yon komès-off. Koulye a, si nou fè sa sou isit la, kite m ' ale pi devan epi fè yon egzanp jan sa a. Si m 'ale nan isit la, nouvo dosye, mwen pral pou konsève pou sa a ankò se hello.php. Epi, koulye a mwen pral ale pi devan ak di, "ekri an lèt detache alo mond" - ak sonje ke mwen ka itilize enprime, mwen pa fè sa gen yo sèvi ak ekri an lèt detache-F. Epi, koulye a desann isit la, si m 'fè PHP a hello.php, huh-- mwen pa sanble yo te entèprete li. Ki sa m 'fè ki mal? ODYANS: braslè yo Incline. DAVID Malan: Yeah, ou bezwen ki ang bracket moute tèt. Se konsa, li nan kalite anmèdan, men ou jwenn itilize li byen vit. Si mwen gen yo ekri Kòd PHP, mwen jeneralman bezwen di pwogram nan, oswa di entèprèt la, hey PHP, isit la vini kèk kòd PHP. Lè sa a, pou bon mezi, mwen ta fèmen sa a pa ak sa a, men pito ak jis kesyon ang make bracket, se konsa ke kounye a desann isit la, si mwen kouri sa a ankò, kounye a Mwen jwenn rezilta a vle. Koulye a, kite a fè yon optimize ti tay, jis pou ke ou te wè l 'anvan. Sa a se kalite anmèdan ke mwen gen kouri PHP espas hello.php, paske nan mwen ki sot pase a te kapab jis ekri dot koupe Non pwogram nan, ki se kalite bèl. Li nan kalite yon eksperyans itilizatè pi bon. Se konsa, li vire soti ou ka fè sa nan PHP ak mwen an annapre ka itilize sa a san patipri skre enkantasyon nan tèt la isit la, ki se jeneralman yo te rele yon kaz, kijan sa a se yon senbòl byen file, se konsa pale, sa a se yon Bang oswa yon pwen esklamasyon. Lè sa a kounye a se chemen an nan yon pwogram sou yon sistèm Linux tipik ki yo rele anviwònman, oswa ENV. Lè sa a line-- istwa long ti-liy yon sèl jis di, hey òdinatè, jwenn PHP a entèprèt pou m 'nan anviwònman an, jwenn li nan memwa ou, se konsa pale. Ak sa ki nan bèl kounye a, se ke si m 'desann isit la, Mwen kapab fè koupe dot alo dot php, or-- hmm. Pèmisyon refize. Oke, ou ap wè menm plis nan sa a ak pwoblèm mete sèt, si ou pa gen deja, ak autorisations. Li sanble ke mwen bezwen al touye kòmandman sa a rele [? chamod?] pou yon chanjman mode-- yon plis x hello.php. Mwen bezwen [fèbl] yon sèl sa a plis etap ki ap di òdinatè mwen an, fè hello.php ègzèkutabl. Epi, koulye a gade sa happens-- dot koupe hello.php, li jis kouri. Mwen pa bezwen presize entèprèt la ankò. Apre sa, mwen ka fè li menm bèl pase, toujou, si mwen chanje non bagay sa a. Si m 'deplase hello.php nan jis Hello-- konsa remake nan bò gòch nan tèt, Non pwogram lan a se tout bon kounye a jis Bonjou. Koulye a, mwen ka fè l 'gade tankou yon pwogram C, menm si li nan ekri nan PHP-- oswa nenpòt ki kantite franchman nan lòt lang. Se konsa, majinal amelyorasyon, okenn diferans fonksyonèl. Men, li la jis yon ti kras kiryozite kounye a, se konsa ke ou ka ekri pwogram nan nenpòt lang, ak itilizatè a pa fè sa gen konnen oswa pran swen sa moun ye. Oke, kite pou yo gade nan yon pi plis irezistib egzanp kounye a ke mwen vide moute nan davans. Lè sa a yo rele quote.php. Lè li nan disponib sou entènèt. Apre sa, remake ke li a trè ti- men li la yon pwogram liy lòd sa a, se pral gade moute pri stock pou m ', ki se aktyèlman pral yo dwe konvnabl nan pwoblèm mete sèt. Se konsa, kite a wè sa m ap fè a. Nan tèt la anpil mwen te gen nan louvri bracket kesyon mak PHP. Lè sa a, mwen te gen liy sa a, annakò ak sa mwen menm ki egzije yon dosye rele functions.php-- nou ap ale nan wè plis sou sa a nan yon ti jan, men sa a se tankou C a vèsyon an byen file enkli ladan yo, kote ou vle ale gen ladan yon lòt dosye. PHP rele l mande pou, menm si li tou te gen yon gen ladan fonksyon. Apre sa, li vire soti ke se function.php jis yon bagay mwen te ekri anvan klas la. Mwen mete l 'nan anyè a menm, paske Mwen te vle faktè soti kèk kòd ke nou ta ka vle itilize yon lòt kote. Pandan se tan, ou kapab pwobableman dégager sa k ap pase isit la. Sa a se yon ti kras diferan de C-- men ki sa mwen vle di pa asire bon itilizasyon? Translate sa a plis teknikman. Nan ki sikonstans mwen yon moun kite fimen pwogram nan, oswa sòti? Yeah? ODYANS: Lè ou pa gen de liy lòd agiman. DAVID Malan: Lè m 'pa gen bay lòd liy agiman. Epi sonje ke youn nan moun ki agiman se non pwogram nan tèt li. Ak dezyèm lan a pwal yon lòt mo mwen tape apre èd memwa a. Se konsa, jis tankou C, sa a se yon fason mwen an tcheke, t 'itilizatè a kolabore ak kouri pwogram nan jan mwen gen entansyon? Koulye a, gen nan yon bagay yon ti kras diferan ak C-- premye nan tout sa nou gen siy dola sa a, ak kisa ki yon dola siyen don nan PHP? Jis yon varyab. Sa a all-- jis yon varyab ki te swiv pa tou sa ou vle ki aktyèlman rele li. Avi gen yon bagay manke nan pwogram PHP m 'yo, jis tankou li te manke pase a semèn, kont C, ki se ki sa? Yon kalite, men tou, yon lòt bagay. Pa gen okenn yon bagay fonksyon-fonksyon prensipal la. Gen nan pa gen fonksyon prensipal la. Ou jis kòmanse ekri kòd ou a san yo pa gen enkyete sou yon jistis abitrè konvansyon a nonmen kèk default fonksyon prensipal la. Se konsa, ARG C se jis reyèlman yon varyab mondyal ki entèprèt la fè disponib nan m '. Koulye a, sa a se enteresan. Se konsa, gade moute bagay. Stock siy dola se sou a kite, sa a, se varyab m 'yo. Sou bò nan men dwat, gen nan aparamman yon fonksyon nan PHP rele Passage ki M 'ap pase liy dènye lòd mwen agiman to-- tou sa pawòl Bondye a se. Epitou, n ap wè ki jan sa a ap travay nan yon moman. Lè sa a, anfen mwen rapò pri an. Mwen enprime soti yon sèl pati nan sa yo ak sa yo. Epi sonje, sa a se nan fason nan PHP-- yon fason nan PHP-- kote ou pa dwe fè siyen an dola S ankò. Ou ka jis itilize aparèy òtopedik Curly ak ploge nan kèk varyab. Ou pa gen enkyete sou lè l sèvi avèk printf nan menm fason an. Apre sa, kòm yon sou kote, lè ou mete yon varyab andedan nan quotes doub tankou sa a, w ap itilize yon teknik anpenpan rele varyab entèpolasyon. Li jis vle di ploge varyab la nan isit la. Apre sa, kòm yon sou kote, kèk nan nou ki moun ki vini soti nan lòt orijin pwogram, ou pa gen dwa sèvi ak quotes sèl alantou strings fè sa. Ou dwe itilize quotes doub pou varyab entèpolasyon nan travay. Sinon ou pral literalman wè sa yo aparèy òtopedik Curly. Se konsa, anfen, se pou yo ale pi devan epi kouri sa a. Kite m 'fè m' yon ti kras tèminal pi gran. Kite m 'ale pi devan epi kouri andedan nan anyè quote m 'yo. [? CDsource?] [? AM?] [? quote?] PHP quote dot PHP, ak mwen pral pou fè rechèch pou yon bagay tankou GOOG, ki se senbòl montr li yo, ak youn pati nan nouvo non li yo, Alfabèt Inc, koute $ 717, tankou jodi a. Tout dwa, si nou vle kouri sa a ankò, nenpòt moun gen yon lòt stock montr yo vle yo gade jiska? Microsoft mwen panse ke se yon sèl sa a, MSFT-- $ 53. Mwen panse ke Yahoo se petèt sa. Apre sa, Facebook se sa. Se konsa, ki sa ki pwogram sa a ap fè? Majik la sanble ap entegre nan ki fonksyon Passage. Se konsa, kite a pran yon gade rapid. Li sanble ke pa vini ak PHP, li nan nan functions.php. Epi nou pa pral ale nan sa a nan gwo detay, men remake pawòl Bondye a isit la se espyon ki sou liy sis nan functions.php-- Mwen literalman di fonksyon. Mwen presize non an nan fonksyon m 'yo. Mwen Lè sa a presize nenpòt agiman, oswa paramèt, Mwen vle ke fonksyon take-- pa gen okenn kalite. Lè sa a, mwen aplike li. Apre sa, mwen pral balanse men m ' a aplikasyon an, depi li nan dwa san patipri avanse kounye a, men nou pral wè l 'ankò aktyèlman nan yon semèn nan pwoblèm mete sèt. Men, mwen ka netwaye sa a moute, tou. Mwen menm mwen te enkli nan Kòd la jodi a yon vèsyon a quote, ki pa gen okenn dosye dot PHP. Paske ki sa ki prezimableman nan la tèt nan pwogram nan rele jis site? Sa sa yo rele shebang-- nan san patipri skre enkantasyon ki di jwenn PHP ak Lè sa a kouri l 'sou kòd m' isit la. Tout dwa, se konsa ki pote nou kote nou sispann time-- dènye kwake ak kèk egzanp ki pi avanse. Nenpòt kesyon byen lwen sou konsa PHP oswa sa n ap fè? No-- tout dwa. Yeah? ODYANS: Anndan nan Dosye HTML, fè you-- [? ou?] [? jis rele li?] yon [fèbl] PHP dosye? DAVID Malan: Bon kesyon. Nan yon kontèks entènèt, ki nou ap literalman sou yo tranzisyon nan, ou pa sèvi ak sa yo rele an kaz nan tèt la, paske server-- wèb la souvan yon pwogram yo rele Apache oswa Microsoft Ii, Entènèt Enfòmasyon sèvè, oswa nenpòt ki kantite lòt lojisyèl sèvè sit entènèt, konnen ke lè li wè yon dosye dot PHP, ke li ta dwe kouri entèprèt la sou li. Li pa gade nan ki liy an premye. Se konsa, liy sa a premye jwe fent se jis lè w ap liy lòd ekri programs-- nou pa pral fè super souvan, men li la fason nou nan Tranzisyon egzanp C nou yo kounye a PHP nou yo. Se konsa nou tout bon pon mond sa a soti nan mond lan liy lòd nan entènèt la pa fè sa ki annapre yo. Kite m 'ale pi devan epi trase sou isit la pou jis yon ti moman. Se konsa, si nou gen yon sèvè wèb, ou pito si nou gen laptop mwen sou isit la, ki mwen pral trase tankou sa a. Ak isit la nou gen nan entènèt nan kèk fòm. Lè sa a, sou isit la, nou gen yon sèvè nan yon building-- sa a se ki jan entènèt la fonctionne-ak nan isit la se yon sèvè ak kèk limyè petèt. Ki sa ki nan aktyèlman ale sou ant de koneksyon sa yo? Se konsa, nan sa a bilding se yon sèvè wèb. Se jis yon òdinatè ki nan kouri kèk opere sistèm-petèt lojisyèl an gratis ki rele Apache, ki CS50 IDE ap kouri. Se konsa, ou kapab aktyèlman panse a sa a bilding tankou se te bilding lan nan ki CSt0 IDE se ki estoke. Sa a kote tout nan ou gen kont, kote tout nan nou gen sèvè pwòp entènèt ou an kouri, nou tout ki gen URL pwòp ou a inik, kòm nou te kòmanse diskite sou, epi ou pral wè plis nan P. mete sis. Isit la nan yon kote laptop mwen lòt sou entènèt la. Se konsa, lè m 'ale nan yon URL ki fè pati m ', ki trafik entènèt ki pral sou nan sèvè a, nan nan sèvè resevwa yon HTTP request-- tankou yon jwenn index.html ak li a Replying ak sa yo ki paj entènèt. Se konsa, sa a, se paradigm la an jeneral. Lè nou konsidere ke tout bagay moute jouk jòdi a, jodi a, tout bagay te pase sèlman nan la limit nan sa a bilding nan. Mwen te lè l sèvi avèk laptop mwen, men Mwen te konekte nan CS50 IDE, se konsa tout nan pwogram sa yo mwen te kouri te andedan nan ki sèvè, tèt li. Men koulye a,, kite la kòmanse resèvi PHP yo ekri kèk pwogram aktyèl ki yo te sèvi moute pa yon sèvè sit entènèt. Men, fè sa, mwen pral ale nan yon pakèt antye nan egzanp ki prezante ide sa a isit la. Se konsa, sa a se kalite yon fason anpenpan nan dekri yon paradigm pwogram. Lè an reyalite, menm jan ou sòti CS50 oswa travay sou pwojè final la, oswa pran kèk swiv sou klas, ou pral kòmanse yo wè ke world-- nan espesyalman li te gen grandi ak lang tankou C ki super ba nivo kap reyalize ke gen nan pi bon fason nan lojisyèl ekri. Gen sèten modèl ou ka swiv, sèten fason pou òganize dosye ou ak fason pou nonmen fonksyon ou, se konsa ke istwa long kout, te mond lan vini ak yon pakèt antye nan akwonim ak non pou fason nan pwogram. Sa yo se sèlman teknik ou ta ka sèvi ak. Yonn ladan yo te rele mv, pou ki gen konpòtman egzanplè Gade Kontwolè. Lè sa a se jis, pou kounye a, yon tro konplike fason pou li di ki jan ou ta dwe mete deyò yon sit entènèt PHP ki baze sou, nan ka nou an. Ki jan ou fè òganize dosye ou, ki jan ou òganize lojik ou, nan yon fason ki fè li pi fasil ekri ak pi konplike? Ak tout bon, nou pral byen vit jwenn la ansanm ak p-mete sèt. Se konsa, nan mond lan nan mv, w ap ale yo wè ke Kòd nou an kapab jeneralman yo kab karakterize kòm swa Kòd modèl, oswa kòd kontwolè, oswa kòd vi. Apre sa, mwen pral senplifye li kòm follows-- kontwolè a se nan sèvo nan pwogram ou an, li nan kote tout de la enteresan lojik k ap pase. Se konsa, tout sa nou te ekri konsa byen lwen nan klas la, se kalite tankou kontwolè code-- li nan kontwole pwogram ou an, pasan ou, ou kondisyon, fonksyon ou ak varyab ak tou sa. Pwen de vi, kounye a, yo ale nan gen yon ti kras plis evidan nan mond lan nan entènèt la. Yon View se estetik yo nan sit entènèt ou. Li nan sa ki itilizatè a sees-- imaj yo, tab yo HTML, HTML tags yo, ansanm ak tout de sa, tout nan ayestetik nan an gonfle bagay ki se pa sa ki difisil yo ekri, men se jis sa w ap génération, se gade nan sa yo rele, estetik yo. Ak modèl, finalman, ki pral yo dwe baz done stuff-- ki nou pral kòmanse plonje nan tout plis nan sa a Mèkredi. Se konsa, kontwolè se lojik la, wè se bagay la ayestetik, ak modèl a pwal kote nou magazen done aktyèl nou yo. Se konsa, kite pou yo gade nan sa a plis konkrètman ak egzanp sa a. Mwen pral ale nan anyè m 'isit la nan sous la jodi a code-- tout nan yo ki ki disponib sou entènèt. Apre sa, mwen pral ale nan vèsyon zewo. Ak isit la is-- kite nan rele l 'la vèsyon zewo nan sit entènèt CS50 la. Genyen pa anpil isit la nan tout. Li se yon paj entènèt trè senp sa a, se pwobableman lè l sèvi avèk sa HTML tags-- jis devine soti nan egzanp sot pase yo? Ki sa ki nan sa? H1-- pwobableman pou sa gwo fonse Tit, ki logo moute tèt, CS50. Ak sa ki lòt bagay se nan jwe? Yeah? ODYANS: lis unordered. DAVID Malan: Unordered list-- konsa nan UL tag e petèt yon koup la LI Tags. Men, si ou pa sonje sa yo, li onètman pa gen pwoblèm. Sa yo se an gonfle sòt de aplikasyon detay sou HTML ke ou byen vit gade moute epi w ap tounen sou wout ou. Nou pral konsantre plis sou pwogram lan lide ki moso yo juicier. Se konsa an n jis pran yon rapid gade nan HTML-- nan ak tout bon si mwen louvri moute sous la View isit la, wi, ki nan ekzakteman ki sa k ap pase sou isit la. Genyen yon tag UL. Pare solèy andedan nan se sa ki LI Tags. Lè sa a, mwen prete URL la a progranm aktyèl la isit la. Lè sa a, nan nan lectures.php se aparamman yon lòt paj dynamique pwodwi ki nan ale nan gen, se pou yo see-- ah, de premye semèn yo nan konferans. Se konsa, semèn zewo ak yon sèl semèn, se pou yo gade nan sa a men si mwen wè paj sous, tou super senp. Sa yo ki mennen ale nan de paj rele week0.php, ak week1.php. Se konsa, konsidere kounye a sa k ap pase. Lè m 'klike sou week0.php, laptop mwen ap fè yon demann pou week0.php. Sèvè a sou sit wèb ★ a.k.a., CS50 IDE, ap resevwa ki anvlòp vityèl. Li nan wè yon mesaj tankou, jwenn week0.php. Li se lè sa a entèprete dosye a, tèt jouk anba, gòch a regleman dosye a rele week0.php-- ak voye krache deyò rezilta yo. Se konsa, andedan nan sa a ranpli, week0.php, yo dwe lojik la kontwolè ki génération HTML sa a, epi nou pral byento wè sa. Men, pou kounye a, kite m 'klike sou semèn zewo, e kounye a, nou gen Mèkredi ak Vandredi, e kounye a, nou gen glisad yo tou dousman soti nan semèn zewo. Apre sa, ou ta ka sonje sa a soti nan fason tounen lè. Se konsa, ki nan tout sit entènèt sa a ap fè. Se konsa nou konsidere ki jan li a fè sa. Mwen pral ale tounen nan la sous Kòd isit la, nan CS50 IDE, ak mwen pral louvri moute index.php. Nan tèt yo nan sa a ranpli se yon pakèt moun sou kòmantè. Lè sa a, nan mitan an nan sa a ranpli, li vire soti, se pa Kòd PHP tou. Paske si ou pa gen nenpòt nan la louvri bracket Tags kesyon mak PHP, w ap lib yo jis mete HTML. Paske sa a PHP se entèprèt sipoze fè, se lè sa a li li file-- anwo jouk anba, gòch a regleman li sèlman entèprete Kòd li wè ant moun parantèz ang kesyon make. Apre sa, tout lòt bagay ki li pa fè sa rekonèt kòm PHP, li jis krache deyò. Apre sa, HTML se nan mitan bagay la li pral jis krache deyò. Se konsa, sa a ranpli te kapab gen te rele index.html, men mwen nonmen tout bagay dot PHP kòm yon wòch kite. Menm jan an tou Lectures.php-- underwhelming, li nan sèlman kèk HTML. Week0.php, Menm jan an tou sèlman kèk HTML. Men koulye a, se pou yo mete yo sou nan provèrbyo chapo jeni, epi konsidere ki jan nou ka amelyore sa a. Li pa di yo fè sa a, men mwen kalite a dekonsantre nan kopi ak keratin. Ak nan reyalite, si mwen fè semèn de, ou konnen sa m ap pwobableman pral fè? Mwen pral pou yo ale nan week1.php, mwen ale nan mete aksan sou tout bagay. Mwen pral kopi li, kole li nan yon dosye nouvo rele week2.php, ajiste kèk URL, epi yo dwe sou wout mwen. Se konsa, ki baze sou sa nou te wè deja nan C, sa a pa santi dwa, èspere ke. Kopi, keratin raman solisyon a dwat. Se konsa, sa nou kapab kòmanse pou fè pou amelyore sa a? Kote yo ye opòtinite yo pou pi bon konsepsyon? Depi lè a mwen jwenn yo semèn uit, li pral yo dwe reyèlman anmèdan si mwen vle chanje font la nan chak youn nan paj m 'yo, oswa si mwen vle chanje estrikti a nan Layout la. Se konsa, kote nan opòtinite pou pou pi bon konsepsyon? Oke, kite la konsidere sa ki nan pataje atravè tout nan dosye sa yo. Isit la nan semèn yon sèl, isit la nan semèn zewo, isit la nan lectures.php, isit la nan ki sa ki index.php-- menm bagay la ak ki sa ki diferan, apeprè pale, nan chak nan sa yo dosye? Yeah? ODYANS: [fèbl] DAVID Malan: OK, bon. Se konsa, gen nan yon modèl, siman, annakò ak sa chak fwa mwen chwazi konferans mwen menm, Mwen ta dwe génération yon trè menm jan kap paj. Se konsa, petèt mwen kapab ogmante lefèt ke reyèlman, nou fè espre numériquement Catalogue lectures-- nou an si mwen ka mete menm plis mo nan repons ou an. Ak sa ki se bagay la sèlman, reyèlman, ki nan chanje ant semèn yonn- ak kite m 'desann se konsa li a apeprè nan menm place-- nan se konsa isit la se semèn zewo, apeprè nan tèt la. Isit la se yon sèl semèn, semèn zewo, semèn yon sèl, semèn zewo. OK, literalman si ou konnen pa gen okenn pwogram tou sa, sa a se kounye a jis tankou yon modèl matche jwèt. Se konsa, sa ki nan diferan? Yeah? ODYANS: [fèbl] DAVID Malan: Bon, se konsa tit la ap chanje, tout tan se konsa yon ti kras. Zewo ki pral, nan kou, nan yon sèl. Menm bagay kap pase nan tag nan H1. Apre sa, nou pa byen wè li kòm fasil, paske URL yo se yon ti kras long. Men, moun yo ap chanje URL yon ti kras. Men, sa ki pa nan chanje se, se bay gabèl mwen di, pi fò nan sa ki nan page-- nan tag nan HTML nan menm bagay la, ki an tèt a se menm, tit la a se prèske menm bagay la, kò a se menm bagay la, ak prèske tout lòt bagay se menm bagay la eksepte pou moun ti kras reglaj. Se konsa, ki jan nou ka ale sou faktè kèk nan sa a soti? Oke, kite m 'pwopoze egzakteman ki nan vèsyon kap vini an. Se konsa, isit nan vèsyon youn, mwen gen egzak la dosye menm, plis yon koup la lòt moun. Isit la nan index.php-- e menm si ou pa janm te wè PHP anvan, ki sa mwen pwobableman fè yo rezoud sa a problem-- ki baze sou sa ou wè la a? Yeah, se ke yon angajman ti tay? Se pa? Wi, ale sou. ODYANS: [fèbl] DAVID Malan: Oui. ODYANS: [fèbl] DAVID Malan: Mwen bezwen ou a pale jis yon ti kras pi fò. ODYANS: [fèbl] DAVID Malan: OK, bon. Apre sa, mwen Monchè li te difisil renmen tande pale you-- men mwen panse sa w ap vin nan se ke Tags ki te komen moute tèt, ak Tags ki te komen sou la anba, gen kounye a te faktè soti, oswa rlege nan sa depoze? Header.php ak footer.php-- e nou pral fè kèk reglaj adrese enkyetid la ou jis leve soti vivan sou chanje nan nimewo, pou egzanp, si m 'te tande ou kòrèkteman. Men, sa sanble ap Esansyèl la nan li. Si te gen yon kantite lajan gwo èkse nan tèt la nan paj la, ak yon kantite lajan gwo èkse nan pati anba a, se pou yo literalman jis rekò e li te koupe ke kontni soti, mete l 'nan yon file-- separe jis tankou lide a nan CSS, kote nou faktè soti estetik trè menm jan, mete li nan yon separe dosye dot PHP, itilize mande pou nan mechanism-- ki se tankou C byen file include-- ki se esansyèlman tankou di ale gen tan pwan sa ki nan header.php, ak fè kopi epi kole yo isit la. Men, sa ki sa sa vle di se ke kounye a nan index.php, mwen gen de liy sa yo. Nan lectures.php, Mwen menm mwen te gen de liy sa yo. Nan week0.php, Mwen menm mwen te gen de liy sa yo. Se konsa, kounye, si mwen vle chanje tit la nan tout nan paj m 'yo, oswa mwen vle chanje a estrikti fondamantal, Mwen ka chanje li kounye a nan jis yon sèl kote, oswa de places-- header ak footer, respektivman. Koulye a, kòmanse kòd la nan fè yon gade yon ti kras plis skre, dwa? Men, si ou panse sou sa paj la se doing-- si mwen mande week0.php, jis tankou sou desen an sou isit lan-- lè se mande week0.php, ki sa sa vle di? Literalman, sa a ranpli se mande sa navigatè a. A.k.a. entènèt la server-- CS50 ID-- bèn sa a ranpli, week0.php, ak li li anwo jouk anba, gòch a dwat. Sou liy yon sèl, li imedyatman rankont louvri bracket kesyon mak PHP, mande pou header dot PHP, e konsa sa entèprèt la PHP does-- ki nan bati nan entènèt la sèvè, paske nou prekonfigure li pou li otomatikman ale you-- nan header.php, kopi sa ki, kole yo isit la. Men, Lè sa rankont yo entèprèt kesyon mak fèmen bracket, se konsa li a tout fè panse. Koulye a, li jis je fèmen krache soti liy de a sèt, paske li nan jis HTML anvan tout koreksyon. Gets nan liy uit, ak fè ki menm majik again-- louvri dosye a, arachman sa ki, ak ki mande yo oswa kole yo Lè sa a, dwat oswa a. Men, mwen jis mansyone nan yon ensèk. Sa a se yon etap yon pati bak, paske si nou gade nan header.php, Mwen te kalite koupe yon kwen. Ki sa ki karakteristik mwen te bay moute yo nan lòd jwenn sa a pi bon konsepsyon plozibl? Yeah? ODYANS: [fèbl] DAVID Malan: Yeah, mwen kalite a koupe yon kwen nontrivial. Ou fè remake ke sa ki te chanje te tit la, nimewo a nan tit la, ak nimewo a nan H1 a. Se konsa, solisyon m 'te, OK, kite yo jis chanje non paj la, epi yo pa fè fas ak sa pwoblèm tou. Se konsa, sa a, se yon pati nan etap bak pou asire w. Men, sa ki enpòtan pou remake isit la se se ke sa mwen te fè se otreman faktè soti tout bagay la komen. Ak nan footer.php, remake mwen faktè soti nan tout sa, kwake pi piti, komen bagay. Se konsa, mwen bezwen yon jan kanmenm kounye a kapab pran yon lòt etap pou pi devan, ak lojisyèl ranje ke pwoblèm tit. Se konsa nou fè sa. Kite m 'ale nan dezyèm vèsyon m' isit la, ki, ankò, gen dosye yo menm eksepte pou yon sèl nouvo de sa. Lè li nan yon ti kras plis sil, men kite a wè si nou ka toumante apa ki sa k ap pase sou isit la. Se konsa, olye pou yo mande header.php, ak footer.php, Mwen sanble yo sèlman mande yon sèl dwe file-- rele, nan kou, helpers.php. Ak kite m 'ladann kounye a, sa ki nan andedan nan helpers.php se jis yon pakèt moun sou fonksyon ke mwen te ekri, jis tankou anvan. Men, mwen rele l 'helpers.php. Koulye a, aparamman, nan liy twa ak 10, mwen se rele de functions-- rann header, rann footer. Moun sa yo ki pa vini ak PHP, mwen te ekri sa yo tèt mwen. Apre sa, mwen mete yo nan helpers.php. Koulye a, nou te sèlman wè sentaks sa a yon fwa, epi li te super kout. Men, sa a se aparamman yon diskisyon rann header, fonksyon an. Poukisa pou m 'konnen sa? Oke isit la nan yon fèmen paren, isit la nan yon paren louvri. Ak nan kou, jis tankou nan C, anyen ant moun parantèz se yon input-- oswa yon agiman nan fonksyon an. Ki sa ki se kalite a done nan agiman sa a, ki baze sou sa mwen te make? Ki sa ki fè moun parantèz kare endike, ki baze sou semèn pase a? Yeah, li nan yon array-- espesyalman yon etalaj asosyatif. Apre sa, sentaks sa a Byensir se yon ti kras fenki, men sa a se jis pase nan yon sèl kle valè pè. Kle a se, quote unquote Tit, ak valè a se CS50. Si nou te fè sa a nan C, li ta ka olye pou gade plis tankou sa a, jis quote unquote CS50-- oswa aktyèlman li ta Curly aparèy òtopedik, oswa yon bagay tankou sa nan C, kote kle a se zewo, ak valè a se CS50. Men, ankò, nan PHP, menm si nan sentaks se, ankò, yon ti kras etranj, li pèmèt ou pase nan Mo olye pou yo nimewo asosye kle ak valè. Se konsa, sa sa a tout vle di? Si m 'ale nan helpers.php, se pou yo gade nan fonksyon sa a. renderHeader.php, olye renderHeader se fonksyon m 'yo, e mwen konnen sa paske mwen wè mo kle a fonksyon isit la. Sa a se nouvo soti nan C-- li aparamman pran yon agiman rele data-- men mwen te kapab yo te rele sa a anyen, men mwen rele l 'done, jis yo dwe yon ti kras clean-- ak jis pran yon devine, espesyalman si ou te pwograme nan kèk lòt pi wo ak lang nivo anvan, yon bagay pi wo a C, concept. Ki sa egal bracket louvri bracket kare pwobableman vle di? Ou sa ki ka sa vle di? Nou pa te wè sa a nan C. Yeah? Yon etalaj vid. Espesyalman, sa a vle di ke si itilizatè a pa rele renderHeader ak yon agiman, mwen toujou ale gen yon agiman rele done, men valè default li yo se pral fè yon etalaj vid. Se konsa, li nan jis yon konvenyans bèl. Mwen pa gen rele nan itilizatè a, oubyen li ou te itilize fonksyon m 'mal. Mwen kapab jis bay itilizatè a yon default valè, si mwen pa patikilyèman pran swen. Koulye a, fonksyon sa a, mwen se ale nan balanse men m 'nan. Men, fonksyon ekstrè sa a pèmèt nou yo pase sa yo varyab nan done nan header.php nan fason sa a. Lè sa a se moso nan dènye a, Mwen panse ke, nan fenki sentaks. Isit la se nouvo vèsyon m ' a header.php-- li te konn ap di, literalman, louvri bracket Tit CS50, ak sa ki te li. Apre sa, menm bagay pou H1 a. Koulye a, li aparamman di yon bagay bèl Funky. Ak kite m 'senplifye sa a pou yon moman jan sa a. Sa a se sa mwen te chanje tit mwen yo dwe. Sepandan, li nan ap resevwa yon ti kras lèd parantèz toujou ap louvri yo avèk PHP, ak Lè sa a sèvi ak fonksyon an ekri an lèt detache. Li sanble ke PHP gen yon steno notasyon pou sa a, ki se jis yon siy egal, ki se teknikman yon fonksyon rele eko olye pou yo enprime, men li la menm bagay la, efektivman. Sa jis sanble pi bon. Se jis nan yon Massachusetts Institute of Technology sik, si ou vle, ki fè kòd m 'gade yon ti kras pi byen. Men, li vire soti, li nou pral wè sa a ankò anvan lontan, nou gen yo rele sa a annoyingly fonksyon lontan rele HTML charaktèr espesyal nan PHP, paske li vire soti gen sèten entrain ki itilizatè a ta ka ban nou, oswa ke itilizatè ta ka ban nou, ke yo pral kraze sit nou an. Men, nou pral wè ke pwochen semèn ak JavaScript. Men, pou kounye a, jis konnen ke sa a ranpli, headers.php, tou senpleman pran tit la ki Mwen te pase a, li fè asire w li nan san danje yo dwe sou fòm piki nan yon sit entènèt paj, epi li krache li soti kòm tit mwen ak jan H1 mwen. Se konsa, si m 'ale nan vèsyon sa-a kounye a, remake ke konferans gen tit li yo tounen, semèn zewo gen tit li yo tounen, ak tout bon, HTML a mwen génération se ki idantik ak sa premye vèsyon m ' was-- eksepte pou blan m 'yo, paske mwen te kòmanse fòma kòd m 'yon ti kras yon lòt jan. Men, mwen te pwodwi tout kòd a mwen pran swen sou yo. Se pou m 'pran yon poz pou jis yon ti moman ak wè si gen nan nenpòt kesyon oswa konfizyon mwen te kreye. Tout dwa, se konsa kite a tòde yon ti kras pi rèd isit la yo wè si gen nan yon opòtinite pou amelyorasyon. Helpers.php tou te gen sa a fonksyon, ki rele renderFooter. Ak sa ki nan enpòtan pou remake sou renderHeader, ak renderFooter? Epi ankò, pou rezon jodi a, konnen ki fonksyon an ekstrè se jis wout mwen nan agiman pase nan header.php ak footer.php. Padon? ODYANS: [fèbl] DAVID Malan: Yeah, mwen sèlman chanje a mande pou liy. Se konsa, literalman, mwen te pran angajman peche a a kopye ak kole, men ankò. Li pa yon nimewo gwo nan liy, Men, vin on-- si mwen kopye e kole tout bagay jis chanje yon ti kras mo, ak yon ti kras pawòl Bondye a ki Alan pwen soti se footer isit la, kont header isit la. Sinon, tout bagay se ki idantik yo, eksepte pou, nan kou, non fonksyon an. Se konsa, sa nou ta ka fè pi byen? Oke, kite m 'louvri moute vèsyon sa-a isit la, annakò ak sa nan helpers.php, poukisa yo pa mwen jis jwenn yon ti kras pi entelijan sou sa a? Ekri yon ti kras pi konplike Kòd, men rele l 'rann? Se konsa, sa m 'fondamantalman chanje? Li pran yon agiman now-- de agiman, done toujou. Lè sa a, sa ki nan premye a Non pwobableman te itilize pou, ki baze sou sa w ap li isit la? Menm si kèk nan sentaks la se toujou nouvo. Ki sa ki se an dola modèl mirak konsa? Padon? ODYANS: Header oswa footer. DAVID Malan: Header oswa footer. Se konsa, aparamman, mwen deside ke si bagay la sèlman ki nan chanje se sa ki modèl mwen vle print-- ak pa modèl Mwen vle di sa a se plan pou kòd ki mwen vle pwodiksyon, men mwen vle ploge nan kèk values-- Se konsa, si li nan sèlman header oswa footer, poukisa pa mwen paramètres ki ak rele siy lan agiman dola modèl? Lè sa a, sa a sentaks fenki pèmèt m ' yo kreye yon chemen nan yon varyab isit la. Se konsa, chemen siy dola se yon varyab. Ki sa sentaks sa a fè, si w ap abitye? Yeah? ODYANS: [fèbl] DAVID Malan: Egzakteman. Si modèl se, quote unquote, header, oswa si modèl se, quote unquote, footer, ki liy gen ke mwen te make, liy uit, se tou senpleman pran ke non, tankou header, ak konkatenan l 'ak dot PHP. Se konsa, nou pa t 'gen sa a operatè nan C. Sa a operatè dot se yon bagay etonan nan PHP-- si w ap abitye avèk JavaScript oswa Java, ou ka itilize plis nan siyen fè Anchènman. Nan C, li se yon doulè nan neck-- nan ak mwen se konsa regrèt, nan p-mete sis, w ap ale nan dwe fè sa a men li se yon doulè nan kou a anchene strings. Poukisa? Oke, paske si ou te gen yon afè sa a, se sa a depi lontan, ak yon lòt fisèl sa a, se sa a depi lontan, ou pa kapab jis ploge yo ansanm. Ki sa ou olye pou dwe fè nan C? Yeah? ODYANS: [fèbl] DAVID Malan: Ou gen malok memwa, oswa itilize yon etalaj sou pil la. Epi ou gen aktyèlman yo fè ki etalaj gwo ase nan anfòm sa a plis sa a, plis antislach a zewo. Lè sa a, lè l sèvi avèk anchene yo ansanm brase chat oswa manyèlman ak yon pou riban, oswa nenpòt ki kantite teknik. Apre sa, nou montre w yon koup nan p-mete sis. Li se yon doulè nan kou an. Lè sa a se vrèman sa mwen vle di sou sa a kont sa a men tankou C kont PHP. Ou jis jwenn anpil plis fonctionnalités pou gratis, pou ke ou ka konsantre, depreferans, sou plezi nan yon pati nan kodaj, nan pwojè ou vle rezoud, olye ke karakteristik nan nivo ki ba. Se konsa, sa a jis jenere header.php oswa footer.php ki baze sou ki yon sèl mwen rele. Ak tout bon si mwen ale nan index.php, avi tout sa ki nan changed-- Olye pou yo rele rann header oswa footer rann, M ap rele rann, swiv pa nan non nan modèl la ke mwen vle fè. Men, ou pral wè sa a, tou, nan pwoblèm mete sèt, kijan nou pèmèt ou sèvi ak nan menm fonksyon fè grap ak grap nan paj wèb diferan. Se konsa, olye ke rete twò pi plis sou sa yo details-- kote ou pral wè ankò nan pwoblèm seri seven-- kite pou yo gade a kounye a nan konmansman an nan yon solisyon nan yon pwoblèm plis enteresan. Konsa byen lwen, pa gen anyen nou te fè gen done sove. An reyalite, lè a sèlman nou te janm sove yon bagay nou te fè nan klas sa a se lè nou te gen yon Demo trè senp yon ti moman tounen, annakò ak sa nou itilize dosye IO nan C, e mwen panse mwen tape nan non mwen, epi Non Hannah la, ak non Maria a, oswa petèt Non Andy a, ak lè sa a nou sove yon file-- CSV vigil separe valè dosye-a. Apre sa, nou itilize fopen-- Mwen panse ke nou itilize fprintf jan mwen sonje, epi nou sove yon dosye-a. Koulye a,, se sa ki pi senp la fòm yon baz done. Si ou vle fè yon sit entènèt pou a Pwogram Frosh IMS, annakò ak sa elèv premye ane ka enskri pou yon espò, ou depreferans vle fè yon bagay ak sa done. Semèn pase a, nou te fè sa pa gen anyen ak data-- nan nou jis te di, w ap anrejistre, pa vrèman. Oswa petèt mwen kouriyèl nan PROCTOR, ak sa ki te li. Men, li ta dwe nice si mwen te kapab bay ki PROCTOR yon dosye CSV, tankou yon dosye Excel. Oswa pi bon toujou, li ta dwe nice si mwen te kapab mete non moun ki itilizatè 'ak dòtwa non ak nan tout sa nan yon baz done ki jis ap viv sou pou tout tan, jouk tan mwen chwazi yo efase done yo. Yon baz done ki pèmèt m 'sijè rechèch enfòmasyon. Ak tout bon, se sa ki yon baz done se. Nou entwodui jodi a, e semèn pwochèn, tou, yon teknoloji rele SQL yon rekèt estriktire Lang, ki se yon lòt lang. Li nan esansyèlman se yon pwogram ak lang, men pou baz done. Apre sa, yon baz done pou kounye a, jis panse a kòm yon vèsyon super anpenpan nan Microsoft Excel, oswa Google Tableur, oswa Apple Numbers. Li nan jeneralman yon pwogram ki pèmèt ou nan magazen yon pakèt antye nan done nan ranje ak kolòn, byen tankou ou ta ka nan Excel. Men, sa ki nan bèl, espesyalman si nou pa super abitye avèk Excel, sa SQL pèmèt ou fè se sa a query enfòmasyon pa ekri liy nan Kòd kote ou ka, menm si ou baz done gen yon milyon dola ranje nan li, ou ka jwenn bagay sa yo Super vit. An reyalite, Excel se patikilyèman move nan aparèy televisyon HD done gwo. Lè an reyalite, jiska yon kèk ane de sa, yo te tounen soti Excel ta sèlman pèmèt ou nan magazen jiska 65.535 ranje nan data-- ki son tankou yon anpil, men nan la fwa mwen te yon elèv grad, ak mwen sonje Tripping sou sa a paske mwen te génération CSV dosye pou rechèch mwen epi mwen te vle analize yo byen vit pa jis ouvèti moute nan Excel. Natirèlman, òdinatè mwen an jis te fè aksidan, paske mwen te gen plis pase 65,000 ranje. Men, kote t '65.535 nan soti? Ki sa ki te fè Microsoft, prezimableman? Si ou se bon ak pouvwa ou nan de? Yeah, yo te lè l sèvi avèk yon 16-bit valè ki reprezante nimewo a ranje. Ak de a 16 se 65,536-- youn mwens, paske si ou zewo endèks vle di ke te an pi kantite ranje mwen te kapab genyen. Epi, se te jis yon desizyon konsepsyon. Pa ekonomize 16 Bits, yo limite m ' 16,000 ranje, olye pou yo 4 milya de dola, ki mwen te kapab te gen depreferans. Men, pou kounye a, nou ap ale nan prezante sa a plis nan yon kontèks entènèt. Ak sa ki nan bèl sou SQL se ke menm menm si li a trè pwisan ak bèl sofistike, li vrèman klou desann nan kat kle operasyon, kat kle fonksyon, si ou will-- chwazi, pou retwouve done, chèche pou done; efase oswa efase done; Insert pou ajoute ranje nan baz done a; ak jour. Se konsa, si ou te janm itilize Google Tableur, Apple Numbers, Microsoft Excel, ou te egzekite, gen plis chans, tout nan operasyon sa yo kòm yon moun pa jis lè l sèvi avèk klavye ou ak mouse-- mete done, lè l sèvi avèk je ou yo ka chwazi oswa rechèch pou done, oswa aktyalizasyon done, oswa efase done. Se konsa, sa sa vle di? Oke, pre-enstale nan CS50 IDE se yon pwogram yo rele miskl. Li se yon gratis, louvri-sous baz done sa a, se super popilè. Facebook, pou egzanp, sèvi ak li nan sa a jou, nan mitan lòt zouti yo ke yo itilize. Ak yon anpil nan sit entènèt trè popilè itilize l 'nan gwo pati paske li nan vit, ak paske li nan gratis. Menm si sètènman altènativ egziste. Se konsa, kèk nan ou ta ka travayèz ak altènativ pou pwojè final la. Sa a se yon D, pandan se tan, nan yon zouti ki baze sou wèb ki rele fpmyadmen. Li se yon konyensidans ki zouti ki baze sou wèb sa a tou se ekri nan yon lang, PHP, men ki sa li la vle di ke yo fè se ban nou yon sit entènèt ki baze sou koòdone nan yon baz done. Paske miskl tipikman se yon bagay, istorikman, ou ta kominike avèk sèlman ak yon liy lòd. Epi li ta ka super anmèdan ak Esoteric gen tape kòmandman textuelle nan chwazi done, insert done, ak efase done. Se konsa, gen kèk moun ki sou entènèt la te ekri yon pwogram ki baze sou wèb ki jis fè nou jere done yo nan baz done nou an. Se tankou doub klike sou Excel, ak kouri yon vèsyon ki baze sou wèb ladan l '. Ak sa ki w ap ale nan sèvi ak sa a pou finalman semèn pwochèn, pa nan p-mete sis, men se yo bati yon bagay rele CS50 Finans, ki ki pral gen yon baz done nan itilizatè yo, ki gen non itilizatè yo ak modpas, dola kantite lajan ke yo gen nan kont labank yo. Li k ap pase yo dwe yon bagay ou itilize nan magazen senbòl yo ak kantite yo ki nan aksyon ke itilizatè te achte lè l sèvi avèk vityèl dola ke ou pral bay yo. Epi, se k ap pase yo ki pèmèt itilizatè pou w anrejistre pou sit ou, se konsa ke menm zanmi ou yo kapab melodi nan nan sit entènèt ou ak aktyèlman enskri, ouvri sesyon an, ak jwe otou epi eseye jwenn fòt nan kòd ou a, epi eseye jwenn pinèz nan sit entènèt ou. Apre sa, yo pral tou senpleman enskri pa ajoute tèt yo, efektivman, via Kòd ou ekri nan baz done ou yo. Pou egzanp, sa a se yon D rapid nan sa ki yon baz done ta ka sanble. Sa a te nan youn nan solutions-- ane pase a sa a, se tankou yon mini Excel ranpli, ki estoke nan baz done nou an, ki estoke nan lojisyèl sa a yo rele miskl. Sou bò men gòch, mwen te aparamman bay chak itilizatè yon nimewo inik. Nan dezyèm kolòn nan, mwen te bay tout moun yon itilizatè name-- pwòp mwen pami yo. Yo, epi sou bò nan men dwat, Mwen te ba yo yon regle. Koulye a, sa a se aktyèlman yon modpas, men li la pa yon modpas tèks plenn. Li se yon modpas chiffres, si ou pral, oswa yon modpas regle. Ki nou pral tounen vin jwenn anvan lontan. Men, si ou te janm li yon atik sou ki jan modpas ou nan kèk bank oswa kèk sit ta ka yo te konpwomèt, li ka jeneralman vle di youn nan de bagay sa yo. Se konsa, sa a se jis yon ekstrè nan sis itilizatè. Tout moun nan ou koulye a kapab konnen soti atravè ranje andedan oswa fann sa modpas sis moun nou an ye. Men, si ou te janm vinn yon alèt oswa yon ekskiz ki sòti nan yon konpayi oswa sou sit wèb li di, regrèt sa, yon HACKER te kraze nan baz done nou an, ou ta dwe pwobableman chanje ou modpas, sa ki ka sa vle di? Oke, yon sèl, te kapab vle di nan Konpayi te plis embesil, e li te estoke modpas ou nan yon kolòn tankou sa a, kode. Ki vle di lènmi nou yo, ki te vòlè baz done a, literalman konnen ou non itilizatè ak modpas. Sa a senaryo ki pi mal posib. Ak jan ou pral wè nan p-seri sèt, tèlman fasil pou fè pou evite. Gen se absoliman pa gen okenn eskiz pou sa fòm sòt nan entènèt la jodi a. Two-- epi n ap jwenn kèk atik a pral temwaye lefèt ke sa a toujou rive, nonetheless-- de, petèt lènmi nou yo te vòlè vèsyon sa-a nan baz done a. Ki se toujou kalite move, paske kounye a yo konnen ke mwen gen sis kliyan, Mwen konnen non yo itilizatè de sis kliyan sa yo, e mwen konnen chiffres nan vèsyon, oswa vèsyon yo ache, nan modpas sis kliyan moun '. Men, nenpòt nan nou ki ta ka te fè [? Pirataj 2?] kote ou fann modpas, oswa pran yon gade nan ki vèsyon an pwoblèm nan seri, poukisa se li toujou yon ti kras inkyétant si advèsè a konnen regle ou modpas? ODYANS: Paske yo te kapab antre nan diksyonè a tout antye nan fonksyon an regle. Men, si modpas ou a se yon diksyonè mo, [? yo ka jis match?] DAVID Malan: Egzakteman, lènmi nou yo ka jis ekri kòd, tankou kèk nan nou te fè pou [? Pirataj?] 2, kijan ou repekte sou tout nan mo sa yo nan diksyonè a, oswa tout konbinezon posib pou yon a Z ak youn nan nine-- ki son tankou yon anpil, epi li ye. Men, pou yon òdinatè, li nan trè reprize vit. Lè an reyalite, sa ki te nan pwen nan [? Pirataj 2,?] Te pran bagay ki literalman sanble tankou sa a, ak ranvèse enjenyè ki sa li aktyèlman te ye a. Se konsa, nou pral gade nan ki jan nou kapab magazen sa a pi plis efikasite. Vire soti, Erezman nan miskl, gen yo pral yo dwe done kalite. Ak youn nan pati pyès sa yo plezi sou konsepsyon baz done, yo dwe onèt, se aktyèlman n ap deside pou tèt ou ki jan ou ta dwe reprezante done yo? Ou ta dwe reprezante yon nimewo telefòn kòm yon int, tankou yon nimewo gwo, oswa yon tan? Ou, ou aktyèlman fè li kòm yon sekans nan charaktèr? Apre sa, ka trè enpak nan sa a ki pa Peye-trivial. An reyalite, youn nan la pi bonè, istwa plezi konvnabl se lè Mak Zuckerberg te bati Facebook, li te orijinèlman ekri nan, epi ou toujou ap se lajman ekri nan PHP. Ak youn nan pi gwo defi yo yo te fè fas byen bonè nan te dekale. Lè yo kenbe ajoute apre lekòl lekòl apre lekòl, nan mwen konnen, youn nan solisyon yo yo te orijinal te esansyèlman a kapab bay kopi ak keratin kèk nan baz done yo ak kèk nan kòd la, se konsa ke Harvard te kouri sou sèvè pwòp li yo, ak MIT te kouri sou sèvè pwòp li yo. Lè sa a te poukisa, pou kèk nan nou ki ta ka sonje, ou pa t 'kapab gen zanmi nan lòt rezo. Ou pwobableman pa gen zanmi nan MIT oswa Harvard 10 oswa konsa ane de sa, men ou pa t 'kapab span rezo pou an pati rezon sa. Ak youn nan pi gwo defi yo pou Mak ak pou konpayi tankou Facebook se aktyèlman manyen dè santèn ak dè milye ak dè milyon nan demann pou chak dezyèm. Se konsa, bagay sa yo nou pral kòmanse ap pale de semèn sa a se reyèlman ale nan dwe konvnabl nan ekri bon lojisyèl, ak populè zouti siksè ki ka okipe anpil nan itilizatè. Se konsa, nou pral pale sou bagay sa yo tankou Indexing ak chache, men sa se li pou jodi a. Nou pral wè ou pou plis nan Mèkredi. [MIZIK - "Seinfeld" tèm] DAVID Malan: ou kapab li, epi fè soustraksyon soti nan li. Apre sa, ou pa bezwen bwa avèk kèk kantite lajan pre-detèmine nan memwa. Oke, sa k ap ki pral yo dwe rele? Oratè 1: Oke, sa k ap pase sou? Oratè 2: Ki sa ou vle di? Li te bay yon konferans. DAVID Malan: Epi nou ka sèvi ak yon fonksyon rele malok memory-- Oratè 1: Poukisa yo pa bra l 'k ap deplase? Oratè 2: Bon that's-- ou konnen, sa a, se nòmal. Li nan jis tankou li te gen jis sosis gwo pandye la. Oratè 1: Sa a nòmal? Oratè 2: Yeah, mwen panse ke nou jis asime li aksidantèlman ranplase l 'ak deyodoran superglue.