[Mūzikas atskaņošanai] DAVID Malan: Tas ir CS50, un šis ir sākums nedēļas astoņiem. Un mēs esam tik satraukti sveikt atpakaļ, liels pārsteigums, CS50 pašas Ramon Galvan, pieaug vecākais, kurš ir bijis pavadot pēdējo vairākus mēnešus kopš jūlija Losandželosā, Holivudā, burtiski strādā pie pavisam jaunu TV parādīt sauc Colony, radītājs, kas ir faktiski Harvard alum pats. Un tāpēc mēs esam ļoti satraukti, lai redzētu šo debija uz ASV tīklā šī gada janvārī. Tātad Gaidiet, ka, un vairāk Ramon par nedēļu uz priekšu. Zināt, tagad, ka gals ir tuvu. Un ko tas nozīmē, ka tur nav viss, kas daudz pa kreisi no CS50, skumji teikt. Mums ir tikai trīs problēmas komplekti left-- tur Problēma noteikti six-- kas ir rokas tagad vai drīzumā būs, dēļ vēlāk šajā week-- ir domāts, lai novērstu Mūsu pasaulēm no komandrindas, kur mēs esam pavadījuši lielāko daļu mūsu laika, izmantojot C, un pasaule web programmēšanu. Nu, jūs redzēsiet daudz ideju aizgūts no komandrindas darbu, bet arī daudz jaunu un interesantas idejas kas arī būs piederīgs par mobilo lietojumu un par tehnoloģiju, vispārīgāk, ar kuru jūs puiši visi ir pazīstami mūsdienās par klēpjdatoriem un tālruņiem un tamlīdzīgi. Tātad jums īstenot nav mājas lapa, vai tīmekļa vietne per se, bet faktiskā web serveri. Jūs rakstīt pārējo web serveri rakstīts C, kura mērķis dzīvē ir saņemt HTTP pieprasījumus, šos Virtuālās aploksnes mēs turpini runāt par, un faktiski atbildēt vai nu ar daži statiskā content-- Like dot HTML fails, vai dot JPEG vai jebkuru citu failu skaits, vai pat PHP failu, kurā jūsu mājas serveris gatavojas interpretēt šo PHP kods un izspļaut rezultātus. Tagad mēs esam ja jums diezgan daudz shēmas par it-- patiešām sadales kods problēmu noteikti seši ir vairāk nekā 1000 līnijas garš, no kuriem daudzi ir komentāri, būt fair-- bet tas ir tiešām domāts būt iespēja lai saņemtu savu roku netīri diving par diezgan lielu projektu ka mēs ļoti konkrēti esam cirsts gabalus jums, tā, ka tiešām, kad izejat CS50 un ievadiet reālo pasauli plānošanu un vēlas plunčāties jebkurš projektu skaits, jums ir daudz lielāka komforts lejupielādējot kādu avotu kods, daži open source projicēt tīmeklī, un niršanu un padarot izmaiņas, kuras jūs redzat fit. Problēma noteikti septiņi būs par padarot savu tīmekļa lietojumprogrammu kas ņem dinamisku ievadi un rada dinamisku izejas formā no etrade.com līdzīgu mājas lapā. Un problēma noteikti astoņi pievērsīsies vēl citā valodā pazīstams kā JavaScript. Tikmēr, galīgā Projekts ir pie horizonta. Ts pre-priekšlikums ir saistīts nedēļu no šodienas. Pre-proposal-- par specifikāciju, kas ir par CS50 ir website-- ir diezgan gadījuma iespēja jums nosūtīt diezgan īss e-pastu savā mācību kolēģiem tikai jāinformē viņam vai viņai par to, ko jūs domājat, lai izmantot viņu kā dēka. Un ir veselība check-- vai jūs domājat par nokošana off too daudz vai varbūt pārāk maz, vai varbūt jums nav ne jausmas, nekāda un vēlas iesaistīties sarunā. Pēc tam ir priekšlikums un ziņojumu statusu, tā sauktais CS50 hackathon šeit Cambridge par Hārvardas un Jēlas studenti līdzīgi. Gala Projekta īstenošana ir tad jāmaksā. Un tad CS50 godīgi šeit, Cambridge, kā arī vēl viens New Haven. Tātad priekšlikumu, ieskatieties mājas lapā par šiem datiem. Bet vēl aizraujoši, arī ir iespēja saņemt rokas netīras, un jūsu domas atvērti kopumā ķekars tēmām un instrumentu un metodes, kas ir papildu ar kursu galvenajai mācību programmas, bet tomēr saistīti. Kā arī brīnišķīgi pakāpieni līdz dara patiešām atdzist galīgos projektus, kas krietni pārsniedz materiāla mēs esam uz formāli problēma komplekti vai lekcijā. Tā iet uz CS50 mājas lapā par visa žurnāla semināru. Ja jums vēl nav reģistru, tas ir jauki. Iet uz priekšu un pierakstīties vēl un mēs sekot līdzi dzīvu straumēšanas saiti, diena un laiks ir mājas lapā. Un viss būs reģistrē un nodot tiešsaistē Ja jūs nevarat veikt konkrētas dienas un laiki. Attiecībā uz to, kas ir priekšā thereafter-- labi, Protams, tur ir CS50 hackathon. Šī fotogrāfija, atgādināt, no nedēļas nulles ņemt ap 04:00 viens vakars gadu iepriekš. CS50 gadatirgus, kas atkal notiks abās pilsētās. Un tad, tikai stādīt sēklas, pat ja mēs joprojām ir mēnesī plus kreisajā pusē, ja vēlaties pievienoties CS50 pašu mācību darbinieki, un jūs vēlaties, lai sāktu domāt par kļūst CA, vai mācību kolēģi, zināt, ka mēs sāksim runāt vairāk par to, ka vēlāk šajā semestrī. Bet attēlotie šeit lielākā daļa no šī gada komandu. Un tā, PHP-- un es biju tik skumji pagājušajā nedēļā, ka [? Allyse?] Laipni devās uz centieniem iegūt ASV šie brīnišķīgi butaforijas ka man nav galu galā, izmantojot, lai tā tiešām tikai skatījās veida stulba ka mums bija lāpstu sēdēja šeit visu diena pagājušajā trešdienā, un nedaudz karoti. Bet tas bija mans metaforisku veids, kā mēģināt gleznot aina par to, kāpēc mēs esam pārejot no C uz valodu, piemēram, PHP. Un to pašu varētu teikt par jebkuru skaits languages-- Java, Python, Ruby vai ķekarus others-- bet tā kā C, piemēram, rakstot programmu C varētu parasti būt, piemēram, ņemot karoti kā šis un rakšana caurumu zemes, smiltīs vai netīrumiem. PHP ļauj jums veikt daudz Lielāki kodumi izrakstās no problēmas, rakstiski daudz mazāk kodu izmantojot daudz mazāku rīku, jo tur ir tik daudz vairāk funkcionalitāte pieced in. Tagad, ja mēs patiešām dramatiska, mēs gribētu kaut ko lāpsta šeit, bet lai tā būtu. Tajā pašā laikā, no otras puses metafora mēs nāca klajā ar ir, protams, jūs varētu izmantot kaut kā atslēgu āmurs kaut kā naglu. Bet, protams, ir tiesības instruments, lai izmantotu notiek būt ne tik daudz valodā sauc C- un tagad es vienkārši kaitina [? Sanders,?], Iespējams, mēs noteikt, ka later-- tik pareizais instruments, lai izmantotu bieži nav būs šis zemākais līmenis rīks. Un tiešām, C nav valoda, lielākā daļa no jums ir kādreiz gatavojas izmantot, vai vajadzētu obligāti izmantot vēlreiz. Un patiesībā, nedaudz secret-- vienīgo reizi Es izmantoju C sevi ir diezgan daudz, starp Septembra līdz decembrim katra kritiena semestris. Un tas ir tāpēc, ka mēs izmantot to kā iespēju mācīt pamatus plānošanas, un ar to datoru zinātnes pamati, datu struktūras, algoritmi un like-- bet ļoti ātri būs jums redzēt, ka šobrīd sintaksi un idejas pamatā C Ir tik lieliski nodot vairāk mūsdienu augstāka līmeņa valodas, piemēram, PHP un Python un Perl un Java un mērķis-C- faktiski, ne tik daudz Mērķis-C- bet Swift, tie jaunāku valodas, ka daudzi no jums būs tad plunčāties ar jums galīgo projektu. Tātad bez papildu ADO, pieņemsim faktiski izmantot PHP, lai atrisinātu dažas problēmas. Atgādināt, ka agri, pēdējā nedēļā, mēs tikai izmanto CS50 IDE, mēs uzrakstīja skaists maz programmu ka tikko teica, "Hello pasaule." Un tad es saglabāti to failu sauc hello.php. Un tad es skrēja šo komandu. Un kāpēc? Angļu valodā, kas notiek šeit? Ko es biju dara, kad I ilga šo komandu? Yeah? Mērķauditorija: Tur ir dažas funkcijas PHP kas skan tas, ko ir in-- saprot, ka. DAVID Malan: Labi, tur ir dažas funkcijas PHP-- un ļaujiet man būtu precīzāk, tur ir programma, ko sauc PHP, pazīstams arī kā Tulks, kas saprot saturu hello.php, un interpretē to top uz apakšas, no kreisās uz labo, un dara to, ko šie saka komandas. Ar hello.php komandas, protams, ir tikai avots code-- funkcijas un mainīgie un cilpas un tamlīdzīgi, ka mēs paši ir sākuši rakstīt PHP. Bet atšķirībā no C, kas ir apkopota valoda, PHP jūs vienkārši rakstīt to, un palaist to. Jūs izlaist ka starpnieks soli pārveidojot to nullēm un tiem, un tad rādīt to. Un tā, kādi ir otrādi par šo? Kāpēc mēs izlaižot soli? Kāpēc vairāk modernajās valodās mēdz izlaist šo soli? Kāds bija ieguvums? Vai vienkārši intuitīvi? Pat tad, ja mēs esam nav rakstīts daudz PHP pirms, kas ir izdevīga par to nav apkopojot savu kodu jūs domājat? Nē? Nav apņemoties? Nesaskrāpē galvu? Jā. Mērķauditorija: dinamiskāku. DAVID Malan: Vairāk dinamiska? Ko tu domā? Mērķauditorija: [dzirdams] DAVID Malan: Labi, labi, tāpēc atkarībā no ieejas, Jums nav, lai apkopotu to katru reizi. Un tas tiešām ir tik vienkārši, kā that-- ko ir punkts turpināt sastādīt savu kodu? Tas ir tikai solis, kas ir making-- šis ir nepieciešama, Par pēdējo vairākus nedēļas, divreiz vairāk soļi kā tikai rādīt savu programmu. Tas ir noderīgi, redzot, ka jums apskatīt kļūdu ziņojumus un tā tālāk, bet tas joprojām ir tikai kaitinošas solis. Un tā programmētāji sapratu laika gaitā, kāpēc nav mēs sākt rakstīt valodas, darīt nav nepieciešams, ka diezgan mehānisku soli, lai varētu vienkārši uzrakstīt Jūsu kods un palaist to. Bet to, kas bija cena ka mēs redzējām mēs maksājām pagājušajā nedēļā, ar vienu konkrētu piemēru? Jā? Ātrums. Tātad [? kas ir] tulki? nedaudz lēnāk, jo nullēm un tiem ir jauka un ātri datorā saprast, jo Intel CPU, vai kāds tas ir, tikai saprot, kas notiek tālāk ar šiem modeļiem bitiem. Tā tulka ir programma, kas patiešām ir lasīt ASCII avots kodu, kas jums ir rakstisks, un pārvērst to, tā sakot, vai izdomāt, kā tas galu galā pārveido uz nullēm un uzņēmumiem. Tātad tas tikai ņem nedaudz mazliet izpildes hit. Tātad, tas ir mazliet kompromiss. Tagad, ja mēs to darām vairāk nekā šeit, ļaujiet man iet uz priekšu un darīt piemēru šādi. Ja es iet šeit, jaunu failu, es eju lai saglabātu šis atkal ir hello.php. Un tagad es esmu gatavojas iet uz priekšu un teikt, "print hello world" - un atceros, ka es varu izmantot drukāt, man nav ir jāizmanto drukāšanas-F. Un tagad šeit lejā, ja man PHP par hello.php, huh-- I nav, šķiet, ir interpretējama tā. Ko es daru nepareizi? Mērķauditorija: The leņķveida aproces. DAVID Malan: Jā, jums ir nepieciešams ka leņķis kronšteins up top. Tātad, tas ir sava veida kaitinošas, bet jūs pierast pie tā ātri. Ja man ir rakstīt PHP kodu, es parasti ir nepieciešams pateikt programmu, vai pateikt tulks, hey PHP, šeit nāk daži PHP kodu. Un tad labu pasākumu, es aizvērt šo ne ar šo, bet gan tikai ar jautājuma zīmi leņķī kronšteins, tā ka tagad šeit lejā, ja es palaist to vēlreiz, tagad Es iegūtu vēlamo rezultātu. Tagad pieņemsim do nelielu optimizāciju, tikai tāpēc, ka jūs esat redzējis to pirms tam. Tas ir sava veida kaitinošas, ka I jāskrien PHP kosmosa hello.php, jo pagājušajā I varētu vienkārši uzrakstīt dot slīpsvītru programmas nosaukums, kas ir sava veida jauki. Tas ir sava veida labāku lietotāja pieredzi. Tātad izrādās, jūs varat darīt PHP ar following-- I var izmantot šo diezgan noslēpumains buršana augšpusē šeit, ko parasti sauc zaņķis, saskaņā ar kuru tas ir krasi simbols, tā teikt, tas ir bang vai izsaukuma zīme. Un tagad tas ir ceļš uz programmu par tipisku Linux sistēmu, kas sauc par vidi, vai env. Un tas line-- garš stāsts short-- line viens tikko saka, hey dators, atrast PHP tulks man vidē, atrast to savā atmiņā, lai runāt. Un, kas ir jauki tagad, ir ka, ja es iet uz leju šeit, Es varu darīt dot slīpsvītru sveiki dot php, or-- hmm. Atļauja liegta. Nu, jūs redzēsiet vēl vairāk par šo ar problēmu noteikti septiņi, ja jums vēl nav, ar atļaujām. Izrādās, ka man ir nepieciešams izpildīt šo komandu sauc [? chamod?] pārmaiņām mode-- plus x hello.php. Man vajag [dzirdams] tas viens papildu solis, kas ir spēcīgi manu datoru, padarīt hello.php izpildāmā. Un tagad skatīties, ko happens-- dot slash hello.php, tas tikai sākas. Man nav nepieciešams, lai precizētu tulks vairs. Un es varu darīt to pat prettier, tomēr, ja es pārdēvēt šo lietu. Ja es pārvietot hello.php tikai Hello-- tik paziņojuma augšējā kreisajā stūrī, ka programmas nosaukums ir tiešām tagad tikai Sveiki. Tagad es varu darīt to izskatās C programmu, pat ja tas ir rakstīts PHP-- vai atklāti jebkurš skaits no citām valodām. Tātad margināls uzlabošanu, nē funkcionālā atšķirība. Bet tas ir tikai nedaudz zinātkāri Tagad, lai jūs varētu rakstīt programmas jebkurā valodā, un lietotājam nav ir jāzina, vai vienalga, kas tie ir. Nu, pieņemsim apskatīt vairāk pārliecinoši piemērs tagad ka es saputo iepriekš. Un to sauc quote.php. Un tas ir pieejams tiešsaistē. Un ievērosiet, ka tas ir diezgan short-- bet tas ir komandrindas programmu, kas ir gatavojas meklēt akciju cenas man, kas patiesībā notiek būt piederīgs problēma noteikti septiņi. Tātad, pieņemsim redzēt, ko es daru. Tajā pašā augšā es esam ieguvuši atklāts kronšteins jautājuma zīme PHP. Tad es esam ieguvuši šo pozīciju, ar kuru es esmu pieprasot failu sauc functions.php-- mēs ejam, lai redzētu vairāk par šo mazliet, bet tas ir kā C s versija asu ietver, kur jūs vēlaties doties ietvert citu failu. PHP aicina tā pieprasa, lai gan tas ir arī šādas funkcijas. Un izrādās, ka ir function.php tikai kaut ko es uzrakstīju pirms klasē. Man to tajā pašā direktorijā, jo Es gribēju faktors dažus kodu ka mēs varētu vēlēties izmantot citur. Tikmēr, jūs varat droši secināt, kas notiek šeit. Tas ir nedaudz atšķiras no C- bet Ko es domāju ar nodrošinātu pareizu izmantošanu? Tulkot šo vairāk tehniski. Kādos apstākļos es esmu atmest programmu, vai izejot? Yeah? Mērķauditorija: Kad jums nav divi komandrindas argumentus. DAVID Malan: Kad man nav uz komandrindas argumentus. Un atcerieties, ka viens no šiem argumenti ir programmas nosaukums pats par sevi. Un otrs būs citu vārdu es rakstīt pēc uzvednes. Tik vienkārši, piemēram, C, šis ir mans veids, kā pārbaudīt, did lietotājs sadarboties un palaist programmu, kā man paredzēts? Tagad tur ir kaut kas nedaudz atšķirīgs ar C- vispirms mums ir šī dolāra zīmi, un ko dara dolāru pierakstīties apzīmētu PHP? Tikai mainīgs. Tas ir all-- tikai mainīgais, kam seko ko jūs vēlaties, lai tiešām to nosaukt. Ievērojiet, ka ir kaut kas pazudis no mana PHP programmas, tāpat kā tas bija pazudis pēdējais nedēļā, salīdzinot ar C, kas ir tas, ko? A veida, bet arī kaut kas cits. Nav kaut kas function-- galveno funkciju. Nav galvenā funkcija. Tu vienkārši sākt rakstīt jūsu kods bez jāuztraucas par diezgan patvaļīgi Konvencija nosaucot kādu noklusējuma funkcija galvenais. Tātad ARG C ir tikai tiešām globāls mainīgais to, ka interpretators padara pieejamu man. Tagad tas ir interesanti. Tātad uzmeklēt sīkumi. Dollar zīme krājums ir uz pa kreisi, tas ir mans mainīgs. Labajā pusē, tur ir acīmredzami funkcija PHP sauc lookup ka Es esmu iet mana pēdējā komandrindas arguments kuri paredzēti, kāds vārds. Un mēs redzēsim, kā tas strādā brīdi. Un tad visbeidzot es esmu ziņot cenu. Es esmu izdrukāšana vienu īpatsvars tāda un tāda. Un atcerieties, tas ir Veids, PHP-- veidā in PHP-- ja jums nav jādara dolāra zīme S vairs. Jūs varat izmantot cirtaini bikšturi un iespraudiet kādu mainīga. Jums nav jāuztraucas par izmantojot printf tādā pašā veidā. Un kā malā, kad jūs nodot mainīgo iekšpusē pēdiņās, piemēram, tas, Jūs izmantojat iedomātā tehniku sauc mainīgs interpolācija. Tas tikai nozīmē, pievienojiet mainīgo šeit. Un kā malā, daži no jums, kas nāk no citām programmēšanas vidēm, Jūs nedrīkstat izmantot vienu pēdiņām ap stīgas, lai to paveiktu. Jums ir izmantot dubultās pēdiņas uz mainīgs interpolācijas strādāt. Citādi jūs burtiski redzēt šos cirtaini lencēm. Tātad visbeidzot, iesim uz priekšu un palaist to. Ļaujiet man manu terminālis nedaudz lielāks. Ļaujiet man iet uz priekšu un palaist iekšā manu quote direktorijā. [? CDsource?] [? AM?] [? quote?] PHP quote dot PHP, un es esmu gatavojas, lai meklētu kaut ko piemēram GOOG, kas ir tās svārsts simbols, un viena daļa tās jauno nosaukumu, Alfabēts Inc, maksā 717 $, kā šodien. Nu labi, ja mēs gribam, lai palaist šo vēlreiz, kāds ir cits akciju biržas viņi vēlas meklēt? Microsoft Es domāju, ka ir Tas viens, MSFT-- 53 $. Es domāju, ka Yahoo ir varbūt, ka. Un Facebook ir, ka. Tātad, kas ir šī programma dara? Burvju šķiet, ir iestrādāta šajā uzmeklēšanas funkcijas. Tātad pieņemsim ātri apskatīt. Izrādās, ka nenāk ar PHP, tas ir functions.php. Un mums nebūs iet cauri Tas ļoti detalizēti, bet paziņojums rezolutīvo vārds šeit ir ka uz functions.php-- sešu līnijas Es burtiski saku funkciju. Es norādīt vārdu manu darbību. Tad es norādiet kādu argumentus, vai parametri, Es gribu, ka funkcija take-- nav veidus. Un tad es to īstenotu. Un es ņemšu vilnis savu roku pie īstenošanā, jo tas ir diezgan uzlabotas tiesības tagad, bet mēs redzēsim atkal faktiski in nedēļu problēma noteikti septiņi. Bet es varu sakopt šo augšu, too. Es arī iekļauts šodienas kods versija Citāta, kurai nav dot PHP failu. Jo to, kas ir iespējams pie top par programmu, ko sauc vienkārši citēt? Ka tā saukto shebang-- diezgan noslēpumains buršana ka saka atrast PHP un pēc tam palaist to uz manu kodu šeit. Labi, lai nes mums, kur mēs left off pēdējais LAIKU_ gan ar daži spēcīgākās piemēri. Visus jautājumus, kas līdz šim par PHP vai ko mēs darām? No-- labi. Yeah? Mērķauditorija: Inside HTML failus, do you-- [? vai tu ?] [? tikai sauc to?] [dzirdams] PHP failu? DAVID Malan: Labs jautājums. In tīmekļa kontekstā, ko mēs esi burtiski par pāreju uz, Jums nav izmantot tā saukto zaņķis augšpusē, jo web server-- bieži Programma sauc Apache vai Microsoft IIS, Internet Information Server, vai jebkuru citu tīmekļa servera programmatūru skaits, zina, ka tad, kad redz Punkts PHP failu, ka tā vajadzētu palaist tulkam par to. Tas neizskatās tajā pirmajā rindā. Tātad šīs pirmās rindas triks ir tikai tad, kad esat rakstiski komandrindas programs-- kas mēs nevarēsim darīt super bieži, bet tas ir mūsu veids, kā pārvarēt Mūsu c piemēri šim mūsu PHP. Tātad pieņemsim patiešām pārvarēt šo pasauli no komandrindas pasaulē ar Web darot sekojošo. Ļaujiet man iet uz priekšu un izdarīt nekā šeit tikai brīdi. Tātad, ja mums ir web serveri, vai drīzāk ja mums ir mana klēpjdators nekā šeit, ko es ņemšu zīmēt kā šis. Un šeit mums ir Interneta tādā vai citādā veidā. Un tad vairāk nekā šeit, mums ir servera kādā building-- tas ir kā internets works-- un šeit ir serveris ar dažiem gaismas varbūt. Kas patiesībā notiek starp šiem diviem savienojumiem? Tātad šajā ēkā ir tīmekļa servera. Tas ir tikai dators kas ir darbojas kāda darboties system-- varbūt bezmaksas programmatūras sauc Apache, kas CS50 IDE darbojas. Tātad jūs faktiski var domāju, ka šīs ēkas kā ēka kas CSt0 IDE ir saglabāts. Tas ir, ja jums visiem ir kontiem, kur jūs visi ir sava mājas serveri darbojas, jūs visi ir savu unikālu URL, kā mēs sākām apspriest, un jūs redzēsiet vairāk P. noteikti seši. Lūk, mans klēpjdators kaut kur citur internetā. Un tad, kad es apmeklēju URL, kas pieder man, ka interneta satiksmes notiek pāri uz serveri, servera saņem HTTP request-- Tāpat kā saņemt index.html un tas ir Atbildot uz šo mājas lapu. Tātad tas ir vispārējs paradigma. Tā kā viss uz augšu Līdz šim šodien, viss notiek tikai robežām šīs ēkas. Man bija, izmantojot savu klēpjdatoru, taču Man bija saistīts ar CS50 IDE, tāpēc visas šīs programmas, es biju darbojas bija iekšā šajā serverī, pati. Bet tagad, sāksim atkārtoti PHP uzrakstīt dažas faktiskās programmas, kas apkalpo up ar web serveri. Un, lai to izdarītu, es iešu par visu ķekars piemēru kas ieviestu šo ideju šeit. Tātad šis ir sava veida iedomātā veids aprakstot programmēšanas paradigmu. Un patiesībā, kā jūs izejat CS50 vai strādāt pie galīgajiem projektiem, vai veikt kādu sekot uz klasi, jūs sākat redzēt, ka world-- īpaši ņemot izauguši ar valodas kā C ka ir super zems level-- saprast, ka tur ir labāks veidi rakstīšanas programmatūru. Ir dažas modeļi jūs varat sekot, daži paņēmieni, lai organizētu failus un veidi, nosaucot savus uzdevumus, tā ka garš stāsts īss, pasaule ir jānāk klajā ar visu ķekars akronīmu un nosaukumi veidiem plānošanu. Šie ir tikai metodes, jūs varētu izmantot. Un viens no tiem sauc MVC, Model View Controller. Un tas ir tikai, lai Tagad, pārāk sarežģīti veids, kā pateikt, cik jums vajadzētu nolikt PHP balstītas mājas lapā, mūsu gadījumā. Kā jūs organizēt failus, kā jūs organizēt savu loģiku, tādā veidā, kas padara to vieglāk rakstīt sarežģītāku mājas lapas? Un tiešām, mēs ātri nokļūt ar p-noteikti septiņi. Tātad pasaulē MVC, jūs gatavojas redzēt, ka mūsu kodu var vispār raksturot kā nu modeļa kodu, vai kontrolieris kods, vai skats kodu. Un es esmu gatavojas pārspīlēju to kā follows-- kontrolieris ir smadzenes savu programmu, tas ir, ja visi Interesanti loģika notiek. Tātad viss, ko mēs esam bijuši rakstiski līdz šim klasē, ir veids kā kontrolieris code-- tas kontrolē jūsu programma, jūsu cilpas, jūsu apstākļi, jūsu funkcijas un mainīgos un viss kas. Views, tagad gribam būt nedaudz vairāk nekā skaidrs pasaulē internetā. Skats ir estētika Jūsu mājas lapā. Tas ir tas, ko lietotājs sees-- attēlus, HTML tabulas, HTML tagus, un visi no ka, visi no pūkains estētisko sīkumi, kas nav tik grūti rakstīt, bet ir tieši tas, ko jūs radot, ir tā sauktais skats, estētika. Un modelis, galu galā, notiek būt datubāzes stuff-- kas mēs sāksim iegremdēšanās visu jo vairāk šo trešdien. Tātad kontrolieris ir loģika, skats ir estētisks sīkumi, un modelis būs kur mēs saglabājam mūsu aktuālus datus. Tātad pieņemsim apskatīt šo konkrētāk ar šādu piemēru. Es iešu manā direktorijā šeit Šodienas avota code-- kas visi ir pieejams tiešsaistē. Un es iešu uz versiju nulles. Un šeit is-- sauksim to par no CS50 tīmekļa versija nulle. Tur nav daudz šeit vispār. Tas ir ļoti vienkāršs web lapa, kas ir iespējams, izmantojot to, ko HTML tags-- tikko uzminēt no pagātnes piemērus? Kas tas ir? H1-- droši vien par to liels treknrakstā virsraksts, ka logo up top, CS50. Un kas cits ir spēlēt? Yeah? Mērķauditorija: Nekārtots saraksts. DAVID Malan: Nekārtots list-- tā UL tag un varbūt pāris LI tagiem. Un, ja jums nav atcerēties tiem, tas godīgi nav svarīgi. Tie ir pūkains veida īstenošanas informācija par HTML ka tu ātri uzmeklēt un tu esi atpakaļ pa ceļam. Mēs vairāk koncentrēties uz plānošanu idejas, kas ir par juicier gabali. Tātad pieņemsim tikai veikt ātri apskatīt HTML-- un patiesi ja es atvērtu Aplūkot kodu šeit, Yup, tas ir tieši tas, kas notiek šeit. Tur ir UL tag. Ligzdot iekšpusē, kas ir LI tagus. Un tad es aizņēmusies URL Faktiskās mācību šeit. Un tad lectures.php ir acīmredzami cits dinamiski radīts lapa kas notiek, lai būtu, pieņemsim see-- ah, pirmās divas nedēļas lekciju. Tātad nedēļa nulle un nedēļas viens, pieņemsim apskatīt this-- ja es Skatīt lapas avotu, arī super vienkārši. Tie ir vadošie līdz divām lappusēm sauc week0.php, un week1.php. Tāpēc uzskatu, tagad to, kas notiek. Kad es noklikšķiniet uz week0.php, mans klēpjdators padara pieprasījumu week0.php. Web serveris, pazīstams arī kā, CS50 IDE, saņem šo virtuālo aploksnē. Tas ir redzēt ziņu piemēram, iegūt week0.php. Pēc tam interpretējot failu, top uz leju, pa kreisi, lai right-- failu sauc week0.php-- un spitting veic rezultātus. Tātad iekšpusē šo failu, week0.php, jābūt kontrolieris loģika, kas ir radīt šo HTML, un mēs drīz redzēt, ka. Bet tagad, ļaujiet man noklikšķiniet uz nedēļu nulles, un tagad mums ir trešdien un piektdien, un tagad mums ir slaidus lēnām no nedēļas nulles. Un jūs varētu atgādināt Tas no ceļu atpakaļ, kad. Tā, ka viss šis mājas lapā dara. Tātad pieņemsim apsvērt, kā tas dara to. Es iešu atpakaļ pirmkodu šeit, CS50 IDE, un es esmu gatavojas atvērt index.php. Augšpusē šo failu ir ķekars komentāriem. Un pēc tam pa vidu šo failu, to izrādās, nav PHP koda whatsoever. Jo, ja jums nav kāda no atklāts kronšteins jautājuma zīme PHP tagus, Jūs esat brīvi vienkārši ielieciet HTML. Jo tas, ko PHP tulks ir paredzēts darīt, ir tad, kad tas skan šo file-- augšas uz leju, pa kreisi, lai right-- tas tikai interpretē kodu tā uzskata starp šie iekavām jautājuma zīmi. Un kaut kas cits, ka tā nav atzīt par PHP, tas tikai atklepo. Un HTML ir viens no sīkumi tas būs tikai izspļaut. Tātad šis fails varētu būt aicināti index.html, bet es esmu nosaucot visu dot PHP kā atspēriena. Lectures.php-- līdzīgi underwhelming, tas ir tikai daži HTML. Week0.php, līdzīgi tikai daži HTML. Bet tagad pieņemsim likts uz proverbial engineering cepure, un apsvērt, kā mēs varam uzlabot šo. Tas nav grūti to darīt, bet es veida no nodota vērā kopēt un ielīmēt. Un patiesībā, ja es drīkstu nedēļā divas, jūs zināt, ko es esmu, iespējams, gatavojas darīt? Es iešu uz week1.php, es esmu gatavojas uzsvērt visu. Es esmu gatavojas kopēt, ielīmēt uz jaunu failu sauc week2.php, kniebiens daži URL, un būt par manu ceļu. Tātad, pamatojoties uz to, ko mēs esam redzams C jau, tas nejūtas labi, cerams. Kopēt, ielīmēt reti pareizais risinājums. Tātad, ko mēs varam sākt ko darīt, lai uzlabotu šo? Ja ir iespējas par labāku dizainu? Ar laiku es nokļūt nedēļa astoņi, tas būs būt tiešām kaitinošas ja es vēlos mainīt fonta par katru no Mani lapas, vai, ja es gribu mainīt struktūru izkārtojumu. Tātad, ja ir iespēja par labāku dizainu? Nu, pieņemsim apsvērt to, kas ir dalīta starp visiem šiem failiem. Lūk nedēļu viens, šeit nedēļa nulle, šeit ir lectures.php, lūk index.php--, kas ir tāds pats, un Kas ir atšķirīgs, rupji runājot, katrā no šiem failiem? Yeah? Mērķauditorija: [dzirdams] DAVID Malan: Labi, labi. Tātad tur ir modelis, protams, saskaņā ar kuru Katru reizi, kad es izvēlos lekciju I, Es būtu radot ļoti līdzīga izskata lapā. Un tāpēc varbūt es varētu sviras fakts, ka patiešām, mēs apzināti skaitliski indeksētas mūsu lectures-- ja es varētu likt vēl vairāk vārdus savā atbildē. Un kāda ir vienīgā lieta, tiešām, kas ir mainās starp nedēļas one-- un ļaujiet man ritiniet uz leju, lai tas aptuveni vienā un tajā pašā place-- Tātad, šeit ir nedēļa nulle, aptuveni augšpusē. Te ir viena nedēļa, nedēļa nulle, nedēļu vienu, nedēļa nulle. OK, burtiski, ja jūs zināt neviena programma whatsoever, tas ir tagad tāpat kā modelis saskaņošanas spēle. Tātad, kas ir atšķirīgs? Yeah? Mērķauditorija: [dzirdams] DAVID Malan: Labi, tāpēc nosaukums mainās, kādreiz tik nedaudz. Zero notiek, protams, uz vienu. Pats notiek ar H1 tagu. Un mums nav gluži redzēt to kā viegli, jo URL ir mazliet garš. Bet tie URL mainās nedaudz. Bet to, kas nemainās ir, es uzdrošinos saka, lielākā daļa no satura page-- HTML tag ir tas pats, galva ir tas pats, nosaukums ir gandrīz tāds pats, ķermenis ir tas pats, un gandrīz viss pārējais ir vienādi, izņemot šie maz tweaks. Tātad, kā mēs varam iet par faktoringa daži šo out? Nu ļaujiet man ieteikt tieši ka nākamajā versijas. Tātad šeit versijā vienā, man ir precīza pašus failus, kā arī pāris citiem. Lūk index.php-- un pat tad, ja jūs nekad neesmu redzējis PHP agrāk, ko es droši vien dara, lai atrisinātu šo problem--, pamatojoties uz to, ko jūs redzat šeit? Jā, ir tā, ka nedaudz apņemšanās? Nē? Jā, iet tālāk. Mērķauditorija: [dzirdams] DAVID Malan: Yep. Mērķauditorija: [dzirdams] DAVID Malan: Man vajag, lai jūs runā tikai nedaudz skaļāk. Mērķauditorija: [dzirdams] DAVID Malan: Labi, labi. Un es think-- tas bija grūti dzirdēt you-- bet es domāju, ka tas, ko jūs saņemat pie tas, ka tagi, kas bija kopīga up top, un tagus, kas bija izplatīta uz dibens, tagad ir ņemti ārā, vai nekas kādi faili? Header.php un footer.php-- un mēs ejam veikt dažas tweaks, lai risinātu bažas jums tikko izvirzīts par numuru maiņu, par Piemēram, ja es dzirdēju jūs pareizi. Bet tas, šķiet, ir būtība no tā. Ja tur bija milzīgs daudzums atlaišana pie lapas augšpusē, un milzīgs daudzums redundances apakšā, pieņemsim burtiski tikai izcelt un samazināt šo saturu ārā, ielieciet to atsevišķā file-- tāpat kā ideja CSS, kur mēs ņemt ārā ļoti līdzīgs estētika, nodots tā atsevišķā dot PHP failu, izmantot prasa mechanism-- kas ir kā C asu include-- kas būtībā ir tāpat kā teikt iet greifers saturu header.php, un kopēt un ielīmēt tos šeit. Bet ko tas nozīmē, ka tagad index.php, man ir šīs divas līnijas. In lectures.php, es arī ir šīs divas līnijas. In week0.php, es arī ir šīs divas līnijas. Tāpēc tagad, ja es vēlos mainīt virsraksts visu manu lapām, vai es vēlos mainīt būtiska struktūra, Es varu mainīt to tagad tikai vienā vietā, vai divi places-- galvenes un kājenes, attiecīgi. Tagad Kodeksa sāk izskatīties nedaudz vairāk mistisks, vai ne? Bet, ja jūs domājat par to, ko lapa tiek doing-- ja es esmu lūdzot week0.php, tāpat kā par zīmēšanas vairāk here-- kad tiek pieprasīts week0.php, ko tas nozīmē? Burtiski, šis fails ir pārlūku pieprasīts. Tīmeklī server-- pazīstams arī kā CS50 ID-- grabs tas fails, week0.php, un skan tā augšas uz leju, no kreisās uz labo. On line vienas, tā uzreiz rodas atklāts kronšteins jautājuma zīme PHP, nepieciešama header dot PHP, un tāpēc ko PHP tulks does-- kas ir iebūvēts tīmeklī servera, jo mēs konfigurēta tas par you-- tas automātiski pārslēdzas uz header.php, kopē saturs, pastas tos šeit. Bet tad tulks tikšanās jautājuma zīme aizvērt kronšteins, tāpēc tas viss ir darīts domāšana. Tagad tas tikai akli spits out līnijām divi pa septiņiem, jo tā ir tikai izejvielas HTML. Izpaužas rindā astoņas, un tas, ka pats burvju again-- atverot failu, satveršanas saturu, un pieprasot tās vai ielīmējot tos labi tad vai tur. Bet es tikko norādīja uz bug. Šis ir daļējs solis atpakaļ, jo, ja mēs skatāmies uz header.php, Es esmu veida sagriež stūri. Ko iezīme bija man atdot, lai lai iegūtu šo argumentējama labāks dizains? Yeah? Mērķauditorija: [dzirdams] DAVID Malan: Jā, es veida no samazināt netriviāls stūrī. Jūs norādīja, ka to, kas mainījās bija nosaukums, numurs virsrakstā, un tādu skaitu, H1. Tāpēc mans risinājums bija OK, pieņemsim tikai pārdēvēt lapu, un nenodarbojas ar to problēma whatsoever. Tātad tas ir daļējs soli atpakaļ, lai pārliecinātos. Bet kas ir ievērības cienīgs šeit ir tas, ka tas, ko es esmu darījis citādi ierēķināts ārā visu kopējo sīkumi. Un footer.php, paziņojums es ierēķināts no visiem, ka, lai gan mazāk, kopīgs sīkumi. Tāpēc man ir nepieciešams, lai kaut kā tagad varēs veikt vēl vienu soli uz priekšu, un noteikt šis nosaukums jautājumi. Tātad, pieņemsim darīt. Ļaujiet man iet uz manu otro versiju šeit, kas, atkal, ir tādas pašas faili izņemot vienu jaunu papildus. Un tas ir nedaudz vairāk runīgs, bet pieņemsim redzēt, ja mēs var kaitināt, izņemot to, kas notiek šeit. Tā vietā, pieprasot header.php, un footer.php, Man šķiet, tikai pieprasot vienu file-- sauc, protams, helpers.php. Un ļaujiet man noteikt, tagad, kas ir iekšpusē helpers.php ir tikai ķekars funkcijas ka es uzrakstīju, tāpat kā līdz šim. Bet es to sauca helpers.php. Tagad acīmredzot, jo line trīs un 10, es esmu zvanot divas functions-- padarīt galveni, padarīt kājeni. Tie nenāk ar PHP, es uzrakstīju tiem sevi. Un es viņus helpers.php. Tagad mēs esam tikai redzējuši šo sintaksi vienreiz, un tas bija super īss. Bet tas ir acīmredzami arguments padarīt galveni, funkcija. Kāpēc es zinu, ka? Nu šeit ir tuvu paren, šeit ir atvērts paren. Un, protams, tāpat kā C, kaut kas starp šīm iekavās ir input-- vai arguments funkcijai. Kas ir datu tips šo argumentu, pamatojoties uz to, ko es esmu uzsvērusi? Ko darīt tiem kvadrātiekavas norādīt, balstoties uz pagājušajā nedēļā? Jā, tas ir array-- īpaši asociatīvā masīva. Un tas, protams, sintakse ir nedaudz bailīgs, bet tas ir tikai iet vienā atslēgas vērtību pāri. Galvenais ir, citēju likt pēdiņas beigās nosaukums, un vērtība ir CS50. Ja mēs būtu darījuši C, tas varētu vietā izskatās vairāk, piemēram, tas, tikai quote likt pēdiņas beigās CS50-- vai tiešām tas būtu cirtaini bikšturi, vai kaut kas līdzīgs, ka C, tam, kad atslēga ir nulle, un vērtība ir CS50. Bet atkal, PHP, lai gan sintakse ir, atkal, mazliet dīvaini, tas ļauj pāriet vārdi, nevis numuri saistīt atslēgas ar vērtībām. Tātad, ko tas viss nozīmē? Ja es iedziļināties helpers.php, aplūkosim šo funkciju. renderHeader.php, drīzāk renderHeader ir mana funkcija, un es zinu, ka tāpēc, ka es redzu funkcija atslēgvārds šeit. Tas ir jauns no C- to acīmredzot ņem argumentu sauc data-- bet es varētu būt sauc šo kaut kas, bet es to sauca dati, vienkārši būt nedaudz clean-- un lietojiet tikai minējums, jo īpaši ja esat programmē kādā citā augstākā līmeņa valoda pirms, kaut virs C, konceptuāli. Kāda vienāds atvērtu skavu kvadrātiekava droši vien nozīmē? Vai kādu tas varētu nozīmēt? Mēs esam ne redzējis šo C Yeah? Tukša masīvs. Konkrēti, tas nozīmē, ka, ja lietotājs nav zvaniet renderHeader ar argumentu, es esmu joprojām turpinās būt arguments sauc dati, bet tās noklusējuma vērtība ir būs tukšs masīvs. Tātad tas ir tikai jauki ērtības. Man nav kliegt pie lietotāja, vai teikt tu izmanto manu funkcija nepareizi. Es varu tikai dot lietotājam noklusējuma vērtība, ja man nav īpaši aprūpi. Tagad šī funkcija, es esmu dodas uz viļņa manu roku pie. Bet šis ekstrakts funkcija ļauj mums nodot šos mainīgos datus uz header.php sekojošā veidā. Un šis ir pēdējais gabals, Es domāju, par bailīgs sintaksi. Te ir mana jaunā versija no header.php-- to mēdza teikt, burtiski, open kronšteins nosaukums CS50, un tas arī bija viss. Un pats par H1. Tagad tas acīmredzot saka kaut kas diezgan bailīgs. Un ļaujiet man vienkāršot šo uz brīdi šādi. Tas ir tas, ko es esmu mainīja manu titulu būt. Tomēr, tas kļūst mazliet neglīts pastāvīgi atvērtām iekavām ar PHP, un pēc tam izmantot drukāšanas funkciju. Izrādās, ka PHP ir stenogrāfija apzīmējums tam, kas ir tikai vienādības zīmi, kas ir tehniski funkcija sauc echo nevis drukāt, bet tas ir tas pats, efektīvi. Ka tikai izskatās labāk. Tas ir tikai sintaktisko cukurs, ja jūs, kas padara manu kods izskatās mazliet labāk. Bet izrādās, un mēs redzēsim to vēlreiz pirms ilgi, mums ir, lai izsauktu šo kaitinoši ilgi funkcija sauc HTML īpašas chars pilsētā PHP, jo izrādās, ir zināmas ieejas ka lietotājs var dot mums, vai arī, ka lietotāji varētu dot mums, ka gatavojas lauzt mūsu mājas lapā. Bet mēs redzam, ka nākamais nedēļa ar JavaScript. Bet tagad, tikai zinu, ka Šis fails, headers.php, vienkārši uzskata, ka titulu Es pieņemts, tas padara pārliecināts, ka tas ir droši ievadīt web lapas, un tas spits to, kā savu titulu un kā manu H1. Tātad, ja es eju uz šo versiju tagad, paziņojums, ka lekcijas ir tās nosaukumu atpakaļ, nedēļa nulle ir savs nosaukums atpakaļ, un Patiešām, HTML es esmu radot ir identisks tam, ko mana pirmā versija was-- izņemot manu atstarpi, jo es esmu sācis formatējumu mans kods nedaudz savādāk. Bet es esmu radīts visiem kods man rūp. Tāpēc ļaujiet man pauzes tikai mirklis, un redzēt, ja tur ir kādi jautājumi vai apjukumu Esmu izveidojis. Labi, tāpēc pieņemsim nesagriežas mazliet grūtāk šeit lai redzētu, vai tur ir iespēja uzlabojumi. Helpers.php arī bija šis funkcija, ko sauc renderFooter. Un, kas ir ievērības cienīgs par renderHeader, un renderFooter? Un atkal, šodienas vajadzībām, zināt ka ekstrakts funkcija ir tikai mans veids garāmbraucošu argumentiem uz header.php un footer.php. Sorry? Mērķauditorija: [dzirdams] DAVID Malan: Jā, es tikai mainīts prasa līnija. Tātad burtiski, es esmu izdarījis grēku no kopējot un ielīmējot, bet atkal. Tas nav liels skaits līniju, bet nāk on-- ja es esmu nokopējot un ielīmējot visu vienkārši mainīt vienu mazu vārdu, un viens mazs vārds, kas norāda Alan Out ir Footer šeit, salīdzinot header šeit. Pretējā gadījumā viss ir identiski, izņemot, Protams, šī funkcija ir nosaukumi. Tātad, ko mēs varētu darīt labāk? Nu ļaujiet man atvērt šo versiju šeit, saskaņā ar kuru ar helpers.php, kāpēc ne es tikai iegūt mazliet gudrāku par šo? Uzrakstiet nedaudz sarežģītāka kods, bet sauc to padarīt? Tātad, ko es esmu būtiski mainījies? Tas aizņem arguments now-- divi argumenti, dati joprojām. Un tad, kas ir pirmais nosaukums, iespējams, tiek izmantoti, pamatojoties uz to, ko jūs lasāt šeit? Pat ja daži no sintakse vēl ir jauns. Kas ir dolāra zīmi veidne? Sorry? Mērķauditorija: galvenes vai kājenes. DAVID Malan: galvenes vai kājenes. Tātad acīmredzot, es nolēmu, ka, ja vienīgā lieta, kas ir mainīt ir tas, ko veidne es gribu lai print-- un veidnes Es domāju, tas ir projektu par kods, kas es gribu produkciju, bet es gribu, lai kontaktdakšu dažās values-- tādēļ, ja tas ir tikai iesākums vai kājenes, kāpēc ne es parameterize kas un zvanīt arguments dolāra zīmi veidne? Un tad tas bailīgs sintakse ļauj man izveidot ceļu lielumâ šeit. Tātad dolāra zīme ceļš ir mainīgs. Ko tas sintakse darīt, ja jūs esat pazīstami? Yeah? Mērķauditorija: [dzirdams] DAVID Malan: Tieši tā. Ja veidne ir, citēju likt pēdiņas beigās, header, vai ja veidne ir, quote likt pēdiņas beigās, footer, ka līnija ir ka es esmu uzsvērusi, līnija astoņi, ir vienkārši pieņemtu šo vārdu, piemēram, galvenes, un konkatenācijas to ar dot PHP. Tāpēc mums nebija šo operatoru C. Tas dot operators ir pārsteidzošs lieta PHP-- ja esat iepazinušies ar JavaScript vai Java, Jūs varat izmantot plus parakstīt darīt konkatenācija. C, tas ir sāpes neck-- un es esmu tik žēl, jo p-noteikti seši, jūs nāksies darīt this-- tas ir sāpes kaklā saķēdēt stīgas. Kāpēc? Nu, jo, ja tev virkne, kas ir šis garš, un vēl virkne, kas ir šis garš, Jūs nevarat vienkārši pievienojiet tos kopā. Ko jūs, nevis jādara C? Yeah? Mērķauditorija: [dzirdams] DAVID Malan: Jums ir malloc atmiņa, vai izmantot masīvu uz skursteņa. Un jūs faktiski ir darīt, ka masīva pietiekami lielas uzstādīt šo plus tas, plus slīpsvītru nulle. Tad saķēdēt tos kopā, izmantojot iemaisa kaķis vai manuāli ar cilpas, vai kādu paņēmienu skaits. Un mēs parādīsim jums pāris in p-noteikti seši. Tas ir sāpes kaklā. Un tas ir patiesi tas, ko es domāju par Tas versus this--, piemēram, C, salīdzinot ar PHP. Jūs tikai iegūt tik daudz vairāk funkcionalitāti par brīvu, lai jūs varētu koncentrēties, ideāli, uz jautru daļa kodēšana, tad Projekts jūs vēlaties atrisināt, nevis zema līmeņa sīkumiem. Tātad tas tikai rada header.php vai footer.php pamatojoties uz kuriem viens es saucu. Un tiešām, ja es eju uz index.php, paziņojums viss, kas changed-- vietā zvanot padarīt galveni vai padarīt kājeni, Es esmu aicinot padarīt, kam seko šablona nosaukumu, ko es gribu darīt. Un jūs redzēsiet arī tas, jo problēma noteikti septiņi, kurā mēs ļauj jums izmantot pats funkciju, lai padarītu Ķekariem un ķekarus dažādām tīmekļa lapām. Tātad, nevis kavēties pārāk daudz vairāk par šiem details-- ko jūs redzēsiet atkal Problēma komplekts seven-- aplūkosim at tagad sākumā risinājumu uz daudz interesantu problēmu. Līdz šim nekas mēs esam darīts ir saglabātos datus. Faktiski, vienīgā reize, kad mēs jebkad esam glābti kaut ko mēs esam darījuši šajā klasē ir tad, kad mums bija ļoti vienkāršs demo awhile atpakaļ, kuru mēs izmantojām failu IO C, un es domāju, ka es drukāti manā vārdā, un Hannah vārds, un Marijas vārds, vai varbūt Andy nosaukums, un tad mēs saglabāti CSV file-- komatiem atdalītas vērtības failu. Un mēs izmantojām fopen-- es domāju mēs izmantojām fprintf kā es atceros, un mēs saglabāti failu. Tagad tas ir visvienkāršākais datubāzes formā. Ja jūs vēlaties, lai mājas lapu Frosh IP programmu, kurā freshmen var reģistrēt par sportu, jums ideāli gribu darīt kaut ko ar šiem datiem. Pagājušajā nedēļā, mēs neko nedarīja ar data-- mēs tikko teica, Jums ir reģistrēti, nav īsti. Vai varbūt es pa e-pastu Proctor, un tas arī bija viss. Bet tas būtu jauki, ja es varētu dot ka Proctor CSV failu, tāpat Excel failā. Vai vēl labāk, tas būtu būtu jauki, ja es varētu ievietot tās lietotāju vārdus un kopmītnes vārdus un visu, kas datubāzē, kas vienkārši dzīvo uz visiem laikiem, kamēr es izvēlos dzēst datus. Datu bāzes, kas ļauj man vaicājumu informāciju. Un tiešām, tas, ko ir datu bāze. Iepazīstinām šodien, un nākamnedēļ, arī tehnoloģiju sauc SQL-- strukturētā vaicājumu Valoda, kas ir citā valodā. Tas būtībā programmēšana valoda, bet datubāzēs. Un datubāze tagad, tikai domā par kā super iedomātā versija Microsoft Excel vai Google Izklājlapas vai Apple Numbers. Tas parasti ir programma, kas ļauj jums saglabāt visu ķekars datu rindās un kolonnās, gluži kā jūs varētu Excel. Bet to, kas ir jauki, jo īpaši, ja mēs neesam super pazīstami ar Excel, ko SQL ļauj jums jādara, ir jautājums šis informācija rakstot koda rindiņas kur jūs varat, pat tad, ja jūsu datu bāzē ir miljons rindas tajā, Jūs varat atrast lietas super ātri. Faktiski, Excel ir īpaši slikti lielu datu kopu. Un patiesībā, līdz dažas Pirms gadiem, izrādījās Excel būtu tikai ļauj jums saglabāt līdz 65,535 rindas data-- kas izklausās daudz, bet ne reizi, kad es biju grad students, un es atceros paklupšanu pār tas tāpēc, ka man bija radīt CSV failus manu pētījumu un I vēlējās analizēt tos ātri , vienkārši atverot Excel. Protams, mans dators vienkārši avarēja, jo man bija vairāk nekā 65000 rindas. Bet kur bija 65535 nāk no? Kas bija Microsoft dara, iespējams? Ja jūs labi ar savu pilnvaru diviem? Jā, viņi, izmantojot 16-bit vērtība pārstāvēt rindu skaitu. Un divi līdz 16 ir 65,536-- mīnus viens, jo, ja jūs nulle indekss nozīmē, ka bija lielākā daļa no rindās skaits, es varētu būt. Un tas bija tikai dizaina lēmums. Saglabājot 16 bitus, viņi mani ierobežots līdz 16000 rindām, nevis 4 miljardus, kas man varēja būt ideāli. Bet tagad, mēs ejam, lai ieviest šo vairāk tīmekļa kontekstā. Un, kas ir jauka par SQL ir tas, ka pat lai gan tas ir diezgan spēcīgs un diezgan sarežģīta, tā patiešām vārīties līdz četras galvenās darbības, četri pamatfunkcijām, ja jūs will-- Select, par datu izguvei, meklējot par datiem; dzēst vai dzēst datus; ievietot pievienot rindas datu bāzi; un atjaunināšana. Tātad, ja jūs esat kādreiz izmanto Google Izklājlapas, Apple Numbers, Microsoft Excel, jums ir izpildīts, visticamāk, visi šo darbību kā cilvēka ar vienkārši izmantojot savu tastatūru un mouse-- Ievietojot datus, izmantojot acis lai izvēlētos vai meklēt datus, vai atjaunināt datus, vai dzēst datus. Tātad, ko tas nozīmē? Nu, iepriekš uzstādīti CS50 IDE ir programma, ko sauc MySQL. Tas ir bezmaksas, atvērtā koda datu bāze, kas ir super populāra. Facebook, piemēram, to izmanto, lai šis dienā, starp citiem rīkiem, ka viņi izmanto. Un daudz ļoti populārās interneta vietnēs izmantot tas lielā mērā tāpēc, ka tas ir ātri, un tāpēc, ka tā ir bezmaksas. Lai gan, protams, pastāv alternatīvas. Un daži no jums varētu plunčāties ar alternatīvas gala projektiem. Tas ir screenshot, tikmēr, no tīmekļa rīku, ko sauc phpMyAdmin. Tā ir sakritība, ka Šī tīmekļa rīks ir arī uzrakstīts valodā, PHP, bet kas tas ir domāts, lai darīt ir dot mums tīmekļa saskarne ar datu bāzi. Jo MySQL parasti ir kaut kas, vēsturiski, jums varētu mijiedarboties ar tikai ar komandrindu. Un tas būtu super kaitinošas un arcane ir rakstīt teksta komandas, lai izvēlētos dati, ievietot datus, un dzēst datus. Tāpēc daži cilvēki par internetu uzrakstīja tīmekļa programmu ka tikai ļaujiet mums vadīt dati mūsu datu bāzē. Tas ir tāpat kā dubultklikšķi uz Excel, un darbojas tīmekļa versiju par to. Un ko jūs gatavojas izmantot šo galu galā nākamnedēļ, nevis p-noteikti seši, bet ir veidot kaut ko sauc CS50 Finance, kas nāksies datubāzi lietotājiem, ar lietotājvārdi un paroles, dolāru summas, kuras tie ir viņu bankas kontos. Tas būs kaut kas jūs izmantojat, lai saglabātu simboli un daudzumi krājumu, ka lietotāji ir iegādājušies, izmantojot virtuālo dolāru, kas jums dod viņiem. Un tas notiek, lai ļautu lietotājiem reģistrēt savu vietni, tā ka pat draugiem var uzgriezt uz jūsu vietni un faktiski reģistrēt, piesakieties, un spēlē aptuveni un mēģināt atrast vainu savu kodu, un mēģināt atrast bugs jūsu mājas lapā. Un tie būs vienkārši reģistrēties ar pievienojot sevi, efektīvi, izmantojot kodu, jūs rakstīt jūsu datu bāzē. Tā, piemēram, tas ir ātri screenshot par to, ko datubāze varētu izskatīties. Šī bija no vienas no pagājušā gada solutions-- tas ir kā mini Excel failu, kas glabājas mūsu datu bāzē, uzglabā šo programmatūru sauc MySQL. Kreisajā pusē, es esmu acīmredzot dota katrs lietotājs unikāls numurs. Otrajā slejā, es esmu devis ikviens lietotājs name-- mana starp viņiem. Un labajā pusē, Es esmu devis viņiem hash. Tagad tas ir faktiski parole, bet tas nav teksta parole. Tas ir šifrēta parole, ja Jums būs, vai hash parole. Ko mēs atgriezties pirms ilgi. Bet, ja jūs esat kādreiz lasīt raksts par to, kā Jūsu parole kādā bankā vai daži mājas lapa varētu būt apdraudēta, tas vispār var nozīmēt vienu no divām lietām. Tātad tas ir tikai fragments no sešiem lietotājiem. Visi no jums tagad var izdomāt veic, izmantojot hakeru vai sprēgāšanu Ko mūsu sešu cilvēku paroles. Bet, ja jūs esat kādreiz gotten brīdinājumu vai atvainošanās no uzņēmuma vai mājas sakot, žēl, hakeris ielauzās mūsu datu bāzē, jums ir iespējams mainīt savu parole, ko, iespējams, tas nozīmē? Nu, viens, varētu nozīmēt, ka uzņēmums ir bijis vairāk moronic, un ir uzglabātu paroli kolonnā kā šis, nešifrētā. Kas nozīmē pretinieku, kurš nozaga datubāzi, burtiski zina jūsu lietotājvārdu un paroli. Tas ir sliktākais iespējamais scenārijs. Un, kā jūs redzēsiet p-komplektā septiņi, tik viegli izvairīties. Nav absolūti nekāda attaisnojuma, ka forma stulbums šodienas internetā. Two-- un mēs atradīsim dažus rakstus liecināt par to, ka tas joprojām notiek, nonetheless-- divi, varbūt pretinieks nozaga šo versiju datubāzes. Kas joprojām ir sava veida slikti, jo tagad viņi zina, ka man ir seši klienti, Es zinu lietotāja vārdu no šiem sešiem klientiem, un es zinu, šifrēta versijas, vai sajaukts versijas, no šīm sešām klientu paroles. Bet kāds no jums, kas varētu ir darījuši [? Hacker 2?] kur tu ieplaisājusi paroles, vai ņēma Paskaties šo versiju problēmas komplekts, kāpēc ir tā, vēl nedaudz satraucoša ja pretinieks zina savu hash paroles? Mērķauditorija: Tāpēc, ka viņi varētu ievadīt visu vārdnīcu uz hash funkciju. Un, ja jūsu parole ir vārdnīca vārdu, [? viņi var vienkārši match--?] DAVID Malan: Tieši tā, pretinieks var vienkārši uzrakstīt kodu, piemēram, daži no jums izdarīja [? Hacker?] 2, kurā jūs atkārtot vairāk visiem vārdiem vārdnīcā, vai visas iespējamās kombinācijas A ar Z un viens caur nine-- kas izklausās daudz, un tas ir. Bet par datoru, tas ir diezgan darn ātri. Un patiesībā, tas bija punkts [? Hacker 2,?] Bija ņemt sīkumi, kas burtiski izskatās šādi, un dekonstruēt kas tas patiesībā bija. Tātad mēs skatāmies, kā mēs varam uzglabāt tas efektīvāk. Izrādās, par laimi MySQL, tur ir būs datu tipi. Un viens no fun daļas par datu bāzes projektēšana, lai būtu godīgi, faktiski lemjot par sevi kā jums vajadzētu pārstāvēt datus? Ja Jūs pārstāvat tālruņa numuru, kā int, kā liels skaits, vai ilgi? Vai jūs tiešām to darīt kā secību simboli? Un tur var būt ļoti non-trivial ietekme to. Faktiski, viens no Agrākais, jautri Germane stāsti ir tad, kad Mark Zuckerberg bija ēka Facebook, tas sākotnēji tika rakstīts, un joprojām ir lielā mērā rakstīta PHP. Un viens no lielākajiem izaicinājumiem viņi saskaras agri tika mērogošanas. Kad viņi tur pievienojot skolu pēc skola pēc skolas, cik man zināms, viens no sākotnējiem risinājumiem būtībā bija kopēt un ielīmēt daži no datu bāzēm un daži kodu, tā ka Harvard bija darbojas uz sava servera, un MIT skrēja uz savu serveri. Un tas bija iemesls, kāpēc daži no jums, kas varētu atgādināt, jūs nevarētu būt draugi citos tīklos. Jūs, iespējams, nav draugus MIT vai Harvard pirms 10 vai tik gadu, bet jūs nevar span tīklus par daļēji šī iemesla dēļ. Un viens no lielākajiem izaicinājumiem Mark un uzņēmumiem, piemēram, Facebook faktiski apstrādes simtiem un tūkstošiem un miljoniem Pieprasījumu sekundē. Tātad lietas, ko mēs sāksim runājot par šo nedēļu tiešām būs piederīgs rakstīšanas labu programmatūru, un tautā veiksmīgs instrumenti, kas var rīkoties daudz lietotāju. Tātad mēs runājam par lietām piemēram indeksāciju un meklēšanu, bet tas ir to šodien. Mēs redzēsim jums vairāk trešdien. [MUSIC - "Seinfeld" TĒMA] DAVID Malan: jūs varat tas, un atņemt no tā. Un jums nav stick ar daži iepriekš noteikta summa atmiņas. Nu, to, kas notiek, lai varētu saukt? SPEAKER 1: Nu, Kas notiek? SPEAKER 2: Ko tu ar to domā? Viņš sniedzot lekciju. DAVID Malan: Un mēs varam izmantot funkcija sauc malloc uz memory-- SPEAKER 1: Kāpēc nav viņa rokas pārvietojas? SPEAKER 2: Nu that's-- jūs zināt, tas ir normāli. Tas ir tāpat kā viņš ir vienkārši lielie desas karājas tur. SPEAKER 1: Tas ir normāli? SPEAKER 2: Jā, es domāju, ka mēs vienkārši pieņemu viņš nejauši aizstāt savu dezodorantu ar Molekulārās līmes.