Как стать автором
Обновить
146.17
Рейтинг
QIWI
Ведущий платёжный сервис нового поколения в России
Сначала показывать

Машина Тьюринга в Doom

Блог компании QIWI Разработка игр *История IT Искусственный интеллект Игры и игровые консоли
Перевод

DOOM (игра 1993 года для DOS) полон по Тьюрингу. Это значит, что можно запустить DOOM в DOOM. В статье приводятся подробности реализации.

Предисловие


Прежде чем углубляться в разработку, нужно дать немного контекста. Если вы имеете опыт программирования, то можете пропустить краткое описание понятия полноты по Тьюрингу.

Что такое полнота по Тьюрингу?


Итак, какую-то видеоигру можно назвать универсальной, полной по Тьюрингу или программируемой. Что это означает? По сути, это значит, что в этой игре можно реализовать компьютер. Но тут есть свои тонкости: если для этого игроку придётся делать слишком много, то это будет уже не так интересно.
Читать дальше →
Всего голосов 32: ↑31 и ↓1 +30
Просмотры 10K
Комментарии 9

Сказ о том, как мы Python-микросервисы для облака шаблонизировали

Блог компании QIWI Блог компании Конференции Олега Бунина (Онтико) Python *Программирование *Микросервисы *

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

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

Меня зовут Олег Чуркин. Я больше 10 лет занимаюсь разработкой на Python и сейчас руковожу разработкой нового процессинга платежей в QIWI. Расскажу, как мы реализовали boilerplate-шаблон для сервисов — на примере небольшого стартапа внутри нашей большой компании.

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

Как мы используем фича-флаги в мобильном приложении QIWI Кошелек

Блог компании QIWI Программирование *Разработка мобильных приложений *Разработка под Android *Kotlin *

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

Меня зовут Василий Материкин, я — Android-разработчик в QIWI. В этом посте я расскажу о применении фича-флагов в QIWI Кошельке.

Внедрение Trunk-Based Development и Feature Flags

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

Поэтому мы решили перейти на Trunk-Based Development (TBD). TBD предлагает работать в небольших ветках и, желательно, чтобы они как можно быстрее были влиты основную ветку. Для этого, конечно же, реализацию нового функционала нужно оформлять небольшими пулл-реквестами, чтобы они быстро проходили ревью и были влиты в основную ветку. Это, в свою очередь, создает другую проблему — когда в главной ветке может появиться код, который ещё не готов к релизу, но при этом нам нужно как-то релизить с этим кодом приложение. Мы же релизы выпускаем достаточно часто. И для этого TBD предлагает пользоваться такими подходами, как Branch by Abstraction (BBA) и Feature Flags (FF).

BBA позволяет выделить какой-либо функционал в отдельную абстракцию. Для этого создается интерфейс, который описывает контракт для работы с этим функционалом. Сразу же можно создать его текущую реализацию, просто скопировав код, который сейчас в продакшене. Также создается другая реализация (уже с новым функционалом) и с ней уже начинается работа. То есть обычно первый пулл-реквест при работе с фичей — это выделение кода, создается две реализации, эти изменения вливаются в главную ветку и далее продолжаем работать уже над новой реализацией. При этом в проекте (в продакшене) используется всё ещё старая реализация, пока мы не закончим работать над фичей.

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

Как мы в QIWI внедряли Kotlin Multiplatform Mobile Часть 2: Смотрим шире

Блог компании QIWI Разработка мобильных приложений *Разработка под Android *Swift *Kotlin *

Это продолжение нашего рассказа о внедрении Kotlin Multiplatform Mobile в QIWI. Если хотите узнать больше про технику, посмотреть на код, переходите в первую часть. В этой статье будет больше контекста про то, как мы принимали решение, готовили прототип и внедряли технологию в команды. Наш опыт может помочь вам “продать” KMM в вашей компании и вашим стейкхолдерам. Я расскажу о плюсах и сложностях, с которыми мы столкнулись на нашем пути.

Немного истории

В QIWI мы часто пробуем что-то новое в наших процессах и в разработке. За последние 5 лет мы создали несколько приложений с нуля, используя разнообразные подходы. Например, мы впервые попробовали кросс-платформу, когда делали приложение QIWI Инвестор. Мы использовали инструмент J2ObjC, чтобы конвертировать общий модуль с кодом на Java на Objective-c для iOS. Это решение было смелым, но не самым надежным. По ходу использования было много проблем, самые большие — с конвертацией кода сторонних библиотек. В итоге проект закрылся, как и этот эксперимент. Кросс-платформенный подход оказался рабочим, но мы отложили его в сторону пока не появился более надежный инструмент.

