Ruby on rails programozási tanfolyamok. Ruby kezdőknek: mi az érdekes ebben a nyelvben, és hogyan lehet hatékonyan megtanulni

"Szia! Mit csinálsz?" - Igen, egy dolgot beprogramozok Rubyban. - "Fertőző:-)"
Itt van egy beszélgetés, amelyet ma folytattam egy barátommal. Miért Ruby?

Miért Learn Ruby

Ez a kérdés azokat érinti, akik régóta és sikeresen programoznak PHP-ben. Elsajátított egy nyelvet, ami nagyszerű, de ne álljon meg itt. Sokan kifogásolhatják, hogy ismerik a nyelvet, a nyoiban tájékozódtak és már minden fortélyt megtanultak vele. Felsorolok néhány okot, amiért érdemes megtanulni Rubyt.

  1. Kíváncsiság. Számomra például nagyon érdekes volt nyílt osztályokkal dolgozni. Így kell bevinni a módszert a rendszerosztályba - szerintem nagyszerű. Zavar lesz? De hogyan kell csinálni? Általában minden új érdekes.
  2. . Mert Régóta programozok PHP-ben, kíváncsi vagyok, hogy Ruby mivel büszkélkedhet a PHP előtt /
  3. Rubin sebesség. Rubyban twitter készül (bár mostanában elhagyták). Szeretném a valóságban is tesztelni a teljesítményét.
  4. Probléma osztály. A Ruby jó webes alkalmazásokhoz. így van?
  5. Metaprogramozás. Talán a legfontosabb ok.

Hogyan tanuljuk meg Rubyt. Akadémiai terv.

Itt az volt az első hibám, hogy nyelvtudás nélkül kezdtem el tanulni a keretrendszert. Most már értem, hogy erre nincs szükség. Egy időre megfeledkezve a Ruby on Railsről, elkezdtem magát a Rubyt is tanulmányozni, mivel a jegyrendszerben sokáig lógott egy rendszerfeladat, amit php-ban nehéz volt megoldani. Tényleg nem akartam root jogosultságot adni neki. Szóval a terv ez.

  1. Függvények, osztályok, nyilvános osztályok. Attribútumok (kiegészítők és mutátorok).
  2. Stringekkel, tömbökkel való munka. Alkarakterláncok keresése és cseréje stb. Típus konverzió.
  3. Fájlokkal való munka.
  4. Munkavégzés a rendszer környezetével.
  5. Alkalmazástervezés, munka drágakövekkel (modulokkal).
  6. Munka a DB-vel.
  7. A Ruby on Rails telepítése, .

Ebben a bejegyzésben közzéteszem az első Ruby alkalmazásomat, és mindenkit meghívok a beszélgetésre. Mutasson rá a hibákra, ajánljon fel legjobb gyakorlatot, tegyen fel kérdéseket.

Tanuljuk együtt Rubyt!

1. lecke. Az első alkalmazás Rubyban.

A feladat ez. A tárhelyen DNS-kiszolgáló található, és a ruby ​​konzol segédprogram hívásakor hozzá kell adnia egy zónát a domainhez, valamint egy zónabejegyzést a zónák listájához (domains.list), és módosítania kell egy bejegyzést az adatbázis, ahol regisztrálni kell ezt a domaint. Az adatbázis-hozzáférési beállításokat a php alkalmazás tárolja, különösen annak INI fájljában. Az összes lépés után újra kell indítania a DNS-kiszolgálót (bind).

Munkapad Ruby számára

IDE-ként a JetBrains RubyMine-ját fogom használni. Nagyon szerettem őket. Bár a phpStormról volt szó, a minőség azonnal látszik. Először az RVM-en keresztül telepítjük a ruby-t minden felhasználó számára, majd beállítjuk a root és a felhasználónk számára.

A Ruby nyilvános órák meghosszabbítása

A Rubyban lévő INI fájlokkal való munkavégzéshez a gem inifile-t használjuk. De van egy kis probléma. Egy ZF INI fájlban nyugodtan használhat konstansokat, és a sorok így néznek ki:

IncludePaths = APPLICATION_PATH "/../vendors/Doctrine/"

Itt az APPLICATION_INI alkalmazásból, majd lebontja a drágakő elemzőt. Pontosabban, ez a sor nem illeszkedik semmilyen mintához:

