Ruby обучение. О чем этот курс и зачем он мне. Свидетельства об окончании

Ребята огонь, курс огонь, всё огонь!!! Начиная с самых азов и переходя к более сложным вещам, курс даёт как теоретическую базу, так и много практики. Курс нацелен на то, чтобы ученик выстраивал у себя в голове правильное мышление с точки зрения программиста. Мне этот курс очень понравился, всем советую, как новичкам, так и тем, кто уже знаком с азами программирования. Спасибо ребятам за их ценный труд и опыт!

Очень хороший курс - ребята молодцы. Постепенно в мозг укладывают весь необходимый для жизни программиста минимум и еще докидывают более продвинутыми плюшками.

Подача материала - просто огонь, настолько интересно было смотреть все видосы и потом проходить домашки, одно только признание пхпшника чего стоит а там все такое.

Индивидуальный подход при приеме ДЗ (не по формальному признаку) - в зависимости от твоей успеваемости учителя могут усложнить тебе задание или попросить сделать с применением более продвинутых технологий.

Что очень клево - круглосуточная поддержка в слаке!

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

Но самое значимое для меня было то что курсы погружают в совсем другое состояние - состояние постоянного постижения чего нового, стремления к знаниям - и это важнее всего - это как мотор который во мне завели и теперь я двигаюсь благодаря ему. Спасибо огромное учителям за то что подарили новую жизнь, наполненную стремлением к знаниям, огорчениями от того что не работает, и радостью от того что починил.

Курс просто замечательный! Понятное объяснение материала независимо от его сложности. Огромное спасибо преподавателям! Быстро отвечают на вопросы и дают обоснованный и конкретный фидбек на выполняемые задания. Результат говорит сам за себя: 5 месяцев, и я успешно прошла собеседование. Отличный курс! Стоит того, чтобы его пройти!

Ruby on Rails разработчик, Таганрог, github

Потрясный курс. Насыщенный, не скучный, по делу. Отличные учителя. Я минусов вообще не нашел. Относятся по человечески. Я пришел полным новичком. Теперь я супер-новичок! Написал программку на ruby (не одну), написал приложение на rails (не одно), настроил сервер, развернул приложение, прикрутил разный функционал к приложению, разобрался в доменах, сертификатах ssl, dns, авторизациях и многом многом другом. Рвусь в бой, берусь за самостоятельный проект. В общем, спасибо вам большое, Хорошие Программисты!

Ruby on Rails разработчик, Москва, github

Я в принципе не собирался проходить курсы, однако то как преподносят материал эти ребята вызывает огромное желание с ними поработать, поучиться, да и просто общаться.

Ключевым достоинством курса является тот факт что ребята очень любят и хотят учить людей. Курс НЕ формата "Ну мы там материал вам дали, а дальше сами разбирайтесь", люди вкладывают душу и переживают за то, как Вы восприняли материал. После окончания данного курса можно смело идти работать Rails developer-ом.

Ruby on Rails разработчик, Краснодар, github

Доступно объяснены основные моменты используемые при разработке веб приложения. Так же рассмотрены наиболее популярные гемы в рельсах.

Хорошо проверяют домашки и высказывают подробные замечания. Ценю то что ребята не забивают на тебя после окончания курса и поддерживают связь, помогают словом и делом)) Не совсем удобен сайт в плане поиска инфы, особенно когда заканчиваешь все 71 урок, но думаю ребята доработают в остальном придраться не к чему.

Тимлид в AirBnB, San Francisco

Имею значительный опыт в онлайн обучении - это лучший онлайн курс из тех, что я когда-либо встречала. Проработано все - качественно подобранный материал, отличная подача. И главное, после курса действительно можно стать программистом!

Живу в Кремниевой долине, хожу на различные митапы и воркшопы, встречаюсь с выпускниками хваленых местных буткемпов (стоимость которых, к слову, от 12 тыс дол за 4 мес) и понимаю, что мои знания после курса в разы превосходят многих выпускников этих знаменитых буткемпов Кремниевой долины, несмотря на то, что я начинала с нуля и до «Хороший программист» терминал ни разу не открывала))