В 2018 году мы перешли от платформенных команд к кросс-функциональным. Это стало самым большим изменением в процессе разработки c внедрения скрама. “Совместное владение кодом” стало нашей новой ценностью. Границы между платформами начали размываться, мы стали внимательнее изучать код на других платформах, вместе принимали решения и делились лучшими практиками.

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

Как мы в QIWI внедряли Kotlin Multiplatform Mobile (KMM)

Блог компании QIWI Разработка мобильных приложений *Разработка под Android *Swift *Kotlin *

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

Меня зовут Кирилл Васильев, и я хотел бы рассказать, как мы в QIWI внедряли Kotlin Multiplatform Mobile (KMM). 

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

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

5% из 666 репозиториев Python содержат ошибки из-за запятых (в том числе Tensorflow, PyTorch, Sentry и V8)

Блог компании QIWI Python *Программирование *Совершенный код *TensorFlow *
Перевод
Мы выяснили, что в 5% из 666 исследованных нами репозиториев Python с открытым исходным кодом на GitHub есть три бага, вызванных ошибочным использованием запятых.

Слишком мало запятых


Случайно пропущенная запятая в строке списка/кортежа/множества, приводящая к ненужной конкатенации строк.

Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Просмотры 5.2K
Комментарии 7

9 декабря — QIWI Server Party 7.0, онлайн

Блог компании QIWI Тестирование IT-систем *MongoDB *Конференции Микросервисы *

Привет! В следующий четверг, 9 декабря, мы проведём наш седьмой QIWI Server Party.

Обсудим оптимизацию приложений на MongoDB, поделимся опытом проведения интеграционного тестирования в условиях множества сторонних API. Кроме этого — рассмотрим проблему с распределенными транзакциями в микросервисной архитектуре и поговорим об автоматизации создания дашбордов. В этот раз — всё в формате онлайн-трансляции на нашем Youtube-канале.

Зарегистрироваться можно на этой странице.

Под катом — программа митапа.

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

Security awareness — больше, чем просто фишинг. Часть 1

Блог компании QIWI Информационная безопасность *IT-компании

Чаще всего, когда читаешь про security awareness или повышение киберграмотности, то речь идет о фишинговых атаках - поддельные письма, сайты, странные вложения и прочее. Конечно, фишинг по-прежнему остается одним из основных сценариев атаки на сотрудников, но повышение осведомленности не должно ограничиваться только этим.

Мы в QIWI на протяжении последних 7 лет проводим недели безопасности, в рамках которых освещаем различные аспекты информационной безопасности. Расскажу про разные форматы заданий, которые мы проводили, какие плюсы и минусы были в каждом и почему. Надеюсь, что этот опыт будет полезен при проведении аналогичных активностей.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 1.7K
Комментарии 1

Developer Experience — как упростить себе жизнь с помощью правильных инструментов

Блог компании QIWI Управление разработкой *Управление проектами *DevOps *

Привет!

Продолжаем публиковать текстовые версии докладов с QIWI Server Party 6.0, в этом посте — Александр Прокопьев и Developer Experience. Про инструменты, их качество и развитие инструментов разработчиков в QIWI.

Если предпочитаете формат видео — держите.

А вот и текст.

У меня есть любимая притча. Мужик пилит дерево. Другой к нему подходит и спрашивает: 

— Как дела? Давно пилишь?
— Три дня уже.
— Что-то долго. Может, тебе стоит пилу заточить?
— Не, некогда точить, нужно дерево пилить. 

И в IT такое бывает часто. Работаешь над какой-нибудь рутинной задачей и думаешь, что вот наверняка есть какой-то инструмент, который может автоматизировать эту работу. Но сроки горят, и мы говорим себе: «Не в этот раз». И оставляем на потом. А когда работа завершается, мы быстро забываем про эту боль. 

Я, например, до сих пор использую старый SQL Developer для работы с базой данных, хотя все коллеги давно перешли на DataGrip. И они периодически подталкивают меня, а мне все лень. Кто-то пользуется Git-ом и никак не соберется с силами, чтобы изучить его поглубже, добавить в свой багаж более глубокие команды. А кто-то использует IDE и не изучает горячие клавиши или плагины, которые могут помочь в работе.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 2.5K
Комментарии 3

Безопасность Kubernetes — это просто

Блог компании QIWI Информационная безопасность *Микросервисы *Kubernetes *
Tutorial

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

