At lære rubin. Ruby kurser

En af de første og mest detaljerede Rails træningsbøger på internettet. Den største fordel er detaljeret dækning af de mest nødvendige problemer, regelmæssige opdateringer og gratis grundlæggende indhold.

Sandt nok er ressourcen udelukkende på engelsk. Og det er vigtigt at forstå, at dette er bygget i form af en bog – du skal selv finde ud af alle problemerne. På grund af dette kan træningens varighed og kompleksitet ikke forudsiges.

2. Jernbaner

En anden velkendt pædagogisk ressource overalt på internettet. Mere end én generation af Rails-udviklere voksede op på det. Også på engelsk.

Det er ikke bygget som et komplet træningsforløb, men som en række screencasts – korte lektioner om et specifikt emne. Der er mange lektioner, du kan finde dem om næsten ethvert emne.

Desværre stoppede projektet med at opdatere i 2013.

3. Skinner til zombier

En sjov introduktion til on-rails for begyndere i quest-spilstilen med en zombie-atmosfære. Meget populær blandt helt nybegyndere.

Det er praktisk, fordi du ikke behøver at installere noget på din computer. Alle problemer er løst i browseren. Trin for trin går du gennem spillet og begynder at forstå det grundlæggende i Ruby on Rails.

Hvis du slet ikke forstår programmering, er dette dit valg. Der er ingen komplekse emner i kurset, intet distraherer fra det grundlæggende. På engelsk.

3.Udemy

Stor samling af videokurser. Blandt dem er mange for rubin og rubin på skinner. Det nytter ikke noget at give specifikke links - vælg efter din smag baseret på pris eller popularitet.

Udemy-formatet involverer ret korte kurser med vægt på videolektioner. Forvent ikke seriøse lektier eller hurtig støtte fra lærere.

4. Ruby Bursa

Et stærkt kort kursus om det grundlæggende i Rails-udvikling. Erfarne lærere, godt program.

Den studerendes personlige tilstedeværelse på kurset er ønskeligt, og det finder kun sted i store ukrainske byer.

5. Udvikling i Ruby on Rails fra Evil Martians

Et tre-dages intensivt kursus fra et af de mest erfarne Ruby on Rails-hold i Rusland.

Sjældent gjort. Det er dyrt (at dømme efter anmeldelser, er det det værd). Kræver personlig tilstedeværelse. Kun egnet til avancerede programmører; begyndere har intet at gøre der.

6. Ruby on Rails online intensivkursus fra "A Good Programmeur"

Et frisk projekt fra et hold kendt på Youtube for sine Ruby-kurser for begyndere.

Det 3-måneders intensive program er designet til helt nybegyndere og lover at gøre dig til en junior programmør med en portefølje på ikke mindre end 12 smarte applikationer.

Kurset består af videolektioner, praktiske opgaver, lærerstøtte og regelmæssige webinarer.

At dømme efter YouTube-kanalen og brugerkommentarer ved disse fyre, hvad de laver, og du vil ikke kede dig med dem.

I dag fandt jeg en historie på internettet om, hvordan en ved navn James Fend lærte Ruby on Rails i 12 uger. Nedenfor kan du læse en forholdsvis præcis oversættelse af denne historie, og forhåbentlig blive inspireret til at udforske denne vidunderlige ramme (og vidunderlige sprog).

