Что посмотреть на карантине? Подборка материалов от Технострима (часть 1)

qfogi4dsrqllunuiz_zigtvino4.jpeg


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

Этот курс поможет вам овладеть необходимыми знаниями и навыками для разработки программного обеспечения под Android. Вы изучите API Android, инструменты разработчика (SDK), популярные библиотеки и многое другое. Кроме этого вы научитесь обеспечивать отказоустойчивость.

  • Лекция 1. Введение. Общая характеристика Android и мобильной разработки в целом. Основные инструменты разработки. Создание Hello World-приложения. Устройство приложения. Особенности мобильной разработки.
  • Лекция 2. Основы верстки. Знакомство с основными UI элементами Android. Вёрстка экранов и обработка взаимодействия с UI-элементами.
  • Лекция 3. Асинхронная работа. Процессы и потоки в Android. Классы MessageQueue, Looper, Handler. Фоновые потоки. Выполнение операций в фоне: интерфейс Executor, классы AsyncTask и AsyncTaskLoader, классы Service, IntentService и JobIntentService. Фреймворк RxJava.
  • Лекция 4. Хранение данных. Откуда брать и где хранить файлы? Как Android SDK помогает решать типичные задачи хранения данных? Как приложениям обмениваться данными?
  • Лекция 5. CustomView, measure/layout/draw/touch event/etc. Что такое CustomView, measure и layout? Пример: Wave View. Анимация. Обработка касаний. Пример: свайп для удаления.
  • Лекция 6. Ресурсы, стили, темы. Где хранятся и как применяются различные виды ресурсов мобильного приложения? Из каких компонентов создаются визуальные стили приложения? Как создавать оформления (темы) приложений?
  • Лекция 7. Архитектура Android OS и инструментарий. Как приложение взаимодействует с операционной системой. Поиск ошибок в приложениях.
  • Лекция 8. Тестирование. Основы тестирования в Android-среде. Встраивание тестирования в процесс разработки. Инструменты тестирования в Android-среде. Сквозные и модульные тесты.
  • Лекция 9. Проектирование Android-приложений. Проблемы при разработке Android-приложений. SOLID-принципы проектирования. Паттерны проектирования. Model View Controller и Model View Presenter. Фреймворк Dagger 2. MVVM. Компоненты Android-архитектуры. Data Binding. Чистая архитектура.
  • Лекция 10. Kotlin. Свойства и возможности языка Kotlin. Зачем он нужен, если кругом Java? Powerful Kotlin для Android. Спасение в DSL или нет?
  • Лекция 11. Реактивное программирование. Что такое реактивное программирование и RxJava? Пример стрима (цепочки) данных. Контракт. Операторы. Marble-диаграммы. Типы Observable. Работа с потоками в RxJava. Некоторые сложности Android-разработки и их решение c помощью RxJava.
  • Лекция 12. Энергопотребление. Какие подсистемы влияют на энергопотребление? Особенности разных типов дисплеев. Замеры потребления подсистем смартфона. Замеры потребления в зависимости от частоты сетевых запросов. Как Android помогает оптимизировать потребление. Методики пассивного и активного уменьшения потребления.


Видеозаписи лекций.
Цель курса — изучение топологии, многообразия и основных принципов функционирования систем хранения и данных, а также алгоритмов, заложенных в основу как централизованных, так и распределённых систем, демонстрация фундаментальных компромиссов присущих тем или иным решениям.

  • Лекция 1. Введение в современные СУБД. Многообразие решений для хранения данных. Модели данных классических и NoSQL-систем. Модели консистентности. Семантика и допустимость овердрафта в интернет-приложениях. Классические алгоритмы организации данных для двухуровневой памяти.
  • Лекция 2. Современные алгоритмы для двухуровневой памяти. Понятие cache-oblivious алгоритма. Базовые cache-oblivious алгоритмы. Понятие write amplification. Фрактальные деревья. LSM-деревья. Блум-фильтры. Двухуровневые деревья.
  • Лекция 3. Кэширование. Алгоритм Least Recently Used. LRU: реализация в СУБД. Понятие online-алгоритма. Понятие c-compettve. LFD: доказательство идеальности. FIFO. Другие алгоритмы и их оценки. Понятие консервативного алгоритма. Рандомизированный алгоритм MARK.
  • Лекция 4 и 5. Архитектура СУБД. Модули. Структуры данных — статика и динамика. Форматы и протоколы. Жизненный цикл запроса.
  • Лекция 6 и 7. Транзакции. Принципы ACID в транзакционной обработке данных. Реализация подсистемы хранения с использованием журнала. Принцип двойной записи. Понятие истории изменений. Стратегии NO UNDO, NO REDO. Стратегии STEAL, NO STEAL.
  • Лекция 8. Управление транзакций с помощью блокировок. Иерархические блокировки. Специальные блокировки. Дедлоки. Приоритеты локов. Понятие hot spot. Алгоритмы поиска дедлоков. Понятие насыщения системы массового обслуживания в применении к транзакционной системе.


Видеозаписи лекций.

Как построить команду разработки на удаленке. Опыт Skyeng


Руководитель разработки в Skyeng Алексей Катаев рассказывает о том, как они создали команду из 68 разработчиков на удаленке, как справляются с экстренными задачами и борются с отвлекающими факторами в домашних условиях.


Android-разработка: команда, рынок, тестирование


Как проходит интеграция новых сотрудников в команду, что происходит с рынком Андроид-разработчиков, как выглядит архитектура приложения Новости@mail.ru и всё о тестировании мобильных приложений.



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

© Habrahabr.ru