Дождусь разрешения на работу и обязательно буду устраиваться на работу. После курса чувствую в себе силы на это, знаю, что это возможно! Спасибо Вам, ребята!

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

Отличный материал и подача, отношение в целом, и атмосфера на вебинарах. Ребята усердно работают, чтобы помочь каждому студенту, при необходимости разжевывают до мелочей. После курсов чувствуешь уверенность в своих силах, понимаешь, что устроиться на работу в сферу IT вполне реально, было бы желание.

Прекрасно даны основы для базового понимания программирования. Даются интересные и реальные задачи, решение которых в дальнейшем поможет и пригодится.

Резюмирую. Считаю данный курс одним из самых лучших, и обязательно рекомендую всем, кто решил посвятить свою жизнь сфере программирования. В данный момент в активном поиске работы, спрос довольно большой, поэтому, все в ваших руках! Ребятам выражаю большую благодарность, и желаю успехов в дальнейшем!

Ruby on Rails разработчик

Курс помог, научился программировать на Ruby и на рельсах, я не супер-крутой программист, но знаю, что могу написать все, что угодно, возможно, потребуется что-то дополнительно почитать.

Задача была «научиться программировать и найти работу». Задача выполнена на 100%, программировать научился, на работу взяли.

«Привет! Чем занимаешься?» — «Да так, одну штуку на руби программлю.» — «Это заразно:-)»
Вот такой диалог состоялся у меня сегодня с одним приятелем. Почему ruby?

Зачем учить Ruby

Этот вопрос касается тех, кто уже долго и успешно программирует на PHP. Вы освоились в одном языке, это здорово, но не надо останавливаться на достигнутом. Многие могут возразить, что они знают язык, ориентируются в нёи и уже изучили все грабли с ним. Я назову несколько причин для изучения Ruby.

  1. Любопытство . Мне, например, было очень интересно поработать с открытыми классами. Вот так вот взять и инжектировать свой метод в системный класс — по моему это здорово. А не будет ли путаницы? А как это сделать? Вообщем интересно всё новое.
  2. . Т.к. я давно программлю на PHP, мне интересно чем же Ruby может похвастаться перед PHP/
  3. Скорость работы Ruby . На Ruby сделан твиттер (хотя в последнее время от него и отказались). Хочется в реальности проверить его производительность.
  4. Класс решаемых задач . Руби хорош для веб-приложений. А так ли это?
  5. Метапрограммирование. Пожалуй самая главная причина.

Как изучать Ruby. Учебный план.

Вот здесь моей первой ошибкой было то, что я начал изучать фреймворк не зная язык. Теперь я понял, что так делать не надо. Забыв на время о Ruby on Rails я начал изучать сам Ruby, благо в тикет-системе долгое время висела системная задача, которую на php решать было тяжело. Уж очень не хотелось давать ему права root Итак план такой.

  1. Функции, классы, открытые классы. Атрибуты (аксессоры и мутаторы).
  2. Работа со строками, с массивами. Поиск и замена подстрок и т.д. Преобразование типов.
  3. Работа с файлами.
  4. Работа с системным окружением.
  5. Оформление приложения, работа с гемами (модулями).
  6. Работа с БД.
  7. Установка Ruby on Rails, .

В этом посте я опубликую своё первое приложение на Ruby и приглашаю всех желающих к обсуждению. Указывайте на ошибки, предлагайте best practice, задавайте вопросы.

Давайте учить Ruby вместе!

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

Задача стоит такая. Есть DNS сервер на хостинге и надо при вызове консольной утилиты на ruby добавлять зону для домена а также запись зоны в список зон (domains.list) и изменять одну запись в БД, куда прописывать этот домен. Настройки доступа к БД хранятся в php приложении, а конкретно в его INI файле. После всех действий надо перезагрузить DNS сервер (bind).

