1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:10,960 [MUSIC SPILLE] 3 00:00:10,960 --> 00:00:12,960 ROGER ZURAWICKI: Hei, mitt navn er Roger Zurawicki, 4 00:00:12,960 --> 00:00:16,410 og jeg vil dekke den CS50 Meteor seminaret. 5 00:00:16,410 --> 00:00:21,520 Meteor er et nytt rammeverk viet til ny form for web, 6 00:00:21,520 --> 00:00:25,220 ikke PHP gjøre forespørsler frem og tilbake slag 7 00:00:25,220 --> 00:00:29,070 av web vi så i PHPP sett, men jo mer dynamisk Java 8 00:00:29,070 --> 00:00:31,370 deler av nettet. 9 00:00:31,370 --> 00:00:36,260 Ting Meteor kan gjøre inkluderer Live-oppdatering 10 00:00:36,260 --> 00:00:42,380 og kommuniserer umiddelbart mellom brukere av samme nettsted. 11 00:00:42,380 --> 00:00:46,420 >> For dette seminaret har vi kode vert på min GitHub. 12 00:00:46,420 --> 00:00:49,690 Du kan gå til denne nettadressen og laste den ned. 13 00:00:49,690 --> 00:00:53,085 Hvis du vet hvordan du skal bruke Git, du kan klone depotet. 14 00:00:53,085 --> 00:00:55,460 Hvis du ikke vet hvordan du bruker Git eller har ikke brukt GitHub, 15 00:00:55,460 --> 00:00:57,030 det er helt greit. 16 00:00:57,030 --> 00:01:00,480 Jeg vil vise deg veldig raskt hvordan vi kan gå til GitHub, 17 00:01:00,480 --> 00:01:03,604 og det er et alternativ til laste ned en zip rett der. 18 00:01:03,604 --> 00:01:06,770 Når du laster ned denne katalogen, du kan komme i gang å spille med vår kode. 19 00:01:06,770 --> 00:01:10,200 20 00:01:10,200 --> 00:01:13,190 >> Mer informasjon om Meteor kan bli funnet på meteor.com. 21 00:01:13,190 --> 00:01:16,580 I Seminar mappe, jeg faktisk har noen Meteor prosjekter vi kan bruke. 22 00:01:16,580 --> 00:01:20,380 23 00:01:20,380 --> 00:01:26,400 En av mappene vi har i vår seminar prosjektet er todos app. 24 00:01:26,400 --> 00:01:28,780 Så hvis jeg går inn i det jeg, har Meteor installert. 25 00:01:28,780 --> 00:01:35,690 Så å kjøre den, jeg trenger bare å skrive Meteor, og Meteor vil installere. 26 00:01:35,690 --> 00:01:38,310 Som du kan se, har vi å sørge for at vi installerte Meteor. 27 00:01:38,310 --> 00:01:40,562 Så jeg skal bare kjøre den en gang til 28 00:01:40,562 --> 00:01:42,520 å sørge for at Meteor er riktig installert. 29 00:01:42,520 --> 00:01:46,370 30 00:01:46,370 --> 00:01:48,450 >> Mens jeg har Meteor installere, kan jeg vise deg 31 00:01:48,450 --> 00:01:53,760 noen demonstrasjoner av Meteor sider går live akkurat nå på internett. 32 00:01:53,760 --> 00:01:57,990 Jeg har en demo av vår app. 33 00:01:57,990 --> 00:02:00,740 Du kan få tilgang til det på følgende nettadresse. 34 00:02:00,740 --> 00:02:06,350 Dette er for å gjøre app som vi har i vårt seminar katalogen. 35 00:02:06,350 --> 00:02:09,940 URL for dette er rozu-rabbit.meteor.com. 36 00:02:09,940 --> 00:02:14,782 Du vil se at Meteor vil faktisk vert for Meteor prosjekter for gratis. 37 00:02:14,782 --> 00:02:17,490 Og på slutten av seminaret, vil du være i stand til å gjøre dette også. 38 00:02:17,490 --> 00:02:20,550 39 00:02:20,550 --> 00:02:22,160 >> Dette er en gjøremålsliste app. 40 00:02:22,160 --> 00:02:27,740 Og du kan logge på, skape kontoer og legge til oppgaver. 41 00:02:27,740 --> 00:02:30,020 Du kan opprette en konto som så. 42 00:02:30,020 --> 00:02:33,050 43 00:02:33,050 --> 00:02:35,850 Og nå, når du har en konto, kan du legge til oppgaver. 44 00:02:35,850 --> 00:02:42,780 For eksempel, en av de oppgavene jeg kanskje trenger å gå plukke opp min vaskeri. 45 00:02:42,780 --> 00:02:45,160 Og hvis du er på dette site online, vil du 46 00:02:45,160 --> 00:02:49,790 faktisk se denne oppgaven på datamaskinen i sanntid. 47 00:02:49,790 --> 00:02:53,760 >> Jeg kan vise deg en rask demo av dette ved å åpne Rozu-kanin 48 00:02:53,760 --> 00:02:56,700 i en annen fane med samme nettadresse. 49 00:02:56,700 --> 00:03:00,360 Og vi ser at de samme dataene kommer opp. 50 00:03:00,360 --> 00:03:02,240 Vi kan også kjøre den i en annen nettleser. 51 00:03:02,240 --> 00:03:03,420 Si jeg kjører det i Safari. 52 00:03:03,420 --> 00:03:04,720 På den måten vi er ikke logget inn. 53 00:03:04,720 --> 00:03:07,750 54 00:03:07,750 --> 00:03:11,060 Så vi har samme Meteor app, og når den laster, 55 00:03:11,060 --> 00:03:13,910 vi vil se den samme data vi gjorde i den første. 56 00:03:13,910 --> 00:03:16,710 Som du kan se, jeg er ikke logget inn her. 57 00:03:16,710 --> 00:03:20,000 Og når publikum sjekker data, den oppdaterer på alle nettlesere 58 00:03:20,000 --> 00:03:20,910 samtidig. 59 00:03:20,910 --> 00:03:23,740 Dette er en av de virkelig kule funksjoner om Meteor. 60 00:03:23,740 --> 00:03:27,700 Med nesten ingen jobb, du har en live oppdatering app 61 00:03:27,700 --> 00:03:31,240 at endringer på alle enhetene dine på en gang. 62 00:03:31,240 --> 00:03:36,690 >> Hvis jeg sjekke boksen her i min å gjøre listen, vil vi ha, 63 00:03:36,690 --> 00:03:41,230 i min andre Chrome nettleseren, elementet sjekket av. 64 00:03:41,230 --> 00:03:42,605 Og dette skjer umiddelbart. 65 00:03:42,605 --> 00:03:46,340 66 00:03:46,340 --> 00:03:47,280 OK. 67 00:03:47,280 --> 00:03:52,730 Så det ser ut som Meteor installasjonen er klar nå. 68 00:03:52,730 --> 00:03:57,000 Så nå la oss gå tilbake til den todos app og kjøre dette lokalt. 69 00:03:57,000 --> 00:04:01,599 >> Hvis du har en Meteor prosjekt, kan du bare kjøre den med kommandoen Meteor. 70 00:04:01,599 --> 00:04:03,640 Når du gjør dette, Meteor vil gjøre noen forberedelser 71 00:04:03,640 --> 00:04:06,120 å sørge for at alle koden er i sjakk. 72 00:04:06,120 --> 00:04:12,440 Og så vil det fortelle deg at Prosjektet er klar til å bli servert. 73 00:04:12,440 --> 00:04:17,750 Du må kanskje tillate din brannmur, hvis datamaskinen din blokkerer deg. 74 00:04:17,750 --> 00:04:22,440 >> Så hva Meteor er å fortelle meg akkurat nå er at på dette nettstedet 75 00:04:22,440 --> 00:04:26,100 lokale til datamaskinen min, kan jeg se hva dette Meteor prosjektet er. 76 00:04:26,100 --> 00:04:29,290 Legg merke til at akkurat nå, er min app ikke tilgjengelig for internett. 77 00:04:29,290 --> 00:04:35,170 Vi dekker hvordan å ta med Meteor app til et levende område litt senere. 78 00:04:35,170 --> 00:04:40,510 Så jeg bare kommer til å kopiere dette URL nå og gå inn i Google Chrome. 79 00:04:40,510 --> 00:04:42,600 >> Og dette er å gjøre liste fra eksempelet. 80 00:04:42,600 --> 00:04:46,080 Du kan se de implementert noen flere funksjoner her. 81 00:04:46,080 --> 00:04:49,210 Vi har forskjellige kategorier, vi har de samme kontofunksjoner, 82 00:04:49,210 --> 00:04:52,141 og vi kan legge til nye lister. 83 00:04:52,141 --> 00:04:54,140 Nå, en av de virkelig kul funksjon om Meteor 84 00:04:54,140 --> 00:04:57,450 er at ikke bare kan denne jobbe med nettleseren, 85 00:04:57,450 --> 00:05:00,030 men du kan også opprette innfødt iPhone og Android 86 00:05:00,030 --> 00:05:02,990 apps gjennom et verktøy kalt PhoneGap. 87 00:05:02,990 --> 00:05:06,740 >> Så noen prosjekter vil komme pre-konfigurert for å kjøre 88 00:05:06,740 --> 00:05:08,700 på iOS, som dette todos app. 89 00:05:08,700 --> 00:05:14,780 Så alt jeg trenger å gjøre for å kjøre den i iOS er å skrive Meteor, løpe, og deretter iOS. 90 00:05:14,780 --> 00:05:17,540 Og når jeg gjør det, Meteor vil forberede opplegget igjen. 91 00:05:17,540 --> 00:05:21,670 Og så, når den er klar, det vil laste iOS simulator på min kommando. 92 00:05:21,670 --> 00:05:24,745 Merk Du kan bare kjøre iOS apps hvis du har en Mac datamaskin. 93 00:05:24,745 --> 00:05:27,650 94 00:05:27,650 --> 00:05:30,730 Du kan kjøre applikasjoner på Android på alle plattformer. 95 00:05:30,730 --> 00:05:34,070 96 00:05:34,070 --> 00:05:38,290 >> Så nå kan du se at min iPhone Simulatoren kom opp på skjermen min. 97 00:05:38,290 --> 00:05:40,370 Og i løpet av et øyeblikk, det vil laste med app. 98 00:05:40,370 --> 00:05:46,070 99 00:05:46,070 --> 00:05:48,490 Hvis vi gjør det bare litt mindre å passe på skjermen, 100 00:05:48,490 --> 00:05:50,780 vi ser vi har vår iPhone app. 101 00:05:50,780 --> 00:05:53,220 Og bare så vi ikke bli forvirret, la oss gjøre 102 00:05:53,220 --> 00:05:59,790 sikker på at vi er på samme nettside, den lokale verten 3000. 103 00:05:59,790 --> 00:06:03,490 >> Så akkurat her er et eksempel av Meteor app jeg har, 104 00:06:03,490 --> 00:06:08,770 den todos app, kjører både på en telefon og på en nettleser. 105 00:06:08,770 --> 00:06:10,770 Og når jeg endre ting i nettleseren, 106 00:06:10,770 --> 00:06:12,675 det går umiddelbart til telefonen. 107 00:06:12,675 --> 00:06:16,500 Og jeg kan slette noe på telefonen, og den endres i nettleseren. 108 00:06:16,500 --> 00:06:21,050 >> Nå, normalt å skape innfødte telefon app for iOS eller Android, 109 00:06:21,050 --> 00:06:26,090 du trenger å vite enten Java eller Objektive C. Den teknologiMeteor bruksområder 110 00:06:26,090 --> 00:06:29,240 å tillate Javascript for å kjøre som din app kalles PhoneGap. 111 00:06:29,240 --> 00:06:31,320 Hva din app hovedsak er er en nettleser. 112 00:06:31,320 --> 00:06:34,500 Og Meteor håndterer alt de vanskelige delene som er involvert 113 00:06:34,500 --> 00:06:39,820 for å bringe den nettleseren for å iPhone eller Android-enheten. 114 00:06:39,820 --> 00:06:42,210 Du kan se at den Brukergrensesnittet er glatt, 115 00:06:42,210 --> 00:06:45,290 og det ser ut og føles veldig mye som en innfødt app. 116 00:06:45,290 --> 00:06:48,620 Legg merke til at hvis jeg går til hjemmet skjermen nå, får jeg også et ikon. 117 00:06:48,620 --> 00:06:50,880 Dette er ikke en nettside som du ville finne i Safari. 118 00:06:50,880 --> 00:06:51,860 Dette er en egen app. 119 00:06:51,860 --> 00:06:54,130 Du kan installere og slette det hvis du vil. 120 00:06:54,130 --> 00:06:59,500 121 00:06:59,500 --> 00:07:04,436 >> Vi kan kort vise deg hva koden for denne typen todos app ser ut. 122 00:07:04,436 --> 00:07:08,260 Hvis du ser i todos mappe, du vil se det er mange mapper. 123 00:07:08,260 --> 00:07:11,440 Men i løpet av seminaret, vil vi 124 00:07:11,440 --> 00:07:14,780 forstå hva hver mappe som brukes til. 125 00:07:14,780 --> 00:07:17,830 La oss gå inn i terminalen så vi kan se filene litt bedre. 126 00:07:17,830 --> 00:07:20,410 >> Jeg kommer til å trykke på Control C for å stoppe server, 127 00:07:20,410 --> 00:07:22,770 og nå er jeg tilbake i todos app. 128 00:07:22,770 --> 00:07:26,660 Jeg har ulike mapper her, som klienten mappe, mappen server. 129 00:07:26,660 --> 00:07:30,500 Og disse mappene bare bety at alt i klientmappen 130 00:07:30,500 --> 00:07:32,630 blir henrettet på din nettleser. 131 00:07:32,630 --> 00:07:35,530 Alt i en server mappe blir utført på en server. 132 00:07:35,530 --> 00:07:38,100 >> Hva jeg ønsker å peke ut er at det vi hadde 133 00:07:38,100 --> 00:07:42,140 da vi hadde vår telefon løping og vår nettleser, disse var klienter. 134 00:07:42,140 --> 00:07:45,730 Men hva som kjører i en terminal, er at serveren. 135 00:07:45,730 --> 00:07:48,710 Vi har andre mapper, som llb, som er bibliotek kode, 136 00:07:48,710 --> 00:07:51,050 som hjelperen funksjoner, som du kan 137 00:07:51,050 --> 00:07:53,710 bruk på både klienten og serveren. 138 00:07:53,710 --> 00:07:55,820 Og da har du en offentlig mappe og ressurser 139 00:07:55,820 --> 00:07:59,310 mappe nødvendig for å få dine bilder og annet CSS lastet. 140 00:07:59,310 --> 00:08:02,630 141 00:08:02,630 --> 00:08:09,360 >> Hvis du har Meteor installert, vil vi fortsette med opplæringen for Meteor. 142 00:08:09,360 --> 00:08:12,790 Du kan gå til denne nettadressen, meteor.com/install, 143 00:08:12,790 --> 00:08:17,990 å få kommandolinje som jeg viste deg som installerer Meteor. 144 00:08:17,990 --> 00:08:20,240 Vi vil gå gjennom den første noen skritt for å få en bedre 145 00:08:20,240 --> 00:08:22,760 føler om hvordan du installerer Meteor. 146 00:08:22,760 --> 00:08:28,000 >> Men først, jeg tror det er viktig at vi vurdere en liten bit av Javascript. 147 00:08:28,000 --> 00:08:32,360 For å vise deg noen eksempler på hvordan vår C kunnskap kan oversettes 148 00:08:32,360 --> 00:08:34,950 til Javascript, har jeg skapte noen eksempler. 149 00:08:34,950 --> 00:08:36,940 De er i js katalogen. 150 00:08:36,940 --> 00:08:41,750 Så hvis på seminarene mappen du ser, er det en mappe som heter js. 151 00:08:41,750 --> 00:08:44,540 Og her har vi noen eksempler. 152 00:08:44,540 --> 00:08:50,120 >> La oss åpne opp først eksempel og se svært raskt. 153 00:08:50,120 --> 00:08:53,980 Det vi ser er din standard kommando verden hallo. 154 00:08:53,980 --> 00:08:56,520 Du legger merke til i C som du har ganske mange linjer. 155 00:08:56,520 --> 00:09:00,490 Og som CS50 studenter vet, vi trenger en hovedfunksjon, 156 00:09:00,490 --> 00:09:05,730 og vi har til å omfatte standard I / O-bibliotek for å ringe printf. 157 00:09:05,730 --> 00:09:09,320 >> La oss se på hvordan Javascript sammen. 158 00:09:09,320 --> 00:09:11,560 Jeg kommer til å åpne ex1.js. 159 00:09:11,560 --> 00:09:14,650 Kommentert ut er hva det C-kode vil se ut, 160 00:09:14,650 --> 00:09:17,550 og linjen under er alt du trenger for å kjøre i Node. 161 00:09:17,550 --> 00:09:20,452 Du trenger ikke en hovedfunksjon, du trenger ikke å inkludere noen filer, 162 00:09:20,452 --> 00:09:21,660 og du trenger ikke å gå tilbake. 163 00:09:21,660 --> 00:09:23,810 Du bare ringe console.log. 164 00:09:23,810 --> 00:09:26,370 Dette er det samme som din printf. 165 00:09:26,370 --> 00:09:29,310 >> Og det tar den samme argumenter printf ville. 166 00:09:29,310 --> 00:09:33,870 Og for å kjøre den, stedet for å kjøre gjøre ex1, 167 00:09:33,870 --> 00:09:38,930 du ville bare ringe Node ex1.js. 168 00:09:38,930 --> 00:09:41,830 Du skriver Node og deretter filen, og det blir kjørt. 169 00:09:41,830 --> 00:09:43,580 Det blir ikke utarbeidet. 170 00:09:43,580 --> 00:09:45,970 Javascript er et tolket språk. 171 00:09:45,970 --> 00:09:49,150 Slik at det ikke trenger å være kompilert før det kjører. 172 00:09:49,150 --> 00:09:53,450 Hvis jeg ønsket å kjøre ex1.c, Jeg må gjøre det først, 173 00:09:53,450 --> 00:09:59,160 og da kan jeg kjøre den kjør for å få samme effekt. 174 00:09:59,160 --> 00:10:02,460 >> La oss raskt dekke noen andre Javascript konsepter. 175 00:10:02,460 --> 00:10:04,490 La oss se på eksempel to. 176 00:10:04,490 --> 00:10:14,690 I ex2.js, i ex2.c, kan vi se at vi har noen kode. 177 00:10:14,690 --> 00:10:16,550 La meg raskt gå til en bedre teksteditor 178 00:10:16,550 --> 00:10:18,400 som vil vise disse nye linjer litt bedre. 179 00:10:18,400 --> 00:10:21,760 180 00:10:21,760 --> 00:10:22,380 OK. 181 00:10:22,380 --> 00:10:24,190 Her har vi eksempel 2.c. 182 00:10:24,190 --> 00:10:27,360 Her har vi forskjellige typer at vi skal skrive ut. 183 00:10:27,360 --> 00:10:30,880 Og som vi vet, tar printf forskjellige prosent argumenter 184 00:10:30,880 --> 00:10:34,050 tilgang til ulike deler av data. 185 00:10:34,050 --> 00:10:36,840 Hvis vi ønsker å skrive ut en streng, vi kaller% s. 186 00:10:36,840 --> 00:10:40,390 Hvis vi ønsker å kalle en flytende punkt nummer, vi kalte% f. 187 00:10:40,390 --> 00:10:45,810 Og det er ingen enkel måte å kalle en Boolean etter sin sanne eller usanne verdi. 188 00:10:45,810 --> 00:10:50,760 Men hvis du bruker% d, kan du få 0 eller 1 for falsk og ekte. 189 00:10:50,760 --> 00:10:53,270 >> Javascript er litt hyggeligere for oss. 190 00:10:53,270 --> 00:10:57,740 I Javascript, la oss se på de få forskjellene vi har i denne filen. 191 00:10:57,740 --> 00:11:05,790 Først legger du merke til at i C må vi initial hver variabel med en type. 192 00:11:05,790 --> 00:11:06,940 S er en char stjerne. 193 00:11:06,940 --> 00:11:08,930 Det er en streng, og det ikke kan være en hvilken som helst annen type. 194 00:11:08,930 --> 00:11:10,450 N er en float. 195 00:11:10,450 --> 00:11:11,780 B er en Bool. 196 00:11:11,780 --> 00:11:14,220 >> Men i Javascript, det er dynamiske typer. 197 00:11:14,220 --> 00:11:16,400 Det betyr at du ikke må fortelle Java 198 00:11:16,400 --> 00:11:17,860 hvilke typer variabler vil bli. 199 00:11:17,860 --> 00:11:22,730 Du bare si Var for variabel, navnet på variabelen, og deretter sin verdi. 200 00:11:22,730 --> 00:11:24,690 Så en VAR kan være noe virkelig. 201 00:11:24,690 --> 00:11:25,640 Det kan være en streng. 202 00:11:25,640 --> 00:11:27,300 Det kan være et desimaltall. 203 00:11:27,300 --> 00:11:28,560 Det kan være et tegn. 204 00:11:28,560 --> 00:11:31,250 Det kan være en boolsk. 205 00:11:31,250 --> 00:11:34,380 Og konsoll loggen fungerer litt annerledes. 206 00:11:34,380 --> 00:11:37,340 Hvis du ønsker å skrive ut et tall, kaller du% d. 207 00:11:37,340 --> 00:11:41,740 Men de fleste verdiene kan være trykt som strenger helt fint. 208 00:11:41,740 --> 00:11:46,220 >> La oss kjøre dette i Node å se hva som ville skje. 209 00:11:46,220 --> 00:11:51,880 Jeg kan ringe Node ex2.js, og vi får printf 210 00:11:51,880 --> 00:11:56,870 med verdier CS50, N som den flytende punkt nummer, 211 00:11:56,870 --> 00:12:00,620 og deretter b som boolsk omdannes til en streng sant. 212 00:12:00,620 --> 00:12:03,830 Hva om vi gjorde eksempel 2.c? 213 00:12:03,830 --> 00:12:09,630 Vel, vi har fortsatt noen flere irritasjonsmomenter med printf. 214 00:12:09,630 --> 00:12:13,110 Legg merke til at flytepunktet nummer må være formatert riktig, 215 00:12:13,110 --> 00:12:18,120 og at den boolske ikke kan ganske enkelt vises som sant eller usant. 216 00:12:18,120 --> 00:12:18,620 OK. 217 00:12:18,620 --> 00:12:22,680 Nå la oss se på eksempel tre. 218 00:12:22,680 --> 00:12:26,470 I eksempel tre, viser vi hvordan du ville bruke en for loop. 219 00:12:26,470 --> 00:12:27,630 Faktisk er det veldig enkelt. 220 00:12:27,630 --> 00:12:31,430 En av de fine tingene om Java er at den er basert C. 221 00:12:31,430 --> 00:12:33,920 Det betyr at mye av din koden vil se veldig lik 222 00:12:33,920 --> 00:12:36,490 og føler meg veldig mye det samme. 223 00:12:36,490 --> 00:12:39,220 I en for loop, det eneste det har virkelig endret her 224 00:12:39,220 --> 00:12:41,840 er stedet for int i, har vi Var jeg. 225 00:12:41,840 --> 00:12:45,470 Vi kan likevel tilordne den til verds null, sjekk at det er mindre enn fem, 226 00:12:45,470 --> 00:12:49,390 og øke den ved ett med ++ operatør. 227 00:12:49,390 --> 00:12:56,286 Vi kaller console.log på jeg, og at vil skrive oss en rekke med hver linje. 228 00:12:56,286 --> 00:12:58,410 La oss kjøre det veldig raskt for å se hva det utganger. 229 00:12:58,410 --> 00:13:02,320 230 00:13:02,320 --> 00:13:03,880 Vi får et nytt tall i hver linje. 231 00:13:03,880 --> 00:13:06,920 En annen ting jeg vil at du å legge merke til med console.log 232 00:13:06,920 --> 00:13:09,960 er du ikke nødt til å skrive backslash n for den nye linjen. 233 00:13:09,960 --> 00:13:12,480 Console.log vil skrive ut alt på en egen linje. 234 00:13:12,480 --> 00:13:14,585 Det er en fin funksjon at Java gir oss. 235 00:13:14,585 --> 00:13:18,440 236 00:13:18,440 --> 00:13:22,600 >> La oss nå åpne opp eksempel fire. 237 00:13:22,600 --> 00:13:28,710 I eksempel fire, først i C, vi ringer noen funksjoner. 238 00:13:28,710 --> 00:13:33,290 Legg merke til at vi har til å erklære funksjoner før vi bruker dem i hoved. 239 00:13:33,290 --> 00:13:37,250 Hvis vi hadde hoved først og deretter legge til og deretter høy, gjør, 240 00:13:37,250 --> 00:13:39,540 klang, eller GCC ville gi oss en feilmelding som sier 241 00:13:39,540 --> 00:13:41,060 at den ikke vet hva høy er. 242 00:13:41,060 --> 00:13:42,780 Den ikke vet hva add er. 243 00:13:42,780 --> 00:13:46,480 Så i C, må du være kresen om rekkefølgen som kaller deg dine funksjoner. 244 00:13:46,480 --> 00:13:49,220 245 00:13:49,220 --> 00:13:51,310 >> La oss se på hvordan du kan gjøre dette i Javascript. 246 00:13:51,310 --> 00:13:56,060 Vi har forskjellige filer fordi det er noen forskjellige måter å gjøre dette. 247 00:13:56,060 --> 00:13:58,950 En måte er ganske mye en direkte oversettelse. 248 00:13:58,950 --> 00:14:02,180 Fordi funksjoner i C returnere typer, og Java 249 00:14:02,180 --> 00:14:05,210 veit ikke helt eller omsorg om hvilken type du kommer tilbake, 250 00:14:05,210 --> 00:14:06,300 du trenger ikke skrive en type. 251 00:14:06,300 --> 00:14:08,100 I stedet, du bare trenger å skrive funksjon, 252 00:14:08,100 --> 00:14:11,180 og alt er pen mye på samme måte som før. 253 00:14:11,180 --> 00:14:14,630 >> Når du har en variabel, som i legge til, vi trenger bare å skrive x og y. 254 00:14:14,630 --> 00:14:16,060 Vi trenger ikke å si x er et int. 255 00:14:16,060 --> 00:14:18,940 Vi trenger ikke å si y er et int. 256 00:14:18,940 --> 00:14:21,030 Vi kommer tilbake med samme syntaks. 257 00:14:21,030 --> 00:14:24,230 For høy, vi erklærer det med fungere i stedet for ugyldig. 258 00:14:24,230 --> 00:14:26,110 Legg merke til at om det er ugyldig eller ikke-veddemål, 259 00:14:26,110 --> 00:14:28,380 det er fortsatt det samme funksjon. 260 00:14:28,380 --> 00:14:32,440 Og vi rett og slett ikke satt noe i parentes, 261 00:14:32,440 --> 00:14:34,690 og det ser veldig mye som C-kode. 262 00:14:34,690 --> 00:14:37,460 Og under, kan vi kalle det nedenfor. 263 00:14:37,460 --> 00:14:42,730 >> Hvis vi ser på eksempelet 4b, vi merker at jeg har endret en del ting. 264 00:14:42,730 --> 00:14:45,340 Det eneste jeg har forandret virkelig skjønt er rekkefølgen. 265 00:14:45,340 --> 00:14:47,340 Vi har samme funksjoner, men nå er de 266 00:14:47,340 --> 00:14:52,200 erklært etter at de er brukt i console.log og høyt på linjene 18, 19. 267 00:14:52,200 --> 00:14:54,740 Hvis du gjorde dette i C, gjøre ville kaste en feil. 268 00:14:54,740 --> 00:14:56,070 Her, dette fungerer helt fint. 269 00:14:56,070 --> 00:15:01,935 Og jeg kan vise dette til deg av ringer Node på 4b eksempel. 270 00:15:01,935 --> 00:15:05,350 271 00:15:05,350 --> 00:15:10,130 >> En annen måte vi kan kalle funksjoner er ved å lagre funksjoner som variabler. 272 00:15:10,130 --> 00:15:13,790 Som jeg sa, en variabel kan ha noen type. 273 00:15:13,790 --> 00:15:16,720 En av de typer en variabel kan ha en funksjon. 274 00:15:16,720 --> 00:15:19,800 Så hvis du ser på eksempel 4c, hva jeg har endret 275 00:15:19,800 --> 00:15:24,320 her er Div legge istedenfor funksjon add. 276 00:15:24,320 --> 00:15:26,807 Og nå legger tilsvarer en funksjon. 277 00:15:26,807 --> 00:15:28,140 Denne funksjonen her er anonym. 278 00:15:28,140 --> 00:15:33,346 Den har ikke noe navn, så det er bare funksjon og deretter parentes. 279 00:15:33,346 --> 00:15:35,220 Syntaksen etter at endres ikke, men du 280 00:15:35,220 --> 00:15:38,300 trenger å huske på at du har en variabel som du er 281 00:15:38,300 --> 00:15:42,940 lagring av funksjon i tillegg, og en variabel som du lagrer i høy. 282 00:15:42,940 --> 00:15:47,620 >> Fordi legge til og høy er nå variabler og ikke fungerer, endres noe. 283 00:15:47,620 --> 00:15:50,190 Dette er en vanlig feil jeg ser i mye av folks Javascripts, 284 00:15:50,190 --> 00:15:52,410 og noe å huske på. 285 00:15:52,410 --> 00:15:54,365 Når jeg kjører dette, la oss se hva som skjer. 286 00:15:54,365 --> 00:15:57,410 287 00:15:57,410 --> 00:15:58,230 Jeg får en feilmelding. 288 00:15:58,230 --> 00:16:01,000 Det sier udefinert på dette punktet. 289 00:16:01,000 --> 00:16:03,520 Så det er å si det vet ikke hva legge til er. 290 00:16:03,520 --> 00:16:06,010 >> Fordi nå legge til er ikke en funksjon, legge til er en variabel. 291 00:16:06,010 --> 00:16:10,100 Og du har faktisk ikke gitt legge til en verdi ennå når du brukte den. 292 00:16:10,100 --> 00:16:14,460 Det bringer oss til eksempel 4d, der hvis du ønsker å bruke variabler som funksjoner, 293 00:16:14,460 --> 00:16:17,210 du trenger bare å sørge for at de få verdien før de er brukt. 294 00:16:17,210 --> 00:16:20,200 295 00:16:20,200 --> 00:16:23,420 >> La oss gå videre til eksempel fem da. 296 00:16:23,420 --> 00:16:27,390 Her snakker vi om structs i C. I C, structs 297 00:16:27,390 --> 00:16:30,320 har denne faste struktur til dem fordi du har å erklære dem 298 00:16:30,320 --> 00:16:33,050 før du bruker den, og du si jeg har en student, 299 00:16:33,050 --> 00:16:36,645 og hver elev har nøyaktig ett navn, ett år, ett kjønn. 300 00:16:36,645 --> 00:16:37,770 Det må ha dem alle. 301 00:16:37,770 --> 00:16:42,280 Det kan ikke har noen andre verdier, og de må være spesifikke typer. 302 00:16:42,280 --> 00:16:47,540 >> Da kan vi initialisere struct i dette fine syntaks 303 00:16:47,540 --> 00:16:49,470 fordi den vet den rekkefølgen. 304 00:16:49,470 --> 00:16:51,460 Så den vet at Roger er et navn. 305 00:16:51,460 --> 00:16:54,060 Det vet at 2016 er et år og M er et kjønns 306 00:16:54,060 --> 00:16:58,200 fordi vi fortalte det på denne Listen er en struct student. 307 00:16:58,200 --> 00:17:01,607 Og så kan du skrive ut det, tilgang s.name. 308 00:17:01,607 --> 00:17:03,690 La oss se hvordan vi ville konvertere det til Javascript. 309 00:17:03,690 --> 00:17:06,400 310 00:17:06,400 --> 00:17:09,790 Legg merke til at s er nå en variabel, og det er ingen type. 311 00:17:09,790 --> 00:17:10,920 Det er bare et var igjen. 312 00:17:10,920 --> 00:17:14,480 Fordi det spiller ingen rolle om det type av denne variabelen er en peker, 313 00:17:14,480 --> 00:17:17,440 det er en struct, eller noe annet. 314 00:17:17,440 --> 00:17:19,650 Vi har en litt annen syntaks. 315 00:17:19,650 --> 00:17:21,890 Denne syntaksen er objektet syntaks. 316 00:17:21,890 --> 00:17:24,400 >> Du har kanskje sett det i JSON. 317 00:17:24,400 --> 00:17:27,780 JSON faktisk står for Javascript Object Notation. 318 00:17:27,780 --> 00:17:31,240 Dette er hvordan du definerer objekter i Javascript. 319 00:17:31,240 --> 00:17:34,500 Vi har en nøkkel, som er verdien, som navnet. 320 00:17:34,500 --> 00:17:37,680 Og vi gir det verdier på den annen side av colon. 321 00:17:37,680 --> 00:17:41,850 Og én ting å huske på er at du trenger ikke å ha et navn og et år 322 00:17:41,850 --> 00:17:42,980 og et kjønn for et objekt. 323 00:17:42,980 --> 00:17:44,570 Et objekt kan ha noen verdier. 324 00:17:44,570 --> 00:17:46,920 Det kan ha så mange du vil. 325 00:17:46,920 --> 00:17:50,375 >> Vi kan bruke disse objektene i akkurat den samme måte som vi ville bruke en struct, s.name. 326 00:17:50,375 --> 00:17:53,810 327 00:17:53,810 --> 00:17:57,080 Vi kan kjøre den veldig raskt ved å gjøre node eksempel 5 c 328 00:17:57,080 --> 00:18:00,320 329 00:18:00,320 --> 00:18:02,520 Vi kan faktisk ikke kjøre en C-fil i Node. 330 00:18:02,520 --> 00:18:03,654 Den ikke vet hva C er. 331 00:18:03,654 --> 00:18:04,695 Det vet bare Script. 332 00:18:04,695 --> 00:18:09,865 Når vi kjører ex5.js, får vi verdien, som vi forventet. 333 00:18:09,865 --> 00:18:13,490 334 00:18:13,490 --> 00:18:15,980 >> La oss gå videre til eksempel seks. 335 00:18:15,980 --> 00:18:18,930 Her jeg vil bare snakke litt litt mer om Javascript-arrayer 336 00:18:18,930 --> 00:18:20,930 fordi de er litt annerledes enn hva du er 337 00:18:20,930 --> 00:18:26,940 vant til i C. Arrays er notert, ikke med brakettene som i C, 338 00:18:26,940 --> 00:18:28,640 med klammeparentes, men parentes. 339 00:18:28,640 --> 00:18:32,150 Du kan ha en tom array, som arr i linje fire. 340 00:18:32,150 --> 00:18:34,680 Du kan ha arrays med flere verdier. 341 00:18:34,680 --> 00:18:39,790 Og du får tilgang til dem akkurat på samme måte i C. 342 00:18:39,790 --> 00:18:42,990 >> Opp til linje syv, alt virker ganske grei. 343 00:18:42,990 --> 00:18:45,390 En mindre forskjell er her på linje 10. 344 00:18:45,390 --> 00:18:48,620 Måten du får en lengde på en matrise er bare ved å ringe .length. 345 00:18:48,620 --> 00:18:50,620 En matrise kan faktisk være behandlet som et objekt, 346 00:18:50,620 --> 00:18:54,960 og dette formål har en lengde egenskap at du ringer for å få lengden av det. 347 00:18:54,960 --> 00:18:57,350 Legg merke til at dette er forskjellig i C fordi i C deg 348 00:18:57,350 --> 00:19:01,600 må kjenne lengden objektet på forhånd. 349 00:19:01,600 --> 00:19:04,700 >> Så en annen fin ting om arrays er at du kan ha forskjellige typer. 350 00:19:04,700 --> 00:19:07,470 Hvis du har en array i C, der er matriser av en bestemt verdi, 351 00:19:07,470 --> 00:19:11,900 enten en struct peker eller flyter eller [uhørbart]. 352 00:19:11,900 --> 00:19:13,700 Her kan du ha forskjellige verdier. 353 00:19:13,700 --> 00:19:17,560 Først hadde jeg et desimaltall, deretter en boolsk, deretter et annet heltall. 354 00:19:17,560 --> 00:19:19,670 Og faktisk, kan de endre typer også. 355 00:19:19,670 --> 00:19:21,220 Se på linje 16. 356 00:19:21,220 --> 00:19:26,760 Array to er i endring fra å være et tall, et helt tall, til en streng. 357 00:19:26,760 --> 00:19:30,920 >> En annen fin ting om arrays er her ved linje 19, har de uendelig størrelse. 358 00:19:30,920 --> 00:19:35,900 Du kan bare si at jeg vil at hundredel elementet for å være i strengen mediene. 359 00:19:35,900 --> 00:19:38,510 Og dette ser ikke ut til å gjøre forstand fordi matrisen bare 360 00:19:38,510 --> 00:19:41,080 har plass til tre elementer, så til slutt skal være to. 361 00:19:41,080 --> 00:19:44,800 Men når du gjør dette, la oss se hva matrise tre blir. 362 00:19:44,800 --> 00:19:47,460 Vi ville kjøre dette raskt med node eksempel six.js. 363 00:19:47,460 --> 00:19:49,990 364 00:19:49,990 --> 00:19:52,180 Vi får dette veldig lang array, og hva som skjer 365 00:19:52,180 --> 00:19:55,100 er har vi de første elementene og deretter en haug med blanke 366 00:19:55,100 --> 00:19:56,580 inntil vi får vår streng. 367 00:19:56,580 --> 00:19:58,580 Java fyller ut matrise som det er behov. 368 00:19:58,580 --> 00:20:01,790 369 00:20:01,790 --> 00:20:05,420 >> La oss endelig gå til vår siste eksempelet. 370 00:20:05,420 --> 00:20:08,180 Her har vi en liste av ulike studenter. 371 00:20:08,180 --> 00:20:11,350 Jeg vil snakke litt litt om noen fine aspekter 372 00:20:11,350 --> 00:20:14,240 av for løkker i Javascript. 373 00:20:14,240 --> 00:20:17,500 I C, er for løkker slags begrenset. 374 00:20:17,500 --> 00:20:21,490 De har en fast struktur, hvor du har en variabel, du har en tilstand, 375 00:20:21,490 --> 00:20:23,850 og deretter du gjøre noe ved slutten av sløyfen. 376 00:20:23,850 --> 00:20:27,560 Og selvfølgelig dette fungerer i Javascript, som vi så i foregående eksempler. 377 00:20:27,560 --> 00:20:31,030 Men vi har også hyggeligere måter å gjøre dette i Javascript. 378 00:20:31,030 --> 00:20:33,870 Dette kalles en foreach loop. 379 00:20:33,870 --> 00:20:36,580 >> Sorry, la oss gå tilbake til eksempel sju her. 380 00:20:36,580 --> 00:20:39,320 Vi kan også si delen er en liste. 381 00:20:39,320 --> 00:20:43,250 Så gi meg hver jeg eller hver indeks i den listen. 382 00:20:43,250 --> 00:20:46,255 Da kan vi få student ved bare å ringe delen av jeg. 383 00:20:46,255 --> 00:20:50,690 Så alt av koden for å sette i lik null og gjør at jeg 384 00:20:50,690 --> 00:20:54,420 er mindre enn lengden og legger en til jeg hver gang, det er 385 00:20:54,420 --> 00:21:00,220 ta vare på deg heller pent med denne foreach loop. 386 00:21:00,220 --> 00:21:02,830 >> Ikke bare gjøre foreach løkker arbeide i lister eller matriser, 387 00:21:02,830 --> 00:21:06,130 de jobber også i objekter, som også er fin. 388 00:21:06,130 --> 00:21:10,240 Du kan få navnet på hver eiendom ved bare å ta 389 00:21:10,240 --> 00:21:15,030 en ordbok eller et objekt, som student, og så bare si gi meg hver tast. 390 00:21:15,030 --> 00:21:18,920 En nøkkel ville være disse egenskaper, navn eller hus. 391 00:21:18,920 --> 00:21:22,870 Så hva kommer til å skje her er at vi skrive ut først navnet og deretter 392 00:21:22,870 --> 00:21:24,920 huset til hver student. 393 00:21:24,920 --> 00:21:29,170 >> Jeg kan kjøre dette i Node veldig raskt vise deg. 394 00:21:29,170 --> 00:21:35,510 Vi får først C stil for loop, der vi får hvert objekt som skrives ut. 395 00:21:35,510 --> 00:21:38,910 Og så har vi den Java stil, hvor du kan bare 396 00:21:38,910 --> 00:21:41,510 skrive ut hver tast og verds individuelt. 397 00:21:41,510 --> 00:21:45,560 398 00:21:45,560 --> 00:21:47,050 >> OK. 399 00:21:47,050 --> 00:21:52,850 Nå som vi har dekket Node.js, tror jeg vi er klar til å komme i gang med Meteor. 400 00:21:52,850 --> 00:21:56,070 Som jeg sa, Meteor gjorde en god jobb av å skrive noen ferdige eksempler 401 00:21:56,070 --> 00:22:00,600 for deg at du kan utforske gjennom denne opplæringen eller i seminaret mappen. 402 00:22:00,600 --> 00:22:03,750 Men her jeg ønsker å starte mer fra scratch. 403 00:22:03,750 --> 00:22:06,810 >> La oss lage en enkel å gjøre programmet. 404 00:22:06,810 --> 00:22:14,140 Dette er slags bunnen av hva den til gjøre programmet jeg viste deg tidligere er. 405 00:22:14,140 --> 00:22:16,990 I denne opplæringen du vil se at det er 406 00:22:16,990 --> 00:22:20,180 en kommando Meteor lage til opprette et nytt Meteor prosjekt. 407 00:22:20,180 --> 00:22:24,510 Du må kalle dette for å kjøre Meteor prosjekter fordi det 408 00:22:24,510 --> 00:22:27,470 vil kjøre kommandoene for å skape den Meteor 409 00:22:27,470 --> 00:22:31,100 filene som trengs for prosjektet. 410 00:22:31,100 --> 00:22:35,920 >> Hvis du går inn i terminalen, kan vi gå inn i mappen som heter trinn én. 411 00:22:35,920 --> 00:22:41,240 Og trinn en vil korrespondere med det første trinnet i opplæringen. 412 00:22:41,240 --> 00:22:44,020 Varsel det er mapper, step en, to trinn, helt til fem. 413 00:22:44,020 --> 00:22:47,835 Og hver og en tilsvarende til et trinn i denne opplæringen. 414 00:22:47,835 --> 00:22:50,960 415 00:22:50,960 --> 00:22:52,780 Jeg kommer til å åpne den i min tekst editor her 416 00:22:52,780 --> 00:22:56,280 slik at vi kan se litt av det som ble skapt. 417 00:22:56,280 --> 00:22:58,530 Vi legger merke til at det er fire hoveddeler. 418 00:22:58,530 --> 00:23:01,170 Det er en Meteor katalog, .meteor. 419 00:23:01,170 --> 00:23:03,180 Og som du vanligvis trenger ikke å røre. 420 00:23:03,180 --> 00:23:05,070 Meteor tar vare på denne mappen, og det bare 421 00:23:05,070 --> 00:23:08,640 sørger for at din Prosjektet vil fungere korrekt. 422 00:23:08,640 --> 00:23:14,580 >> Vi har også tre filer, en HTML-fil, en Javascript-fil, og en CSS-fil. 423 00:23:14,580 --> 00:23:18,670 La oss først starte med HTML-filen. 424 00:23:18,670 --> 00:23:21,310 Ved første øyekast ser dette som et vanlig HTML-dokumentet. 425 00:23:21,310 --> 00:23:23,490 Men legg merke til at det er noen forskjeller. 426 00:23:23,490 --> 00:23:26,520 Ett, er dette faktisk ikke en komplett HTML-dokument. 427 00:23:26,520 --> 00:23:28,640 Vi mangler HTML-kodene. 428 00:23:28,640 --> 00:23:29,700 Dette er normalt. 429 00:23:29,700 --> 00:23:33,560 I Meteor, du er ikke forventet å lage disse HTML-koder. 430 00:23:33,560 --> 00:23:35,260 Det er gjort for deg. 431 00:23:35,260 --> 00:23:38,380 Du ønsker å begin-- hvis du ønsker å lage et nettsted, 432 00:23:38,380 --> 00:23:40,430 du trenger bare å starte med hodet tag, 433 00:23:40,430 --> 00:23:43,510 definere det, og deretter definere kroppen koden. 434 00:23:43,510 --> 00:23:48,940 >> Men hvis du legger merke til i dette HTML-fil, har vi en ny kode. 435 00:23:48,940 --> 00:23:50,350 Vi har malen tag. 436 00:23:50,350 --> 00:23:52,050 Dette er ikke vanlig HTML. 437 00:23:52,050 --> 00:23:55,300 Dette er en spesiell versjon av HTML at Meteor gjør tilgjengelig for deg. 438 00:23:55,300 --> 00:23:57,660 Det kalles plass barer. 439 00:23:57,660 --> 00:24:00,980 Du kan definere maler som lite moduler, slik som hjelpefunksjoner, 440 00:24:00,980 --> 00:24:03,660 i C eller Javascript-kode. 441 00:24:03,660 --> 00:24:06,020 Denne malen ville ha et navn som heter oppgave. 442 00:24:06,020 --> 00:24:10,520 Og du kan se her på linje 13 som du kan ringe disse malene. 443 00:24:10,520 --> 00:24:14,380 Og hva Meteor vil gjøre er bare fylle disse oppgavene for deg. 444 00:24:14,380 --> 00:24:17,540 445 00:24:17,540 --> 00:24:22,580 >> En annen ting du kanskje legge merke til er en litt annerledes er dette hver funksjon. 446 00:24:22,580 --> 00:24:26,130 Hver vil ta den variable oppgaver og hva slags gå gjennom det 447 00:24:26,130 --> 00:24:28,810 i at foreach løkke vi så i eksempelet sju. 448 00:24:28,810 --> 00:24:34,200 Dette hver kan ta en ordbok eller en liste, en gjenstand eller en liste 449 00:24:34,200 --> 00:24:38,820 og det vil bare gå gjennom alle de verdier som en foreach løkke ville. 450 00:24:38,820 --> 00:24:44,110 Så hvis vi har en haug med oppgaver, dette vil kalle malen på hver oppgave. 451 00:24:44,110 --> 00:24:49,590 >> La oss kjøre Meteor-prosjektet bare for å se at dette skjer. 452 00:24:49,590 --> 00:24:53,260 Jeg kjører Meteor prosjekt med bare Meteor eller Meteor kjøre. 453 00:24:53,260 --> 00:24:56,690 Og nå Meteor bare vil trenge til raskt å forberede prosjektet, 454 00:24:56,690 --> 00:25:03,320 starte database som er nødvendig, og deretter legge app lokalt. 455 00:25:03,320 --> 00:25:07,200 Vi kan gå til vår nettleser nå. 456 00:25:07,200 --> 00:25:10,215 Og vi vil se at vi har en veldig enkel app. 457 00:25:10,215 --> 00:25:22,190 458 00:25:22,190 --> 00:25:29,130 Så det vi så viste seg var faktisk trinn en, trinnet en fil. 459 00:25:29,130 --> 00:25:33,260 >> La oss gå videre til trinn to bare fordi Jeg tror det vil tjene det samme formålet. 460 00:25:33,260 --> 00:25:36,500 Jeg kommer bare til å endre til trinn to katalogen 461 00:25:36,500 --> 00:25:39,550 og kjøre Meteor igjen slik at vi kan se malen vi bare jobbet med. 462 00:25:39,550 --> 00:25:43,560 463 00:25:43,560 --> 00:25:45,730 Ja, et spørsmål? 464 00:25:45,730 --> 00:25:49,724 >> PUBLIKUM: Hvis vi får tillatelse avslått, er at-- hva er det 465 00:25:49,724 --> 00:25:50,390 kalt for det? 466 00:25:50,390 --> 00:25:52,154 467 00:25:52,154 --> 00:25:54,070 ROGER ZURAWICKI: Hvis du kjører Meteor løp, 468 00:25:54,070 --> 00:25:57,280 og du har tillatelse benektet noen av filene dine 469 00:25:57,280 --> 00:25:59,070 kanskje ikke har rett tillatelse sett. 470 00:25:59,070 --> 00:26:03,970 Så du må sjekke hvor tillatelsene er av. 471 00:26:03,970 --> 00:26:06,030 De kunne være av i din Meteor prosjektet, 472 00:26:06,030 --> 00:26:08,550 eller de kan være av i Meteor-filer selv. 473 00:26:08,550 --> 00:26:13,742 >> PUBLIKUM: Hvis jeg lastet det ned akkurat nå fra GitHub, så hva skal jeg gjøre 474 00:26:13,742 --> 00:26:16,110 [Uhørbart]? 475 00:26:16,110 --> 00:26:20,110 >> ROGER ZURAWICKI: Hvis du vil å sikre at du får tilgang til den, 476 00:26:20,110 --> 00:26:21,450 det er en kommando du kan kjøre. 477 00:26:21,450 --> 00:26:26,590 La meg raskt skrive det ut slik at andre kan se det. 478 00:26:26,590 --> 00:26:30,670 Jeg kommer til å åpne en ny fane her og gå inn i mitt seminar mappe. 479 00:26:30,670 --> 00:26:33,500 480 00:26:33,500 --> 00:26:36,490 Chmod er kommandoen å endre tillatelser, 481 00:26:36,490 --> 00:26:40,060 og du kan si r for å gjøre det rekursivt for hver fil. 482 00:26:40,060 --> 00:26:46,040 Og tillatelser, kan du prøve 0755 å sørge for at du har full tilgang, 483 00:26:46,040 --> 00:26:47,820 og alle andre kan lese. 484 00:26:47,820 --> 00:26:50,100 Og hvis du bare kjøre denne kommandoen, vil det gjøre 485 00:26:50,100 --> 00:26:55,800 at tilgangen er i sjekk for hele katalogen. 486 00:26:55,800 --> 00:26:59,160 Kjører ls-l kan vise deg tillatelser i mer detalj. 487 00:26:59,160 --> 00:27:01,290 Dette ser OK. 488 00:27:01,290 --> 00:27:03,900 >> Hva som er mest viktig er at du har alle tre 489 00:27:03,900 --> 00:27:06,610 rwx for alle filene i seminaret katalogen. 490 00:27:06,610 --> 00:27:09,415 491 00:27:09,415 --> 00:27:11,330 Visste at løse problemet? 492 00:27:11,330 --> 00:27:13,735 >> PUBLIKUM: Det står mangler operant [uhørbart]. 493 00:27:13,735 --> 00:27:17,980 494 00:27:17,980 --> 00:27:18,740 [Uhørbart] 495 00:27:18,740 --> 00:27:20,490 ROGER ZURAWICKI: Du må sørge for at du 496 00:27:20,490 --> 00:27:23,022 har en prikk på slutten av din kommando. 497 00:27:23,022 --> 00:27:23,938 PUBLIKUM: [uhørlig]. 498 00:27:23,938 --> 00:27:36,395 499 00:27:36,395 --> 00:27:37,520 ROGER ZURAWICKI: All right. 500 00:27:37,520 --> 00:27:42,220 La oss raskt gå tilbake til lokale verten, app vi har. 501 00:27:42,220 --> 00:27:46,640 Og du vil se at vi har en noen oppgaver her, som forventet. 502 00:27:46,640 --> 00:27:49,330 503 00:27:49,330 --> 00:27:51,990 Vi har en haug med CSS, som du trenger ikke å bekymre seg for. 504 00:27:51,990 --> 00:27:53,740 Meteor tutorial bare gir dette til deg 505 00:27:53,740 --> 00:27:58,010 for å gjøre din å gjøre listen titt en litt bedre enn vanlig HTML. 506 00:27:58,010 --> 00:28:02,290 Og vi har Javascript-fil, som Jeg skal gå mer i detalj litt senere, 507 00:28:02,290 --> 00:28:04,272 men det gir bare disse oppgavene. 508 00:28:04,272 --> 00:28:04,980 Dette er oppgaven en. 509 00:28:04,980 --> 00:28:05,740 Denne oppgave er to. 510 00:28:05,740 --> 00:28:06,590 Dette er oppgaven tre. 511 00:28:06,590 --> 00:28:09,720 Så dette er data Meteor getting. 512 00:28:09,720 --> 00:28:15,590 >> En av de kule tingene om Meteor er at endringer kan skje automatisk. 513 00:28:15,590 --> 00:28:18,990 Hvis jeg ønsket å endre den navnet på den første oppgave 514 00:28:18,990 --> 00:28:22,490 så det vil si at dette er ikke oppgave en, og jeg lagrer det, 515 00:28:22,490 --> 00:28:26,370 så når jeg går til nettet nettleser, kan du oppdatere den, 516 00:28:26,370 --> 00:28:30,861 og det står automatisk dette er ikke oppgaven en. 517 00:28:30,861 --> 00:28:32,860 Du kan gjøre det samme i noen av disse filene. 518 00:28:32,860 --> 00:28:37,940 Gjøre en endring, i stedet for å gjøre listen, vil jeg ha det min å gjøre listen. 519 00:28:37,940 --> 00:28:40,980 >> Og en ting du bare lagt merke til, at jeg ikke engang å oppdatere. 520 00:28:40,980 --> 00:28:43,960 Ideen om forfriskende er snill av løst for deg med Meteor. 521 00:28:43,960 --> 00:28:48,970 Når den oppdager filen endres, det vil laste endringene for deg. 522 00:28:48,970 --> 00:28:53,110 Dette fungerer på alle filer, enten det er HTML, CSS eller Javascript. 523 00:28:53,110 --> 00:28:57,990 Å vise deg hva dette programmet ville se som uten CSS, kan jeg fjerne det hele tatt. 524 00:28:57,990 --> 00:29:04,720 Og når det er nytt, har du nå en ikke så pen å gjøre listen. 525 00:29:04,720 --> 00:29:06,370 La oss sette dette innholdet tilbake. 526 00:29:06,370 --> 00:29:11,343 Og sikkert nok, det oppdateres, og vår CSS er tilbake. 527 00:29:11,343 --> 00:29:11,843 Stor. 528 00:29:11,843 --> 00:29:15,700 529 00:29:15,700 --> 00:29:20,010 >> Vi kan nå gå videre med opplæringen. 530 00:29:20,010 --> 00:29:23,360 La oss snakke om trinn to, maler. 531 00:29:23,360 --> 00:29:27,140 Dette er hva vi nettopp så med de ulike oppgavene. 532 00:29:27,140 --> 00:29:31,550 Meteor vil forklare deg hva maler og hvordan denne logikken fungerer. 533 00:29:31,550 --> 00:29:34,760 Men la oss bare se på koden til se om vi kan være fornuftig ut av det. 534 00:29:34,760 --> 00:29:38,030 535 00:29:38,030 --> 00:29:41,460 >> I svært enkle applikasjoner, som det vi har i det enkle 536 00:29:41,460 --> 00:29:44,550 å gjøre, trinn én, trinn to, skritt tre, trinn fire, trinn fem, 537 00:29:44,550 --> 00:29:45,700 vi har ikke noen mapper. 538 00:29:45,700 --> 00:29:47,533 Vi har serveren mappen jeg nevnte. 539 00:29:47,533 --> 00:29:50,510 Vi har klienten mappen som ble nevnt. 540 00:29:50,510 --> 00:29:52,290 Så Meteor vil kjøre alle filene. 541 00:29:52,290 --> 00:29:55,210 Det vil kjøre den både på klient, både på serveren. 542 00:29:55,210 --> 00:29:58,840 >> Og hvis du vil ha deler av Java kode til å kjøre bare på klienten, 543 00:29:58,840 --> 00:30:02,350 de trenger for å være sikker på at du har en if setning, type som det som 544 00:30:02,350 --> 00:30:04,890 vi har i vår Javascript-fil her. 545 00:30:04,890 --> 00:30:08,010 Så Meteor, bare hvis det er klienten, så jeg 546 00:30:08,010 --> 00:30:12,355 ønsker å definere en mal hjelper kalt oppgaver. 547 00:30:12,355 --> 00:30:15,050 548 00:30:15,050 --> 00:30:19,260 Hva denne koden egentlig gjør er det sier det er 549 00:30:19,260 --> 00:30:21,800 et objekt kalt mal at Meteor gir. 550 00:30:21,800 --> 00:30:23,270 Og vi kommer til å legge en hjelper. 551 00:30:23,270 --> 00:30:27,680 Hjelpere er disse oppgavene, disse tingene som oppgavene. 552 00:30:27,680 --> 00:30:33,890 >> Du vil se at hvis vi går tilbake til den HTML-fil, vi kalte hver på oppgaver. 553 00:30:33,890 --> 00:30:35,750 Oppgaver er ikke definert i HTML. 554 00:30:35,750 --> 00:30:37,770 Det er definert i Javascript. 555 00:30:37,770 --> 00:30:42,610 Og Meteor trenger å vite hvilke oppgaver er når vi går inn i Java her. 556 00:30:42,610 --> 00:30:45,550 Oppgaver er dette hjelper. 557 00:30:45,550 --> 00:30:49,830 Helper, kan du tenke på den som en mal variabel. 558 00:30:49,830 --> 00:30:51,000 Og hva gjør oppgaver? 559 00:30:51,000 --> 00:30:53,580 Vel, returnerer den en liste over verdier. 560 00:30:53,580 --> 00:30:56,750 Fordi det er en liste, vi kan kalle hver i det. 561 00:30:56,750 --> 00:30:58,590 Så det er derfor vi kaller hverandre på oppgaver. 562 00:30:58,590 --> 00:30:59,730 Og nå har vi oppgave. 563 00:30:59,730 --> 00:31:02,850 564 00:31:02,850 --> 00:31:03,990 >> Hva gjør oppgaven gjøre? 565 00:31:03,990 --> 00:31:07,740 Vel, det har denne pilen her etter klammeparentes. 566 00:31:07,740 --> 00:31:09,130 Det betyr at oppgaven er en mal. 567 00:31:09,130 --> 00:31:11,100 Det er ikke en hjelper, som det vi nettopp så. 568 00:31:11,100 --> 00:31:12,872 Det er en mal vi har definert. 569 00:31:12,872 --> 00:31:14,080 Og der har vi definert det? 570 00:31:14,080 --> 00:31:16,950 Vi har definert det under til høyre her. 571 00:31:16,950 --> 00:31:21,160 >> Alt dette malen er gjengi et listeelement, og det kaller tekst. 572 00:31:21,160 --> 00:31:24,160 Nå, synes å være en tekst hjelper, men jeg skal vise deg 573 00:31:24,160 --> 00:31:26,610 at dette er faktisk fremdeles en data medlem av oppgaver. 574 00:31:26,610 --> 00:31:29,230 575 00:31:29,230 --> 00:31:33,670 Når du ringer hver, går det inn datastrukturen litt. 576 00:31:33,670 --> 00:31:39,130 I likhet med foreach loop, det nå bare ser på det første elementet i vårt formål. 577 00:31:39,130 --> 00:31:41,850 Vi ser at teksten er definert her i vår objekt. 578 00:31:41,850 --> 00:31:45,350 Så Meteor er smart å vite at vi snakker om denne teksten, 579 00:31:45,350 --> 00:31:47,630 ikke hjelperen heter teksten. 580 00:31:47,630 --> 00:31:52,120 Det blir bare verdien av dette tekst her og viser det som HTML, 581 00:31:52,120 --> 00:31:55,475 og det er hvordan dataene går fra Java til HTML. 582 00:31:55,475 --> 00:32:03,320 583 00:32:03,320 --> 00:32:07,030 >> Flytte på skjønt, i dette eksempelet vi hard kodet disse verdiene. 584 00:32:07,030 --> 00:32:10,440 Meteor gjør to virkelig fine ting for oss. 585 00:32:10,440 --> 00:32:15,050 Foruten live oppdatering at vi viste, også klarer det vår database. 586 00:32:15,050 --> 00:32:18,750 Hvis du måtte jobbe med PHP, du måtte konfigurere phpMyAdmin. 587 00:32:18,750 --> 00:32:21,320 Du måtte sørge for at bordene var alt i sjakk. 588 00:32:21,320 --> 00:32:24,760 Du måtte gjøre mye arbeid å gjøre for at dine data ble formatert riktig, 589 00:32:24,760 --> 00:32:27,880 og PHP kunne kommunisere med det. 590 00:32:27,880 --> 00:32:30,170 >> Nå bruker Meteor et nytt paradigme. 591 00:32:30,170 --> 00:32:32,310 Dette er en mer moderne måte for håndtering av en database. 592 00:32:32,310 --> 00:32:34,580 Det er en teknologi som kalles MongoDB. 593 00:32:34,580 --> 00:32:38,740 Akkurat som i Javascript, så vi at det spilte ingen rolle hva slags data hadde. 594 00:32:38,740 --> 00:32:39,640 Alt var en var. 595 00:32:39,640 --> 00:32:40,570 Det var ikke en charstar. 596 00:32:40,570 --> 00:32:40,930 Det var ikke en int. 597 00:32:40,930 --> 00:32:41,970 Det var ikke en struct. 598 00:32:41,970 --> 00:32:44,210 Det var bare Div dette, Var det. 599 00:32:44,210 --> 00:32:46,320 >> MongoDB fungerer slags på samme måte. 600 00:32:46,320 --> 00:32:48,160 Du trenger ikke å definere dine tabeller. 601 00:32:48,160 --> 00:32:50,860 Du trenger ikke å si en tabell har et navn, som har en int. 602 00:32:50,860 --> 00:32:54,710 Den har, jeg vet ikke, en dollar, noe som er en desimal. 603 00:32:54,710 --> 00:32:58,360 Det er bare disse Javascript objekter, alle disse vars, egentlig. 604 00:32:58,360 --> 00:33:02,780 Og dette er en virkelig kraftig måte å prototype din app. 605 00:33:02,780 --> 00:33:06,190 Og det er derfor Meteor utnytter dette. 606 00:33:06,190 --> 00:33:11,080 >> Hvis vi går til trinn tre, la oss se hva som er endret. 607 00:33:11,080 --> 00:33:15,480 Hvis vi ser på todos HTML, ikke mye. 608 00:33:15,480 --> 00:33:17,170 CSS har ikke forandret seg i det hele tatt. 609 00:33:17,170 --> 00:33:22,420 Men den lille endringen vi ser i HTML er vi har forandret hvordan oppgavene er definert. 610 00:33:22,420 --> 00:33:23,800 Oppgaver er nå en funksjon. 611 00:33:23,800 --> 00:33:25,800 Det betyr at hvert tid vi ønsker å få oppgaver, 612 00:33:25,800 --> 00:33:27,480 vi kommer til å kjøre denne funksjonen. 613 00:33:27,480 --> 00:33:29,230 Det kommer ikke tilbake fungere som en verdi. 614 00:33:29,230 --> 00:33:33,710 >> Meteor er smart å faktisk kjøre funksjon for å se hva vi får ut. 615 00:33:33,710 --> 00:33:36,650 Og det returnerer denne tingen kalt oppgaver. 616 00:33:36,650 --> 00:33:40,650 Vi har definert oppgaver på linje en, og det er en Mongo samling. 617 00:33:40,650 --> 00:33:43,170 Mongo henviser til databasen Meteor bruker, 618 00:33:43,170 --> 00:33:48,420 og denne nye betyr bare la oss gjøre en ny samling, kall det oppgaver. 619 00:33:48,420 --> 00:33:53,540 I MySQL, ville dette tilsvare utkikk etter tabellen kalt oppgaver. 620 00:33:53,540 --> 00:33:56,350 Mongo har samlinger, ikke tabeller. 621 00:33:56,350 --> 00:34:00,100 Så dette ser bare for oppgaver. 622 00:34:00,100 --> 00:34:04,820 >> Nå, mal i vår helper i malen, alt 623 00:34:04,820 --> 00:34:08,380 vi må gjøre for å få alle oppgaver er denne funksjonen, finne 624 00:34:08,380 --> 00:34:11,710 og dette tom spenne. 625 00:34:11,710 --> 00:34:14,150 Dette er mer spesielt til Mongo syntaks. 626 00:34:14,150 --> 00:34:16,159 Det er nok av dokumentasjon på nettet for hvordan 627 00:34:16,159 --> 00:34:19,360 du kan lage effektiv og virkelig nyttig Mongo spørringer. 628 00:34:19,360 --> 00:34:25,560 Men noe sånt som dette er bra nok for bare å finne alle data. 629 00:34:25,560 --> 00:34:30,100 >> Nå, ett av spørsmålene du kan se er at vi aldri faktisk legge til data. 630 00:34:30,100 --> 00:34:35,020 Så hva skjer når vi faktisk kjøre trinn tre? 631 00:34:35,020 --> 00:34:37,550 La oss raskt gå inn trinn tre og kjøre Meteor. 632 00:34:37,550 --> 00:34:42,870 633 00:34:42,870 --> 00:34:45,650 Legg merke til at jeg hadde en annen Meteor Prosjektet kjører et annet sted, 634 00:34:45,650 --> 00:34:49,110 så Meteor ikke liker det. 635 00:34:49,110 --> 00:34:52,810 Jeg kommer bare til å raskt nær den andre Meteor med kontroll C, 636 00:34:52,810 --> 00:34:55,780 gå inn i trinn tre, og kjøre Meteor igjen. 637 00:34:55,780 --> 00:35:01,070 638 00:35:01,070 --> 00:35:03,180 Legg merke til det begynner MongoDB fordi MongoDB 639 00:35:03,180 --> 00:35:06,370 er en del av hver Meteor prosjekt. 640 00:35:06,370 --> 00:35:09,190 >> Så det sier min søknad har feil. 641 00:35:09,190 --> 00:35:10,590 Det er en fin funksjon Meteor har. 642 00:35:10,590 --> 00:35:13,700 Det sørger for at din HTML er godt validert. 643 00:35:13,700 --> 00:35:17,710 La oss raskt se på hvorfor dette kan være. 644 00:35:17,710 --> 00:35:26,110 Det synes jeg har ved et uhell kopiert feil HTML-kode. 645 00:35:26,110 --> 00:35:30,610 Hvis jeg lagrer det nå, Meteor automatisk restartet serveren, 646 00:35:30,610 --> 00:35:34,650 og nå app kjører som forventet. 647 00:35:34,650 --> 00:35:39,220 Legg merke til å fikse dette, kan du bare kjøre den samme HTML-fil fra trinn to, 648 00:35:39,220 --> 00:35:40,380 kopiere den inn i trinn tre. 649 00:35:40,380 --> 00:35:43,290 650 00:35:43,290 --> 00:35:45,917 >> Vi kan gå tilbake til vår lokale vert. 651 00:35:45,917 --> 00:35:47,500 Og nå ser vi at vi har vår å gjøre listen. 652 00:35:47,500 --> 00:35:50,070 Stor, men den er tom. 653 00:35:50,070 --> 00:35:54,210 Vi trenger faktisk ikke har noen oppgaver i vår Mongo database. 654 00:35:54,210 --> 00:35:57,930 Så la oss snakke om en noen måter vi kan gjøre det. 655 00:35:57,930 --> 00:36:03,240 Hvis vi går tilbake til terminalen, vi kan lukke den og kjøre Meteor Mongo. 656 00:36:03,240 --> 00:36:05,320 >> Hvis du er kjent med hvordan Meteor fungerer, 657 00:36:05,320 --> 00:36:14,100 dette faktisk gir deg tilgang til full MongoDB for Meteor. 658 00:36:14,100 --> 00:36:17,570 Legg merke til at du må kjøre Meteor først for at dette skal fungere. 659 00:36:17,570 --> 00:36:23,840 Så hvis jeg kjører dette i en ny fane, jeg kan gå tilbake til den samme katalogen. 660 00:36:23,840 --> 00:36:29,040 661 00:36:29,040 --> 00:36:32,570 Og nå Meteor fungerer helt fint. 662 00:36:32,570 --> 00:36:33,600 Dette er et spørsmål. 663 00:36:33,600 --> 00:36:36,350 664 00:36:36,350 --> 00:36:38,790 La meg gjøre det litt større, slik at vi kan se. 665 00:36:38,790 --> 00:36:41,550 Dette ser litt annerledes enn hva du kan brukes til deg 666 00:36:41,550 --> 00:36:42,869 egentlig ikke trenger å bruke Mongo. 667 00:36:42,869 --> 00:36:45,410 Hele poenget med meg her er slik at du kan bruke Javascript. 668 00:36:45,410 --> 00:36:48,250 Men hvis du er nysgjerrig, Mongo API ikke 669 00:36:48,250 --> 00:36:50,730 bruker SQL, Structured Query Language. 670 00:36:50,730 --> 00:36:55,570 Den bruker sitt eget språk som ser mye som Script. 671 00:36:55,570 --> 00:37:00,520 Svært raskt, kan vi finne bordet via db.tasks. 672 00:37:00,520 --> 00:37:08,940 Og det forteller meg viser seg hvis vi kjører finne, 673 00:37:08,940 --> 00:37:13,450 slags likhet med hva vi hadde med Meteor, kan vi laste inn alle elementene. 674 00:37:13,450 --> 00:37:17,330 Problemet er at vi ikke gjør det faktisk har noen oppgaver som er definert. 675 00:37:17,330 --> 00:37:20,600 Så det kan ikke få dem. 676 00:37:20,600 --> 00:37:22,130 >> Vi kan sette inn, skjønt. 677 00:37:22,130 --> 00:37:25,170 Slik at vi kan kjøre innsats med kommando innsats. 678 00:37:25,170 --> 00:37:29,140 Og vi bare gi det et objekt, og vi bare 679 00:37:29,140 --> 00:37:31,840 sørge for at formatet er hva vi forventer. 680 00:37:31,840 --> 00:37:35,030 Hvis vi så på trinn to, vi så at hver oppgave 681 00:37:35,030 --> 00:37:39,590 var et objekt med en tekst som nøkkelen og uansett 682 00:37:39,590 --> 00:37:41,640 din å gjøre elementet var som en variabel. 683 00:37:41,640 --> 00:37:44,680 Slik at vi kan gjøre noe her. 684 00:37:44,680 --> 00:37:50,160 >> Vi kan ha det sette inn en oppgave ringte jeg kommer fra Mongo. 685 00:37:50,160 --> 00:37:52,570 Og vi trykker på Enter, og det går. 686 00:37:52,570 --> 00:37:56,900 Vi kan kjøre finne igjen, og vi se at det er et formål her. 687 00:37:56,900 --> 00:38:01,810 Mongo tildeler den en ID, som du vet egentlig ikke trenger å bekymre seg for. 688 00:38:01,810 --> 00:38:06,690 Hva er viktig for deg er det data du putter i, er dataene du får ut. 689 00:38:06,690 --> 00:38:10,500 >> La oss gå tilbake til vår hjemmeside, og hei, vår oppgave lastet. 690 00:38:10,500 --> 00:38:13,987 Og du kan se at fordi Meteor er veldig smart 691 00:38:13,987 --> 00:38:16,570 og alltid oppdateres for deg, jeg trengte ikke å røre på siden. 692 00:38:16,570 --> 00:38:19,160 Det lastes automatisk. 693 00:38:19,160 --> 00:38:23,520 >> La oss kjøre noen kode i Java om å gjøre dette. 694 00:38:23,520 --> 00:38:26,120 Som vi har Node i ryggen ende å utføre ut Javascript, 695 00:38:26,120 --> 00:38:29,280 vi kan også kjøre Javascript direkte i våre nettlesere. 696 00:38:29,280 --> 00:38:31,970 Du kan gjøre dette ved en funksjon heter Inspiser Element. 697 00:38:31,970 --> 00:38:34,210 Hvis jeg høyreklikker på en delen av siden, 698 00:38:34,210 --> 00:38:36,730 det er et alternativ heter Inspiser Element. 699 00:38:36,730 --> 00:38:38,840 Hvis du kjører en nettleser som Safari, du 700 00:38:38,840 --> 00:38:45,430 kanskje må aktivere utvikleren verktøy før du får denne funksjonen. 701 00:38:45,430 --> 00:38:46,930 >> Hva vi bryr oss om er konsollen. 702 00:38:46,930 --> 00:38:48,930 Så vi vil bare gå til konsoll på bunnen. 703 00:38:48,930 --> 00:38:52,110 704 00:38:52,110 --> 00:38:55,970 Nå kan vi kjøre noen Java her, som Java 705 00:38:55,970 --> 00:38:58,860 filene jeg viste i js eksempel. 706 00:38:58,860 --> 00:39:02,040 Men nå la oss se på oppgaver. 707 00:39:02,040 --> 00:39:04,955 Vi kan kjøre vår kommando. 708 00:39:04,955 --> 00:39:07,830 Og forhåpentligvis vil jeg være i stand til å gjøre det litt større, slik at vi alle kan se. 709 00:39:07,830 --> 00:39:14,390 710 00:39:14,390 --> 00:39:18,450 >> Hvis vi kjører tasks.find, og du vil se at dette er nøyaktig det samme kode 711 00:39:18,450 --> 00:39:24,840 at Javascript-filen bruker i trinn tre, dette task.find. 712 00:39:24,840 --> 00:39:29,100 Vi kan kjøre det samme, og nå får vi noen rare ting. 713 00:39:29,100 --> 00:39:31,050 Hvordan kan vi faktisk få data? 714 00:39:31,050 --> 00:39:34,860 Vel, vi må kjøre dette kommando som heter hente. 715 00:39:34,860 --> 00:39:37,150 >> Dette er svært nyttig for debugging. 716 00:39:37,150 --> 00:39:41,000 Hva du får her er en markør, er og dette 717 00:39:41,000 --> 00:39:44,890 en fin måte Meteor har optimalisert henting av data. 718 00:39:44,890 --> 00:39:48,270 Denne markøren har alle funksjonene for Live oppdatering og oppdatere siden 719 00:39:48,270 --> 00:39:49,650 når noe har endret seg. 720 00:39:49,650 --> 00:39:51,280 Men det vil ikke få oss dataene. 721 00:39:51,280 --> 00:39:52,720 Vi kan få data via hente. 722 00:39:52,720 --> 00:39:56,880 Og du ser vi har et objekt, og det er akkurat som det vi hadde i Mongo, 723 00:39:56,880 --> 00:40:00,040 med en ID og teksten setter vi inn. 724 00:40:00,040 --> 00:40:04,200 >> Så hvordan setter vi et element i Meteor? 725 00:40:04,200 --> 00:40:07,250 Vel, vi har bare oppgaver. 726 00:40:07,250 --> 00:40:09,990 Og da kan vi kjøre samme innsatskommando, 727 00:40:09,990 --> 00:40:17,520 noe som gir en ordbok eller et objekt med samme format, tekst 728 00:40:17,520 --> 00:40:22,340 og da jeg kom fra konsollen. 729 00:40:22,340 --> 00:40:27,240 Ta en titt ovenfor, fordi når jeg gjør dette, viser det opp på nettsiden 730 00:40:27,240 --> 00:40:29,660 automatisk. 731 00:40:29,660 --> 00:40:33,291 >> Legg merke til at du kan sette noe du vil i disse elementene. 732 00:40:33,291 --> 00:40:35,040 Det trenger ikke å har en fast struktur. 733 00:40:35,040 --> 00:40:39,790 Jeg kunne ha en lik nummer tre og b lik falsk. 734 00:40:39,790 --> 00:40:41,600 Og det hele fungerer. 735 00:40:41,600 --> 00:40:46,000 Jeg kan til og med velge å ikke inkludere en tekst i det hele tatt. 736 00:40:46,000 --> 00:40:48,320 Dette er bare ikke anbefalt men fordi da Meteor 737 00:40:48,320 --> 00:40:50,920 vil ikke vite hva som skal vises. 738 00:40:50,920 --> 00:40:53,110 Men i hvert enkelt tilfelle, vi få en ID, og ​​det er 739 00:40:53,110 --> 00:40:54,785 IDen til objektet du kan bruke. 740 00:40:54,785 --> 00:41:01,120 741 00:41:01,120 --> 00:41:03,280 >> Som vi fortsette med trinn fire og trinn fem, 742 00:41:03,280 --> 00:41:06,870 den veiledningen vil vise deg måter som du kan lage UI elementer ved hjelp 743 00:41:06,870 --> 00:41:13,130 HTML du kjenner til skape forskjellige oppgaver. 744 00:41:13,130 --> 00:41:15,440 La oss se på trinn fire veldig raskt. 745 00:41:15,440 --> 00:41:18,290 Vi vil se at vi har lagt et avsnitt om hendelser. 746 00:41:18,290 --> 00:41:20,874 Maler kan ha hjelpere, som får oss data. 747 00:41:20,874 --> 00:41:22,040 Men det kan også ringe hendelser. 748 00:41:22,040 --> 00:41:25,300 Og det er her ting blir nyttig, fordi hendelser 749 00:41:25,300 --> 00:41:28,590 er hva som skjer når du klikker på forskjellige ting på nettstedet ditt. 750 00:41:28,590 --> 00:41:33,790 >> Her er vår kode fortelle oss for å legge denne hendelsen. 751 00:41:33,790 --> 00:41:38,860 Legg det når du har sendt inn noe med klassen ny oppgave. 752 00:41:38,860 --> 00:41:41,910 Hva du har her er en CSS velgeren. 753 00:41:41,910 --> 00:41:45,870 Så dette ser bare for en HTML element som har klassen ny oppgave. 754 00:41:45,870 --> 00:41:47,940 Og det ser ut for hendelsen, som sender. 755 00:41:47,940 --> 00:41:51,050 Andre hendelser inkluderer klikk, hover, dobbeltklikk, 756 00:41:51,050 --> 00:41:54,450 ligner på hva du får i vanlig HTML. 757 00:41:54,450 --> 00:41:56,770 >> Hva du gi det her er nå en funksjon. 758 00:41:56,770 --> 00:42:01,210 Og du kan ha din kode i denne funksjonen. 759 00:42:01,210 --> 00:42:06,360 Denne funksjonen er hva som ender opp med å få kalles når du sender inn denne nye oppgaven. 760 00:42:06,360 --> 00:42:12,170 La oss se på HTML så vi forstå hva denne nye oppgaven er. 761 00:42:12,170 --> 00:42:15,570 Vi har lagt til et skjema her med klassen ny oppgave. 762 00:42:15,570 --> 00:42:19,880 Og den har en inngang som tar tekst. 763 00:42:19,880 --> 00:42:22,605 Og det er her vi vil legge våre nye oppgaver. 764 00:42:22,605 --> 00:42:25,520 765 00:42:25,520 --> 00:42:29,780 >> La oss kjøre trinn fire i hjemmeside for å se hvordan det ser ut. 766 00:42:29,780 --> 00:42:32,710 Vi kan slutte først ut av MongoDB vi hadde 767 00:42:32,710 --> 00:42:35,300 fra vår forrige eksempel med kontroll C. 768 00:42:35,300 --> 00:42:37,690 Og la oss endre det til trinn fire katalogen. 769 00:42:37,690 --> 00:42:41,000 770 00:42:41,000 --> 00:42:42,920 Vi vil kjøre Meteor igjen å starte serveren. 771 00:42:42,920 --> 00:42:46,850 772 00:42:46,850 --> 00:42:50,510 Og dessverre, jeg hadde Meteor kjører i en annen terminal. 773 00:42:50,510 --> 00:42:53,080 Så jeg skal bare sørge for at dette stengt. 774 00:42:53,080 --> 00:43:01,805 La oss slutte dette og endring til del fire, trinn fire. 775 00:43:01,805 --> 00:43:02,305 OK. 776 00:43:02,305 --> 00:43:11,220 777 00:43:11,220 --> 00:43:13,250 >> Nå vår Meteor kode er i gang. 778 00:43:13,250 --> 00:43:19,480 Og du kan se at det oppdatert, uten oss selv å måtte oppdatere siden. 779 00:43:19,480 --> 00:43:24,410 Hva har endret seg her nå at vi ikke har noen oppgaver, 780 00:43:24,410 --> 00:43:29,530 men vi har et skjema her, dette tekstboksen, for å legge til våre nye oppgaver. 781 00:43:29,530 --> 00:43:31,550 Og vi kan skrive vår oppgave her. 782 00:43:31,550 --> 00:43:34,564 Jeg kommer fra HTML-siden. 783 00:43:34,564 --> 00:43:36,105 Når jeg trykker på Enter, fikk den levert. 784 00:43:36,105 --> 00:43:39,180 785 00:43:39,180 --> 00:43:44,540 >> Vi kan se hva som skjedde som definert av Javascript-kode. 786 00:43:44,540 --> 00:43:49,930 Hva denne funksjonen gjorde var ta teksten fra skjemaet, 787 00:43:49,930 --> 00:43:53,680 og deretter bare kalt tasks.insert, som vi gjorde i konsollen. 788 00:43:53,680 --> 00:43:56,410 De valgte også å legge til en createdAt dato. 789 00:43:56,410 --> 00:43:59,840 Dette er hvordan du ville angi gjeldende klokkeslett. 790 00:43:59,840 --> 00:44:03,220 Etter det klarner det skjemaet ved å gjøre at verdien er en tom streng. 791 00:44:03,220 --> 00:44:06,550 >> Og så kaller return false til sørge for at ingenting annet skjer. 792 00:44:06,550 --> 00:44:10,350 Når du kommer tilbake falsk fra en skjema hendelse, som stopper utførelsen. 793 00:44:10,350 --> 00:44:14,520 Si en form har en handling, som sender til en PHP side. 794 00:44:14,520 --> 00:44:16,980 Hvis du ikke hadde returnert falsk, ville du returnere true. 795 00:44:16,980 --> 00:44:18,500 Det ville ende opp med å gjøre denne anmodningen. 796 00:44:18,500 --> 00:44:20,590 Falske avskjærer det og stopper det der. 797 00:44:20,590 --> 00:44:23,510 798 00:44:23,510 --> 00:44:28,610 >> Så det var en liten demo om hvordan Meteor fungerer, og vi har 799 00:44:28,610 --> 00:44:30,980 vært å følge opplæringen på en stund. 800 00:44:30,980 --> 00:44:33,560 Og du kan du gjerne fri til å fortsette å gjøre dette. 801 00:44:33,560 --> 00:44:37,760 Det er nok av ressurser, og opplæringen er faktisk bare 802 00:44:37,760 --> 00:44:40,400 veldig bra om å forklare hva som skjer. 803 00:44:40,400 --> 00:44:44,362 Jeg ønsker å vise deg nå, i de få minuttene vi har igjen, 804 00:44:44,362 --> 00:44:46,320 det er noen av kjøligere funksjoner i Meteor, 805 00:44:46,320 --> 00:44:48,772 og det er noen av mer nyttige pakker. 806 00:44:48,772 --> 00:44:51,730 En av de store tingene om Meteor er at du har en pakke system. 807 00:44:51,730 --> 00:44:55,620 Du kan enkelt innlemme kode at mange tusen utviklere 808 00:44:55,620 --> 00:44:58,840 har skrevet over hele verden inn i Meteor prosjektet. 809 00:44:58,840 --> 00:45:02,410 Ett eksempel på dette er hva du kanskje gjøre i trinn ni av opplæringen, der 810 00:45:02,410 --> 00:45:07,435 du prøver å legge til kontoer til Meteor prosjektet. 811 00:45:07,435 --> 00:45:10,010 812 00:45:10,010 --> 00:45:13,690 Hvis vi har en CS50 PHP prosjekt, ville vi ha 813 00:45:13,690 --> 00:45:17,810 å stole på rammen eller vår egen kode for å gjøre 814 00:45:17,810 --> 00:45:20,820 sikker på at vi sikkert håndtere passord og brukernavn 815 00:45:20,820 --> 00:45:23,120 og lagring i databasen og alt det der. 816 00:45:23,120 --> 00:45:25,670 >> Det viser seg Meteor har noen pakker for å gjøre det for deg, 817 00:45:25,670 --> 00:45:29,160 og for å gjøre det veldig enkelt. 818 00:45:29,160 --> 00:45:31,950 Det vi kan gjøre er å legge til et par pakker. 819 00:45:31,950 --> 00:45:37,450 Så la oss gjøre det riktig nå i vår konsoll. 820 00:45:37,450 --> 00:45:42,460 Jeg kommer til å avslutte prosjektet og akkurat nå går inn i enkel-todos. 821 00:45:42,460 --> 00:45:47,450 822 00:45:47,450 --> 00:45:50,050 Nå er enkel-todos prosjektet som du 823 00:45:50,050 --> 00:45:53,500 vil ha etter å ha blitt gjort med trinn 11 eller trinn 12, 824 00:45:53,500 --> 00:45:55,250 på slutten av denne opplæringen. 825 00:45:55,250 --> 00:45:58,642 Og la oss raskt se på det å se hva er de forskjellige funksjonene vi har. 826 00:45:58,642 --> 00:46:01,610 La oss bare sørg for at den kjører. 827 00:46:01,610 --> 00:46:04,400 Noen ganger tar det en stund å oppdatere, men her er det. 828 00:46:04,400 --> 00:46:09,710 >> Vi har vår mulighet til å skjule fullføre oppgaver, og vi kan logge på. 829 00:46:09,710 --> 00:46:11,770 Og dette ble gjort med Meteor pakken. 830 00:46:11,770 --> 00:46:12,270 Det er flott. 831 00:46:12,270 --> 00:46:14,910 Nå har vi brukernavn og passord tegn i. 832 00:46:14,910 --> 00:46:19,170 Men hva hvis vi ønsket å legge en annen form for innlogging mekanisme? 833 00:46:19,170 --> 00:46:22,560 La oss si at jeg ønsket å logge på med min Meteor konto. 834 00:46:22,560 --> 00:46:27,270 Jeg kommer til å kjøre meteor add, og dette er syntaksen for å legge pakker. 835 00:46:27,270 --> 00:46:32,160 Jeg kan si kontoer og accounts.meteor. 836 00:46:32,160 --> 00:46:35,720 Det kommer til å nå finne pakken og legg det inn. 837 00:46:35,720 --> 00:46:40,480 Du kan se at jeg har ikke funnet den rette pakken navn. 838 00:46:40,480 --> 00:46:42,820 >> Så hvordan finner du ut om pakkene? 839 00:46:42,820 --> 00:46:46,380 Vel det er en flott nettside, gjort tilgjengelig ved Meteor folk, 840 00:46:46,380 --> 00:46:47,780 kalt atmospherejs.com. 841 00:46:47,780 --> 00:46:52,520 Atmospherejs, ett ord, prikk com, er en stor oppbevaringssted 842 00:46:52,520 --> 00:46:57,660 for å finne alle Meteor pakker i depotet. 843 00:46:57,660 --> 00:47:05,140 Jeg kan søke kontoer, og deretter det vil vise meg alle relevante ting, 844 00:47:05,140 --> 00:47:07,320 alle pakkene med kontoens navn. 845 00:47:07,320 --> 00:47:10,180 846 00:47:10,180 --> 00:47:13,270 >> Mens det laster, kan vi prøve legge noen andre pakker. 847 00:47:13,270 --> 00:47:19,380 Kanskje Meteor pakken ikke fungerer akkurat nå, men jeg kan legge til Facebook. 848 00:47:19,380 --> 00:47:22,860 849 00:47:22,860 --> 00:47:27,190 Jeg kan legge til kontoen og deretter kjøre Meteor prosjektet igjen. 850 00:47:27,190 --> 00:47:33,260 851 00:47:33,260 --> 00:47:36,900 Når dette begynner, la oss se hva som er endret på nettstedet. 852 00:47:36,900 --> 00:47:40,010 853 00:47:40,010 --> 00:47:44,580 Du kan see-- jeg kanskje må oppdatere det her. 854 00:47:44,580 --> 00:47:47,320 >> Jeg har en knapp for å konfigurere Facebook innlogging. 855 00:47:47,320 --> 00:47:49,765 Og her har jeg alt instruksjonene Meteor 856 00:47:49,765 --> 00:47:52,960 har utarbeidet for deg for sette opp en Facebook-app. 857 00:47:52,960 --> 00:47:58,990 Og du kan bruke den informasjon for å legge til dine IDer. 858 00:47:58,990 --> 00:48:04,130 Når det er gjort, vil du ha Facebook innlogging arbeider i programmet ditt. 859 00:48:04,130 --> 00:48:08,559 >> Jeg kommer bare til å få en app-ID og en hemmelighet, 860 00:48:08,559 --> 00:48:10,100 bare for å vise deg hvordan dette kan fungere. 861 00:48:10,100 --> 00:48:16,000 862 00:48:16,000 --> 00:48:20,360 Du trenger en Facebook-konto å bruke Facebook utvikler alternativer. 863 00:48:20,360 --> 00:48:31,160 864 00:48:31,160 --> 00:48:35,290 La meg bare raskt finne Meteor taster som er nødvendige. 865 00:48:35,290 --> 00:48:46,994 866 00:48:46,994 --> 00:48:49,160 Jeg har en annen Meteor prosjekt at jeg kommer til å bruke, 867 00:48:49,160 --> 00:48:55,590 og jeg bare kommer til å ta nøklene fra denne filen. 868 00:48:55,590 --> 00:49:14,410 869 00:49:14,410 --> 00:49:20,930 >> Og når jeg finner den, vil jeg bare være i stand å kopiere disse nøklene inn i min Facebook. 870 00:49:20,930 --> 00:49:23,489 Så her er en nøkkel. 871 00:49:23,489 --> 00:49:24,280 Og dette er hemmelig. 872 00:49:24,280 --> 00:49:26,071 Du bør ikke være dele dette med folk. 873 00:49:26,071 --> 00:49:28,870 874 00:49:28,870 --> 00:49:30,910 Og så gi det din app hemmelig. 875 00:49:30,910 --> 00:49:33,560 Og dette er så Facebook vet du er du. 876 00:49:33,560 --> 00:49:37,630 877 00:49:37,630 --> 00:49:39,080 Og du lagre konfigurasjonen. 878 00:49:39,080 --> 00:49:45,160 879 00:49:45,160 --> 00:49:48,640 >> Jeg tror i prosessen jeg har stoppet min Meteor app. 880 00:49:48,640 --> 00:49:52,290 Så jeg vil bare gjøre at det er fortsatt der. 881 00:49:52,290 --> 00:49:54,962 882 00:49:54,962 --> 00:49:58,610 OK, la oss sørge for at vårt Meteor serveren kjører så nettsiden er i gang. 883 00:49:58,610 --> 00:50:02,440 Merke hvis vi stoppe Meteor server, er den siden der fortsatt. 884 00:50:02,440 --> 00:50:04,700 Det bare ikke vil oppdatere lenger. 885 00:50:04,700 --> 00:50:10,290 Meteor-serveren er nødvendig for å sørge for at siden er live. 886 00:50:10,290 --> 00:50:14,050 >> OK, jeg har sendt den, og nå Jeg kan logge på med Facebook. 887 00:50:14,050 --> 00:50:17,400 Nå er det bare et spørsmål om å ha en Facebook-pop up 888 00:50:17,400 --> 00:50:21,710 og sette på kontoen din informasjon og logging i. 889 00:50:21,710 --> 00:50:24,520 890 00:50:24,520 --> 00:50:27,930 Når du gjør det, Facebook kanskje mase deg for noen mer sikkerhet. 891 00:50:27,930 --> 00:50:29,810 Så får vi bare stoppe der. 892 00:50:29,810 --> 00:50:34,110 Poenget er at når du er ferdig med det, vil du ha Facebook-innlogging. 893 00:50:34,110 --> 00:50:37,850 >> Meteor har en haug med andre pakker også. 894 00:50:37,850 --> 00:50:39,200 Du kan logge inn med Google+. 895 00:50:39,200 --> 00:50:40,500 Du kan logge inn med GitHub. 896 00:50:40,500 --> 00:50:42,170 Du kan logge inn med Twitter. 897 00:50:42,170 --> 00:50:44,870 Eller hvis du søker, vil du finne nok av andre ting 898 00:50:44,870 --> 00:50:49,170 som Meetup, Linkedin, og Meteor Developer. 899 00:50:49,170 --> 00:50:53,100 Så Meteor Developer var Pakken jeg var ute etter. 900 00:50:53,100 --> 00:50:56,170 meteor legge til kontoer-meteor-utvikler. 901 00:50:56,170 --> 00:51:06,192 902 00:51:06,192 --> 00:51:07,900 I mellomtiden, jeg også ønsker å anbefale 903 00:51:07,900 --> 00:51:11,340 noen andre pakker for dine prosjekter. 904 00:51:11,340 --> 00:51:14,670 Det kan være nyttig å inkludere jQuery pakken. 905 00:51:14,670 --> 00:51:17,909 Dette gjør at du kan bruke jQuery i dine klienter. 906 00:51:17,909 --> 00:51:21,200 Du kan bare gjøre det med én linje, og Meteor vil sørge for at du er oppdatert 907 00:51:21,200 --> 00:51:21,825 på jQuery. 908 00:51:21,825 --> 00:51:24,330 909 00:51:24,330 --> 00:51:27,450 Jeg anbefaler også houston: admin. 910 00:51:27,450 --> 00:51:31,550 >> Dette er typen som en phpMyAdmin slags verktøy for MongoDB. 911 00:51:31,550 --> 00:51:33,890 Dette gjør at du kan redigere dataene ganske enkelt 912 00:51:33,890 --> 00:51:37,950 uten å måtte gå til Mongo skallet, som jeg hadde gjort tidligere i seminaret. 913 00:51:37,950 --> 00:51:43,160 914 00:51:43,160 --> 00:51:47,101 Så nå at det er i gang, la oss kjøre Meteor igjen og se hva vi kan gjøre. 915 00:51:47,101 --> 00:51:56,240 916 00:51:56,240 --> 00:52:00,720 >> Du legger merke til at å legge noen pakker kan ha dem presentere noen advarsler. 917 00:52:00,720 --> 00:52:02,720 Du trenger ikke å bekymre om at med Houston. 918 00:52:02,720 --> 00:52:06,040 919 00:52:06,040 --> 00:52:10,810 Så vi kan nå ha muligheten å konfigurere Meteor admin. 920 00:52:10,810 --> 00:52:15,080 Og de gir deg retninger Hvis du ønsker å sette opp dette. 921 00:52:15,080 --> 00:52:17,750 922 00:52:17,750 --> 00:52:20,440 >> Vi kan også nå gå til / admin. 923 00:52:20,440 --> 00:52:23,280 Dette er brakt til deg av houston pakken. 924 00:52:23,280 --> 00:52:27,470 Og dette er Meteor admin grensesnitt. 925 00:52:27,470 --> 00:52:30,660 Du bare lage en admin-konto, som så. 926 00:52:30,660 --> 00:52:38,150 Og hvis du oppdaterer siden, kanskje du har noen samlinger dukke opp. 927 00:52:38,150 --> 00:52:40,980 928 00:52:40,980 --> 00:52:43,460 >> Det er et veldig nyttig verktøy, og jeg anbefaler det. 929 00:52:43,460 --> 00:52:46,717 930 00:52:46,717 --> 00:52:49,050 Du kan se at fordi Houston var å gi noen feil, 931 00:52:49,050 --> 00:52:52,330 vi har ikke noen samlinger dukke opp akkurat nå. 932 00:52:52,330 --> 00:52:56,800 Måten du ville bruke houston er noe som gjør at denne funksjonen blir 933 00:52:56,800 --> 00:52:58,860 heter i din enkle-todos. 934 00:52:58,860 --> 00:53:01,370 Så houston ikke vet hva mine oppgaver er. 935 00:53:01,370 --> 00:53:04,490 >> Vi setter opp en Mongo samling kalt oppgaver. 936 00:53:04,490 --> 00:53:11,390 La oss gå inn i enkel-todos og bare sørge for at det i Javascript, 937 00:53:11,390 --> 00:53:16,295 vi har lagt oppgaver til våre samlinger. 938 00:53:16,295 --> 00:53:19,340 939 00:53:19,340 --> 00:53:25,670 Vi har nå frelst, og det er å bygge søknaden, forfriskende. 940 00:53:25,670 --> 00:53:26,750 Og la oss se. 941 00:53:26,750 --> 00:53:29,090 Nå har vi noen oppgaver. 942 00:53:29,090 --> 00:53:32,630 Og vi kan legge til noen nye oppgaver. 943 00:53:32,630 --> 00:53:35,840 Men hvis vi ønsker å legge til oppgaver, la oss gjøre det med selve appen. 944 00:53:35,840 --> 00:53:39,660 945 00:53:39,660 --> 00:53:41,050 >> Nå kan vi legge til noen data. 946 00:53:41,050 --> 00:53:53,410 Hei, dette er en oppgave. 947 00:53:53,410 --> 00:53:57,080 Det virker litt merkelig at vi ikke ser noen oppgaver. 948 00:53:57,080 --> 00:54:00,290 949 00:54:00,290 --> 00:54:05,260 Vi kan være lurt å sjekke om vi fikk noen feil her, eller kanskje et annet sted. 950 00:54:05,260 --> 00:54:08,810 951 00:54:08,810 --> 00:54:20,260 Hvis vi går inn i admin, virker det merkelig. 952 00:54:20,260 --> 00:54:24,080 Hvis du trekker depotet etter dette seminaret, 953 00:54:24,080 --> 00:54:27,580 Jeg vil sørge for at enkel-todos fungerer med Houston. 954 00:54:27,580 --> 00:54:30,370 Dessverre ser det ikke ut til være å jobbe i dette øyeblikk. 955 00:54:30,370 --> 00:54:34,810 956 00:54:34,810 --> 00:54:37,640 >> Er det noen andre spørsmål? 957 00:54:37,640 --> 00:54:41,800 Houston normalt er en verktøy som fungerer veldig bra. 958 00:54:41,800 --> 00:54:44,510 Houston er spesielt litt buggier enn de andre, 959 00:54:44,510 --> 00:54:49,470 men jeg anbefaler det når det fungerer. 960 00:54:49,470 --> 00:54:50,080 Yeah. 961 00:54:50,080 --> 00:54:52,395 >> PUBLIKUM: Hva kan du gjøre med Facebook pakke 962 00:54:52,395 --> 00:54:54,270 når en bruker er logget på med sin Facebook? 963 00:54:54,270 --> 00:54:55,978 >> ROGER ZURAWICKI: Når en brukers logget inn, 964 00:54:55,978 --> 00:54:59,540 du kan ringe til Facebook API. 965 00:54:59,540 --> 00:55:02,890 Mye av det ligger mer i hvordan Facebook åpner sitt API. 966 00:55:02,890 --> 00:55:05,120 Meteor, sørg for at du har forbindelsen. 967 00:55:05,120 --> 00:55:09,300 Men alt etter det er et spørsmål å lære å bruke Facebook API. 968 00:55:09,300 --> 00:55:10,216 PUBLIKUM: [uhørlig]. 969 00:55:10,216 --> 00:55:17,756 970 00:55:17,756 --> 00:55:18,880 ROGER ZURAWICKI: All right. 971 00:55:18,880 --> 00:55:21,670 Tusen takk for dette CS50 seminar i Meteor. 972 00:55:21,670 --> 00:55:24,060 Hvis du har spørsmål, du kan maile meg 973 00:55:24,060 --> 00:55:28,319 på min e-postadresse oppført under seminaret. 974 00:55:28,319 --> 00:55:30,110 Og jeg vil gjerne svare på dine spørsmål. 975 00:55:30,110 --> 00:55:33,020 Jeg skal også være på CS50 Hackathon bør 976 00:55:33,020 --> 00:55:35,550 du trenger hjelp med dine Meteor prosjekter. 977 00:55:35,550 --> 00:55:37,650 Takk for at du ser på. 978 00:55:37,650 --> 00:55:38,816