@rgxp_comment = %r/\A\s*\z|\A\s*[#(@comment)]/ @rgxp_section = %r/\A\s*\[([^\]]+)\] /o @rgxp_param = %r/\A([^#(@param)]+)#(@param)\s*"?([^"]*)"?\z/

Íme a nyilvános osztályok használatának helyzete. Cseréljük le az IniFile::parse függvényt a sajátunkra. Minden kiegészítést hozzáadok a fucntion.rb fájlhoz

Class IniFile private # # call-seq # parse # # Elemezze az ini fájl tartalmát. # def parse return, hacsak nem File.file?(@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? Fájl.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r"), míg line = fd.gets line = line.chomp # mutline start # tmp változók létrehozása a jelzésre hogy egy multine elindult # és az ini fájl következő sorait # ellenőrzi a többi mutline rgxps. if line =~ @rgxp_multiline_start then tmp_param = $1.strip tmp_value = $2 + "\n" # a sorvég-határoló található # törölje a tmp vars-t, és adja hozzá a param / érték párt a szakasz elsif sorához =~ @rgxp_multiline_end && tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # bármi más többsoros kezdő és vége között elsif sor =~ @rgxp_multiline_value && tmp_param != "" majd tmp_value += $1 + "\n" # figyelmen kívül hagyja az üres sorokat és a megjegyzéssorokat elsif line =~ @rgxp_comment then next # ez egy szakasz deklaráció elsif line =~ @rgxp_section then section = @ini[$1.strip] # egyébként van egy paraméterünk elsif line =~ @rgxp_param then begin section[$1.strip] = $2.strip mentés NoMethodError emelési hiba, "a paraméter az első szakasz előtt észlelhető" end elsif sor =~ %r/APPLICATION_/, majd a next else emelés Hiba, "nem sikerült elemezni a "#(sor) sort" end end # miközben biztosítsa az fd.close-t, ha definiálva van?fd és fd end end

A String osztályt is kiterjesztem, hogy lehetővé tegye a tartományok érvényesítését.

Osztálykarakterlánc def valid_domain_name? domain_name = self.split(".") name = /(?:+)+/.match(domain_name).nil? tld = /(?:(2)|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info| me|mil|mobi|museum|ms|name|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(domain_name).nil? (domain_name.count > 1 and name != false and tld != false) end end

Források

Nos, most megmutatom a valódi forrást.
index.rb

#coding: Az utf-8 megköveteli a "mysql2" igényt 84.22 .11.1" ) util = Util.new(hosts) util.releative_config_path="/site.com/application/config/application.ini" # Paraméterek ellenőrzése quit if (ARGV.count != 2) domain = ARGV gazdagépnév = ARGV . split(".") quit("Érvénytelen domain név") if (nem domain.valid_domain_name?) # Cég keresése az adatbázisban eredmény = Mysql2::Client.new(util.get_db_settings).query("SELECT id FROM `sites` WHERE `hostname` = "#(hostname)"") quit("A vállalat nem található") if result.count != 1 # Frissítse gazdagépnevét rows = Array.new result.each(|row| rows<< row} company_id = rows["id"] result = Mysql2::Client.new(util.get_db_settings).query("UPDATE `dbname`.`sites` SET `domain` = "#{domain}" WHERE `dao_companies`.`id` =#{company_id};") # Добавление зоны bind_config_path = "/etc/bind" default_zone_file = bind_config_path + "/zones/DEFALT" new_zone_file = bind_config_path + "/zones/#{domain}.zone" zones_list_file = bind_config_path + "/domains.lst" quit("File with default zone does not exists") unless File.exist?(default_zone_file) quit("File with zones list does not exists") unless File.exist?(zones_list_file) zone = IO.read(default_zone_file).gsub("SERIAL",Time.now.strftime("%Y%m%d%S")).gsub("DOMAIN", domain) if not File.exist?(new_zone_file) then File.open(new_zone_file, "w") {|f| f.puts(zone) } else quit("Domain "+domain+" zone already exists!") end # Добавление зоны в список zone = "zone \"#{domain}\" { type master; file \"/etc/bind/zones/#{domain}.zone\"; };" if not IO.read(zones_list_file).include?(domain) then File.open(zones_list_file, "a") {|f| f.puts(zone) } end # Перезапуск сервисов (bind9) system("service bind9 restart") puts "Completed"

gemfile
Ez a fájl a projekt függőségeit írja le.

Forrás: rubygems gem "mysql2", "0.2.6" gem "inifile"

Nos, valójában funkciókat tartalmazott.
függvények.rb

#coding: utf-8 osztály Karakterlánc def érvényes_tartománynév? domain_name = self.split(".") name = /(?:+)+/.match(domain_name).nil? tld = /(?:(2)|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info| me|mil|mobi|museum|ms|name|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(domain_name).nil? (domain_name.count > 1 and name != false és tld != false) end end class IniFile private # # call-seq # parse # # Elemezze az ini fájl tartalmát. # def parse return, hacsak nem File.file?(@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? Fájl.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r"), míg line = fd.gets line = line.chomp # mutline start # tmp változók létrehozása a jelzésre hogy egy multine elindult # és az ini fájl következő sorait # ellenőrzi a többi mutline rgxps. if line =~ @rgxp_multiline_start then tmp_param = $1.strip tmp_value = $2 + "\n" # a sorvég-határoló található # törölje a tmp vars-t, és adja hozzá a param / érték párt a szakasz elsif sorához =~ @rgxp_multiline_end && tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # bármi más többsoros kezdő és vége között elsif sor =~ @rgxp_multiline_value && tmp_param != "" majd tmp_value += $1 + "\n" # figyelmen kívül hagyja az üres sorokat és a megjegyzéssorokat elsif line =~ @rgxp_comment then next # ez egy szakasz deklaráció elsif line =~ @rgxp_section then section = @ini[$1.strip] # egyébként van egy paraméterünk elsif line =~ @rgxp_param then begin section[$1.strip] = $2.strip mentés NoMethodError emelési hiba, "a paraméter az első szakasz előtt észlelhető" end elsif sor =~ %r/APPLICATION_/, majd a next else emelés Hiba, "nem sikerült elemezni a "#(sor) sort" end end # while biztosítva az fd.close ha definiált? fd és fd end end def quit(message=nil) banner = " === =========================== | DNS-kiegészítő eszköz | ============================ Használat: ruby ​​​​./index.rb domain.com olddomain.site.com" ha nem üzenet .nil then banner = üzenet vége elhelyezi a szalaghirdetést kilépés vége osztály Util attr_accessor:hosts, :releative_config_path, :environment def inicialize(hosts =Array.new) self.hosts = hosts end # A helyi IP-cím lekérése def local_ip orig, Socket.do_not_reverse_lookupre = Socket.do_not_reverse_lookup, true # kapcsolja ki a fordított DNS-feloldást ideiglenesen UDPSocket.open do |s|s.connect "64.233.187.99", 1 s.addr.last end biztos Socket.do_not_reverse_lookup = orig end # A környezet lekérése def get_environment if @ Environment.nil? then hosts = self.hosts.invert if(hosts.include?(self.local_ip)) then @environment = hosts else @environment = "fejlesztés" end else @environment.to_s end end def get_config_path local_username = get_local_username "/home/" +local_username+"/sandbox"+self.releative_config_path end # A felhasználónevet adja vissza, ha a segédprogram az rvmsudo-n keresztül fut, vagy közvetlenül def get_local_username, ha ENV["SUDO_USER"].nil? quit("A segédprogramot az rmvsudo felett kell futtatni, \r\nexample: rvmsudo ruby ​​​​./index.rb domain.ru some.subdomain.ru") else ENV["SUDO_USER"] end end def get_db_settings config = IniFile:: load( self.get_config_path) section_name = self.get_environment.to_s + " : bootstrap" quit("Nincs megfelelő szakasz a konfigurációs fájlban"), kivéve, ha config.has_section?(szakasz_neve) dsn = config.to_h["resources.doctrinedata.connections". alapértelmezett. dsn"] # A dsn dsn.sub elemzése!("mysql://", "") arr = dsn.split("@") dbconfig = ( :felhasználónév => arr.split(":"), : jelszó = > arr.split(":"), :host => arr.split("/"), :database => arr.split("/") ) end end

De mi a helyzet a PHP-vel?

Ez a bejegyzés nem a PHP kilépéséről és a ruby ​​tanulásáról szól. A PHP a legnépszerűbb webes programozási nyelv, ezernyi érdekességet és algoritmust implementálnak rajta, pl. akár a neurális hálózatok. És szeretem őt) Az évek során elmondható, hogy rokonságba kerültem vele, minden hiányossága ellenére. De ez nem jelenti azt, hogy ne tanulj valami újat magadnak.

Nemrég feltették nekem a kérdést, hogy milyen könyvekből tanuljam meg Rubyt. Ezt most olvasom.

Ez a könyv a Ruby dinamikus programozási nyelv hivatalos útmutatója. A szerzők csapata valóban zseniális: David Flanagan a programozás területén jól ismert specialista, számos JavaScript és Java témakörben eladott könyv szerzője; Yukihiro "Matz" Matsumoto a Ruby alkotója és vezető fejlesztője.
A könyv részletes leírást ad a nyelv minden aspektusáról: a Ruby lexikai és szintaktikai szerkezetéről, az adatok és elemi kifejezések változatairól, a módszerek, osztályok és modulok definícióiról. Ezenkívül a könyv információkat tartalmaz a Ruby platform API-król.

A kiadvány érdekelni fogja a tapasztalt programozókat, akik az új Ruby nyelvvel ismerkednek, valamint azok számára, akik már Ruby nyelven programoznak, és szeretnének magasabb szintű megértést és kivitelezést elérni. Találhat könyvet az ózonról vagy bibliogömböt.

Várom észrevételeiket a kóddal és bármilyen érdekes ötlettel kapcsolatban!)

