На этой неделе мы говорим про Continuous Integration, переход из веб-разработки в игры, темные темы, юнит-тесты, новый топ зарабатывающих и многомиллиардную индустрию изготовления ключей.
CI — это рабочий процесс, при котором вы как можно чаще интегрируете свой код в общий код продукта. И не просто интегрируете, а еще и постоянно проверяете, что все работает. Так как проверять нужно много и часто, стоит задуматься об автоматизации. Можно все проверять на ручной тяге, но не стоит, и вот почему.
Многие сегодня любят реактивное программирование. В нём масса плюсов: и отсутствие так называемого «callback hell», и встроенный механизм обработки ошибок, и функциональный стиль программирования, который уменьшает вероятность багов. Значительно проще писать многопоточный код и легче управлять потоками данных (объединять, разделять и преобразовывать).
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.
iOS
• (+23) Пишем игру «Карточки памяти» на Swift
• (+14) Продвинутая интерполяция строк в Swift 5.0
• (+10) Custom instruments: когда signpost недостаточно
• (+9) Создаем элементы интерфейса программно с помощью PureLayout (Часть 2)
• Apple добавила дополнительный шаг в оформление подписки
• Apple наняла еще одного ветерана виртуальной реальности
• Netflix отказался от работы с AirPlay
• Улучшаем цикл iOS-разработки с брекпоинтами
• iOS: Umbrella Framework с CocoaPods
• Работаем с MLDataTable из Create ML для предварительной обработки данных
• Миграция со Swift 4 на Swift 5
• Создание динамической модульной архитектуры для iOS
• UIView SmoothCorners: скругленные углы, как у Apple
Android
• (+33) IntelliJ IDEA 2019.1: Кастомизация тем интерфейса, switch-выражения из Java 12, отладка внутри Docker-контейнеров
• (+18) Как при помощи 2 видов unit-тестов сделать приложение более стабильным
• Смартфоны с Android стали секретными ключами
• Snap обновил Snapchat для Android
• Перемещение изображений по экрану в Android
• Что такое Android Lint и как он помогает писать поддерживаемый код
• Приложение с фактами о Чаке Норрисе на Kotlin
• Как просто генерировать Smart Replies с ML Kit на Android
• Холодные потоки, горячие каналы
• Воссоздаем градиент Facebook Messenger
• Используем TextWatchers правильно
• Играем с холстом Android drawVertices
• Google запрещает плагины для Instant Apps
• Как использовать Firebase для создания многопользовательской игры для Android
• Конверсия Kotlin – 4 ловушки, на которые стоит обратить внимание
• Шпаргалка по API анимаций в Android
• Dagger и сверкающая новая @Component.Factory
Разработка
• (+46) Как мы из веб-разработки в разработку игры зашли
• (+46) Как создать тёмную тему и не навредить. Опыт команды Яндекс.Почты
• (+22) Unity: отрисовываем множество полосок здоровья за один drawcall
• (+18) Raspberry-pi-танк и GPS навигация
• (+10) Проектирование на основе «отражения»
• (+5) Импорт 3D-моделей в Unity и подводные камни
• AppsCast #4: GPU, гексагональные ускорители и линейная алгебра
• Podlodka #106: Платформенная разработка
• Disruptor Beam открывает свой бэкенд
• Результаты опроса разработчиков Stack Overflow 2019
• Humble Book Bundle о классических видео-играх
• Snapchat открыл игровую платформу
• Создание Action для Google Assistant
• Следует ли мне использовать React Native?
• Как я взял идею и превратил ее в продукт
• Почему Test Driven Development (TDD) лучше всего подходит для надежного программирования
• Идеи приложений, которые повысят ваши навыки программирования
• Зачем и как я учу Flutter?
• Компьютерные игры на BASIC
• Нет времени, нет денег, нет проблем: завершение The First Tree
• Непрошенный редизайн Paypal: исследование UX
• Пять черт прекрасных программистов
• Создаем полноценное мобильное приложение на Ionic4
• Технический долг – перезанять или ликвидировать?
• Теория цвета для дизайнеров (с инфографикой)
• Angular приложение как Progressive Web App
Аналитика, маркетинг и монетизация
• (+14) Два способа сбора наград за рекламу в мобильных играх, или роботы должны работать
• (+14) Как Android-троян Gustuff снимает сливки (фиат и крипту) с ваших счетов
• Netflix упустил первое место в топе зарабатывающих приложений
• Самые зарабатывающие приложения в Бразилии в 2018
• Tonal: гимнастический зал на стене
• У серии Candy Crush рекордный 1 квартал
• Splash Screen: успешный первый запуск для вашего мобильного приложения
AI, Устройства, IoT
• (+67) Для чего и как мы скрываем госномера автомобилей в объявлениях Авито
• (+38) Фотографии из грубых набросков: как именно работает нейросеть NVIDIA GauGAN
• (+21) Виртуальная реальность – игра, лечение, жизнь. Технологии VR на службе реабилитационной медицины
• (+20) Как возникают «умные города»
• (+15) Устойчивость обучения GAN (Копаем глубже)
• (+15) Как раскрутить новичка и ничего не сломать
• (+4) Как технологии IoT изменят мир в ближайшие 10 лет
• KeyMe получил $50 млн на изготовление ключей
• Qualcomm улучшает работу ИИ в новых Snapdragon
• Дополненная реальность в Эрмитаже: 15 апреля стартует конкурс AR-приложений AR-craft
• Умные ответы и Определение языка в ML Kit
• Технодайджест (март 2019)
• Aroma: используем машинное обучение для рекомендаций кода
• 3 самые большие ошибки в изучении Data Science
• Да, ИИ заменит дизайнеров
< Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Эволюция CI в команде мобильной разработки |
Reaktive — мультиплатформенная библиотека для реактивного Kotlin |
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.
iOS
• (+23) Пишем игру «Карточки памяти» на Swift
• (+14) Продвинутая интерполяция строк в Swift 5.0
• (+10) Custom instruments: когда signpost недостаточно
• (+9) Создаем элементы интерфейса программно с помощью PureLayout (Часть 2)
• Apple добавила дополнительный шаг в оформление подписки
• Apple наняла еще одного ветерана виртуальной реальности
• Netflix отказался от работы с AirPlay
• Улучшаем цикл iOS-разработки с брекпоинтами
• iOS: Umbrella Framework с CocoaPods
• Работаем с MLDataTable из Create ML для предварительной обработки данных
• Миграция со Swift 4 на Swift 5
• Создание динамической модульной архитектуры для iOS
• UIView SmoothCorners: скругленные углы, как у Apple
Android
• (+33) IntelliJ IDEA 2019.1: Кастомизация тем интерфейса, switch-выражения из Java 12, отладка внутри Docker-контейнеров
• (+18) Как при помощи 2 видов unit-тестов сделать приложение более стабильным
• Смартфоны с Android стали секретными ключами
• Snap обновил Snapchat для Android
• Перемещение изображений по экрану в Android
• Что такое Android Lint и как он помогает писать поддерживаемый код
• Приложение с фактами о Чаке Норрисе на Kotlin
• Как просто генерировать Smart Replies с ML Kit на Android
• Холодные потоки, горячие каналы
• Воссоздаем градиент Facebook Messenger
• Используем TextWatchers правильно
• Играем с холстом Android drawVertices
• Google запрещает плагины для Instant Apps
• Как использовать Firebase для создания многопользовательской игры для Android
• Конверсия Kotlin – 4 ловушки, на которые стоит обратить внимание
• Шпаргалка по API анимаций в Android
• Dagger и сверкающая новая @Component.Factory
Разработка
• (+46) Как мы из веб-разработки в разработку игры зашли
• (+46) Как создать тёмную тему и не навредить. Опыт команды Яндекс.Почты
• (+22) Unity: отрисовываем множество полосок здоровья за один drawcall
• (+18) Raspberry-pi-танк и GPS навигация
• (+10) Проектирование на основе «отражения»
• (+5) Импорт 3D-моделей в Unity и подводные камни
• AppsCast #4: GPU, гексагональные ускорители и линейная алгебра
• Podlodka #106: Платформенная разработка
• Disruptor Beam открывает свой бэкенд
• Результаты опроса разработчиков Stack Overflow 2019
• Humble Book Bundle о классических видео-играх
• Snapchat открыл игровую платформу
• Создание Action для Google Assistant
• Следует ли мне использовать React Native?
• Как я взял идею и превратил ее в продукт
• Почему Test Driven Development (TDD) лучше всего подходит для надежного программирования
• Идеи приложений, которые повысят ваши навыки программирования
• Зачем и как я учу Flutter?
• Компьютерные игры на BASIC
• Нет времени, нет денег, нет проблем: завершение The First Tree
• Непрошенный редизайн Paypal: исследование UX
• Пять черт прекрасных программистов
• Создаем полноценное мобильное приложение на Ionic4
• Технический долг – перезанять или ликвидировать?
• Теория цвета для дизайнеров (с инфографикой)
• Angular приложение как Progressive Web App
Аналитика, маркетинг и монетизация
• (+14) Два способа сбора наград за рекламу в мобильных играх, или роботы должны работать
• (+14) Как Android-троян Gustuff снимает сливки (фиат и крипту) с ваших счетов
• Netflix упустил первое место в топе зарабатывающих приложений
• Самые зарабатывающие приложения в Бразилии в 2018
• Tonal: гимнастический зал на стене
• У серии Candy Crush рекордный 1 квартал
• Splash Screen: успешный первый запуск для вашего мобильного приложения
AI, Устройства, IoT
• (+67) Для чего и как мы скрываем госномера автомобилей в объявлениях Авито
• (+38) Фотографии из грубых набросков: как именно работает нейросеть NVIDIA GauGAN
• (+21) Виртуальная реальность – игра, лечение, жизнь. Технологии VR на службе реабилитационной медицины
• (+20) Как возникают «умные города»
• (+15) Устойчивость обучения GAN (Копаем глубже)
• (+15) Как раскрутить новичка и ничего не сломать
• (+4) Как технологии IoT изменят мир в ближайшие 10 лет
• KeyMe получил $50 млн на изготовление ключей
• Qualcomm улучшает работу ИИ в новых Snapdragon
• Дополненная реальность в Эрмитаже: 15 апреля стартует конкурс AR-приложений AR-craft
• Умные ответы и Определение языка в ML Kit
• Технодайджест (март 2019)
• Aroma: используем машинное обучение для рекомендаций кода
• 3 самые большие ошибки в изучении Data Science
• Да, ИИ заменит дизайнеров
< Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.