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

Искусственный интеллект и мотивация: как алгоритмы учат нас ставить цели

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

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

По эффективности обработки информации мозгу нет равных. От него отстают передовые нейронные сети, которые насчитывают миллиарды параметров, но обучаться от этого они не перестают. Наблюдение за тем, как это происходит, даёт нам новый взгляд на собственные когнитивные процессы, в том числе и на мотивацию.

Привет! Меня зовут Маша Молчанова. Сегодня я поделюсь своими наблюдениями о том, как механизмы ИИ перекликаются с человеческими процессами постановки целей, как нейронаука помогает лучше понимать нашу мотивацию и какие уроки мы можем взять у технологий для собственной жизни и работы. Поехали!

Читать далее

Moq: пара фич для упрощения тестов, о которых знают не все

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

Пишете unit-тесты в .NET? Значит, скорее всего, пользуетесь Moq. На первый взгляд, это простой и легковесный фреймворк, про который все всё знают.

Но знаете ли вы, как сделать ваши тесты проще? В этой статье я расскажу о нескольких фичах Moq, которые помогут сделать ваши тесты чище, лаконичнее и удобнее для сопровождения. Погнали!

Читать далее

Карты, деньги, 20 интеграций: как подружить POS-терминалы и фронтенд приложения

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

Бизнес Dodo Brands — глобальный. У нас уже более 1200 точек в 24 странах мира, и эти числа постоянно растут. А значит каждое наше приложение нужно постоянно адаптировать под новые реалии — обновлять вёрстку, добавлять переводы и изображения.

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

На первый взгляд, ничего сложного. Мы снова пишем плагиннную систему и снова отдаём работу с ней на аутсорс. Но на деле всё куда сложнее и интереснее. Привет! Меня зовут Никита Васильков. В этой статье я расскажу вам, как подружить фронтенд приложения с POS-терминалами.

Читать далее

Минус вес, плюс опыт. Как я написал первый пет-проект и веду его уже 6 лет

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

Сколько у вас было пет-проектов? У меня много: календари, тудушники, клоны популярных приложений. Однако до сегодняшнего дня дошёл всего один — приложение для подсчёта калорий Food Diary.

Как оно прожило 6 лет? Почему я продолжаю развивать его и сейчас? Как придумать клёвый пет-проект, который не захочется бросить в первую неделю? Ответы на все вопросы вы найдёте в этой статье. Поехали!

Читать далее

Гайд: как оценить удобство вашей дата-инфраструктуры

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

Представьте ситуацию: вы исследуете клиентский опыт, никого не трогаете и тут вас просят оценить, насколько участники IT-команды довольны инструментами Data Platform. Метрик вам, кстати, не дают — их вы должны выделить сами.

Случалось в вами такое? Со мной — да. Меня зовут Рамиля, я — лидер маркетинговых исследований в Додо. Сегодня расскажу, как оценить удовлетворённость сотрудников дата-инфраструктурой. Ну и гайдом обязательно поделюсь!

Читать далее

Истории

Как превратить ежемесячное ревью юнита в увлекательную встречу: опыт, советы, гайды

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

На ревью вашего юнита приходит мало людей? Вы получаете мало фидбэка о ваших продуктах? На ваших ревью не задают вопросы даже стейкхолдеры? А может быть вы вообще не знаете, как организовать ревью?

Привет! Меня зовут Маша, я — менеджер по коммуникациями и внедрениям в Dodo Engineering. Сегодня я расскажу, как сделать ревью вашего юнита интереснее, а его участников — более вовлечёнными. А еще поделюсь практическими советами и своими шаблонами.

Читать далее

Как я писал плагин для TypeScript. Часть 2. CLI

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

История о плагинах для TypeScript продолжается! В этой статье расскажу о том, как написать плагин для транспиляции, зачем использовать библиотеку ts-patch, как с её помощью можно трансформировать TypeScript и о многом другом!

Конечно, из статьи вы узнаете и о тех проблемах, с которыми можно встретиться при написании плагина для CLI. Разберёмся, как их можно решить. В общем, погнали!

Читать далее

Секретная акция, или Как выйти за пределы UICollectionView

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

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

А это возможно? Сначала казалось, что нет. Но мы это сделали. Нарисовали, анимировали и спрятали за пределы экрана ячейку с секретной акцией, у которой даже отрывается корешок! И всё с помощью UICollectionView. О том, как у нас это получилось, я сегодня и расскажу.

Читать далее

Собственный Segmented Control на SwiftUI. Часть 1. Смешиваем цвета

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

