День открытых дверей по курсу «Java Developer. Professional» 25.03.2019 в 20:00 | OTUS >
Курсы по нейросетям со скидкой до 30%
Курсы по нейросетям со скидкой до 30%
Выбрать курс
Проходил 25 марта 2019 года в 20:00

День открытых дверей
Всё о курсе «Разработчик Java»

День открытых дверей онлайн

День Открытых Дверей — отличная возможность узнать подробнее о программе курса, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения. Также преподаватель расскажет о своём профессиональном опыте и ответит на вопросы участников. Поэтому если есть вопрос, запишитесь на онлайн-трансляцию и задайте его в прямом эфире!
Преподаватель
Виталий Чибриков

Запись

О курсе

Java Developer. Professional
184 000 ₽ 174 800 ₽
6 месяцев
Начало 31 марта

Для кого этот курс?

  • Для программистов Java с практическим опытом разработки
  • Для программистов на других языках ООП с опытом разработки от 3-х лет


Необходимые знания

  • Опыт разработки на Java от 1 года / опыт разработки на другом языке от 3 лет (приветствуются любые языки ООП)
  • Понимание основных структур данных и алгоритмов
Программа курса
Модуль 1
Язык и платформа Java
Модуль 2
Проектирование
Модуль 3
Работа с окружением
Модуль 4
Spring
Модуль 5
Многопоточность
Модуль 6
Проектная работа
Язык и платформа Java
В этом модуле вы изучите фундаментальные основы работы Java Virtual Machine (JVM) и ключевые тонкие аспекты языка Java. В результате обучения вы сможете подробно объяснить, как выполняется Java-программа и какие процессы происходят под капотом.
Введение в курс и рабочие инструменты // ДЗ
познакомиться с программой курса;
рассмотреть формат обучения и организационные вопросы;
освоить основные инструменты, используемые в ходе курса.
31 марта, 20:00 — 21:30
Лектор: Евгений Непомнящий
Домашние задания: 1
ДЗ
Проект gradle с модульной структурой. 1) Создайте аккаунт на github.com (если еще нет)
2) Создайте репозиторий для домашних работ
3) Сделайте checkout репозитория на свой компьютер
4) Создайте локальный бранч hw01-gradle
5) Создать проект gradle
6) В проект добавьте последнюю версию зависимости
```

com.google.guava
guava
```



7) Создайте модуль hw01-gradle
8) В модуле сделайте класс HelloOtus
9) В этом классе сделайте вызов какого-нибудь метода из guava
10) Создайте "толстый-jar"
11) Убедитесь, что "толстый-jar" запускается.
12) Сделайте pull-request в gitHub
13) Ссылку на PR отправьте на проверку (личный кабинет, чат с преподавателем).
Gradle и логирование
углубить знания о Gradle;
познакомиться с методами логирования в Java.
7 апреля, 20:00 — 21:30
Лектор: Евгений Непомнящий
Основы тестирования Java-приложений
познакомиться с JUnit и Mockito;
научиться определять признаки тестируемого приложения на примерах.
9 апреля, 20:00 — 21:30
Лектор: Евгений Непомнящий
Дженерики и коллекции // ДЗ
познакомиться с обобщениями в Java и стандартными коллекциями JDK.
14 апреля, 20:00 — 21:30
Лектор: Фанзиль Кусяпкулов
Домашние задания: 1
ДЗ
Применение коллекций. необходимо сделать todo в классах из пакета homework.
все тесты должны проходить.
предполагается использование встроенного в jdk функционала, поэтому реализация методов должна быть буквально из нескольких строк.
Создание и оптимизация коллекций
понять принципы создания коллекций на практических примерах;
познакомиться с пакетом Unsafe, утилитой JMH и популярными библиотеками коллекций.
16 апреля, 20:00 — 21:30
Лектор: Фанзиль Кусяпкулов
Reflection и аннотации // ДЗ
познакомиться с механизмом Reflection;
понять назначение аннотаций и способы их создания.
21 апреля, 20:00 — 21:30
Лектор: Фанзиль Кусяпкулов
Домашние задания: 1
ДЗ
Свой тестовый фреймворк. Написать свой тестовый фреймворк.


