Как стать автором
Обновить

Компания Vivid Money временно не ведёт блог на Хабре

Сначала показывать

Погружение в автотестирование на iOS. Часть 4. Ожидания в XCUITest

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

Привет, Хабр!

В UI тестах не все события происходят синхронно друг за другом. Сетевые запросы, анимации, чтение файлов – все это требует времени. Встает вопрос – как заставить тест ждать наступления определенного события?

В этой статье мы разберем:

- Что такое ожидание и для чего они используются в тестах;

- Рассмотрим какие бывают ожидания;

- Разберем из чего состоят ожидания;

- Рассмотрим пример эффективных ожиданий в тестах.

Читать далее

Архитектура в Django проектах — как выжить

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

Думаю, ни для кого не секрет, что в разговорах опытных разработчиков Python, и не только, часто проскальзывают фразы о том, что Django это зло, что в Django плохая архитектура и на ней невозможно написать большой проект без боли. Часто даже средний Django проект сложно поддерживать и расширять. Предлагаю разобраться, почему так происходит и что с Django проектами не так.

Читать далее

Погружение в автотестирование на iOS. Часть 3. Жизненный цикл iOS приложения во время прогона тестов

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

Привет, хабр!

В этой статье я расскажу про жизненый цикл iOS приложения во время прогона тестов, а в частности про:

- Предусловия и постусловия в ui-тестах;

- Запуск/завершение работы приложения;

- Запуск стороних приложений;

- Сброс permissions;

- Определение состояния приложения.

Читать далее

Процесс локализации iOS приложения в компании Vivid Money

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

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

В этой статье пойдет речь о том, как устроена локализация в Vivid.Money: мы расскажем о том, какой инструмент для локализации выбрали, с какими проблемами столкнулись и как их решили.

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

Читать далее

Онбординг нового разработчика с помощью Ansible

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

Ваш новый разработчик только что закончил подписывать трудовой договор и с горящими глазами готов закрывать по 15 задач в день. На его пути стоит лишь одно препятствие — новый ноутбук, который пока что не настроен должным образом. Чаще всего процесс настройки окружения описывается в документе, который выдается новому разработчику. Мы не сильно далеко ушли и тоже составили такой список.

Читать далее

Истории

Погружение в автотестирование на iOS. Часть 2. Как взаимодействовать с ui-элементами iOS приложения в тестах

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

Привет, Хабр!

В прошлой статье мы разобрались:

- Что такое ui-тесты и для чего они нужны;

- Как настроить окружение для тестов;

- Как находить ui-элементы в проекте и проставлять им accessibilityidentifier.

В этой статье мы разберем:

- Как обращаться и инициализировать ui-элементы в ваших тестах;

- Как взаимодействовать с ui-элементами приложения;

- Как писать ассерты для проверки в автотесте ожидаемого результата.

Читать далее

Немного байт здесь, немного там — и вот вы уже говорите о том, как в действительности устроена память

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

Мой новый пост был навеян последним квизом по го. Обратите внимание на бенчмарк [1]:


func BenchmarkSortStrings(b *testing.B) {
        s := []string{"heart", "lungs", "brain", "kidneys", "pancreas"}
        b.ReportAllocs()
        for i := 0; i < b.N; i++ {
                sort.Strings(s)
        }
}

Будучи удобной обёрткой вокруг sort.Sort(sort.StringSlice(s)), sort.Strings изменяет переданные ей данные, сортируя их, так что далеко не каждый (по-крайней мере, как минимум, 43% подписчиков из twitter) мог бы предположить, что это приведёт к аллокациям [выделениям памяти на куче]. Однако, по-крайней мере в последних версиях Go это так и каждая итерация этого бенчмарка вызовет одну аллокацию. Но почему?

Читать дальше →

Vivid UI

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

Первое, что видит пользователь - UI приложения. И в мобильной разработке больше всего вызовов связано именно с его построением, а большую часть времени разработчик тратит на чизкейк верстку и логику презентационного слоя. В мире существует множество подходов к решению этих задач. Часть того, что мы расскажем, скорее всего уже используется в индустрии. Но мы попытались собрать воедино некоторые из них, и уверены, что это станет вам полезно.

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

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

Читать далее

Асинхронное взаимодействие. Брокеры сообщений. Apache Kafka

