В этом выпуске переезд 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!

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