Å lære rubin. Ruby kurs

En av de første og mest detaljerte Rails treningsbøkene på Internett. Den største fordelen er detaljert dekning av de mest nødvendige problemene, regelmessige oppdateringer og gratis grunnleggende innhold.

Riktignok er ressursen helt på engelsk. Og det er viktig å forstå at dette er bygget i form av en bok – du må finne ut av alle problemstillingene selv. På grunn av dette kan varigheten og kompleksiteten til treningen ikke forutsies.

2. Railcasts

En annen velkjent pedagogisk ressurs over hele Internett. Mer enn én generasjon Rails-utviklere vokste opp på det. Også på engelsk.

Det er ikke bygget som et komplett opplæringskurs, men som en serie skjermcaster – korte leksjoner om et spesifikt tema. Det er mange leksjoner, du kan finne dem om nesten alle emner.

Dessverre sluttet prosjektet å oppdatere i 2013.

3. Rails for zombier

En morsom introduksjon til on-rails for nybegynnere i quest-spillstilen med zombie-atmosfære. Veldig populær blant nybegynnere.

Det er praktisk fordi du ikke trenger å installere noe på datamaskinen din. Alle problemer løses i nettleseren. Trinn for trinn går du gjennom spillet og begynner å forstå det grunnleggende om Ruby on Rails.

Hvis du ikke forstår programmering i det hele tatt, er dette ditt valg. Det er ingen komplekse emner i kurset, ingenting distraherer fra det grunnleggende. På engelsk.

3.Udemy

Stor samling av videokurs. Blant dem er mange for rubin og rubin på skinner. Det er ingen vits i å gi spesifikke lenker - velg etter din smak basert på pris eller popularitet.

Udemy-formatet innebærer ganske korte kurs med vekt på videotimer. Ikke forvent seriøse lekser eller rask støtte fra lærere.

4. Ruby Bursa

Et kraftig kort kurs i det grunnleggende om Rails-utvikling. Erfarne lærere, bra program.

Studentens personlige tilstedeværelse på kurset er ønskelig, og det foregår kun i store ukrainske byer.

5. Utvikling i Ruby on Rails fra Evil Martians

Et tredagers intensivkurs fra et av de mest erfarne Ruby on Rails-teamene i Russland.

Sjelden gjort. Det er dyrt (etter vurderingene å dømme, er det verdt det). Krever personlig tilstedeværelse. Passer bare for avanserte programmerere; nybegynnere har ingenting å gjøre der.

6. Ruby on Rails online intensivkurs fra «A Good Programmer»

Et ferskt prosjekt fra et team kjent på Youtube for sine Ruby-kurs for nybegynnere.

Det 3-måneders intensive programmet er designet for nybegynnere og lover å gjøre deg til en juniorprogrammerer med en portefølje på ikke mindre enn 12 smarte applikasjoner.

Kurset består av videotimer, praktiske oppgaver, lærerstøtte og vanlige webinarer.

Ut fra YouTube-kanalen og brukerkommentarene vet disse gutta hva de gjør, og du vil ikke kjede deg med dem.

I dag fant jeg en historie på Internett om hvordan en som heter James Fend lærte Ruby on Rails i 12 uker. Nedenfor kan du lese en relativt nøyaktig oversettelse av denne historien, og forhåpentligvis bli inspirert til å utforske dette fantastiske rammeverket (og det fantastiske språket).