Før jeg begynder, vil jeg gerne introducere Josh Crews (http://joshcrews.com) og takke ham for at have overbevist mig om at begynde at lære Ruby on Rails; uden ham, hans hjælp og uden de timer, han brugte på at være min mentor, ville jeg ikke skrive dette i dag. Tak skal du have.

Den 23. januar lancerede jeg min drømmeidé, Freelancify.com. For præcis 12 uger siden var jeg en tech-iværksætter og brugte tusindvis af dollars på at skabe et anstændigt MVP (minimum levedygtigt produkt), fordi jeg manglede viden. En af grundene (troede jeg dengang) var, at træningen var for svær for mig eller ville tage uforholdsmæssig lang tid. Jeg troede (som mange andre), at programmører er (og nogle er) født med et sæt magiske problemløsnings- og matematiske færdigheder, der gør dem til programmeringsgenier. Og for præcis 12 uger siden Jeg tog den bedste beslutning, jeg har taget i lang, rigtig lang tid.. Ikke længere vil nogen af ​​mine ideer forblive mere end en idé. Nu har jeg muligheden for at lancere produktionsversioner, kun bruge penge på hosting og gøre en indsats. I dag er dette færdighedssæt beslægtet med at trække en flok traktorer under guldfeberen i Californien, mens alle andre brugte simple skovle. Jeg foreslår, at alle lærer at skrive kode. Her vil jeg gerne tilføje en præcisering: tidligere kaldte jeg indlægget "Sådan lærte jeg Rails på 8 uger", men for at være præcis, givet lanceringsdatoen, viser det sig at være 12 uger. Men inden for 8 uger følte jeg, at jeg vidste nok, og de næste fire uger blev brugt mere på at sætte den viden, jeg havde opnået, i arbejde frem for at lære.

Hvilke færdigheder havde jeg, før jeg begyndte at lære Rails?

Jeg var webdesigner med kendskab til HTML og CSS og fokuserede hovedsageligt på UI og UX design. Det sværeste, jeg har gjort med den faktiske kode (uden at tælle HTML) er at kunne tilpasse Wordpress. Kort sagt, jeg havde absolut ingen idé om, hvad en MVC-ramme var, eller hvordan databaser fungerer generelt. Designet, layoutet og HTML til Freelancify blev skabt af mig på to uger i juni 2011.

Hvorfor besluttede jeg at studere?

Da jeg gik tilbage til juni 2011, hvor layoutet var klar, begyndte jeg at søge efter en koder, der ville gøre layoutet funktionelt. Layoutet var næsten klar: Jeg havde tekstfelter, rullemenuer, formularer, knapper, links, der førte til, hvor det var nødvendigt, og så videre. Jeg fandt en udvikler, og i en nøddeskal passede fyren ikke til mig. Jeg stod tilbage med et væld af gæld og intet produkt, der var tæt på at være færdigt. Så jeg kontaktede Josh Krius (jeg mødte ham til et Ruby on Rails-møde, han arrangerede i Nashville) og mødtes med ham for at se, om jeg kunne få noget ud af det, jeg havde tilbage som udvikler. Desværre ville reparation og ændring af koden ikke tage mindre tid end at udvikle den fra bunden af ​​en kompetent programmør. Jeg blev modløs, da jeg indså, at jeg ikke havde råd til at bruge tusindvis af dollars igen på udvikling fra bunden. Og så sagde Josh... " Hvorfor skal du ikke bare lære at håndtere Ruby on Rails, dette projekt ville være en fantastisk måde" og så " Jeg kan endda mødes med dig to gange om ugen og hjælpe dig med dine studier" Jeg brugte hele natten på at tænke på det. Mine muligheder var: finde et behageligt job og betale regningerne ELLER risikere alt for at lære Rails og i sidste ende nyde den bedste ramen, Italien har at byde på. Jeg besluttede. Jeg ringede til Josh næste morgen. Jeg lægger alt. Jeg tildelte penge fra den resterende opsparing og delte dem over tre måneder (for en enkelt fyr, der bor alene og uden børn, er tusind dollars pr. måned nok). Tid til at komme på arbejde, jeg er nu fuldtidslærling. Når jeg husker på, at Google-søgning, Stackoverflow, IRC #RubyOnRails og Rails-fællesskabet vil have min ryg, når jeg går i stå, er jeg sikker på, at der vil være masser af dem.

Mine næste tre måneder - Mission: Få en MVP, få nok til at arbejde, men ikke "suget nok" til at efterlade et frygteligt første indtryk.

Uge 1 - 3

Det var nok den største indlæringskurve, men jeg gav IKKE op.

Vægge er lavet til folk, der ikke rigtig vil forlade dem.

Opsætning af et fungerende Rails-miljø for en komplet nybegynder kan være utroligt irriterende. Tip #1: Få en Mac. Tip #2: Brug Homebrew, RVM, Git og Heroku (det er virkelig alt hvad du behøver for at komme i gang). Jeg brugte et par dage på at installere, så afinstallerede jeg alt og installerede igen. Bare gentag det et par gange, og du vil vænne dig til at bruge terminalens (konsol) kommandolinje og forstå, hvorfor tingene fungerer, som de gør. Så var det første jeg tog fat på TryRuby, Rails for Zombies og Michael Hartles Rails Tutorial. Du skal ikke bekymre dig om at forstå materialet 120%, det sker ikke før du faktisk begynder at studere. Jeg afsluttede Rails Tutorial og lavede denne Twitter-lignende app på omkring en uge uden rigtig at forstå, hvad jeg havde gjort. Senere, som jeg skred frem, begyndte jeg at indse, at alting begyndte at give mening.

Uge 3 - 6

Med en Twitter-app bygget ved hjælp af Rails Tutorial fik jeg noget selvtillid. Selvstudiet gjorde mig ikke til en udvikler, men jeg kender nu de generelle trin i oprettelse af apps, fra at oprette selve appen til at installere den på Heroku. Alt, hvad der skete i mellem, forblev sløret. Hvordan kan jeg VIRKELIG begynde at studere nu? At arbejde på et rigtigt projekt, der betyder noget for mig. Josh og jeg besluttede, at jeg frit skulle arbejde på Freelancify og se, hvad jeg kunne gøre. Den første ting, jeg gjorde, var at flytte al HTML fra rammen og organisere den i visninger og delfiler. Jeg har lavet stilladsede skabelonplatforme til brugere og projekter. Så begyndte jeg at lære min første rigtige perle, Devise. Derefter vil evnen til at have relationer, for eksempel, hver bruger har en portefølje. Men brugere kan have flere porteføljer, mens hver portefølje kun kan tilhøre én bruger. Når du først forstår, hvordan relationer mellem modeller fungerer, og hvordan man kalder/viser ting, der hører til noget andet, bliver livet meget lettere. Hvis du sidder fast på en del og ikke kan bevæge dig, så spring den over, chancerne er, at mens du udvikler en anden funktion, vil du også finde ud af, hvordan du implementerer det, du gik glip af.

Uge 6 - 9

Trin for skridt fortsatte jeg med at lære, kopiere og gentage. Jeg ville få nogle ting til at fungere, og så - bam - og jeg ramte en mur og havde absolut ingen idé om, hvad jeg så skulle gøre. Uanset om jeg går på Stackoverflow, IRC-chat #RubyOnRails, RailsCasts eller trækker i Josh, fandt jeg til sidst ud af, hvordan jeg skulle fortsætte. Gør det samme igen og igen, og du vil hurtigt få styr på det. Det er faktisk nyttigt at bruge irriterende timer på at teste nogens svar på Stackoverflow for kun at indse, at det ikke virker. Du forstår, hvad du ikke skal gøre. Og når du finder svaret, vil du begynde at forstå HVORFOR sidstnævnte virkede ikke. Det var omkring dette tidspunkt, at jeg begyndte at indse, hvor stort billedet var af tingene og virkelig at forstå HVORFOR alt fungerer præcis som det fungerer. Jeg følte mig som en idiot og gik tilbage og refaktorerede den kode, jeg havde skrevet tidligere, for at gøre den mere effektiv. Og på et tidspunkt nåede jeg til et stadie, hvor alting begyndte at falde på plads.

Uge 9 - 12

Jeg var i en utrolig energitilstand med at få Freelancify til lanceringsfasen. På dette tidspunkt følte jeg det, som om jeg fløj og satte funktionerne i spil. Den sidste uge gik med at fejlfinde forskellige fejl og fejl. I mandags lancerede jeg siden. Men jeg er stadig langt fra at færdiggøre mit studie... Det er det. Jeg har udeladt (i indlæggets korte navn) små detaljer og tekniske punkter. Stil dog gerne spørgsmål i kommentarerne, jeg vil helt sikkert forsøge at besvare. James Fend.

P.S. - Selvom det hjalp meget at have en mentor, jeg kunne mødes med, kan man bestemt lære Rails uden en. Eller prøv at finde dig selv sådan en person, mange Rails-udviklere elsker at bidrage til fællesskabet. Se efter lokale konferencer og møder.

Dette indlæg er allerede mere end to år gammelt (offentliggjort den 27. januar 2012), men ikke desto mindre har det ikke mistet sin relevans. I løbet af denne tid lykkedes det James Fend at sælge Freelancify og investere i en ny startup, han efterlod en note om dette den 27. februar 2013. Jeg mener, at denne artikel er et glimrende eksempel på, hvordan en person kan nå sit mål. Alt du skal gøre er at starte. :)