Поддержать свои аннотации @Test, @Before, @After.


Запускать вызовом статического метода с именем класса с тестами.


**Т.е. надо сделать:**
1) создать три аннотации - @Test, @Before, @After.
2) Создать класс-тест, в котором будут методы, отмеченные аннотациями.
3) Создать "запускалку теста". На вход она должна получать имя класса с тестами, в котором следует найти и запустить методы отмеченные аннотациями и пункта 1.
4) Алгоритм запуска должен быть следующий::
метод(ы) Before
текущий метод Test
метод(ы) After
для каждой такой "тройки" надо создать СВОЙ экземпляр класса-теста.
5) Исключение в одном тесте не должно прерывать весь процесс тестирования.
6) На основании возникших во время тестирования исключений вывести статистику выполнения тестов (сколько прошло успешно, сколько упало, сколько было всего)
7) "Запускалка теста" не должна иметь состояние, но при этом весь функционал должен быть разбит на приватные методы.
Надо придумать, как передавать информацию между методами.
Lombok для упрощения Java-кода
познакомиться с механизмом annotation processing;
изучить возможности Lombok для упрощения Java-кода.
23 апреля, 20:00 — 21:30
Лектор: Вячеслав Лапин
Сборка мусора и производительность JVM // ДЗ
познакомиться с принципами работы сборщика мусора в Java;
понять влияние сборки мусора на производительность приложений.
28 апреля, 20:00 — 21:30
Лектор: Вячеслав Лапин
Домашние задания: 1
ДЗ
Определение нужного размера хипа. Есть готовое приложение (модуль homework)

Запустите его с размером хипа 256 Мб и посмотрите в логе время выполнения.


Пример вывода:

spend msec:18284, sec:18


Увеличьте размер хипа до 2Гб, замерьте время выполнения.

запусков записывайте в таблицу.

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


Оптимизируйте работу приложения.

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

Повторите измерения времени выполнения программы для тех же значений размера хипа.
Запуск Java-приложений в Docker
познакомиться на примере Docker с особенностями запуска Java-приложений в контейнере.
30 апреля, 20:00 — 21:30
Лектор: Фанзиль Кусяпкулов
Байт код, ClassLoader, инструментация, ASM // ДЗ
познакомиться с принципами работы виртуальной машины Java, механизмами загрузки классов и представлением кода в виде байт-кода.
5 мая, 20:00 — 21:30
Лектор: Вячеслав Лапин
Домашние задания: 1
ДЗ
Автоматическое логирование.. Разработайте такой функционал:
метод класса можно пометить самодельной аннотацией @Log, например, так:

```

class TestLogging implements TestLoggingInterface {
@Log
public void calculation(int param) {};
}
```


При вызове этого метода "автомагически" в консоль должны логироваться значения параметров.
Например так.

```

class Demo {
public void action() {
new TestLogging().calculation(6);
}
}

```


В консоле дожно быть:

`executed method: calculation, param: 6`


Обратите внимание: явного вызова логирования быть не должно.


Учтите, что аннотацию можно поставить, например, на такие методы:
```

public void calculation(int param1)
public void calculation(int param1, int param2)
public void calculation(int param1, int param2, String param3)
```


P.S.
Выбирайте реализацию с ASM, если действительно этого хотите и уверены в своих силах.
Функциональное программирование в Java
познакомиться с основами функционального программирования;
изучить возможности функционального программирования, появившиеся в Java 8.
7 мая, 20:00 — 21:30
Лектор: Фанзиль Кусяпкулов
Проектирование
В этом модуле вы рассмотрите принципы проектирования SOLID и паттерны проектирования GoF. В ходе выполнения домашних работ вы на практике научитесь применять паттерны проектирования и их комбинации.
Принципы ООП // ДЗ
понять принципы SOLID и общие критерии качественной архитектуры;
сформировать представление о ключевых концептах ООП.
12 мая, 20:00 — 21:30
Лектор: Евгений Непомнящий
Домашние задания: 1
ДЗ
Эмулятор банкомата. Написать эмулятор АТМ (банкомата).