Før jeg begynner, vil jeg gjerne introdusere Josh Crews (http://joshcrews.com) og takke ham for at han overbeviste meg om å begynne å lære Ruby on Rails; uten ham, hans hjelp og uten timene han brukte på å være min mentor, ville jeg ikke skrevet dette i dag. Takk skal du ha.

23. januar lanserte jeg drømmeideen min, Freelancify.com. For nøyaktig 12 uker siden var jeg en teknologigründer som brukte tusenvis av dollar for å lage en anstendig MVP (minimum levedyktig produkt) fordi jeg manglet kunnskap. En av grunnene (trodde jeg den gangen) var at treningen var for vanskelig for meg eller ville ta uforholdsmessig lang tid. Jeg trodde (som mange andre) at programmerere er (og noen er) født med et sett magiske problemløsnings- og matematiske ferdigheter som gjør dem til programmeringsgenier. Og for nøyaktig 12 uker siden Jeg tok den beste avgjørelsen jeg har tatt på lenge, veldig lenge.. Ikke lenger vil noen av ideene mine forbli noe mer enn en idé. Nå har jeg muligheten til å lansere produksjonsversjoner, bruke penger kun på hosting og anstrenge meg. I dag ligner dette ferdighetssettet på å trekke en haug med traktorer under California Gold Rush mens alle andre brukte enkle spader. Jeg foreslår at alle lærer å skrive kode. Her vil jeg gjerne legge til en presisering: tidligere kalte jeg innlegget "Hvordan jeg lærte Rails på 8 uker", men for å være presis, gitt lanseringsdatoen, viser det seg å være 12 uker. Men i løpet av 8 uker følte jeg at jeg visste nok, og de neste fire ukene ble brukt mer på å sette kunnskapen jeg hadde fått ut i arbeid i stedet for å lære.

Hvilke ferdigheter hadde jeg før jeg begynte å lære Rails?

Jeg var webdesigner med kunnskap om HTML og CSS og fokuserte hovedsakelig på UI og UX design. Det vanskeligste jeg har gjort med faktisk kode (ikke med HTML) er å kunne tilpasse Wordpress. Kort sagt, jeg hadde absolutt ingen anelse om hva et MVC-rammeverk var eller hvordan databaser fungerer generelt. Designet, layouten og HTML for Freelancify ble laget av meg på to uker i juni 2011.

Hvorfor bestemte jeg meg for å studere?

Da jeg gikk tilbake til juni 2011, da oppsettet var klart, begynte jeg å søke etter en koder som ville gjøre oppsettet funksjonelt. Layouten var nesten klar: Jeg hadde tekstfelt, rullegardinmenyer, skjemaer, knapper, lenker som leder dit det trengs, og så videre. Jeg fant en utvikler, og i et nøtteskall, fyren passet ikke meg. Jeg satt igjen med massevis av gjeld og ikke noe produkt i nærheten av å være ferdig. Så jeg tok kontakt med Josh Krius (jeg møtte ham på et Ruby on Rails-treff han arrangerte i Nashville) og møtte ham for å se om jeg kunne gjøre noe av det jeg hadde igjen som utvikler. Dessverre ville fikse og modifisere koden ikke ta mindre tid enn å utvikle den fra bunnen av av en kompetent programmerer. Jeg ble motløs, og innså at jeg ikke hadde råd til å bruke tusenvis av dollar igjen på utvikling fra bunnen av. Og så sa Josh... " Hvorfor ikke bare lære hvordan du håndterer Ruby on Rails, dette prosjektet ville være en fin måte" og så " Jeg kan til og med møte deg to ganger i uken og hjelpe deg med studiene" Jeg brukte hele natten på å tenke på det. Alternativene mine var: finne en komfortabel jobb og betale regningene ELLER risikere alt for å lære Rails og til slutt nyte det beste ramen Italia har å tilby. Jeg bestemte. Jeg ringte Josh neste morgen. Jeg legger alt. Jeg tildelte penger fra de resterende sparepengene og delte dem over tre måneder (for en enkelt fyr som bor alene og uten barn er tusen dollar per måned nok). På tide å komme på jobb, nå er jeg lærling på heltid. Med tanke på at Google-søk, Stackoverflow, IRC #RubyOnRails og Rails-fellesskapet vil ha ryggen min når jeg står fast, er jeg sikker på at det vil være mange av dem.

Mine neste tre måneder - Misjon: Få en MVP, få nok til å jobbe, men ikke "suget nok" til å gi et forferdelig førsteinntrykk.

Uke 1 - 3

Det var nok den største læringskurven, men jeg ga IKKE opp.

Vegger er laget for folk som egentlig ikke vil forlate dem.

Å sette opp et fungerende Rails-miljø for en nybegynner kan være utrolig irriterende. Tips 1: Skaff deg en Mac. Tips #2: Bruk Homebrew, RVM, Git og Heroku (det er egentlig alt du trenger for å komme i gang). Jeg brukte et par dager på å installere, så avinstallerte jeg alt og installerte på nytt. Bare gjenta det noen ganger, og du vil bli vant til å bruke terminalens (konsollen) kommandolinje og forstå hvorfor ting fungerer som de gjør. Da var det første jeg tok opp TryRuby, Rails for Zombies og Michael Hartles Rails Tutorial. Ikke bekymre deg for å forstå materialet 120%, det vil ikke skje før du faktisk begynner å studere. Jeg fullførte Rails Tutorial og laget denne Twitter-lignende appen på omtrent en uke, uten å helt forstå hva jeg hadde gjort. Senere, ettersom jeg gikk videre, begynte jeg å innse at alt begynte å gi mening.

Uke 3 - 6

Med en Twitter-app bygget ved hjelp av Rails Tutorial, fikk jeg litt selvtillit. Opplæringen gjorde meg ikke til en utvikler, men jeg kjenner nå de generelle trinnene for å lage apper, fra å lage selve appen til å installere den på Heroku. Alt som skjedde i mellom forble uskarpt. Hvordan kan jeg EGENTLIG begynne å studere nå? Å jobbe med et virkelig prosjekt som betyr noe for meg. Josh og jeg bestemte meg for at jeg fritt skulle jobbe med Freelancify og se hva jeg kunne gjøre. Det første jeg gjorde var å flytte all HTML fra rammeverket og organisere det i visninger og delfiler. Jeg har laget stillasmalplattformer for brukere og prosjekter. Så begynte jeg å lære min første ekte perle, Devise. Deretter vil muligheten til å ha relasjoner, for eksempel, hver bruker ha en portefølje. Men brukere kan ha flere porteføljer, mens hver portefølje bare kan tilhøre én bruker. Når du først forstår hvordan relasjoner mellom modeller fungerer og hvordan du kan ringe/vise frem ting som tilhører noe annet, vil livet bli mye lettere. Hvis du blir sittende fast på en del og ikke kan bevege deg, hopp over den, sjansen er stor for at mens du utvikler en annen funksjon, vil du også finne ut hvordan du implementerer det du gikk glipp av.

Uke 6 - 9

Steg for steg fortsatte jeg å lære, kopiere og gjenta. Jeg ville få noen ting til å fungere, og så - bam - og jeg traff en vegg og hadde absolutt ingen anelse om hva jeg skulle gjøre videre. Enten jeg gikk på Stackoverflow, IRC-chat #RubyOnRails, RailsCasts eller rykket i Josh, fant jeg til slutt ut hvordan jeg skulle fortsette. Gjør det samme om og om igjen, så får du taket på det ganske raskt. Å bruke irriterende timer på å teste noens svar på Stackoverflow bare for å innse at det ikke fungerer, er faktisk nyttig. Du forstår hva du ikke skal gjøre. Og når du finner svaret vil du begynne å forstå HVORFOR sistnevnte fungerte ikke. Det var rundt denne tiden jeg begynte å innse hvor stort bildet var av ting og virkelig forstå HVORFOR alt fungerer akkurat slik det fungerer. Jeg følte meg som en idiot og gikk tilbake og refaktoriserte koden jeg hadde skrevet tidligere, noe som gjorde den mer effektiv. Og på et tidspunkt nådde jeg et stadium hvor alt begynte å falle på plass.

Uke 9 - 12

Jeg var i utrolig energimodus for å få Freelancify til lanseringsstadiet. På dette stadiet følte jeg det som om jeg fløy og satte funksjonene i bruk. Den siste uken ble brukt til å feilsøke ulike feil og tabber. Denne mandagen lanserte jeg siden. Men jeg er fortsatt langt fra å fullføre studiene... Det er det. Jeg har utelatt (i innleggets korthets navn) små detaljer og tekniske punkter. Men, still gjerne spørsmål i kommentarfeltet, jeg vil definitivt prøve å svare. James Fend.

P.S. – Selv om det hjalp veldig å ha en mentor jeg kunne møte med, kan du definitivt lære Rails uten en. Eller prøv å finne deg selv en slik person, mange Rails-utviklere elsker å bidra til fellesskapet. Se etter lokale konferanser og møter.

Denne oppføringen er allerede mer enn to år gammel (publisert 27. januar 2012), men den har likevel ikke mistet sin relevans. I løpet av denne tiden klarte James Fend å selge Freelancify og investere i en ny oppstart, han la igjen et notat om dette 27. februar 2013. Jeg mener at denne artikkelen er et utmerket eksempel på hvordan en person kan nå målet sitt. Alt du trenger å gjøre er å starte. :)

