Учене на рубин. Рубинени курсове

Една от първите и най-подробни книги за обучение на Rails в Интернет. Основното предимство е подробното отразяване на най-необходимите проблеми, редовните актуализации и безплатното основно съдържание.

Вярно е, че ресурсът е изцяло на английски език. И е важно да разберете, че това е изградено под формата на книга - трябва сами да разберете всички проблеми. Поради това продължителността и сложността на обучението не могат да бъдат предвидени.

2. Railcasts

Друг добре известен образователен ресурс в Интернет. Повече от едно поколение Rails разработчици са израснали върху него. Също и на английски.

Не е изграден като цялостен курс за обучение, а като поредица от скрийнкастове – кратки уроци по определена тема. Има много уроци, можете да ги намерите на почти всяка тема.

За съжаление, проектът спря да се актуализира през 2013 г.

3. Релси за зомбита

Забавно въведение в on-rails за начинаещи в стила на куест играта с атмосфера на зомбита. Много популярен сред напълно начинаещите.

Удобно е, защото не е необходимо да инсталирате нищо на компютъра си. Всички проблеми се решават в браузъра. Стъпка по стъпка преминавате през играта и започвате да разбирате основите на Ruby on Rails.

Ако изобщо не разбирате от програмиране, това е вашият избор. В курса няма сложни теми, нищо не отвлича вниманието от основите. На английски.

3.Udemy

Голяма колекция от видео курсове. Сред тях има много за ruby ​​​​и ruby ​​​​on rails. Няма смисъл да предоставяте конкретни връзки - изберете според вашия вкус въз основа на цена или популярност.

Форматът Udemy включва сравнително кратки курсове с акцент върху видео уроците. Не очаквайте сериозни домашни или бърза подкрепа от учителите.

4. Руби Бурса

Мощен кратък курс за основите на разработката на Rails. Опитни преподаватели, добра програма.

Личното присъствие на студента на курса е желателно и се провежда само в големите украински градове.

5. Разработка в Ruby on Rails от Evil Martians

Тридневен интензивен курс от един от най-опитните екипи на Ruby on Rails в Русия.

Прави се рядко. Това е скъпо (съдейки по рецензиите, струва си). Изисква лично присъствие. Подходящ само за напреднали програмисти, начинаещите няма какво да правят там.

6. Ruby on Rails онлайн интензивен курс от „Добър програмист“

Свеж проект от екип, известен в Youtube със своите Ruby курсове за начинаещи.

3-месечната интензивна програма е предназначена за напълно начинаещи и обещава да ви превърне в младши програмист с портфолио от не по-малко от 12 смарт приложения.

Курсът се състои от видео уроци, практически задачи, подкрепа на учителя и редовни уебинари.

Съдейки по канала в YouTube и потребителските коментари, тези момчета знаят какво правят и няма да скучаете с тях.

Днес намерих история в интернет за това как някой на име Джеймс Фенд научи Ruby on Rails за 12 седмици. По-долу можете да прочетете сравнително точен превод на тази история и да се надяваме да бъдете вдъхновени да изследвате тази прекрасна рамка (и прекрасен език).