Объект класса АТМ должен уметь:
- принимать банкноты разных номиналов (на каждый номинал должна быть своя ячейка)
- выдавать запрошенную сумму минимальным количеством банкнот или ошибку, если сумму нельзя выдать.
Это задание не на алгоритмы, а на проектирование.
Поэтому оптимизировать выдачу не надо.
- выдавать сумму остатка денежных средств

В этом задании больше думайте об архитектуре приложения.
Не отвлекайтесь на создание таких объектов как: пользователь, авторизация, клавиатура, дисплей, UI (консольный, Web, Swing), валюта, счет, карта, т.д.
Все это не только не нужно, но и вредно!
Создающие паттерны проектирования
познакомиться с создающими паттернами проектирования;
понять, когда и для каких задач их целесообразно применять.
14 мая, 20:00 — 21:30
Лектор: Евгений Непомнящий
Поведенческие паттерны проектирования
познакомиться с поведенческими паттернами проектирования;
понять, когда и для каких задач их целесообразно применять.
19 мая, 20:00 — 21:30
Лектор: Евгений Непомнящий
Структурные паттерны проектирования // ДЗ
познакомиться со структурными паттернами проектирования;
понять, когда и для каких задач их целесообразно применять.
21 мая, 20:00 — 21:30
Лектор: Евгений Непомнящий
Домашние задания: 1
ДЗ
Обработчик сообщений. Реализовать todo из модуля homework.
Работа с окружением
Этот блок посвящён вопросам взаимодействия Java-приложения с внешним миром. Вы изучите работу с файловой системой, механизмы сериализации и десериализации объектов, а также взаимодействие с реляционными и NoSQL базами данных. Вы рассмотрите JDBC и Hibernate, а также реактивное взаимодействие с MongoDB. Отдельное внимание уделяется разработке веб-серверов с использованием Tomcat и Jetty, технологии веб-сокетов, а также подходам Dependency Injection на примере Spring и Spring Boot.
Сериализация // ДЗ
познакомиться с функционалом сериализации объектов.
2 июня, 20:00 — 21:30
Лектор: Роман Вороновский
Домашние задания: 1
ДЗ
Обработчик json-ов. Некая система:
- принимает входящий json файл;
- обрабатывает данные из файла;
- формирует ответный файл.

Нужно реализовать недостающий функционал
Более подробно смотрите в примерах к вебинару.
Операции с файлами в NIO
познакомиться с возможностями NIO для работы с файлами;
понять принципы выполнения файловых операций с использованием NIO.
4 июня, 20:00 — 21:30
Лектор: Фанзиль Кусяпкулов
JDBC и транзакции // ДЗ
познакомиться с транзакциями в реляционных СУБД и JDBC;
понять роль транзакций и JDBC в стеке технологий доступа к данным.
9 июня, 20:00 — 21:30
Лектор: Фанзиль Кусяпкулов
Домашние задания: 1
ДЗ
Самодельный ORM. Работа должна использовать базу данных в docker-контейнере .

В модуле homework реализуйте классы:
- EntityClassMetaData
- EntitySQLMetaData
- DataTemplateJdbc

Метод main в классе HomeWork должен работать без ошибок.
Общие вопросы работы с СУБД и архитектура РСУБД
научиться оптимизировать SQL-запросы;
понять, как архитектура РСУБД влияет на выполнение запросов.
11 июня, 20:00 — 21:30
Лектор: Фанзиль Кусяпкулов
Hibernate в стеке технологий доступа к данным
познакомиться с Hibernate и его ролью в современном стеке технологий;
понять основные подходы к конфигурированию Hibernate и выполнению запросов.
16 июня, 20:00 — 21:30
Лектор: Евгений Непомнящий
JPQL и запросы в Hibernate // ДЗ
проанализировать способы формирования запросов в Hibernate;
понять различия между JPQL и SQL в контексте работы с Entity и Fetch.
18 июня, 20:00 — 21:30
Лектор: Евгений Непомнящий
Домашние задания: 1
ДЗ
Использование Hibernate. Работа должна использовать базу данных в docker-контейнере .

