В этом выпуске переезд Lingualeo на PostgreSQL, главные ошибки свободного ПО, война Epic c Apple, восприятие интерфейсов и золотой век программирования, «часы Уизли», поведение пользователей и многое другое!

Мы попросили нашего лидера бэкэнд разработки, Олега Правдина, рассказать о том, как они с командой параллельно с поддержкой основного продукта собрали новую модульную структуру сервиса на базе PostgreSQL, перенесли бизнес-логику в базы данных и провели миграцию с миллионами пользователей. Сегодня мы попробуем разобраться, почему Open Source приложениями никто не хочет пользоваться. Статья получилась довольно длинной, но не пугайтесь, будет интересно.
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
Telegram-канале.
iOS
• (+29) Airport — маркетплейс для приложений в TestFlight
• (+23) Как мы загружали банковскую карту из iPhone в брелок
• (+14) Знакомимся с Needle, системой внедрения зависимостей на Swift
• Обновление Lightroom удалило все пользовательские фотографии на iOS
• Apple отзывает сертификаты разработчиков у Epic Games и ставит под удар Unreal Engine
• Как подготовиться к iOS 14 и новым правилам конфиденциальности Apple
•
Анимация View в SwiftUI
•
Как я получил свою первую работу iOS-разработчика
•
Организация вашего Swift-кода в Xcode с помощью локальных пакетов
•
Микровзаимодействия в SwiftUI — анимация кнопок меню
•
Новое в области искусственного интеллекта в iOS 14
•
Как создать вариант сборки в iOS-приложении
•
24 расширений Swift для более чистого кода
•
Как настроить большой iOS/tvOS/watchOS проект для большой команды и избежать конфликтов?
•
Время сборки Xcode с BitBar
•
MotionToastView: красивые «тосты» для iOS
•
Countdown: таймер на SwiftUI
Android
• (+16) Внедрение IMA SDK в Android-приложениях
• (+11) Автотесты на Android. Картина целиком
• (+11) Декомпилируем приложение xiaomi сканер и забираем результат сканирования
• (+1) История про «боль» и как мы ее исправляем
• Анализ Android-рынка в Китае
•
Отключение Jetifier
•
Написание эффективных Layouts
•
Google Play In-App Review API: интеграция и опыт работы
•
Более умные приложения с Awareness API
•
Создание лучшего и более чистого RecyclerView.Adapter с Kiel
•
Обнаружение объектов в Android с помощью Firebase ML Kit
•
Activities не то, что вы думаете
•
Android MVVM с Firebase Firestore
•
Кодлабы для новых игровых технологий Android
•
Добавление удивительных переходов в Android-приложение с помощью Material Motion
•
Фрагменты: восстановление внутреннего устройства
•
MovieHunt: правильная архитектура кино для Android
•
InstaGrabber: открытый клиент Instagram
Разработка
• (+29) Восприятие интерфейсов пользователями на примере панелей из Lego
• (+21) Data-driven подход к разработке контента: как мы создаем роботов в War Robots
• (+14) Глоток свободы: как флеш-игры повлияли на игровую индустрию
• (+7) Сервис на языке Dart: каркас серверного приложения
• (+6) Mind Map в тестировании — или легкий способ тестировать сложные приложения
• (+1) Выбор мобильных устройств: пошаговая инструкция для начинающих QA. Часть II
• Хочу в геймдев #11: как попасть в зарубежную геймдев-компанию
• Podlodka #177: криптография
• Золотой век программирования закончился?
• Открыт прием заявок на чемпионат по программированию Yandex Cup
• Обзор рынка мобильной разработки в кризис: что происходит и к чему готовятся агентства?
• 5 принципов качественного UI
• Появление дизайнеров-полубогов. ИИ и машинное обучение
• Аффордансы в дизайне. Дизайн привычных вещей
• Как создать иллюстрации, когда не умеешь рисовать
• Дизайн приложений: примеры для вдохновения #13
• FigmaExport: как автоматизировать экспорт UI-Kit из Figma в Xcode и Android Studio проекты
• Как формируется стоимость разработки мобильного приложения?
•
Делайте больше, делая меньше
•
React Native против Flutter: решение ожидается в 2020 году
•
6 месяцев использования GraphQL
•
Разработка Open Source системы иконок в Microsoft
•
Создание чистого приложения «Game of Life» на Flutter с использованием гексагональной архитектуры и TDD
•
Как определять токсичные вакансии разработчиков по их описаниям
•
Захватит ли ИИ UX?
•
Фреймворк быстрых UX-исследований
•
Почему я отказался от Google Firestore (и никогда не вернусь)
•
4 признака неопытного разработчика
Аналитика, маркетинг и монетизация
• (+7) Объединяем закрытый WhatsApp и открытый SIP – Часть 1
• Почему действия Epic вредят игровой индустрии
• Epic запускает чемпионат #FreeFortnite
• iPhone с предустановленным Fortnite продают за $10,000
• Facebook поддержал Epic в борьбе с монополией Apple
• Взлет приложений для здоровья и фитнеса в 2020
• myTarget оценивает влияния наружной рекламы на установки приложений
• Яндекс запустил супер-приложение Go, помогающее решать повседневные задачи в городе
• Likee почти догнал TikTok
• Симуляторы показали самый большой рост в 1 полугодии 2020
• App Annie: как изменилось поведение пользователей в мобайле в первом полугодии 2020
• Что нужно учесть при оптимизации страницы приложения на иностранные языки
• Как мы за 2 месяца бесплатно получили 400 тысяч установок из TikTok
AI, Устройства, IoT
• (+110) Проект «часов Уизли» с демонстрацией местоположения членов семьи
• (+45) Склеиваем несколько фотографий в одну длинную с помощью машинного обучения
• (+13) Спасти рядового датасайнтиста. Как работать над компьютерным зрением, чтобы сделать проект и не потерять себя
• (+4) Интернет автомобилей: кому нужны данные о вашей езде
• Рынок умных часов растет
• BlackBerry готовит новый смартфон с клавиатурой
• Университет машинного обучения Amazon открывает свои курсы для всех
• Google AI Vision и Text to Speech на Raspberry Pi
•
Как создать собственного личного AI-помощника с помощью Python
•
AI учится играть в Super Mario Bros!
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

