Как стать автором
Обновить
Dodo Engineering
О том, как разработчики строят IT в Dodo
Сначала показывать

Kodein DI для Android. Целостность графа и тесты на DI

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1K

DI фреймворки бывают двух видов: те, что строят свой граф зависимостей во время компиляции (compile time фреймворки), и те, которые делают это уже при выполнении кода (runtime фреймворки).

Kodein — типичный представитель runtime фреймворков. Это значит, что о пропущенной зависимости вы узнаете непосредственно в процессе работы приложения, что может стать неприятным сюрпризом. Только представьте себе: вы пропустили на регрессе какой-то кейс, и у вас краш в продакшене из-за DI! Это же настоящий кошмар!

Однако отказываться от Kodein ID и других runtime фреймворков не стоит. О том, почему мы продолжаем ими пользоваться, и как их сделать более надёжными, я расскажу в третьей статье из цикла материалов про Kodein DI для Android.

Погнали.

Читать далее
Всего голосов 6: ↑7 и ↓-1+8
Комментарии5

Путешествие в yarn

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров3.1K

За последние пару лет многие российские компании перестали получать обновления зарубежного софта или вовсе потеряли к нему доступ. Мы, как и наши коллеги из других отечественных компаний, задумались о поиске альтернатив используемым нами решениям.

Наши бекендеры решили настроить резервную инфраструктуру на базе ресурсов «Яндекса». Мы, фронтендеры, задумались над альтернативой npm registry — источнику библиотек, фреймворков и других полезных в работе штук.

От нашей изначальной идеи — создания локального registry — мы пришли к yarn 2+. О том, как так получилось, и с чем мы столкнулись на этом тернистом пути, я сегодня и расскажу.

Читать далее
Всего голосов 13: ↑12 и ↓1+11
Комментарии13

Как Додо Пицца доставляет свежий код: история мобильного CI для iOS

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров5K

Мобильная разработка под iOS особенная: собрать приложение можно только на macOS, среда разработки по сути только одна, большая часть принятого в сообществе тулинга написана на Ruby, свой пакетный менеджер появился только пару лет назад. Тяжко.

А когда речь заходит про автоматизацию тестирования и сборок — тушите свет: Xcode Cloud появился полгода назад и почти ничего не умеет, популярные облачные решения могут месяцами не обновлять стек на новые мажорные релизы среды разработки или ОС (вставить ссылку на тред где гитхаб не может привести новую макось уже полгода), а ценник при этом может быть в 10 раз больше, чем за машинки на Linux. Ещё тяжелее.

Меня зовут Леха Берёзка, я iOS-техлид в Додо Пицце и сейчас я расскажу как мы собрали свой CI на М1, с виртуализацией и на полном нативе.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии9

App Clip и тысяча проблем

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.7K

Menusa - проект Dodo Brands. Инструмент по автоматизации процессов для малого бизнеса в сфере общепита.

В этой статье расскажу как мы добавляли функционал вызова официанта в App Clip и с какими проблемами столкнулись.

Читать далее
Всего голосов 13: ↑12 и ↓1+11
Комментарии8

Что будет если команда, не видавшая Compose, решила делать новую сложную фичу на нём?

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров8K

Мы в Дринкит, в digital кофейне от бренда Додо, любим делать эмоциональный дизайн. Для нас это означает не только сделать приложение удобным и функциональным, но и подарить нашим клиентам множество положительных эмоций при каждом взаимодействии с ним.

Звезды сошлись таким образом, что произошло 2 события:

Настало время делать кардинальный редизайн одного из наших главных экранов — карточки продукта

Мы приняли решение переходить на стек Jetpack Compose в нашем Android приложении.

В этой статье я расскажу, как мы сделали кастомный Compose экран с кастомным скроллом и снаппингом.

Читать далее
Всего голосов 18: ↑15 и ↓3+12
Комментарии10

Kodein DI для Android. KMP и Compose

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров2.5K

Быть в авангарде в разработке — жизненная необходимость. Поэтому многие проекты уже переходят на Jetpack Compose, а самые смелые и продвинутые даже выпускают приложения на KMP. Мы в проекте Дринкит тоже активно переходим на Jetpack Compose (с KMP пока не сделали подход).

Ну и как же жить со всем этим без DI? Правильно, никак. Поэтому в этой статье я расскажу, как применять DI Kodein в Kotlin Multiplatform и Jetpack Compose.

Это вторая статья из цикла статьей про Kodein DI для Android.

Погнали.

Читать далее
Всего голосов 14: ↑14 и ↓0+14
Комментарии5

CD-диск на шейдерах и NameDrop в iOS 17

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3.1K

Шейдеры отлично подходят для симуляции материалов. В обычных интерфейсах мы управляем только цветом, но эффект размытия в iOS — пример материала, который совершил революцию в мобильных интерфейсах.

Описать метериал через шейдер сложно, а создать динамичный эффект — ещё сложнее. В этой статье разберём пару примеров: переливающийся диск и нашумевший NameDrop в iOS 17.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии1