Преди да започна, бих искал да ви представя Josh Crews (http://joshcrews.com) и да му благодаря, че ме убеди да започна да уча Ruby on Rails; без него, неговата помощ и без часовете, които прекара като мой ментор, нямаше да пиша това днес. Благодаря ти.

На 23 януари стартирах моята мечтана идея, Freelancify.com. Точно преди 12 седмици бях технологичен предприемач, харчещ хиляди долари, за да създам приличен MVP (минимален жизнеспособен продукт), защото ми липсваха знания. Една от причините (помислих си тогава) беше, че обучението беше твърде трудно за мен или щеше да отнеме прекалено дълго време. Мислех (както много други), че програмистите се раждат (а някои се раждат) с набор от магически умения за решаване на проблеми и математика, които ги правят програмиращи гении. И точно преди 12 седмици Взех най-доброто решение, което съм вземал от много, наистина много време.. Вече нито една моя идея няма да остане нещо повече от идея. Сега имам възможност да пусна производствени версии, като харча пари само за хостинг и влагам малко усилия. Днес този набор от умения е подобен на тегленето на куп трактори по време на златната треска в Калифорния, докато всички останали са използвали прости лопати. Предлагам на всеки да се научи да пише код. Тук бих искал да добавя едно пояснение: по-рано нарекох публикацията „Как научих Rails за 8 седмици“, но за да бъда точен, като се има предвид датата на стартиране, се оказва, че е 12 седмици. Въпреки това, в рамките на 8 седмици почувствах, че знам достатъчно, и следващите четири седмици бяха похарчени повече за прилагане на знанията, които бях придобил, в работа, вместо за учене.

Какви умения имах, преди да започна да уча Rails?

Бях уеб дизайнер с познания по HTML и CSS и се фокусирах основно върху UI и UX дизайна. Най-трудното нещо, което съм правил с действителния код (без да броим HTML), е да мога да персонализирам Wordpress. Накратко, нямах абсолютно никаква представа какво е MVC рамка или как работят базите данни като цяло. Дизайнът, оформлението и HTML за Freelancify бяха създадени от мен за две седмици през юни 2011 г.

Защо реших да уча?

Връщайки се към юни 2011 г., когато оформлението беше готово, започнах да търся кодер, който да направи оформлението функционално. Оформлението беше почти готово: имах текстови полета, падащи менюта, формуляри, бутони, връзки, водещи до където е необходимо, и т.н. Намерих разработчик и, накратко, човекът не ме устройваше. Останах с тон дългове и нито един продукт дори близо до завършен. Така че се свързах с Джош Криус (срещнах го на Ruby on Rails среща, която той организира в Нешвил) и се срещнах с него, за да видя дали мога да направя нещо от това, което ми беше останало като разработчик. За съжаление коригирането и модифицирането на кода ще отнеме не по-малко време от разработването му от нулата от компетентен програмист. Бях обезсърчен, осъзнавайки, че не мога да си позволя да харча отново хиляди долари за развитие от нулата. И тогава Джош каза...“ Защо просто не се научите как да работите с Ruby on Rails, този проект би бил чудесен начин" и тогава " Мога дори да се срещам с вас два пъти седмично и да ви помагам с ученето" Цяла нощ мислех за това. Моите възможности бяха: да си намеря удобна работа и да плащам сметките ИЛИрискувайте всичко, за да научите Rails и в крайна сметка да се насладите на най-добрия рамен, който Италия може да предложи. Реших. Обадих се на Джош на следващата сутрин. Сложих всичко. Отделих пари от останалите спестявания и ги разделих за три месеца (за сам човек, който живее сам и без деца, хиляда долара на месец са достатъчни). Време е да се захвана за работа, сега съм чирак на пълен работен ден. Имайки предвид, че търсенето в Google, Stackoverflow, IRC #RubyOnRails и общността на Rails ще ми пазят гърба, когато закъсам, сигурен съм, че ще има много от тях.

Следващите ми три месеца - Мисия: Вземете MVP, вземете достатъчно, за да работите, но не и „достатъчно смутен“, за да оставите ужасно първо впечатление.

Седмици 1 - 3

Това беше може би най-голямата крива на обучение, но НЕ се отказах.

Стените са създадени за хора, които всъщност не искат да ги напуснат.

Създаването на работеща среда на Rails за напълно начинаещ може да бъде невероятно досадно. Съвет №1: Вземете Mac. Съвет # 2: Използвайте Homebrew, RVM, Git и Heroku (това наистина е всичко, от което се нуждаете, за да започнете). Прекарах няколко дни в инсталиране, след това деинсталирах всичко и инсталирах отново. Просто го повторете няколко пъти и ще свикнете да използвате командния ред на терминала (конзолата) и ще разберете защо нещата работят по начина, по който работят. Тогава първото нещо, с което се захванах, беше TryRuby, Rails for Zombies и Rails Tutorial на Michael Hartle. Не се притеснявайте да разберете материала на 120%, това няма да се случи, докато не започнете да учите. Завърших обучението по Rails и създадох това подобно на Twitter приложение за около седмица, без наистина да разбера какво съм направил. По-късно, докато напредвах, започнах да осъзнавам, че всичко започва да има смисъл.

Седмици 3 - 6

С приложение за Twitter, създадено с помощта на урока по Rails, придобих известна увереност. Урокът не ме направи разработчик, но вече знам общите стъпки в създаването на приложения, от създаването на самото приложение до инсталирането му на Heroku. Всичко, което се случи между тях, остана замъглено. Как мога НАИСТИНА да започна да уча сега? Работя върху реален проект, който означава нещо за мен. Джош и аз решихме, че трябва свободно да работя върху Freelancify и да видим какво мога да направя. Първото нещо, което направих, беше да преместя целия HTML от рамката и да го организирам в изгледи и частични файлове. Създадох шаблонни платформи за потребители и проекти. Тогава започнах да уча първия си истински скъпоценен камък, Devise. След това, възможността да имате взаимоотношения, например всеки потребител ще има портфолио. Но потребителите могат да имат множество портфейли, докато всяко портфолио може да принадлежи само на един потребител. След като разберете как работят връзките между моделите и как да извиквате/показвате неща, които принадлежат на нещо друго, животът ще стане много по-лесен. Ако заседнете върху част и не можете да се движите, пропуснете я, шансовете са, че докато разработвате друга функция, ще разберете и как да приложите това, което сте пропуснали.

Седмици 6 - 9

Стъпка по стъпка продължих да уча, преписвайки и повтаряйки. Щях да накарам някои неща да работят, а след това - бам - и щях да се ударя в стена и да нямам абсолютно никаква идея какво да правя след това. Независимо дали влизам в Stackoverflow, IRC чат #RubyOnRails, RailsCasts или се дърпам с Джош, в крайна сметка разбрах как да продължа. Правете едно и също нещо отново и отново и ще го овладеете доста бързо. Прекарването на досадни часове в тестване на нечий отговор на Stackoverflow само за да разберете, че не работи, всъщност е полезно. Разбирате какво не трябва да правите. И когато намерите отговора, ще започнете да разбирате ЗАЩОпоследното не проработи. По това време започнах да осъзнавам колко голяма е картината на нещата и наистина да разбирам ЗАЩОвсичко работи точно както работи. Почувствах се като идиот и се върнах и преработих кода, който бях написал по-рано, за да го направя по-ефективен. И в един момент стигнах до етап, в който всичко започна да си идва на мястото.

Седмици 9 - 12

Бях в невероятен енергиен режим, за да доведа Freelancify до етапа на стартиране. На този етап се чувствах сякаш летя, задействам функциите. Последната седмица мина в отстраняване на различни грешки и гафове. Този понеделник пуснах сайта. Но все още съм далеч от завършване на обучението си... Това е. Пропуснал съм (в името на краткостта на поста) дребни подробности и технически моменти. Въпреки това, не се колебайте да задавате въпроси в коментарите, определено ще се опитам да отговоря. Джеймс Фенд.

P.S. - Въпреки че ми помогна много да имам наставник, с когото мога да се срещна, определено можете да научите Rails без такъв. Или се опитайте да намерите такъв човек, много разработчици на Rails обичат да допринасят за общността. Потърсете местни конференции и срещи.

Този запис вече е на повече от две години (публикуван на 27 януари 2012 г.), но въпреки това не е загубил своята релевантност. През това време Джеймс Фенд успя да продаде Freelancify и да инвестира в нов стартъп, той остави бележка за това на 27 февруари 2013 г. Вярвам, че тази статия е отличен пример за това как човек може да постигне целта си. Всичко, което трябва да направите, е да започнете. :)

