>> [Musiikki soi]
>> DAVID J. MALAN: Okei.
Tämä on CS50.
Tämä on alku viikolla kahdeksan.
Ja ehkä muistatte, että jäimme Edellisen kerran katsot uusi kieli
kokonaan.
Itse asiassa, yksi, joka on melko kevyt ja se ei ole edes
ohjelmointikieli.
Se on kuvauskieli, jonka avulla meitä itse jäsentää ja tehdä web-sivuja.
Ja kun jotain muuta yhdessä this--
tai voit pian, jos et ole jo.
Aiomme käyttää Cascading Style Sheets tai CSS, joka
on toinen kieli joiden ominaisuudet ja arvot
että menee tehkäämme asioita, kuten vaihtaa väriä
ja sijainnin muuttaminen ja tällaisia ​​parannuksia.
Mutta tänään eteenpäin, alamme keskittyä tehokkaampia kielillä,
Varsinainen ohjelmointikieliä kuten PHP.
>> Joten PHP on ollut jo jonkin aikaa.
Ja kuten näet, se tarkoituksena on ensisijaisesti
varhaisessa vaiheessa todelliseen käyttää Web-kehitys
ja itse asiassa tuottaa web-sivuja.
Joten millaisia ominaisuuksia ei kieli
tarvitsevat voidakseen tehdä web sivuja dynaamisesti sen kanssa?
>> Toisin sanoen, jos haluat luoda sisältö dynamically-- kuten Facebookin
-uutissyöte, Joka muuttuu jatkuvasti, tai pikaviestejä, että pop-up aika
jotta time-- kuin mitä keskeinen osa toiminnallisuutta
tarvitset ohjelmointikielellä jotka voit dynaamisesti
tulostaa uudet tiedot näytölle?
>> Opiskelija: Code.
DAVID J. MALAN: Code.
OK.
Me otamme sen.
Hieman tarkempi.
Tarkoitan, että voisimme tehdä Tämän C, suoraan sanottuna.
Olisi kipua niskassa.
But-- on tämä sitoumus?
>> Opiskelija: Joo.
Muuttujia, ehkä?
DAVID J. MALAN: muuttujat.
OK, varmasti.
Muuttujat voivat varmasti auttaa meitä.
Ja jopa jotain yksinkertaisempaa.
Käytimme sitä aivan ensimmäinen ohjelman ensimmäinen päivä
kun me todella sanoi "Hello World".
>> Opiskelija: Tulosta.
>> DAVID J. MALAN: Tulosta, eikö?
Tulosta tai printf vuonna maailma C. Eli koko tämän ajan,
meillä on ollut meidän hävittäminen language-- C,
vuonna particular-- ja jopa Scratch että asia, että
voi tuottaa merkkijonoja.
>> No, jos HTML, kuten näimme viime viikolla, on vain koko joukko merkkijonoja
vaikkakin avoin suluissa ja kiinni kannattimet ja jonkinlainen riimi
ja syy siihen, No sitten voisimme todella
alkaa tuottaa verkkosivuja joko käsin kirjoittamalla ne ulos gedit
tai Microsoft Word, ja että matter-- meidän täytyy vain tekstieditori.
>> Tai voisimme kirjoittaa koodia, ehdotukseesi
aiemmin, että se antaa meille dynaamisesti HTML,
ja sitähän me aiomme alkaa tehdä PHP
ja lopulta jopa kieli nimeltään JavaScript,
on käyttää yhtä kieltä tuottaa toiselle.
Ja todellakin, tämä on mitä Facebook ja monet, monet muut sivustot
tehdä todella dynaamisesti näyttää uutta tietoa sinulle.
>> Aloitetaanpa kanssa this-- kryptinen näköinen linja, mutta yksi
se on oikeastaan ​​aika voimakas.
Tähän asti olemme käyttäneet C, joka on käännetty kieli.
Ja vain nopea recap-- käännetty kieli on mikä ominaisuus?
Sinun täytyy tietenkin kääntää se, mutta mitä se tarkoittaa?
Joo?
>> Opiskelija: Sen on oltava kootaan konekielelle.
>> DAVID J. MALAN: OK.
Se pitää koota konekielelle.
Joten otat lähdekoodia, joka on eräänlainen Englanti kaltainen.
Voit muuntaa että jotain alemman tason,
joka on lopulta kutsutaan objektin code-- 0: n ja 1: n.
Ja se on nuo 0: n ja 1: n että CPU, jollaisia ​​tapahtui Intel,
todella ymmärtää.
>> Nyt, PHP ja Python ja Ruby ja JavaScript ja rypäleterttuja muut
kieliä ei laadita kieliä, mutta tulkita kieliä,
mikä tarkoittaa vain kirjoittaa ne ja sitten et kääntää ne 0: n ja 1: n.
Sinulle eikä vain antaa niin kuin tulo jonkun toisen ohjelman,
kutsutaan tulkki.
Ja kyseisen henkilön Ohjelma on suunniteltu
ymmärtää, mitä kukin ja jokainen symboli Python tai PHP
tai Ruby tai useita Muut kielet tarkoittaa.
>> Ja niin kaikki me tarvitsemme jotain tällaista.
Joten itse asiassa, aion siirtyä laitteen
täällä, juuri mihinkään vanha ikkuna, ja olemme
menossa eteenpäin ja avoin tiedosto nimeltä, sanoa, hei.
Nyt aikaisemmin, olisin tallentanut Tässä vaikka tiedostopääte,
mutta aion tehdä jotain vielä yksinkertaisempaa täällä.
Aion mennä eteenpäin ja alkaa tämä tiedosto tällä arvoituksellinen syntaksin.
Joten "käyttäjä, bin, ENV, ympäristön, php. "
>> Tämä on vain yksi rivi koodia, joka on kerron minun käyttöjärjestelmä,
mennä löytää paikallinen ympäristö mitä se on,
missä PHP is-- interpreter-- ja mennä eteenpäin ja käyttää sitä tulkki
tulkita seuraava koodi.
Nyt tämä on eräänlainen ruma piirre PHP.
Mutta tällä kielellä tahansa kun kirjoittaa PHP,
sinun täytyy olla yksi näistä ruma PHP tunnisteet rajataan alussa
oman code-- <? php.
>> Mutta alla täällä, voin nyt tehdä jotain melko yksinkertainen, kuten printf Hei pilkulla
maailman kenoviiva n lähellä lainaus, lähellä suluissa.
Ja sitten vain hyvä toimenpide, aion
mennä eteenpäin ja sulje minun php tagi tänne
niin että kaikki näyttää kauniisti melko painettu.
>> Ja heti kun painan Tallenna, gedit on todella fiksu,
katsomaan, että ensimmäinen rivi ja ymmärtää, oh, olet kirjoittamassa PHP.
Saanen syntaksinkorostus sen värit
täällä niin, että se seisoo ulos hieman enemmän.
Mutta nyt aion mennä alas minun pääteikkunassa.
Minä zoomata.
>> Tämä ohjelma oli nimeltään "Hei," joten aion tehdä piste slash Hei,
mutta lupa evätään.
Ja bash.
Me itse asiassa kuullut, että juttu pari viikkoa sitten
yhteydessä Shellshock, yksi niistä vikoja.
>> Mutta Ei lupaa olemme nähneet ennen, ehkä eri yhteydessä.
Onko kukaan muistaa, miten saatat korjata jotain
Jos lupa evätään näin?
Mikä komento, ainakin?
>> Opiskelija: Chmod.
DAVID J. MALAN: Joo, chmod, muuttamiseksi tila tiedoston.
Ja saat kaikki tottuneempia Tässä ensi viikolla myöhemmin ongelma
asetettu.
Mutta nyt aion muuttaa tila ei luettavissa,
vaan antaa kaikille executeability etuoikeuksia, kyky
suorittaa tämän tiedoston.
Ja aion antaa että tiedosto hei.
>> Jos en nyt piste slash Hei Enter, katso, itse asiassa, minun ohjelma, hello world.
Ja mitä askel tein selvästi ohittaa kokonaan?
Kääntäminen.
Joten minä vain juoksin ohjelman yksinkertaisesti.
>> Ja se osoittautuu voit tehdä tämän kanssa paljon syntaksin muistuttaa C.
Anna minun mennä nykypäivän koodia, jonka esitin minun vhost hakemistoon
täällä, sillä todelliset syyt Tulemme takaisin.
Ja aion mennä, sanotaanko, olosuhteet 1.
>> Ja näet täällä, ensimmäinen ja kaikkea läjän kommentteja.
Mutta tämä on todella uudelleen luominen PHP
ohjelman teimme viikolla yksi nimeltään olosuhteet 1.c
missä tarkoituksessa elämää tämän ohjelman
on ilmeisesti kysyä käyttäjältä kokonaisluku
ja sitten tehdä joitakin pörröinen analyysi siitä, jolloin
sanot jos se on positiivinen tai negatiivinen tai nolla.
Ja minä asian esille vain siksi, paitsi ehkä yksi pieni yksityiskohta,
se voi erottaa niin kaukana C.
>> Mikä on yksi ominaisuus tässä, että ehkä hyppää ulos
klo sinulle hieman erilainen?
Ehkä kaksi asiaa.
Joo?
>> Opiskelija: Dollari merkki n?
>> DAVID J. MALAN: Joo.
Joten dollarin merkki n on läsnä.
Ja dollarin merkkejä, kuten näemme, aiomme
olla korjauksen alkuun minkään muuttujan PHP.
Se on sekä hyvä että bad-- hyvä että se on tavallaan vaikea nähdä, mitä on
muuttuja, huono, että se on vielä toinen asia kirjoittaa.
Ja siellä on yksi muiden asia ei meillä ole aivan
nähnyt, ainakin tällä oikeinkirjoitus. joo?
>> Opiskelija: Readline.
>> DAVID J. MALAN: Readline.
Readline emme nähneet, sinänsä, vuonna C, vaikka on olemassa jotain
samanlainen, mutta olemme käyttäneet getstring, ja tämä on sen vastine.
Joten jos menen tähän hakemiston, joka sattuu olemaan,
kuten Selitän nyt vähän minun vhost hakemisto ja minun lähde hakemistoon,
ja minä mennä eteenpäin ja tehdä piste slash conditions-- whoops-- piste slash
ehdot 1, näet, jälleen, Sama issue-- lupa evätään.
>> Joten haluaisin suurentaa ja tehdä chmod plus X ehdoista, piste slash olosuhteissa.
Haluaisin kokonaisluku, ota, 50.
Ja voisimme pelata tätä peli koko päivän.
Se tulee käyttäytyä täsmälleen kuten se teki viikolla yksi.
>> OK joten kaikki, että eri, paitsi ei vain, että hieman hieman syntaksin,
mutta huipulla, minä taas oli tätä linjaa, joka
saa minut luoda jotain, joka näyttää C ohjelma nimeltä Hei,
nimeltään ehdot 1.
Mutta se ei ole 0: n ja niitä Olen täytäntöönpanosta suoraan.
Se on sen sijaan käynnissä tämän tulkki, jonka nimi
sattuu olemaan identtinen kieltä.
Ohjelma on nimeltään PHP, ja minun koodi Alla rivi yksi on siirtynyt siihen.
>> Voimme tehdä toinen melko yksinkertainen Esimerkiksi mieleen jotain
teimme viikkoa sitten.
Tämäkin on eräänlainen mielivaltainen koodinpätkän
että ilmeisesti ei mitä kun käytät sitä?
Mikä tämä on menossa painoon, oletettavasti?
>> Joten aluksi linja 16, se on aio sanoa X on nyt 2, luultavasti.
% D on sama kuin $ i varten Printf.
Niin sitten se cubing, piste, piste, piste, linjassa 17.
Ja sitten linja 18 tulee näkyviin soittaa toiminto Kuutioituna.
Ja missä on Kuutioituna määritellään?
>> No, se näyttää linjassa 25, niin että ei ole kaikki niin erilaisia.
Olen saanut joitakin huomautuksia edellä sitä, mutta suurimmaksi osaksi,
se on melko yksinkertainen siirrettävyyttä tai muuntaminen
alkaen C-ohjelma PHP version.
Mutta on nyt pari eroja, jotka ehkä pitäisi hypätä pois.
Mitä muuta on erilainen siitä, miten voit voisi kirjoittaa tämän saman ohjelman C?
>> Opiskelija: [kuulumaton].
>> DAVID J. MALAN: Ei Ei prototyyppi ylös.
Joten PHP-- ja rehellisesti, paljon moderneja languages--
ovat paljon älykkäämpiä ja avulias kuin C-kääntäjää, että te
voi laittaa toiminto tänne, voit laittaa toiminnon tänne,
ja tulkki on menossa tehdä sinulle hyväksi lukemisen
koko tiedosto ennen kuin se päättää että jotkut toiminto ei ole olemassa.
Kiva parannuksia vuotta myöhemmin.
Mutta on myös jotain muu erilainen tai poissa täältä.
Joo?
>> Opiskelija: [kuulumaton].
DAVID J. MALAN: Emme tarvitse julistaa tyyppisiä muuttujia,
niin näemme ennen pitkää, että on olemassa erilaisia ​​PHP,
mutta sinun ei tarvitse määrittää niitä, joka myös on sekä hyviä että huonoja.
Ja siellä on yksi asia puuttuu.
>> Opiskelija: Ei ole kirjastoja.
>> DAVID J. MALAN: Ei ole kirjastoja.
OK, niin se on mukavaa.
Saamme paljon enemmän kättelyssä.
Joten siellä on todella paljon enemmän asioita kuin luulin olivat erilaisia.
Entä miten takaisin?
Mikä tuo on?
Sano se vielä kerran?
>> Opiskelija: Pointer.
>> DAVID J. MALAN: Ei viitteitä.
OK, ainakin tässä esimerkissä, ei.
Se on reilua.
Joten ei ole viitteitä PHP todella yleensä.
On jotain kutsutaan viittauksia, mutta emme viettää liian paljon aikaa siellä.
Ja mitä muuta?
>> Opiskelija: Main.
DAVID J. MALAN: Main.
Joten tämä oli Biggie Ajattelin.
Huomaa ei ole tärkein yhteyspiste.
Sinun tarvitsee vain aloittaa kirjoittamisen koodia.
Ja tämä on todella olemaan edullista
kun siirtyminen hetkellisesti todella käyttävät
tämä sama kieli web-pohjainen ohjelmointi, josta meillä
eivät halua olla vain yksi yhteyspiste.
Meidän kannattaa olla nippu URL, joukko erilaisia ​​tiedostoja
kaikki kun käyttäjä syöttää ja tuottaa tuotos.
>> Mutta tässä on hyvin masentavaa Esimerkiksi, että lupasin viime kerralla,
eli tässä kansiossa täällä, kirjoitusvirheet.
Joten tämän tiedoston oikeinkirjoituksen, josta me ei viettää liian paljon aikaa, on
olennaisesti porting-- P-O-R-T. Se on vain sana annetaan, kun vaikkapa
voit muuntaa yhden kielen toiseen manuaalisesti yleensä.
>> Tämä on siirtämiseen PC versio aapinen alkaen PSET 5.
Ja minä lähinnä yrittänyt muuntaa se rivi riviltä niin hyvin kuin pystyn.
Joten jos pidät tällaista asiaa, se todellisuudessa on syytä jossain vaiheessa
vetämällä ne molemmat rinta puolella ja nähdä, mitä on sama
ja mikä on erilaista.
Mutta he ovat tosi samankaltaisia.
Jos muistat mitä aapinen jopa näytti,
vaikka et ole täytyy muuttaa tämän tiedoston,
ihan samanlainen rakenteellisesti vain pari
muutoksia siellä täällä.
>> Joten tämä on vain sanoa, että se on melko suoraviivainen muuntaa aapinen
C: stä PHP.
Mutta sanakirjasta, siellä jotain vieläkin kiinnostavamman.
Anna minun mennä eteenpäin ja luoda oma dictionary.php tiedosto.
Joten hieman erilainen, että me kutsumme sitä Php sijasta .c.
Koska tämä on PHP-tiedosto, I do-- hieman annoyingly-- on
aloittaa tiedoston PHP tag niin.
Ja aion mennä eteenpäin ja määritellä muutamia toimintoja.
Toiminto nimeltään tarkistaa, mikä on aikoo ryhtyä sana kuin ennen.
Mutta tämä argumentti menossa on dollari
kirjaudu sillä olemme jälleen PHP.
Toinen toiminto dictionary.c oli kuormitus
ja kesti nimissä sanakirja, joten saan, että toiminto valmis menemään.
>> Toinen vuonna dictionary.c oli mitä?
Koko oli yksi mukavimmista niistä, klo ainakin jos säilytetään joitakin muuttujan ympärille.
joten koko juuri on palata muuttuja.
Ja sitten oli purkaa.
>> Niin siellä oli nämä neljä toiminnot Harjoitus 5
että sinun piti toteuttaa kanssa Joidenkin tietojen rakennetta tai rakenteita.
Joten lupasin, että PHP, voimme julistaa
hash table, esimerkiksi kaikki jotka helpommin.
Itse asiassa, jos haluan tiiviste, Olen juuri menossa mennä niin
ja siellä on minun tiiviste.
Ja se on huomata, masentavaa, että jäimme viime kerran.
Ja tiedätkö mitä, jos halusin muuttuja kokoa, hyvin,
tämä ei ole kaikki että eroaa C,
mutta aion mennä eteenpäin ja tehdä se.
Ja huomaa mitään tietotyyppiä.
Ja menen takaisin myöhemmin ja itse lisätä joitakin kommentteja täällä.
Mutta entä kuormitus?
>> Jos dollarin merkki sanakirja on nimi minun tiedosto
ja olen todella haluavat ladata sanoja tässä taulukossa nyt,
Voin itse tehdä jotain melko yksinkertaista.
One-- ja tämä on minorly annoying-- PHP,
sinun täytyy myös määrittää sisällä funktion jos
haluavat käyttää joitakin maailmanlaajuisia muuttuja, joka on määritelty ulkopuolella.
>> Mutta se ei ole erityisen mielenkiintoinen juuri nyt.
Mitä kiinnostavampi on tämä jokaisen rakentaa että mainitsin viime kerralla.
Ja käy ilmi, että PHP on funktio nimeltään tiedosto, jonka tarkoitus elämässä
on avata tiedosto ja lukea kaikki sen rivit array
ja toisaalta ne takaisin.
>> Joka on sanoa, että voin tehdä sanakirja niin että nyt tehokkaasti kun soitan tiedoston,
tämä tulee ojentaa minulle takaisin joukko sanoja tiedostosta.
Se ei ole kaikki, että hyvä.
Se on silti olemaan linja sanoja, jotain lineaarinen.
Mutta en voi mennä eteenpäin ja kerrata kullakin näistä sanoja käyttäen
että syntaksin näimme lyhyesti viime kerralla.
Ja näet sen enemmän tulevassa PSET.
>> Mutta nyt minulla on silmukka iteroimalla yli jokaisen sanan sanakirjasta.
Ja jokaisen iteraation, muistuttaa olen soittamalla nykyisen sanan "sana."
Ja kaikki se aikoo ryhtyä laittaa sanan sanakirjaan on
olemaan sana arvaus "totta."
Se on minun Lisää funktio.
Se on minun kuormafunktio minun sanakirja.
Nyt se on hieman huijata, koska Tiedätkö mitä, siellä on oikeastaan
kenoviivan n n lopussa sanat että pitäisi varmaan päästä eroon,
mutta se ei ole ongelma, koska PHP on toiminto nimeltään silppua, joka kirjaimellisesti
kyljykset pois yhden merkin aivan lopussa.
Joten mitään ongelmia.
Olemme menneet eteenpäin ja todella lyhennetty että juuri tämä.
Ja nyt pitäisi varmaan pitää kirjaa koosta, joten katsotaanpa ainakin tehdä this--
koko ++.
Voin tehdä sen niin kuin ennen.
Ja sitten tämä on todennäköisesti aio toimivat hienosti, joten paluu totta.
Tehty.
PSET 5.
>> [Naurua]
>> DAVID J. MALAN: OK.
Aiomme tehdä sen uudestaan seuraavaksi PSET, too.
Entä koko?
No, tämä toivottavasti on noin kuten odottaa viime kerralla,
vaikka minun täytyy tehdä tämän typerän globaali asia.
Se on vain esineen mistä kielen suunnittelussa.
>> Mutta tarkistus on hieman mielenkiintoisemman.
Joten jos olen läpäissyt dollarin allekirjoittaa sana, haluan ensin
haluavat saada että globaali muuttuja taulukossa.
Ja nyt jos haluan tarkistaa, jos sana on siellä,
Voin vain sanoa, jos se on totta, että Seuraavassa on asetettu pöytä,
sitten mennä eteenpäin ja paluu totta; muu, return false.
Tehty.
Toinen puoli PSET 5.
>> Okei, niin taas, olen leikkaus muutaman kulmat.
Oikeudenmukaisuus, pitäisi varmaan viettää muutama sekunti lisää
tästä täytäntöönpanosta.
Enkä varmaan saisi pilkata kaikkia tuntia laitat PSET niin paljon.
Joten strtolower on funktio.
Jotain vastaavaa existentialist C, ainakin merkkiä,
mutta PHP: n sai koko merkkijono versio.
>> Että menee väkisin kaiken pieniksi, jonka jotkut teistä
ehkä ovat tehneet muunna mitä olit ottamassa oman sanakirjan.
Ja nyt voit tehdä tämän C, too.
Tällä ei ole mitään tekemistä PHP.
>> Mutta aina, kun on Boolen ehto,
jotain linjalla 10 siellä, joka on vain
menossa on tosi tai väärä, ja jos muuta selvästi
on palaamassa totta vai tarua, pystyin yksinkertaisesti todella tehdä tämän seksikkäämpi
ja vain tehdä jotain tällaista.
Niin, että siellä on minun check-toiminto.
Oikea, jos Boolen palauttaa true tai false,
Haluan vain palauttaa sen heti.
>> Ja siellä on muutamia muita parannuksia Voisin tehdä täällä ja siellä.
Load-- purkaa, muuten se on tehty.
Mitään tekemistä siellä.
Koska kaikki muistin PHP ja monet muut kielet
johdetaan tosiasiallisesti sinulle.
Joten taas C, koska olet oppinut tuskallisesti,
jotain malloc tai calloc tai realloc, sinun täytyy vapauttaa itsesi.
Kaikki mitä Fopen, sinun täytyy FSulje, jotta voimavarat lopulta vapautuvat
ja työkaluja kuten Valgrind eivät huomaa, eivätkä valita,
mikä on hyvä asia ajaa niitä.
>> Mutta varmasti siellä on joitakin saalis, eikö?
Muuten, me tavallaan hukkaan läjän viikkoa.
Joten ei mitään useita syitä miksi me tavallaan tätä kehityskaari,
mutta on kompromissi.
Aivan, tämä on ollut temaattinen.
>> Mikä siis kompromissi täällä liikkuu, C: stä PHP?
Tuntuu kaikki voittaa toistaiseksi muuta kuin hieman rumuuden siellä tai täällä.
Joo.
Mikä tuo on?
>> Opiskelija: [kuulumaton] muistia.
DAVID J. MALAN: Speed.
OK.
No, minun nopeus oli melko nopea.
Oikea?
Mutta nopeus suorittamisen ohjelman?
OK, niin se on oikeudenmukainen piste.
>> Niin se tapahtuisi, minä etukäteen cued ylös sekä minun kokeilla ratkaisua, yksi
Minulla oli iso board oli try-pohjainen ratkaisu,
ja minulla on, että tämän hakemiston täällä.
Joten en hetken, voin mennä eteenpäin ja suorita tämä King James Bible,
enteriä.
Ja tämä on toivottavasti oikea täytäntöönpanon lopussa,
antaa minulle aikaa yhteensä 0,38 sekuntia, että
yksi jokseenkin mielivaltainen esimerkki.
>> Ja jos minä nyt mennä tähän Toinen pääteikkunassa
täällä missä minä ensin avannut gedit, anna minun mennä nykypäivän code-- joka taas
on tähän hakemistoon here-- ja anna minun mennä eteenpäin ja ajaa aapinen.
Joten vain olla selkeä, Tämä on PHP-versio.
Olen vain osoittaa sen päälle täällä.
>> Joten jos en aapinen on tilde CS50 PSET 5 tekstejä, Kuningas James, kirjoita.
Se on edelleen nopeampaa kuin kirjoittaminen se C, mutta koko ajan
on, ilmoitusta, 0,93, kun taas minun C-pohjainen toteutus oli 0,38.
Joten se on ei-triviaali ero.
>> Ja tämä on vain yksi tiedosto.
Jos sinun pitäisi ajaa kaksi ohjelmia vastaan ​​iso board
ja on koko joukko tuotantopanosten testattu, tämä olisi varmasti täsmää.
Ja jos meillä olisi vielä suurempi aineistoja, Tämäkin olisi lisätä jopa sitäkin.
Joten kyllä, maksamalla hinta nopeus on todellakin kyse.
Mitä muuta?
Joo?
>> Opiskelija: RAM-muistin määrä käyttää.
>> DAVID J. MALAN: määrä muistia käytössä.
Joten en antanut yhden sekunnin ajatteli kun kirjoitan tätä PHP
versio siitä, kuinka paljon muisti Olin käyttäen.
Olen täysin lykkäämällä että PHP itse ja kuka kirjoitti, että ohjelma.
Ja se voisi olla OK, mutta jos olen itse todella
välitä puristamalla niin paljon suorituskykyä pois minun ohjelma tai ulos minun verkkosivuilla
tai ulos tahansa työkalu Olen rakentaa, ehkä
PHP, todellakin, ei ole oikea kieli.
>> Ja itse asiassa, että on siihen, miksi Esimerkiksi monet web-servers--
todellinen ohjelmat tarjoilla web content--
ei ole kirjoitettu PHP tai Python tai Ruby.
Ne on kirjoitettu, kuten voit nyt tehdä PSET 6,
C niin, että voit puristaa jokainen vähän suorituskykyä irti
ja todella käyttää hienorakeisesta valvoa mitä
takana tapahtuu huppu eikä vain ottaa sitä
itsestäänselvyytenä jonkin korkeamman tason tietojen rakenne.
>> Mieti, kun kaikki, kuka PHP täytäntöön
että käsite hash table-- se on oikeastaan ​​enemmän
oikein kutsutaan assosiatiivinen array-- ei hänellä ole mitään käsitystä siitä, millaista
panosten aiot olla laskemisella rakenne?
Joten ilmeisesti ei, eikö?
Se on yleinen työkalu on työkalupakki, joka on
tarjotaan kaikille, jotka haluavat käyttää sitä, ja niin varmasti se
ei voida optimoida lopulta juuri sitä, mitä haluat tehdä.
>> Joten kauppa-offs-- kehityksen aikaa pitää eroavat, suorituskyky saattaa vaihdella,
monimutkaisuus tai muistin käyttö saattaa hieman poiketa.
Ja niin mitä löydät yhä on, että siellä on
olemaan erilainen työkaluja kaupan.
Ja itse asiassa super enemmistö ihmisten opinnäytetöitä tässä luokassa,
uskokaa tai älkää, C ei tule olevan oikea kieli.
>> Ja itse asiassa, yksi noutoruokapaikkoja lopulta mihinkään luokkaan näin
on saada sinut ajattelemaan, No, mitä sinun pitäisi vetää pois
hylly kun haluat ratkaisemaan joitakin ongelmia.
Ja todellakin, me ylittää tämän sillan jopa enemmän kuin me tarkastelemme lisää kieliä
jopa yli tänään.
>> Joten siirtyminen nyt ehkä tutumpi yhteydessä
käyttää kieltä, kuten PHP.
Se on jokseenkin yleistä käyttää osoitteessa komentoriviltä, ​​kirjoittaminen skriptit
kuten tein, mutta se on paljon, paljon yleisempää.
Ja se oli tarkoitus käyttää tiedostona, tyypillisesti päättyy
vuonna .php-- mutta se ei prerequisite--
että itse luoda web-sisältöä.
>> Joten anna minun mennä eteenpäin ja avata muutaman esimerkit valmisteltu etukäteen.
Ja nämä ovat oikeastaan ​​eräänlainen totta tarinoita, että yksi ensimmäisistä asioista
Minä olen tehnyt itseni jälkeen viimeistely CS50 ja ehkä, luulen,
CS51 vuotta sitten on minun kämppis ja minä autoimme
ajaa fuksi sisäiset urheiluohjelma, joka tuolloin,
oli fuksi rekisteröitymättä eri Urheilu täyttämällä paperinpala,
kuten sitä kutsuttiin, kävely pihan poikki Wigglesworth,
ja pudottamalla se joissakin Proctor ovi pudota.
Ja sitten hän menisi läpi niitä ja sitten itse lähetä meille sähköpostia manuaalisesti
että meillä oli rekisteröity joillekin urheilua.
>> Niin selvästi, mahdollisuus parantamisen.
Nykyään voi katkaista vain Google Lomakkeet, mutta takaisin seuraavana päivänä,
meillä oli todella päästä for-- tämä ei edes niin kauan ago-- päästä
ja ohjelmointi kieli, joka ei ole PHP.
Tuolloin se oli jotain kutsutaan Perl,
joka on mennyt pois muodista lähtien.
Mutta ajatus on sama.
>> Ja minä lähinnä istui kokeilla Port menee Perl versiot PHP,
mutta Full Disclaimer, ei anna mitään ajatellut estetiikkaa vielä.
Joten tässä on web-sivu.
Tämä tiedosto on.
Jos minä zoomata, sen ilmeisesti nimeltään froshim0.php
vain koska se on meidän ensimmäinen Esimerkiksi tässä sarjassa.
Ja huomaa, että se on mitä näyttää olla erittäin ruma HTML-lomakkeen,
mutta muoto on mielenkiintoinen koska se sallii
minulle antaa käyttäjä syöttää selaimeen.
>> Nyt viime kerralla, kun meillä oli lomake, jotta Kenelle me esittää meidän kyselyparametri,
jono parametri kuten sitä kutsuttiin?
Joten Google, eikö?
Olemme täysin punted ajatukseen tehdä mitään, että tulo.
>> Mutta tänään, alamme tuottaa tuotos.
Ja käyttäytyminen aion nähdä tässä aluksi on melko triviaali.
David, minä ruksata sukupuoli täällä, sanovat Matthews täällä.
En ole kapteeni.
Aion klikkaa Register.
Ja huomaa, että URL-osoite on muutettu rekisteröidä-0.php,
ja sitten on tämä ruma tekstin täällä.
Annoin ole ajatustakaan muotoilua tästä.
>> Mutta mikä on mielenkiintoista on, että kolme arvot ilmeisesti hyväksyttiin.
Tämä on PHP: n eräänlainen vastaa printf--
näemme, mitä se on todella kutsutaan vuonna bit-- joka vain tulostaa
mitä olet mennyt siihen.
Joten tämä viittaa siihen, että tällainen oli ainakin kolme kenttää siihen,
ja näit minut kirjoittaa niitä.
Yksi oli nimeni, yksi oli sukupuoli, yksi oli asuntola.
Ja kapteeni ei edes lähetetty palvelin, koska en tarkasta se.
>> Joten tämä on sanoa ilmeisesti, kun lähetät asioita verkossa,
ei ainoastaan ​​URL joskus change-- joskus ei.
Itse asiassa, tiedoston nimi on muuttunut mutta se mikä puuttuu URL
että näimme viime kerralla Googlen kanssa.
Joo?
>> Opiskelija: Ei query string
>> DAVID J. MALAN: Ei ole kyselymerkkijonossa.
Ei ole kysymysmerkki jotain.
Ei ole kysymysmerkki q on yhtä kuin kissat, kuten teimme viime kerralla.
Ja siellä varmasti ole kysymysmerkki nimi on sama
David tai asuntolan yhtä suuri Matthews, niin missä on, että kaikki menee?
>> No, anna minun mennä takaisin gedit täällä ja avata ensimmäinen näistä tiedostoista
minun vhost, paikallinen isäntä, julkiset hakemisto täällä ja mennä froshim0.
Joten käy ilmi, että lähes kaikki tämä sivu on vain HTML.
Ja tämä saattaa olla vieraita sinulle, mutta pian tulee lisää niin on PSET 6
ja PSET 7 ja PSET 8.
Mutta tämä on vain HTML-sivulle.
>> Ja mielenkiintoisia juttuja näyttää olevan täällä.
Lomake tag jonka toiminta määrite arvo on rekisterin 0.
Siksi, kun jätän Tässä se menee, että tiedosto.
Mutta menetelmä on erilainen today-- postitse.
Joten se kääntyy siellä on ainakin kahta menetelmää Webissä käytetty
lähettämään tietoja selaimen palvelimelle.
Get sen URL.
Post laittaa sen muualle.
Ja milloin ja miksi voisit todella haluavat verkkosivuilla
käyttää post sitten sen sijaan get, vain intuitiivisesti?
Tahansa verkkosivuilla.
Millaisia ​​tietoja olisi välitettävä vain päätellen nyt postitse vastakohtana
saada, jos olemme nähneet kaksi eroa?
Opiskelija: [kuulumaton] turvallinen.
DAVID J. MALAN: Jos haluat jotain olla turvallinen.
Joten saatat kirjoita salasana verkkosivustoon, luottokortti
verkkosivustoon olisi millaisia ​​nämä optimaalinen
Jos selain laittaa että arvo sisällä URL.
Miksi?
Näet sen, joka ei näyttävät olevan niin iso juttu,
mutta kertoimet ovat olet melko usein kävellä poissa tietokoneen tai käyttää tietokonetta
Labs, ja niin joku muu tai jopa kämppäkaveri
voisi helposti kävellä ylös ja katso että yksityisiä tietoja.
Kun lähetät sähköpostia verkon kautta, luultavasti
eivät halua, että tiedot lopetus ylös URL samoin.
Ja niin siellä on monia eri syitä miksi meidän kannattaa laittaa sen tänne.
Ja photos-- oikeassa, en voi edes aivan kuvitella, miltä teistä ottaa graafinen,
kuten JPEG, ja laita se URL.
Voisit tehdä sen.
On tapoja, jotka koodaavat sitä, mutta se on vain ole yksinkertaista niin.
>> Ilmoittaudu siis 0 on oikeastaan hyvin underwhelming.
Kaikki se sanoo kirjaimellisesti on tämä.
Tulostamistaan ​​sisällä joidenkin HTML-tunnisteet seuraavassa.
Minulla PHP tag täällä sisäkkäin ja tagi.
"Pre" tarkoittaa vain valmiiksi muotoiltua tekstiä, mono-välein, kuten kirjoituskoneen.
>> Printr on tulostaa rekursiivinen funktio.
Ja sitten on tämä mielenkiintoinen juttu täällä.
Ja me palaamme tähän koska siellä on muita,
mutta dollarin merkki alaviiva Post näyttää olevan
muuttujan PHP jossa mitään lähetät selaimella palvelimeen
saa säilyttää sinulle.
Ja näemme, miten saada aikaa että tieto ennen pitkää.
>> Mutta ensin, mennään takaisin hieman erilainen esimerkki.
Menemättä register-- tai pikemminkin, froshims1.php,
joka näyttää hieman erilaiselta.
Otin hieman vaivaa muotoilu,
vaikka se on vielä melko ruma.
Mutta aion mennä eteenpäin ja kirjoita "David" nyt.
Uros.
Me tarkistaa "kapteeni" tällä kertaa.
Teemme Matthews.
Ja rekisteröidy.
>> Ja tällä kertaa se sanoo, hm, ei oikeastaan.
Okei, niin mitä rekisteröityä 1?
Anna minun mennä avoimeen rekisteriin 1 and-- hm.
Okei, joten tämä on mielenkiintoinen, ja tämä
on ponnahduslauta nyt kohti lisää mielenkiintoisia ohjelmia.
>> Huomaa tämän tiedoston alusta on PHP tag sekä joitakin kommentteja.
Ja nämä ovat, nyt, häiriötekijä joten haluan vain päästä eroon näistä kommentteja
aivan kuten he ovat C. Ja väitän Tämän koodinpätkän kanssa kommentti
että tämä koodi on validointi jättämisestä.
>> No, käy ilmi, että muuttujia kuin dollarin merkki
korostaa virkaan nimeltään Super global.
Ne ovat kuin nämä erityistä yleismuuttujat
jotka ovat vain Omni-hetkellä käytettävissä omassa ohjelmassa.
Ja voit käyttää hakasulku merkintätapa indeksoida niihin ei numeroiden avulla
kuten 0, 1, 2, 3, mutta todellisia sanoja.
>> Joten voit ajatella dollarin merkki korostaa virkaan tavallaan hajautustaulun
että voisitte välittää avaimen, haku sana-hakasulkeissa,
ja se tulee antaa sinulle takaisin arvo, että käyttäjä todella tarjotaan.
PHP on funktio Empty että juuri
sanoo kyllä ​​tai ei, tämä muuttuja on tyhjä vai ei.
Meillä on näitä kaksinkertainen baarit, mikä tarkoittaa vain sitä tai, kuten C.
>> Joten käytännössä tämä linja 4 on vain sanomalla, jos käyttäjä ei antanut nimeä
tai ei anna sukupuoleen tai ei antaa asuntolan, mennä eteenpäin ja ohjata hänet
tai hänen tätä kautta linjan täällä.
Joten tämä on hieman arvoituksellinen, mutta tämä vain tarkoittaa kirjaimellisesti
palata tähän paikkaan, joten se Punts käyttäjä
takaisin missä hän tuli.
Mutta se on hieman kömpelö että olen kova koodattu sitä.
>> Mutta mitä jos tämä jos ehto ei on tosi?
Entä jos käyttäjä ei anna minulle hänen tai hänen nimensä ja asuntolan ja sukupuoli?
Että jos ehto ei ole menossa on tosi,
joten en osuma poistu linjassa 7.
Mitä siis tapahtuu?
Ja tämä on mitä mielenkiintoista PHP.
>> Voit pudottaa sisään ja ulos PHP tila, niin sanotusti.
Jos haluat viettää koodin suorittamiseen, voit avata ja sulkea PHP tag
ja laittaa koodia siellä kuten olen tehnyt täällä.
Heti kun suljet PHP tag, palvelin
on juuri menossa sylkemään mitä laittaa sinne.
Ja todellakin, tämä oli osa alkuperäisessä suunnittelussa PHP,
paremmin kuin pahassakin, oli tämä sekoittumisiin koodi ja markup
kieli.
Ja näemme, että tämä hyvin nopeasti lankeaa sotku.
Ja niin me teemme paremmin kuin tämä lopulta, mutta vain
huomaa, miten helposti olen itse pysty suorittamaan jotain logiikkaa.
>> Mutta silti hieman underwhelming.
Katsotaanpa avata versio kaksi Frosh infrastruktuurin, joka
ilmeisesti alistuu register2.php.
Joten tämä tiedosto on todella menossa näyttää lähes sama.
Aion mennä Frosh pikaviestejä 2.
Mutta Frosh infrastruktuurin 2, Katsotaan mitä tapahtuu.
>> David, klikkaa -valintapainike sitä kutsutaan; Matthews, ei kapteeni.
Rekisteröidy.
Olet rekisteröitynyt.
Ei oikeastaan.
Voi odottaa, me vain teimme että esimerkiksi ei me?
Okei, seisovat.
Teemme kolme.
Selvästikin jotain on noin tapahtuu Gmailin.
Pääsemme sinne.
>> Joten Frosh pikaviestejä 3 näyttää tältä.
Ole eroa.
Mutta kun teen David, mies, Matthews, ja rekisteröidä, tämä kolmas ja viimeinen versio
väittää, yksinkertaisesti, te rekisteröidään todella.
Se on tavallaan merkityksetön.
Mutta väitän tämän Kolmas ja viimeinen versio
Olen nyt rekonstruoida, mitä minun kämppis ja rakensin Frosh infrastruktuurin
Ohjelman vuotta sitten.
Ja se oli yksinkertainen.
Ei ollut tietokanta, Ei Excel.
Mutta mikä tärkeintä, Eikä ollut paperia
sillä mitä teimme tällä ohjelmalla oli todella sähköpostiin Proctor, joka
oli aiemmin vastaanottava näitä asioita kautta muotoja.
>> Ja ilmeisesti olemme ohjelmoitu tätä siten, että kun joku rekisterit,
John Harvardin tilisähköposteja proctor-- tai itse tässä tapauksessa,
John Harvard-- seuraavien text-- "Tämä henkilö vain rekisteröity."
Nimi on David, kapteeni on tyhjä; sukupuoli, mies; ja asuntolan, Matthews.
>> Niin mitä siellä tapahtui?
No, kyseinen tiedosto tästä on ilmeisesti register3.php.
Ja jos avaan tämän, näet Sekä voima koodia näin
ja myös, rehellisesti, turvattomuus järjestelmän, kuten sähköposti.
Olen juuri tehokkaasti teeskenteli olla John Harvard seuraavalla tavalla.
>> Olen avoin php tag ylös, joka sanoo vain tässä tulee joitakin PHP.
Tänne, kääntyy siellä kirjastot PHP.
Sinä vain ei tarvitse Include header-tiedostoja niin paljon.
Saat enemmän tiskiallas, niin sanotusti.
>> Mutta tällä kertaa linja 4, en haluavat Kirjastoon kutsutaan
PHP Mailer, joka on jotain voi asentaa ilmaiseksi monissa järjestelmissä.
Täällä olen validointi esittämisen juuri
tarkistamalla ei käyttäjä antaa minun nimi, sukupuoli, ja asuntolan.
Ja jos niin, mennä eteenpäin ja instanssia kirjeessä.
>> Voit ajatella tämän olevan rivi koodia, joka vain jakaa.
Se on kuin malloc, mutta se on vähän seksikkäämpi
että mainitset ole vain malloc ja joitakin yleisiä numero.
Sanot anna minulle yksi näistä, anna minulle uusi yksi näistä.
>> Ja jos olet ohjelmoitu Java tai C ++ tai muita kieliä,
Olet ehkä nähnyt tätä.
Mutta lyhyt se, jos tunne, tämä rivi
pannaan dollarin merkki mail erityinen struct kutsuttu
esine, joka on sisäänrakennettu email toiminnallisuutta.
Ja itse asiassa, huomaa ja vastaavat syntaksin.
>> Tämä ei ole osoitin, sinänsä.
PHP vain syntaksi on sama.
Tämä linja sanoo käyttöä SMTP-- Simple Mail Transfer
Protokolla, joka on vain protokollaa käytetään lähettää postia.
Tämä on täsmennetään käyttö Harvardin SMTP-palvelin, joka
on jossain täällä kampuksella.
>> Tämä sanoo mitä TCP portin numero puhua,
ja minä vain tajunnut, että ulos Google-hakuja tai kysymällä help desk.
Ja sitten koska Harvardin käyttää joitakin järjestelmän turvallisuutta koskevat postin server--
ainakin salata liikenteen välillä sinulle ja se,
vaikka kuka tahansa voi lähettää it-- Aion päälle TLS-protokollan
pitää tätä turvallista.
>> Mutta tämä on, jos asiat saada vähän pelottavaa.
Voin vain mielivaltaisesti sanoa, että olen jharvard,
ja voin vain mielivaltaisesti sähköpostiin itseäni täällä.
Ja sitten voin määrittää aihe tämän linjan täällä.
>> Ja tämä vain näyttää ruma, mutta se on vain joukko ketjuttamista.
Osoittautuu PHP on erittäin hyödyllinen symboli, kuten jotkut kielet, piste operaattori,
jotka vain kirjaimellisesti ketjuttaa string jälkeen merkkijono jälkeen merkkijono,
ja sinun ei tarvitse malloc tai kuva ulos koko merkkijonon pituus.
Sinä vain tehdä se.
Ja todellakin, koska olen ketjuttamalla kaikki nämä asiat näitä pisteitä,
siksi sähköpostia I lähetti näytti kuin se teki.
>> Ja sitten lopuksi täällä Lähetän postia.
Joten jos tämä on väärä, Olen juuri menossa kuolemaan,
joka on toiminto, joka vain tulostaa näyttöön noin virheilmoitus.
Mutta se on itse asiassa soittamalla lähetä toiminto.
Muuten, jos kaikki tämä ei onnistu, se ohjaa minut takaisin tänne.
>> Ja miksi näen, että Olen rekisteröitynyt todella?
No, se tapahtui täällä.
Joten en tuo tätä varten pari syytä.
>> Yksi, juuri näin jos rakentaa Joissakin verkkosivuilla opinnäytetyön
tai todelliseen maailmaan, tämä on Miten lähettää sähköpostia muistutuksia
asiakkaille tai tilaajille.
Näin lähetät salasana muistutuksia.
Näin voit lähettää ihmisiä viestejä että heillä on uusi Facebook-
Viestin vireillä tai jotain sellaista.
>> Mutta se myös puhuu Se, että tämä voisi
ovat olleet erittäin hyvin Davin tai joku muu.
Ja sanon tällainen hymyillen, koska olen
aivan varma, mitä tapahtuu läpi useita mielenne tässä vaiheessa.
Mutta tämä on yksi niistä niin kuin minä sanoa, ei kuten minä teen kaltaisia ​​asioita,
koska se on triviaalia väärentää sähköposteja näin.
Mutta kuten olet saattanut nähdä tai lukea Crimson,
myöhään se on myös melko triviaali ihmisiä
tarvittaessa jäljittää takaisin jossain alkuperää.
Ja kysy aikaa, ehkä klo CS50 lounas miten haluan ensin
Tutustuin hyvin tarkasti lähes ed hallituksessa monta vuotta
sitten kun huomasin, miten internet toimi.
Joten missään case-- hieman jälkeen ed hallituksessa teki.
>> Joten joka tapauksessa, on koko joukko super global,
kuten niitä kutsutaan täällä, joista yksi me saw-- dollarin merkki alaviiva postitse.
On vastine nimeltään GET, mikä on kun kamaa URL
päätyy menossa.
Ja siellä on koko joukko muita, too-- istunto ja palvelimen ja evästeen.
Tulemme takaisin cookie joku toinen kerta,
mutta istunto on eräänlainen jäähtyä koska oikeus now-- asti now--
kaikki olemme tehneet web-selaimella on eräänlainen kansalaisuudettomia, niin sanoakseni.
Voin klikkaa ympärillä, pääsy tiedostoja palvelimelle, jotain
tapahtuu ruudulla, mutta Sitten yhteys sulkeutuu.
Internet Explorer tai Firefox-kuvake pysähtyy kehruu
ja juuri nähdä, mitä että web-sivu sisältää.
>> Joten HTTP on kansalaisuudeton, että kun se muodostaa yhteyden,
saa joitakin tietoja, se on siinä.
Ei enää yhteyttä, toisin kuin Skype, toisin kuin FaceTime, toisin kuin Gchat, joka
ylläpitää tasaisen yhteyttä palvelimeen.
Internet on pohjimmiltaan katkeaa, vaikka me
katso ennen pitkää miten Voimme simuloida asioita
kuten Facebook chat ja Gchat, joka ylläpitää illusion--
tai itse tehdä yllä jatkuvaa yhteyttä käyttäen
modernia tekniikkaa.
>> Mutta jos menen, sanoa, counter.php, tämä on toinen yksinkertainen esimerkki,
kuten tulemme näkemään, että tällä hetkellä ajattelee Kävin sivustolla nolla kertaa.
Mutta jos en yksinkertaisesti lataa sivu, se jotenkin tietää olin täällä ennen.
Jos minä ladata uudelleen, se tietää olin täällä ennen.
Ja uudestaan ​​ja uudestaan ​​ja uudestaan ​​ja uudestaan.
>> Joten siellä on plus-plussing tekeillä, mutta huomautus
pikku juttu pyörii yhä niin hetkeksi ylös ja sitten katkaisee,
niin se ei ole kuin minulla on vakio yhteyden minun laite.
No, jos menen counter.php, huomaa, miten helppoa se on.
Haluan ensin soittaa tämä erityinen toiminto, että me pian
aloitat itsestäänselvyytenä kutsutaan istunnon alkua.
Aloita istunto.
>> Ja istunto on vastedes vain olemaan ämpäri, kuten ostoksilla
ostoskoriin, jossa voit laittaa arvot ja eräänlainen luottaa ohjelmoijana
että he aikovat olla täällä, kun että käyttäjä joutuu back-- toinen
myöhemmin, tunti myöhemmin, jopa vuotta myöhemmin, niin kauan kuin hän ei tyhjennä
heidän evästeet, koska me lopulta nähdä.
Ja nyt minulla on vain jos ehto täällä.
Joten jos seuraavat keskeiset, nimeltään laskuri, asetetaan sisälle
tämän super global-- tämä hash pöytä, jos will-- kutsutaan istuntoon,
sitten mennä eteenpäin ja napata arvo session-- ajatella
Tämän kuten ostoksilla cart-- ja tallentaa sen
väliaikaiseen muuttuja nimeltä laskuri.
>> Muuten, jos tämä arvo laskuri oli ei asetettu ns ostoskoria,
vain alustaa sen 0.
Lopuksi tänne, mene ja laita takaisin osaksi ostoskärryt tai istunnon
arvo laskuri +1.
Joten näyttää siltä, ​​että tämä erikoiskonttia here--
joka, jälleen, on yksi näistä liittyvän taulukot, array että voit indeksi
sanoiksi sijasta numbers-- ratkea, kun käyttäjä menee pois.
Jälleen Menen takaisin sivun nyt.
Se on ollut noin minuutti.
Mutta se muistaa, että olen ollut täällä 19 kertaa ennen.
Tämä on minun 20-vierailu.
>> Ja niin tämä tulee olemaan avain täytäntöönpanosta tahansa sivuston, joka muistaa
että olet kirjautunut sisään, että laitat jotain kirjaimellinen ostoskoriisi
ostaa tai että sinulla on viestien määrän vireillä.
Milloin haluat muista tietoja,
näemme, että PHP, kuten useita muita kieliä,
tarjoaa meille tämän illuusion tilasta vaikka, kuten voit nähdä PSET 6,
kuin teet HTTP-pyyntöjen asiakkaalta palvelimelle, se on siinä.
Kun saat takaisin, että vastaus, ei ole mitään muuta
tulossa takaisin palvelimelta oletuksena.
Mutta saa nähdä miten kiertää se.
>> No nyt yritetään puhdista jopa hieman.
Olemme nähneet muutamia erilaisia ​​esimerkkejä olemassa.
Niin, ja kuten varaavat niitä tuttuja tai tuntemattomia,
siitä syystä, että Frosh pikaviestejä esimerkki meni
katsomasta todella ruma slightly-- hyvin,
vielä ugly-- hieman vähemmän ruma mutta silti ruma
johtuu siitä, että jos katsomme lähdekoodia täällä,
käy ilmi, että minulla on tämä aivan tiedoston alkuun.
>> Osoittautuu, että bootstrap on yksi monista vapaasti saatavilla kirjastoissa siellä
että olemassa ei ohjelmointikieliä aina, mutta CSS tai JavaScript
tai HTML tai useita kieliä.
>> Ja nämä ihmiset here-- alunperin tuli ulos
on Twitter-- vain koko joukko tyylejä.
Se on valtava tiedosto täällä, että joku kirjoitti,
tai jonkun kirjoitti, ajan mittaan määrittelee värit ja muotoilu
ja vaikka mitä, jotta voin Tällainen lainata niiden syntaksin
ja ei tarvitse selvittää Miten lay out my muodossa.
Tämä on myös minified niin, että tietokone voi
ymmärtää sen, mutta ei väistämättä ihmisen.
Niin, että miksi juuri stilisointi on muuttunut.
>> Mutta katsotaanpa nyt tehdä paremmin kannalta suunnittelu,
sillä jos pysymme alas tämä tie liian pitkä,
Koodin tulee sotkuiseksi ja Messier.
Joten keskittyä näitä esimerkkejä tästä.
Viimeksi tänään.
>> Joten tässä on super yksinkertainen versio 1.0 CS50: n verkkosivuilla.
Se on vain linkkejä luentoja ja oppimäärän,
ja se käyttää että unordered lista tag-- UL tag että käytimme viime kerralla.
Ja jos itse, jos en avata View Page Source,
näet, että tämä on todella, todella yksinkertainen HTML.
Ja itse asiassa, vaikka tämä on PHP-tiedosto alla huppu,
se on silti vain sylkeminen ainoastaan ​​HTML nyt.
>> Joten jos klikkaan Luennot, näemme tämän tapahtua.
Ja jos klikkaan viikolla nolla, me näemme tämän.
Ja jos klikkaan Keskiviikkona näemme tässä.
Ja tämä oli ilmeisesti PDF diojen tuosta päivästä.
Kaikki olen tehnyt on yhteys ankkuri tag tähän URL täällä.
>> Joten tämä on vain sanoa, tämä on melko yksinkertainen versio CS50: n verkkosivuilla.
Katsotaanpa, miten se toteutetaan.
Jos menen mvc0 hakemistoon, näemme muutamia tiedostoja.
Yksi on README, joten jos osa tästä on liian nopea,
voit vain penkoa enemmän rauhassa myöhemmin.
Ja ilmoituksen tässä index.php tiedosto.
Osoittautuu, että jos itse, ihmisen,
eivät määritä lopullinen nimi URL, web-palvelin yleensä
päättelee oletus nimi sinulle.
Indeksi piste jotain on yleensä oletuksena.
>> Joten siksi hetki sitten kun kävin tätä URL täällä,
Ei tiedoston nimi, ei tiedosto laajennus, ei kauden URL.
Se vain tiesi jotenkin maagisesti etsiä index.php.
Se on vain sopimusta.
Voisi kutsua mitään.
>> Joten jos minä nyt mennä index.php, näet
että indeed-- katsotaanpa päästä eroon kommentit
täällä, koska siellä oikeastaan mitään mielenkiintoista it--
tämä on vain kova koodattu HTML.
Joten se johdonmukaista, kuitenkin on minun väite
että voit sekoittamatta HTML ja PHP.
Ei ole todellista ohjelmointi logiikka tässä.
>> Ja muut tiedostot ovat melko paljon yhtä mielenkiinnoton.
Se on vain kovakoodatuilla viikko yksi täällä viikko yhden metrin ja viikko yksi w,
Maanantain ja keskiviikon.
Ja sitten jos minä avata viikolla nolla, huomaa se on lähes identtinen.
>> Ja se on tavallaan avain takeaway.
Huomaa kuinka tarpeeton tämä on.
Nämä tiedostot tuskin muuttuu, mutta en veti yksi näistä copy / paste työpaikkaa
jossa Otin yhden file-- oletettavasti viikolla zero-- kopioit sen
kun viikko yksi tuli noin, ja viritetty muutamia arvoja.
Meidän pitäisi varmaan pystyä tehdä paremmin kuin tämä.
>> Mennäänpä takaisin jopa MVC ja mennä versio yksi.
Ja huomaa, minulla muutamia tiedostoja, koska mitä
oli yhteinen kaikille kyseisten tiedostojen vain hetki ago-- jos menen takaisin versioon 0,
Mennään takaisin indeksiin, ja juuri postulate--
kun pääsen eroon comments-- mikä osa tästä sivusta
on oletettavasti jokainen tiedostoni?
Vain soittaa sitä.
Mitkä linjat ovat päällekkäisiä luultavasti kaikilla näistä sivuista?
Joo?
>> Opiskelija: [kuulumaton].
>> DAVID J. MALAN: 1 kautta 9.
Kyllä, ehdottomasti.
1: stä 9, paitsi ehkä 8 muuttuu hieman, koska CS50
tulee luentoja tai viikko nolla tai jotain.
Mutta lähes identtiset.
Joten kaikki jutut on vain Tällainen kopioida ja liittää.
Ja siellä on pari muut linjat voin ajatella
Tällaisia ​​ovat todennäköisesti sama kaikissa tiedostot.
>> Opiskelija: 12 ja 13.
DAVID J. MALAN: Joo.
Toki, 12, 13, ja 14 luultavasti, vain siksi, mielenkiintoisia juttuja
tapahtuu riveillä 11 ja 10, joten näyttäisi siltä.
Joten katsokaamme versio 1, joka yrittää parantaa tätä.
Versiossa 1 Tämän MVC example-- jaamme selittää, mitä MVC keinoja moment--
jos menen indeksi, se sellainen näyttää vähän sekava nyt.
Se ei ole aivan niin yksinkertaista kuin ennen.
>> Mutta kun alkaa lue se huolellisesti, se on
melko suoraviivaista, mitä se tekee.
Ilmeisesti linja 1 ja line 8 korvanneen
kaikki jutut juuri identified-- vaikka vain hyvä toimenpide,
Jätin ÜLS siellä vain siinä tapauksessa joissakin päivää ei ole lista asioista.
Ja niin vaatiessa on ikään kuin punta sisällyttää C. Se kopioi ja tahnat
sisältö tehokkaasti täällä tähän tiedostoon.
>> Joten header.php, kun Tästä voisi päätellä sen nimi,
tulee olemaan otsikkoon sivulla.
Se on tavallaan orvoksi täällä.
Se on vain ylhäältä, mutta ei ole enemmän sisältöä alla.
>> Ja jos katson footer välin, joka oli toinen tiedosto mentioned--
Tämä yksi on vielä vähemmän kiinnostavaa, mutta jälleen kerran, se on yhteistä kaiken.
Joten tämä on footer.
Tämä on otsikko.
Tämä on tiedosto, joka on muuttuvat, joten miksi ei
yritä tekijä ulos yhtenäisyyttä nämä kaksi riviä täällä?
>> Mutta voimme puhdistaa tämän jopa hieman pidemmälle.
Aion mennä eteenpäin ja avata versio kaksi jossa
näemme, että on olemassa uusi tiedosto, helpers.php.
Saa nähdä, mitä se on tällä hetkellä.
Mennään indeksiin, koska tulokohdan kuin ennen.
>> Ja nyt huomaa olen edellyttävät helpers.php, ei ylä- tai alatunnisteen.
Mutta auttajia on ikään kuin helpers.c ja helpers.h alkaen PSET 2
tai PSET 3 kauan sitten, kun itse ei etsiä ja löytää siitä PSET,
ja teillä oli kaikki koodi lajittelu ja etsimällä erilliseen tiedostoon.
Sitähän täällä tapahtuu.
>> Ja nyt linja 3 näyttää hieman erilaiselta.
Ja se on vain yksi rivi.
Jotta tämä vieläkin kirkas, voisin vain
eivät tämän olevan tyylinmukaiset kaiken muun olemme tehneet.
Mutta se ei oikeastaan Toimintatavan muuttaminen.
Se on vain yksi rivi todellista koodia.
>> Ilmeisesti siellä on toiminto jonnekin nimeltään tehdä otsikon,
ja tämä on, jos asiat saada melko voimakas.
Huomaa, että sisällä sen suluissa mieltä muut pala syntaksin?
Se on varmaan vähän vaikea sanoa, mutta huomaa there's-- Laitan joitakin valkoinen
tilaa.
On hakasuluissa.
>> Ja hakasulkeita näimme vähän sitten yhteydessä assosiatiivisia taulukoita,
jotka ovat, jälleen, kuten hash taulukoita.
Ja jos luulet, nyt C, argumenttien järjestystä osaksi toiminto
on aina oltava sama.
Sinun täytyy muistaa, mitä Tilauksen is-- x, y, z tai z, y, x--
ja sinun täytyy aina tarjota heille samassa järjestyksessä tai etsiä niitä
Jos olet unohtanut.
>> Mutta tämä näyttää olevan fiksu tapa kulkee mielivaltaisen avaimen arvo
paria jolloin otsikko on nimi argumentti tässä tapauksessa
ja CS50 on sen arvo.
Ja se, että minulla on Näiden hakasulkeita
tarkoittaa tässä, että voisin myös kulkea jotain
kuin viikko on 1 tai 0, 2 tai 3.
Joten olemme parametrisoida tämä toiminto siten,
että se voi kestää useita tuloja, mutta nyt se on vain yksi.
>> Jos minä nyt mennä helpers.php, huomaa, mitä se tekee.
Tämä on vähän uusia toimintoja,
mutta nyt vain ottaa uskon, että tämä on
syntaksi, jonka avulla määritellä funktio PHP.
Voit kirjaimellisesti sanoa toiminto.
Et määritä paluu tyyppi, ja se on johdonmukainen
vaihtelevalla yksityiskohtaisesti aikaisemmin jos et todella voimakkaasti kirjoita.
>> Tämä vain täsmennetään että, oletuksena, tämä
vie assosiatiivinen array argumenttina.
Ja tiedätkö mitä?
Jos käyttäjä ei läpäise yhtä vuonna, olettaa oletusarvo.
>> Tämä on ominaisuus, että C ei ole meille, mikä on mukavaa, koska nyt
tietoja, vaikka älä anna sitä mitään,
tulee olemaan array mutta tyhjän.
Ja niin syrjään, ote vain tekee jotain funky
jos se vie kaikki avaimet tästä assosiatiivinen joukko, kaikki asiat
voisit laittaa kulmasulkeisiin ja luo muuttujat pois niistä
jotta voimme lopulta olla pääsy heille footet.php ja header.php.
Se on hieman abstrakti, Saanen huomauttaa asiasta.
>> Vuonna index.php, huomaa, että olen ohimennen keskeinen arvo pari otsikko
joiden arvo on CS50.
Jos minä nyt katsoa helpers.php, huomaa, että RenderHeader
on talteen, että tiedot, jotka olen ohimennen vuonna, ja sitten vaativat header.php.
Mitä olen tehnyt on eräänlainen köyhän miehen täytäntöönpano nyt seuraavista.
>> Jos minä avata header.php, ilmoittaa, että minulla ei ole enää kova
koodattu sana CS50 tällä otsikkotiedostoon.
Olen koonnut tähän tosin atrociously nimetty toiminto, HTML erityistä merkkiä,
siellä.
Mutta huomaa, mitä olen tehnyt.
Minulla auki HTML.
Sitten on avoin pää ja avoin otsikko.
>> Ja sitten sisällä otsikon avoin ja sulje tunnisteet, minulla on hieman PHP.
Ja tämä on mukavaa, mutta syntaksin, mikä tarkoittaa vain kaiku ulos.
Se tarkoittaa kirjaimellisesti this-- echo following--
mutta tämä on seksikkäämpi kirjoittaa.
Echo ulos otsikko joka on ohitettu.
>> Mutta mitä mieltä olette HTML erityistä nieriä on kyse,
varsinkin jos sinulla on Joissakin ennen HTML kokemusta?
Mitä merkkejä voi olla vaarallista kulkea sivulle
jos olet dynaamisesti tuottavan Web-sivun koodia näin?
Anna minun mennä tähän tiedostoon, versio kaksi, ja katso, jos en voi aiheuttaa tämän.
>> Versio kaksi on tämä.
Ja huomaa kaiken on hieno, toimii hyvin.
Mutta kai mennä index.php ja Olen täsmentänyt, että otsikko sivuni
ei ole CS50.
On alkusulkumerkki kirjoitus hälytys Hei maailma, lähellä heittomerkki,
sulje suluissa, puolipiste, alkusulkumerkki, slash script.
>> Script, kuten tulemme lopulta nähdä, on tunniste
että voit käyttää toisen ohjelmointikieli nimeltään
JavaScript sisällä web-sivun.
Ja nyt huomaa logiikkaa täällä.
Tässä on avain nimeltään otsikko.
Tässä on se hullua pitkä arvo nyt.
>> Mutta jos menen auttajia sivu- tai pikemminkin, kansilehti,
Soitan tämän toiminnon kyseisen nimikkeen ensin.
Joten jos minä nyt päivittää tämän sivun, olen nähdä tämän, mikä näyttää naurettavalta,
mutta se on turvallista.
Se vain näyttää tyhmä.
>> Sen sijaan voidaan ajatella Olin unohtanut tämän.
Ja sanani, nollasta poikkeava numero teistä unohda tehdä tätä
ja saat joitakin uutteria Opiskelija tai ystävä tulossa
sinulle CS50 oikeudenmukainen tai nimettömänä yöllä tönäisi noin sivustollesi
ja lähinnä suonensisäisten koodi sinun tietämättäsi sivustosi
jotenkin.
>> Koska jos en yksinkertaisesti sylkenyt ulos otsikko täällä ja otsikko
there-- hyvin, jos otsikko kirjaimellisesti näyttää tältä ja PHP
kuten kieli, joka voi sylkeä pois muita kieliä tekstiä,
tämä on kirjaimellisesti menossa korvata tämän tunnisteen kanssa,
Tietenkin, mitä laitoin muualla.
>> Joten jos en nyt mene tänne ja lataa jälkeen irrottamalla ne turvalaitteista,
nyt olen hello world täällä.
Nyt se ei ole kaikki, että suuri on käsitellä, mutta voit tehdä jotain
hieman ilkeä täällä, kuten siellä
muut tags-- kuten tulemme näkemään, kun vietämme enemmän aikaa JavaScript-- kuten sijainti
dot href saa, lainaus, lainaus, HTTP business.com, mutta päinvastaiseen
alkaen toinen päivä.
Ja nyt voit aiheuttaa web sivu itse mennä heti
tähän sivuun täällä.
>> Ja todella, en halua edes mennä business.com
koska en halua tietää, mitä se on.
Mutta tämäkin laukaisee koodi voidaan injektoida tällä sivulla.
Joten tämä on vain sanoa, että vaikka me käyttöön Super varhain joissakin
Näiden monimutkaisempia rakenteita, se on kaikki kohti loppua ja varmista
että koodi ei ole hyödynnettävissä.
>> Joten nyt kolmas versio täällä.
Se on tulossa hieman harrastaja.
En todellakaan like-- Anal puolella minua
oli saada hieman harmissaan Se, että olin toiminto nimeltään
RenderHeader ja RenderFooter jotka olivat lähes identtiset.
Niin se tapahtui minulle, miksi ei Olen parametroimiseksi nämä toiminnot
otetaan vain yksi nimeltään renderöinti, on se otettava toinen argumentti
kuten mallin nimi, lopullinen jotta render-- joko ylä- tai alatunnisteen?
Ja sitten mahdollisesti, jos haluan kulkemaan joitakin keskeisiä arvopareja
kuten minä teen otsikko header mutta ei footer,
Voisin tehdä sen.
>> Joten nyt jos menen helpers.php, se on hieman monimutkaisempi.
Ja minä heiluttaa käsiäni yksityiskohtia, mutta se on vain yksi toiminto.
Niin, että askel kohti parempaa suunnittelua.
>> Voimme ottaa tämän askeleen pidemmälle.
Jos menen minun neljäs versio, huomaa nyt
että olen tekemässä jotain vieläkin sellainen arvoituksellinen.
Ja tiedän, että tämä on paljon imeä kerralla,
mutta me vain eräänlainen puhdistaa asioita.
Nyt Laitan auttajiani tiedosto kansio nimeltä
includes-- vain mielivaltainen nimi missä haluan laittaa tavaraa
että haluan include-- ja sitten loput tästä on sama.
>> Mutta jos katson nyt gedit, ilmoittaa, että olen päässyt eroon
Kaikkien näiden muiden tiedostojen ja olen muutti niitä, esimerkiksi osaksi täällä.
Ja sitten malleja, Minulla on täällä myös.
Ja niin tämä on kaikki nyt kohti askel käyttää paljon paremman suunnittelun malli.
Ja olemme hyvin nopeasti tulee siirtymään pois
PHP: n oletuksena toiminnallisuus, jonka aloitimme täällä,
josta juuri sekoittamatta PHP, ja HTML ja CSS,
ja te vain sylkäistä se ulos ja mennä sinulle tapa.
Se ei tule olemaan kovin ylläpidettävissä.
Aivan kuten C, aloimme käyttää useita tiedostoja ja useita toimintoja
ja factoring asioita ulos.
Teemme sama täällä.
Ja itse asiassa viides ja viimeinen versio täällä, tein yhden asian.
Voit myös käyttää piste piste, joka, uudelleen, on vain emohakemisto.
Vieläkin turvallisuus tajuissaan, koska jos katson kuuntelu
täällä viides ja viimeinen versio, ilmoitus että minulla on yksi hakemisto täällä kutsutaan
julkisia, ja sitten samalla tasolla, niin sanotusti,
Minulla sisältää ja malleja ja sitten, että tekstitiedosto readme.
>> Ja syy olen jäsennelty se tuntui this-- ja niin monet web
isännät, erityisesti 5 dollaria kuukausi niistä tai $ 10 kuukautta ystävät,
jos olet joskus ollut jokin näistä services-- mitä niin monet niistä
on ne vain odottavat sinun dumpata kaikki tiedostot yhdeksi hakemistoon,
kuten teimme jo kanssa Tässä ensimmäinen esimerkki.
>> Mutta heti kun alkaa rakentaa lisää kehittyneitä sivustoja, jotka vain tallentaa
tietoja välität ja tiedostot välitä, itse järjestää asioita
oikein ja lisää turvallisuutta tajunta mielessä voi
alamme puolustaa vastaan ​​kaikki ystävät
että sinulla on joko tai ulkopuolella tämän luokan, joka
heti kun alkaa tehdä ohjelmat itsesi verkossa,
alatte poiminta teitä ja niitä.
>> Ja niin me tarkastelemme lopulta tämä muotoilu.
Tämä on vain kuva joka kuvaa seuraava.
Aiomme laittaa kaikki meidän ohjelmointi logiikka yhden tai useampia tiedostoja,
ja me aiomme vain aloittaa kutsuvan nämä ohjaimet.
Siellä aivot nettisivujemme todellisuudessa ovat.
Sitten me aiomme on näkemyksiä, ja näkymät
ovat niin yksinkertaisia ​​kuin vain erillisiä files-- kutsutaan malleja, usein.
He vain ovat estetiikka sivuni
mitä haluan sivu näyttää like-- värit ja asettelu
ja kannat kaikki muuttujat.
>> Ja sitten mielenkiintoisempi että me lopulta päästä
on malli, joka tulee olemaan vain sana me isku muihin teknologioihin
että tuomme kuva, kuten todelliset tietokannat,
niin, että kun haluat tallentaa tietoa,
et lähetä sähköpostia teidän Proctor tai itsellesi,
olet itse tallentaa sen tietokantaan käyttäen toista kieltä kutsutaan SQL.
Ja niin me lähdemme täältä tänään poimia tällä keskiviikkona
ja käyttöön tietokantoja sitten.
>> [Musiikki soi]