За основу возьмите пример из вебинара про JPQL (class DbServiceDemo).
Добавьте в Client поля:
адрес (OneToOne)
class Address {
private String street;
}
и телефон (OneToMany)
class Phone {
private String number;
}

Разметьте классы таким образом, чтобы при сохранении/чтении объека Client каскадно сохранялись/читались вложенные объекты.


ВАЖНО.
1) Hibernate должен создать только три таблицы: для телефонов, адресов и клиентов.
2) При сохранении нового объекта не должно быть update-ов.
Посмотрите в логи и проверьте, что эти два требования выполняются.
Типы ссылок и кэширование в Java // ДЗ
понять, какие виды ссылок есть в Java и для чего они используются;
разобраться, как устроены кэши и по каким принципам они строятся;
познакомиться с промышленным кэшем Ehcache.
23 июня, 20:00 — 21:30
Лектор: Фанзиль Кусяпкулов
Домашние задания: 1
ДЗ
Свой cache engine . Закончите реализацию MyCache из вебинара.
Используйте WeakHashMap для хранения значений.

Добавьте кэширование в DBService из задания про Hibernate ORM или "Самодельный ORM".
Для простоты скопируйте нужные классы в это ДЗ.

Убедитесь, что ваш кэш действительно работает быстрее СУБД и сбрасывается при недостатке памяти.
Основы работы с Redis
познакомиться с Redis и его основными возможностями;
понять основные сценарии применения Redis в качестве кэша и хранилища данных.
25 июня, 20:00 — 21:30
Лектор: Фанзиль Кусяпкулов
Web-сервер и Servlet API на примере Jetty // ДЗ
понять принципы работы Web-сервера на примере Jetty;
познакомиться с Servlet API и жизненным циклом сервлета.
30 июня, 20:00 — 21:30
Лектор: Евгений Непомнящий
Домашние задания: 1
ДЗ
Веб сервер. Встроить веб-сервер в приложение из ДЗ про Hibernate ORM (или в пример из вебинара встроить ДЗ про Hibernate :))
Сделать стартовую страницу, на которой админ должен аутентифицироваться;
Сделать админскую страницу для работы с клиентами;
На этой странице должны быть доступны следующие функции:
- создать клиента
- получить список клиентов.
Spring
Модуль посвящён изучению основ Spring Framework. В этом модуле вы разберётесь в принципах Dependency Injection и Inversion of Control и поймёте, как они реализованы в Spring. Вы изучите, как с использованием технологий Spring создавать веб-приложения с базой данных.
Dependency Injection и IoC в Spring // ДЗ
понять фундаментальные основы Inversion of Control (IoC) и Dependency Injection (DI);
познакомиться с контекстом Spring и способами его конфигурирования.
2 июля, 20:00 — 21:30
Лектор: Евгений Непомнящий
Домашние задания: 1
ДЗ
Домашнее задание (Собственный IoC контейнер). Обязательная часть:

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

Дополнительное задание (можно не делать):
- Разделить AppConfig на несколько классов и распределить по ним создание компонентов. В AppComponentsContainerImpl добавить конструктор, который обрабатывает несколько классов-конфигураций

Дополнительное задание (можно не делать):
- В AppComponentsContainerImpl добавить конструктор, который принимает на вход имя пакета, и обрабатывает все имеющиеся там классы-конфигурации (см. зависимости в pom.xml)
Spring Boot. Spring MVC
познакомиться со Spring Boot;
объяснить, что такое Spring Boot и как им пользоваться;
объяснить Spring MVC.
7 июля, 20:00 — 21:30
Лектор: Евгений Непомнящий
Асинхронные Web-приложения на Spring Boot
познакомиться с устройством стартеров Spring Boot;
понять, как реализовать асинхронный Web-сервис на Java.
9 июля, 20:00 — 21:30
Лектор: Вячеслав Лапин
Spring Data JDBC // ДЗ
познакомиться с фреймворком Spring Data JDBC;
понять отличия Spring Data JDBC от Spring Data и MyBatis;
освоить основные приёмы использования Spring Data JDBC.
14 июля, 20:00 — 21:30
Лектор: Роман Вороновский
Домашние задания: 1
ДЗ
Веб-приложение на Spring Boot. - Взять за основу ДЗ к вебинару Занятие «Web сервер. ДЗ», но без страница логина;
- Вместо Jetty использовать Spring Boot;
- Работу с базой данных реализовать на Spring Data Jdbc;
- В качестве движка шаблонов использовать Thymeleaf;
Если Thymeleaf не нравится, используйте чистый HTML и JavaScript.