Эта статья - расшифровка доклада с QIWI Server Party

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

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

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

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 4.1K
Комментарии 2

6 правил, которые пригодились бы мне, когда я осваивал программирование

Блог компании QIWI Программирование *Совершенный код *Карьера в IT-индустрии
Перевод

В кодинге главное — не кодинг


Как вы думаете, что такое программирование?

Написание кода?

Написание хорошего кода?

Нет.

Это только часть истины.

Программирование — это не про кодинг. Программирование — это о решении задач при помощи кодинга.

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

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

Это самое важное, что я бы хотел знать, когда учился программированию.
Читать дальше →
Всего голосов 52: ↑45 и ↓7 +38
Просмотры 32K
Комментарии 51

Компромисс скорости и качества разработки в agile. Как найти баланс

Блог компании QIWI Разработка под e-commerce *Управление разработкой *Agile *

Привет!

Меня зовут Тимофей, и я продуктовый разработчик. О продуктовой разработке подробнее можно почитать тут

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

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

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

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

Читать далее
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 2.7K
Комментарии 6

PlantUML — инструмент продуктового разработчика

Блог компании QIWI Программирование *Анализ и проектирование систем *Проектирование и рефакторинг *UML Design *
✏️ Технотекст 2021

Я дико люблю ковыряться в чужом коде. Это одна из моих любимых специализаций. То есть я просто беру чужой код, анализирую его, читаю. Как я читал его раньше: я переводил код в русский язык. Описывал, что происходит по флоу кода, и пытался понять, что там происходит. Эти записи я в дальнейшем использовал как для написания статей в Confluence, так и для общего понимания происходящего.

С одной стороны, решение работающее. С другой, буквально через неделю-две я уже начинал сомневаться, достаточно точно ли я «перевел» с кода на русский язык? И тогда вспомнил про UML-диаграммы. И вместо того, чтобы записывать текст, стал визуализировать его и исписал неимоверное количество тетрадей. 

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

Давайте вспомним, что такое Unified Modeling Language. Чаще всего в университете UML используется для описания диаграммы классов.

Читать далее
Всего голосов 28: ↑28 и ↓0 +28
Просмотры 12K
Комментарии 18

19 августа — митап QIWI Android Developer Days

Блог компании QIWI Программирование *Разработка под Android *Kotlin *Конференции

Привет!

Это будет наш первый митап, посвященный разработке на Android. Бесплатно, можете как приходить лично (Москва, 2-й Кожуховский проезд, д.29 корп. 6. LOFT HALL №4 (Зал Andy Hall)), так и подключаться онлайн. Если решите прийти лично, главное — зарегистрироваться заранее.

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

Всего будет 7 спикеров, среди которых специальный гость — Илья Линник, человек, работающий с Android более 10 лет и заставший первые API.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 678
Комментарии 0

Продуктовый подход — польза и для бизнеса, и для разработчика

Блог компании QIWI Управление разработкой *Agile *Управление продуктом *
Привет!

Я продуктовый разработчик, но так было не всегда. Лет 5 назад я впервые услышал фразу «продуктовая разработка», но я тогда не совсем понимал, что это значит. Мне говорят — вот у нас продукт, ну а я пишу код и пишу, чего такого-то. Есть ТЗ — и славно, нет ТЗ — как говорится, и результат будет ХЗ

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

Потом что-то поменялось в моей работе — ТЗ не стало. Это такой следующий шажок. Вот мы в продукте работаем, а теперь у нас еще и ТЗ нет. И что делать? Началось осознание того, что происходит.

Во-первых, продукт не имеет четкого начала и конца. Нет каких-то границ. Вот в проекте у нас были границы. Например, количество функций, которые нужно сделать, количество разработчиков, которые работают над проектом, дедлайны всякие, когда проект должен закончиться. У продукта же таких границ нет, он живёт, и его надо развивать.
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 5.5K
Комментарии 2

if-then-else кто-то должен был изобрести

Блог компании QIWI Программирование *Совершенный код *История IT
Перевод
Привет, сегодня мы обсудим кажущуюся абсурдной идею: if-then-else кто-то должен был изобрести.


If-then-else — это условные конструкции в языках программирования: если (if) что-то истинно, тогда (then) выполнить одно действие, иначе (else) выполнить другое действие.

Это ведь просто английский? На самом деле нет.

В обычной речи на английском нельзя использовать «else» в качестве союза, это слово используется так только в компьютерных программах.