"Здравейте! Какво правиш?" - „Да, ще програмирам едно нещо в Ruby.“ - "Заразно ли е:-)"
Това е диалогът, който имах днес с приятел. Защо рубин?

Защо да научите Ruby

Този въпрос засяга тези, които програмират на PHP дълго време и успешно. Усвоили сте един език, това е страхотно, но не спирайте дотук. Мнозина могат да твърдят, че знаят езика, запознати са с него и вече са научили всички трикове с него. Ще ви дам няколко причини да научите Ruby.

  1. Любопитство. Например много ми беше интересно да работя с отворени класове. Точно така, вземането и инжектирането на вашия метод в системен клас е страхотно според мен. Няма ли да стане объркване? И как да го направим? Като цяло всичко ново е интересно.
  2. . защото От доста време програмирам на PHP, чудя се с какво може да се похвали Ruby пред PHP/
  3. Рубинена скорост. Twitter е направен в Ruby (въпреки че наскоро беше изоставен). Бих искал да тествам работата му в реалност.
  4. Клас проблеми за решаване. Ruby е добър за уеб приложения. така ли е
  5. Метапрограмиране.Може би най-важната причина.

Как да научите Ruby. Учебна програма.

Тук първата ми грешка беше, че започнах да уча рамката, без да знам езика. Сега разбрах, че няма нужда да правя това. Забравяйки за известно време за Ruby on Rails, започнах да изучавам самия Ruby; за щастие имаше системен проблем, който висеше дълго време в тикет системата, който беше трудно да се реши в PHP. Наистина не исках да му давам root права Така че това е планът.

  1. Функции, класове, публични класове. Атрибути (аксесори и мутатори).
  2. Работа с низове и масиви. Търсене и замяна на поднизове и др. Преобразуване на типа.
  3. Работа с файлове.
  4. Работа със системната среда.
  5. Проектиране на приложения, работа с gems (модули).
  6. Работа с базата данни.
  7. Инсталиране на Ruby on Rails, .

В тази публикация ще публикувам първото си приложение в Ruby и ще поканя всички на дискусията. Посочвайте грешки, предлагайте най-добри практики, задавайте въпроси.

Нека научим Ruby заедно!