Рабочая среда для Ruby

В качестве IDE буду использовать RubyMine от JetBrains. Уж очень мне понравился их . Хоть он и был про phpStorm, но качество видно сразу. Руби ставим через RVM сначала для всех юзеров, потом настраиваем для рута и своего юзера.

Расширение открытых классов Ruby

Для работы с INI файлами в Ruby используем gem inifile. Но в нём есть небольшая проблема. В 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 # # Parse the ini file contents. # def parse return unless 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 # create tmp variables to indicate that a multine has started # and the next lines of the ini file will be checked # against the other mutline rgxps. if line =~ @rgxp_multiline_start then tmp_param = $1.strip tmp_value = $2 + "\n" # the mutline end-delimiter is found # clear the tmp vars and add the param / value pair to the section elsif line =~ @rgxp_multiline_end && tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # anything else between multiline start and end elsif line =~ @rgxp_multiline_value && tmp_param != "" then tmp_value += $1 + "\n" # ignore blank lines and comment lines elsif line =~ @rgxp_comment then next # this is a section declaration elsif line =~ @rgxp_section then section = @ini[$1.strip] # otherwise we have a parameter elsif line =~ @rgxp_param then begin section[$1.strip] = $2.strip rescue NoMethodError raise Error, "parameter encountered before first section" end elsif line =~ %r/APPLICATION_/ then next else raise Error, "could not parse line "#{line}" end end # while ensure fd.close if defined? fd and fd end end

Также я расширю класс String, чтобы можно было валидировать домены.

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

Исходники

Ну а теперь покажу вам собственно исходники.
index.rb

#coding: utf-8 require "mysql2" require "socket" require "inifile" require "./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" # Проверка параметров quit if (ARGV.count != 2) domain = ARGV hostname = ARGV.split(".") quit("Invalid domain name") if (not domain.valid_domain_name?) # Поиск компаниив БД result = Mysql2::Client.new(util.get_db_settings).query("SELECT id FROM `sites` WHERE `hostname` = "#{hostname}"") quit("Company not found") if result.count != 1 # Обновление её 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
В этом файле описываются зависимости проекта.

Source:rubygems gem "mysql2", "0.2.6" gem "inifile"

Ну и собственно включаемые функции.
functions.rb

#coding: utf-8 class String def valid_domain_name? domain_name = self.split(".") name = /(?:+)+/.match(domain_name).nil? tld = /(?:{2}|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info|me|mil|mobi|museum|ms|name|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(domain_name).nil? (domain_name.count > 1 and name != false and tld != false) end end class IniFile private # # call-seq # parse # # Parse the ini file contents. # def parse return unless 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 # create tmp variables to indicate that a multine has started # and the next lines of the ini file will be checked # against the other mutline rgxps. if line =~ @rgxp_multiline_start then tmp_param = $1.strip tmp_value = $2 + "\n" # the mutline end-delimiter is found # clear the tmp vars and add the param / value pair to the section elsif line =~ @rgxp_multiline_end && tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # anything else between multiline start and end elsif line =~ @rgxp_multiline_value && tmp_param != "" then tmp_value += $1 + "\n" # ignore blank lines and comment lines elsif line =~ @rgxp_comment then next # this is a section declaration elsif line =~ @rgxp_section then section = @ini[$1.strip] # otherwise we have a parameter elsif line =~ @rgxp_param then begin section[$1.strip] = $2.strip rescue NoMethodError raise Error, "parameter encountered before first section" end elsif line =~ %r/APPLICATION_/ then next else raise Error, "could not parse line "#{line}" end end # while ensure fd.close if defined? fd and fd end end def quit(message=nil) banner = " ============================ | DNS Addition tool | ============================ Usage: ruby ./index.rb domain.com olddomain.site.com" if not message.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 # turn off reverse DNS resolution temporarily UDPSocket.open do |s| s.connect "64.233.187.99", 1 s.addr.last end ensure Socket.do_not_reverse_lookup = orig end # Получение среды окружения def get_environment if @environment.nil? 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 if ENV["SUDO_USER"].nil? quit("Util should be run over rmvsudo, \r\nexample: rvmsudo ruby ./index.rb domain.ru some.subdomain.ru") else ENV["SUDO_USER"] end end def get_db_settings config = IniFile::load(self.get_config_path) section_name = self.get_environment.to_s + " : bootstrap" quit("No suitable section in config file") unless config.has_section?(section_name) dsn = config.to_h["resources.doctrinedata.connections.default.dsn"] # Parse dsn dsn.sub!("mysql://", "") arr = dsn.split("@") dbconfig = { :username => arr.split(":"), :password => arr.split(":"), :host => arr.split("/"), :database => arr.split("/") } end end