Мы в Додо давно встраиваем SwiftUI в свою дизайн-систему, а сейчас тестируем обновлённую карточку продукта в приложении Додо Пиццы. В ней есть компонент, написанный на UIKit, — слайдер для выбора размеры пиццы с Segmented Control.

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

Привет! Меня зовут Михаил Андреев. Я — iOS-разработчик в Додо Пицце. Сегодня мы научимся смешивать цвета.

Читать далее

Jetpack Compose как unbundled-библиотека. Скорость UI vs. Гибкость разработки

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

Jetpack Compose может работать медленнее системы View из-за своей архитектуры и дизайна. Но при этом он гораздо более гибкий.

Дело в том, что Jetpack Compose — это unbundled-библиотека. В этой статье я расскажу о том, что это значит и почему оно влияет на производительность, на примере нашего переезда на Compose.

Мы вместе ужаснёмся тормозам UI, вызванным переездом на Compose, и порадуемся возможности писать Compose-код, не оглядываясь на версию Андроида! Но это всё спойлеры. Давайте расскажу подробнее!

Читать далее

Пишем транзишинометр для Андроид. Как понять, что мои экраны открываются быстро?

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

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

Google даёт нам Macrobenchmark и JunkStats — инструменты для оценки общей отзывчивости и стабильности интерфейса. Но их недостаточно, чтобы понять, быстро ли у нас открываются экраны.

В этой статье мы поговорим о том, как получить полную картину по метрикам UI-перформанса. Как замерить плавность и отзывчивость интерфейса, и как оценить время открытия экрана — одно из самых частых действий для пользователя. Напишем собственный транзишинометр и замерим рендер экрана до первого onDraw и до последнего, причём и во Fragments, и в Compose.

Читать далее

Как я писал плагин для TypeScript. Часть 1. IDE

Уровень сложностиСложный
Время на прочтение15 мин
Количество просмотров2.8K

Привет, Хабр! Меня зовут Дима, я Head of Frontend в Dodo Engineering. Моя команда создаёт инструменты для удобной работы с фронтендами, унифицирует подходы к разработке, помогает другим командам в создании удобных пользовательских интерфейсов Dodo IS.

Недавно мне срочно понадобилось написать плагин для TypeScript. Начал я с того, что погуглил, как это сделать. По пути боролся с повышенным потреблением памяти и искал недостающие файлы в массиве, переписывал Proxy и не только, а закончил на... А впрочем, давайте вместе разбираться, зачем мне вообще понадобился плагин и как я его писал.

Читать далее

Корзина в Додо Пицце на iOS 14: баг длиной в полгода

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

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

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

Но спустя пару месяцев я узнал, что тикет проблемы всё ещё открыт. Я решил его закрыть и погрузился в удивительный мир… Авито, воркэраундов и не только! В этой статье расскажу вам об этом приключении! Погнали!

Читать далее

Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument

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

Приложение соединяет данные из сети с интерфейсом. Про UI сказано и написано немало, а вот сеть говорят меньше всего, хотя именно она влияет на время ожидания ответа пользователем. При этом со стороны разработчика это часто выглядит так: «ну я создал сессию, дёрнул запрос, обработал ошибку, что там ещё может быть?».

Если посмотреть на все запросы со стороны, то появится много вопросов: нужно ли переиспользовать URLSession.shared, почему первые запросы выполняются дольше остальных, как построить мониторинг качества работы сети и т.п.

Мы решили проанализировать наши приложения с помощью Network Instrument и нашли в них десяток разных проблем. В этой статье поделимся нашим опытом и расскажем о том, как найти зоны роста вашего iOS-приложения и использовать их для улучшения пользовательского опыта.

Читать далее

Ближайшие события

4 – 5 апреля
Геймтон «DatsCity»
Онлайн
8 апреля
Конференция TEAMLY WORK MANAGEMENT 2025
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область

Как мы искали применение App Clip… и нашли?

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

Мы в Додо часто заигрываем с новыми технологиями и делаем прикольные фичи. Вы, наверняка, уже использовали Live Activities для отслеживания своего заказа и слышали про AI-пиццу, а может быть и пробовали её.

Недавно у нас дошли руки до App Clips. Мы решили разобраться, могут ли они быть нам полезны, сделали своё мини-приложение и запустили его на проде.

В этой статье расскажу, как мы придумывали фичу, с какими проблемами столкнулись при разработке и поделюсь аналитикой после запуска.

Читать далее

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

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

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

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

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

Погнали.

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее
1
23 ...

Информация

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