Как увеличить мощность A/B-теста, если мало данных и время поджимает

Время на прочтение6 мин
Количество просмотров3.7K

Привет, меня зовут Настя, я продуктовый аналитик в Dodo. Недавно мы провели A/B-тест по запросу геолокации у пользователей. Когда я приступила к анализу, то с ужасом обнаружила, что данных — кот наплакал, а бизнес уже очень ждёт результатов. Тогда мне пришлось пустить в ход свои «секретные техники» A/B-тестирования.

В этой статье расскажу, как мне удалось увеличить выборку без загадочного бутстрапа, причём тут раскатка и почему отсутствие результата — тоже результат. Статья может быть интересна как аналитикам и продакт оунерам, так и всем неравнодушным, интересующимся A/B-тестированием.

Погнали!
Всего голосов 17: ↑17 и ↓0+17
Комментарии7

Шейдеры в iOS для начинающих

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров6.6K

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

Но есть ещё и мир растровых эффектов — когда какая-то трансформация происходит с каждым пикселем по отдельности. С таким почти не приходится работать или используются уже готовые решения. Например, тени — типичный растровый эффект. Или блюр, который стал популярен, начиная с iOS 7, — именно тогда он стал одним из стандартных эффектов.

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

Давайте разбираться, что за чудо-код надо написать, как это подключить и как в целом погрузиться в тему. Начнём с простых градиентов, а закончим сложным примером «как в Air Drop на iOS 17».

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии1

Kodein DI для Android. Основы API

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров4.4K

Android разработчики обожают DI. Куда ни посмотри, куча статей и выступлений про Dagger 2, Hilt или Koin, но очень мало про Kodein. Даже на Хабре всего пару неплохих статей, но и те от 2018 года. Но с тех пор Kodein бурно развивался, и вышло много мажорных версий, API значительно изменился.

Мы используем Kodein в приложении Drinkit и успели прочувствовать на себе плюсы и минусы этого инструмента. Я расскажу, как пользоваться Kodein, как у него дела со скоупами и многомодульностью.

Итак, погнали
Всего голосов 18: ↑18 и ↓0+18
Комментарии4

Деврел — не человек, или Все мы немножко деврел

Время на прочтение10 мин
Количество просмотров4.6K

На Хабре уже писали, кто такие деврелы, и не кто-нибудь, а одна из топ-деврелов русскоязычного пространства Женя Голева. Рекомендую сначала заглянуть в статью Жени, а потом продолжать читать, если вдруг вы вообще ничего не знаете про деврел. В целом понятие относительно новое, в СНГ — уж тем более, и из-за нашей локальной специфики окутанное ложными представлениями, тайнами, мифами и легендами.

Меня зовут Вероника Ильина, я Head of Developer Relations в Dodo Engineering уже почти два года. И я очень люблю «Разрушителей мифов». Так что в этой статье пройдусь по популярным мифам, живущим в головах разработчиков, эйчаров, бизнес-заказчиков деврелов и самих деврелов.

Возьмите чашечку чая, устройтесь поудобнее и погнали рассуждать про деврел.

Читать далее
Всего голосов 23: ↑18 и ↓5+13
Комментарии9

Гайд по UX для телеграм-бота

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров8.1K

Телеграм-боты умеют общаться с пользователями, уведомлять о событиях, обрабатывать заказы, присылать аналитику, проводить опросы — это далеко не полный список возможностей, которые делают их незаменимыми помощниками для любого бизнеса. Но написать телеграм-бота с полезным функционалом — это только половина успеха. Важно также подумать о пользовательском опыте.

В Маркетплейсе приложений Dodo IS есть уже 2 телеграм-бота, которые помогают управляющим наших ресторанов. Они оба прошли нашу модерацию, а в процессе у нас родился небольшой UX-гайд, как сделать бота удобным и простым в использовании. Несмотря на то, что некоторые рекомендации могут показаться уж слишком банальными, мы решили ими поделиться здесь, потому что порой даже самые очевидные вещи забываются.

Гайд точно пригодится тем, кто только задумывается о создании первого телеграм-бота. И мы будем только рады, если опытные разработчики поделятся своими знаниями и дополнят наш список в комментариях.

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии3

Как впилить Allure TestOps в свой проект, если ты простой тестировщик

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров11K

В прошлом году нашей QA-команде нужно было интегрировать Allure TestOps в проекты. До этого никто из нас этим не занимался, но вместе разобрались и сделали. Я осознал, что в одиночку потратил бы на это очень много времени или вообще бы не разобрался, потому что инструкции, как это сделать, не было. Поэтому написал свою, в надежде, что она будет полезна тем, кто окажется в такой же ситуации.

В общем, если вы тестируете бэкенд на .NET, а для сборки проектов используете GitHub Actions и хотите внедрить Allure TestOps — эта инструкция для вас.

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