Урок 1. Първо приложение в Ruby.

Задачата е такава. На хостинга има DNS сървър и при извикване на помощната програма на конзолата в ruby ​​трябва да добавите зона за домейна, както и запис за зона в списъка със зони (domains.list) и да промените един запис в базата данни, където за да регистрирате този домейн. Настройките за достъп до базата данни се съхраняват в php приложението и по-точно в неговия INI файл. След всички стъпки трябва да рестартирате DNS сървъра (свързване).

Работна маса за Ruby

Ще използвам RubyMine от JetBrains като IDE. Много ги харесах. Въпреки че беше за phpStorm, качеството се вижда веднага. Първо инсталираме Ruby чрез RVM за всички потребители, след което го конфигурираме за root и нашия потребител.

Разширяване на публичните класове на Ruby

За да работим с INI файлове в Ruby, ние използваме inifile gem. Но има малък проблем с него. Във файла ZF INI можете безопасно да използвате константи и редовете ще изглеждат така:

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

APPLICATION_INI е това, което разрушава анализатора на скъпоценни камъни. По-конкретно, този ред не отговаря на нито един модел:

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

Това е ситуацията за използване на публични класове. Нека заменим функцията IniFile::parse с нашата собствена. Ще поставя всички допълнения във файла fucntion.rb

Class IniFile private # # call-seq # parse # # Анализирайте съдържанието на ini файла. # def parse връща, освен ако File.file?(@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding)? File.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r") while line = fd.gets line = line.chomp # mutline start # създаване на tmp променливи за указване че multine е започнало # и следващите редове на ini файла ще бъдат проверени # спрямо другия mutline rgxps. if line =~ @rgxp_multiline_start then tmp_param = $1.strip tmp_value = $2 + "\n" # крайният разделител на mutline е намерен # изчистете tmp vars и добавете двойката param / value към раздела elsif line =~ @rgxp_multiline_end && tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # нещо друго между начало и край на многоредов elsif line =~ @rgxp_multiline_value && tmp_param != "" then tmp_value += $1 + "\n" # игнориране на празни редове и редове за коментари elsif line =~ @rgxp_comment then next # това е декларация на раздел elsif line =~ @rgxp_section then section = @ini[$1.strip] # в противен случай имаме параметър elsif line =~ @rgxp_param then begin section[$1.strip] = $2.strip rescue NoMethodError raise Error, "параметър, открит преди първата секция" end elsif line =~ %r/APPLICATION_/ then next else raise Error, "не може да се анализира ред "#(line)" край край # докато се гарантира fd.close ако е дефинирано? fd и fd край край

Също така ще разширя класа String, за да позволя проверка на домейн.

Class String def valid_domain_name? име_на_домейн = self.split(".") име = /(?:+)+/.match(име_на_домейн).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 и име != false и tld != false) край край

Източници

Е, сега ще ви покажа истинските източници.
index.rb

#coding: utf-8 изискват "mysql2" изискват "гнездо" изискват "inifile" изискват "./functions.rb" # Хеш на адресите на сървърни машини hosts = ( :production => "83.168.22.1", :test => " 84.22 .11.1" ) util = Util.new(hosts) util.releative_config_path="/site.com/application/config/application.ini" # Проверка на параметрите, изход, ако (ARGV.count != 2) домейн = ARGV име на хост = ARGV . split(".") quit("Невалидно име на домейн") if (not domain.valid_domain_name?) # Търсене на компания в базата данни резултат = Mysql2::Client.new(util.get_db_settings).query("SELECT id FROM `sites` WHERE `hostname` = "#(hostname)"") quit("Компанията не е намерена") if result.count != 1 # Актуализиране на неговото име на хост 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
Този файл описва зависимостите на проекта.

Източник: rubygems gem "mysql2", "0.2.6" gem "inifile"

Е, и действителните включени функции.
функции.rb