А как же PHP?

Этот пост не сводится к тому, что надо бросить PHP и начать изучать руби. PHP — самый популярный язык веб-программирования, на нём реализованы тысячи интересных вещей и алгоритмов, в т.ч. даже и нейросети. И я его люблю) За многие годы, можно сказать, что я с ним сроднился, несмотря на все его недостатки. Но это не значит, что не надо изучать для себя что-то новое.

Мне в последнее время задают вопрос, по каким книжкам учить Ruby. Я сейчас читаю вот эту.

Эта книга — официальное руководство по динамическому языку программирования Ruby. Авторский состав воистину звездный: Дэвид Флэнаган — известнейший специалист в области программирования, автор ряда бестселлеров по JavaScript и Java; Юкихиро «Matz» Мацумото — создатель и ведущий разработчик Ruby.
В книге приведено детальное описание всех аспектов языка: лексической и синтаксической структуры Ruby, разновидностей данных и элементарных выражений, определений методов, классов и модулей. Кроме того, книга содержит информацию об API-функциях платформы Ruby.

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

Жду ваших комментов по коду и любые интересные идеи!)

Спасибо!

Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:

Я уже давно хотел изучить Ruby on Rails на каком-то базовом уровне. Без конкретной цели. Скорее просто для себя, чтобы лучше понять, что же в нем такого особенного (в отличие от 100500 других технологий и фреймворков), что позволяет быстро создавать и масштабировать довольно нагруженные интернет-проекты. Вторичной причиной стало желание попробовать новые подходы к обучению. Когда я учился на программиста, у нас были только книги и форумы, где можно спросить совета. Сейчас есть интерактивные учебники и онлайн-школы программистов, огромное количество скринкастов (почти мечта: смотреть, как программируют гуру), базы знаний вроде stackoverflow.com и тонны исходных кодов на GitHub, где можно часами изучать исходники настоящих профи. Следующие несколько ночей (а днем банально некогда) я решил выделить на то, чтобы попробовать новые способы обучения в действии.

Ночь первая

Начинать учить Ruby on Rails без хотя бы минимального знания непосредственно Ruby было бы странным. Я уже когда-то брался за интерактивный гид ruby-lang.org . Но как прошел его, так и сразу все забыл. Его создатели обещают, что на прохождение и усвоение синтаксиса Ruby уйдет пятнадцать минут. У меня ушло тридцать. Правда, с постоянным отвлечением на Twitter. Процесс выглядит примерно так. Тебе говорят: «Массивы в Ruby объявляются так, а данные из массивов извлекают вот так. Теперь давай попробуй сделать массив и извлечь из него N элементов. А мы проверим». Читаешь, как все устроено, и сразу пробуешь. Ruby ты так, конечно, не выучишь. Лучше это воспринимать как супер-экспресс-курс, который работает.

