>> [Mūzikas atskaņošanai]
>> DAVID J. Malan: Nu labi.
Tas ir CS50.
Tas ir sākums nedēļas astoņiem.
Un jūs varat atcerēties, ka mēs left off Pēdējo reizi, kad meklē jaunu valodu
vispār.
Patiesībā, viens, kas ir diezgan viegls, un tas nav pat
programmēšanas valoda.
Tas ir iezīmēšanas valoda, kas ļauj mums faktiski strukturēt un padarīt interneta lapas.
Un, ja jums kaut kas cits kopā ar this--
vai jūs drīz būs, ja jums vēl nav.
Mēs ejam, lai izmantotu kaskādes Style Sheets vai CSS, kas
ir cita veida valodas ar īpašībām un vērtībām
kas notiek, lai darīsim lietas patīk mainīt krāsu
un mainīt nostāju un šie tweaks veidus.
Bet šodien, un tālāk, mēs sākam jākoncentrējas uz jaudīgāku valodām,
faktiskie programmēšanas valodas, piemēram, PHP.
>> Tāpēc PHP ir bijis apmēram kādu laiku.
Un, kā jūs redzēsiet, tas galvenokārt bija paredzēta
agri par faktisko izmantot web izstrāde
un faktiski radot interneta lapas.
Tātad, ko veidu funkcijas nav valodu
ir nepieciešams, lai padarītu tīmekli lapas dinamiski ar to?
>> Citiem vārdiem sakot, ja jūs vēlaties, lai radītu saturs dynamically-- patīk Facebook s
Newsfeed, kas pastāvīgi mainās, vai tērzēšanas ziņas, ka pop up no laika
lai LAIKU_ patīk tas, ko ir galvenais gabals funkcionalitāti
jums ir nepieciešams programmēšanas valodu kas varētu ļaut jums dinamiski
izdrukāt jaunu informāciju uz ekrāna?
>> STUDENTU: Code.
DAVID J. Malan: Code.
OK.
Mēs ņemšu to.
Mazliet precīzāks.
Es domāju, mēs varētu darīt to ar C, atklāti sakot.
Tas būtu sāpes kaklā.
But-- ir šo apņemšanos?
>> STUDENTU: Jā.
Mainīgie, varbūt?
DAVID J. Malan: Mainīgie.
Labi, protams.
Mainīgie noteikti var palīdzēt mums out.
Un pat kaut ko vienkāršāku.
Mēs izmantojām to pašu pirmo programma jau pirmajā dienā
kad mēs faktiski teica: "Hello World".
>> STUDENTU: Print.
>> DAVID J. Malan: Print, vai ne?
Print, vai printf in pasaule C. Tātad visu šo laiku,
mēs esam bija mūsu apglabāšanas language-- C,
in particular-- un pat Scratch par šo jautājumu, kas
var radīt teksta virknes.
>> Nu, ja HTML, kā mēs redzējām pagājušajā nedēļā, ir tikai visu ķekars virknes teksta
lai gan ar atvērtām iekavām un slēgta kronšteini un sava veida atskaņa
un iemesls, aiz tā, labi, tad mēs varētu patiešām
sākt radīt interneta lapas, vai nu manuāli, ierakstot tos ar gedit
vai Microsoft Word, ka matter-- mēs vienkārši nepieciešams teksta redaktoru.
>> Vai mēs varētu rakstīt kodu, Jūsu ierosinājumu
agrāk, kas varētu mūs dinamiski ģenerēt HTML,
un tas, ko mēs ejam sākt darīt ar PHP
un galu galā pat ar valodā sauc JavaScript,
ir izmantot vienu valodu, lai radītu citu.
Un tiešām, tas ir tas, ko Facebook un daudzi, daudzi citi objekti
darīt, lai faktiski dinamiski parādīt jaunu informāciju, lai jums.
>> Tātad, sāksim ar this-- a mistisks meklē līnija, bet viens
tas ir faktiski diezgan spēcīgs.
Līdz šim mēs esam bijuši, izmantojot C, kas ir apkopota valoda.
Un tikai ātri recap-- apkopota valodai ir kāda īpašība?
Jūs, protams, ir nepieciešams, lai apkopotu tas, bet ko tas nozīmē?
Yeah?
>> STUDENTU: Tai ir jābūt samontēt mašīnu kodu.
>> DAVID J. Malan: Labi.
Tai samontēt mašīnu kodu.
Tātad jūs veikt jūsu avota kodu, kas ir sava veida angļu-patīk.
Jums pārvērst, ka uz kaut kas zemāks līmenis,
ko galu galā sauc objekta code-- 0 s un 1 s.
Un tas ir šīs 0 s un 1 s, ka CPU, piemēram, tiem, ko Intel,
faktiski saprast.
>> Tagad, PHP un Python un Ruby un JavaScript un ķekarus citi
valodas netiek apkopoti valodas, bet interpretē valodas,
kas nozīmē, ka jūs vienkārši tos rakstīt un tad jums nav pārvērst tos 0 s un 1 s.
Tu nevis tikai sniegt tad, kā ieeja uz kādu citu programmu,
sauc tulks.
Un ka personas Programma ir izstrādāta,
lai saprastu, ko katrs un katrs simbols Python vai PHP
vai Ruby vai kādu skaits citas valodas nozīmē.
>> Un tāpēc viss, kas mums vajadzīgs, ir kaut kas līdzīgs šim.
Tātad faktiski, es esmu gatavojas iet pa pie ierīces
šeit, tikai nevienā veco logu, un mēs esam
gatavojas iet uz priekšu un atvērta failu sauc, saka, sveiki.
Tagad jau iepriekš, es varētu būt saglabāti tas pat ar faila paplašinājumu,
bet es esmu gatavojas darīt kaut pat vienkāršāka šeit.
Es esmu gatavojas iet uz priekšu un sākt šo failu ar šo mistisks sintaksi.
Tātad "lietotājs, bin, ENV, videi, php. "
>> Tas ir tikai viena līnija kodu, kas ir dodas, lai pastāstītu savu operētājsistēmu,
iet atrast jūsu vietējā vide kāds tas ir,
kur PHP is-- šo interpreter-- un iet uz priekšu un izmantot šo tulks
interpretēt šādu kodu.
Tagad, tas ir sava veida neglīts iezīme PHP.
Bet šajā valodā, jebkāda reizi, kad jūs rakstīt PHP kodu,
jums ir viens no šiem neglīts PHP tags norobežo sākumu
Jūsu code-- <php?.
>> Bet tālāk šeit, es tagad varu darīt kaut ko diezgan vienkārši, tāpat kā printf sveiki komats
pasaules slīpsvītru n tuvu quote, netālu iekavās.
Un tad tikai par labu pasākums, es esmu gatavojas
iet uz priekšu un aizvērt mans php tag nekā šeit
Tā, ka viss izskatās labi diezgan izdrukāt.
>> Un, tiklīdz es noklikšķiniet uz Saglabāt, gedit ir pietiekami reāli gudrs
apskatīt šīs pašas pirmās līnijas un saproti, ak, jūs esat rakstiski PHP kodu.
Ļaujiet man sintakses izcelt tas ar krāsām
šeit tā, ka tā ir out nedaudz vairāk.
Bet tagad es iešu leju, lai manu termināļa loga.
Es tuvinātu.
>> Šī programma tika saukta "sveiki" tāpēc es esmu gatavojas darīt dot slīpsvītra hello,
bet atļauja liegta.
Un bash.
Mēs tiešām dzirdējis, ka Pirms lieta pāris nedēļas
kontekstā Shellshock, viena no šīm kļūdām.
>> Bet atļauja atteikta, mēs esam redzējuši pirms, varbūt citā kontekstā.
Vai kāds atcerēties, cik jūs varētu noteikt kaut
ja atļauja ir liegta, kā šis?
Kas ir komanda, vismaz?
>> STUDENTU: Chmod.
DAVID J. Malan: Jā, chmod, maiņai veidu failu.
Un jūs saņemsiet visu vairāk izmanto, lai tas nākamnedēļ ar sekojošu problēmu
iestatīts.
Bet tagad, es esmu gatavojas mainīt režīms nav lasāma,
bet dot ikvienam executeability privilēģijas, spēja
palaist šo failu.
Un es esmu gatavojas, lai piešķirtu ka uz failu sveiki.
>> Ja man tagad darīt dot slīpsvītra sveiki ieiet, jūs skat, patiesībā, mana programma, sveiki pasaule.
Un ko solis darīja I skaidri izlaist pavisam?
Apkopošanu.
Tāpēc es vienkārši skrēja šo programmu vienkārši.
>> Un izrādās, jūs varat darīt to ar daudz sintakses atgādina C.
Ļaujiet man iet uz šodienas kodu, kas man manā vhost direktorijā
šeit, lai patiesos iemeslus mēs atgriezties.
Un es iešu uz, teiksim, nosacījumiem 1.
>> Un jūs redzēsiet šeit, pirmais un kārtām, viss ķekars komentāriem.
Bet tas ir faktiski atkārtotu izveidi PHP
Programmas mēs darījām nedēļas viens sauc apstākļi 1.c
kur nolūks dzīvi šo programmu
acīmredzot uzdot lietotāju par skaitlim
un pēc tam veikt dažas pūkains analīze par to, ar ko
jūs teiktu, ja tas ir pozitīvs vai negatīvs vai vienāds ar nulli.
Un es celt šo augšu tikai tāpēc, izņemot varbūt vienu sīkumiem,
tas ir atšķirama tik tālu no C.
>> Kas ir viena īpašība šeit, ka varbūt lec ārā
pie jums kā nedaudz atšķiras?
Varbūt divas lietas.
Yeah?
>> STUDENTU: Dollar zīme n?
>> DAVID J. Malan: Jā.
Tāpēc dolāra zīmi n ir klāt.
Un dolāra zīmes, kā mēs redzēsim, gatavojas
ir noteikt sākumā jebkura mainīgo PHP.
Tas ir gan labi, gan bad-- labs ka tas ir sava veida skaidrs, kāda ir
mainīgs, slikti, ka tā ir vēl viena lieta, ko rakstīt.
Un tur ir viens cits lieta mums nav gluži
redzams, vismaz ar šo pareizrakstību. yeah?
>> STUDENTU: readline.
>> DAVID J. Malan: readline.
Readline mēs neredzējām, per se, jo C, lai gan pastāv kaut kas
līdzīgi, bet mēs esam izmanto getstring, un tas ir tā ekvivalents.
Tātad, ja es eju uz to direktoriju, kas notiek, ir,
kā es paskaidrošu mazliet manā vhost direktoriju un mans avots katalogs,
un es iet uz priekšu un darīt dot slīpsvītra conditions-- whoops-- dot slash
apstākļi 1, jūs redzēsiet, atkal, pats issue-- atļauja liegta.
>> Tāpēc ļaujiet man tuvinātu un darīt chmod plus x par nosacījumiem, dot slīpsvītra apstākļos.
Es gribētu skaitlim, lūdzu, 50.
Un mēs varētu spēlēt šo Spēle visas dienas garumā.
Tas notiek, lai uzvedas tieši kā tas notika vienā nedēļā.
>> Labi, tāpēc ne viss, kas atšķiras, izņemot ne tikai to, ka neliels mazliet sintaksi,
bet augšdaļā, es atkal bija šo līniju, kas
ļāva man, lai radītu kaut ko, kas izskatās C programmu, ko sauc sveiki,
sauc nosacījumi 1.
Bet tas nav 0 s, un tiem Es esmu izpildes tieši.
Tas ir vietā darbojas šis tulks, kura vārds
notiek, ir identisks valodu.
Programma sauc PHP, un mans kods zem līnijas viens tiek nodots tajā.
>> Mēs varam darīt citu diezgan vienkāršs piemērs atgādina kaut ko
mēs darījām pirms nedēļas.
Atkal, tas ir sava veida patvaļīga rieciens koda
ka acīmredzot nav ko, ja jūs palaist to?
Kas tas notiek, lai drukātu, iespējams?
>> Tātad sākotnēji uz 16 līniju, tas ir teiksiet x tagad ir 2, droši vien.
% D ir tāds pats kā $ i par printf.
Tātad tas ir cubing, dot, dot, dot, atbilstoši 17.
Un tad līnija 18 parādās lai izsauktu funkciju kubā.
Un kur ir kubā definēti?
>> Nu, izskatās, ka atbilstoši 25., tā, ka tas nav viss, kas atšķiras.
Man dažus komentārus augstāk tas, bet lielākā daļa,
tas ir diezgan vienkārši pārnešanas vai pārveidošana
no C programmas PHP versiju.
Bet tagad ir pāris atšķirības, ka varbūt vajadzētu lēkt ārā.
Kas vēl ir atšķirīgs par to, kā jūs varētu uzrakstīt šo pašu programmu C?
>> STUDENTU: [dzirdams].
>> DAVID J. Malan: Ir Nav prototips up top.
Tik PHP-- un atklāti, Mūsdienu languages-- daudz
ir daudz gudrāki un vairāk noderīgs nekā C kompilatori, jo jums
var likt funkciju šeit, Jūs varat ievietot funkciju šeit lejā,
un tulks gatavojas darīt jums labu lasījumā
visas lietas, pirms tā izlemj ka daži funkcija neeksistē.
Tik jauki uzlabojumi gadus vēlāk.
Bet tur ir arī kaut kas cits, atšķirīgs vai prombūtnē šeit.
Yeah?
>> STUDENTU: [dzirdams].
DAVID J. Malan: Mums nav deklarē veidus mainīgo,
tāpēc mēs redzēsim pirms ilgi, ka ir dažādi veidi PHP,
bet jums nav nepieciešams norādīt tos, kas arī ir gan labs un slikts.
Un tur ir viena cita lieta, kas trūkst.
>> STUDENTU: Nav bibliotēkās.
>> DAVID J. Malan: Nav bibliotēkas.
Labi, tā ka ir jauki.
Mēs saņemam daudz vairāk no kastes.
Tātad tur ir tiešām daudz vairāk lietas, nekā es domāju, bija atšķirīgi.
Kā par veidā muguras?
Kas tas ir?
Saka, ka tas vēlreiz?
>> STUDENTU: Pointer.
>> DAVID J. Malan: Nav norādes.
OK, vismaz šajā piemērā, nē.
Tas ir godīgi.
Tātad tur nav norādes PHP faktiski vispār.
Ir kaut kas ko sauc norādes, bet mēs ne tērēt pārāk daudz laika tur.
Un ko vēl?
>> STUDENTU: Main.
DAVID J. Malan: Main.
Tātad tas bija Biggie Es biju domājis.
Pamanīt tur nav galvenais ieejas punkts.
Jūs vienkārši sākt rakstīt savu kodu.
Un tas ir faktiski būs izdevīgi
kad mēs pāreju momentāni faktiski izmantojot
šī pati valoda web bāzes programmēšana, par kuru mēs
nevēlos, lai ir tikai viena ieejas punktu.
Mēs varētu vēlēties, lai būtu ķekars URL, ķekars dažādiem failiem
viss ņemot lietotāja ievadi un ražo produkciju.
>> Bet šeit ir ļoti neizcēlās Piemēram, ka es apsolīju pēdējo reizi,
proti, šajā mapē šeit, pārrakstīšanās.
Tātad šī faila Speller, ko mēs nebūs jātērē pārāk daudz laika, ir
būtībā porting-- P-O-R-T. Tas ir tikai vārds dots, ja, teiksim,
pārvērst no vienas valodas uz citu manuāli parasti.
>> Tas ir pārnešanas PC versija Speller no PSET 5.
Un es būtībā mēģināju konvertēt tas pozīcijai cik vien varu.
Tātad, ja jums patīk šāda veida lieta, tas tiešām ir vērts kādā brīdī
velkot tos gan uz augšu pusē ar sānu un redzēt to, kas ir pats
un kas ir atšķirīgs.
Bet viņi diezgan darn līdzīgi.
Ja jūs atceraties, ko Speller pat izskatījās,
pat ja jums nav ir mainīt šo failu,
tas ir diezgan līdzīgs strukturāli tikai ar pāris
Izmaiņu šeit un tur.
>> Tātad tas ir tikai teikt, ka tas ir diezgan vienkārši pārvērst Speller
no C uz PHP.
Bet vārdnīcā, tur ir kaut kas vēl pārliecinoši.
Ļaujiet man iet uz priekšu un izveidot mana dictionary.php failu.
Tik nedaudz atšķiras ar to, ka mēs to saucam php nevis .c.
Tā kā šis ir PHP failu, es do-- nedaudz annoyingly-- ir
lai sāktu failu ar php tagu, piemēram, ka.
Un es iešu uz priekšu un definēt dažas funkcijas.
Funkcija sauc pārbaude, kas ir gatavojas uzņemt vārdu kā agrāk.
Taču šis arguments s nāksies dolāru
paraksta, jo mēs esam, atkal, izmantojot PHP.
Vēl viens no funkciju dictionary.c bija slodze
un tas aizņēma nosaukumu vārdnīcu, tāpēc es nopirkšu šo funkciju gatavi iet.
>> Vēl viens dictionary.c bija tas, ko?
Lielums bija viens no jaukākajiem tiem, at Vismaz, ja jūs tur kādu mainīgo apkārt.
tāpēc izmērs vienkārši ir atgriezties mainīgo.
Un tad tur bija izkraut.
>> Tātad tur bija šie četri funkcijas problēmu noteikts 5
kas jums nepieciešams, lai īstenotu ar daži datu struktūra vai struktūras.
Tāpēc es apsolīju, ka PHP, mēs varam paziņot
hash tabulu, piemēram, viss, kas vieglāk.
Patiesībā, ja es gribu hash tabulu, Es esmu tikai gatavojas iet, piemēram, ka
un tur ir mana hash tabulu.
Un tas ir piezīme, neveiksminieks, ka mēs atstājām off pēdējo reizi.
Un jūs zināt, ko, ja es gribēju mainīgais lielums, labi,
šis vēl nav viss kas atšķiras no C,
bet es esmu gatavojas iet uz priekšu un darīt to.
Un paziņojums nav datu tipu.
Un es iešu atpakaļ vēlāk, un faktiski pievienot dažus komentārus šeit.
Bet kas par slodzi?
>> Ja dolāra zīmi vārdnīca ir nosaukums mana faila
un es tiešām gribu ielādēt vārdi uz šajā tabulā tagad,
Es patiesībā var darīt kaut kas diezgan vienkāršs.
One-- un tas ir minorly annoying-- PHP,
jums ir jānorāda iekšā par funkciju, ja jūs
vēlas, lai piekļūtu dažām pasaules mainīgais, kas ir definēts ārpuses.
>> Bet tas nav īpaši interesanti tieši tagad.
Kas vēl interesanti ir tas, lai katrs būvēt, ka es teicu pēdējo reizi.
Un izrādās, ka PHP ir funkcija sauc failu kuras mērķis dzīvē
ir atvērt failu un lasīt visi tās līnijas masīvs
un nodod tos atpakaļ.
>> Kas ir, es varu darīt vārdnīcu tik ka tagad ir efektīvi, kad es zvanu failu,
tas gatavojas nodot mani atpakaļ masīvs vārdus no faila.
Tas vēl nav viss, kas labs.
Tas joprojām būs līnija no vārdiem, kaut lineāra.
Bet es varu iet uz priekšu un atkārtot pār katru no šiem vārdiem, izmantojot
ka sintakse mēs redzējām īsi pēdējo reizi.
Un jūs redzēsiet to vairāk gaidāmajā PSET.
>> Bet tagad man ir cilpa atkārtojot pār katru vārdu vārdnīcā.
Un katrā atkārtojumā, atceros es esmu zvanot pašreizējo vārdu "vārdu."
Un viss, kas notiek, lai to likts uz vārdu vārdnīca ir
būs vārds minējums "taisnība."
Tas ir mans ievietot funkciju.
Tas ir mans slodze funkcija manu vārdnīcu.
Tagad tas ir mazliet apkrāptu, jo, jūs zināt, tur ir patiesībā
slīpsvītru n s beigās vārdiem ka man būtu iespējams atbrīvoties no,
bet tas nav problēma, jo PHP ir funkcija, ko sauc karbonāde kas burtiski
karbonāde off vienu rakstzīmi pašās beigās.
Līdz ar to nav problēmu tur.
Mēs esam aizgājuši uz priekšu un faktiski saīsināts, ka tikai tas.
Un tagad es būtu iespējams izsekot no to lieluma, tāpēc pieņemsim vismaz darīt this--
izmērs ++.
Es varu darīt, ka tāpat kā agrāk.
Un tad tas ir iespējams, gatavojas strādā tikai naudas sodu, tā ka ir atgriezties taisnība.
Darīts.
PSET 5.
>> [Smiekli]
>> DAVID J. Malan: Labi.
Mēs darīsim to vēlreiz ar nākamo PSET, too.
Tātad, ko par izmēru?
Nu, tas viens cerams ir par kā jūs varētu gaidīt pēdējo reizi,
lai gan man ir jādara šī stulba globālo lieta.
Tas ir tikai artefakts no The Language dizains.
>> Bet pārbaude ir nedaudz vairāk interesants.
Tātad, ja es pieņemts dolāru paraksta vārdu, es pirmo reizi
vēlaties, lai būtu pieejami ka globālo mainīgo tabula.
Un tagad, ja es gribu pārbaudiet, vai vārds ir tur,
Es varu vienkārši pateikt, vai tā ir taisnība, ka šādi ir noteikts tabulā,
tad iet uz priekšu un atgriešanās true; cits, atgriezties viltus.
Darīts.
Otra puse PSET 5.
>> Visas tiesības, tāpēc atkal, es esmu griešana dažas stūriem.
Taisnīgumu, es būtu iespējams pavadīt dažas sekundes
par šo īstenošanu.
Un es, iespējams, nevajadzētu izspēles visu stundas jūs likts uz PSET tik daudz.
Tātad strtolower ir funkcija.
Kaut kas līdzīgs eksistenciālais C, vismaz uz burtiem,
bet PHP dabūja veselu virkni versiju.
>> Kas notiek, lai piespiestu visu uz mazo, kuru daži no jums
varētu būt darīts, lai canonicalize ko jūs liekot savā vārdnīcā.
Un tagad jūs varat darīt C, too.
Tam nav nekāda sakara ar PHP.
>> Bet jebkurā laikā jums ir Būla stāvoklis,
kā kaut tiešsaistē 10 tur, kas ir tikai
gatavojas novērtēt to patiess vai nepatiesa, un jūsu ja cits skaidri
atgriežas patiess vai nepatiess, es varētu vienkārši tiešām padara šo sexier
un vienkārši darīt kaut kas līdzīgs šim.
Tāpēc, ka tur ir mana pārbaudes funkcija.
Labi, ja Bula atgriež patiess vai nepatiess,
pieņemsim tikai atdot to uzreiz.
>> Un tur ir daži citi tweaks Es varētu darīt šeit un tur.
Load-- unload, starp citu, tas ir izdarīts.
Neko darīt tur.
Tā kā visas atmiņas PHP un daudzās citās valodās
ir faktiski izdevās jums.
Tādējādi, kaut arī C, kā jūs esat iemācījušies sāpīgi,
kaut jūs malloc vai calloc vai realloc, jums ir, lai atbrīvotu sevi.
Viss, ko jūs fopen, jums ir fclose, tā, ka resursi tiek galu galā atbrīvoja
un instrumenti, piemēram, Valgrind nav pamanīt un nesūdzas,
kas ir laba lieta, lai palaistu uz tiem.
>> Bet, protams, ir jābūt būt daži nozvejas, vai ne?
Pretējā gadījumā mēs veida izšķērdēta viss ķekars nedēļu.
Tātad tur ir jebkura vairāku iemeslu dēļ kāpēc mēs veida šo trajektoriju,
bet ir kompromiss.
Labi, tas ir bijis tematiskā.
>> Tātad, kādi varētu kompromiss šeit pārvietojas, no C uz PHP?
Uzskata, tāpat kā visi uzvarēt līdz šim, izņemot mazliet neglītumu šeit vai tur.
Yeah.
Kas tas ir?
>> STUDENTU: [dzirdams] atmiņas.
DAVID J. Malan: Ātrums.
OK.
Nu, mans ātrums bija diezgan ātri.
Taisnība?
Bet ātrums programmas izpildi?
Labi, tā ka ir godīgi punkts.
>> Lai tas notiktu, es jau iepriekš cued up gan manu izmēģināt risinājumu, viens
Man bija uz lielā kuģa bija izmēģināt balstītu risinājumu,
un man ir, ka šajā direktorijā šeit.
Tāpēc es kādā brīdī, es varu iet uz priekšu un palaist šo par King James Bible,
hitting Enter.
Un tas ir pareizi, cerams īstenošana beigās,
dod man laiku kopā par 0,38 sekundēm, kas
viens nedaudz patvaļīgs piemērs.
>> Un, ja es tagad iedziļināties šajā Otrais termināla logu
šeit, kur es pirmo reizi atklāja gedit, ļaujiet man iet uz šodienas code-- kas, atkal,
Tieši šajā direktorijā here-- un ļaujiet man iet uz priekšu un palaist Speller.
Tik vienkārši, lai būtu skaidrs, tas ir PHP versija.
Es esmu tikai parāda top to šeit.
>> Tātad, ja man Speller par Tilde CS50 PSET 5 teksti, King James, ievadiet.
Tas joprojām ir ātrāks nekā rakstiski tā C, bet kopējais laiks
ir paziņojums, 0.93, bet mans C-balstīta īstenošana bija 0,38.
Tātad, tas nav triviāls atšķirība.
>> Un tas ir tikai vienā failā.
Ja tu būtu, lai palaistu divas programmas, salīdzinot ar lielo kuģa
un ir visu ķekars izejvielas pārbaudīts, tas protams saskaitīt.
Un, ja mēs būtu vēl lielākas datu kopas, arī tas, varētu pievienot vēl vairāk.
Tātad, jā, maksājot zināmu cenu ātruma patiešām gadījums.
Kas vēl?
Yeah?
>> STUDENTU: Summa RAM izmantošanu.
>> DAVID J. Malan: Summa RAM izmantošana.
Tāpēc man nedeva vienu sekundi domāju, kad rakstu šo PHP
versija par to, cik daudz atmiņas man bija, izmantojot.
Es esmu pilnīgi atlikt, ka PHP sevi un kurš rakstīja šo programmu.
Un tas varētu būt OK, Bet, ja es tiešām ļoti
rūp saspiežot tik daudz sniegumu no manas programmas vai no manas mājas lapā
vai arī no kāda rīka Es esmu ēka, varbūt
PHP, protams, nav taisnība valoda.
>> Un patiesībā, tas ir iemesls, kāpēc, lai Piemēram, daudzi web servers--
faktiskais programmas, kas kalpot pat web content--
nav uzrakstīts PHP vai Python vai Ruby.
Tie ir rakstīti, piemēram, jūs tagad darīt ar PSET 6,
C tā, ka jūs varat saspiest gluži sniegums no tā
un tiešām izmantot fine-graudu kontroli pār to, kas ir
notiek zem pārsegs un ne tikai ņemt to
par pašsaprotamu dažiem augstāka līmeņa datu struktūras.
>> Apsveriet, galu galā, kurš PHP īstenoti
ka jēdziens jaucējkoda table-- tas ir faktiski vairāk
pareizi sauc par asociatīvo array-- Vai viņš vai viņa ir kāda ideja, kāda veida
izejvielu jūs gatavojaties būt laišana struktūrā?
Tātad acīmredzot nav, vai ne?
Tas ir vispārējs instruments šajā rīkkopa, kas ir
sniedz jebkuram, kurš vēlas to izmantot, un tā, protams, tas
nevar tikt optimizēts galu galā tieši to, ko jūs vēlaties darīt.
>> Tā tirdzniecību offs-- izstrādes laiku varētu atšķiras, darbības var atšķirties,
sarežģītība vai atmiņas izmantošana var atšķirties.
Un tā, ko jūs atradīsiet arvien vairāk ir tas, ka tur ir
būs atšķirīgs instrumenti tirdzniecībā.
Un patiesībā par super vairākumam cilvēku gala projekti šajā klasē,
ticiet vai nē, C nav dodas būt tiesības valoda izmantot.
>> Un faktiski, viens no takeaways galu galā jebkurai klasei, kā šis
ir, lai saņemtu jums domāt par, labi, ko vajadzētu jūs pull off
plauktu, kad vēlaties atrisināt kādu problēmu.
Un tiešām, mēs šķērsot šo tiltu vēl vairāk, jo mēs skatāmies vairākās valodās
pat ārpus šodien.
>> Tātad, pieņemsim pāreju tagad varbūt vairāk pazīstams konteksts
izmantojot valodu, piemēram, PHP.
Tas ir nedaudz kopīgs izmantot pie komandrindas, rakstot skriptus
kā es darīju, bet tas ir daudz, daudz biežāk.
Un tas ir paredzēts, lai tiktu izmantoti forma failus, kas parasti beidzas
jo .php-- bet tas ir nav prerequisite--
ka paši radītu interneta saturu.
>> Tāpēc ļaujiet man iet uz priekšu un atvērt dažas piemēri Es sagatavots iepriekš.
Un tie ir faktiski sava veida taisnība stāsti, ka viens no pirmajiem lietas
Es kādreiz darīju pats pēc apdares CS50 un varbūt, es domāju,
Pirms CS51 gadus ir mans kaimiņiem un man bija palīdzēt
palaist pirmkursnieks klātienes sporta programma, kura laikā,
bija pirmkursnieks reģistrējoties dažādiem sporta aizpildot papīra gabaliņu,
kā to dēvēja, iešana pāri pagalmam uz Wigglesworth,
un nometot dažās Proctor durvis kritums.
Un tad viņš vai viņa varētu iet cauri viņiem un tad faktiski rakstiet mums manuāli
ka mums bija reģistrēti kādu sportu.
>> Tik skaidri, iespēja uzlabošanai.
Šajās dienās, jūs varētu vērsties tikai Google Forms, bet atpakaļ dienā,
mums bija faktiski sasniegtu for-- šis nebija pat, ka ilgi ago-- sasniegt
par programmēšanu valoda, kas nav PHP.
Tajā laikā tā bija kaut kas ko sauc Perl,
kas kopš tā laika ir izgājušas no modē.
Bet ideja ir tāda pati.
>> Un es būtībā apsēdās, lai mēģinātu ostas iet Perl versijas PHP,
bet pilnībā atruna, nedeva kāds domāja uz estētiku tikai yet.
Tātad, šeit ir mājas lapa.
Šis ir fails.
Ja es tuvinātu, tā acīmredzot sauc froshim0.php
tikai tāpēc, ka tas ir mūsu pirmais piemērs šajā sērijā.
Un paziņo, ka tas ir tas, ko, šķiet būt ļoti neglīts HTML forma,
bet forma ir interesanta jo tas ļauj
man sniegt lietotāja ievadi uz pārlūku.
>> Tagad, pēdējo reizi, kad mums bija forma, kas Kam mēs iesniegt mūsu vaicājuma parametru,
rinda parametrs kā to sauca?
Tātad, lai Google, vai ne?
Mēs pilnībā punted par ideju darīt kaut ko ar šo ieguldījumu.
>> Bet šodien, mēs sākam ražot produkciju.
Un uzvedība es esmu gatavojas, lai redzētu šeit sākotnēji ir diezgan triviāla.
David, es ņemšu pārbaudīt pie dzimumu šeit, teiksim Matthews šeit.
Es nebūs kapteini.
Es esmu gatavojas klikšķi reģistru.
Un paziņojums, ka URL ir mainīts reģistrēt-0.php,
un tad tur ir šis neglīts teksta šeit.
Es nesniedza domāja formatējums to.
>> Bet kas ir interesanti ir tas, ka trīs vērtības tika acīmredzot pieņemts.
Tas ir PHP veida līdzvērtīgs printf--
mēs redzēsim, ko tas īsti sauc tādā bit-- ka tikai izdrukā
ko jūs pagājis tajā.
Tātad tas liecina, ka šādā formā bija vismaz trīs laukus, lai to,
un jūs redzēja mani ierakstiet tos.
Viens no tiem bija mans vārds, viens bija dzimums, viens bija kopmītne.
Un kapteinis nav pat saņemt nosūtīts servera, jo man nav to pārbaudīt.
>> Tātad tas ir teikt acīmredzot, kad jūs iesniegt lietas tīmeklī,
ne tikai tas URL dažkārt change-- dažreiz tā nav.
Patiesībā, faila nosaukums mainīts, bet to, kas ir prom no URL
ka mums bija redzēt pēdējo reizi ar Google.
Yeah?
>> STUDENTU: Nav vaicājuma virknes
>> DAVID J. Malan: Nav vaicājuma virknes.
Nav jautājuma zīme kaut ko.
Nav jautājuma zīme q vienāds kaķiem, kā mēs to darījām iepriekšējā reizē.
Un tur, protams, nav jautājuma zīme nosaukums ir vienāds
David vai kopmītnes vienāds Matthews Tātad, ja ir tā, ka viss notiek?
>> Nu, ļaujiet man iet atpakaļ uz gedit šeit un atvērt pirmo no šiem failiem
manā vhost, vietējā uzņēmēja, valsts direktoriju šeit un iedziļināties froshim0.
Tātad izrādās, ka gandrīz visas šīs lapas ir tikai HTML.
Un tas varētu būt svešs jums, bet tas drīz būs vairāk tāpēc ar PSET 6
un PSET 7 un PSET 8.
Bet tas ir tikai HTML lapas.
>> Un interesanti sīkumi šķiet, ir vairāk nekā šeit.
Forma tag kuras rīcība atribūts vērtība ir reģistra 0.
Tieši tāpēc, kad es iesniegt tas, tā iet uz šo failu.
Bet metode ir atšķirīga today-- post.
Tātad izrādās, tur ir vismaz divas metodes tīmeklī izmantotās
nosūtīt informāciju no pārlūka uz serveri.
Get liek to URL.
Post liek citur.
Un, kad un kāpēc varētu jums tiešām vēlas mājas
izmantot post tad tā vietā no get, tikai intuitīvi?
Jebkurā mājas lapā.
Kāda veida dati būtu jānodod tikai ar secinājumu tagad pa pastu, nevis
saņemt, ja mēs esam redzējuši divi atšķirības?
STUDENTU: [dzirdams] droša.
DAVID J. Malan: Ja jūs vēlaties kaut kas ir droša.
Lai jūs varētu ierakstīt paroli uz tīmekļa vietni, kredītkartes
uz mājas lapā būtu veida šiem neoptimāla
ja pārlūks nodot, ka vērtība iekšpusē URL.
Kāpēc?
Jūs redzat to, kas nav šķiet, ir tik liels galā,
bet izredzes ir jūs diezgan bieži staigāt prom no datora vai izmantot datoru
labs, un lai kāds cits vai pat kaimiņiem
varētu viegli staigāt uz augšu un redzēt ka privāto informāciju.
Kad jūs sūtīt e-pastu caur web, jūs, iespējams,
negribu, ka datu beigas atbalstīts URL, kā arī.
Un tā tur ir jebkura vairāku iemeslu dēļ kāpēc mēs varētu vēlēties, lai to šeit.
Un photos-- labi, es nevaru pat gluži iedomāties, kā jūs varētu veikt grafiku,
piemēram, JPEG, un nodot to URL.
Jūs varētu darīt to.
Ir veidi, kā kodēšanas to, bet tas ir tāpat nav vienkārši tāpat.
>> Lai reģistrētos 0 faktiski ļoti underwhelming.
Visi tā saka, burtiski tas ir.
Tā izdrukā iekšpusē dažu HTML tagus sekojošo.
Man PHP tagu šeit ligzdot iekšpusē iepriekš tag.
"Pre" tikai nozīmē iepriekš formatētu tekstu, mono-izvietoti, piemēram, rakstāmmašīnu.
>> Printr ir drukas rekursīvs funkciju.
Un tad tur ir šis interesanta lieta šeit.
Un mēs atgriezīsimies pie šī jo tur ir citi,
bet dolāra zīmi pasvītrojums post šķiet
mainīgais PHP, kurā kaut kas sūtāt no pārlūka uz serveri
izpaužas uzglabā jums.
Un mēs redzēsim, kā nokļūt pie šī informācija pirms ilgi.
>> Bet vispirms, iesim atpakaļ uz Nedaudz atšķirīgs piemērs.
Nonākšana register-- vai drīzāk, froshims1.php,
kas izskatās nedaudz atšķiras.
Paņēmu nedaudz vairāk pūles ar formatējumu,
pat ja tas joprojām ir diezgan neglīts.
Bet es esmu gatavojas iet uz priekšu un ierakstiet "David" tagad.
Vīrietis.
Mēs pārbaudīt "Captain" šoreiz.
Mēs darīsim Matthews.
Un reģistrēt.
>> Un šoreiz tā saka, hm, nav īsti.
Labi, lai to, ko reģistra 1?
Ļaujiet man iet uz atklātos reģistros 1 and-- hm.
Visas tiesības, tāpēc tas ir interesanti, un šī
ir pakāpiens tagad virzienā vairāk interesantas programmas.
>> Ievērojiet augšā šis fails ir PHP tagu kā arī daži komentāri.
Un tie ir, tagad, novērst uzmanību tāpēc pieņemsim tikai atbrīvoties no šiem komentāriem
tāpat kā viņi ir C. Un es apgalvot ar šo rieciens kodu ar piebildi
ka šis kods ir iesniegumu apstiprināšanu.
>> Nu, izrādās, ka mainīgie, piemēram, dolāra zīmi
uzsvērtu amatu ir sauc par super Globālie.
Viņi, piemēram, šo īpašas globālie mainīgie
ka ir tikai Omni-pašlaik pieejami jūsu programmā.
Un jūs varat izmantot kvadrātiekavas notācija indeksēt uz tiem nav, izmantojot skaitļus
piemēram, 0, 1, 2, 3, bet faktiskie vārdi.
>> Tātad jūs varat iedomāties dolāra zīmi uzsvērtu amatu veida hash tabulas
ka jūs varētu iet atslēgu, lookup vārds, starp kvadrātiekavās,
un tas notiek, lai dotu jums atpakaļ vērtība, lietotājs faktiski sniegti.
PHP ir funkcija sauc tukšs, ka tikai
saka, jā vai nē, šis mainīgais ir tukšs vai nav.
Mums ir šie dubultā bāri, kas nozīmē tikai to, vai, tāpat kā C.
>> Tātad faktiski, šī līnija 4 ir tikai sakot, ja lietotājs nav dot nosaukumu
vai nedeva dzimums vai nebija dot kopmītnes, iet uz priekšu un novirzīt viņu
vai viņas pa šo līniju šeit.
Tātad tas ir mazliet noslēpumains, bet tas tikai nozīmē, burtiski
doties atpakaļ uz šo vietu, tāpēc Punts lietotājam
atpakaļ, lai kur viņš vai viņa nāca no.
Bet tas ir mazliet neelegants jo es cītīgi kodē to.
>> Bet ko tad, ja šis nosacījums nevērtē kā patiess?
Ko darīt, ja lietotājs bija man viņa vai viņas vārds un kopmītnes un dzimums?
Ka, ja nosacījums nav gatavojas novērtēt uz true,
tāpēc man nav hit izeju rindā 7.
Tātad, kas notiek?
Un tas ir tas, kas ir interesanti par PHP.
>> Jūs varat piliens uz un no PHP režīma, lai runāt.
Ja jūs vēlaties kādu kodu izpildīt, Jūs varat atvērt un aizvērt PHP tagu
un nodot kodu, tur, piemēram, es esmu darījusi šeit.
Tiklīdz jūs aizvērt PHP tagu, serveris
ir tikai gatavojas izspļaut ko jūs likts tur.
Un tiešām, tas bija daļa no oriģināls dizains PHP,
lai labāk sliktāk, bija šī sajaukšanos kodu un atzīmes
valoda.
Un mēs redzam, ka tas ir ļoti ātri devolves haosā.
Un tā mēs darīsim labāk nekā Tas galu galā, bet tikai
pamanīt vieglumu, ar kuru es esmu patiešām spēj izpildīt kādu loģiku.
>> Bet tomēr mazliet underwhelming.
Atvērsim up versiju divi Frosh IP, kas
acīmredzot iesniedz register2.php.
Tātad šis fails patiesībā notiek izskatās gandrīz vienādi.
Es iešu uz Frosh IP 2.
Bet Frosh IP 2, pieņemsim redzēt, kas notiek.
>> David, noklikšķiniet uz pogas, kā tā sauc; Matthews, ne kapteini.
Reģistrēties.
Esat reģistrējies.
Nav īsti.
Oh wait, mēs tikko izdarījām šis piemērs, nebija ne mēs?
Visas tiesības, stāvēt.
Mēs darīsim to trīs.
Skaidrs kaut ko ir par notikt ar Gmail.
Mēs tur nokļūt.
>> Tātad Frosh IP 3 izskatās šādi.
Neatšķiras.
Bet, kad man David, vīrietis, Matthews, un reģistru, šo trešo un galīgo versiju
prasības, gluži vienkārši, jums tiek reģistrēti tiešām.
Tas ir sava veida nebūtiska.
Bet es varu pieprasīt ar šo Trešais un pēdējais variants
Man tagad ir pārbūvēts tieši to my istabas biedrs un es būvētas Frosh IP
programmas gadiem.
Un tas bija vienkārši.
Nebija datu bāzes, nē Excel izklājlapu.
Bet vēl svarīgāk, vairs nebija papīra
jo tas, ko mēs izdarījām ar šo programmu bija tiešām e-pastu Proctor, kurš
bija iepriekš saņemot šīs lietas caur formām.
>> Un acīmredzot mēs esam ieprogrammēts tas tādā veidā, ka tad, kad kāds reģistrē,
John Harvard kontā e-pastus proctor-- vai pats šajā gadījumā,
Jānis Harvard-- ar šādiem text-- "Šis cilvēks vienkārši reģistrēta."
Vārds ir David, kapteinis ir tukšs; dzimums, vīrietis; un kopmītnes, Matthews.
>> Tātad, kas tur notika?
Nu, failu jautājumu šeit acīmredzot register3.php.
Un, ja es atvērtu šo, jūs redzēsiet gan jauda kodu kā šis
un arī, godīgi sakot, nedrošība ir, piemēram, e-pasta sistēmu.
Es tikko efektīvi izlikās būt John Harvard šādā veidā.
>> Man ir atvērta php tagu up top, kas vienkārši saka šeit nāk daži PHP kodu.
Šeit lejā, izrādās tur ir bibliotēkas PHP.
Jums vienkārši nav nepieciešams ietver header failus, kā daudz.
Jūs saņemsiet vairāk ar virtuves izlietne, lai runāt.
>> Bet šoreiz 4. līniju, man vēlas īpašu bibliotēku sauc
PHP mailer, kas ir kaut kas jums var instalēt bez maksas daudzās sistēmās.
Leju šeit es esmu apstiprināšanu iesniegšana tikko
pārbaudot nebija lietotājs dot man vārds, dzimums, un kopmītnes.
Un, ja tā, tad iet uz priekšu un instantiate mailer.
>> Jūs varat domāt par to kā ir rindiņu kodu, kas vienkārši piešķir līdzekļus.
Tas ir tāpat kā malloc, bet tas ir mazliet sexier
ka jūs pieminēt ne tikai malloc un dažas vispārīgas numurs.
Jūs sakāt, iedodiet man vienu no tiem, dod man jaunu vienu no šiem.
>> Un, ja jūs esat programmē Java vai C ++, vai citas valodas,
Jums varētu būt redzējis šo.
Bet pietrūkst to, ja svešs, šī līnija
laiž dolāra zīmi pastu īpašu struct sauc
objekts, kas ir iebūvēts e-pasta funkcionalitāte.
Un patiesībā, pamanīt un līdzīga sintakse.
>> Tas nav rādītājs, per se.
PHP vienkārši izmanto to pašu sintaksi.
Šī līnija saka izmantošanu SMTP-- Simple Mail Transfer
Protokols, kas ir tikai protokols, ko izmanto, lai nosūtītu pastu.
Tas ir norādot izmantošanu Harvard SMTP serveris, kas
ir kaut kur šeit pilsētiņā.
>> To sakot, tas, ko TCP porta numuru runāt,
un es tikko sapratu, ka veic googling vai uzdodot palīdzības dienestu.
Un tad tāpēc Harvard izmanto dažus sistēmas drošību uz pasta server--
vismaz, lai šifrētu satiksme starp jums un to,
kaut gan ikviens var nosūtīt it-- Es esmu gatavojas, lai ieslēgtu TLS protokolu
saglabāt to droša.
>> Bet tas ir, ja lietas get nedaudz biedējošu.
Es varu tikai patvaļīgi teikt, ka es esmu jharvard,
un es varu tikai patvaļīgi rakstiet sevi šeit.
Un tad es varu norādīt priekšmets ar šo līniju šeit.
>> Un tas tikai izskatās neglīts, bet tas ir tikai ķekars konkatenācija.
Izrādās, PHP ir super noderīgu simbolu, piemēram, dažās valodās, dot operators,
kas tikai burtiski concatenates stīgu pēc virknes pēc virknes,
un jums nav malloc vai skaitlis ārā kopgarumā virkni.
Jūs vienkārši darīt to.
Un tiešām, jo ​​es esmu concatenating jo visas šīs lietas ar šiem punktiem,
tas ir iemesls, kāpēc e-pastu man nosūtīts izskatījās kā tas notika.
>> Un tad visbeidzot šeit, es esmu nosūtot pastu.
Tātad, ja tas ir nepatiess, Es esmu tikai gatavojas mirt,
kas ir funkcija, kas tikai izdrukas uz ekrāna dažas kļūdas ziņojumu.
Bet tas ir, faktiski, zvanot sūtīšanas funkciju.
Pretējā gadījumā, ja tas viss neizdodas, tas novirza mani atpakaļ šeit.
>> Un kāpēc es redzu, ka Es esmu reģistrēts tiešām?
Nu, tas notika tieši šeit.
Tāpēc es celt šo up pāris iemeslu dēļ.
>> Viens, tas ir tieši tā, kā tad, ja jūs veidot kādu mājas lapu par galīgo projektu
vai reālajā pasaulē, tas ir kā nosūtīt e-pasta atgādinājumus
lai jūsu klientiem vai jūsu abonentiem.
Tas ir, kā jūs sūtīt paroli atgādinājumus.
Tas ir, kā jūs sūtīt cilvēkus ziņas ka tie ir jauns Facebook
ziņa gaidot vai kaut kas tamlīdzīgs.
>> Bet tas arī runā Fakts, ka tas varētu
ir bijuši ļoti labi no Davin vai kāds cits.
Un es saku veida ar smaidu, jo es esmu
pilnīgi pārliecināts par to, kas iet cauri vairākas no jūsu prātos šajā brīdī.
Bet šis ir viens no tiem darīt, kā I saka, nevis kā man veida lietas,
jo tas ir niecīgs, lai veidot e-pastus, kā šis.
Bet kā jums var būt redzējis vai lasīt Crimson,
par vēlu, tas ir arī diezgan triviāla cilvēkiem
izsekot to atpakaļ uz kādu izcelsmi.
Un uzdot man kādu laiku, varbūt pie CS50 pusdienām, kā es pirmo reizi
iepazinās ļoti cieši gandrīz uz ed valdes daudzus gadus
atpakaļ, kad es atklāju kā internets strādāja.
Tātad jebkurš case-- nedaudz pēc ed kuģa izdarīja.
>> Tātad, jebkurā gadījumā, ir viss ķekars super Globālie,
kā viņi sauc šeit, no kuriem viens mēs saw-- dolāra zīmi pasvītrojuma amatu.
Tur kolēģi sauc get, kas ir, ja sīkumi no URL
nonāks iet.
Un tur ir viss ķekars citiem, too-- sesija un servera un cookie.
Mēs atgriezties cookie kādu citu laiku,
bet sesija ir veida atdzist jo tieši now-- līdz now--
viss, ko mēs esam darījuši ar interneta pārlūku ir sava veida bezvalstnieks, lai runāt.
Es varu noklikšķiniet uz apkārt, piekļuve failus uz servera, kaut
notiek uz ekrāna, bet tad savienojums aizveras.
Internet Explorer vai Firefox ikona apstājas vērpšana
un jūs vienkārši redzēt, ko ka Web lapa satur.
>> Tātad HTTP ir bezvalstnieks, jo tiklīdz tas padara savienojumu,
izpaužas daži dati, tas arī viss.
Ne vairāk pieslēgums, atšķirībā no Skype, atšķirībā FaceTime, atšķirībā GChat, kas
uztur nemainīgu savienojums ar serveri.
Web ir fundamentāli atvienots, lai gan mēs
redzēt, pirms ilgi, cik mēs varam simulēt lietas
piemēram, Facebook tērzēšana un GChat, kas uztur illusion--
vai faktiski darīt saglabāt konstante savienojums, izmantojot
vairāk modernās tehnoloģijas.
>> Bet, ja es eju uz, teiksim, counter.php, šis ir vēl viens vienkāršs piemērs,
kā mēs redzēsim, ka patlaban domā Es apmeklēju vietnes nulles laiku.
Bet, ja es vienkārši pārlādēt lapu, tas kaut kā zina, ka es biju šeit iepriekš.
Ja es pārlādēt atkal, to zina, ka es biju šeit iepriekš.
Un atkal un atkal un atkal un atkal.
>> Tātad tur ir daži plus plussing notiek, bet paziņojums
maz lieta griežas kādreiz tik īsi augšu augšu, un tad atvieno,
tāpēc tas nav, piemēram, man ir konstants savienojums ar manu ierīci.
Nu, ja es iedziļināties counter.php, pamanīt, cik vienkārši tas ir.
Es pirmo reizi aicinu šo īpašo funkcija, ka mēs drīz
sākt lietot par pašsaprotamu sauc sesija sākums.
Sākt sesiju.
>> Un sesija turpmāk ir tikai būs spainis, piemēram, iepirkšanās
grozs, kurā jūs varat ievietot vērtības un veida uzticas kā programmētājs
ka viņi būs šeit, kad lietotājs nāk back-- otru
vēlāk, stundu vēlāk, pat gadu vēlāk, tik ilgi, kamēr viņš vai viņa nav skaidrs
viņu cepumi, kā mēs galu galā redzēt.
Un tagad man vienkārši ir ja stāvoklis šeit.
Tātad, ja šādu atslēgu, sauc skaitītājs, ir kas iekšā
Šī super global-- šo hash galds, ja jūs will-- sauc sesiju,
tad iet uz priekšu un paķert vērtība no session-- domā
par to kā iepirkšanās cart-- un uzglabāt to
ar pagaidu mainīgo sauc skaitītājs.
>> Pretējā gadījumā, ja šī vērtība skaitītājs bija nav noteikts tā saucamo iepirkumu grozā,
vienkārši inicializēt to 0.
Visbeidzot, uz leju šeit, iet un nodot atpakaļ vērā iepirkšanās ratiņi vai sesijas
vērtība counter +1.
Tātad izrādās, ka šis īpašs konteiners here--
kas, atkal, ir viens no tiem saistītie bloki, masīvs, ka jūs varat indekss
vārdos, nevis numbers-- saglabājas arī pēc tam, kad lietotājs iet prom.
Atkal, es iešu atpakaļ uz lapu tagad.
Tas ir bijis minūti, vai arī tā.
Bet tas atceras, ka es esmu šeit bijis 19 reizes pirms tam.
Šis ir mans 20. vizīte.
>> Un tā tas būs galvenais Īstenojot jebkuru mājas lapā, kas atceras
ka jūs esat pieteicies, ka jūs likts kaut burtisks jūsu iepirkumu grozā
pirkt vai ka jums ir dažas ziņojumu skaits gaidot.
Anytime vēlaties atcerēties informāciju,
mēs redzēsim, ka PHP, piemēram, vairākas citas valodas,
nodrošina mūs ar šo ilūziju par valsts kaut gan, kā jūs redzēsiet PSET 6,
kā jūs gūstat HTTP pieprasījumus no klienta uz serveri, tas arī viss.
Tiklīdz jūs saņemsiet atpakaļ, ka reakcija, tur nekas vairāk
atgriežoties no servera pēc noklusējuma.
Bet mēs redzēsim, kā strādāt ap to.
>> Nu tagad, pamēģināsim sakopt šo augšu mazliet.
Mēs esam redzējuši dažus dažādi piemēri tur.
Ak, un kā malā, lai tie pazīstami vai svešs,
iemesla dēļ, ka Frosh IP piemērs gāja
no meklē patiešām neglīts slightly-- labi,
joprojām ugly-- nedaudz mazāk neglīts kaut arī joprojām neglīts
ir tāpēc, ka, ja mēs skatāmies avota kodu šeit
izrādās, ka man ir šī pašā augšā faila.
>> Izrādās, ka sāknēšanas ir viens no daudziem brīvi pieejama bibliotēkās, kas tur
ka pastāv ne programmēšanas valodām vienmēr, bet CSS vai JavaScript
vai HTML vai kādu valodu skaits.
>> Un šie ļaudis here-- sākotnēji iznāca
no Twitter-- vienkārši ir viss ķekars stilu.
Tas ir masveida failu šeit ka kāds rakstīja,
vai kāds ir rakstījis, laika gaitā, ka precizēts, krāsas un formatējumu
un plauktiņš tā, ka es varu veida aizņemties to sintakse
un nav izdomāt Kā nolikt savu formu.
Tas ir arī minified tā, ka dators var
saprotu, bet ne vienmēr ir cilvēks.
Tātad tas ir tikai tāpēc stilizācija tur mainījies.
>> Bet pieņemsim tagad darīt labāk attiecībā uz dizainu,
jo, ja mēs paliktu uz leju šis ceļš ir pārāk garš,
Mūsu kods gatavojas iegūt netīrs un Mesjē.
Tātad, pieņemsim koncentrēties uz šiem piemēriem šeit.
Pēdējais šodien.
>> Tātad, šeit ir super vienkāršs no CS50 tīmekļa versija 1.0.
Tas ir tikai saites uz lekcijas un mācību programma,
un tas ir, izmantojot šo nesakārtotu sarakstu tag-- LU tagu, ka mēs izmantojām pēdējo reizi.
Un, ja patiesībā, ja es atvērt Skatīt lapas avotu,
jūs redzēsiet, ka tas ir tiešām, tiešām vienkārši HTML.
Un patiesībā, pat ja tas ir PHP failu zem motora pārsega,
tas joprojām ir tikai spļaut veikt tikai HTML tagad.
>> Tātad, ja es noklikšķiniet uz lekcijām, mēs redzam, tas notiek.
Un, ja es noklikšķiniet uz nedēļu nulle, mēs redzam.
Un, ja es noklikšķiniet uz Trešdiena, mēs redzam.
Un tas acīmredzot bija PDF no slaidiem no šīs dienas.
Viss, ko es esmu darījis, ir saikne ar enkurs tag uz šo URL šeit.
>> Tātad tas ir tikai teikt, tas ir diezgan vienkāršs versija CS50 tīmekļa vietnē.
Let 's redzēt, kā tas ir īstenots.
Ja es iedziļināties mvc0 direktorijā, mēs redzēsim dažus failus.
Viens no tiem ir README, tāpēc, ja daži no tā ir pārāk ātri,
Jūs varat vienkārši kule apkārt vairāk nesteidzīgs vēlāk.
Un paziņojums šeit ir index.php failu.
Izrādās, ka tad, ja jūs, cilvēku,
nenorādāt galīgo vārdu URL, web serveri parasti
secina kādu noklusēto nosaukumu jums.
Indekss dot kaut ko parasti noklusējuma.
>> Tātad, tāpēc pirms brīža kad es apmeklēju šo URL šeit,
nē faila nosaukumu, ne fails paplašināšanu, nekāds termiņš URL.
Tā vienkārši zināja kaut maģiski meklēt index.php.
Tas ir tikai konvencija.
Varētu nosaukt neko.
>> Tātad, ja es tagad iedziļināties index.php, jūs redzēsiet
ka indeed-- pieņemsim atbrīvoties no komentāriem
šeit, jo tur tiešām nekas interesants it--
tas ir tikai grūti kodē HTML.
Tā ka ir konsekventa, lai gan, ar manu prasību
ka jūs varat sajaukt HTML un PHP.
Nav aktuālā programmēšanas loģiku šeit.
>> Un citi faili ir diezgan daudz tikpat neinteresanti.
Tas ir tikai iekodēts nedēļu viens šeit uz nedēļu vienu m un nedēļu viens w,
pirmdien un trešdien.
Un tad, ja es atvērt nedēļā nulle, pamanāt, ka tas ir gandrīz identiski.
>> Un tas ir sava veida galveno takeaway.
Ievērojiet, cik lieks tas ir.
Šie faili tikko mainās, un tomēr es velk vienu no šiem copy / paste darbavietas
kur es spēra vienu file-- domājams nedēļā zero-- kopēt to
kad nedēļu viens ieradās apmēram, un tweaked dažas vērtības.
Mums, iespējams, jābūt iespējai darīt labāk nekā šis.
>> Tāpēc iesim atpakaļ līdz MVC un iedziļināties versiju vienā.
Un paziņojums man dažus failus, jo tas, ko
bija kopīgs visiem šiem failiem tikai brīdis ago-- ja es dodos atpakaļ uz versiju 0,
iesim atpakaļ indeksā, un tikai postulate--
kad man atbrīvoties no comments-- kāda daļa no šīs lapas
ir iespējams, katrā no maniem failiem?
Tikai sauc to ārā.
Kuras pozīcijas tiek dublēti iespējams, visās no šīm lapām?
Yeah?
>> STUDENTU: [dzirdams].
>> DAVID J. Malan: 1 līdz 9.
Jā, pilnīgi noteikti.
1 līdz 9, izņemot varbūt 8 maina mazliet arī tāpēc CS50
kļūst lekcijas vai nedēļa nulle vai kaut ko.
Bet gandrīz identiski.
Tātad tas viss ir tikai veida nokopēt un ielīmēt.
Un tur ir pāris citas līnijas Es domāju
no tā, iespējams, ir identiski pāri visiem failiem.
>> STUDENTU: 12 un 13.
DAVID J. Malan: Jā.
Protams, 12, 13, 14 un, iespējams, tikai tāpēc, ka interesanti sīkumi
notiek uz līnijām 11 un 10, tāpēc tas varētu likties.
Tātad, aplūkosim versija 1, kas cenšas, lai uzlabotu to.
Šā MVC example-- 1 versiju mēs paskaidrot, kas MVC līdzekļi tādā moment--
ja es iedziļināties indeksā, tas veida izskatās nedaudz mulsinoši tagad.
Tas nav tik vienkārši, kā agrāk.
>> Bet tad, kad jūs sākat lasīt uzmanīgi, tas ir
diezgan vienkārši, ko tas dara.
Acīmredzot līnija 1 un line 8 ir aizstājis
visi sīkumi jūs vienkārši identified-- lai gan tikai labu pasākumu,
Es atstāja ULS tur tikai gadījumā kādā dienas nebija saraksts ar lietām.
Un tā prasa ir veids kā mārciņu iekļaut C. Tas kopijas un pastas
saturs efektīvi tepat uz šo failu.
>> Tātad header.php, kā jūs var secināt, ka tās nosaukumu,
būs galvenē lapā.
Tas ir sava veida bāreņiem šeit.
Tas ir tikai no augšas uz to, bet tur ir ne vairāk satura zemāk.
>> Un, ja es paskatos uz kājeni tikmēr, kas bija citu failu mentioned--
tas viens ir pat mazāk interesants, bet atkal, tas ir kopīgs visu.
Tātad šis ir kājenes.
Tas ir iesākums.
Šis ir fails, kas ir mainās, tad kāpēc ne
mēģināt faktors out vienveidību ar šīm divām līnijām šeit?
>> Bet mēs varam tīrīt šo up mazliet tālāk.
Es esmu gatavojas iet uz priekšu un atvērt versija divas kur
mēs redzam, ka tur ir jaunu failu, helpers.php.
Redzēsim, kas tas ir brīdi.
Iesim uz indeksu, jo sākumpunkts kā iepriekš.
>> Un tagad paziņojums es esmu pieprasot helpers.php, nevis galveni vai kājeni.
Bet palīgi ir veids kā helpers.c un helpers.h no PSET 2
vai PSET 3 sen, kad jūs faktiski bija meklēt un atrast šim PSET,
un jums bija visu savu kodu kārtošanas un meklējot atsevišķā failā.
Tas, kas notiek šeit.
>> Un tagad 3 līnija izskatās nedaudz atšķiras.
Un tā ir tikai viena rinda.
Lai padarītu šo vēl vairāk skaidrs, es varētu vienkārši
to, ka tas ir stilistiski konsekventi ar visu pārējo mēs esam darījuši.
Bet tas nav īsti mainot funkcionalitāti.
Tā ir tikai viena līnija reālā kodu.
>> Acīmredzot, tur ir funkcija kaut kur aicināja padarīt galveni,
un tas ir, ja lietas iegūt diezgan spēcīgs.
Ievērojiet, ka iekšpusē tā iekavās Ir ko citi gabals sintakse?
Tas ir iespējams, nedaudz grūti pateikt, bet pamanīt there's-- Es nolikšu dažas baltas
telpu.
Tur ir kvadrātiekavās.
>> Un kvadrātiekavas mēs redzējām mazliet atpakaļ kontekstā asociatīvo masīvu,
kas ir, atkal, tāpat kā hash tabulas.
Un, ja jūs tagad domājat, C, rīkojums argumenti par funkciju
ir vienmēr ir vienādi.
Jums ir jāatceras, kāda pasūtījuma is-- X, Y, Z vai Z, Y, X-
un jums ir vienmēr sniegt viņiem tādā pašā kārtībā, vai tos uzmeklēt
ja esat aizmirsis.
>> Bet tas, šķiet, ir gudrs veids izturēt patvaļīgu atslēgas vērtību
pāru kuru nosaukums ir nosaukums par argumentu šajā lietā
un CS50 ir tā vērtība.
Un tas, ka man ir šie kvadrātiekavas
šeit nozīmē to, ka es varētu arī iet kaut
tāpat nedēļa ir 1 vai 0, vai 2, vai 3.
Tātad, mēs esam parametros šī funkcija tādā veidā,
ka tas var veikt vairākas ieejas, bet tagad tā ir tikai viena.
>> Ja es tagad iedziļināties helpers.php, paziņojums, ko tas dara.
Tas ir mazliet jaunu funkcionalitāti,
bet tagad tikai ņemt uz ticību, ka tas ir
sintakse ar kuru jūs definēt funkciju PHP.
Tu burtiski saka funkciju.
Jums nav jānorāda peļņu tipa, un tas ir konsekventi
ar mainīgo detail agrāk ja jums nav īsti spēcīgi rakstīt.
>> Tas tikai precizē ka, pēc noklusējuma, šis
aizņem asociatīvā masīvs kā argumentu.
Un jūs zināt, ko?
Ja lietotājs neiztur vienu jo, pieņemu, noklusējuma vērtība.
>> Šī ir funkcija, kas C nav mums, kas ir jauki, jo tagad
dati, pat tad, ja jums nav arī tā neko,
būs masīvs bet tukša vienu.
Un kā malā, ekstraktu vienkārši dara kaut bailīgs
kur tas nepieciešams, visas atslēgas no šī asociatīvā masīva, visas lietas
jūs varētu likt kvadrātiekavās, un rada mainīgie no tām
lai mēs galu galā var piekļūt uz tiem footet.php un header.php.
Tas ir nedaudz abstrakts, tāpēc ļaujiet man norādīt šo out.
>> In index.php, pamanīsiet, ka es esmu iet ar galveno vērtību pāri nosaukuma
ar vērtību CS50.
Ja es tagad paskatās helpers.php, pamanīt, ka RenderHeader
ir ieguves, ka dati, kas es esmu, kas iet in, un pēc tam pieprasot header.php.
Ko es esmu darījis, ir sava veida nabaga vīra īstenošana tagad no šīm darbībām.
>> Ja es atvērt header.php, Paziņojums, ka es esmu vairs grūti
kodēta vārdu CS50 šajā header failā.
Esmu likts tas, protams atrociously nosaukts funkcija, HTML speciālie simboli,
tur.
Bet pamanīt to, ko es esmu darījusi.
Man atvērtu HTML.
Man tad ir atvērta galvu un atvērtu titulu.
>> Un tad iekšpusē nosaukums ir atvērts un aizvēršanas tagi, man ir mazliet PHP kodu.
Un tas ir jauki, bet par sintaksi, kas nozīmē tikai atbalss out.
Tas burtiski nozīmē this-- atbalss following--
bet tas ir sexier rakstīt.
Atbalss out titulu kas ir bijis pieņemts.
>> Bet ko jūs domājat HTML īpaša char ir visu par,
it īpaši, ja jums ir daži pirms HTML pieredze?
Kādas zīmes varētu būt bīstami pāriet uz lapu
kur jūs dinamiski radot mājas lapa ar kodu kā šis?
Ļaujiet man iet uz šo failu, versija divi, un redzēt, ja es nevaru izraisīt to.
>> Versija divi tas ir.
Un paziņojums, viss ir labi, darbojas labi.
Bet domāju, ka es iedziļināties index.php un Es norādīts, ka nosaukums manā lapā
nav CS50.
Tā ir atvērta kronšteins skripts brīdinājumu Hello World, tuvu viena quote,
aizvērt iekavas, semikols, atvērta kronšteinu, slīpsvītra skriptu.
>> Script, kā mēs beidzot redzēt, ir tag
ka jūs varat izmantot, lai izmantot citu programmēšanas valoda sauc
JavaScript iekšpusē mājas lapā.
Un tagad paziņojums loģiku šeit.
Te ir galvenais sauc nosaukumu.
Te ir tas ir traks garš vērtību tagad.
>> Bet, ja es eju uz palīgiem page- vai drīzāk, header lapā,
Es esmu aicinot šo funkciju par šo titulu pirmo.
Tātad, ja es tagad pārlādē šo lapu, es redzēt to, kas izskatās smieklīgi,
bet tas ir droši.
Tā tikai izskatās muļķīgi.
>> Bet pieņemsim, tā vietā Man bija aizmirsis to.
Un pieminiet manus vārdus, nulle numurs no jums būs aizmirst to darīt
un jūs saņemsiet kādu strādīgs students vai draugs nāk uz augšu
uz jums tajā CS50 gadatirgū vai anonīmi naktī papētījis savā mājas lapā
un būtībā injicēšanas kodu nezinot jūs savā portālā
kaut kā.
>> Jo, ja es vienkārši spļaut out nosaukumu šeit un nosaukums
there-- labi, ja virsraksts burtiski izskatās šādi, un PHP
kā valoda, kas var spļaut veic citas valodas tekstu,
tas burtiski notiek aizstāt šo tagu ar,
Protams, to, ko man citur.
>> Tātad, ja es tagad iet šeit un pārlādēt pēc atsaukt šos drošības mehānismus,
tagad man ir sveiki pasauli šeit.
Tagad tas nav viss, kas liels galā, bet jūs varētu darīt kaut ko
nedaudz vairāk ļaunprātīgs Šeit, tāpat kā tur ir
cita tags-- kā mēs redzēsim, kad mēs tērēt vairāk laika JavaScript-- piemēram, atrašanās vietas
dot href izpaužas, citēju, likt pēdiņas beigās, HTTP business.com, bet pretējo, ka
no otras dienas.
Un tagad jūs varat izraisīt web lapa faktiski iet uzreiz
šajā mājas lapā šeit.
>> Un patiesībā, es nevēlos pat iet uz business.com
jo es nevēlos zināt, kas tas ir.
Bet tas arī aktivizēs kodu kas ievada šajā lapā.
Tātad tas ir tikai teikt, ka, lai gan mēs ieviest super agri dažiem
Šo vairāk sarežģītu struktūru, tas viss ir uz beigām par pārliecinoties
ka jūsu kods nav apgūstams.
>> Tāpēc tagad trešā versija šeit.
Tas kļūst mazliet mīļotājs.
Es īsti like-- anālais pusē mani
bija kļūst nedaudz kaitina Tas, ka man bija funkciju sauc
RenderHeader un RenderFooter kas bija gandrīz identiski.
Tātad, tas notika ar mani, kāpēc ne Es parameterize šīs funkcijas
uz tikai vienu sauc apmetuma, ir paies otru argumentu
tāpat nosaukumu veidnes, galīgo lai render-- nu galveni vai kājeni?
Un tad pēc izvēles, ja es gribu nodot vairākās būtiskās vērtību pārus
piemēram, man par titulu par header bet ne kājenē,
Es varētu darīt.
>> Un tāpēc tagad, ja man iedziļināties helpers.php, tas ir nedaudz sarežģītāka.
Un es ņemšu vilnis manu roku pie detaļas, bet tas ir tikai viena funkcija.
Tā ka ir solis ceļā uz labāku dizainu.
>> Mēs varam izmantot šo vienu soli tālāk.
Ja es iet manā ceturtdaļai versija par šo, paziņojums tagad
ka es daru kaut ko vēl vairāk veida mistisks.
Un es zinu, tas ir Daudz uzņemt uzreiz,
bet mēs esam tikai veida tīrīšanas lietas uz augšu.
Tagad es varēšu savus palīgus failu mapē ar nosaukumu
includes-- tikai patvaļīgs nosaukt, kur es gribu, lai sīkumi
ka es gribu include-- un tad pārējais tas ir tas pats.
>> Bet, ja es izskatos tagad gedit, Paziņojums, ka es esmu gotten atbrīvoties
no visiem šiem citiem failiem, un es esmu pārvieto tos, piemēram, uz šeit.
Un tad veidnes, Man tas arī šeit.
Un tā tas ir viss, tagad uz soļa izmantot daudz labāk projektēšanas modelis.
Un mēs esam ļoti ātri gatavojas doties prom
No PHP noklusējuma funkcionalitāti, ko mēs šeit sākām ar,
kur jūs vienkārši sajaukt PHP, un jūsu HTML, un jūsu CSS,
un jūs vienkārši spļaut to ārā un jūs iet par savu ceļu.
Tas nebūs ļoti uzturams.
Tāpat kā C, mēs sākām izmantot vairākus failus un vairākas funkcijas
un faktoringa lietas, ka out.
Mēs darīsim pats šeit.
Un faktiski, piektais un pēdējais versija šeit, man bija viena cita lieta.
Jūs pat varat izmantot dot dot, kas, atkal, ir tikai mātes direktorijā.
Lai būtu vēl vairāk drošības apzinās, jo, ja es paskatos klausīšanās
šeit piekto un galīgo versiju, brīdinājuma ka man ir viens direktoriju šeit sauc
valsts, un pēc tam uz vienādā līmenī, tā sakot,
Man ietver un veidnes un tad, ka teksta failu readme.
>> Un iemesls, kāpēc es esmu strukturēta tas patīk this-- un tik daudz web
saimniekiem, jo ​​īpaši tiem 5 $ mēnesis tiem vai $ 10 mēnešu tiem,
Ja jūs esat kādreiz bija viens no šiem services-- ko tik daudzi no viņiem
ir viņi tikai gaida, lai jūs dump visu Sava failus vienā direktorijā,
tāpat kā mēs to izdarījām jau ar tas pats pirmais piemērs.
>> Bet, tiklīdz jūs sākat būvēt vairāk sarežģītu vietnes, kas tikai uzglabā
Dati jums rūp un failus, jums rūp, faktiski organizējot lietas
pareizi un ar lielāku drošību apziņa prātā var
sākam aizstāvēt pret visiem draugiem
ka jums ir vai nu, vai ārpus šīs klases, kas,
tiklīdz jūs sāktu īstenot programmas sevi tīmeklī,
gatavojas sākt picking par jums un par tiem.
>> Un tāpēc mēs skatīsim galu galā par šo dizainu.
Tas ir tikai bilde kas attēlots šādi.
Mēs ejam, lai nodot visu mūsu programmēšanas veidošana ar vienu vai vairākiem failiem,
un mēs braucam, lai tikai sāktu aicinot tos kontrolieriem.
Tas ir, ja smadzenes Mūsu mājas lapas patiesībā ir.
Tad mēs ejam ir redzams, un viedokļi
ir tik vienkārši, kā tikai atsevišķu files-- sauc veidnes, bieži.
Viņi vienkārši ir estētika manu lapu,
ko es gribu lapu izskatīties like-- krāsas un izkārtojumu
un pozīcijas visi mainīgie lielumi.
>> Un tad vēl interesantāku ka mēs beidzot nokļūt
ir paraugs, kas būs tieši vārds mēs iepļaukāt citām tehnoloģijām
ka mēs stājas attēlu, piemēram, faktisko datu bāzēm,
tā, ka tad, kad jūs vēlaties lai saglabātu informāciju,
jūs ne tikai sūtīt e-pastu Jūsu Proctor vai sevi,
jūs faktiski uzglabāt to datubāzē izmantojot citu valodu sauc par SQL.
Un tāpēc mēs šodien ņemšu atvaļinājumu šeit un uzņemt ar šo trešdien
un ieviest datu bāzes pēc tam.
>> [Mūzikas atskaņošanai]