Köszönöm!

Ha ez a cikk segített Önnek, vagy szeretné támogatni a kutatásomat és a blogomat, a következőképpen teheti meg a legjobb módszert:

Ez az első a cikksorozatból, amelyben a Ruby és a Ruby on Rails szolgáltatásairól fogok beszélni, és tippeket osztok meg a Ruby tanulásának megkezdéséhez, hol találhat választ a kérdésekre, hogyan szerezheti meg a megfelelő élményt és hogyan tud kitűnni a többi jelölt közül. Örülök, ha tanácsaim segítenek valakinek a szakirány kiválasztásában, és a Ruby kiválasztásában tanuláshoz és munkához.

A Ruby legfontosabb tulajdonságai és különbségei

Gyakran hallom a kérdést: érdemes megtanulni Rubyt? A kérdés általában kétségeken alapul: mennyire könnyű munkát találni ezen a szakterületen, lesznek-e érdekes projektek stb., stb. A Ruby egy modern, folyamatosan fejlődő programozási nyelv, rengeteg alkalmazás létezik rá. Biztosan hallott már a Chefről, a Vagrantről, a Homebrew-ról, de leggyakrabban mindannyian hallunk a Railsről. Itt van egy bejegyzés a keretrendszer szerzőjének kommentárjával arról, hogy miért érdemes megtanulni a Rails-t.

Természetesen mindenki maga dönti el, hogy melyik eszközt használja. És nincs értelme a végtelenségig vitatkozni arról, hogy miért jobb az egyik technológia a másiknál. A Rubyt azért választottam, mert ez egy hihetetlenül kifejező és rugalmas nyelv, amely lehetővé teszi ugyanazon probléma sokféle megoldását.

A Ruby egy értelmezett, teljesen objektum-orientált programozási nyelv, erős dinamikus gépeléssel. Egyesíti a Perl-szerű szintaxist egy objektumorientált megközelítéssel. Ezenkívül néhány funkciót a Python, Lisp, Dylan és CLU programozási nyelvekből kölcsönöztek. A Ruby nyelvi tolmács platformok közötti megvalósítása nyílt forráskódú szoftverek feltételei szerint kerül terjesztésre. A Ruby nyelven írt kódot még az is megértheti, aki nem ért a programozáshoz. A RoR-on olyan projektek jöttek létre, mint a Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb és mások.