И все-таки сам Ruby - это очень далеко от фреймворка Ruby on Rails. Хотелось освоить именно рельсы. Из нашей статьи про образование онлайн я точно помнил о нашумевшем курсе Zombie for Rails railsforzombies.org . Это так же, как и Try Ruby, интерактивный учебник, который прямо с места в карьер начинает тебя учить готовить рельсовые приложения. Сначала тебе читают мини-лекцию (на английском, но все предельно понятно - включи субтитры) о структуре файлов рельсового приложения, CRUD-подходе для работы с данными, объясняют, как реализована модель MVC в рельсах, и так далее. После каждого видео тебе предлагают выполнить задания на закрепление материала. Все кажется простым и понятным, курс пролетает незаметно за час-другой (он небольшой). Но! Почувствовал ли я после курса, что смогу написать рельсовое приложение? Увы, нет!

Ночь вторая

Одна из причин, почему после Rails for Zombies появляются некоторые базовые знания, но не появляется уверенности, - это виртуальная среда, в которой проходит обучение. С одной стороны, она до предела уменьшает порог входа: можно не заботиться об окружении. С другой стороны, ничего реального по ходу дела ты не создаешь - никакого тебе «Hello World» на выходе. И главное, с какой стороны подступаться к его созданию, непонятно. С этого момента я хотел попробовать Ruby on Rails в деле, реально установив его в системе (до этого можно было даже не стараться), и с нуля создать простое приложение.

Уже не помню как, но совершенно случайно я наткнулся на очень удачный курс скринкастов на русском языке rails.hasbrains.org . Спасибо автору за грамотное изложение: он методично объясняет принципы работы рельсового приложения в деталях, по ходу погружая тебя во все необходимые тонкости. Короче говоря, всю вторую ночь эксперимента я смотрел первую половину из более чем тридцати эпизодов этих скринкастов.

В голове окончательно закрепилась картинка, как генерируется приложение, как работать с рельсовой консолью, как создать модели и миграции, как обновлять модели и как валидировать в них данные, RESTful- контроллеры и так далее. Смотря каждый из эпизодов, я сразу пробовал все в действии, выстраивая полностью рабочее рельсовое приложение. Стало понятно, как в принципе устроены рельсы.

Ночь третья

На третью ночь остались последние эпизоды скринкастов, которые удалось посмотреть в один присест: работа с рельсами уже не казалось такой дикой. В этот момент мне кто-то рассказал о том, что у курса Rails for Zombies есть толковое и гораздо более глубокое продолжение. Правда, курс уже платный и хостится в рамках школы программирования Code School www.codeschool.com . Отдать 25 баксов, чтобы получить доступ ко всем курсам школы, было не жалко. Это стоимость на месяц, поэтому, если не понравится, не забудь отменить подписку.

Курс Rails for Zombies 2 действительно оказался очень удачным. Правда, многое стало повторением того, что я увидел в скринкастах, - но это было даже отчасти приятно. Пять уровней и пять блоков упражнений, которые делаешь прямо в интерактивной консоли. К этому моменту рельсы уже казались логичными, понятными и пригодными к использованию.

В Code School можно программировать прямо в браузере, выполняя задания курса

Что дальше?

Научился ли я делать сложные проекты? Нет. Но точно осознал подходы, используемые в рельсах, и понял их удобство. Научился быстро создавать простые приложения и в суперкороткий срок наращивать его функционал с помощью гемов, написанных сообществом. Я поймал кураж и дальше с удовольствием учусь лучшим практикам по программам Code School (сейчас смотрю курс по юнит-тестам). И меня чертовски радует то, что изучать технологии стало так просто.

Одна из первых и наиболее подробных обучающих книг по Rails в интернете. Главное достоинство - подробный охват самых необходимых вопросов, регулярные обновления и бесплатность основного содержания.

Правда ресурс полностью на английском. И важно понимать, что это построено в виде книги - во всех вопросах вам предстоит разбираться самому. Из-за этого длительность и сложность обучения невозможно прогнозировать.

2. Railscasts

Другой известный на весь интернет обучающий ресурс. На нем выросло не одно поколение Rails разработчиков. Тоже на английском.

Построен не как целостный обучающий курс, а в виде серии скринкастов - короткие уроки на конкретную тему. Уроков очень много, можно найти почти на любую тему.

К сожалению, проект в 2013 году перестал обновляться.