#coding: utf-8 class String def valid_domain_name? име_на_домейн = self.split(".") име = /(?:+)+/.match(име_на_домейн).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 и име != false и tld != false) end end class IniFile private # # call-seq # parse # # Анализирайте съдържанието на ini файла. # def parse връща, освен ако File.file?(@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding)? File.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r") while line = fd.gets line = line.chomp # mutline start # създаване на tmp променливи за указване че multine е започнало # и следващите редове на ini файла ще бъдат проверени # спрямо другия mutline rgxps. if line =~ @rgxp_multiline_start then tmp_param = $1.strip tmp_value = $2 + "\n" # крайният разделител на mutline е намерен # изчистете tmp vars и добавете двойката param / value към раздела elsif line =~ @rgxp_multiline_end && tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # нещо друго между начало и край на многоредов elsif line =~ @rgxp_multiline_value && tmp_param != "" then tmp_value += $1 + "\n" # игнориране на празни редове и редове за коментари elsif line =~ @rgxp_comment then next # това е декларация на раздел elsif line =~ @rgxp_section then section = @ini[$1.strip] # в противен случай имаме параметър elsif line =~ @rgxp_param then begin section[$1.strip] = $2.strip rescue NoMethodError raise Error, "параметър, открит преди първата секция" end elsif line =~ %r/APPLICATION_/ then next else raise Error, "не може да се анализира ред "#(line)" end end # докато се гарантира fd.close ако е дефинирано? fd и fd end end def quit(message=nil) banner = " ========== ==== | Инструмент за добавяне на DNS | ============================= Употреба: ruby ​​​​./index.rb domain.com olddomain.site.com" ако не съобщение .nil ? then banner = message end puts banner exit end class Util attr_accessor:hosts, :releative_config_path, :environment def initialize(hosts =Array.new) self.hosts = hosts end # Получаване на локален IP адрес def local_ip orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # временно изключване на обратната DNS резолюция UDPSocket.open do |s| s.connect "64.233.187.99", 1 s.addr.last end secure Socket.do_not_reverse_lookup = orig end # Получаване на средата def get_environment if @ среда.нил? 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 # Връща потребителското име, ако помощната програма е стартирана чрез rvmsudo или директно def get_local_username, ако ENV["SUDO_USER"].nil? quit("Util трябва да се изпълнява над rmvsudo, \r\nпример: 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("Няма подходяща секция в конфигурационния файл") освен ако config.has_section?(section_name) dsn = config.to_h["resources.doctrinedata.connections. по подразбиране. dsn"] # Разбор на dsn dsn.sub!("mysql://", "") arr = dsn.split("@") dbconfig = ( :username => arr.split(":"), : парола => arr.split(":"), :host => arr.split("/"), :database => arr.split("/") ) край край

Какво ще кажете за PHP?

Тази публикация не е за отказване от PHP и започване на изучаване на Ruby. PHP е най-популярният език за уеб програмиране, в него са внедрени хиляди интересни неща и алгоритми, вкл. дори невронни мрежи. И аз го обичам) През годините може да се каже, че се сближих с него, въпреки всичките му недостатъци. Но това не означава, че не е нужно да научите нещо ново за себе си.

Напоследък ми задаваха въпроса от кои книги да уча Ruby. Сега чета този.

Тази книга е официалното ръководство за динамичния език за програмиране Ruby. Авторският екип е наистина звезден: Дейвид Фланаган е известен експерт в областта на програмирането, автор на редица бестселъри за JavaScript и Java; Юкихиро "Мац" Мацумото е създателят и водещият разработчик на Ruby.
Книгата предоставя подробно описание на всички аспекти на езика: лексикалната и синтактичната структура на Ruby, типове данни и елементарни изрази, дефиниции на методи, класове и модули. Освен това книгата съдържа информация за API функциите на платформата Ruby.

Изданието ще представлява интерес както за опитни програмисти, които се запознават с новия език Ruby, така и за тези, които вече програмират на Ruby и искат да постигнат по-високо ниво на разбиране и овладяване на работата. Можете да намерите книгата за озон или библиоглобус.

Очаквам вашите коментари за кода и всякакви интересни идеи!)

Благодаря ти!

Ако тази статия ви е помогнала или искате да подкрепите моето изследване и блог, ето най-добрият начин да го направите:

Ruby е мощен и популярен език за програмиране. В допълнение към своята популярност, той е основата за добре позната рамка, която ви позволява да създавате страхотни и динамични уебсайтове на различни теми. Ако погледнете рейтинга на TIOBE, езикът е един от двадесетте най-популярни езика в света.

Езикът се появява през 1995 г. и се счита за млад език в сравнение с C или C++, които се появяват съответно през 1972 и 1983 г. Езикът има редица предимства и специфични функции, които се реализират изключително в него, ако сравним други популярни езици за програмиране.

План на курса

По време на видео курса ще научите езика Ruby, без да използвате допълнителни рамки. Допълнителни курсове по Рубинможете да го намерите на.

По време на курса ще научим как да инсталираме и работим с езика, ще научим синтаксиса Рубин(променливи, цикли, условни изрази), както и по-сложни неща: ООП, работа с файлове, изключения, методи и ще засегнем много други теми.


Инсталиране на Ruby на Windows

За да инсталирате Ruby на Windows, използвайте RubyInstaller, който може да бъде изтеглен от официалния уебсайт чрез тази връзка. Изтеглете най-новата версия и я инсталирайте като обикновена програма. След като инсталацията приключи, ще видите подобен прозорец:

