Всем привет! Меня зовут Илья, я — iOS разработчик в Tinkoff.ru. В этой статье я хочу рассказать о том, как уменьшить дублирование кода в presentation слое при помощи протоколов.
Читать полностью »
Рубрика «Блог компании Tinkoff.ru» - 8
Как избавить проект от лишних килограммов
2018-11-01 в 15:28, admin, рубрики: iOS, protocol-oriented programming, swift, viper, Блог компании Tinkoff.ru, разработка мобильных приложений, разработка под iOSХакатон №1 в Tinkoff.ru
2018-10-02 в 15:40, admin, рубрики: tinkoff, Блог компании Tinkoff.ru, хакатон, ХакатоныВ прошедшие выходные наша команда участвовала в хакатоне. Я отоспался и решил написать об этом.
Это первый хакатон в стенах Tinkoff.ru, но в призах сразу же задали высокую планку — новый iPhone всем членам команды.
Итак, как все было:
В день презентации нового iPhonе команда HR прислала сотрудникам анонс про мероприятие:
Патчим AndroidX
2018-09-05 в 10:03, admin, рубрики: android development, androidx, aosp, support library, Блог компании Tinkoff.ru, Разработка под android
На Google I/O 2018 была представлена замена существующим support-библиотекам — AndroidX
Изначально, support-библиотеки разрабатывались для обратной совместимости новых API-интерфейсов и были тесно связаны с операционной системой. Разработка support-библиотек велась во внутренних ветках, которые периодически вливались в Android Open Source Project (AOSP). Такой подход ограничивал мерж пулл-реквестов от сообщества небольшими отрезками времени когда код AOSP и внутренний код гугла были синхронизированы. Кроме того, для работы с support библиотеками необходимо было выкачивать весь код платформы, а это более 40ГБ исходного кода. Для моего диска объемом 250 ГБ это достаточно много.
Как мы запустили регистрацию касс за наших клиентов
2018-08-13 в 14:43, admin, рубрики: Блог компании Tinkoff.ru, запуск нового продукта, кассы, платежные системы, Разработка под e-commerce, финансы в ITСогласно поправкам к 54-ФЗ, с июля этого года практически все торговые предприятия обязаны использовать онлайн-кассы, передающие данные через интернет в налоговую службу. Чтобы обзавестись таким аппаратом, придется купить кассу и фискальный накопитель, подписать договор и оплатить услуги оператора фискальных данных, зарегистрироваться в двух личных кабинетах ФНС и ОФД, вбить реквизиты в кассу, получить бумажный отчет о регистрации. Ну а еще понадобится электронная цифровая подпись, иначе придется приехать в ФНС и лично отстоять в очереди.
Мы решили избавить наших клиентов от всего этого ужаса, сделав сервис, регистрирующий все автоматически чуть ли не в один клик. Об этом сейчас и расскажем.
Читать полностью »
Навигация в Android-приложении с помощью координаторов
2018-07-11 в 8:31, admin, рубрики: android architecture, android development, Блог компании Tinkoff.ru, Разработка под androidЗа последние несколько лет мы выработали общие подходы создания Android-приложений. Чистая архитектура, архитектурные шаблоны (MVC, MVP, MVVM, MVI), шаблон “репозиторий” и другие. Однако до сих пор нет общепринятых подходов к организации навигации по приложению. Сегодня я хочу поговорить с вами о шаблоне “координатор” и возможностях его применении в разработке Android-приложений.
Шаблон “координатор” часто используется в iOS-приложениях и был представлен Сорушем Ханлоу (Soroush Khanlou) с целью упростить навигацию по приложению. Есть мнение, что работа Соруша основана на подходе Application Controller, описанном в книге Patterns of Enterprise Application Architecture Мартином Фаулером (Martin Fowler).
Шаблон “координатор” призван решить следующие задачи:
- борьба с Massive View Controller проблемой (о проблеме уже писали на хабре — прим. переводчика), которая зачастую проявляется с появлением God-Activity (активити с большим количеством обязанностей).
- выделение логики навигации в отдельную сущность
- переиспользование экранов приложения (активити/фрагментов) благодаря слабой связи с логикой навигации
Но, прежде чем начать знакомство с шаблоном и попробовать его реализовать, давайте взглянем на используемые реализации навигации в Android-приложениях.
Читать полностью »
Универсальное решение для UITableViewRowAction и UIContextualAction
2018-07-03 в 16:04, admin, рубрики: ios development, swift, UIContextualAction, UITableViewRowAction, xcode, Блог компании Tinkoff.ru, разработка под iOS
Многие сталкивались с проблемой реализации красивого отображения кнопок для UITableViewCell при сдвиге влево. Некоторые использовали стандартный функционал «из коробки», другие заморачивались над собственной реализацией, а кто-то обошелся Unicode-символами. В этой статье я расскажу как добиться максимальной кастомизации UITableViewRowAction.
Читать полностью »
Быстрые команды Siri
2018-06-22 в 8:53, admin, рубрики: iOS, siri, sirikit, tinkoff, Блог компании Tinkoff.ru, разработка мобильных приложенийБыстрые команды Siri
Одна из полезных (по моему мнению) фич iOS 12, представленных на WWDC 2018 — Siri Shortcuts.
Шорткат (англ. shortcut) — быстрая команда, короткий способ совершить какое-либо действие в обход стандартному сценарию.
В своих приложениях вы можете привязывать шорткаты для некоторых действий. Обучаясь на том, как и когда пользователь их выполняет, Siri начинает по-умному, в нужное время и место, предлагать ему эти шорткаты и, что самое крутое, пользователь сможет их вызывать фразами, которые сам к ним привяжет! Под катом подробнее.
Eclair — Java Spring библиотека декларативного логирования
2018-06-08 в 13:55, admin, рубрики: java, logging, open source, spring, spring boot, Блог компании Tinkoff.ru
Вопросов о работе сервисов на этапах разработки, тестирования и поддержки очень много и все они на первый взгляд непохожи: «Что произошло?», «Был ли запрос?», «Какой формат даты?», «Почему сервис не отвечает?» и т.д.
Корректно составленный лог сможет подробно ответить на эти и многие другие вопросы абсолютно автономно без участия разработчиков. В стремлении к такой заманчивой цели родилась библиотека логирования Eclair, призванная вести диалог со всеми участниками процесса, не перетягивая на себя слишком много одеяла.
Об одеяле и особенностях решения — далее.
Читать полностью »
Как мы в Тинькофф использовали Windows Hello для аутентификации пользователя
2018-05-21 в 15:49, admin, рубрики: .net, C#, uwp, windows hello, Блог компании Tinkoff.ru, разработка под windowsWindows Hello – это технология биометрической аутентификации пользователя по отпечатку пальца, сетчатки глаза, трёхмерному сканированию лица и даже по венозной схеме ладони.
В сфере оказания финансовых услуг, важна безошибочная и безопасная аутентификация пользователя. Для авторизации мы используем двухфакторную систему из связки логина и пароля или номера телефона и пароля с подтверждением по коду, отправленному на привязанный номер мобильного телефона. Для дальнейшего упрощения доступа в авторизованную зону используется 4х значный ПИН-код.
После авторизации и создания ПИН-кода, аутентификацию пользователя можно переложить на плечи Windows Hello. Общая последовательность необходимых действий выглядит следующим образом:
- Проверить возможность использования Windows Hello.
- Проверка пользователя с помощью Windows Hello, что позволяет связать авторизованного Windows пользователя с нашим клиентом.
- Кэширование созданного ранее ПИН-кода по идентификатору пользователя в защищённой области.
- При последующих запусках приложения с авторизованным пользователем, автоматически запускается процедура аутентификации пользователя посредством Windows Hello. В случае успешной аутентификации из защищённой области запрашивается кэшированный ПИН-код.
Давайте рассмотрим каждый шаг подробнее на примерах кода.
Читать полностью »
Как и зачем мы сделали свои банкоматы
2018-05-11 в 12:16, admin, рубрики: банкомат, Блог компании Tinkoff.ru, платежные системы, Разработка под e-commerce, тинькофф, управление разработкойИдея создания собственного банкомата звучала несколько безумно. Но мы сознательно пошли на риск, чтобы наделить свой банкомат новыми возможностями, которых нет у конкурентов. В этом посте мы хотим рассказать, чему научилась наша команда в процессе разработки, тестирования и развертывания собственной сети банкоматов, и объяснить, почему изобретать велосипед заново отнюдь не бесполезное занятие.