Авторизацию и аутентификацию делать не надо.
Многопоточность
Этот модуль посвящён многопоточности в различных её проявлениях. Вы изучите Java Memory Model и CompletableFuture, а также освоите разработку многопоточных и распределённых приложений, части которых работают на разных хостах, и способы их взаимодействия с использованием блокирующих и неблокирующих сокетов NIO.
Основы многопоточности в Java
познакомиться с основными принципами многопоточности;
понять, как управлять потоками в Java с использованием Thread.
23 июля, 20:00 — 21:30
Лектор: Роман Вороновский
JMM и гарантии многопоточности. Подготовка к выполнению проекта
обсудить проектную работу;
получить ответы на на вопросы по проектной работе;
познакомиться с основными проблемами многопоточности;
понять, зачем была введена JMM;
изучить основные положения JMM.
28 июля, 20:00 — 21:30
Лектор: Сергей Прощаев
Пулы потоков и Executors// ДЗ
познакомиться с пулами потоков в Java;
понять, как и для каких задач использовать Executors и Fork/Join в JDK.
30 июля, 20:00 — 21:30
Лектор: Вячеслав Лапин
Домашние задания: 1
ДЗ
Последовательность чисел. Два потока печатают числа от 1 до 10, потом от 10 до 1.
Надо сделать так, чтобы числа чередовались, т.е. получился такой вывод:
Поток 1:1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1 2 3 4....
Поток 2: 1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1 2 3....

Всегда должен начинать Поток 1.
Потокобезопасные коллекции // ДЗ
познакомиться с потокобезопасными контейнерами;
понять паттерн системы обмена сообщениями для взаимодействия потоков.
4 августа, 20:00 — 21:30
Лектор: Евгений Непомнящий
Домашние задания: 1
ДЗ
Queues. Реализовать SensorDataProcessorBuffered из примера к вебинару, представляющий из себя класс,
который накапливает внутри себя данные, в порядке времени измерения, а при достижении заданного размера буфера
выполняет запись этого буфера с помощью метода flush и зависимости SensorDataBufferedWriter.
Тесты внутри SensorDataProcessorBufferedTest должны проходить
Виртуальные потоки
познакомиться с виртуальными потоками;
понять область применения виртуальных потоков.
6 августа, 20:00 — 21:30
Лектор: Евгений Непомнящий
Многопроцессные приложения // ДЗ
проанализировать сетевое взаимодействие;
понять принципы работы клиент-серверного приложения.
11 августа, 20:00 — 21:30
Лектор: Евгений Непомнящий
Домашние задания: 1
ДЗ
gRPC клиент-серверное приложение или "Убить босса". Разработать клиент-серверное приложение с применением технологии gRPC.

1) Серверная часть.
сервер по запросу клиента генерирует последовательность чисел.
запрос от клиента содержит начальное значение (firstValue) и конечное(lastValue).
Раз в две секунды сервер генерирует новое значение и "стримит" его клиенту:
firstValue + 1
firstValue + 2
...
lastValue

2) Клиентская часть.
клиент отправдяет запрос серверу для получения последовательности чисел от 0 до 30.
клиент запускает цикл от 0 до 50.
раз в секунду выводит в консоль число (currentValue) по такой формуле:
currentValue = [currentValue] + [ПОСЛЕДНЕЕ число от сервера] + 1
начальное значение: currentValue = 0
Число, полученное от сервера должно учитываться только один раз.
Обратите внимание, сервер может вернуть несколько чисел, надо взять именно ПОСЛЕДНЕЕ.


