>> [Music kucheza]
>> DAVID J. Malan: zote haki.
Hii ni CS50.
Huu ni mwanzo wa wiki nane.
Na unaweza kukumbuka kuwa sisi kushoto mbali Mara ya mwisho kuangalia lugha mpya
kabisa.
Kwa kweli, moja kwamba ni haki nyepesi na si hata
lugha ya programu.
Ni ghafi lugha kwamba unatuwezesha kweli muundo na kufanya kurasa za mtandao.
Na wakati kitu kingine kwa kushirikiana na this--
au hivi karibuni mapenzi, kama wewe si tayari.
Tunakwenda kutumia kuachia Mtindo mashuka, au CSS, ambayo
ni aina nyingine ya lugha na tabia na maadili
hiyo ni kwenda hebu kufanya mambo kama mabadiliko ya rangi
na kubadili msimamo na aina hii ya tweaks.
Lakini leo na kuendelea, sisi kuanza kwa kuzingatia lugha nguvu zaidi,
lugha halisi ya programu kama PHP.
>> Hivyo PHP imekuwa karibu kwa muda fulani.
Na kama utaona, ni ilikuwa iliyoundwa kimsingi
mapema kwa halisi kutumia katika maendeleo ya mtandao
na kwa kweli kuzalisha kurasa za mtandao.
Hivyo ni aina gani ya makala gani lugha
unahitaji ili kufanya mtandao kurasa dynamically na hilo?
>> Kwa maneno mengine, kama unataka kuzalisha yaliyomo dynamically-- kama Facebook
Newsfeed, ambayo mabadiliko daima, au ujumbe wa papo kwamba pop up kutoka wakati
kwa time-- kama nini kipande muhimu ya utendaji
unahitaji katika lugha ya programu kwamba ingekuwa basi wewe dynamically
magazeti ya habari mpya na screen?
>> STUDENT: Kanuni.
DAVID J. Malan: Kanuni.
OK.
Tutaweza kuchukua hiyo.
zaidi kidogo sahihi.
I mean, tunaweza kufanya huu kwa C, kusema ukweli.
Itakuwa maumivu ya shingo.
But-- ni ahadi hii?
>> STUDENT: Yeah.
Vigezo, labda?
DAVID J. Malan: Vigezo.
OK, uhakika.
Vigezo tunaweza kutusaidia.
Na hata kitu rahisi.
Sisi kutumika katika sana kwanza mpango wa siku ya kwanza
wakati sisi kweli alisema "hello dunia."
>> STUDENT: this.
>> DAVID J. Malan: this, haki?
Magazeti, au printf katika dunia ya C. Hivyo muda wote huu,
tulikuwa katika yetu ovyo language-- C,
katika particular-- na hata Mwanzo kwa jambo hilo kwamba
inaweza kuzalisha nyuzi ya maandishi.
>> Naam, kama HTML, kama tuliona wiki iliyopita, ni tu rundo zima la masharti ya maandishi
angalau kwa mabano wazi na C. mabano na baadhi ya aina ya wimbo
na sababu ya nyuma yake, vizuri basi tunaweza kweli
kuanza kuzalisha kurasa za mtandao ama mwenyewe kwa kuandika yao nje katika gedit
au katika Neno Microsoft, kwa kuwa matter-- sisi tu haja ya mhariri wa maandishi.
>> Au tunaweza kuandika kanuni, kwa maoni yako
awali, kwamba ingekuwa hebu dynamically kuzalisha HTML,
na kwamba ni nini tunakwenda kuanza kufanya kwa PHP
na hatimaye hata kwa lugha inayoitwa JavaScript,
ni kutumia lugha moja ya kuzalisha mwingine.
Na kwa kweli, hii ni nini Facebook na wengi, wengi maeneo mengine
kufanya kweli dynamically kuonyesha habari mpya na wewe.
>> Basi hebu kuanza na this-- a cryptic kuangalia line, lakini moja
hiyo ni kweli pretty nguvu.
Hivi sasa, tumekuwa kutumia C, ambayo ni lugha ulioandaliwa.
Na tu recap-- haraka ulioandaliwa Lugha ina nini tabia?
Wewe ni wazi haja ya kukusanya , lakini haina maana gani?
Yeah?
>> STUDENT: Ni mahitaji ya kuwa wamekusanyika katika mashine kificho.
>> DAVID J. Malan: Sawa.
Inahitaji kuwa walikutana ndani ya mashine kificho.
Hivyo kuchukua chanzo yako kificho, ambayo ni aina ya Kiingereza-kama.
Kubadilisha kwamba kwa kitu ngazi ya chini,
ambayo ni hatimaye aitwaye kitu code-- 0 na 1 ya.
Na ni wale 0 na 1 ya kwamba CPU, kama wale yaliyotolewa na Intel,
kweli kuelewa.
>> Sasa, PHP na Chatu na Ruby na JavaScript na mashada ya nyingine
lugha si ulioandaliwa lugha lakini kutafsiriwa lugha,
ambayo ina maana tu ya aina yao na kisha huna kurejea kwao katika 0 na 1 ya.
Wewe badala tu kutoa basi kama pembejeo kwa mpango wa mtu mwingine,
aitwaye mkalimani.
Na kwamba mtu mpango imekuwa iliyoundwa
kuelewa nini kila mmoja na kila alama katika Python PHP au
au Ruby au idadi yoyote ya Lugha nyingine maana yake.
>> Na hivyo wote tunahitaji ni kitu kama hiki.
Hivyo kwa kweli, mimi nina kwenda kwenda juu kwa appliance
hapa, tu ndani yoyote dirisha zamani, na sisi ni
kwenda mbele na wazi faili inayoitwa, kusema, hello.
Sasa hapo awali, nipate kuokolewa hii hata kwa faili ugani,
lakini mimi nina kwenda kufanya kitu rahisi hata hapa.
Mimi nina kwenda mbele na kuanza faili hili na syntax hii cryptic.
Hivyo "user, bin, env, kwa ajili ya mazingira, php. "
>> Hii ni tu mstari mmoja wa kificho kwamba kwenda kuwaambia mfumo wangu wa uendeshaji,
kwenda kupata katika eneo lako mazingira chochote yaani,
popote PHP is-- interpreter-- na kwenda mbele na kutumia mkalimani
kutafsiri kificho zifuatazo.
Sasa, hii ni aina ya mbaya hulka ya PHP.
Lakini katika lugha hii, yoyote wakati wewe kuandika PHP kificho,
unahitaji kuwa mmoja wa haya ugly Vitambulisho PHP kugawa mwanzo
ya yako code-- <? php.
>> Lakini chini hapa, mimi sasa wanaweza kufanya kitu rahisi sana, kama printf hujambo comma
dunia backslash n karibu quote, mabano karibu.
Na kisha tu kwa ajili ya mema hatua, mimi nina kwenda
kwenda mbele na karibu php yangu tag juu hapa
hivyo kwamba inaonekana kila kitu nicely pretty kuchapishwa.
>> Na haraka kama mimi bonyeza Save, gedit ni kweli smart kutosha
kuangalia kwamba mstari wa kwanza sana na kutambua, oh, wewe kuandika PHP code.
Napenda syntax kuonyesha ni pamoja na rangi
hapa ili kwamba anasimama nje kidogo zaidi.
Lakini sasa mimi nina kwenda chini ya terminal dirisha yangu.
Mimi itabidi zoom katika.
>> Mpango huu aliitwa "hello," hivyo mimi nina kwenda kufanya dot slash hello,
lakini ruhusa alikanusha.
Na bash.
Sisi kwa kweli habari ya kwamba wiki jambo michache iliyopita
katika mazingira ya Shellshock, mmoja wa wale mende.
>> Lakini ruhusa alikanusha tumeona kabla, labda katika mazingira tofauti.
Je, mtu yeyote kukumbuka jinsi unaweza kurekebisha kitu
ambapo ruhusa ni alikana kama hii?
Nini amri, angalau?
>> STUDENT: chmod.
DAVID J. Malan: Yeah, chmod, kwa ajili ya kubadilisha mfumo wa faili.
Na utapata wote zaidi kutumika wiki hii ijayo na tatizo baadae
kuweka.
Lakini kwa sasa, mimi nina kwenda na mabadiliko mode si kuwa someka,
lakini kwa kumpa kila mmoja executeability marupurupu, uwezo
kuendesha faili hii.
Na mimi nina kwenda hawawajui kwamba faili hello.
>> Kama mimi sasa kufanya dot slash hujambo kuingia, wewe kuona, kwa kweli, mpango wangu, hello dunia.
Na nini hatua gani mimi wazi ruka kabisa?
Kuandaa.
Hivyo mimi tu mbio mpango huu rahisi kabisa.
>> Na zinageuka unaweza kufanya hivyo kwa mengi ya syntax kukumbusha ya C.
Napenda kwenda katika na kanuni ya leo, ambayo mimi kuweka katika vhost directory yangu
hapa, kwa sababu halisi tutaweza kuja nyuma.
Na mimi nina kwenda katika, hebu sema, hali ya 1.
>> Na utaona hapa, ya kwanza na hand, rundo zima la maoni.
Lakini hii ni kweli re-viumbe katika PHP
ya mpango sisi alivyofanya katika wiki aitwaye hali ya moja 1.c
ambapo lengo katika maisha ya mpango huu
ni inaonekana kuuliza user kwa integer
na kisha kufanya baadhi fluffy uchambuzi juu yake ambapo
unaweza kusema kama ni chanya au hasi au sawa na sifuri.
Na mimi kuleta hii up tu kwa sababu, isipokuwa labda moja undani kidogo,
ni kutofautishwa hivyo mbali kutoka C.
>> Nini tabia moja hapa kwamba labda anaruka nje
saa wewe kama kidogo tofauti?
Labda mambo mawili.
Yeah?
>> STUDENT: Dola ishara n?
>> DAVID J. Malan: Yeah.
Hivyo ishara ya dola n ni sasa.
Na dola ishara, kama tutaweza kuona, ni kwenda
kuwa kurekebisha mwanzo ya kutofautiana yoyote katika PHP.
Ni nzuri na bad-- nzuri katika kwamba ni aina ya dhahiri nini
kutofautiana, mbaya katika kwamba ni bado jambo lingine aina.
Na kuna moja nyingine Jambo tuna kabisa
kuonekana, angalau kwa herufi hii. yeah?
>> STUDENT: Readline.
>> DAVID J. Malan: Readline.
Readline hatukuwa kuona, per se, katika C, ingawa kuna kitu
sawa, lakini tumekuwa kutumika GetString, na hii ni mwenzake yake.
Hivyo kama mimi kwenda katika hii directory, ambayo hufanyika kuwa,
kama mimi itabidi kueleza katika kidogo katika vhost yangu directory na chanzo yangu directory,
na mimi kwenda mbele na kufanya dot slash conditions-- whoops-- dot slash
masharti 1, utaona, tena, sawa issue-- ruhusa alikanusha.
>> Hivyo basi mimi kuvuta na kufanya chmod pamoja x juu ya hali, hali dot slash.
Ningependa integer, tafadhali, 50.
Na tunaweza kucheza hii mchezo siku zote muda mrefu.
Ni kwenda kuishi hasa kama ilivyokuwa katika wiki moja.
>> OK hivyo si kwamba tofauti yote, isipokuwa si tu kwamba kidogo kidogo ya syntax,
lakini saa ya juu, mimi tena alikuwa mstari huu ambayo
kuruhusiwa mimi kujenga kitu ambacho Inaonekana kama C mpango ujulikanao hello,
hali inayoitwa 1.
Lakini si 0 na ndio Mimi utekelezaji wa moja kwa moja.
Ni badala mbio hii mkalimani ambaye jina lake
hutokea kwa kuwa kufanana na lugha.
mpango inaitwa PHP, na kanuni yangu chini ya mstari wa moja ni kuwa alipita ndani yake.
>> Tunaweza kufanya mwingine haki rahisi mfano kukumbusha ya kitu
tulivyofanya wiki iliyopita.
Tena, hii ni aina ya chunk holela wa kanuni
kwamba inaonekana gani nini wakati wewe kukimbia?
Nini hii kwenda magazeti, labda?
>> Hivyo awali kwenye mstari 16, ni kwenda kusema x ni sasa 2, labda.
% D ni sawa na $ i kwa printf.
Hivyo basi ni cubing, dot, dot, dot, katika mstari 17.
Na kisha mstari 18 inaonekana kuwaita kazi Cubed.
Na ambapo ni Cubed defined?
>> Naam, inaonekana kama katika mstari 25, hivyo si kwamba wote kwamba tofauti.
Mimi nimepata baadhi ya maoni juu yake, lakini kwa sehemu kubwa,
ni haki moja kwa moja porting au kubadilika
kutoka C mpango wa PHP version.
Lakini sasa kuna michache ya tofauti kwamba labda lazima kuruka nje.
Kile kingine ni tofauti kuhusu jinsi ya wapate kuandika mpango huo huu katika C?
>> STUDENT: [inaudible].
>> DAVID J. Malan: Kuna hakuna mfano juu juu.
Hivyo PHP-- na kusema ukweli, mengi ya languages-- kisasa
mengi nadhifu na zaidi kusaidia kuliko C compilers katika kuwa wewe
unaweza kuweka kazi hapa, unaweza kuweka kazi chini hapa,
na mkalimani ni kwenda kufanya wewe neema ya kusoma
faili nzima kabla anaamua kwamba baadhi ya kazi haipo.
Hivyo maboresho nzuri miaka ya baadaye.
Lakini pia kuna kitu kingine tofauti au hayupo hapa.
Yeah?
>> STUDENT: [inaudible].
DAVID J. Malan: Hatuna kwa kutangaza aina ya vigezo,
hivyo tutaweza kuona kabla ya muda mrefu kwamba kuna aina tofauti katika PHP,
lakini huna haja ya kutaja yao, ambayo pia ni nzuri na mbaya.
Na kuna wengine jambo moja missing.
>> STUDENT: Hakuna maktaba.
>> DAVID J. Malan: Hakuna maktaba.
OK, hivyo hiyo ni nzuri.
Sisi kupata mengi zaidi nje ya boksi.
Hivyo kuna kweli mengi zaidi mambo kuliko mimi walidhani walikuwa tofauti.
Vipi kuhusu njia ya nyuma?
Nini hiyo?
Kusema ni mara moja zaidi?
>> STUDENT: Pointer.
>> DAVID J. Malan: Hakuna kuyatumia.
OK, angalau katika mfano huu, hakuna.
Hiyo ni haki.
Hivyo kuna si kuyatumia katika PHP kweli kwa ujumla.
Kuna kitu kinachoitwa kumbukumbu, lakini sisi si kutumia muda sana huko.
Na nini kingine?
>> STUDENT: Kuu.
DAVID J. Malan: Kuu.
Hivyo hii ilikuwa biggie Mimi nilikuwa kufikiri ya.
Taarifa hakuna kuu ya kuingia uhakika.
Wewe tu kuanza kuandika code yako.
Na hii ni kweli itakuwa faida
wakati sisi mpito momentarily kwa kweli kutumia
lugha moja hii kwa mtandao msingi programu, ambayo sisi
hawataki kuwa moja tu ya kuingia uhakika.
Sisi kutaka kuwa na rundo la URL, rundo la files tofauti
wote kuchukua katika pembejeo user na kuzalisha pato.
>> Lakini hapa ni disheartening sana mfano kwamba mimi aliahidi mara ya mwisho,
yaani katika folda hii hapa, misspellings.
Hivyo katika hili Speller faili, ambayo sisi si kutumia muda sana juu ya, kuna
kimsingi porting-- P-O-R-T. Ni tu neno aliyopewa wakati, kusema,
kubadilisha kutoka lugha moja mwingine manually kawaida.
>> Hii ni porting ya PC toleo la Speller kutoka pset 5.
Na mimi kimsingi alijaribu kubadilisha ni mstari kwa mstari kama karibu kama naweza.
Hivyo kama wewe kama aina hii ya kitu, ni kweli ni ya thamani katika baadhi ya uhakika
kuunganisha wote wawili up upande kwa upande na kuona nini hicho
na nini tofauti.
Lakini wao ni pretty darn sawa.
Kama unakumbuka kile Speller hata inaonekana kama,
ingawa hakuwa kuwa na mabadiliko ya faili hili,
ni pretty sawa kimuundo na michache tu
mabadiliko ya hapa na pale.
>> Hivyo hii ni tu kusema kwamba ni pretty moja kwa moja kubadili Speller
kutoka C kwa PHP.
Lakini katika kamusi, kuna kitu hata zaidi ya kulazimisha.
Basi mimi kwenda mbele na kujenga dictionary.php yangu mwenyewe faili.
Hivyo tofauti kidogo katika kwamba tutaweza simu yake .php badala ya c.
Sababu hii ni PHP faili, mimi do-- kidogo annoyingly-- kuwa
kuanza faili na tag php kama hiyo.
Na mimi nina kwenda mbele na kufafanua kazi chache.
Kazi kuitwa hundi, ambayo ni kwenda kuchukua katika neno kama kabla.
Lakini hoja ya hii kwenda na dola
ishara kwa sababu sisi ni, tena, kwa kutumia PHP.
Kazi nyingine kutoka dictionary.c alikuwa mzigo
na ilichukua kwa jina la kamusi, hivyo mimi itabidi kupata kwamba kazi tayari kwenda.
>> Mwingine mmoja katika dictionary.c ilikuwa nini?
Ukubwa alikuwa mmoja wa wale nicest, katika angalau kama wewe naendelea baadhi ya kutofautiana kote.
hivyo ukubwa tu ana kurudi kutofautiana.
Na kisha kulikuwa ipakuliwe.
>> Hivyo kulikuwa na hizi nne kazi katika tatizo kuweka 5
kwamba kinachohitajika kutekeleza na baadhi ya muundo data au miundo.
Hivyo mimi aliahidi kwamba katika PHP, tunaweza kutangaza
meza hash, kwa mfano, wote kwa urahisi zaidi kwamba.
Kwa kweli, kama nataka meza hash, Mimi tu kwenda kama kwamba
na kuna hash meza yangu.
Na kwamba kumbuka, disheartening, kwamba sisi kushoto mbali juu ya wakati wa mwisho.
Na unajua nini, kama nilitaka kutofautiana kwa ukubwa, vizuri,
hii moja si wote kwamba tofauti na C,
lakini mimi nina kwenda mbele na kufanya hivyo.
Na taarifa hakuna aina data.
Na mimi itabidi kurudi nyuma baadaye na kweli kuongeza baadhi ya maoni hapa.
Lakini nini kuhusu mzigo?
>> Kama ishara ya dola kamusi ni jina la faili yangu
na mimi kwa kweli wanataka mzigo maneno katika meza hii sasa,
Siwezi kweli kufanya kitu haki rahisi.
One-- na hii ni minorly annoying-- katika PHP,
una bayana ndani ya kazi kama wewe
wanataka kupata baadhi ya kimataifa kutofautiana hiyo inavyoelezwa nje.
>> Lakini si kwamba hasa kuvutia hivi sasa.
Nini kuvutia zaidi ni hii kwa kila kujenga kwamba mimi zilizotajwa wakati wa mwisho.
Na zinageuka kuwa PHP ina kazi aitwaye faili ambao lengo katika maisha
ni kufungua faili na kusoma katika yote ya mistari yake katika safu
na mkono wao nyuma.
>> Ambayo ni kusema naweza kufanya hivyo kamusi kwamba sasa ufanisi wakati mimi wito faili,
hii ni kwenda mkono yangu nyuma safu ya maneno kutoka faili.
Si ni vizuri kwamba wote.
Ni bado anaenda kuwa mstari maneno, kitu linear.
Lakini siwezi kwenda mbele na iterate juu ya kila ya maneno haya kwa kutumia
kwamba syntax tuliona wakati ufupi jana.
Na utaona ni zaidi katika pset ujao.
>> Lakini sasa mimi kuwa kitanzi iterating juu ya kila neno katika kamusi.
Na juu ya kila iteration, kukumbuka mimi nina wito neno sasa "neno."
Na wote ni kwenda kuchukua ili kuweka neno katika kamusi ni
itakuwa neno nadhani "kweli."
Hiyo ni kuingiza yangu kazi.
Hiyo ni mzigo wangu kazi kwa kamusi yangu.
Sasa ni kidogo ya kudanganya kwa sababu, unajua nini, kuna kweli
backslash n mwishoni mwa maneno kwamba mimi lazima pengine kujikwamua,
lakini si kwamba tatizo kwa sababu PHP ina kazi kuitwa Night ambayo literally
chops mbali tabia moja mwishoni sana.
Hivyo hakuna tatizo huko.
Tumeenda mbele na kweli walioteuliwa kuwa tu hii.
Na sasa mimi lazima pengine kuweka wimbo ya kawaida, hivyo hebu angalau kufanya this--
ukubwa ++.
Siwezi kufanya kwamba kama kabla.
Na kisha hii pengine ni kwenda kazi nzuri tu, ili kurudi ya kweli.
Kufanyika.
Pset 5.
>> [Kicheko]
>> DAVID J. Malan: Sawa.
Tunakwenda kufanya hivyo tena na pset ijayo, pia.
Basi nini kuhusu ukubwa?
Naam, hii moja hopefully ni kuhusu kama ungependa kutarajia mara ya mwisho,
ingawa mimi kufanya hii kijinga kimataifa jambo.
Ni tu artifact kutoka kubuni lugha ya.
>> Lakini kuangalia ni kidogo zaidi ya kuvutia.
Hivyo kama mimi kupita katika dola ishara neno, mimi kwanza
wanataka kupata kwamba kimataifa variable meza.
Na sasa kama nataka kuangalia kama neno ni pale,
Siwezi tu kusema kama ni kweli kwamba zifuatazo ni kuweka katika meza,
kisha kwenda mbele na kurudi kweli; mwingine, kurudi uongo.
Kufanyika.
nusu nyingine ya pset 5.
>> Haki wote, hivyo tena, mimi nina kukata pembe chache.
Katika haki, mimi lazima pengine kutumia sekunde chache zaidi
juu ya utekelezaji huu.
Na mimi pengine haipaswi maskhara wote masaa kuweka juu ya pset sana.
Hivyo strtolower ni kazi.
Kitu sawa mdhanaishi katika C, angalau kwa wahusika,
lakini PHP got kamba nzima toleo.
>> Kwamba kinaendelea kwa nguvu kila kitu kwa Herufi za chini, ambayo baadhi yenu
wapate wamefanya nini canonicalize wewe walikuwa kuweka katika kamusi yako.
Na sasa unaweza kufanya hivyo katika C, pia.
Hii ina kitu cha kufanya na PHP.
>> Lakini wakati wowote una Hali Boolean,
kama kitu kwenye mstari 10 huko, ambayo ni tu
kwenda kutathmini kwa kweli au uongo, na wako kama kingine wazi
ni kurudi kweli au uongo, mimi naweza tu kweli kufanya sexier hii
na tu kufanya kitu kama hiki.
Hivyo kwamba kuna hundi yangu kazi.
Haki, kama Boolean anarudi kweli au uongo,
hebu tu kurudi mara moja.
>> Na kuna wachache tweaks nyingine Mimi naweza kufanya hapa na pale.
Load-- ipakuliwe, kwa njia, kwamba amefanya.
Kitu cha kufanya huko.
Tangu yote ya kumbukumbu katika PHP na lugha nyingine nyingi
ni kweli imeweza kwa ajili yenu.
Hivyo ambapo katika C, kama wameweza kujifunza painfully,
chochote malloc au calloc au realloc, una bure mwenyewe.
Chochote fopen, una fclose, hivyo kuwa rasilimali hatimaye huru
na zana kama Valgrind si taarifa na wala kulalamika,
ambayo ni jambo zuri kwa kukimbia juu yao.
>> Lakini hakika, kuna lazima kuwa baadhi ya kukamata, haki?
Vinginevyo, sisi aina ya kupita rundo zima la wiki.
Hivyo kuna idadi yoyote ya sababu nini sisi aina ya kuchukua trajectory huu,
lakini kuna biashara-off.
Haki, hii imekuwa ufadhili.
>> Hivyo kile huenda biashara-off hapa kusonga, kutoka C kwa PHP?
Anahisi kama wote kushinda hadi sasa zaidi ya kidogo ya ubaya hapa au pale.
Yeah.
Nini hiyo?
>> STUDENT: [inaudible] kumbukumbu.
DAVID J. Malan: kasi.
OK.
Vizuri, kasi yangu alikuwa pretty kufunga.
Haki?
Lakini kasi ya utekelezaji wa mpango?
OK, hivyo hiyo ni hatua ya haki.
>> Hivyo kama ingekuwa kutokea, mimi mapema cued up kujaribu yangu wote wawili ufumbuzi, moja
Mimi nilikuwa kwenye bodi kubwa ilikuwa kujaribu makao ufumbuzi,
na mimi kuwa na kwamba katika orodha hii hapa.
Hivyo mimi katika wakati huu, naweza kwenda mbele na kukimbia hii juu ya King James Biblia,
kupiga kuingia.
Na hii ni hopefully sahihi utekelezaji mwishoni,
anitiaye wakati katika jumla ya sekunde 0.38 kwa kuwa
moja mfano fulani holela.
>> Na kama mimi sasa kwenda katika hii pili terminal dirisha
hapa ambapo mimi kwanza kufunguliwa gedit, basi mimi kwenda katika code-- leo ambayo, tena,
ni katika saraka hii here-- na basi mimi kwenda mbele na kukimbia Speller.
Hivyo tu kuwa wazi, hii ni toleo PHP.
Mimi tu kuonyesha juu yake hapa.
>> Hivyo kama mimi kufanya Speller ya tilde CS50 Pset 5 maandiko, King James, kuingia.
Ni bado kasi zaidi kuliko kuandika katika C, lakini wakati jumla
yaani, ilani, 0.93, ambapo yangu Utekelezaji C-msingi alikuwa 0.38.
Hivyo ni tofauti zisizo na maana.
>> Na hii ni kwenye faili moja.
Kama ungekuwa na kukimbia mbili mipango dhidi ya bodi kubwa
na kuwa na rundo zima la pembejeo kupimwa, hii bila ya shaka kuongeza hadi.
Na kama sisi alikuwa seti hata kubwa data, hii, pia, itakuwa kuongeza hadi wote zaidi.
Hivyo ndiyo, kulipa baadhi ya bei ya kasi ni kweli kesi.
Nini kingine?
Yeah?
>> STUDENT: Kiasi cha RAM matumizi.
>> DAVID J. Malan: Kiasi cha RAM matumizi.
Hivyo mimi hakutoa moja ya pili walidhani wakati wa kuandika PHP hii
toleo kama kwa kiasi gani kumbukumbu nilikuwa kutumia.
Mimi kabisa deferring kwamba kwa PHP yenyewe na mtu aliandika mpango kwamba.
Na kwamba wanaweza kuwa sawa, lakini kama mimi kweli kweli
huduma kuhusu kufinya utendaji kama kiasi nje ya mpango wangu au nje ya tovuti yangu
au nje ya chochote chombo Mimi kujenga, labda
PHP, kwa kweli, sio lugha ya haki.
>> Na kwa kweli, kwamba ni kwa nini, kwa mfano, wengi mtandao servers--
mipango halisi kwamba kumtumikia up mtandao content--
hazikuandikwa katika PHP au katika chatu au Ruby.
Yameandikwa, kama utasikia sasa kufanya na pset 6,
katika C ili uweze itapunguza kila kidogo ya utendaji nje yake
na kwa kweli zoezi kudhibiti faini nafaka juu ya nini
kinachoendelea chini kofia na si tu kuchukua
kwa nafasi baadhi ya juu data kiwango muundo.
>> Fikiria, baada ya yote, yeyote katika PHP kutekelezwa
kwamba dhana ya hash table-- ni kweli zaidi
vizuri aitwaye array-- associative anafanya yeye au yeye kuwa na wazo lolote nini aina
wa pembejeo wewe ni kwenda kuwa kuweka katika muundo?
Hivyo ni wazi si, haki?
Ni chombo generiska katika toolkit kwamba
zinazotolewa kwa mtu yeyote ambaye anataka kuitumia, na hivyo hakika ni
haiwezi optimized hatimaye kwa nini hasa unataka kufanya.
>> Hivyo biashara-offs-- maendeleo wakati nguvu tofauti, utendaji wanaweza kutofautiana,
utata au matumizi ya kumbukumbu inaweza kutofautiana.
Na hivyo kile utapata inazidi ni kwamba kuna
kwenda kuwa tofauti zana kwa ajili ya biashara.
Na kwa kweli kwa ajili ya wengi super ya watu miradi ya mwisho katika darasa hili,
amini au si, C si kwenda kuwa lugha ya haki ya kutumia.
>> Na kwa kweli, moja ya takeaways hatimaye kwa ajili ya darasa yoyote kama hii
ni kupata wewe kufikiria juu, vizuri, unapaswa kuvuta mbali
rafu wakati unataka kutatua baadhi ya tatizo.
Na kwa kweli, tutaweza kuvuka daraja hii hata zaidi kama sisi kuangalia lugha zaidi
hata zaidi ya leo.
>> Basi hebu mpito sasa kwa labda mazingira zaidi ya ukoo
kwa kutumia lugha kama PHP.
Ni kwa kiasi fulani ya kawaida ya kutumia katika mstari amri, kuandika scripts
kama mimi, lakini ni kiasi, zaidi ya kawaida.
Na ilikuwa nia ya kutumika katika aina ya mafaili kwamba kwa kawaida mwisho
katika .php-- lakini hiyo ni si prerequisite--
kwamba wao wenyewe kuzalisha bidhaa za mtandao.
>> Hivyo basi mimi kwenda mbele na kufungua chache Mifano mimi tayari mapema.
Na hayo ni kweli aina ya kweli hadithi katika kuwa moja ya mambo ya kwanza
Niliyotenda mwenyewe baada ya kumaliza CS50 na labda, nadhani,
CS51 miaka iliyopita ni yangu roommate na mimi walikuwa kusaidia
kuendesha Freshman intramural mpango michezo, ambayo, wakati huo,
alikuwa freshman kusajili kwa mbalimbali michezo kwa kujaza kipande cha karatasi,
kama ilikuwa inaitwa, kutembea hela yadi ya Wigglesworth,
na kuacha ni katika baadhi ya mlango tone mwangalizi ya.
Na kisha yeye au yeye aliamua kwenda kupitia yao na kisha kweli email sisi manually
kwamba sisi ilisajiliwa kwa baadhi ya mchezo.
>> Hivyo ni wazi, nafasi kwa ajili ya kuboresha.
Siku hizi, unaweza kugeuka tu Aina ya Google, lakini nyuma katika siku,
tulikuwa na kweli kufikia for-- hii ilikuwa hata kwamba kwa muda mrefu ago-- kufikia
kwa ajili ya programu lugha ambayo ilikuwa si PHP.
Wakati huo, ilikuwa kitu kinachoitwa Perl,
ambayo ina wamekwenda nje ya Vogue tangu.
Lakini wazo ni sawa.
>> Na mimi kimsingi waliketi kujaribu bandari huenda matoleo Perl PHP kwa,
lakini katika Kanusho kamili, hakutoa yoyote walidhani aesthetics bado tu.
Hivyo hapa ni ukurasa wa mtandao.
Hii ni faili.
Kama mimi kuvuta, inaonekana wake aitwaye froshim0.php
tu kwa sababu ni yetu kwanza mfano katika mfululizo huu.
Na taarifa kwamba ina nini inaonekana kuwa mbaya sana HTML fomu,
lakini aina ya kuvutia kwa sababu inaruhusu
mimi kutoa pembejeo user kwa browser.
>> Sasa mara ya mwisho wakati tulikuwa fomu, kwa ambaye alifanya sisi kuwasilisha swala parameter yetu,
parameter foleni kama ilikuwa inaitwa?
Hivyo Google, haki?
Sisi kabisa punted juu ya wazo la kufanya kitu chochote na pembejeo kwamba.
>> Lakini leo, sisi kuanza kuzalisha pato.
Na tabia mimi nina kwenda kuona hapa awali ni pretty yasiyo na maana.
David, mimi itabidi kuangalia mbali jinsia hapa, wanasema Matthews hapa.
Sitakuwa nahodha.
Mimi nina kwenda bonyeza Daftari.
Na taarifa kwamba URL ina iliyopita kujiandikisha-0.php,
na kisha kuna hii Nakala mbaya hapa.
Mimi alitoa hakuna mawazo kwa formatting ya hii.
>> Lakini nini ni ya kuvutia ni kwamba tatu maadili walikuwa inaonekana kupita katika.
Hii ni aina PHP ya sawa na printf--
tutaweza kuona nini ni kweli aitwaye katika bit-- kwamba tu Prints nje
nini kupita ndani yake.
Hivyo hii inaonyesha kwamba fomu alikuwa mashamba angalau tatu kwa hiyo,
na wewe kuona mimi aina yao katika.
Mmoja alikuwa jina langu, mmoja alikuwa jinsia, moja ilikuwa mabweni.
Na nahodha hawakuwa hata kupata alimtuma server kwa sababu mimi si kuangalia ni.
>> Hivyo hii ni kusema inaonekana, wakati kuwasilisha mambo kwenye mtandao,
si tu gani URL wakati mwingine change-- wakati mwingine hana.
Kwa kweli, jina la faili iliyopita, lakini nini ni watoro kutoka URL
kwamba sisi alifanya kuona mara ya mwisho na Google.
Yeah?
>> STUDENT: Hakuna kamba swala
>> DAVID J. Malan: Hakuna kamba swala.
Hakuna swali alama fulani.
Hakuna swali alama q sawa paka, kama tulivyofanya mara ya mwisho.
Na kuna hakika hakuna jina swali alama sawa
David au Dorm sawa Matthews, hivyo ambapo ni kwamba wote kwenda?
>> Naam, napenda kwenda nyuma gedit hapa na kufungua ya kwanza ya mafaili wale
katika vhost yangu, mwenyeji wa ndani, umma directory hapa na kwenda katika froshim0.
Hivyo ni zamu nje kwamba karibu yote ya ukurasa hii ni HTML.
Na hii hazijulikani na wewe, lakini hivi karibuni itakuwa zaidi na pset 6
na pset 7 na pset 8.
Lakini hii ni tu ukurasa HTML.
>> Na mambo ya kuvutia inaonekana kuwa zaidi ya hapa.
tag fomu ambaye hatua sifa ina thamani ya kujiandikisha 0.
Hiyo ni kwa nini wakati mimi kuwasilisha hii, unaendelea na faili hilo.
Lakini mbinu ni tofauti today-- baada.
Hivyo ni zamu nje kuna angalau njia mbili kwenye mtandao kutumika
kutuma habari kutoka browser server.
Kupata kuiweka katika URL.
Baada kuiweka mahali pengine.
Na wakati na kwa nini huenda you kweli unataka tovuti
kutumia baada basi badala ya kupata, tu intuitively?
Tovuti yoyote.
Ni aina gani ya data lazima kupita tu na inference sasa kupitia baada kinyume
kupata, kama tumeona tofauti mbili?
STUDENT: [inaudible] salama.
DAVID J. Malan: Kama unataka kitu kuwa salama.
Hivyo unaweza aina nywila ndani ya tovuti, kadi
katika tovuti ingekuwa aina ya haya suboptimal
kama browser kuweka kwamba thamani ndani ya URL.
Kwa nini?
Unaweza kuona ni, ambayo haina kuonekana kuwa kama mpango kubwa,
lakini ni tabia mbaya wewe pretty mara nyingi kutembea mbali na kompyuta au matumizi yako ya kompyuta
maabara, na hivyo mtu mwingine au hata roommate
wangeweza kutembea juu na kuona kwamba habari binafsi.
Wakati kutuma barua pepe kupitia mtandao, pengine
hawataki data kwamba mwisho up katika URL kama vizuri.
Na hivyo kuna idadi yoyote ya sababu nini sisi kutaka kuiweka hapa.
Na photos-- haki, siwezi hata kabisa kufikiria jinsi ungependa kuchukua mchoro,
kama JPEG, na kuiweka katika URL.
Unaweza kufanya hivyo.
Kuna njia ya encoding yake, lakini ni si tu moja kwa moja kama hiyo.
>> Hivyo kujiandikisha 0 ni kweli aghali sana.
Wote ni anasema halisi ni hii.
Ni Prints nje ndani ya baadhi ya HTML yafuatayo.
Mimi nimepata PHP tag hapa Furushi ndani ya tag kabla.
"Kabla" tu ina maana maandishi kabla ya formatted, mono-spaced, kama typewriter.
>> Printr ni magazeti kujirudia kazi.
Na kisha kuna hii kuvutia kitu hapa.
Na tutaweza kuja nyuma hii kwa sababu kuna wengine,
lakini ishara ya dola underscore baada inaonekana kuwa
kutofautiana katika PHP ambayo chochote kutuma kutoka browser server
anapata kuhifadhiwa kwa ajili yenu.
Na tutaweza kuona jinsi ya kupata katika kwamba habari kabla ya muda mrefu.
>> Lakini kwanza, hebu kwenda nyuma mfano tofauti kidogo.
Kwenda katika register-- au badala yake, froshims1.php,
ambayo inaonekana tofauti kidogo.
Mimi alichukua zaidi kidogo juhudi na formatting,
ingawa bado ni pretty mbaya.
Lakini mimi nina kwenda mbele na aina katika "David" sasa.
Kiume.
Tutaweza kuangalia "nahodha" wakati huu.
Tutaweza kufanya Matthews.
Na kujiandikisha.
>> Na wakati huu inasema, hm, si kweli.
Haki wote, hivyo nini ya kusajili 1?
Napenda kwenda katika daftari wazi 1 and-- hm.
Haki zote, hivyo hii ni kuvutia, na hii
ni jiwe wanazidi sasa kuelekea mipango zaidi ya kuvutia.
>> Taarifa juu ya faili hii ina PHP tag kama vile baadhi ya maoni.
Na hayo ni, kwa sasa, ovyo hivyo hebu tu kujikwamua maoni hayo
kama wao uko katika C. Na mimi kudai na chunk hii ya kificho na maoni
kwamba kanuni hii ni kuthibitisha kuwasilisha.
>> Naam, ni zamu nje kwamba vigezo kama ishara ya dola
kusisitiza baada ni aitwaye globals super.
Wao ni kama haya vigezo maalum ya kimataifa
kwamba ni tu Omni-sasa inapatikana ndani ya programu yako.
Na unaweza kutumia mraba bracket nukuu index ndani yao si kwa kutumia namba
kama 0, 1, 2, 3, lakini maneno halisi.
>> Hivyo unaweza kufikiria ishara ya dola kusisitiza baada kama aina ya meza hash
kwamba unaweza kupita muhimu katika, Luke neno katika-kati ya mabano mraba,
na ni kwenda kukupa nyuma thamani kwamba mtumiaji kweli zinazotolewa.
PHP ina kazi aitwaye tupu kwamba tu
anasema ndiyo au hapana, hii kutofautiana ni tupu au si.
Tuna baa hizi mbili, ambayo tu ina maana au, kama katika C.
>> Hivyo katika athari, mstari huu ni tu 4 akisema kama mtumiaji hakutoa jina
au hakutoa jinsia au hakuwa kutoa Dorm, kwenda mbele na kuelekeza naye
au wake kupitia mstari huu hapa.
Hivyo hii ni kidogo cryptic, lakini hii ina maana tu halisi
kwenda nyuma ya eneo hilo, hivyo punts user
nyuma popote yeye au yeye alikuja kutoka.
Lakini ni inelegant kidogo katika kwamba mimi ngumu coded hivyo.
>> Lakini nini kama hii kama hali haina kutathmini kwa kweli?
Nini kama user hakuwa nipe yake au jina yake na Dorm na jinsia?
Kwamba kama hali si kwenda kutathmini kwa kweli,
hivyo mimi si hit exit katika mstari 7.
Hivyo kile kinachotokea?
Na hii ni nini kuvutia kuhusu PHP.
>> Unaweza kuacha ndani na nje ya PHP mode, hivyo kusema.
Kama unataka baadhi ya kanuni na nitafanya, unaweza kufungua na kufunga PHP tag
na kuweka kificho huko kama mimi tumefanya hapa.
Haraka kama wewe karibu PHP tag, server
ni kwenda tu mate nje chochote kuweka huko.
Na kwa kweli, hii ni sehemu ya mpango wa awali wa PHP,
kwa ajili ya bora kwa mbaya, ilikuwa hii commingling ya kificho na ghafi
lugha.
Na tutaweza kuona kwamba hii sana haraka warithi katika fujo.
Na hivyo tutaweza kufanya vizuri zaidi kuliko hii hatimaye, lakini tu
taarifa urahisi na ambayo nina kweli uwezo wa kutekeleza baadhi ya mantiki.
>> Lakini bado kidogo aghali.
Hebu kufungua toleo mbili ya Frosh IMS, ambayo
inaonekana elekeza kwa register2.php.
Hivyo faili hili hasa kinachoendelea kuangalia karibu sawa.
Mimi nina kwenda kwa Frosh IMS 2.
Lakini katika Frosh IMS 2, hebu angalia nini kinatokea.
>> David, bonyeza kifungo redio, kama ni kuitwa, Matthews, hakuna nahodha.
Kujiandikisha.
Wewe ni kusajiliwa.
Si kweli.
Oh kusubiri, sisi tu alifanya mfano kwamba, hawakuwa sisi?
Haki wote, kusimama kwa.
Tutaweza kufanya tatu.
Wazi kitu kuhusu kutokea kwa Gmail.
Tutaweza kupata huko.
>> Hivyo Frosh IMS 3 inaonekana kama hii.
Hakuna tofauti.
Lakini wakati mimi kufanya Daudi, kiume, Matthews, na kujiandikisha, hili toleo la tatu na ya mwisho
madai, kwa urahisi kabisa, wewe wameandikishwa kweli.
Hiyo ni aina ya halina maana yoyote.
Lakini mimi kudai na hii tatu na ya mwisho ya toleo
Mimi sasa recreated nini hasa wangu roommate na mimi kujengwa kwa IMS Frosh
mpango wa miaka iliyopita.
Na ilikuwa rahisi.
Kulikuwa hakuna database, hakuna spreadsheet Excel.
Lakini muhimu zaidi, kulikuwa hakuna karatasi zaidi
kwa sababu kile sisi alivyofanya kwa mpango huu ilikuwa kweli email mwangalizi, ambaye
hapo awali ilikuwa ya kupokea mambo haya kupitia fomu.
>> Na inaonekana tumekuwa iliyowekwa hii katika kama njia kwamba wakati mtu madaftari,
Barua pepe akaunti John Harvard proctor-- au mwenyewe katika kesi hii,
John Harvard-- na yafuatayo text-- "Huyu mtu waliojiandikisha tu."
Jina ni David, nahodha ni tupu, jinsia, kiume, na Dorm, Matthews.
>> Hivyo kile kilichotokea huko?
Naam, faili katika swali hapa ni inaonekana register3.php.
Na kama mimi kufungua hili, utaona wote nguvu ya kificho kama hii
na pia, kusema ukweli, ukosefu wa usalama mfumo kama email.
Mimi ufanisi tu akadai kuwa John Harvard katika njia zifuatazo.
>> Nina wazi php tag juu juu, ambayo tu anasema inakuja baadhi ya kanuni PHP.
Chini hapa, anarudi huko nje ni maktaba katika PHP.
Wewe tu hawana haja ya pamoja mafaili header kama mengi.
Kupata zaidi na kuzama jikoni, hivyo kusema.
>> Lakini wakati huu katika mstari 4, mimi kufanya wanataka maktaba maalum iitwayo
PHP mailer, ambayo ni kitu Unaweza kufunga kwa ajili ya bure katika mifumo mingi.
Chini hapa mimi nina kuthibitisha kuwasilisha tu
kwa kuangalia hakuwa user kutoa mimi jina, jinsia, na Dorm.
Na kama hivyo, kwenda mbele na instantiate mailer.
>> Unaweza kufikiri ya hii kama kuwa mstari wa kanuni kwamba tu kutenga.
Ni kama malloc, lakini ni sexier kidogo
katika kwamba wewe kutaja sio tu malloc na baadhi ya idadi ya leseni.
Unaweza kusema nipe moja ya hizi, nipe mpya mmoja wa haya.
>> Na kama wameweza iliyowekwa katika Java au C ++ au lugha nyingine,
unaweza kuwa na kuonekana huu.
Lakini fupi ya hayo, kama usio wa kawaida, mstari huu
unaweka katika ishara ya dola pepe struct maalum iitwayo
kitu kwamba ina kujengwa katika email utendaji.
Na kwa kweli, taarifa na syntax sawa.
>> Hii si pointer, per se.
PHP tu anatumia syntax huo.
Mpya Hii ni kusema matumizi SMTP-- rahisi Mail Transfer
Itifaki, ambayo ni tu itifaki kutumika kwa kutuma barua.
Hii ni kufafanua matumizi Harvard SMTP server, ambayo
ni mahali fulani hapa juu ya chuo.
>> Hii ni kusema nini TCP bandari idadi kuzungumza,
na mimi tu figured kwamba nje kwa googling au kwa kuuliza msaada dawati.
Na kisha kwa sababu Harvard anatumia baadhi mfumo wa usalama juu ya barua server--
angalau encrypt trafiki kati ya wewe na hilo,
ingawa mtu yeyote anaweza kutuma kwa it-- Mimi nina kwenda kurejea kwenye TLS itifaki
kwa ajili ya kuweka huu salama.
>> Lakini hii ni ambapo mambo kupata kidogo inatisha.
Naweza tu kiholela kusema kwamba mimi jharvard,
na naweza tu kiholela email yangu hapa.
Na kisha naweza kutaja somo na mstari huu hapa.
>> Na hii tu inaonekana mbaya, lakini ni tu rundo la concatenation.
Anarudi nje PHP ina ishara super muhimu, kama baadhi ya lugha, dot operator,
ambayo tu halisi concatenates kamba baada ya kamba baada ya kamba,
na wewe huna malloc au takwimu nje urefu wa jumla ya kamba.
Wewe tu kufanya hivyo.
Na kwa kweli, kwa sababu mimi nina concatenating katika mambo yote haya na dots haya,
kwamba ni kwa nini email mimi alimtuma inaonekana kama ilivyokuwa.
>> Na kisha mwisho hapa, mimi nina kutuma barua.
Hivyo kama hii ni ya uongo, Mimi tu kwenda kufa,
ambayo ni kazi ambayo tu prints screen baadhi ya ujumbe wa makosa.
Lakini ni, kwa kweli, wito kutuma kazi.
Vinginevyo, kama haya yote inashindwa, ni maelekezo yangu nyuma hapa.
>> Na kwa nini mimi kuona kwamba Mimi kusajiliwa kweli?
Naam, kilichotokea hapa hapa.
Hivyo mimi kuleta hii up kwa michache ya sababu.
>> Moja, hii ni hasa jinsi kama kujenga baadhi ya tovuti kwa ajili ya mradi wa mwisho
au kwa ulimwengu wa kweli, hii ni jinsi ya kutuma kuwakumbusha email
kwa wateja yako au wateja wako.
Hii ni jinsi gani kutuma kuwakumbusha password.
Hii ni jinsi gani kutuma ujumbe watu kwamba wana Facebook mpya
ujumbe inasubiri au kitu kama hicho.
>> Lakini pia anaongea na ukweli kwamba hii inaweza
wamekuwa vizuri sana kutoka Davin au mtu mwingine.
Na mimi kusema aina hii ya na tabasamu kwa sababu mimi nina
uhakika kabisa nini kinaendelea kupitia kadhaa ya akili yako katika hatua hii.
Lakini hii ni moja ya wale kufanya kama mimi kusema, si kama mimi kufanya aina ya mambo,
sababu ni yasiyo na yazua barua pepe kama hii.
Lakini kama unaweza tumeona au kusoma katika Crimson,
wa marehemu pia ni pretty dogo kwa watu
kufuatilia yao nyuma kwa baadhi ya asili.
Na kuuliza mimi kwa muda fulani, labda katika CS50 chakula cha mchana, jinsi mimi kwanza
got kujua kwa karibu sana karibu na bodi ya ed miaka mingi
iliyopita wakati mimi aligundua jinsi biashara kazi.
Hivyo katika yoyote case-- kidogo baada ya bodi ya ed alivyofanya.
>> Hivyo katika kesi yoyote, kuna rundo zima la globals super,
kama wao ni kuitwa hapa, moja ambayo sisi saw-- dola ishara underscore baada.
Kuna mwenzake aitwaye kupata, ambayo ni ambapo mambo kutoka URL
mwisho juu kwenda.
Na kuna rundo zima la watu wengine, kikao too-- na kompyuta na kuki.
Tutaweza kuja nyuma Cookie baadhi ya wakati mwingine,
lakini kikao ni aina ya baridi kwa sababu haki now-- hadi now--
kila kitu tumefanya na kivinjari ni aina ya uraia, hivyo kusema.
Siwezi bonyeza kuzunguka, upatikanaji files kwenye server, kitu
kinachotokea kwenye screen, lakini basi uhusiano kufunga.
Explorer Internet au Firefox icon ataacha inazunguka
na wewe tu kuona nini kwamba ukurasa wa mtandao ina.
>> Hivyo HTTP ni wasiokuwa na utaifa katika mara moja inafanya uhusiano,
anapata baadhi ya data, hiyo ni yake.
Hakuna uhusiano zaidi, tofauti na Skype, tofauti Facetime, tofauti Gchat, ambayo
inao mara kwa mara uhusiano na server.
mtandao ni kimsingi kukatika, ingawa tutaweza
kuona kabla ya muda gani tunaweza kuiga mambo
kama mazungumzo Facebook na Gchat, ambayo kudumisha illusion--
au kweli kufanya kudumisha uhusiano wa mara kwa mara kwa kutumia
zaidi teknolojia ya kisasa.
>> Lakini kama mimi kwenda, wanasema, counter.php, hii ni mfano mwingine rahisi,
kama tutaweza kuona, kwamba sasa anadhani Nilitembelea tovuti zero wakati.
Lakini kama mimi tu upya ukurasa, ni kwa namna fulani anajua nilikuwa hapa kabla.
Kama mimi Reload tena, ni anajua nilikuwa hapa kabla.
Na tena na tena na tena na tena.
>> Hivyo kuna baadhi plus-plussing kinachoendelea, lakini taarifa
kitu kidogo spins milele hivyo ufupi juu juu na kisha disconnects,
hivyo si kama nina daima uhusiano na appliance yangu.
Naam, kama mimi kwenda katika counter.php, taarifa jinsi rahisi ni.
Mimi kwanza wito maalum kazi ambayo tutaweza karibuni
kuanza kuchukua kwa nafasi aitwaye kikao kuanza.
Kuanza kikao.
>> Na kikao sasa ni itakuwa ndoo, kama ununuzi
gari katika ambayo unaweza kuweka maadili na aina ya imani kama programu
kwamba wao ni kwenda kuwa hapa wakati user kwamba huja back-- pili
baadaye, saa baadaye, hata mwaka mmoja baadaye, hivyo muda mrefu kama yeye au yeye hana wazi
kuki yao, kama tutaweza hatimaye kuona.
Na sasa mimi tu An kama hali hapa.
Hivyo kama ufunguo zifuatazo, aitwaye counter, ni kuweka ndani
hii super global-- hash hii meza, kama wewe will-- aitwaye kikao,
kisha kwenda mbele na kunyakua thamani kutoka kufikiri session--
ya hii kama ununuzi cart-- na kuhifadhi
katika variable muda aitwaye kukabiliana.
>> Vinginevyo, kama kwamba thamani ya kukabiliana na alikuwa si kuweka katika kinachojulikana gari ununuzi,
tu initialize kwa 0.
Mwisho, chini hapa, kwenda na kuweka nyuma ndani ya mikokoteni ununuzi au kikao
thamani ya kukabiliana 1.
Hivyo ni zamu nje kwamba hii maalum chombo here--
ambayo, tena, ni mmoja wa haya yanayohusiana arrays, safu kwamba unaweza index
ndani ya maneno badala ya numbers-- likiendelea hata baada ya user huenda mbali.
Tena, mimi itabidi kurudi ukurasa sasa.
Imekuwa ni dakika au hivyo.
Lakini anakumbuka kwamba nimekuwa hapa mara 19 kabla.
Hii ni ziara yangu ya 20.
>> Na hivyo hii ni kwenda kuwa muhimu kwa kutekeleza tovuti yoyote kwamba anakumbuka
kwamba umeingia katika, kwamba kuweka kitu halisi katika ununuzi gari yako
kununua au kwamba una baadhi ya idadi ya ujumbe inasubiri.
Wakati wowote unataka kukumbuka habari,
tutaweza kuona kwamba PHP, kama lugha nyingine kadhaa,
hutoa sisi na udanganyifu huu wa hali ingawa, kama utaona katika pset 6,
kama wewe ni kufanya maombi HTTP kutoka kwa mteja na server, hiyo ni yake.
Mara baada ya kupata nyuma kwamba majibu, kuna kitu zaidi
kurudi kutoka server na default.
Lakini tutaweza kuona jinsi ya kufanya kazi ya kuzunguka kwamba.
>> Naam sasa, hebu jaribu safi hii juu kidogo.
Tumeona chache mifano mbalimbali huko.
Oh, na kama kando, kwa wale jamaa au usio wa kawaida,
sababu ya kuwa Frosh IMS mfano akaenda
kutoka kuangalia kweli mbaya kwa slightly-- vizuri,
bado ugly-- kwa kidogo chini mbaya ingawa bado mbaya
ni kwa sababu kama sisi kuangalia katika chanzo code hapa,
zinageuka kuwa nina hii saa ya juu sana ya faili.
>> Zinageuka kuwa bootstrap ni moja ya wengi maktaba uhuru inapatikana huko nje
ambazo zipo si kwa lugha ya programu daima, lakini kwa CSS au kwa JavaScript
au HTML au idadi yoyote ya lugha.
>> Na folks hizi here-- awali akatoka
ya Twitter-- tu rundo zima la mitindo.
Ni faili kubwa hapa kwamba mtu aliandika,
au mtu aliandika, juu ya wakati huo bayana rangi na formatting
na whatnot ili niweze aina ya kukopa syntax yao
na si kuwa na kufikiri jinsi ya kuweka nje aina yangu.
Hii pia minified hivyo kwamba kompyuta unaweza
kuelewa lakini si lazima binadamu.
Hivyo kwamba ni kwa nini tu stylization kuna iliyopita.
>> Lakini hebu sasa kufanya vizuri katika suala la kubuni,
kwa sababu kama sisi kukaa chini barabara hii muda mrefu sana,
kanuni zetu kwenda kupata messy na Messier.
Hivyo hebu kuzingatia mifano hii hapa.
mwisho kwa leo.
>> Hivyo hapa ni super rahisi toleo 1.0 ya tovuti CS50 ya.
Ni tu ina viungo mihadhara na mtaala,
na ni kwa kutumia orodha unordered tag-- tag ul kwamba sisi kutumika wakati wa mwisho.
Na kama kwa kweli, kama mimi kufungua Tazama Asili ya Ukurasa,
utaona kwamba hii ni kweli, HTML kweli rahisi.
Na kwa kweli, hata ingawa hii ni PHP faili chini ya Hood,
ni bado tu kutema nje HTML tu kwa sasa.
>> Hivyo kama mimi bonyeza Mihadhara, sisi kuona hii kutokea.
Na kama mimi bonyeza wiki sifuri, tunaona hii.
Na kama mimi bonyeza Jumatano, tunaona hii.
Na hii inaonekana alikuwa PDF ya slides kutoka siku hiyo.
Wote mimi tumefanya ni kiungo na nanga tag kwa URL hii hapa.
>> Hivyo hii ni tu kusema hii ni pretty rahisi toleo la tovuti CS50 ya.
Hebu angalia jinsi gani kutekelezwa.
Kama mimi kwenda katika mvc0 directory, tutaweza kuona files chache.
Moja ni README, hivyo kama baadhi ya hii ni haraka sana,
unaweza tu poke kuzunguka zaidi leisurely baadaye.
Na ilani katika hapa ni index.php faili.
Ni zinageuka kuwa kama wewe mwenyewe, binadamu,
hayataji jina la mwisho katika URL, mtandao wa kompyuta kawaida
infers baadhi jina default kwa ajili yenu.
ripoti dot kitu ujumla default.
>> Hivyo kwamba ni kwa nini wakati iliyopita wakati mimi alitembelea URL hii hapa,
hakuna jina faili, hakuna faili ugani, hakuna kipindi katika URL.
Ni tu alijua namna fulani magically kuangalia kwa index.php.
Ni tu mkataba.
Inaweza kuitwa chochote.
>> Hivyo kama mimi sasa kwenda katika index.php, utaona
kwamba, indeed-- hebu kujikwamua maoni
hapa kwa sababu kuna kweli chochote kuvutia it--
hii ni ngumu tu coded HTML.
Hivyo hiyo ni thabiti, ingawa, kwa madai yangu
kwamba unaweza commingle HTML na PHP.
Hakuna halisi programu mantiki katika hapa.
>> Na faili nyingine ni pretty kiasi tu kama uninteresting.
Ni tu ngumu-coded wiki moja hapa wiki m moja na wiki moja w,
kwa Jumatatu na Jumatano.
Na kisha kama mimi kufungua wiki sifuri, taarifa ni karibu sawa.
>> Na hiyo ni aina ya takeaway muhimu.
Taarifa tu jinsi redundant hii ni.
Haya files vigumu kubadili, na bado mimi vunjwa mmoja wa haya nakala / kuweka kazi
ambapo mimi alichukua file-- moja labda katika wiki zero-- kunakiliwa
wakati wiki moja akaja karibu, na tweaked maadili chache.
Sisi lazima pengine kuwa na uwezo kufanya bora zaidi kuliko huu.
>> Basi hebu kwenda nyuma hadi MVC na kwenda katika toleo moja.
Na taarifa Mimi nimepata files chache, kwa sababu kile
Ilikuwa ni kawaida kwa wote wa files wale tu wakati ago-- kama mimi kurejea toleo 0,
hebu kwenda nyuma katika ripoti, na tu postulate--
mara moja mimi kujikwamua comments-- nini sehemu ya ukurasa huu
ni labda katika kila moja ya mafaili yangu?
Tu kuiita nje.
Ambayo mistari ni duplicated pengine katika yote ya kurasa hizi?
Yeah?
>> STUDENT: [inaudible].
>> DAVID J. Malan: 1 kupitia 9.
Yeah, kabisa.
1 kupitia 9, isipokuwa labda 8 mabadiliko kidogo kwa sababu CS50
inakuwa mihadhara au wiki sifuri au kitu.
Lakini karibu kufanana.
Hivyo mambo haya yote ni tu aina ya kunakiliwa na pasted.
Na kuna wanandoa mistari nyingine naweza kufikiria
ya kwamba pengine kufanana hela mafaili yote.
>> STUDENT: 12 na 13.
DAVID J. Malan: Yeah.
Hakika, 12, 13, na 14 pengine, sababu tu mambo ya kuvutia
kinachotokea juu ya mistari 11 na 10, hivyo inaweza kuonekana.
Hivyo hebu tuangalie toleo 1, ambayo inajaribu kuboresha juu ya hili.
Katika toleo 1 ya example-- hii MVC tutaweza kueleza kile MVC njia katika moment--
kama mimi kwenda katika ripoti, ni aina ya inaonekana utata kidogo sasa.
Ni kabisa kama rahisi kama kabla.
>> Lakini mara moja kuanza kusoma kwa makini, ni
pretty moja kwa moja nini ni kufanya.
Inavyoonekana line 1 na mstari wa 8 badala
yote ya mambo wewe tu identified-- ingawa tu kwa hatua nzuri,
Mimi kushoto ULs kuna tu katika kesi baadhi siku hawakuwa na orodha ya mambo.
Na hivyo kuhitaji ni aina ya kama chupa pamoja katika C. Ni nakala na pastes
yaliyomo ufanisi haki hapa katika faili hii.
>> Hivyo katika header.php, kama wewe wapate infer kutoka jina lake,
ni kwenda kuwa na header ya ukurasa.
Ni aina ya yatima hapa.
Ni tu ina juu yake, lakini hakuna bidhaa zaidi chini.
>> Na kama mimi kuangalia footer wakati huo huo, ambayo ilikuwa ya faili mengine mentioned--
hii moja hata chini ya kuvutia, lakini tena, ni kawaida kwa kila kitu.
Hivyo hii ni footer.
Hii ni header.
Hii ni faili kwamba kubadilisha, hivyo kwa nini
kujaribu na sababu nje Uhusiano na mistari hizi mbili hapa?
>> Lakini tunaweza kusafisha hii up kidogo zaidi.
Mimi nina kwenda mbele na kufungua toleo mbili ambapo
tutaweza kuona kwamba kuna faili mpya, helpers.php.
Tutaweza kuona nini kwamba ni katika wakati huu.
Hebu kwenda index, kama kuingia hatua kama kabla.
>> Na sasa taarifa mimi nina wanaohitaji helpers.php, si header au footer.
Lakini wasaidizi ni aina ya kama helpers.c na helpers.h kutoka pset 2
au pset 3 kwa muda mrefu iliyopita wakati wewe kweli hakuwa kutafuta na kupata kwa kuwa pset,
na wewe alikuwa yote ya code yako kwa kuchagua na kutafuta katika faili tofauti.
Hiyo ni nini kinaendelea hapa.
>> Na sasa line 3 inaonekana tofauti kidogo.
Na ni mstari mmoja tu.
Kufanya hii hata zaidi wazi, mimi naweza tu
je hii kuwa stylistically thabiti na kila kitu kingine tumefanya.
Lakini hiyo si kweli kubadilisha utendaji.
Ni line moja tu ya kificho halisi.
>> Inavyoonekana, kuna kazi mahali fulani aitwaye atatoa header,
na hii ni ambapo mambo kupata pretty nguvu.
Taarifa kwamba ndani ya mabano wake ni nini kipande nyingine ya syntax?
Pengine ni ngumu kidogo kwa kusema, lakini taarifa there's-- mimi itabidi kuweka baadhi nyeupe
nafasi.
Kuna mabano mraba.
>> Na mabano mraba tuliona kidogo iliyopita katika mazingira ya associative arrays,
ambayo ni, tena, kama meza hash.
Na kama unadhani sasa C, utaratibu wa hoja katika kazi
ina daima kuwa sawa.
Una kukumbuka nini ili is-- x, y, z au z, y, x--
na una daima kuwapatia katika utaratibu huo au kuangalia yao juu
kama wameweza wamesahau.
>> Lakini hii inaonekana kuwa njia wajanja ya kupita holela thamani muhimu
jozi ambapo cheo ni jina hoja katika kesi hii
na CS50 ni thamani yake.
Na ukweli kwamba nina mabano haya mraba
hapa ina maana kwamba mimi naweza pia kupita katika jambo
kama wiki ni 1 au 0 au 2 au 3.
Hivyo tumekuwa parameterized kazi hii katika vile njia
kwamba inaweza kuchukua pembejeo nyingi, lakini kwa sasa ni moja tu.
>> Kama mimi sasa kwenda katika helpers.php, taarifa ya nini ni kufanya.
Hii ni kidogo ya utendaji mpya,
lakini kwa sasa tu kuchukua juu ya imani kwamba hii ni
syntax na ambayo kufafanua kazi katika PHP.
Wewe literally kusema kazi.
Huna bayana kurudi aina, na kwamba ni thabiti
kwa undani variable mapema ambapo wewe si kweli sana aina.
>> Hii tu bayana kwamba, kwa default, hii
inachukua associative safu kama hoja.
Na unajua nini?
Kama mtumiaji haina kupita moja katika, kudhani thamani default.
>> Hii ni kipengele kwamba C hana kwa ajili yetu, ambayo ni nzuri, kwa sababu sasa
data, hata kama wewe wala kutoa kitu chochote,
ni kwenda kuwa na safu lakini moja tupu.
Na kama kando, dondoo tu haina kitu funky
ambapo inachukua yote ya funguo kutoka hii associative safu, mambo yote
unaweza kuweka katika mabano mraba, na inajenga vigezo nje ya yao
ili tuweze hatimaye kupata nao katika footet.php na header.php.
Hiyo ni abstract kidogo, hivyo basi mimi kumweka hii nje.
>> Katika index.php, taarifa kwamba mimi nina kupita katika muhimu thamani jozi ya cheo
na thamani ya CS50.
Kama mimi sasa kuangalia helpers.php, taarifa kwamba RenderHeader
ni kuchimba kwamba data kwamba mimi nina kupita katika, na kisha wanaohitaji header.php.
Nini mimi tumefanya aina ya mtu maskini ni utekelezaji sasa yafuatayo.
>> Kama mimi kufungua header.php, taarifa kwamba nimekuwa tena ngumu
coded neno CS50 katika faili hii header.
Nimekuwa kuweka hii admittedly atrociously aitwaye kazi, HTML chars maalum,
huko.
Lakini tazama kile mimi tumefanya.
Mimi nimepata HTML wazi.
Mimi kisha kuwa kichwa wazi na cheo wazi.
>> Na kisha ndani ya cheo ya wazi na vitambulisho karibu, mimi kuwa na kidogo ya PHP code.
Na hii ni nzuri lakini ya syntax, ambayo tu ina maana echo nje.
Ni ina maana halisi this-- echo following--
lakini hii ni sexier kuandika.
Echo nje cheo hiyo imekuwa kupita katika.
>> Lakini unafikiri nini HTML Char maalum ni wote kuhusu,
hasa kama una baadhi kabla HTML uzoefu?
Nini wahusika wanaweza kuwa hatari kupita katika ukurasa wa
ambapo wewe ni dynamically kuzalisha ukurasa wa mtandao na kanuni kama hii?
Napenda kwenda faili hili, toleo mbili, na kuona kama siwezi kuvuta hii.
>> Toleo mbili ni hii.
Na taarifa ya kila kitu ni mzuri, kufanya kazi vizuri.
Lakini nadhani kwenda katika index.php na Mimi bayana kuwa kichwa cha ukurasa wangu
si CS50.
Ni wazi bracket tahadhari script hujambo dunia, karibu moja quote,
mabano karibu, semicolon, bracket wazi, kufyeka script.
>> Script, kama tutaweza hatimaye kuona, ni tag
kwamba unaweza kutumia na matumizi ya mwingine lugha ya programu inayoitwa
JavaScript ndani ya ukurasa wa mtandao.
Na sasa taarifa mantiki hapa.
Hapa ni muhimu aitwaye jina.
Hapa ni ni thamani mambo kwa muda mrefu sasa.
>> Lakini kama mimi kwenda wasaidizi page- au tuseme, header ukurasa,
Mimi wito kazi hii juu ya kwamba cheo kwanza.
Hivyo kama mimi sasa upya ukurasa huu, mimi kuona hii, ambayo inaonekana ujinga,
lakini ni salama.
Ni tu inaonekana kijinga.
>> Lakini tuseme badala Nilisahau hii.
Na alama maneno yangu, idadi nonzero ya wewe kusahau kufanya hili
na utapata baadhi bidii mwanafunzi au rafiki kuja juu
kwa mara ya CS50 haki au anonymously usiku poking kuzunguka kwenye tovuti yako
na kimsingi sindano kificho unbeknownst na wewe katika tovuti yako
namna fulani.
>> Kwa sababu kama mimi tu mate nje cheo hapa na cheo
there-- vizuri, kama cheo halisi inaonekana kama hii na PHP
kama lugha ambayo inaweza mate nje lugha nyingine maandishi,
hii ni halisi kwenda kuchukua nafasi ya tag hii na,
Bila shaka, nini mimi kuweka mahali pengine.
>> Hivyo kama mimi sasa kwenda hapa na Reload baada undoing taratibu za usalama hizo,
sasa nina hujambo dunia hapa.
Sasa si kwamba wote kwamba kubwa ya kukabiliana, lakini unaweza kufanya kitu
malicious kidogo zaidi hapa, kama kuna
tags-- nyingine kama tutaweza kuona mara moja sisi kutumia muda zaidi katika JavaScript-- kama eneo
dot href anapata, quote, unquote, HTTP business.com, lakini kinyume cha kwamba
kutoka siku nyingine.
Na sasa unaweza kutumika kuleta mtandao ukurasa wa kweli kwenda mara moja
ukurasa wa mtandao huu hapa.
>> Na kwa kweli, sitaki hata kwenda business.com
kwa sababu sitaki kujua nini kwamba ni.
Lakini hii, pia, kusababisha kificho kwa kuwa hudungwa katika ukurasa huu.
Hivyo hii ni tu kusema kwamba hata kama sisi ni kuanzisha super mapema juu ya baadhi ya
ya miundo haya ngumu zaidi, ni wote kuelekea mwisho wa kuhakikisha
kwamba kanuni yako si exploitable.
>> Hivyo sasa ya tatu ya toleo hapa.
Ni kupata kidogo fancier.
Mimi si kweli like-- upande anal yangu
ilikuwa kupata kidogo annoyed na ukweli kwamba mimi alikuwa kazi kuitwa
RenderHeader na RenderFooter kwamba walikuwa karibu kufanana.
Hivyo ilitokea kwangu, kwa nini si Mimi parameterize kazi hizi
ndani ya moja tu iitwayo atatoa, kuwa ni kuchukua hoja ya pili
kama jina la template, mwisho kwa render-- aidha header au footer?
Na kisha hiari, kama nataka kupita katika baadhi ya thamani jozi ufunguo
kama mimi kwa jina kwa header lakini si kwa footer,
Mimi naweza kufanya hivyo.
>> Na hivyo sasa kama mimi kwenda katika helpers.php, ni kidogo ngumu zaidi.
Na mimi itabidi kukitikisa mikono yangu katika maelezo, lakini ni kazi moja tu.
Hivyo hiyo ni hatua kuelekea kubuni bora.
>> Tunaweza kuchukua hatua hii moja zaidi.
Kama mimi kwenda katika robo yangu toleo la hii, taarifa sasa
kwamba mimi nina kufanya kitu aina hata zaidi ya cryptic.
Na Mimi najua hili ni mengi ya kunyonya mara moja,
lakini sisi ni tu aina ya kusafisha mambo up.
Sasa mimi nina kuweka wasaidizi wangu faili katika folder aitwaye
includes-- tu holela jina ambapo nataka kuweka mambo
kwamba nataka include-- na kisha mapumziko ya hii ni sawa.
>> Lakini kama mimi kuangalia sasa katika gedit, taarifa kwamba nimepata wamezipata kuepuka
ya wale wote files nyingine na nimekuwa wakiongozwa yao, kwa mfano, katika hapa.
Na kisha katika templates, Nina hii hapa, pia.
Na hivyo hii ni wote sasa kuelekea hatua ya kutumia bora zaidi kubuni muundo.
Na sisi ni haraka sana kwenda kwa hoja mbali
kutoka PHP ya msingi ya utendaji, ambayo sisi kuanza hapa na,
ambapo wewe tu commingle PHP, na HTML yako, na CSS yako,
na wewe tu kuitema na kwenda juu ya njia yako.
Ni si kwenda kuwa maintainable sana.
Tu kama katika C, sisi kuanza kutumia files nyingi na kazi mbalimbali
na factoring mambo ambayo nje.
Tutaweza kufanya hivyo hapa.
Na kwa kweli, katika tano na ya mwisho toleo hapa, mimi alifanya jambo moja nyingine.
Unaweza hata kutumia dot dot, ambayo, tena, ni tu orodha mzazi.
Kuwa usalama hata zaidi fahamu, kwa sababu kama mimi kuangalia kusikiliza
hapa kwa tano na ya mwisho ya toleo, ilani kwamba mimi kuwa directory moja hapa aitwaye
umma, na kisha juu ya kiwango sawa, hivyo kusema,
Mimi nimepata pamoja na templates na kisha kwamba faili maandishi readme.
>> Na sababu nimekuwa muundo ni kama this-- na hivyo wengi mtandao
majeshi, hasa wale $ 5 a mwezi ndio au $ 10 kwa mwezi ndio,
kama wameweza milele alikuwa mmoja wa haya services-- nini hivyo wengi wao kufanya
ni wao tu wanatarajia dampo wote ya mafaili yako katika saraka moja,
kama tulivyofanya tayari kwa mfano huu wa kwanza.
>> Lakini haraka kama wewe kuanza kujenga zaidi maeneo ya kisasa kwamba kuhifadhi tu
data wewe huduma ya juu na faili huduma ya juu, kwa kweli kupanga mambo
usahihi na kwa usalama zaidi fahamu katika akili unaweza
sisi kuanza kutetea dhidi ya wote wa rafiki
kwamba una aidha katika au nje ya darasa hili ambao,
haraka kama wewe kuanza kufanya mipango mwenyewe kwenye mtandao,
ni kwenda kuanza kuokota juu yako na juu yao.
>> Na hivyo tutaweza kuangalia hatimaye katika kubuni hii.
Hii ni picha ambayo inaonyesha yafuatayo.
Tunakwenda kuweka yote ya yetu programu mantiki katika faili moja au zaidi,
na sisi ni kwenda kuanza tu wito controllers hizo.
Ni ambapo akili ya tovuti yetu kweli ni.
Kisha tunakwenda maoni, na maoni
ni rahisi kama tu tofauti files-- aitwaye templates, mara nyingi.
Wao tu aesthetics ya ukurasa wangu,
nini nataka ukurasa na kuangalia like-- rangi na mpangilio
na nafasi ya yote ya vigezo.
>> Na kisha zaidi ya kuvutia kwamba tutaweza hatimaye kupata
ni mfano wa kuigwa, ambayo ni kwenda kuwa tu neno sisi kofi juu ya teknolojia nyingine
kwamba sisi kuleta katika picha, kama database halisi,
hivyo kwamba wakati unataka kuokoa habari,
huna tu kutuma barua pepe kwa mwangalizi wako au wewe mwenyewe,
wewe kweli kuhifadhi katika database kutumia lugha nyingine inayojulikana kama SQL.
Na hivyo tutaweza kuondoka hapa leo na pick up na hii siku ya Jumatano
na kuanzisha database basi.
>> [Music kucheza]