"Hej! Hvad laver du?" - "Ja, jeg programmerer én ting i Ruby." - "Er det smitsomt :-)"
Dette er den dialog, jeg havde i dag med en ven. Hvorfor rubin?

Hvorfor lære Ruby

Dette spørgsmål vedrører dem, der har programmeret i PHP i lang tid og med succes. Du har mestret ét sprog, det er fantastisk, men stop ikke der. Mange vil måske hævde, at de kender sproget, er fortrolige med det og allerede har lært alle tricks med det. Jeg vil give dig et par grunde til at lære Ruby.

  1. Nysgerrighed. Jeg var for eksempel meget interesseret i at arbejde med åbne klasser. Bare sådan er det efter min mening fantastisk at tage og injicere din metode i en systemklasse. Vil der ikke være forvirring? Og hvordan gør man det? Generelt er alt nyt interessant.
  2. . Fordi Jeg har programmeret i PHP i lang tid, jeg spekulerer på, hvad Ruby kan prale af over PHP/
  3. Ruby hastighed. Twitter blev lavet i Ruby (selvom det for nylig er blevet opgivet). Jeg vil gerne teste dens ydeevne i virkeligheden.
  4. Klasse af problemer, der skal løses. Ruby er god til webapplikationer. Er det sådan?
  5. Metaprogrammering. Måske den vigtigste årsag.

Sådan lærer du Ruby. Pensum.

Det var her min første fejl var, at jeg begyndte at lære rammerne uden at kunne sproget. Nu indså jeg, at det ikke er nødvendigt at gøre dette. I et stykke tid glemte jeg Ruby on Rails, og jeg begyndte at studere selve Ruby; heldigvis var der et systemproblem, der hang i billetsystemet i lang tid, som var svært at løse i PHP. Jeg ville virkelig ikke give ham rodrettigheder Så dette er planen.

  1. Funktioner, klasser, offentlige klasser. Attributter (accessorer og mutatorer).
  2. Arbejde med strenge og arrays. Søg og erstat understrenge osv. Typekonvertering.
  3. Arbejde med filer.
  4. Arbejde med systemmiljøet.
  5. Applikationsdesign, arbejde med ædelstene (moduler).
  6. Arbejde med databasen.
  7. Installation af Ruby on Rails, .

I dette indlæg vil jeg offentliggøre min første ansøgning i Ruby og invitere alle til diskussionen. Påpeg fejl, foreslå bedste praksis, stil spørgsmål.