В този прозорец се уверете, че квадратчето е отметнато, след което ще се отвори друго приложение за инсталиране. Рубинв системата.

В прозореца, който се отваря, въведете 1 едно по едно и натиснете Enter, изчакайте докато инсталацията приключи, натиснете 2 и Enter и накрая изпълнете третата команда, като натиснете 3 и Enter.

Инсталиране на Ruby на Mac

На Mac Ruby е инсталиран по подразбиране, така че не е необходимо да правите нищо допълнително. Можете да проверите езиковата версия в терминала, като използвате следната команда:

Ако версията е остаряла, можете да изтеглите нова. Първо, трябва да изтеглите мениджъра на версиите на Ruby. Това става през терминала с помощта на командата:

Curl -L https://get.rvm.io | bash -s стабилен

След като инсталирате мениджъра, трябва да рестартирате терминала. Изпълнете следната команда:

Rvm списъкът е известен

След рестартиране можете да инсталирате желаната версия. В нашия случай беше инсталирана версия 2.4.2:

Rvm инсталира ruby-2.4.2

Накрая можете да проверите отново версията и ако все още е стара, просто инсталирайте новата версия по подразбиране.

Това е първата от поредица статии, в които ще говоря за характеристиките на Ruby и Ruby on Rails и ще споделя съвети за това къде да започнете да изучавате Ruby, къде да намерите отговори на въпроси, как да получите опита, от който се нуждаете, и как можете да се откроите от другите кандидати. Ще се радвам, ако съветът ми помогне на някой да вземе решение за специализацията си и да избере Руби за обучение и работа.

Основни характеристики и разлики на Ruby

Често чувам въпроса: струва ли си да уча Ruby? Като правило въпросът се основава на съмнения: колко лесно е да се намери работа с тази специализация, дали ще има интересни проекти и така нататък и така нататък. Ruby е модерен, постоянно развиващ се език за програмиране; има много области на приложение за него. Със сигурност сте чували за Chef, Vagrant, Homebrew, но най-често всички чуваме за Rails. Ето публикация с коментар от автора на рамката защо си струва да научите Rails.

Разбира се, всеки сам решава кой инструмент да използва. И няма смисъл да спорим безкрайно защо една технология е по-добра от друга. Избрах Ruby, защото е невероятно изразителен и гъвкав език, който ви позволява да решавате един и същ проблем по много начини.

Ruby е интерпретиран, напълно обектно-ориентиран език за програмиране със силно динамично писане. Той комбинира синтаксис, подобен на Perl, с обектно-ориентиран подход. Също така някои функции са заимствани от езиците за програмиране Python, Lisp, Dylan и CLU. Междуплатформеното внедряване на езиковия интерпретатор Ruby се разпространява под софтуер с отворен код. Кодът, написан на Ruby, може да бъде разбран дори от човек, който не разбира от програмиране. На RoR бяха създадени проекти като Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb и други.

С възхода на Node.js популярността на Ruby on Rails намаля донякъде, но технологичните стартиращи фирми често използват RoR поради лесното му създаване на прототипи. Ruby е 11-ият най-популярен език в индекса на TIOBE.

Предимства на Ruby

  • Голяма и приятелска общност.
  • Бариерата за навлизане е доста висока, което означава, че разработчикът на Ruby е вероятно да има опит с поне един друг език за програмиране.
  • Използвате само тези библиотеки и модули, които са необходими.
  • Има голям брой полезни библиотеки, които са готови за използване (Ruby Gems).
  • В интернет има много информация за Руби, в структуриран и пресят вид.
  • В контекста на обсъждането на Ruby не може да не споменем най-популярната рамка Ruby on Rails.

Сега нека поговорим за някои от предимствата на Ruby по-подробно.

Скорост на развитие

Едно от предимствата на Ruby и RoR framework е скоростта на разработка. Личният опит и опитът на колегите показва, че решаването на проблеми в Rails е един път и половина по-бързо в сравнение с други подобни рамки. Ruby е много прост като инструмент и има огромен брой готови решения за различни видове проблеми.

Стандартни инструменти за кеширане на данни

При разработването на мащабен проект един от най-важните аспекти е кеширането. Ruby on Rails се доставя стандартно със стандартни инструменти за кеширане на данни. Това означава, че веднага ще имате инструменти за кеширане на данни в проекта и можете лесно да кеширате отделни блокове код или дори цели страници.

Първо тестове, код по-късно