Должно получиться примерно так:
currentValue:1
число от сервера:2
currentValue:4 <--- число от сервера учитываем только один раз
currentValue:5 <--- тут число от сервера уже не учитывается.
число от сервера:3
currentValue:9
currentValue:10
new value:4
currentValue:15
currentValue:16

Для коммуникации используйте gRPC.
Клиент и сервер не обязательно разделять по модулям.
Можно сделать один модуль с двумя main-классами для клиента и сервера.

Пример лога работы клиента (new value - это значение полученное от сервера)

21:44:04.782 [main] INFO ru.otus.numbers.client.NumbersClient - numbers Client is starting...
21:44:04.932 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:1
21:44:05.140 [grpc-default-executor-0] INFO r.o.n.client.ClientStreamObserver - new value:2
21:44:05.933 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:4
21:44:06.933 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:5
21:44:07.113 [grpc-default-executor-0] INFO r.o.n.client.ClientStreamObserver - new value:3
21:44:07.934 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:9
21:44:08.934 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:10
21:44:09.112 [grpc-default-executor-0] INFO r.o.n.client.ClientStreamObserver - new value:4
21:44:09.935 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:15
21:44:10.935 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:16
21:44:11.113 [grpc-default-executor-0] INFO r.o.n.client.ClientStreamObserver - new value:5
21:44:11.935 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:22
21:44:12.936 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:23
21:44:13.113 [grpc-default-executor-0] INFO r.o.n.client.ClientStreamObserver - new value:6
21:44:13.936 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:30
21:44:14.937 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:31
21:44:15.114 [grpc-default-executor-0] INFO r.o.n.client.ClientStreamObserver - new value:7
21:44:15.938 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:39
21:44:16.938 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:40
21:44:17.113 [grpc-default-executor-0] INFO r.o.n.client.ClientStreamObserver - new value:8
21:44:17.939 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:49
21:44:18.939 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:50
21:44:19.113 [grpc-default-executor-0] INFO r.o.n.client.ClientStreamObserver - new value:9
21:44:19.940 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:60
21:44:20.940 [main] INFO ru.otus.numbers.client.NumbersClient - currentValue:61
21:44:21.114 [grpc-default-executor-0] INFO r.o.n.client.ClientStreamObserver - new value:10
21:44:21.119 [grpc-default-executor-0] INFO r.o.n.client.ClientStreamObserver - request completed
Асинхронные очереди с RabbitMQ
познакомиться с очередями сообщений на примере RabbitMQ и Spring Boot;
понять базовые принципы построения асинхронного приложения с использованием RabbitMQ.
13 августа, 20:00 — 21:30
Лектор: Евгений Непомнящий
Сетевые возможности NIO
познакомиться с основами сетевых возможностей NIO;
понять принцип работы неблокирующих сокетов.
18 августа, 20:00 — 21:30
Лектор: Вячеслав Лапин
Принципы работы Netty
познакомиться с основными принципами работы Netty;
понять архитектуру Netty и типовые сценарии применения.
20 августа, 20:00 — 21:30
Лектор: Вячеслав Лапин
Реактивное программирование с Spring WebFlux // ДЗ
познакомиться с реактивным программированием;
понять назначение реактивного подхода и типовые сценарии применения;
познакомиться с Spring WebFlux.
25 августа, 20:00 — 21:30
Лектор: Евгений Непомнящий
Домашние задания: 1
ДЗ
Комната 1408. В чат из примера к вебинару добавьте специальную комнату: 1408.

В этой комнате нельзя отправлять сообщения.
Однако в нее приходят все сообщения из всех других комнат.

Обратите внимание:
при входе в комнату 1408 должны загрузиться все сообщения из всех комнат (по аналогии с типовыми комнатами).
Kafka для обмена сообщениями
познакомиться с платформой Kafka и её основными возможностями;
понять базовые сценарии применения Kafka в приложениях.
27 августа, 20:00 — 21:30
Лектор: Сергей Прощаев
Проектная работа
Заключительный месяц курса посвящён проектной работе. Вы будете разрабатывать собственный проект, выбранный на основе ваших интересов и знаний, полученных в ходе обучения. Завершение проекта за месяц не является обязательным, однако к защите вам необходимо подготовить работающий прототип, демонстрирующий основную идею проекта.