Lad os lære Ruby sammen!

Lektion 1. Første ansøgning i Ruby.

Opgaven er sådan her. Der er en DNS-server på hostingen, og når du kalder konsolværktøjet i ruby, skal du tilføje en zone for domænet samt en zoneindgang i listen over zoner (domains.list) og ændre en post i databasen, hvor for at registrere dette domæne. Indstillinger for databaseadgang gemmes i php-applikationen og specifikt i dens INI-fil. Efter alle trinene skal du genstarte DNS-serveren (bind).

Arbejdsbord til Ruby

Jeg vil bruge RubyMine fra JetBrains som en IDE. Jeg kunne virkelig godt lide dem. Selvom det handlede om phpStorm, er kvaliteten umiddelbart synlig. Vi installerer Ruby via RVM først for alle brugere, derefter konfigurerer vi det til root og vores bruger.

Udvidelse af Ruby Public Classes

For at arbejde med INI-filer i Ruby bruger vi inifile-perlen. Men der er et lille problem med det. I ZF INI-filen kan du sikkert bruge konstanter, og linjerne vil se således ud:

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

Det er APPLICATION_INI, der blæser perleparseren. Specifikt passer denne linje ikke til noget 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 situationen for at bruge offentlige klasser. Lad os erstatte IniFile::parse-funktionen med vores egen. Jeg vil lægge alle tilføjelserne ind i filen fucntion.rb

Klasse IniFile privat # # call-seq # parse # # Parse ini-filens indhold. # def parse returnerer medmindre File.file?(@fn) sektion = nul 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 # oprette tmp-variabler for at indikere at en multine er startet # og de næste linjer i ini-filen vil blive kontrolleret # mod den anden mutline rgxps. hvis linje =~ @rgxp_multiline_start så tmp_param = $1.strip tmp_value = $2 + "\n" # mutline endeafgrænseren findes # ryd tmp vars og tilføj param / værdi parret til sektionen elsif line =~ @rgxp_multiline_end && tmp_param != "" derefter sektion = tmp_value + $1 tmp_value, tmp_param = "", "" # alt andet mellem multiline start og end elsif line =~ @rgxp_multiline_value && tmp_param != "" derefter tmp_value +" $1 + "\n # ignorer tomme linjer og kommentarlinjer elsif line =~ @rgxp_comment derefter næste # dette er en sektionserklæring elsif line =~ @rgxp_section derefter sektion = @ini[$1.strip] # ellers har vi en parameter elsif line =~ @rgxp_param derefter start sektion[$1.strip] = $2.strip redning NoMethodError raise Fejl, "parameter fundet før første sektion" end elsif line =~ %r/APPLICATION_/ derefter næste else raise Fejl, "kunne ikke parse linje "#(line)" ende ende # mens sikre fd.close hvis defineret? fd og fd ende ende

Jeg vil også udvide String-klassen for at tillade domænevalidering.

Klassestreng def valid_domain_name? domænenavn = self.split(".") navn = /(?:+)+/.match(domænenavn).nul? 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? (domænenavn.antal > 1 og navn != falsk og tld != falsk) end end

Kilder

Nå, nu vil jeg vise dig de faktiske kilder.
indeks.rb

#coding: utf-8 kræver "mysql2" kræver "socket" kræver "infile" kræver "./functions.rb" # Hash af servermaskine adresser værter = ( :production => "83.168.22.1", :test => " 84.22 .11.1" ) util = Util.new(hosts) util.releative_config_path="/site.com/application/config/application.ini" # Kontrol af parametre afsluttes, hvis (ARGV.count != 2) domæne = ARGV værtsnavn = ARGV . split(".") quit("Ugyldigt domænenavn") if (ikke domain.valid_domain_name?) # Søg efter en virksomhed i databaseresultatet = Mysql2::Client.new(util.get_db_settings).query("SELECT id FRA `sites` WHERE `hostname` = "#(hostname)"") quit("Virksomheden blev ikke fundet") hvis result.count != 1 # Opdater dens hostname 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
Denne fil beskriver projektets afhængigheder.

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

Nå, og de faktiske inkluderede funktioner.
funktioner.rb