"Hallo! Hva gjør du?" - "Ja, jeg skal programmere en ting i Ruby." - "Er det smittsomt:-)"
Dette er dialogen jeg hadde i dag med en venn. Hvorfor rubin?

Hvorfor lære Ruby

Dette spørsmålet angår de som har programmert i PHP i lang tid og med suksess. Du har mestret ett språk, det er flott, men ikke stopp der. Mange vil kanskje hevde at de kan språket, er kjent med det og allerede har lært alle triksene med det. Jeg skal gi deg noen grunner til å lære Ruby.

  1. Nysgjerrighet. Jeg var for eksempel veldig interessert i å jobbe med åpne klasser. Akkurat som det, å ta og injisere metoden din i en systemklasse er flott, etter min mening. Blir det ikke forvirring? Og hvordan gjøre det? Generelt er alt nytt interessant.
  2. . Fordi Jeg har programmert i PHP lenge, jeg lurer på hva Ruby kan skryte av over PHP/
  3. Ruby hastighet. Twitter ble laget i Ruby (selv om det nylig har blitt forlatt). Jeg vil gjerne teste ytelsen i virkeligheten.
  4. Klasse av problemer som skal løses. Ruby er bra for webapplikasjoner. Er det slik?
  5. Metaprogrammering. Kanskje den viktigste grunnen.

Hvordan lære Ruby. Pensum.

Det var her min første feil var at jeg begynte å lære rammeverket uten å kunne språket. Nå innså jeg at det ikke er nødvendig å gjøre dette. Etter å ha glemt Ruby on Rails en stund begynte jeg å studere selve Ruby; heldigvis var det et systemproblem som hang i billettsystemet i lang tid, som var vanskelig å løse i PHP. Jeg ville virkelig ikke gi ham root-rettigheter Så dette er planen.

  1. Funksjoner, klasser, offentlige klasser. Attributter (aksessører og mutatorer).
  2. Arbeid med strenger og arrays. Søk og erstatt understrenger osv. Typekonvertering.
  3. Arbeid med filer.
  4. Arbeide med systemmiljøet.
  5. Applikasjonsdesign, arbeid med edelstener (moduler).
  6. Arbeid med databasen.
  7. Installere Ruby on Rails, .

I dette innlegget vil jeg publisere min første søknad i Ruby og invitere alle til diskusjonen. Påpek feil, foreslå beste praksis, still spørsmål.

La oss lære Ruby sammen!

Leksjon 1. Første applikasjon i Ruby.