A Node.js térnyerésével a Ruby on Rails népszerűsége valamelyest csökkent, de a tech startupok gyakran használnak RoR-t a prototípusok egyszerűsége miatt. A ruby ​​a 11. legnépszerűbb nyelv a TIOBE indexben.

A Ruby előnyei

  • Sok és barátságos közösség.
  • Meglehetősen magas belépési korlát, ami azt jelenti, hogy a Ruby fejlesztőnek valószínűleg van tapasztalata legalább egy másik programozási nyelvben.
  • Csak a szükséges könyvtárakat és modulokat használja.
  • Számos hasznos könyvtár létezik, amelyek készen állnak a használatra (Ruby Gems).
  • A Rubyról sok információ található az interneten, strukturált és szitált formában.
  • A Ruby-ról szóló beszélgetés keretében nem lehet megemlíteni a legnépszerűbb Ruby on Rails keretrendszert.

Most beszéljünk részletesebben a Ruby néhány előnyeiről.

Fejlődési sebesség

A Ruby és a RoR keretrendszer egyik előnye a fejlesztési sebesség. A személyes tapasztalat és a kollégák tapasztalata azt mutatja, hogy a Rails-en másfélszer gyorsabb a problémamegoldás, mint más hasonló keretrendszereknél. A Ruby nagyon egyszerű eszköz, és rengeteg kész megoldás létezik különféle feladatokra.

Rendszeres adatgyorsítótár eszközök

Egy nagyszabású projekt kidolgozásakor az egyik legfontosabb pont a gyorsítótárazás. A Ruby on Rails alapfelszereltsége natív adatgyorsítótárazó eszközökkel. Vagyis azonnal rendelkezésére állnak a projekt adatainak gyorsítótárazásához szükséges eszközök, és könnyedén gyorsítótárazhat egyes kódblokkokat vagy akár teljes oldalakat is.

Először tesztek, aztán kód

Gyakran a nagy projektek kidolgozása során merül fel a tesztelés kérdése, és nem ritka, hogy nincs többletforrás egy külön tesztelői csapat számára. A Rails-nek erre a problémára is van megoldása. Ha összehasonlítja a RoR-t más keretrendszerekkel az alkalmazástesztelés keretében, akkor rengeteg kész megoldást talál bármilyen teszthez, legyen az integrációs vagy egységteszt. Mindezek a könyvtárak a dobozból kiindulva működnek. Ideális esetben egy Ruby on Rails projektben addig nem írnak kódot, amíg teszteket nem írnak hozzá. A RoR ideológia magában foglalja a BDD (Behavior Driven Development) vagy TDD (Test Driven Development) módszerek kezdeti használatát.

Általánosan elfogadott fejlesztési folyamat szabványok Ruby fejlesztők számára

Ha már a Ruby előnyeiről beszélünk, nem tehetem meg, hogy ismét megemlítsem a rubin közösséget. Folyamatosan növekszik, fejlődik és mindig készen áll a segítségre. Mindig van valaki, aki megmondja, hogyan lehet a legjobban megoldani a problémát, megosztja tapasztalatait bármilyen kérdésben.

Egy másik nagyon fontos szempont, hogy a Ruby közösségnek sok éve megvannak a szabványai a fejlesztési folyamatra, néhány szabály/közösségi megállapodás, amely a fejlesztést szabályozza, ami nagyban leegyszerűsíti a munkát. Ezeknek a szabványoknak köszönhetően minden projekt nagyon strukturált, illetve egy új fejlesztő a csapatban gyorsan felgyorsul, és hasznos lehet a munka első napjaitól kezdve. És még ennél is több: ha a projektet az egyik csapat indította el, és egy másik fejezte be, ez szintén nem probléma. Mivel a fejlesztés a már említett szabályok és közösségi megállapodások szerint zajlik, az új csapat gyorsan és egyszerűen elmélyül a projektben, és nagy időveszteség nélkül sikeresen végrehajtja azt.

Ezenkívül a Ruby on rails számos különféle kész megoldást kínál a nyilvánosság számára. A legtöbb megoldást valaki már bevezette Ön előtt, valamint a közösség is tesztelte, ami csökkenti a nulláról való fejlesztés szükségességét. Ezek lehetnek hitelesítés, engedélyezés, kommentelő rendszerek, fizetési rendszerek, levelezőlisták stb.

Kész megoldások a projekt többnyelvűségéhez

A Rails nagyon hatékony eszközöket tartalmaz a projektek azonnali lokalizálásához. Lehetőség van egyszerre több nyelv támogatására és későbbi megvalósítására is. A projekt tartalmaz speciális fájlokat a kifejezések fordításához, eszközöket a sablonok különböző nyelvű megjelenítéséhez, és még sok mást.

Magas szintű adatvédelem

Mostanában gyakran jelennek meg cikkek a különféle erőforrások feltöréséről a hálózaton. A Ruby on Rails keretrendszer fejlesztői nagyon komolyan vették az adatvédelem kérdését. A RoR kezdetben titkosítja a jelszavakat, a hitelkártyaadatokat és egyéb személyes felhasználói adatokat, az SQL-injekciók és az XSS-támadások szintén kizártak. Alapértelmezés szerint minden bemeneti paraméter kihagyott.

Tanulás Ruby

Most beszéljünk arról, hogy pontosan hogyan tudod elsajátítani Rubyt.

Elmélet

