[Powered by Google Translate] [Wiki 8] [David J Malan] [Chuo Kikuu cha Harvard] [Hii ni CS50.] [CS50.TV] Karibu tena. Hii ni CS50, na hii ni mwanzo wa wiki 8. michache ya fursa ya wiki hii, kati yao majadiliano hii hapa, ambayo baadhi ya chakula itakuwa aliwahi. Kwa maelezo zaidi angalia slides kwamba ni online. Na pia tukio jingine wiki hii na yetu wenyewe Thomas Carriero. Yeye ni mmoja wa zamani wa CS50 wenzake kufundisha kichwa ambaye sasa ni saa Dropbox, na yeye ni kijana ambaye yatakuwapo sisi juu na unajua nini, hivyo kama unataka zaidi ya kichwa kwamba kwa majadiliano yao mchana huu kwa Dropbox na zaidi. CS50 chakula cha mchana ni hii Ijumaa. Je, kujiunga na sisi kama una uwezo, 1:15, kama kawaida, katika Moto na Ice. Na sasa sisi kupiga mbizi katika kitu kinachoitwa Semina. Yetu CS50 Semina, wanakumbuka, ni hizi madarasa hiari kuongozwa na wenzake mafundisho na bila shaka wasaidizi na marafiki wa kweli, folks kutoka kundi juu ya chuo kuitwa ABCD, ambayo ni kundi la technophiles juu ya chuo, kama vile kikundi kiitwacho HCS, Harvard Computer Society, wanafunzi wa vyuo vikuu ambao vile vile nia ya kompyuta. Orodha ya mwaka huu ya semina ni pamoja na semina juu ya Android na iOS na JavaScript na PHP, Unix, VIM, na zaidi, hivyo kutambua kwamba hizi semina ni kuja juu. Kama ungependa RSVP kwa yeyote wao kichwa na kwamba URL huko. Sisi basi post kwenye tovuti kozi ya nyakati na mahali mara moja ni kukamilika. Lakini kujua thamani kuna 5 ya mwaka wa semina kabla inapatikana online, wengi ambao ni bado sana sasa katika suala la teknolojia waweza wanataka kucheza kwa ajili ya miradi yako ya mwisho, hivyo kichwa huko kwa baadhi videos inapatikana yake. CSS, wale ambao ni ukoo na CSS tayari, ni nini kwa kifupi? Nini CSS? Ni cascading style, na nini maana ya kwamba? Gani kwamba kufanya kwa ajili yetu, CSS? Haki zote, hebu joto juu na moja rahisi, HTML, HyperText ghafi lugha. Gani kwamba kufanya kwa ajili yetu? Mtu yeyote wakati wote? Ni kupata kwa kweli Awkward kuuliza maswali haya. HTML, HyperText ghafi lugha. Ndiyo? Hakuna? [Inaudible mwanafunzi majibu] Okay, nzuri, inaruhusu sisi alama juu Nakala kuonyesha katika kivinjari. Siyo lugha ya programu. Ni kweli lugha ghafi, ambayo ina maana instrueras browser jinsi ya kuonyesha habari, hivyo umwilisho rahisi ya hii kama tumeona ni kitu rahisi kama super boldfacing, wazi bracket b funge bracket anasema kufanya Nakala hii ujasiri, na kwamba ni kweli tu moja ya njia nyingi ambayo tunaweza kufanya hivyo, na hakika, siku hizi mbinu bora kwa stylizing mtandao wako ukurasa, na kufanya mambo koze na italics na katikati na haki na kama, si kufanyika kupitia tags HTML peke lakini badala ya kwa mbinu inayoitwa CSS, cascading style. Hii ni lugha kwa yenyewe. Ni pia ni si lugha ya programu lakini- kila mtu, hili ni Dan, ambaye anaendelea kujiunga na sisi leo. Baadhi ya matatizo ya kiufundi. Si tatizo. CSS inaruhusu sisi stylize ukurasa kwa kuweka kile kinachojulikana mali, hivyo hebu tuangalie hii kwa njia ya mifano baadhi ya msingi. Hebu kwenda katika appliance leo. Nina chanzo 8 Jumatatu directory katika hapa, na mimi nina kwenda katika saraka ya kuitwa CSS ambapo tuna rundo zima wa files kusubiri kwa ajili yetu hapa hapa, na katika folda hii tuna, kwa mfano, search0.html kutoka wakati wa mwisho. Sasa, wanakumbuka kwa search0 sisi kushoto juu ya kumbuka hii na aina ya kutekeleza Google au kweli tu mwisho mbele kwa wiki au hivyo iliyopita, na taarifa kwamba tulikuwa tags baadhi mpya huko. Tulikuwa h1 kwa kichwa cha habari kubwa, ujasiri, fomu, ambayo alituruhusu kweli kuwa HTML fomu kwa ajili ya pembejeo mtumiaji. Action, nini ilikuwa maana ya sifa action juu ya HTML tag fomu? Nini ilikuwa maana ya hatua hii,? Mimi itabidi kufanya hivyo leo. Action ni marudio ambapo fomu ni kwenda in. ukweli kwamba kwamba anasema hatua = "google.com / search" ina maana kwamba wakati mtumiaji Clicks kuwasilisha kifungo au sawa chochote fomu mashamba wakachovya nje ni kwenda kutumwa si kwa server yetu au appliance yetu bali URL kwamba maalum katika Google. Na njia ni kwenda kutumia inaitwa kupata, na kupata, kwa sasa, ni mbinu tu kwa kupita habari pamoja na server mtandao kwa njia ya URL, hivyo hebu kuchukua kuangalia haraka nyuma katika jinsi hii matendo. Ona kwamba kuna pembejeo ambaye jina lake ni q aina ambao ni wa maandishi na basi pembejeo ya pili ya aina kuwasilisha thamani ambao ni CS50 Search, na kwa kweli, kama sisi kufungua faili hii hapa, search0.html, ni super rahisi fomu, na kama mimi tafuta kwa kitu kama sayansi ya kompyuta na kisha hit kuingia au bonyeza Tafuta CS50 taarifa kwamba kile kinachotokea ni zaidi ya kupata Google Nimekuwa hasa kuishia katika URL hii saa ya juu, google.com / search q? = kompyuta + sayansi, na sayansi ya kompyuta ni wazi kile typed in + Tu ina maana hiyo ambapo tabia nafasi ilikuwa, na ni kosa kwa browser tu kuhakikisha kwamba hakuna fujo na nafasi nyeupe katika URL halisi. Na kisha q, bila shaka, ni jina parameter. Hatujaona jinsi sisi, programu, unaweza kweli kupata q bado. Tunaweza kudhani kwamba Google anajua nini cha kufanya na hii hapa, lakini tutaweza kupata huko kutokana na muda leo. Lakini basi mimi kuangalia badala saa search1.html, ambayo inaonekana tofauti kidogo kwa sababu niliamua kwamba fomu hii hapa ilikuwa kidogo tu kilema. I mean, ni juu kushoto. Kuna kweli hakuna aesthetics yake, na hivyo nataka stylize hii kidogo zaidi kama Google, ambaye homepage, wanakumbuka, hata ingawa unaweza si kutembelea kwamba mara nyingi, inaonekana kama hii leo juu ya Halloween. Kama sisi badala kufungua toleo 1 ya faili hii, tafuta 1.html, nimekuwa unaozingatia yake. Bado pretty ugly, lakini angalau sasa nimeanza kudhibiti aesthetics ya ukurasa huu, si tu kuashiria juu yake. Hebu tuangalie tafuta 1, na kuna kweli moja tu tofauti hapa, ambayo inaweza kuruka nje saa wewe, au labda si, lakini nini mstari mmoja au snippet wa tofauti? Kuna sifa hii style, hivyo ni zinageuka kuwa katika HTML wengi vipengele, wengi wanaweza kuwa na sifa tags style juu yao, na ndani ya sifa kwamba mtindo ni string alinukuliwa, na kwamba string alinukuliwa ni CSS. Unaweza kuweka style kuachia karatasi huko kwa inayobainisha ni kama jina mali ikifuatiwa na koloni ikifuatiwa na thamani. Hii ni aina ya uamuzi bahati mbaya kubuni baadhi ya miaka iliyopita kwamba CSS ni lugha kwa yenyewe, lakini syntactically ni tofauti sana na HTML. Katika kesi hii, tunaona kwamba ndani ya tovuti yangu, ambayo imeandikwa katika HTML, Nina CSS ndani ya hizi quotes, na mkataba kwa CSS ni kwamba, una nini wito mali ikifuatiwa na, tena, koloni ikifuatiwa na thamani ya mali, hivyo hakuna dalili sawa. Hakuna quotes ziada. Ni tu hii koloni waliojitenga muhimu thamani jozi, Nakala na mstari gani hasa nini anasema. Ni aligns asilia katika mwili wa ukurasa, ambayo ni kweli guts ya ukurasa, katika kituo hicho. Okay, matokeo ya mwisho basi, kuwa wazi, ni hii. Si sexier kwamba wote, lakini angalau ni unaozingatia na zaidi kidogo kama Google halisi. Lakini nini kama mimi badala kufungua toleo 2 ya hii na kumweka nje chini hapa tag mpya kabisa? Sasa katika kichwa cha ukurasa wangu, ambao hapo awali alikuwa tu ambayo tag katika wote mifano kabla? Ni tu alikuwa na haya, cheo. wakati iliyopita tag kichwa inaonekana kama hii. Sasa badala yake ina mtindo tag ndani yake, na huu pia, mimi kuomba msamaha, syntactically inaonekana tofauti sana na HTML, lakini wewe kupata kutumika yake, ambapo ndani ya tag style Siwezi sasa sababu ni nini ilikuwa wakati uliopita sifa, sifa style, na mimi siwezi kuiweka katika sana juu ya ukurasa wangu. Kwa nini? Naam, hii ni hatua ya kuelekea kusafisha mambo juu, kiasi kama katika C kuandika code tunataka wakati mwingine kuandika kazi kwa sababu nje utendaji wa kawaida. Ni tu safi kidogo kuanza factoring nje mambo kama aesthetics kwa moja eneo kuu kuliko kuwa yote intersperse katika HTML yako. Hii pia anafanya nini anasema, ingawa kuna kidogo ya syntax mpya. Hii hapa ni selector, na mwili tu ina maana kuchagua kipengele mwili na kuomba mali zifuatazo kwa hiyo. Naam, mali ni sawa. Kwa hatua nzuri nimepata aliongeza semicolon mwishoni, ambayo huelekea kuwa mkataba, na nimekuwa amefungwa mali hii yote katika braces curly kwa sababu mimi nilikuwa kwa kweli kuwa na mambo tofauti hapa. Mimi nilikuwa naweza kusema kitu kama rangi: buluu; Sasa hii pia si kwenda kuwa hatua kuelekea chochote prettier kwamba wote, lakini kama mimi sasa kurejea version 2 nimepata angalau sasa alifanya mwili wangu wa Nakala ukurasa wa wote bluu. kifungo anakaa huo kwa sababu hiyo ni pembejeo. Ni si safi maandishi. Lakini kila kitu kingine kwamba ni wa maandishi, kama CS50 Tafuta juu juu, ni katika bluu ukweli. Tena, wote tumefanya sasa ni kuondoa kutoka tag mwili, taarifa, sifa style, na tumekuwa ni zitawekwa nje hapa. Hii si uboreshaji mkubwa, lakini kama sisi kuchukua hatua hii moja zaidi taarifa nini tunaweza kufanya katika toleo hili la tatu hapa. Katika search3.html webpage ni karibu kufanana isipokuwa kwa kile mpya tag sasa? Link, hivyo moja hii si sana aptly aitwaye kwa sababu wewe si kuunganisha kwa maana ya hyperlink Clickable. Badala yake, wewe ni aina ya kufanya sawa # pamoja katika C ambapo tag kiungo na sifa href na sifa rel anasema kwenda mbele na nakala kuweka maudhui ya faili inayoitwa search3.css haki hapa, kimsingi. Ni haina kabisa kufanya hivyo, lakini hiyo ni roho yake. Ni anasema kwenda wazi kwamba faili, search3.css, na kutibu kama ingawa alikuwa mtumiaji typed ni haki hapa katika kichwa cha ukurasa tu kama nilivyofanya katika mfano uliopita. Search3.css, wakati huo huo, ni pretty rahisi. Ni kweli tu ina nini hasa ilikuwa wakati uliopita katika tag style, lakini nimekuwa ni zitawekwa nje hapa na faili yake mwenyewe. Hata ingawa sisi si alitumia muda mwingi wakati wote katika HTML au mtandao programu tu intuitively nini motisha, labda, kwa factoring nje hii snippet ndogo hata ya CSS katika faili yake mwenyewe ikiwa ni pamoja na kisha kwa tag link hii hapa? [Inaudible mwanafunzi majibu] Okay, ni rahisi kusoma kwa maana kwamba una CSS yako katika faili CSS. Una HTML yako katika faili yako HTML, hivyo ni zaidi someka katika maana ya kwamba. Nini kingine inaweza kuwa kulazimisha? Yeah. [Inaudible mwanafunzi majibu] Yeah, hivyo unaweza ni pamoja na mara nyingi, hivyo sasa hivi sisi ni kufanya hizi mifano ya msingi kwa files mtu binafsi, lakini nadhani wewe ni kweli kufanya Tovuti halisi kama wewe kwa pset 7 au mradi wako wa mwisho labda, na unataka kuwa na webpages nyingi, kama ni hakika ya kawaida kwenye halisi World Wide Web, na itakuwa ni ya aina ya vilema kuwa na nakala na kuweka sawa rangi ya bluu Nakala iliyokaa sawa na kituo katika kila moja ya kurasa hizo. Badala yake inakuwa na mantiki zaidi kwa sababu nje, kiasi kama tumekuwa kufanyika katika C na faili h., kuweka katika sehemu moja kuu, katika search3.css kesi hii, na kisha kuruhusu faili yoyote katika tovuti yako ya kweli ni pamoja na kwamba faili kwa njia ya hii tag hapa katika mstari 16. Kama ni kawaida kesi, sisi ilianza na toleo 0, ambayo aina ya kazi lakini si lazima bora, na kwa kila hatua, tafuta 1, tafuta 2, na sasa tafuta 3 tumekuwa kuchukuliwa hatua hizi mtoto kuelekea miundo kwamba ni safi na ni kidogo zaidi ya maandalizi kwa kurasa zaidi tata ili tupate kufanya chini ya barabara. Hebu kufungua moja ya mwisho mfano hapa tu kuonyesha ukurasa hata zaidi stylized, lakini kwanza hebu tuangalie HTML. Hii ni search4.html, na taarifa kwamba kimuundo ni karibu sawa isipokuwa kwa ajili ya utangulizi ya lebo mpya, DIV. Div ni tag kwamba utangulizi mgawanyiko wa ukurasa. Unaweza kufikiri ya hii kama mstatili asiyeonekana. Ni aina ya inajenga rundo wa eneo hilo katika webpage kwamba unaweza stylize wote mara moja. What I ve kufanyika hapa ni kama ifuatavyo. Ndani ya tag mwili wangu, ambayo imekuwa huko wote pamoja, Mimi kusema kujenga mgawanyiko wa ukurasa hapa kupitia mistari 45 kupitia 47, na kwamba maana ya kimsingi nipe Mstatili asiyeonekana pamoja juu ya ukurasa. Kisha nipe Mstatili pili, angalau asiyeonekana, chini ya kwamba, na kutambua ni kwa maudhui ya jina, na kisha mwishowe, nipe mgawanyiko wa tatu wa ukurasa chini kuitwa ID. Tutaweza kuona nini mimi tumefanya hii katika muda tu, lakini conceptually mimi kuwa na mgawanyiko header. Mimi kuwa na mgawanyiko maudhui, na mimi kuwa na mgawanyiko footer ya ukurasa hata kama hawa tu katika ghafi. user si kwenda kuona mistatili 3, lakini aina ya kimuundo huko nyuma ya pazia wao uko kweli sasa. Sasa, nani anajali? Mbona kweli kufanya hili? Kila kitu kingine juu ya ukurasa huo ni kama tumekuwa kuona mbele. Hapa ni fomu yangu. Hapa ni pembejeo yangu, pembejeo yangu, kuvunja line na kadhalika. Hapa ni picha, ingawa, hivyo tutaweza kuona ambapo hii alikuja kutoka katika muda tu. Hapa ni footer, ambayo ni mpya, kwa sababu tu nilitaka kuanzisha baadhi maudhui zaidi hapa. Kama sisi kitabu juu ya taarifa kwamba ID div hii ni header. ID ya div hii ni maudhui, na ID ya mtu huyu ni footer. Na kama jina linavyosema, wakati una sifa ID katika HTML, kwa ufafanuzi ni lazima kutambua ya kipekee moja ya vipengele, moja ya vitambulisho katika ukurasa wako. ni mzigo kabisa juu yenu kukumbuka kwamba una ID header tayari. Una footer. Una ID maudhui tayari. kompyuta si kwenda kufikiri nini ID inapatikana ni kwa ajili yenu, hivyo unaweza ajali kutoa 2 tags ID ya header, na kwamba ingekuwa tu kuwa na makosa. Una kukumbuka nini una umba, lakini mara moja umefanya kosa kwamba taarifa nini tunaweza kufanya hapa. Siwezi sasa bayana katika mtindo tag wangu kwa juu au equivalently katika faili yangu CSS, kama nilikuwa bado kutumia version, Naweza kusema # header, na nini ni kwamba maana ya kwamba chochote tag katika webpage hii ina ID ya header na #, tu na mkataba wa binadamu, inawakilisha ID. ishara makali au pound ishara inawakilisha ID. Header ni jina kwamba mimi akampa. Hii ina maana kuomba hii mali CSS kwa chochote tag katika ukurasa huu huzaa ID ya header. Same mpango hapa. Kuomba hii mali, ambayo hufanyika kuwa sawa, kwa kipengele yoyote ambao ID ni maudhui, na kisha chini hapa taarifa mimi got kidogo fancier na footer. Yoyote ya kipengele ambao ID ni footer, ambapo kuna inaweza kuwa moja tu kwa ufafanuzi, kwenda mbele na kufanya font yake ya kawaida ndogo, font yake uzito koze, margin yake 20 Ukubwa. Hiyo ina maana gani? Ni tu margin juu, chini, na kushoto na kulia. Hii ina maana nipe 20-pixel asiyeonekana margin kuzunguka tu kushinikiza kila kitu kingine mbali na ni kidogo kidogo, kama unaweza kufanya katika Neno, Microsoft Word au Kurasa au kama. Na kisha Nakala align katikati. Hebu angalia matokeo ya mwisho, na kisha tutaweza kwenda tena kwenye snippet moja iliyobaki ya CSS huko. Hili ni toleo la 4, mwisho wetu kwa mifano ya utafutaji, na ni mengi, mengi sexier. Sasa, katika haki, mimi tu Googled "google font alama jenereta." Na kwamba kuruhusiwa yangu kuunda GIF, format picha, ambayo inaonekana kama kwamba kuna. Kwa kweli, unaweza kufanya hivyo pia. Tuna "fonts google alama jenereta." Hebu tuone kama tunaweza kufanya hili. Okay, nadhani hii ni tovuti mimi kutumika. Tunaweza kusema EC 10, kwa mfano, na kuwafanya wao wenyewe. Unaweza kucheza na hii siku zote kwa muda mrefu na kisha haki bonyeza juu yake na kisha download GIF halisi, ambayo ni wote kwamba mimi alivyofanya. Na kwa kweli, kwamba ni kwa nini katika HTML wangu, kukumbuka, zaidi ya hapa Mimi nilikuwa tag sanamu, ambayo tuliona kwa ufupi ya wiki iliyopita ambao chanzo ni logo.gif. Na nini tena ilikuwa motisha kwa kuwa na sifa hii alt, sifa hii mbadala? Yeah. [Inaudible mwanafunzi majibu] Nzuri, hivyo 2 sababu kweli, kama kivinjari hakiwezi vuta hadi sura kwa sababu una polepole mtandao au picha ni kupotoshwa au kitu kama kwamba angalau binadamu wanaweza kuona "CS50 tafuta," na kisha pia kwa upatikanaji sababu. Kama una mtumiaji ambaye ni kipofu na ni kwa kutumia msomaji screen na kwa hiyo ni wazi hawezi kuona picha wanaweza angalau kusikia Nakala ikiwa kompyuta zao anaongea nao. Kwa ujumla, hii ni bora mazoezi linapokuja upatikanaji wa kurasa hivyo kwamba hata watumiaji katika hali hiyo wanaweza kusikia au kuona, ili kuzungumza, nini ni kwamba ni juu ya ukurasa wako. Kuna mtu mwingine kitu kwamba sikuwa hapa ambayo ni kidogo kuvutia, na tutaweza kuona zaidi kuhusu hili katika tatizo kuweka 7 kupitia moja ya Shorts wakiongozwa na mmoja wa wenzake kufundisha. Lakini # maudhui inahusu tag ambao ID ni maudhui, lakini basi kuna tabia nafasi, na kisha kuna pembejeo neno. Naam, nini kuvutia kuhusu CSS ni kwamba unaweza rejea tags katika aina ukurasa wa hierarchically, na nini hii snippet ya njia CSS ni kupata tag ambao ID ni maudhui, na kisha kuomba mali zifuatazo wote wa tags pembejeo kwamba ni kizazi wa maudhui, kwamba ni kwamba ni indented ndani yake. Indentation, tena, ni muhimu tu kwa kompyuta, si kwa binadamu, lakini kwa mkataba sisi Indent mambo kama sisi kwenda zaidi katika ukurasa, hivyo hii ina maana kuomba margin ya saizi 5 kwa kipengele yoyote pembejeo kwamba mahali fulani ndani ya au nested ndani ya  kipengele ambao ID ni maudhui. Nani hana kwamba yanahusu? Naam, kuna kweli tu haya guys 2 hapa. Ona kwamba ndani ya fomu kuna 2 pembejeo, kama kuna kuwa kwa wote wa mifano hii. Lakini taarifa kwamba wale pembejeo 2 kutokea kwa kuwa nested ndani, angalau kidogo kwa undani, tabaka michache indentation, ndani ya tag ambao ID ni maudhui. Hii ina maana gani? Kama sisi kwenda browser hapa unaweza kuona milele hivyo kidogo- basi mimi zoom katika-kwamba kuna kidogo padding kati ya kifungo na kati ya uwanja maandishi. Hebu muda kugeuka kuwa mbali. Hebu kwenda CSS yangu, na napenda kwenda mbele na tu kubadilisha hii margin kutoka 5 saizi kwa saizi 0. Hebu kwenda mbele basi na kuokoa faili, kwenda nyuma ya injini ya utafutaji na Reload, na kuangalia katikati ya ukurasa. Kila kitu got Komprimerade pamoja, na wakati mimi kwanza kuchapwa mfano huu hadi Nilidhani kwamba inaonekana kijinga na shamba na kisha Nakala kifungo mara moja chini yake. Nilitaka pedi ni kidogo, hivyo mimi ilianzisha pembezoni. Nini sisi si kufanya katika hotuba ni kwenda kupitia dazeni kadhaa CSS mali ambazo zipo sababu, tena, kuna mambo kama kawaida font, font uzito, kiasi, Nakala align, na wengine wachache dazeni, na tutaweza kukuongoza katika tatizo kuweka 7 kwa tutorials mbalimbali online na kumbukumbu kwamba kuruhusu kuchukua mambo haya juu. Lakini nini kweli ni muhimu katika mwisho wa siku ni kuelewa jinsi mambo hayo ni kutumiwa. Tena, kama tuna tag mtindo ndani ya ambayo unaweza kwenda selectors, aina ya vitambulisho kwamba bayana ambaye unataka kuomba mali hizi, na kisha kuweka mali kama jozi ufunguo thamani waliojitenga na koloni na kisha kuishia na semicolon, au unaweza mpasuko yote ya nje kwamba na kuiweka katika faili tofauti CSS kwa yenyewe. Haki zote, maswali yoyote juu ya dhana au picha kubwa ya CSS? Wewe utakuwa tena kuona zaidi ya hiyo katika pset 7, lakini tutaweza kuweka kwa ujumla pretty rahisi. Hakuna? Wote haki. Ni wakati wa lugha halisi ya programu, na tutaweza kurudi kidogo kidogo ya CSS katika fomu ya mfano. PHP ni kweli lugha ya ajabu kupatikana kwa kuwa ni syntactically karibu sawa na C. Kwa maneno mengine, kama unajua C, unajua kwa PHP wengi sehemu, angalau syntactically, ingawa kuna baadhi ya makala mpya na baadhi dhana mpya sisi itabidi kuangalia. Lakini kwa sehemu kubwa, sasa kwamba sisi mpito kutoka C kwa PHP wengi wa mambo mapya ni kweli katika picha kubwa, jinsi ya kutumia lugha ya programu ya mtandao kinyume na katika mstari amri au katika haraka blinking kama tumekuwa kufanya hivyo sasa. Kwa ajili ya kumbukumbu, hasa kwa pset 7 na kuendelea mwisho ya mradi, kufanya kuchukua faida ya URL hii hapa kama Ningependa kusoma juu ya taratibu za PHP. Ni kweli kama free online kiada kwa ufanisi, na wewe utakuwa pia kupata kwamba nini kweli nice kuhusu PHP ni kwamba kuna mamia ya kazi ya kwamba kuja na hilo, ambapo katika C wewe haikuwa lazima kuwa na upatikanaji wa zaidi kazi kuliko walikuwa katika maktaba math, maktaba CS50. Katika PHP na mengi ya lugha za kisasa, Python na Ruby kati yao, wewe kupata kazi nyingi zaidi, ambayo ina maana ya kupata na kuandika mengi chini code kwa sababu unaweza kusimama juu ya mabega ya watu wengine ambao tayari imeandikwa mambo fulani kwa ajili yenu. Hebu kuchukua ziara ya haraka ya kisintaksia ya PHP na kisha kuandika mifano michache. Nini kizuri kuhusu PHP kwanza kabisa ni hakuna kazi kuu. Kama unataka kuandika mpango katika PHP wewe tu kuanza kuandika code, na huna na wasiwasi kuhusu kuu. Kuna int hakuna. Kuna hakuna kurudi. Hakuna argv, argc tu vinavyohitajika wakati wewe kuandika mpango. Badala yake unaweza tu kuanza kuandika code, na hii ni katika sehemu kwa sababu PHP ni nini wito lugha kufasiriwa. C imeandaliwa, na ilikuwa compiled katika maana ya kwamba wewe kuanza na chanzo code, kukimbia kupitia Clang, ambayo ni mkusanyaji, na hatimaye baada ya baadhi ya idadi ya hatua ya kupata kitu code, sekunde 0 na 1s. PHP na Chatu na Ruby na Pearl na wengine ni aina tofauti ya lugha katika kwamba huna kukusanya yao. Huwezi kwenda kutoka source code kwa sekunde 0 na 1s. Wewe tu kukimbia chanzo code, na kukimbia code chanzo kwa kuandika katika faili kawaida Nakala, unaomalizika. php katika kesi hii badala ya c., na nini mpango gani kwenye kompyuta yako ni hivyo literally anatafsiri code yako mstari kwa mstari kwa mstari. Kwa maneno mengine, badala ya kuandika mpango na kuendesha programu ya moja kwa moja wewe badala kuandika mpango na faili unaomalizika. php. Kisha wewe kukimbia mpango halisi iitwayo php.exe, kama wewe ni juu ya Windows, au tu PHP kama wewe ni juu Mac OS au Linux, na wewe kutoa kama mchango kwa mpango PHP chanzo yako mwenyewe code, na madhumuni yake katika maisha ni kusoma code yako juu hadi chini, kushoto na kulia, na kufanya chochote ve habari kufanya. Hebu kuona nini hii ni ya kwenda maana syntactically. Katika PHP tuna masharti. Slide Hii ni kufanana na kile wewe hapo nyuma kwenye wiki 1 kwa sababu syntactically hali, ikiwa na ikiwa mwingine na mwingine katika PHP kuangalia hasa kama hii. Linapokuja misemo bulin wao wanaenda kuangalia hasa kama hii. Linapokuja anding mambo pamoja kama booleans itakavyo kuangalia hasa kama hii. Swichi kuangalia huo, na wewe kupata faida aliongeza katika PHP kwamba swichi katika C inaweza tu kubadili juu Char au int. Unaweza si kubadili tarehe ya thamani kamba. Katika PHP unaweza kweli kuwa kujieleza kwamba ni variable ambaye yaliyomo ni kamba, na unaweza kweli kufanya string kulinganisha katika njia ya kweli, angavu, si pointer kulinganisha, ili kuamua kama kufanya kesi i au j au kitu kingine. Tutaweza kuona kwamba uwezekano kabla ya muda mrefu. Matanzi pia ajabu ni sawa. Kwa kuwa loops initialization, hali, na baadhi ya idadi ya updates. Wakati matanzi pia zipo katika PHP. Je, wakati matanzi pia zipo katika PHP, na arrays zipo katika PHP, lakini hapa ambapo syntax kuanza kupata kidogo tofauti, lakini dhana ni sawa, na dhana kweli ni sawa kama walikuwa katika Wiki 0 na Scratch. Kwanza kabisa ni ishara $. Hii ilikuwa ni uamuzi kubuni katika PHP ambapo yoyote variable katika PHP na kubuni huanza na ishara $. Hakuna zaidi X, Y, Z. Ni sasa $ X, $ Y, Z $ kwa sababu tu. Ni kitu cha kukumbuka, na sasa upande wa kulia hii inaonekana sawa na safu, lakini sisi ni kutumia mabano mraba hapa. Katika PHP na katika JavaScript, kama tutaweza hatimaye kuona, kutangaza safu ya kufanya wazi Mabano ya mraba na kufungwa bracket mraba, na kisha una comma separated orodha ya maadili, iwe ints au masharti au chars, chochote unataka, ndani ya kujieleza kwamba huko. Sasa, jinsi gani sisi kufanya kitu kama hiki katika C? Nini ilikuwa syntax kwa statically kutangaza safu ya idadi maalumu? Ilikuwa curly braces, hivyo madogo tofauti hapa, lakini katika wote PHP na hatimaye JavaScript tu anatumia mabano mraba, hivyo kweli undani tu kuvutia hapa ni ishara $ kwa jina variable na pia mabano mraba, na kuna mmoja curious kitu hiyo imekuwa omitted kama vile upande wa mkono wa kushoto wa ishara =. Kinachokosekana kwamba sisi tumekuwa wanaohitaji kwa wiki sasa? Yeah. [Inaudible mwanafunzi majibu] kawaida, hivyo hakuna kutaja ukubwa wa safu. Kusema ukweli, hakuna kutaja ya mabano mraba upande wa kushoto ya ishara =, na kile kingine ni kukosa kutoka mstari? Yeah. >> [Inaudible mwanafunzi majibu] aina, hivyo maana ya kuvutia hasa kuhusu PHP ni kwamba ni si lugha ya dhati typed kama C ni, na kwamba nguvu typed kwa maana kwamba lazima kusema Char, useme int, lazima kusema kuelea. Wowote unataka variable mniambie Clang nini aina yake ni. PHP ni kidogo lazier. Ni loosely typed katika maana ya kwamba unaweza kuwa na ikifungwa na chars na masharti na ints na kadhalika, lakini lugha yenyewe kweli haina huduma ya kile wewe kuweka ndani ya kutofautiana. Huna kuwajulisha ni mapema kile data aina ni kwenda katika kutofautiana. Ni kabisa hadi wewe, hivyo hii ni nzuri kwa kuwa huna na wasiwasi kama mengi kuhusu data kuchapa na wasiwasi nini hoja yako ni na kadhalika. Hii pia ina maana hatimaye kazi katika PHP ni kwenda kuwa na uwezo wa kurudi ama zaidi int ya muda, na labda mara moja kwa wakati wao itabidi kurudi bool, uongo bulin, kwa mfano, ni ishara ya kitu ambacho potoka. Hii inatupa upsides baadhi, lakini pia kufanya sisi aina ya kubuni na kidogo lazier linapokuja kuandika data. Kile kingine ni pale kukumbuka hapa? Vigezo kuangalia kabisa kama hii, hivyo $ s = "hello, ulimwengu." Hiyo labda inferable kutoka mfano uliopita, na tuna aina nyingine ya kitanzi. Hii moja tutaweza kweli kuona mara moja katika muda tangu ni kabisa Handy, foreach kujenga. Katika kesi hiyo, kitanzi foreach inachukua ndani ya mabano yake maneno 3 kawaida, $ Kitu kwanza, ambayo ni nini safu unataka iterate juu ya washiriki wa, kisha literally Keyword kama, na kisha mwishowe, mwingine jina variable kwamba kupata kuchagua. Inaweza kuwa foo, bar, au kipengele, na nini kujenga hii haina ni kama safu $ ina vipengele 10 juu ya kila iteration ya hii safu-sorry, juu ya kila iteration ya kitanzi hii variable kuitwa kipengele ni kwenda kuwa updated kuwa kipengele kwanza katika safu, basi kipengele pili katika safu, basi kipengele cha tatu wa safu, na hivyo obviating haja kufanya kidogo annoying mraba bracket nukuu na $ I ili index katika safu. PHP anafanya yote ya kazi kwa ajili yenu na juu ya kila iteration tu hukabidhi wewe kipengele ijayo kutoka safu bila wewe kujua kuhusu au huduma kuhusu eneo lake numeric index. Na kisha mwisho, kwa sasa, kuna mtu mwingine hulka ya PHP kwamba itakuja kuwa hugely muhimu, hasa wakati sisi kuanza programu juu ya mtandao, na kwamba inayojulikana kama safu associative. arrays kwamba sisi kujua hivi sasa kama ya sekunde 20 iliyopita na kwa kipindi cha wiki 8 ni numerically indexed arrays, aina ya arrays jadi ambapo fahirisi ni ints, 0, 1, 2, njia yote juu juu. Arrays associative ni mengi na nguvu zaidi. Wao kuruhusu kuwa na funguo holela, holela fahirisi na maadili holela. Wakati katika safu ya jadi ni 0, 1, 2, katika safu associative unaweza kuwa na index au ufunguo wa foo ambao thamani ni bar. Basi unaweza kuwa na mwingine muhimu ambaye jina lake ni bazi na ambao thamani ni qux. Tena, stupid sayansi ya kompyuta generic variable majina hapa, lakini uhakika ni kwamba safu hii haina bracket 0 au bracket 1. Ni badala ya kwenda na bracket foo na bracket bazi. Hii ni mengi zaidi katika versatile kwamba sisi ni kwenda kuwa na uwezo wa kujiunga maneno kwa maneno mengine, funguo na maadili kabisa kiholela, na sisi ni kwenda kuwa na uwezo wa kupata maadili hayo nyuma katika wakati wa mara kwa mara kwa sababu chini ya Hood nini safu associative kweli ni meza ni hash. Kumbuka kwamba meza hash inakuruhusu wewe kuweka katika pembejeo baadhi kama kuweka katika Daudi neno kama unataka Insert Daudi katika baadhi ya aina ya kamusi, na kisha kupata nyuma baadhi thamani kawaida. Katika kesi ya speller, kweli au uongo. Daudi au chochote neno ni katika au si katika kamusi. safu associative ni kweli tu meza hash, lakini ni zaidi user friendly umwilisho wa hayo. Kama tutaweza kuona, ni kwenda kuruhusu sisi kufanya baadhi ya mambo sana, kwa urahisi sana. Hebu tuangalie baadhi ya msingi PHP mifano na kuona nini tunaweza kufanya kwa lugha hii. Hebu kwenda mbele na kufungua katika chanzo directory yetu leo faili inayoitwa hello1.php. Faili hii ni zaidi kuliko maoni ni halisi kificho, hivyo basi mimi kwa kweli kuondoa yote ya maoni kutoka faili na sasa wewe labda rahisi PHP mpango wa kulia hapa. 5 mistari, na baadhi ya watu ni nyeupe nafasi, hivyo taarifa tofauti baadhi msingi hapa. file inaitwa hello1.php. mstari wa kwanza kabisa, ingawa, ni ?, Ina maana kwamba ni yake kwa code yangu PHP. Hebu angalia jinsi ya kuendesha hii. Mimi nina kwenda nyuma terminal dirisha yangu hapa. Mimi nina kwenda katika saraka yangu PHP. Taarifa kwamba tuna rundo zima la files, moja ya kwanza ambayo ni hello.php. Hebu kwenda mbele na kukimbia hii hello1.php, kuingia. Ruhusa imekataliwa. Sawa. Jinsi sisi fasta mambo kama hii katika miaka ya nyuma? Nini kwamba? >> [Inaudible mwanafunzi majibu] Sisi hauhitaji kusoma na kuandika, lakini basi mimi kufanya ls-l. Kumbuka hili pato fulani cryptic ambapo hello1 inaonekana kuwa someka na writable na mimi lakini someka kwa kila mtu mwingine. Ni zinageuka kweli hii sio hatua katika mwelekeo sahihi. tofauti, tena, kwa lugha ya kufasiriwa ni wewe si kukimbia mpango moja kwa moja. Wewe badala kukimbia mkalimani na mkono ni code kwamba ve imeandikwa hivyo inaweza kutafsiri mstari kwa mstari. Katika kesi hiyo, mkalimani au mpango mimi kwa kweli unataka kukimbia ni halisi iitwayo PHP. Mahali fulani kwenye gari hii ngumu ya appliance kuna programu ya mtu mwingine aliandika kuitwa PHP, au juu ya Windows php.exe. Nini mimi kwenda kufanya hapa ni mimi naenda kwa kweli kukimbia PHP lakini kutoa hoja kama mstari amri kificho kwamba niliandika, na basi mimi itabidi zoom nje na hit kuingia. Ni anaendesha programu yangu kwa ajili yangu, juu hadi chini, kushoto na kulia. Hebu kwenda mbele na kufungua ugomvi kidogo wa hii. Katika taarifa hello2.php kwamba hii pia ni zaidi ya maoni, hivyo basi mimi kujikwamua wale kama ovyo, na nini ni wazi tofauti na sasa kuhusu faili hili? Kuna mstari huu mpya, kwa kiasi fulani cryptic kwa juu. Katika mstari 1 ni #! / Bin / php. Bin ni mkataba juu ya Linux na Mac OS kwa binaries, hivyo / bin maana hii ni folder containing rundo la binaries kwamba ni programmed, moja ambayo ni PHP. #! ni jina la utani shebang, ambayo ni njia ya haraka ya kusema hayo, na hii ina maana gani ni kwamba wakati wewe kukimbia mpango huu sasa kuna ladha ya wakati juu ya faili kwamba anasema kompyuta nini mkalimani kutumia. Ni anapata kidogo annoying kama alikuwa kuwaambia watumiaji yako na wateja wako "Hey, sisi aliandika hii programu inayoitwa hello1.php." Wote una kufanya ni ya milele kukimbia PHP na kisha jina la mpango huu. Kusema ukweli, itakuwa tu kuwa nicer kukimbia hello1.php, na kwa kweli, tunaweza kama sisi kufanya yafuatayo. Hebu kwenda mbele na kufanya ls-l, na taarifa katika hello2 ni bado tu kusoma kuandika na kisha kusoma kusoma, hivyo siwezi bado kufanya hivyo, hello2.php. Lakini sisi ilianzisha hii milele hivyo kwa ufupi wakati wa mwisho, amri chmod. Kama mimi kufanya chmod x +, ambayo ina maana wote executability plus, na kisha hello2.php na basi ls-l tena taarifa kile iliyopita. Moja, Linux ananionyeshea jina la faili katika kijani kupeleka wazo kwamba executable ni, lakini muhimu zaidi, upande wa mkono wa kushoto taarifa kwamba kidogo anayewakilisha x kwa executable sasa imekuwa kuweka. Nini hii sasa ina maana ni mimi wanaweza kukimbia ./hello2.php kama kawaida, enter, na kwa sababu ya shebang saa sana juu ya faili hiyo ni dokezo, tena, kwa Linux kwamba anasema kutumia hii mkalimani kukimbia faili hii. Usijali kuhusu kulazimisha mtumiaji kweli unapoandika. Na nini ni nzuri sasa ni ni aina ya lisilo na wateja wangu au rafiki yangu lugha gani niliandika programu hii katika, hivyo siwezi kwenda mbele kwa mv na rename jambo hili kwa hello2, kwa mfano. Na sasa kama mimi kufanya ./hello2 na zoom nje mpango wangu anaendelea kukimbia. Upanuzi faili Hizi ni mkataba wa binadamu kwamba ni muhimu kwa kitu kama Clang na Make ambao kuangalia kwa ajili yao. Lakini kwa PHP, mimi naweza kuita hii ugani faili chochote nataka. Mimi nilikuwa kuwadanganya dunia katika kufikiri kwamba mimi nina mzuri katika Ruby, na mimi naweza kuandika hello2.rb na kisha kukimbia hii, na voilà, sasa nina version Ruby, ambayo ni uongo kamili. Lakini upanuzi faili hayana maana kama faili ni executable na ina ladha hii maalum wakati juu ya faili. Sasa, kama kando, napenda kuonyesha haraka version 3, ambayo ni aina ya hila muhimu kujua. Katika hello3 mimi alifanya kitu kidogo vibaya kwamba mimi itabidi update code chanzo online. Katika toleo 3 zinageuka kuwa juu zaidi kompyuta Linux kuna programu inayoitwa env kwa mazingira, na nini unaweza kufanya hapa ni kama hawana wazo ambapo PHP imewekwa kwenye gari mitaa ngumu, kwa sababu kwa kweli inaweza kutofautiana kulingana na kompyuta kwamba mtu ni kutumia, env tu anasema kukimbia env, ambayo ni juu ya mifumo ya wengi, na takwimu nje ambapo PHP ni. Tu hila ya kawaida hivyo huna kuwa na wasiwasi juu ya kutafuta nje ambapo mpango ni. Lakini kama wewe kufanya huduma ya kujua ambapo mpango ni na wewe si kumjali hivi sasa unaweza kutumia amri ambayo. Hebu zoom nje na aina ambayo php, na taarifa hiyo anasema mimi ni kweli katika Usr / bin / php. Ni aina ya uongo. Ni pia katika bin. Ni tu kunionyeshea hit kwanza. Kama umewahi kujiuliza ambapo Clang ni, ambayo Clang, hiyo ni katika Usr / bin / Clang, ambayo kufanya, Usr / bin / kufanya, na nini maana ni wakati huu wote unaweza wamekuwa kuandika Usr / bin / Clang kuingia kuendesha Clang, lakini ni aina ya tedious kufanya hivyo, hivyo baadhi folders kama Usr / bin na bin ni kudhani kuwa defaults hivyo kompyuta anajua kuangalia katika yao kwa ajili yenu. Maswali yoyote juu ya kuandika super, super rahisi Wapendwa Dunia mpango katika PHP na kisha mbio? Kwa sababu sasa tutaweza kuanza kuanzisha zaidi ya kulazimisha syntax. Haki zote, hapa sisi kwenda. Programu hizi tumeona kweli wote kabla. Kama mimi kufungua, kwa mfano, hebu kufanya beer1.php, sisi si kwenda kwa njia ya matoleo kadhaa ya hii, lakini nini mimi alikuwa nikaketi na kuyamimina au waongofu yangu C code kwa PHP code hapa. Wengi wa juu ya faili ni maoni hapa juu. Ni zinageuka kuna mmoja mpya kazi tunahitaji kuitwa readline. GetString, wanakumbuka, kutoka Wiki kuendelea 0 ilikuwa jambo CS50. PHP kuja na kazi yake user-kirafiki kuitwa readline kwamba inachukua 1 hoja ambayo inabainisha haraka kwamba unataka kuonyesha kwa mtumiaji, na kile readline gani ni kuirudisha chochote mtumiaji aina in Katika kesi hiyo, mimi nina kutangaza variable inayoitwa $ n. Mimi nina hifadhi ndani yake thamani ya kurudi kwa readline baada ya uvuvio mtumiaji pamoja na kamba hii. Tu ya kuunga, kwa kweli kuendesha jambo hili, basi mimi kwenda mbele na kukimbia php beer1.php. Jinsi chupa nyingi kutakuwa? Hebu tu kufanya 2 wakati huu. Kuingia. Hayo ni yote. mpango ni functionally kufanana na toleo C kutoka wiki iliyopita. Lakini syntactically hebu angalia nini tofauti. Baada ya mimi kupata int kutoka ilani user kwamba mimi kufanya baadhi ya kuangalia makosa, na ikiwa n ni chini ya 1 niliacha na mimi magazeti nje ujumbe pole kwa mtumiaji na exit na 1. Hii pia ni tofauti kidogo.  Katika C nini sisi? Katika C tukirudi 1. Katika PHP uzime na 1, ambayo ni kusema ukweli nadhani kidogo Intuitive zaidi kwa sababu wewe ni literally exiting mpango. Haki zote, na kisha chini hapa wimbo annoying ni kufanana syntactically isipokuwa kwa kutofautiana, hivyo chini hapa katika mstari 24 kuendelea taarifa yangu kwa kitanzi ni karibu sawa, lakini nina $ mbele ya i na n, na ni nini pia kukosa kutoka mstari 26 kwamba tulikuwa katika kipindi cha wakati akitangaza i variable? Kuna aina yoyote. Ni sahihi katika PHP kusema int. Wewe tu hawana haja ya kufanya hivyo. kompyuta, PHP mkalimani ni smart kutosha kutambua kwamba kama wewe kuweka namba katika $ mimi itakuwa kutibu kama namba kwa ajili yenu. Na kisha chini hapa sisi kuziba katika $ i, $ i, $ i - 1. Yote ambayo ni sawa, na kisha chini hapa sisi kufanya "Wow, kwamba annoying" printf na kisha exit (0). Tena, takeaway hapa ni kwamba hata kama sisi ni kwenda kutumia kiasi kidogo wakati juu ya PHP, hakika dhidi ya kile sisi alifanya juu ya C, ni karibu sawa, na hivyo kile tutaweza kufanya leo na wiki ijayo na zaidi ya ni lengo kweli juu ya baadhi ya mawazo mapya. Tu kuona kwamba jambo moja nyingine haina kutafsiri juu kutoka C, hii ilikuwa super rahisi mpango sisi alivyofanya katika Wiki 1 au 2 kuwa cubed thamani. Lakini nini ilikuwa ya kuvutia wakati kuhusu mpango huu ni kwamba ilianzisha dhana ya kazi desturi imeandikwa kwamba sisi wenyewe aliandika. syntax katika PHP ni karibu sawa. Hapa ni mpango wangu juu juu. Ona tena watoro ni wazo yoyote ya kuu. Mimi kuanza kuandika code, na hii ni nini kinaendelea kupata kuuawa na mkalimani. Mimi magazeti nje x ni sasa 2, labda. Kisha mimi kudai cubing ... Kisha mimi piga kazi Cube na kupita katika $ x na hawawajui thamani ya kurudi kwa $ x. Kisha mimi kudai kwamba ni cubed, na kisha mimi kusema hayo, ambayo hopefully watasema x ni sasa 8. syntax kwa ajili ya kazi katika PHP ni milele hivyo tofauti kidogo. Tena missing ni aina ya kurudi. Tena ni kukosa aina kurudi na pia kukosa ni nini aina nyingine? [Inaudible mwanafunzi majibu] Naam sawa, kwamba ni vizuri. Hebu kuja nyuma na kwamba katika pili. Hatuna, kwa mfano, int hapa. Hatuna, kwa mfano, int hapa kwa sababu, tena, katika PHP wewe tu hawana haja na haipaswi kufanya hivyo, lakini badala kuna hii Keyword mpya iitwayo kazi. Katika PHP ni karibu wazi kidogo kwa sababu wakati unataka kazi wewe literally kusema kazi, wewe kuwapa jina na kisha comma separated orodha kama yoyote ya hoja zake. Hakuna haja ya kusema utupu au kitu kama hicho, na kisha kurudi ni sawa, $ * $ * $. Nini pia kukosa? Sammy niliwaonyeshea hapa. Katika juu ya faili kabisa watoro katika PHP pia ni mfano. Hii pia ni kwa kubuni. Lugha wakalimani na kama PHP ni nadhifu kuliko C milele mara katika compilers kama Clang. Kumbuka kwamba Clang, kama hakuwa na kuwaambia kwamba mchemraba lipo, kama hakuwa na kuwaambia kwamba printf lipo kama kwa mfano au na # ni pamoja na, pia, ilikuwa inaenda yell katika wewe na hata kukusanya code yako. PHP na zaidi lugha za kisasa ni mengi nadhifu linapokuja hili. Watachukua juu wenyewe kusoma kwa njia zote za code yako na kisha yell saa wewe tu kama anaona mchemraba popote. Haijalishi kama mchemraba ni chini au juu au hata katika baadhi ya faili tofauti. PHP na lugha zinazofanana ni sasa smart kutosha wa kuangalia mbele katika kila kitu kabla ya kutuhumu wewe kama kuwa alifanya makosa. Ambapo gani kwamba kuondoka sisi? Hebu kufanya moja ya mwisho mfano hapa katika hali, na ikiwa mimi kufungua taarifa conditions2.php pia syntax hapa ni karibu sawa. Mimi nina kutumia readline badala ya GetString, lakini line kwamba ni sawa kama kabla, "Ningependa integer tafadhali." Mimi kisha kuwa hali ikiwa, mwingine kama, na kisha mwingine, lakini functionally mpango huu pia ni kufanana na nini tulifanya wiki iliyopita, hivyo kama mimi kukimbia jambo hili, php ya conditions2, na mimi kutoa idadi kama 23 - Mimi ilichukua idadi chanya. Kama kuwapa -1 mimi ilichukua namba hasi. Kama kuwapa 0 kweli mimi ilichukua 0. Hivyo anayenijali yote haya? Naam, mmoja wa aina ya furaha ya mazoezi hapa kwa ajili yangu angalau alikuwa na kurudi nyuma na kuona jinsi ya haraka ningeweza kutekeleza pset 5, pset misspellings. Kumbuka kwamba kulikuwa na faili inayoitwa speller.c, na kulikuwa na faili inayoitwa dictionary.c. Nini mimi alikuwa Mimi aina ya alitumia muda wa dakika chache na mimi waongofu code C kwa PHP code, na sisi si kutumia muda mwingi kwenye speller kwa sababu tu kama katika pset 5 wewe si kweli wanahitaji kutumia muda mwingi kwenye speller yenyewe kwa sababu mawazo yako ilikuwa juu ya kamusi. Inatosha kusema kwamba kama kusoma kwa njia ya speller, faili hii hapa, ni kiasi pretty sawa na code C tuliyowapeni kwa pset 5. Nimekuwa tu aliongeza baadhi $ katika maeneo. Nimekuwa iliyopita majina kazi fulani kama hawakuwa zipo katika PHP. Kuna jambo moja ziada hapa, preg_match, ambayo ni kidogo fancier njia ya kufanya kitu, lakini tutaweza kuja nyuma na kwamba hatimaye. Lakini katika muda mfupi, speller ni karibu sawa, na kama ukiangalia chini sana nini hatimaye mtemi ni hii hapa, maneno misspelled, maneno katika maneno ya kamusi, katika maandishi. Haki zote, hivyo maana ya kuvutia sasa ni yafuatayo. Katika juu ya faili yangu mimi wanaohitaji dictionary.php. Tu kama C # ni pamoja na ina PHP ina kazi maalum iitwayo zinahitaji kwamba kiasi pretty haina kitu kimoja, zinahitaji faili inayoitwa dictionary.php. Ninawezaje kwenda kuhusu kutekeleza pset 5? Hebu kwenda mbele na kufungua faili hapa. Napenda kuchukua kumbukumbu kidogo hapa. Na napenda kuunda faili mpya na kuanza kuita hii dictionary.php. Hebu weka katika folda nyingine ili tuweze kufanya hili kuishi. Na sasa mimi itabidi zoom in Mimi naenda kuanza faili yangu PHP na bracket wazi php imefungwa bracket. Na kisha katika hapa kulikuwa na kazi chache mimi zinazohitajika kutekeleza kwa pset 5, hivyo basi mimi kuanza kutekeleza baadhi ya hizo, hivyo kazi hundi, ambayo ilibidi kuchukua neno katika kama hoja. Tutaweza kufanya hivyo na kuja nyuma yake katika wakati huu. Kulikuwa na kazi mzigo, ambayo alichukua katika kile kama hoja? Dictionary, hivyo faili kwamba mimi kweli walitaka kupakia. Kulikuwa na kazi kawaida, ambayo hawakuwa kuchukua hoja yoyote na kulikuwa na kazi-nini ilikuwa nyingine? Ipakuliwe, ambayo hawakuwa kuchukua hoja yoyote aidha. Haya ni majukumu 4 kwamba napenda haja ya kutekeleza sasa katika PHP, na kile Mimi naenda kufanya ni kwenda mbele na kufanya hili. mengi ya wewe kutumika meza hash katika pset 5, hivyo basi mimi kwenda mbele na kujenga meza hash katika PHP. Done. Anipaye meza hash. Naam, kwa nini? Mmoja, variable inaitwa $ meza, tu conjure up wazo la meza hash. mabano mraba, ingawa, kukumbuka, kuwakilisha nini? safu, lakini katika arrays PHP hawana kuwa numerically indexed. Wanaweza pia kuwa associative arrays, ambayo ina maana unaweza kuwa na funguo holela na maadili. Mengi kama katika pset 5, wale ambao walifanya utekelezaji meza hash pengine kuingizwa neno na kisha kuingizwa kwenye mnyororo wa orodha wanaohusishwa, au wewe kuhifadhiwa thamani ya mahali fulani kweli au kitu na athari hiyo. Wewe kwa namna fulani ikumbukwe ukweli kwamba neno alikuwa huko. Kwa sasa, kwamba ni kwenda kuwa meza yangu hash, na hivyo sasa kwa kwenda kuhusu utekelezaji wa kazi hundi Mimi tu haja ya kuangalia ndani ya meza hiyo hash na kuona kama ni neno huko. Nini mimi kwenda kufanya ni nitakacho kusema kama- hebu sema isset, ambayo ni kazi PHP kwamba literally tu ina maana ni kuweka muhimu, hivyo isset ($ meza [$ neno], na kama hivyo kurudi kweli. Hiyo ni. Hiyo pset 5 katika PHP. Naam, katika haki, sawa. Mwingine kurudi uongo, hivyo si huko. Nini kweli kinachoendelea hapa? Naam, kama meza-hash au meza hapa zaidi kwa ujumla- ni safu associative kwamba maana unaweza index ndani yake na neno kama "neno" na una kupata nyuma baadhi ya thamani. Sisi ni aina ya kupata hatua moja mbele ya sisi wenyewe. Itakuwa nzuri kama aina ya sisi kweli kubeba faili kwanza, hivyo mzigo ni kabisa kama rahisi, lakini napenda kwenda mbele na mjeledi juu ya  utekelezaji kweli haraka ya mzigo. Hebu kwenda mbele na kusema maneno anapata faili kamusi. kazi faili katika PHP kuufungua faili na anarudi kwa wewe safu ya maneno yote katika faili kwamba, tu mikono yao na wewe. Hiyo ilikuwa maumivu kubwa pia, alikuwa si hivyo? Sasa foreach, hii ni kujenga wetu mpya, foreach ($ maneno kama $ neno). Kitanzi Hii ni kwenda kuanza iterating juu ya maneno ya safu na hawawajui variable $ neno kila neno katika faili kutoka la kwanza hadi ya pili ya tatu kwa njia ya nne wote hivyo mimi si kufanya annoying [i] nukuu na kama. Na nini mimi tu anaenda kufanya kwa kila moja ya maneno haya ni kuhifadhi katika meza yangu kwa Indexing katika meza na kisha kufanya kweli kwa sababu ya kukumbuka kwamba neno ni katika kamusi yangu yote kwa kweli mimi kufanya ni aina ya flip kidogo na kusema neno hili katika meza yangu hash ni huko, kweli. Na kama si huko, sina kupanga kuweka uongo, vinginevyo ningependa kuwa na kuweka uongo kwa maneno yote inawezekana katika ulimwengu. Inatosha kwa ajili yangu tu kuweka thamani index kwa kweli kama ni kweli neno katika meza yangu hash. Sasa, mimi nina kukata michache ya pembe hapa kwamba mimi itabidi kukitikisa mikono yangu katika kwa sasa, lakini sasa kazi mzigo ni kosa. Mimi mzigo maneno yote kutoka faili katika safu. Mimi iterate juu ya safu hiyo, na kwa kila neno katika safu Mimi kuziba ndani ya meza yangu hash na 1 mstari wa kanuni. Hii ni fun. Unajua jinsi gani tunaweza kutekeleza kawaida sasa? Naam, ukubwa ni daima pretty rahisi, katika haki. Hapa tunaweza tu wala kurudi kuhesabu ya meza. Hiyo ni rahisi pretty pia, kuhesabu idadi ya mambo katika meza. Hiyo ni kweli si aina ya ufanisi zaidi. Mimi lazima pengine kuwa na variable kuitwa ukubwa hivyo tunaweza kufanya hivyo katika muda wa mara kwa mara, lakini hiyo ni rahisi pretty. Oh, na kisha ipakuliwe, kama kweli tunataka kuwa anal hapa tunaweza kusema kwamba ni jinsi gani wewe ipakuliwe kitu. Wewe tu kuweka variable sawa na safu tupu, na anapata kuondoa kila kitu alikuwa huko. Hakuna haja ya simu bure. Tena, nimekuwa kukata pembe baadhi, na mimi kuomba msamaha kwa kuweka kumshirikisha tatizo 5 labda katika C, lakini kama sisi sasa kwenda mbele na kukimbia hii, Mimi naenda kwa kweli kukimbia version kwamba mimi aliandika mapema hivyo tu kwamba sikuwa kufanya makosa yoyote syntactical wowote. Hebu kwenda mbele na kukimbia speller. matumizi ni sawa. Hapa ni faili kamusi ambayo tu ina foo neno. Hapa ni faili Nakala ambayo tu ina foo bar. Hebu Spell kuangalia hii, hivyo speller, kwa kutumia faili hii kamusi juu ya faili hili asilia. Kuna moja misspelled neno, bar, na voilà. Kufanyika kwa pset 5. Hebu kuchukua mapumziko 5-dakika hapa, na tutaweza kuja nyuma na zaidi juu ya PHP. Haki zote, sisi ni nyuma. Hebu kufanya-chuki yangu kwa muda. Hebu sasa kweli kuona kama hii ilikuwa si chanya kweli kutekeleza jambo hili katika PHP. Granted, ilichukua sekunde 45 kutekeleza. Lakini hebu kwenda mbele sasa na kukimbia mambo. Hebu kwenda mbele na kukimbia version C ya speller, na tutaweza kukimbia kwenye moja ya files kubwa, ambayo ni ya King James Biblia. Na kwamba hapa ni katika-hebu kwenda katika folder wetu C, speller juu ya King James 5. mengi ya maneno misspelled. Okay, hivyo ndiyo pato pengine got hata kama ni nyakati tofauti kidogo, kama got kila kitu kazi kwa usahihi, na hivyo wakati katika jumla ya Spell kuangalia King James Biblia ilikuwa 0.38 sekunde, hivyo nzuri kutumia utekelezaji. Sasa basi mimi kwenda katika toleo PHP, ambayo sisi tu aliandika. Hebu kukimbia speller juu ya King James. Whoops, kupuuza kwamba kosa. Mimi niko katika saraka ya makosa. Speller juu ya King James 5. Karibu kufanyika. Okay, waangalizi astute kutambua kwamba alikuwa zaidi ya sekunde 3 huko. Hiyo ni kweli mbio wakati. Ni zinageuka kuwa inachukua muda kwa mate kura ya asilia nje sababu ya buffering masuala, lakini kwa muda mrefu hadithi fupi, kwamba ilikuwa 3.15 sekunde ya wakati mashine, CPU wakati, dhidi ya kile ilikuwa ni wakati uliopita? Kama 0.3. I mean, ni amri ya kiwango polepole, hivyo ambapo ni kwamba kushuka ridiculous kuja kutoka? Naam, kama ilivyokuwa na uamuzi yoyote zaidi kubuni tumekuwa kufanywa katika darasa zaidi ya wiki iliyopita 9 kuna karibu daima tradeoff hii. Wakati mwingine kati ya nafasi tu, na wakati mwingine kati ya nafasi na muda, nafasi, muda na juhudi za maendeleo, na kwa kweli hapa, ingawa sisi kuokolewa kiasi kubwa ya muda, labda uwezekano 10-20-30 masaa ya maendeleo ya muda utekelezaji wa kusahihisha Spell na kuchapwa viboko ni juu katika sekunde 45 tu kwa lugha hii bei ya sisi kulipa ni kwamba ni amri ya kiwango polepole kama matokeo, na hii ni kwa ujumla kesi na lugha yoyote zaidi kufasiriwa, PHP, Python, Ruby, Pearl au wengine ambapo kama wewe ni kwenda kwa kukimbia kupitia mkalimani na kuwa ni kusoma code yako mstari kwa mstari, juu hadi chini, kushoto na kulia, kwamba middleman ni kwenda kuchukua muda wa peke yake, na nini walikuwa hisia hapa katika sekunde 3 kinyume na sekunde 0.3 ni ukweli kwamba kuna hii middleman ambaye ana kwa literally kutafsiri code yetu mstari kwa mstari, na Mungu apishe kama uko ndani ya kitanzi na faili kubwa zenye mamia ya maelfu ya maneno. Hiyo Rudia ni kwenda kuongeza juu na kuongeza hadi na kuongeza hadi na kuongeza up. Kwa chombo kama hiki ni pengine si lugha bora ya kutumia kwa ajili ya kutekeleza Kibonyezo cha kusahihisha kipo kama immediacy ni ya maslahi kwa watumiaji yako na wewe. Lakini tuna anasa katika muda ni kama wewe kutumia lugha kama PHP au mengi ya lugha kufasiriwa katika muktadha wa Mtandao, kwa jambo hilo, una faida kwamba internet ni mengi polepole zaidi kuliko kompyuta nyingi. Una CPU GHz katika kompyuta yako, 2 GHz, labda hata zaidi siku hizi. Lakini ukweli ni kwenye mtandao kuna kiasi kikubwa cha latency ambapo kwa browser kuzungumza na server, ingawa tuliona wiki iliyopita kwamba hiyo ni pretty kufunga, nusu millisecond au hivyo, kwamba pia anaongeza juu, na kama wewe ni kushusha mambo kama picha au Facebook picha au kupata ujumbe papo juu ya chatter Facebook, Gchat au kama, wote wa nyakati hizi pande zote-safari kati ya kivinjari na kuanza server kwa kuongeza juu, ambayo inafanya uchaguzi wako wa lugha fulani katika kesi nyingi si yote husika, hivyo wewe ni faini kwa kutumia lugha kidogo polepole kama PHP au chatu au Ruby lakini kwa ajili ya ambayo kuna kubwa upsides kwa wewe na wenzako na rafiki yako kwa sababu unaweza kutekeleza mambo ni hivyo, hivyo, kwa kasi zaidi. Na zaidi ya hayo, una kiasi kidogo hatari ya madhaifu fulani usalama. Hakuna kuyatumia katika PHP. Hakuna makosa seg kwamba unaweza kwa urahisi kutumika katika njia sawa unaweza katika C. Na C wewe ni super karibu na vifaa. Kwa lugha PHP na sawa wewe ni aina ya kiwango cha juu, ili kuzungumza, na mengi ya ulinzi kati ya wewe na nini kweli kinachoendelea ndani ya mashine, na ni tu tradeoff. Tuna waliopata kwa uhakika wa kuwa na haya ya kisasa zaidi, lugha ya kiwango cha juu kama PHP kwa sababu ya mambo ya kujifunza katika lugha kama PHP katika C. Lakini kama huelewi nini imekuwa kinachoendelea chini ya Hood muda wote huu wewe hakika hawezi kufanya maamuzi kubuni haki, na kwa hakika linapokuja kufanya kazi katika mahali kama Facebook au Google au wa maeneo hayo kwamba wanazidi kucheza na data kubwa seti hata kama kwenda nyuma na wala premed na ni kazi na baadhi MD juu ya baadhi ya data kubwa kuweka kuwashirikisha wagonjwa na madaktari na kama kutumia zana haki ni hugely kulazimisha kwa sababu vinginevyo uchambuzi wako wa baadhi ya kuweka data inaweza kuchukua sekunde, au inaweza literally kuchukua masaa. Hii ni mfano mmoja tu, si kukatisha tamaa wewe na juhudi kiasi gani zaidi ilikuwa katika C lakini kukusaidia kufahamu kwamba wakati wa kufanya kitu katika kutekeleza C wewe kweli kuelewa, au katika nadharia, kwa kweli kuelewa jinsi kila kitu ni lazima au kufanya kazi, na una karibu udhibiti kamili juu ya nini kinaendelea chini ya Hood, na kwa hayo ngazi lugha una kuachia zaidi ya kudhibiti watu ambao zuliwa yao na ni chini zaidi kwa maamuzi yao kubuni kuliko yako. Lakini kama sisi kuchukua nafasi ya kwamba utendaji ni muhimu kabisa kama kwenye Mtandao kwa sababu ya mambo haya mengine, tu mtandao kasi ni kidogo polepole zaidi kuliko kasi ya CPU anyway, ili tuweze aina ya kumudu kutumia lugha kidogo polepole ikiwa ni upsides tunaweza kuendeleza mambo 10 mara kwa kasi au hata zaidi. Hebu angalia jinsi tunaweza kuanza kutumia. Hebu kwenda katika folder kati ya mifano ya leo inaitwa frosh.ims, na hii ilikuwa kweli binafsi motisha kwa ukweli kwamba jambo la kwanza kabisa Niliandika kwa ajili ya mtandao miaka iliyopita baada ya kuchukua CS50 na CS51 ilikuwa tovuti kwa ajili ya mpango Frosh IMS, Freshman intramural michezo, ambayo kwa wakati huu alikuwa kutosha miaka iliyopita kwamba wakati kulikuwa hakuna tovuti kwa ajili ya mpango, hata kama kulikuwa na mtandao, na badala yake kulikuwa na mwangalizi katika Wigglesworth ambapo kama alitaka kujiandikisha kwa ajili ya mpira wa wavu au soka au chochote ingekuwa kujaza kipande cha karatasi. Wewe ingekuwa kisha kutembea katika yadi. Wewe ingekuwa basi hodi kwenye mlango wao na slide katika mlango yao au mkono kwa mwangalizi kipande cha karatasi na jina lako juu yake, kama au unataka kuwa nahodha wa timu, nini mchezo wewe alitaka kufanya, na kile Dorm ungekuwa in Ilikuwa aina ya njia umri wa shule ya kufanya mambo, na hii ilikuwa mkuu nafasi aŭtomate mengi ya mchakato huu. Wewe tu kwenda kwenye tovuti. Unapoandika kitu in Unaweza kupata uthibitisho barua pepe, na boom, wewe ni kosa. Hii ilikuwa jambo la kwanza kabisa mimi, angalau katika lugha inayoitwa Pearl, lakini ni rahisi kufanya katika PHP, na hii ni aina ya mwakilishi ya matatizo unaweza kuanza kutatua wakati unaweza kueleza mwenyewe programmatically na hawana wanategemea mambo kama maeneo ya Google au Excel au zana kuwa ni mitupu na wewe. You guys sasa wana uwezo wa kufanya mambo kama hayo. Hii ni super ugly toleo la fomu, lakini hebu tu kuitumia kwa ajili ya mwanzo ya mazungumzo ambapo hii ni takribani nini fomu inaonekana kama miaka iliyopita kwa ajili yetu kuwawezesha watu kwenye mtandao kwa ishara ya juu kwa Frosh IMS. Sisi aliuliza kwa jina, checkbox kwa kama au walitaka kuwa nahodha, kiume au wa kike, na kisha nini Dorm walikuwa katika, na kisha wasingeli kuwasilisha fomu hii. Hebu kwanza kuangalia chini ya Hood katika HTML kwamba inawakilisha hii webpage. Hebu kwenda katika froshims0, na kama kando, kwa pset 7 Mimi kuchukua kwa nafasi Directories na folders kwamba mimi nina kuweka mambo in Tutaweza kutembea wewe kupitia hasa ambapo mambo ina kwenda katika appliance, ambayo Mod amri una kuendesha, kwa hiyo usijali kuhusu yote ya maelezo ya kijinga syncing katika kutoka hapa kupata-go. Haki wote, hapa froshims0.php. Hebu kitabu chini, na nini curious hapa, hii ni faili PHP, lakini nini ndani yake, kwa uwazi? Ni mengi yote ya HTML, na kwa kweli, PHP wa asili kweli walikuwa kwa kuwa lugha Web-centric. wakati iliyopita sisi kutumika ni kutekeleza mfano bia, hali ya mfano, mfano hello, na kwamba ni sawa. Unaweza kutumia PHP kama lugha ya scripting ambapo script ni kweli tu utaratibu wa majina aliyopewa mpango haraka na chafu au kitu ambacho wewe kuandika katika lugha scripted au zaidi kwa ujumla kufasiriwa. PHP ni super muhimu kwa ajili ya kuwa kwa sababu wewe ve kuona jinsi ya haraka kiasi tunaweza mjeledi juu ya mipango katika PHP. Lakini ni kweli alikuwa iliyoundwa kutumiwa kwa ajili ya mtandao, na iliyoundwa kwa ajili ya Mtandao kwa maana kwamba taarifa juu hapa wakati juu ya faili Mimi kuanza na