[Musiikkia] DAVID MALAN: Tämä on CS50, ja tämä on alku viikolla kahdeksan. Ja olemme niin innoissaan toivottaa takaisin, iso yllätys, CS50 oma Ramon Galvan, nouseva vanhempi, joka on ollut menojen viime kuukausien heinäkuusta lähtien LA, Hollywood, kirjaimellisesti työstää upouusi TV näytä kutsutaan Colony, luoja, joka on todella Harvard aluna itse. Ja niin olemme hyvin innoissani tästä debyytti USA Network tammikuussa. Joten pysy kuulolla että sekä enemmän Ramon varten tulevina viikkoina. Tiedä nyt, että loppu on lähellä. Ja mitä tämä tarkoittaa, että siellä ei ole kaikki, että paljon jäljellä CS50, valitettavasti. Meillä on vain kolme ongelma sarjaa left-- siellä Harjoitus six-- joka on kädet nyt tai lähitulevaisuudessa, myöhemmin tänä week-- on tarkoitus kuroa meidän maailmoissa komentoriviltä, ​​jossa olemme käyttäneet suurimman osan ajastamme käyttämällä C, ja maailman web ohjelmointi. No, näet paljon ideoita lainattu komentoriviltä työtä, mutta myös paljon uutta ja mielenkiintoisia ideoita että myös olemaan Germane varten mobiilisovelluksia ja teknologian, yleisemmin, jonka kanssa kaverit ovat kaikki tuttuja nykyään tietokoneet ja puhelimet ja vastaavat. Joten sinun toteuttaa ei web-sivun, tai verkkosivuston sinänsä, mutta todellinen web-palvelin. Voit kirjoittaa loput web-palvelimen kirjoitettu C, jonka elämän tarkoitus on vastaanottaa HTTP-pyyntöjä, ne virtuaalinen kirjekuoret me vatvoa noin, ja itse asiassa vastata joko jotkut staattinen content-- kuin piste HTML tiedosto, tai piste JPEG tai muut tiedostojen määrän, tai jopa PHP-tiedosto, jossa Web- palvelin aikoo tulkita, että PHP koodi ja sylkemään tulokset. Nyt olemme toimittaneet teille melko vähän puitteet varten it-- todellakin jakelu koodi ongelma asettaa kuusi on yli 1000 riviä pitkä, paljon joka on kommentteja, olla fair-- mutta tämä on todella tarkoitti olla tilaisuus saada kädet likainen sukellus osaksi melko suuri projekti että olemme hyvin erityisesti veistetty kappaletta sinulle, niin että todella, kun poistut CS50 ja kirjoita reaalimaailman ohjelmoinnin ja haluavat harrastella mikä tahansa useita hankkeita, sinulla on paljon suurempi Comfort noudetaan lähde koodi, jotkut avoimen lähdekoodin hankkeen Webissä, ja sukeltaminen ja tehdä muutokset parhaaksi näet. Harjoitus seitsemän tulee olemaan noin tehdä oma web-pohjainen sovellus joka vie dynamisoi ja tuottaa dynaamisen lähtö muodossa of etrade.com kaltainen verkkosivuilla. Ja ongelma asetettu kahdeksan keskitytään vielä toinen kieli tunnetaan JavaScript. Samaan aikaan lopullinen hanke on näköpiirissä. Niin kutsuttua pre-ehdotus johtuu viikossa tänään. Pre-proposal-- kohti erittely, joka on CS50: n website-- on melko rento tilaisuus voit lähettää melko ytimekäs sähköpostia sinun opetus kaveri vain tietoonsa häntä tai hänen on mitä ajattelet, jotta käyttää häntä kaikupohjana. Ja on järki check-- onko olet ajatellut noin puree pois liian paljon tai ehkä liian vähän, tai ehkä sinulla ei ole aavistustakaan lainkaan ja haluavat osallistua keskusteluun. Tämän jälkeen on ehdotus ja tilanneraportin, ns CS50 hackathon täällä Cambridge Harvardin ja Yalen opiskelijat samankaltaisia. Lopullinen Hankkeen täytäntöönpano on sieltä. Ja sitten CS50 oikeudenmukainen täällä, Cambridge, sekä toinen New Haven. Joten ehdotus, vilkaise verkkosivuilla nämä tiedot. Mutta enemmän jännittävän, sekin on mahdollisuus saada kädet likainen, ja mielenne avoinna koko nippu aiheita ja työkalut ja tekniikoita, jotka ovat liitännäisiä kurssin ydin opetussuunnitelma, mutta kuitenkin liittyvät. Ja myös ihana välietappeja tekee todella hienoja lopullinen hankkeita, ylittävät materiaali olemme katettu muodollisesti ongelma asettaa tai luento. Niin mene CS50: n verkkosivuilla koko roster seminaareja. Jos et rekisteröi vielä, se käy hyvin. Menkää ja rekisteröityä edelleen ja me seurata live streaming linkkiä, päivä ja kellonaika on sivuilla. Ja kaikki on kirjataan ja toteuttaa verkossa jos et voi tehdä erityisesti päivinä ja kellonaikoina. Siitä, mitä on edessä thereafter-- hyvin, tietenkin, siellä CS50 hackathon. Tämä kuva, muistaa, viikosta nolla otettu noin 4 AM eräänä iltana menneinä vuosina. CS50 oikeudenmukainen, mikä taas tapahtuu molemmissa kaupungeissa. Ja sitten, vain istuttaa siemen, vaikka me vielä on kuukaudessa plus jäljellä lukukausi, jos haluat liittyä CS50 oma opetus henkilökunta ja haluat aloittaa ajatellut tulossa CA, tai opetus kaveri, tietävät, että Aloitamme puhua siitä enemmän myöhemmin tällä lukukaudella. Mutta Kuvassa Suurin osa tämän vuoden joukkue. Ja niin, PHP-- ja olin niin surullinen viime viikolla, että [? Allyse?] Ystävällisesti meni vaivaa saada meille näitä ihania rekvisiitta että en päätyä käyttämään, joten se oikeastaan ​​vain näytti typerää että meillä oli lapio istuu täällä kaikki päivä viime keskiviikkona, ja pieni lusikka. Mutta tämä oli minun vertauskuvallisen tapa yrittää maalata kuva miksi olemme siirtymässä C: stä kieli kuten PHP. Ja samaa voidaan sanoa mitään määrä languages-- Java, Python, Ruby tai rypäleterttuja others-- mutta taas C, esimerkiksi kirjoittamista ohjelma C voi tyypillisesti olla kuin ottaen lusikka näin ja kaivaa reikä maahan, hiekkaan tai lika. PHP avulla voit ottaa paljon isompi puree pois ongelma, kirjallisesti paljon vähemmän koodia käyttämällä paljon pienempi työkalu, koska siellä on niin paljon enemmän toiminnallisuutta kasattiin vuonna. Nyt, jos olisimme todella dramaattinen, meillä olisi jotain lapio täällä, mutta olkoon niin. Samaan aikaan, toinen metafora keksimme on, tietenkin, voisit käyttää jotain jakoavain vasara on jotain kynsien. Mutta tietenkin, oikea työkalu on menossa olla ei niinkään kieli kutsutaan C-- ja nyt olen vain vihainen [? Sanders?] Luultavasti, me korjata että later-- niin oikea työkalu käyttää usein ei tule olemaan tämä alin taso työkalu. Ja todellakin, C ei kieli, joka useimmat olet ikinä käyttää, tai olisi välttämättä käyttää uudelleen. Ja itse asiassa hieman secret-- vain aika Käytän C itse on melko paljon välillä Syyskuussa ja joulukuussa joka syksy lukukausi. Ja se johtuu meidän käyttää sitä mahdollisuutena opettaa perustekijät ohjelmoinnin, ja se tietokoneen tiede perustekijät, tiedot rakenteet, algoritmit ja like-- mutta hyvin nopeasti aiotte Katsokaa nyt, että syntaksin ja ajatuksista C ovat niin ihanan siirrettävissä modernimpi korkeamman tason kielillä, kuten PHP ja Python ja Perl ja Java ja Objective-C-- oikeastaan, ei niinkään Tavoite-C-- mutta Swift, nämä uudemmat kielet, joita monet teistä sitten harrastella kanssasi opinnäytetyön. Joten pitemmittä puheitta, katsotaanpa oikeastaan PHP ratkaisemaan joitakin ongelmia. Muistuttaa, että varhain, viime viikko, me vain käytetty CS50 IDE, kirjoitimme sievä pieni ohjelma että juuri sanoi, "Hei maailma." Ja sitten tallentanut sen tiedosto nimeltä hello.php. Ja sitten juoksin tätä komentoa. Ja miksi? Englanti, mitä täällä tapahtuu? Mitä teen, kun Juoksin tätä komentoa? Joo? Yleisö: On joitakin funktio PHP joka lukee mitä in-- ymmärtää, että. DAVID MALAN: Hyvä, siellä on toiminto PHP-- ja anna minun olla tarkempi, siellä on ohjelma nimeltä PHP, alias Tulkki, joka ymmärtää sisällön hello.php, ja tulkitsee sen ylhäältä alhaalta, vasemmalta oikealle, ja tekee mitä nuo komennot sanovat. Komennot hello.php, tietenkin, on vain lähde code-- toimintoja ja muuttujat ja silmukoita ja kuten, että me itse ovat alkoi kirjoittaa PHP. Mutta toisin kuin C, joka on käännetty kieli, PHP vain kirjoittaa sen, ja käyttää sitä. Voit ohittaa tämän välikäsi vaihe muuntamalla sen nollia ja ykkösiä, ja sitten näyttämään sitä. Ja niin mikä on kiihtymisen tästä? Miksi me ohita askel? Miksi modernimpi kielillä taipumus ohittaa tämän? Mikä oli hyötyä? Tai vain intuitiivisesti? Vaikka olemme ei kirjoitettu paljon PHP ennen, mitä hyötyä siitä ei ole kokoamisessa koodi luulet? Ei? Ei sitoa? Naarmuuntumisen pään? Joo. Yleisö: Lisää dynaaminen. DAVID MALAN: Lisää dynaaminen? Mitä sinä tarkoitat? Yleisö: [äänetön] DAVID MALAN: OK, hyvä, joten riippuen tulo, sinun ei tarvitse kääntää joka kerta. Ja se todella on kuin yksinkertaista kuin that-- mitä järkeä on jatkuva kokoamaan koodi? Tämä on vain askel, joka on making-- tämä edellyttää,, jo usean viikkoa, kaksi kertaa niin monta askelta koska vain suorittaa ohjelma. Se on ollut hyödyllinen näkemään että olet nähdä virheilmoituksia ja niin edelleen, mutta se on silti vain harmittaa askel. Ja niin ohjelmoijat tajusi ajan, miksi emme kirjoittamaan kieliä, jotka eivät Tarvitsen sen melko mekaaninen vaihe, jotta voi vain kirjoittaa koodi ja suorita se. Mutta mikä oli hinta että näimme maksoimme viime viikolla, yksi erityinen esimerkki? Kyllä? Nopeus. Niin [? Mikä?] tulkit hieman hitaammin, että nollia ja ykkösiä ovat mukava ja nopea tietokone ymmärtää, koska Intel CPU, tai mikä se on, vain ymmärtää, mitä tapahtuu kanssa ne bittikuvioina. Kun taas tulkki on ohjelma, joka todella on lukea ASCII lähde koodi että olet kirjoittanut, ja muuntaa sen, niin sanoakseni, tai selvittää, miten se muuntaa lopulta että nollia ja ykkösiä. Joten se vie vain vähän hieman suorituskykyä osuma. Joten se on hieman kompromisseja. Nyt jos teemme tämän tänne, haluan mennä eteenpäin ja tehdä esimerkiksi seuraavasti. Jos menen tänne, uuden tiedoston, aion tallentaa tämän uudelleen on hello.php. Ja nyt aion mennä eteenpäin ja sanoa, "print Hello World" - ja muistuttavat, että voin käyttää tulostaa, en on käytettävä Tulosta-F. Ja nyt täällä, jos en PHP on hello.php, huh-- I eivät näytä ovat tulkinneet sen. Mitä tein väärin? Yleisö: kulma rannerenkaita. DAVID MALAN: Joo, tarvitset että kulma kiinnike ylös. Joten se on tavallaan ärsyttävää, mutta tottuu nopeasti. Jos minun täytyy kirjoittaa PHP, I yleensä tarvitse kertoa ohjelma, tai kertoa tulkki, hei PHP, tässä tulee joitakin PHP. Ja sitten kaiken kukkuraksi, olisin sulje tämä ei tällä, vaan pikemminkin vain kysymysmerkki kulma kiinnike, joten nyt täällä, jos juoksen tätä uudelleen, nyt Saan toivottua tulosta. Nyt tehdä hieman optimointi, juuri niin, että olet nähnyt sitä ennen. Tämä on tavallaan harmillista, että olen täytyy juosta PHP tilaa hello.php, koska aikaisemmin I voisi vain kirjoittaa piste slash ohjelman nimi, joka on tavallaan mukavaa. Se on tavallaan paremman käyttökokemuksen. Joten se kääntyy pois voit tehdä tämän PHP kanssa following-- I voi käyttää tätä melko arvoituksellinen loitsu huipulla täällä, joka on yleensä kutsutaan roska, jolloin tämä on terävä symboli, niin sanoakseni, tämä on bang tai huutomerkki. Ja tämä nyt on polku ohjelmaan tyypillinen Linux-järjestelmä, joka kutsutaan ympäristö, tai env. Ja tämä line-- pitkä tarina short-- linjalla yksi vain sanoo, hei tietokone, löytää PHP tulkki minulle ympäristössä, löydä sitä muistiin, niin sanoakseni. Ja mikä on kiva nyt, on että jos menen tänne, Voin tehdä piste slash Hei piste php, or-- hmm. Lupa kielletty. No, näet vielä enemmän tämän kanssa ongelma asettaa seitsemän, jos ole jo, kanssa käyttöoikeudet. On käynyt ilmi, että tarvitsen tätä komentoa nimeltään [? chamod?] muutoksen mode-- plus x hello.php. Tarvitsen [äänetön] tämä yksi ylimääräinen askel, joka kertoo tietokone, tehdä hello.php executable. Ja nyt katsoa mitä happens-- piste slash hello.php, se vain toimii. En tarvitse määrittää tulkki enää. Ja voin tehdä sen jopa kauniimpi, edelleen, jos en nimeä tämä asia. Jos muutan hello.php vain Hello-- joten ilmoituksen vasemmassa yläkulmassa, Ohjelman nimi on todellakin nyt vain Hei. Nyt voin tehdä sen näyttämään C-ohjelma, vaikka se on kirjoitettu PHP-- tai rehellisesti rajoittamattoman määrän Muiden kielten. Niin marginaalinen parannus, ole toiminnallista eroa. Mutta se on vain pieni uteliaisuus nyt, jotta voit kirjoittaa ohjelmia millä tahansa kielellä, ja käyttäjä ei täytyy tietää tai välitä siitä, mitä ne ovat. No, Katsotaanpa lisää pakottavia esimerkki nyt että olen lyöty jopa etukäteen. Ja tätä kutsutaan quote.php. Ja se on saatavilla verkossa. Ja huomaa, että se on melko short-- mutta se on komentorivi ohjelma, joka on menossa katsomaan ylös osakekursseja minulle, joka on todella menossa olla germane ongelma asettaa seitsemän. Joten mitä olen tekemässä. Huipulla Minulla alkusulkumerkki kysymysmerkki PHP. Sitten minulla on tämä linja, jonka olen vaativat tiedosto nimeltä functions.php-- aiomme nähdä Tästä lisää hieman, mutta tämä on kuin C: n versio teräviä ovat, mihin haluat mennä kuuluu toinen tiedosto. PHP kutsuu sitä edellyttävät, vaikka se myös kuuluu toiminto. Ja käy ilmi, että function.php on vain jotain kirjoitin ennen luokan. Laitoin sen samaan hakemistoon, koska Halusin tekijä joitakin koodi että saatamme haluta käyttää muualla. Samalla voit luultavasti päätellä mitä täällä tapahtuu. Tämä on hieman erilainen kuin C-- mutta mitä tarkoitan asianmukaisen käytön? Käännä tämä teknisesti. Missä olosuhteissa olen lopetus ohjelma, poistuttaessa? Joo? Yleisö: Kun sinulla ei ole kaksi komentoriviargumentteja. DAVID MALAN: Kun ei ole että komentoriviargumentteja. Ja muista, että yksi niistä perustelut on ohjelman nimi itsessään. Ja toinen tulee olemaan toinen sana kirjoitan jälkeen nopea. Joten kuten C, tämä on minun tapa tarkistaa, ei käyttäjä yhteistyötä ja ajaa ohjelman aioin? Nyt siinä on jotain hieman erilainen kanssa C-- ensinnäkin me on tämä dollarin merkki, ja mitä dollari kirjaudu merkitsevät PHP? Vain muuttuja. Se all-- vain muuttuja jälkeen mitä haluat todella kutsua sitä. Huomaa, siellä on jotain puuttuu minun PHP-ohjelma, aivan kuten se puuttui viimeksi viikko, vs. C, joka on mitä? Tyyppejä, mutta myös jotain muuta. Ei ole jotain function-- päätehtävä. Ei ole päätehtävä. Sinä vain aloittaa kirjoittamisen koodi ilman murehtia melko mielivaltaisesti yleissopimus nimeäminen oletus toiminto tärkein. Joten arg C on vain todella globaali muuttuja että tulkki siinä annetaan minulle. Nyt, tämä on mielenkiintoinen. Joten etsiä juttuja. Dollarin merkki varastossa on vasemmalle, se on minun muuttuja. Oikealla puolella, siellä on ilmeisesti toiminto PHP nimeltään Haku joka Olen ohimennen viimeinen komentoriviltä argumentti to-- mikä sana on. Ja näemme, miten tämä toimii hetki. Ja sitten lopuksi olen raportointi hinta. Olen tulostamalla yksi osuus tällainen ja tällainen. Ja muistakaa, tämä on tapa PHP-- tavalla PHP-- jossa sinun ei tarvitse tehdä dollarin merkki S enää. Voit vain käyttää aaltosulkeita ja kytke jokin muuttuja. Sinun ei tarvitse huolehtia käyttämällä printf samalla tavalla. Ja sivuun, kun laittaa muuttuja sisällä lainausmerkkeihin näin, käytät fancy tekniikkaa kutsutaan muuttuja interpolointi. Se vain tarkoittaa, kytke muuttuja täällä. Ja syrjään, jotkut teistä, jotka tulevat muista ohjelmointi taustat, et saa käyttää puolilainausmerkkejä noin jouset tehdä tämän. Sinun on käytettävä lainausmerkkejä varten muuttuja interpolointi töihin. Muuten sinun kirjaimellisesti katso nämä aaltosulkeita. Joten lopuksi, mennään eteenpäin ja suorittaa tämän. Haluan tehdä minun pääte hieman isompi. Anna minun mennä eteenpäin ja ajaa sisällä minun lainaus hakemistoon. [? CDsource?] [? AM?] [? lainaus?] PHP lainaus piste PHP, ja aion etsiä jotain kuten GOOG, joka on sen ticker symboli, ja yksi osake sen uusi nimi, Aakkoset Inc, maksaa $ 717 Kuten tänään. Hyvä on, jos haluamme suorittaa tämän uudelleen, kuka tahansa on toinen pörssikursseja he haluavat etsiä? Microsoft on mielestäni tämä, MSFT-- $ 53. Mielestäni Yahoo on ehkä se. Ja Facebook on se. Joten mitä tämä ohjelma tekee? Taika näyttää upotettu että haku-toiminto. Joten ottaa vilkaista. On käynyt ilmi, että ei tule PHP, se on functions.php. Ja emme mene läpi tämä hyvin yksityiskohtaisesti, mutta huomaa tärkeä sana tässä on että linja kuusi functions.php-- Olen kirjaimellisesti sanoa toiminto. Olen määritellä nimi minun toiminto. Sitten määrittää minkä tahansa argumentteja, tai parametrit, Haluan, että toiminto take-- ei tyyppejä. Ja sitten toteuttaa se. Ja minä aalto käteni toteutusvaiheessa, koska se on melko pitkälle edennyt oikeanpuoleinen nyt, mutta näemme sen uudelleen todella in viikolla ongelma asettaa seitsemän. Mutta voin puhdistaa tämän ylös, liian. Olen myös mukana Nykypäivän koodi versio lainaus, jolla ei ole piste PHP-tiedosto. Sillä mitä on oletettavasti yläosassa ohjelman nimeltä vain lainata? Että niin sanotut shebang-- melko arvoituksellinen loitsu joka sanoo löytää PHP ja sitten suorita se minun koodi täällä. Hyvä, että tuo meitä mihin jäimme viime time-- vaikkakin jotkut kehittyneempiä esimerkkejä. Kysyttävää tähän mennessä noin PHP tai mitä teemme? No-- kunnossa. Joo? Yleisö: Inside HTML-tiedostoja, tehdä sinä-- [? sinä?] [? vain soittaa se?] [äänetön] PHP-tiedosto? DAVID MALAN: Hyvä kysymys. Web tilanteessa, mikä olemme kirjaimellisesti noin siirtymistä, et käytä ns roska huipulla, koska raina server-- usein ohjelma nimeltä Apache tai Microsoftin IIS, Internet Information Server, tai useita muita web-palvelinohjelmisto, tietää, että kun se näkee piste PHP-tiedosto, että se pitäisi ajaa tulkin sitä. Se ei katso, että ensimmäinen rivi. Joten tämä ensimmäinen rivi temppu on vain kun olet kirjallisesti komentoriviltä programs-- joka emme tee Super usein, mutta se on meidän tapa kuroa meidän C esimerkkejä nyt meidän PHP. Joten todellakin kuroa tämä maailma komentoriviltä maailman web toimimalla seuraavasti. Anna minun mennä eteenpäin ja tehdä täällä vain hetken. Joten jos meillä on web-palvelimen, tai pikemminkin jos meillä on minun laptop tänne, joissa pääsen piirtää näin. Ja tässä meillä Internet jossain muodossa. Ja sitten täällä, meillä on palvelin building-- tämä on, miten internet works-- ja täällä on palvelin valoja ehkä. Mitä todella tapahtuu näiden kahden yhteyksiä? Joten tässä rakennuksessa on web-palvelin. Se on vain tietokone joka on käynnissä jotkin käyttöjärjestelmät system-- ehkä ilmainen ohjelmisto nimeltään Apache, joka CS50 IDE on käynnissä. Joten voit itse ajatella tämän rakennuksen olevan rakennuksen joka CSt0 IDE on tallennettu. Siellä teillä kaikilla on tilit, jossa te kaikki on oma web-palvelin käynnissä, te kaikki on oma ainutlaatuinen URL, kun aloimme keskustella, ja näet enemmän P. asetettu kuusi. Tässä on minun laptop jonnekin muuallakaan Internetissä. Ja niin kun käyn URL, joka kuuluu minulle, että Internet-liikennettä on menossa yli palvelimelle, palvelimen vastaanotetaan HTTP-request-- kuten saada index.html ja se on vastaat kyseisen sivun. Niin, että yleinen paradigma. Kun taas kaiken ylös asti tänään, kaikki tapahtui vain rajojen tämän rakennuksen. Käytin minun laptop, mutta Olin liitetty CS50 IDE, joten kaikki näistä ohjelmista Juoksin oli sisällä että palvelin, itse. Mutta nyt, aloitetaan uudelleenkäyttö PHP kirjoittaa joitakin todellisia ohjelmia, jotka palvelee kasvoi web-palvelin. Ja tehdä tämän, aion mennä osaksi koko joukko esimerkkejä että käyttöön tämä ajatus tässä. Joten tämä on tavallaan hieno tapa kuvataan ohjelmointi paradigma. Ja itse asiassa niin poistut CS50 tai työskennellä opinnäytetöiden, tai kestää jonkin seurata luokan, voit alkaa nähdä, että world-- varsinkin kasvoin kieliä kuten C jotka ovat super alhaiset level-- ymmärtää, että on parempi tapoja kirjoittaminen ohjelmisto. On tiettyjä malleja voit seurata, tiettyjä tapoja järjestää tiedostoja ja tapoja nimeät toimintoja, jotta pitkän tarinan lyhyesti, maailma on keksiä koko joukko lyhenteitä ja nimet tapoja ohjelmointia. Nämä ovat vain tekniikoita voit käyttää. Ja yksi niistä on nimeltään MVC, Model View Controller. Ja tämä on vain, varten nyt, liian monimutkainen tapa sanoa miten pitäisi asetella PHP-pohjainen sivusto, meidän tapauksessamme. Miten järjestää tiedostot, miten järjestää logiikka, tavalla, joka helpottaa kirjoittaa monimutkaisempi sivustot? Ja todellakin, käymme nopeasti sinne p-asettaa seitsemän. Joten maailmassa MVC, olet menossa nähdä, että meidän koodi voidaan yleensä luonnehtia joko Mallikoodi, tai ohjaimen koodi, tai katsella koodia. Ja aion pelkistettyjen se follows-- ohjain on aivot oman ohjelman, Siellä kaikki mielenkiintoinen logiikka tapahtuu. Joten kaikki olemme olleet kirjallisesti toistaiseksi luokassa, on ikään kuin ohjaimen code-- se valvontaan ohjelma, silmukat, sinun olosuhteet, teidän toiminnot ja muuttujat ja kaikki. Näkymät, nyt, tulevat olemaan hieman selvempi maailmassa rainan. Näkymä on estetiikka sivuston. Se mitä käyttäjä sees-- kuvia, HTML-taulukoita, HTML-tunnisteita, ja kaikki Kyseisen, kaikki pörröinen esteettinen tavaraa, joka ei ole niin vaikea kirjoittaa, mutta on juuri mitä olet tuottavan, on niin sanottu näkymä, estetiikka. Ja malli, lopulta on menossa on tietokanta, stuff-- joka aloitamme sukeltamalla kaikki enemmän tänä keskiviikkona. Joten ohjain on logiikka, Näkymä on esteettinen tavaraa, ja malli tulee olemaan missä Tallennamme meidän todelliset tiedot. Joten katsokaamme tämä konkreettisemmin seuraavalla esimerkillä. Aion mennä minun hakemistoon täällä nykypäivän lähde code-- jotka kaikki on saatavilla verkossa. Ja aion mennä versioon nolla. Ja tässä is-- kutsukaamme sitä versio nolla CS50 verkkosivuilla. Siellä ei ole paljon täällä ollenkaan. Se on hyvin yksinkertainen web-sivu, joka on luultavasti käyttäen mitä HTML tags-- vain arvata ohi esimerkkejä? Mikä tuo on? H1-- luultavasti että iso rohkea otsikko, että logo ylös, CS50. Ja mitä muuta on leikkiä? Joo? Yleisö: Järjestämätön lista. DAVID MALAN: Järjestämätön list-- niin UL tag ja ehkä pari LI tageja. Ja jos et muista näitä, se rehellisesti ei ole väliä. Nämä ovat pörröinen eräänlainen toteutuksen yksityiskohdat HTML että voit nopeasti etsiä ja olet taas matkalla. Me keskittyä enemmän ohjelmointi ideoita, jotka ovat juicier kappaletta. Joten vain ottaa nopeasti katso HTML-- ja todellakin jos minä avata näytä lähdekoodi täällä, yup, Juuri täällä tapahtuu. Ei UL-tunniste. Sisäkkäisiä sisällä joka on LI tageja. Ja sitten Lainasin URL todellisen oppimäärän täällä. Ja sitten lectures.php on ilmeisesti toinen dynaamisesti sivu joka on menossa on, katsotaanpa see-- ah, kahden ensimmäisen viikon luento. Joten viikko nolla ja viikko yksi, katsotaanpa katso this-- jos näen sivun lähdekoodi, myös erittäin yksinkertainen. Nämä johtavat kaksi sivua kutsutaan week0.php, ja week1.php. Joten harkita nyt, mitä tapahtuu. Kun klikkaan week0.php, minun laptop tekee pyyntöä week0.php. Web-palvelin, alias, CS50 IDE, vastaanottaa että virtuaalinen kirjekuori. Se näkee viestin kuten, saat week0.php. Se on sitten tulkita tiedosto, alkuun alas, vasemmalle right-- tiedosto nimeltään week0.php-- ja sylkeminen ulos tulokset. Joten sisällä olevan tiedoston, week0.php, on ohjain logiikka, joka tuottaa tämän HTML, ja me pian nähdä, että. Mutta nyt haluan klikkaa viikolla nolla, ja nyt meillä on keskiviikko ja perjantai, ja nyt meillä on dioja hitaasti viikko nolla. Ja saatat muistaa Tämä siitä Paluumatkalla kun. Niin, että kaikki tämän sivuston tekee. Joten pohtia, miten se tekee tämän. Aion mennä takaisin lähdekoodia täällä, CS50 IDE, ja aion avata index.php. Ylimpänä tämän tiedoston on joukko kommentteja. Ja sitten keskellä olevan tiedoston, se kääntyy pois, ei PHP lainkaan. Koska jos sinulla ei ole mitään alkusulkumerkki kysymysmerkki PHP tunnisteet, olet vapaa vain laittaa HTML. Koska mitä PHP tulkki on tarkoitus tehdä, on, kun se lukee tätä file-- ylhäältä alas, vasemmalle right-- se vain tulkitsee koodia se näkee välillä ne kulmakiinnikkeet kysymysmerkki. Ja muuta, että se ei tunnustaa PHP, se vain sylkee. Ja HTML on yksi kamaa se vain sylkäistä. Joten tämä tiedosto voi olla kutsuttu index.html, mutta olen nimeäminen kaiken dot PHP ponnahduslautana. Lectures.php-- samalla tavalla underwhelming, se on vain joitakin HTML. Week0.php, samoin vain joitakin HTML. Mutta Nyt laittaa sananlaskun suunnittelu hattu, ja pohdittava, miten voimme parantaa tätä. Ei ole vaikea tehdä tätä, mutta olen sellainen hajautetun osaksi kopioi ja liitä. Ja itse asiassa, jos teen viikolla kaksi, te tietää mitä minä luultavasti tehdä? Aion mennä week1.php, olen menossa esiin kaiken. Aion kopioida, liitä se uuteen tiedosto nimeltä week2.php, nipistää joitakin URL-osoitteita ja olla tulossa. Joten sen perusteella, mitä olemme nähdään C jo, tämä ei tunnu oikealta, toivottavasti. Kopioida, liittää harvoin oikea ratkaisu. Mitä siis voimme alkaa tehdä parantaakseen tämän? Missä ovat mahdollisuudet voidaan paremmin suunnitella? Mennessä pääsen viikko kahdeksan, se on menossa olla todella ärsyttävää jos haluan muuttaa fontin jokaisen sivuillani, tai jos haluan muuttaa rakennetta asettelua. Joten missä on mahdollisuus voidaan paremmin suunnitella? No, katsotaanpa miettiä mitä yhteinen kaikkien näiden tiedostojen. Tässä viikko yksi, tässä on viikko nolla, tässä lectures.php, tässä index.php-- mikä on sama ja mikä on erilaista, karkeasti ottaen, kussakin näistä tiedostoista? Joo? Yleisö: [äänetön] DAVID MALAN: OK, hyvä. Joten siellä on kuvio, varmasti, jolloin joka kerta päätän luento I, Minun pitäisi tuottaa hyvin samannäköisiä sivu. Ja joten ehkä voin hyödyntää että todella, me tietoisesti numeerisesti indeksoitu meidän lectures-- jos voin laittaa vieläkin sanat vastauksesi. Ja mikä on ainoa asia, todella, että on muuttumassa välillä viikko one-- ja haluan selaa joten se on suunnilleen samalla place-- joten tässä viikko nolla, suunnilleen huipulla. Tässä on viikko yksi, viikko nolla, viikko yksi, viikko nolla. OK, kirjaimellisesti jos tiedät ole ohjelmaa lainkaan, tämä on nyt aivan kuin kaavoja peli. Joten mikä on erilaista? Joo? Yleisö: [äänetön] DAVID MALAN: Hyvä, joten otsikko muuttuu, koskaan niin hieman. Zero on menossa, tietenkin yksi. Sama asia tapahtuu H1 tag. Ja emme oikein näe sitä helposti, koska URL-osoitteet ovat hieman pitkä. Mutta ne URL-osoitteet muuttuvat hieman. Mutta mitä ei vaihtoväli, uskallan sanovat, suurin osa sisällöstä page-- HTML-koodi on sama, pää on sama otsikko on lähes sama, runko on sama, ja melkein kaikki muu on sama, lukuun ottamatta nuo pienet hienosäädön. Joten kuinka voimme edetä factoring joitakin tätä? No haluan ehdottaa täsmälleen että seuraavassa versiossa. Joten tässä versiossa yksi, minulla on tarkka samoihin tiedostoihin, sekä pari muuta. Tässä index.php-- ja vaikka et ole koskaan nähnyt PHP ennen, mitä olen luultavasti tekemässä ratkaisemiseksi problem-- perusteella, mitä näet tässä? Joo, on että hieman sitoumus? Ei? Kyllä, mennä. Yleisö: [äänetön] DAVID MALAN: Jep. Yleisö: [äänetön] DAVID MALAN: sinun pitää puhua vain vähän kovempaa. Yleisö: [äänetön] DAVID MALAN: OK, hyvä. Ja minä think-- se oli vaikea kuulla sinä-- mutta minä ajatella mitä saat on on, että tunnisteet, jotka ovat yhteisiä ylös, ja tunnisteet, jotka olivat yleisiä pohja, on nyt pois laskusta, tai taka mitä tiedostoja? Header.php ja footer.php-- ja olemme menossa tehdä joitakin tweaks puuttumaan huolta juuri herättänyt numerot vaihtokauppoja Esimerkiksi, jos kuulin oikein. Mutta se näyttää olevan ydin se. Jos oli valtavasti irtisanominen yläreunassa sivun, ja valtava määrä irtisanominen alareunassa, nyt kirjaimellisesti vain kohokohta ja leikkaa että sisällön ulos, laita se erilliseen file-- kuten ajatus CSS, jossa laskelmiin ulos hyvin samankaltainen estetiikka, laittaa se erilliseen piste PHP-tiedosto, Käytä vaativat mechanism-- joka on kuin C terävä include-- joka on pohjimmiltaan kuin sanoisi mennä napata sisältö header.php, ja kopioida ja liittää ne tästä. Mutta mitä tämä tarkoittaa, että nyt index.php, minulla on nämä kaksi riviä. Vuonna lectures.php, olen myös on nämä kaksi riviä. Vuonna week0.php, olen myös on nämä kaksi riviä. Joten nyt, jos haluan muuttaa otsikko kaikki minun sivuja, tai haluan vaihtaa perusrakenteen, Voin vaihtaa sen nyt vain yhdessä paikassa, tai kaksi places-- header ja footer, vastaavasti. Nyt koodin alkavat näyttää hieman arvoituksellisesti, eikö? Mutta jos ajattelee, mitä sivu on doing-- jos olen pyynnön week0.php, aivan kuten piirustus yli here-- kun week0.php haetaan, mitä se tarkoittaa? Kirjaimellisesti, tämä tiedosto on selain pyytää. Web server-- alias CS50 ID-- nappaa tämä tiedosto, week0.php, ja lukee se ylhäältä alas, vasemmalta oikealle. Linjalla yksi, se heti kohtaa alkusulkumerkki kysymysmerkki PHP, vaatia header dot PHP, ja niin mitä PHP tulkki does-- joka on rakennettu osaksi web palvelin, koska me valmiiksi se sinä-- se menee automaattisesti osaksi header.php, kopioi sisältö, pastat ne tästä. Mutta sitten tulkki kohtaamiset kysymysmerkki lähellä kiinnike, joten se kaikki tapahtuu ajattelua. Nyt se vain sokeasti sylkee ulos linjat kaksi kautta seitsemän, koska se on vain raaka HTML. Pääsee linja kahdeksan, ja tekee sen sama taika again-- tiedoston avaus tarttumalla sisältö, ja että heidän tai liittämällä ne juuri silloin tai siellä. Mutta minä vain viittasin bugi. Tämä on osittainen askel taaksepäin, koska jos katsomme header.php, Olen tavallaan leikattu kulma. Mitä ominaisuus minä periksi, jotta saada tämä kyseenalaista parempi suunnittelu? Joo? Yleisö: [äänetön] DAVID MALAN: Joo, olen sellainen Leikatun triviaali nurkkaan. Voit huomautti, että mitä oli muuttumassa oli otsikko, numero otsikossa, ja numero H1. Joten minun ratkaisu oli, OK, Haluan vain nimetä uudelleen, eikä käsitellä että ongelma lainkaan. Niin, että osittainen askel taaksepäin varmasti. Mutta mikä on huomionarvoista täällä on, että mitä olen tehnyt on muuten laskelmiin kaikki yhteistä kamaa. Ja footer.php, huomaan laskelmiin pois kaikki tämä, vaikkakin vähemmän, yhteinen kamaa. Joten minun täytyy jotenkin nyt pystyä ottaa toisen askeleen eteenpäin, ja vahvistaa että otsikko kysymyksiä. Joten tehdä. Anna minun mennä minun toinen versio täällä, joka taas on samat tiedostot paitsi yksi uusi lisäksi. Ja se on hieman verbose, mutta katsotaan jos me voi kiusata erilleen mitä täällä tapahtuu. Joten sen sijaan edellyttävät header.php, ja footer.php, Näytän olevan edellyttämällä yksi file-- kutsutaan, tietenkin, helpers.php. Ja haluan määrätään nyt, mitä sisällä helpers.php on vain joukko toimintoja että kirjoitin, aivan kuten ennen. Mutta kutsuin sitä helpers.php. Nyt ilmeisesti, vuonna linja kolme ja 10, olen jossa kaksi functions-- tehdä header, tehdä footer. Ne eivät tule PHP, kirjoitin ne itse. Ja laitoin ne helpers.php. Nyt olemme vain nähnyt tämän syntaksin kerran, ja se oli super lyhyt. Mutta tämä on ilmeisesti argumentti tehdä header, toiminto. Miksi minä tiedän, että? No tässä lähellä paren, tässä avoin paren. Ja tietenkin, kuten C, mitään näiden sulkeissa on input-- tai argumentti toiminto. Mikä on tietotyyppi tämän väitteen, sen perusteella, mitä olen korostanut? Mitä ne hakasulkeita osoittavat, joka perustuu viime viikolla? Joo, se on array-- erityisesti tällainen taulukko. Ja tämä syntaksi tosin on hieman outoja, mutta tämä on vain ohimennen yksi keskeinen arvo pari. Tärkeintä on, lainaus lainaus päättyy otsikko, ja arvo on CS50. Jos olisimme tehneet tämän C, se voisi sen sijaan näyttämään tämän, vain lainaus lainaus päättyy CS50-- tai oikeastaan ​​se olisi kihara henkselit, tai jotain C, missä avain on nolla, ja arvo on CS50. Mutta jälleen kerran, PHP, vaikka syntaksi on, taas vähän outo, sen avulla voit kulkea sanoja numeroiden sijasta yhdistää avaimet arvoja. Mitä tämä kaikki tarkoittaa? Jos menen helpers.php, Katsotaanpa tätä toimintoa. renderHeader.php, pikemminkin renderHeader on tehtäväni, ja tiedän, että koska näen toiminto avainsana tässä. Tämä on uusi päässä C-- se ilmeisesti vie argumentin nimeltä data-- mutta voisin ovat kutsuneet tätä mitään, mutta kutsuin sitä tietoa, vain olla hieman clean-- ja ota arvaus, erityisesti jos olet ohjelmoinut muulla korkeamman tason kieli ennen, jotain Edellä C, käsitteellisesti. Mitä yhdenvertaisen alkusulkumerkki hakasulje luultavasti tarkoittaa? Tai mitä voisi se tarkoittaa? Emme ole nähnyt tätä C. Joo? Tyhjä jono. Erityisesti tämä tarkoittaa, että jos käyttäjä ei soita renderHeader jossa argumentti, Aion silti on argumentin nimeltä tietoja, mutta sen oletusarvo on olemaan tyhjä jono. Joten se on vain mukava mukavuutta. Minulla ei ole huutaa käyttäjä, tai sanoa käytit tehtäväni väärin. Voin vain antaa käyttäjälle oletuksena arvoa, jos en ole erityisen välitä. Nyt tämä toiminto, olen menossa aalto käsiäni. Mutta tämä ote toiminnon avulla voimme siirtää näitä muuttujia tiedot osaksi header.php seuraavasti. Ja tämä on viimeinen pala, Luulen, funky syntaksin. Tässä on minun uusi versio of header.php-- se tapana sanoa, kirjaimellisesti, avoin kiinnike otsikko CS50, ja se oli siinä. Ja sama asia H1. Nyt se ilmeisesti sanoo jotain melko funky. Ja haluaisin yksinkertaistaa tämä hetkeksi seuraavasti. Tämä on mitä olen muuttanut nimike. Kuitenkin, se alkaa hieman ruma jatkuvasti avoin suluissa PHP, ja sitten käyttää tulostusta. On käynyt ilmi, että PHP on lyhenne merkintätapa tämä, joka on vain yhtäläisyysmerkki, joka on teknisesti toiminto nimeltään echo sijaan tulosta, mutta se on sama asia, tehokkaasti. Se vain näyttää paremmalta. Se on vain syntaktinen sokeri, jos haluatte, joka tekee minun koodi näyttää hieman paremmin. Mutta näyttää siltä, ​​ja näemme tämän uudelleen ennen pitkää, meidän täytyy kutsua tätä ärsyttävän pitkä toiminto nimeltään HTML erityistä merkkiä kohteessa PHP, koska se kääntyy pois on olemassa tiettyjä panoksia että käyttäjä voi antaa meille, tai että käyttäjät voisivat antaa meille, jotka ovat menossa murtaa sivustollemme. Mutta näemme, että seuraava viikko JavaScript. Mutta nyt, juuri tietää, että tämä tiedosto, headers.php, yksinkertaisesti vie otsikko, Kuljin, se tekee että se on turvallista ruiskuttaa web sivu, ja se sylkee sen pois minun otsikko ja minun H1. Joten jos menen tämän version nyt, huomaa, että luentoja on sen nimi takaisin, viikko nolla on sen nimi takaisin, ja todellakin, HTML olen tuottavan on sama kuin mitä minun ensimmäinen versio was-- paitsi minun välilyönnillä, koska olen alkanut formatoinnin minun koodi hieman eri tavalla. Mutta olen luotu kaikki koodi välitän. Joten haluan tauko vain hetken ja nähdä jos on kysyttävää tai sekavuutta Olen luonut. Selvä, joten katsotaanpa twist hieman vaikeampi täällä onko siellä mahdollisuus parantaa. Helpers.php oli myös tämä toimintoa, jota kutsutaan renderFooter. Ja mikä on huomionarvoista noin renderHeader, ja renderFooter? Ja vielä, päivän tarkoituksiin, tietää että ote toiminto on vain minun tapa välittää argumentteja osaksi header.php ja footer.php. Anteeksi? Yleisö: [äänetön] DAVID MALAN: Joo, minä vain muuttanut vaativat linja. Niin kirjaimellisesti, olen tehnyt syntiä kopiointi ja liittäminen, jälleen kerran. Se ei ole valtava määrä linjat, mutta tulevat on-- jos olen kopioimalla ja liittämällä kaikki vain muuttaa yhtä pieni sana, ja yksi pieni sana, joka Alan huomauttaa Out alatunnisteeseen täällä, verrattuna header täällä. Muuten kaikki on identtinen, lukuun ottamatta, tietenkin funktion nimiä. Mitä me voisimme tehdä paremmin? No anna minun avata tämän version täällä, jolloin vuonna helpers.php, miksi en vain saada vähän fiksumpia tästä? Kirjoita hieman monimutkaisempi koodi, mutta kutsuvat sitä tehdä? Joten mitä minä olen perusteellisesti muuttunut? Se vie argumentti now-- kaksi perustelua, tiedot edelleen. Ja mitä sitten on ensimmäinen nimi todennäköisesti käytetään, perusteella, mitä luet täällä? Vaikka jotkut syntaksin on vielä uusi. Mikä on dollarin merkki malli? Anteeksi? Yleisö: ylä- tai alatunnisteen. DAVID MALAN: ylä- tai alatunnisteen. Joten ilmeisesti, päätin että jos ainoa asia, joka on muuttumassa on mitä malli haluan on print-- ja malli Tarkoitan tämä on suunnitelma koodi, joka haluan tuotos, mutta haluan plug joissakin values-- joten jos se on vain otsikko tai alatunnisteen, miksi en parametroida että ja soita argumentti dollarin merkki malli? Ja sitten tämä funky syntaksin antaa minulle luoda polku muuttuja tässä. Joten dollarin merkki polku on vaihteleva. Mitä tämä syntaksi do, jos olet perehtynyt? Joo? Yleisö: [äänetön] DAVID MALAN: Aivan. Jos malli on, lainaus lainaus päättyy, header, tai jos malli on, lainaus lainaus päättyy, footer, että linja siellä että olen korostanut, linja kahdeksan, on yksinkertaisesti ottaa tätä nimeä, kuten otsikko, ja liittämällä se piste PHP. Joten meillä ei ole tätä operaattori C. Tämä piste operaattori on hämmästyttävä asia PHP-- jos olet perehtynyt JavaScript tai Java, voit käyttää plus kirjaudu tehdä ketjuttamista. C, se on kipu neck-- ja olen niin pahoillani, P-set kuusi, olet menossa täytyy tehdä this-- se on kipua niskassa ketjuttaa merkkijonoja. Miksi? No, koska jos sinulla merkkijono, joka on tämän pitkän, ja toinen merkkijono, joka on tämän pitkän, et voi vain kytkeä niitä yhteen. Mitä sen sijaan täytyy tehdä C? Joo? Yleisö: [äänetön] DAVID MALAN: Sinun on malloc muisti, tai käytä array pinoon. Ja te oikeastaan ​​tarvitse tehdä, että joukko tarpeeksi suuri sopivaksi tämä plus tämä, plus kenoviiva nolla. Sitten liität ne yhteen sekoita kissa tai manuaalisesti silmukka, tai useita tekniikoita. Ja näytämme pari p-set kuusi. Se on kipua niskassa. Ja tämä on todella mitä tarkoitan noin tämä vs. this-- kuten C vastaan ​​PHP. Sinä vain saada niin paljon enemmän toiminnallisuus ilmaiseksi, jotta voit keskittyä, mieluiten, on hauskaa osa koodaus, projekti haluat ratkaista, pikemminkin kuin alhainen pikkuseikat. Joten tämä vain tuottaa header.php tai footer.php jonka perusteella yksi kutsun. Ja todellakin jos menen osaksi index.php, ilmoitus kaikki mitä changed-- sijaan soittamalla tehdä ylä- tai tehdä alatunnisteen, Soitan tehdä, jonka jälkeen nimi mallin, että haluan tehdä. Ja näet tämäkin, ongelmatilanteissa asettaa seitsemän, jolloin me voit käyttää Sama toiminto tehdä nippuina ja rypäleterttuja eri verkkosivujen. Joten mieluummin kuin asun liian paljon enemmän niihin details-- joka näet jälleen Harjoitus seven-- katsotaanpa on nyt alussa liuoksen entistä mielenkiintoinen ongelma. Tähän mennessä mitään olemme tehnyt on tallennettuja tietoja. Itse asiassa ainoa kerta, kun olemme koskaan tallennettu jotain olemme tehneet tässä luokassa on, kun meillä oli hyvin yksinkertainen demo jonkin aikaa takaisin, jolloin käytimme tiedosto IO C, ja mielestäni olen kirjoittanut nimeni, ja Hannahin nimi, ja Marian nimi, tai ehkä Andyn nimi, ja sitten tallennetaan CSV file-- pilkulla erotetut arvot tiedosto. Ja käytimme fopen-- mielestäni käytimme fprintf muistaakseni, ja me tallennettu tiedosto. Nyt, että on yksinkertaisin tietokannan muodossa. Jos haluat tehdä verkkosivuilla Frosh IMS-ohjelma, jonka Fuksit voi ilmoittautua urheilu, voit ihannetapauksessa haluavat tehdä jotain, että tiedot. Viime viikolla teimme mitään kanssa data-- me vain sanoi, olet rekisteröitynyt, ei oikeastaan. Tai ehkä sähköpostitse Proctor, ja se oli siinä. Mutta se olisi mukavaa, jos voisin antaa että Proctor CSV-tiedosto, kuten Excel-tiedoston. Tai vielä parempaa, se olisi olisi mukavaa, jos voisin laittaa ne käyttäjien nimiä ja asuntolan nimet ja kaikki tämä tietokantaan, joka vain elää ikuisesti, kunnes päätän poistaa tiedot. Tietokanta, jonka avulla minua kyselyn tiedot. Ja todellakin, sitähän tietokanta on. Esittelemme tänään, ja ensi viikolla, liian, tekniikka kutsutaan SQL-- Structured Query Kieli, joka on toinen kieli. Se on pohjimmiltaan ohjelmointi kieli, mutta tietokantoihin. Ja tietokanta nyt, vain ajatella kuin super hieno versio Microsoft Excel, tai Google Taulukkolaskenta, tai Apple Numerot. Se on yleensä ohjelma, jonka avulla voit tallentaa koko joukko tiedot riveihin ja sarakkeisiin, melko kuten saatat Excelissä. Mutta mitä on mukava, varsinkin jos emme ole super tuttuja Excel, mitä SQL voit tehdä on kyselyn tämä tiedot kirjoittamalla riviä koodia jossa voit, vaikka tietokanta on miljoona rivit se, Löydät asioita huippunopea. Itse asiassa, Excel on erityisen huono suuria tietomääriä. Ja itse asiassa jopa muutamia vuotta sitten, osoittautui Excel vain voit tallentaa jopa 65535 riviä data-- joka kuulostaa paljolta, mutta kun olin grad opiskelija, ja muistan kompastumisen tämä koska olin tuottavan CSV-tiedostoja minun tutkimusta ja minä halusivat analysoida niitä nopeasti vain avaamalla ylös Excelissä. Tietenkin minun tietokone vain kaatui, koska minulla oli enemmän kuin 65000 riviä. Mutta mistä 65535 tulevat? Mitä Microsoft tekee, oletettavasti? Jos olet hyvä kanssa voimiasi kaksi? Niin, he käyttivät 16-bittinen arvo edustaa rivin numero. Ja kaksi 16 on 65,536-- miinus yksi, koska jos nolla indeksi tarkoittaa, että oli useimmat rivien voisin olla. Ja se oli vain suunnittelun päätöstä. Säästämällä 16 bittiä, he rajoittaa minua 16000 riviä sijasta 4000000000, jotka olisin voinut ollut ihanteellisesti. Mutta nyt aiomme esitellä tämä lisää web yhteydessä. Ja mikä on mukavaa noin SQL on, että vaikka vaikka se on aika vahva ja kaunis hienostunut, se todella kiehuu alas neljä keskeistä toimintaa, neljä keskeisiä tehtäviä, jos will-- valitset, hakemisessa tietojen etsiminen tietojen; poistaa tai poistaa tietoja; lisätä lisäämällä rivejä tietokantaan; ja päivittäminen. Joten jos olet joskus käyttänyt Google Taulukkolaskenta, Apple Numerot, Microsoft Excel, olet teloitettiin, todennäköisimmin, kaikki Näiden toimintojen kuin ihmisen mukaan vain näppäimistön avulla ja mouse-- lisäämällä tietoja käyttämällä silmäsi Voit valita tai etsiä tietoja, tai päivittää tietoja tai poistaa tietoja. Mitä tämä tarkoittaa? No, esiasennettuna CS50 IDE on ohjelma nimeltä MySQL. Se on ilmainen, avoimen lähdekoodin tietokanta, jota on erittäin suosittu. Facebook, esimerkiksi, käyttää sitä tämän päivä, joukossa muita työkaluja, jotka he käyttävät. Ja paljon erittäin suositut sivustot käyttävät se suurelta osin, koska se on nopea, ja koska se on ilmainen. Vaikka varmasti vaihtoehtoja. Ja jotkut teistä ehkä harrastella vaihtoehtoja opinnäytetöiden. Tämä kuvakaappaus puolestaan ​​on Web-pohjainen työkalu nimeltään phpMyAdmin. On sattumaa, että tätä web-pohjainen työkalu on myös kirjoitettu kielellä, PHP, mutta mitä se on tarkoitus tehdä on antaa meille web-pohjainen käyttöliittymä tietokantaan. Koska MySQL on tyypillisesti jotain, historiallisesti, te olisi vuorovaikutuksessa vain jossa komentoriviltä. Ja olisi erittäin ärsyttävää ja vaikeaselkoisten on kirjoittaa tekstisisältöä komentoja valita tiedot, lisätä tietoja, ja poistaa tietoja. Joten jotkut ihmiset Internetissä kirjoitti web-pohjainen ohjelma että vain meille hallita tiedot tietokantaamme. Se on kuin tuplaklikkaamalla Excel, ja käynnissä web-pohjainen versio sen. Ja mitä aiot käyttää tätä lopulta ensi viikolla, ei p-set kuusi, mutta on rakentaa jotain nimeltään CS50 Finance, joka tulee olemaan tietokanta käyttäjille, joilla käyttäjätunnuksia ja salasanoja, dollaria määriä, että ne ovat niiden pankkitileille. Se tulee olemaan jotain käytät tallentaa symbolit ja määrät varastojen että käyttäjät ostanut virtuaalisen dollareita, että voit antaa heille. Ja se tulee sallia käyttäjille rekisteröityä sivuston, niin että jopa ystäväsi Voit virittää sivustoosi ja todella rekisteröidä, kirjaudu sisään, ja leikkiä ja yrittää löytää vikaa koodissa, ja yrittää löytää virheitä sivuston. Ja he yksinkertaisesti ilmoittautua lisäämällä itse, tehokkaasti, kautta koodin kirjoittaa tietokantaan. Esimerkiksi, tämä lyhyesti kuvakaappaus mitä tietokanta voisi näyttää. Tämä oli yksi viime vuoden solutions-- tämä on kuin mini Excel tiedosto, tallennetaan tietokantaan, tallennettu tämän ohjelmiston nimeltään MySQL. Vasemmalla puolella, olen ilmeisesti annetaan jokaiselle käyttäjälle yksilöllinen numero. Toisessa sarakkeessa, olen antanut jokainen käyttäjä name-- oma heidän joukossa. Ja oikealla puolella, Olen antanut heille hash. Nyt tämä on todella salasana, mutta se ei ole pelkkää tekstiä salasana. Se on salattu salasanan, jos haluatte, tai hash salasana. Joka me palata ennen pitkää. Mutta jos olet koskaan lukenut artikkeli siitä, miten salasana jossain pankki tai joissakin sivusto on saattanut vaarantua, se voidaan yleensä tarkoittaa kahta asiaa. Joten tämä on vain ote kuusi käyttäjää. Kaikki te nyt voi selvittää out kautta hakkerointi tai halkeilua mitä kuusi ihmistä salasanoja ovat. Mutta jos olet joskus saanut hälytys tai anteeksipyyntö yritykseltä tai verkkosivuilla sanomalla, pahoillani, hakkeri murtautui meidän tietokantaan, sinun pitäisi luultavasti muuttaa salasana, mikä voisi tarkoittaa? No, yksi, voi tarkoittaa Yhtiö on ollut enemmän moronic, ja on tallentamiseen salasana sarakkeen näin, salaamaton. Mikä tarkoittaa vastustaja, joka varasti tietokanta, kirjaimellisesti tuntee käyttäjätunnus ja salasana. Se on pahin mahdollinen skenaario. Ja kuten näet p-sarja seitsemän, joten helppo välttää. Ei ole mitään tekosyytä, että muodossa tyhmyys nykypäivän Internet. Two-- ja me löytää joitakin artikkeleita todistamaan, että tämä edelleen tapahtuu, nonetheless-- kaksi, ehkä vastustaja oli tämä versio tietokannan. Joka on edelleen sellainen huono, koska nyt he tietävät, että minulla on kuusi asiakasta, Tiedän käyttäjätunnukset näistä kuusi asiakkaita, ja tiedän salattu versioita tai hajauttamat versiot, näistä kuusi asiakkaiden salasanoja. Mutta joku teistä jotka ehkä tehty [? Hakkeri 2?] jossa säröillä salasanoja, tai otti katso tuota versio ongelma sarja, miksi se vielä hieman huolestuttava jos vastustaja tuntee hash salasanat? Yleisö: koska ne voivat kirjoita koko sanakirja osaksi tiivistefunktio. Ja jos salasana on sanakirja sana, [? he voivat vain match--?] DAVID MALAN: Aivan, vastustaja voi vain kirjoittaa koodia, kuten jotkut teistä teki [? Hakkeri?] 2, jolloin voit kerrata yli kaikki sanat sanakirjasta, tai kaikki mahdolliset yhdistelmät Z ja yksi kautta nine-- joka kuulostaa paljon, ja se on. Mutta tietokone, se on tosi nopea. Ja itse asiassa, että oli piste [? Hakkeri 2,?] Oli ottaa tavaraa, joka kirjaimellisesti näyttää tältä, ja purkaa mitä se todellisuudessa oli. Joten me tarkastelemme, miten voimme Tallenna tämä tehokkaammin. Osoittautuu, onneksi MySQL, siellä aiotaan tietotyyppejä. Ja yksi hauska osista noin tietokannan suunnittelu, ollakseni rehellinen, oikeastaan ​​tekee päätökset itse miten sinun pitäisi edustaa tietoja? Jos edustavat puhelinnumeron int, kuin iso numero, tai pitkä? Vai oletteko todella tehdä sen sarjana merkkiä? Ja siellä voi olla hyvin ei-triviaali vaikutuksia tämän. Itse asiassa, yksi aikaisintaan hauskaa Germane tarinoita on, kun Mark Zuckerberg rakensi Facebook, se oli kirjoitettu alunperin, ja vielä on pitkälti kirjoitettu PHP. Ja yksi suurimmista haasteista he kohtasivat varhain oli skaalaus. Kun he pitivät lisäämällä koulun jälkeen koulu koulun jälkeen, tietääkseni, yksi alkuperäisistä ratkaisujen oli lähinnä kopioida ja liittää Osa tietokannoista ja joitakin koodi, niin että Harvardin oli käynnissä omasta palvelimelle, ja MIT oli käynnissä omasta palvelimelle. Ja juuri sen vuoksi, joidenkin teistä, jotka ehkä muistaa, et voisi olla ystäviä muissa verkoissa. Et todennäköisesti ole ystäviä MIT tai Harvardin 10 tai niin vuotta sitten, mutta ei voinut span verkkojen sillä osittain tästä syystä. Ja yksi suurimmista haasteista Mark ja yrityksille kuten Facebook on todella käsittely sadoilta ja tuhansien ja miljoonien Pyyntöjen sekunnissa. Joten mitä me aloitamme puhumme tällä viikolla ovat todella olemaan germane kirjallisesti hyvä ohjelmisto, ja kansan keskuudessa onnistunut työkaluja, pystyy käsittelemään paljon käyttäjiä. Joten me puhumme asioista kuten indeksointi ja haku, mutta että se on tänään. Tulemme näkemään sinua lisää keskiviikkona. [MUSIC - "SEINFELD" teema] DAVID MALAN: voit se, ja vähentävät sitä. Ja sinun ei tarvitse pitäytyä Joissakin ennalta määrätyn määrän muistia. No, mitä se aikoo kutsua? SPEAKER 1: No, mitä on tekeillä? SPEAKER 2: Mitä tarkoitat? Hän luennoi. DAVID MALAN: Ja voimme käyttää toiminto nimeltään malloc on memory-- SPEAKER 1: Miksi ei hänen aseita liikkuvat? SPEAKER 2: No that's-- tiedätte, se on normaalia. Se on aivan kuin hän on juuri iso makkarat roikkuu siellä. SPEAKER 1: Se on normaalia? SPEAKER 2: Joo, mielestäni vain olettaa hän vahingossa korvataan hänen deodorantti pikaliimalla.