Természetesen az irodalommal kellene kezdeni. Ezeket a forrásokat ajánlom:

  • A Ruby in 20 perc jó forrás a teljesen kezdőknek. Lehetővé teszi, hogy kevesebb mint fél óra alatt megismerkedjen a nyelv alapvető konstrukcióival, és elkezdje saját kis programjait.
  • A Codecademy egy olyan platform, ahol számos területen tartanak online kurzusokat, beleértve a tiszta Rubyt és a Railset is. Itt elég érdekesen épül fel a tanulási folyamat, adott az elméleti anyag és rögtön egy gyakorlati feladat is ennek megszilárdítására. Az utolsó feladatok fizetősek, de ezek nélkül is megszerezheti a szükséges készségeket.
  • Ruby and Rails Resources – Különféle webhelyekre és könyvekre mutató hivatkozások gyűjteménye, amelyek a Ruby and Rails tanulásával foglalkoznak.
  • Külön ajánlom a Flanagan D., Matsumoto Y. "The Ruby Programming Language" című könyvet. Az egyik legjobbnak tartják, szerzője maga a Rubin nyelv megalkotója.
  • Google :)

Íme néhány forrás a kezdéshez:

  • w3schools.com/sql – Olvasson, próbálja ki és tesztelje SQL-ismeretét itt.
  • quizful.net/test - Itt olyan kérdéseket találhat, amelyeket gyakran tesznek fel az interjúk során.

angol

Úgy gondolom, hogy nincs értelme ezen a ponton részletesen foglalkozni, mivel ez egy külön cikk témája. Az angol nyelv nagyon fontos, és ez jól ismert tény. Két legfontosabb pontot szeretnék röviden megemlíteni.

Először is, az angol a nemzetközi közösség fő nyelve, így a legtöbb hasznos irodalom is angolul fog megjelenni, számos hír, riport és fontos cikk is először angolul jelenik meg. Ha bármilyen kérdésre szeretné tudni a választ, nagyon valószínű, hogy elsősorban angolul találja meg.

Másodszor, minél jobban tud angolul, annál valószínűbb, hogy munkát talál. Az ügyfelek többsége külföldi, ezért az angol nyelv ismerete fontos a produktív kommunikációhoz, a technikai követelmények világos megértéséhez és az ügyféllel való jó kapcsolattartáshoz.

Gyakorlat

Néhány forrás feltárása után ideje áttérni a fontosabb részre, ami a gyakorlat. Rengeteg példa van webáruházzal vagy egyszerű bloggal kapcsolatos feladatokra a weben (íme az egyik), különösen, ha Railsről beszélünk. A már egy kicsit a valósághoz közel álló feladatok elvégzése során biztosan találkozik bizonyos problémákkal, majd továbblép az egyik legfontosabb tulajdonság - a google-készség - képzésére. Sajnos nem találtam semmilyen oktatóanyagot vagy tanfolyamot ennek a készségnek, de mindenképpen nagyon fontos szerepet játszik a mindennapi munkában.

Tanfolyamok

Az elmélet elolvasása és több „kisállatprojekt” megírása után természetesen megpróbálhatunk interjúkra menni, de gyakran előfordul, hogy ez a tudás nem elegendő. Ez a nagy jelentkezők áradatának köszönhető, és a versenyre való tekintettel mindenki igyekszik kitűnni és a lehető legjobban felkészülni.

A képzés másik fontos pontja, amely álláskereséskor előnyt jelenthet, a programozó tanfolyamok. Kivéve persze, ha van egy mentorod, aki hajlandó bizonyos időt eltölteni a feladatok kidolgozásával és azok áttekintésével.

Azonnal meg kell mondanom, hogy semmi esetre sem javaslom, hogy olyan kurzusokra menjen, hogy nincs már valamilyen tudásbázisa. A kurzusokat nagyszerű lehetőségnek tartom az önálló tanulás során megszerzett tudás megszilárdítására. És most nem próbálok egyetlen iskolát sem reklámozni, hanem elmagyarázom, hogy pontosan milyen előnyök származhatnak ebből:

Nagy valószínűséggel ott megtanulsz valamit, amit korábban nem. A kurzusok meglehetősen nagy mennyiségű anyagot tartalmaznak, amelyet strukturált formában mutatnak be, ami lehetővé teszi az anyag jobb asszimilálását.

A tanfolyam során lesz mentor, amely áttekinti a problémák megoldását, és rámutat a gyengeségekre és hibákra.

Motiváció. Ez elsősorban azoknak szól, akiknek segítségre van szükségük az önfegyelemhez. Néha meglehetősen nehéz rákényszeríteni magát valamire, függetlenül attól, hogy milyen kilátások derengtek a láthatáron. Amikor részt vesz a tanfolyamokon, világos ütemtervet kell követnie, és el kell végeznie a feladatokat, különben kizárják. Itt az anyagi motiváció is szerepet játszik, a fizetős képzések esetében. Hiszen amikor odaadod a nehezen megkeresett pénzedet, már egészen másként viszonyulsz a dologhoz, és sokkal ritkábban merülnek fel a puszta kihagyás gondolatai.

Egy másik előny - bizonyítvány. Nyilvánvaló, hogy a végén a tudás alapján fog értékelni, nem pedig az önéletrajzában szereplő papírdarabkák alapján. De ennek ellenére ez egy plusz lesz, különösen, ha van olyan jelölt, aki hasonló tudású, de az okirati bizonyítékai nélkül.

Plusz egy projekt a GitHubon a malacperselyedbe. Ha Ön kezdő fejlesztő, akkor valószínűleg a kurzusokon megírt projekt technológiailag érdekesebb lesz, mint a korábban írottak.