Често по време на разработването на големи проекти възниква въпросът за тестването и не е необичайно, когато няма допълнителни средства за отделен екип от тестери. Rails има решение и на този проблем. Ако сравните RoR с други рамки в контекста на тестване на приложения, ще намерите много готови решения за всякакъв тип тестове, било то интеграция или модул. Всички тези библиотеки работят извън кутията. В идеалния случай в проект Ruby on Rails не се пише код, докато не бъдат написани тестове за него. Идеологията на RoR включва първоначалното използване на методи BDD (Развитие, управлявано от поведение) или TDD (Развитие, управлявано от тестове).

Общоприети стандарти за процес на разработка за Ruby разработчици

Когато говоря за предимствата на Ruby, не мога да не спомена отново Ruby общността. Постоянно расте, развива се и винаги е готова да помогне. Винаги има някой, който ще ви каже как най-добре да разрешите проблем и ще сподели своя опит по всеки въпрос.

Също много важен момент - в Ruby общността от много години има стандарти за процеса на разработка, определени правила/споразумения на общността, според които се извършва разработката, което значително опростява работата. Благодарение на тези стандарти всеки проект е високо структуриран, съответно нов разработчик в екипа бързо ще навлезе в крак и ще бъде полезен от първите дни на работа. И още повече: ако проектът е започнат от един екип и е завършен от друг, това също не е проблем. Тъй като разработката се извършва съгласно вече споменатите правила и споразумения на общността, новият екип бързо и лесно ще разбере проекта и ще го завърши успешно без много загуба на време.

Ruby on rails също има голям брой различни готови решения в публичното пространство. Повечето решения вече са внедрени от някой преди вас и тествани от общността, което намалява необходимостта от разработване от нулата. Те могат да бъдат удостоверяване, авторизация, системи за коментиране, платежни системи, пощенски списъци и т.н.

Готови решения за проектно многоезичие

Rails се предлага с много мощни инструменти за локализиране на проекти от кутията. Възможно е както първоначално да се осигури поддръжка за няколко езика, така и да се приложи по-късно. Проектът съдържа специални файлове за превод на термини, инструменти за показване на шаблони на различни езици и много други.

Високо ниво на защита на данните

В днешно време статии за хакване на различни ресурси често се публикуват онлайн. Разработчиците на рамката Ruby on Rails взеха много сериозно въпроса за защитата на данните. RoR първоначално включва криптиране на пароли, данни за кредитни карти и други лични потребителски данни; SQL инжекциите и XSS атаките също са изключени. Всички входни параметри се екранират по подразбиране.

Изучаване на Ruby

Сега нека поговорим как точно можете да овладеете Ruby.

Теория

Трябва да започнем, разбира се, с литературата. Препоръчвам тези източници:

  • Ruby за 20 минути е добър ресурс за напълно начинаещи. Позволява ви да се запознаете с основните структури на езика за по-малко от половин час и да започнете да пишете свои собствени малки програми.
  • Codecademy е платформа с онлайн курсове в различни области, включително чист Ruby и Rails. Образователният процес тук е структуриран доста интересно, даден е теоретичен материал и веднага практическа задача за затвърждаването му. Финалните задачи се заплащат, но и без тях можете да придобиете необходимите умения.
  • Материали за Ruby и Rails - колекция от връзки към различни сайтове и книги, посветени на изучаването на Ruby и Rails.
  • Мога специално да препоръчам книгата Flanagan D., Matsumoto Y. “The Ruby Programming Language”. Смятан е за един от най-добрите, авторът му е създателят на езика Ruby.
  • Google :)

Ето няколко ресурса, за да започнете:

  • w3schools.com/sql - тук можете да прочетете, опитате и проверите знанията си по SQL.
  • quizful.net/test - тук можете да намерите въпроси, които често се задават по време на интервюта.

Английски

Смятам, че няма смисъл да се спирам подробно на този въпрос, тъй като това е тема на отделна статия. Английският е много важен и това е добре известен факт. Бих искал само накратко да спомена двата най-важни момента.

Първо, английският е основният език на международната общност, съответно повечето полезна литература също ще бъде на английски, много новини, доклади и важни статии също ще се появяват първо на английски. Ако искате да знаете отговора на всеки въпрос, има много голяма вероятност първо да можете да го намерите на английски.

Второ, колкото по-добре владеете английски език, толкова по-големи са шансовете ви да си намерите работа. Повечето клиенти са чужденци, поради което владеенето на английски е важно за продуктивна комуникация, ясно разбиране на техническите спецификации и добър контакт с клиента.

Практикувайте

След като изучите няколко ресурса, си струва да преминете към по-важната част, а именно практиката. Има много примери за задачи с онлайн магазин или обикновен блог в интернет (ето един от тях), особено когато става въпрос за Rails. В хода на изпълнението на задачи, които вече са малко по-близки до реалните, определено ще срещнете някои проблеми и след това ще преминете към обучение на едно от най-важните качества - способността да Google. За съжаление не успях да намеря уроци или курсове, посветени на това умение, но определено играе много важна роля в ежедневната работа.