Oppgaven er slik. Det er en DNS-server på hostingen og når du ringer konsollverktøyet i ruby, må du legge til en sone for domenet samt en soneoppføring i listen over soner (domains.list) og endre en oppføring i databasen der for å registrere dette domenet. Databasetilgangsinnstillinger lagres i php-applikasjonen, og spesifikt i dens INI-fil. Etter alle trinnene må du starte DNS-serveren på nytt (bind).

Arbeidsbenk for Ruby

Jeg vil bruke RubyMine fra JetBrains som en IDE. Jeg likte dem veldig godt. Selv om det handlet om phpStorm, er kvaliteten umiddelbart synlig. Vi installerer Ruby via RVM først for alle brukere, deretter konfigurerer vi den for root og brukeren vår.

Utvidelse av Ruby offentlige klasser

For å jobbe med INI-filer i Ruby bruker vi inifile-perlen. Men det er et lite problem med det. I ZF INI-filen kan du trygt bruke konstanter, og linjene vil se slik ut:

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

Det er APPLICATION_INI som blåser perleparseren. Nærmere bestemt passer ikke denne linjen til noe mønster:

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

Dette er situasjonen for å bruke offentlige klasser. La oss erstatte IniFile::parse-funksjonen med vår egen. Jeg vil legge alle tilleggene inn i filen fucntion.rb

Klasse IniFile privat # # call-seq # parse # # Parse ini-filens innhold. # def parse returnerer med mindre File.file?(@fn)-seksjonen = null tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? File.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r") mens line = fd.gets line = line.chomp # mutline start # lag tmp-variabler for å indikere at en multine har startet # og de neste linjene i ini-filen vil bli sjekket # mot den andre mutline rgxps. hvis linje =~ @rgxp_multiline_start så tmp_param = $1.strip tmp_value = $2 + "\n" # mutline endeskilletegn er funnet # fjern tmp vars og legg til param / verdi-paret til seksjonen elsif line =~ @rgxp_multiline_end && tmp_param != "" deretter seksjon = tmp_value + $1 tmp_value, tmp_param = "", "" # alt annet mellom flerlinjestart og slutt elsif line =~ @rgxp_multiline_value && tmp_param != "" deretter tmp_value +" $1 + "\n # ignorer tomme linjer og kommentarlinjer elsif line =~ @rgxp_comment then next # dette er en seksjonserklæring elsif line =~ @rgxp_section then section = @ini[$1.strip] # ellers har vi en parameter elsif line =~ @rgxp_param da start seksjon[$1.strip] = $2.strip redning NoMethodError raise Feil, "parameter encountered before first section" end elsif line =~ %r/APPLICATION_/ then next else raise Feil, "could not parse line "#(line)" end end # mens sikre fd.close hvis definert? fd og fd end end

Jeg vil også utvide String-klassen for å tillate domenevalidering.

Klassestreng def gyldig_domenenavn? domenenavn = self.split(".") navn = /(?:+)+/.match(domenenavn).null? 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? (domenenavn.antall > 1 og navn != usann og tld != usann) slutt slutt

Kilder

Vel, nå skal jeg vise deg de faktiske kildene.
index.rb

#coding: utf-8 krever "mysql2" krever "socket" krever "infile" krever "./functions.rb" # Hash av servermaskin adresser verter = ( :production => "83.168.22.1", :test => " 84.22 .11.1" ) util = Util.new(hosts) util.releative_config_path="/site.com/application/config/application.ini" # Kontrollerer parametere avsluttes hvis (ARGV.count != 2) domene = ARGV vertsnavn = ARGV . split(".") quit("Ugyldig domenenavn") if (ikke domain.valid_domain_name?) # Søk etter et selskap i databaseresultatet = Mysql2::Client.new(util.get_db_settings).query("SELECT id FROM `sites` WHERE `vertsnavn` = "#(vertsnavn)"") quit("Company not found") if result.count != 1 # Oppdater vertsnavnet rader = 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
Denne filen beskriver prosjektets avhengigheter.

Kilde:rubygems perle "mysql2", "0.2.6" gem "inifile"

Vel, og de faktiske inkluderte funksjonene.
funksjoner.rb