És ami a legfontosabb - foglalkoztatás. Ha már a tanfolyamokról beszélünk, nem csak azokra gondolok, amelyekért pénzt kell fizetni. Gyakran a cégek maguk toboroznak képzésre, hogy később a legjobbakat tudják felvenni. Ezek lehetnek belső tanfolyamok vagy szakmai gyakorlatok/gyakornoki helyek. Ez a lehetőség a legjobb, mivel nem kell fizetnie semmiért, tapasztalatot és a fenti pluszokat kap, és emellett valódi munkalehetőséget. Nehezebb eljutni hozzájuk, de a kilátások jelentősebbek.

Teljes

A Ruby egy olyan nyelv, amely lehetővé teszi, hogy az erősen gépelt nyelvekkel járó kellemetlenségek és ceremóniák nélkül dolgozzon. A Ruby használata könnyű elkezdeni, különösen akkor, ha már rendelkezik fejlesztési tapasztalattal más programozási nyelvekben, és gyorsan tud prototípust készíteni a Ruby on Rails segítségével. Japánban, ahonnan származott, a Rubyt játékok készítésére használták. A Ruby tömör, és úgy olvas, mint az angol, így a kód könnyen érthető a kezdők számára.

Ami a Ruby tanulását illeti, szeretném megismételni: kicsiben kell kezdeni. Olvass el néhány könyvet, végezz el néhány feladatot önállóan, majd ha úgy érzed, hogy több tudásra és tapasztalatra van szükséged, vagy további motivációra van szükséged, akkor már bizonyos mennyiségű tudás birtokában mehetsz tanfolyamokra.

Ideális esetben ezek egy olyan cég tanfolyamai, amelyek a végén ajánlatot tesznek, ha jól teljesítesz. Alternatív lehetőség a fizetős kurzusok, amelyek segítségével megszilárdíthatja tudását, további projektekkel bővítheti önéletrajzát, és tapasztalatot szerezhet, ami az elején a legfontosabb. De ne számítson arra, hogy a fizetett tanfolyamok elvégzése után bizonyítvány felmutatásával könnyen átmegy az interjún. A tudást mindenesetre értékelni fogják.

Ugyanakkor kellő motivációval, türelemmel, képességekkel és más programozási nyelvekkel kapcsolatos tapasztalattal önállóan is könnyedén elsajátíthatod a Rubyt, mert rengeteg hasznos és jól felépített információ található az interneten. Ezenkívül a nyitott és számos Ruby közösségnek köszönhetően könnyedén választ találhat az interneten számos olyan lehetséges kérdésre, amelyeket nagy valószínűséggel valaki már feltett előtted.

Sok sikert a tanuláshoz! A következő cikkben pedig a kódról fogunk beszélni.

Iratkozzon fel Telegram csatornánkra junioroknak, hogy ne maradjon le érdekes állásokról, szakmai gyakorlatokról, tanfolyamokról, cikkekről.

Jó nap!

Előszó

Egyszer szerettem volna jobban megismerni Railset, de nem tudtam, hol kezdjem, amíg ez a cikk fel nem akadt. A továbbiakban látni fogja a fordítást, saját tapasztalatommal, valamint a számomra sajátos lexikális és frazeológiai fordulatokkal vegyítve. Akkor gyerünk.

Bevezetés

Rengeteg tapasztalatom van a PHP-vel a hátam mögött, de most Rails fejlesztőként dolgozom. A legtöbb ember számára, aki valami újat próbál tanulni, óriási kihívást jelent maga a tanulási folyamat. Ha bármilyen nyelvet vagy keretrendszert birtokol, és kívül-belül ismeri, nem tűnik szükségesnek valami újra váltani.

A Ruby on Rails megtanulása azonban meglehetősen egyszerű. Ez egy hihetetlenül erős keretrendszer, amelyet egy hatalmas közösség támogatja. Tehát a kérdésünk: mi a legjobb módja a Rails tanulásának? Íme az óraterv.

Ez a cikk egy teljes lecketerv a Rails megismeréséhez, és azonnali kezdéshez. Mindössze annyit kell tennie, hogy kövesse az alábbi lépéseket, amelyek sorrendben vannak felsorolva.

1. tétel: Gyakorlatok használata a Try Rubyban

Azt gondolhatnánk, hogy a Ruby megtanulása itt a legfontosabb lépés, de nem az. Néhányan azok közül, akik elkezdik részletesen tanulni a Rubyt, abbahagyják a tanulást, és csak maradnak a jelenlegi nyelvüknél és keretrendszerüknél. Ne csináld!. Ne féljen megtanulni ezt a nyelvet (vagy bármely mást). A Ruby egy szórakoztató, nagyszerű és könnyen megtanulható nyelv. Ráadásul ne felejtse el, hogy nem kell 100% -ban tanulmányoznia. Csak az alapokat kell tudnia.

A Ruby szintaxisba való búvárkodáshoz leginkább ajánlott eszköz a TryRuby webhely. Ez egy interaktív környezet, amely lehetővé teszi a szintaxis működés közbeni kipróbálását. Ha beírod Segítség, meghívást kap egy tizenöt perces oktatóprogramra, amely megtanítja az alapokat. Ne felejtse el, hogy az útmutató két fejezetből áll, amelyeket begépelve olvashat el segítség 2.

Ha egy ideig keményen dolgozik ezeken a feladatokon, akkor jó tudásbázissal rendelkezik. Először csak ezt a két kézikönyvet tanulmányoztam. A többit a Rails webhelyek fejlesztése során, valamint a guglizás és az IRB-vel végzett gyakorlatok során tanultam meg.