В процессе написания по проекту можно получить консультации преподавателей.

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

Проект должен стать примером кода, который можно показывать потенциальным работодателям.

Студент может самостоятельно выбрать технологии из числа изученных на курсе и/или использовать что-то дополнительно.

Примеры тем:
- телеграм-бот
- распределенный кэш
- web сервер (разберите протокол)
- socket сервер на NIO (как netty)
- свой ORM
- кэш для hibernate
Основы CI/CD
познакомиться с основами развёртывания приложения и подходами CI/CD;
понять, какие задачи решают CI/CD pipeline и какие инструменты для этого используются.
1 сентября, 20:00 — 21:30
Лектор: Вячеслав Лапин
Домашние задания: 1
ДЗ
Проектная работа. Заключительный месяц курса посвящен проектной работе. Свой проект это то, что интересно писать студенту. То, что можно создать на основе знаний, полученных на курсе.
При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.

Проект должен стать примером кода, который можно показывать потенциальным работодателям.

Примеры тем проекта:
- web сервер (разберите протокол)
- socket сервер на NIO (как netty)
- свой ORM
- распределенный кэш
- кэш для hibernate
Основы Kubernetes
познакомиться с Kubernetes и понять, чем он полезен разработчику;
разобраться в ключевых абстракциях Kubernetes и требованиях к приложению;
рассмотреть варианты локального и managed Kubernetes на примере Minikube.
3 сентября, 20:00 — 21:30
Лектор: Сергей Прощаев
Защита проектных работ
защитить проект и получить рекомендации экспертов.
24 сентября, 20:00 — 21:30

Преподаватель

Виталий Чибриков
Заместитель генерального директора «OTUS. Онлайн-образование»
Выпускник МФТИ 2004-го года по специальности «Инженер-математик». Профессиональный опыт: 12 лет программирования на Java, C++, C#, JavaScript, PHP, Python. Участник проектов различных уровней сложности: от стартапов на 3 человека/полгода до бизнес-приложений на 200 человек/4 года. 8 лет разработки серверов для клиентских игр на Java. Эксперт в разработке облачных приложений, автоматизации процессов разработки и тестирования.

Разрабатывал и запускал проекты MMORPG: «Allods Online» и «Skyforge». Автор и преподаватель следующих курсов: «Углубленное программирование на Java» в Технопарке Mail.Ru Group, видеокурс «Разработка веб-сервиса на Java» на Stepik.org, курс «Java Programming» Harbour.Space University, Barcelona.

F.A.Q.: Наиболее часто задаваемые вопросы:

Нужно ли оплачивать обучение до Дня открытых дверей, если я хочу гарантированно попасть в группу?
Да, мы рекомендуем заранее оплатить обучение, чтобы гарантированно попасть в группу. В период проведения Дня открытых дверей резко возрастает количество желающих обучаться, поэтому может случиться так, что к окончанию Дня открытых дверей мест в группе не останется
Кто будет проводить День открытых дверей?
Проводить День открытых дверей будет преподаватель курса.
Как принять участие в Дне открытых дверей?
Для того, чтобы принять участие в Дне открытых дверей, оставьте свой e-mail в поле регистрации на мероприятие. Перед началом Дня открытых дверей мы пришлем вам ссылку, пройдя по которой, вы сможете присоединиться к вебинару.
Какие вопросы будем обсуждать на Дне открытых дверей?
На дне открытых дверей мы поговорим о проекте OTUS (о программе курса, почему мы не принимаем в группы новичков, почему учиться у нас интересно, но сложно), карьерных перспективах выпускников (почему вероятность карьерного роста у лучших студентов стремится к 100%), учебном процессе (оплатах, оценке знаний, сертификатах и прочих аспектах). Также ведущий мероприятия с радостью ответит на все ваши вопросы.