• Введение. Обзор и задачи курса. Подготовка к курсу. История изменений языка Java от версии к версии. Настройка окружения: система контроля версий git, система контроля зависимостей maven, среда разработки Intellij IDEA. Сборка и запуск java приложений.
    ДЗ 01: Создать проект под управлением maven, настроить сборку проекта из командной строки командой mvn install. Выложить проект на github. Создать ветку "obfuscation" изменить в ней pom.xml так чтобы сборка содержала стадию обфускации байткода.
  • Байт код. Содержание .class. Декомпиляция. Обфускация. Разбор ДЗ 01.
  • Углубленные основы. Загрузка классов. Виды и задачи class loader-ов. Класс Class Примитивные типы, строки, массивы. Память, которую занимают объекты.
    ДЗ 02: Написать стенд для определения размера объекта. Определить размер пустой строки и пустых контейнеров. Определить рост размера контейнера от количества элементов в нем.
  • Hot swap. Remote debug. Сборщик мусора. Instrumentation. Разбор примеров и ДЗ 02.
  • Generics. Контейнеры и алгоритмы. Обзор устройства и работы контейнеров из java.util. Сравнение контейнеров. Карты на основе хэш функции и на основе дерева. Разбор алгоритмов из java.util.Collections.
    ДЗ 03: Написать свою реализацию ArrayList на основе массива. Проверить, что на ней работают методы java.util.Collections
  • Инструменты для преобразования контейнеров. Apache Commons. Google Guava. Разбор примеров и ДЗ 03.
  • Параметры запуска VM. Сборщик мусора. Виды сборок. Разделение памяти под разные поколения объектов. Виды сборщиков. JMX. Управление приложением из jconsole. OutOfMemory. dump памяти. Исседование thread dump и heap dump.
    ДЗ 04: Написать приложение которое "подтекает" по памяти. Логгировать активность GC (количетство сборок в минуту, время паузы в минуту). Написать скрипт, который проведет измерение активности GC для разных параметров GC.
  • QA, тестирование. Виды тестов. "Заглушки". Testing frameworks: junit, mockito. Разбор примеров и ДЗ 04.
  • Аннотации. Стандартные аннотации. Применение аннотаций. Типы аннотаций. Синтаксис. Создание своих аннтатаций. Reflection.
    ДЗ 5: Написать свой тестовый фреймворк. Поддержать аннотации @Test, @Before, @After. Запускать вызовом статического метода с (1) массивом классов с тестами, (2) именем package в котором надо найти и запустить тесты.
  • Annotation preprocessor, Class loading / Instrumentation, ASM и Javassist. Разбор примеров и ДЗ 05.
  • Понятие дизайна приложения и паттерна проектирования. «Примитивные» паттерны. Концепты проектирования ООП: delegation, aggregation, coupling and cohesion, inheritance, interface, polymorphism. Behavioral patterns.
    ДЗ 06: На основе рассмотренных паттернов написать приложение, в котором классы являются в одно и то же время классами нескольких паттернов.
  • Разбор примеров и ДЗ 06.
  • Structural patterns, Creational patterns. Связь между паттернами, "похожие" паттерны. Антипаттерны.
    ДЗ 07: Подключить к работе предыдущего задания еще два паттерна.
  • Разбор примеров и ДЗ 07.
  • Java IO. Сериализация. Запись и чтение бинарных файлов. Работа с simple-json, javax.json и com.google.code.gson. ДЗ 08: Написать свой сериализатор объектов в JSON.
  • XML. Java NIO. Разбор примеров и ДЗ 08.
  • Работа с реляционной базой. JDBC. ORM через паттерн Executor. JPA.
    ДЗ 09: Написать свою ORM систему с автоматической сборкой объекта при помощи Reflection.
  • Inmemory базы. myBatis. Разбор примеров и ДЗ 09.
  • Hibernate. Конфигурирование Hibernate в коде и в XML. Java persistency query language. DBSevice pattern.
    ДЗ 10: Переписать ДЗ 09 на Hibernate.
  • Connection Pools. Разбор примеров и ДЗ 10.
  • Типы ссылок в Java. Системы кэширования. Ehcache.
    ДЗ 11: Написать свой cache engine. Для DBServer.
  • No SQL. Работа с MongoDB. Разбор примеров и ДЗ 11.
  • Встроенный веб сервер. Сервлеты: servlet API, жизненный цикл сервлета. Jetty: устройство, работа, подключение сервлетов.
    ДЗ 12: Встроить веб сервер на Jetty в приложение. Сделать админскую страницу, на которой админ должен авторизоваться и получить доступ к параметрам и состоянию кэша из ДЗ 11.
  • Websockets. Разбор примеров из ДЗ 12
  • Dependency injections frameworks. Spring. Конфигурирование приложения в XML. Log4j.
    ДЗ 13: Собрать war для внешнего сервера Jetty. Запустить веб сервер на Jetty и Spring c логированием работы через Log4j.
  • Разбор примеров и ДЗ 13.
  • Многопоточность. Создание многопоточного приложения. JMM. Поддержка многопоточности в стандартной библиотеке.
    ДЗ 14: Написать приложение, которое сортирует массив в 4 потоках с использованием библиотеки и без нее.
  • Разбор примеров и ДЗ 14.
  • Проблема многопоточного доступа. Синхронизация. Потокобезопасные контейнеры.
  • Примеры паттернов многопоточного проектирования.
    ДЗ 15: переписать ДЗ 14.
  • Разбор примеров и ДЗ 15.
  • Многопроцессные приложения. Сокеты. RMI. NIO для сокетов. Netty.
    ДЗ 16: написать сортировку массива в 4 процесса.
  • Разбор примера многопроцессного приложения. Разбор ДЗ 16.
  • веб сервер без веб фреймворков
  • создание своих аннотаций @NotNull, @NotEmpty
  • ORM на JDBC
  • Система кэширования
  • Свой проект