#coding: utf-8 class String def valid_domain_name? domenenavn = self.split(".") navn = /(?:+)+/.match(domenenavn).null? 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? (domenenavn.antall > 1 og navn != usann og tld != usann) end end class IniFile private # # call-seq # parse # # Parse ini-filens innhold. # def parse returnerer med mindre File.file?(@fn)-seksjonen = null tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? File.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r") mens line = fd.gets line = line.chomp # mutline start # lag tmp-variabler for å indikere at en multine har startet # og de neste linjene i ini-filen vil bli sjekket # mot den andre mutline rgxps. hvis linje =~ @rgxp_multiline_start så tmp_param = $1.strip tmp_value = $2 + "\n" # mutline endeskilletegn er funnet # fjern tmp vars og legg til param / verdi-paret til seksjonen elsif line =~ @rgxp_multiline_end && tmp_param != "" deretter seksjon = tmp_value + $1 tmp_value, tmp_param = "", "" # alt annet mellom flerlinjestart og slutt elsif line =~ @rgxp_multiline_value && tmp_param != "" deretter tmp_value +" $1 + "\n # ignorer tomme linjer og kommentarlinjer elsif line =~ @rgxp_comment then next # dette er en seksjonserklæring elsif line =~ @rgxp_section then section = @ini[$1.strip] # ellers har vi en parameter elsif line =~ @rgxp_param da start seksjon[$1.strip] = $2.strip redning NoMethodError raise Feil, "parameter encountered before first section" end elsif line =~ %r/APPLICATION_/ then next else raise Feil, "could not parse line "#(line)" end end # while sikre fd.close hvis definert? fd og fd end end def quit(message=nil) banner = " =============== | DNS-tilleggsverktøy | ============================ Bruk: ruby​./index.rb domain.com olddomain.site.com" hvis ikke melding .nil ? deretter banner = meldingsslutt setter banner avslutter sluttklasse Util attr_accessor:hosts, :releative_config_path, :environment def initialize(hosts =Array.new) self.hosts = hosts end # Få lokal IP-adresse def local_ip orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # slå av omvendt DNS-oppløsning midlertidig UDPSocket.open do |s| s.connect "64.233.187.99", 1 s.addr.last end sure Socket.do_not_reverse_lookup = orig end if # Henter miljøet def get_environment @ miljø.null? then hosts = self.hosts.invert if(hosts.include?(self.local_ip)) then @environment = hosts else @environment = "development" 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 # Returnerer brukernavnet hvis verktøyet startes via rvmsudo eller direkte def get_local_username hvis ENV["SUDO_USER"].nil? quit("Util skal kjøres over rmvsudo, \r\neksempel: 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("Ingen passende seksjon i konfigurasjonsfilen") med mindre config.has_section?(section_name) dsn = config.to_h["resources.doctrinedata.connections. default. dsn"] # Parse dsn dsn.sub!("mysql://", "") arr = dsn.split("@") dbconfig = ( :brukernavn => arr.split(":"), : passord = > arr.split(":"), :host => arr.split("/"), :database => arr.split("/") ) end end

Hva med PHP?

Dette innlegget handler ikke om å slutte med PHP og begynne å lære Ruby. PHP er det mest populære webprogrammeringsspråket; tusenvis av interessante ting og algoritmer er implementert i det, inkl. til og med nevrale nettverk. Og jeg elsker ham) Gjennom årene kan man si at jeg har blitt nær ham, til tross for alle hans mangler. Men dette betyr ikke at du ikke trenger å lære noe nytt for deg selv.

I det siste har jeg fått spørsmålet om hvilke bøker jeg skal lære Ruby fra. Jeg leser denne nå.

Denne boken er den offisielle guiden til det dynamiske programmeringsspråket Ruby. Forfatterteamet er virkelig fantastisk: David Flanagan er en kjent ekspert innen programmering, forfatter av en rekke bestselgende bøker om JavaScript og Java; Yukihiro "Matz" Matsumoto er skaperen og hovedutvikleren av Ruby.
Boken gir en detaljert beskrivelse av alle aspekter ved språket: Rubys leksikalske og syntaktiske struktur, datatyper og elementære uttrykk, definisjoner av metoder, klasser og moduler. I tillegg inneholder boken informasjon om API-funksjonene til Ruby-plattformen.

Publikasjonen vil være av interesse for erfarne programmerere som blir kjent med det nye Ruby-språket, samt de som allerede programmerer i Ruby og ønsker å oppnå et høyere nivå av forståelse og mestring av arbeidet. Du kan finne boken om ozon eller biblioglobus.

Jeg ser frem til dine kommentarer om koden og eventuelle interessante ideer!)

Takk skal du ha!

Hvis denne artikkelen hjalp deg, eller du ønsker å støtte min forskning og blogg, er her den beste måten å gjøre det på:

Ruby er et kraftig og populært programmeringsspråk. I tillegg til populariteten er det grunnlaget for et velkjent rammeverk som lar deg lage kule og dynamiske nettsider om ulike emner. Hvis du ser på TIOBE-vurderingen, er språket et av de tjue mest populære språkene i verden.

Språket dukket opp i 1995 og regnes som et ungt språk sammenlignet med C eller C++, som dukket opp i henholdsvis 1972 og 1983. Språket har en rekke fordeler og spesifikke funksjoner som er implementert utelukkende i det, hvis vi sammenligner andre populære programmeringsspråk.

Kursplan

I løpet av videokurset vil du lære Ruby-språket uten å bruke ekstra rammer. Tilleggskurs på Rubin du finner den på.

I løpet av kurset vil vi lære å installere og jobbe med språket, lære syntaksen Rubin(variabler, løkker, betingede utsagn), samt mer komplekse ting: OOP, arbeid med filer, unntak, metoder, og vi skal berøre mange andre emner.


Installere Ruby på Windows

For å installere Ruby på Windows bruk RubyInstaller, som kan lastes ned fra den offisielle nettsiden ved å bruke denne lenken. Last ned den nyeste versjonen og installer den som et vanlig program. Etter at installasjonen er fullført, vil du se et lignende vindu:

I dette vinduet, sørg for at avmerkingsboksen er merket, så åpnes et annet program for installasjon Rubin inn i systemet.