#coding: utf-8 class String def valid_domain_name? domænenavn = self.split(".") navn = /(?:+)+/.match(domænenavn).nul? 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? (domænenavn.antal > 1 og navn != falsk og tld != falsk) ende slutklasse IniFile privat # # call-seq # parse # # Parse ini-filens indhold. # def parse returnerer medmindre File.file?(@fn) sektion = nul 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 # oprette tmp-variabler for at indikere at en multine er startet # og de næste linjer i ini-filen vil blive kontrolleret # mod den anden mutline rgxps. hvis linje =~ @rgxp_multiline_start så tmp_param = $1.strip tmp_value = $2 + "\n" # mutline endeafgrænseren findes # ryd tmp vars og tilføj param / værdi parret til sektionen elsif line =~ @rgxp_multiline_end && tmp_param != "" derefter sektion = tmp_value + $1 tmp_value, tmp_param = "", "" # alt andet mellem multiline start og end elsif line =~ @rgxp_multiline_value && tmp_param != "" derefter tmp_value +" $1 + "\n # ignorer tomme linjer og kommentarlinjer elsif line =~ @rgxp_comment derefter næste # dette er en sektionserklæring elsif line =~ @rgxp_section derefter sektion = @ini[$1.strip] # ellers har vi en parameter elsif line =~ @rgxp_param derefter start sektion[$1.strip] = $2.strip redning NoMethodError raise Fejl, "parameter fundet før første sektion" end elsif line =~ %r/APPLICATION_/ derefter næste else raise Fejl, "kunne ikke parse linje "#(line)" end end # while sikre fd.close hvis defineret? fd og fd end end def quit(message=nil) banner = " =============== | DNS-tilføjelsesværktøj | ============================ Brug: ruby​./index.rb domain.com olddomain.site.com" hvis ikke besked .nil ? derefter banner = besked slut sætter banner exit slutklasse 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 # deaktiver omvendt DNS-opløsning midlertidigt UDPSocket.open do |s| s.connect "64.233.187.99", 1 s.addr.last end sure Socket.do_not_reverse_lookup = original end if # Henter miljøet def get_environment @ miljø.nul? derefter hosts = self.hosts.invert if(hosts.include?(self.local_ip)) then @environment = hosts else @environment = "udvikling" end else @environment.to_s end end def get_config_path local_username = get_local_brugernavn "/home/" +local_username+"/sandbox"+self.releative_config_path end # Returnerer brugernavnet, hvis værktøjet startes via rvmsudo eller direkte def get_local_username hvis ENV["SUDO_USER"].nil? quit("Util skal kø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 sektion i konfigurationsfilen") medmindre config.has_section?(section_name) dsn = config.to_h["resources.doctrinedata.connections. default. dsn"] # Parse dsn dsn.sub!("mysql://", "") arr = dsn.split("@") dbconfig = ( :brugernavn => arr.split(":"), : password = > arr.split(":"), :host => arr.split("/"), :database => arr.split("/") ) end end

Hvad med PHP?

Dette indlæg handler ikke om at afslutte PHP og begynde at lære Ruby. PHP er det mest populære webprogrammeringssprog; tusindvis af interessante ting og algoritmer er implementeret i det, inkl. selv neurale netværk. Og jeg elsker ham) Gennem årene kan man sige, at jeg er blevet tæt på ham, på trods af alle hans mangler. Men det betyder ikke, at du ikke behøver at lære noget nyt for dig selv.

På det seneste er jeg blevet stillet spørgsmålet om, hvilke bøger jeg skal lære Ruby af. Jeg læser denne nu.

Denne bog er den officielle guide til det dynamiske programmeringssprog Ruby. Teamet af forfattere er virkelig fremragende: David Flanagan er en kendt ekspert inden for programmering, forfatter til en række bedst sælgende bøger om JavaScript og Java; Yukihiro "Matz" Matsumoto er skaberen og hovedudvikleren af ​​Ruby.
Bogen giver en detaljeret beskrivelse af alle aspekter af sproget: Rubys leksikale og syntaktiske struktur, datatyper og elementære udtryk, definitioner af metoder, klasser og moduler. Derudover indeholder bogen information om Ruby-platformens API-funktioner.

Publikationen vil være interessant for erfarne programmører, der er ved at stifte bekendtskab med det nye Ruby-sprog, samt dem, der allerede programmerer i Ruby og ønsker at opnå en højere grad af forståelse og beherskelse af arbejdet. Du kan finde bogen om ozon eller biblioglobus.

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

Tak skal du have!

Hvis denne artikel hjalp dig, eller du vil støtte min forskning og blog, er her den bedste måde at gøre det på:

Ruby er et stærkt og populært programmeringssprog. Udover dens popularitet er det grundlaget for et velkendt framework, der giver dig mulighed for at skabe fede og dynamiske hjemmesider om forskellige emner. Hvis du ser på TIOBE-vurderingen, er sproget et af de tyve mest populære sprog i verden.

Sproget dukkede op i 1995 og betragtes som et ungt sprog i sammenligning med C eller C++, som udkom i henholdsvis 1972 og 1983. Sproget har en række fordele og specifikke funktioner, der udelukkende implementeres i det, hvis vi sammenligner andre populære programmeringssprog.

Kursusplan

I løbet af videokurset lærer du Ruby-sproget uden at bruge yderligere rammer. Yderligere kurser vedr Rubin du kan finde den på.

I løbet af kurset lærer vi at installere og arbejde med sproget, lære syntaksen Rubin(variabler, loops, betingede udsagn), samt mere komplekse ting: OOP, arbejde med filer, undtagelser, metoder, og vi vil komme ind på mange andre emner.


Installation af Ruby på Windows

For at installere Ruby på Windows brug RubyInstaller, som kan downloades fra den officielle hjemmeside ved hjælp af dette link. Download den seneste version og installer den som et almindeligt program. Når installationen er fuldført, vil du se et lignende vindue:

I dette vindue skal du sørge for, at afkrydsningsfeltet er markeret, så åbner et andet program til installation Rubin ind i systemet.

