1 00:00:00,000 --> 00:00:03,968 >> [MUSIK SPELA] 2 00:00:03,968 --> 00:00:10,744 3 00:00:10,744 --> 00:00:14,040 >> STEPHEN TURBAN: Så jag är Stephen Turban. 4 00:00:14,040 --> 00:00:16,990 Över på sidan här, kanske vi kan få vissa människor att dyka in. 5 00:00:16,990 --> 00:00:20,150 6 00:00:20,150 --> 00:00:23,854 Vi har Gabriel och Zack. 7 00:00:23,854 --> 00:00:26,270 Så för en kort färdplan om vad detta kommer att se ut, 8 00:00:26,270 --> 00:00:31,580 Jag kommer att göra några extremt hög nivå titt på vad MVC är. 9 00:00:31,580 --> 00:00:32,285 Gabe? 10 00:00:32,285 --> 00:00:35,080 >> GABRIEL GUIMARAES: Jag kommer att prata om Ruby och lite 11 00:00:35,080 --> 00:00:39,100 Hur Rails fungerar och hur den kan hjälpa dig att bygga webbapplikationer. 12 00:00:39,100 --> 00:00:42,070 >> ZACK CHAUVIN: Och jag ska visa ett konkret exempel på hur 13 00:00:42,070 --> 00:00:45,112 att använda Skenor för att bygga en super fantastisk app. 14 00:00:45,112 --> 00:00:46,112 STEPHEN TURBAN: Awesome. 15 00:00:46,112 --> 00:00:46,350 Sweet. 16 00:00:46,350 --> 00:00:46,850 Okej. 17 00:00:46,850 --> 00:00:49,510 Så låt oss tala om MVC. 18 00:00:49,510 --> 00:00:54,970 Så låt oss gå till nästa bild, vilket Jag kommer att göra genom att trycka på den här knappen. 19 00:00:54,970 --> 00:01:12,640 Och låt oss gå till next-- utveckling, Jag gillar att tänka på att gå till CVS, 20 00:01:12,640 --> 00:01:17,240 eftersom CVS är en butik och också har ett V i centrum. 21 00:01:17,240 --> 00:01:21,460 >> Och så låt oss föreställa oss till en butik. 22 00:01:21,460 --> 00:01:25,380 Och låt oss göra detta lager säljer bara en sak. 23 00:01:25,380 --> 00:01:31,380 Så vi kommer att ha denna lagra bara sälja dessa röda koppar. 24 00:01:31,380 --> 00:01:40,410 Och tänk att du går i, och du går till framsidan av butiken, och personen. 25 00:01:40,410 --> 00:01:43,440 Och hans namn är Vince. 26 00:01:43,440 --> 00:01:48,370 >> Och Vince vågor hej på dig, säger hej. 27 00:01:48,370 --> 00:01:50,860 Och du märker en sak om Vince. 28 00:01:50,860 --> 00:01:56,880 Så när vi tänker på Vince, vi måste tänka om två nyckel adjektiv. 29 00:01:56,880 --> 00:02:00,600 Vince är vacker, men han är dum. 30 00:02:00,600 --> 00:02:01,320 OK. 31 00:02:01,320 --> 00:02:06,810 Så du vet, inget fel i hans eget, tyvärr är han vacker. 32 00:02:06,810 --> 00:02:08,009 Han är vår uppfattning. 33 00:02:08,009 --> 00:02:10,539 Så vår första rollinnehavare är där. 34 00:02:10,539 --> 00:02:12,340 Ha det i åtanke. 35 00:02:12,340 --> 00:02:17,230 >> Nu, fråga dig Vince, du går, hej Vince. 36 00:02:17,230 --> 00:02:18,110 Jag är en kund. 37 00:02:18,110 --> 00:02:19,130 Han säger hej. 38 00:02:19,130 --> 00:02:23,610 Jag vill verkligen en av dina röda koppar. 39 00:02:23,610 --> 00:02:24,760 Och vad Vince säger? 40 00:02:24,760 --> 00:02:26,510 Har någon något aning om vad Vince säger? 41 00:02:26,510 --> 00:02:30,340 42 00:02:30,340 --> 00:02:31,452 Jag ska kalla samtal. 43 00:02:31,452 --> 00:02:32,660 Vad tror du att Vince säger? 44 00:02:32,660 --> 00:02:36,139 >> PUBLIK: Han säger, jag kan visa dig där det är, men jag kan inte ge dig en. 45 00:02:36,139 --> 00:02:41,330 >> STEPHEN TURBAN: Han säger, jag kan visa dig där det är, men jag kan inte ge dig en. 46 00:02:41,330 --> 00:02:42,295 Ännu värre. 47 00:02:42,295 --> 00:02:44,420 Någon annan har en annan aning om vad Vince skulle säga? 48 00:02:44,420 --> 00:02:46,957 >> PUBLIK: Han måste gå check om de har några röda koppar. 49 00:02:46,957 --> 00:02:49,290 STEPHEN TURBAN: Vince inte ens vet att han har att kontrollera. 50 00:02:49,290 --> 00:02:50,070 Något annat? 51 00:02:50,070 --> 00:02:52,360 Så du sa, har att kolla om han har röda koppar. 52 00:02:52,360 --> 00:02:52,895 Gå vidare. 53 00:02:52,895 --> 00:02:54,020 PUBLIK: Vad är en röd kopp? 54 00:02:54,020 --> 00:02:56,072 STEPHEN TURBAN: Vad är en röd kopp? 55 00:02:56,072 --> 00:02:58,090 Vad är en röd kopp? 56 00:02:58,090 --> 00:02:59,410 Vince är förvirrad. 57 00:02:59,410 --> 00:03:05,141 Så Vince kommer att prata med vår nästa rollinnehavare, Carl. 58 00:03:05,141 --> 00:03:10,252 Och när vi tänker på Carl, vi gotta tänka två stora adjectives-- 59 00:03:10,252 --> 00:03:15,110 han är kontrollerande, men han är oförmögen. 60 00:03:15,110 --> 00:03:17,840 >> Så Vince goes-- han går, vad är en röd kopp? 61 00:03:17,840 --> 00:03:19,800 Jag vet inte vad en röd cup är. 62 00:03:19,800 --> 00:03:23,080 Han vänder sig om, och han frågar Carl. 63 00:03:23,080 --> 00:03:28,890 Han säger, Carl, någon bad om en röd kopp. 64 00:03:28,890 --> 00:03:30,722 Kan du göra det? 65 00:03:30,722 --> 00:03:31,680 Och vad Carl säga? 66 00:03:31,680 --> 00:03:32,513 Låt oss räkna ut det. 67 00:03:32,513 --> 00:03:34,330 Är det någon som har någon aning om vad Carl säger? 68 00:03:34,330 --> 00:03:37,260 Och jag ska bara upprepa det tillbaka till dig. 69 00:03:37,260 --> 00:03:39,280 Jag såg en handrörelse. 70 00:03:39,280 --> 00:03:41,760 >> PUBLIK: Han berättar att någon annat att få de röda koppar. 71 00:03:41,760 --> 00:03:44,430 >> STEPHEN TURBAN: Han berättar någon annan att få den röda koppen. 72 00:03:44,430 --> 00:03:46,270 Exakt. 73 00:03:46,270 --> 00:03:49,010 Och vi har en idé vem den personen kan vara? 74 00:03:49,010 --> 00:03:52,590 75 00:03:52,590 --> 00:03:53,090 Det är en ledtråd. 76 00:03:53,090 --> 00:03:56,960 Det kommer att börja med en M. Mob? 77 00:03:56,960 --> 00:04:00,225 >> ÅHÖRARNA: Modell. 78 00:04:00,225 --> 00:04:02,720 >> STEPHEN TURBAN: Modellen, ja. 79 00:04:02,720 --> 00:04:06,920 Hans namn är inte Model tyvärr eftersom det är ett fånigt namn. 80 00:04:06,920 --> 00:04:09,310 Vi har Mitt. 81 00:04:09,310 --> 00:04:12,970 Och när vi tänker på Mitt-- nej, detta är inte en bild av Zack. 82 00:04:12,970 --> 00:04:15,590 83 00:04:15,590 --> 00:04:21,759 Vi måste tänka på två nyckel adjektiv med kardan. 84 00:04:21,759 --> 00:04:25,040 Han är kapabel, men han är undergiven. 85 00:04:25,040 --> 00:04:29,950 Så Mitt vet vad han har att göra, men han kan verkligen inte göra någonting. 86 00:04:29,950 --> 00:04:32,340 Eller han verkligen inte kan avgöra på egen hand. 87 00:04:32,340 --> 00:04:33,256 >> Så vi har Carl. 88 00:04:33,256 --> 00:04:34,705 Carl skriker åt Mitt. 89 00:04:34,705 --> 00:04:39,990 Och han säger, hej Mitt behöver vi röda koppar. 90 00:04:39,990 --> 00:04:46,410 Och Mitt går till hans röda cup depå. 91 00:04:46,410 --> 00:04:48,960 Han tar tag i en kopp, och han ger tillbaka den. 92 00:04:48,960 --> 00:04:51,360 Är det någon som har någon aning om vad som händer då? 93 00:04:51,360 --> 00:04:54,070 94 00:04:54,070 --> 00:04:55,120 Ger koppen. 95 00:04:55,120 --> 00:05:01,740 Hittills Mitt har gått till hans röda cup förvar, tagit ut det, 96 00:05:01,740 --> 00:05:03,550 checkade ut, sade, Jag tog en röd kopp. 97 00:05:03,550 --> 00:05:06,717 Och han ger det till Carl. 98 00:05:06,717 --> 00:05:07,550 Har du en idé? 99 00:05:07,550 --> 00:05:08,980 Vad tror du att Carl gör? 100 00:05:08,980 --> 00:05:10,926 >> PUBLIK: Carl ger det till Vince. 101 00:05:10,926 --> 00:05:13,550 >> STEPHEN TURBAN: Carl ger det till Vince. 102 00:05:13,550 --> 00:05:14,165 Vince. 103 00:05:14,165 --> 00:05:15,999 >> PUBLIK: Och Vince visar den för [OHÖRBAR]. 104 00:05:15,999 --> 00:05:16,998 STEPHEN TURBAN: Exakt. 105 00:05:16,998 --> 00:05:18,080 Så det är precis det. 106 00:05:18,080 --> 00:05:21,040 Så Vince tar koppen, inte ens vet vad det är, 107 00:05:21,040 --> 00:05:23,840 men han visar det till användaren. 108 00:05:23,840 --> 00:05:27,140 Så låt oss försöka återskapa detta verkligen kort. 109 00:05:27,140 --> 00:05:31,380 Och vi ska behov tre tysta frivilliga, 110 00:05:31,380 --> 00:05:35,260 som ni kommer inte att kunna tala. 111 00:05:35,260 --> 00:05:36,470 Så kunde jag ta tre? 112 00:05:36,470 --> 00:05:37,040 OK. 113 00:05:37,040 --> 00:05:38,248 Och vem vill du vara? 114 00:05:38,248 --> 00:05:42,310 115 00:05:42,310 --> 00:05:43,750 >> PUBLIK: Jag ska vara Vince. 116 00:05:43,750 --> 00:05:44,960 >> STEPHEN TURBAN: Vince, OK. 117 00:05:44,960 --> 00:05:46,190 Vackra men dumt. 118 00:05:46,190 --> 00:05:47,510 Stor. 119 00:05:47,510 --> 00:05:48,570 Någon annan? 120 00:05:48,570 --> 00:05:53,520 Vi letar efter en kapabel men undergiven. 121 00:05:53,520 --> 00:05:55,760 Någon annan vill kunna? 122 00:05:55,760 --> 00:05:56,944 >> PUBLIK: Jag kunde vara Carl. 123 00:05:56,944 --> 00:05:57,860 STEPHEN TURBAN: Sweet. 124 00:05:57,860 --> 00:05:59,102 Vi har Carl. 125 00:05:59,102 --> 00:05:59,866 >> PUBLIK: Mitt. 126 00:05:59,866 --> 00:06:01,050 >> STEPHEN TURBAN: Mitt, OK. 127 00:06:01,050 --> 00:06:05,070 Och vi kommer att behöva en-- Jag ska vara kunden. 128 00:06:05,070 --> 00:06:07,460 Så kom igen upp, kom igen upp. 129 00:06:07,460 --> 00:06:10,470 Och alla är med tanke? 130 00:06:10,470 --> 00:06:15,440 Så jag ska be Vince till stå i fronten, bara ler, 131 00:06:15,440 --> 00:06:18,230 precis leende så ljust som möjligt. 132 00:06:18,230 --> 00:06:21,520 Och vi ska be Carl, rätt, varför inte du, liksom, 133 00:06:21,520 --> 00:06:24,050 stå bakom henne? 134 00:06:24,050 --> 00:06:26,660 Och Mitt, varför inte du bara gå ut i ryggen, 135 00:06:26,660 --> 00:06:31,410 och sedan ska jag ge dig en grupp av koppar att umgås med. 136 00:06:31,410 --> 00:06:34,170 >> Så jag är en kund. 137 00:06:34,170 --> 00:06:35,610 Jag kommer. 138 00:06:35,610 --> 00:06:40,490 Och jag gör [OHÖRBAR] Jag säga hej, jag vill ha en kopp. 139 00:06:40,490 --> 00:06:43,214 140 00:06:43,214 --> 00:06:44,580 Perfect. 141 00:06:44,580 --> 00:06:45,580 Så Vince har ingen aning. 142 00:06:45,580 --> 00:06:46,915 Så vad gör Vince göra härnäst? 143 00:06:46,915 --> 00:06:50,770 144 00:06:50,770 --> 00:06:52,860 Vince-- OK, så jag kommer vara narrating nu. 145 00:06:52,860 --> 00:06:55,390 >> Vince skriker åt Carl, kopp! 146 00:06:55,390 --> 00:06:58,840 147 00:06:58,840 --> 00:07:00,790 Vad gör Carl gör? 148 00:07:00,790 --> 00:07:03,910 Carl skriker på Mitt. 149 00:07:03,910 --> 00:07:06,710 Mitt tar en kopp. 150 00:07:06,710 --> 00:07:08,220 Mitt ger den till Carl. 151 00:07:08,220 --> 00:07:10,870 Carl återgår det till Vince. 152 00:07:10,870 --> 00:07:12,640 Och Vince visar den för användaren. 153 00:07:12,640 --> 00:07:17,960 >> Och det är en hög, hög, hög, så hög titt på MVC. 154 00:07:17,960 --> 00:07:22,460 Vi delar upp det genom att ha en uppfattning, vad användaren ser, en styrenhet, någon 155 00:07:22,460 --> 00:07:25,760 som gör allt i bakgrunden men verkligen inte kan uppdatera någonting 156 00:07:25,760 --> 00:07:29,960 eller inte kan göra något av betydelse utom att ringa utsikten och modellen. 157 00:07:29,960 --> 00:07:35,280 Och då har vi Mitt, modellen, som uppdaterar de data vi har. 158 00:07:35,280 --> 00:07:42,660 Så tack så mycket för vår vackra, styrning, och kapabla volontärer. 159 00:07:42,660 --> 00:07:43,730 Och jag tror det var det. 160 00:07:43,730 --> 00:07:45,040 >> [Applåder] 161 00:07:45,040 --> 00:07:48,745 >> Jag tror Gabe kommer att prata nu på en förhoppningsvis mindre hög nivå. 162 00:07:48,745 --> 00:07:51,600 >> GABRIEL GUIMARAES: OK, grabbar. 163 00:07:51,600 --> 00:07:56,790 Nu ska vi prata lite mer om kod och om Ruby on Rails själv, 164 00:07:56,790 --> 00:08:00,750 och om hur det förhåller allt detta MVC historia. 165 00:08:00,750 --> 00:08:03,190 I grund och botten, Ruby on Rails är ett ramverk. 166 00:08:03,190 --> 00:08:04,640 Mer om det i ett andra. 167 00:08:04,640 --> 00:08:07,760 >> Men bara för att ge dig en känsla för vem som använder den, 168 00:08:07,760 --> 00:08:12,240 liknande, alla dessa stora companies-- så GitHub, Groupon, Twitter-- 169 00:08:12,240 --> 00:08:15,300 de är alla använder Ruby on Skenor som sin huvudsakliga ram 170 00:08:15,300 --> 00:08:16,510 att genomföra deras hemsida. 171 00:08:16,510 --> 00:08:19,130 Så jag är säker på att många människor har använt dessa webbplatser här. 172 00:08:19,130 --> 00:08:24,470 Och det är alla Ruby on Rails att genomföra modellen, utsikten, och styrenheten 173 00:08:24,470 --> 00:08:26,890 På alla dessa webbplatser och många fler. 174 00:08:26,890 --> 00:08:27,830 OK? 175 00:08:27,830 --> 00:08:32,090 >> Så som sagt, Ruby on Rails är ett ramverk. 176 00:08:32,090 --> 00:08:37,237 Och du kan sorts tänka på en ram i betydelsen som att bygga ett hus. 177 00:08:37,237 --> 00:08:39,570 Så om du ska bygga en house-- och du kan alltid 178 00:08:39,570 --> 00:08:40,653 börja om från början, eller hur? 179 00:08:40,653 --> 00:08:46,440 Du kan försöka att komma upp med ett sätt att såga trä, 180 00:08:46,440 --> 00:08:49,760 och att föra virket till platsen, och att få stenarna i rätt form, 181 00:08:49,760 --> 00:08:51,250 och sedan allt detta. 182 00:08:51,250 --> 00:08:54,020 Men det kommer att ta förmodligen massor av år 183 00:08:54,020 --> 00:08:56,910 tills du får allt material, och du får allt tillsammans, 184 00:08:56,910 --> 00:08:58,790 och du faktiskt börja att bygga ditt hus. 185 00:08:58,790 --> 00:09:01,748 >> Så visar det sig om du börjar med en ram med något som är 186 00:09:01,748 --> 00:09:04,260 redan typ av på plats för varje typ av hus 187 00:09:04,260 --> 00:09:07,750 som du vill build-- något det är väldigt generiska men att du kan 188 00:09:07,750 --> 00:09:12,850 sedan modellera mot din egen goals-- då kan du utnyttja 189 00:09:12,850 --> 00:09:16,800 denna makt ramar för att bygga dem något mycket, mycket snabbare. 190 00:09:16,800 --> 00:09:17,300 OK. 191 00:09:17,300 --> 00:09:21,110 Så detta är samma idé i ett ram för en webbapplikation 192 00:09:21,110 --> 00:09:23,755 eller för varje typ av ansökan, för den delen. 193 00:09:23,755 --> 00:09:26,560 >> Man börjar faktiskt ut med en halv ansökan 194 00:09:26,560 --> 00:09:28,400 redan där på plats för dig. 195 00:09:28,400 --> 00:09:32,230 Och med det menar jag att du får massor av filer som redan har funktioner, 196 00:09:32,230 --> 00:09:36,830 liknande bibliotek, liknande funktionalitet, och kommandon som du kan köra för 197 00:09:36,830 --> 00:09:40,500 att göra ditt liv mycket enklare och lättare. 198 00:09:40,500 --> 00:09:41,180 OK. 199 00:09:41,180 --> 00:09:43,555 >> Så i det här fallet, kommer vi att prata om Ruby on Rails. 200 00:09:43,555 --> 00:09:45,920 Det finns massor av olika ramar där ute. 201 00:09:45,920 --> 00:09:47,550 Det finns Django för Python. 202 00:09:47,550 --> 00:09:50,990 Det finns Zend ram eller Laravel för PHP. 203 00:09:50,990 --> 00:09:52,390 Det finns massor av olika. 204 00:09:52,390 --> 00:09:56,830 Ruby on Rails är ett ganska trevligt ny. 205 00:09:56,830 --> 00:10:01,600 Många människor använder det i startups och denna typ av miljö. 206 00:10:01,600 --> 00:10:04,250 Och en del av dessa mycket stora företag som jag visade här innan 207 00:10:04,250 --> 00:10:06,050 använder också Ruby on Rails. 208 00:10:06,050 --> 00:10:10,070 >> Så bara för att ge dig en känsla för vad Ruby är 209 00:10:10,070 --> 00:10:13,030 liknande, eftersom ni är mer vana att, liksom, C och lite PHP 210 00:10:13,030 --> 00:10:17,560 nu, så Ruby kommer att vara den motsvarande din PHP i denna mening. 211 00:10:17,560 --> 00:10:18,380 Detta är inte Ruby. 212 00:10:18,380 --> 00:10:19,830 Detta är C. OK? 213 00:10:19,830 --> 00:10:22,660 Men detta är som DJBHash funktion som jag 214 00:10:22,660 --> 00:10:27,170 vet att många människor som används för pset felstavningar. 215 00:10:27,170 --> 00:10:29,670 >> Och i Ruby, pretty ungefär som i PHP, du 216 00:10:29,670 --> 00:10:32,745 kunde genomföra detta med bara några rader kod. 217 00:10:32,745 --> 00:10:34,870 Istället för att behöva oroa om hashfunktionen, 218 00:10:34,870 --> 00:10:37,950 behöva oroa hinkarna, och allt detta, kan du bara säga, 219 00:10:37,950 --> 00:10:40,160 ordboken = Hash.net. 220 00:10:40,160 --> 00:10:44,560 Och då du använder ungefär som samma idé som PHP hade. 221 00:10:44,560 --> 00:10:45,970 Och så är det till true. 222 00:10:45,970 --> 00:10:48,080 Och sedan om du vill kontrollera, så kontrollera funktionen 223 00:10:48,080 --> 00:10:51,560 skulle vara om dictionary "foo" är lika lika sant, return true. 224 00:10:51,560 --> 00:10:52,580 Och det är allt, okej? 225 00:10:52,580 --> 00:10:54,030 >> Så du märker några skillnader. 226 00:10:54,030 --> 00:10:57,940 Det finns inga semikolon här, eftersom det var i C. 227 00:10:57,940 --> 00:11:00,710 Men den allmänna idén är mycket lika. 228 00:11:00,710 --> 00:11:02,030 OK? 229 00:11:02,030 --> 00:11:08,010 >> Också i Ruby, det finns pärlor, vilket är typ av Ruby biblioteken. 230 00:11:08,010 --> 00:11:12,460 Och Rails hanterar dem i ett mycket trevligt sätt för dig. 231 00:11:12,460 --> 00:11:15,480 Så om du vill sätta i vissa bibliotek som 232 00:11:15,480 --> 00:11:18,670 gör e-post, eller att gör textmeddelanden, 233 00:11:18,670 --> 00:11:22,170 eller som gör integrering med Facebook, eller någon typ av sak 234 00:11:22,170 --> 00:11:24,374 så i din app, det är mycket, mycket lätt. 235 00:11:24,374 --> 00:11:26,790 Oddsen är att du kan hitta något sånt på internet. 236 00:11:26,790 --> 00:11:30,300 Och de bara gör något liknande put som 237 00:11:30,300 --> 00:11:32,290 pärla som du vill använda i pärla filen. 238 00:11:32,290 --> 00:11:33,749 Och sedan Rails installerar allt. 239 00:11:33,749 --> 00:11:36,456 Du behöver inte oroa dig för något av det, så det är riktigt coolt. 240 00:11:36,456 --> 00:11:38,500 Dessutom finns det gott, gott om hjälp på nätet. 241 00:11:38,500 --> 00:11:40,485 Så du kan hitta massor av saker. 242 00:11:40,485 --> 00:11:42,360 Om du har ett fel, du kan bara Google det, 243 00:11:42,360 --> 00:11:45,090 och det kommer att bli mycket lätt att få hjälp. 244 00:11:45,090 --> 00:11:47,200 >> Och det är en hel del fun-- exactly-- eftersom du 245 00:11:47,200 --> 00:11:51,420 behöver inte oroa dig för den låga nivån detaljer, genomförande av hashtabeller 246 00:11:51,420 --> 00:11:58,080 och behöva komma med alla HTTP headers, och massor av saker, 247 00:11:58,080 --> 00:12:00,197 och även vissa nivå saker mer högre. 248 00:12:00,197 --> 00:12:02,030 Du behöver inte oroa dig om det i Rails. 249 00:12:02,030 --> 00:12:04,010 Det gör det väldigt, väldigt bra för dig. 250 00:12:04,010 --> 00:12:07,490 Och vi kommer att visa att mer konkret mycket snart. 251 00:12:07,490 --> 00:12:08,130 OK. 252 00:12:08,130 --> 00:12:09,750 >> Så lite om Ruby igen. 253 00:12:09,750 --> 00:12:11,420 Så det är precis som C, som jag sa. 254 00:12:11,420 --> 00:12:14,170 Istället för printf, säger vi "Sätter", vilket är "sätta sträng." 255 00:12:14,170 --> 00:12:18,100 Det sätter en sträng till konsolen. 256 00:12:18,100 --> 00:12:20,601 Och i det här fallet är vi bara skriva ut "Hello World". 257 00:12:20,601 --> 00:12:23,100 Vi behöver inte parentes, men det är ganska mycket likartad. 258 00:12:23,100 --> 00:12:26,190 >> Och sedan om du vill att göra något här, 259 00:12:26,190 --> 00:12:30,450 som skriver ut ett gäng "smalls" och ett gäng "bigs" i en While-loop, 260 00:12:30,450 --> 00:12:32,060 Det är ungefär som i C, eller hur? 261 00:12:32,060 --> 00:12:35,090 Du har inte params, men det är ganska mycket samma. 262 00:12:35,090 --> 00:12:37,300 Fördjupningen här räknas, så x är lika med 1. 263 00:12:37,300 --> 00:12:41,250 Och sedan Medan x är mindre än 50-- detta är ett If, är detta ett annat. 264 00:12:41,250 --> 00:12:42,810 Det är ganska mycket som vad du såg. 265 00:12:42,810 --> 00:12:47,150 >> Och sedan x + = 1 är bara uppräkning, ungefär som att göra ++ som du kan 266 00:12:47,150 --> 00:12:50,213 göra i C. Men det är ganska mycket vad du såg i C. 267 00:12:50,213 --> 00:12:52,380 Det bör inte vara för komplicerat. 268 00:12:52,380 --> 00:12:54,320 Men det är mer kraftfull. 269 00:12:54,320 --> 00:13:00,100 Så finns det några kommandon här som är definitivt lite nyare. 270 00:13:00,100 --> 00:13:05,110 >> Så till exempel "sätter". 271 00:13:05,110 --> 00:13:08,680 Du kan använda denna hashtag notation här för att bara skriva ut something-- 272 00:13:08,680 --> 00:13:13,490 ganska mycket som vad du skulle göra om % D eller% C eller något sånt. 273 00:13:13,490 --> 00:13:17,600 Och du kan faktiskt få ett Om direkt efter uttalandet. 274 00:13:17,600 --> 00:13:21,180 Så jag vill bara göra this-- Om x är större än tre. 275 00:13:21,180 --> 00:13:24,129 Så varför skulle jag behöva göra en hel Om blocket? 276 00:13:24,129 --> 00:13:24,670 JAG VET INTE. 277 00:13:24,670 --> 00:13:28,880 Jag kan bara skriva ut detta endast om x är lika med större än 3. 278 00:13:28,880 --> 00:13:32,740 Så detta är en en rad sätt att göra detta i Ruby. 279 00:13:32,740 --> 00:13:35,570 >> En lista i Ruby är något mycket mångsidig. 280 00:13:35,570 --> 00:13:38,110 Så du egentligen inte behöver att ha bara en typ. 281 00:13:38,110 --> 00:13:40,674 Du kan ha en sträng, och sedan några siffror och allt vad. 282 00:13:40,674 --> 00:13:42,590 Och om du vill lägga något till en lista, 283 00:13:42,590 --> 00:13:46,860 Du kan bara använda det här notation här. 284 00:13:46,860 --> 00:13:48,310 >> Och om du vill iterera. 285 00:13:48,310 --> 00:13:56,200 Ganska mycket 4each i PHP, här, du har en lista och du gör "List.each gör." 286 00:13:56,200 --> 00:13:59,464 Och detta "elem," det här är som namnet på varje element 287 00:13:59,464 --> 00:14:00,880 att jag kommer att ha i min lista. 288 00:14:00,880 --> 00:14:03,890 Och då kan jag bara "sätter elem." 289 00:14:03,890 --> 00:14:07,130 Och "sätter" ganska mycket handtag sätta den för dig, skriva ut den. 290 00:14:07,130 --> 00:14:09,920 Det spelar ingen roll om det är en sträng eller en int. 291 00:14:09,920 --> 00:14:12,790 Det kommer att fungera det ut för dig. 292 00:14:12,790 --> 00:14:14,270 Rätt? 293 00:14:14,270 --> 00:14:14,790 Cool. 294 00:14:14,790 --> 00:14:19,980 >> Och precis som PHP, Ruby och HTML också integrera mycket, mycket snyggt. 295 00:14:19,980 --> 00:14:23,340 Och här finns det en del HTML med Ruby i den. 296 00:14:23,340 --> 00:14:25,860 Så vi har en kropp tagg som i HTML. 297 00:14:25,860 --> 00:14:28,270 Och om vi vill kontrollera som en användare är, till exempel, 298 00:14:28,270 --> 00:14:35,730 loggat in kan vi bara säga, början av Ruby, om user.logged_in ?, slutet av Ruby. 299 00:14:35,730 --> 00:14:39,240 Skriv hela denna sak, vilket har några Ruby i den, vilket är precis 300 00:14:39,240 --> 00:14:42,230 ungefär som den syntax för PHP som skriver ut en variabel. 301 00:14:42,230 --> 00:14:43,380 Låt oss skriva ut user.name. 302 00:14:43,380 --> 00:14:48,870 >> Så välkomna, Stephen, insidan av en HTML div. 303 00:14:48,870 --> 00:14:53,760 Och i slutet, vi har ett "slut" och Ruby-kod, vilket innebär att detta är min 304 00:14:53,760 --> 00:14:54,470 Om blocket. 305 00:14:54,470 --> 00:14:55,060 OK? 306 00:14:55,060 --> 00:14:57,684 Så det är precis som en sömlös integration mellan Ruby och HTML. 307 00:14:57,684 --> 00:15:00,056 308 00:15:00,056 --> 00:15:01,430 Det finns också massor av resurser. 309 00:15:01,430 --> 00:15:06,290 Men innan vi går vidare, det gör någon har några frågor om Ruby, någonting? 310 00:15:06,290 --> 00:15:08,960 OK. 311 00:15:08,960 --> 00:15:12,250 >> Det finns massor av resurser på nätet att tryruby.org, Code Academy, 312 00:15:12,250 --> 00:15:18,740 ruby-lang.org, där du kan prova det ut i din webbläsare innan du faktiskt 313 00:15:18,740 --> 00:15:22,310 säger, åh, OK, jag ska använda Ruby för mitt slutprojekt. 314 00:15:22,310 --> 00:15:24,020 Och så definitivt ge dem ett försök. 315 00:15:24,020 --> 00:15:26,510 Alla dessa bilder är kommer att finnas tillgängliga på nätet, 316 00:15:26,510 --> 00:15:28,950 så du kan bara ladda ner dem. 317 00:15:28,950 --> 00:15:30,115 Och ja? 318 00:15:30,115 --> 00:15:31,889 >> PUBLIK: [OHÖRBAR] vad du just visade 319 00:15:31,889 --> 00:15:36,851 var HTML koden bäddas in den till denna föreställning om Model View 320 00:15:36,851 --> 00:15:37,350 Controller? 321 00:15:37,350 --> 00:15:37,610 >> GABRIEL GUIMARAES: Ja. 322 00:15:37,610 --> 00:15:40,290 Vi kommer att göra det i en andra när vi visar vårt exempel, OK? 323 00:15:40,290 --> 00:15:41,290 Tack för frågan. 324 00:15:41,290 --> 00:15:44,760 Så frågan var i princip om vi kan visa denna integration av Ruby 325 00:15:44,760 --> 00:15:49,230 i HTML inom Model Visa Controller ram. 326 00:15:49,230 --> 00:15:51,710 >> Så tanken på modell View Controller ram 327 00:15:51,710 --> 00:15:55,740 är det är i princip en filosofi, precis som Stephen visade här. 328 00:15:55,740 --> 00:15:58,177 Och det är inte något att du måste göra, 329 00:15:58,177 --> 00:16:00,510 men det är något som gör ditt liv så mycket enklare. 330 00:16:00,510 --> 00:16:04,170 Och Ruby on Rails är byggd kring denna filosofi kod. 331 00:16:04,170 --> 00:16:06,320 Så vi kommer att visa ett exempel mycket snart. 332 00:16:06,320 --> 00:16:07,340 >> Så Rails är kärlek. 333 00:16:07,340 --> 00:16:09,140 Många människor använder det, som jag sa. 334 00:16:09,140 --> 00:16:10,510 Och det är riktigt kul. 335 00:16:10,510 --> 00:16:12,360 Ni bör definitivt ge det ett försök. 336 00:16:12,360 --> 00:16:15,120 MVC gör allting enklare. 337 00:16:15,120 --> 00:16:18,110 Så Model View Controller, separerings saker 338 00:16:18,110 --> 00:16:21,450 och att sätta en människa, per se, eller en del av din ansökan 339 00:16:21,450 --> 00:16:24,850 att göra var och en av de olika jobb att du ansökan har att göra. 340 00:16:24,850 --> 00:16:26,676 Och mindre tid på problemen låg nivå. 341 00:16:26,676 --> 00:16:27,800 Och mycket populärt just nu. 342 00:16:27,800 --> 00:16:29,917 Vi har Skenor 4,0, som är en ny version. 343 00:16:29,917 --> 00:16:31,500 Och det kommer med en massa coola grejer. 344 00:16:31,500 --> 00:16:32,562 En annan fråga. 345 00:16:32,562 --> 00:16:34,490 >> PUBLIK: En annan fråga. 346 00:16:34,490 --> 00:16:39,310 Ruby on Rails kontra Ruby on Rails Grails. 347 00:16:39,310 --> 00:16:40,230 >> GABRIEL GUIMARAES: OK. 348 00:16:40,230 --> 00:16:42,252 Frågan var, Ruby on Rails kontra Ruby-- 349 00:16:42,252 --> 00:16:42,960 PUBLIK: Grails. 350 00:16:42,960 --> 00:16:43,490 Ruby? 351 00:16:43,490 --> 00:16:44,490 >> GABRIEL GUIMARAES: Yeah. 352 00:16:44,490 --> 00:16:45,955 Så Ruby är språket. 353 00:16:45,955 --> 00:16:46,745 >> PUBLIK: Nej 354 00:16:46,745 --> 00:16:50,360 Jag ber dig att jämföra ett språk och en ram, Ruby on Rails, 355 00:16:50,360 --> 00:16:52,975 med en annan populär språk framework-- Grails-- med Ruby 356 00:16:52,975 --> 00:16:53,310 on Rails. 357 00:16:53,310 --> 00:16:53,720 >> GABRIEL GUIMARAES: OK. 358 00:16:53,720 --> 00:16:54,480 Ursäkta. 359 00:16:54,480 --> 00:16:57,390 Frågan var, jämföra Ruby och Ruby on Rails 360 00:16:57,390 --> 00:16:59,750 till en annan ram och another-- 361 00:16:59,750 --> 00:17:01,022 >> PUBLIK: Ruby. 362 00:17:01,022 --> 00:17:01,954 Det är OK. 363 00:17:01,954 --> 00:17:03,820 Om du inte vet om det, det är bra. 364 00:17:03,820 --> 00:17:05,359 >> GABRIEL GUIMARAES: Precis, vad jag förstår är that-- 365 00:17:05,359 --> 00:17:07,080 >> PUBLIK: Det finns en annan ramverk kallat Grails. 366 00:17:07,080 --> 00:17:07,700 >> GABRIEL GUIMARAES: Åh, Grails. 367 00:17:07,700 --> 00:17:08,650 Jag har aldrig hört talas om det. 368 00:17:08,650 --> 00:17:09,640 Ursäkta. 369 00:17:09,640 --> 00:17:11,690 Jag har aldrig hört talas om Groovy on Rails. 370 00:17:11,690 --> 00:17:12,744 Ursäkta. 371 00:17:12,744 --> 00:17:14,869 >> PUBLIK: Det är mycket bättre integrerat med Java. 372 00:17:14,869 --> 00:17:15,450 >> GABRIEL GUIMARAES: Jag förstår. 373 00:17:15,450 --> 00:17:17,555 >> PUBLIK: Jag är bara nyfiken om några människor jag känner like-- 374 00:17:17,555 --> 00:17:20,240 >> GABRIEL GUIMARAES: Nej, jag har aldrig hört talas om att man, tyvärr. 375 00:17:20,240 --> 00:17:20,700 Grails. 376 00:17:20,700 --> 00:17:21,410 >> PUBLIK: Och vissa människor uppenbarligen gillar Ruby on Rails. 377 00:17:21,410 --> 00:17:22,640 >> GABRIEL GUIMARAES: Jag har begagnad Ruby on Rails mycket. 378 00:17:22,640 --> 00:17:24,790 Jag har använt några Django med Python, som jag sa. 379 00:17:24,790 --> 00:17:26,329 Jag har använt några Laravel. 380 00:17:26,329 --> 00:17:29,490 Men jag hade inte använt Groovy on Rails. 381 00:17:29,490 --> 00:17:31,630 Ursäkta. 382 00:17:31,630 --> 00:17:34,040 Och det är mycket populärt Nu med Rails 4,0. 383 00:17:34,040 --> 00:17:38,180 Liksom, en del av de saker som Räls gör för dig, till exempel, är du 384 00:17:38,180 --> 00:17:43,650 har massor av CSS-filer och massor av JavaScript-filer. 385 00:17:43,650 --> 00:17:45,790 Och du kan behandla dem som separat och allt. 386 00:17:45,790 --> 00:17:50,010 >> Men då är det automatically-- när du skickar din kod till produktion, 387 00:17:50,010 --> 00:17:52,770 Det sammanställer automatiskt dem alla i en enda fil 388 00:17:52,770 --> 00:17:55,150 som är minified utan någon utrymmen, så att det tar upp 389 00:17:55,150 --> 00:17:59,400 mindre utrymme i din ansökan, så att du verkligen kan skala saker mycket. 390 00:17:59,400 --> 00:18:04,380 Det är därför sådana stora företag som Twitter och GitHub 391 00:18:04,380 --> 00:18:10,220 använder Rails, eftersom den gör allt det åt dig, vilket är riktigt coolt. 392 00:18:10,220 --> 00:18:12,840 >> En sak som är väldigt, mycket, mycket skrämmande 393 00:18:12,840 --> 00:18:18,450 för människor, inklusive mig, som försöker arbeta 394 00:18:18,450 --> 00:18:22,430 med en ram i början, är att när du startar i en ansökan, 395 00:18:22,430 --> 00:18:24,440 du kommer att se en massa filer. 396 00:18:24,440 --> 00:18:28,460 Liksom, när du skapar Rails Ny, min ansökan, 397 00:18:28,460 --> 00:18:31,710 du kommer att se alla dessa folders-- app, bin, config, db, lib, 398 00:18:31,710 --> 00:18:32,482 logga, offentligt. 399 00:18:32,482 --> 00:18:33,690 Liksom, massor av grejer. 400 00:18:33,690 --> 00:18:35,030 >> Och första gången jag såg att, jag var som, 401 00:18:35,030 --> 00:18:36,570 OK, jag har ingen aning om vad som händer. 402 00:18:36,570 --> 00:18:38,890 Jag vill bara skapa en webbplats med "Hej, världen" 403 00:18:38,890 --> 00:18:41,730 och detta ger mig, liksom, 100 miljarder olika sidor. 404 00:18:41,730 --> 00:18:43,070 Jag vet inte vad som händer. 405 00:18:43,070 --> 00:18:47,460 Så snälla bli inte alltför avskräcks av det. 406 00:18:47,460 --> 00:18:53,699 >> Tanken är att det faktiskt har hälften av ett hus där för dig redan. 407 00:18:53,699 --> 00:18:55,490 Den har en hel ramverk för dig redan. 408 00:18:55,490 --> 00:18:56,948 Det är därför det finns så många filer. 409 00:18:56,948 --> 00:19:00,150 Men det fina är att det separerar dem alla mycket snyggt. 410 00:19:00,150 --> 00:19:03,370 Oddsen är att du inte behöver oroa dig om de flesta av dessa mappar. 411 00:19:03,370 --> 00:19:05,820 >> Den viktigaste, jag skulle säga, är app-mappen, 412 00:19:05,820 --> 00:19:07,147 där din app faktiskt lever. 413 00:19:07,147 --> 00:19:09,730 Så config, kommer du att måste configurate lite grejer, 414 00:19:09,730 --> 00:19:12,840 som din databas och saker som vilken typ av databas du använder. 415 00:19:12,840 --> 00:19:17,430 Men andra än att, liksom de flesta av ditt arbete kommer att ske i app. 416 00:19:17,430 --> 00:19:21,620 Så i app, har du tillgångar, controllers, hjälpare, utskick, modeller, vyer. 417 00:19:21,620 --> 00:19:24,460 Så här börjar du se att styrenheter, modeller och vyer kommer 418 00:19:24,460 --> 00:19:25,410 i spel. 419 00:19:25,410 --> 00:19:27,270 >> Utskick är bara om du vill skicka e-post. 420 00:19:27,270 --> 00:19:29,400 Medhjälpare om du vill skapa några funktioner 421 00:19:29,400 --> 00:19:32,050 att du använder mycket i vyn. 422 00:19:32,050 --> 00:19:34,490 Så du sätta dem i hjälpare. 423 00:19:34,490 --> 00:19:39,000 Och tillgångar är i grunden alla dina bilder, alla dina CSS, 424 00:19:39,000 --> 00:19:41,200 alla dina JavaScript, och liksom de sorter 425 00:19:41,200 --> 00:19:43,110 saker som får skickas till klienten. 426 00:19:43,110 --> 00:19:45,500 Och allt som är i tillgångarna, som jag sa tidigare, blir minified. 427 00:19:45,500 --> 00:19:45,940 Den är sammanställd. 428 00:19:45,940 --> 00:19:49,189 Och du behöver verkligen inte oroa sig att när det går till produktionskoden. 429 00:19:49,189 --> 00:19:49,770 Cool. 430 00:19:49,770 --> 00:19:54,205 >> Nu Zack kommer att komma in, och han är kommer att göra ett exempel på Twitter50. 431 00:19:54,205 --> 00:19:54,970 >> PUBLIK: Woo-hoo! 432 00:19:54,970 --> 00:19:56,726 >> ZACK CHAUVIN: Awesome. 433 00:19:56,726 --> 00:20:00,180 Så jag fick chansen att arbeta med Ruby on Rails i sommar. 434 00:20:00,180 --> 00:20:01,580 Det är en fantastisk ram. 435 00:20:01,580 --> 00:20:03,580 Jag är väldigt svag för det. 436 00:20:03,580 --> 00:20:09,770 Och jag ska bara visa en liten bit av ett exempel på hur det kan se ut. 437 00:20:09,770 --> 00:20:11,020 Hoppa över till Chrome. 438 00:20:11,020 --> 00:20:16,350 Så detta är ett exempel på en mycket enkel Ruby on Rails application-- något 439 00:20:16,350 --> 00:20:19,690 som detta är något att Ruby verkligen utmärker 440 00:20:19,690 --> 00:20:24,070 that-- precis där din modeller är mycket väl definierad. 441 00:20:24,070 --> 00:20:27,150 >> I det här exemplet ser du två olika modeller, vilket 442 00:20:27,150 --> 00:20:30,380 är att vi har användare och vi har tweets. 443 00:20:30,380 --> 00:20:33,480 Så det här är Twitter50, Harvard egen Twitter. 444 00:20:33,480 --> 00:20:36,820 Som ni ser, jag är inloggad somzack. 445 00:20:36,820 --> 00:20:38,860 Och jag kan göra nya tweets. 446 00:20:38,860 --> 00:20:42,266 Så jag think-- "Detta är en" - sorry? 447 00:20:42,266 --> 00:20:43,182 PUBLIK: [OHÖRBAR]. 448 00:20:43,182 --> 00:20:44,061 ZACK CHAUVIN: Åh, OK. 449 00:20:44,061 --> 00:20:45,060 Behöver för att stoppa servern. 450 00:20:45,060 --> 00:20:47,480 Utmärkt. 451 00:20:47,480 --> 00:20:49,630 Så här är vi. 452 00:20:49,630 --> 00:20:52,520 Som ni ser, vi har vår Twitter ansökan här. 453 00:20:52,520 --> 00:20:55,020 Och det är super lätt att starta servern. 454 00:20:55,020 --> 00:20:57,991 Vi ska bara göra "räls server." 455 00:20:57,991 --> 00:20:58,490 Stor. 456 00:20:58,490 --> 00:20:58,990 OK. 457 00:20:58,990 --> 00:21:00,830 Tack för det. 458 00:21:00,830 --> 00:21:02,200 Så nu kör vi. 459 00:21:02,200 --> 00:21:06,120 >> Och vi kommer att säga, "Detta är en fantastisk seminarium. " 460 00:21:06,120 --> 00:21:08,870 Och låt oss se vad som händer. 461 00:21:08,870 --> 00:21:10,020 Så vi ska twittra om det. 462 00:21:10,020 --> 00:21:13,390 Ner i botten, kan du se nu finns det mer än tre tweets. 463 00:21:13,390 --> 00:21:15,980 Så vi har lite av sidnumrering pågår. 464 00:21:15,980 --> 00:21:19,640 Och vi har den tweet. 465 00:21:19,640 --> 00:21:24,010 Och jag kan också söka genom min tweets-- sökning för detta och de två 466 00:21:24,010 --> 00:21:27,960 sådana som har ordet "Detta" i dem dyker upp. 467 00:21:27,960 --> 00:21:30,860 Vi kan också ta bort tweets från klicka på den lilla knappen Ta bort. 468 00:21:30,860 --> 00:21:36,440 Och självklart kan jag bara ta bort posten som tillhörde mig. 469 00:21:36,440 --> 00:21:39,030 >> Redan har vi nästan har funktionalitet Twitter. 470 00:21:39,030 --> 00:21:42,000 Liksom, när man tänker på det, Twitter egentligen inte göra så mycket. 471 00:21:42,000 --> 00:21:44,280 Det har användare, den har tweets. 472 00:21:44,280 --> 00:21:47,690 Det finns lite mer komplex funktionalitet. 473 00:21:47,690 --> 00:21:52,960 Men när du verkligen komma ner till det, det är ganska enkel Ruby on Rails app. 474 00:21:52,960 --> 00:21:57,560 Och ungefär så här, med en god förståelse för Ruby on Rails, 475 00:21:57,560 --> 00:22:00,680 Du kan nog gör i en timme eller två. 476 00:22:00,680 --> 00:22:04,210 >> Och som verkligen kommer tillbaka till Ruby mantra, 477 00:22:04,210 --> 00:22:07,540 vilket är konventioner över konfigurationer. 478 00:22:07,540 --> 00:22:10,965 Så tillbaka i dag, folk, när som helst De ville göra denna webbplats, 479 00:22:10,965 --> 00:22:12,340 skulle behöva börja om från början. 480 00:22:12,340 --> 00:22:13,740 OK, jag vill göra en hemsida. 481 00:22:13,740 --> 00:22:15,970 Låt oss göra den här filen och filen och filen. 482 00:22:15,970 --> 00:22:19,180 >> Med Ruby on Rails, det finns inget av det. 483 00:22:19,180 --> 00:22:21,170 Du säger, jag vill ha en ny app. 484 00:22:21,170 --> 00:22:25,010 Och precis som Gabe visade oss, det skapar hela filstrukturen för oss. 485 00:22:25,010 --> 00:22:27,490 Och vi ändrar bara små delar som vi behöver. 486 00:22:27,490 --> 00:22:31,570 Vi skräddarsyr vad som just är unikt vår app. 487 00:22:31,570 --> 00:22:32,250 Cool. 488 00:22:32,250 --> 00:22:38,540 Så gå tillbaka till vår presentation preview-- intressant. 489 00:22:38,540 --> 00:22:41,408 490 00:22:41,408 --> 00:22:42,724 Var ska jag presentera? 491 00:22:42,724 --> 00:22:43,640 PUBLIK: Helskärm. 492 00:22:43,640 --> 00:22:45,715 Överst till höger. 493 00:22:45,715 --> 00:22:48,480 >> ZACK CHAUVIN: Utmärkt. 494 00:22:48,480 --> 00:22:48,990 Cool. 495 00:22:48,990 --> 00:22:49,490 OK. 496 00:22:49,490 --> 00:22:51,480 Så först av allt, modellen. 497 00:22:51,480 --> 00:22:54,100 Stephen gjorde en fantastisk jobb med beskriver MVC. 498 00:22:54,100 --> 00:22:57,980 Och nu ska vi relatera det tillbaka till Ruby on Rails. 499 00:22:57,980 --> 00:23:00,730 Så den modell du kan typ av tänker på som databasen. 500 00:23:00,730 --> 00:23:04,870 Du har sett detta i CS50 Finans, där modell butiker 501 00:23:04,870 --> 00:23:07,590 informationen om hur många lager du har, 502 00:23:07,590 --> 00:23:10,986 eller alla de transaktioner som du gjort. 503 00:23:10,986 --> 00:23:12,860 Detta är ett exempel på en linje av hur du skulle 504 00:23:12,860 --> 00:23:15,640 gå om att göra en ny modell i Rails. 505 00:23:15,640 --> 00:23:17,102 Så jag vill ha en användare. 506 00:23:17,102 --> 00:23:19,060 Det kommer att ha en e-post, som är en sträng, 507 00:23:19,060 --> 00:23:20,990 och ett lösenord, vilket är också strängen. 508 00:23:20,990 --> 00:23:27,150 Så det är som those-- jag vill varje rad i mitt bord för användare att se ut så. 509 00:23:27,150 --> 00:23:30,730 >> En riktigt häftigt del om Rails är att det 510 00:23:30,730 --> 00:23:33,755 gör det onödigt att skriva någon SQL ganska mycket. 511 00:23:33,755 --> 00:23:38,640 Hur många av er älskade skriva SQL i PSET 7? 512 00:23:38,640 --> 00:23:39,770 Exakt. 513 00:23:39,770 --> 00:23:41,840 SQL är inte särskilt användarvänligt. 514 00:23:41,840 --> 00:23:46,470 Och Rails abstraherar allt borta med dessa riktigt enkla kommandon. 515 00:23:46,470 --> 00:23:51,580 Så till exempel, om vi har en användaren, har en användare många tweets. 516 00:23:51,580 --> 00:23:56,580 Och var och en av dem tweets tillhör en användare. 517 00:23:56,580 --> 00:23:59,520 >> Så om du ser här, det här är vår modell för vår tweet. 518 00:23:59,520 --> 00:24:02,750 Och allt vi har att säga är denna enda line-- jag en tweet 519 00:24:02,750 --> 00:24:05,090 och jag tillhör en användare. 520 00:24:05,090 --> 00:24:10,160 Och med denna enda linje och en lite databaskonfiguration, 521 00:24:10,160 --> 00:24:12,990 Rails sätter upp denna relation. 522 00:24:12,990 --> 00:24:17,450 När som helst, jag kan bara säga, zack.tweets, liksom, ge mig alla Zack tweets. 523 00:24:17,450 --> 00:24:19,420 Ingen SQL. 524 00:24:19,420 --> 00:24:20,040 Super enkel. 525 00:24:20,040 --> 00:24:26,580 Återigen, det är konvention över konfiguration i spel. 526 00:24:26,580 --> 00:24:29,770 >> Du kan se en liten bit av ett exempel på Ruby här. 527 00:24:29,770 --> 00:24:32,740 Som Gav sagt, skriver Ruby är ungefär som att skriva engelska. 528 00:24:32,740 --> 00:24:35,540 Det är en mycket högnivåspråk, och det gör det riktigt enkelt 529 00:24:35,540 --> 00:24:42,380 för oss att säga saker som, jag vill se till att denna tweet har en kropp. 530 00:24:42,380 --> 00:24:43,740 Dess närvaro är sant. 531 00:24:43,740 --> 00:24:47,170 Och jag vill se till att detta tweet, precis som vanligt Twitter, 532 00:24:47,170 --> 00:24:49,020 har en maxlängd på 140. 533 00:24:49,020 --> 00:24:52,800 Det är super intuitiv, en riktigt bra språk. 534 00:24:52,800 --> 00:24:54,590 >> Nästa upp har vi utsikten. 535 00:24:54,590 --> 00:24:57,510 Så detta innebär HTML och CSS. 536 00:24:57,510 --> 00:25:00,490 Och här är ett exempel på en vy. 537 00:25:00,490 --> 00:25:05,600 Så Ruby on Rails slags sömlöst integrerar både Ruby och HTML 538 00:25:05,600 --> 00:25:08,880 i syfte att generera vad vi vill på sidan. 539 00:25:08,880 --> 00:25:11,380 Så detta är ett exempel på vår layout. 540 00:25:11,380 --> 00:25:15,710 Så du kan se några taggar som du killar är vana vid, som HTML, kropp, 541 00:25:15,710 --> 00:25:17,250 allt det bra grejer. 542 00:25:17,250 --> 00:25:21,760 >> Och just här, men vi införliva en del Ruby genom att säga, 543 00:25:21,760 --> 00:25:25,390 om det finns ett meddelande att visa, sedan visa meddelandet i en div. 544 00:25:25,390 --> 00:25:28,060 Så jag kommer inte att få för mycket in i det. 545 00:25:28,060 --> 00:25:31,190 Men detta är i allmänhet en sida som får återges on-- 546 00:25:31,190 --> 00:25:33,960 och oavsett vilken sida du är På, blir detta återges. 547 00:25:33,960 --> 00:25:38,110 Så detta är vad som får ingå alltid. 548 00:25:38,110 --> 00:25:38,980 Cool. 549 00:25:38,980 --> 00:25:42,730 >> Ett annat exempel på en view-- detta är den där valde alla tweets. 550 00:25:42,730 --> 00:25:45,630 Och en del av det här kanske ser ganska bekant. 551 00:25:45,630 --> 00:25:50,050 Så till exempel, just här, vi är looping igenom alla tweets, 552 00:25:50,050 --> 00:25:51,960 och vi skriva ut dem. 553 00:25:51,960 --> 00:25:54,320 Så här är där vi är skriva ut kroppen. 554 00:25:54,320 --> 00:26:00,910 Och om tweet s user-- här är en verkliga exempel på någon SQL är inblandade. 555 00:26:00,910 --> 00:26:04,390 Jag bara frågar, är detta tweet användar den aktuella användaren? 556 00:26:04,390 --> 00:26:06,030 Visar sedan en länk för att ta bort den. 557 00:26:06,030 --> 00:26:06,880 Det är super enkelt. 558 00:26:06,880 --> 00:26:09,670 559 00:26:09,670 --> 00:26:10,920 >> Regulatorn. 560 00:26:10,920 --> 00:26:14,390 Så detta är, återigen, gränssnittet mellan modellen och vyn. 561 00:26:14,390 --> 00:26:17,820 Det är den som gör det hårda arbetet av interacting-- vara mellanhand. 562 00:26:17,820 --> 00:26:20,980 Den laddar information för visa, som vi får se i en sekund. 563 00:26:20,980 --> 00:26:23,850 Och för att samverka med modellen, det 564 00:26:23,850 --> 00:26:29,170 kallar modell metoder, som är vad ni är bekant som funktioner. 565 00:26:29,170 --> 00:26:31,490 >> Så till exempel, är det vår tweet controller. 566 00:26:31,490 --> 00:26:33,930 Det kan se lite skrämmande just nu. 567 00:26:33,930 --> 00:26:38,240 Men det är faktiskt super intuitivt när du börjar dyka in. 568 00:26:38,240 --> 00:26:42,990 Så till exempel i vårt index, det är där vi vill visa alla tweets. 569 00:26:42,990 --> 00:26:46,910 Och så denna linje i grunden bara frågar efter alla tweets. 570 00:26:46,910 --> 00:26:50,300 Och då är vi initiera både de nya tweet-- så gillar 571 00:26:50,300 --> 00:26:52,320 om de vill skapa en ny tweet på den sidan. 572 00:26:52,320 --> 00:26:54,250 >> Och det frågar vad den aktuella användaren är. 573 00:26:54,250 --> 00:26:58,850 Och detta är mycket besläktad med den render att du såg i PSET 7, 574 00:26:58,850 --> 00:27:02,230 där det är bara typ att berätta den view-- det är typ av, liksom, 575 00:27:02,230 --> 00:27:06,284 passerar de variabler som du är kommer att behöva i syfte att vyn. 576 00:27:06,284 --> 00:27:08,200 Och det finns en hel drös av olika metoder 577 00:27:08,200 --> 00:27:10,410 att denna tweet controller kan hantera. 578 00:27:10,410 --> 00:27:12,495 >> Men egentligen, gör Rails ett bra jobb med slag 579 00:27:12,495 --> 00:27:18,910 att dela upp dem i olika åtgärder som handkontrollen kan göra. 580 00:27:18,910 --> 00:27:23,800 Finns det några frågor om någon av MVC delar Rails? 581 00:27:23,800 --> 00:27:25,550 Typ av bara en bris genom. 582 00:27:25,550 --> 00:27:29,250 Så ni kan kontrollera ut det på egen hand. 583 00:27:29,250 --> 00:27:30,106 Grymt. 584 00:27:30,106 --> 00:27:31,200 Vi ska hålla kommer. 585 00:27:31,200 --> 00:27:32,546 >> Så installerar Rails. 586 00:27:32,546 --> 00:27:35,170 Installera Rails kan vara, liksom, en av de mer skrämmande delarna 587 00:27:35,170 --> 00:27:37,830 av de hela Räls processen, tyvärr. 588 00:27:37,830 --> 00:27:40,450 Men självklart, alla oss är runt för att hjälpa. 589 00:27:40,450 --> 00:27:42,590 Och när det är på det, mycket stora resurser, 590 00:27:42,590 --> 00:27:45,100 som Gabe nämnde, för att komma igång. 591 00:27:45,100 --> 00:27:47,230 Här är de länkar som du behöver för att 592 00:27:47,230 --> 00:27:51,460 att hämta Rails för att få det installerat på din dator. 593 00:27:51,460 --> 00:27:54,240 Självklart är det tillgängligt för både Windows och Mac 594 00:27:54,240 --> 00:27:55,600 och för CS50 apparaten. 595 00:27:55,600 --> 00:27:58,520 596 00:27:58,520 --> 00:28:00,020 Frågor om allt vi har sagt? 597 00:28:00,020 --> 00:28:04,265 598 00:28:04,265 --> 00:28:06,690 >> PUBLIK: Jag skulle vara intresserade av, actually-- 599 00:28:06,690 --> 00:28:10,255 så jag vet att nedladdning programvara är det största hindret. 600 00:28:10,255 --> 00:28:14,807 Om det finns tillräckligt med intresse att ha en hämtar minisession eller något. 601 00:28:14,807 --> 00:28:15,640 ZACK CHAUVIN: Mm-hm. 602 00:28:15,640 --> 00:28:15,692 Yeah. 603 00:28:15,692 --> 00:28:16,900 Det kan vara riktigt användbart. 604 00:28:16,900 --> 00:28:20,650 Om någon är riktigt gung-ho om använda detta för deras projekt 605 00:28:20,650 --> 00:28:26,555 eller i framtiden, då skulle vi definitivt gärna prata med dig om detta. 606 00:28:26,555 --> 00:28:27,055 Mm-hm. 607 00:28:27,055 --> 00:28:29,530 >> PUBLIK: En relaterad fråga vad jag frågade innan. 608 00:28:29,530 --> 00:28:32,563 För de av er som har gjort andra ramverk som fortfarande 609 00:28:32,563 --> 00:28:34,354 försöker göra samma sak sak, göra det lättare 610 00:28:34,354 --> 00:28:38,452 att bygga en webbplats eller en funktionalitet, tror jag någon mening 611 00:28:38,452 --> 00:28:43,653 om varför vi skulle vara on Rails kontra Zend eller några av de andra ramar 612 00:28:43,653 --> 00:28:44,236 och språk. 613 00:28:44,236 --> 00:28:47,870 >> ZACK CHAUVIN: Jag ska bara säga min $ 0,02 om det. 614 00:28:47,870 --> 00:28:49,090 Jag älskar Ruby on Rails. 615 00:28:49,090 --> 00:28:52,120 Jag har haft möjlighet att arbeta i både PHP och Ruby on Rails. 616 00:28:52,120 --> 00:28:55,291 Jag föredrar mycket Ruby on Skenor grund av Ruby. 617 00:28:55,291 --> 00:28:56,790 Definitivt, det är en stor del av den. 618 00:28:56,790 --> 00:28:58,140 Liksom, när du är väljer din ram, 619 00:28:58,140 --> 00:28:59,490 du också välja ditt språk. 620 00:28:59,490 --> 00:29:03,510 >> Ruby är super accessible-- tror jag en mycket bättre språk än PHP. 621 00:29:03,510 --> 00:29:06,250 Men det är typ av personliga preferenser. 622 00:29:06,250 --> 00:29:09,360 Som väl är ett annat övervägande samhället bakom ramen 623 00:29:09,360 --> 00:29:11,570 att du arbetar med. 624 00:29:11,570 --> 00:29:13,840 >> Just nu Ruby on Rails är riktigt varmt. 625 00:29:13,840 --> 00:29:16,160 Det finns massor av stöd bakom den. 626 00:29:16,160 --> 00:29:19,180 Du skriver något om Stack Overflow om ett problem är du 627 00:29:19,180 --> 00:29:22,350 ha i Ruby on Rails, och det är besvarade. 628 00:29:22,350 --> 00:29:26,900 Återigen, det är öppen källkod, vilket innebär att det ständigt är ändras. 629 00:29:26,900 --> 00:29:28,910 Det finns massor av människor som verkligen är dedikerade 630 00:29:28,910 --> 00:29:32,370 För att göra detta till en riktigt häftigt ram. 631 00:29:32,370 --> 00:29:34,225 Så det är varför skulle jag väljer Ruby on Rails. 632 00:29:34,225 --> 00:29:35,225 GABRIEL GUIMARAES: Yeah. 633 00:29:35,225 --> 00:29:37,562 Jag skulle säga att idén bakom de flesta ramar är du 634 00:29:37,562 --> 00:29:39,770 ska ta reda på det mycket, mycket likt, eller hur? 635 00:29:39,770 --> 00:29:42,210 Så Model View Controller, det faktum att vår styrenhetens 636 00:29:42,210 --> 00:29:44,793 kommer att se ut som något som this-- varje funktion 637 00:29:44,793 --> 00:29:47,235 är som en av dina sidor, och det omdirigeringar dig, 638 00:29:47,235 --> 00:29:48,750 och det initierar variablerna. 639 00:29:48,750 --> 00:29:51,959 Det kommer att vara samma sak för varje ram som du ser ut där. 640 00:29:51,959 --> 00:29:53,375 Och det kommer att bli modell. 641 00:29:53,375 --> 00:29:55,270 Och du kan göra saker som, "tillhör." 642 00:29:55,270 --> 00:29:59,830 Så istället för att göra SQL-versionen, du bara, liksom, gör, user.tweets, 643 00:29:59,830 --> 00:30:01,210 och du får allt. 644 00:30:01,210 --> 00:30:02,650 Alla har det. 645 00:30:02,650 --> 00:30:07,070 Utom i Ruby, gör du user.tweets, och sedan några ramar i PHP, 646 00:30:07,070 --> 00:30:12,010 du gör user.getalltweets VAR min PHP är inte ett problem. 647 00:30:12,010 --> 00:30:13,460 Precis, det är en stor linje. 648 00:30:13,460 --> 00:30:15,320 Det är samma sak, men det är en stor linje. 649 00:30:15,320 --> 00:30:19,350 >> Så det är en av de viktigaste orsakerna av mina preferenser över Ruby. 650 00:30:19,350 --> 00:30:22,290 Det är bara jag gör precis Samma sak i andra ramverk, 651 00:30:22,290 --> 00:30:26,021 det bara tar mig två gånger så långa rader av kod. 652 00:30:26,021 --> 00:30:26,520 OK? 653 00:30:26,520 --> 00:30:29,730 654 00:30:29,730 --> 00:30:32,540 >> Fler frågor? 655 00:30:32,540 --> 00:30:35,200 >> ZACK CHAUVIN: Något Jag ska nämna quickly-- Gabe 656 00:30:35,200 --> 00:30:36,682 pratade lite om pärlor. 657 00:30:36,682 --> 00:30:39,890 Och det är en riktigt great-- Jag menar, det här är typ av gemensam för alla ramar, 658 00:30:39,890 --> 00:30:45,170 att det är lite av en pärla koncept, som är som i min lilla exempel 659 00:30:45,170 --> 00:30:46,680 Jag har inloggning. 660 00:30:46,680 --> 00:30:48,460 Liksom, kan du logga in, logga ut. 661 00:30:48,460 --> 00:30:51,740 Precis, det är faktiskt typ av en komplex process. 662 00:30:51,740 --> 00:30:55,950 Det hanterades lite bit för dig i PSET 7. 663 00:30:55,950 --> 00:31:01,160 Men jag vet fortfarande inte helt hur att implementera inloggnings, sign-out. 664 00:31:01,160 --> 00:31:03,740 Och det beror på att Ruby on Rails har massor 665 00:31:03,740 --> 00:31:06,080 av pärlor som gör sånt åt dig. 666 00:31:06,080 --> 00:31:08,550 >> Återigen, konventioner över konfigurationer. 667 00:31:08,550 --> 00:31:11,050 Alla kommer att göra detta tecken-in, loggar ut steget. 668 00:31:11,050 --> 00:31:14,450 Så varför inte bara göra ett paket, som kallas Utarbeta i detta fall, vilket är en pärla. 669 00:31:14,450 --> 00:31:15,810 Du inkluderar bara det. 670 00:31:15,810 --> 00:31:18,970 Och sedan finns det lite hjälp online med hur man använder den. 671 00:31:18,970 --> 00:31:21,230 Och du behöver inte oroa dig om något sådant. 672 00:31:21,230 --> 00:31:24,060 >> Bifoga bilder till dessa saker-- en pärla för det. 673 00:31:24,060 --> 00:31:27,220 Liksom, när du försöker göra något nytt, det är en pärla för det. 674 00:31:27,220 --> 00:31:29,420 Och du typ av bara pussla ihop dessa pärlor 675 00:31:29,420 --> 00:31:33,160 och bygga en riktigt komplex ansökan mycket snabbt. 676 00:31:33,160 --> 00:31:35,902 677 00:31:35,902 --> 00:31:37,437 Cool. 678 00:31:37,437 --> 00:31:38,270 Fler frågor? 679 00:31:38,270 --> 00:31:39,623 >> STEPHEN TURBAN: Woo-hoo. 680 00:31:39,623 --> 00:31:40,976 Jag tror inte [OHÖRBAR]. 681 00:31:40,976 --> 00:31:41,966 >> GABRIEL GUIMARAES: OK. 682 00:31:41,966 --> 00:31:42,840 Tack så mycket, killar. 683 00:31:42,840 --> 00:31:43,839 >> STEPHEN TURBAN: Buh-bye. 684 00:31:43,839 --> 00:31:44,850 ZACK CHAUVIN: Buh-bye. 685 00:31:44,850 --> 00:31:45,849 >> STEPHEN TURBAN: Woo-hoo. 686 00:31:45,849 --> 00:31:48,150 [Applåder] 687 00:31:48,150 --> 00:31:49,700 >> Yay. 688 00:31:49,700 --> 00:31:50,955