3. Rails для Зомби

Отвязное введение в рельсы для новичков в стиле игры квеста с атмосферой зомби. Очень популярно среди совсем новичков.

Удобно тем, что вам не нужно ничего устанавливать на свой компьютер. Все задачки решаются в браузере. Шаг за шагом вы проходите игру и начинаете понимать азы Ruby on Rails.

Если вы совсем не разбираетесь в программировании - это ваш выбор. В курсе нет сложных тем, ничего не отвлекает от основ. На английском.

3. Udemy

Большая коллекция видео-курсов. Среди них множество по ruby и ruby on rails. Нет смысла приводить конкретные ссылки - выбирайте на свой вкус по цене или по популярности.

Формат Udemy предполагает достаточно короткие курсы с акцентом на видео уроки. Не ждите серьезных домашних заданий или оперативной поддержки преподавателей.

4. Ruby Бурса

Мощный краткосрочный курс по основам Rails разработки. Опытные преподаватели, хорошая программа.

На курсе желательно личное присутствие студента и проходит он только в крупных украинских городах.

5. Разработка на Ruby on Rails от Злых Марсиан

Трехдневный интенсив от одной из самых опытных в России Ruby on Rails команд.

Проводится редко. Стоит дорого (судя по отзывам, он того стоит). Требует личного присутствия. Подходит только продвинутым программистам, новичкам там делать нечего.

6. Онлайн-интенсив Ruby on Rails от «Хорошего программиста»

Свежий проект от команды, известной в Youtube своими курсами по Ruby для новичков.

3-месячная интенсиваная программа рассчитана на полных новичков и обещает сделать из вас junior программиста с портфолио, ни много ни мало, из 12 толковых приложений.

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

Судя по youtube каналу и комментариям пользователей - эти ребята знают что делают и скучать с ними не придется.

Это первая из статей, в которых я расскажу об особенностях Ruby и Ruby on Rails и поделюсь советами о том, с чего начать в изучении Ruby, где находить ответы на вопросы, как получить нужный опыт и чем вы сможете выгодно отличаться от других кандидатов. Буду рад, если мои советы помогут кому-то определиться со специализацией и выбрать 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 нельзя не упомянуть популярнейший фреймворк Ruby on Rails.

А теперь поговорим о некоторых преимуществах Ruby более подробно.

Скорость разработки

Одним из плюсов Ruby и фреймворка RoR считается скорость разработки. Личный опыт и опыт коллег показывает, что решение задач на Rails происходит в полтора раза быстрее по сравнению с другими фреймворками подобного плана. Ruby очень прост как инструмент, а также существует огромное количество готовых решений для различного рода задач.

Штатные средства кеширования данных

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

Вначале тесты, потом код

Часто в процессе разработки крупных проектов возникает вопрос о тестировании, и не редкость, когда нет дополнительных средств на отдельную команду тестировщиков. В Rails есть решение и этой проблемы. Если сравнивать RoR с другими фреймворками в контексте тестирования приложения, то вы найдете массу готовых решений для любого вида тестов, будь то интеграционные или юнит. Все эти библиотеки работают «из коробки». В идеале в проекте на Ruby on Rails код не пишется до тех пор, пока под него не написаны тесты. RoR идеология предполагает изначальное использование методов BDD (Behavior Driven Development) или TDD (Test Driven Development).

Общепринятые стандарты процесса разработки у 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. В ходе выполнения задач, уже немного приближенным к реальным, вы точно столкнетесь с какими-то проблемами и тогда перейдете к тренировке одного из самых главных качеств - это умение гуглить. К сожалению, мне не удалось найти какой-то туториал или курсы, посвященные этому навыку, но он определенно играет очень важную в роль в повседневной работе.

Курсы

После прочтения теории и написания нескольких «пет-проектов» можно, конечно, пробовать идти по собеседованиям, но часто бывает, что этих знаний недостаточно. Это связано с большим наплывом кандидатов, и, учитывая конкуренцию, каждый старается выделиться и как можно лучше подготовиться.