I vinduet, der åbnes, skal du indtaste 1 en efter en og trykke på Enter, vente til installationen er færdig, trykke på 2 og Enter, og til sidst udføre den tredje kommando ved at trykke på 3 og Enter.

Installation af Ruby på Mac

På en Mac er Ruby installeret som standard, så du behøver ikke at gøre noget ekstra. Du kan kontrollere sprogversionen i terminalen ved at bruge følgende kommando:

Hvis versionen er forældet, kan du downloade en ny. Først skal du downloade Ruby version manager. Dette gøres gennem terminalen ved hjælp af kommandoen:

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

Efter installation af manageren skal du genstarte terminalen. Kør følgende kommando:

Rvm liste kendt

Efter genstart kan du installere den version, du ønsker. I vores tilfælde blev version 2.4.2 installeret:

Rvm installer ruby-2.4.2

Til sidst kan du tjekke versionen igen, og hvis den stadig er gammel, skal du blot installere den nye version som standard.

Dette er den første af en serie af artikler, hvor jeg vil tale om funktionerne ved Ruby og Ruby on Rails og dele tips om, hvor du kan begynde at lære Ruby, hvor du kan finde svar på spørgsmål, hvordan du får den oplevelse, du har brug for, og hvordan du kan skille dig ud fra andre kandidater. Jeg ville være glad, hvis mit råd hjælper nogen med at beslutte deres specialisering og vælge Ruby at studere og arbejde med.

Nøglefunktioner og forskelle i Ruby

Jeg hører ofte spørgsmålet: er det værd at lære Ruby? Som regel er spørgsmålet baseret på tvivl: hvor nemt er det at finde et job med denne specialisering, om der vil være interessante projekter, og så videre og så videre. Ruby er et moderne programmeringssprog i konstant udvikling; der er mange anvendelsesområder for det. Du har sikkert hørt om Chef, Vagrant, Homebrew, men oftest hører vi alle om Rails. Her er et indlæg med en kommentar fra forfatteren til rammeværket om, hvorfor det er værd at lære Rails.

Alle bestemmer selvfølgelig selv, hvilket værktøj der skal bruges. Og det nytter ikke at skændes uendeligt om, hvorfor én teknologi er bedre end en anden. Jeg valgte Ruby, fordi det er et utroligt udtryksfuldt og fleksibelt sprog, der giver dig mulighed for at løse det samme problem på mange måder.

Ruby er et fortolket, fuldt objektorienteret programmeringssprog med stærk dynamisk skrivning. Den kombinerer Perl-lignende syntaks med en objektorienteret tilgang. Nogle funktioner er også lånt fra programmeringssprogene Python, Lisp, Dylan og CLU. Implementeringen af ​​Ruby-sprogfortolkeren på tværs af platforme distribueres under open source-software. Kode skrevet i Ruby kan forstås selv af en person, der ikke forstår programmering. Projekter som Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb og andre blev oprettet på RoR.

Med fremkomsten af ​​Node.js er populariteten af ​​Ruby on Rails faldet noget, men tech startups bruger ofte RoR på grund af dets lette prototyping. Ruby er det 11. mest populære sprog i TIOBE-indekset.

Fordele ved Ruby

  • Stort og venligt samfund.
  • Barrieren for adgang er ret høj, hvilket betyder, at en Ruby-udvikler sandsynligvis har erfaring med mindst ét ​​andet programmeringssprog.
  • Du bruger kun de biblioteker og moduler, der er nødvendige.
  • Der er et stort antal nyttige biblioteker, der er klar til brug (Ruby Gems).
  • Der er meget information om Ruby på internettet, i en struktureret og sigtet form.
  • I forbindelse med at diskutere Ruby kan man ikke undlade at nævne den mest populære ramme Ruby on Rails.

Lad os nu tale om nogle af fordelene ved Ruby mere detaljeret.

Udviklingshastighed

En af fordelene ved Ruby og RoR-rammerne er udviklingshastigheden. Personlig erfaring og kollegers erfaringer viser, at det er halvanden gang hurtigere at løse problemer i Rails sammenlignet med andre lignende rammer. Ruby er meget simpelt som værktøj, og der findes et stort antal færdige løsninger til forskellige slags problemer.

Standardværktøjer til datacache

Når man udvikler et projekt i stor skala, er et af de vigtigste aspekter caching. Ruby on Rails leveres som standard med standardværktøjer til datacaching. Det vil sige, at du med det samme har værktøjer til at cache data på projektet, og du kan nemt cache enkelte kodeblokke eller endda hele sider.

Test først, kode senere

Ofte under udviklingen af ​​store projekter opstår spørgsmålet om test, og det er ikke ualmindeligt, når der ikke er yderligere midler til et separat team af testere. Rails har også en løsning på dette problem. Sammenligner du RoR med andre rammer i forbindelse med applikationstest, finder du en masse færdige løsninger til enhver form for test, hvad enten det er integration eller enhed. Alle disse biblioteker fungerer ud af boksen. Ideelt set skrives der ingen kode i et Ruby on Rails-projekt, før der er skrevet test til det. RoR-ideologi involverer den indledende brug af BDD (Behavior Driven Development) eller TDD (Test Driven Development) metoder.