Мы попросили нашего лидера бэкэнд разработки, Олега Правдина, рассказать о том, как они с командой параллельно с поддержкой основного продукта собрали новую модульную структуру сервиса на базе PostgreSQL, перенесли бизнес-логику в базы данных и провели миграцию с миллионами пользователей. Сегодня мы попробуем разобраться, почему Open Source приложениями никто не хочет пользоваться. Статья получилась довольно длинной, но не пугайтесь, будет интересно.
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в


• (+29) Airport — маркетплейс для приложений в TestFlight
• (+23) Как мы загружали банковскую карту из iPhone в брелок
• (+14) Знакомимся с Needle, системой внедрения зависимостей на Swift
• Обновление Lightroom удалило все пользовательские фотографии на iOS
• Apple отзывает сертификаты разработчиков у Epic Games и ставит под удар Unreal Engine
• Как подготовиться к iOS 14 и новым правилам конфиденциальности Apple
•

•

•

•

•

•

•

•

•

•

•


• (+16) Внедрение IMA SDK в Android-приложениях
• (+11) Автотесты на Android. Картина целиком
• (+11) Декомпилируем приложение xiaomi сканер и забираем результат сканирования
• (+1) История про «боль» и как мы ее исправляем
• Анализ Android-рынка в Китае
•

•

•

•

•

•

•

•

•

•

•

•

•


• (+29) Восприятие интерфейсов пользователями на примере панелей из Lego
• (+21) Data-driven подход к разработке контента: как мы создаем роботов в War Robots
• (+14) Глоток свободы: как флеш-игры повлияли на игровую индустрию
• (+7) Сервис на языке Dart: каркас серверного приложения
• (+6) Mind Map в тестировании — или легкий способ тестировать сложные приложения
• (+1) Выбор мобильных устройств: пошаговая инструкция для начинающих QA. Часть II
• Хочу в геймдев #11: как попасть в зарубежную геймдев-компанию
• Podlodka #177: криптография
• Золотой век программирования закончился?
• Открыт прием заявок на чемпионат по программированию Yandex Cup
• Обзор рынка мобильной разработки в кризис: что происходит и к чему готовятся агентства?
• 5 принципов качественного UI
• Появление дизайнеров-полубогов. ИИ и машинное обучение
• Аффордансы в дизайне. Дизайн привычных вещей
• Как создать иллюстрации, когда не умеешь рисовать
• Дизайн приложений: примеры для вдохновения #13
• FigmaExport: как автоматизировать экспорт UI-Kit из Figma в Xcode и Android Studio проекты
• Как формируется стоимость разработки мобильного приложения?
•

•

•

•

•

•

•

•

•

•


• (+7) Объединяем закрытый WhatsApp и открытый SIP – Часть 1
• Почему действия Epic вредят игровой индустрии
• Epic запускает чемпионат #FreeFortnite
• iPhone с предустановленным Fortnite продают за $10,000
• Facebook поддержал Epic в борьбе с монополией Apple
• Взлет приложений для здоровья и фитнеса в 2020
• myTarget оценивает влияния наружной рекламы на установки приложений
• Яндекс запустил супер-приложение Go, помогающее решать повседневные задачи в городе
• Likee почти догнал TikTok
• Симуляторы показали самый большой рост в 1 полугодии 2020
• App Annie: как изменилось поведение пользователей в мобайле в первом полугодии 2020
• Что нужно учесть при оптимизации страницы приложения на иностранные языки
• Как мы за 2 месяца бесплатно получили 400 тысяч установок из TikTok

• (+110) Проект «часов Уизли» с демонстрацией местоположения членов семьи
• (+45) Склеиваем несколько фотографий в одну длинную с помощью машинного обучения
• (+13) Спасти рядового датасайнтиста. Как работать над компьютерным зрением, чтобы сделать проект и не потерять себя
• (+4) Интернет автомобилей: кому нужны данные о вашей езде
• Рынок умных часов растет
• BlackBerry готовит новый смартфон с клавиатурой
• Университет машинного обучения Amazon открывает свои курсы для всех
• Google AI Vision и Text to Speech на Raspberry Pi
•

•

← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.