1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Uke 8] 2 00:00:02,000 --> 00:00:04,000 [David J Malan] [Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Dette er CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:09,000 >> Velkommen tilbake. 5 00:00:09,000 --> 00:00:11,000 Dette er CS50, og dette er begynnelsen av uke 8. 6 00:00:11,000 --> 00:00:14,000 Et par muligheter denne uken, 7 00:00:14,000 --> 00:00:17,000 blant dem denne talen her, der noen mat vil bli servert. 8 00:00:17,000 --> 00:00:20,000 For mer informasjon sjekk ut lysbildene som er online. 9 00:00:20,000 --> 00:00:24,000 Og også en annen hendelse denne uken av vår egen Thomas Carriero. 10 00:00:24,000 --> 00:00:27,000 Han er en av CS50 er tidligere leder undervisning stipendiater som er nå på Dropbox, 11 00:00:27,000 --> 00:00:29,000 og han er fyren som hektet oss opp med det du vet hva, 12 00:00:29,000 --> 00:00:36,000 så hvis du vil ha mer av det hodet til deres snakk ettermiddag for Dropbox og mer. 13 00:00:36,000 --> 00:00:38,000 CS50 lunsj er denne fredagen. 14 00:00:38,000 --> 00:00:41,000 Vær med oss ​​hvis du er i stand, 1:15, som vanlig, på Fire and Ice. 15 00:00:41,000 --> 00:00:45,000 >> Og nå har vi dykke inn i noe som kalles Seminarer. 16 00:00:45,000 --> 00:00:49,000 Våre CS50 Seminarer, husker, er disse valgfrie klasser ledet av undervisningen fellows 17 00:00:49,000 --> 00:00:51,000 og kurs assistenter og venner av kurset, 18 00:00:51,000 --> 00:00:55,000 folk fra en gruppe på campus kalt ABCD, som er en gruppe av 19 00:00:55,000 --> 00:00:58,000 technophiles på campus, samt en gruppe som heter HCS, 20 00:00:58,000 --> 00:01:02,000 Harvard Computer Society, studenter som er på samme måte interessert i databehandling. 21 00:01:02,000 --> 00:01:08,000 Årets liste over seminarer omfatter seminarer om Android og iOS og JavaScript 22 00:01:08,000 --> 00:01:13,000 og PHP, Unix, Vim, og mer, så innse at disse seminarene kommer opp. 23 00:01:13,000 --> 00:01:16,000 Hvis du ønsker å RSVP for noen av dem leder til den aktuelle nettadressen der. 24 00:01:16,000 --> 00:01:20,000 Vi vil da legge ut på kursets hjemmeside tider og steder når de er ferdigstilt. 25 00:01:20,000 --> 00:01:26,000 Men vet det er 5 år med tidligere seminarer tilgjengelig på nettet, 26 00:01:26,000 --> 00:01:29,000 mange av dem er fortsatt svært mye strøm i form av teknologier du kan 27 00:01:29,000 --> 00:01:36,000 ønsker å spille med for den endelige prosjekter, så hodet det for noen tilgjengelige videoer av disse. 28 00:01:36,000 --> 00:01:39,000 >> CSS, de av dere som er kjent med CSS allerede, 29 00:01:39,000 --> 00:01:42,000 hva er det i et nøtteskall? 30 00:01:42,000 --> 00:01:45,000 Hva er CSS? 31 00:01:45,000 --> 00:01:48,000 Det stilark, og hva betyr det? 32 00:01:48,000 --> 00:01:53,000 Hva gjør det for oss, CSS? 33 00:01:53,000 --> 00:01:57,000 Greit, la oss varme opp med en enklere en, HTML, HyperText Markup Language. 34 00:01:57,000 --> 00:02:01,000 Hva gjør det for oss? 35 00:02:01,000 --> 00:02:04,000 Noen i det hele tatt? 36 00:02:04,000 --> 00:02:07,000 Det blir veldig vanskelig å stille disse spørsmålene. 37 00:02:07,000 --> 00:02:11,000 HTML, HyperText Markup Language. 38 00:02:11,000 --> 00:02:14,000 Ja? Nei? 39 00:02:14,000 --> 00:02:17,000 [Uhørlig student respons] 40 00:02:17,000 --> 00:02:20,000 Ok, bra, gjør det oss til å markere tekst som skal vises i en nettleser. 41 00:02:20,000 --> 00:02:22,000 Det er ikke et programmeringsspråk. 42 00:02:22,000 --> 00:02:25,000 Det er faktisk et kodespråk, som betyr det instruerer leseren hvordan å vise 43 00:02:25,000 --> 00:02:28,000 informasjon, slik den enkleste inkarnasjon av dette som vi har sett 44 00:02:28,000 --> 00:02:32,000 er noe super enkelt som boldfacing, sier åpen brakett b lukket brakett 45 00:02:32,000 --> 00:02:36,000 gjør denne teksten fet, og det er faktisk bare en av mange måter 46 00:02:36,000 --> 00:02:39,000 hvor vi kan gjøre det, og faktisk, i disse dager en bedre tilnærming 47 00:02:39,000 --> 00:02:42,000 til stilisering websiden din, noe som gjør ting fet og kursiv 48 00:02:42,000 --> 00:02:47,000 og sentrert og begrunnet og lignende, ikke gjøres via HTML-koder alene 49 00:02:47,000 --> 00:02:51,000 men heller med en teknikk som kalles CSS, Cascading Style Sheets. 50 00:02:51,000 --> 00:02:53,000 Dette er et språk i seg selv. 51 00:02:53,000 --> 00:02:55,000 Det er også ikke et programmeringsspråk, men- 52 00:02:55,000 --> 00:02:58,000 alle, dette er Dan, som holder med oss ​​i dag. 53 00:02:58,000 --> 00:03:01,000 Noen tekniske problemer. Ikke et problem. 54 00:03:01,000 --> 00:03:04,000 >> CSS tillater oss å stilisere en side 55 00:03:04,000 --> 00:03:07,000 ved å sette det som kalles egenskaper, så la oss ta en titt på denne 56 00:03:07,000 --> 00:03:09,000 ved hjelp av noen enkle eksempler. 57 00:03:09,000 --> 00:03:12,000 La meg gå inn i apparatet i dag. 58 00:03:12,000 --> 00:03:15,000 Jeg har kilden 8 mandag katalogen her, 59 00:03:15,000 --> 00:03:18,000 og jeg kommer til å gå inn i en katalog som heter CSS der vi har en hel haug 60 00:03:18,000 --> 00:03:21,000 av filer som venter på oss akkurat her, 61 00:03:21,000 --> 00:03:27,000 og i denne mappen har vi for eksempel search0.html fra forrige gang. 62 00:03:27,000 --> 00:03:31,000 Nå husker med search0 vi igjen på dette notatet 63 00:03:31,000 --> 00:03:35,000 etter slags implementere Google eller egentlig bare fronten for en uke eller så siden, 64 00:03:35,000 --> 00:03:38,000 og legge merke til at vi hadde noen nye koder der. 65 00:03:38,000 --> 00:03:41,000 Vi hadde h1 for en stor, fet overskrift, 66 00:03:41,000 --> 00:03:45,000 form, som tillot oss å faktisk ha en HTML-skjema for inndata fra brukeren. 67 00:03:45,000 --> 00:03:48,000 Action, hva var meningen med en handling attributt 68 00:03:48,000 --> 00:03:52,000 på HTML-skjema tag? 69 00:03:52,000 --> 00:03:58,000 Hva var meningen med dette, action? 70 00:03:58,000 --> 00:04:00,000 Jeg vil bare gjøre dette i dag. 71 00:04:00,000 --> 00:04:03,000 Handling er målet til hvor skjemaet skal sendes inn. 72 00:04:03,000 --> 00:04:07,000 Det faktum at det står action = "google.com / search" 73 00:04:07,000 --> 00:04:10,000 betyr at når brukeren klikker på send-knappen eller tilsvarende 74 00:04:10,000 --> 00:04:14,000 uansett form felt de fylt ut kommer til å bli sendt ikke til vår server 75 00:04:14,000 --> 00:04:17,000 eller vår apparatet, men snarere til det spesifikke webadressen Google. 76 00:04:17,000 --> 00:04:19,000 Og metoden det kommer til å bruke kalles få, 77 00:04:19,000 --> 00:04:25,000 og få, for nå, er bare en teknikk for bestått informasjonen sammen til en webserver 78 00:04:25,000 --> 00:04:29,000 ved hjelp av URL, så la oss ta en rask titt tilbake på hvordan dette fungerer. 79 00:04:29,000 --> 00:04:31,000 >> Legg merke til at det er en inngang som heter q 80 00:04:31,000 --> 00:04:35,000 hvis type er tekst og deretter en andre inngang av attraksjon sender 81 00:04:35,000 --> 00:04:39,000 hvis verdi er CS50 Søk, og faktisk, hvis vi åpner opp denne filen her, 82 00:04:39,000 --> 00:04:42,000 search0.html, det er en super enkel form, 83 00:04:42,000 --> 00:04:45,000 og hvis jeg søker etter noe som informatikk 84 00:04:45,000 --> 00:04:50,000 og trykk Enter eller klikk på CS50 Søk 85 00:04:50,000 --> 00:04:53,000 legge merke til at det som skjer er utenfor å komme til Google 86 00:04:53,000 --> 00:04:56,000 Jeg har spesielt havnet på denne nettadressen på toppen, 87 00:04:56,000 --> 00:05:01,000 google.com / search? q = datamaskin + vitenskap, 88 00:05:01,000 --> 00:05:04,000 og informatikk er åpenbart hva jeg skrev i. 89 00:05:04,000 --> 00:05:06,000 Den + betyr bare at er der et mellomrom var, 90 00:05:06,000 --> 00:05:10,000 og det er gjort av nettleseren bare for å være sikker på at det er ingen 91 00:05:10,000 --> 00:05:13,000 forvirring og hvit plass i selve nettadressen. 92 00:05:13,000 --> 00:05:15,000 Og deretter q, selvfølgelig, er parameteren navnet. 93 00:05:15,000 --> 00:05:20,000 Vi har ikke sett hvordan vi programmerer, kan faktisk få tilgang q ennå. 94 00:05:20,000 --> 00:05:23,000 Vi kan anta at Google vet hva de skal gjøre med dette her, 95 00:05:23,000 --> 00:05:25,000 men vi får det i god tid i dag. 96 00:05:25,000 --> 00:05:30,000 >> Men la meg ta en titt i stedet på search1.html, 97 00:05:30,000 --> 00:05:34,000 som ser litt annerledes fordi jeg bestemte meg for at dette skjemaet her var bare litt halt. 98 00:05:34,000 --> 00:05:36,000 Jeg mener, det er øverst til venstre. 99 00:05:36,000 --> 00:05:40,000 Det er egentlig ingen estetikk til det, og så vil jeg stylize dette 100 00:05:40,000 --> 00:05:43,000 litt mer som Google, hvis hjemmeside, husker, 101 00:05:43,000 --> 00:05:47,000 selv om du kanskje ikke besøke den så ofte, ser ut som dette i dag på Halloween. 102 00:05:47,000 --> 00:05:53,000 Dersom vi i stedet åpne opp versjon 1 av denne filen, søk 1.html, jeg har sentrert den. 103 00:05:53,000 --> 00:05:57,000 Fremdeles ganske stygg, men minst nå har jeg begynt å kontrollere estetikk denne siden, 104 00:05:57,000 --> 00:06:00,000 ikke bare merke opp derav. 105 00:06:00,000 --> 00:06:04,000 La oss ta en titt på søk 1, og det er egentlig bare en forskjell her, 106 00:06:04,000 --> 00:06:06,000 som kan hoppe ut på deg, eller kanskje ikke, 107 00:06:06,000 --> 00:06:11,000 men hva er en linje eller utdrag av forskjellen? 108 00:06:11,000 --> 00:06:14,000 >> Det er denne stilen egenskap, så viser det seg at i HTML 109 00:06:14,000 --> 00:06:19,000 de fleste elementer, kan de fleste brikker har en stil attributt på dem, 110 00:06:19,000 --> 00:06:23,000 og innsiden av at stilen attributt er en sitert streng 111 00:06:23,000 --> 00:06:26,000 og at sitert streng er CSS. 112 00:06:26,000 --> 00:06:29,000 Du kan sette stilark i det 113 00:06:29,000 --> 00:06:32,000 ved å angi den som en eiendom navn 114 00:06:32,000 --> 00:06:34,000 etterfulgt av et kolon etterfulgt av en verdi. 115 00:06:34,000 --> 00:06:37,000 Dette er litt av en uheldig konstruksjon avgjørelse for noen år siden 116 00:06:37,000 --> 00:06:40,000 at CSS er et språk i seg selv, 117 00:06:40,000 --> 00:06:43,000 men syntaktisk det er veldig forskjellig fra HTML. 118 00:06:43,000 --> 00:06:46,000 I dette tilfellet ser vi at innsiden av websiden min, som er skrevet i HTML, 119 00:06:46,000 --> 00:06:51,000 Jeg har CSS innsiden av disse sitatene, og konvensjonen for CSS 120 00:06:51,000 --> 00:06:55,000 er at du har det som kalles en eiendom etterfulgt av, igjen, et kolon, 121 00:06:55,000 --> 00:06:58,000 etterfulgt av verdien av denne eiendommen, så det er ingen likhetstegn. 122 00:06:58,000 --> 00:07:00,000 Det er ingen ekstra anførselstegn. 123 00:07:00,000 --> 00:07:03,000 Det er bare denne kolon separert nøkkelverdi par, 124 00:07:03,000 --> 00:07:05,000 og tekstlinjen gjør akkurat det den sier. 125 00:07:05,000 --> 00:07:09,000 Det justerer teksten i kroppen på siden, noe som er virkelig guts på siden, 126 00:07:09,000 --> 00:07:11,000 i midten. 127 00:07:11,000 --> 00:07:13,000 >> Ok, sluttresultatet da, for å være klar, er dette. 128 00:07:13,000 --> 00:07:17,000 Ikke alle som sexy, men minst det er sentrert og litt mer som den virkelige Google. 129 00:07:17,000 --> 00:07:21,000 Men hva om jeg i stedet åpner opp versjon 2 av denne 130 00:07:21,000 --> 00:07:25,000 og påpeke her nede en ny kode helt? 131 00:07:25,000 --> 00:07:30,000 Nå i hodet på siden min, som tidligere bare hadde som tag 132 00:07:30,000 --> 00:07:32,000 i alle tidligere eksempler? 133 00:07:32,000 --> 00:07:34,000 Det hadde bare dette, tittelen. 134 00:07:34,000 --> 00:07:38,000 Et øyeblikk siden hodet tag så ut som dette. 135 00:07:38,000 --> 00:07:40,000 Nå i stedet den har en stil tag innsiden av det, 136 00:07:40,000 --> 00:07:44,000 og dette også, jeg beklager, ser syntaktisk svært forskjellig fra HTML, 137 00:07:44,000 --> 00:07:47,000 men du blir vant til det, der innsiden av stilen koden 138 00:07:47,000 --> 00:07:50,000 Jeg kan nå faktor ut hva som var et øyeblikk siden 139 00:07:50,000 --> 00:07:54,000 et attributt, stilen attributt, og jeg kan sette den på toppen av siden min. 140 00:07:54,000 --> 00:07:56,000 >> Hvorfor? 141 00:07:56,000 --> 00:08:00,000 Vel, dette er et skritt mot å rydde ting opp, mye som skriftlig C-kode 142 00:08:00,000 --> 00:08:04,000 vi ville noen ganger skrive funksjoner for å faktor ut felles funksjonalitet. 143 00:08:04,000 --> 00:08:07,000 Det er bare litt renere å starte factoring ut ting som estetikk 144 00:08:07,000 --> 00:08:11,000 til en sentral plassering i stedet for å ha den flette hele HTML-koden. 145 00:08:11,000 --> 00:08:14,000 Dette gjør også hva den sier, selv om det er en bit av ny syntaks. 146 00:08:14,000 --> 00:08:19,000 Dette her er en selector, og kroppen bare betyr å velge kroppen element 147 00:08:19,000 --> 00:08:21,000 og gjelder følgende egenskaper til det. 148 00:08:21,000 --> 00:08:23,000 Vel, er eiendommen nøyaktig det samme. 149 00:08:23,000 --> 00:08:25,000 For godt mål har jeg lagt et semikolon på slutten, 150 00:08:25,000 --> 00:08:29,000 som har en tendens til å være konvensjonen, og jeg har pakket hele denne eiendommen 151 00:08:29,000 --> 00:08:33,000 i klammeparentes fordi jeg kunne faktisk ha forskjellige ting her. 152 00:08:33,000 --> 00:08:39,000 Jeg kunne faktisk si noe sånt Farge: blå; 153 00:08:39,000 --> 00:08:42,000 >> Nå er dette også ikke kommer til å være et skritt mot noe alle som penere, 154 00:08:42,000 --> 00:08:47,000 men hvis jeg nå gå tilbake til versjon 2 har jeg i hvert fall nå gjort kroppen av min 155 00:08:47,000 --> 00:08:49,000 sidens tekst alle blå. 156 00:08:49,000 --> 00:08:51,000 Knappen forblir den samme, fordi det er en inngang. Det er ikke ren tekst. 157 00:08:51,000 --> 00:08:56,000 Men alt annet som er tekst, som CS50 Søk opp toppen, er faktisk blå. 158 00:08:56,000 --> 00:09:01,000 Igjen, er å fjerne alt vi har gjort nå fra kroppen tag, varsel, 159 00:09:01,000 --> 00:09:04,000 stilen attributt, og vi har priset den ut her. 160 00:09:04,000 --> 00:09:08,000 Dette er ikke en stor forbedring, men hvis vi tar dette ett skritt videre 161 00:09:08,000 --> 00:09:10,000 Legg merke til hva vi kan gjøre i denne tredje versjonen her. 162 00:09:10,000 --> 00:09:14,000 >> I search3.html nettsiden er nesten identisk 163 00:09:14,000 --> 00:09:17,000 bortsett fra det nye tag nå? 164 00:09:17,000 --> 00:09:20,000 Link, så dette er ikke veldig treffende navnet 165 00:09:20,000 --> 00:09:24,000 fordi du ikke linking i den forstand av et klikkbart hyperkobling. 166 00:09:24,000 --> 00:09:28,000 Snarere, du liksom gjøre tilsvarende # include i C 167 00:09:28,000 --> 00:09:31,000 hvorved link tag med en href attributt 168 00:09:31,000 --> 00:09:34,000 og en rel-attributtet sier gå videre 169 00:09:34,000 --> 00:09:39,000 og kopiere lime inn innholdet i en fil som heter search3.css her, i hovedsak. 170 00:09:39,000 --> 00:09:42,000 Den ikke helt gjøre det, men det er en ånd av det. 171 00:09:42,000 --> 00:09:45,000 Det sier gå åpent denne filen, search3.css, 172 00:09:45,000 --> 00:09:49,000 og behandle det som om brukeren hadde skrevet det her i hodet av siden 173 00:09:49,000 --> 00:09:51,000 akkurat som jeg gjorde i forrige eksempel. 174 00:09:51,000 --> 00:09:54,000 Search3.css, i mellomtiden, er ganske enkel. 175 00:09:54,000 --> 00:09:58,000 Det virkelig inneholder akkurat hva var et øyeblikk siden 176 00:09:58,000 --> 00:10:03,000 i stil tag, men jeg har priset den ut her til sin egen fil. 177 00:10:03,000 --> 00:10:07,000 >> Selv om vi ikke har tilbrakt mye tid i det hele tatt i HTML eller webprogrammering 178 00:10:07,000 --> 00:10:11,000 bare intuitivt hva som er motivasjonen, kanskje, for factoring ut 179 00:10:11,000 --> 00:10:14,000 denne lille tekstutdrag selv av CSS i sin egen fil 180 00:10:14,000 --> 00:10:19,000 og deretter inkludert det med denne link tag her? 181 00:10:19,000 --> 00:10:21,000 [Uhørlig student respons] 182 00:10:21,000 --> 00:10:25,000 Ok, det er lettere å lese i den forstand at du har din CSS i en CSS-fil. 183 00:10:25,000 --> 00:10:28,000 Du har din HTML i HTML-filen, så det er mer lesbar i den forstand. 184 00:10:28,000 --> 00:10:30,000 Hva annet kan være attraktiv? Ja. 185 00:10:30,000 --> 00:10:32,000 [Uhørlig student respons] 186 00:10:32,000 --> 00:10:35,000 Ja, så du kan ta det mange ganger, så akkurat nå gjør vi disse 187 00:10:35,000 --> 00:10:38,000 grunnleggende eksempler med individuelle filer, men antar at du faktisk gjør 188 00:10:38,000 --> 00:10:42,000 en ekte nettside som du vil for pset 7 eller det endelige prosjektet kanskje, 189 00:10:42,000 --> 00:10:45,000 og du vil ha flere websider, som er sikkert vanlig på 190 00:10:45,000 --> 00:10:48,000 selve World Wide Web, og det ville være slags halt 191 00:10:48,000 --> 00:10:52,000 til å kopiere og lime den samme blå farge 192 00:10:52,000 --> 00:10:56,000 og den samme teksten justert senter i hver og en av disse sidene. 193 00:10:56,000 --> 00:10:59,000 Heller det er mer fornuftig å faktor ut, mye som vi har gjort i C 194 00:10:59,000 --> 00:11:02,000 med. h-filen, legg den i ett sentralt sted, 195 00:11:02,000 --> 00:11:06,000 i dette tilfellet search3.css, og la enhver fil 196 00:11:06,000 --> 00:11:11,000 på nettstedet ditt for å faktisk inkludere denne filen ved hjelp av denne koden her i linje 16. 197 00:11:11,000 --> 00:11:14,000 Som vanligvis er tilfelle, vi startet med versjon 0, hvilken type verk 198 00:11:14,000 --> 00:11:18,000 men er ikke nødvendigvis det beste, og med hvert trinn, 199 00:11:18,000 --> 00:11:21,000 1 søk, 2, og nå søk 3 vi har tatt disse baby trinnene 200 00:11:21,000 --> 00:11:26,000 mot design som er litt renere og er mer forberedende 201 00:11:26,000 --> 00:11:30,000 for mer komplekse sider som vi kan gjøre nedover veien. 202 00:11:30,000 --> 00:11:33,000 >> La meg åpne opp en siste eksempel her bare for å vise 203 00:11:33,000 --> 00:11:36,000 en enda mer stilisert side, men først la oss se på HTML. 204 00:11:36,000 --> 00:11:41,000 Dette er search4.html, og legge merke til at strukturelt det er nesten det samme 205 00:11:41,000 --> 00:11:44,000 med unntak av innføring av en ny kode, div. 206 00:11:44,000 --> 00:11:48,000 Div er en kode som introduserer en divisjon av siden. 207 00:11:48,000 --> 00:11:51,000 Du kan tenke på dette som en usynlig firkant. 208 00:11:51,000 --> 00:11:54,000 Den slags skaper en skjærer av området på websiden 209 00:11:54,000 --> 00:11:56,000 at du kan stylize alt på en gang. 210 00:11:56,000 --> 00:11:58,000 Hva jeg har gjort her er som følger. 211 00:11:58,000 --> 00:12:01,000 Innsiden av kroppen min tag, som har vært der hele tiden, 212 00:12:01,000 --> 00:12:05,000 Jeg sier skape en divisjon av siden her via linjene 45 gjennom 47, 213 00:12:05,000 --> 00:12:09,000 og det betyr i hovedsak gi meg en usynlig firkant øverst på siden. 214 00:12:09,000 --> 00:12:14,000 Så gi meg en ny rektangel, riktignok usynlig, under det, 215 00:12:14,000 --> 00:12:16,000 og identifisere den ved navn innhold, og deretter til slutt, 216 00:12:16,000 --> 00:12:19,000 gi meg en tredje divisjon på siden nederst 217 00:12:19,000 --> 00:12:21,000 kalt ID. 218 00:12:21,000 --> 00:12:23,000 Vi vil se hvorfor jeg har gjort dette i løpet av et øyeblikk, 219 00:12:23,000 --> 00:12:26,000 men konseptuelt jeg har en header divisjon. 220 00:12:26,000 --> 00:12:30,000 Jeg har et innhold divisjon, og jeg har en bunntekst divisjon av siden 221 00:12:30,000 --> 00:12:32,000 selv om disse er bare i markup. 222 00:12:32,000 --> 00:12:35,000 Brukeren er ikke til å se tre rektangler, 223 00:12:35,000 --> 00:12:37,000 men slags strukturelt det bak kulissene 224 00:12:37,000 --> 00:12:39,000 de er faktisk til stede. 225 00:12:39,000 --> 00:12:41,000 >> Nå, hvem bryr seg? Hvorfor faktisk gjøre dette? 226 00:12:41,000 --> 00:12:43,000 Alt annet på siden er den samme som vi har sett før. 227 00:12:43,000 --> 00:12:47,000 Her er min form. Her er mitt innspill, min inngang, et linjeskift og så videre. 228 00:12:47,000 --> 00:12:50,000 Her er et bilde, skjønt, så vi får se hvor dette kom fra en liten stund. 229 00:12:50,000 --> 00:12:52,000 Her er en bunntekst, som er ny, bare fordi jeg ønsket å introdusere 230 00:12:52,000 --> 00:12:54,000 litt mer innhold her. 231 00:12:54,000 --> 00:12:58,000 Hvis vi blar opp merke til at ID for denne div er overskriften. 232 00:12:58,000 --> 00:13:02,000 ID av denne div er innholdet, og ID-dette er bunntekst. 233 00:13:02,000 --> 00:13:05,000 Og som navnet antyder, når du har en ID-attributt 234 00:13:05,000 --> 00:13:09,000 i HTML, per definisjon må det identifisere 235 00:13:09,000 --> 00:13:12,000 ett av elementene, en av kodene på siden din. 236 00:13:12,000 --> 00:13:16,000 Byrden er helt på deg til å huske at du har en header ID allerede. 237 00:13:16,000 --> 00:13:19,000 Du har en bunntekst. Du har et innhold ID allerede. 238 00:13:19,000 --> 00:13:22,000 Datamaskinen er ikke til å finne ut hva en tilgjengelig ID er for deg, 239 00:13:22,000 --> 00:13:27,000 slik at du kan ved et uhell gi 2 koder et ID-header, 240 00:13:27,000 --> 00:13:29,000 og det ville bare være galt. 241 00:13:29,000 --> 00:13:31,000 >> Du må huske på hva du har opprettet, 242 00:13:31,000 --> 00:13:34,000 men når du har gjort det merke til hva vi kan gjøre her. 243 00:13:34,000 --> 00:13:38,000 Jeg kan nå spesifisere i min stil koden øverst 244 00:13:38,000 --> 00:13:41,000 eller ekvivalent i min CSS-fil, hvis jeg var fremdeles bruker denne versjonen, 245 00:13:41,000 --> 00:13:46,000 Jeg kan si # header, og hva det betyr er at uansett hva tag 246 00:13:46,000 --> 00:13:49,000 i denne nettsiden har en ID på header 247 00:13:49,000 --> 00:13:53,000 og #, bare av menneskelig konvensjonen representerer ID. 248 00:13:53,000 --> 00:13:56,000 Den kraftige tegn eller firkanttegn representerer ID. 249 00:13:56,000 --> 00:13:58,000 Overskriften er navnet jeg ga den. 250 00:13:58,000 --> 00:14:01,000 Dette betyr anvende denne CSS eiendom 251 00:14:01,000 --> 00:14:04,000 til hva koden i denne siden bærer en ID for overskriften. 252 00:14:04,000 --> 00:14:06,000 Samme avtale her. 253 00:14:06,000 --> 00:14:09,000 Anvende denne eiendommen, som skjer for å være den samme, noe element 254 00:14:09,000 --> 00:14:11,000 hvis ID er innhold, og deretter ned her 255 00:14:11,000 --> 00:14:14,000 merker jeg fikk litt mer avansert med bunntekst. 256 00:14:14,000 --> 00:14:18,000 Et element som ID er footer, som det kan være bare én per definisjon, 257 00:14:18,000 --> 00:14:21,000 gå videre og gjøre fontstørrelsen mindre, 258 00:14:21,000 --> 00:14:24,000 sin font vekt fet, dens margin 20 piksler. 259 00:14:24,000 --> 00:14:26,000 >> Hva betyr det? 260 00:14:26,000 --> 00:14:28,000 Det er bare en margin på toppen, bunnen, og venstre og høyre. 261 00:14:28,000 --> 00:14:31,000 Dette betyr gi meg en 20-pixel usynlig margin rundt det 262 00:14:31,000 --> 00:14:35,000 bare for å presse alt annet bort fra det litt, som du kan gjøre i Word, 263 00:14:35,000 --> 00:14:37,000 Microsoft Word eller Pages eller lignende. 264 00:14:37,000 --> 00:14:39,000 Og så teksten justere sentrum. 265 00:14:39,000 --> 00:14:43,000 La oss se det endelige resultatet, og så får vi gå tilbake til én gjenværende bit med CSS der. 266 00:14:43,000 --> 00:14:48,000 Dette er versjon 4, vår siste for søk eksempler, og det er mye, mye mer sexy. 267 00:14:48,000 --> 00:14:54,000 Nå, i rettferdighet, jeg bare googlet "google font logo generator." 268 00:14:54,000 --> 00:14:58,000 Og som tillot meg å lage en GIF, et bildeformat, som ser ut som det der. 269 00:14:58,000 --> 00:15:00,000 Faktisk kan du gjøre dette også. 270 00:15:00,000 --> 00:15:03,000 Vi har "google fonter logo generator." 271 00:15:03,000 --> 00:15:05,000 >> La oss se om vi kan gjøre dette. 272 00:15:05,000 --> 00:15:07,000 Ok, jeg tror dette er nettstedet jeg brukte. 273 00:15:07,000 --> 00:15:11,000 Vi kan si Ec 10, for eksempel, og gjøre dem til sine egne. 274 00:15:11,000 --> 00:15:13,000 Du kan spille med dette hele dagen lang, og deretter høyreklikk på den 275 00:15:13,000 --> 00:15:16,000 og deretter laste ned den faktiske GIF, som er alt som jeg gjorde. 276 00:15:16,000 --> 00:15:19,000 Og ja, det er derfor i HTML min, husker, over her 277 00:15:19,000 --> 00:15:22,000 Jeg hadde et bilde tag, som vi så kort forrige uke 278 00:15:22,000 --> 00:15:24,000 hvis kilden er logo.gif. 279 00:15:24,000 --> 00:15:28,000 Og hva var igjen motivasjonen for å ha denne alt-attributtet, 280 00:15:28,000 --> 00:15:31,000 denne alternative attributt? 281 00:15:31,000 --> 00:15:33,000 Ja. 282 00:15:33,000 --> 00:15:35,000 [Uhørlig student respons] 283 00:15:35,000 --> 00:15:37,000 Bra, så to grunner egentlig, hvis leseren ikke kan trekke opp bilde 284 00:15:37,000 --> 00:15:40,000 fordi du har en treg nettverkstilkobling eller bildet er skadet 285 00:15:40,000 --> 00:15:44,000 eller noe sånt minst menneske kan se "CS50 søk," 286 00:15:44,000 --> 00:15:46,000 og deretter også for tilgjengelighetsfasiliteter grunner. 287 00:15:46,000 --> 00:15:48,000 Hvis du har en bruker som er blind og bruker en skjermleser 288 00:15:48,000 --> 00:15:50,000 og derfor kan selvsagt ikke se bildene de kan i det minste 289 00:15:50,000 --> 00:15:52,000 høre teksten hvis deres datamaskin taler det til dem. 290 00:15:52,000 --> 00:15:56,000 >> Generelt er denne beste praksis når det gjelder tilgjengelighet av sider 291 00:15:56,000 --> 00:16:00,000 slik at også brukere i den situasjonen kan høre eller se, så å si, 292 00:16:00,000 --> 00:16:03,000 hva det er som er på siden din. 293 00:16:03,000 --> 00:16:05,000 Det er en annen ting som jeg gjorde her 294 00:16:05,000 --> 00:16:09,000 som er litt interessant, og vi vil se mer om dette i problemet satt 7 295 00:16:09,000 --> 00:16:12,000 via en av shorts ledet av en av de pedagogiske stipendiater. 296 00:16:12,000 --> 00:16:15,000 Men # innhold refererer til koden 297 00:16:15,000 --> 00:16:20,000 hvis ID er innhold, men så er det et mellomrom, og så er det ordet inngang. 298 00:16:20,000 --> 00:16:25,000 Vel, hva er interessant om CSS er at du kan 299 00:16:25,000 --> 00:16:29,000 referere til koder i en side slags hierarkisk, 300 00:16:29,000 --> 00:16:33,000 og hva dette bit med CSS betyr finne koden 301 00:16:33,000 --> 00:16:37,000 hvis ID er innholdet, og deretter bruke følgende egenskaper 302 00:16:37,000 --> 00:16:42,000 til alle innspill koder som er etterkommere av innhold, 303 00:16:42,000 --> 00:16:44,000 det er at rykkes innsiden av det. 304 00:16:44,000 --> 00:16:48,000 Innrykk, igjen, er bare viktig for datamaskinen, ikke til det menneskelige, 305 00:16:48,000 --> 00:16:51,000 men ved konvensjonen rykke vi ting som vi går dypere inn i en side, 306 00:16:51,000 --> 00:16:54,000 så dette betyr bruke en margin på 5 piksler til noen innspill element 307 00:16:54,000 --> 00:16:57,000 det er et sted inne i eller nestet inne i 308 00:16:57,000 --> 00:16:59,000  elementet som ID er innholdet. 309 00:16:59,000 --> 00:17:01,000 >> Hvem gjelder det til? 310 00:17:01,000 --> 00:17:03,000 Vel, det er faktisk bare disse to gutta her. 311 00:17:03,000 --> 00:17:05,000 Legg merke til at innsiden av formen er det 2 innganger, 312 00:17:05,000 --> 00:17:07,000 som det har vært for alle disse eksempler. 313 00:17:07,000 --> 00:17:11,000 Men legg merke til at de to innganger tilfeldigvis nestes inne, 314 00:17:11,000 --> 00:17:13,000 riktignok litt dypt, et par lag med innrykk, 315 00:17:13,000 --> 00:17:16,000 innsiden av taggen som ID er innholdet. 316 00:17:16,000 --> 00:17:18,000 Hva betyr dette? 317 00:17:18,000 --> 00:17:21,000 Hvis vi går til leseren her kan du se aldri så litt- 318 00:17:21,000 --> 00:17:23,000 la meg zoome inn, at det er en bit av polstring mellom knappen 319 00:17:23,000 --> 00:17:25,000 og mellom tekstfeltet. 320 00:17:25,000 --> 00:17:27,000 >> La meg midlertidig slå den av. 321 00:17:27,000 --> 00:17:30,000 La meg gå opp til CSS min, og la meg gå videre og bare 322 00:17:30,000 --> 00:17:34,000 endre denne marginen fra 5 piksler til 0 piksler. 323 00:17:34,000 --> 00:17:37,000 La meg gå videre da, og lagre filen, gå tilbake til søkemotoren 324 00:17:37,000 --> 00:17:40,000 og legg, og se midt på siden. 325 00:17:40,000 --> 00:17:43,000 Alt fikk komprimert sammen, og når jeg først pisket dette eksempelet opp 326 00:17:43,000 --> 00:17:46,000 Jeg trodde at så dumt med tekstfeltet, og deretter på knappen rett under den. 327 00:17:46,000 --> 00:17:50,000 Jeg ønsket å fylle det litt, så jeg introduserte marginer. 328 00:17:50,000 --> 00:17:55,000 Hva vi ikke vil gjøre i foredraget er å gå gjennom flere dusin 329 00:17:55,000 --> 00:17:58,000 CSS egenskaper som eksisterer fordi igjen, det er ting som skriftstørrelse, 330 00:17:58,000 --> 00:18:02,000 font vekt, margin, tekst justere, og et par dusin andre, 331 00:18:02,000 --> 00:18:06,000 og vi vil henvise deg i oppgavesettet 7 til ulike tutorials på nettet 332 00:18:06,000 --> 00:18:08,000 og referanser som lar deg plukke disse tingene opp. 333 00:18:08,000 --> 00:18:10,000 Men hva er virkelig viktig ved slutten av dagen 334 00:18:10,000 --> 00:18:12,000 >> er å forstå hvordan disse tingene er brukt. 335 00:18:12,000 --> 00:18:15,000 Igjen, hvis vi har stilen tag Innsiden 336 00:18:15,000 --> 00:18:19,000 kan gå velgere, slags identifikatorer som angir 337 00:18:19,000 --> 00:18:21,000 til hvem vil du bruke disse egenskapene, 338 00:18:21,000 --> 00:18:24,000 og deretter sette egenskapene som sentrale verdi-par 339 00:18:24,000 --> 00:18:28,000 atskilt av et kolon og endte med et semikolon, 340 00:18:28,000 --> 00:18:32,000 eller du kan rippe alle som ut og legg den i en egen CSS-fil 341 00:18:32,000 --> 00:18:35,000 seg selv. 342 00:18:35,000 --> 00:18:39,000 Greit, noen spørsmål på begrepene 343 00:18:39,000 --> 00:18:41,000 eller det store bildet av CSS? 344 00:18:41,000 --> 00:18:43,000 Du vil igjen se mer av det i pset 7, 345 00:18:43,000 --> 00:18:47,000 men vi vil holde det generelt ganske enkel. 346 00:18:47,000 --> 00:18:49,000 Nei? OK. 347 00:18:49,000 --> 00:18:51,000 Det er tid for en faktisk programmeringsspråk, 348 00:18:51,000 --> 00:18:54,000 og vi vil komme tilbake til en liten bit av CSS i form av et eksempel. 349 00:18:54,000 --> 00:18:58,000 PHP er faktisk en fantastisk lett forståelig språk 350 00:18:58,000 --> 00:19:02,000 i at det er syntaktisk nesten tilsvarer C. 351 00:19:02,000 --> 00:19:06,000 Med andre ord, hvis du vet C, vet du for det meste PHP, 352 00:19:06,000 --> 00:19:08,000 minst syntaktisk, selv om det er noen nye funksjoner 353 00:19:08,000 --> 00:19:10,000 og noen nye konsepter vi må se på. 354 00:19:10,000 --> 00:19:13,000 >> Men for det meste, nå som vi overgangen fra C til PHP 355 00:19:13,000 --> 00:19:16,000 det meste av nye ting er virkelig i det store bildet, 356 00:19:16,000 --> 00:19:19,000 hvordan du bruker et språk til program på nettet som i motsetning til 357 00:19:19,000 --> 00:19:23,000 på kommandolinjen eller en blinkende spørsmål som vi har gjort så langt. 358 00:19:23,000 --> 00:19:27,000 For referanse, spesielt med pset 7 og det endelige prosjektet framover, 359 00:19:27,000 --> 00:19:31,000 dra nytte av denne nettadressen her hvis du ønsker å lese opp på formaliteter av PHP. 360 00:19:31,000 --> 00:19:34,000 Det er som faktisk et gratis online lærebok effektivt, 361 00:19:34,000 --> 00:19:37,000 og du vil også finne at det er veldig hyggelig om PHP 362 00:19:37,000 --> 00:19:41,000 er at det finnes hundrevis av funksjoner som kommer med det, 363 00:19:41,000 --> 00:19:44,000 mens i C du ikke nødvendigvis har tilgang til 364 00:19:44,000 --> 00:19:47,000 flere funksjoner enn var i matematikk biblioteket, CS50 biblioteket. 365 00:19:47,000 --> 00:19:51,000 I PHP og en rekke moderne språk, Python og Ruby blant dem, 366 00:19:51,000 --> 00:19:54,000 du får tilgang til så mange flere funksjoner, som betyr at du får til å skrive 367 00:19:54,000 --> 00:19:57,000 mye mindre kode fordi du kan stå på skuldrene til andre mennesker 368 00:19:57,000 --> 00:19:59,000 som allerede har skrevet visse ting for deg. 369 00:19:59,000 --> 00:20:03,000 >> La oss ta en rask gjennomgang av syntaksen til PHP og deretter skrive noen eksempler. 370 00:20:03,000 --> 00:20:06,000 Hva er fint om PHP først og fremst 371 00:20:06,000 --> 00:20:08,000 er det ingen hovedfunksjon. 372 00:20:08,000 --> 00:20:10,000 Hvis du ønsker å skrive et program i PHP du bare begynne å skrive kode, 373 00:20:10,000 --> 00:20:12,000 og du trenger ikke å bekymre deg for main. 374 00:20:12,000 --> 00:20:14,000 Det er ingen int. Det er ingen vei tilbake. 375 00:20:14,000 --> 00:20:17,000 Det er ingen argv, argc som er nødvendig når du skriver programmet. 376 00:20:17,000 --> 00:20:20,000 Heller du kan bare begynne å skrive kode, og dette er delvis 377 00:20:20,000 --> 00:20:23,000 fordi PHP er det som kalles et tolket språk. 378 00:20:23,000 --> 00:20:26,000 C ble satt sammen, og det ble utarbeidet i den forstand at du starter 379 00:20:26,000 --> 00:20:29,000 med kildekode, kjøre det gjennom Clang, som er en kompilator, 380 00:20:29,000 --> 00:20:33,000 og til slutt etter noen flere trinn får du objektkode, 0'er og 1'ere. 381 00:20:33,000 --> 00:20:36,000 PHP og Python og Ruby og Pearl og andre 382 00:20:36,000 --> 00:20:39,000 er forskjellige typer språk i at du ikke samle dem. 383 00:20:39,000 --> 00:20:42,000 Du trenger ikke gå fra kildekoden til 0'er og 1'ere. 384 00:20:42,000 --> 00:20:45,000 Du bare kjøre kildekoden, og du kjører kildekoden 385 00:20:45,000 --> 00:20:49,000 ved å skrive i en vanlig tekstfil, som slutter med. php i dette tilfellet 386 00:20:49,000 --> 00:20:53,000 i stedet for. c, og hva programmet gjør på datamaskinen 387 00:20:53,000 --> 00:20:57,000 er den tolker bokstavelig talt koden linje for linje for linje. 388 00:20:57,000 --> 00:21:00,000 >> Med andre ord, i stedet for å skrive et program og kjøre programmet 389 00:21:00,000 --> 00:21:04,000 direkte du i stedet skrive et program med en fil som slutter på. php. 390 00:21:04,000 --> 00:21:09,000 Så du kjører en faktisk program som heter php.exe, hvis du er på Windows, 391 00:21:09,000 --> 00:21:12,000 eller bare PHP hvis du er på Mac OS eller Linux, 392 00:21:12,000 --> 00:21:17,000 og du gir som innspill til PHP-programmet ditt eget kildekoden, 393 00:21:17,000 --> 00:21:20,000 og dens formål i livet er å lese koden topp til bunn, fra venstre mot høyre, 394 00:21:20,000 --> 00:21:23,000 og gjøre hva du har fortalt det til å gjøre. 395 00:21:23,000 --> 00:21:25,000 >> La oss se hva dette kommer til å bety syntaktisk. 396 00:21:25,000 --> 00:21:27,000 I PHP har vi forhold. 397 00:21:27,000 --> 00:21:29,000 Dette bildet er identisk med hva du så tilbake i uke 1 398 00:21:29,000 --> 00:21:33,000 fordi syntaktisk forhold, IFS og annet IFS og annet i PHP 399 00:21:33,000 --> 00:21:35,000 ser akkurat ut som dette. 400 00:21:35,000 --> 00:21:38,000 Når det kommer til boolske uttrykk de kommer til å se ut akkurat som dette. 401 00:21:38,000 --> 00:21:43,000 Når det kommer til Anding ting sammen som boolske det kommer til å se ut akkurat som dette. 402 00:21:43,000 --> 00:21:46,000 Brytere ser det samme, og du får den ekstra fordelen i PHP 403 00:21:46,000 --> 00:21:51,000 at bryterne i C kunne bare slå på en røye eller en int. 404 00:21:51,000 --> 00:21:53,000 Du kan ikke slå på en streng verdi. 405 00:21:53,000 --> 00:21:55,000 I PHP kan du faktisk har et uttrykk 406 00:21:55,000 --> 00:21:58,000 som er en variabel som inneholder en streng, 407 00:21:58,000 --> 00:22:01,000 og du kan faktisk gjøre streng sammenligning i den virkelige intuitiv måte, 408 00:22:01,000 --> 00:22:06,000 ikke pekeren sammenligning, for å bestemme om du vil gjøre tilfelle jeg eller j eller noe annet. 409 00:22:06,000 --> 00:22:09,000 Vi vil se at potensielt før lenge. 410 00:22:09,000 --> 00:22:11,000 >> Løkker for fantastisk er de samme. 411 00:22:11,000 --> 00:22:15,000 For looper har en initialisering, en tilstand, og noen flere oppdateringer. 412 00:22:15,000 --> 00:22:18,000 Mens looper finnes også i PHP. 413 00:22:18,000 --> 00:22:21,000 Gjøre mens løkker finnes også i PHP, 414 00:22:21,000 --> 00:22:26,000 og arrays eksisterer i PHP, men her er der syntaksen begynner å bli litt annerledes, 415 00:22:26,000 --> 00:22:29,000 men konseptene er de samme, og begrepene virkelig er de samme 416 00:22:29,000 --> 00:22:32,000 som de var i uke 0 med Scratch. 417 00:22:32,000 --> 00:22:34,000 Først og fremst er $ tegn. 418 00:22:34,000 --> 00:22:37,000 Dette var en design avgjørelse i PHP der alle variabler 419 00:22:37,000 --> 00:22:41,000 i PHP ved design starter med $ tegn. 420 00:22:41,000 --> 00:22:46,000 Det er ikke mer X, Y, Z. Det er nå $ X, $ Y, $ Z bare fordi. 421 00:22:46,000 --> 00:22:49,000 Det er noe å huske på, og nå på høyre side 422 00:22:49,000 --> 00:22:52,000 Dette ligner på en matrise, 423 00:22:52,000 --> 00:22:54,000 men vi bruker hakeparenteser her. 424 00:22:54,000 --> 00:22:57,000 I PHP og i JavaScript, som vi vil til slutt se, 425 00:22:57,000 --> 00:23:01,000 å erklære en matrise du gjør åpent hakeparentes og lukket hakeparentes, 426 00:23:01,000 --> 00:23:04,000 og da har du en kommaseparert liste med verdier, enten ints 427 00:23:04,000 --> 00:23:09,000 eller strenger eller tegn, hva du vil, på innsiden av det uttrykket der. 428 00:23:09,000 --> 00:23:11,000 >> Nå, hvordan vi gjør noe som dette i C? 429 00:23:11,000 --> 00:23:16,000 Hva var syntaksen for statisk erklære en rekke kjente tall? 430 00:23:16,000 --> 00:23:19,000 Det var klammeparentes, så liten forskjell her, men både PHP 431 00:23:19,000 --> 00:23:22,000 og til slutt JavaScript den bruker bare hakeparenteser, så egentlig 432 00:23:22,000 --> 00:23:25,000 den eneste interessant detalj her er $ tegn for variabelnavnet 433 00:23:25,000 --> 00:23:28,000 og også klammeparentesene, og det er en merkelig ting 434 00:23:28,000 --> 00:23:32,000 som er blitt utelatt, så vel på den venstre side av =-tegn. 435 00:23:32,000 --> 00:23:36,000 Hva mangler på at vi har behov for flere uker nå? Ja. 436 00:23:36,000 --> 00:23:38,000 [Uhørlig student respons] 437 00:23:38,000 --> 00:23:41,000 Størrelsen, så det er ingen omtale av størrelsen på matrisen. 438 00:23:41,000 --> 00:23:45,000 Ærlig talt, det er ingen omtale av hakeparenteser på venstre side 439 00:23:45,000 --> 00:23:47,000 for = tegnet, og hva annet mangler linjen? 440 00:23:47,000 --> 00:23:49,000 Ja. >> [Uhørlig student respons] 441 00:23:49,000 --> 00:23:52,000 Typen, så hva er interessant spesielt om PHP 442 00:23:52,000 --> 00:23:56,000 er at det er ikke et sterkt maskinskrevet språk som C er, 443 00:23:56,000 --> 00:23:58,000 og det er sterkt skrevet i den forstand at du må si røye, 444 00:23:58,000 --> 00:24:00,000 du må si int, må du si flåte. 445 00:24:00,000 --> 00:24:03,000 >> Når du ønsker en variabel du har å fortelle Clang hva dens type er. 446 00:24:03,000 --> 00:24:05,000 PHP er litt lazier. 447 00:24:05,000 --> 00:24:08,000 Det er løst skrevet i den forstand at 448 00:24:08,000 --> 00:24:11,000 du kan ha flyter og chars og strenger 449 00:24:11,000 --> 00:24:14,000 og ints og så videre, men språket selv 450 00:24:14,000 --> 00:24:17,000 bryr seg ikke hva du putter inni en variabel. 451 00:24:17,000 --> 00:24:20,000 Du trenger ikke å informere den på forhånd hva datatype 452 00:24:20,000 --> 00:24:22,000 kommer i en variabel. 453 00:24:22,000 --> 00:24:24,000 Det er helt opp til deg, så dette er hyggelig 454 00:24:24,000 --> 00:24:27,000 i at du ikke trenger å bekymre deg så mye om data skrive 455 00:24:27,000 --> 00:24:29,000 og bekymringsfull hva dine argumenter er og så videre. 456 00:24:29,000 --> 00:24:32,000 Dette betyr også slutt funksjoner i PHP kommer til å være i stand til å returnere 457 00:24:32,000 --> 00:24:36,000 enten en int mesteparten av tiden, og kanskje en gang i blant 458 00:24:36,000 --> 00:24:40,000 de vil returnere en bool, en boolean falsk, for eksempel for å markere at noe gikk galt. 459 00:24:40,000 --> 00:24:44,000 Dette gir oss noen oppsider, men det vil også gjøre oss liksom av design 460 00:24:44,000 --> 00:24:47,000 litt lazier når det gjelder data skrive. 461 00:24:47,000 --> 00:24:50,000 >> Hva annet er det å huske på her? 462 00:24:50,000 --> 00:24:54,000 Variabler ser ganske like denne, så $ s = "hallo, verden." 463 00:24:54,000 --> 00:24:57,000 Det er kanskje inferable fra forrige eksempel, 464 00:24:57,000 --> 00:24:59,000 og vi har en annen type loop. 465 00:24:59,000 --> 00:25:02,000 Dette vil vi faktisk se en gang i en stund siden det er ganske hendig, 466 00:25:02,000 --> 00:25:04,000 en foreach konstruere. 467 00:25:04,000 --> 00:25:11,000 I dette tilfellet tar foreach løkke inne av sin parenteser 3 ord typisk, 468 00:25:11,000 --> 00:25:16,000 $ Noe først, som er hva utvalg vil du iterere over medlemmene i, 469 00:25:16,000 --> 00:25:19,000 så bokstavelig søkeordet som, og deretter til slutt, 470 00:25:19,000 --> 00:25:21,000 en annen variabel navn som du kommer til å velge. 471 00:25:21,000 --> 00:25:23,000 Det kan være foo, bar, eller element, 472 00:25:23,000 --> 00:25:26,000 og hva dette konstruere gjør 473 00:25:26,000 --> 00:25:29,000 er hvis $ matrise inneholder 10 elementer 474 00:25:29,000 --> 00:25:34,000 på hver iterasjon av denne array-sorry, på hver iterasjon av denne sløyfen 475 00:25:34,000 --> 00:25:37,000 variabelen element kommer til å bli oppdatert 476 00:25:37,000 --> 00:25:40,000 å være det første elementet i matrisen, deretter det andre elementet i matrisen, 477 00:25:40,000 --> 00:25:44,000 da den tredje element i matrisen, og dermed obviating behovet 478 00:25:44,000 --> 00:25:46,000 å gjøre det litt irriterende hakeparentes notasjon og 479 00:25:46,000 --> 00:25:49,000 $ I for å indeksere inn i en matrise. 480 00:25:49,000 --> 00:25:53,000 PHP gjør alt som fungerer for deg og på hver iterasjon 481 00:25:53,000 --> 00:25:55,000 bare hender du det neste elementet fra tabellen 482 00:25:55,000 --> 00:26:01,000 uten at du trenger å vite om eller bryr seg om sin numerisk indeks plassering. 483 00:26:01,000 --> 00:26:04,000 >> Og så til slutt, for nå er det en annen funksjon i PHP 484 00:26:04,000 --> 00:26:08,000 som kommer til å bli enormt nyttig, spesielt når vi starter programmering på nettet, 485 00:26:08,000 --> 00:26:10,000 og som er kjent som en assosiativ array. 486 00:26:10,000 --> 00:26:13,000 Matriser som vi vet så langt som 20 sekunder siden 487 00:26:13,000 --> 00:26:17,000 og for de siste 8 ukene er numerisk indeksert matriser, 488 00:26:17,000 --> 00:26:20,000 slags tradisjonelle arrays hvor indeksene er ints, 489 00:26:20,000 --> 00:26:23,000 0, 1, 2, hele veien på opp. 490 00:26:23,000 --> 00:26:25,000 Assosiative arrays er mye kraftigere. 491 00:26:25,000 --> 00:26:28,000 De tillater deg å ha vilkårlige nøkler, 492 00:26:28,000 --> 00:26:31,000 vilkårlige indekser og vilkårlige verdier. 493 00:26:31,000 --> 00:26:34,000 Mens det i en tradisjonell matrise er det 0, 1, 2, 494 00:26:34,000 --> 00:26:37,000 i en assosiativ array kan du ha en indeks 495 00:26:37,000 --> 00:26:41,000 eller en nøkkel av foo hvis verdi er bar. 496 00:26:41,000 --> 00:26:46,000 Du kan da ha en annen tast hvis navn er baz og hvis verdien er qux. 497 00:26:46,000 --> 00:26:49,000 >> Igjen, dumme informatikk generiske variabelnavn her, 498 00:26:49,000 --> 00:26:55,000 men poenget er at denne matrisen ikke har brakett 0 eller brakett 1. 499 00:26:55,000 --> 00:26:59,000 Det er i stedet nødt til braketten foo og braketten baz. 500 00:26:59,000 --> 00:27:03,000 Dette er mye mer allsidig i at vi kommer til å være i stand til å knytte 501 00:27:03,000 --> 00:27:07,000 ord med andre ord, taster med verdier helt vilkårlig, 502 00:27:07,000 --> 00:27:12,000 og vi kommer til å være i stand til å få disse verdiene tilbake i konstant tid 503 00:27:12,000 --> 00:27:14,000 fordi under panseret hva en assosiativ array 504 00:27:14,000 --> 00:27:16,000 egentlig er er en hash table. 505 00:27:16,000 --> 00:27:20,000 Husker at en hash table lar deg sette i noen innspill 506 00:27:20,000 --> 00:27:25,000 liker satt i ordet David hvis du vil sette inn David inn i en slags ordbok, 507 00:27:25,000 --> 00:27:27,000 og så får du tilbake noen verdi typisk. 508 00:27:27,000 --> 00:27:29,000 I tilfelle av stavekontroll, sant eller usant. 509 00:27:29,000 --> 00:27:33,000 David eller hva ordet er i eller ikke er i ordboken. 510 00:27:33,000 --> 00:27:36,000 En assosiativ array er egentlig bare en hash table, 511 00:27:36,000 --> 00:27:38,000 men det er en mye mer brukervennlig inkarnasjonen av det. 512 00:27:38,000 --> 00:27:41,000 Som vi vil se, det kommer til å tillate oss å gjøre noen ting 513 00:27:41,000 --> 00:27:43,000 veldig, veldig enkelt. 514 00:27:43,000 --> 00:27:45,000 >> La oss ta en titt på noen grunnleggende PHP 515 00:27:45,000 --> 00:27:47,000 eksempler og se hva vi kan gjøre med dette språket. 516 00:27:47,000 --> 00:27:51,000 La meg gå videre og åpne opp i vår kilde katalog i dag 517 00:27:51,000 --> 00:27:54,000 en fil som heter hello1.php. 518 00:27:54,000 --> 00:27:57,000 Denne filen er mer kommentar enn det er selve koden, 519 00:27:57,000 --> 00:28:00,000 så la meg faktisk fjerne alle kommentarene fra filen 520 00:28:00,000 --> 00:28:05,000 og presentere deg kanskje den enkleste PHP-programmet her. 521 00:28:05,000 --> 00:28:07,000 5 linjer, og noen av dem er hvite mellomrom, 522 00:28:07,000 --> 00:28:09,000 så merke til noen viktige forskjeller her. 523 00:28:09,000 --> 00:28:12,000 Filen heter hello1.php. 524 00:28:12,000 --> 00:28:16,000 Den aller første linje, skjønt, er 00:28:18,000 Lignende i ånden til HTML, 526 00:28:18,000 --> 00:28:21,000 at tegnsekvens forteller datamaskinen 527 00:28:21,000 --> 00:28:25,000 "Hei, datamaskin, her kommer et program vi er i i PHP." 528 00:28:25,000 --> 00:28:28,000 Det gjør at det ikke er forvirret at det er et annet språk. 529 00:28:28,000 --> 00:28:30,000 Linje 2 er en interessant mellomrom. 530 00:28:30,000 --> 00:28:32,000 Linje 3 er vår gamle venn printf, 531 00:28:32,000 --> 00:28:34,000 denne gangen i sammenheng med PHP. 532 00:28:34,000 --> 00:28:37,000 PHP har sin egen versjon av printf som oppfører seg akkurat det samme, 533 00:28:37,000 --> 00:28:39,000 så dette er bare kommer til å skrive ut "Hei, verden." 534 00:28:39,000 --> 00:28:46,000 Og så dette motsatte tag her,>, som betyr at det er for min PHP kode. 535 00:28:46,000 --> 00:28:48,000 >> La oss se hvordan å kjøre dette. 536 00:28:48,000 --> 00:28:50,000 Jeg kommer til å gå tilbake til min terminal-vinduet her. 537 00:28:50,000 --> 00:28:52,000 Jeg kommer til å gå inn i min PHP katalogen. 538 00:28:52,000 --> 00:28:56,000 Legg merke til at vi har en hel haug med filer, den første som er hello.php. 539 00:28:56,000 --> 00:29:01,000 La meg gå videre og kjøre denne, hello1.php, skriver. 540 00:29:01,000 --> 00:29:03,000 Ingen tillatelse. Okay. 541 00:29:03,000 --> 00:29:06,000 Hvordan har vi løst ting som dette i det siste? 542 00:29:06,000 --> 00:29:08,000 Hva er det? >> [Uhørlig student respons] 543 00:29:08,000 --> 00:29:11,000 Vi trenger lese og skrive, men la meg gjøre ls-l. 544 00:29:11,000 --> 00:29:14,000 Husk dette noe kryptiske utgang der hello1 545 00:29:14,000 --> 00:29:17,000 synes å være lesbar og skrivbar av meg 546 00:29:17,000 --> 00:29:19,000 men kan leses av alle andre. 547 00:29:19,000 --> 00:29:22,000 Det viser seg dette faktisk ikke er et skritt i riktig retning. 548 00:29:22,000 --> 00:29:25,000 Forskjellen, igjen, med et tolket språk 549 00:29:25,000 --> 00:29:27,000 er du ikke kjøre programmet direkte. 550 00:29:27,000 --> 00:29:30,000 Du i stedet kjøre en tolk og gi den koden 551 00:29:30,000 --> 00:29:33,000 at du har skrevet slik at den kan tolke det linje for linje. 552 00:29:33,000 --> 00:29:36,000 I dette tilfellet tolk eller programmet jeg faktisk ønsker å kjøre 553 00:29:36,000 --> 00:29:38,000 er bokstavelig talt kalles PHP. 554 00:29:38,000 --> 00:29:41,000 >> Et sted på denne harddisken av apparatet er det et program 555 00:29:41,000 --> 00:29:45,000 noen andre skrev kalt PHP, eller på Windows php.exe. 556 00:29:45,000 --> 00:29:48,000 Hva jeg skal gjøre her er jeg kommer til å faktisk kjøre PHP 557 00:29:48,000 --> 00:29:51,000 men gi det som en kommandolinje argument koden som jeg skrev, 558 00:29:51,000 --> 00:29:54,000 og så skal jeg zoome ut og trykk enter. 559 00:29:54,000 --> 00:29:58,000 Det kjører mitt program for meg, fra topp til bunn, fra venstre til høyre. 560 00:29:58,000 --> 00:30:01,000 La meg gå videre og åpne opp en liten varians av dette. 561 00:30:01,000 --> 00:30:05,000 I hello2.php merke til at dette også 562 00:30:05,000 --> 00:30:08,000 er det meste kommentarer, så la meg bli kvitt de som en distraksjon, 563 00:30:08,000 --> 00:30:13,000 og hva er helt klart annerledes nå om denne filen? 564 00:30:13,000 --> 00:30:15,000 Det er denne nye linjen, noe kryptisk på toppen. 565 00:30:15,000 --> 00:30:20,000 I linje 1 er det #! / Bin / php. 566 00:30:20,000 --> 00:30:24,000 Bin er en konvensjon om Linux og Mac OS for binærfiler, 567 00:30:24,000 --> 00:30:27,000 so / bin betyr at dette er en mappe som inneholder en haug av binærfiler 568 00:30:27,000 --> 00:30:29,000 som er programmert, hvorav én er PHP. 569 00:30:29,000 --> 00:30:32,000 The #! er kallenavnet shebang, 570 00:30:32,000 --> 00:30:35,000 som er den rask måte å si det, og hva dette betyr 571 00:30:35,000 --> 00:30:40,000 er at når du kjører dette programmet nå er det et hint på toppen av filen 572 00:30:40,000 --> 00:30:44,000 som forteller datamaskinen hva tolken å bruke. 573 00:30:44,000 --> 00:30:47,000 >> Det blir litt irriterende hvis du måtte fortelle brukerne og dine kunder 574 00:30:47,000 --> 00:30:50,000 "Hei, vi skrev dette programmet heter hello1.php." 575 00:30:50,000 --> 00:30:54,000 Alt du trenger å gjøre er alltid kjøre PHP og deretter navnet på dette programmet. 576 00:30:54,000 --> 00:30:58,000 Oppriktig, ville det bare være bedre å kjøre hello1.php, 577 00:30:58,000 --> 00:31:00,000 og ja, kan vi hvis vi gjør følgende. 578 00:31:00,000 --> 00:31:05,000 La meg gå videre og gjøre ls-l, og varsel i hello2 det fortsatt bare lese skrive 579 00:31:05,000 --> 00:31:10,000 og deretter lese lese, så jeg kan ennå ikke gjøre dette, hello2.php. 580 00:31:10,000 --> 00:31:15,000 Men vi introduserte dette aldri så kort siste gang, chmod kommandoen. 581 00:31:15,000 --> 00:31:20,000 Hvis jeg gjør chmod a + x, som betyr at alle pluss kjørbarhet, 582 00:31:20,000 --> 00:31:26,000 og deretter hello2.php og deretter gjøre ls-l igjen merke hva endret. 583 00:31:26,000 --> 00:31:29,000 En, er Linux viser meg filnavnet i grønt for å formidle ideen 584 00:31:29,000 --> 00:31:32,000 at det er kjørbare, men enda viktigere, på venstre side 585 00:31:32,000 --> 00:31:36,000 merke til at litt representerer x for kjørbar er nå satt. 586 00:31:36,000 --> 00:31:42,000 Hva dette betyr nå er at jeg kan kjøre ./hello2.php som vanlig, 587 00:31:42,000 --> 00:31:45,000 trykk enter, og på grunn av shebang på toppen av filen 588 00:31:45,000 --> 00:31:48,000 det er et hint, igjen, til Linux som sier 589 00:31:48,000 --> 00:31:51,000 bruke denne tolken til å kjøre denne filen. 590 00:31:51,000 --> 00:31:54,000 Ikke bekymre deg om å tvinge brukeren til å faktisk skrive det. 591 00:31:54,000 --> 00:31:57,000 >> Og hva er fint er nå det er slags irrelevant for mine kunder eller mine venner 592 00:31:57,000 --> 00:32:01,000 hvilket språk jeg skrev dette programmet i, så jeg kan gå videre med MS 593 00:32:01,000 --> 00:32:04,000 og endre navnet på denne tingen å hello2, for eksempel. 594 00:32:04,000 --> 00:32:07,000 Og nå hvis jeg gjør ./hello2 595 00:32:07,000 --> 00:32:10,000 og zoome ut mitt program fortsetter å kjøre. 596 00:32:10,000 --> 00:32:13,000 Disse filtypene er en menneskelig konvensjon som er nødvendig 597 00:32:13,000 --> 00:32:15,000 for noe sånt Clang og Make som ser etter dem. 598 00:32:15,000 --> 00:32:18,000 Men for PHP, kan jeg kalle denne filtypen hva jeg vil. 599 00:32:18,000 --> 00:32:22,000 Jeg kunne lure verden til å tro at jeg er virkelig god til Ruby, 600 00:32:22,000 --> 00:32:25,000 og jeg kunne skrive hello2.rb og deretter kjøre dette, 601 00:32:25,000 --> 00:32:28,000 og voila, nå har jeg Ruby-versjonen, som er en komplett løgn. 602 00:32:28,000 --> 00:32:30,000 Men filtyper er meningsløst 603 00:32:30,000 --> 00:32:35,000 hvis filen er kjørbar, og har denne spesielle hint øverst filen. 604 00:32:35,000 --> 00:32:38,000 >> Nå, som en side, la meg vise deg raskt versjon 3, 605 00:32:38,000 --> 00:32:40,000 som er liksom en nyttig triks å vite. 606 00:32:40,000 --> 00:32:45,000 I hello3 gjorde jeg noe litt galt 607 00:32:45,000 --> 00:32:47,000 at jeg skal oppdatere kildekoden på nettet. 608 00:32:47,000 --> 00:32:50,000 I versjon 3 viser det seg at på de fleste Linux-maskiner 609 00:32:50,000 --> 00:32:53,000 det er et program som heter konv for miljø, 610 00:32:53,000 --> 00:32:56,000 og hva du kan gjøre her er hvis du har ingen anelse om hvor PHP 611 00:32:56,000 --> 00:33:00,000 er installert på den lokale harddisken, fordi faktisk det kunne variere avhengig av datamaskinen 612 00:33:00,000 --> 00:33:03,000 at noen bruker, sier env bare kjøre konv, 613 00:33:03,000 --> 00:33:07,000 som er på de fleste systemer, og finne ut hvor PHP er. 614 00:33:07,000 --> 00:33:11,000 Bare en vanlig triks slik at du ikke trenger å bekymre deg om å finne ut hvor et program er. 615 00:33:11,000 --> 00:33:14,000 Men hvis du bryr for å finne ut hvor et program er, og du ikke har brydde så langt 616 00:33:14,000 --> 00:33:16,000 du kan bruke hvilken kommando. 617 00:33:16,000 --> 00:33:19,000 >> La meg zoome ut og type som php, 618 00:33:19,000 --> 00:33:23,000 og legge merke til det forteller meg at det er faktisk i usr / bin / php. 619 00:33:23,000 --> 00:33:25,000 Det er en slags løgn. Det er også i bin. 620 00:33:25,000 --> 00:33:27,000 Det er bare å vise meg det første treffet. 621 00:33:27,000 --> 00:33:31,000 Hvis du noen gang lurt på hvor Clang er, som Clang, er at i usr / bin / clang, 622 00:33:31,000 --> 00:33:34,000 som gjør, er usr / bin / gjøre, og hva det betyr all denne tiden 623 00:33:34,000 --> 00:33:38,000 du kunne ha vært å skrive usr / bin / clang inn for å kjøre Clang, 624 00:33:38,000 --> 00:33:41,000 men det er slags kjedelig å gjøre det, så noen mapper 625 00:33:41,000 --> 00:33:44,000 som usr / bin og bin antas å være mislighold 626 00:33:44,000 --> 00:33:50,000 så maskinen vet å lete i dem for deg. 627 00:33:50,000 --> 00:33:53,000 Eventuelle spørsmål om å skrive en super, super enkelt Hello World-programmet 628 00:33:53,000 --> 00:33:55,000 i PHP, og deretter kjøre den? 629 00:33:55,000 --> 00:33:59,000 Fordi nå skal vi begynne å innføre mer overbevisende syntaks. 630 00:33:59,000 --> 00:34:01,000 Greit, her vi går. 631 00:34:01,000 --> 00:34:03,000 Disse programmene vi har sett faktisk alle av dem før. 632 00:34:03,000 --> 00:34:07,000 >> Hvis jeg åpner opp, for eksempel, la oss gjøre beer1.php, 633 00:34:07,000 --> 00:34:09,000 Vi vil ikke gå gjennom flere versjoner av denne, men det jeg gjorde 634 00:34:09,000 --> 00:34:13,000 ble jeg satte meg ned og helte det eller konverteres 635 00:34:13,000 --> 00:34:15,000 min C-kode til PHP-kode her. 636 00:34:15,000 --> 00:34:18,000 De fleste av toppen av filen er kommentarer her oppe. 637 00:34:18,000 --> 00:34:20,000 Det viser seg at det er en ny funksjon vi trenger kalt readline. 638 00:34:20,000 --> 00:34:23,000 GetString, tilbakekalling, fra uke 0 framover var en CS50 ting. 639 00:34:23,000 --> 00:34:27,000 PHP kommer med sin egen brukervennlig funksjon som heter readline 640 00:34:27,000 --> 00:34:30,000 som tar en argument som spesifiserer meldingen 641 00:34:30,000 --> 00:34:33,000 som du ønsker å vise til brukeren, og hva readline gjør 642 00:34:33,000 --> 00:34:35,000 er den returnerer uansett brukeren skriver i. 643 00:34:35,000 --> 00:34:39,000 I dette tilfellet, jeg erklære en variabel kalt $ n. 644 00:34:39,000 --> 00:34:42,000 Jeg lagrer i det returverdien av readline 645 00:34:42,000 --> 00:34:44,000 etter spørre brukeren med denne strengen. 646 00:34:44,000 --> 00:34:47,000 Bare for å sikkerhetskopiere, å faktisk kjøre denne tingen, la meg gå videre 647 00:34:47,000 --> 00:34:50,000 og kjøre php beer1.php. 648 00:34:50,000 --> 00:34:53,000 Hvor mange flasker vil det være? La oss bare gjøre to denne gangen. 649 00:34:53,000 --> 00:34:55,000 Enter. Det er alt. 650 00:34:55,000 --> 00:34:59,000 >> Programmet er funksjonelt identisk med C-versjonen fra uker siden. 651 00:34:59,000 --> 00:35:01,000 Men syntaktisk la oss se hva som er annerledes. 652 00:35:01,000 --> 00:35:05,000 Etter at jeg får en int fra brukeren beskjed om at jeg gjør noen feil kontroll, 653 00:35:05,000 --> 00:35:08,000 og hvis n er mindre enn 1 jeg sluttet og jeg skrive ut 654 00:35:08,000 --> 00:35:11,000 en lei melding til brukeren og avslutt med 1. 655 00:35:11,000 --> 00:35:13,000 Dette er også litt annerledes. 656 00:35:13,000 --> 00:35:16,000  I c hva gjorde vi? I C returnerte vi en. 657 00:35:16,000 --> 00:35:20,000 I PHP avslutte deg med en, som oppriktig er jeg tenke litt mer intuitivt 658 00:35:20,000 --> 00:35:22,000 fordi du bokstavelig talt å avslutte programmet. 659 00:35:22,000 --> 00:35:25,000 Greit, og deretter ned her irriterende sangen er identisk syntaktisk 660 00:35:25,000 --> 00:35:29,000 med unntak av variabel, så her nede i linje 24 og fremover 661 00:35:29,000 --> 00:35:31,000 merker min for loop er nesten det samme, 662 00:35:31,000 --> 00:35:34,000 men jeg har $ foran i og n, 663 00:35:34,000 --> 00:35:37,000 og hva mangler også fra linje 26 som vi har hatt i det siste 664 00:35:37,000 --> 00:35:39,000 når erklære en variabel jeg? 665 00:35:39,000 --> 00:35:41,000 Det er ingen type. 666 00:35:41,000 --> 00:35:43,000 Det er feil i PHP for å si int. 667 00:35:43,000 --> 00:35:45,000 Du rett og slett ikke trenger å gjøre det. 668 00:35:45,000 --> 00:35:48,000 Datamaskinen, er tolken PHP smart nok til å innse 669 00:35:48,000 --> 00:35:51,000 at hvis du skriver inn et tall i $ jeg det vil behandle det 670 00:35:51,000 --> 00:35:53,000 som et tall for deg. 671 00:35:53,000 --> 00:35:57,000 Og deretter ned her vi kobler til $ i, $ i, $ i - en. 672 00:35:57,000 --> 00:36:00,000 Alle som er den samme, og deretter ned her vi gjør en "Wow, det er irriterende" printf 673 00:36:00,000 --> 00:36:02,000 og deretter avslutte (0). 674 00:36:02,000 --> 00:36:05,000 >> Igjen er det takeaway her at selv om vi kommer til å bruke relativt 675 00:36:05,000 --> 00:36:09,000 lite tid på PHP, sikkert i motsetning til hva vi gjorde på C, 676 00:36:09,000 --> 00:36:12,000 det er nesten det samme, og så hva vi skal gjøre i dag og neste uke 677 00:36:12,000 --> 00:36:14,000 og utover er fokus virkelig på noen av de nye ideene. 678 00:36:14,000 --> 00:36:17,000 Bare for å se at en annen ting ikke oversette over fra C, 679 00:36:17,000 --> 00:36:20,000 dette var en super enkelt program vi gjorde i uke 1 680 00:36:20,000 --> 00:36:22,000 eller 2 som cubed en verdi. 681 00:36:22,000 --> 00:36:25,000 Men hva var interessant på den tiden om dette programmet er at det 682 00:36:25,000 --> 00:36:28,000 introduserte begrepet en tilpasset skriftlig funksjon som vi selv skrev. 683 00:36:28,000 --> 00:36:31,000 Syntaksen i PHP er nesten det samme. 684 00:36:31,000 --> 00:36:33,000 Her er mitt program opp toppen. 685 00:36:33,000 --> 00:36:35,000 Legg merke igjen fraværende er noen forestilling om main. 686 00:36:35,000 --> 00:36:39,000 Jeg begynner å skrive kode, og dette er hva som kommer til å bli henrettet av tolken. 687 00:36:39,000 --> 00:36:42,000 Jeg skriver ut x er nå 2, formodentlig. 688 00:36:42,000 --> 00:36:44,000 Så jeg hevder cubing ... 689 00:36:44,000 --> 00:36:47,000 Så ringer jeg kuben funksjon og passere i $ x 690 00:36:47,000 --> 00:36:50,000 og tilordne returverdien til $ x. 691 00:36:50,000 --> 00:36:53,000 Så jeg hevder at det er cubed, og deretter si jeg dette, som forhåpentligvis 692 00:36:53,000 --> 00:36:55,000 vil si x er nå 8. 693 00:36:55,000 --> 00:36:59,000 Syntaksen for funksjonen i PHP er aldri så litt annerledes. 694 00:36:59,000 --> 00:37:01,000 Igjen mangler er returtypen. 695 00:37:01,000 --> 00:37:05,000 Igjen mangler er avkastningen type og også mangler er hva andre type? 696 00:37:05,000 --> 00:37:07,000 [Uhørlig student respons] 697 00:37:07,000 --> 00:37:10,000 Vel, ok, det er bra. La oss komme tilbake til det i et sekund. 698 00:37:10,000 --> 00:37:12,000 >> Vi har for eksempel int her. 699 00:37:12,000 --> 00:37:15,000 Vi har ikke, for eksempel, har int her fordi, igjen, i PHP 700 00:37:15,000 --> 00:37:18,000 du rett og slett ikke trenger til og bør ikke gjøre det, 701 00:37:18,000 --> 00:37:20,000 men det er denne nye søkeordet kalt funksjon. 702 00:37:20,000 --> 00:37:23,000 I PHP er det nesten litt klarere fordi når du vil ha en funksjon 703 00:37:23,000 --> 00:37:26,000 du bokstavelig talt si funksjon, gir du den et navn og deretter en kommaseparert liste 704 00:37:26,000 --> 00:37:28,000 hvis noen av argumentene. 705 00:37:28,000 --> 00:37:32,000 Du trenger ikke å si ugyldig eller noe sånt, og deretter avkastning er den samme, 706 00:37:32,000 --> 00:37:35,000 $ A * $ a * $ a. 707 00:37:35,000 --> 00:37:38,000 Hva mangler også? Sammy påpekt dette her. 708 00:37:38,000 --> 00:37:43,000 På toppen av filen helt fraværende i PHP er også en prototype. 709 00:37:43,000 --> 00:37:45,000 Dette er også med design. 710 00:37:45,000 --> 00:37:48,000 Språk og tolker som PHP er smartere enn C noensinne var 711 00:37:48,000 --> 00:37:50,000 i kompilatorer som Clang. 712 00:37:50,000 --> 00:37:53,000 >> Husker at Clang, hvis du ikke forteller det at kuben eksisterer, 713 00:37:53,000 --> 00:37:56,000 Hvis du ikke fortelle det som printf eksisterer som en prototyp 714 00:37:56,000 --> 00:38:00,000 eller med en # include, vel, det skulle kjefte på deg og ikke engang kompilere koden din. 715 00:38:00,000 --> 00:38:03,000 PHP og mer moderne språk er mye smartere når det kommer til dette. 716 00:38:03,000 --> 00:38:07,000 De vil ta på seg å lese gjennom alle koden din 717 00:38:07,000 --> 00:38:11,000 og deretter kjefte på deg bare hvis den finner kube ingensteds. 718 00:38:11,000 --> 00:38:15,000 Det spiller ingen rolle om kube er på bunnen eller toppen eller i en separat fil. 719 00:38:15,000 --> 00:38:18,000 PHP og lignende språk er nå smart nok til å se fremover 720 00:38:18,000 --> 00:38:26,000 på alt før deeming deg som har gjort en feil. 721 00:38:26,000 --> 00:38:28,000 Hvor blir det oss? 722 00:38:28,000 --> 00:38:32,000 >> La oss gjøre en siste eksempel her i forhold, 723 00:38:32,000 --> 00:38:35,000 og hvis jeg åpner opp conditions2.php varsel for 724 00:38:35,000 --> 00:38:37,000 syntaks her er nesten det samme. 725 00:38:37,000 --> 00:38:40,000 Jeg bruker readline istedenfor GetString, men at linjen er den samme som før, 726 00:38:40,000 --> 00:38:42,000 "Jeg vil gjerne ha en heltall please." 727 00:38:42,000 --> 00:38:45,000 Jeg har da en hvis tilstand, en else if, og deretter en annen, 728 00:38:45,000 --> 00:38:48,000 men funksjonelt dette programmet er også identisk med hva vi gjorde uker siden, 729 00:38:48,000 --> 00:38:51,000 så hvis jeg kjører denne tingen, php av conditions2, 730 00:38:51,000 --> 00:38:54,000 og jeg gir den et tall som 23 - 731 00:38:54,000 --> 00:38:57,000 Jeg plukket et positivt tall. Hvis jeg gir den -1 jeg plukket et negativt tall. 732 00:38:57,000 --> 00:39:00,000 Hvis jeg gir den 0 jeg faktisk plukket 0. 733 00:39:00,000 --> 00:39:02,000 Så hvem bryr seg om alt dette? 734 00:39:02,000 --> 00:39:06,000 Vel, en av de morsomme slags øvelser her 735 00:39:06,000 --> 00:39:10,000 for meg minst var å gå tilbake og se hvor raskt jeg kunne implementere pset 5, 736 00:39:10,000 --> 00:39:12,000 den feilstavinger pset. 737 00:39:12,000 --> 00:39:15,000 Husker at det var denne filen som heter speller.c, 738 00:39:15,000 --> 00:39:17,000 og det var en fil som heter dictionary.c. 739 00:39:17,000 --> 00:39:20,000 Hva jeg gjorde var jeg slags brukte noen minutter, og jeg konverterte C-kode 740 00:39:20,000 --> 00:39:23,000 til PHP-kode, og vi vil ikke bruke mye tid på stavekontroll 741 00:39:23,000 --> 00:39:26,000 fordi akkurat som i pset 5 ikke du virkelig trenger å 742 00:39:26,000 --> 00:39:29,000 bruke mye tid på stavekontroll seg selv fordi din oppmerksomhet var på ordlisten. 743 00:39:29,000 --> 00:39:32,000 >> Det er nok å si at hvis du leser gjennom stavekontroll, 744 00:39:32,000 --> 00:39:35,000 denne filen her, det er ganske mye tilsvarer C-kode 745 00:39:35,000 --> 00:39:37,000 Vi ga deg for pset 5. 746 00:39:37,000 --> 00:39:39,000 Jeg har nettopp lagt noen $ steder. 747 00:39:39,000 --> 00:39:43,000 Jeg har endret visse funksjonsnavn hvis de ikke eksisterer i PHP. 748 00:39:43,000 --> 00:39:45,000 Det er en ekstra ting her, preg_match, 749 00:39:45,000 --> 00:39:48,000 som er litt mer avansert måte å gjøre noe, men vi vil komme tilbake til det etter hvert. 750 00:39:48,000 --> 00:39:51,000 Men kort sagt, er stavekontroll nesten identisk, og hvis du ser på bunnen 751 00:39:51,000 --> 00:39:54,000 hva det til slutt spytter ut dette her, 752 00:39:54,000 --> 00:39:57,000 ord feilstavet, ord i ordbok, ord i teksten. 753 00:39:57,000 --> 00:40:00,000 All right, så hva er interessant nå er følgende. 754 00:40:00,000 --> 00:40:05,000 På toppen av filen min jeg krever dictionary.php. 755 00:40:05,000 --> 00:40:09,000 Akkurat som C har omfatte # PHP har en spesiell funksjon som kalles krever 756 00:40:09,000 --> 00:40:14,000 at ganske mye gjør det samme, krever en fil som heter dictionary.php. 757 00:40:14,000 --> 00:40:18,000 Hvordan kan jeg gå om å implementere pset 5? 758 00:40:18,000 --> 00:40:21,000 La meg gå videre og åpne opp en fil her. 759 00:40:21,000 --> 00:40:24,000 La meg ta et lite referanse her. 760 00:40:24,000 --> 00:40:29,000 Og la meg lage en ny fil og begynne å ringe dette dictionary.php. 761 00:40:29,000 --> 00:40:31,000 La meg sette det i en annen mappe, slik at vi kan gjøre dette live. 762 00:40:31,000 --> 00:40:33,000 Og nå skal jeg zoome inn 763 00:40:33,000 --> 00:40:37,000 Jeg kommer til å starte min PHP-fil med åpen brakett php stengt braketten. 764 00:40:37,000 --> 00:40:40,000 Og så her var det noen funksjoner jeg trengte å gjennomføre for pset 5, 765 00:40:40,000 --> 00:40:42,000 så la meg begynne å implementere noen av dem, 766 00:40:42,000 --> 00:40:47,000 så funksjonskontroll, som måtte ta et ord i som et argument. 767 00:40:47,000 --> 00:40:49,000 Vi vil gjøre det og komme tilbake til det i et øyeblikk. 768 00:40:49,000 --> 00:40:53,000 >> Det var funksjon belastning, som tok i hva som argument? 769 00:40:53,000 --> 00:40:56,000 Ordbok, slik at filen som jeg faktisk ønsket å laste. 770 00:40:56,000 --> 00:41:00,000 Det var funksjon størrelse, som ikke tar noen argumenter 771 00:41:00,000 --> 00:41:04,000 og det var funksjons-hva var den andre? 772 00:41:04,000 --> 00:41:06,000 Losse, som ikke tar noen argumenter heller. 773 00:41:06,000 --> 00:41:10,000 Dette er de fire funksjonene som jeg trenger å nå implementere i PHP, 774 00:41:10,000 --> 00:41:13,000 og hva jeg skal gjøre er å gå videre og gjøre dette. 775 00:41:13,000 --> 00:41:16,000 Mange av dere brukt en hash tabell i pset 5, 776 00:41:16,000 --> 00:41:21,000 så la meg gå videre og lage en hash tabell i PHP. 777 00:41:21,000 --> 00:41:23,000 Ferdig. 778 00:41:23,000 --> 00:41:25,000 Det gir meg en hash table. Vel, hvorfor? 779 00:41:25,000 --> 00:41:30,000 One, er variabelen $ tabellen, bare å trylle frem ideen om en hash table. 780 00:41:30,000 --> 00:41:34,000 Klammeparentesene, men husker, representerer det? 781 00:41:34,000 --> 00:41:37,000 En matrise, men i PHP matriser ikke trenger å være numerisk indeksert. 782 00:41:37,000 --> 00:41:41,000 De kan også være assosierende matriser, 783 00:41:41,000 --> 00:41:44,000 som betyr at du kan ha vilkårlige nøkler og verdier. 784 00:41:44,000 --> 00:41:49,000 >> Mye som i 5 pset, de av dere som gjorde hash table implementeringer 785 00:41:49,000 --> 00:41:53,000 du sannsynligvis satt ordet og deretter satt den inn i en kjede med koblede lister, 786 00:41:53,000 --> 00:41:56,000 eller du lagret verdien av sann sted eller noe som uttrykker. 787 00:41:56,000 --> 00:41:59,000 Du liksom husket at ordet var der. 788 00:41:59,000 --> 00:42:01,000 For nå, som kommer til å være min hash table, 789 00:42:01,000 --> 00:42:06,000 og så nå skal gå om å gjennomføre sjekken funksjon 790 00:42:06,000 --> 00:42:09,000 Jeg trenger bare å se innsiden av det hash table 791 00:42:09,000 --> 00:42:11,000 og se om et ord er der. 792 00:42:11,000 --> 00:42:15,000 Det jeg skal gjøre er jeg kommer til å si om- 793 00:42:15,000 --> 00:42:20,000 la oss si isset, som er en PHP funksjon som bokstavelig talt betyr bare er nøkkelen sett, 794 00:42:20,000 --> 00:42:24,000 så isset ($ tabell [$ ord], 795 00:42:24,000 --> 00:42:29,000 og hvis så returnere sann. 796 00:42:29,000 --> 00:42:32,000 Det var det. Det er pset 5 i PHP. 797 00:42:32,000 --> 00:42:34,000 Vel, i rettferdighet, ok. 798 00:42:34,000 --> 00:42:37,000 Else return false, så det er ikke der. 799 00:42:37,000 --> 00:42:39,000 Hva som egentlig skjer her? 800 00:42:39,000 --> 00:42:42,000 Vel, hvis tabell-eller hash table her mer generelt- 801 00:42:42,000 --> 00:42:46,000 er en assosiativ array som betyr at du kan indeksere inn i det 802 00:42:46,000 --> 00:42:50,000 med et ord som "ord", og du må få tilbake noen verdi. 803 00:42:50,000 --> 00:42:52,000 >> Vi er slags få ett skritt foran oss. 804 00:42:52,000 --> 00:42:56,000 Det ville være slags fint om vi faktisk lastet ned filen først, 805 00:42:56,000 --> 00:42:58,000 så belastningen er ikke fullt så enkelt, men la meg gå videre og piske opp 806 00:42:58,000 --> 00:43:00,000  en virkelig rask implementering av last. 807 00:43:00,000 --> 00:43:07,000 La meg gå videre og si ord får fil ordbok. 808 00:43:07,000 --> 00:43:10,000 Filen funksjon i PHP åpner en fil 809 00:43:10,000 --> 00:43:12,000 og returnerer til deg en rekke av alle ordene i den filen, 810 00:43:12,000 --> 00:43:14,000 bare hendene dem til deg. 811 00:43:14,000 --> 00:43:16,000 Det var en stor smerte også, ikke sant? 812 00:43:16,000 --> 00:43:21,000 Nå foreach, dette er vår nye konstruksjon, foreach ($ ord som $ ord). 813 00:43:21,000 --> 00:43:25,000 Denne sløyfen skal begynne iterating over rekke ord 814 00:43:25,000 --> 00:43:30,000 og tilordne til $ ordet variabel hvert ord i filen 815 00:43:30,000 --> 00:43:32,000 fra det første til det andre til tredje til fjerde hele veien 816 00:43:32,000 --> 00:43:35,000 så jeg trenger ikke å gjøre det irriterende [i] notasjon og lignende. 817 00:43:35,000 --> 00:43:38,000 Og hva jeg bare kommer til å gjøre for hvert av disse ordene 818 00:43:38,000 --> 00:43:43,000 er lagre det i mitt bord ved indeksering inn i tabell 819 00:43:43,000 --> 00:43:47,000 og deretter gjøre sant fordi å huske 820 00:43:47,000 --> 00:43:50,000 at et ord er i min ordbok alt jeg egentlig har å gjøre 821 00:43:50,000 --> 00:43:55,000 Er Flip slags litt og si dette ordet i min hash table er der, sant. 822 00:43:55,000 --> 00:43:58,000 Og hvis det ikke er der, jeg har ikke eksplisitt satt falske, 823 00:43:58,000 --> 00:44:01,000 ellers ville jeg nødt til å sette usant for alle mulige ord i universet. 824 00:44:01,000 --> 00:44:05,000 >> Det er nok for meg bare å sette en indeksverdi 825 00:44:05,000 --> 00:44:09,000 til true hvis et ord er faktisk i min hash table. 826 00:44:09,000 --> 00:44:12,000 Nå er jeg kutte et par hjørner her at jeg vil vinke hendene mine på for nå, 827 00:44:12,000 --> 00:44:15,000 men nå lasten funksjonen er ferdig. 828 00:44:15,000 --> 00:44:18,000 Jeg legger alle ordene fra filen inn i en matrise. 829 00:44:18,000 --> 00:44:21,000 Jeg iterere over denne matrisen, og for hvert ord i rekken 830 00:44:21,000 --> 00:44:24,000 Jeg kobler den til min hash table med en linje med kode. 831 00:44:24,000 --> 00:44:26,000 Dette er moro. Du vet hvordan vi kan implementere størrelse nå? 832 00:44:26,000 --> 00:44:28,000 Vel, er størrelsen alltid ganske enkelt, i rettferdighet. 833 00:44:28,000 --> 00:44:32,000 Her kan vi bare kommer tilbake telling av tabellen. 834 00:44:32,000 --> 00:44:34,000 Det er ganske enkelt også, telle hvor mange ting i tabellen. 835 00:44:34,000 --> 00:44:36,000 Det er faktisk slags ikke den mest effektive. 836 00:44:36,000 --> 00:44:39,000 Jeg bør kanskje ha en variabel kalt størrelse slik at vi kan gjøre det 837 00:44:39,000 --> 00:44:41,000 i konstant tid, men det er ganske enkelt. 838 00:44:41,000 --> 00:44:45,000 Oh, og deretter losse, hvis vi virkelig ønsker å være anal her 839 00:44:45,000 --> 00:44:47,000 Vi kan si det er hvordan du fjerner noe. 840 00:44:47,000 --> 00:44:49,000 Du bare setter den variable lik en tom array, 841 00:44:49,000 --> 00:44:51,000 og det blir kvitt alt som var der. 842 00:44:51,000 --> 00:44:53,000 Du trenger ikke å ringe gratis. 843 00:44:53,000 --> 00:44:56,000 >> Igjen, jeg har kuttet noen hjørner, og jeg beklager for tilordning problem sett 5 844 00:44:56,000 --> 00:45:00,000 kanskje i C, men hvis vi nå gå videre og kjøre denne, 845 00:45:00,000 --> 00:45:02,000 Jeg kommer til å faktisk kjøre den versjonen som jeg skrev på forhånd 846 00:45:02,000 --> 00:45:05,000 bare slik at jeg ikke gjør noen syntaktiske feil overhodet. 847 00:45:05,000 --> 00:45:08,000 La meg gå videre og kjøre stavekontroll. Bruken er den samme. 848 00:45:08,000 --> 00:45:12,000 Her er en ordbok fil som bare inneholder ordet foo. 849 00:45:12,000 --> 00:45:15,000 Her er en tekstfil som bare inneholder foo bar. 850 00:45:15,000 --> 00:45:19,000 La oss stavekontroll dette, så stavekontroll, ved hjelp av denne ordboken filen på denne tekstfilen. 851 00:45:19,000 --> 00:45:21,000 Det er en feilstavet ord, bar, og voila. 852 00:45:21,000 --> 00:45:23,000 Ferdig med pset 5. 853 00:45:23,000 --> 00:45:30,000 La oss ta en 5-minutters pause her, og vi vil komme tilbake med mer om PHP. 854 00:45:30,000 --> 00:45:32,000 Greit, vi er tilbake. 855 00:45:32,000 --> 00:45:34,000 La oss gjøre-hater meg for en stund. 856 00:45:34,000 --> 00:45:37,000 La oss nå faktisk se om dette ikke var en positiv 857 00:45:37,000 --> 00:45:39,000 faktisk implementere denne tingen i PHP. 858 00:45:39,000 --> 00:45:43,000 Gitt, det tok 45 sekunder å gjennomføre. 859 00:45:43,000 --> 00:45:45,000 >> Men la oss gå videre nå og kjøre ting. 860 00:45:45,000 --> 00:45:49,000 La meg gå videre og kjøre en C-versjon 861 00:45:49,000 --> 00:45:52,000 av stavekontroll, og vi vil kjøre den på en av de største filene, 862 00:45:52,000 --> 00:45:54,000 som er King James Bible. 863 00:45:54,000 --> 00:45:57,000 Og det er her i-la oss gå inn i våre C-mappen, 864 00:45:57,000 --> 00:46:01,000 stavekontroll på King James 5te. 865 00:46:01,000 --> 00:46:03,000 Mange av feilstavede ord. 866 00:46:03,000 --> 00:46:06,000 Ok, så det er utgang du sannsynligvis fått selv om tidene er litt annerledes, 867 00:46:06,000 --> 00:46:09,000 hvis du fikk alt fungerer, og så gang totalt å stave sjekk 868 00:46:09,000 --> 00:46:13,000 King James Bible var 0,38 sekunder, så ganske bra med at gjennomføringen. 869 00:46:13,000 --> 00:46:16,000 Nå la meg gå inn i PHP versjon, som vi nettopp skrev. 870 00:46:16,000 --> 00:46:18,000 La meg kjøre stavekontroll på King James. 871 00:46:18,000 --> 00:46:21,000 Whoops, ignorere denne feilen. Jeg er i feil katalog. 872 00:46:21,000 --> 00:46:24,000 Speller på King James 5te. 873 00:46:46,000 --> 00:46:48,000 Nesten ferdig. 874 00:46:48,000 --> 00:46:51,000 >> Ok, vil gløgg observatør innse at var mer enn 3 sekunder der. 875 00:46:51,000 --> 00:46:54,000 Det er den sanne kjøretid. 876 00:46:54,000 --> 00:46:58,000 Det viser seg at det tar tid å spytte mye tekst ut 877 00:46:58,000 --> 00:47:00,000 på grunn av bufring problemer, men lang historie kort, 878 00:47:00,000 --> 00:47:04,000 som var 3,15 sekunder av maskin tid, CPU tid, 879 00:47:04,000 --> 00:47:07,000 i motsetning til hva det var for et øyeblikk siden? 880 00:47:07,000 --> 00:47:09,000 Som 0,3. 881 00:47:09,000 --> 00:47:11,000 Jeg mener, det er en størrelsesorden tregere, så der er det 882 00:47:11,000 --> 00:47:14,000 latterlig nedgangen kommer fra? 883 00:47:14,000 --> 00:47:17,000 Vel, har som vært tilfellet med de fleste noen design beslutningen vi har gjort 884 00:47:17,000 --> 00:47:21,000 i klassen de siste 9 ukene er det nesten alltid dette kompromisset. 885 00:47:21,000 --> 00:47:24,000 Noen ganger mellom bare plass, noen ganger mellom tid og rom, 886 00:47:24,000 --> 00:47:27,000 plass, tid og utviklingsarbeid, og faktisk her, selv om 887 00:47:27,000 --> 00:47:31,000 vi lagret en enorm mengde tid, kanskje potensielt 10-20-30 timer 888 00:47:31,000 --> 00:47:34,000 av utvikling tid å implementere stavekontrollen 889 00:47:34,000 --> 00:47:36,000 ved å piske den opp på kun 45 sekunder med dette språket 890 00:47:36,000 --> 00:47:40,000 prisen vi betaler er at det er en størrelsesorden tregere som et resultat, 891 00:47:40,000 --> 00:47:43,000 og dette er vanligvis tilfelle med de fleste noen tolket språk, 892 00:47:43,000 --> 00:47:46,000 PHP, Python, Ruby, Pearl eller andre der 893 00:47:46,000 --> 00:47:49,000 hvis du kommer til å kjøre det gjennom en tolk og ha det lese koden din 894 00:47:49,000 --> 00:47:52,000 linje for linje, fra topp til bunn, fra venstre mot høyre, 895 00:47:52,000 --> 00:47:55,000 som mellommann kommer til å ta litt tid for seg selv, 896 00:47:55,000 --> 00:47:59,000 og hva du følte her i 3 sekunder i motsetning til 0,3 sekunder 897 00:47:59,000 --> 00:48:02,000 er det faktum at det er denne som må mellommann bokstavelig tolke vår kode 898 00:48:02,000 --> 00:48:05,000 linje for linje, og Gud forby hvis du er inne i en løkke 899 00:48:05,000 --> 00:48:08,000 med en stor fil som inneholder flere hundre tusen ord. 900 00:48:08,000 --> 00:48:11,000 >> Som overhead kommer til å legge opp og legge opp og legge opp og legge opp. 901 00:48:11,000 --> 00:48:16,000 For et verktøy som dette er det sannsynligvis ikke det beste språket å bruke for å implementere 902 00:48:16,000 --> 00:48:20,000 en stavekontroll hvis umiddelbarhet er av interesse for brukerne og til deg. 903 00:48:20,000 --> 00:48:23,000 Men luksusen vi har i et øyeblikk er hvis du 904 00:48:23,000 --> 00:48:27,000 bruke et språk som PHP eller mye av tolkede språk 905 00:48:27,000 --> 00:48:30,000 i sammenheng med nettet, for den saks skyld, har du fordelen 906 00:48:30,000 --> 00:48:34,000 at internett er en mye tregere enn de fleste datamaskiner. 907 00:48:34,000 --> 00:48:38,000 Du har en GHz CPU i maskinen, 2 GHz, kanskje enda mer i disse dager. 908 00:48:38,000 --> 00:48:41,000 Men realiteten er på internett er det en stor mengde latency 909 00:48:41,000 --> 00:48:45,000 der for en nettleser å snakke med en server, selv om vi så forrige uke 910 00:48:45,000 --> 00:48:47,000 at det er ganske fort, et halvt millisekund eller så, 911 00:48:47,000 --> 00:48:51,000 som legger også opp, og hvis du laster ned ting som et bilde 912 00:48:51,000 --> 00:48:54,000 eller en Facebook-bildet eller få direktemeldinger over Facebook skravling, 913 00:48:54,000 --> 00:48:57,000 Gchat eller lignende, alle disse for rundtur 914 00:48:57,000 --> 00:49:00,000 mellom nettleseren og serveren begynner å legge opp, 915 00:49:00,000 --> 00:49:03,000 som gjør bestemt valg av språk i mange tilfeller 916 00:49:03,000 --> 00:49:07,000 ikke alle som relevant, så du er fin med en litt tregere språk 917 00:49:07,000 --> 00:49:10,000 som PHP eller Python eller Ruby 918 00:49:10,000 --> 00:49:13,000 men som det er store oppsider til deg og dine kolleger 919 00:49:13,000 --> 00:49:17,000 og vennene dine fordi du kan implementere ting så, så mye raskere. 920 00:49:17,000 --> 00:49:20,000 Og dessuten har du mye mindre risiko for visse sikkerhetshull. 921 00:49:20,000 --> 00:49:22,000 Det er ingen pekere i PHP. 922 00:49:22,000 --> 00:49:25,000 Det er ingen SEG feil som du enkelt kan indusere 923 00:49:25,000 --> 00:49:27,000 på samme måte som du kunne i C. 924 00:49:27,000 --> 00:49:29,000 Med C du super nær maskinvaren. 925 00:49:29,000 --> 00:49:33,000 Med PHP og lignende språk er du liksom høyere nivå, så å si, 926 00:49:33,000 --> 00:49:37,000 med mange forsvar mellom deg og hva som faktisk skjer 927 00:49:37,000 --> 00:49:39,000 inne i maskinen, og det er bare en byttehandel. 928 00:49:39,000 --> 00:49:42,000 >> Vi har kommet til et punkt for å ha disse mer moderne, høyt nivå språk 929 00:49:42,000 --> 00:49:47,000 som PHP grunn av erfaringene i språk som PHP i C. 930 00:49:47,000 --> 00:49:50,000 Men hvis du ikke forstår hva som har foregått på under panseret hele tiden 931 00:49:50,000 --> 00:49:53,000 du absolutt ikke kan ta de riktige design beslutninger, 932 00:49:53,000 --> 00:49:56,000 og sikkert når det kommer til å jobbe på et sted som Facebook eller Google 933 00:49:56,000 --> 00:49:59,000 eller noen av disse stedene som i økende grad spiller med store datasett 934 00:49:59,000 --> 00:50:01,000 selv om du går tilbake og gjør premed og jobber med noen MD 935 00:50:01,000 --> 00:50:04,000 på noen store datasett med pasienter og leger 936 00:50:04,000 --> 00:50:08,000 og lignende bruke de riktige verktøyene er enormt overbevisende 937 00:50:08,000 --> 00:50:11,000 fordi ellers din analyse av noen datasett kan ta sekunder, 938 00:50:11,000 --> 00:50:14,000 eller det kan bokstavelig talt ta timer. 939 00:50:14,000 --> 00:50:17,000 Dette er bare ett eksempel, for ikke å frustrere deg med hvor mye mer innsats 940 00:50:17,000 --> 00:50:21,000 det var i C, men for å hjelpe deg setter pris på at når du implementerer noe i C 941 00:50:21,000 --> 00:50:24,000 du virkelig forstår, eller i teorien, virkelig forstå 942 00:50:24,000 --> 00:50:28,000 hvordan alt er eller skal jobbe, og du har nesten full kontroll 943 00:50:28,000 --> 00:50:31,000 over hva som skjer under panseret, og med disse høyere nivå språk 944 00:50:31,000 --> 00:50:34,000 du må gi avkall på mer kontroll til folk som oppfant dem 945 00:50:34,000 --> 00:50:37,000 og er underlagt mer til sine design beslutninger enn din. 946 00:50:37,000 --> 00:50:41,000 Men hvis vi tar for gitt at resultatene 947 00:50:41,000 --> 00:50:44,000 er ikke fullt så viktig på nettet på grunn av disse andre problemene, 948 00:50:44,000 --> 00:50:47,000 bare nettverkshastigheter er litt tregere enn CPU hastigheter uansett, 949 00:50:47,000 --> 00:50:50,000 slik at vi kan liksom råd til å bruke en litt tregere språk 950 00:50:50,000 --> 00:50:55,000 hvis upsides er at vi kan utvikle ting 10 ganger raskere eller enda mer. 951 00:50:55,000 --> 00:50:57,000 >> La oss se hvordan vi kan begynne å bruke dette. 952 00:50:57,000 --> 00:51:00,000 La meg gå inn i en mappe 953 00:51:00,000 --> 00:51:03,000 blant dagens eksempler kalt frosh.ims, 954 00:51:03,000 --> 00:51:06,000 og dette ble faktisk personlig motivert av at den aller første 955 00:51:06,000 --> 00:51:10,000 Jeg skrev for Web år siden etter å ha tatt CS50 og CS51 956 00:51:10,000 --> 00:51:14,000 var et nettsted for Frosh IMs program, førsteårsstudent egenutført idrett, 957 00:51:14,000 --> 00:51:16,000 som på den tiden var dette nok år siden at på den tiden 958 00:51:16,000 --> 00:51:19,000 var det ingen nettsted for programmet, selv om det var en Web, 959 00:51:19,000 --> 00:51:22,000 og i stedet var det en proctor i Wigglesworth der hvis du ønsket 960 00:51:22,000 --> 00:51:26,000 å registrere deg for volleyball eller fotball eller hva du vil fylle ut et stykke papir. 961 00:51:26,000 --> 00:51:28,000 Du vil da gå over tunet. 962 00:51:28,000 --> 00:51:31,000 Du vil da banke på døren sin og skyv i deres dør eller hånd til proctor 963 00:51:31,000 --> 00:51:34,000 et stykke papir med navnet ditt på det, om du ønsker å være en lagkaptein, 964 00:51:34,000 --> 00:51:37,000 hvilken idrett du ønsket å gjøre, og hva dorm du var i. 965 00:51:37,000 --> 00:51:39,000 Det var liksom en gamle skolen måte å gjøre ting på, og dette var et godt 966 00:51:39,000 --> 00:51:41,000 mulighet til å automatisere mye av denne prosessen. 967 00:51:41,000 --> 00:51:43,000 Du bare gå til nettstedet. Du skriver noe i. 968 00:51:43,000 --> 00:51:46,000 Du får en e-postbekreftelse, og bom, er du ferdig. 969 00:51:46,000 --> 00:51:49,000 >> Dette var den aller første jeg gjorde, riktignok i et språk som heter Pearl, 970 00:51:49,000 --> 00:51:52,000 men det er relativt enkelt å gjøre i PHP, og dette er slags representant 971 00:51:52,000 --> 00:51:55,000 av problemene kan du begynne å løse når du kan uttrykke deg selv 972 00:51:55,000 --> 00:51:58,000 programmatisk og trenger ikke å stole på ting som Google-områder 973 00:51:58,000 --> 00:52:01,000 eller Excel eller verktøy som er overlevert til deg. 974 00:52:01,000 --> 00:52:03,000 Dere har nå muligheten til å gjøre ting som dette. 975 00:52:03,000 --> 00:52:06,000 Dette er en super stygg versjon av et skjema, 976 00:52:06,000 --> 00:52:09,000 men la oss bare bruke den i begynnelsen av samtalen der dette er 977 00:52:09,000 --> 00:52:12,000 omtrent hva skjemaet så ut som år siden for oss 978 00:52:12,000 --> 00:52:14,000 å aktivere folk på nettet for å registrere deg for Frosh direktemeldinger. 979 00:52:14,000 --> 00:52:18,000 Vi ba om et navn, en avmerkingsboks for hvorvidt de ønsket å være kaptein, 980 00:52:18,000 --> 00:52:21,000 mann eller kvinne, og deretter hva dorm de var i, 981 00:52:21,000 --> 00:52:23,000 og så ville de sende dette skjemaet. 982 00:52:23,000 --> 00:52:27,000 La oss først se under panseret på HTML som representerer denne websiden. 983 00:52:27,000 --> 00:52:31,000 La meg gå inn froshims0, 984 00:52:31,000 --> 00:52:35,000 og som en side, for pset 7 Jeg tar for gitt 985 00:52:35,000 --> 00:52:37,000 katalogene og mappene som jeg setter ting i. 986 00:52:37,000 --> 00:52:40,000 Vi vil gå gjennom nøyaktig hvor ting må gå i apparatet, 987 00:52:40,000 --> 00:52:43,000 som mod kommandoer du må kjøre, så ikke bekymre deg om alle de 988 00:52:43,000 --> 00:52:46,000 dumme detaljer synkronisering i fra få gå her. 989 00:52:46,000 --> 00:52:49,000 >> Greit, her er froshims0.php. 990 00:52:49,000 --> 00:52:52,000 La meg bla nedover, og hva som er nysgjerrig her, 991 00:52:52,000 --> 00:52:56,000 Dette er en PHP-fil, men hva som er inni det, klart? 992 00:52:56,000 --> 00:52:59,000 Det er en hel masse av HTML, og faktisk, PHP opprinnelse 993 00:52:59,000 --> 00:53:02,000 virkelig var for å være en web-sentriske språk. 994 00:53:02,000 --> 00:53:04,000 For et øyeblikk siden vi brukte den til å implementere øl eksempel 995 00:53:04,000 --> 00:53:07,000 forholdene eksempel, hallo eksempel, og det er fint. 996 00:53:07,000 --> 00:53:11,000 Du kan bruke PHP som skriptspråk 997 00:53:11,000 --> 00:53:15,000 hvor et skript er egentlig bare nomenklatur gitt til en rask og skitne program 998 00:53:15,000 --> 00:53:19,000 eller noe som du skriver i en skriptbasert eller mer generelt et tolket språk. 999 00:53:19,000 --> 00:53:22,000 PHP er super nyttig for det fordi du har sett hvor raskt 1000 00:53:22,000 --> 00:53:24,000 relativt vi kan piske opp programmer i PHP. 1001 00:53:24,000 --> 00:53:27,000 Men det var egentlig laget for å brukes til web, 1002 00:53:27,000 --> 00:53:31,000 og designet for web i den forstand at merke opp her på toppen av filen 1003 00:53:31,000 --> 00:53:34,000 Jeg begynner med 00:53:38,000 Så jeg har en haug med unyttig kommentarer, gitt, men da jeg lukker PHP-modus. 1005 00:53:38,000 --> 00:53:41,000 Men da jeg slippe inn HTML-modus. 1006 00:53:41,000 --> 00:53:45,000 >> Hva er interessant om PHP er, selv om filen slutter på. Php 1007 00:53:45,000 --> 00:53:48,000 det er generelt ment å være co-blandet med HTML, 1008 00:53:48,000 --> 00:53:50,000 noen PHP-kode, noen HTML. 1009 00:53:50,000 --> 00:53:53,000 Og vi får se etter hvert at vi kan begynne å erte dem fra hverandre 1010 00:53:53,000 --> 00:53:56,000 og holde vår HTML atskilt fra PHP vår helt, 1011 00:53:56,000 --> 00:53:59,000 men opprinnelsen til PHP virkelig skulle gi deg denne fleksibiliteten, 1012 00:53:59,000 --> 00:54:02,000 at hvis du vil ha litt HTML bare skrive det, og det vil være 1013 00:54:02,000 --> 00:54:04,000 spytte ut identisk til nettleseren. 1014 00:54:04,000 --> 00:54:07,000 Men hvis du trenger noe programmering teknikk, 1015 00:54:07,000 --> 00:54:12,000 noen programmeringskode, kan du også sette den i nøyaktig samme fil, som vi snart se. 1016 00:54:12,000 --> 00:54:14,000 Her er min HTML. 1017 00:54:14,000 --> 00:54:16,000 Jeg har en tittel av dette for Frosh direktemeldinger. 1018 00:54:16,000 --> 00:54:20,000 Jeg har en body-koden som har fått noen CSS på den til sentrum alt i midten, 1019 00:54:20,000 --> 00:54:23,000 og deretter ned her har jeg en form som tilsynelatende kommer til å bli sendt 1020 00:54:23,000 --> 00:54:27,000 til en ny fil som heter register0.php, så vi får se det i et øyeblikk. 1021 00:54:27,000 --> 00:54:31,000 Den bruker en metode som kalles innlegget, som vi vil komme tilbake til også. 1022 00:54:31,000 --> 00:54:34,000 Så jeg har noen form innganger, en som heter navn, hvis typen er tekst, 1023 00:54:34,000 --> 00:54:37,000 en som heter kaptein, som type er boksen, 1024 00:54:37,000 --> 00:54:40,000 og dette har vi ikke sett det før, men det gjør akkurat det den sier. 1025 00:54:40,000 --> 00:54:42,000 Du vil få en avmerkingsboks i stedet for en tekstboks. 1026 00:54:42,000 --> 00:54:46,000 Her nede du har en radio knapp, som er en av de sirkulære knapper 1027 00:54:46,000 --> 00:54:48,000 at du kan enten velge denne eller den. 1028 00:54:48,000 --> 00:54:52,000 >> Legg merke til det er bevisst at jeg ga begge radioknappene navnet kjønn. 1029 00:54:52,000 --> 00:54:55,000 Dette er hvordan du får gjensidig utelukkelse der du må klikke 1030 00:54:55,000 --> 00:54:58,000 enten denne eller at man, og ved å klikke på andre 1031 00:54:58,000 --> 00:55:01,000 det unchecks den andre, så du må gi dem samme navn 1032 00:55:01,000 --> 00:55:03,000 Hvis du vil de skal være gjensidig utelukkende sånn. 1033 00:55:03,000 --> 00:55:07,000 Og deretter for dorm, jeg tror ikke vi har sett dette ennå, men det er en utvalgt meny, en drop-down menyen. 1034 00:55:07,000 --> 00:55:09,000 Koden for det er select. 1035 00:55:09,000 --> 00:55:11,000 Du kan deretter gi drop-down menyen et navn, 1036 00:55:11,000 --> 00:55:13,000 og da har du en hel haug av disse alternativene. 1037 00:55:13,000 --> 00:55:16,000 Den første, bare for estetikk, er en tom streng. 1038 00:55:16,000 --> 00:55:20,000 Jeg ville bare slippe ned for å være blank som standard, 1039 00:55:20,000 --> 00:55:22,000 og så er det Apley, Canaday, Grays, og så videre. 1040 00:55:22,000 --> 00:55:24,000 Og legg merke til motsetningen her. 1041 00:55:24,000 --> 00:55:27,000 Alternativet i drop ned har en verdi, 1042 00:55:27,000 --> 00:55:30,000 men da den har en menneske-vennlig navn, som i dette eksemplet 1043 00:55:30,000 --> 00:55:33,000 er identisk, men hvis vi virkelig ønsket å være anal vi kunne ha 1044 00:55:33,000 --> 00:55:36,000 verdien av denne rullegardinlisten bare være den korte versjonen, 1045 00:55:36,000 --> 00:55:39,000 Grays, men vi kunne virkelig si Grays Hall at den menneskelige faktisk ser, 1046 00:55:39,000 --> 00:55:43,000 men det er ikke alle som interessant, så jeg bare holdt det enkelt og gjort dem identiske. 1047 00:55:43,000 --> 00:55:46,000 Deretter ned på bunnen har vi en send-knappen 1048 00:55:46,000 --> 00:55:49,000 som vi har sett før, men jeg merker bare ga det et annet ord. 1049 00:55:49,000 --> 00:55:53,000 I stedet for CS50 søk ga jeg etiketten "Registrer". 1050 00:55:53,000 --> 00:55:56,000 >> Sluttresultatet er denne websiden her, og igjen, 1051 00:55:56,000 --> 00:56:00,000 hvor kommer dette bli sendt til? 1052 00:56:00,000 --> 00:56:04,000 Det blir sendt til noen fil, verdien av handlingen attributt, 1053 00:56:04,000 --> 00:56:07,000 som var register0.php. 1054 00:56:07,000 --> 00:56:09,000 La oss se hva som faktisk skjer her. 1055 00:56:09,000 --> 00:56:13,000 La meg gå videre og fylle ut dette skjemaet, sier David, 1056 00:56:13,000 --> 00:56:16,000 mann, Matthews, og så skal jeg si registrer deg. 1057 00:56:16,000 --> 00:56:18,000 La meg zoome ut, og klikk registrer deg. 1058 00:56:18,000 --> 00:56:22,000 Ok, så snilt av unyttig, men la oss se hva som faktisk skjer. 1059 00:56:22,000 --> 00:56:26,000 Legg merke til at nettadressen er endret til å være register0.php. 1060 00:56:26,000 --> 00:56:34,000 Hva er merkelig fraværende fra URL, skjønt, selv om vi bare sendt et skjema? 1061 00:56:34,000 --> 00:56:37,000 [Uhørlig student respons] 1062 00:56:37,000 --> 00:56:39,000 Ok, det er bare Chrome blir brukervennlig disse dager. 1063 00:56:39,000 --> 00:56:42,000 Det er faktisk det. De bare skjule det for å spare plass. 1064 00:56:42,000 --> 00:56:44,000 Men god tanke, god tanke. 1065 00:56:44,000 --> 00:56:46,000 Mot den andre enden av URL, men hva er det som mangler? Ja. 1066 00:56:46,000 --> 00:56:48,000 [Student] Søkestrengen. 1067 00:56:48,000 --> 00:56:51,000 Søkestrengen, så husker fra våre enkelt Google-søk eksempler. 1068 00:56:51,000 --> 00:56:54,000 Så snart jeg klikker på send-knappen URL 1069 00:56:54,000 --> 00:57:00,000 tok meg til Google, men så var det? q = informatikk eller hva jeg hadde skrevet i. 1070 00:57:00,000 --> 00:57:04,000 Det er fordi vi brukte get metoden med søket eksempel. 1071 00:57:04,000 --> 00:57:06,000 >> Denne gangen vi bruker hvilken metode i stedet? 1072 00:57:06,000 --> 00:57:10,000 Innlegg, og en av de umiddelbare utmerkelser 1073 00:57:10,000 --> 00:57:14,000 mellom få og legge inn er at innlegget ikke sette brukerens input i nettadressen. 1074 00:57:14,000 --> 00:57:16,000 Det skjuler det. Det sender fortsatt det. 1075 00:57:16,000 --> 00:57:19,000 Faktisk det vi ser i nettleseren her, så vi vil avsløre et øyeblikk 1076 00:57:19,000 --> 00:57:22,000 ved å se på register0, er jeg bare se innholdet 1077 00:57:22,000 --> 00:57:25,000 av tabellen som ble sendt fra nettleseren til serveren. 1078 00:57:25,000 --> 00:57:29,000 Men URL ikke har en?, Ikke har noen søkeord 1079 00:57:29,000 --> 00:57:31,000 eller verdier i det, og hvorfor er det? 1080 00:57:31,000 --> 00:57:35,000 Vel, lar innlegget du fortsatt sende inn data fra skjemaet til en server, 1081 00:57:35,000 --> 00:57:38,000 men det ser ikke sette den i URL, så hva slags informasjon er post 1082 00:57:38,000 --> 00:57:41,000 spesielt egnet for kanskje når du ber brukeren om å 1083 00:57:41,000 --> 00:57:44,000 skrive inn innspill til et skjema? 1084 00:57:44,000 --> 00:57:48,000 Noe som et passord, noe som hva annet? 1085 00:57:48,000 --> 00:57:50,000 Kredittkortnumre. 1086 00:57:50,000 --> 00:57:53,000 Noe som er mildt sensitiv du sannsynligvis ikke vil havne i URL 1087 00:57:53,000 --> 00:57:56,000 hvis bare fordi det betyr at romkameraten eller familiemedlem kan bare troll gjennom 1088 00:57:56,000 --> 00:57:59,000 din internett historie og deretter bokstavelig talt se passordene dine, 1089 00:57:59,000 --> 00:58:02,000 bokstavelig talt se dine kredittkortnumre fordi de fleste nettlesere 1090 00:58:02,000 --> 00:58:05,000 husker i historien uansett nettadressene du har vært på, 1091 00:58:05,000 --> 00:58:09,000 så hvis bare fordi det ville være en dårlig idé. 1092 00:58:09,000 --> 00:58:11,000 Bruke dine skjuler at detaljer fra brukeren. 1093 00:58:11,000 --> 00:58:14,000 >> Også, hvordan kan du laste opp et bilde til Facebook? 1094 00:58:14,000 --> 00:58:17,000 Vel, de eneste to mekanismer kan du virkelig bruke, 1095 00:58:17,000 --> 00:58:21,000 selv om det er et par andre mer uforståelige seg, er å få og legge. 1096 00:58:21,000 --> 00:58:26,000 Hvordan kan du muligens laste opp et bilde via en URL? 1097 00:58:26,000 --> 00:58:28,000 Du kan faktisk gjøre det. 1098 00:58:28,000 --> 00:58:30,000 Du kan ta en JPEG eller bitmap eller GIF og du kan være representert i heksadesimalt 1099 00:58:30,000 --> 00:58:32,000 eller noe som kalles basen 64. 1100 00:58:32,000 --> 00:58:35,000 I stedet for basen 16 du bruker basen 64, som i hovedsak ser ut som 1101 00:58:35,000 --> 00:58:38,000 ASCII-tegn, og du kan faktisk laste opp et bilde via en URL 1102 00:58:38,000 --> 00:58:41,000 etter et spørsmålstegn, men det er generelt grensen. 1103 00:58:41,000 --> 00:58:44,000 De fleste nettlesere tvinge nettadresser å være ikke mer enn 1000 tegn, 1104 00:58:44,000 --> 00:58:47,000 kanskje 2000 tegn eller lignende, slik at du ikke kan laste opp 1105 00:58:47,000 --> 00:58:50,000 en 10 MB Facebook-bildet. 1106 00:58:50,000 --> 00:58:54,000 For at du bruker innlegget også, så for nå får setter parametrene i nettadressen, 1107 00:58:54,000 --> 00:58:57,000 som er fint og nyttig noen ganger, men for noe sensitivt eller store 1108 00:58:57,000 --> 00:58:59,000 innlegget er veien å gå. 1109 00:58:59,000 --> 00:59:02,000 Hva er register0 faktisk gjør her? 1110 00:59:02,000 --> 00:59:05,000 Vel, hvis jeg åpner opp register0 merke til at dette er en super enkel side, 1111 00:59:05,000 --> 00:59:09,000 men det demonstrerer det faktum at jeg kan co-mingle, for bedre eller verre, 1112 00:59:09,000 --> 00:59:12,000 HTML med PHP. 1113 00:59:12,000 --> 00:59:15,000 Hele denne filen, bortsett kommentarene på toppen, er HTML 1114 00:59:15,000 --> 00:59:19,000 med unntak av denne fyren her. 1115 00:59:19,000 --> 00:59:22,000 >> Merke til i midten av min PHP-kode, 1116 00:59:22,000 --> 00:59:26,000 i midten av HTML min har jeg liksom midlertidig 1117 00:59:26,000 --> 00:59:28,000 angitt PHP-modus. 1118 00:59:28,000 --> 00:59:31,000 Jeg ringer en spesiell funksjon som heter print r. 1119 00:59:31,000 --> 00:59:34,000 Det betyr ut rekursiv, og hva den gjør er det rekursivt skriver 1120 00:59:34,000 --> 00:59:38,000 hvilken variabel du leverer den, semikolon, exit PHP-modus. 1121 00:59:38,000 --> 00:59:40,000 Og pre-koden gir deg pre-formatert tekst, 1122 00:59:40,000 --> 00:59:43,000 mono plass tekst slik at hver plass du faktisk se den. 1123 00:59:43,000 --> 00:59:46,000 Det forsvinner ikke. Hva er innlegget? 1124 00:59:46,000 --> 00:59:48,000 Vel, hva som er interessant og overbevisende om PHP 1125 00:59:48,000 --> 00:59:52,000 er at når du sender et skjema ved hjelp GET-eller POST 1126 00:59:52,000 --> 00:59:56,000 noe som blir sendt til deg av en nettleser 1127 00:59:56,000 --> 01:00:00,000 PHP selv finner ut hva de viktige verdi-par er, 1128 01:00:00,000 --> 01:00:02,000 Tallene ut om det er like tegn, tall ut om det er et spørsmålstegn. 1129 01:00:02,000 --> 01:00:07,000 Det gjør alt det harde arbeidet for deg, og da er det hender du en assosiativ array 1130 01:00:07,000 --> 01:00:10,000 inneholder alt som brukeren har skrevet inn i skjemaet. 1131 01:00:10,000 --> 01:00:12,000 Vel, hva felt dette skjemaet ha? 1132 01:00:12,000 --> 01:00:14,000 >> Det hadde fire felt. 1133 01:00:14,000 --> 01:00:16,000 Den ene var et tekstfelt som heter navn. 1134 01:00:16,000 --> 01:00:18,000 Den ene var en avmerkingsboks som heter kaptein. 1135 01:00:18,000 --> 01:00:22,000 Den ene var en radio knapp som heter kjønn, 1136 01:00:22,000 --> 01:00:24,000 og en var en drop-down menyen som heter dorm, 1137 01:00:24,000 --> 01:00:27,000 så legger merke til når jeg skriver rekursivt 1138 01:00:27,000 --> 01:00:29,000 innholdet av denne spesielle variabel. 1139 01:00:29,000 --> 01:00:34,000 Dette er en spesiell global variabel kalt bokstavelig $ _POST, i alle caps. 1140 01:00:34,000 --> 01:00:39,000 Dette er en spesiell global variabel som PHP bare skaper for deg 1141 01:00:39,000 --> 01:00:42,000 og hender til deg slik at du kan få tilgang til alt 1142 01:00:42,000 --> 01:00:45,000 som ble sendt via et skjema av en bruker. 1143 01:00:45,000 --> 01:00:48,000 Og ved å ringe print r på det-du ikke vil gjøre dette på en vanlig søknad. 1144 01:00:48,000 --> 01:00:50,000 Vi gjør dette for å se innsiden av denne variabelen, 1145 01:00:50,000 --> 01:00:53,000 og hva som er inni det, vel, 4 taster, 1146 01:00:53,000 --> 01:00:56,000 4 http parametre, så å si, 1147 01:00:56,000 --> 01:00:59,000 navn, kaptein, kjønn, dorm, og deretter verdiene som brukeren 1148 01:00:59,000 --> 01:01:01,000 skrevet i med ett unntak. 1149 01:01:01,000 --> 01:01:03,000 Jeg type D-A-V-I-D. 1150 01:01:03,000 --> 01:01:05,000 Jeg sjekket boksen, men for mannlige, som tilsynelatende lagt en verdi 1151 01:01:05,000 --> 01:01:07,000 av bare m å være konsis. 1152 01:01:07,000 --> 01:01:10,000 >> Da jeg valgte Matthews som er den verdien som ble valgt, 1153 01:01:10,000 --> 01:01:12,000 og dette er litt dumt, men det er konvensjonen. 1154 01:01:12,000 --> 01:01:17,000 Når jeg sjekket boksen, en verdi på på, "på", fikk presentert for avmerkingsboksen. 1155 01:01:17,000 --> 01:01:21,000 Hvis jeg ikke hadde sjekket det, ville ingen verdi har blitt sendt overhodet. 1156 01:01:21,000 --> 01:01:26,000 Dette er bare å gi oss innsikt i hva som er på innsiden av denne spesielle global variabel, 1157 01:01:26,000 --> 01:01:29,000 og det er så spesielt at det kalles en super global variabel. 1158 01:01:29,000 --> 01:01:33,000 Det finnes overalt for deg i koden slik at du faktisk kan få tilgang til den. 1159 01:01:33,000 --> 01:01:36,000 Dette er ikke så overbevisende, så la oss faktisk bruke super global 1160 01:01:36,000 --> 01:01:38,000 og faktisk prøve å registrere noen. 1161 01:01:38,000 --> 01:01:41,000 I froshims1 jeg kommer til å gjøre en endring. 1162 01:01:41,000 --> 01:01:44,000 Jeg endrer handlingen til å være register1.php, 1163 01:01:44,000 --> 01:01:46,000 og jeg gjør en annen ting. 1164 01:01:46,000 --> 01:01:48,000 Jeg var litt flau av kvaliteten på websiden min der. 1165 01:01:48,000 --> 01:01:52,000 Det er ganske heslig, ærlig, så viser det seg 1166 01:01:52,000 --> 01:01:56,000 som du kan bruke og enkelt på nettet 1167 01:01:56,000 --> 01:01:59,000 andres JavaScript-kode, andres CSS 1168 01:01:59,000 --> 01:02:02,000 at de har skrevet og åpen kildekode og gjort tilgjengelig som et bibliotek, 1169 01:02:02,000 --> 01:02:06,000 så å si, og for eksempel, her jeg bruker en fritt tilgjengelig bibliotek, 1170 01:02:06,000 --> 01:02:08,000 en haug med kode som noen andre skrev. 1171 01:02:08,000 --> 01:02:11,000 >> Twitter skjedd å skrive denne koden, og det kalles bootstrap biblioteket, 1172 01:02:11,000 --> 01:02:15,000 og det er bare en haug med CSS stilark, en haug med. css filer 1173 01:02:15,000 --> 01:02:19,000 at noen andre skrev og funnet ut hvordan du kan få alt fint og ganske 1174 01:02:19,000 --> 01:02:22,000 slik at folk som oss kan bekymre litt mindre om estetikk og fokusere mye mer 1175 01:02:22,000 --> 01:02:24,000 på logikken og selve programmering. 1176 01:02:24,000 --> 01:02:30,000 Ved å knytte det inn med den koden, som er den samme koden jeg brukte huske for styles3.css tidligere, 1177 01:02:30,000 --> 01:02:34,000 Jeg har nå tilgang til en fil som heter bootstrap.min.css. 1178 01:02:34,000 --> 01:02:37,000 Min betyr bare at de har minified det og de har blitt kvitt alle de hvite plass og så videre 1179 01:02:37,000 --> 01:02:40,000 bare for å sørge for at de ikke sender meg flere bytes enn jeg faktisk trenger. 1180 01:02:40,000 --> 01:02:45,000 Men der er en hel haug med CSS, så hvis jeg nå åpner opp versjon 1 av Frosh direktemeldinger 1181 01:02:45,000 --> 01:02:49,000 legge merke til at filen min er definitivt penere. 1182 01:02:49,000 --> 01:02:54,000 Nå er det fortsatt bare svart og hvitt, men merker at ved bare å bruke sin stil ark 1183 01:02:54,000 --> 01:02:58,000 og bruke visse funksjoner i den på formen min er det ikke fantastisk, 1184 01:02:58,000 --> 01:03:01,000 men det er definitivt renere enn det var før, og projektoren ikke gjør det rettferdighet. 1185 01:03:01,000 --> 01:03:05,000 Det er små grå linjer rundt knappene og rundt tekstfeltet akkurat her, 1186 01:03:05,000 --> 01:03:07,000 men det er definitivt renere enn det var før. 1187 01:03:07,000 --> 01:03:09,000 >> Nå, i rettferdighet, jeg må endre min markup litt. 1188 01:03:09,000 --> 01:03:12,000 Dette er versjon 1, og merker at jeg har brukt noen nye koder, 1189 01:03:12,000 --> 01:03:17,000 og ærlig, hadde jeg ingen anelse om hvordan du gjør dette før jeg leste dokumentasjonen 1190 01:03:17,000 --> 01:03:20,000 for Twitters bootstrap bibliotek, og de fortalte meg at hvis du ønsker å bruke vårt bibliotek 1191 01:03:20,000 --> 01:03:23,000 bruke en fieldset element inne skjemaet, 1192 01:03:23,000 --> 01:03:27,000 sette inn ordet du vil vise ved siden av et felt inne i en etikett tag, 1193 01:03:27,000 --> 01:03:30,000 deretter gi dine innspill et navn, akkurat som før, 1194 01:03:30,000 --> 01:03:34,000 og deretter for boksen, ikke bare du pakker det inn i en etikett element, 1195 01:03:34,000 --> 01:03:36,000 du bruker noe som kalles en klasse, så vi har ikke sett dette før, 1196 01:03:36,000 --> 01:03:39,000 men du vil se dette i en av pset 7s shorts. 1197 01:03:39,000 --> 01:03:43,000 En klasse i CSS lar deg gjøre noe lignende til ID, 1198 01:03:43,000 --> 01:03:46,000 men før når vi hadde en ID med symbolet # 1199 01:03:46,000 --> 01:03:48,000 som var for en og bare ett element. 1200 01:03:48,000 --> 01:03:51,000 Hva er fint om en klasse er at flere elementer kan ha samme klasse 1201 01:03:51,000 --> 01:03:54,000 eller samme CSS ting brukes til det. 1202 01:03:54,000 --> 01:03:57,000 >> Men igjen, er mer på de i den korte, og resten av denne bare kopiere og lime inn 1203 01:03:57,000 --> 01:04:00,000 fra deres dokumentasjon hvor jeg har lagt en etikett her og der. 1204 01:04:00,000 --> 01:04:03,000 Og på slutten, fordi jeg har tatt med link tag på toppen, 1205 01:04:03,000 --> 01:04:06,000 alt ser penere automatisk 1206 01:04:06,000 --> 01:04:10,000 ved å ha merket opp min side på en måte som 1207 01:04:10,000 --> 01:04:12,000 Twitter forventet, og det er så mange forskjellige måter 1208 01:04:12,000 --> 01:04:14,000 å gjøre dette, og dette er faktisk veldig passende. 1209 01:04:14,000 --> 01:04:17,000 På dette punktet i semesteret, som du ser i pset 7s spec, 1210 01:04:17,000 --> 01:04:20,000 Googling rundt, lese opp på biblioteker, bruker andre folks CSS 1211 01:04:20,000 --> 01:04:23,000 og JavaScript for å løse hjelpeutstyr problemer 1212 01:04:23,000 --> 01:04:26,000 til problemet satt seg er sikkert oppmuntret og er en metode 1213 01:04:26,000 --> 01:04:29,000 Web er bygget i disse dager, ved å stå på andres skuldre 1214 01:04:29,000 --> 01:04:32,000 slik at du virkelig kan fokusere på de nye og interessante problemstillinger. 1215 01:04:32,000 --> 01:04:34,000 Men la oss nå fokusere på, igjen, logikken. 1216 01:04:34,000 --> 01:04:38,000 >> Det var en rask omvei på estetikk bare for å vise deg hvilken retning du kan gå. 1217 01:04:38,000 --> 01:04:40,000 Jeg kommer til å gå tilbake til den styggere en for nå bare fordi 1218 01:04:40,000 --> 01:04:44,000 det er ingen distraksjoner med Twitter ting, og la meg gå videre og åpne opp 1219 01:04:44,000 --> 01:04:51,000 froshims2, som igjen skiller bare i handlingen, register2.php, 1220 01:04:51,000 --> 01:04:55,000 og la oss ta en titt på hva effekten er her. 1221 01:04:55,000 --> 01:04:57,000 La meg gå videre og skrive David. 1222 01:04:57,000 --> 01:04:59,000 Jeg vil ikke være kaptein denne gangen. 1223 01:04:59,000 --> 01:05:01,000 Jeg vil si mann, Matthews, register. 1224 01:05:01,000 --> 01:05:05,000 Pokker. Ok, det er en skrue opp for min del. 1225 01:05:05,000 --> 01:05:07,000 Stand by. 1226 01:05:07,000 --> 01:05:17,000 Register2, 22 linjer, hvis tom eller-beklager. 1227 01:05:17,000 --> 01:05:19,000 La oss lesse. 1228 01:05:19,000 --> 01:05:22,000 Ok, når du sender dette skjemaet hva som nettopp skjedde? 1229 01:05:22,000 --> 01:05:25,000 Jeg skrev i David, sjekket mann, klikket Matthews, register. 1230 01:05:25,000 --> 01:05:27,000 Du er registrert. (Vel, egentlig ikke.) 1231 01:05:27,000 --> 01:05:32,000 Dette er helt klart et steg utover bare å skrive ut innholdet i noen variable, 1232 01:05:32,000 --> 01:05:34,000 men hva er denne filen faktisk gjør? 1233 01:05:34,000 --> 01:05:37,000 I register2.php 1234 01:05:37,000 --> 01:05:40,000 merker at jeg har noen nye koden. 1235 01:05:40,000 --> 01:05:44,000 Innsiden av kroppen min tag jeg har egentlig en if else konstruere, 1236 01:05:44,000 --> 01:05:47,000 men fordi jeg samtidig mingling dette med noen HTML 1237 01:05:47,000 --> 01:05:51,000 Jeg må inn og ut PHP-modus og tilbake, så la oss se hva jeg gjør. 1238 01:05:51,000 --> 01:05:55,000 >> I den første linjen her jeg si hvis det er tilfelle 1239 01:05:55,000 --> 01:06:00,000 at stillingen super global er tom for nøkkelen av navn, 1240 01:06:00,000 --> 01:06:04,000 så med andre ord, hvis brukeren ikke gi meg en verdi for navn i form, 1241 01:06:04,000 --> 01:06:07,000 deretter tømmes kommer til å returnere sann fordi verdien er tom. 1242 01:06:07,000 --> 01:06:11,000 Eller-merke de vertikale stolpene-hvis kjønn er tom 1243 01:06:11,000 --> 01:06:15,000 innsiden av denne spesielle super global, som, igjen, representerer innholdet av skjemaet, 1244 01:06:15,000 --> 01:06:19,000 eller dorm er tom, så jeg kommer til å gå videre og kjefte på brukeren. 1245 01:06:19,000 --> 01:06:22,000 Hvordan? Vel, merker jeg kommer til å si at du må oppgi ditt navn, kjønn og dorm. 1246 01:06:22,000 --> 01:06:24,000 La oss faktisk indusere den feilen. 1247 01:06:24,000 --> 01:06:27,000 La meg gå tilbake til formen min. La meg laste å fjerne den. 1248 01:06:27,000 --> 01:06:30,000 Og jeg bare kommer til å gi dem David, og de trenger ikke å vite hvor jeg bor. 1249 01:06:30,000 --> 01:06:33,000 Registrer deg. Angivelig jeg trenger å fortelle dem hvor jeg bor. 1250 01:06:33,000 --> 01:06:35,000 Du må oppgi ditt navn, kjønn og dorm. Gå tilbake. 1251 01:06:35,000 --> 01:06:39,000 >> Og jeg kunne for å gå tilbake til dette skjemaet, men hvorfor er det? 1252 01:06:39,000 --> 01:06:43,000 Vel, i så fall navn var ikke tom, men kjønn var, og dorm var, 1253 01:06:43,000 --> 01:06:47,000 så dette hele uttrykket evalueres til sann, og selv om syntaksen er litt nytt, 1254 01:06:47,000 --> 01:06:51,000 igjen, skriver vi PHP-modus, kjent hvis setningen, 1255 01:06:51,000 --> 01:06:54,000 men den nye delen her er nettopp denne kolon, og jeg hadde skrudd opp ved å utelate en parentes 1256 01:06:54,000 --> 01:06:57,000 ved et uhell, men legg merke tykktarmen, og det betyr at 1257 01:06:57,000 --> 01:07:00,000 selv om vi avslutter PHP-modus alt 1258 01:07:00,000 --> 01:07:03,000 som følger bør spytte ut ordrett til leseren 1259 01:07:03,000 --> 01:07:07,000 til du ser en annen blokk, som vi gjør her, 1260 01:07:07,000 --> 01:07:10,000 i så fall bør du i stedet spytte dette ut 1261 01:07:10,000 --> 01:07:13,000 til du ser endif, så noen litt ny syntaks 1262 01:07:13,000 --> 01:07:16,000 som tillater meg å veksle mellom HTML og PHP. 1263 01:07:16,000 --> 01:07:19,000 Vi kan rydde opp til slutt, men for nå, 1264 01:07:19,000 --> 01:07:22,000 det er en slags en overbevisende måte feilkontroll skjemaet. 1265 01:07:22,000 --> 01:07:25,000 >> Nå sier jeg du egentlig ikke registrert fordi vi åpenbart har gjort noe annet enn data, 1266 01:07:25,000 --> 01:07:28,000 så la oss faktisk prøver å gjøre noe kult. 1267 01:07:28,000 --> 01:07:33,000 I froshims3 den eneste forskjellen er at jeg kommer til å sende til register3, 1268 01:07:33,000 --> 01:07:35,000 så HTML er det samme. 1269 01:07:35,000 --> 01:07:38,000 I register3 merke dette. 1270 01:07:38,000 --> 01:07:40,000 Dette er slags sexy. 1271 01:07:40,000 --> 01:07:44,000 På toppen jeg bruker en require utsagn, så dette er som # include. 1272 01:07:44,000 --> 01:07:46,000 Denne gangen er det ikke stdio.h eller noe sånt. 1273 01:07:46,000 --> 01:07:50,000 Det er en PHP bibliotek, og dette kalles PHPMailer. 1274 01:07:50,000 --> 01:07:53,000 Hvordan visste jeg å inkludere nettopp denne sitert streng? 1275 01:07:53,000 --> 01:07:56,000 Jeg leste det i dokumentasjonen, så når de fortalte meg sette dette på toppen av filen 1276 01:07:56,000 --> 01:08:00,000 Hvis du ønsker å bruke en spesiell bibliotek kalt PHPMailer som gjør hva den sier. 1277 01:08:00,000 --> 01:08:03,000 Den lar deg sende e-post via PHP. 1278 01:08:03,000 --> 01:08:05,000 Nå la oss rulle ned ytterligere. 1279 01:08:05,000 --> 01:08:08,000 >> Legg merke til å begynne jeg er i PHP-modus hele denne tiden, 1280 01:08:08,000 --> 01:08:11,000 så nå merker her nede etter import biblioteket, 1281 01:08:11,000 --> 01:08:13,000  så å si, jeg gjør litt sunn fornuft sjekker. 1282 01:08:13,000 --> 01:08:16,000 Hvis det er slik at navnet ikke er tom 1283 01:08:16,000 --> 01:08:19,000 og kjønn er ikke tom-merke utropstegn- 1284 01:08:19,000 --> 01:08:24,000 og dorm ikke er tom, så brukeren har logisk fylt ut skjemaet, i hvert fall nok. 1285 01:08:24,000 --> 01:08:28,000 Jeg bryr meg ikke om de er kaptein eller ikke. Jeg trenger deres navn, kjønn og dorm. 1286 01:08:28,000 --> 01:08:31,000 Hvis de har fylt dem ut slik at ingen av disse feltene er tomme 1287 01:08:31,000 --> 01:08:33,000 dette er litt nytt syntaks. 1288 01:08:33,000 --> 01:08:36,000 PHP, som en side, er et objektorientert programmeringsspråk 1289 01:08:36,000 --> 01:08:39,000 som noen av dere kanskje husker fra APCS eller lignende. 1290 01:08:39,000 --> 01:08:42,000 For nå, hvis ukjente, bare vet at å bruke dette biblioteket 1291 01:08:42,000 --> 01:08:45,000 du må skrive en linje med kode som dette med et nytt søkeord, 1292 01:08:45,000 --> 01:08:47,000 bokstavelig talt et nytt søkeord kalt ny. 1293 01:08:47,000 --> 01:08:50,000 Men utover det, har vi noen kjenner syntaks. 1294 01:08:50,000 --> 01:08:54,000 Det er en pil operatør, som er likt det vi brukte for structs i sammenheng med pekere. 1295 01:08:54,000 --> 01:08:57,000 For i dag PHP ikke har pekere, 1296 01:08:57,000 --> 01:09:01,000 men vet for nå som innsiden av post variabel 1297 01:09:01,000 --> 01:09:05,000 er egentlig slags en peker til et fagbibliotek 1298 01:09:05,000 --> 01:09:08,000 at noen andre skrev, og hvis jeg vil ha tilgang til bestemte funksjoner 1299 01:09:08,000 --> 01:09:12,000 innsiden av det biblioteket jeg, som i C, bruker pilen operatør, 1300 01:09:12,000 --> 01:09:14,000 selv om dette er faktisk ikke pekere. 1301 01:09:14,000 --> 01:09:16,000 Det er liksom PHP egen versjon av denne. 1302 01:09:16,000 --> 01:09:20,000 Dette betyr gå inn i biblioteket og ringe IsSMTP funksjonen. 1303 01:09:20,000 --> 01:09:23,000 SMTP, tilbakekalling, fra våre Warriors of the Net refererer til e-post, 1304 01:09:23,000 --> 01:09:28,000 og det betyr bare bruke en e-postserver for dette Frosh direktemeldinger registrering. 1305 01:09:28,000 --> 01:09:30,000 >> Hva vert ønsker jeg å bruke? 1306 01:09:30,000 --> 01:09:34,000 Vel, Harvard, hvis du Google rundt, har en e-postserver som heter smtp.fas.harvard.edu. 1307 01:09:34,000 --> 01:09:37,000 Hvis du spiller sammen hjemme eller du bor på en Comcast nettverk 1308 01:09:37,000 --> 01:09:40,000 det kan være noe sånt som smtp.comcast.net. 1309 01:09:40,000 --> 01:09:43,000 Det avhenger helt av hvor du bor og hvem din ISP er. 1310 01:09:43,000 --> 01:09:47,000 Etter at jeg kommer til å sette min fra adresse vilkårlig å være jharvard@cs50.net. 1311 01:09:47,000 --> 01:09:52,000 Jeg så kommer til å sette til adresse for å være jharvard@cs50.net. 1312 01:09:52,000 --> 01:09:55,000 Den eneste måten jeg visste at disse funksjonene ble kalt SetFrom og AddAddress 1313 01:09:55,000 --> 01:09:57,000 er, igjen, jeg leste dokumentasjonen. 1314 01:09:57,000 --> 01:09:59,000 Dette er ikke typen magisk kjent for alle programmerere. 1315 01:09:59,000 --> 01:10:02,000 Så jeg satt et emne til "registrering". 1316 01:10:02,000 --> 01:10:07,000 Og nå denne linjen er litt stygg fordi det betyr prikken operatør i PHP? 1317 01:10:07,000 --> 01:10:09,000 Noen som vet? 1318 01:10:09,000 --> 01:10:11,000 Sette sammen. 1319 01:10:11,000 --> 01:10:14,000 I C er det en smerte i nakken for å sette sammen to strenger sammen. 1320 01:10:14,000 --> 01:10:17,000 Du har å forholde seg malloc eller RealLOC eller alle at ting 1321 01:10:17,000 --> 01:10:20,000 bare for å forlenge lengden på en streng. 1322 01:10:20,000 --> 01:10:22,000 I PHP, i JavaScript og andre språk 1323 01:10:22,000 --> 01:10:24,000 kan du vanligvis gjøre dette med et enkelt tegn. 1324 01:10:24,000 --> 01:10:28,000 I dette tilfellet betyr dot tar denne strengen her 1325 01:10:28,000 --> 01:10:30,000 og legge til det denne strengen. 1326 01:10:30,000 --> 01:10:32,000 >> Oh, og forresten, føyer til det denne strengen, 1327 01:10:32,000 --> 01:10:34,000 som skjer for å være en variabel innsiden av at super global. 1328 01:10:34,000 --> 01:10:37,000 Deretter legge til det en ny linje, så alle disse prikkene bare bety 1329 01:10:37,000 --> 01:10:39,000 fortsette å lage en større og større og større streng, 1330 01:10:39,000 --> 01:10:43,000 og du trenger ikke å bry seg i det hele tatt om malloc eller lignende på et språk som dette, 1331 01:10:43,000 --> 01:10:46,000 og det er andre måter å gjøre dette, men dette er en av de raskeste 1332 01:10:46,000 --> 01:10:48,000 måter å legge den ut. 1333 01:10:48,000 --> 01:10:50,000 Hva er dette å gjøre? 1334 01:10:50,000 --> 01:10:55,000 Det er å skape en epost kroppen som kommer til å si Navn: Kaptein: Kjønn: Dorm: 1335 01:10:55,000 --> 01:10:58,000 alle på separate linjer, og deretter til slutt, 1336 01:10:58,000 --> 01:11:00,000 en linje med kode, og jeg kommer til å ignorere dette for nå. 1337 01:11:00,000 --> 01:11:02,000 Hvis == false betyr bare hvis noe gikk galt, 1338 01:11:02,000 --> 01:11:04,000 men magien skjer her. 1339 01:11:04,000 --> 01:11:08,000 Post Send betyr sende denne e-post. 1340 01:11:08,000 --> 01:11:10,000 La oss se hva netto resultat er. 1341 01:11:10,000 --> 01:11:13,000 På bunnen av filen, merker det kommer til å si at du er registrert virkelig 1342 01:11:13,000 --> 01:11:15,000 hvis jeg kommer så langt. 1343 01:11:15,000 --> 01:11:18,000 Hvis, men brukeren skruer opp, legge merke til at vi startet dette 1344 01:11:18,000 --> 01:11:21,000 hvis tilstanden opp her, hvis det ikke er tomt og ikke tomt 1345 01:11:21,000 --> 01:11:24,000 og ikke tømme vi sende e-post. 1346 01:11:24,000 --> 01:11:27,000 Ellers skal vi sende denne linjen med kode, 1347 01:11:27,000 --> 01:11:30,000 som kommer til å ha effekt, som du ser i pset 7, for å omdirigere brukeren 1348 01:11:30,000 --> 01:11:35,000 tilbake til der de kom, froshims3.php. 1349 01:11:35,000 --> 01:11:38,000 >> Fingrene krysset, ellers kommer til å være det mest skuffende demo i dag. 1350 01:11:38,000 --> 01:11:40,000 Here we go. 1351 01:11:40,000 --> 01:11:42,000 La meg åpne opp min innboksen for jharvard i Gmail. 1352 01:11:42,000 --> 01:11:44,000 Ingen e-post akkurat nå. OK. 1353 01:11:44,000 --> 01:11:53,000 Nå la meg åpne opp froshims3, som er den tredje og siste eksempelet vi skal se på her. 1354 01:11:53,000 --> 01:11:55,000 Ok, here we go. 1355 01:11:55,000 --> 01:12:00,000 Nate, vil han være kaptein, mann, fra, sier Apley. 1356 01:12:00,000 --> 01:12:04,000 Registrer deg. Ok, er du registrert virkelig. 1357 01:12:04,000 --> 01:12:07,000 Nå hvis jeg ruller over til min e-post, oh, min Gud. 1358 01:12:07,000 --> 01:12:09,000 Jeg har nettopp dynamisk sendt en e-post på Internett. 1359 01:12:09,000 --> 01:12:11,000 >> La oss la på dette notatet. 1360 01:12:11,000 --> 01:12:16,000 En video er forestående for forelesningen vi savnet. Se deg neste uke. 1361 01:12:16,000 --> 01:12:18,000 [CS50.TV]