Регистрация
Старт занятий новой группы: 2017-10-07
На курсе изучаются особенности языка и платформы Java, её библиотека, подходы к проектированию приложений и реализации модулей для работы с базами, файлами, веб фронтендом и другими приложениями.

Необходимое время: 4 академических часа на занятия и 4 академических часа на домашнюю работу в неделю.
Преподаватель
Виталий Чибриков – старший программист JetBrains. Специалист по разработке серверных приложений на Java. Автор курсов по программированию на Java в Intuit.ru, Технопарк Mail.Ru и Stepic.org.

12 лет опыт программирования на Java, C++, C#, JavaScript, PHP, Python, Shell. Участие в проектах всех уровней сложности от стартапов на 3 человека/пол года до бизнес приложений на 200 человек/4 года. 8 лет разработки серверов клиентских игр на Java, в том числе серверов игр «Allods Online» и «Skyforge». Разработчик облачных приложений. Эксперт в автоматизации процессов разработки и тестирования.

Преподаватель Harbour.Space University, Barcelona

Закончил МФТИ по специальности инженер-математик в 2004-ом году.

Лекции в Технопарк Mail.Ru
LinkedIn
Github
Стоимость обучения
Помесячно -
9 5005
За весь курс -
45 0005
Регистрация
  • Advanced basics. Кодировки, Unicode в Python 2, coercion. Floating point numbers, IEEE-754, особенности реализации, основные ошибки и особенности использования.
    Itertools, iterable, iterator, iterator protocol, sequence protocol. Generators: piplines, routing, coroutines. Функциональное программирование, рекурсия и ее ограничения, tail recursion optimization. Scoping, namespaces, замыкания и их устройство. Декораторы функции и классы, декораторы с аргументами, вложенные декораторы.
  • HW1: Advanced Python Exercises. "Разгоночное" ДЗ: несколько упражнений на тему прошедшего занятия. Настройка окружения, coding style, релиз на github.
  • Internals. CPython, внутренности и архитектура, байткод, stack virtual machine, интерпретация. Имплементация основных типов данных: строки, числа, списки, словари, множества. Оптимизации. Memory model, allocation, pooling, reference counting, garbage collection и тюнинг. GIL, реализация и последствия, методы обхода.
    Разбор популярных алгоритмов с собеседований, алгоритмическая сложность операций в Python, алгоритмы на графах.
  • HW2: Adding new statement to Python language. Продолжаем копаться в интерпретаторе, добавляем поддержку инкремента, собираем свой Python. Понадобятся знания С.
  • OOP. Object model, мнжественное наследование, method resolution order, C3 linearization. Дескрипторы, data и non-data дескрипторы, descriptor protocol, property. Интроспеция. Магические методы и перегрузка. Модуль ABC, абстрактные классы, интерфейсы. Приватные атрибуты, name mangling. Metaprogramming, метаклассы и "черная магия"
  • HW3: Design Patterns. Познаем и реализуем паттерны проектирования, как классические (factory, facade и т.д.)так и специфические для Python (borg, highlander).
  • Automatization. Базы данных, коннекторы, ping-reconnect, конкурентное использование, SQL-инъекции, connection pooling, "отстреливание" долгих запросов. Кеширование, инвалидация кеша.
    Networking, socket, UDP, TCP/IP, клиент-серверное приложение, timeouts, HTTP, requests, REST, архитектуры web-server'ов. Демонизация, кастомные демоны, логирование, обработка ошибок, монитринг.
    Deployment. Setup tools и дистрибуция, менеджмент зависимостей. Пакеты и пакетные менеджеры, сборка, контейнеры, docker.
  • HW4: Asynchronous HTTP server. Создаем свой асинхронный сервер на "ванильном" Python, частично реализующий протокол HTTP (будет корректно отдавать страничку wikipedia). Проводим нагрузочное тестирование с помощью ab или wrk.
  • Стандарт WSGI. FastCGI, Gunicorn. uWSGI, обзор основных особенностей. Архитектура frontend - backend
    Django. Паттерн MVC\MTV, настройка окружения, структура Django проекта, конфигурация проектов, маршрутизация URL.
  • HW5: uWSGI microservice daemon. Пишем стандартного "промышленного" демона, который будет отвечать по HTTP, ходить в базу, писать логи и собираться в пакет.
  • ORM и "зло". Типичный CRUD в Django. Query sets, lazy evaluation, prefetch\preload, join'ы, сложные запросы и raw SQL. Object managers. Транзакции и уровни изоляции. Миграции схемы и миграции данных, большие объемы данных. Репликация, перенос сложных запросов на slave'ы, распределение нагрузки. Шардирование. NoSQL
    SQLAlchemy. Задание схемы, основные типы, типичный CRUD, exceptions и транзакции.
  • HW6: Django App I. Сквозное ДЗ на несколько занятий: создание web-приложения. Определяемся со структурой и схемой данных.
  • Views, представления, виды представлений, function/class based views, generic views. Формы, поля, процесс валидаци, model form. Widgets.
    Templates, язык шаблонов, контекст и рендеринг, рендеринг на стороне клиента и сервера, кеширование. Встроенные фильтры\тэги и создание кастомных. Альтернативные шаблонизаторы, Jinja2
  • HW7: Django App II. Начинаем рисовать красивые странички.
  • Middleware, применение и кастомизация, обзор готовых, написание собственного middleware. Django Admin, кастомизация, генерация документации, безопасность.
    Testing. Юнит тесты, интеграционные тесты, ручные тесты, покрытие тестами. Mocking, monkey patching. Тестирование верстки. Selenium. Continuous integration и continuous delivery. Документирование.
  • HW8: Django App III. Дописываем свой middlware для трейсинга запросов. Покрывает тестами.
  • REST API. Архитектура и особенности, версионирование, endpoint'ы, аутентификация, json, Google API desigh guide. REST фреймворки, Django REST framework. Rate limiting. Документация, swagger.
    Отложеннная и асинхронная обработка, очереди задач и очереди сообщений, celery.
    Другие фреймворки: Twisted. Tornado. Flask.
  • HW9: Django App IV. Добавляем к разабатываемому приложению API.
  • IPython, базовое использование, исключения, история команд, макросы, магические методы, взаимодействие с ОС, разработка, notebook
    SciPy и NumPy. Основные принципы и типы данных, массивы, ndarray, функции над массивами, матрицы, линейная алгебра. Reshaping, broadcasting, structured и record массивы, сортировки, хранение и загрузка данных. Оптимизация производительности.
  • HW10: Logistic Regression. Дописываем логистический регрессор, используем его для классификации отзывов о еде из Amazon. Экспериментируем в IPython notebook.
  • Pandas, базовое использование, загрузка и сохранение данных, форматы данных. Очистка данных, transform, reshape, merge. Временные ряды.
    Scikit-learn, тренировочная и тестовая выборки, модели, обучение, кросс-валидация. Сериализация обученных моделей, интеграция с production.
  • HW11: Open data analysis. Выбираем один из открытых dataset'ов и анализируем его с помощью pandas в IPython notebook.
  • Visualization. Построение графиков, визуализация статистических данных, инфографика. matplotlib, seaborn, pandas, d3.js .
    Python and Hadoop. Основы Hadoop, архитектура, HDFS, концепция map-reduce, streaming. Цикл ETL, data pipeline'ы.
  • HW12: MapReduce task with visualization. Поднимает локальный Hadoop, пишем job'у по обработке готового dataset'а, запускаем с помощью Hadoop Streaming, визуализируем результат.
  • Profiling. Средства профилирования, модули языка, инсрументы операционной системы (Linux). CPU, кеширование. Memory, расход памяти, утечки. Трейсинг, perf.
    Concurrency, parallelism, межпроцессорное взаимодействие, event'ы, блокировки, синхронизация доступа, shared state. Multithreading, multiprocessing. Асинхронный gevent, event loop, greenlet.
  • HW13: Concurrent file processing. Реализуем конкурентную обработку файлов.
  • C extensions, Написание расширений на C, C API, сборка. ctypes, cffi.
    Cython. Pypy.
  • HW14: Protobuf (un)packer extension. Пишем свое расширение, которое будет писать файлы с protobuf сереализованным содержимым. Понадобятся знания C.
  • Clustering. Parallel Python, IPython Parallel, Queues.
    Оптимизация потребления памяти. Вероятностные структуры данных.
    Производительность Python. Golang.
  • HW15: Concurrent file processing in Go. Создаем простого демона на Go по аналогии с HW13, проводим сравнение.
  • Python 3. Обзор изменений, внутренности, новые фичи, asyncio. Миграция проектов с 2 на 3 верси..
  • HW16: Python 3 Exercises. Финальное ДЗ, набор упражнений по усвоению оcбенностей третьей версии Python.
  • Monitoring system
  • Flask REST API
  • Django Web App
  • Data pipeline
  • Custom project
