GABRIEL Guimaraes: Hii ni CS50. Karibu Amazing Programu Mtandao na Ruby juu ya reli. Hivyo kwa mtu yeyote ambaye ni nia ya mtandao tovuti ya maendeleo na maamuzi, mtandao maombi, Ruby juu ya reli ni hii ajabu chombo kwamba Twitter, GitHub, Groupon, na kila aina ya ni nzuri, na kubwa, maombi ya mtandao ni kutumia katika miaka michache iliyopita. Na ni kweli, kweli baridi kipengele, baridi chombo, kwa sababu ni mpya. Hivyo ina wote wa nguvu mpya teknolojia kuingizwa katika moja mfumo ambayo husaidia kukabiliana na kila aina ya mambo ya ajabu. Lakini ni nini mfumo? Hivyo mfumo wa kimsingi ni kitu ambacho inajenga - wakati wa kuanza tovuti, kama wewe kuanza kutoka mwanzo, kama wewe kufungua gedit huko, na unataka na kanuni wote ya HTML yako, na kanuni zote za yako PHP, wote wa CSS yako, kila kitu kutoka mwanzo - kwamba tu kwenda kuwa mengi ya kazi. Na mfumo wa literally anatoa nusu ya tovuti kufanyika tayari. Hivyo kuanza mbali na tovuti nusu ambayo ina kila kitu huko kwa ajili yenu. Kama uhusiano database, na kila aina ya mambo ambayo wewe kuwa na wasiwasi kuhusu kama wewe kufanya hivyo kutoka mwanzo, huna na wasiwasi juu ya wale kiwango cha chini maelezo. Lakini leo sisi ni kwenda nje moja ya Nje kwamba Freshman ya darasa la 2017 ni pengine ukoo. Hivyo tovuti hii ni tovuti ya kwamba mimi alifanya kwa darasa wetu juu ya majira ya joto. Ilikuwa ni tovuti ambapo wanafunzi wa darasa la 2017 inaweza kuingia katika na kuingiliana na kila mmoja. Na kisha hii ni ramani - kila mtu, ambapo watu ni. Na tulikuwa na mchezo kitabu, mchezo nyimbo ambapo tuliona nyimbo ya watu na vitabu ya watu. Nini kama kusoma, nini wao kama kusikiliza. Na sehemu ya kuvutia zaidi ya hayo ni kwamba literally alichukua mimi masaa tatu na kanuni yote. Kwa sababu kama mimi alikuwa na kufanya kila kitu kutoka mwanzo, kama kufungua gedit, ni pengine wamechukua me 20, masaa 30. Lakini kwa Ruby juu ya reli, kwa sababu kila kitu kilikuwa tayari kuanzisha kwa ajili yangu, tu alichukua mimi masaa tatu au nne, au kitu kama hicho. Kwa hiyo kile ni Ruby juu ya reli. Ruby juu ya reli, tena kama sisi tayari akasema, ni mfumo. Hii ni picha ya mfumo. Hivyo ni kwenda kuanza kujenga nyumba, tayari kuwa na nusu ya nyumba kufanyika. Hiyo ni mfumo. Na Ruby juu ya reli ni hasa kama hiyo. Na unapaswa kufikiria kama, unaweza kuanza tovuti, unaweza kuanza mtandao wako maombi, tayari tuna nusu ya kufanyika huko. Lakini kwanza, ni nini Ruby? Ruby juu ya reli anatumia mfano maoni mtawala, ambayo ni dhana, ambayo ni kweli kuvutia - na yote ya maombi siku hizi kutumia kitu kama hicho. Wazo hili la kutenganisha mambo katika sehemu tatu, mfano, maoni, na mtawala. Sisi ni kwenda kuzungumza kidogo zaidi juu ya kwamba baadaye. Kwanza, ni nini Ruby? Hivyo hii ni Ruby. Na hii ni ishara ya lugha inayoitwa Ruby. Ruby ni moja ya newish kutafsiriwa lugha, hivyo script. Ni lugha ambayo si ulioandaliwa kama C. Ni ulioandaliwa juu ya kukimbia. Hivyo hiyo ni nzuri kwa sababu, kama PHP, kwa mfano ni pia yake, ni si ulioandaliwa. Hiyo ni nzuri kwa sababu portable wake. Hivyo tu kupita code yako kutoka mashine moja hadi nyingine. Kutoka kwa mashine Linux, Windows mashine, kwa Mac au Apple mashine, au kitu kama hicho. Na huna haja ya kuwa na wasiwasi kuhusu maelezo kuhusu kila maalum mifumo ya uendeshaji. Ni kwenda kufanya kazi kila mahali. Na Ruby ni lugha ambayo - nyie pengine kumbuka hii. Watu kutumia heshi kutekelezwa katika C kwa meza hash wiki iliyopita na alikuwa kila aina ya segmentation makosa. Na kisha mambo hofu kuhusu kama kamba kwamba i huko, kamba i hapa, kwa kweli Herufi za chini au uppercase, au aina hii ya inatia mashaka kiwango cha chini maelezo. Vizuri katika Ruby, kama unataka kutekeleza meza hash, hii ni hasa jinsi kujenga meza hash. Unaweza kusema, kamusi, hiyo ni jina ya kutofautiana yangu, = "Hash.new". Na kisha kamusi ["foo"], na wakati mimi nina kuongeza foo kwa hash yangu meza, mimi nina kusema tu foo ni huko. Na kisha kama nilitaka kuangalia kama foo alikuwa huko, mimi tu kusema kama kamusi ["foo"] == kurudi kweli kweli. Ho, na kwamba hash meza yako. Hiyo ni utekelezaji ya hash meza katika Ruby. Hivyo kila mtu alitaka waweze kuwa na kutumika kitu kama Ruby kwa mwisho pset wiki, sawa? Tuna kila aina ya sababu wanataka kutumia lugha kama Ruby. Ruby ina vito. Gem ni jina kwa ajili ya aina ya maktaba katika Ruby. Hivyo kila aina ya makala ya kuvutia kwamba unaweza kuwa, kwa mfano, kama mimi wanataka kuunganisha maombi yangu. Hiyo Harvard 2017 maombi ilikuwa jumuishi kwa Facebook. Hivyo unaweza kuingia katika, kupitia Facebook, kwa programu. Hivyo kama wewe ni kwenda kufanya hivyo, unaweza kufanya si haja ya kuwa na wasiwasi kuhusu kutuma baadhi HTTP ombi Facebook, na kusubiri kwa majibu, na kulazimisha majibu, na blah, blah, blah. Wewe tu kushusha gem kwamba anafanya yote kwa ajili yenu. Na kisha huna haja ya wasiwasi kuhusu yote. Na kisha mengi ya msaada online, bila shaka. Kuna wengi, wengi, tovuti ambayo ni kwenda kukusaidia wote kwa Ruby na reli. Na ni kura ya kujifurahisha na kanuni. Hasa kwa sababu unaweza kuacha hofu kuhusu matatizo hayo si hivyo furaha. Kama kama kitu fulani ni lowercase au kesi ya juu, na kisha kwa nini hili kutoa segmentation kosa, na unaweza kweli kupiga mbizi katika sana kuvutia mambo ya ajabu. Kupiga mbizi katika matatizo ya kweli ya baridi. Hivyo Ruby ni kama kwa C katika akili. Hivyo si kwenda kuwa kubwa ya kuruka kwa kweli. Hivyo unaweka, hiyo ni magazeti programu yetu katika Ruby. Nadhani unaweza kutumia magazeti pia, lakini unaweka ni nini kila mtu anatumia. Hivyo tu unaweka "Hello World". Unaweza, au unaweza si, na mabano unaozunguka "Hello World" huko. Unaweza tu kuchagua kama au kutumia hiyo. Na kisha x = "1". kitanzi wakati inaonekana pretty kiasi hicho. Ni tu ina chini ya syntax. Ni aina ya safi kidogo. Na kisha kama x> 25 unaweka "Big!" na mwingine unaweka "Small ...". Na ni aina ya C kwa maana ya kwamba. Hivyo kama wewe kuangalia kwamba, unaweza pengine mbinu kuelewa kila kitu kinachoendelea. Lakini ni nguvu zaidi. Nguvu zaidi kwa sababu, zaidi ya hapo, inaweza kufanya mambo ni kwamba - baadhi ya aina ya hackage kidogo. Katika C unaweza kufanya katika tu kufanya kwa line moja. Kwa mfano, unaweka "Mimi ni # {x}". Hii ni syntax tu kwa ajili ya kuweka thamani ya X hapa, na wala magazeti tabia ya x. Katika C mnatakiwa kufanya asilimia d, na kisha kuweka x variable baada ya Koma hapa, au kitu kama hicho. Na katika Ruby kuna shorthand kwa kufanya hivyo tu. Na unaweka hii, kama x> 3, hivyo unaweza kuweka kama wote juu ya mstari mmoja. Na kisha orodha. Orodha katika C, kama safu, una kuweka wimbo wa jinsi kubwa safu yako ni au vinginevyo, kupata segmentation kosa. Safu yako ni aina moja tu. Hivyo ni ama safu ya malipo au safu ya integers. Katika kesi hiyo, mimi umba orodha hapa, kwamba safu, ambayo ina kwanza hiki ni kamba, John, na kisha nne, mbili - wale ni integers. Na kisha mimi tu kuongeza, orodha, Kushoto Angle Bracket, kushoto Angle Bracket, tatu. Hiyo ina maana append tu kitu orodha yangu. Hivyo ni aina ya zaidi ya kuvutia kwa sababu kama alitaka kutumia hii kama rahisi tu orodha ya integers, unaweza, kabisa. Hiyo ni kabisa faini. Tu ya kuweka integers huko. Lakini kama alitaka kufanya kitu ambacho zaidi ya kulazimisha, ambayo ina nyingine mambo, ambayo ina - Sijui, kila aina ya orodha katika huko, au vitu vingine kwamba ni zaidi kuvutia, unaweza kabisa kufanya hivyo. Ni kabisa faini. Na kisha kama unataka iterate kupitia orodha, unaweza kutumia zaidi C-ish aina ya mbinu. Hiyo ni kwa kitanzi, wewe kuanzisha variable, i = "1", au i = "0". Na kisha kwenda, na iterate, na kupata yote ya vipengele. Lakini pia unaweza kutumia hii zaidi Ruby-kama mbinu. Hiyo tu kama list.each. Hiyo kusema tu, kurudi kwangu mambo yote ya orodha. Na kufanya na kila kipengele, kuwaita ELEM. Hivyo hii ni jina tu kwamba mimi nina kutoa kwa kila kipengele. Na sasa hii ni kwenda kurudia kwa ajili ya wote mambo, na ELEM, ni kwenda kwa kuwa kwa njia hiyo sisi kupata kwamba hiki moja. Hivyo unaweza kabisa fimbo na C mbinu, lakini hii kazi pia. Na ni hasa kitu kimoja, OK. Na nyingine zaidi ya kwamba, ni kweli, kweli ni rahisi kuunganisha Ruby na HTML tangu nyie ni nia ya katika maombi ya mtandao. HTML ni dhahiri kitu ambacho utaenda matumizi mengi. Na hapa kama alitaka kuweka Ruby katika HTML, kuanza tu hapa, <%. Hii ina maana, hapa Ruby kuanza. Na kisha%>, aina ya kama PHP katika njia hiyo. Hapa Ruby mwisho na kisha unaweza kuweka yako tu kama hapa. Na kisha mimi na baadhi ya kutofautiana user.logged_in. Katika Ruby, sisi kwa kawaida kuongeza wale, ama kuhojiwa alama au mshangao alama, kama tabia ya benki, tu aina ya kutofautisha kati ya kazi yetu. Lakini wewe tu kuweka kwamba kwa ajili yako mwenyewe. Siyo kitu ambacho mabadiliko kitu chochote katika utendaji. Hivyo tu kuwakumbusha yangu kwamba hii ni kazi - na kazi katika Ruby, badala ya C, kama nilivyosema tayari, hawana haja ya mabano. Ili watumiaji katika kitu, hiyo ni kazi, hiyo ni mbinu. Lakini si wazi haja ya kuweka mabano katika huko. Hivyo tu kuuliza kama mtumiaji watumiaji katika, na kama mtumiaji watumiaji katika, sasa HTML kuanza tena. Hivyo Karibu, na hapa Mimi magazeti user.name. Na hiyo ni yake. Hivyo kwamba ni pretty moja kwa moja mbele, jinsi ninyi kuunganisha Ruby na HTML yako. Na rasilimali, kama nilivyosema, kuna kila aina ya rasilimali kwa ajili ya Ruby. You guys wanaweza kuangalia hii up baadaye kwa sababu wote wawili video, na slides, ni kwenda kuwa inapatikana online. Na sasa hebu kupata ndani ya reli. Reli ni upendo. Reli - hivyo Ruby ni lugha yake. OK, kama PHP, kama vile Python. Ni lugha kiwango cha juu, si kama C. C ya katikati, ngazi ya chini lugha katika maana kwamba Ruby huna kwa wasiwasi kuhusu kumbukumbu uhamishaji, na kuyatumia, na wale aina ya mambo. Lakini reli ni mpango huu kwamba iliandikwa katika Ruby. Na inatumia Ruby, ili kuwa na hii mfumo, kwa maana ya kuwa na uwezo wa kujenga kutisha maombi ya mtandao. Hivyo kuwa na kwanza kufunga Ruby juu ya mashine yako, lakini mashine nyingi tayari kuwa na hiyo. Na kisha kufunga reli juu yake. Tunakwenda kuzungumzia suala hilo baadaye. Na kwa nini Rails? Hivyo MVC, hiyo ni mfano wa kuigwa maoni mtawala kuongelea kidogo kidogo, hufanya kila kitu rahisi kwa sababu ni mgawanyiko mambo ambayo ni conceptually mbalimbali ndani ya mbalimbali sehemu ya maombi yako. Chini ya muda alitumia juu ya matatizo ngazi ya chini, tena, na sana, sana maarufu hivi sasa. Hivyo kwa ambao ni nia ya wale wote kuanzisha eneo, au katika kitu kama kuanza biashara, na watu katika soko la teknolojia ambao ni kuanzisha biashara zao wenyewe sasa hivi ni kweli, kweli mashabiki wa Ruby juu ya Reli kwa sababu ni hivyo haraka. Hivyo unaweza kupata kitu juu na mbio katika chini ya siku, na kwamba kweli nzito sana Hoja kutumia Ruby. Na reli 4.0 - ni safi sana kutoka tanuri sasa. Hivyo reli 4.0 - Nadhani kwanza kutolewa ilikuwa Machi mwaka huu. Na ni kweli ni nzuri, ina wote aina ya mpya, makala ya baridi. Hivyo Ruby juu ya reli ni mfumo kwamba daima kuwa updated kuwa na wote ya teknolojia mpya. mara ya kwanza mimi alijaribu kutumia Ruby juu ya Reli, mimi alikuwa na shida hii kwa sababu mimi kuundwa mtandao wangu maombi ya kwanza, na inaonekana hasa kama hiyo. Hivyo inajenga wote wa files wale kwa wewe, na mimi nilikuwa na wazo nini - ni nini hii? Ni kuundwa wale mafaili yote, na mimi tu alitaka kujenga mpango rahisi, rahisi HTML tovuti. Na sikuweza hata kufanya kitu chochote. Hivyo nilikuwa kidogo kuzidiwa. Lakini hiyo ni moja ya mambo ambayo mara moja kuelewa, kila kitu inakuwa hivyo wazi sana. Hivyo si kuwa na kuzidiwa na kwanza mbele ya nini kujenga kwa mara ya kwanza. Hivyo kile kinachotokea ni reli inajenga wale mafaili yote. Basi mmoja wa kwamba ni doc, nyaraka. Db, kwamba kuhusiana na database. Lib, kwamba maktaba kuingia. Umma, script, na baadhi ya mambo. Pretty much wote wewe ni kwenda na wasiwasi kuhusu ni programu folder, hadi pale. Hiyo ni folder ambayo ina maombi yako. Wote wa files nyingine - baadhi yao ni muhimu, na wewe ni kwenda kujifunza kuhusu baadaye. Lakini wao ni tu hapa vyenye mfumo. Hivyo cornerstones ya kwanza ya nyumba nyie ni kujenga, OK? Lakini programu folder - hiyo ni moja muhimu. Na programu folder ina mali. Mali ni kila kitu pretty much kwamba ijayo. Picha kwa mfano, kila kitu kilicho tuli kwamba kinaendelea kuwa kupakuliwa na tovuti yako. Hivyo picha, JavaScript, CSS - wale aina ya mambo ni mali. Controllers - tunakwenda kuzungumza zaidi kuhusu nini ni controllers, mifano, na mashamba katika pili. Na wasaidizi ni kazi kwamba unaweza kutumia wote juu ya kanuni yako kukusaidia kufanya kitu fulani. Kazi kama umeingia, kwa mfano - user.loggedin. Hiyo ni kazi ambayo pengine wewe kutumia katika maeneo yote ya yako maombi. Hivyo unaweza kuweka kitu kama kwamba katika msaidizi wako. Mailers - kwamba kama wewe ni kwenda kutuma barua pepe kwa watumiaji yako, wanataka kutumia mailer. Na mifano na maoni, tunakwenda kuzungumzia suala hilo hivi sasa. Hivyo mfano maoni mtawala, kwamba msingi ya msingi ya Ruby juu ya Reli, na mifumo zaidi siku hizi, kwa kuwa waaminifu. Hivyo tena, sisi tofauti zote za kanuni zetu katika sehemu tatu tofauti. mfano - mfano ni kimsingi database. Hushughulikia mambo katika database. Hivyo kila meza katika database ina sambamba file ndani ya mfano. Hivyo ni aina ya meza kwa watumiaji. Hivyo wewe ni kuhifadhi taarifa kama jina la mtumiaji, barua yao, wao mitaani, password yao, na mambo kama hayo. Wewe ni kwenda na faili moja katika mfano aitwaye user rb - RB kwa Ruby. Na hapo ni kwenda na wote ya mbinu na vigezo. vigezo ni kwenda yanahusiana kwa jina la mtumiaji, barua pepe, na kila kitu. Na wewe kwenda na mbinu. Hiyo itakuwa ni kitu juu ya - wewe ni kwenda kushughulikia habari hii katika database. Kujenga mfano wa kuigwa na reli, wewe tu kutumia reli kuzalisha. Na kujenga mambo katika reli, wewe kweli wanahitaji terminal. Hivyo ni terminal sana msingi wa mfumo. Wewe tu kuingia katika terminal, na wala reli, kuzalisha mfano wa kuigwa. Na jina la mfano ni mtumiaji. Na mimi nataka tu kwa kuwa na vigezo mbili, safu mbili, katika meza yangu. Hivyo kwamba ni email. Barua pepe ni kamba aina. Password, password ni pia string aina. Hayo ni mambo mawili tu. Ni aina ya simplistic user meza. Lakini unaweza kabisa kuweka mia kitu huko kama alitaka. Na reli pia inafanya sana, rahisi sana na kila aina ya mahusiano ya database. Hivyo kawaida, wakati una meza yako katika database, wao siyo sana huru ya mtu mwingine. Hebu fikiria juu. Unataka kununua na kuuza bidhaa online. OK, hivyo kuwa tovuti ambapo unataka kununua na kuuza bidhaa. Hivyo kila mtumiaji ina bidhaa nyingi kwamba user hii ni tayari kuuza. Na kila mtumiaji pia ina shughuli nyingi kwamba ni unaoendelea, au kitu kama hicho. Na shughuli ni na mtumiaji mwingine. Kila shughuli ni kwa watumiaji mbili tofauti. user hiyo kununua na user hiyo kuuza. Basi hizo kinachojulikana mahusiano ya database. Na hapa tuna hasa wale maneno, ina watu wengi na mali ya. Hao ndio muhimu zaidi. Na wewe tu kwenda kusema, kwa mfano, hii ni mfano wa mfano wa kuigwa katika Harvard 2017 tovuti. Tena, wanafunzi katika hapa - kila mwanafunzi katika tovuti, mwanafunzi ni mfano, ni meza database. Kila mwanafunzi alikuwa vitabu vingi kwa sababu wewe naweza kusema, ni favorite yako vitabu, kulia. Hivyo kila kitabu ni mali ya mwanafunzi hapa chini. Na sifa kupatikana - hiyo tu kusema, wale ni vigezo. Wale ni vigezo kupatikana na mfano huu. Na vigezo ni mwandishi wa kitabu, maelezo, Ghana, na jina la kitabu. Hivyo tu habari kuhusu kitabu. Na hapa nina njia ambayo tu aina kila kitu. Hivyo kufafanua na mwisho hapa, kwamba tu akisema, inakuja njia yangu. Self.sorted_all. Hiyo ni, nipe kila kitu yamepangwa, na kwamba ni jinsi gani kutekeleza kuchagua algorithm, ambayo ni haki rahisi. Lakini kimsingi, hii ni jinsi gani mfano inaonekana kama, OK. Je, mtu yeyote una maswali kuhusu jambo hili database? Mahusiano? Ni wazi kwamba? Ndiyo. Watazamaji: Je, unaweza kufanya aina algorithm? GABRIEL Guimaraes: aina algorithm, OK. Baada ya kupata kutumika Ruby syntax, itakuja kuwa wazi. Lakini kimsingi, elems ni Book.all. Hivyo kitabu ni jina la mfano wangu. Wakati kujenga mfano, inakuja na kila aina ya mbinu nzuri kwa ajili yenu. Hivyo dot.all ni njia ambayo anarudi vitabu vyote. Lakini kupata, kwa mfano, kuwapekua kitabu moja na kurudi kitabu hicho, au kitu kama hicho. Na hivyo elems ni kila kitu. Na Mimi tu kusema elems.sort. Aina ni kujengwa katika Ruby kazi. Na, kufanya ba. Hivyo hii wala tena ni - utaenda aina. Lakini wewe kwenda kupata hoja hii kwa ajili yangu. Na hoja anatumia - hii ni moja ya mambo magumu katika Ruby kweli, hii kufanya lolote. Lakini mara moja kuelewa kila kitu huja sana, angavu sana. Hivyo ab, hii ni kusema mahali wamiliki kwamba mimi nina kwenda kutumia - kama vigezo mimi nina kwenda kutumia, ni kwenda kuitwa a na b. Na wale ni vitabu. Basi, kwa sababu aina mahitaji ya kulinganisha vipengele, kumbuka kwamba? Hivyo wakati wewe kutatua mambo, wewe kulinganisha mambo mawili. Mimi nina kwenda kusema kwamba kila wakati wewe ni kwenda kulinganisha - hivyo hii ni, mimi nina kupita aina hoja. Na hoja ni kila kitu kutoka kufanya kwa na hapa, OK? Na hoja hii, ni kuwaambia tu aina jinsi ya kulinganisha. Aina ingekuwa kazi hapa, lakini itakuwa kulinganisha na wao default kulinganisha algorithm. Mimi nataka kulinganisha katika maalum sana njia, yaani, wakati kitabu iliundwa, wakati kila kitabu iliundwa. Hivyo mimi kusema, kusema jina la kwanza kitabu ni na jina la kitabu cha pili kama b, nataka aina kwa aina kuhusu jambo linalotokana na b.created_at hii ishara weird, a.created_at. Na ishara kwamba weird ni shorthand kwa mtu ni kubwa kuliko nyingine, kurudi 1. Kama mtu ni sawa na nyingine, kurudi sifuri. Kama mtu ni ndogo kuliko nyingine, kurudi minus 1. Hivyo kwamba ni nini ishara kwamba weird ni. Lakini si kwamba muhimu. I mean, nini Mimi nataka wewe guys kupata sasa ni wazo kwamba database - unaweza kuwa na mfano huko. Hivyo huna kuwa na wasiwasi kuhusu kuunganisha na kutumia taarifa SQL, na mambo kama hayo. Pia unaweza kuunda milango ya SQL sindano na wote aina ya matatizo ya usalama. Katika kesi hiyo, huna wasiwasi juu ya hilo. Wewe tu kutumia njia kama book.all. Na kwamba, katika historia bila shaka, ni kwenda Mbegu yako, na ni kwenda kutumia taarifa SQL kupata vitabu vyote. Lakini huna kwa wasiwasi juu ya hilo. Hiyo ni takeaway, OK? Na wakati una taarifa belongs_to kama hii, hiyo ina maana kwamba mara moja una kitabu cha kitu, wewe unaweza kuona nini ni mwanafunzi wake. Hivyo ambayo mwanafunzi ana kitabu hiki? Ili tuweze tu kutumia book.student, na kwamba anatoa nini mwanafunzi ni. Na kwamba ni kweli kipengele kuwa. Sawa, sasa maoni. Hivyo mfano ni nini inaingiliana na database, sawa? maoni kimsingi ni HTML, na CSS, na baadhi JavaScript. Na kwamba ni nini user kweli anaona. user si kwenda kuona database yako. Yeye anaenda kuona baadhi ya data kutoka database iliyoingia katika mtazamaji. Ruby juu ya reli inafanya kweli rahisi kufanya mashamba. Kwanza, kwa sababu tayari inajenga kwa ajili yenu, nje ya boksi, layout. layout ni kimsingi kitu ambacho - kama wote wa kurasa yako na alama juu na, mimi sijui, baadhi orodha au kitu kama hicho, kwamba kurasa wote wako kushiriki katika kawaida, basi huna haja ya kuunda wengi, wengi, HTML files ambapo mafaili yote na kwamba sawa HTML code. I mean kwamba bubu kwa sababu wewe tu kurudia code kati ya files tofauti. Hiyo ni dhahiri si njia nzuri. Hivyo Ruby juu ya reli inajenga layout kwa ajili yenu. Na hii ni kusema tu, kurasa wangu wote ni kwenda na HTML hii, kichwa hii cheo hapa, na wale ni style karatasi kiungo tag. Kuziba katika hapa CSS yangu yote. Kuziba katika hapa wangu wote JavaScript na baadhi meta vitambulisho. Hiyo ni kitu kwamba wao tu kufanya moja kwa moja kwa ajili yenu. Na kisha, mwisho kichwa, sasa hapa kuanza mwili. Na sasa hii ni maudhui yangu halisi. Basi, ikiwa mimi alitaka kuweka kitu kama, a menu hapa, napenda kuweka haki juu ya nafasi hii, au kitu kama hicho, ili kwamba wale wote kurasa yangu pamoja yake. Hivyo layout ni pamoja na kurasa zote. Sasa kwa kuwa mavuno hapa tu anasema, hakuna jambo gani kurasa hii ni katika, tu kuziba katika maudhui ya kwamba ukurasa hapa, OK? Na sasa ni hii, kwa mfano, maudhui ya ukurasa mmoja kwenda kuwa imeingia kwenye kiini kauli hii mavuno moja kwa moja na reli. Lakini hii ni layout pamoja na kurasa zote. Na huu ni mfano wa ukurasa mmoja. Na hii ni hasa ukurasa kwamba orodha vitabu vyote. Hivyo hii ni ya msingi HTML meza juu juu. Hivyo listing vitabu, cheo, mwandishi, maelezo, Ghana. Na hapa sisi kutumia, tena, baadhi ya Ruby syntax, @ books.each-- @ Aina ya anasema kwamba variable yako ni ya kimataifa katika akili. Kwa sababu variable hii ilikuwa kweli alitangaza katika mtawala ambayo wewe ni kwenda kuona hivi sasa. Lakini tu kuchukua nafasi ya kwamba hii @ Vitabu ni variable kwamba ni orodha ya yote ya vitabu. Hivyo books.each, wala, na tena, hii ni kusema tu jinsi gani unataka kwa jina kila iterators ili sisi si kuwa na wasiwasi kuhusu nne, int i blah, blah, blah. Sisi tu kuchukua kila mambo na matumizi yao. Hivyo hii ni kitabu, na kisha tu magazeti hapa. book.title, book.author, book.description, na blah, blah, blah. Na hapa link_to. Hivyo link_to ni tag kiungo kwamba mtumiaji anaweza bonyeza na huenda kwa tovuti nyingine. Link_to, kuonyesha kitabu husika. Hivyo kama user ni hamu sana katika kitabu hiki, basi anaweza bonyeza show. Au bonyeza hariri, kama anataka hariri kitabu. Au kuharibu, kama anataka kufuta kitabu kutoka database. OK, je, hiyo hufanya akili? Nzuri. Hatimaye, mtawala. Hivyo kimsingi mtawala ni interface kati ya mfano wa kuigwa na maoni. Hivyo mfano ni sehemu yako ya kificho kwamba ina database - kila meza katika database ina file husika katika mfano, na kadhalika. Na jinsi ya kufanya mfano wa kuigwa na maoni ya kiutendaji? Hivyo, kwa njia ya mtawala. Nini mtawala gani ni ni mfano wa kuigwa kwa kitu kama, kwa mfano, kuweka yote ya kitabu ndani ya ya kutofautiana. Kama hii moja, @ vitabu. Na inahitaji kuwa ya kimataifa na hii katika kitu kwa sababu itakuja kuwa kupatikana kwa maoni. Ni si kwenda kutumika ndani ya mtawala yenyewe. Na tu kupungua habari kwamba maoni ni kwenda kutumia. Kwa mfano, hundi mtawala kama mtumiaji ni online. Na jinsi gani kufanya hivyo? Ni kweli anauliza mfano kwa sababu mfano ina taarifa kuhusu mtumiaji. Ina meza watumiaji, vitabu meza, meza nyingine. Hivyo mtawala anauliza kama user ni online. Kama mtumiaji ni online, mtawala Hushughulikia mambo kama kuweka cookie, au kitu kama hicho, ili kuweka muhuri kusema kwamba user ni online. Hakuna haja ya kuingia tena. Na itakuja kupakia variable kuitwa user, kwa mfano, kwamba maoni inaweza kutumia. Na maoni inaweza kuweka kitu hapa, kwa mfano, kuwakaribisha user.name. Hivyo ni kwenda kusema, welcome John, welcome James - kitu kama hicho, sawa? Basi wote wa vigezo wale kutumika katika mtazamo ni kwenda kubeba katika mtawala na ni kwenda kuwa ng'olewa juu ya mfano wa kuigwa. Huu ni mfano wa mtawala. Hivyo tuna, kimsingi, kila - sisi kuwaita wale mambo vitendo. Hivyo index ni action. Ni kazi Ruby. Ni njia Ruby huko. Lakini kwa ajili ya simu mtawala mambo hayo matendo. Na kila hatua kuhusiana na njia. Hivyo hapa njia hii, kwa mfano, ni kupata taarifa / vitabu. Hivyo kama wewe kwenda harvard2017.com/books, nini kinaendelea kutokea ni kanuni hii ni kwenda kuitwa. Na kuna file - napenda kufungua haraka hii halisi. Kuna faili inayoitwa file mbichi ni. Ni si ufunguzi. Hivyo kuna faili inayoitwa file mbichi kwamba kimsingi mechi - oh, sasa ni ufunguzi. Hapa, njia. Hivyo kimsingi mechi matatizo, uanzishaji / mpya kwa mfano, kitu katika mtawala. Hivyo kuna mtawala hii inaitwa uanzishaji mtawala, lakini nje hapa, tuna vitabu, kwa mfano. Hivyo mechi - vitabu / mpya, mtawala vitabu, hatua mpya. Hivyo kimsingi, moja kwa moja sana mambo. Na hapa, kama alikuwa na kupata / vitabu, kufyeka ID ya vitabu, kufyeka mpya, wewe ni kwenda kwa kuwa Ruby njia chini huko. Hivyo hapa, nini ripoti hii ni kufanya ni upakiaji tu kitabu logi. Hiyo ni kitu ambacho - Mimi kuingia yote ya vitabu katika logi. Na aina yote. Hivyo hii kwenda na kurudi yamepangwa vitabu vyote. Hii ni mara ya pili, katika database. Hivyo hii ni njia ya mfano. Unaweza kuona njia hii kuwa kuundwa kwa mfano. Sasa hii ni upakiaji tu vitabu vyote na kuweka kwamba katika variable kwamba inaweza kuonekana kwa maoni. Kwa sababu huwezi, katikati ya HTML code yako, unaweza kuwaita kitu moja kwa moja kutoka mfano, kwa sababu kwa sababu mbili. Kwanza, kwa sababu za kiusalama kwa sababu si kweli kuvutia kuwa upakiaji habari moja kwa moja ndani ya kila HTML kwamba katika database. Na pili, kuweka yako code kweli kupangwa. Hivyo tofauti hasa sehemu mbalimbali. Hivyo BookLog.sorted_all, hii katika database na hii ni kwenda kuweka katika variable @ vitabu. Na sasa variable hii ni kupatikana ndani ya HTML code yako. Hivyo unaweza kuweka tu yote ya vitabu pale tu kama tulivyofanya, haki hapa. Hii ni kutofautiana. Na ziara respond_to kufanya | format |, hii ni aina ya Ruby syntax kwa kama mtumiaji ni kuuliza mimi kwa HTML code, mimi nina kwenda kwa kujibu kwa HTML code. Kama mtumiaji anayeniuliza na JSON code, ambayo ni kitu ambacho programu kwenye mtandao hutumia kuwasiliana baina yao, wao matumizi ya kawaida JSON au nyingine aina ya kitu. Hivyo tu anajibu kwa kutumia wale muundo mbili tofauti. Lakini kwa mtumiaji kawaida, hii bila haja ya kuwa hapa. Wewe ingekuwa tu kujibu kwa HTML, na kwamba faini. Hivyo si kweli na wasiwasi kwamba sana kuhusu hili. Hii ni line tu ya maadili ya katika maisha yetu kudhibiti kama ni wa kupakia kutoka HTML database, kuweka katika kitu ambacho ni kupatikana kwa maoni. Na kisha mpya, hivyo hapa Mimi nina kujenga vitabu. Lakini kujenga vitabu, mimi haja mwanafunzi kwa sababu mimi haja ya kujua mwanafunzi ambao vitabu hili ni kwa, haki. Hivyo @ mwanafunzi = Mwanafunzi. Mwanafunzi, tena, sisi ni kwa kuanzia na S kubwa ni mfano wa kuigwa mwanafunzi. OK, hivyo hii ni mfano wa kuigwa mwanafunzi, hii ni kwa logi mfano kitabu. Student.find, hivyo mimi nina kwenda kupata mwanafunzi kutumia vigezo ID. params.id, hii ni kupata mimi tu thamani ya ID hii kwamba ilipitishwa - na URL. Tu kwenda kutafuta kwamba mwanafunzi. Na kwanza, sisi ni kwenda kuangalia kama mwanafunzi ana baadhi ya nyimbo na blah, blah, blah. Na hii tayari Hushughulikia kesi wakati mwanafunzi haipo, kwa mfano. Na kisha, mwingine, sisi tu kujibu kitu kimoja kutumia HTML. Na kisha tunaweza kuruhusu user kujenga nyimbo zao. Hivyo hii ni mpya. New ni kawaida kutumika kwa, basi user kujenga kitu. Na kisha kuna kujenga hatua hiyo ni kawaida kutumika kwa ajili ya - kweli kuweka nyimbo katika database au kitu kama hicho. Lakini mara moja kuanza kutumia reli, mambo hayo ni kwenda kuwa kiasi, zaidi ya wazi. OK, baridi. Maswali yoyote hadi sasa? Je, ni mantiki kwa controllers, mifano, mashamba - yeah? Tena katika reli maombi yako - hivyo wote wa ambayo yanaweza kupatikana katika hapa. Hivyo kuwa na programu, controllers, wale wote ni wa controllers yangu. Hivyo kwa mfano, vitabu kudhibiti. Hiyo ni moja sisi tu kuona. Na kisha maoni. Na kila mtawala ina maoni kuhusishwa, sawa? Hivyo moja kwa moja wakati wito huu index hapa, kwa mfano, au wakati wito huu vitabu vipya, basi maoni, vitabu, mpya ni kwenda kuitwa. Hivyo reli anafanya kila kitu moja kwa moja kwa ajili yenu. Hivyo kila mtawala ina kuhusishwa kuangalia na yote ya mifano - hapa nina moja, mbili, tatu, nne, mifano mitano. Lakini hii ni mwanafunzi mfano, ili wale ni vigezo kwamba wote wanafunzi na - ujanibishaji, tarehe ya kuzaliwa. Wanafunzi ni kidogo zaidi ngumu kwa sababu kila mwanafunzi ana zaidi mbalimbali njia kuhusishwa na yake. Lakini hii ni utunzaji tu meza kwamba alikuwa wote wanafunzi katika database. Na, OK, kufunga reli. Kufunga reli, kwa kuwa waaminifu, si jambo rahisi. Lakini mara kupata nyuma kila kitu, ni sana, ni rahisi sana. Hivyo kufunga reli, wewe tu kwenda kwa tovuti, rubyandrails.org / download na kufuata maelekezo yao huko. Shusha kila kitu. Na unaweza kufanya hivyo aidha katika Appliance, katika CS50 Appliance, juu ya Windows, juu ya Mac, au uendeshaji yoyote mfumo wa uchaguzi wako. Ruby juu ya reli anaendesha juu ya kila kitu. Tabia mbaya ni wewe tayari Ruby imewekwa kama una Mac au - katika vyombo vya Nadhani Ruby ni - Mimi nina uhakika. Na kisha wewe tu na hii imewekwa. Na kama unataka kujenga mpya mtandao maombi, wewe tu kufanya reli, mpya, blog. Reli, mpya - Sijui - jina la tovuti yako. Na ni rahisi hiyo. Ni kwenda kujenga wale wote files mimi tu ilionyesha wewe. Lakini mfano, mtazamo, na mtawala si kwenda kuwa wakazi bado. Wewe tu kwenda na kwenda huko na na idadi ya wale folders tatu. Hivyo ni tabia mbaya, unataka kujenga mfano, kwa mfano, kutekeleza moja mfano wa kwanza. Hivyo tena, siku zote kujaribu bite ndogo bits ya tatizo wakati huo. Na kisha hebu sema, kujenga mfano wa kuigwa kwa watumiaji. Hiyo ni jambo la kwanza kama una watumiaji. Kisha Mimi nataka kujenga mfano wa kuigwa tu kama sisi ilionyesha hapa. Reli, kuzalisha, mfano, user, na kisha kamba barua pepe - tuna kuwa hapa. Na kujenga tu mfano kwamba, ndiyo. Reli kuzalisha mfano mtumiaji barua pepe: string password: kamba. Na kisha kujenga mtawala ambayo inahusika na mtumiaji. Na unaweza kuunda watumiaji mpya na kufanya aina wale wa mambo. Na kisha unaweza kuendelea na kujenga wengine wa tovuti yako. Baridi, maswali? Ndiyo. Watazamaji: [inaudible] GABRIEL Guimaraes: Ndiyo, ndiyo, dhahiri kuwa kwenda katika mtazamo. Hilo ni swali nzuri sana. Hivyo maoni ni nini hasa ina HTML yako. Hivyo ni nini watumiaji ni kwenda kuona. Tena, hapa, hii ni mfano wa maoni. Ina HTML code na Ruby code wakati huo huo. Hivyo Ruby code ni huko kuweka mambo kutoka database, kwa mfano, kwamba walikuwa kubeba katika mtawala. Ili variable @ vitabu, kwa mfano, ina wote wa vitabu na meza vitabu database. Tukiwa na uhakika kwamba alikuwa katika mtawala. Na mtazamo - kila kurasa mbali tovuti yako ni kwenda na moja kuhusishwa maoni. Hivyo kama wewe kwenda kwenye ukurasa wa nyumbani, ukurasa wa kwanza kabisa, harvard2017.com. Hiyo inaonyesha ukurasa mmoja. Na kisha kwenda kufyeka profile. Hiyo kwenda kwa mtawala kwamba profile mtawala. Na profile mtawala ni kwenda kukupa mtazamo profile. Na mtazamo profile ni kwenda kuangalia kiasi fulani kama hii, lakini kwenda kuwa na taarifa kuhusu user, na si juu ya vitabu. Hivyo ni HTML code na CSS na wale mambo ambayo user anaona na Ruby code - kwamba kweli Prints mambo kutoka database. Ni kwamba zaidi wazi? Natumaini. Watazamaji: HTML code ni kutumika kwa kweli kufanya tovuti ya kwamba user anaona, lakini Ruby code ni nini hufanya tovuti kazi? GABRIEL Guimaraes: kanuni Ruby anapata waongofu na HTML. Kwa hiyo kile mtumiaji anapata ni HTML tu, OK? Ni HTML tu. Book.title Hii ni kwenda kubadilisha na thamani ya book.title katika HTML, OK. Hivyo hii yote ni katika server, na hivyo hii unategemea nini vitabu ni pale katika server hivi sasa. Lakini nini server ingekuwa mara moja maana ni tu HTML code, OK. Lakini maoni tu anatoa layout ya nini HTML ilikuwa kwenda kuangalia kama na nini vigezo ni kwenda kuwa. Aina hii ya magazeti nje, OK. Mambo hayo kuna kimsingi magazeti mitumbwi. Wao wanaenda magazeti vigezo, OK. Kwa hiyo kile ni HTML tu, hao - mwandishi, cheo, maelezo. Hiyo ni maudhui ya tuli. Hiyo si kwenda na mabadiliko. Hiyo ni wazi tu HTML code. Wale ni mitumbwi magazeti kwa vigezo - mambo ambayo wanategemea. Baridi, zaidi maswali? Nzuri? Ndiyo. Watazamaji: Nadhani walikuwa kufanya yote editing katika maandishi mbalimbali editing mpango. Je, sisi pia kushusha kwamba? GABRIEL Guimaraes: Yeah, mimi kama hii Nakala mhariri aitwaye TextMate. Na kwa kweli ni nzuri. Ni vizuri inafaa kwa Ruby. Ni rangi mambo vizuri sana. Hivyo TextMate, T-E-X-T. Mimi nina kwenda kuweka kwamba, kushikilia - I mean unaweza kutumia gedit au kitu chochote unataka. Lakini hii ni maalum kwa ajili ya Mac, na hii ni nadhifu kweli kwa sababu unaweka yote ya mafaili yako chini huko. Na katika Ruby juu ya reli, unahitaji kubadili files mengi. Hivyo ni wengi, wengi files tu kwenda kutoka file moja, Rukia file moja au nyingine. Hivyo TextMate ni moja nzuri sana, lakini kuna huko nje mengi. Maswali zaidi? OK, ndiyo? Watazamaji: Je, kuna maendeleo Mkono kupitia Ruby juu ya reli? GABRIEL Guimaraes: Nina habari ya tukio hilo. Mimi si kutumika yao. Unaweza utafiti zaidi juu ya hilo. Mimi nina uhakika kama kuna yoyote jambo zuri huko nje. OK, ndiyo? Watazamaji: [inaudible] GABRIEL Guimaraes: Si reli, pengine Ruby safu. Kufungua dirisha terminal na aina, "Ruby". Yeah, pengine, na kisha tu kufunga reli. Lakini kama wewe ni kwenda kufunga mpya Reli 4.0, ambayo mimi sana kupendekeza, unapaswa kushusha Ruby 2.0. Hiyo ni moja mpya pia. Na reli mpya 4.0 ina kitu kweli baridi kwamba haina na mali. Hushughulikia mali. Mali tena ni picha, files CSS, na JavaScript files. Hivyo jambo moja nadhifu kweli kwamba Ruby juu ya Reli haina kwa ajili yenu ni wale wote CSS files kwamba kuwa na kila kitu - tu bahasha kila kitu juu katika moja file kubwa, na hakuna nafasi au kitu chochote, ili kupunguza muda user mahitaji ya download kwamba kanuni kutoka server yako. Hivyo wakati unaweza kuona katika kompyuta yako, ni kwenda na kama 15 CSS files. Au wengi, wengi files mbalimbali CSS. Lakini mwisho wa siku, nini reli moja kwa moja haina kwa ajili yenu ni unaweka kila kitu pamoja katika faili moja kubwa ili kupunguza ombi wakati. Hiyo ni kweli baridi. Ndiyo? Watazamaji: [inaudible] GABRIEL Guimaraes: Hasa. Hivyo, Google Maps muungano. Hiyo ni JavaScript API kutoka Google. Basi, mimi tu akaenda tovuti ya Google. Wana hii API Google Maps na mimi kupakuliwa kanuni na kuunganishwa ni katika mtazamo wangu. Kwa hiyo kile Mimi zinahitajika kufanya huko ni mimi walihitaji kupata maeneo kutoka database. Hiyo ilifanyika katika mtawala. Basi, mimi nikaenda kwa mtawala - ambapo ni mtawala. mtawala inaonekana kama hii. Got yote ya maeneo ya wanafunzi, kuweka yote ya kwamba ndani ya kubwa variable, orodha kubwa, kwamba ina maeneo yote. Na katika mtazamo, kwa sababu JavaScript API ni kitu katika kuona, sawa? Kwa sababu JavaScript anaendesha ndani ya HTML yako code, ni kwenda kutumwa kwa mtumiaji mashine. Na katika mtazamo, mimi kubeba yote ya habari katika API Google. Na alifanya yote ya kwamba kwa ajili yangu, ambayo ni kweli baridi. Lakini kama unataka kutumia mambo katika nyuma-mwisho, na ni kama maktaba, kwa mfano, tena - ushirikiano na Facebook. Hiyo ni kitu ambacho wengi, wengi, programu nyingi ni kutumia siku hizi. Hivyo kuwa na ushirikiano wako na Facebook kwa sababu ni rahisi zaidi tu kuingia kwenye Facebook kuliko kujenga akaunti na blah, blah, blah. Kisha wewe tu kutumia gem na ni kama rahisi kama kwenda gem faili yako. Gem file ni faili inayoitwa gem file katika chanzo orodha ya Ruby yako juu ya Reli mradi huo. Tu kwenda huko na kuongeza gem mpya. Na kuangalia ni juu ya Google. Kuna wengi, wengi, vito wengi. Kuna moja kwamba hasa gani hii kwa Facebook muungano. Mimi nina uhakika nini jina yake. Tu Google na wewe ni kwenda kupata hiyo. OK, maswali zaidi? Ajabu, asante kwa kuja.