Откуда вообще взялось else? Это загадка. Настолько микроскопическая деталь, что она не попала в книги по истории языков программирования.
Читать дальше →
Всего голосов 85: ↑85 и ↓0 +85
Просмотры 25K
Комментарии 36

Запускаем softPOS. Почему пилоты бывают полезны не только бизнесу, но и разработчикам

Блог компании QIWI Платежные системы *Разработка под Android *Администрирование баз данных *Финансы в IT
Привет!

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

И в один прекрасный день мы поняли, что у нас отличная экспертиза во всём, что связано с core-спецификой рынка платежей, но вот представлены наши платежные услуги только в онлайне. А такого, чтобы в офлайне, в магазине просто прийти и заплатить за товар, привычно коснувшись картой терминала, у нас просто нет.

Так пришли идея запустить пилот с softPOS. В случае с классическими POS-терминалами штука в том, что этот рынок весьма коммодитизирован: игроков много, они крупные, условия у всех вполне себе неплохие. И получается, что врываться с ноги на рынок POS и пытаться там конкурировать — себе дороже. Можно, конечно. Какое-то время, и довольно короткое. В общем, мы пропустили этап с POS и стали смотреть сразу в сторону softPOS. Знаете, как в Китае: там не особо были распространены терминалы оплат, народ как-то сразу пришёл к QR-кодам и прокачанным платежам в национальных мессенджерах. Вот и тут перешагнули через ступеньку.

Но давайте по порядку.

Что такое softPOS и для кого он пригодится


Это возможность превращения смартфона с NFC в платёжный терминал при помощи софта, как понятно из названия. С точки зрения рынка это очень сырая технология, в РФ не применяется (в лучшем случае есть пара штук в фазе базового пилота). В реальной жизни пока такое встретить нельзя. То есть курьеры, которые к вам приезжают, в случае с безналичной оплатой либо достают POS-терминал, к которому вы прикладываете карточку, либо просят перевести средства по номеру телефона.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 2.2K
Комментарии 4

История Linux Live CD

Блог компании QIWI *nix *История IT Старое железо
Перевод

Продать новую идею может быть тяжело, особенно в случае, если аудитория может ее не принять. Возможно, ей интересно было бы попробовать новый продукт, но только если усилия окажутся минимальными. Люди хотят, чтобы при первом признаке опасности у них под рукой была кнопка «Выход». Последние 20 лет это было практически девизом Linux Live CD: вставьте этот диск (или USB-флэшку) в свой компьютер, попробуйте систему, посмотрите, понравится ли она вам. Если она вам понравится, установите ее. Возможно, вам трудно представить, как мы пришли к такому вполне привычному сейчас формату, когда частью Linux является физический компонент. Это было огромным конкурентным преимуществом Linux. В сегодняшней статье мы расскажем о необычной истории самых первых live CD Linux
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 7.7K
Комментарии 17

Почему в мире так много отстойного ПО

Блог компании QIWI Программирование *Совершенный код *Управление разработкой *
Перевод
Мы буквально окружены отстойным программным обеспечением. Пенсионные фонды спотыкаются об написанные десятки лет назад пакетные скрипты с ошибочными допущениями. Из кредитных организаций утекает более сотни миллионов номеров социального обеспечения и других конфиденциальных данных. И это ещё не говоря о куче забагованного и раздражающего ПО, создаваемых и мелкими поставщиками, и крупными корпорациями.

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

Чтобы понять причину этого, нам сначала нужно понять, как соотносится навык разработчика с полезностью ПО, которое он создаёт для решения определённой задачи.
Читать дальше →
Всего голосов 21: ↑18 и ↓3 +15
Просмотры 11K
Комментарии 28

22 апреля — новый QIWI Server Party

Блог компании QIWI Kotlin *Карьера в IT-индустрии Конференции Kubernetes *
Привет! Мы продолжаем проводить QIWI Server Party.

На этот раз — 22 апреля (четверг). Обсудим сразу много полезных штук — продуктовую разработку и developer experience, спринты и инженерные практики, PlantUML (ага, да) и архитектуру платёжного шлюза, разберемся, как разрешать вечные конфликты между разработкой и бизнесом.


А ещё немного похоливарим — стоит ли просить кандидатов писать код на собеседовании? Затронем и эту тему в формате круглого стола. Кстати, аргументированные мнения с радостью почитаем и в комментах.

В общем, будет интересно. Как всегда, вход бесплатный, главное — зарегистрируйтесь заранее.

Программа под катом
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 788
Комментарии 0

Информация

Местоположение
Россия
Сайт
qiwi.com
Численность
1 001–5 000 человек
Дата регистрации