2. lépés: A Ruby és a Ruby on Rails telepítése

Ha meg akarja tanulni a Rails-t, akkor kétségtelenül telepítenie kell a számítógépére. Íme néhány megoldás az operációs rendszer alapján. Ha Mac vagy Linux alapú számítógépe van, akkor azt javaslom, hogy használja az RVM-et. Ez egy nagyszerű eszköz a Ruby telepítéséhez. Valójában itt vannak a telepítési utasítások. Ha Windows rendszert használ, akkor a RubyInstallert kell használnia.

A következő lépés maga a Rails telepítése. Ehhez telepítenie kell a RubyGemst. Ha RVM-et használ, akkor gratulálunk – már telepítve van a RubyGems. Ha Windows rendszert használ, azt tanácsolom, hogy folytassa itt. A Rails telepítéséhez a parancsot kell használnia drágakő szerelősínekés akkor kész!

3. tétel: Nézze meg Jeffrey Way Bevezetés a sínekbe című művét


Ebben a 40 perces képernyőközvetítésben Jeffrie Way végigvezeti Önt, mit kell tudnia a Rails használatához. Sok hasznos információt tartalmaz, többek között olyan témákat, mint például:

  • Modellek és generátorok
  • Tesztvezérelt fejlesztés (TDD)
  • ActiveRecord
  • RSpec és Capybara
  • Részlegesek
és még sok más…

4. tétel: Tanuld meg a Rails For Zombies tanfolyamot

Mindig is úgy gondoltam, hogy a példán keresztüli tanulás a legjobb módja egy nyelv vagy kerettanulásnak. Egy ingyenes és hihetetlenül hatékony tanfolyam, amelyet mindenképpen érdemes megnézned, a Rails For Zombies, az EnvyLabs srácaitól. Ez a tanfolyam interaktív, ami azt jelenti, hogy minden videó megtekintése után hasznos és érdekes gyakorlatokon fog dolgozni.

Eddig az interaktív és ingyenes eszközökről beszéltem. Lejárt az ingyenjátékok ideje! Most vásároljon egy Agile Web Development with Rails című könyvet. Célja, hogy megtanítsa Önt a Rails használatára úgy, hogy a semmiből készít egy webhelyet. Végigmegy az alapokon, mint a vezérlők, modellek, állványzatok, funkcionális tesztelés és egy kis AJAX. Szerezd meg legalább a legújabb kiadást.

6. tétel: Egyszerű blog készítése

Tudom, hogy ez elég unalmasnak hangzik (legalábbis nekem), de ez egy nagyszerű példa, amely mindenhol elterjedt, mert elég egyszerű és gyors írni. Ezen az úton haladva segít megszilárdítani tudását és készségeit. De azt javaslom, hogy ne másolj-beillesztést (ezzel nem érsz el semmit, kivéve talán 10 percnyi árampazarlást), hanem próbáld meg fokozatosan, emlékezetből megírni, néha csak egy könyvbe kukucskálva, hogy ez vagy az módszer működik.

7. tétel: Új funkciók hozzáadása a blogjához

Mesés! Még mindig saját blogot építettél. Ennek ellenére nem rendelkezik teljes körű funkcionalitással, hanem csak az egyes blogokban rejlő alapvető funkciókat mutatják be. Oké, dolgozzunk egy kicsit, és adjunk hozzá egy hitelesítési rendszert.

Valójában nem akarlak most semmi nehézre kényszeríteni, mert már keményen dolgoztál. Hitelesítési rendszerként használhat valamilyen kész gyöngyszemet (például Omniauth). Ugyanakkor meg fogja érteni a drágakövek megvalósítását a projektben.

Azt is javaslom, hogy nézze meg Ryan Bates képregényét, amely leírja, hogyan hozhat létre egy egyszerű hitelesítési rendszert a semmiből. A rendszer bevezetése után érdemes hozzáadni a bejegyzések törlésének/szerkesztésének lehetőségét, ha még nem tette meg. Ha a feladat már befejeződött, akkor ideje továbblépni a következő tételre.

8. tétel: hozzon létre valamit saját maga

Ebben a szakaszban itt az ideje, hogy kreatívabbá váljon, és elgondolkozzon valamilyen szolgáltatás létrehozásán (például fotótárhely). Ne álljon meg a második webhely tervezésénél. Készítsen valamit. Például,

Régóta szerettem volna megtanulni a Ruby on Rails valamilyen alapszinten. Nincs konkrét cél. Inkább csak magamnak, hogy jobban megértsem, mi olyan különleges benne (ellentétben 100 500 más technológiával és keretrendszerrel), ami lehetővé teszi, hogy gyorsan létrehozzunk és méretezhessünk meglehetősen terhelt internetes projekteket. Másodlagos ok az új tanulási megközelítések kipróbálásának vágya volt. Amikor programozónak tanultam, csak könyveink és fórumaink voltak, ahol tanácsot kérhettek. Jelenleg interaktív tankönyvek és online programozási iskolák, rengeteg képernyőközvetítés (szinte álom: megnézni, hogyan kódolnak a guruk), olyan tudásbázisok, mint a stackoverflow.com és rengeteg forráskód a GitHubon, ahol órákat tölthet a forráskódok tanulmányozásával. igazi profik. Úgy döntöttem, hogy a következő néhány éjszakát (és napközben nincs időm) a tanulás új módjainak gyakorlati kipróbálásának szentelem.

éjszaka egy