Регистрация
Старт занятий новой группы: 2017-07-07
Python является языком общего назначения и чаще всего применяется в разработке инфраструктурных решений, веб-приложений, систем контроля качества и аналитических систем. Исходя из этой предпосылки, курс нацелен на получение специализированных знаний связанных с различными областями применения языка. В курсе, в основном, рассматривается Python версии 2.7, но 3 версия не обходится стороной.

Необходимое время: 4 академических часа на занятия и 4 академических часа на домашнюю работу в неделю.
Преподаватель
Ступников Станислав - программист рекламной системы в Mail.Ru. 6 лет опыта промышленной разработки, в том числе создания и поддержания веб-приложений, инфраструктурных решений, высоконагруженных систем, data pipeline'ов и аналитических систем. 3 года научной разработки для крупных государственных заказчиков с контрактами по тематике анализа больших объемов данных. Опыт программирования на Python, Go, Lua, C, JavaScript, Perl. Широкий круг профессиональных интересов, начиная от построения распределенных систем, заканчивая машинным обучением. Более 5 лет преподавания программирования на Python студентам МГТУ им. Н.Э. Баумана. 4 года преподавания курса СУБД в Технопарк Mail.Ru. Закончил МГТУ им. Н.Э. Баумана по специальности "Специалист по защите информации" в 2013 году.
Стоимость обучения
Помесячно -
9 5005
За весь курс -
40 0005
Регистрация
DevOps. Необходимость меняться.

