Skip to content

MastersAcademy/ruby-course-2018

Repository files navigation

ruby-course-2018

Ruby Course 2018-2019

Terms and conditions

  • Це документ визначає та декларує чим є курси з Ruby, які проводить Masters Academy в 2018 - 2019 рр.
  • Курси проводяться Masters Academy, на безоплатній добровільній основі з благодійним внеском на рахунок Онкоцентру.
  • Метою проведення курсів є допомога зацікавленим особам у вивченні мови програмування Ruby та фреймворку RubyOnRails та пов’язаних технологій.
  • Курси є добровільною освітньою ініціативою, метою якої є донесення корисної інформації у зручний для обох сторін спосіб, із орієнтацією на самомотивованість відвідувачів, двосторонню цікавість процесу та взаємне збагачення та обмін досвідом.
  • Курси не передбачають проведення заліків, іспитів та вручення дипломів, не є засобом отримання сертифікату будь-якого вигляду. Нашою метою є не виконання студентом формальних процедур, а досягнення ними певного рівня професійності. Студентам які особливо відзначились можуть бути виписані рекомендаційні листи від викладачів, за підписом викладача.
  • На курсах особа, яка їх проводить, по окремих питаннях подає суб’єктивно забарвлену інформацію на власний розсуд, користуючись здоровим глуздом та власним досвідом.
  • Кінцевою метою курсів є максимально можлива передача досвіду студентам для їх подальшого професійного зростання та розвитку. У якості втілення досвіду приймається проект, програмний код якого написаний студентом, самостійно чи в групі, дозволить будь-кому скласти враження про опанування студентом мови програмування Ruby та відпоівідного інструментарія.
  • Доступ до курсів можуть отримати всі бажаючі, адекватні та розсудливі особи, із мінімальними навичками програмування, котрі зробили пожертвування на рахунок онкоцентру. Від студентів очікується мотивованість, готовність задавати питання та самостійно визначати, яка саме допомога може бути надана викладачами.
  • Ми не дитячий садочок та не школа, викладачам не цікаво чути відмовки, чому студент не зробив домашнє завдання, і тому метою студента є зацікавити викладача у передачі досвіду, ми всі дорослі люди )
  • Заняття проводитимуться згідно із графіком, 1 раз на тиждень, про зміни в графіку повідомлятимемо ASAP, але можливі перенесення занять через об’єктивні обставини.
  • Студент має з самого початку усвідомити, що все, що він отримає від курсів на 99% залежить від нього.
  • Приходьте налаштовані конструктивно, невимушено та зацікавлено. Вчитися - весело, вчитися Ruby - потрійні веселощі )
  • Для отримання оновлень кожен слухач має слідкувати за даним репозиторієм, через канал будуть повідомлятися самі загальні та невідкладні речі.
  • Спілкування студентів між собою та з менторами проводиться в Telegram-каналі
  • Завдання мають надаватися на перевірку:
    • в кодуванні UTF-8
    • мова коментарів - виключно англійська.
    • символ табуляції - два пробіли
    • перевід строки - Unix (LF)
  • Запитання можна задавати у Facebook та Telegram
  • Всі практичні завдання мають бути виконані до кінця п'ятниці включно, щоб у менторів був час їх перевірити (якщо перевірка не потрібна можно робити довше)

Lesson #1 (06/11/2018, Lection)

TOPIC: Ruby Basic

Mentor: Vlad Mokosii

Agenda

  • Object-oriented
  • Dynamic and duck typing
  • Everything is an expression
  • Creation of DSLs
  • Reflection and alteration
  • Lexical closures, iterators and generators, with a unique block syntax
  • Exception handling
  • GC
  • Multithreading

Lesson #2 (13/11/2018, Lection)

TOPIC: Objects

Mentor: Ivan Dobrelya

Agenda:

  • Iterators
  • Hash key object requirements
  • Enumerable module mixin
  • Everything is an object
  • Flexible syntax, several ways to do something
  • Extending existing classes class_eval, define_method
  • Changing existing objects(instance_eval). Eigenclasses. Singleton methods.

Lesson #3 (20/11/2018, Lection)

TOPIC: DB, DSL, ActiveRecord

Mentor: Yurii Rudenko

Agenda:

  • database.yml
  • migrations
  • schema
  • models
  • rake tasks
  • object-databases

Lesson #3.1 (27/11/2018, Workshop)

TOPIC: DB, DSL, ActiveRecord

Mentor: Yurii Rudenko

Lesson #4 (11/12/2018, Lection)

TOPIC: Rack

Mentor: Ivan Dobrelya

Agenda:

  • Rack: config.ru
  • Middleware application
  • Rack application
  • Sinatra - minimalistic framework
  • Web-Frameworks: Sinatra, Padrino

Lesson #4.1 (18/12/2018, Workshop)

TOPIC: Rack

Mentor: Serhii Ovcharenko

Lesson #5 (22/01/2019, Lection)

TOPIC: Rails

Mentor: Serhii Ovcharenko

Agenda:

  • Rails overview
  • Rails main components
  • RESTful applications * Stateless * Cacheable * Layered system * Code on demand(optional) * Uniform interface
    • Identification of resource
    • Manipulation of resources through these representations
    • Self-descriptive message
    • Hypermedia as the engine of application state(HATEOAS)
  • Rails routing
  • Rails naming conventions
  • Rails controllers parameters
  • Rails controllers
  • Controllers filters
  • Rescue in controllers
  • Testing routing and controllers

Lesson #5.1 (29/01/2019, Workshop)

TOPIC: Rails

Mentor: Serhii Ovcharenko

Lesson #5.2 (05/02/2019, Workshop)

TOPIC: Rails

Mentor: Serhii Ovcharenko

Lesson #6 (12/02/2019, Lection)

TOPIC: API

Mentor: Serhii Ovcharenko

Agenda:

  • Rails API
  • Grape
  • Swagger

Lesson #6.1 (19/02/2019, Workshop)

TOPIC: API

Mentor: Serhii Ovcharenko

Lesson #6.2 (26/02/2019, Workshop)

TOPIC: API

Mentor: Serhii Ovcharenko

Lesson #7 (05/03/2019, Lection)

TOPIC: Exceptions

Mentor: Vlad Mokosii

Agenda:

  • Exceptions hierarchy
  • Exceptions raise
  • Exceptions handling
  • Usage of exceptions and intelligent handling

Lesson #8 (19/03/2019, Lection)

TOPIC: Tests

Mentor: Oleg Monastyreckyi

Agenda:

  • Tools: Test::Unit, RSpec, Code testing
  • Capybara
  • Additional info
  • PhantomJS, Selenium

Authors

Lesson #9 (26/03/2019, Lection)

TOPIC: Functional Ruby

Mentor: Yurii Rudenko

Agenda:

  • First-class functions and higher-order functions
  • Proc and lambda difference
  • Blocks as proc
  • The power of lambda

Lesson #10 (02/04/2019, Lection)

TOPIC: Multi-threading

Mentor: Yurii Rudenko

Agenda:

  • Threads
  • GIL
  • Fibers
  • Troubles with concurrency

Lesson #11 (09/04/2019, Lection)

TOPIC: Performance

Mentor: Yurii Rudenko

Agenda:

  • Why web apps are slow
  • What is 'slow'
  • What we gonna do