Furcsa lenne elkezdeni a Ruby on Rails tanulását a Ruby legalább minimális ismerete nélkül. Korábban átvettem a ruby-lang.org interaktív útmutatót. De ahogy átmentem rajta, azonnal mindent elfelejtettem. Alkotói azt ígérik, hogy tizenöt percet vesz igénybe a Ruby szintaxis elsajátítása. Harminc kellett hozzá. Igaz, folyamatos figyelemeltereléssel a Twitteren. A folyamat valahogy így néz ki. Azt mondják: „A Ruby-ban lévő tömbök így vannak deklarálva, és az adatok az ilyen tömbökből származnak. Most próbáljunk meg egy tömböt készíteni és N elemet kivonni belőle. És ellenőrizzük." Olvassa el, hogyan van minden elrendezve, és azonnal kipróbálja. Ruby, te persze nem fogsz tanulni. Jobb, ha úgy tekintünk rá, mint egy szuper-expressz tanfolyamra, ami működik.

Ennek ellenére maga a Ruby nagyon távol áll a Ruby on Rails keretrendszertől. El akartam sajátítani a síneket. Az online oktatásról szóló cikkünkből határozottan eszembe jutott a szenzációs Zombie for Rails railsforzombies.org tanfolyam. Ez olyan, mint a Try Ruby, egy interaktív oktatóanyag, amely elindítja a vasúti alkalmazások előkészítését. Először is tartanak egy mini előadást (angolul, de minden nagyon világos - kapcsold be a feliratokat) egy vasúti alkalmazás fájlszerkezetéről, az adatokkal való munka CRUD megközelítéséről, elmagyarázzák, hogyan valósul meg az MVC modell sínen. , stb. Minden videó után felajánljuk, hogy végezzen el feladatokat az anyag konszolidálására. Minden egyszerűnek és érthetőnek tűnik, a pálya egy-két óra alatt észrevétlenül elrepül (kicsi). De! Éreztem a tanfolyam után, hogy tudok vasúti alkalmazást írni? Sajnos nincs!

Kettő éjszaka

Az egyik ok, amiért a Rails for Zombies után van némi alapismeret, de nincs bizalom, az a virtuális környezet, amelyben az edzés zajlik. Egyrészt a határra csökkenti a belépési küszöböt: nem kell aggódnia a környezet miatt. Másrészt, az út során nem hozol létre semmi igazit – a végén nincs számodra „Hello World”. És ami a legfontosabb, hogy melyik oldalról közelítsük meg létrehozását, nem világos. Ettől a pillanattól kezdve szerettem volna működés közben is kipróbálni a Ruby on Rails-t, tulajdonképpen telepíteni a rendszerre (előtte nem is kellett próbálkoznom), és a semmiből létrehozni egy egyszerű alkalmazást.

Nem emlékszem, hogyan, de egészen véletlenül akadtam rá egy nagyon sikeres screencast tanfolyamra az orosz rails.hasbrains.org oldalon. Köszönet a szerzőnek a hozzáértő előadásért: módszeresen, részletesen elmagyarázza a vasúti alkalmazás alapelveit, útközben minden szükséges finomságban elmerül. Röviden, a kísérlet teljes második estéjén ezeknek a képernyőközvetítéseknek több mint harminc epizódjának első felét néztem.

Végre megakadt a fejemben a kép, hogy hogyan generálódik az alkalmazás, hogyan kell dolgozni a rail konzollal, hogyan lehet modelleket és migrációkat készíteni, hogyan frissíthetek modelleket és hogyan kell bennük adatokat validálni, RESTful vezérlők, stb. Az egyes epizódokat megnézve azonnal mindent kipróbáltam működés közben, egy teljesen működő vasúti alkalmazást építettem fel. Világossá vált, hogy elvileg hogyan vannak elrendezve a sínek.

Három éjszaka

Harmadik estére maradtak a screencast utolsó epizódjai, amiket sikerült egy ülve végignéznem: a síneken dolgozni már nem tűnt annyira vadnak. Ezen a ponton valaki azt mondta nekem, hogy a Rails for Zombies tanfolyamnak van egy értelmes és sokkal mélyebb folytatása. Igaz, a tanfolyam már fizetős, és a Code School www.codeschool.com programozóiskola keretein belül zajlik. Nem volt kár 25 dollárt fizetni azért, hogy bejusson az iskola összes kurzusába. Ez a havi költség, tehát ha nem tetszik, ne felejtse el lemondani az előfizetést.

A Rails for Zombies 2 tanfolyam igazán sikeres volt. Igaz, sok minden megismétlése volt annak, amit a képernyőközvetítéseken láttam – de ez még kedves is volt. Öt szint és öt gyakorlatblokk, amelyeket közvetlenül az interaktív konzolon végezhet el. Ekkor már logikusnak, érthetőnek és használhatónak tűntek a sínek.

A Code Schoolban közvetlenül a böngészőben programozhat tanfolyami feladatok elvégzésével

Mi a következő lépés?

Megtanultam összetett projekteket csinálni? Nem. De határozottan felismertem a sínekben használt megközelítéseket, és megértettem azok kényelmét. Megtanultam, hogyan lehet gyorsan létrehozni egyszerű alkalmazásokat, és szuperrövid idő alatt növelni annak funkcionalitását a közösség által írt drágakövek segítségével. Elkaptam a bátorságot, és örömmel folytatom a Code School programok legjobb gyakorlatainak tanulmányozását (most az egységtesztekről szóló tanfolyamot nézem). És átkozottul örülök, hogy a tanulási technológia ilyen egyszerűvé vált.