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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- Сброс permissions;

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

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

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

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

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

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

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

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

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

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

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

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

Истории

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Мой новый пост был навеян последним квизом по го. Обратите внимание на бенчмарк [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 это так и каждая итерация этого бенчмарка вызовет одну аллокацию. Но почему?

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

Vivid UI

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Всем привет!

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

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

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

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

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

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

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


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

Читать дальше →
Всего голосов 10: ↑8 и ↓2+7
Комментарии5

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

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

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

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

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

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

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

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

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

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

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
2