I vinduet som åpnes, skriv inn 1 en etter en og trykk Enter, vent til installasjonen er fullført, trykk 2 og Enter, og på slutten utfør den tredje kommandoen ved å trykke 3 og Enter.

Installere Ruby på Mac

På en Mac er Ruby installert som standard, så du trenger ikke gjøre noe ekstra. Du kan sjekke språkversjonen i terminalen ved å bruke følgende kommando:

Hvis versjonen er utdatert, kan du laste ned en ny. Først må du laste ned Ruby versjonsbehandler. Dette gjøres gjennom terminalen ved å bruke kommandoen:

Curl -L https://get.rvm.io | bash -s stabil

Etter at du har installert manageren, må du starte terminalen på nytt. Kjør følgende kommando:

Rvm liste kjent

Etter omstart kan du installere den versjonen du ønsker. I vårt tilfelle ble versjon 2.4.2 installert:

Rvm installer ruby-2.4.2

På slutten kan du sjekke versjonen på nytt, og hvis den fortsatt er gammel, kan du bare installere den nye versjonen som standard.

Dette er den første av en serie artikler der jeg skal snakke om funksjonene til Ruby og Ruby on Rails og dele tips om hvor du kan begynne å lære Ruby, hvor du finner svar på spørsmål, hvordan du får den opplevelsen du trenger, og hvordan du kan skille deg ut fra andre kandidater. Jeg ville vært glad hvis mine råd hjelper noen å bestemme seg for spesialisering og velge Ruby å studere og jobbe med.

Viktige funksjoner og forskjeller til Ruby

Jeg hører ofte spørsmålet: er det verdt å lære Ruby? Som regel er spørsmålet basert på tvil: hvor lett det er å finne en jobb med denne spesialiseringen, om det vil være interessante prosjekter, og så videre og så videre. Ruby er et moderne programmeringsspråk i stadig utvikling; det er mange bruksområder for det. Du har sikkert hørt om Chef, Vagrant, Homebrew, men som oftest hører vi alle om Rails. Her er et innlegg med en kommentar fra forfatteren av rammeverket om hvorfor det er verdt å lære Rails.

Alle bestemmer selvfølgelig selv hvilket verktøy som skal brukes. Og det er ingen vits i å krangle i det uendelige om hvorfor en teknologi er bedre enn en annen. Jeg valgte Ruby fordi det er et utrolig uttrykksfullt og fleksibelt språk som lar deg løse det samme problemet på mange måter.

Ruby er et tolket, fullt objektorientert programmeringsspråk med sterk dynamisk skriving. Den kombinerer Perl-lignende syntaks med en objektorientert tilnærming. Noen funksjoner er også lånt fra programmeringsspråkene Python, Lisp, Dylan og CLU. Implementeringen av Ruby-språktolken på tvers av plattformer distribueres under åpen kildekode-programvare. Kode skrevet i Ruby kan forstås selv av en person som ikke forstår programmering. Prosjekter som Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb og andre ble opprettet på RoR.

Med fremveksten av Node.js har populariteten til Ruby on Rails avtatt noe, men teknologiske startups bruker ofte RoR på grunn av dens enkle prototyping. Ruby er det 11. mest populære språket i TIOBE-indeksen.

Fordeler med Ruby

  • Stort og vennlig samfunn.
  • Barrieren for inngang er ganske høy, noe som betyr at en Ruby-utvikler sannsynligvis har erfaring med minst ett annet programmeringsspråk.
  • Du bruker bare de bibliotekene og modulene som er nødvendige.
  • Det er et stort antall nyttige biblioteker som er klare til bruk (Ruby Gems).
  • Det er mye informasjon om Ruby på Internett, i en strukturert og siktet form.
  • I sammenheng med å diskutere Ruby kan man ikke unngå å nevne det mest populære rammeverket Ruby on Rails.

La oss nå snakke om noen av fordelene med Ruby mer detaljert.

Utviklingshastighet

En av fordelene med Ruby og RoR-rammeverket er utviklingshastigheten. Personlig erfaring og kollegers erfaring viser at det er halvannen gang raskere å løse problemer i Rails sammenlignet med andre lignende rammeverk. Ruby er veldig enkelt som verktøy, og det finnes et stort antall ferdige løsninger for ulike typer problemer.

Standard databufringsverktøy

Når du utvikler et storskalaprosjekt, er en av de viktigste aspektene caching. Ruby on Rails leveres som standard med standard databufringsverktøy. Det vil si at du umiddelbart vil ha verktøy for å bufre data på prosjektet, og du kan enkelt bufre individuelle kodeblokker eller til og med hele sider.

Tester først, kode senere

Ofte under utviklingen av store prosjekter oppstår spørsmålet om testing, og det er ikke uvanlig når det ikke er ekstra midler til et eget team av testere. Rails har også en løsning på dette problemet. Sammenligner du RoR med andre rammeverk i sammenheng med applikasjonstesting, finner du mange ferdige løsninger for alle typer tester, det være seg integrasjon eller enhet. Alle disse bibliotekene fungerer ut av boksen. Ideelt sett, i et Ruby on Rails-prosjekt, skrives ingen kode før det er skrevet tester for det. RoR-ideologi innebærer den første bruken av BDD (Behavior Driven Development) eller TDD (Test Driven Development) metoder.