Курсове

След като прочетете теорията и напишете няколко „проекта за домашни любимци“, можете, разбира се, да се опитате да отидете на интервюта, но често се случва това знание да не е достатъчно. Това се дължи на големия наплив от кандидати, а предвид конкуренцията всеки се стреми да се отличи и да се подготви максимално добре.

Друг важен момент в обучението, който може да бъде предимство във ваша полза при търсене на работа, са курсовете по програмиране. Освен ако, разбира се, нямате наставник, който е готов да отдели известно време, за да състави задачи и да ги прегледа.

Веднага ще кажа, че при никакви обстоятелства не препоръчвам да посещавате курсове, без да имате известни познания. Виждам курсовете като чудесен начин за консолидиране на знанията, придобити чрез самообучение. И сега не се опитвам да рекламирам конкретно училище, но ще обясня точно какви ползи могат да бъдат извлечени от това:

С голяма степен на вероятност има ще научите нещо, което не сте знаели преди. Курсовете имат доста голям обем материал, който е представен в структуриран вид, което ви позволява по-добре да усвоите материала.

По време на курса ще имате наставник, който ще прегледа решението на вашите проблеми и ще посочи слабости и грешки.

Мотивация. Това е предимно за тези, които се нуждаят от помощ за самодисциплина. Понякога е доста трудно да се принудите да направите нещо, независимо какви перспективи се очертават на хоризонта. Когато посещавате курсове, ще имате ясен график, който да следвате, и задачи за изпълнение или ще бъдете изключени. Финансовата мотивация също играе роля тук в случай на платени курсове. В края на краищата, когато давате трудно спечелените си пари, имате съвсем различно отношение към въпроса и мислите за просто разходка възникват много по-рядко.

Друго предимство - сертификат. Ясно е, че в крайна сметка ще бъдете оценени по знанията си, а не по наличието на листчета в автобиографията. Но въпреки това това ще бъде плюс, особено ако има кандидат с подобно ниво на знания, но без документални доказателства.

Плюс едно проект в GitHubкъм вашата касичка. Ако сте начинаещ разработчик, тогава най-вероятно проектът, написан в курсовете, ще бъде по-интересен от технологична гледна точка от тези, които са написани преди това.

И най-важното - наемане на работа. Когато говоря за курсове, нямам предвид само тези, за които трябва да платите пари. Често компаниите сами набират за обучение, за да могат по-късно да наемат най-добрите. Това може да бъде вътрешен курс или стаж/стаж. Тази опция е най-добрата, тъй като не е нужно да плащате за нищо, получавате опит и всички горепосочени предимства и освен това реална перспектива за работа. По-трудно е да влезете в тях, но перспективите са по-значими.

Обща сума

Ruby е език, който ви позволява да работите без много караница и суетене, които идват със строго въведените езици. Ruby е лесен за започване, особено ако вече имате опит в разработването на други езици за програмиране и ще можете бързо да създавате прототипи с Ruby on Rails. В Япония, откъдето произхожда, Ruby се използва за създаване на игри. Ruby е кратък и се чете като английски, което прави кода лесен за разбиране от начинаещи.

Когато става въпрос за изучаване на Ruby, искам да повторя: трябва да започнете с малко. Прочетете няколко книги, направете няколко задачи сами и след това, ако почувствате необходимост да придобиете повече знания и опит или допълнителна мотивация, можете да вземете курсове, като вече имате известно количество знания, придобити сами.

В идеалния случай това са курсове от компания, която ще ви направи оферта след завършване, ако се представите добре. Алтернативен вариант са платени курсове, които ще ви помогнат да консолидирате знанията си, да добавите още един проект към автобиографията си и да придобиете опит, което е най-важно в началото. Но не трябва да очаквате, че след като завършите платени курсове, лесно ще преминете интервю, като покажете сертификата си. При всички случаи знанията ще се оценяват.

В същото време, ако имате достатъчно мотивация, търпение, способности и опит с други езици за програмиране, можете лесно да овладеете Ruby сами, тъй като в Интернет има много полезна и добре структурирана информация. Освен това, благодарение на отворената и голяма Ruby общност, можете лесно да намерите онлайн отговори на много възможни въпроси, които с голяма степен на вероятност някой вече е задавал преди вас.

Приятно учене! И в следващата статия ще говорим за код.

Абонирайте се за нашия канал в Telegram за младши, за да не пропуснете интересни свободни позиции, стажове, курсове, статии.