Время на прочтение17 мин
Количество просмотров55K
Данная публикация предназначена для тех, кто интересуется устройством распределенных систем, брокерами сообщений и Apache Kafka. Здесь вы не найдете эксклюзивного материала или лайфхаков, задача этой статьи – заложить фундамент и рассказать о внутреннем устройстве упомянутого брокера. Таким образом, в следующих публикациях мы сможем делать ссылки на данную статью, рассказывая о более узкоспециализированных темах.

Привет! Меня зовут Дмитрий Шеламов и я работаю в Vivid.Money на должности backend-разработчика в отделе Customer Care. Наша компания – европейский стартап, который создает и развивает сервис интернет-банкинга для стран Европы. Это амбициозная задача, а значит и ее техническая реализация требует продуманной инфраструктуры, способной выдерживать высокие нагрузки и масштабироваться согласно требованиям бизнеса.

В основе проекта лежит микросервисная архитектура, которая включает в себя десятки сервисов на разных языках. В их числе Scala, Java, Kotlin, Python и Go. На последнем я пишу код, поэтому практические примеры, приведенные в этой серии статей, будут задействовать по большей части Go (и немного docker-compose).
Читать дальше →

Как мы выбрали архитектуру слоя представления на новом проекте и не прогадали

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

Всем привет! Меня зовут Даниил Климчук. Год назад я пришел в vivid.money третьим Android-разработчиком. Несмотря на это, в проекте практически не было кода, а первые фичи только начинали разрабатываться. Нам нужно было запустить новое банковское приложение в европе, где придется конкурировать с такими компаниями, как Revolut. Уже тогда было понятно, что команда очень быстро значительно вырастет. Конечно, стоило сразу задуматься о том, как будет развиваться архитектура проекта. Через год, когда проект запустится, на это не останется времени, а оправданий вносить значительные изменения просто не будет. Одним из ключевых решений на начальном этапе стал выбор архитектуры слоя представления. В этой статье я поделюсь тем, как мы его принимали.

Читать далее

Погружение в автотестирование на iOS. Часть 1. Как работать с accessibilityidentifier объектов

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

Всем привет!

Меня зовут Борис. Я AQA iOS-engineer в Vivid Money.

Это вступительная статья, в цикле статей по iOS-автоматизации, в которых хочется рассказать о пользе ui-тестов на проекте, их эффективном использовании и написании.

Данная статья будет полезна начинающим iOS-автоматизаторам, либо разработчикам, которые решили изучить XCUITest и покрыть свой проект ui-тестами.

Читать далее

Методы организации DI и жизненного цикла приложения в GO

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

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


В данной статье я рассмотрю самые популярные инструменты и подходы для организации иерархии зависимостей в go, с их преимуществами и недостатками. В случае, если вы знаете теорию и аббревиатура DI не вызывает у вас вопросов (в том числе и необходимость применения этого подхода), то можете начинать читать статью с середины, в первую половине я объясню, что такое DI, зачем это нужно вообще и в частности в го.

Читать дальше →

Как мы стартовали Vivid Money для iOS

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

Всем привет! Меня зовут Илья. Я - iOS техлид в Vivid Money. Мы больше года занимались разработкой нашего финтех-продукта и теперь готовы поделиться с сообществом приобретенным опытом и знаниями.
Это вступительная статья, в которой я поверхностно затрону несколько технических решений, которые мы сделали на старте, а позже будут опубликованы статьи с детальным разбором самых интересных из них.

Читать далее

Заметки лида. Часть 1. Найм

Время на прочтение6 мин
Количество просмотров5.9K
Привет, Хабр!

Меня зовут Владимир. Я отвечаю за мобильную разработку в Vivid Money.

Vivid Money — это финтех-стартап для европейского рынка с большим набором функционала — платежи и переводы, мультивалютность, финансовая аналитика, совместное пользование счетами, инвестиции и многое другое. Ближайшими конкурентами можно считать Revolut и N26.

Нам удалось сделать и успешно запустить мобильное финтех приложение за год. За этот год я собрал идеи, которые формировались у меня в голове около 4 лет, пока я был лидом на других проектах. В этой статье эти идеи собраны в виде советов software engineering manager’ам/лидам, которые стартуют долгосрочные и масштабные проекты с нуля.
Читать дальше →

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

2