Vanlig aksepterte utviklingsprosessstandarder for Ruby-utviklere

Når jeg snakker om fordelene med Ruby, kan jeg ikke la være å nevne Ruby-fellesskapet igjen. Den vokser, utvikler seg og er alltid klar til å hjelpe. Det er alltid noen som vil fortelle deg hvordan du best kan løse et problem og dele sine erfaringer i enhver sak.

Også et veldig viktig poeng - i Ruby-miljøet har det i mange år vært standarder for utviklingsprosessen, visse regler/fellesskapsavtaler som utviklingen utføres etter, noe som forenkler arbeidet betraktelig. På grunn av disse standardene er hvert prosjekt svært strukturert; følgelig vil en ny utvikler i teamet raskt komme i gang og være nyttig fra de første arbeidsdagene. Og enda mer: Hvis prosjektet ble startet av ett team og avsluttet av et annet, er dette heller ikke noe problem i det hele tatt. Siden utviklingen utføres i henhold til de allerede nevnte reglene og fellesskapsavtalene, vil det nye teamet raskt og enkelt forstå prosjektet og fullføre det uten mye tidstap.

Ruby on rails har også en lang rekke ulike ferdige løsninger i det offentlige. De fleste løsningene er allerede implementert av noen før deg og også testet av fellesskapet, noe som reduserer behovet for å utvikle fra bunnen av. Disse kan være autentisering, autorisasjon, kommentarsystemer, betalingssystemer, e-postlister og så videre.

Ferdige løsninger for prosjektflerspråklighet

Rails kommer med svært kraftige verktøy for prosjektlokalisering rett ut av esken. Det er mulig å både gi støtte for flere språk i første omgang, og implementere det senere. Prosjektet inneholder spesielle filer for å oversette termer, verktøy for å vise maler på forskjellige språk, og mye mer.

Høyt nivå av databeskyttelse

I dag publiseres ofte artikler om hacking av ulike ressurser på nettet. Utviklerne av Ruby on Rails-rammeverket tok spørsmålet om databeskyttelse veldig alvorlig. RoR inkluderer i utgangspunktet kryptering av passord, kredittkortdata og andre personlige brukerdata; SQL-injeksjoner og XSS-angrep er også ekskludert. Alle inndataparametere er escaped som standard.

Å lære Ruby

La oss nå snakke om nøyaktig hvordan du kan mestre Ruby.

Teori

Vi bør selvfølgelig starte med litteratur. Jeg anbefaler disse kildene:

  • Ruby på 20 minutter er en god ressurs for nybegynnere. Lar deg gjøre deg kjent med de grunnleggende strukturene i språket på mindre enn en halv time og begynne å skrive dine egne små programmer.
  • Codecademy er en plattform med nettkurs innen en rekke områder, inkludert ren Ruby og Rails. Utdanningsprosessen her er strukturert ganske interessant, teoretisk materiale er gitt og umiddelbart en praktisk oppgave å konsolidere det. De siste oppgavene er betalt, men selv uten dem kan du få de nødvendige ferdighetene.
  • Materialer om Ruby and Rails - en samling lenker til forskjellige nettsteder og bøker dedikert til studiet av Ruby and Rails.
  • Jeg kan spesielt anbefale boken Flanagan D., Matsumoto Y. “The Ruby Programming Language”. Det regnes som en av de beste, forfatteren er skaperen av Ruby-språket.
  • Google :)

Her er et par ressurser for å komme i gang:

  • w3schools.com/sql - her kan du lese, prøve og teste kunnskapen din om SQL.
  • quizful.net/test - her kan du finne spørsmål som ofte stilles under intervjuer.

Engelsk

Jeg mener at det ikke er noen vits i å dvele ved dette punktet i detalj, siden dette er tema for en egen artikkel. Engelsk er veldig viktig, og dette er et velkjent faktum. Jeg vil bare kort nevne de to viktigste punktene.

For det første er engelsk hovedspråket i det internasjonale samfunnet, følgelig vil det meste av nyttig litteratur også være på engelsk, mange nyheter, rapporter og viktige artikler vil også vises først på engelsk. Hvis du vil vite svaret på et hvilket som helst spørsmål, er det stor sannsynlighet for at du først og fremst vil kunne finne det på engelsk.

For det andre, jo bedre engelskkunnskaper du har, jo større er sjansene dine for å finne en jobb. De fleste klienter er utenlandske, derfor er kunnskap i engelsk viktig for produktiv kommunikasjon, en klar forståelse av de tekniske spesifikasjonene og god kontakt med klienten.

Øve på

Etter å ha studert flere ressurser, er det verdt å gå videre til den viktigste delen, nemlig praksis. Det er mange eksempler på oppgaver med en nettbutikk eller en enkel blogg på Internett (her er en av dem), spesielt når det gjelder Rails. I løpet av å fullføre oppgaver som allerede er litt nærmere de virkelige, vil du definitivt støte på noen problemer, og deretter vil du gå videre til å trene en av de viktigste egenskapene - evnen til å Google. Dessverre kunne jeg ikke finne noen opplæringsprogrammer eller kurs dedikert til denne ferdigheten, men den spiller definitivt en veldig viktig rolle i det daglige arbeidet.

