[Music kucheza] DAVID Malan: Hii ni CS50, na huu ni mwanzo wa wiki nane. Na sisi ni hivyo msisimko na kuwakaribisha nyuma, mshangao mkubwa, CS50 Ramon mwenyewe Galvan, mwandamizi kupanda ambaye amekuwa kutumia miezi kadhaa iliyopita tangu Julai katika LA, katika Anime, halisi kazi ya bidhaa mpya TV show inayoitwa Colony, Muumba wa ambayo ni kweli Harvard alum mwenyewe. Na hivyo sisi ni msisimko sana kuona hii kwanza kwenye mtandao United huu Januari. Hivyo kukaa tuned kwa kuwa, na kwa Ramon zaidi kwa muda wa wiki ijayo. Kujua sasa kwamba mwisho uko karibu. Na nini maana ya hii ni kwamba kuna si mengi yote kushoto ya CS50, kusikitisha kusema. Tuna tatu tu tatizo seti left-- kuna tatizo kuweka six-- ambayo ni katika mikono yako sasa au hivi karibuni itakuwa, kutokana baadaye hii week-- ni maana ya kuziba dunia yetu ya mstari amri, ambapo tumekuwa alitumia zaidi ya muda wetu kwa kutumia C, na dunia ya programu ya mtandao. Vizuri, utaona mengi ya mawazo alikopa kutoka mstari amri kazi, lakini pia mengi ya mpya na mawazo ya kuvutia ambazo pia kwenda kuwa germane kwa maombi ya simu na kwa teknolojia, ujumla zaidi, na ambayo guys wote ni ukoo siku hizi juu ya Laptops na simu na kadhalika. Hivyo itabidi kutekeleza si ukurasa wa mtandao, au tovuti per se, lakini halisi mtandao wa kompyuta. Utakuwa kuandika mapumziko ya mtandao wa kompyuta imeandikwa katika C, ambao lengo katika maisha ni kupokea maombi HTTP, wale bahasha virtual sisi kuendelea kuongea kuhusu, na kwa kweli kujibu ama kwa content-- baadhi tuli kama nukta HTML file, au nukta JPEG au idadi nyingine yoyote ya mafaili, au hata PHP faili ambapo mtandao wako server ni kwenda kutafsiri kwamba PHP kanuni na mate nje ya matokeo. Sasa, tumekuwa zinazotolewa kwa kidogo kabisa ya mfumo kwa kweli it-- usambazaji kificho kwa tatizo kuweka sita ni zaidi ya 1,000 mistari ya muda mrefu, a mengi ambayo ni ya maoni, kuwa fair-- lakini hii ni kweli maana kuwa fursa kupata mikono yako chafu mbizi ndani ya mradi haki kubwa kwamba tumekuwa hasa sana kuchonga nje vipande vya kwa ajili yenu, hivyo kwamba kweli wakati wewe exit CS50 na kuingia ulimwengu wa kweli wa programu na wanataka dabble katika idadi yoyote ya miradi, itabidi kubwa sana faraja kushusha chanzo baadhi kanuni, baadhi chanzo wazi mradi kwenye mtandao, na mbizi katika na maamuzi mabadiliko ambayo unaweza kuona inafaa. Tatizo kuweka saba ni kwenda kuwa juu kufanya mtandao msingi maombi yako mwenyewe kwamba inachukua pembejeo nguvu na inazalisha pato nguvu katika fomu ya tovuti etrade.com-kama. Na tatizo kuweka nane italenga bado lugha nyingine inayojulikana kama JavaScript. Wakati huo huo, mwisho mradi ni juu ya upeo wa macho. Kinachojulikana kabla pendekezo- ni kutokana wiki kuanzia leo. Kabla ya proposal-- kwa vipimo, ambayo ni juu ya website-- CS50 ni fursa mzuri kawaida kwa wewe kutuma barua pepe pretty succinct kwa mafundisho wenzako tu ndio mnamfundisha yake au wake wa kile unachokifikiria, kwa kutumia kwake kama bodi sounding. Na kuwa na akili timamu check-- kama wewe ni kufikiri kuhusu kuuma mbali mno mengi au labda kidogo sana, au labda wewe huna wazo lo lote na wanataka kushiriki katika mazungumzo. Baada ya hapo ni pendekezo na ripoti ya hali, kinachojulikana CS50 hackathon hapa katika Cambridge kwa Harvard na Yale wanafunzi sawa. Mradi wa mwisho wa utekelezaji ni basi kutokana. Na kisha CS50 haki hapa, Cambridge, kama vile mwingine katika New Haven. Hivyo pendekezo, tuangalie tovuti kwa maelezo hayo. Lakini zaidi excitingly, pia, ni fursa ya kupata mikono yako chafu, na akili yako wazi kwa wote rundo la mada na zana na mbinu kwamba ni ancillary msingi mtaala kozi, lakini hata hivyo kuhusiana. Na pia mawe wanazidi ajabu kwa kufanya miradi ya kweli ya baridi ya mwisho kwamba kwenda vizuri zaidi nyenzo tumekuwa kufunikwa rasmi katika tatizo seti au katika hotuba. Hivyo kwenda kwenye tovuti CS50 kwa orodha ya majina yote ya semina. Kama huna kujiandikisha bado, hiyo ni nzuri. Kwenda mbele na ishara ya juu bado na sisi kufuatilia kwa kuishi Streaming kiungo, siku na wakati ni kwenye tovuti. Na kila kitu kitakuwa kumbukumbu na kuweka online kama huwezi kufanya siku fulani na nyakati. Kama kwa kile uongo mbele thereafter-- vizuri, bila shaka, kuna CS50 hackathon. Hii picha, kukumbuka, kutoka wiki sifuri kuchukuliwa karibu 04:00 jioni moja katika miaka ya nyuma. CS50 haki, ambayo tena utafanyika katika miji yote miwili. Na kisha, tu kupanda mbegu, hata kama sisi bado na mwezi pamoja kushoto ya muhula, ikiwa Ningependa kujiunga na ualimu CS50 ya mwenyewe wafanyakazi, na unataka kuanza kufikiria kuwa na CA, au mafundisho wenzake, tunajua kwamba tutaweza kuanza kuzungumza zaidi juu ya hilo baadaye muhula huu. Lakini pichani hapa ni zaidi ya timu mwaka huu. Na hivyo, PHP-- na mimi nilikuwa na huzuni wiki iliyopita kuwa [? Allyse?] Huruma alikwenda juhudi za kupata sisi props haya ya ajabu kwamba sikuwa kuishia kutumia, hivyo kweli tu inaonekana aina ya kijinga kwamba tulikuwa na koleo ameketi hapa zote Siku ya mwisho ya Jumatano, na kijiko kidogo. Lakini hii ilikuwa metaphoric yangu njia ya kujaribu kuchora picha ya nini sisi ni kipindi cha mpito kutoka C kwa lugha kama PHP. Na hiyo inaweza kuwa alisema ya yoyote idadi ya languages-- Java, Python, Ruby au mashada ya others-- lakini ambapo katika C Kwa mfano, kuandika mpango katika C inaweza kuwa kama kawaida kuchukua kijiko kama hii na kuchimba shimo katika ardhi, katika mchanga au uchafu. PHP utapata kuchukua mengi kuumwa kubwa nje ya tatizo, kuandika mbali kidogo kificho kutumia chombo mbali kidogo, kwa sababu kuna mambo mengi zaidi utendaji pieced katika. Sasa, kama kweli tulikuwa makubwa, tunatarajia kuwa na kitu cha koleo hapa, lakini na iwe hivyo. Wakati huo huo, wengine mfano sisi kuja na Ni, bila shaka, wewe naweza kutumia kitu kama bisibisi nyundo katika kitu kama msumari. Lakini bila shaka, haki chombo cha matumizi ni kwenda kuwa si sana lugha inayoitwa C-- na sasa mimi tu annoyed [? Sanders,?] Pengine, tutaweza kurekebisha kwamba later-- hivyo chombo haki ya kutumia mara nyingi si kwenda kuwa hii ngazi ya chini kabisa chombo. Na hakika, C ni si lugha ambayo zaidi ya wewe ni milele kwenda kutumia, au lazima lazima kutumia tena. Na kwa kweli, kidogo secret-- wakati tu Mimi kutumia C mwenyewe ni kiasi pretty kati ya Septemba na Desemba ya kila kuanguka muhula. Na hiyo ndiyo sababu sisi kuitumia kama nafasi kufundisha misingi ya programu, na kwa kuwa kompyuta misingi ya sayansi, takwimu miundo, na algorithms like-- lakini kwa haraka sana je kuona sasa kwamba syntax na mawazo ya msingi C ni hivyo ajabu kuhamishwa kwa zaidi ya kisasa Lugha ngazi za juu, kama PHP na Chatu na Perl na Java na Lengo-C-- kweli, hata kiasi Lengo-C-- lakini Swift, hizi karibu zaidi Lugha kwamba wengi wenu mapenzi kisha dabble na wewe mradi wa mwisho. Hivyo bila wasiwasi zaidi, hebu kweli kutumia PHP kutatua baadhi ya matatizo. Kumbuka kwamba mapema, mwisho wiki, sisi tu kutumika CS50 IDE, tuliandika Dinky mpango kidogo kwamba alisema tu, "Jambo dunia." Na kisha mimi kuokolewa katika faili inayoitwa hello.php. Na kisha mimi mbio amri hii. Na kwa nini? Katika lugha ya Kiingereza, nini kinaendelea hapa? Nini mimi kufanya wakati Mimi mbio amri hii? Yeah? Watazamaji: Kuna baadhi ya PHP kazi kwamba anasoma nini in-- anaelewa kuwa. DAVID Malan: Mwema, kuna baadhi ya kazi PHP-- na napenda kuwa maalumu zaidi, kuna programu inayoitwa PHP, a.k.a. Mkalimani, kwamba anaelewa yaliyomo ya hello.php, na anatafsiri yake juu ya chini, kushoto na kulia, na anafanya nini amri hizo kusema. Amri katika hello.php, bila shaka, ni chanzo tu kazi code-- na vigezo na mizunguko na kama, kwamba sisi wenyewe wameanza kuandika katika PHP. Lakini tofauti na C, ambayo ni Lugha ulioandaliwa, PHP wewe tu kuandika, na kukimbia nayo. Wewe ruka kwamba middleman hatua ya kuwageuza kwa zeros na ndio, na kisha mbio hiyo. Na hivyo ni suala la mafanikio ya hii nini? Kwa nini sisi kuruka hatua? Kwa nini lugha ya kisasa zaidi huwa na ruka hatua hii? Ilikuwa faida gani? Au tu intuitively? Hata kama tumekuwa si Imeandikwa PHP gani kabla, nini manufaa kuhusu si kuandaa kanuni yako unafikiri? Hakuna? Si kutenda? Scratching kichwa yako? Naam. Watazamaji: Zaidi ya nguvu. DAVID Malan: Zaidi ya nguvu? Una maanisha nini? Watazamaji: [inaudible] DAVID Malan: Sawa, nzuri, hivyo kutegemea pembejeo, huna kukusanya yake kila wakati. Na kwa kweli ni kama rahisi kama that-- nini ni hatua ya kuendelea kukusanya kanuni yako? Hii ni hatua ya hiyo ni making-- hii ni wanaohitaji, kwa kadhaa iliyopita wiki, hatua mara mbili kama wengi kama tu kuendesha programu yako. Imekuwa ni muhimu katika kuona kwamba kuona ujumbe baadhi makosa na kadhalika, lakini bado ni hatua ya annoying. Na hivyo programmers barabara baada ya muda, kwa nini sio sisi kuanza kuandika lugha ambazo hawana haja kwamba hatua haki mitambo, hivyo kwamba wanaweza tu kuandika kanuni yako na kukimbia nayo. Lakini ilikuwa ni nini bei kuwa tuliona sisi kulipwa wiki iliyopita, kwa mfano mtu fulani? Ndiyo? Kasi. Hivyo [? nini?] wakalimani kidogo polepole, kwa kuwa zeros na ndio ni nzuri na ya haraka kwa ajili ya kompyuta kuelewa, kwa sababu Intel CPU, au chochote ni, tu anaelewa nini kinaendelea tarehe na mwelekeo wa wale wa bits. Wakati mkalimani ni mpango kwamba kweli ina kusoma Ascii chanzo kificho kwamba umeandika, na kubadilisha, hivyo kusema, au kufikiri jinsi ni waongofu hatimaye kwa zeros na ndio. Hivyo ni tu inachukua kidogo kidogo ya utendaji hit. Hivyo ni kidogo ya biashara-off. Sasa kama sisi kufanya hivyo zaidi ya hapa, basi mimi kwenda mbele na kufanya mfano kama ifuatavyo. Kama mimi kwenda katika hapa, faili mpya, mimi nina kwenda kuokoa hii tena ni hello.php. Na sasa mimi nina kwenda mbele na kusema, "magazeti hujambo dunia" - na kukumbuka kwamba naweza kutumia magazeti, sijui una kutumia magazeti-F. Na sasa chini hapa, kama mimi kufanya PHP wa hello.php, huh-- mimi hawaonekani kuwa kufasiriwa. Je, mimi kufanya makosa? Watazamaji: vikuku angled. DAVID Malan: Yeah, unahitaji kwamba pembe mabano juu juu. Hivyo ni aina ya annoying, lakini wewe kupata kutumika yake haraka. Kama mimi na kuandika kanuni PHP, mimi ujumla haja ya kuwaambia mpango, au kuwaambia mkalimani, hey PHP, inakuja baadhi ya kanuni PHP. Na kisha kwa hatua nzuri, napenda kuifunga si na hii, lakini badala ya na swali tu alama pembe mabano, ili sasa chini hapa, kama mimi kukimbia hii tena, sasa Mimi kupata matokeo ya taka. Sasa hebu kufanya optimization kidogo, hivyo tu kwamba wameweza kuona mbele. Hii ni aina ya annoying kwamba mimi kuwa na kukimbia PHP nafasi hello.php, kwa sababu katika siku za nyuma mimi inaweza tu kuandika dot slash jina mpango, ambayo ni aina ya nzuri. Ni aina ya bora user uzoefu. Hivyo ni zamu nje unaweza kufanya hivyo katika PHP na mimi following-- Unaweza kutumia hii haki cryptic dua juu hapa, ambayo kwa ujumla aitwaye shebang, ambapo hii ni ishara mkali, hivyo kusema, hii ni bang au mshangao uhakika. Na hii sasa ni njia ya mpango juu ya kawaida Linux mfumo kuwa inaitwa mazingira, au env. Na hii line-- hadithi muda short-- mstari mmoja tu anasema, hey kompyuta, kupata PHP mkalimani kwa ajili yangu katika mazingira, kupata hiyo katika kumbukumbu yako, hivyo kusema. Na nini ni nzuri sasa, ni kwamba kama mimi kwenda chini hapa, Siwezi kufanya dot slash hodi nukta php, or-- hmm. Ruhusa alikanusha. Vizuri, utaona hata zaidi ya huu na tatizo kuweka saba, kama wewe si tayari, kwa ruhusa. Ni zinageuka kuwa nahitaji kutekeleza agizo hili aitwaye [? chamod?] kwa ajili ya mabadiliko mode-- pamoja na x hello.php. Nahitaji [inaudible] hii moja ya ziada hatua ambayo ni kuwaambia kompyuta yangu, kufanya hello.php kutekelezwa. Na sasa kuangalia nini happens-- nukta kufyeka hello.php, ni tu anaendesha. Sina haja ya kutaja mkalimani tena. Na siwezi kufanya hivyo hata prettier, bado, kama ningekuwa kubadili jina jambo hili. Kama mimi hoja hello.php tu Hujambo hivyo taarifa katika upande wa juu kushoto, jina mpango ni Hakika sasa tu Hello. Sasa naweza kufanya ni kuangalia kama C mpango, hata kama ni iliyoandikwa katika PHP-- au kusema ukweli idadi yoyote ya lugha nyingine. Hivyo kukuza kidogo kidogo, hakuna tofauti ya kazi. Lakini ni tu udadisi kidogo sasa, ili uweze kuandika mipango katika lugha yoyote, na user hana una kujua au huduma ya kile wale ni. Naam, hebu tuangalie zaidi mfano kulazimisha sasa kwamba mimi kuchapwa up mapema. Na hii inaitwa quote.php. Na ni inapatikana online. Na taarifa kwamba ni pretty short-- lakini ni mstari amri hiyo ni mpango kwenda kuangalia bei ya hisa kwa ajili yangu, ambayo ni kweli kwenda kuwa germane na tatizo kuweka saba. Basi hebu angalia nini mimi kufanya. Juu sana Mimi nimepata wazi mabano alama swali PHP. Kisha mimi nimepata mstari huu, ambapo mimi ni wanaohitaji faili inayoitwa functions.php-- tunakwenda kuona zaidi juu ya hili katika kidogo, lakini hii ni kama C ya toleo la mkali ni pamoja na, ambapo unataka kwenda pamoja na faili nyingine. PHP simu yake kuhitaji, ingawa Pia ina pamoja na kazi. Na zinageuka kuwa function.php ni tu kitu niliandika kabla darasani. Mimi kuiweka katika orodha hiyo, kwa sababu Nilitaka sababu nje baadhi ya kanuni kwamba sisi kutaka kutumia mahali pengine. Wakati huo huo, pengine unaweza kudai nini kinaendelea hapa. Hii ni tofauti kidogo kutoka C-- lakini je, ina maana na kuhakikisha matumizi sahihi? Kutafsiri hii zaidi kitaalam. Chini ya mazingira gani mimi nipo kuacha mpango, au exiting? Yeah? Watazamaji: Wakati huna mbili hoja mstari amri. DAVID Malan: Wakati sina amri line hoja. Na kukumbuka kwamba mmoja wa wale hoja ni jina kwa mpango huo yenyewe. Na ya pili ni kwenda kuwa neno lingine mimi aina baada ya haraka. Hivyo tu kama C, huu ni njia yangu ya cheki, Je user kushirikiana na kuendesha programu kama mimi nia? Sasa, kuna kitu tofauti kidogo na C-- kwanza ya yote sisi kuwa ishara hii ya dola, na anafanya nini dola ishara kuashiria katika PHP? Tu kutofautiana. Hiyo ni all-- tu kutofautiana na kufuatiwa na chochote unataka kweli simu yake. Taarifa kuna kitu kutokuwepo kwa PHP mpango wangu, tu kama ilikuwa jana kukosa wiki, dhidi C, ambayo ni nini? Aina, lakini pia kitu kingine. Hakuna kitu function-- kazi kuu. Hakuna kazi kubwa ni. Wewe tu kuanza kuandika kanuni yako bila ya kuwa na wasiwasi juu ya haki holela mkataba wa kumtaja baadhi chaguo-msingi kazi kuu. Hivyo ARG C ni kweli tu variable kimataifa kwamba mkalimani hufanya inapatikana kwa mimi. Sasa, hii ni ya kuvutia. Kwa hiyo angalia mambo ya ajabu. Dola ishara ya hisa ni juu ya kushoto, hiyo ni kutofautiana yangu. Upande wa kulia, kuna inaonekana kazi katika PHP aitwaye chaguo-kwamba Mimi nina kupita mstari amri yangu ya mwisho Hoja to-- chochote neno ni. Na tutaweza kuona jinsi hii kazi katika wakati huu. Na kisha mwisho mimi nina kutoa taarifa bei. Mimi uchapishaji nje moja Mchango wa kadha wa kadha. Na kumbuka, hii ni njia katika PHP-- njia katika PHP-- ambapo huna kufanya ishara ya dola S tena. Unaweza tu kutumia braces curly na kuziba katika baadhi kutofautiana. Huwezi kuwa na wasiwasi kuhusu kutumia printf kwa njia sawa. Na kama kando, wakati wewe kuweka kutofautiana ndani ya maradufu quotes kama hii, unatumia mbinu dhana aitwaye kutofautiana nyongeza katika kitabu. Ina maana tu kuziba kutofautiana katika hapa. Na kama kando, baadhi yenu wanaokuja kutoka asili nyingine ya programu, unaweza kutumia quotes moja karibu masharti ya kufanya hivyo. Lazima kutumia mara mbili quotes kwa kutofautiana kitabu kufanya kazi. Vinginevyo utasikia halisi ona braces wale curly. Hivyo mwisho, hebu kwenda mbele na kukimbia hii. Napenda kufanya wastaafu yangu kidogo kubwa. Hebu kwenda mbele na kukimbia ndani ya kunukuu saraka yangu. [? CDsource?] [? AM?] [? ], kunukuu PHP kunukuu nukta PHP? na mimi nina kwenda kutafuta kitu kama GOOG, ambayo ni alama Ticker wake, na kushiriki moja ya jina lake mpya, Alphabet Inc, gharama $ 717, kama ya leo. Haki wote, kama tunataka kukimbia hii tena, mtu yeyote na mwingine hisa ticker wanataka kuangalia juu? Microsoft Nadhani ni hii moja, MSFT-- $ 53. Nadhani Yahoo ni labda hiyo. Na kuungana ni kwamba. Hivyo ni mpango huu kufanya nini? Uchawi inaonekana kuwa iliyoingia kwa kuwa chaguo-kazi. Basi hebu tuangalie kwa haraka. Ni zinageuka kuwa haina kuja na PHP, ni katika functions.php. Na sisi si kwenda kwa njia huu katika kina kubwa, lakini taarifa neno operative hapa ni kuwa kwenye mstari sita ya functions.php-- I literally kusema kazi. Mimi kutaja jina la kazi yangu. Mimi kisha kutaja yoyote hoja, au vigezo, Nataka kazi ambayo kwa take-- hakuna aina. Na kisha mimi kutekeleza. Na mimi itabidi kukitikisa mikono yangu katika utekelezaji, tangu ni haki kwa haki ya juu sasa, lakini tutaweza kuona tena kweli katika wiki katika tatizo kuweka saba. Lakini siwezi safi hii up, pia. Mimi pia ni pamoja na katika kificho leo toleo la ya kunukuu, ambayo haina faili nukta PHP. Kwa sababu kile ni labda katika juu ya mpango ujulikanao kunukuu tu? Kwamba kinachojulikana shebang-- uungwana cryptic dua inayosema kupata PHP na kisha kuendesha kwenye kanuni yangu hapa. Haki wote, ili huleta sisi ambapo sisi kushoto mbali time-- mwisho angalau kwa baadhi ya mifano ya juu zaidi. Maswali yoyote hivi sasa kuhusu PHP au nini tuko kufanya? No-- sawa. Yeah? Watazamaji: Ndani Mafaili ya HTML, kufanya you-- [? je?] [? tu kuiita?] [Inaudible] PHP faili? DAVID Malan: swali nzuri. Katika mazingira ya mtandao, ambayo tuko halisi kuhusu mpito kwa, huna matumizi kinachojulikana shebang juu, kwa sababu mtandao server-- mara nyingi mpango ujulikanao Apache au Microsoft IIS, Internet Habari Server, au idadi yoyote ya wengine mtandao wa kompyuta programu, anajua kwamba wakati anaona dot PHP faili, kwamba lazima kukimbia mkalimani juu yake. Haina kuangalia kwamba mstari wa kwanza. Hivyo kwanza mstari hila hii ni tu wakati uko kuandika mstari amri programs-- ambayo sisi si kufanya super mara nyingi, lakini ni njia yetu ya kuziba yetu C mifano kwa sasa PHP yetu. Basi hebu kweli kuziba dunia hii kutoka mstari amri dunia kwa mtandao kwa kufanya yafuatayo. Hebu kwenda mbele na kuteka juu hapa kwa muda tu. Hivyo kama tuna mtandao wa kompyuta, au tuseme kama tuna mbali yangu hapa, ambayo mimi itabidi kuteka kama hii. Na hapa tuna biashara kwa namna fulani. Na kisha juu hapa, tuna server katika building-- hii ni jinsi biashara works-- na katika hapa ni server na baadhi ya taa labda. Nini hasa kinachoendelea kati ya mahusiano haya mawili? Hivyo katika jengo hili ni mtandao wa kompyuta. Hiyo tu kompyuta kwamba mbio baadhi ya uendeshaji system-- labda programu huru walioitwa Apache, ambayo CS50 IDE ni mbio. Hivyo unaweza kweli kufikiria jengo hili kama kuwa jengo katika ambayo CSt0 IDE ni kuhifadhiwa. Hiyo ambapo nyote na akaunti, ambapo ninyi nyote wenyewe mtandao wa kompyuta yako mbio nyote na yako URLs mwenyewe ya kipekee, kama sisi kuanza kujadili, na utaona zaidi katika P. kuweka sita. Hapa ni mbali yangu mahali fulani kingine kwenye mtandao. Na hivyo wakati mimi kutembelea URL kwamba ni mali kwangu, ili trafiki biashara ni kwenda zaidi kwa kompyuta, kompyuta ya kupokea HTTP request-- kama kupata index.html na ni replying kwamba ukurasa wa mtandao. Hivyo hiyo ni dhana ujumla. Wakati kila kitu juu mpaka sasa leo, kila kitu kilichojitokeza tu katika mipaka ya jengo hili. Mimi nilikuwa kutumia laptop yangu, lakini Nilikuwa kushikamana na CS50 IDE, hivyo wote wa programu hizo nilikuwa mbio Ilikuwa ndani ya kwamba server, yenyewe. Lakini sasa, hebu kuanza Reusing PHP kuandika baadhi ya mipango halisi kwamba ni kutumikia up na mtandao wa kompyuta. Na kwa kufanya hivyo, mimi nina kwenda ndani ya kundi zima la mifano kuwa kuanzisha wazo hili hapa. Hivyo hii ni aina ya njia dhana ya kuelezea programu dhana. Na kwa kweli, kama wewe exit CS50 au kazi katika miradi ya mwisho, au kuchukua baadhi kufuata juu ya darasa, itabidi kuanza kuona kwamba world-- hasa kuwa mzima kwa lugha kama C ambazo ni super Asili level-- kutambua kwamba kuna bora njia ya kuandika programu. Kuna baadhi ya ruwaza unaweza kufuata, njia fulani ya kupanga mafaili yako na njia za kumtaja kazi yako, ili hadithi muda mfupi, dunia ina kuja na rundo zima la Vifupisho na majina ya njia ya programu. Hizi ni mbinu tu unaweza kutumia. Mmoja wao anaitwa MVC, kwa Mfano View Mdhibiti. Na hii ni, kwa sasa, overly ngumu njia ya kusema jinsi unapaswa kuweka tovuti PHP-msingi, kwa upande wetu. Jinsi gani unaweza kuandaa files yako, jinsi gani unaweza kupanga mantiki yako, kwa njia ambayo inafanya kuwa rahisi kuandika tovuti ngumu zaidi? Na hakika, tutaweza haraka kufika huko kwa p-kuweka saba. Hivyo katika ulimwengu wa MVC, wewe ni kwenda kuona kwamba kanuni zetu Unaweza ujumla kuwa na sifa kama ama mtindo kificho, au mtawala kificho, au mtazamo kificho. Na mimi nina kwenda kwa oversimplify kama follows-- mtawala ni akili ya mpango wako, ni ambapo wote wa kuvutia mantiki kinatokea. Kwa hiyo kila kitu tumekuwa kuandika hivi sasa katika darasa, ni aina ya kama mtawala code-- ni kudhibiti mpango wako, mizunguko yako, yako masharti, kazi yako na vigezo na wote. Maoni, sasa, ni kwenda kuwa kidogo wazi zaidi katika dunia ya mtandao. Maoni ni aesthetics ya tovuti yako. Ni nini user sees-- picha, meza HTML, HTML, na wote ya kwamba, wote wa aesthetic fluffy mambo ambayo si kuwa ngumu ya kuandika, lakini ni tu nini wewe kuzalisha, Ni maoni kinachojulikana, aesthetics. Na mfano wa kuigwa, hatimaye, ni kwenda kuwa orodha stuff-- ambayo tutaweza kuanza mbizi katika yote zaidi Jumatano hii. Hivyo mtawala ni mantiki, maoni ni mambo aesthetic, na mfano wa kuigwa ni kwenda kuwa ambapo sisi kuhifadhi takwimu zetu halisi. Hivyo hebu tuangalie hii zaidi uthabiti kwa mfano zifuatazo. Mimi nina kwenda katika saraka yangu hapa chanzo leo code-- ambayo yote inapatikana online. Na mimi nina kwenda katika toleo la sifuri. Na hapa is-- hebu simu yake toleo la sifuri ya tovuti CS50. Kuna si mengi hapa wakati wote. Ni mtandao rahisi sana ukurasa hiyo ni pengine kwa kutumia nini HTML tags-- tu nadhani kutokana na mifano zamani? Nini hiyo? H1-- pengine kwa kuwa kubwa ujasiri cheo, kwamba alama juu juu, CS50. Na kile kingine ni katika kucheza? Yeah? Watazamaji: orodha Unordered. DAVID Malan: Unordered list-- hivyo Ul tag na labda michache ya li vitambulisho. Na kama huna kumbuka haya, hivyo kwa uaminifu haijalishi. Hizi ni fluffy aina ya maelezo ya utekelezaji wa HTML kwamba haraka kuangalia juu na uko nyuma juu ya njia yako. Tutaweza kuzingatia zaidi juu ya programu mawazo ambayo ni vipande juicier. Basi hebu tu kuchukua haraka kuangalia HTML-- na kwa kweli kama mimi kufungua mtazamo chanzo hapa, yup, hiyo ni nini hasa kinaendelea hapa. Kuna tag ul. Furushi ndani ya kwamba ni kwa li vitambulisho. Na kisha mimi alikopa URL ya mtaala halisi hapa. Na kisha katika lectures.php ni inaonekana ukurasa mwingine dynamically yanayotokana ambayo inaenda kuwa, hebu see-- ah, wiki mbili za kwanza hotuba. Hivyo wiki sifuri na wiki moja, hebu kuangalia Haya kama mimi kuona ukurasa chanzo, Pia super rahisi. Hizi ni kuongoza kwa kurasa mbili aitwaye week0.php, na week1.php. Hivyo kufikiria sasa nini kinatokea. Wakati mimi bonyeza week0.php, mbali yangu ni kufanya ombi kwa week0.php. Mtandao wa kompyuta, a.k.a., CS50 IDE, ni kupokea kwamba bahasha virtual. Ni kuona ujumbe kama, kupata week0.php. Kisha ni kutafsiri faili, juu hadi chini, kushoto na right-- faili aitwaye week0.php-- na kutema mate nje ya matokeo. Hivyo ndani ya faili hili, week0.php, lazima mtawala mantiki kwamba ni kuzalisha HTML hii, na tutaweza hivi karibuni kuona kwamba. Lakini kwa sasa, napenda click kwenye wiki sifuri, na sasa tuna Jumatano na Ijumaa, na sasa tuna slides polepole kutoka wiki sifuri. Na unaweza kukumbuka hii kutoka njia ya nyuma wakati. Hivyo hiyo ni wote tovuti hii ni kufanya. Hivyo hebu fikiria jinsi gani kufanya hivyo. Mimi nina kwenda nyuma katika chanzo kanuni hapa, katika CS50 IDE, na mimi nina kwenda kufungua index.php. Juu ya faili hii ni kundi la maoni. Na kisha katikati ya faili hili, zamu nje, hakuna kificho PHP wowote. Kwa sababu kama huna yoyote ya mabano wazi vitambulisho alama swali PHP, uko huru tu ya kuweka HTML. Kwa sababu gani PHP mkalimani zinatakiwa kufanya, ni wakati anasoma file-- hii juu hadi chini, kushoto na right-- ni tu kutafsiri kificho anaona kati ya mabano wale pembe swali alama. Na kitu kingine chochote kwamba hana kutambua kama PHP, ni tu mtemi. Na HTML Je, miongoni mwa mambo itakuwa tu mate nje. Hivyo faili hili linaweza kuwa na ameitwa index.html, lakini nina kumtaja kila kitu dot PHP kama jiwe wanazidi. Lectures.php-- vile vile aghali, ni baadhi tu ya HTML. Week0.php, vile vile baadhi tu ya HTML. Lakini sasa hebu kuweka juu ya proverbial uhandisi kofia, na kufikiria jinsi gani tunaweza kuboresha hii. Siyo vigumu kufanya hivyo, lakini mimi aina ya ugatuzi katika nakala na kuweka. Na kwa kweli, kama mimi kufanya wiki mbili, Unajua nini mimi pengine kwenda kufanya? Mimi nina kwenda kwa week1.php, mimi nina kwenda kuonyesha kila kitu. Mimi nina kwenda nakala yake, kuweka ndani ya faili mpya iitwayo week2.php, tweak baadhi URLs, na kuwa na safari yangu. Hivyo kulingana na kile tumekuwa kuonekana katika C tayari, hii hana haki ya kujisikia, hopefully. Nakala, kuweka mara chache ufumbuzi wa haki. Basi nini tunaweza kuanza kufanya ili kuboresha hili? Ambapo ni fursa kwa kubuni bora? Kwa wakati mimi kupata wiki nane, ni kwenda kuwa kweli annoying kama nataka kubadili herufi ya kila mmoja kurasa yangu, au kama nataka kubadili muundo wa mpangilio. Hivyo ambapo ni fursa kwa kubuni bora? Naam, hebu fikiria nini pamoja katika yote ya mafaili haya. Hapa ni wiki moja, hapa ni wiki sifuri, hapa ni lectures.php, hapa ni index.php-- nini ni sawa na kile mbalimbali, takribani kusema, katika kila moja ya mafaili haya? Yeah? Watazamaji: [inaudible] DAVID Malan: Sawa, nzuri. Hivyo kuna mfano, hakika, ambapo kila wakati mimi kuchagua hotuba mimi, Mimi lazima kuzalisha sawa looking ukurasa. Na hivyo labda naweza kujiinua ukweli kwamba kweli, sisi kwa makusudi numerically indexed lectures-- yetu kama naweza kuweka hata zaidi Maneno katika jibu lako. Na ni nini kitu pekee, kwa kweli, hiyo ni kubadilisha kati ya wiki one-- na basi mimi kitabu chini hivyo ni takribani katika place-- sawa hivyo hapa ni wiki sifuri, takribani juu. Hapa ni wiki moja, wiki sifuri, wiki moja, wiki sifuri. OK, literally kama unajua hakuna mpango wowote, hii ni sasa tu kama muundo vinavyolingana mchezo. Basi nini tofauti? Yeah? Watazamaji: [inaudible] DAVID Malan: Mwema, hivyo jina inabadilika, milele hivyo kidogo. Sifuri ni kwenda, bila shaka, kwa moja. Same kitu kinatokea katika tag H1. Na hatuna kabisa kuona kama urahisi, kwa sababu URL ni kidogo kwa muda mrefu. Lakini URLs wale yanabadilika kidogo. Lakini nini si kubadilisha ipo, kuthubutu mimi kusema, wengi wa yaliyomo ya page-- HTML tag sawa, kichwa ni huo, cheo ni karibu sawa, mwili ni sawa, na karibu kila kitu kingine ni sawa isipokuwa kwa wale kidogo tweaks. Hivyo ni jinsi gani sisi kwenda juu factoring baadhi ya hii nje? Naam napenda kupendekeza hasa kwamba katika toleo la pili. Hivyo hapa katika toleo moja, nina halisi sawa mafaili, pamoja na michache ya watu wengine. Hapa ni index.php-- na hata kama wewe sijawahi kuona PHP kabla, je, Mimi pengine kufanya kutatua huu problem-- kulingana na nini kuona hapa? Naam, ni kwamba dhamira kidogo? Hakuna? Ndiyo, go on. Watazamaji: [inaudible] DAVID Malan: Yep. Watazamaji: [inaudible] DAVID Malan: Mimi haja wewe kusema tu kidogo nguvu zaidi. Watazamaji: [inaudible] DAVID Malan: Sawa, nzuri. Na mimi think-- ilikuwa ngumu ya kusikia you-- lakini mimi kufikiri nini wewe ni kupata katika ni kwamba vitambulisho kwamba yalikuwa ya kawaida juu juu, na vitambulisho kwamba yalikuwa ya kawaida juu ya chini, sasa imekuwa factored nje, au kuachia nini files? Header.php na footer.php-- na tunakwenda kufanya baadhi tweaks kwa kushughulikia wasiwasi wewe tu amezungumzia kuhusu idadi kubadilisha, kwa mfano, kama nikasikia wewe usahihi. Lakini hiyo inaonekana kuwa kiini cha. Kama kulikuwa na kiasi kikubwa cha redundancy juu ya ukurasa, na kiasi kikubwa cha redundancy chini, hebu literally tu kuonyesha na kukata bidhaa hiyo nje, kuiweka katika file-- tofauti kama wazo la CSS, ambapo sisi factored nje aesthetics sawa sana, kuweka ni katika tofauti nukta PHP faili, kutumia zinahitaji mechanism-- ambayo ni kama C mkali include-- ambayo kimsingi ni kama kusema kwenda kunyakua yaliyomo ya header.php, na nakala na kuweka yao hapa. Lakini nini maana ya hii ni kwamba sasa katika index.php, nina mistari hiyo miwili. Katika lectures.php, mimi pia mistari hiyo miwili. Katika week0.php, mimi pia mistari hiyo miwili. Hivyo sasa, kama nataka kubadili jina la yote ya kurasa yangu, au nataka kubadili muundo msingi, Siwezi mabadiliko hayo sasa katika sehemu moja tu, au mbili header na footer places--, mtawalia. Sasa kificho la kuanzia kwa kuangalia zaidi kidogo cryptic, sawa? Lakini kama wewe kufikiri juu ya nini ukurasa ni doing-- kama mimi nina kuomba week0.php, kama juu ya kuchora juu ya here-- wakati week0.php ni ombi, nini maana gani? Literally, faili hili ni ombi kwa browser. Mtandao server-- a.k.a. CS50 ID-- grabs hii file, week0.php, na anasoma ni juu hadi chini, kushoto na kulia. Kwenye mstari mmoja, ni mara moja atakutana mabano wazi alama swali PHP, zinahitaji kichwa nukta PHP, na hivyo nini mkalimani PHP does-- hiyo kujengwa katika mtandao server, kwa sababu sisi preconfigured ni kwa you-- ni moja kwa moja inakwenda ndani ya header.php, nakala yaliyomo, pastes yao hapa. Lakini basi kukutana mkalimani swali chapa mabano karibu, hivyo ni yote kufanyika kufikiri. Sasa ni tu upofu mtemi nje mistari miwili kupitia saba, kwa sababu ni tu HTML ghafi. Anapata kujipanga nane, na je, hiyo uchawi huo again-- kufungua faili, grabbing yaliyomo, na wanaohitaji yao au pasting yao haki basi au huko. Lakini mimi tu alluded mdudu. Hii ni hatua ubaguzi nyuma, kwa sababu kama sisi kuangalia katika header.php, Nimekuwa aina ya kukata kona. Nini kipengele gani mimi kutoa juu ili kupata arguable bora mpango huu? Yeah? Watazamaji: [inaudible] DAVID Malan: Yeah, mimi aina ya kukata kona nontrivial. Wewe alisema kuwa kilichokuwa kubadilisha ilikuwa ni cheo, idadi katika cheo, na idadi katika H1. Hivyo suluhisho yangu ilikuwa, sawa, hebu tu kubadili jina ukurasa, na si kukabiliana na kwamba Tatizo wowote. Hivyo hiyo ni sehemu hatua nyuma kwa uhakika. Lakini nini ni vyema ijulikane hapa ni kwamba nini nimefanya ni factored vinginevyo nje mambo yote ya kawaida. Na katika footer.php, taarifa mimi factored nje yote ya kwamba, angalau kidogo, kawaida mambo ya ajabu. Kwa hiyo mimi haja kwa namna fulani sasa kuwa na uwezo wa kuchukua hatua nyingine mbele, na kurekebisha kwamba cheo masuala. Basi hebu kufanya hivyo. Hebu kwenda katika toleo la pili wangu hapa, ambayo, tena, ina mafaili sawa isipokuwa kwa moja Mbali mpya. Na ni kidogo zaidi verbose, lakini hebu angalia kama sisi Unaweza tease mbali nini kinaendelea hapa. Hivyo badala ya wanaohitaji header.php, na footer.php, Mimi wanaonekana kuwa tu wanaohitaji moja file-- aitwaye, bila shaka, helpers.php. Na napenda inasema sasa, nini ndani ya helpers.php ni tu rundo la kazi kwamba mimi aliandika, kama kabla. Lakini mimi kuitwa ni helpers.php. Sasa inaonekana, katika mstari tatu na 10, mimi nina wito functions-- mbili atatoa kichwa, atatoa footer. Wale wala kuja na PHP, niliandika wale mwenyewe. Na mimi kuziweka katika helpers.php. Sasa, tumekuwa tu kuonekana syntax hii mara moja, na ilikuwa super kifupi. Lakini hii ni dhahiri hoja atatoa kichwa, kazi. Kwa nini mimi kujua kwamba? Vizuri hapa ni Paren karibu, hapa ni Paren wazi. Na bila shaka, kama vile katika C, chochote kati ya mabano wale ni input-- au hoja kwa kazi. Ni aina gani ya data hoja hii, kulingana na kile nimepata yalionyesha? Je, mabano mraba wale zinaonyesha, kwa kuzingatia wiki iliyopita? Yeah, ni array-- hasa safu associative. Na syntax hii admittedly ni funky kidogo, lakini hii ni kupita tu katika jozi moja muhimu thamani. Muhimu ni, quote unquote cheo, na thamani ni CS50. Kama sisi alikuwa amefanya katika C, inaweza badala kuangalia zaidi kama huu, tu quote unquote CS50 au kweli itakuwa curly braces, au kitu kama hicho katika C, ambapo muhimu ni sifuri, na thamani ni CS50. Lakini tena, katika PHP, ingawa syntax ni, tena, kidogo weird, utapata kupita katika Maneno badala ya namba kujiunga funguo na maadili. Basi nini hii yote ina maana gani? Kama mimi kwenda katika helpers.php, hebu tuangalie kazi hii. renderHeader.php, badala renderHeader ni kazi yangu, na najua kwamba kwa sababu naona kazi keyword hapa. Hii ni mpya kutoka C-- ni dhahiri inachukua hoja aitwaye data-- lakini mimi nilikuwa na wito huu kitu chochote, lakini mimi kuitwa ni data, tu kuwa clean-- kidogo na tu kuchukua nadhani, hasa kama umefanya iliyowekwa katika baadhi ya wengine juu lugha kiwango cha kabla, jambo juu C, conceptually. Je sawa wazi mabano Mabano ya mraba pengine ina maana gani? Au kitu gani maana? Tumekuwa hawajaona hii katika C. Yeah? Safu tupu. Hasa, hii ina maana kwamba kama user haina wito renderHeader kwa hoja, Mimi bado kwenda kuwa na hoja aitwaye data, lakini thamani yake ni chaguo-msingi kwenda kuwa safu tupu. Hivyo ni tu urahisi nzuri. Sina yell katika mtumiaji, au kusema wewe kutumika kazi yangu vibaya. Naweza tu kutoa user default thamani, kama mimi si hasa huduma. Sasa kazi hii, mimi nina kwenda kukitikisa mikono yangu katika. Lakini hii kazi dondoo inaruhusu sisi kupita vigezo hivi katika takwimu ndani ya header.php kwa njia hii. Na hii ni mwisho kipande, Nadhani, ya funky syntax. Hapa ni toleo yangu mpya ya header.php-- ni alikuwa akisema, literally, wazi mabano jina CS50, na kwamba alikuwa ni. Na kitu kimoja kwa H1. Sasa ni dhahiri inasema kitu pretty funky. Na napenda kurahisisha hii kwa muda kama ifuatavyo. Hii ni nini nimekuwa alibadilisha kichwa cha yangu kuwa. Hata hivyo, ni kupata kidogo mbaya kwa mabano daima wazi kwa PHP, na kisha kutumia magazeti kazi. Ni zinageuka kuwa PHP ina shorthand nukuu kwa hii, ambayo ni tu ishara sawa, ambayo ni kitaalam kazi kuitwa echo badala ya magazeti, lakini kitu kimoja ni, kwa ufanisi. Hiyo tu inaonekana vizuri zaidi. Ni tu kisintaksia sukari, kama wewe, kwamba inafanya kanuni yangu kuangalia vizuri kidogo. Lakini zinageuka, na tutaweza kuona hii tena kabla ya muda mrefu, tuna kutoa wito huu annoyingly kazi muda mrefu wametaka HTML chars maalum katika PHP, kwa sababu ni zamu nje kuna pembejeo fulani kwamba mtumiaji anaweza kutupa, au kwamba watumiaji wanaweza kutupa, kwamba ni kwenda kuvunja tovuti yetu. Lakini tutaweza kuona kwamba ijayo wiki na JavaScript. Lakini kwa sasa, tu kujua kwamba faili hili, headers.php, tu inachukua cheo kwamba Mimi kupita katika, ni kufanya uhakika ni salama kuwa hudungwa katika mtandao ukurasa, na mtemi nje kama cheo yangu na kama H1 yangu. Hivyo kama mimi kwenda katika toleo hili sasa, taarifa kwamba mihadhara ina jina lake nyuma, wiki sifuri ina jina lake nyuma, na Hakika, HTML mimi nina kuzalisha ni kufanana na nini toleo yangu ya kwanza was-- isipokuwa kwa whitespace yangu, kwa sababu nimeanza formatting kanuni yangu tofauti kidogo. Lakini nimepata yanayotokana zote kificho najali. Hivyo basi mimi pause kwa muda tu na kuona kama kuna maswali yoyote au kuchanganyikiwa nimekuwa kuundwa. Haki wote, hivyo hebu twist vigumu kidogo hapa ili kuona kama kuna nafasi ya kuboresha. Helpers.php pia alikuwa na haya kazi, iitwayo renderFooter. Na nini vyema ijulikane kuhusu renderHeader, na renderFooter? Na tena, kwa madhumuni ya leo, unajua kwamba dondoo kazi ni njia yangu ya kupita hoja ndani ya header.php na footer.php. Pole? Watazamaji: [inaudible] DAVID Malan: Yeah, mimi tu iliyopita the zinahitaji line. Hivyo literally, nimekuwa dhambi ya kuiga na pasting, bado tena. Siyo idadi kubwa ya mistari, lakini kuja on-- kama mimi nina kuiga na pasting kila kitu tu kubadili neno moja kidogo, na neno moja kidogo kwamba Alan anasema nje ni footer hapa, dhidi header hapa. Vinginevyo, kila kitu ni kufanana, isipokuwa kwa, bila shaka, majina ya kazi ya. Kwa hiyo kile tunaweza kufanya vizuri zaidi? Vizuri basi mimi kufungua toleo hili hapa, ambapo katika helpers.php, kwa nini sio mimi tu kupata kidogo nadhifu kuhusu hili? Kuandika kidogo ngumu zaidi kanuni, lakini simu yake atatoa? Hivyo tuna nini mimi kimsingi iliyopita? Inachukua hoja now-- hoja mbili, data bado. Na kisha nini kwanza jina pengine kuwa kutumika kwa ajili, kulingana na kile wewe ni kusoma hapa? Hata kama baadhi ya syntax ni bado mpya. Dola ishara template ni nini? Pole? Watazamaji: Header au footer. DAVID Malan: Header au footer. Hivyo inaonekana, niliamua kwamba kama Kitu pekee hiyo ni kubadilisha ni nini template nataka kwa print-- na kwa template Jamani ni mwongozo kwa kificho kwamba nataka pato, lakini nataka kuziba katika baadhi values-- hivyo kama ni header tu au footer, kwa nini sio mimi parameterize kuwa na kuwaita ishara ya dola hoja template? Na kisha syntax hii funky inaruhusu mimi kujenga njia katika kutofautiana hapa. Hivyo njia ishara ya dola ni kutofautiana. Je syntax hii kufanya, kama wewe ni ukoo? Yeah? Watazamaji: [inaudible] DAVID Malan: Hasa. Kama template ni, unquote kunukuu, kichwa, au kama template ni, unquote kunukuu, footer, kwamba mstari huko kwamba nimepata yalionyesha, mstari nane, ni tu kuchukua jina hilo, kama mpira wa kichwa, na concatenating kwa nukta PHP. Hivyo hatukuwa na alama hii katika C. Hii nukta operator ni jambo la kushangaza katika PHP-- kama wewe ni ukoo na JavaScript au Java, unaweza kutumia pamoja ishara ya kufanya concatenation. Katika C, ni maumivu katika neck-- na mimi nina hivyo pole, katika p-kuweka sita, wewe ni kwenda na kufanya Haya ni maumivu ya shingo kwa concatenate masharti. Kwa nini? Naam, kwa sababu kama nimepata kamba hiyo ni hii kwa muda mrefu, na mwingine kamba hiyo ni hii kwa muda mrefu, huwezi kuziba yao kwa pamoja. Je, badala yake una kufanya katika C? Yeah? Watazamaji: [inaudible] DAVID Malan: Una malloc , au kumbukumbu kutumia safu juu ya stack. Na kwa kweli kuwa na kufanya kwamba safu kubwa ya kutosha walionao hii pamoja na hayo, pamoja na backslash sifuri. Kisha concatenate yao pamoja kwa kutumia koroga paka au manually na kwa kitanzi, au idadi yoyote ya mbinu. Na sisi kuonyesha kadhaa katika p-kuweka sita. Ni maumivu ya shingo. Na hii ni kweli nini maana mimi kuhusu huu dhidi Haya kama C dhidi PHP. Wewe tu kupata mengi zaidi utendaji kwa ajili ya bure, ili uweze kuzingatia, walau, siku ya furaha sehemu ya coding, Mradi unataka kutatua, badala ya kiwango cha chini minutiae. Hivyo hii inazalisha tu header.php au footer.php kulingana na ambayo moja mimi wito. Na hakika kama mimi kwenda ndani ya index.php, ilani yote yale changed-- Badala ya wito atatoa kichwa au kutoa footer, Mimi nina wito atatoa, ikifuatiwa na jina la template kwamba nataka kufanya. Na utaona hii, pia, katika tatizo kuweka saba, ambapo sisi kuruhusu kutumia kazi sawa na kufanya mashada na mashada ya kurasa tofauti za mtandao. Hivyo badala ya kukaa pia mengi zaidi juu ya details-- wale ambayo utaona tena katika Tatizo kuweka seven-- hebu angalia katika mwanzo wa suluhisho sasa tatizo ya kuvutia zaidi. Hivi sasa, hakuna kitu tumekuwa amefanya ina data kuokolewa. Kwa kweli, wakati tu tumekuwa milele kuokolewa kitu ambacho tumefanya katika darasa hili ni wakati tulikuwa demo rahisi sana muda nyuma, ambapo tulikuwa faili IO katika C, na nadhani mimi niliandika kwa jina langu, na Jina Hana, na jina Maria, au labda jina Andy, na kisha sisi kuokolewa file-- CSV comma kutengwa maadili faili. Na tulikuwa fopen-- Nadhani tulikuwa fprintf kama mimi kukumbuka, na sisi kuokolewa faili. Sasa, kwamba ni rahisi mfumo wa database. Kama unataka kufanya tovuti kwa Frosh IMS mpango, ambapo freshmen Unaweza kujiandikisha kwa ajili ya michezo, wewe walau wanataka kufanya kitu kwa data hizo. Wiki iliyopita, hatukuwa na kitu na data-- sisi tu alisema, wewe ni kusajiliwa, si kweli. Au labda mimi Emailed mwangalizi, na kwamba alikuwa ni. Lakini itakuwa nzuri kama mimi naweza kutoa kwamba mwangalizi jalada la CSV, kama Excel file. Au bado bora, ingekuwa kuwa nzuri kama mimi naweza kuweka majina watumiaji hao 'na Dorm majina na yote hayo katika orodha kwamba anaishi tu juu ya milele, mpaka mimi kuchagua kufuta data. Database ambayo inaruhusu mimi swala habari. Na hakika, hilo ndilo orodha ni. Sisi kuanzisha leo, na wiki ijayo, pia, teknolojia aitwaye SQL-- Uliza muundo Lugha, ambayo ni lugha nyingine. Ni kimsingi kompyuta lugha, lakini kwa database. Na database kwa sasa, tu kufikiria kama super dhana toleo la ya Microsoft Excel, au Google Spreadsheets, au Apple Hesabu. Ni kwa ujumla mpango kwamba inaruhusu kuhifadhi rundo zima la data katika safu na nguzo, kabisa kama waweza katika Excel. Lakini nini ni nzuri, hasa kama sisi siyo super ukoo na Excel, nini SQL inaruhusu kufanya ni swala hii Maelezo kwa kuandika mstari wa kanuni ambapo unaweza, hata kama yako Mbegu ina milioni safu ndani yake, unaweza kupata mambo super haraka. Kwa kweli, Excel ni hasa mbaya wakati seti kubwa data. Na kwa kweli, hadi chache miaka iliyopita, aligeuka Excel ingekuwa tu kuruhusu kuhifadhi safu hadi 65,535 wa data-- ambayo Inaonekana kama mengi, lakini wakati wakati mimi alikuwa mwanafunzi Grad, na Nakumbuka tripping juu hii kwa sababu nilikuwa kuzalisha CSV files kwa utafiti wangu na mimi alitaka kuchambua yao haraka na tu kufungua katika Excel. Bila shaka, kompyuta yangu tu kugonga, kwa sababu nilikuwa na zaidi ya 65,000 safu. Lakini wapi 65535 kuja kutoka? Kilichokuwa Microsoft kufanya, labda? Kama wewe ni vizuri na mamlaka yako ya mbili? Naam, walikuwa kutumia 16-bit thamani ya kuwakilisha idadi mstari. Na mbili hadi 16 ni 65,536-- bala moja, kwa sababu kama wewe sifuri ripoti ina maana kwamba alikuwa zaidi idadi ya mistari mimi naweza kuwa. Na ilikuwa ni uamuzi wa kubuni. Kwa kuokoa 16 bits, wao mdogo kwangu kwa safu 16,000, badala ya bilioni 4, ambayo mimi naweza kuwa na walau. Lakini kwa sasa, tunakwenda kuanzisha hii zaidi katika mazingira ya mtandao. Na nini ni nzuri kuhusu SQL ni kwamba hata ingawa ni pretty nguvu na mzuri kisasa, ni kweli majipu shughuli chini ya nne muhimu, nne kazi muhimu, kama wewe will-- kuchagua, kwa retrieving data, kutafuta kwa data; kufuta au kufuta data; kuingiza kwa ajili ya kuongeza safu ya database; na uboreshaji. Hivyo kama wewe milele kutumika Google Spreadsheets, Apple Hesabu, Microsoft Excel, una kunyongwa, zaidi uwezekano, kila wa shughuli hizo kama binadamu na tu kutumia keyboard yako na mouse-- kuingiza data, kwa kutumia macho yako kuchagua au kutafuta data, au update data, au kufuta data. Hivyo hii ina maana gani? Naam, kabla ya imewekwa katika CS50 IDE ni mpango ujulikanao MySQL. Ni bure, wazi chanzo Mbegu hiyo ni super maarufu. Facebook, kwa mfano, kuitumia hii siku, miongoni mwa zana nyingine kwamba wanatumia. Na mengi ya Nje maarufu sana kutumia ni katika sehemu kubwa kwa sababu ni haraka, na kwa sababu ni bure. Ingawa kwa hakika mbadala zipo. Na baadhi yenu wanaweza dabble kwa mbadala kwa ajili ya miradi ya mwisho. Hii ni screenshot, wakati huo huo, bila chombo mtandao msingi inayoitwa phpMyAdmin. Ni kwa bahati mbaya kuwa chombo hiki mtandao msingi ni pia Imeandikwa katika lugha, PHP, lakini nini ni maana ya kufanya ni kutupa msingi mtandao interface kwa database. Kwa sababu MySQL kawaida ni kitu, kihistoria, wewe ingekuwa kuingiliana na tu na mstari amri. Na itakuwa super annoying na arcane kuwa kwa aina amri textual kuchagua data, kuingiza data, na kufuta data. Hivyo baadhi ya watu kwenye mtandao aliandika mpango mtandao msingi kwamba hebu kusimamia data katika database yetu. Ni kama kubonyeza mara mbili juu ya Excel, na mbio toleo mtandao msingi wake. Na nini wewe ni kwenda kutumia hii kwa hatimaye wiki ijayo, si katika p-kuweka sita, lakini ni kujenga kitu aitwaye CS50 Fedha, ambayo ni kwenda na orodha ya watumiaji, na majina ya utumiaji na nywila, dola ni sawa kuwa wao kuwa katika akaunti zao za benki. Ni kwenda kuwa kitu unaweza kutumia ili kuhifadhi alama na kiasi ya hifadhi ya kwamba watumiaji nimenunua kwa kutumia virtual dola kwamba utasikia kuwapa. Na ni kwenda kuruhusu watumiaji kujiandikisha kwa ajili ya tovuti yako, hivyo kwamba hata rafiki yako Unaweza tune katika tovuti yako na kwa kweli kujiandikisha, kuingia katika, na kucheza karibu na kujaribu kupata kosa katika kanuni yako, na kujaribu kupata mende katika tovuti yako. Na wao itabidi tu kujiandikisha na kuongeza wenyewe, kwa ufanisi, kupitia kificho kuandika kwa orodha yako. Kwa mfano, hii ni screenshot haraka yale orodha ili kuangalia kama. Hii ilikuwa ni kutoka kwa mmoja wa solutions-- mwaka jana hii ni kama mini Excel faili, kuhifadhiwa katika orodha yetu, kuhifadhiwa katika programu hii inaitwa MySQL. Upande wa kushoto, nimekuwa inaonekana kutokana na kila mtumiaji Idadi ya kipekee. Katika safu ya pili, Nimekupa kila mtu mtumiaji name-- yangu mwenyewe kati yao. Na upande wa kulia, Nimekuwa amewapa hash. Sasa hii ni kweli neno la siri, lakini siyo Nakala wazi password. Ni nenosiri encrypted, ikiwa wewe, au nywila hash. Ambayo tutaweza kurudi kwa kabla ya muda mrefu. Lakini kama wameweza milele kusoma makala kuhusu jinsi password yako katika baadhi ya benki au baadhi tovuti anaweza kuwa kuathirika, inaweza kwa ujumla maana moja ya mambo mawili. Hivyo hii ni tu Excerpt ya watumiaji sita. Wote wa sasa unaweza kufikiri nje kupitia kukatwakatwa au ngozi nini siri watu wetu sita ya watu. Lakini kama wameweza milele wamezipata tahadhari au kuomba msamaha kutoka kampuni au tovuti msemo, pole, hacker kuvunja katika orodha yetu, unapaswa pengine mabadiliko yako neno la siri, nini kinaweza kuwa ina maana gani? Naam, moja, inaweza kuwa na maana Kampuni imekuwa zaidi moronic, na imekuwa hifadhi password yako katika safu kama hii, kimaandishi. Ambayo ina maana mshitaki, ambaye aliiba database, halisi anajua yako jina la mtumiaji na neno la siri. Hiyo ni uwezekano hali mbaya zaidi. Na kama utaona katika p-kuweka saba, hivyo ni rahisi kuepuka. Hakuna kabisa sababu ya kuwa aina ya ujinga katika biashara ya leo. Two-- na tutaweza kupata baadhi ya makala kushuhudia ukweli kwamba hii bado itatendeka, nonetheless-- mbili, labda adui aliiba hili toleo la database. Ambayo bado ni aina ya mbaya, kwa sababu sasa wanajua kwamba nina wateja sita, Najua majina user ya wateja hao sita, na najua encrypted matoleo, au matoleo heshi, ya nywila wale wateja sita '. Lakini yeyote katika nyinyi ambaye anaweza wamefanya [? Hacker 2?] ambapo kupasuka siri, au alichukua a tuangalie kwamba toleo la tatizo kuweka, kwa nini ni bado inatia mashaka kidogo kama adui anajua hash yako nywila? Watazamaji: Kwa sababu hawakuweza kuingia kamusi nzima ndani ya heshi. Na kama password yako ni kamusi neno, [? wanaweza tu match--?] DAVID Malan: Hasa, adui unaweza tu kuandika kanuni, kama baadhi yenu alifanya kwa [? Hacker?] 2, ambapo wewe iterate juu ya maneno yote katika kamusi, au michanganyiko yote uwezekano wa A kupitia Z na moja kupitia nine-- ambayo inaonekana kama mengi, na ni. Lakini kwa kompyuta, ni pretty darn haraka. Na kwa kweli, kwamba alikuwa hatua ya [? Hacker 2,?] Alikuwa kuchukua mambo ambayo halisi inaonekana kama hii, na mhandisi reverse nini ni kweli alikuwa. Hivyo tutaangalia jinsi tunaweza kuhifadhi hii kwa ufanisi zaidi. Zamu nje, nashiriki katika MySQL, kuna ni kwenda kuwa aina ya data. Na moja ya sehemu furaha kuhusu kubuni Mbegu, kwa kuwa waaminifu, ni kweli kuamua kwa ajili yako mwenyewe ni jinsi gani wewe kuwakilisha data? Lazima wewe kuwakilisha idadi ya simu kama int, kama idadi kubwa, au kwa muda mrefu? Au wewe kweli kufanya hivyo kama mlolongo wa chars? Na kunaweza kuwa sana athari zisizo yasiyo na maana ya hii. Kwa kweli, moja ya mwanzo, furaha hadithi germane ni wakati Mark Zuckerberg alikuwa anajenga Facebook, awali ilikuwa imeandikwa katika, na bado kwa kiasi kikubwa imeandikwa katika PHP. Na moja ya changamoto kubwa wao wanakabiliwa mapema ilikuwa kuongeza. Wakati wameshika kuongeza shule baada ya shule baada ya shule, kwa ufahamu wangu, moja ya ufumbuzi awali alikuwa kimsingi nakala na kuweka baadhi ya database na baadhi ya kanuni, ili Harvard alikuwa mbio juu ya kompyuta yake mwenyewe, na MIT alikuwa akikimbia kwenye kompyuta yake mwenyewe. Na hii ndiyo sababu, kwa baadhi ambao wanaweza kukumbuka, unaweza kuwa na marafiki katika mitandao mingine. Pengine hawana marafiki MIT au Harvard miaka 10 au hivyo iliyopita, lakini hawakuweza span mitandao kwa sehemu kwa sababu hiyo. Na moja ya changamoto kubwa kwa Mark na kwa makampuni kama Facebook ni kweli utunzaji mamia na maelfu na mamilioni ya maombi kwa pili. Hivyo mambo tutaweza kuanza kuzungumza juu ya wiki hii ni kweli kwenda kuwa germane na kuandika programu bora, na maarufu zana ya kufanikiwa wanaweza kushughulikia kura ya watumiaji. Hivyo tutaweza majadiliano juu ya mambo kama Indexing na kutafuta, lakini hiyo ni kwa ajili ya leo. Tutaona wewe kwa zaidi juu ya Jumatano. [Music - "Seinfeld" THEME] DAVID Malan: Wewe unaweza na hivyo, na Ondoa kutoka humo. Na huna kwa fimbo na baadhi ya kiasi kabla ya kuamua ya kumbukumbu. Naam, nini kwamba kwenda kuitwa? SPIKA 1: Naam, nini kinaendelea? SPIKA 2: Nini maana? Yeye kutoa hotuba. DAVID Malan: Na tunaweza kutumia kazi kuitwa malloc kwa memory-- SPIKA 1: Kwanini mikono yake kusonga? SPIKA 2: Naam that's-- unajua, hiyo ni kawaida. Ni tu kama yeye ana haki sausages kubwa kunyongwa huko. SPIKA 1: Hiyo ni kawaida? SPIKA 2: Yeah, nadhani sisi tu kudhani yeye ajali kubadilishwa kuondoa harufu yake pamoja na gundi.