1 00:00:00,000 --> 00:00:02,500 [Powered by Google Translate] [Seminar] [Web Development: Fra idé til gjennomføring] 2 00:00:02,500 --> 00:00:04,200 [Ben Kuhn] [Billy Janitsch] [Harvard University] 3 00:00:04,200 --> 00:00:07,250 [Dette er CS50] [CS50.TV] 4 00:00:07,250 --> 00:00:10,840 [Billy] Hei, jeg er Billy og dette er Ben. >> [Ben] Hei. 5 00:00:10,840 --> 00:00:12,840 Vi skal snakke om webutvikling i dag for å bli. 6 00:00:12,840 --> 00:00:14,840 [Webdev] [Billy Janitsch og Ben Kuhn] 7 00:00:14,840 --> 00:00:16,840 Litt om oss først. 8 00:00:16,840 --> 00:00:19,590 Ben er liksom den back-end fyr. Han gjør ting fungerer. 9 00:00:19,590 --> 00:00:21,870 Og så går jeg inn og gjøre dem pen. 10 00:00:21,870 --> 00:00:26,610 Jeg er i stor grad involvert med flere front-end layout design type ting, 11 00:00:26,610 --> 00:00:31,260 og Ben, derimot, vet hva han gjør, så han jobber på back-end ting. 12 00:00:31,260 --> 00:00:34,050 Sammen har vi gjort et par ting. 13 00:00:34,050 --> 00:00:38,710 For eksempel, i fjor jobbet vi på Gimblium som er en online spillutvikling studio. 14 00:00:38,710 --> 00:00:40,400 Det var vårt siste prosjekt for klassen, 15 00:00:40,400 --> 00:00:42,780 og siden da har vi gjort Harvard Class 16 00:00:42,780 --> 00:00:47,860 som er en online rammeverk for surfing og shopping kurs ved Harvard. 17 00:00:47,860 --> 00:00:53,180 >> Vi kommer til å starte med denne ideen for vår hjemmeside. 18 00:00:53,180 --> 00:00:57,480 Vi kommer til å lage Facebook, men for katter. 19 00:00:57,480 --> 00:00:59,520 Før du faktisk gjøre dette nettstedet, 20 00:00:59,520 --> 00:01:02,520 ikke gjør dette nettstedet fordi det er ikke bra, men vi vil bruke det som et rammeverk 21 00:01:02,520 --> 00:01:05,349 og gå gjennom prosessen med hvordan vi tar denne ideen 22 00:01:05,349 --> 00:01:07,450 og slå den inn i en reell nettsted vi kan bruke. 23 00:01:07,450 --> 00:01:11,940 Vi vil begynne med å bryte nettstedet ned. 24 00:01:11,940 --> 00:01:13,190 Som du har gjort i CS50, 25 00:01:13,190 --> 00:01:17,360 du ønsker å tenke på hva som er de faktiske komponenter som går inn i dette nettstedet. 26 00:01:17,360 --> 00:01:21,290 I utgangspunktet vri fra en idé som er like liksom et abstrakt begrep 27 00:01:21,290 --> 00:01:23,590 til en ekte, konkret ting som du kan gjøre. 28 00:01:23,590 --> 00:01:25,910 Vi starter med å spørre noen spørsmål. 29 00:01:25,910 --> 00:01:28,070 Hva er dette nettstedet? Hvorfor gjør vi det? 30 00:01:28,070 --> 00:01:30,670 Hva er det skal brukes til? Den slags ting. 31 00:01:30,670 --> 00:01:33,660 Når det gjelder Facebook Cat, 32 00:01:33,660 --> 00:01:37,730 vi i utgangspunktet ønsker et nettsted som lar kattene sosialt nettverk med hverandre. 33 00:01:37,730 --> 00:01:41,260 Tanken er at de kan legge ut på hverandres vegger, 34 00:01:41,260 --> 00:01:43,510 de kan legge inn kommentarer, den slags ting. 35 00:01:43,510 --> 00:01:46,720 Og det er der vi kommer inn i de funksjonelle komponenter. 36 00:01:46,720 --> 00:01:51,270 Vi har nå denne typen rammen av - vi har brukerprofiler, 37 00:01:51,270 --> 00:01:53,990 har vi kommentarer, og vi kan legge inn. 38 00:01:53,990 --> 00:01:57,390 Kanskje en dag vil vi influent liker og den slags ting. 39 00:01:57,390 --> 00:02:00,410 Og vi slags ønsker å prioritere disse funksjonene går i. 40 00:02:00,410 --> 00:02:03,340 Vi ønsker å si som, ok, det er veldig viktig at alle har en profil 41 00:02:03,340 --> 00:02:06,440 og at alle kan legge ut på hverandres vegger. 42 00:02:06,440 --> 00:02:08,509 Sekundært til det, ville kommentarer være hyggelig. 43 00:02:08,509 --> 00:02:10,180 Kanskje senere på vi vil influent liker. 44 00:02:10,180 --> 00:02:13,700 Så du ønsker å ha en idé om hva som er grunnleggende for prosjektet 45 00:02:13,700 --> 00:02:17,260 og hva er liksom en mer generell funksjon som kan brukes senere. 46 00:02:17,260 --> 00:02:20,870 Du vil liksom ha en spesifikk liste i tankene, 47 00:02:20,870 --> 00:02:24,090 men prosjektet at du starter med ikke kommer til å være det prosjektet som du er ferdig med. 48 00:02:24,090 --> 00:02:27,100 Med andre ord, ting kommer til å endre mens du utvikle området, 49 00:02:27,100 --> 00:02:30,090 og du ønsker å gi rom for det. 50 00:02:30,090 --> 00:02:34,470 Jeg skal slå den over til Ben som kommer til å snakke litt om struktur. 51 00:02:34,470 --> 00:02:39,610 >> [Ben] Jeg skal snakke om den mer tekniske siden av webutvikling. 52 00:02:39,610 --> 00:02:42,370 La oss bare gå over noen grunnleggende først. 53 00:02:42,370 --> 00:02:45,730 Når du gjør en web-app, 54 00:02:45,730 --> 00:02:50,470 hovedinndelingen som du er nødt til å ha er 55 00:02:50,470 --> 00:02:52,700 du kommer til å ha noen ting som skjer i klientsiden - 56 00:02:52,700 --> 00:02:56,700 det vil si koden som du er leseren tar fra området 57 00:02:56,700 --> 00:03:01,910 og Javascript, HTML, CSS ting. 58 00:03:01,910 --> 00:03:04,490 Det er alt på klientsiden. 59 00:03:04,490 --> 00:03:08,680 Du kommer til å ha annen kode som kjøres på serversiden 60 00:03:08,680 --> 00:03:10,770 som holder styr på alle data som folk sender inn til deg, 61 00:03:10,770 --> 00:03:15,060 bestemmer hvem som skal gi hva, sånne ting. 62 00:03:15,060 --> 00:03:20,380 Dette er bare noen terminologi, slik at dere er alle kjent med hva vi snakker om. 63 00:03:20,380 --> 00:03:28,600 Utover det divisjon det er godt å tenke på din web app i form av 64 00:03:28,600 --> 00:03:32,500 et par av adskilte komponenter. 65 00:03:32,500 --> 00:03:35,270 Når du gjør webutvikling 66 00:03:35,270 --> 00:03:41,710 en av de tingene som du bør alltid være å prøve å gjøre er å redusere kompleksiteten. 67 00:03:41,710 --> 00:03:45,710 Jo mer kompleks koden er jo mer sjanse er det for å gjøre feil, 68 00:03:45,710 --> 00:03:47,710 desto vanskeligere er det å endre senere. 69 00:03:47,710 --> 00:03:50,140 Så, hvis du kan bryte opp programmet ditt i noen distinkte funksjonelle områder 70 00:03:50,140 --> 00:03:57,640 som vil - og du kan redusere slags mengden av kryss-området kommunikasjon - 71 00:03:57,640 --> 00:04:03,530 som vil hjelpe deg mye i det lange løp i forhold til å redusere feil. 72 00:04:03,530 --> 00:04:07,950 >> For å være konkret, vanligvis folk dele opp en web app til - 73 00:04:07,950 --> 00:04:13,190 disse er slags buzz ord nå, men de er fortsatt nyttig. 74 00:04:13,190 --> 00:04:17,940 Du har kanskje hørt folk snakke om modeller, visninger og kontrollere. 75 00:04:17,940 --> 00:04:23,210 Modeller er de faktiske data som programmet ditt kommer til å forholde seg til. 76 00:04:23,210 --> 00:04:28,260 For eksempel, i Pon Facebook, ville modellene være - 77 00:04:28,260 --> 00:04:35,340 du vil ha en modell for som innlegg, og en modell for brukerprofiler, sånne ting. 78 00:04:35,340 --> 00:04:41,090 Dine synspunkter er hvordan du presenterer disse dataene til brukerne. 79 00:04:41,090 --> 00:04:46,660 Du har kanskje en visning for å se på et enkelt innlegg og alle kommentarene 80 00:04:46,660 --> 00:04:51,720 og et annet syn på veggen din som har en liste over alle innleggene 81 00:04:51,720 --> 00:04:57,170 som er rettet mot deg, og et annet syn for din nyhetsfeed - sånne ting. 82 00:04:57,170 --> 00:05:00,610 Til slutt, har du kontrollerne som er utgangspunktet når folk sender deg innlegg 83 00:05:00,610 --> 00:05:03,310 og du gjør oppdateringer til din back-end system, 84 00:05:03,310 --> 00:05:06,400 du øke en haug med tellere, og hva som helst. 85 00:05:06,400 --> 00:05:07,860 De er dine kontrollerne. 86 00:05:07,860 --> 00:05:11,030 >> Jeg kommer til å snakke mest til om modeller. 87 00:05:11,030 --> 00:05:14,030 Visninger er teknisk sett ikke så vanskelig, og problemet er mer med utformingen av dem 88 00:05:14,030 --> 00:05:22,040 Controllers kommer til å være konkret til hva du designer. 89 00:05:22,040 --> 00:05:25,220 Men det er noen ganske generelle teknikker du kan bruke 90 00:05:25,220 --> 00:05:30,220 for å gjøre modellene finere og enklere å jobbe med det jeg synes er veldig nyttig. 91 00:05:30,220 --> 00:05:35,860 Dette er for det meste kommer til å dreie seg om hvordan man skal håndtere dine web apps data på en fin måte. 92 00:05:35,860 --> 00:05:40,420 De største problemene med modeller 93 00:05:40,420 --> 00:05:44,540 er at de lever på klienten og serveren, og du må finne ut 94 00:05:44,540 --> 00:05:51,170 a) hvordan du får dem - alle relevante seg - fra serveren til klienten, 95 00:05:51,170 --> 00:05:53,440 og b) hvordan å holde dem i sync. 96 00:05:53,440 --> 00:05:58,700 Brukerne kommer til å ønske å gjøre noen oppdateringer. 97 00:05:58,700 --> 00:06:00,470 De kommer til å ønske å lage nye innlegg. 98 00:06:00,470 --> 00:06:04,800 De kommer til å ønske å like ting og ting hvis du har slike. 99 00:06:04,800 --> 00:06:11,490 De er de største tekniske utfordringene med å håndtere modeller. 100 00:06:11,490 --> 00:06:15,680 Det første du kommer til å ønske å stille deg selv er 101 00:06:15,680 --> 00:06:18,420 hva slags data går i denne modellen, og hva slags spørsmål vi kommer til å ønske å gjøre - 102 00:06:18,420 --> 00:06:24,290 det vil si, hvordan skal vi se på de modellene? 103 00:06:24,290 --> 00:06:26,940 For katten din Facebook eksempel 104 00:06:26,940 --> 00:06:31,520 innlegget ditt kommer til å ha en forfatter forbundet med det, 105 00:06:31,520 --> 00:06:35,660 noen innlegg på veggen tekst, og en mottaker av veggen innlegget. 106 00:06:35,660 --> 00:06:38,470 Og så kan det være lurt å spørre som i en haug med forskjellige måter. 107 00:06:38,470 --> 00:06:42,220 Du ønsker å se på det etter som skrev som innlegg, 108 00:06:42,220 --> 00:06:46,620 etter som fikk som legger inn, kanskje etter datoen de ble lagt ut. 109 00:06:46,620 --> 00:06:50,340 Men hvis du kommer til å gjøre det etter dato, så må du legge til et annet felt til innlegget ditt 110 00:06:50,340 --> 00:06:52,490 av når det ble faktisk lagt ut. 111 00:06:52,490 --> 00:07:00,220 Disse to faktorene - hvilke data du vil bruke, og hvordan du ønsker å se den - 112 00:07:00,220 --> 00:07:04,200 du bør tenke på dem først, fordi de er avhengige av hverandre, 113 00:07:04,200 --> 00:07:08,030 og det kommer til å bli vanskeligere å legge dem senere. 114 00:07:08,030 --> 00:07:12,750 >> Det er noen andre hensyn. 115 00:07:12,750 --> 00:07:17,540 Når du tenker på hvordan du avtale med modeller på serveren 116 00:07:17,540 --> 00:07:20,540 hva du ønsker å se på er - 117 00:07:20,540 --> 00:07:27,440 du i utgangspunktet ønsker å gjøre server så enkelt som mulig. 118 00:07:29,440 --> 00:07:35,500 Gjør ting på klientsiden er generelt mye raskere hvis du kan gjøre det rent på klienten 119 00:07:35,500 --> 00:07:38,230 uten å gjøre noen form for forespørsel nettverk. 120 00:07:38,230 --> 00:07:47,860 Ideen er å gjøre som mange av de spørsmål som du kan på klienten. 121 00:07:47,860 --> 00:07:51,560 Det eneste problemet med at 122 00:07:51,560 --> 00:07:54,160 er at hvis du ber om alle dine data i begynnelsen 123 00:07:54,160 --> 00:07:57,160 så det kommer til å ta lang tid å laste. 124 00:07:57,160 --> 00:08:02,290 Så, er det lurt å finne en gyllen middelvei mellom det å ha nok data på klienten 125 00:08:02,290 --> 00:08:07,640 at du kan gjøre det meste av arbeidet der, men ikke bare hente alt på en gang 126 00:08:07,640 --> 00:08:09,710 slik at du får veldig treg lasting i begynnelsen. 127 00:08:09,710 --> 00:08:12,610 For eksempel, for katten din data 128 00:08:12,610 --> 00:08:20,340 ville du sannsynligvis ønsker å hente en haug av nyere vegg innlegg. 129 00:08:20,340 --> 00:08:23,790 Du ville ikke ønsker å hente alle av dem fordi det kunne gå tilbake et par år. 130 00:08:23,790 --> 00:08:25,470 Men du ikke ønsker å hente dem en om gangen 131 00:08:25,470 --> 00:08:28,740 fordi det ville innføre en masse nettverk overhead. 132 00:08:28,740 --> 00:08:33,620 >> Det er ofte ganske vanskelig - når du har en database som kjører - 133 00:08:33,620 --> 00:08:37,210 det er ofte ganske vanskelig å endre hvilke data du har i det - 134 00:08:37,210 --> 00:08:40,510 det vil si legge til en ny database kolonne eller noe - 135 00:08:40,510 --> 00:08:43,510 så en god strategi er egentlig bare for å holde mye av dine data i en tekst blob - 136 00:08:43,510 --> 00:08:53,880 en JSON blob - JSON er Javascript Object Notation - 137 00:08:53,880 --> 00:08:58,330 Grunnen til det er nyttig er fordi da kan du legge til nye egenskaper 138 00:08:58,330 --> 00:09:01,920 til alle disse JSON blobs uten å endre databasen. 139 00:09:01,920 --> 00:09:06,860 Den eneste ulempen til det er at hvis du har en haug med felt 140 00:09:06,860 --> 00:09:09,890 at du har lagt til senere - som skjult i at JSON blob - 141 00:09:09,890 --> 00:09:12,850 da er det vanskeligere å spørre dem inne i databasen. 142 00:09:12,850 --> 00:09:17,690 For eksempel, hvis du senere - hvis du hadde ditt innlegg modell som vi diskuterte tidligere 143 00:09:17,690 --> 00:09:25,380 med bare forfatteren, mottaker og teksten - 144 00:09:25,380 --> 00:09:29,000 du kan også ha en JSON blob og hvis du senere ønsket å legge til et datofelt 145 00:09:29,000 --> 00:09:31,000 ville du ikke trenger å endre databasen. 146 00:09:31,000 --> 00:09:36,140 Du kan bare legge til datoer til alle tekstfeltene. 147 00:09:36,140 --> 00:09:39,640 Og så ville du være i stand til å se på dem på klientsiden, 148 00:09:39,640 --> 00:09:42,430 men du ville ikke være i stand til å spørre dem på serversiden 149 00:09:42,430 --> 00:09:44,430 fordi det er skjult inne i teksten. 150 00:09:44,430 --> 00:09:49,920 >> Det andre problemet som du ønsker å tenke på 151 00:09:49,920 --> 00:09:52,400 er hvordan klienten og serveren kommer til å kommunisere. 152 00:09:52,400 --> 00:09:56,040 Du vanligvis ønsker å holde dette så enkelt som mulig. 153 00:09:56,040 --> 00:10:02,230 Du kan bare ha som en get-me-dette data forespørsel, 154 00:10:02,230 --> 00:10:09,140 en lage-en-ny-objekt ting, og en oppdatering-en-gammel-objekt forespørsel. 155 00:10:09,140 --> 00:10:12,930 Og disse vil alle være ulike nettadresser på en server som du - 156 00:10:12,930 --> 00:10:20,030 at nettleseren vil - kan du bruke AJAX-forespørsler for alle disse 157 00:10:20,030 --> 00:10:24,000 og enten motta eller legg til dine data. 158 00:10:24,000 --> 00:10:26,600 Igjen, for vår Cat Facebook eksempel 159 00:10:26,600 --> 00:10:32,350 du kunne ha den URL for å få et individuelt innlegg, 160 00:10:32,350 --> 00:10:39,750 og du vil ha en URL for å lage en ny vegg post 161 00:10:39,750 --> 00:10:45,670 og kanskje en URL for å laste opp ditt profilbilde, sånne ting. 162 00:10:45,670 --> 00:10:51,730 Men igjen, det er å pre-hente de fleste av dine data, slik at du ikke trenger å holde 163 00:10:51,730 --> 00:10:53,360 gjør nettverksforespørsler. 164 00:10:53,360 --> 00:10:59,030 Derfor kan du ikke ønsker å ha den enkelte får forespørsel om en enkelt innlegg, 165 00:10:59,030 --> 00:11:03,210 og i stedet ville du bare ønsker en GET-forespørsel for hele veggen. 166 00:11:03,210 --> 00:11:06,110 Og så hvis du prøver å finne en balanse fordi - 167 00:11:06,110 --> 00:11:10,970 dette er også kommer til å avhenge av din søknad. 168 00:11:10,970 --> 00:11:13,430 Fordi hvis du venter på at folk bare har 10 eller 20 vegg innlegg 169 00:11:13,430 --> 00:11:15,430 som vil være i orden. 170 00:11:15,430 --> 00:11:17,390 Men hvis du venter de vil ha tusenvis da at forespørselen ville ta for lang tid, 171 00:11:17,390 --> 00:11:23,580 og så kan det være lurt å legge et få-all-innlegg-siden parameter. 172 00:11:23,580 --> 00:11:26,580 >> For alle disse er du sannsynligvis kommer til å ønske å synkronisere data i JSON - 173 00:11:26,580 --> 00:11:29,260 Javascript Object Notation. 174 00:11:29,260 --> 00:11:34,600 Ganske mye hver språk omhandler JSON veldig godt. 175 00:11:34,600 --> 00:11:40,880 JQuery har denne fine getJSON funksjon som vil gjøre alt det harde arbeidet for deg. 176 00:11:40,880 --> 00:11:47,390 Og på PHP er det også veldig hyggelig JSON kommunikasjonsfunksjoner. 177 00:11:47,390 --> 00:11:52,660 Så, det er nok det beste formatet for sending av dine modeller frem og tilbake. 178 00:11:52,660 --> 00:11:56,570 >> Som et eksempel på hva vi har snakket om så langt, 179 00:11:56,570 --> 00:12:00,520 her er et eksempel flyt for din Cat Facebook-applikasjon. 180 00:12:00,520 --> 00:12:07,760 Det starter med nettleseren ber om basen webadresse. 181 00:12:07,760 --> 00:12:15,470 Serveren sannsynligvis ville sende over statisk HTML og noen Javascript og CSS. 182 00:12:15,470 --> 00:12:19,170 Det er vanligvis best å ikke gjøre noe gjengivelse på serveren. 183 00:12:19,170 --> 00:12:23,370 Du har sannsynligvis ikke vil - 184 00:12:23,370 --> 00:12:28,360 hva serveren ikke gjør det kommer ned på listen over veggen innlegg 185 00:12:28,360 --> 00:12:31,120 og generering av en HTML for hver enkelt, og å sende den over. 186 00:12:31,120 --> 00:12:34,960 Det er vanligvis best å gjøre det på klientsiden fordi ellers 187 00:12:34,960 --> 00:12:38,580 hver gang du ønsker å re-tegne noe, må du lage en server forespørsel. 188 00:12:38,580 --> 00:12:42,450 Og at svært raskt gir deg mye overhead. 189 00:12:42,450 --> 00:12:47,430 Det er vanligvis best bare å skip sender ned statiske HTML 190 00:12:47,430 --> 00:12:50,660 og deretter Javascript og CSS som vil gjøre gjengivelsen på klientsiden. 191 00:12:50,660 --> 00:12:56,750 Så snart at ting kommer inn, 192 00:12:56,750 --> 00:13:03,500 da kan du ha - i Javascript - du kan gjøre forespørsler om veggen data 193 00:13:03,500 --> 00:13:08,740 og sånt, og etter at serveren er i utgangspunktet bare å gjøre databasespørringer 194 00:13:08,740 --> 00:13:10,740 og sjekke tillatelser. 195 00:13:10,740 --> 00:13:16,690 Det eneste viktige er at det ikke kan sende over noen andre brukere vegg innlegg 196 00:13:16,690 --> 00:13:19,220 at du ikke har lov til å se. 197 00:13:19,220 --> 00:13:28,050 Det kan i utgangspunktet være en svært tynn tilgang lag til databasen, 198 00:13:28,050 --> 00:13:32,820 og deretter alle de som viser data - alle visningene og sånt - 199 00:13:32,820 --> 00:13:37,280 de som kan skje i nettleseren din, og deretter når du ønsker å lage et innlegg eller noe 200 00:13:37,280 --> 00:13:40,000 du bare sende en ny forespørsel. 201 00:13:40,000 --> 00:13:45,350 >> Det er også noen fancy ting du kan gjøre på toppen av dette. 202 00:13:45,350 --> 00:13:49,550 I form av mer spesifikk teknisk informasjon, 203 00:13:49,550 --> 00:13:53,360 utvikling i ren Javascript kan være litt smertefullt, 204 00:13:53,360 --> 00:13:56,220 så er det noen biblioteker og verktøy som vil hjelpe deg mye med det. 205 00:13:56,220 --> 00:14:03,690 Jeg tror du har vel alle hørt om jQuery som gjør gjør HTML-gjengivelse 206 00:14:03,690 --> 00:14:08,890 og manipulasjon mye lettere - ha masse fancy funksjoner for fading inn og ut, 207 00:14:08,890 --> 00:14:12,020 og gjør Zippy animasjoner. 208 00:14:12,020 --> 00:14:13,720 Det er også dette biblioteket kalt Underscore.js. 209 00:14:13,720 --> 00:14:20,760 Den har en masse nyttige nyttefunksjoner, ting som du forventer Java å ha 210 00:14:20,760 --> 00:14:24,740 at det virkelig doesnt - ting som shuffling en matrise, 211 00:14:24,740 --> 00:14:28,900 fjerne duplikater fra en liste, eller flatere en liste av lister. 212 00:14:28,900 --> 00:14:30,900 Dette er bare en liten kodeeksempel. 213 00:14:30,900 --> 00:14:36,520 Strek har massevis av disse fine funksjoner som du skulle ønske du ville ha hele tiden. 214 00:14:36,520 --> 00:14:38,840 >> Og så er det en mer bibliotek som jeg ønsker å bruke litt tid på 215 00:14:38,840 --> 00:14:44,800 kalt Backbone.js fordi Backbone virkelig hjelper deg med å håndtere modeller på klientsiden 216 00:14:44,800 --> 00:14:47,210 og mye av forvirringen at det kan føre til. 217 00:14:47,210 --> 00:14:53,550 Backbone gir deg dette konseptet med modeller og samlinger 218 00:14:53,550 --> 00:14:58,300 i Javascript som er utgangspunktet akkurat som Javascript objekter 219 00:14:58,300 --> 00:15:04,900 i Javascript-matriser, men de har hendelser når du endrer deres egenskaper. 220 00:15:04,900 --> 00:15:09,090 Akkurat som i Javascript, kan du ha en hendelse når en knapp blir klikket eller noe 221 00:15:09,090 --> 00:15:14,800 disse Backbone modeller og Backbone samlinger vil kringkaste ting som 222 00:15:14,800 --> 00:15:17,510 at når de endres. 223 00:15:17,510 --> 00:15:22,270 Det betyr at du bare kan skrive noe sånt som dette kodebit her - 224 00:15:22,270 --> 00:15:27,530 dette sier, når du legger noe til innlegg matrisen du tegne hele veggen. 225 00:15:27,530 --> 00:15:34,270 Og dette vil si når et innlegg nummer av slike endringer, 226 00:15:34,270 --> 00:15:38,970 du varsle brukeren om at noen likte sine innlegg. 227 00:15:38,970 --> 00:15:45,210 Eller når noen eiendom i et innlegg endringer du tegne innlegget. 228 00:15:45,210 --> 00:15:51,050 Sånne ting vil spare deg tonnevis av kompleksitet fordi ellers 229 00:15:51,050 --> 00:15:55,440 hvis du ikke har noen rammer som dette så hver gang i koden som du endrer 230 00:15:55,440 --> 00:16:04,280 noe om et innlegg, ville du må huske selv å kalle alle rendringen funksjoner 231 00:16:04,280 --> 00:16:07,680 og sånn, og hvis du ønsket å legge til noe nytt som har skjedd 232 00:16:07,680 --> 00:16:10,680 hver gang du endret et innlegg du måtte gå gjennom hvert sted i din 233 00:16:10,680 --> 00:16:14,610 kode som du endret et innlegg og legge til at nye ting. 234 00:16:14,610 --> 00:16:21,450 Et rammeverk som dette vil fjerne mye av det mellom-lags kommunikasjon 235 00:16:21,450 --> 00:16:28,280 som gjør koden komplisert og vanskelig å vedlikeholde. 236 00:16:28,280 --> 00:16:31,170 >> Det er litt om utsikt også. 237 00:16:31,170 --> 00:16:35,960 Jeg kommer til å la det meste av dette til Billy fordi de er teknisk sett ikke så veldig vanskelig. 238 00:16:35,960 --> 00:16:43,540 Bruk jQuery for dine synspunkter. Det er praktisk talt som en nødvendighet på dette punktet. 239 00:16:43,540 --> 00:16:46,290 Det gjør bare alt så mye enklere. 240 00:16:46,290 --> 00:16:48,290 Det finnes en rekke biblioteker. 241 00:16:48,290 --> 00:16:49,970 Hvis du har kompliserte brukergrensesnitt-elementer, 242 00:16:49,970 --> 00:16:57,250 hvis du vil ha en autofullfør ting eller liker en av de fancy multi-velgere - 243 00:16:57,250 --> 00:17:04,790 hvis du vil ha noe sånt, bør du nok bare søke rundt 244 00:17:04,790 --> 00:17:08,130 og du kan finne en god bibliotek som vil gjøre hva du vil. 245 00:17:08,130 --> 00:17:11,579 Billy vil forklare mer om de faktisk vanskelige deler av utsikten. 246 00:17:11,579 --> 00:17:17,530 Også, som en side note, har Backbone noen funksjonalitet for å lage visninger kommunisere 247 00:17:17,530 --> 00:17:22,800 pent med modeller - se på dokumentasjonen for alle disse bibliotekene, faktisk. 248 00:17:22,800 --> 00:17:28,270 Bare se på de docs. De er svært godt skrevet og lett å følge. 249 00:17:28,270 --> 00:17:33,890 Generelt, kan du ganske mye bare Google hvis du har problemer. 250 00:17:33,890 --> 00:17:36,370 Det er mange mennesker som bruker dem. 251 00:17:36,370 --> 00:17:42,020 Jeg tror dette er som en siste kommentar. 252 00:17:42,020 --> 00:17:48,770 >> Det er også noen mer avanserte ting som du kan gjøre 253 00:17:48,770 --> 00:17:53,400 hvis du er ute etter å lage din web app ekstra awesome. 254 00:17:53,400 --> 00:17:59,760 Du kan gjøre - den nye HTML5-spesifikasjonen har en masse fancy ting du kan gjøre. 255 00:17:59,760 --> 00:18:05,780 Lokal lagring - som er at du kan lagre data i nettleseren - 256 00:18:05,780 --> 00:18:09,470 snarere enn å måtte gå tilbake og lese serveren for alt, 257 00:18:09,470 --> 00:18:12,470 du kan beholde noe av det på klienten og at selv lar folk - 258 00:18:12,470 --> 00:18:20,850 i enkelte tilfeller kan det også la deg bruke nettsiden offline. 259 00:18:20,850 --> 00:18:26,980 Det er dette som kalles WebSockets som er en annen form for nettverkskommunikasjon 260 00:18:26,980 --> 00:18:30,930 der i stedet for bare du gjør en forespørsel, får du svar og du er ferdig, 261 00:18:30,930 --> 00:18:35,240 du holde åpne en forbindelse til serveren, og slik at du kan gjøre ting som 262 00:18:35,240 --> 00:18:37,240 real-time oppdateringer. 263 00:18:37,240 --> 00:18:42,020 Så, hvis du prøvde å lage en chat app, kan du bruke WebSockets 264 00:18:42,020 --> 00:18:43,790 å kommunisere frem og tilbake, slik at du ikke ville ha til å holde ber om, 265 00:18:43,790 --> 00:18:48,410 "Oh, server, gjorde noen sende meg en prat?" hvert 10. sekund eller noe. 266 00:18:48,410 --> 00:18:55,620 Det er også en interessant HTML5 funksjon der du kan gjøre det ser ut som 267 00:18:55,620 --> 00:18:58,340 URL-en til siden er i endring uten å måtte faktisk laste det. 268 00:18:58,340 --> 00:19:03,230 Du kan bruke frem og tilbake-knappene uten å gjøre en haug med nettverksforespørsler. 269 00:19:03,230 --> 00:19:14,660 Sånne ting er veldig nyttig i forhold til å gjøre det rask, men også fungere som en web-app skal. 270 00:19:14,660 --> 00:19:17,680 >> Det er også dette som kalles CoffeeScript. 271 00:19:17,680 --> 00:19:24,450 CoffeeScript er et annet språk, faktisk, sammenstiller det ned til Javascript. 272 00:19:24,450 --> 00:19:30,080 Du ville skrive all koden i CoffeeScript, og deretter kjøre denne kompilatoren, 273 00:19:30,080 --> 00:19:33,300 og den spytter ut en Javascript-fil som du kan inkludere i din webside. 274 00:19:33,300 --> 00:19:38,860 Grunnen til at CoffeeScript er fint fordi det blir kvitt mye av 275 00:19:38,860 --> 00:19:44,760 rare saker som Java har der er lik likemenn, 276 00:19:44,760 --> 00:19:51,130 og tilsvarer likemenn gjøre forskjellige ting, eller liker - 277 00:19:51,130 --> 00:19:55,740 den har bedre syntaks for å håndtere matriser og funksjoner. 278 00:19:55,740 --> 00:20:00,460 Dette er en liten bit av CoffeeScript som produserer en liste over alle rutene 279 00:20:00,460 --> 00:20:04,900 fra 10 ^ 2-1 ^ 2 i motsatt rekkefølge. 280 00:20:04,900 --> 00:20:08,410 Som du kan se, lar ofte CoffeeScript du uttrykker i en tråd 281 00:20:08,410 --> 00:20:10,890 hva ville ta fem linjer med Javascript. 282 00:20:10,890 --> 00:20:13,230 Det kan gjøre ting mye enklere. 283 00:20:13,230 --> 00:20:15,390 Det er en liten bit av ny syntaks å lære i starten, 284 00:20:15,390 --> 00:20:18,010 men det definitivt vil gjøre deg mer produktiv i det lange løp. 285 00:20:18,010 --> 00:20:22,050 >> Du kan også bruke andre språk på serveren enn PHP - 286 00:20:22,050 --> 00:20:27,570 språk som Ruby, Python, eller det er enda et prosjekt kalt node.js 287 00:20:27,570 --> 00:20:31,450 som vil la deg bruke Java på serveren. 288 00:20:31,450 --> 00:20:34,700 Personlig, jeg virkelig, virkelig hater PHP. 289 00:20:34,700 --> 00:20:38,310 Jeg bare ikke liker å jobbe med det. 290 00:20:38,310 --> 00:20:43,450 Hvis du også tror at det er en forferdelig cluge av et språk, 291 00:20:43,450 --> 00:20:46,160 så kan du bruke en av disse i stedet. 292 00:20:46,160 --> 00:20:54,780 Generelt, hvis du ønsker å gjøre noe, og du ikke helt vet hvordan du vil gjøre det, 293 00:20:54,780 --> 00:20:56,780 bare søke på Internett. 294 00:20:56,780 --> 00:20:59,990 Det er tonn på tonn med ressurser, spesielt på - 295 00:20:59,990 --> 00:21:03,260 Stackoverflow er en stor en. 296 00:21:03,260 --> 00:21:06,400 Det er dette nettsted der programmerere spørre hverandre spørsmål. 297 00:21:06,400 --> 00:21:09,690 Du har kanskje kjørt inn i den hvis du skulle ha problemer på CS50 øvingsoppgaver. 298 00:21:09,690 --> 00:21:16,820 Og det er tonnevis av bibliotekene for å gjøre stort sett alt du ønsker. 299 00:21:16,820 --> 00:21:21,710 Hvis du ønsker å gjøre noe, og du ikke vet hvordan du gjør det, 300 00:21:21,710 --> 00:21:23,710 ikke anta at det er umulig. 301 00:21:23,710 --> 00:21:26,160 Bare se deg rundt, og du kan finne noen gode ressurser. 302 00:21:26,160 --> 00:21:29,280 >> Som en generell bryte opp, 303 00:21:29,280 --> 00:21:33,650 de viktigste takeaways er å holde ting enkelt. 304 00:21:33,650 --> 00:21:36,010 Jo mer kompleks koden er i begynnelsen 305 00:21:36,010 --> 00:21:40,370 og jo mer du prøver og gjøre fancy ting, 306 00:21:40,370 --> 00:21:43,300 jo lengre tid vil det ta å få noe faktisk funksjonell 307 00:21:43,300 --> 00:21:46,480 og jo vanskeligere vil det være å endre senere. 308 00:21:46,480 --> 00:21:49,580 Så, gjøre ting på den dumme, enkle måten først. 309 00:21:49,580 --> 00:21:51,720 Å gå sammen med det, 310 00:21:51,720 --> 00:21:59,070 ikke vær redd for å kaste bort gammel kode eller rydde det opp mye. 311 00:21:59,070 --> 00:22:05,320 Generelt, når du faktisk har noe arbeids, 312 00:22:05,320 --> 00:22:09,640 det er mye lettere å tenke på enn når du er fortsatt i begynnelsen stadier 313 00:22:09,640 --> 00:22:12,610 hvordan kan jeg sette alt dette sammen. 314 00:22:12,610 --> 00:22:17,500 Det er best å gjøre det dummeste mulig design som fungerer 315 00:22:17,500 --> 00:22:22,270 og deretter forbedre det iterativt enn å prøve å få alt riktig første gang. 316 00:22:22,270 --> 00:22:28,330 I forhold til klient-server-divisjon, prøve og holde serveren din veldig enkelt - 317 00:22:28,330 --> 00:22:33,030 bare en database og noen autentisering og ikke gjøre noe hardt arbeid der. 318 00:22:33,030 --> 00:22:37,540 Gjør alle dine kompliserte ting på klientsiden i nettleseren 319 00:22:37,540 --> 00:22:40,650 i Javascript så mye du kan. 320 00:22:40,650 --> 00:22:43,420 Se deg rundt for bibliotekene som gjør livet ditt bedre. 321 00:22:43,420 --> 00:22:46,850 Alltid bedre å bruke kode som noen andre skrev 322 00:22:46,850 --> 00:22:49,850 hvis du - og ikke for å skrive det selv. 323 00:22:49,850 --> 00:22:57,560 Det er en masse ting på internett. Google er din beste venn. 324 00:22:57,560 --> 00:22:59,560 Google er programmererens beste venn. 325 00:22:59,560 --> 00:23:07,620 Ja, definitivt ikke være redd for å se seg om etter ting. 326 00:23:07,620 --> 00:23:11,860 OK. Og over til Billy. 327 00:23:11,860 --> 00:23:14,600 >> [Billy] Egentlig før jeg begynner med noen design ting, 328 00:23:14,600 --> 00:23:17,250 Er det noen som har noen spørsmål til Ben om noe som han snakket om? 329 00:23:17,250 --> 00:23:20,290 Ok, bra. 330 00:23:20,290 --> 00:23:22,220 Igjen, gi oss beskjed hvis noe er uklart 331 00:23:22,220 --> 00:23:25,420 eller hvis du vil at vi skal gå over noe litt mer. 332 00:23:25,420 --> 00:23:30,330 Jeg kommer til å gå tilbake litt og snakke om de mer fundamentale deler av design. 333 00:23:30,330 --> 00:23:34,840 Ben nevnte modell kalt - beklager, modellen kontrolleren view system 334 00:23:34,840 --> 00:23:38,520 som er liksom det tekniske aspektet, så jeg kommer til å se på utsikten spesielt, 335 00:23:38,520 --> 00:23:42,930 og jeg kommer til å starte med hvordan du vil utforme et syn som ser fin. 336 00:23:42,930 --> 00:23:50,540 Her er litt av en virkelig grunnleggende mal for vår Cat Facebook. 337 00:23:50,540 --> 00:23:54,190 Jeg tror det er noen grunnleggende i moderne UI design 338 00:23:54,190 --> 00:23:56,190 som er verdt å plukke opp. 339 00:23:56,190 --> 00:23:58,210 Du kan legge merke til det er en mye tomrom over hele siden, 340 00:23:58,210 --> 00:24:00,790 god plass til ting. 341 00:24:00,790 --> 00:24:02,580 Føler ikke at du må ta knekken på ting på en side. 342 00:24:02,580 --> 00:24:06,700 Du ønsker å forlate masse plass åpen, og hvis du går til nesten hvilken som helst moderne nettside 343 00:24:06,700 --> 00:24:08,380 du vil se det er hvitt overalt. 344 00:24:08,380 --> 00:24:10,380 Det er hvit på steder du ikke forventer. 345 00:24:10,380 --> 00:24:14,570 Du har denne fargepaletten, og det er lurt i begynnelsen 346 00:24:14,570 --> 00:24:17,880 å velge en fargepalett som du kommer til å jobbe med og utvikle. 347 00:24:17,880 --> 00:24:22,250 Du også - det hjelper å velge en skrifttype, og på den måten du liksom jobbe med 348 00:24:22,250 --> 00:24:24,450 disse konkrete grunnleggende av design. 349 00:24:24,450 --> 00:24:26,910 Du har din type, du har dine farger, og deretter kan du slags 350 00:24:26,910 --> 00:24:29,380 passe alt annet i etter behov. 351 00:24:29,380 --> 00:24:37,710 Så, som jeg sa, med fargevalget du vil bruke dristigere farger for ditt fargevalg 352 00:24:37,710 --> 00:24:40,320 sparsomt. Overskrifter er fin. Knappene er fint å ha virkelig store, prangende farger. 353 00:24:40,320 --> 00:24:43,710 Men generelt, hvis du har en nettside som har farger overalt, 354 00:24:43,710 --> 00:24:47,250 alle stirrer deg i ansiktet, det bare ser rotete, og det er ikke bra. 355 00:24:47,250 --> 00:24:50,430 Du vil vanligvis bruke lyse farger. 356 00:24:50,430 --> 00:24:52,890 Prøv å, igjen, plukke en ganske sammenhengende fargevalg. 357 00:24:52,890 --> 00:24:56,640 Du kan ha disse små sprut av masse farger - 358 00:24:56,640 --> 00:25:00,240 som kan se ganske fin, men du ønsker å bruke dem ganske sparsomt. 359 00:25:00,240 --> 00:25:04,270 >> Som jeg sa, du vil være minimal. Mindre er nesten alltid mer. 360 00:25:04,270 --> 00:25:07,430 Hvis du kan vise noe eller ikke vise noe, 361 00:25:07,430 --> 00:25:10,230 og du er litt usikker på om det skal være der som standard - 362 00:25:10,230 --> 00:25:13,400 sannsynligvis du er best av å forlate det ut. Du kan alltid legge det inn senere. 363 00:25:13,400 --> 00:25:16,620 Ja, holde ting enkelt. 364 00:25:16,620 --> 00:25:19,510 Men viktigst av alt, du ønsker å vurdere flere design. 365 00:25:19,510 --> 00:25:23,520 Tror ikke at når du gjør et nettsted, har du det i hodet ditt som du kommer til å 366 00:25:23,520 --> 00:25:26,310 gjøre området på en bestemt måte, og det kommer til å se ut akkurat som denne. 367 00:25:26,310 --> 00:25:29,830 Det kommer til å ha blått øverst på toppen og den blå siden bar 368 00:25:29,830 --> 00:25:32,670 og deretter den gule sub-header ting. 369 00:25:32,670 --> 00:25:34,670 Du ønsker å lage flere maler. 370 00:25:34,670 --> 00:25:37,350 Du kan enten - hvis du er flink med Photo Shop, kan du åpne den opp og liksom 371 00:25:37,350 --> 00:25:39,600 designe en nettside som du liker det å se. 372 00:25:39,600 --> 00:25:41,680 Hvis ikke, kan du bare bruke penn og papir, 373 00:25:41,680 --> 00:25:44,000 men skraper opp flere design. 374 00:25:44,000 --> 00:25:47,000 Du vil i utgangspunktet ha en satt opp der du har mange ulike design, 375 00:25:47,000 --> 00:25:50,810 og hvis man ender opp med å jobbe, så det er flott. 376 00:25:50,810 --> 00:25:53,370 Hvis man ender opp sviktende, så har du alltid en til å slå til. 377 00:25:53,370 --> 00:25:57,960 Generelt, ikke føler at du bør være begrenset 378 00:25:57,960 --> 00:26:00,830 til hvilken design du først bestemme. 379 00:26:00,830 --> 00:26:04,420 Design er svært variabel, og en del av betydningen av modellen 380 00:26:04,420 --> 00:26:09,480 kontrolleren visning systemet er at du kan bytte inn og ut ulike visningene du vil. 381 00:26:09,480 --> 00:26:13,510 Du kan påvirke dataene på én måte, og deretter bestemme, oh, faktisk, som ikke fungerer så godt. 382 00:26:13,510 --> 00:26:19,190 Jeg tror det er litt for komplisert eller det er en del her som virkelig ikke fungerer, 383 00:26:19,190 --> 00:26:22,150 så jeg skal bare helt forlate dette synet og swap i en helt ny en. 384 00:26:22,150 --> 00:26:24,790 Vi kan fortsatt bruke de gamle modellene og de gamle kontrollerne. 385 00:26:24,790 --> 00:26:27,490 Vi kan gjøre alt på serveren og klienten som vi ville gjort før. 386 00:26:27,490 --> 00:26:32,850 Men selve bølgen av dataene som vises kommer til å være litt annerledes. 387 00:26:32,850 --> 00:26:35,840 >> Såvidt faktisk implementere design du ønsker, 388 00:26:35,840 --> 00:26:39,330 når du har noen design skisserte på papir eller på Photo Shop eller hva, 389 00:26:39,330 --> 00:26:42,120 det finnes en rekke verktøy som er gjort tilgjengelig for deg. 390 00:26:42,120 --> 00:26:45,700 Den første du er godt kjent med som er HTML, PHP, eller hva 391 00:26:45,700 --> 00:26:48,990 språket du bruker bare å kode de statiske sidene på nettstedet ditt. 392 00:26:48,990 --> 00:26:51,990 Du har jobbet mye med HTML hvilken type gir du disse kodene 393 00:26:51,990 --> 00:26:57,820 at du kan sette ting i, og i utgangspunktet er det en måte å organisere innholdet. 394 00:26:57,820 --> 00:27:00,990 For eksempel, har du overskriften der oppe, så du kommer til å ha en header tag, 395 00:27:00,990 --> 00:27:05,770 og det kommer til å ha litt tekst på innsiden av det som sannsynligvis kommer til å være i en annen kode. 396 00:27:05,770 --> 00:27:08,380 Da har du en sidebar kanskje med noen forskjellige linker, 397 00:27:08,380 --> 00:27:10,160 og de skal alle være i egne koder. 398 00:27:10,160 --> 00:27:13,870 Så, i utgangspunktet HTML på sitt hjerte er en måte å dele opp siden hvor 399 00:27:13,870 --> 00:27:16,980 du til slutt ønsker å formatere den. 400 00:27:16,980 --> 00:27:18,980 Så igjen, du har sett det før. 401 00:27:18,980 --> 00:27:20,540 Du er ganske komfortabel med å jobbe med det nå 402 00:27:20,540 --> 00:27:23,120 gitt at du har gjort den siste PSett forhåpentligvis, 403 00:27:23,120 --> 00:27:26,150 så det burde ikke være noe problem. 404 00:27:26,150 --> 00:27:31,280 >> Da har du CSS som i utgangspunktet håndterer alt av design statiske aspekter. 405 00:27:31,280 --> 00:27:35,320 Det ville håndtere alle farger, alt av plassering av forskjellige elementer, 406 00:27:35,320 --> 00:27:36,840 hvor de går i forhold til hverandre, 407 00:27:36,840 --> 00:27:41,530 hvor store de er, de forskjellige typer posisjoneringer som du ville ha - 408 00:27:41,530 --> 00:27:46,030 med andre ord, kan du ha ting fikset slik at når du blar nedover de blir, 409 00:27:46,030 --> 00:27:48,700 eller du kan ha ting i forhold til andre elementer. 410 00:27:48,700 --> 00:27:50,730 Alt av den slags ting er i CSS. 411 00:27:50,730 --> 00:27:54,630 Dessuten kan du gjøre ulike dekorasjoner, kan du ha tekstfarger, 412 00:27:54,630 --> 00:27:56,630 teksteffekter, alt av den slags ting. 413 00:27:56,630 --> 00:28:00,360 Ben ga en virkelig god seminar om dette sist helg, 414 00:28:00,360 --> 00:28:04,450 og så ville jeg definitivt sjekke det ut hvis du har tenkt å gjøre noen fancy ting med CSS. 415 00:28:04,450 --> 00:28:09,850 CSS3 er faktisk den nyeste versjonen av CSS, og det kan gjøre alle slags virkelig fine ting. 416 00:28:09,850 --> 00:28:14,750 Det kan gjøre gradienter, du kan ha fine, avrundede hjørner, og du kan gjøre alle slags ting 417 00:28:14,750 --> 00:28:17,940 å gjøre nettstedet ditt ser mer moderne og fancy. 418 00:28:17,940 --> 00:28:22,150 >> Den neste verktøyet er Javascript og jQuery som Ben snakket litt om, 419 00:28:22,150 --> 00:28:24,150 men jeg får litt lenger inn. 420 00:28:24,150 --> 00:28:28,100 Javascript, som du har jobbet med det en liten bit, eller i det minste sett det i foredrag, 421 00:28:28,100 --> 00:28:31,870 er en slags måte å dynamisk gjør ting i HTML. 422 00:28:31,870 --> 00:28:35,950 HTML, som dere vet, er statisk, så når du har HTML du ikke kan endre det. 423 00:28:35,950 --> 00:28:40,050 Men Javascript, på noen måter, er en måte å være i stand til å endre HTML. 424 00:28:40,050 --> 00:28:44,520 Så du kan gjøre det, og det er flott, men Java virkelig er en smerte å jobbe med. 425 00:28:44,520 --> 00:28:49,050 Det er så lenge og stumpe og å gjøre selv de enkleste ting 426 00:28:49,050 --> 00:28:51,630 krever mye av linjer med Javascript. 427 00:28:51,630 --> 00:28:55,410 Så, er jQuery utgangspunktet et bibliotek for Javascript som forenkler alt dette. 428 00:28:55,410 --> 00:28:59,880 Den sier, ok, hvis du ønsker å ha en firkantet boks kommer fra venstre 429 00:28:59,880 --> 00:29:03,980 og visne inn i siden slik at det er i midten, i Javascript som ville ta - 430 00:29:03,980 --> 00:29:06,340 Jeg vet ikke, noen hundre linjer å gjøre, og det ville være en smerte, 431 00:29:06,340 --> 00:29:10,540 og du kommer ut av det å hate alt om webprogrammering. 432 00:29:10,540 --> 00:29:15,380 JQuery du i utgangspunktet har element-dot-fade-in, eller noe sånt. 433 00:29:15,380 --> 00:29:18,580 Så, veldig, veldig enkle funksjoner som lar deg gjøre alle slags kule animasjoner 434 00:29:18,580 --> 00:29:20,580 og den slags ting. 435 00:29:20,580 --> 00:29:23,300 Den andre tingen som disse to er veldig bra for bare gjør dynamiske ting 436 00:29:23,300 --> 00:29:25,300 med nettstedet. 437 00:29:25,300 --> 00:29:28,370 Så, i stedet for bare å ha en HTML-side - som viser noen data, men gjør faktisk ikke 438 00:29:28,370 --> 00:29:32,130 gjøre noe - Javascript og jQuery vil la deg ha knapper som du kan klikke på, 439 00:29:32,130 --> 00:29:37,960 og du kan dra elementer og re-order dem og sortere dem, og har nye elementer 440 00:29:37,960 --> 00:29:40,500 lagt til eller fjernet. Du kan legge Sletting, den slags ting. 441 00:29:40,500 --> 00:29:44,570 Så, gjør jQuery tonnevis av kule ting. 442 00:29:44,570 --> 00:29:48,840 Og Vipul er faktisk å gi et seminar på det i dag, tror jeg, på 5-o'clock, 443 00:29:48,840 --> 00:29:51,220 så hvis du kan holde rundt så lenge, som ville - 5 eller 4? 444 00:29:51,220 --> 00:29:54,930 Fire. Unnskyld. Det er faktisk rett etter dette, så jeg vil anbefale 445 00:29:54,930 --> 00:29:56,680 stikker rundt for det hvis du kan. 446 00:29:56,680 --> 00:30:00,180 JQuery er super, super nyttig, og du vil være i stand til å gjøre mange virkelig fine ting med det 447 00:30:00,180 --> 00:30:03,460 for stort sett alle web utviklingsprosjekt. 448 00:30:03,460 --> 00:30:06,200 >> Nå kommer jeg til å komme inn i form av et skille. 449 00:30:06,200 --> 00:30:08,210 Jeg har snakket i utgangspunktet om brukergrensesnitt. 450 00:30:08,210 --> 00:30:11,510 Brukergrensesnittet er bare utformingen av området. 451 00:30:11,510 --> 00:30:13,780 Men det er liksom et annet konsept som er brukeropplevelsen. 452 00:30:13,780 --> 00:30:15,900 De to er veldig forskjellige. 453 00:30:15,900 --> 00:30:19,440 Interface er definitivt en del av opplevelsen. 454 00:30:19,440 --> 00:30:21,340 Med andre ord, når du går til et nettsted, du ser på grensesnittet. 455 00:30:21,340 --> 00:30:22,960 Det er en del av hvordan du opplever nettstedet. 456 00:30:22,960 --> 00:30:24,960 Men brukeropplevelsen er mer enn det. 457 00:30:24,960 --> 00:30:29,910 Brukeropplevelsen er om hva inntrykk av at brukeren får fra nettstedet ditt er. 458 00:30:29,910 --> 00:30:31,910 Så, åpenbart, er grensesnittet en del av det. 459 00:30:31,910 --> 00:30:35,340 Og det er definitivt en nødvendig del, men det er ikke tilstrekkelig. 460 00:30:35,340 --> 00:30:38,790 Med andre ord, hvis du har et fint grensesnitt, og det er pen og fargerik og alt det, 461 00:30:38,790 --> 00:30:43,650 det er flott, men hvis brukeren går til nettstedet ditt, ser en pen layout og det er forvirret av 462 00:30:43,650 --> 00:30:47,060 alt, har ingen anelse om hvordan du gjør noe, så åpenbart at du har gjort en virkelig 463 00:30:47,060 --> 00:30:48,930 dårlig nettside. 464 00:30:48,930 --> 00:30:50,930 Det er liksom der brukeropplevelsen kommer i. 465 00:30:50,930 --> 00:30:54,570 Jeg kommer til å snakke litt om UX design - UX er en forkortelse for brukeropplevelse - 466 00:30:54,570 --> 00:30:58,050 og hva slags hvordan du kan sørge for at du har en god brukeropplevelse. 467 00:30:58,050 --> 00:31:04,330 Det første punktet er at du kan designe et nettsted der en bruker kan gjøre noe som 468 00:31:04,330 --> 00:31:06,820 at brukeren muligens ønsker. 469 00:31:06,820 --> 00:31:08,940 Men hvis brukeren ikke kan finne ut hvordan du gjør disse tingene - 470 00:31:08,940 --> 00:31:12,850 med andre ord, hvis brukeren ikke har en god idé når de går til din side av, 471 00:31:12,850 --> 00:31:17,660 "Å, hvis jeg ønsker å oppdatere profilen min, så jeg klikker på denne knappen, eller hvis jeg ønsker å legge ut på 472 00:31:17,660 --> 00:31:20,850 noens vegg, så går jeg til deres vegg og klikk på en liten boks. " 473 00:31:20,850 --> 00:31:24,410 Hvis brukeren ikke vet det, så du effektivt har faktisk ikke 474 00:31:24,410 --> 00:31:27,080 implementert den funksjonaliteten riktig. 475 00:31:27,080 --> 00:31:30,900 En del av å implementere en funksjon er at brukerne faktisk er i stand til å bruke den. 476 00:31:30,900 --> 00:31:34,810 Og det kan være frustrerende - du kan lage et nettsted, og det kan gjøre alle typer 477 00:31:34,810 --> 00:31:37,810 fantastiske ting, men så har du folk teste det og si: "Det kan ikke gjøre dette. 478 00:31:37,810 --> 00:31:39,770 Hvorfor kan det ikke gjøre dette? "Og du vil si tilbake til dem, 479 00:31:39,770 --> 00:31:44,420 "Vel, det kan. Du trenger bare å gå inn i den syvende rullegardinmenyen på denne obskure 480 00:31:44,420 --> 00:31:48,470 side som bare er funnet ved en link nederst til høyre "eller noe. 481 00:31:48,470 --> 00:31:50,430 Selvfølgelig trenger du ikke ønsker det. 482 00:31:50,430 --> 00:31:53,420 Du vil at det skal være klart for brukerne hva de er ment å gjøre, 483 00:31:53,420 --> 00:31:56,240 og den skal være enkel og intuitiv for dem. 484 00:31:56,240 --> 00:32:01,180 >> En annen ting som du ønsker å prøve å gjøre er, hvis noen kommer til å gå til nettstedet ditt 485 00:32:01,180 --> 00:32:05,520 og ni av ti ganger gjør handling A, og en av 10 ganger gjør handling B, 486 00:32:05,520 --> 00:32:08,950 har du sannsynligvis ønsker å fokusere sin erfaring på handling A. 487 00:32:08,950 --> 00:32:12,240 Med andre ord, du vil gjøre det veldig, veldig klart hvordan du gjør A. 488 00:32:12,240 --> 00:32:15,980 En bør være front-og-senter - gå til området, se det, oh, det er rett der. 489 00:32:15,980 --> 00:32:20,850 Mens B åpenbart du ønsker å være klar, men du kan la den være litt mer 490 00:32:20,850 --> 00:32:22,850 i bakgrunnen. 491 00:32:22,850 --> 00:32:24,640 David gir et godt eksempel på dette i foredraget, 492 00:32:24,640 --> 00:32:26,640 som er den Boston T-systemet. 493 00:32:26,640 --> 00:32:29,440 Når du går til Boston T og du ønsker å kjøpe en billett, 494 00:32:29,440 --> 00:32:32,700 du må få inn 5 menyer før du faktisk kan kjøpe en billett 495 00:32:32,700 --> 00:32:37,130 for en $ 2, $ 2,50 verdi, som er hvor mye tid det tar å kjøre T-banen 496 00:32:37,130 --> 00:32:39,130 i en retning. 497 00:32:39,130 --> 00:32:41,600 Det er et problem fordi de fleste som rir T-banen 498 00:32:41,600 --> 00:32:44,880 sannsynligvis bare ønsker å gå til ett sted, kjøpe sin billett, få på med en gang. 499 00:32:44,880 --> 00:32:47,550 Det gir ikke mening at de må gå gjennom mange forskjellige menyer 500 00:32:47,550 --> 00:32:49,550 for å komme dit. 501 00:32:49,550 --> 00:32:51,760 En bedre brukeropplevelse ville være en rask knapp på den første siden 502 00:32:51,760 --> 00:32:54,760 som bare sier, "kjøpe en enveisbillett," og som ville sette i alle standard 503 00:32:54,760 --> 00:32:58,550 standardverdiene, og deretter hvis noen ønsker å kjøpe en annen billett enn det, 504 00:32:58,550 --> 00:33:01,690 de fortsatt, selvfølgelig, har muligheten til, men du har optimalisert for 505 00:33:01,690 --> 00:33:04,080 den common-use case som er virkelig viktig. 506 00:33:04,080 --> 00:33:06,830 Du kan se eksempler på dette på Facebook, ikke sant? 507 00:33:06,830 --> 00:33:09,410 Hvis du går til Facebook, og du ønsker å publisere en status, 508 00:33:09,410 --> 00:33:11,710 det er helt på toppen som er hva du ofte ønsker å gjøre. 509 00:33:11,710 --> 00:33:14,730 Så snart du går inn på siden, kan du gjøre de vanligste tingene som 510 00:33:14,730 --> 00:33:16,730 du ønsker å gjøre. 511 00:33:16,730 --> 00:33:17,550 Hvis du ønsker å gjøre litt mer kompliserte ting som, 512 00:33:17,550 --> 00:33:21,070 si at jeg ønsker å gå til min venns vegg og legge inn et bilde på det - 513 00:33:21,070 --> 00:33:24,810 som jeg ønsker å gjøre ofte, men ikke så ofte som poste statusoppdateringer - 514 00:33:24,810 --> 00:33:28,200 så i dette tilfellet, jeg skriver navnet sitt i boksen øverst, klikk på profilen sin, 515 00:33:28,200 --> 00:33:31,680 og da, likevel, det er rett på toppen der en gang jeg har fått til sin profil. 516 00:33:31,680 --> 00:33:38,240 Igjen, jeg har optimalisert i prioritet for de vanligste-bruksmåter. 517 00:33:38,240 --> 00:33:41,800 >> En annen viktig ting er at ofte folk vil liksom prøve å komme seg rundt dette 518 00:33:41,800 --> 00:33:44,890 ved å si, ok, så jeg har gjort området og folk finner det forvirrende, 519 00:33:44,890 --> 00:33:46,110 og det er et problem, ikke sant? 520 00:33:46,110 --> 00:33:49,210 Selvfølgelig, jeg vil at folk skal bli forvirret av innholdet på nettstedet mitt. 521 00:33:49,210 --> 00:33:53,210 Men måten å løse det er å ikke ha noe dukker opp og sa, 522 00:33:53,210 --> 00:33:55,290 hei, jeg kommer til å lære deg hvordan du skal bruke dette området. 523 00:33:55,290 --> 00:33:58,130 Trinn 1 - Klikk på denne knappen. Trinn 2 - gå her. 524 00:33:58,130 --> 00:34:03,080 Jada, det er en vei rundt det - det er en måte at du kan fortelle folk hva de skal gjøre, men det er 525 00:34:03,080 --> 00:34:05,080 egentlig ikke den optimale måten. 526 00:34:05,080 --> 00:34:07,420 Hvis jeg går til en nettside og plutselig jeg bombardert med denne opplæringen som forteller meg 527 00:34:07,420 --> 00:34:11,739 hva du skal gjøre og hvor du skal dra og alt dette, det er ikke morsomt for meg. 528 00:34:11,739 --> 00:34:13,739 Det er ikke en god opplevelse for meg. 529 00:34:13,739 --> 00:34:17,130 Det er litt vondt. Jeg vil bare begynne å gjøre ting. 530 00:34:17,130 --> 00:34:19,449 Folk kommer til å lukke ut av deres dialogboksen 531 00:34:19,449 --> 00:34:23,580 eller komme seg ut av opplæringen, ikke vet hva de skal gjøre, og deretter klage fordi 532 00:34:23,580 --> 00:34:25,580 du har ikke fortalt dem hva de skal gjøre. 533 00:34:25,580 --> 00:34:29,530 Måten å løse dette på er ikke ved å gi noen form for opplæringen eller retninger - 534 00:34:29,530 --> 00:34:31,530 noe sånt. 535 00:34:31,530 --> 00:34:33,719 Så mye du kan unngå det, du virkelig ønsker å vise brukeren hva du skal gjøre 536 00:34:33,719 --> 00:34:36,429 bare av naturen av hvordan nettstedet er lagt ut. 537 00:34:36,429 --> 00:34:39,090 Med andre ord, hvis jeg går til Facebook uten å logge på, 538 00:34:39,090 --> 00:34:40,920 den første tingen som jeg ser på hovedsiden - 539 00:34:40,920 --> 00:34:44,480 det er litt innloggingsboksen. Så, duh. Jeg må logge i. Det er rett der. 540 00:34:44,480 --> 00:34:48,030 Mens hvis jeg gikk til Facebook, og jeg hadde til å klikke litt linken nederst 541 00:34:48,030 --> 00:34:51,920 som sa 'logg inn' og resten av siden var bare en slags bilde eller noe, 542 00:34:51,920 --> 00:34:54,820 Jeg ville egentlig ikke vet hva de skal gjøre, ikke sant? Jeg ville bli forvirret. 543 00:34:54,820 --> 00:34:58,590 Så kunne den fortelle meg å dra dit ned og klikk på knappen for å logge inn, 544 00:34:58,590 --> 00:35:01,080 eller logg inn-knappen kan være rett på toppen der jeg kommer til å se det. 545 00:35:01,080 --> 00:35:04,780 Du vil alltid være å vise brukeren hva de skal gjøre, 546 00:35:04,780 --> 00:35:06,750 og som bør være iboende i selve siden. 547 00:35:06,750 --> 00:35:09,880 >> Når du tenker på design og spottet opp forskjellige måter 548 00:35:09,880 --> 00:35:13,810 uttrykke din side, du virkelig ønsker å tenke på hva brukerne skal 549 00:35:13,810 --> 00:35:19,380 skal gjøre og hvordan du kan vise dem hva de skal gjøre. 550 00:35:19,380 --> 00:35:23,530 En siste ting er testing er veldig, veldig viktig. 551 00:35:23,530 --> 00:35:27,400 Det er flott å få noen - få en venn, få noen du ikke vet selv - 552 00:35:27,400 --> 00:35:30,420 som aldri har sett stedet før å bruke nettstedet. 553 00:35:30,420 --> 00:35:33,650 Fordi du har jobbet på stedet i flere timer, har du stått og stirret på det, 554 00:35:33,650 --> 00:35:36,670 og du vet nøyaktig hva du skal gjøre så åpenbart at du kommer til å teste 555 00:35:36,670 --> 00:35:39,520 ting som du har jobbet med, og som du vet arbeid. 556 00:35:39,520 --> 00:35:42,680 Men hvis noen andre kommer sammen og bruker nettstedet som aldri har brukt det før, 557 00:35:42,680 --> 00:35:46,880 det er en unik opplevelse, fordi du har noen som ikke har forkunnskaper 558 00:35:46,880 --> 00:35:51,530 av området går inn i det, slik at de er nødt til effektivt ingen anelse om hva jeg skal gjøre 559 00:35:51,530 --> 00:35:54,890 eller hva slags bruk tilfeller er til stede for dem. 560 00:35:54,890 --> 00:36:00,930 Det er flott. Det er unike fordi de er egentlig en person med en blank for et sinn. 561 00:36:00,930 --> 00:36:03,750 De kan fortelle deg om noe er forvirrende eller uklart. 562 00:36:03,750 --> 00:36:07,580 De kan gi deg en idé om nøyaktig hva brukeropplevelsen på nettstedet ditt er. 563 00:36:07,580 --> 00:36:10,630 Det kan være veldig vanskelig å si at selv, så definitivt jeg vil oppfordre deg 564 00:36:10,630 --> 00:36:13,640 som du utvikler dine prosjekter - hvis du gjør web-baserte prosjekter - 565 00:36:13,640 --> 00:36:18,290 å få folk til å bruke området så tidlig som du har noen form for funksjonell demo. 566 00:36:18,290 --> 00:36:25,330 >> Nå skal jeg snakke litt om hvordan man skal håndtere en web utviklingsprosjekt. 567 00:36:25,330 --> 00:36:28,900 Vi har gått over hvordan du kan gjøre det teknisk back-end side, 568 00:36:28,900 --> 00:36:31,050 hvordan du kan designe en veldig god side, 569 00:36:31,050 --> 00:36:34,150 og det er flott hvis du jobber med deg selv, men - 570 00:36:34,150 --> 00:36:37,300 selv om du jobber med deg selv, og spesielt hvis du arbeider på et lag, 571 00:36:37,300 --> 00:36:39,580 prosjektledelse blir et stort problem. 572 00:36:39,580 --> 00:36:42,340 Du har liksom hørt om prosjektledelse i ulike former siden 573 00:36:42,340 --> 00:36:45,410 barneskolen når du ble fortalt gruppearbeid. 574 00:36:45,410 --> 00:36:46,820 Du må samarbeide, kommunisere, alt dette. 575 00:36:46,820 --> 00:36:49,620 Det gjelder alle fortsatt her, men det er noen unike omstendigheter med 576 00:36:49,620 --> 00:36:54,910 informatikk som du ønsker å være klar over, og du vil være sikker på at du håndterer godt. 577 00:36:54,910 --> 00:36:58,050 Jeg skal snakke først litt om det laget som du vil være i. 578 00:36:58,050 --> 00:37:03,280 Det er veldig viktig å velge riktig størrelse på et team som skal jobbe på, 579 00:37:03,280 --> 00:37:05,890 og i det ferdige prosjektet jeg tror du har muligheten til å velge 580 00:37:05,890 --> 00:37:08,610 mellom 1 og 4 personer hvis jeg er riktig. 581 00:37:08,610 --> 00:37:12,050 Du ønsker å være sikker på at du ikke bare velge antall personer 582 00:37:12,050 --> 00:37:14,950 at du ønsker å jobbe med fordi de er dine venner. 583 00:37:14,950 --> 00:37:18,170 Du ønsker å velge et lag som er en god størrelse og som vil få jobben gjort. 584 00:37:18,170 --> 00:37:22,700 Det er en trade off i å ha flere mennesker versus mindre folk. 585 00:37:22,700 --> 00:37:25,320 Hvis du har flere folk, kan åpenbart mer arbeid må gjøres 586 00:37:25,320 --> 00:37:28,450 fordi du har masse folk, masse kode, masse ideer, 587 00:37:28,450 --> 00:37:29,870 og det er alt flott. 588 00:37:29,870 --> 00:37:32,590 Men det krever også mye mer ledelse og mye mer kommunikasjon. 589 00:37:32,590 --> 00:37:34,720 Med andre ord, hvis du har fire personer som jobber på samme prosjekt 590 00:37:34,720 --> 00:37:39,200 og de er alle å redigere den samme koden, mer eller mindre de alle slags behov for å vite 591 00:37:39,200 --> 00:37:40,920 hva som skjer, så det krever at du - 592 00:37:40,920 --> 00:37:44,580 hvis du legger til noen nye funksjon du liksom måtte fortelle folk - jeg legger dette, 593 00:37:44,580 --> 00:37:48,510 Jeg endrer dette på denne måten - spesielt hvis du kommer inn i den virkelig dype ting 594 00:37:48,510 --> 00:37:52,730 som modeller og kontrollerne som faktisk kommer til å påvirke hvordan nettstedet fungerer. 595 00:37:52,730 --> 00:37:54,500 Hele laget må være klar over det, 596 00:37:54,500 --> 00:37:58,140 så du må sørge for at du ikke velger en for stor gruppe som kommer til å bli vanskelig 597 00:37:58,140 --> 00:37:59,970 å gjøre at kommunikasjonen. 598 00:37:59,970 --> 00:38:02,930 Du kan heller ikke ønsker å velge en liten nok lag som du ikke kommer til å 599 00:38:02,930 --> 00:38:06,250 være i stand til å kommunisere fordi det er bare deg. 600 00:38:06,250 --> 00:38:11,270 >> En annen ting å vurdere er balansen mellom hvor folks ferdigheter er. 601 00:38:11,270 --> 00:38:14,350 Det er flott hvis du er alle virkelig gode programmerere. 602 00:38:14,350 --> 00:38:17,050 Men hvis du er alle back-end folk, så nettstedet ditt ikke kommer til å se veldig bra 603 00:38:17,050 --> 00:38:20,860 fordi du har dette stor database, og det gjør super-raske søk - 604 00:38:20,860 --> 00:38:26,130 som er flott - men når du går til det, er det som en 1990 nettsted med rød og blå 605 00:38:26,130 --> 00:38:30,370 overalt, og det er ikke bra heller. 606 00:38:30,370 --> 00:38:34,210 Legg merke til at Ben og jeg jobber som et team er veldig fint fordi jeg er liksom mer 607 00:38:34,210 --> 00:38:38,030 i fronten, vi begge samhandle i midten-slutten, og Ben er virkelig bra med back-end ting, 608 00:38:38,030 --> 00:38:43,550 slik som fungerer veldig bra, fordi vi kan designe noen av sidene og i utgangspunktet hullene 609 00:38:43,550 --> 00:38:47,580 i det området som trenger å bli fylt kan besettes av enten en av oss, eller muligens begge deler. 610 00:38:47,580 --> 00:38:50,210 Du ønsker å være sikker på at det ikke er noen hull i laget ditt. 611 00:38:50,210 --> 00:38:51,180 Det er greit hvis det er litt av overlapping. 612 00:38:51,180 --> 00:38:53,670 Med andre ord, hvis du har to personer som er både bra med bakenden, 613 00:38:53,670 --> 00:38:57,250 som kan være god også fordi de kan hjelpe hverandre med problemer 614 00:38:57,250 --> 00:38:58,820 at de har. 615 00:38:58,820 --> 00:39:02,590 Det kan være et problem hvis du bare har en person som er ansvarlig for en bestemt ting 616 00:39:02,590 --> 00:39:06,650 og de kjører inn i et problem, slik at du ønsker å ha en liten bit av overlapping 617 00:39:06,650 --> 00:39:10,760 men du viktigst vil være sikker på at alle de mulige hullene er fylt. 618 00:39:10,760 --> 00:39:17,550 >> Det siste - og dette burde være innlysende, men det er ofte ikke. 619 00:39:17,550 --> 00:39:19,550 Du virkelig ønsker å være å ha det gøy. 620 00:39:19,550 --> 00:39:23,360 Poenget med denne avsluttende prosjekt i CS50 og ofte poenget med web-utvikling generelt 621 00:39:23,360 --> 00:39:26,360 er ikke å bare gjøre en jobb fordi det er behov for å gjøre. 622 00:39:26,360 --> 00:39:29,140 Du virkelig ønsker å være å ha det gøy, og du vil være å gjøre noe 623 00:39:29,140 --> 00:39:31,180 som er å motivere deg til å arbeide med den. 624 00:39:31,180 --> 00:39:33,650 Hvis alt du gjør er vondt å sette seg ned og jobbe på, 625 00:39:33,650 --> 00:39:35,650 så du ikke velger riktig prosjekt. 626 00:39:35,650 --> 00:39:37,730 Du ønsker å velge noe som du synes er interessante, 627 00:39:37,730 --> 00:39:41,150 du virkelig ønsker å se resultatet, er du begeistret når du får en ny idé om 628 00:39:41,150 --> 00:39:44,700 noe du kan gjøre - så det er alle slags prosjekter det at jeg er sikker på at 629 00:39:44,700 --> 00:39:47,290 du kan finne - alle har noe som ville virkelig intriger dem 630 00:39:47,290 --> 00:39:49,290 hvis de gjør en web-basert prosjekt. 631 00:39:49,290 --> 00:39:52,210 Jeg sier det igjen akkurat nå. 632 00:39:52,210 --> 00:39:54,520 Hvis prosjektet virker som en smerte, og du ikke ønsker å jobbe med det, 633 00:39:54,520 --> 00:39:57,260 velge et annet prosjekt. Velg noe som virkelig inspirerer deg. 634 00:39:57,260 --> 00:40:00,260 >> Ben nevnt dette begrepet køyring litt, og jeg ønsker å gå over den litt. 635 00:40:00,260 --> 00:40:08,250 Det er veldig viktig å jobbe i spruter hvor du få noe funksjonelt. 636 00:40:08,250 --> 00:40:13,420 Det kan være stor hvis du har denne planen for et nettsted som kommer til å gjøre A, B, og C, 637 00:40:13,420 --> 00:40:16,000 og til slutt vil det komme dit. 638 00:40:16,000 --> 00:40:18,600 Men du sitter fast i denne fasen hvor du jobber med det, og jobber med saken, 639 00:40:18,600 --> 00:40:23,330 men ingenting er å få gjort. Du har ikke noe å se og en konkret, funksjonelle ting. 640 00:40:23,330 --> 00:40:27,940 Hva du virkelig ønsker å gjøre så mye som det virker litt vondt noen ganger til 641 00:40:27,940 --> 00:40:32,300 jobbe med noe, og så liksom toppen av det hele, slik at det er minst på et stabilt, kjører 642 00:40:32,300 --> 00:40:34,910 versjonen, selv om den ikke har alle de funksjonene du ønsker. 643 00:40:34,910 --> 00:40:37,690 Og kanskje er det noen funksjoner som du virkelig ønsker å legge til, men du kan bare ikke 644 00:40:37,690 --> 00:40:41,830 fordi du ønsker å få dette området til et funksjonelt synspunkt. 645 00:40:41,830 --> 00:40:44,400 Og så du vil slags ha hele utviklingsprosessen ser sånn. 646 00:40:44,400 --> 00:40:47,810 Du ønsker å starte et sted funksjonell - eller egentlig starte med ingenting - 647 00:40:47,810 --> 00:40:49,890 men du vil få et sted svært enkel og funksjonell. 648 00:40:49,890 --> 00:40:54,940 Og så igjen, gjør et slags hopp og få et sted funksjonell igjen. 649 00:40:54,940 --> 00:40:59,190 Du vil sakte bygge opp, og det kan gå litt saktere enn det ellers ville ha gjort, 650 00:40:59,190 --> 00:41:03,000 men i det lange løp hvis du stadig fast i denne middelvei fase hvor du 651 00:41:03,000 --> 00:41:06,380 ikke egentlig har noe å jobbe, kan det være en virkelig stor frustrasjon 652 00:41:06,380 --> 00:41:09,970 å arbeide med prosjektet ditt fordi du er alltid så nær å få det til å fungere, 653 00:41:09,970 --> 00:41:12,130 og det har aldri faktisk jobber. 654 00:41:12,130 --> 00:41:14,810 Du ønsker å jobbe i disse funksjonelle spruter, 655 00:41:14,810 --> 00:41:17,950 og du også ønsker å gjøre noen refleksjoner etter hver enkelt. 656 00:41:17,950 --> 00:41:21,260 Med andre ord, når du er på et punkt hvor området arbeider nå - 657 00:41:21,260 --> 00:41:24,790 det har ikke alt du liker, men det gjør noen ting - 658 00:41:24,790 --> 00:41:28,870 du ønsker å tenke, ok, er dette stedet å nå målet om at jeg satt ut for å gjøre? 659 00:41:28,870 --> 00:41:33,410 Med andre ord, hvis området kommer til å gjøre X, er det jeg har jobbet i retning av X? 660 00:41:33,410 --> 00:41:36,450 Er alle de funksjoner som jeg ønsket det? 661 00:41:36,450 --> 00:41:39,340 Og dessuten er det som serverer den generelle formål som jeg vil? 662 00:41:39,340 --> 00:41:43,200 Hvis du synes at nettstedet ditt er i ferd med å bøye av i en annen retning 663 00:41:43,200 --> 00:41:47,330 eller kanskje ting bare slags er ikke trener, kan det være på tide å skifte gir litt. 664 00:41:47,330 --> 00:41:51,700 Med andre ord, er det verdt å vurdere - det er verdt å kaste ut ideer om nødvendig 665 00:41:51,700 --> 00:41:57,950 og vurderer jeg virkelig jobber mot det jeg ønsker å være. 666 00:41:57,950 --> 00:42:00,760 >> Jeg tror det er mitt neste punkt. Ikke vær redd for å forlate ideer. 667 00:42:00,760 --> 00:42:03,750 Bare fordi du har brukt mange timer arbeider på en funksjon 668 00:42:03,750 --> 00:42:07,890 og endelig fikk det til å fungere, men det er virkelig ikke går så bra - 669 00:42:07,890 --> 00:42:12,690 som det ikke er så nyttig eller brukere har problemer med å bruke den - den slags ting - 670 00:42:12,690 --> 00:42:15,300 ikke vær redd for å kaste den bort. 671 00:42:15,300 --> 00:42:17,650 Det suger at du har brukt mye tid på å jobbe med det, 672 00:42:17,650 --> 00:42:21,870 men til syvende og sist du ikke vil ha et nettsted som er slags satt sammen av disse brikkene som 673 00:42:21,870 --> 00:42:25,380 slags arbeid, men er ikke så godt servert. 674 00:42:25,380 --> 00:42:27,990 Også, ikke vær redd for å omfavne nye ideer. 675 00:42:27,990 --> 00:42:30,050 Hvis noen kommer og sier hei, det nettstedet ser veldig kult, men 676 00:42:30,050 --> 00:42:32,290 ville det ikke engang være flott om det også gjorde dette? 677 00:42:32,290 --> 00:42:36,220 Bare fordi det er noe som du ikke hadde tenkt og noe som ikke er i din 678 00:42:36,220 --> 00:42:37,900 specs, noe som du ikke har satt ut for å gjøre, 679 00:42:37,900 --> 00:42:40,860 ikke vær redd for å ta den på og deretter arbeide med det. 680 00:42:40,860 --> 00:42:43,680 Fordi ofte ideer som du kjører med i løpet av utviklingen 681 00:42:43,680 --> 00:42:47,630 ende opp som de virkelig kule funksjoner på nettsiden. 682 00:42:47,630 --> 00:42:49,630 >> Jeg har sagt dette før. Jeg sier det igjen. 683 00:42:49,630 --> 00:42:51,630 Testere er super, super nyttig. 684 00:42:51,630 --> 00:42:56,350 Prøv å få folk som aldri har sett stedet før å logge seg på og se hva som skjer 685 00:42:56,350 --> 00:42:59,080 fordi de kan ikke bare teste nytten av nettstedet og brukeropplevelsen, 686 00:42:59,080 --> 00:43:02,070 men de kan også teste funksjonaliteten på måter som du ikke kan. 687 00:43:02,070 --> 00:43:06,430 Hvis du gjør noen funksjon som gjør en bestemt ting 688 00:43:06,430 --> 00:43:11,620 og du vet at det kommer til å gjøre det samme riktig hver eneste gang, det er flott. 689 00:43:11,620 --> 00:43:16,610 Men det kan ofte være vanskelig å gjøre rede for hjørne tilfeller der en bruker kan 690 00:43:16,610 --> 00:43:19,500 skriv noe som du ikke var ventet - nettopp fordi du definerte 691 00:43:19,500 --> 00:43:21,500 funksjonene selv. 692 00:43:21,500 --> 00:43:23,730 Så, for å ha noen komme på som ikke har noen anelse om hvordan å bruke området 693 00:43:23,730 --> 00:43:26,840 og til å bare bryte det i hvilken måte de kan gjøre er veldig nyttig fordi du 694 00:43:26,840 --> 00:43:30,340 få en idé fra et helt annet perspektiv på hva på webområdet fungerer 695 00:43:30,340 --> 00:43:33,300 og hva som må repareres. 696 00:43:33,300 --> 00:43:37,070 >> Sist, kommer jeg til å snakke om noen generell god praksis, 697 00:43:37,070 --> 00:43:42,470 og du har sett mange av disse i CS50, men de er også veldig, veldig gjelde i et prosjekt innstilling. 698 00:43:42,470 --> 00:43:47,600 Den ene er kommentarer. Alltid kommentere koden din, spesielt hvis du arbeider på et stort team. 699 00:43:47,600 --> 00:43:51,230 Det kan være så irriterende å bare ha en gigantisk blokk med kode som noen har skrevet 700 00:43:51,230 --> 00:43:54,230 og kanskje det fungerer, kanskje ikke, men du har ingen anelse om hva den gjør, 701 00:43:54,230 --> 00:43:58,010 så du har ingen anelse om det er nyttig eller ikke, eller om det skal være der eller ikke, 702 00:43:58,010 --> 00:44:00,200 og hvis du jobber med noe annet det er også mulig at du jobber med 703 00:44:00,200 --> 00:44:06,590 det samme, så bare være veldig, veldig forsiktig med å være hensynsfull av jevnaldrende 704 00:44:06,590 --> 00:44:09,710 og skrive kode som er godt dokumentert. 705 00:44:09,710 --> 00:44:13,580 Du trenger ikke å gå så langt som å gjøre hele greia der liker hvis du øke 706 00:44:13,580 --> 00:44:16,620 en teller har en kommentar som sier, jeg legger en til denne disken. 707 00:44:16,620 --> 00:44:20,450 Det trenger ikke å være så detaljert, men for enhver funksjon som du noen gang å skrive 708 00:44:20,450 --> 00:44:23,160 du bør ha noen dokumentasjon på hva som fungerer akkurat gjør, 709 00:44:23,160 --> 00:44:25,140 hva dens innganger er, og hva det skal returnere. 710 00:44:25,140 --> 00:44:27,800 På den måten kan du bruke andre folks komponenter av nettstedet 711 00:44:27,800 --> 00:44:31,990 og du kan jobbe mot å bygge noe stort. 712 00:44:31,990 --> 00:44:34,100 >> En annen viktig ting er at du ønsker å gjøre regelmessige opprydding. 713 00:44:34,100 --> 00:44:40,490 Koden blir rotete. Ikke føl deg dårlig hvis koden din er bare helt uleselig og en gigantisk rot. 714 00:44:40,490 --> 00:44:42,770 Det skjer i webutvikling alltid. 715 00:44:42,770 --> 00:44:46,530 Du legger til nye funksjoner, fjerne gamle. Stuff kommer til å være der som ikke burde være. 716 00:44:46,530 --> 00:44:49,330 Det er greit, men du vil være sikker på å håndtere det regelmessig. 717 00:44:49,330 --> 00:44:53,430 Du ønsker ikke å la det bygge seg opp til et punkt der du bare ikke kan finne noe 718 00:44:53,430 --> 00:44:56,430 i koden din, og du har ingen anelse om hva noe betyr. 719 00:44:56,430 --> 00:44:58,430 Det er tilfelle med HTML. 720 00:44:58,430 --> 00:44:59,490 Noen ganger vil du ende opp med gjenstander som ikke inneholder noe, 721 00:44:59,490 --> 00:45:01,320 og at du ønsker å bli kvitt de. 722 00:45:01,320 --> 00:45:04,610 I CSS, kan du henvise til elementer som ikke er der lenger, 723 00:45:04,610 --> 00:45:06,340 slik at du ønsker å bli kvitt den koden. 724 00:45:06,340 --> 00:45:09,900 I Javascript, kan du ha fjernet noe fra HTML. 725 00:45:09,900 --> 00:45:13,150 Så du ønsker å være sikker på at du alltid rydde opp, noe som gjør ting ganske 726 00:45:13,150 --> 00:45:17,450 så mye som du kan på en jevnlig basis. 727 00:45:17,450 --> 00:45:21,060 >> En annen virkelig nyttig ting som jeg ikke tror er skissert veldig mye i CS50 728 00:45:21,060 --> 00:45:23,430 men det er verdt å komme inn er versjonskontroll. 729 00:45:23,430 --> 00:45:27,180 Ideen om versjonskontroll er når du i utgangspunktet holde styr på all den fremgang 730 00:45:27,180 --> 00:45:30,820 du har gjort mot nettstedet ditt, og hvis på noe punkt du skjønner, oh, dette var i arbeid 731 00:45:30,820 --> 00:45:35,220 en stund siden, men det virker ikke noe mer, kan du gå tilbake til tidligere versjoner 732 00:45:35,220 --> 00:45:37,720 og se hva som har endret seg siden da, og den slags ting. 733 00:45:37,720 --> 00:45:41,670 Den primære måten å gjøre det på er med Git, og Git er hele denne type system som 734 00:45:41,670 --> 00:45:46,390 Jeg tror Tommy MacWilliam ga et seminar om i fjor. 735 00:45:46,390 --> 00:45:51,520 Hvis du går inn i CS50 seminarer for 2011, kan du se hans seminar om det. 736 00:45:51,520 --> 00:45:57,070 Ideen om Git er utgangspunktet at med jevne mellomrom du gjør disse forpliktelsene 737 00:45:57,070 --> 00:46:01,430 som er måter å si det området er i en ganske stabil versjon akkurat nå så 738 00:46:01,430 --> 00:46:05,910 Jeg emballasje det opp og sende det bort til en server, og så kan du gå til denne serveren 739 00:46:05,910 --> 00:46:07,910 og se på alle tidligere versjoner av koden din og se hvordan det er kommet 740 00:46:07,910 --> 00:46:12,210 og all den slags gode ting. 741 00:46:12,210 --> 00:46:14,210 Så, det er i utgangspunktet det. 742 00:46:14,210 --> 00:46:17,870 Såvidt webutvikling, er vi glade for å holde rundt og svare på eventuelle 743 00:46:17,870 --> 00:46:20,570 spørsmål når det gjelder vår presentasjon. 744 00:46:20,570 --> 00:46:22,900 Det var det. Thanks. >> [Ben] Thanks. 745 00:46:22,900 --> 00:46:28,480 [Applaus] 746 00:46:28,480 --> 00:46:30,950 >> [Billy] Staff, er det noen som har noen spørsmål om ting som vi har dekket 747 00:46:30,950 --> 00:46:33,950 eller ting som vi ikke har dekket at de håpet vi ville dekke? 748 00:46:33,950 --> 00:46:35,950 Vi vil gjerne svare på dem. Anyone? 749 00:46:35,950 --> 00:46:50,360 [Publikummer] Hva er fordeler og ulemper med å bruke Ruby eller Python? 750 00:46:50,360 --> 00:46:58,660 [Ben] Spørsmålet var, hva er fordeler og ulemper med å bruke Ruby eller Python 751 00:46:58,660 --> 00:46:59,900 i stedet for som PHP. 752 00:46:59,900 --> 00:47:11,340 Proffene er at Ruby og Python er mye bedre språk enn PHP. 753 00:47:11,340 --> 00:47:14,920 I hvert fall i min mening, og jeg tror på en rekke andre folks meninger også. 754 00:47:14,920 --> 00:47:20,990 De ble laget mer for å gjøre komplekse ting, 755 00:47:20,990 --> 00:47:25,380 og mindre for ronket sammen nettsidene virkelig raskt med 756 00:47:25,380 --> 00:47:28,400 en liten bit av dynamisk innhold. 757 00:47:28,400 --> 00:47:35,180 Ulempene er at det er en liten bit av - det er mer av en læringskurve 758 00:47:35,180 --> 00:47:37,220 å få dem satt opp. 759 00:47:37,220 --> 00:47:41,010 Det er, som i PHP, kan du bare ha en HTML-fil, og du skriver mindre enn, 760 00:47:41,010 --> 00:47:43,060 spørsmålstegn, og deretter du skrive noen kode, og deretter skriver du spørsmålstegn, 761 00:47:43,060 --> 00:47:45,700 større enn, og så er du ferdig. 762 00:47:45,700 --> 00:47:50,300 I andre språk som Ruby eller Python, 763 00:47:50,300 --> 00:47:56,810 du må gå gjennom en litt mer arbeid for å få det første stedet kjører. 764 00:47:56,810 --> 00:48:02,730 Det er også - i hvert fall brukt det til å være tilfelle - at det er mer dokumentasjon 765 00:48:02,730 --> 00:48:05,480 tilgjengelig for PHP bare fordi det er flere personer som bruker det. 766 00:48:05,480 --> 00:48:09,370 Jeg tror ikke det er så mye av et problem lenger. 767 00:48:09,370 --> 00:48:12,520 Det er sikkert veldig god dokumentasjon for ting som Ruby on Rails 768 00:48:12,520 --> 00:48:16,080 eller Django for Python er tilsvarende. 769 00:48:16,080 --> 00:48:25,910 PHP er den som alle har vært brukt i årevis, og du vet hvordan det fungerer. 770 00:48:25,910 --> 00:48:28,460 Ruby og Python er litt mindre moden. 771 00:48:28,460 --> 00:48:33,130 >> [Publikummer] Hvis du skulle velge mellom en av dem til å lære eller plukke opp, 772 00:48:33,130 --> 00:48:36,130 som ville du foretrekke? 773 00:48:36,130 --> 00:48:38,870 Ærlig talt, jeg tror det avhenger av personen. 774 00:48:38,870 --> 00:48:45,450 Jeg beklager. Spørsmålet var hvilken ville du velge for noen til å lære? 775 00:48:45,450 --> 00:48:50,230 Jeg finner Python den fineste personlig. 776 00:48:50,230 --> 00:48:55,360 Det er mange mennesker som - Jeg gjorde mitt første web dev prosjektet i Python og Django. 777 00:48:55,360 --> 00:49:00,300 Det er mange mennesker som liker Ruby on Rails også. 778 00:49:00,300 --> 00:49:02,650 Trolig flere som vet Ruby on Rails. 779 00:49:02,650 --> 00:49:05,270 Ærlig talt, ville jeg bare gå med hva folk rundt deg vet 780 00:49:05,270 --> 00:49:09,680 slik at du har folk til å stille spørsmål. 781 00:49:19,640 --> 00:49:24,170 >> Spørsmålet var - på delte servere er det litt vanskelig å jobbe med Python? 782 00:49:24,170 --> 00:49:26,170 Det avhenger av din hosting. 783 00:49:26,170 --> 00:49:29,400 Det finnes en rekke web-verter som vil legge Python ting. 784 00:49:29,400 --> 00:49:31,400 WebFaction gjør det, ikke sant? 785 00:49:31,400 --> 00:49:34,400 WebFaction er en som Billy og jeg har brukt for noen prosjekter. 786 00:49:34,400 --> 00:49:37,750 De er virkelig flott. De støtter de fleste språk. 787 00:49:37,750 --> 00:49:40,020 Men det er sant at PHP er mye mer utbredt støtte. 788 00:49:40,020 --> 00:49:45,210 Så, er hvis du sitter fast på et webhotell som bare gjør PHP som en god grunn til å bruke PHP. 789 00:49:45,210 --> 00:49:56,010 >> [Publikummer] Jeg kom akkurat inn i å lære hvordan å spørre noen databaser, 790 00:49:56,010 --> 00:50:00,680 og jeg vet at min SQL er over alt, men jeg nylig fikk utsatt til - 791 00:50:00,680 --> 00:50:04,470 og du pekte den ut. Du ser JSON og utvid databaser. 792 00:50:04,470 --> 00:50:14,580 My SQL er fortsatt over alt. Hvordan ser du på at det skjer? 793 00:50:14,580 --> 00:50:21,330 Er det kommer til å være en økende tendens til mer utvid (hørbar)? 794 00:50:21,330 --> 00:50:30,100 Spørsmålet var - Jeg tror det kommer til å være en trend mot ikke-SQL-databaser. 795 00:50:30,100 --> 00:50:33,850 For eksempel, som MongoDB. Jeg tror det er definitivt sant. 796 00:50:33,850 --> 00:50:38,730 Mitt råd var mest mySQL-relatert her bare fordi mySQL er 797 00:50:38,730 --> 00:50:40,950 industristandard. 798 00:50:40,950 --> 00:50:45,950 Personlig, jeg foretrekker mye databaser som ikke har schemos som MongoDB 799 00:50:45,950 --> 00:50:49,520 der du ikke har spørsmålet om, oh, jeg trenger å legge til en annen kolonne. 800 00:50:49,520 --> 00:50:51,600 Ve meg, som hva gjør jeg? 801 00:50:51,600 --> 00:50:55,840 Det er veldig vanskelig å gjøre det på MySQL, men når du har noe som Mongo 802 00:50:55,840 --> 00:50:57,840 det er mye hyggeligere. 803 00:50:57,840 --> 00:51:03,780 Den andre fine ting om Mongo er at postene er faktisk Javascript objekter. 804 00:51:03,780 --> 00:51:10,110 Det er ingen form for konvertering trinnet der du trenger for å ta disse database rader 805 00:51:10,110 --> 00:51:13,140 og gjøre dem om til en Javascript-objekt og deretter sende dem over ledningen. 806 00:51:13,140 --> 00:51:20,290 Jeg tror sånne ting kommer til å bli veldig, veldig nyttig for rask webutvikling i fremtiden. 807 00:51:20,290 --> 00:51:23,060 >> [Billy] Noe jeg ville legge til noe som er bare et generelt poeng er at 808 00:51:23,060 --> 00:51:26,580 føler ikke at du burde ha lært alle språkene vi har diskutert 809 00:51:26,580 --> 00:51:28,580 fra vår seminar. 810 00:51:28,580 --> 00:51:30,560 Tydeligvis poenget er å gi deg en idé om hva som er der ute, 811 00:51:30,560 --> 00:51:33,450 og hvis du er fascinert av noen av de tingene vi har nevnt kan du google dem 812 00:51:33,450 --> 00:51:35,830 og les deg opp på dem. 813 00:51:35,830 --> 00:51:38,750 Og som jeg nevnte, er det noen seminarer som omhandler nettopp disse tingene. 814 00:51:38,750 --> 00:51:41,660 Det er enda flere seminarer som jeg ikke har nevnt det trolig komme inn 815 00:51:41,660 --> 00:51:43,660 dette ting også. 816 00:51:43,660 --> 00:51:46,610 Tanken er at hvis du ønsker å arbeide med noe, her er verktøyene til din disposisjon. 817 00:51:46,610 --> 00:51:51,630 Ikke føle seg overveldet hvis du ikke er helt sikker på hva disse verktøyene gjør nøyaktig, 818 00:51:51,630 --> 00:51:54,830 men vet at de er der ute, og at du kan gjøre utstrakte bruken av dem 819 00:51:54,830 --> 00:51:56,830 av Google. 820 00:51:56,830 --> 00:51:59,960 >> [Publikummer] Hva slags ting du trenger å gjøre for å være sikker på ditt nettsted 821 00:51:59,960 --> 00:52:02,530 ser bra ut på mobile enheter? 822 00:52:02,530 --> 00:52:05,590 [Billy] Mobile enheter er litt vanskelig. 823 00:52:05,590 --> 00:52:07,590 Det er to måter du kan nærme seg det. 824 00:52:07,590 --> 00:52:11,500 Den første måten er at du faktisk har et mobilnettsted. 825 00:52:11,500 --> 00:52:14,660 Med andre ord, du utfører noen form for påvisning i begynnelsen 826 00:52:14,660 --> 00:52:18,830 når nettleseren kommer med forespørselen til din nettside som enten sier 827 00:52:18,830 --> 00:52:25,240 returnere denne visningen - som blir utsikten for stasjonære eller bærbare nettlesere - 828 00:52:25,240 --> 00:52:27,710 og denne annen visning for mobile enheter. 829 00:52:27,710 --> 00:52:33,090 Det er et sted hvor utsikten er virkelig fint i at du kan ganske mye å bytte 830 00:52:33,090 --> 00:52:37,580 to og har et grensesnitt som fungerer veldig fint på mobile enheter 831 00:52:37,580 --> 00:52:40,770 og har en helt annen en som fungerer fint på leser enheter. 832 00:52:40,770 --> 00:52:43,770 Problemet med det er at det tar lang tid fordi det betyr koding 833 00:52:43,770 --> 00:52:47,060 en helt annen grensesnitt. 834 00:52:47,060 --> 00:52:49,720 Den andre måten du kan gjøre det er - 835 00:52:49,720 --> 00:52:55,250 Mange moderne telefoner vil vise nettsider og prøver å gjengi dem som en nettleser ville, 836 00:52:55,250 --> 00:52:57,680 og de gjør sitt beste. 837 00:52:57,680 --> 00:53:04,340 Du kan slags prøve å holde lyset på mengden av jQuery Java du bruker 838 00:53:04,340 --> 00:53:07,360 som har en tendens til å være der ting kan gå galt en liten bit. 839 00:53:07,360 --> 00:53:13,430 Dette er liksom den måten at du bør bruke hvis du ikke har så mye tid. 840 00:53:13,430 --> 00:53:18,540 Hvis du har tid til å jobbe på en mobil grensesnitt, det er tydeligvis det beste alternativet. 841 00:53:18,540 --> 00:53:23,320 >> Jeg tror generelt for CS50 prosjekter, du kommer til å ønske å velge det ene eller det andre. 842 00:53:23,320 --> 00:53:27,990 Med andre ord, du vil lage en mobil app, eller du ønsker å lage en stasjonær nettside. 843 00:53:27,990 --> 00:53:32,200 Og den slags avgjør hvor du går med det. 844 00:53:32,200 --> 00:53:35,360 Men hvis du ønsker å utvide den ut senere, trolig det beste alternativet er 845 00:53:35,360 --> 00:53:37,360 å gjøre et annet grensesnitt for den andre. 846 00:53:51,650 --> 00:53:56,340 Jeg har litt erfaring i å utvikle WordPress-baserte nettsteder. 847 00:53:56,340 --> 00:53:58,670 Jeg arrangerte en personlig nettside på WordPress for en stund. 848 00:53:58,670 --> 00:54:02,310 Slike rammer kan være fint bare som helt grunnleggende ting. 849 00:54:02,310 --> 00:54:07,050 Ofte vil du bare kjøre inn i en masse å skreddersy problemer skjønt. 850 00:54:07,050 --> 00:54:10,940 Det er lurt å ha se noe på en bestemt måte, eller være en bestemt måte 851 00:54:10,940 --> 00:54:14,510 og du bare ikke kan fordi det er hard-telegrafert inn i systemet som 852 00:54:14,510 --> 00:54:17,480 Dette er hvordan du trenger å gjøre ting som kan være litt av et problem. 853 00:54:17,480 --> 00:54:22,020 Siden da har jeg slags vært mer tilbøyelig til å jobbe med nettsteder fra grunnen av. 854 00:54:22,020 --> 00:54:26,840 For ting som blogg databaser og den slags ting det er egentlig ikke så vanskelig å bygge et rammeverk. 855 00:54:26,840 --> 00:54:29,970 Hvis du virkelig strukket for tiden, kan du selvfølgelig bruke noe sånt som WordPress 856 00:54:29,970 --> 00:54:33,120 eller den slags ting for en blogg. 857 00:54:33,120 --> 00:54:38,790 Den slags ting som blogger butikken og gjøre er egentlig ikke vanskelig nok til at 858 00:54:38,790 --> 00:54:41,500 hvis du kjører inn i noen av slike ting, er du sannsynligvis best bare å 859 00:54:41,500 --> 00:54:43,500 lage en in-house-versjon. 860 00:54:43,500 --> 00:54:48,350 >> Jeg tror det handler om det, så takk igjen for at du kom. 861 00:54:48,350 --> 00:54:51,960 Vi likte å snakke med dere, og håper at du har lært noen ting. 862 00:54:51,960 --> 00:54:55,350 [Ben] Vi er glade for å snakke - vi må gå, men vi er glade for å snakke mer utenfor 863 00:54:55,350 --> 00:55:01,650 hvis du har et annet spørsmål. Takk igjen. [Applaus] 864 00:55:03,750 --> 00:55:06,000 [CS50.TV]