Kurs

Etter å ha lest teorien og skrevet flere "kjæledyrprosjekter", kan du selvfølgelig prøve å gå på intervju, men det hender ofte at denne kunnskapen ikke er nok. Dette skyldes stor pågang av kandidater, og gitt konkurransen prøver alle å skille seg ut og forberede seg best mulig.

Et annet viktig poeng i opplæringen som kan være en fordel i din favør når du søker jobb, er programmeringskurs. Med mindre du selvfølgelig har en mentor som er villig til å bruke en viss tid på å komme med oppgaver og gjennomgå dem.

Jeg vil si med en gang at jeg under ingen omstendigheter anbefaler å ta kurs uten at jeg allerede har litt kunnskap. Jeg ser på kurs som en fin måte å konsolidere kunnskapen man får gjennom selvstudier. Og nå prøver jeg ikke å annonsere for noen spesiell skole, men jeg skal forklare nøyaktig hvilke fordeler som kan utledes av dette:

Med stor grad av sannsynlighet der du vil lære noe du ikke visste fra før. Kursene har et ganske stort stoffvolum, som presenteres i en strukturert form, noe som gjør at du bedre kan assimilere stoffet.

I løpet av kurset vil du ha mentor, som vil gjennomgå løsningen på dine problemer og påpeke svakheter og feil.

Motivasjon. Dette er først og fremst for de som trenger hjelp til selvdisiplin. Noen ganger er det ganske vanskelig å tvinge deg selv til å gjøre noe, uansett hvilke utsikter som dukker opp i horisonten. Når du deltar på kurs, vil du ha en klar timeplan du skal følge og oppgaver å fullføre, ellers blir du utvist. Økonomisk motivasjon spiller også inn her ved betalte kurs. Når du gir dine hardt opptjente penger, har du tross alt en helt annen holdning til saken, og tanker om å bare ta en tur dukker opp mye sjeldnere.

En annen fordel - sertifikat. Det er klart at du til slutt vil bli vurdert på kunnskapen din, og ikke på tilstedeværelsen av papirbiter i CV-en din. Men likevel vil dette være et pluss, spesielt hvis det er en kandidat med tilsvarende kunnskapsnivå, men uten dokumentasjon.

Pluss en prosjekt på GitHub til sparegrisen din. Hvis du er en nybegynner utvikler, vil mest sannsynlig prosjektet skrevet i kursene være mer interessant fra et teknologisk synspunkt enn de som ble skrevet tidligere.

Og det viktigste - arbeid. Når jeg snakker om kurs, mener jeg ikke bare de du må betale penger for. Ofte rekrutterer bedrifter selv til opplæring slik at de kan ansette de beste senere. Dette kan være et internkurs eller et internship/praksisplass. Dette alternativet er det beste, siden du ikke trenger å betale for noe, du får erfaring og alle de ovennevnte fordelene og i tillegg en ekte jobbutsikt. Det er vanskeligere å komme inn i dem, men utsiktene er større.

Total

Ruby er et språk som lar deg jobbe uten mye stress og oppstyr som følger med sterkt maskinskrevne språk. Ruby er lett å komme i gang med, spesielt hvis du allerede har erfaring med å utvikle i andre programmeringsspråk, og du vil raskt kunne lage prototyper med Ruby on Rails. I Japan, hvor det oppsto, ble Ruby brukt til å lage spill. Ruby er kortfattet og leser som engelsk, noe som gjør koden lett å forstå for nybegynnere.

Når det gjelder å lære Ruby, vil jeg gjenta: du må begynne i det små. Les noen bøker, gjør noen oppgaver på egen hånd, og hvis du føler behov for å få mer kunnskap og erfaring eller ytterligere motivasjon, kan du ta kurs som allerede har en viss mengde kunnskap tilegnet på egen hånd.

Ideelt sett er dette kurs fra et selskap som vil gi deg et tilbud ved gjennomføring dersom du presterer godt. Et alternativt alternativ er betalte kurs som vil hjelpe deg å konsolidere kunnskapen din, legge til et annet prosjekt på CV-en din og få erfaring, som er viktigst i starten. Men du bør ikke forvente at etter å ha fullført betalte kurs vil du enkelt bestå et intervju ved å vise sertifikatet ditt. Kunnskap vil uansett bli vurdert.

Samtidig, hvis du har nok motivasjon, tålmodighet, evner og erfaring med andre programmeringsspråk, kan du enkelt mestre Ruby på egenhånd, siden det er mye nyttig og godt strukturert informasjon på Internett. Takket være det åpne og store Ruby-fellesskapet kan du også enkelt finne online svar på mange mulige spørsmål som, med stor sannsynlighet, noen allerede har stilt før deg.

Ha det gøy å lære! Og i neste artikkel skal vi snakke om kode.

Abonner på vår Telegram-kanal for juniorer for ikke å gå glipp av interessante stillinger, praksisplasser, kurs, artikler.