Управление, интерфейсы и доступность в Apple Vision Pro

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров6.7K

Apple показала Vision Pro – устройство, которое по максимуму использует все наши ощущения и погружает в прямое управление интерфейсом руками, голосом и движением головы.

Вот только не все могут видеть, слышать, двигать руками или говорить. Как будут работать очки для них? Неужели Apple придумала альтернативные способы управления для всего?

Да, придумала. Будущее невероятно.

Много картинок
Всего голосов 18: ↑17 и ↓1+16
Комментарии12

Как мы на 20% повысили скорость запуска приложения с помощью Baseline Profiles

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров5K

На конференции Google I/O 2022 показали инструмент Baseline Profiles, с помощью которого можно ускорить запуск приложений после установки. Мы попробовали его у себя и получили прирост до 20% при холодном запуске приложения!

В этой статье расскажу, как внедрить инструмент, оценить его работу на production приложении, немного погружу в историю компиляторов в целом и рассмотрю более продвинутые сценарии для генерации Profile.

Демонстрировать это я буду на нашем приложении Дринкит.

Поехали!
Всего голосов 22: ↑21 и ↓1+20
Комментарии14

Нельзя просто взять и сделать нормальную адресную систему в приложении

Время на прочтение8 мин
Количество просмотров4.8K

Олды помнят, как ещё каких-то 10-15 лет назад заказывали пиццу по телефону, диктуя адрес операторам кол-центра. Мало кто тогда думал, что отсутствие подсказок адресов и карты на сайте с определением геолокации, а уж тем более в мобильном приложении, будет вызывать у нас реакцию «да сложно, что ли, нормальную карту сделать?».

Но вот мы здесь, рассказываем, как в Додо Пицце лишь недавно появилась уже привычная многим адресная система. Как так вышло — история долгая и не всем интересная. Скажу только, что переделывать и менять как-то работающее старое на новое в большой системе — тот ещё квест. В итоге нам пришлось зарыться достаточно глубоко во внутренности Dodo IS, чтобы можно было добавлять адреса с помощью карты. В этой статье расскажу, с чего мы начинали и как реализовали эту фичу в нашем iOS-приложении.

Читать далее
Всего голосов 23: ↑21 и ↓2+19
Комментарии9

Как учиться учиться и для чего интровертам телеграм-канал

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров12K

«Лучший способ в чём-то разобраться до конца — это попробовать научить этому компьютер». Дональд Кнут (как минимум викицитатник говорит, что он так сказал).

Год назад я осознал, что моё развитие как инженера застопорилось. Не то, чтобы я перестал изучать что-то новое, скорее, страдал от отсутствия системности. Не было понятно, что изучать дальше, что уже получилось изучить и что из изученного я смог для себя извлечь. Поэтому я решил как-то осмыслить процесс самообучения и за год привёл его к системе, которая мне довольно сильно помогает.

Для тех, кто, как и я, испытывал похожие проблемы, я решил поделиться своим методом.

Читать далее
Всего голосов 25: ↑23 и ↓2+21
Комментарии7

Как помочь своему лиду не наломать дров

Время на прочтение12 мин
Количество просмотров5.4K

Всем привет, меня зовут Вероника, я Head of DevRel в Dodo Engineering. Я работаю с людьми в IT уже больше 7 лет и за эти годы насмотрелась на мириады Больших Менеджерских Ошибок (БМО, далее по тексту заменяется на «факапы») менеджеров во всех ипостасях: новичков, суперопытных, директоров, нанимающих, увольняющих, увольняющихся… Конечно, наошибалась и сама. На собственной шкуре знаю, что многие менеджерские факапы можно предотвратить в зачатке. И наблюдала, как команды спасают своих лидов от ошибок.

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

Разбираем на утках 9 ситуаций из жизни
Всего голосов 20: ↑19 и ↓1+18
Комментарии0

3 примера, в которых доступность помогла заработать денег, подсветить ошибки и решить споры

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров5.3K

Первое, что люди спрашивают про доступность: а может ли она принести денег, ведь там немного пользователей? Популярное искажение в том, что они выделяют одну группу (ну сколько там незрячих на миллион?) и не оценивают картину в целом (45% на iOS и 59% на Android включают хотя бы одну настройку доступности).

Спустя несколько лет погружения в доступность я понял другое — если мы начинаем адаптировать приложения для людей с особыми потребностями, то узнаём намного больше про взаимодействие людей с приложениями, а это даёт новые крутые инструменты.

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

Читать далее
Всего голосов 15: ↑14 и ↓1+13
Комментарии8

Обновляю ссылку один месяц, или Лёгких задач не бывает

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.2K

История о том, почему «обновить ссылку» — задача для техлида: тут и про тесты, и про вёрстку, и про архитектуры процессоров.

Бульварное чтиво из 15+1 мемов
Всего голосов 41: ↑39 и ↓2+37
Комментарии13
1
23 ...

Информация

Сайт
dodo.dev
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия