Ruby обучение. Как я учил Ruby on Rails за три ночи. И так и не выучил. А как же PHP


Одна из первых и наиболее подробных обучающих книг по 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 on Rails в течение 12 недель. Ниже вы можете прочитать относительно точный перевод этой истории, и, надеюсь, вдохновиться на изучение этого прекрасного фреймворка (и прекрасного языка).

Прежде чем начать, я хотел бы представить Джоша Криуса (http://joshcrews.com) и поблагодарить его за то, что убедил меня начать изучать Ruby on Rails; без него, его помощи и без часов, которые он потратил на то, чтобы быть моим наставником, я не писал бы это сегодня. Спасибо.

23 января я запустил идею своей мечты, Freelancify.com . Ровно 12 недель назад я был техническим предпринимателем (tech entrepreneur), который тратил тысячи долларов, чтобы создать приличный 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 Майкла Хартла. Не беспокойтесь о том, чтобы на 120% понять материал, этого не случится, пока вы не начнете по-настоящему учиться. Я закончил Rails Tutorial и создал это похожее на Twitter приложение примерно за неделю, не совсем понимая, что я сделал. Позднее, по мере продвижения, я стал понимать, что все начинает обретать смысл.

Недели 3 - 6

С Twitter-приложением, созданным при помощи Rails Tutorial, я обрел некоторую уверенность. Руководство не сделало меня разработчиком, но теперь я знаю общие шаги в создании приложений, с создания самого приложения, и до установки его на Heroku. Все, что было между тем временем оставалось размытым. Как мне теперь ПО-НАСТОЯЩЕМУ начать учиться? Работая над реальным проектом, который что-то для меня значит . Джош и я решили, что мне стоит свободно поработать над Freelancify и посмотреть, что я смогу сделать. Первым, что я сделал, был перенос всего HTML с каркаса и организация его в файлы видов(views) и парциалов(partials). Я создал(scaffolded) шаблонные платформы для Пользователей(Users) и Проектов(Projects). Затем я начал изучать мой первый реальный гем 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. Скорость работы 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 и хочет достичь более высокого уровня понимания и мастерства работы. Найти книжку можно на озоне или библио-глобусе.

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

Спасибо!

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

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

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

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

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

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

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

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

Курс просто замечательный! Понятное объяснение материала независимо от его сложности. Огромное спасибо преподавателям! Быстро отвечают на вопросы и дают обоснованный и конкретный фидбек на выполняемые задания. Результат говорит сам за себя: 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 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 (сейчас смотрю курс по юнит-тестам). И меня чертовски радует то, что изучать технологии стало так просто.