>> [Jwe mizik]
>> DAVID J. Malan: Tout dwa.
Sa a se CS50.
Sa a se kòmansman an nan semèn uit.
Epi ou ka sonje ke nou te kite dènye fwa gade nan yon nouvo lang
tout ansanm.
An reyalite, yon sèl ki nan san patipri ki lejè epi li pa menm
yon lang programmation.
Li se yon lang markeup ki pèmèt nou aktyèlman estrikti yo epi fè paj wèb.
Men, lè ou yon lòt bagay nan konjonksyon avèk this--
oswa ou byento pral, si ou pa gen deja.
Nou pral sèvi ak kaskad Dra Style, oswa CSS, ki
se yon lòt di ki kalite lang ak pwopriyete ak valè
ki nan ale nan se pou nou fè bagay renmen chanje koulè a
ak chanje pozisyon nan ak sa yo kalite reglaj.
Men, jodi a ak pati, nou kòmanse konsantre sou lang plis pouvwa anpil,
aktyèl lang programmation tankou PHP.
>> Se konsa, PHP te alantou pou kèk tan.
Epi kòm ou pral wè, li te fèt prensipalman
byen bonè sou pou reyèl itilize nan devlopman entènèt
ak aktyèlman génération paj wèb.
Se konsa, sa kalite karakteristik fè yon lang
bezwen yo nan lòd fè entènèt Paj dynamique ak li?
>> Nan lòt mo, si ou vle jenere kontni dynamically-- tankou Facebook a
Nyoufid, ki chanjman toujou ap, oswa mesaj enstantane ki pòp moute soti nan tan
time-- tankou sa ki nan la moso kle nan fonctionnalités
ou bezwen nan yon lang programmation ki ta kite ou dynamique
enprime nouvo enfòmasyon nan ekran an?
>> ELÈV: Postal.
DAVID J. Malan: Postal.
OK.
Nou pral pran sa.
Yon ti kras plis presi.
Mwen vle di, nou te ka fè sa a ak C, franchman.
Li ta yon doulè nan kou a.
But-- se angajman sa a?
>> ELÈV: Yeah.
Varyab, petèt?
DAVID J. Malan: Varyab.
OK, asire w.
Varyab kapab sètènman ede nou deyò.
E menm yon bagay ki pi senp.
Nou itilize li nan an trè premye pwogram nan trè premye jou a
lè nou aktyèlman te di "alo nan lemonn."
>> ELÈV: Enprime.
>> DAVID J. Malan: Enprime, dwa?
Ekri an lèt detache, oswa printf nan la mond nan C. Se konsa, tout tan tout tan sa a,
nou te gen nan nou an jete yon language-- C,
nan particular-- e menm Grafouyen pou ki matyè ki
ka jenere strings nan tèks.
>> Bon, si HTML, kòm nou te wè semèn pase a, se jis yon pakèt antye nan strings nan tèks
kwake ak parantèz ouvè ak fèmen parantèz ak kèk kalite rime
ak rezon ki fè dèyè li, byen Lè sa a nou te kapab vrèman
kòmanse génération paj wèb swa manyèlman pa sezisman yo soti nan jdi
oswa nan Microsoft Word, pou ki matter-- nou jis bezwen yon editè tèks.
>> Oswa nou te ka ekri kòd, sijesyon ou
pi bonè, ki ta fè nou dynamique jenere HTML,
ak se sa ki nou ap ale yo kòmanse fè ak PHP
ak finalman menm avèk yon lang yo rele JavaScript,
se sèvi ak yon sèl lang yo jenere yon lòt.
Ak tout bon, sa a se sa Facebook ak anpil, anpil lòt sit
fè yo aktyèlman dynamique montre nouvo enfòmasyon nan ou.
>> Se konsa, kite a kòmanse ak yon this-- skre liy kap, men se yon sèl
sa a, se aktyèlman trè pwisan.
Se konsa, lwen, nou ve yo te lè l sèvi avèk C, ki se yon lang konpile.
Ak jis yon recap-- rapid yon konpile lang gen sa karakteristik?
Ou evidamman bezwen konpile li, men li ki sa sa vle di?
Yeah?
>> ELÈV: Li bezwen yo dwe reyini nan kòd machin.
>> DAVID J. Malan: OK.
Li bezwen yo dwe reyini nan kòd machin.
Se konsa, ou pran kòd sous ou a, ki se sòt nan angle-renmen.
Ou konvèti ke yo yon bagay pi ba nivo,
ki se finalman rele objè code-- 0 a ak 1 a.
Lè li nan moun 0 a ak 1 a ki yon CPU, tankou sa yo te fèt pa Intel,
aktyèlman konprann.
>> Koulye a, PHP ak Piton ak Ruby ak JavaScript ak grap nan lòt
lang yo pa konpile lang men entèprete lang,
ki vle di ou jis tape yo e yo Lè sa a, ou pa vire yo nan 0 a ak 1 a.
Ou olye jis bay Lè sa a, kòm D 'nan pwogram yon lòt moun nan,
rele yon entèprèt.
Epi moun sa a Pwogram te fèt
a konprann ki sa chak ak chak senbòl nan Piton oswa PHP
oswa Ruby oswa nenpòt ki kantite lòt lang vle di.
>> Se konsa, tout sa nou bezwen se yon bagay tankou sa a.
Se konsa, an reyalite, mwen pral ale sou nan aparèy la
isit la, jis nan nenpòt fenèt fin vye granmoun, epi nou ap
pral ale pi devan epi yo louvri yon dosye rele, di, hello.
Koulye a, deja, mwen ta ka gen sove sa a menm avèk yon ekstansyon dosye,
men mwen m 'pral fè yon bagay menm pi senp isit la.
Mwen pral ale pi devan epi kòmanse sa a ranpli avèk sa a sentaks skre.
Se konsa, "itilizatè, bin, ENV, pou anviwònman, PHP. "
>> Sa a se tou senpleman yon sèl liy nan kòd ki nan pral di sistèm opere m 'yo,
ale jwenn nan lokal ou a anviwònman tou sa se sa ki,
tout kote PHP is-- interpreter-- la ak ale pi devan epi sèvi ak sa entèprèt
ka esplike nou rèv Kòd sa a.
Koulye a, sa a se kalite yon karakteristik lèd nan PHP.
Men, nan lang sa a, nenpòt ki fwa ou ekri kòd PHP,
ou bezwen gen youn nan sa yo lèd Tags PHP delimiter nan konmansman an
nan ou code-- <? php.
>> Men, anba a isit la, mwen kapab kounye a fè yon bagay byen senp, tankou printf alo vigil
mond antislach n fèmen quote, fèmen parantèz.
Lè sa a, jis pou bon mezi, mwen pral
ale pi devan epi fèmen tag PHP m 'sou isit la
se konsa ke tout bagay sanble joliman bèl enprime.
>> Epi kòm pli vit ke mwen klike sou Save, jdi se aktyèlman entelijan ase
fè yon gade nan ki liy trè premye ak reyalize, o, w ap ekri kòd PHP.
Kite m 'sentaks rekò l 'ak koulè yo
isit la se konsa ke li vle di soti yon ti kras plis.
Men koulye a, mwen pral ale desann nan fenèt tèminal m 'yo.
Mwen pral rale nan.
>> Pwogram sa a te rele "hello," se konsa mwen pral fè dot koupe hello,
men pèmisyon refize.
Epi frape.
Nou aktyèlman tande pale de ki semèn bagay yon koup de sa
nan yon kontèks Shellshock, youn nan moun ki pinèz.
>> Men, pèmisyon refize nou te wè anvan, petèt nan yon kontèks diferan.
nenpòt moun ki sonje ki jan ou ta ka ranje yon bagay
ki kote yo refize pèmisyon tankou sa a?
Ki sa ki nan yo lòd, ki, nan omwen?
>> ELÈV: chmod.
DAVID J. Malan: Yeah, chmod, pou chanje mòd nan yon dosye.
Epi ou ap jwenn tout pi plis nan itilize yo sa a semèn pwochèn ak yon pwoblèm ki vin apre
mete.
Men, pou kounye a, mwen pral chanje mòd nan pa yo dwe lizib,
men yo bay tout moun executeability privilèj, kapasite nan
nan kouri sa a dosye.
Men, mwen pral yo asiyen ki nan dosye a hello.
>> Si m 'fè kounye a dot koupe alo antre nan, ou wè, an reyalite, pwogram m 'yo, alo nan lemonn.
Ak sa ki etap mwen te fè klèman sote tout ansanm?
Konpile.
Se konsa, mwen jis kouri pwogram sa a byen tou senpleman.
>> Epi li vire soti ou ka fè sa a ak yon anpil nan sentaks okoumansman de C.
Kite m 'ale nan nan kòd jodi a, ki mwen mete nan anyè vhost mwen
isit la, pou rezon reyèl nou pral tounen vin jwenn.
Men, mwen pral ale nan, kite la di, kondisyon 1.
>> Men, ou pral wè isit la, premye ak premye, yon pakèt antye nan kòmantè.
Men, sa a se aktyèlman yon re-kreyasyon nan PHP
nan yon pwogram nou te fè nan semèn yon sèl rele kondisyon 1.c
kote objektif la nan lavi nan pwogram sa a
se aparamman mande itilizatè a pou yon nonb antye relatif
ak Lè sa a fè kèk an gonfle analiz sou li annakò ak sa
ou di si li nan pozitif oswa negatif oswa egal a zewo.
Apre sa, mwen pote sa a moute sèlman paske, eksepte pou petèt yon ti kras detay,
li nan konfonn byen lwen tèlman soti nan C.
>> Ki sa ki nan yon sèl karakteristik la isit la ke petèt sote soti
nan ou kòm yon ti kras diferan?
Petèt de bagay.
Yeah?
>> ELÈV: Dola n mirak konsa?
>> DAVID J. Malan: Yeah.
Se konsa, n siy dola se prezan.
Epi siy dola, kòm nou pral wè, yo ale
yo dwe yon ranje nan konmansman an nan nenpòt ki varyab nan PHP.
Li nan tou de bon ak bad-- bon nan ke li nan sòt de evidan sa ki nan
yon varyab, move nan ke li nan ankò yon lòt bagay yo tape.
Apre sa, nan yon lòt bagay nou pa gen byen
wè, omwen pa òtograf sa a. yeah?
>> ELÈV: rèdlin.
>> DAVID J. Malan: rèdlin.
Rèdlin nou pa t 'wè, se pou chak, nan C, menm si gen egziste yon bagay
ki similè yo, men nou te itilize getstring, ak sa a se kontrepati li yo.
Se konsa, si mwen ale nan sa a anyè, ki k ap pase yo dwe,
kòm mwen pral eksplike nan yon ti jan nan vhost mwen anyè ak sous mwen Yon anyè,
ak m 'ale pi devan epi fè dot koupe conditions-- whoops-- dot koupe
kondisyon 1, ou pral wè, ankò, menm pèmisyon an issue-- refize.
>> Se konsa, kite m 'rale nan ak fè chmod yon plis x sou kondisyon, kondisyon koupe dot.
Mwen ta renmen yon nonb antye relatif, tanpri, 50.
Apre sa, nou te kapab jwe sa a jwèt tout lajounen.
Li nan ale nan konpòte egzakteman jan li te fè nan semèn yon sèl.
>> OK Se konsa, pa tout sa ki diferan, eksepte pa sèlman ke ti jan ti tay nan sentaks,
men nan tèt la, mwen ankò te gen liy sa a ki
pèmèt m 'nan kreye yon bagay ki sanble yon pwogram C rele hello,
rele kondisyon 1.
Men, li la pa 0 a ak moun yo Mwen egzekite dirèkteman.
Li nan olye pou kouri sa a entèprèt ki gen non
k ap pase yo ki idantik ak lang lan.
Pwogram nan rele PHP, ak kòd m ' pi ba pase liy yon sèl se ke yo te pase nan li.
>> Nou ka fè yon lòt san patipri ki senp egzanp okoumansman de yon bagay
nou te fè semèn de sa.
Yon fwa ankò, sa a se yon sòt de abitrè ti moso nan Kòd
ki aparamman fè sa lè ou kouri li?
Ki sa ki nan sa a pral enprime, prezimableman?
>> Se konsa, okòmansman sou liy 16, li nan pral di x se kounye a 2, pwobableman.
% D se menm bagay la kòm $ mwen pou printf.
Se konsa, Lè sa a, li la cubing, dot, dot, dot, nan liy 17.
Lè sa a, liy 18 parèt yo rele yon fonksyon Gleason.
Ak ki kote se Gleason defini?
>> Oke, li sanble nan liy 25, se konsa sa a, se pa tout sa ki diferan.
Mwen te gen kèk kòmantè pi wo a li, men pou pati ki pi,
li nan yon san patipri senp portability oswa konvèsyon
nan pwogram nan C rive nan vèsyon an PHP.
Men, gen yo kounye a se yon koup la diferans ke petèt ta dwe vole soti.
Ki lòt bagay se diferan sou fason ou ta ka ekri pwogram sa a menm nan C?
>> ELÈV: [fèbl].
>> DAVID J. Malan: Gen nan pa gen okenn pwototip moute tèt.
Se konsa, PHP-- ak franchman, yon anpil nan languages-- modèn
yon anpil pi entelijan ak plis ankò itil pase C konpilateur nan ke ou
ka mete fonksyon an moute isit la, ou ka mete yon fonksyon desann isit la,
ak entèprèt la ki pral fè ou favè a nan lekti
dosye an antye anvan li deside ke kèk fonksyon pa egziste.
Se konsa, amelyorasyon bèl ane pita.
Men, gen nan tou yon bagay lòt diferan oswa absan isit la.
Yeah?
>> ELÈV: [fèbl].
DAVID J. Malan: Nou pa bezwen deklare ki kalite varyab,
se konsa nou pral wè anvan lontan ke gen diferan nan PHP,
men ou pa bezwen presize yo, ki tou se tou de bon ak move.
Apre sa, nan yon lòt ki manke bagay.
>> ELÈV: Gen nan pa gen bibliyotèk yo.
>> DAVID J. Malan: Pa gen okenn bibliyotèk yo.
OK, se konsa sa a, se bèl.
Nou jwenn yon anpil plis soti nan bwat la.
Se konsa, gen nan aktyèlman yon anpil plis bagay pase mwen te panse yo te diferan.
Kouman sou fason nan do?
Ki sa ki nan sa?
Di li yon fwa plis?
>> ELÈV: Pointer.
>> DAVID J. Malan: Se pa pwent.
OK, omwen nan egzanp sa a, pa gen okenn.
Sa a san patipri.
Se konsa, pa gen endikasyon nan PHP aktyèlman an jeneral.
Gen yon bagay yo rele referans, men nou pa pral pase twòp tan la.
Ak sa ki lòt bagay?
>> ELÈV: Main.
DAVID J. Malan: Main.
Se konsa, sa a te biggie a Mwen te panse a.
Avi gen nan pa gen pwen antre prensipal la.
Ou tou senpleman kòmanse ekri kòd ou a.
Lè sa a se aktyèlman pral fè avantaje
lè nou tranzisyon ti tan yo aktyèlman lè l sèvi avèk
lang sa a menm pou web-ki baze pwogramasyon, pou ki nou
pa vle gen sèlman yon sèl pwen antre.
Nou ta ka vle gen yon pakèt moun sou URL, yon pakèt moun sou dosye diferan
tout pran nan D 'itilizatè ak pwodwi pwodiksyon.
>> Men, isit la se dekourajan nan anpil egzanp ke mwen te pwomèt dènye fwa,
sètadi nan sa a folder isit la, Misspellings.
Se konsa, nan sa a ortograf dosye, ki nou pa pral pase twòp tan sou li a, gen se
esansyèlman se yon porting-- P-O-R-T. Se jis nan pawòl Bondye a bay lè, di,
ou konvèti soti nan yon lang nan yon lòt manyèlman anjeneral.
>> Sa a se yon portability nan PC vèsyon an ortograf soti nan pset 5.
Apre sa, mwen esansyèlman te eseye konvèti li liy pa liy kòm byen ke mwen kapab.
Se konsa, si ou renmen sa a kalite bagay, li aktyèlman se vo nan kèk pwen
rale yo tou de moute kòt a bò ak wè sa ki nan menm bagay la tou
ak sa ki nan diferan.
Men, yo ap trè reprize menm jan an.
Si ou sonje sa ortograf menm te sanble ak,
menm si ou pa t ' gen chanje sa a ranpli,
li a trè menm jan an struktural ak jis yon koup
nan chanjman isit la epi gen.
>> Se konsa, sa a se sèlman yo di ke li a trè senp konvèti ortograf
soti nan C rive nan PHP.
Men, nan diksyonè, gen nan yon bagay menm plis irezistib.
Kite m 'ale pi devan epi kreye pwòp mwen dosye dictionary.php.
Se konsa, yon ti kras diferan nan ke nou pral rele li php olye pou yo c.
Paske sa a se yon dosye PHP, mwen do-- yon ti kras annoyingly-- gen
yo kòmanse dosye a ak yon tag PHP tankou sa.
Apre sa, mwen pral ale pi devan ak defini yon fonksyon kèk.
Fonksyon rele chèk, ki se pral pran nan yon mo tankou anvan an.
Men, agiman sa a nan ale nan gen yon dola
siyen paske nou ap, ankò, lè l sèvi avèk PHP.
Yon lòt fonksyon ki soti nan dictionary.c te chaj
epi li te pran nan non an nan yon diksyonè, Se konsa, mwen pral jwenn ke fonksyon pare yo ale.
>> Yon lòt youn nan dictionary.c te ki sa?
Size se te youn nan yo menm ki bèl, nan omwen si ou kenbe kèk varyab alantou.
se konsa gwosè jis gen retounen yon varyab.
Lè sa a, te gen dechaje.
>> Se konsa, te gen sa yo kat fonksyon nan pwoblèm mete 5
ke ou bezwen aplike ak kèk estrikti done oswa estrikti.
Se konsa, mwen te pwomèt ke nan PHP, nou ka deklare
yon tab regle, pou egzanp, tout sa ki pi fasil.
An reyalite, si mwen vle yon tab regle, Mwen jis ale nan ale tankou sa
ak gen nan tab regle m 'yo.
Epi sa a, nòt la, dekourajan, ki nou te kite nan dènye tan.
Epi ou konnen ki sa, si mwen te vle yon varyab pou gwosè, byen,
yon sèl sa a se pa tout ki diferan de C,
men mwen pral ale pi devan epi fè sa.
Ak Avi pa gen okenn kalite done.
Apre sa, mwen pral tounen pita ak aktyèlman ajoute kèk kòmantè isit la.
Men, sa ki sou chaj?
>> Si diksyonè siy dola se non an nan dosye mwen
ak mwen aktyèlman vle chaje mo nan tablo sa a kounye a,
Mwen ka aktyèlman fè yon bagay san patipri senp.
One-- ak sa a se minorly anmèdan nan PHP,
ou gen presize andedan nan yon fonksyon si ou
vle gen aksè a kèk mondyal varyab ki nan defini deyò.
>> Men, sa a pa patikilyèman enteresan kounye a.
Ki sa ki nan plis enteresan an se sa a pou chak konstwi ke mwen mansyone dènye tan.
Epi li vire soti ke PHP gen yon fonksyon rele dosye ki gen objektif nan lavi
se yo louvri yon dosye ak li nan tout nan liy li yo nan yon etalaj
ak men yo tounen nan.
>> Sa vle di mwen kapab fè diksyonè konsa ke kounye a efektivman lè m'ap rele ranpli,
sa a se pral nan men m 'tounen yon etalaj de mo nan dosye a.
Li pa tout sa ki bon.
Li nan toujou ale nan gen yon liy nan mo, yon bagay lineyè.
Men, mwen ka ale pi devan epi repekte sou chak nan mo sa yo lè l sèvi avèk
ki sentaks nou te wè yon ti tan dènye tan.
Epi ou pral wè li plis nan PSET kap vini an.
>> Men koulye a, mwen gen yon iteration bouk sou chak mo nan diksyonè a.
Yo, epi sou chak iterasyon, sonje mwen se rele pawòl Bondye a aktyèl "mo."
Apre sa, tout li a pral pou pran pou mete yon mo nan diksyonè a se
pral fè mo devine "vre."
Sa a fonksyon insert mwen.
Sa a fonksyon chaj m ' pou diksyonè m 'yo.
Koulye a, li nan yon ti jan nan yon tronpe, paske, ou konnen ki sa, gen nan aktyèlman
antislach n nan nan fen mo sa yo ke mwen ta dwe pwobableman debarase m de,
men sa a pa yon pwoblèm paske PHP gen yon fonksyon rele koupe ki literalman
chop koupe yon karaktè nan fen an trè.
Se konsa, pa gen okenn pwoblèm la.
Nou te ale vè lavan ak aktyèlman vin pi kout ki nan jis sa a.
Koulye a, mwen ta dwe pwobableman kenbe tras nan gwosè, kidonk kite a omwen fè this--
gwosè ++.
Mwen ka fè sa tankou anvan.
Lè sa a, sa a se pwobableman ale nan travay jis anfòm, se konsa ke nan retounen vre.
Fè.
Pset 5.
>> [Ri]
>> DAVID J. Malan: OK.
Nou pral fè sa ankò ak pset kap vini an, tou.
Se konsa, sa ki sou gwosè?
Oke, yon sèl sa a èspere ke se sou kòm ou ta atann dènye fwa,
byenke mwen dwe fè bagay sa a estipid mondyal.
Se jis nan yon asosye soti nan konsepsyon ak lang lan.
>> Men, chèk se yon ti kras plis enteresan.
Se konsa, si mwen te pase nan a an dola siyen mo, m 'premye
vle gen aksè a ki mondyal plase tab.
Epi, koulye a si mwen vle tcheke si yon mo ki gen la,
Mwen ka tou senpleman di si li se vre ke sa ki annapre yo se mete nan tablo a,
Lè sa a, ale pi devan epi retounen verite; lòt moun, retounen fo.
Fè.
Lòt mwatye a nan pset 5.
>> Tout dwa, se konsa ankò, mwen se koupe yon kwen kèk.
Nan etidye ekite Règleman, mwen ta dwe pwobableman depanse yon kèk plis segonn
sou aplikasyon sa a.
Apre sa, mwen pwobableman pa ta dwe rizib nan tout èdtan ou mete sou pset a anpil.
Se konsa, strtoloe se yon fonksyon.
Yon bagay ki sanble ègzistansyèl nan C, omwen pou karaktè,
men PHP a te resevwa yon vèsyon fisèl antye.
>> Sa k ap pase nan fòs tout bagay miniskil, ki kèk nan nou
ta ka yo te fè sa ki canonicalize ou te mete an nan diksyonè ou yo.
Epi, koulye a ou ka fè sa nan C, tou.
Sa a pa gen anyen fè ak PHP.
>> Men, nenpòt ki lè ou gen yon kondisyon Boolean,
tankou yon bagay sou liy 10 la, ki se sèlman
ale nan evalye vre oswa fo, ak ou a si lòt bagay byen klè
ki retounen vre oubyen fo, mwen te kapab tou senpleman vrèman fè sexier sa a
ak jis fè yon bagay tankou sa a.
Se konsa, ki gen la fonksyon chèk mwen.
Dwa, si Boolean a retounen yon vre oubyen yon fo,
kite yo jis retounen li dwat lwen.
>> Apre sa, nan yon kèk lòt reglaj Mwen te kapab fè isit la epi gen.
Load-- dechaje, nan chemen an, ki nan fè.
Pa gen anyen fè a.
Depi tout nan memwa a nan PHP ak anpil lòt lang
se aktyèlman jere pou ou.
Se konsa, Lè nou konsidere ke nan C, kòm ou te aprann gwo soufwans,
anyen ou malok oswa calloc oswa realloc, ou gen yo libere tèt ou.
Nenpòt bagay ou fopen, ou gen yo fkloz, se konsa ke resous yo finalman libere
ak zouti tankou Valgrind pa fè sa remake epi yo pa pote plent,
ki se yon bon bagay nan kouri sou yo.
>> Men, siman, gen dwe gen kèk trape, dwa?
Sinon, nou kalite gaspiye yon pakèt antye nan semèn.
Se konsa, gen nan nenpòt ki nimewo nan rezon poukisa nou sòt de pran trajectoire sa a,
men gen yon komès-off.
Dwa, sa a te gen tematik.
>> Se konsa, sa ta ka yon komès-off isit la k ap deplase, ki soti nan C rive nan PHP?
Santi l tankou tout genyen byen lwen tèlman lòt pase yon ti jan nan ledeur isit la oswa gen.
Yeah.
Ki sa ki nan sa?
>> ELÈV: [fèbl] memwa.
DAVID J. Malan: vitès.
OK.
Oke, vitès m 'te trè vit.
Dwa?
Men, vitès nan ekzekisyon nan pwogram lan?
OK, se konsa sa a, se yon pwen ki jis.
>> Se konsa, kòm li ta rive, mwen nan avanse siy moute tou de solisyon eseye m 'yo, yon sèl la
Mwen te gen sou tablo a gwo te yon solisyon eseye ki baze sou,
epi mwen te gen ki nan anyè sa a isit la.
Se konsa, mwen nan yon moman, mwen ka ale pi devan epi kouri sa a sou FREE Online Haitian Creole a,
frape Antre nan.
Lè sa a se èspere ke kòrèk aplikasyon nan fen a,
ki ban m 'tan nan manm nan 0.38 segonn pou ki
yon sèl yon ti jan abitrè egzanp.
>> Men, si mwen kounye a ale nan sa a dezyèm fenèt tèminal
isit la kote m 'premye louvri jdi, se pou m 'ale nan code-- jodi a ki, ankò,
se nan anyè sa a isit lan-- ak kite m 'ale pi devan epi kouri ortograf.
Se konsa, jis yo dwe klè, sa a se vèsyon an PHP.
Mwen jis ki montre tèt la nan li isit la.
>> Se konsa, si m 'fè ortograf nan tild CS50 Pset 5 tèks, Haitian Creole, antre.
Li nan toujou pi vit pase ekri li nan C, men fwa a total
se, avi, 0.93, tandiske mwen C-ki baze aplikasyon te 0.38.
Se konsa, li yon diferans ki pa trivial.
>> Lè sa a se jis sou yon sèl dosye-a.
Si ou te kouri de a pwogram kont tablo a gwo
epi yo gen yon pakèt antye nan entrain teste yo, sa a ta siman ajoute jiska.
Men, si nou te gen menm pi gwo aparèy televisyon HD done, sa a, tou, ta ajoute jiska plis nan tout.
Se konsa, repons lan se wi, peye kèk pri nan vitès se vre ka a.
Ki lòt bagay?
Yeah?
>> ELÈV: Kantite lajan pou itilizasyon RAM.
>> DAVID J. Malan: Kantite lajan pou itilizasyon RAM.
Se konsa, mwen pa t 'bay yon sèl dezyèm fwa te panse lè li ap ekri PHP sa a
vèsyon ki di kòman anpil memwa mwen te lè l sèvi avèk.
Mwen konplètman Reporters ke yo PHP tèt li ak moun ki va ekri pwogram sa a.
Epi ke sa ta kapab OK, men si mwen aktyèlman vrèman
pran swen sou peze kòm anpil pèfòmans soti nan pwogram m 'oswa soti nan sit entènèt mwen an
oswa soti nan tou sa zouti Mwen bati, petèt
PHP, tout bon, se pa lang lan dwat.
>> Ak an reyalite, se pou sa, pou egzanp, anpil serveurs entènèt
pwogram yo reyèl ki sèvi moute content-- entènèt
yo pa ekri nan PHP oswa nan Piton oswa Ruby.
Yo ekri, tankou ou pral kounye a fè ak pset 6,
nan C pou ke ou ka peze chak ti jan nan pèfòmans soti nan li
ak reyèlman fè egzèsis kontwòl amann-grenn jaden sou sa ki nan
ale sou anba a kapo epi li pa jis pran li
pou yo akòde kèk pi wo nivo done estrikti.
>> Konsidere, apre tout, moun ki va aplike nan PHP
ki nosyon nan yon regle table-- li la aktyèlman plis
byen rele yon array-- asosyatif fè li oswa li te gen okenn lide ki kalite
nan entrain ou yo ale nan gen mete nan estrikti a?
Se konsa, evidamman pa, dwa?
Li se yon zouti jenerik nan bwat zouti a ki nan
bay nenpòt moun ki vle yo sèvi ak li, ak pou siman li
pa ka optimisé finalman pou egzakteman sa ou vle fè.
>> Se konsa, komès-offs-- tan devlopman ta ka diferan, pèfòmans ta ka diferan,
konpleksite oswa itilizasyon memwa ta ka diferan.
Se konsa, sa w ap jwenn de pli zan pli se ke gen nan
ale nan kapab diferan zouti pou komès la.
Ak an reyalite pou yon majorite super nan pwojè final moun nan nan klas sa a,
kwè li ou pa, C pa pral yo dwe lang nan dwa sèvi ak.
>> Ak an reyalite, youn nan takeaways yo finalman pou nenpòt ki klas tankou sa a
se jwenn ou panse sou, byen, sa ou ta dwe rale desann
etajè a lè ou vle yo rezoud kèk pwoblèm.
Ak tout bon, nou pral travèse pon sa a menm plis kòm nou gade nan plis lang
menm pi lwen pase jodi a.
>> Se konsa, nan kite tranzisyon kounye a petèt yon kontèks plis abitye
pou lè l sèvi avèk yon lang tankou PHP.
Li nan yon ti jan komen yo sèvi ak nan liy lan bay lòd, ekri Scripts
tankou m 'te fè, men li la anpil, pi plis komen.
Epi li te gen entansyon yo dwe itilize nan fòm lan nan dosye ki tipikman fini
nan .php-- men sa a pa yon prerequisite--
ki tèt yo jenere kontni sit entènèt.
>> Se konsa, kite m 'ale pi devan epi louvri yon kèk egzanp mwen prepare an davans.
Ak sa yo yo aktyèlman sòt de vrè istwa nan ke youn nan bagay ki premye
M 'fè tèt mwen apre fini CS50 e petèt, mwen panse,
Ane de sa CS51 se m ' kolokasyon ak mwen te ede
nan kouri intramural nan nevyèm ane pwogram espò, ki, nan moman an,
te nevyèm ane enskri pou divès kalite espò lè w ranpli yon moso papye,
kòm li te rele, ap mache atravè lakou a Wigglesworth,
ak jete li nan kèk pòt gout siveyan an.
Lè sa a, li oswa li te ta ale nan yo e yo Lè sa a, aktyèlman imèl nou manyèlman
ke nou te anrejistre pou kèk espò.
>> Se konsa, byen klè, yon opòtinite pou amelyorasyon.
Jou sa yo, ou ta ka tounen vin jwenn jis Google Fòm, men tounen nan jou a,
nou te aktyèlman rive jwenn for-- sa a pa te menm ki long ago-- rive jwenn
pou yon pwogram lang ki pa te PHP.
Nan moman sa a, li te yon bagay yo rele pèrl,
ki te ale soti nan lamòd depi.
Men, lide a se menm bagay la.
>> Apre sa, mwen esansyèlman chita, yo eseye nan pò ale vèsyon pèrl PHP,
men nan plen dechajman, pa t 'bay nenpòt ki te panse yo estetik yo jis ankò.
Se konsa, isit la se yon paj entènèt.
Sa a se yon dosye.
Si m 'rale nan, li aparamman rele froshim0.php
jis paske li nan premye nou an egzanp nan seri sa a.
Ak avi ke li gen sa ki parèt yo dwe yon fòm HTML trè lèd,
men yon fòm se enteresan paske li pèmèt
m 'bay opinyon itilizatè nan navigatè a.
>> Koulye a, dènye fwa lè nou te gen yon fòm, ki moun nou te soumèt paramèt rechèch nou an,
paramèt la keu jan li te rele?
Se konsa, sou Google, dwa?
Nou totalman punted sou lide a nan fè anyen ak sa D '.
>> Men, jodi a, nou kòmanse pwodwi pwodiksyon.
Ak konpòtman an, mwen pral wè isit la okòmansman se trè trivial.
David, mwen pral tcheke sou sèks isit la, yo di Matthews isit la.
Mwen pa yo pral kòmandan.
Mwen pral klike sou Anrejistre.
Ak Avi ki URL la gen chanje yo enskri-0.php,
ak Lè sa a, gen nan sa a tèks lèd isit la.
Mwen pa te bay okenn te panse yo fòma a nan sa a.
>> Men, sa ki enteresan an se ke twa valè yo te aparamman te pase nan.
Sa a se sòt nan nan PHP ekivalan a printf
nou pral wè ki sa li la reyèlman rele nan yon bit-- ki jis simagri soti
sa ou te pase nan li.
Se konsa, sa a sijere ke ke fòm te gen omwen twa jaden nan li,
epi ou te wè m 'tape yo nan.
Non mwen yon sèl te, yon sèl te sèks, yon sèl te dòtwa.
Epi kòmandan pa t 'menm jwenn voye bay sèvè a paske mwen pa t 'tcheke li.
>> Se konsa, sa sa a vle di aparamman, lè ou soumèt bagay sa yo sou entènèt la,
pa sèlman fè sa ki URL la pafwa change-- pafwa li pa fè sa.
An reyalite, non an dosye chanje, men sa ki absan nan URL la
ke nou te fè wè dènye fwa ak Google.
Yeah?
>> ELÈV: Pa gen fisèl rechèch
>> DAVID J. Malan: Gen nan pa gen fisèl rechèch.
Gen nan pa gen kesyon mak yon bagay.
Gen nan pa gen q kesyon mak egal chat, jan nou te fè dènye fwa.
Apre sa, nan sètènman pa gen okenn Non kesyon mak egal
David oswa dòtwa egal Matthews, se konsa ki kote ke tout prale?
>> Oke, kite m 'ale tounen nan jdi isit la epi louvri moute premye a nan sa yo dosye
nan vhost mwen, lame lokal yo, piblik anyè isit la ak ale nan froshim0.
Se konsa, li sanble ke prèske tout nan paj sa a se jis HTML.
Lè sa a ta ka abitye avèk wout yo ou, men li byento yo pral plis konsa ak pset 6
ak pset 7 ak PSET 8.
Men, sa a se jis yon paj HTML.
>> Epi bagay la enteresan sanble ap sou isit la.
Yon tag fòm ki gen aksyon atribi te gen yon valè nan enskri 0.
Se poutèt sa lè m 'soumèt sa a, li ale nan ki dosye.
Men, metòd ki diferan post today--.
Se konsa, li vire soti gen nan omwen de metòd sou entènèt la itilize
voye enfòmasyon soti nan navigatè nan sèvè.
Jwenn mete l 'nan URL la.
Post mete l 'yon lòt kote.
Lè ak poukisa ta ka ou aktyèlman vle yon sit entènèt
yo sèvi ak post Lè sa a, olye pou nan jwenn, jis entwitif?
Nenpòt sit entènèt.
Ki kalite done yo ta dwe te pase jis pa enferans kounye a via pòs tankou yo te opoze
yo ka resevwa, si nou te wè de diferans ki genyen yo?
ELÈV: [fèbl] sekirite.
DAVID J. Malan: Si ou vle yon bagay yo dwe an sekirite.
Se konsa, ou ta ka tape yon modpas nan yon sit entènèt, yon kat kredi
nan yon sit entènèt ta kalite sa yo optimal
si navigatè a mete sa valè andedan nan URL la.
Poukisa?
Ou wè li, ki pa fè sa sanble yo gen tankou yon kontra gwo,
men chans yo se ou bèl souvan mache lwen òdinatè oswa itilize òdinatè w lan
laboratwa, ak pou yon moun lòt oswa menm yon kolokasyon
te kapab fasilman mache moute ak wè ke enfòmasyon prive.
Lè ou voye yon imèl atravè entènèt la, pwobableman ou
pa vle ke fini done moute nan URL la kòm byen.
Se konsa, gen nan nenpòt ki nimewo nan rezon poukisa nou ta ka vle mete l 'isit la.
Epi photos-- dwat, mwen pa kapab menm byen imajine ki jan ou ta pran yon grafik,
tankou yon JPEG, epi li mete l 'nan yon URL.
Ou te kapab fè li.
Genyen fason pou kodaj li, men li la jis pa dwat tankou sa.
>> Se konsa, enskri 0 se aktyèlman trè underwhelming.
Tout li di literalman se sa a.
Li simagri soti andedan nan kèk Tags HTML sa ki annapre yo.
Mwen te gen yon tag PHP isit la pare solèy andedan nan yon tag pre.
"Pre" jis vle di pre-formate tèks, Mono-espace, tankou yon typewriter.
>> Printr se yon ekri an lèt detache repetitif fonksyon.
Lè sa a, gen nan sa a enteresan bagay isit la.
Apre sa, nou pral tounen vin jwenn sa a paske gen nan lòt moun,
men souliye siy dola pòs parèt yo dwe
yon varyab nan PHP nan ki anyen ou voye nan navigatè nan sèvè
vin estoke pou ou.
Epitou, n ap wè ki jan yo ka resevwa nan ke enfòmasyon anvan lontan.
>> Men, anvan, se pou yo tounen nan yon ti kras diferan egzanp.
Ale nan register-- oswa olye, froshims1.php,
ki sanble yon ti kras diferan.
Mwen te pran yon ti kras pi plis efò ak fòma,
menm si li nan toujou trè lèd.
Men, mwen pral ale pi devan ak kalite nan "David" kounye a.
Gason.
Nou pral tcheke "kòmandan" moman sa a.
Nou pral fè Matthews.
Epi enskri.
>> Ak tan sa a li di, HM, pa vrèman.
Tout dwa, se konsa sa ki nan enskri 1?
Kite m 'ale nan ouvè enskri 1 and-- HM.
Tout dwa, kidonk sa a se enteresan, ak sa a
se yon wòch kite nan direksyon kounye a pwogram plis enteresan.
>> Avi tèt la nan sa a ranpli gen yon PHP tag kòm byen ke kèk kòmantè.
¶ Men, pou kounye a, yon distraksyon se konsa kite yo jis debarase m de sa yo kòmantè
jis tankou yo ap nan C. Apre sa, mwen fè reklamasyon ak sa a ti moso nan Kòd ak yon kòmantè
ke kòd sa a se validation soumèt a.
>> Oke, li sanble ke varyab tankou siy dola
souliye pòs yo rele global super.
Yo ap tankou sa yo varyab mondyal espesyal
ki yo se jis omni-jounen jodi a disponib nan pwogram ou an.
Epi ou ka itilize notasyon bracket kare endèks nan yo pa lè l sèvi avèk nimewo
tankou 0, 1, 2, 3, men pawòl vrè.
>> Se konsa, ou ka panse a siy dola souliye pòs kòm sòt de yon tab regle
ke ou ta ka pase yon kle nan, yon Passage mo nan-ant parantèz yo kare,
ak li a pral ba ou tounen nan valè ki itilizatè a aktyèlman bay la.
PHP gen yon fonksyon rele vid ki jis
di repons lan se wi oswa ki pa gen, sa a varyab se vid oswa ou pa.
Nou gen sa yo ba doub, ki jis vle di oswa, tankou nan C.
>> Se konsa, nan efè, liy sa a 4 se jis li di si itilizatè a pa t 'bay yon non
oswa ou pa t 'bay yon sèks oswa pa t' bay yon dòtwa, ale pi devan ak redireksyon l '
oswa li via liy sa a isit la.
Se konsa, sa a se yon ti kras skre, men sa a jis vle di literalman
tounen nan kote sa a, se konsa li punts itilizatè a
tounen nan tout kote li oswa li te te soti nan.
Men, li la yon ti kras élégans nan ke mwen difisil kode li.
>> Men, sa ki si sa a si kondisyon pa evalye vre?
E si itilizatè a t 'ban m' l ' oswa non li yo ak dòtwa ak sèks?
Sa si kondisyon la pa ale nan evalye vre,
Se konsa, mwen pa frape sòti nan nan liy 7.
Se konsa, sa k ap pase?
Lè sa a se sa ki nan enteresan sou PHP.
>> Ou ka lage nan ak soti nan PHP mòd, se konsa pale.
Si ou vle kèk kòd al touye, ou ka ouvè epi fèmen yon tag PHP
epi li mete kòd la tankou mwen te fè isit la.
Le pli vit ke ou fèmen tag nan PHP, sèvè a
se jis ale nan krache soti tou sa ou mete ladan l '.
Ak tout bon, sa a te yon pati nan konsepsyon orijinal la nan PHP,
pou pi bon pou vin pi mal, te sa a commingling nan kòd ak markeup
lang.
Epitou, n ap wè ke sa a trè byen vit devolu nan yon dezòd.
Se konsa, nou pral fè pi bon pase sa a finalman, men jis
remake fasilite la ak kote mwen se aktyèlman kapab egzekite kèk lojik.
>> Men, toujou yon ti jan underwhelming.
Se pou nou louvri moute vèsyon de nan IMS Frosh, ki
aparamman soumèt ba register2.php.
Se konsa, sa a ranpli ki aktyèlman pral yo gade prèske menm bagay la.
Mwen pral pou yo ale nan IMS Frosh 2.
Men, nan IMS Frosh 2, kite a wè sa ki rive.
>> David, klike sou bouton an radyo, kòm sa yo rele; Matthews, pa gen chèf.
Enskri.
Ou ap anrejistre.
Pa vrèman.
O rete tann, nou jis te fè ki egzanp, pa t 'nou ye?
Tout dwa, rete kanpe bò.
Nou pral fè twa la.
Klèman yon bagay a sou rive ak Gmail.
Nou pral jwenn la.
>> Se konsa, IMS Frosh 3 sanble tankou sa a.
Pa diferan.
Men, lè m 'fè David, gason, Matthews, ak enskri, sa a twazyèm ak dènye vèsyon
reklamasyon, byen tou senpleman, ou yo anrejistre vrèman.
Sa a sòt de indiféran.
Men, mwen fè reklamasyon ak sa a twazyèm ak dènye vèsyon
Mwen te kounye a rkre ekzakteman ki sa mwen kolokasyon ak mwen bati pou IMS Frosh yo
ane pwogram de sa.
Epi li te senp.
Pa te gen okenn baz done, pa gen okenn Excel calcul.
Men plis enpòtan, pa te gen okenn papye plis
paske sa nou te fè ak pwogram sa a te aktyèlman voye yon imèl ba siveyan an, ki moun ki
te deja resevwa bagay sa yo atravè fòm.
>> Ak aparamman nou te pwograme sa a nan yon fason ke lè yon moun anrejistre,
Imèl kont Jan Harvard la nan proctor-- oswa tèt li nan ka sa a,
Jan Harvard ak sa ki annapre yo text-- "Moun sa a jis anrejistre."
Non se David, kòmandan se vid; sèks, gason; ak dòtwa, Matthews.
>> Se konsa, sa ki te pase a?
Oke, dosye a nan kesyon isit la se aparamman register3.php.
Men, si mwen louvri sa a, ou ap wè tou de pouvwa a nan Kòd tankou sa a
epi tou, franchman, ensekirite a nan yon sistèm tankou imel.
Mwen te jis efektivman pran pòz gen Jan Harvard nan fason ki anba la a.
>> Mwen gen tag nan PHP louvri moute tèt, ki jis di isit la vini kèk kòd PHP.
Desann isit la, vire soti gen yo se bibliyotèk nan PHP.
Ou jis pa bezwen gen ladan dosye header kòm anpil.
Ou jwenn plis ak nan koule kwizin, se konsa pale.
>> Men, tan sa a nan liy 4, m 'fè vle bibliyotèk espesyal ki rele
PHP Mailer, ki se yon bagay ou ka enstale pou gratis nan anpil sistèm yo.
Desann isit la mwen validation soumèt a jis
lè w tcheke t 'itilizatè a bay m 'yon non, yon sèks, ak yon dòtwa.
Men, si se konsa, ale pi devan epi enstansye yon Mailer.
>> Ou ka panse a sa a tankou se te yon liy nan kòd ki jis repati.
Se tankou malok, men li nan yon ti kras sexier
nan ki ou mansyone pa sèlman malok ak kèk nimewo jenerik.
Ou di, ban m 'youn nan sa yo, ban m 'yon nouvo youn nan sa yo.
>> Men, si ou te pwograme nan Java oswa C ++ oswa lòt lang,
ou ta ka gen pou wè sa a.
Men, kout la nan li, si abitye, liy sa a
mete nan lapòs siy dola yon struct espesyal ki rele
yon objè ki te bati-an imel fonctionnalités.
Ak an reyalite, remake ak menm jan an sentaks.
>> Sa a se pa yon konsèy, se pou chak.
PHP jis itilize menm sentaks la.
Se liy sa a li di itilizasyon SMTP-- Senp Mail Transfè
Pwotokòl, ki se jis nan pwotokòl itilize yo voye lapòs.
Sa a se ki espesifye itilize SMTP sèvè Harvard la, ki
se yon kote isit la sou lakou lekòl la.
>> Sa a se li di sa ki tchp pò nimewo pou pale ak,
epi mwen jis kalkile ke soti nan googling oswa pa mande biwo a èd.
Lè sa a, paske Harvard sèvi ak kèk sekirite sistèm sou sèvè a lapòs
omwen yo ankripte trafik ant ou menm ak li,
menm si nenpòt moun ka voye bay l-- Mwen pral vire sou pwotokòl la tl
pou kenbe sa a an sekirite.
>> Men, sa a se kote bagay sa yo jwenn yon ti kras pè.
Mwen ka jis abitrèman di mwen ye jharvard,
ak mwen ka jis abitrèman voye yon imèl ba tèt mwen isit la.
Lè sa a, mwen ka presize yon sijè ak liy sa a isit la.
>> Lè sa a jis sanble lèd, men li la jis yon pakèt moun sou seri.
Vire soti PHP gen yon senbòl super itil, tankou kèk lang, operatè a dot,
ki jis literalman konkatèn fisèl apre fisèl apre fisèl,
epi ou pa gen yo malok oswa figi soti longè total fisèl la.
Ou jis fè li.
Ak tout bon, paske mwen konkatenan nan tout bagay sa yo ak pwen sa yo,
Se poutèt sa imel mwen an voye gade jan li te fè.
>> Lè sa a, anfen isit la, mwen voye lapòs.
Se konsa, si sa a se fo, Mwen jis pral mouri,
ki se yon fonksyon ki jis simagri nan ekran an kèk mesaj erè.
Men, li se, an reyalite, rele fonksyon an voye.
Sinon, si tout bagay sa yo echwe, li redireksyon m 'tounen isit la.
>> Epi poukisa t 'mwen wè ke Mwen anrejistre vrèman?
Oke, li te rive isit la menm.
Se konsa, mwen pote sa a moute pou yon koup la rezon.
>> Youn, sa a se egzakteman ki jan si ou bati kèk sit entènèt pou yon pwojè final
oswa pou mond reyèl la, sa a se ki jan ou voye rapèl imel
nan kliyan ou a oswa abonnés ou.
Sa a se fason ou voye rapèl modpas.
Sa a se ki jan ou voye moun mesaj yo ke yo gen yon nouvo Facebook
mesaj annatant oswa yon bagay tankou sa.
>> Men, li tou pale ak lefèt ke sa a te kapab
yo te trè byen soti nan Davin oswa nenpòt lòt moun.
Apre sa, mwen di sa a kalite ak yon souri paske mwen se
byen asire ki sa k ap pase nan plizyè nan panse nou nan pwen sa.
Men, sa a se youn nan moun fè menm bagay mwen di, pa jan mwen fè kalite bagay sa yo,
paske li se trivial fòje Imèl tankou sa a.
Men, jan ou ka wè oswa li nan Crimson la,
nan byen ta nan li a tou trè trivial pou moun
trase yo tounen nan kèk orijin.
Epi mande m 'kèk tan, petèt yo nan manje midi CS50, ki jan m 'premye
sot konnen trè sere prèske nan tablo ed anpil ane yo
de sa lè mwen te dekouvri ki jan entènèt la te travay.
Se konsa, nan nenpòt ki case-- yon ti kras apre tablo a ed te fè sa.
>> Se konsa, nan nenpòt ka, gen yon pakèt antye nan global super,
menm jan yo ap rele isit la, youn nan ki nou saw-- post dola souliye siy.
Genyen nan yon kontrepati rele jwenn, ki se kote bagay soti nan yon URL
fini moute prale.
Apre sa, nan yon pakèt antye nan lòt moun, sesyon too-- ak sèvè ak bonbon.
Nou pral tounen vin jwenn bonbon kèk lòt tan,
men sesyon se kalite fre paske kounye now-- jiska now--
tout sa nou te fè ak yon navigatè entènèt se sòt de atach avèk okenn peyi, se konsa pale.
Mwen ka klike alantou li, aksè dosye sou sèvè, yon bagay nan
k ap pase sou ekran an, men Lè sa a, koneksyon an fèmen.
Explorer a Entènèt oswa nan Firefox icon sispann bondi
epi ou jis wè sa ki ki paj entènèt gen.
>> Se konsa, HTTP se atach avèk okenn peyi nan ki yon fwa li fè yon koneksyon,
vin kèk done, sa a, se li.
Pa gen koneksyon plis, kontrèman ak Skype, kontrèman ak FaceTime, kontrèman ak GChat, ki
kenbe yon konstan koneksyon sou sèvè a.
Entènèt la se fondamantalman dekonekte, menm si nou pral
wè anvan lontan ki jan nou ka simulation bagay
tankou Facebook chat ak GChat, ki kenbe illusion-- la
oswa aktyèlman fè kenbe yon koneksyon konstan lè l sèvi avèk
plis modèn teknoloji.
>> Men, si m 'ale nan, di, counter.php, sa a se yon lòt egzanp ki senp,
jan nou pral wè, ki kounye a panse Mwen te vizite sit zewo tan an.
Men, si mwen tou senpleman Reload paj la, li yon jan kanmenm konnen mwen te isit la anvan.
Si m 'Reload ankò, li konnen mwen te isit la anvan.
Epi ankò, li ankò e ankò epi ankò.
>> Se konsa, gen nan kèk plis-plussing ale sou, men avi
bagay la ti kras vire janm konsa yon ti tan moute tèt ak Lè sa a dekonèksyon,
se konsa li pa nan renmen mwen gen yon konstan koneksyon sou aparèy m 'yo.
Oke, si mwen ale nan counter.php, avi ki jan senp li ye.
M 'premye rele sa a espesyal fonksyon ki nou pral byento
kòmanse pran pou yo akòde rele kòmansman sesyon.
Kòmanse yon sesyon.
>> Ak yon sesyon koulye a se jis pral gen yon bokit, tankou yon makèt
kabwa nan ki ou ka mete valè ak kalite konfyans kòm yon pwogramè
yo ke yo ap ale nan dwe isit la lè ki itilizatè vini back-- yon dezyèm
apre, yon èdtan pi ta, menm yon ane pita, toutotan li oswa li te fè sa ki pa klè
bonbon yo, menm jan nou pral evantyèlman wè.
Epi, koulye a mwen jis gen yon si kondisyon isit la.
Se konsa, si kle a vin apre a, rele vann san preskripsyon, se mete anndan
nan sa a super global-- regle sa a tab, si ou will-- rele sesyon,
Lè sa a, ale pi devan epi gen tan pwan an valè soti nan panse a session--
nan sa a kòm yon fè makèt cart-- ak magazen li
nan yon varyab tanporè rele vann san preskripsyon.
>> Sinon, si ke valè vann san preskripsyon te pa mete nan sa yo rele shopping cart a,
jis inisyalize li a 0.
Anfen, desann isit la, ale epi mete tounen nan bin yo fè makèt oswa sesyon an
valè a nan vann san preskripsyon +1.
Se konsa, li sanble ke sa a isit lan-- veso espesyal
ki, ankò, se youn nan sa yo asosye ranje, yon etalaj ke ou ka endèks
nan mo olye pou yo numéros ap pèsiste menm apre itilizatè a ale lwen.
Yon fwa ankò, mwen pral tounen nan paj la kounye a.
Li te yon minit oswa konsa.
Men, li sonje ke mwen te te isit la 19 fwa anvan.
Sa a se 20yèm vizit mwen.
>> Se konsa, sa a se pral yo dwe kle nan mete ann aplikasyon nenpòt ki sit entènèt ki sonje
ke w ap louvri sesyon an, ke ou mete yon bagay literal nan shopping cart ou
yo achte oswa ke ou gen kèk Nimewo nan mesaj annatant.
Nenpòt ki lè ou vle sonje enfòmasyon,
nou pral wè ke PHP, tankou plizyè lòt lang,
bay nou ak sa a ilizyon nan eta menm si, jan ou pral wè nan PSET 6,
jan ou ap fè demann HTTP soti nan kliyan nan sèvè, ki nan li.
Yon fwa ou jwenn tounen ki repons, gen nan pa gen anyen plis
vini tounen soti nan sèvè a pa default.
Men, nou pral wè ki jan nan travay alantou sa.
>> Oke, koulye a, kite a eseye netwaye sa a moute yon ti kras.
Nou te wè yon kèk diferan egzanp la.
Oh, ak kòm yon sou kote, pou moun ki abitye oswa abitye,
rezon ki fè la IMS Frosh egzanp al
soti nan gade reyèlman lèd slightly-- byen,
toujou ugly-- yon ti kras mwens lèd menm si toujou lèd
se paske si nou gade nan kòd la sous isit la,
li vire soti ke mwen gen sa a nan tèt la anpil nan dosye a.
>> Sanble ke demaraj se youn nan anpil bibliyotèk lib disponib yo deyò
ki egziste pa pou lang programmation toujou, men pou CSS oswa pou JavaScript
oswa HTML oswa nenpòt ki kantite lang.
>> Epi sa yo jan isit lan-- orijinal soti
nan Twitter-- jis gen yon pakèt antye nan estil.
Li se yon dosye masiv isit la ke yon moun te ekri,
oswa yon moun nan ekri, sou tan ki presize koulè ak fòma
ak etajèr pou m 'ka kalite prete sentaks yo
epi yo pa gen figi konnen ki jan yo mete deyò fòm mwen.
Sa a se tou minified se konsa ke yon òdinatè kapab
konprann li men se pa nesesèman yon moun.
Se konsa, sa se sèlman poukisa la stilizasyon gen chanje.
>> Men, kite a kounye a fè pi byen an tèm de konsepsyon,
paske si nou rete desann wout sa a twò lontan,
kòd nou k ap pase yo jwenn sal ak messier.
Se konsa, kite a konsantre sou egzanp sa yo isit la.
Dènye a pou jodi a.
>> Se konsa, isit la se yon super senp vèsyon 1.0 nan sit entènèt CS50 la.
Li sèlman gen lyen ki mennen nan konferans ak progranm,
ak li a lè l sèvi avèk ke lis unordered tag tag nan UL ke nou itilize dènye tan.
Men, si an reyalite, si mwen louvri moute View Sous Page,
ou pral wè ke sa a se reyèlman, reyèlman senp HTML.
Ak an reyalite, menm si sa a se yon dosye PHP anba kapo a,
li la toujou jis voye krache soti sèlman HTML pou kounye a.
>> Se konsa, si mwen klike sou Konferans, nou wè sa a rive.
Men, si mwen klike sou semèn zewo, nou wè sa a.
Men, si mwen klike sou Mèkredi, nou wè sa a.
Lè sa a aparamman te PDF la nan glisad yo soti nan jou sa a.
Tout sa mwen te fè se lyen ak yon jete lank tag sa a URL isit la.
>> Se konsa, sa a se sèlman vle di sa a se yon trè senp vèsyon nan sit entènèt CS50 la.
Ann wè ki jan li a aplike.
Si m 'ale nan anyè a mvc0, nou pral wè yon dosye kèk.
Youn nan se yon radm, kidonk si kèk nan sa a se twò vit,
ou ka jis pike alantou plis lantèman pita.
Ak Avi nan isit la se yon dosye index.php.
Li sanble ke si ou tèt ou, moun lan,
pa presize yon non final nan yon URL, sèvè wèb la anjeneral
enferyè kèk non default pou ou.
Yon bagay endèks dot se jeneralman default la.
>> Se konsa, sa a, se poukisa yon ti moman de sa lè m 'te vizite sa a URL isit la,
okenn non dosye, pa gen okenn dosye ekstansyon, pa gen okenn peryòd nan URL la.
Li jis te konnen yon jan kanmenm maji pou chèche pou index.php.
Se jis nan yon konvansyon.
Ta ka rele anyen.
>> Se konsa, si mwen kounye a ale nan index.php, ou ap wè
sa, se pou yo indeed-- debarase m de kòmantè yo
isit la paske gen nan reyèlman pa gen anyen enteresan yo l--
sa a se jis difisil kode HTML.
Se konsa, sa a, se ki konsistan, menm si, ak reklamasyon mwen an
ke ou ka melanje HTML ak PHP.
Gen nan pa gen aktyèl pwogramasyon lojik nan isit la.
>> Men, yon lòt dosye yo yo trè pi jis kòm entérésan.
Li nan jis difisil-kode semèn yon sèl isit la nan semèn yon sèl m ak yon semèn w,
pou Lendi ak Mèkredi.
Lè sa a, si mwen louvri moute semèn zewo, remake li nan prèske idantik.
>> Epi sa a, kalite yon Takeaway kle.
Avi jis ki jan sa a se redondants.
Sa yo dosye apèn chanje, epi ankò mwen rale youn nan sa yo kopi / keratin travay
kote mwen te pran yon sèl file-- prezimableman nan semèn zero-- kopye li
lè semèn yon sèl te vin alantou li, ak tweaked yon valè kèk.
Nou ta dwe pwobableman pral kapab fè pi bon pase sa a.
>> Se konsa, kite a tounen jiska mv epi ale nan vèsyon yon sèl.
Ak Avi mwen te gen yon kèk dosye, paske sa
te komen nan tout nan sa yo dosye jis yon moman sa ago-- si m 'ale tounen nan vèsyon 0,
kite yo ale tounen nan endèks, ak jis postulate--
yon fwa mwen debarase m de comments-- la sa ki pati nan paj sa a
se prezimableman nan chak youn nan dosye mwen?
Jis rele li soti.
Ki liy yo double pwobableman atravè tout nan paj sa yo?
Yeah?
>> ELÈV: [fèbl].
>> DAVID J. Malan: 1 jiska 9.
Yeah, absoliman.
1 jiska 9, eksepte petèt 8 chanje yon ti jan paske CS50
vin konferans oswa semèn zewo oswa yon bagay.
Men, prèske idantik.
Se konsa, tout bagay sa a se jis kalite kopye ak kole.
Apre sa, nan yon koup liy lòt mwen ka panse
nan ki yo se pwobableman ki idantik atravè tout dosye yo.
>> ELÈV: 12 ak 13.
DAVID J. Malan: Yeah.
Asire w, 12, 13, ak 14 pwobableman, jis paske bagay la enteresan
sa k ap pase sou liy 11 ak 10, se konsa li ta sanble.
Se konsa, kite pou yo gade nan vèsyon 1, ki ap eseye amelyore sou sa a.
Nan vèsyon 1 nan example-- sa a mv nou pral eksplike ki sa vle di nan mv yon moman
si mwen ale nan endèks, li kalite sanble yon ti kras konfizyon kounye a.
Li pa byen kòm senp tankou anvan.
>> Men, yon fwa ou kòmanse li li l 'ak anpil atansyon, li nan
trè dwat ki sa li la fè a.
Aparamman liy 1 ak te liy 8 ranplase
tout bagay la ou jis identified-- menm si jis pou bon mezi,
Mwen te kite uls yo gen jis nan ka gen kèk jou pa t 'gen yon lis bagay.
Se konsa, mande pou se kalite tankou liv mete nan C. Li kopi ak kole
sa ki efektivman dwa isit la nan sa a dosye.
>> Se konsa, nan header.php, menm jan ou ta ka dégager soti nan non li a,
a pwal header a nan paj la.
Li nan kalite òfelen isit la.
Li sèlman gen tèt la nan li, men gen nan pa gen kontni plis pi ba a.
>> Men, si mwen gade nan footer pandan se tan, ki te dosye a lòt mentioned--
yon sèl sa a nan menm mwens enteresan, men ankò, li nan komen nan tout bagay.
Se konsa, sa a se footer la.
Sa a se header la.
Sa a se dosye a ki nan chanje, konsa poukisa pa
eseye faktè soti menm aksyon an ak de liy sa yo isit la?
>> Men, nou ka netwaye sa a moute yon ti kras pi lwen.
Mwen pral ale pi devan epi louvri moute vèsyon de kote
nou pral wè ke gen nan yon dosye nouvo, helpers.php.
Nou pwal wè ki sa ki se nan yon moman.
Ann ale nan endèks, kòm nan pwen antre tankou anvan.
>> Epi, koulye a remake mwen ki mande helpers.php, pa header oswa footer.
Men, moun k'ap ede se kalite renmen helpers.c ak helpers.h soti nan pset 2
oswa pset 3 lontan de sa lè ou aktyèlman t 'rechèch epi jwenn pou sa pset,
epi ou te gen tout nan kòd ou a pou klasman ak chèche nan yon dosye apa a.
Sa a ki sa k ap pase sou isit la.
>> Epi, koulye a liy 3 sanble yon ti kras diferan.
Lè li nan jis yon sèl liy.
Pou fè sa a menm plis klè, mwen te kapab jis
sa a yo dwe estilitikman ki konsistan ak tout lòt bagay nou te fè.
Men, sa a pa reyèlman chanje fonctionnalités a.
Se jis nan yon sèl liy nan byen kòd.
>> Aparamman, gen nan yon fonksyon yon kote yo rele rann header,
ak sa a se kote bagay sa yo jwenn bèl pouvwa anpil.
Remake andedan nan parantèz li yo se sa ki lòt moso nan sentaks?
Li pwobableman yon ti kras difisil yo di, men remake there's-- mwen pral mete kèk blan
espas.
Genyen parantèz kare.
>> Epi parantèz kare nou te wè yon ti jan de sa nan yon kontèks ranje asosyatif,
ki se, ankò, tankou tab regle.
Men, si ou panse ke kounye a C, la lòd nan agiman nan yon fonksyon
gen yo toujou gen menm bagay la.
Ou gen a sonje sa a lòd x is--, y, z oswa z, y, x--
epi ou gen yo toujou bay yo nan lòd la menm oswa gade yo moute
si ou te bliye.
>> Men, sa a sanble gen yon fason entelijan nan pase yon abitrè valè kle
pè kijan tit se non an nan yon agiman nan ka sa a
ak CS50 se valè li yo.
Ak lefèt ke mwen gen parantèz kare sa yo
isit la vle di ke mwen te kapab tou pase nan yon bagay
tankou yon semèn se 1 oswa 0 oswa 2 oswa 3.
Se konsa, nou te paramètres sa a fonksyon nan yon fason
ke li ka pran plizyè entrain, men pou kounye a li nan jis yon sèl la.
>> Si mwen kounye a ale nan helpers.php, remake sa li nan fè.
Sa a se yon ti jan nan nouvo fonctionnalités,
men pou kounye a jis pran sou lafwa ke sa a se
sentaks la ak kote ou defini yon fonksyon nan PHP.
Ou literalman di fonksyon.
Ou pa presize yon retou tape, epi ki nan ki konsistan
ak detay nan varyab pi bonè kote ou pa reyèlman fòtman tape.
>> Sa a jis espesifye ki, pa default, sa a
pran yon asosyatif etalaj kòm yon agiman.
Epi ou konnen ki sa?
Si itilizatè a pa pase yon sèl nan, asime yon valè default.
>> Sa a se yon karakteristik ki C pa gen pou nou, ki se bèl, paske kounye a
done, menm si ou pa bay li anyen,
ki pral yo dwe genyen yon etalaj men yon yon sèl vid.
Epi kòm yon sou kote, ekstrè jis fè yon bagay fenki
kote li pran tout nan kle yo sa a soti nan asosyatif etalaj, tout bagay sa yo
ou ta ka mete nan parantèz kare, epi kreye varyab soti nan yo
pou nou ka finalman gen aksè yo nan footet.php ak header.php.
Sa se yon ti kras abstrè, se konsa kite m 'pwen sa a soti.
>> Nan index.php, remake ke mwen se pase nan yon valè kle pè nan tit
ak yon valè de CS50.
Si m 'kounye a gade nan helpers.php, remake ke RenderHeader
se èkstraksyon ke done ke mwen pase nan, ak Lè sa a mande header.php.
Ki sa mwen te fè se sòt de yon nonm la pòv aplikasyon kounye a nan sa ki annapre yo.
>> Si m 'louvri moute header.php, avi ke mwen te pa gen okenn ankò difisil
kode mo CS50 a nan sa a dosye header.
Mwen te mete sa a Byensir atrociously yo te rele fonksyon, HTML charaktèr espesyal,
nan la.
Men, remake sa m 'te fè.
Mwen te gen louvri HTML.
Mwen Lè sa a gen louvri tèt li ak tit louvri.
>> Lè sa a, andedan nan tit la nan ouvè ak Tags fèmen, mwen gen yon ti jan nan PHP kòd.
Lè sa a se yon bèl men nan sentaks, ki jis vle di repete soti.
Li literalman vle di this-- eko sa ki annapre a
men sa a se sexier ekri.
Eko soti tit la sa a te pase nan.
>> Men, ki sa ou panse HTML Char espesyal se tout sou,
espesyalman si w gen kèk anvan HTML eksperyans?
Ki sa ki ta ka karaktè danjere yo pase nan nan yon paj
kote w ap dynamique génération paj wèb la avèk kòd tankou sa a?
Kite m 'ale nan sa a ranpli, vèsyon de, ak wè si mwen pa ka pwovoke sa a.
>> Version de se sa a.
Ak Avi tout bagay se amann, k ap travay byen.
Men, si mwen ale nan index.php ak Mwen espesifye ke tit la nan paj m '
se pa CS50.
Li louvri bracket alèt script alo mond, fèmen quote yon sèl,
fèmen parantèz, virgules, bracket louvri, script koupe.
>> Script, kòm nou pral evantyèlman wè, se yon tag
ke ou ka itilize yo sèvi ak nan yon lòt lang programmation rele
JavaScript andedan nan yon paj entènèt.
Epi, koulye a remake lojik la isit la.
Isit la se yon kle yo rele tit.
Isit la se li nan fou valè lontan kounye a.
>> Men, si m 'ale nan moun k'ap ede yo page- ou pito, paj la header,
M ap rele sa a fonksyon sou sa tit an premye.
Se konsa, si mwen kounye a Reload paj sa a, mwen wè sa a, ki sanble ridikil,
men li la an sekirite.
Li jis sanble estipid.
>> Men, si olye pou Mwen te bliye sa a.
Epi make pawòl mwen, yon PO zewo nan nou pral bliye fè sa
epi ou pral jwenn kèk travay rèd elèv oswa yon zanmi vini
ou nan kèmès la CS50 oswa anonim nan mitan lannwit poking alantou sou sit entènèt ou
ak esansyèlman enjekte Kòd ensu l nou antre nan sit ou
yon jan kanmenm.
>> Paske si Mwen tou senpleman krache soti tit isit la ak tit
there-- byen, si tit literalman sanble tankou sa a ak PHP
kòm yon lang ki ka krache soti lòt lang tèks,
sa a se literalman ale ranplase tag sa a ak,
nan kou, ki sa mwen mete yon lòt kote.
>> Se konsa, si mwen kounye a ale isit la ak Reload apre rwin moun mekanism sekirite,
koulye a, mwen gen alo mond isit la.
Koulye a, sa a, se pa tout sa ki gwo nan yon fas, men ou ta ka fè yon bagay
yon ti kras plis move isit la, tankou gen nan
lòt tags-- jan nou pral wè yon fwa nou depanse plis tan nan JavaScript tankou kote
dot href vin, quote, unquote, HTTP business.com, men opoze a nan ki
soti nan lòt jou a.
Epi, koulye a ou ka antrene yon sit entènèt paj ki aktyèlman ale imedyatman
nan paj entènèt sa a isit la.
>> Ak aktyèlman, mwen pa vle menm ale nan business.com
paske mwen pa vle konnen ki sa ki se.
Men, sa a, tou, pral deklanche Kòd yo dwe sou fòm piki nan paj sa a.
Se konsa, sa a se sèlman yo di ke menm si nou ap entwodwi super byen bonè sou kèk
nan sa yo estrikti pi konplèks, li nan tout direksyon yon fen nan fè si
ki kòd ou a se pa èksplwatabl.
>> Se konsa, kounye a yon vèsyon twazyèm isit la.
Li nan ap resevwa yon ti kras amateur.
Mwen pa t 'reyèlman like-- bò nan dèyè nan m '
te resevwa yon ti kras énervé pa la reyalite ke mwen te yon fonksyon rele
RenderHeader ak RenderFooter ki te prèske idantik.
Se konsa, li te rive m ', poukisa pa fè sa Mwen paramètres sa yo fonksyon
nan jis yon sèl rele rann, te li pran yon dezyèm agiman
tankou non an nan modèl la, final la render-- swa header oswa footer?
Lè sa a, opsyonèlman, si mwen vle yo pase nan kèk valè kle pè
tankou m 'fè pou tit la pou la header men se pa pou footer a,
Mwen te kapab fè sa.
>> Se konsa, kounye a si mwen ale nan helpers.php, li nan yon ti kras pi plis konplèks.
Apre sa, m'a balanse men m 'nan la detay, men li la jis yon sèl fonksyon.
Se konsa, sa a, se yon etap nan direksyon yon konsepsyon pi bon.
>> Nou ka pran etap sa a yon sèl pi lwen.
Si m 'ale nan katriyèm mwen an vèsyon an sa a, remake kounye a
ke mwen fè yon bagay menm plis kalite skre.
Apre sa, mwen konnen sa a se yon anpil yo absòbe nan yon fwa,
men nou ap jis kalite nan netwaye bagay yo.
Koulye a, mwen mete moun k'ap ede mwen ranpli nan yon katab rele
includes-- jis yon abitrè non kote mwen vle mete bagay
ke mwen vle ak Lè sa a include-- rès la nan sa a se menm bagay la.
>> Men, si mwen gade kounye a nan jdi, avi ke mwen te vinn m
nan tout nan tout sa yo lòt dosye ak Mwen te deplase yo, pou egzanp, nan isit la.
Lè sa a, nan modèl, Mwen gen sa a isit la, tou.
Se konsa, sa a se tout kounye a nan direksyon yon etap lè l sèvi avèk yon modèl konsepsyon pi bon.
Apre sa, nou ap trè byen vit ale nan avanse pou pi lwen
soti nan fonctionnalités default PHP a, ki nou te kòmanse isit la ak,
kote ou jis melanje PHP, ak HTML ou a, ak CSS ou a,
epi ou jis krache li soti epi ou ale sou wout ou.
Li pa nan ale yo dwe trè soutnabl.
Jis tankou nan C, nou te kòmanse lè l sèvi avèk dosye miltip ak anpil fonksyon
ak bagay sa yo ke affacturage deyò.
Nou pral fè menm bagay la isit la.
Ak an reyalite, nan senkyèm lan ak final vèsyon isit la, mwen te fè yon lòt bagay.
Ou ka menm sèvi ak dot dot, ki, ankò, se jis anyè a paran yo.
Pou yo kapab menm plis sekirite konsyan, paske si mwen gade nan tande a
isit la pou senkyèm ak vèsyon final la, avi ke mwen gen yon sèl anyè isit la yo rele
piblik, ak Lè sa a sou la menm nivo, se konsa pale,
Mwen te gen an gen ladan ak modèl ak Lè sa a ki radm dosye tèks.
>> Ak rezon an mwen te estriktire li renmen this-- ak pou anpil entènèt
gen tout pouvwa a, sitou sa yo $ 5 yon yo menm mwa oswa menm $ 10 mwa,
si ou te janm te gen youn nan sa yo services-- sa anpil nan yo fè
se yo jis atann ou a pil fatra tout nan dosye ou nan youn anyè,
tankou nou te fè deja ak sa a trè premye egzanp.
>> Men, le pli vit ke ou kòmanse bati plis sit sofistike ki jis magazen
done ou pran swen sou ak dosye ou pran swen sou, aktyèlman òganize bagay
kòrèkteman ak ki gen plis sekirite konsyans nan tèt ou kapab
nou kòmanse nan defann kont tout nan zanmi yo
ke ou gen swa nan oswa deyò nan klas sa a ki moun ki,
le pli vit ke ou kòmanse fè pwogram tèt ou sou entènèt la,
yo ale nan kòmanse davwa sou ou menm ak sou yo.
>> Se konsa, nou pral gade finalman nan sa a konsepsyon.
Sa a se jis yon foto ki pentire ki annapre yo.
Nou pral mete tout nan nou an pwogramasyon lojik nan youn oswa plis dosye,
epi nou ap ale nan jis kòmanse rele moun contrôleur.
Li nan kote sèvo yo nan sit entènèt nou an aktyèlman yo.
Lè sa a, nou ap ale nan gen opinyon, ak opinyon
yo se kòm senp tankou jis separe files-- rele modèl, souvan.
Yo jis gen nan estetik nan paj m 'yo,
sa m 'vle paj la yo gade like-- koulè yo ak Layout la
ak pozisyon yo nan tout nan varyab yo.
>> Lè sa a, plis enteresan ke nou pral evantyèlman jwenn
se modèl la, ki se pral yo dwe jis pawòl Bondye a nou kalòt sou lòt teknoloji
ke nou pote nan la foto, tankou baz done aktyèl,
se konsa ke lè ou vle pou konsève pou enfòmasyon,
ou pa jis voye yon imèl siveyan ou oswa nan tèt ou,
ou aktyèlman magazen li nan yon baz done lè l sèvi avèk yon lòt lang ke yo rekonèt kòm SQL.
Se konsa, nou pral kite isit la jodi a ak ranmase ak sa a nan Mèkredi
ak prezante baz done lè sa a.
>> [Jwe mizik]