Almindeligt accepterede udviklingsprocesstandarder for Ruby-udviklere

Når jeg taler om fordelene ved Ruby, kan jeg ikke lade være med at nævne Ruby-fællesskabet igen. Den vokser, udvikler sig konstant og er altid klar til at hjælpe. Der er altid nogen, der vil fortælle dig, hvordan du bedst løser et problem og deler deres erfaringer i enhver sag.

Også en meget vigtig pointe - i Ruby-miljøet har der i mange år været standarder for udviklingsprocessen, visse regler/fællesskabsaftaler som udviklingen udføres efter, hvilket i høj grad forenkler arbejdet. På grund af disse standarder er hvert projekt meget struktureret, og derfor vil en ny udvikler i teamet hurtigt komme i gang og være nyttig fra de første arbejdsdage. Og endnu mere: Hvis projektet blev startet af et hold og afsluttet af et andet, er det heller ikke noget problem overhovedet. Da udviklingen udføres efter de allerede nævnte regler og fællesskabsaftaler, vil det nye team hurtigt og nemt forstå projektet og gennemføre det uden større tidstab.

Ruby on rails har også en lang række forskellige færdige løsninger i det offentlige domæne. De fleste løsninger er allerede implementeret af nogen før dig og også testet af fællesskabet, hvilket reducerer behovet for at udvikle fra bunden. Disse kunne være autentificering, autorisation, kommentarsystemer, betalingssystemer, postlister og så videre.

Færdige løsninger til projekt flersprogethed

Rails leveres med meget kraftfulde værktøjer til projektlokalisering ud af kassen. Det er muligt både at yde support til flere sprog i starten og implementere det senere. Projektet indeholder særlige filer til oversættelse af termer, værktøjer til visning af skabeloner på forskellige sprog og meget mere.

Højt niveau af databeskyttelse

I dag bliver artikler om hacking af forskellige ressourcer ofte publiceret online. Udviklerne af Ruby on Rails-rammen tog spørgsmålet om databeskyttelse meget alvorligt. RoR inkluderer i første omgang kryptering af adgangskoder, kreditkortdata og andre personlige brugerdata; SQL-injektioner og XSS-angreb er også udelukket. Alle inputparametre er som standard escaped.

At lære Ruby

Lad os nu tale om, hvordan du præcis kan mestre Ruby.

Teori

Vi bør selvfølgelig starte med litteraturen. Jeg anbefaler disse kilder:

  • Ruby på 20 minutter er en god ressource for helt nybegyndere. Giver dig mulighed for at sætte dig ind i sprogets grundlæggende strukturer på mindre end en halv time og begynde at skrive dine egne små programmer.
  • Codecademy er en platform med onlinekurser inden for en række forskellige områder, inklusive ren Ruby og Rails. Uddannelsesprocessen her er struktureret ganske interessant, teoretisk materiale gives og umiddelbart en praktisk opgave at konsolidere det. De sidste opgaver er betalt, men selv uden dem kan du opnå de nødvendige færdigheder.
  • Materialer om Ruby and Rails - en samling af links til forskellige websteder og bøger dedikeret til studiet af Ruby and Rails.
  • Jeg kan især anbefale bogen Flanagan D., Matsumoto Y. “The Ruby Programming Language”. Det betragtes som en af ​​de bedste, dens forfatter er skaberen af ​​Ruby-sproget.
  • Google :)

Her er et par ressourcer til at komme i gang:

  • w3schools.com/sql - her kan du læse, prøve og teste din viden om SQL.
  • quizful.net/test - her kan du finde spørgsmål, der ofte bliver stillet under interviews.

engelsk

Jeg mener, at der ikke er nogen mening i at dvæle ved dette punkt i detaljer, da dette er emnet for en separat artikel. Engelsk er meget vigtigt, og det er et velkendt faktum. Jeg vil blot kort nævne de to vigtigste punkter.

For det første er engelsk hovedsproget i det internationale samfund, derfor vil det meste af den nyttige litteratur også være på engelsk, mange nyheder, rapporter og vigtige artikler vil også blive vist først på engelsk. Hvis du vil vide svaret på ethvert spørgsmål, er der meget stor sandsynlighed for, at du først og fremmest vil kunne finde det på engelsk.

For det andet, jo bedre dine engelskkundskaber, jo større er dine chancer for at finde et job. De fleste kunder er udenlandske, derfor er kendskab til engelsk vigtigt for produktiv kommunikation, en klar forståelse af de tekniske specifikationer og god kontakt med kunden.

Øve sig

Efter at have studeret flere ressourcer er det værd at gå videre til den vigtigere del, nemlig praksis. Der er rigtig mange eksempler på opgaver med en netbutik eller en simpel blog på internettet (her er en af ​​dem), især når det kommer til Rails. I løbet af at udføre opgaver, der allerede er lidt tættere på de rigtige, vil du helt sikkert støde på nogle problemer, og så vil du gå videre til at træne en af ​​de vigtigste egenskaber - evnen til at Google. Desværre kunne jeg ikke finde nogen tutorials eller kurser dedikeret til denne færdighed, men den spiller helt sikkert en meget vigtig rolle i det daglige arbejde.