1. Что такое DevOps? История развития. DevOps инженер. Обзор курса. ДЗ: Рекомендации литературы для прочтения.

2. Основные компоненты рабочего окружения. Командный чат: Slack, HipChat, RocketChat. Система контроля версий (Git): работа в команде и отслеживание истории проекта. ДЗ: настройка рабочего окружения: командный чат, Git, текстовый редактор. Создание локального репозитория. Создания репозитория на Github, работа с удаленным репозиторием по SSH. Практические задания по Git.

3. Знакомство с Linux и облаками. Знакомство с Amazon Web Services (AWS). Создание виртуальных машин в облаке Амазона, управление AWS ресурсами через консоль управления. Принципы удаленной работы с сервером (SSH,WinRM, RDP). ДЗ: создание виртуальной машины в облаке через консоль управления. Создание ключей безопасного доступа и групп безопасности. Настройка удаленного подключения к серверу по SSH. Ручной деплой тестового приложения и его конфигурация. Версионирование конфигурации.

4. Base-Service-App модель: разбор уровня Base. Создание образов. Основы работы с Packer. Создание и работа с образами в облаке Амазона. Infra репозиторий. ДЗ: Создание Infra репозитория. Создание собственного образа в облаке при помощи Packer.
2. DevOps подходы для управления инфраструктурой и конфигурацией(сравнение сук, курс по ансибл, base-service-app, знакомство с терраформ)

1.Принципы эффективного управление инфраструктурой. Инструменты для управления инфруктрурой: Terraform, CloudFormation. Знакомство и работа с Terraform. ДЗ: Развитие Infra репозитория. Использование подхода IaC для управления инфраструктурой. Создание инфраструктурных компонент при помощи Terraform. Интеграция Terraform и Packer.