Еще один важный пункт в обучении, который может стать перевесом в вашу сторону при поиске работы, - это курсы по программированию. Если, конечно, у вас нет ментора, который готов тратить определенное количество времени на то, чтобы придумывать задания и делать по ним ревью.

Сразу скажу, что я ни в коем случае не рекомендую идти на курсы, не имея уже какого-то багажа знаний. Я рассматриваю курсы как отличный способ закрепить знания, полученные в процессе самообучения. И сейчас не пытаюсь рекламировать какую-то конкретную школу, а объясню, какую именно пользу можно из этого извлечь:

С высокой долей вероятности там вы узнаете то, чего не знали раньше . На курсах довольно большой объем материала, который подается в структурированной форме, что позволяет лучше усваивать материал.

На период курса у вас будет ментор , который будет делать ревью решения ваших задач и указывать на слабые места и ошибки.

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

Еще одно преимущество - сертификат . Понятное дело, что в итоге вас будут оценивать по знаниям, а не по наличию бумажек в резюме. Но тем не менее это будет плюсом, особенно, если будет кандидат с похожим уровнем знаний, но без их документального подтверждения.

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

И самое главное - трудоустройство . Говоря о курсах, я не имею ввиду только те, за которые нужно платить деньги. Часто компании сами проводят набор на обучение, чтобы потом лучших взять к себе на работу. Это могут быть внутренние курсы или стажировка/интернатура. Такой вариант - наилучший, так как вам не нужно ни за что платить, вы получаете опыт и все выше перечисленные плюсы и вдобавок - реальную перспективу трудоустройства. Попасть на них сложнее, но перспективы значимее.

Итого

Ruby - это язык, который позволяет работать без большого количества неудобств и церемоний, которые приходят со строго типизированными языками. С Ruby легко начать работать, особенно если у вас уже есть опыт разработки на других языках программирования, и вы сможете быстро создавать прототипы с Ruby on Rails. В Японии, откуда он появился, Ruby использовался для создания игр. Ruby лаконичен и читается как английский, что делает код понятным для новичков.

Что касается изучения Ruby, хочу еще раз повторить: нужно начать с малого. Прочитайте несколько книг, сделайте самостоятельно несколько заданий, а затем, если чувствуете необходимость получить больше знаний и опыта или дополнительную мотивацию - можно идти на курсы, уже имея определенный багаж знаний, полученных самостоятельно.

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

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

Удачи в изучении! А в следующей статье мы поговорим о коде.

Подписывайтесь на наш Telegram-канал для джуниоров , чтобы не пропустить интересные вакансии, стажировки, курсы, статьи.

 
Статьи по теме:
Что такое расширение файла и как его узнать?
Для начала разберемся, что такое расширение файла и для чего оно нужно. Расширение файла - это определенная последовательность символов, которая добавляется в конце имени файла после точки. Расширение позволяет компьютеру и пользователю определить, какие
Услуга Мегафон «Плати когда удобно Мегафон плати когда удобно как отключить
Практически всем из нас известно, что означает кредитка – это карточка, открытая в банке, на которой открыт лимит для займа. Это удобный способ взять в подходящие момент средства в качестве долга, а затем внести их обратно и закрыть задолженность. Таким ж
Промокод asos сентябрь. Купоны и промокоды ASOS. Скидки на комплекты
ASOS - популярный интернет-магазин модных изделий для создания особенного стиля с доставкой по всем регионам РФ. Собственные марки, созданные командой дизайнеров из Лондона, выходят за рамки обычного образа, предлагая новые и уникальные вещи. Кроме этого,
Как удалить друга из фейсбука Как удалить друзей из фейсбука
Убрать имеющихся Для того чтобы прекратить ненужные связи в Facebook, необходимо пройти следующие шаги:Можно разобраться, как удалить человека из друзей на Фейсбуке, другим путем:Перейти в профиль юзера.В верхней части профиля, в правом нижнем углу на фот