Kurser

Efter at have læst teorien og skrevet flere "kæledyrsprojekter", kan du selvfølgelig prøve at gå til interviews, men det sker ofte, at denne viden ikke er nok. Det skyldes den store tilgang af kandidater, og i lyset af konkurrencen forsøger alle at skille sig ud og forberede sig bedst muligt.

Et andet vigtigt punkt i uddannelsen, som kan være en fordel i din favør, når du søger job, er programmeringskurser. Medmindre du selvfølgelig har en mentor, der er villig til at bruge en vis tid på at komme med opgaver og gennemgå dem.

Jeg vil med det samme sige, at jeg under ingen omstændigheder anbefaler at tage kurser uden allerede at have en vis viden. Jeg ser kurser som en god måde at konsolidere den viden opnået gennem selvstudier. Og nu forsøger jeg ikke at reklamere for nogen bestemt skole, men jeg vil forklare præcis, hvilke fordele der kan opnås ved dette:

Med en høj grad af sandsynlighed der du vil lære noget, du ikke vidste før. Kurserne har en ret stor mængde materiale, som præsenteres i en struktureret form, som giver dig mulighed for bedre at tilegne dig stoffet.

I løbet af kurset vil du have mentor, som vil gennemgå løsningen på dine problemer og påpege svagheder og fejl.

Motivering. Dette er primært til dem, der har brug for hjælp til selvdisciplin. Nogle gange er det ret svært at tvinge sig selv til at gøre noget, uanset hvilke udsigter der er i horisonten. Når du deltager i kurser, vil du have en klar tidsplan, du skal følge, og opgaver, du skal udføre, ellers bliver du bortvist. Økonomisk motivation spiller også her en rolle, når der er tale om betalte kurser. Når man giver sine surt tjente penge, har man jo en helt anden holdning til sagen, og tanker om blot at gå en tur opstår langt sjældnere.

En anden fordel - certifikat. Det er klart, at du i sidste ende vil blive vurderet på din viden, og ikke på tilstedeværelsen af ​​stykker papir i dit CV. Men ikke desto mindre vil dette være et plus, især hvis der er en kandidat med et tilsvarende vidensniveau, men uden dokumentation.

Plus en projekt på GitHub til din sparegris. Hvis du er en nybegynder udvikler, så vil det projekt, der er skrevet i kurserne, højst sandsynligt være mere interessant fra et teknologisk synspunkt end dem, der blev skrevet tidligere.

Og det vigtigste - beskæftigelse. Når jeg taler om kurser, mener jeg ikke kun dem, du skal betale penge for. Ofte rekrutterer virksomhederne selv til uddannelse, så de senere kan ansætte de bedste. Dette kan være et internt kursus eller et praktikophold. Denne mulighed er den bedste, da du ikke skal betale for noget, du får erfaring og alle ovenstående fordele og derudover en rigtig jobudsigt. Det er sværere at komme ind i dem, men udsigterne er mere markante.

Total

Ruby er et sprog, der giver dig mulighed for at arbejde uden en masse besvær og ballade, der følger med stærkt indtastede sprog. Ruby er nem at komme i gang med, især hvis du allerede har erfaring med at udvikle i andre programmeringssprog, og du vil hurtigt kunne lave prototyper med Ruby on Rails. I Japan, hvor det opstod, blev Ruby brugt til at skabe spil. Ruby er kortfattet og læser som engelsk, hvilket gør koden let at forstå for begyndere.

Når det kommer til at lære Ruby, vil jeg gerne gentage: du skal starte i det små. Læs et par bøger, lav et par opgaver på egen hånd, og hvis du føler behov for at få mere viden og erfaring eller yderligere motivation, kan du tage kurser, der allerede har en vis mængde viden erhvervet på egen hånd.

Ideelt set er disse kurser fra en virksomhed, der vil give dig et tilbud efter afslutningen, hvis du klarer dig godt. En alternativ mulighed er betalte kurser, der hjælper dig med at konsolidere din viden, tilføje endnu et projekt til dit CV og få erfaring, hvilket er vigtigst i starten. Men du skal ikke forvente, at du efter at have gennemført betalte kurser nemt vil bestå et interview ved at vise dit certifikat. Under alle omstændigheder vil viden blive vurderet.

På samme tid, hvis du har nok motivation, tålmodighed, evner og erfaring med andre programmeringssprog, kan du nemt mestre Ruby på egen hånd, da der er en masse nyttig og velstruktureret information på internettet. Takket være det åbne og store Ruby-fællesskab kan du også nemt finde online svar på mange mulige spørgsmål, som nogen med stor sandsynlighed allerede har stillet før dig.

God fornøjelse med at lære! Og i den næste artikel vil vi tale om kode.

Abonner på vores Telegram-kanal for juniorer for ikke at gå glip af interessante stillinger, praktikophold, kurser, artikler.