2. Работа над инфраструктурой в команде (remote backends). Использование модулей. Подходы к организации Infra репозитория. ДЗ: Написание модулей для различных инфраструктурных компонент. Работа с remote backend.

3. Продолжение обсуждения Base-Service-App модели: разбор всех уровней. Принципы эффективного управление конфигурацией. DevOps инструменты для управления конфигурацией: Chef, Ansible, Puppet, SaltStack. Знакомство и работа с Ansible. ДЗ: Использование подхода IaC для управления конфигурацией серверов. Создание Ansible плейбука для установки тестового приложения. Создание Ansible ролей для деплоя pet проекта. Интеграция Terraform и Ansible.
3. Continuous Integration & Continuous Delivery с использованием Docker

1.Immutable Infrastructure. Основы работы с Docker контейнерами и вольюмами. Docker registry. ДЗ. Создание собственного имиджа при помощи Dockerfile. Запуск контейнера с вольюмом. Работа с Dockerhub. Запуск контейнера в облаке при помощи Docker Machine.

2. Микросервисная архитектура. Как связать контейнеры сетью. Использование Docker Compose для запуска контейнеров. ДЗ: Одновременный запуск контейнеров при помощи Docker Compose. Работа с сетью.

3. Continuous Integration и Continuous Delivery. Обзор популярных CI систем: Jenkins, Bamboo, Gitlab CI, Team City. SaaS решения: Travis CI, Circle CI. CI/CD с использованием Docker. ДЗ: Запуск CI сервера (Gitlab CI). Написание тестов к приложению. Билд, тестирование и деплой контейнеров приложения.
4. Fast Feedback Loop (мониторинг, логирование)

1. Что и как мониторить? Основы хорошего мониторинга. Обзор популярных систем мониторинга: Zabbix, Nagios, Prometheus. Знакомство c инструментами мониторинга Docker контейнеров. ДЗ. Установка Prometheus, сбор системных метрик докер хостов. Построение дашбордов с использованием Grafana.

2. Сбор метрик сервисов и приложений. Триггеры и алерты. Интеграция систем мониторинга с командным чатом. ДЗ: Сбор метрик приложения и поддерживающих сервисов. Создание триггеров и алертов. Настройка системы мониторинга для отправки уведомлений в командный чат.

3. Централизованная система логирования. Основны логирования: log shipping, aggregation, parsing. Модель логирования приложения. Обзор популярных систем логирования: ELK stack, Graylog. ДЗ: Сбор логов с докер контейнеров.
5. Оркестрация

1. Что такое и зачем нужны оркестраторы. Обзор оркестраторов. ДЗ. Запуск контейнеров через Docker Compose в Swarm mode.

2. Введение в kubernetes, основные компоненты, область применимости. ДЗ: Установка kubernetes, запуск контейнеров с приложением.

3. Непрерывная поставка с kubernetes. Интеграция со сторонними сервисами. ДЗ: Интеграция kubernetes с Gitlab CI, автоматический деплоймент из CI

4. Стратегии деплоймента, rollback, fail-over, масштабирование. ДЗ: Стратегии деплоймента и rollback в kubernetes.

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

Необходимое время: 2 лекции в неделю по 2 академических часа и 4 часа на домашнее задание.
Преподаватель
Курс ведут основатели и ведущие сотрудники Экспресс 42

Иван Евтухович Прошел длинный путь от одного из первых разработчиков "Одноклассников" до консультанта в компании "Экспресс 42". По дороге он успел поработать руководителем отдела разработки первого облачного хостинга "Скалакси" и русского "Групона".

Никита Борзых Начинал внедрять системы управления конфигурацией, когда работал в эксплуатации облачного хостинга Скалакси. В последствии работал в эксплуатации проектов Evil Martians. Ведущий подкаста "Devops Дефлопе". Выступал на конференциях с техническими докладами DevOps тематики.

Александр Титов Развивает тему DevOps в России, внедряет системы управления конфигурацией, занимался эксплуатацией интернет-проектов в компаниях Скалакси, Skype, Qik, Microsoft.

Регистрация
 Дата начала занятий еще не задана

Мы можем уведомить вас о следующем наборе группы.

Подписаться на уведомление

 Дата начала занятий еще не задана

Мы можем уведомить вас о следующем наборе группы.

Подписаться на уведомление

Все курсы подготовлены для разработчиков, имеющих опыт работы
Только практические знания и технологии
Обучение длится 5 месяцев
Два занятия
в неделю