Рубрика «Блог компании Tinkoff.ru»

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

От джуниора до директора: байки одного безопасника - 1
Читать полностью »

Вступление

В рамках программы кредитования банк сотрудничает со многими розничными магазинами.
Одним из ключевых элементов заявки на кредит является фотография заемщика – агент магазина-партнера фотографирует покупателя; такая фотография попадает в «личное дело» клиента и используется в дальнейшем как один из способов подтверждения его присутствия на точке в момент подачи заявки на кредит.

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

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

Читать полностью »

Всем привет!

Меня зовут Дмитрий. Так получилось, что я являюсь тим лидом в команде из 13 iOS разработчиков уже на протяжении двух лет. И вместе мы трудимся над приложением Тинькофф Бизнес.

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

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

Поехали!

Читать полностью »

Введение

Angular предоставляет удобный декларативный способ подписки на события в шаблоне, с помощью синтаксиса (eventName)="onEventName($event)". Вместе с политикой проверки изменений ChangeDetectionStrategy.OnPush подобный подход автоматически запускает цикл проверки изменений только по интересующему нас пользовательскому вводу. Иными словами, если мы слушаем (input) событие на <input> элементе, то проверка изменений не будет запускаться, если пользователь просто кликает по полю ввода. Это значительно улучшает
производительность, по сравнению с политикой по умолчанию (ChangeDetectionStrategy.Default). В директивах мы также можем подписаться на события на хост-элементе через декоратор @HostListener('eventName').

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

Читать полностью »

Сколько отличий вы найдете за 10 секунд?

«Найди N отличий». Опыт тестирования верстки Tinkoff.ru - 1

Наш тестировщик найдет ВСЕ отличия. И даже те, которые не видны. Ниже я расскажу о том, как он это сделает, но для начала немного введу вас в курс дела.
Читать полностью »

Как избавить проект от лишних килограммов - 1
Всем привет! Меня зовут Илья, я — iOS разработчик в Tinkoff.ru. В этой статье я хочу рассказать о том, как уменьшить дублирование кода в presentation слое при помощи протоколов.
Читать полностью »

В прошедшие выходные наша команда участвовала в хакатоне. Я отоспался и решил написать об этом.

Это первый хакатон в стенах Tinkoff.ru, но в призах сразу же задали высокую планку — новый iPhone всем членам команды.

Итак, как все было:

В день презентации нового iPhonе команда HR прислала сотрудникам анонс про мероприятие:

Хакатон №1 в Tinkoff.ru - 1
Читать полностью »

Патчим AndroidX - 1

На Google I/O 2018 была представлена замена существующим support-библиотекам — AndroidX

Изначально, support-библиотеки разрабатывались для обратной совместимости новых API-интерфейсов и были тесно связаны с операционной системой. Разработка support-библиотек велась во внутренних ветках, которые периодически вливались в Android Open Source Project (AOSP). Такой подход ограничивал мерж пулл-реквестов от сообщества небольшими отрезками времени когда код AOSP и внутренний код гугла были синхронизированы. Кроме того, для работы с support библиотеками необходимо было выкачивать весь код платформы, а это более 40ГБ исходного кода. Для моего диска объемом 250 ГБ это достаточно много.

Читать полностью »

Согласно поправкам к 54-ФЗ, с июля этого года практически все торговые предприятия обязаны использовать онлайн-кассы, передающие данные через интернет в налоговую службу. Чтобы обзавестись таким аппаратом, придется купить кассу и фискальный накопитель, подписать договор и оплатить услуги оператора фискальных данных, зарегистрироваться в двух личных кабинетах ФНС и ОФД, вбить реквизиты в кассу, получить бумажный отчет о регистрации. Ну а еще понадобится электронная цифровая подпись, иначе придется приехать в ФНС и лично отстоять в очереди.

Как мы запустили регистрацию касс за наших клиентов - 1

Мы решили избавить наших клиентов от всего этого ужаса, сделав сервис, регистрирующий все автоматически чуть ли не в один клик. Об этом сейчас и расскажем.
Читать полностью »

За последние несколько лет мы выработали общие подходы создания Android-приложений. Чистая архитектура, архитектурные шаблоны (MVC, MVP, MVVM, MVI), шаблон “репозиторий” и другие. Однако до сих пор нет общепринятых подходов к организации навигации по приложению. Сегодня я хочу поговорить с вами о шаблоне “координатор” и возможностях его применении в разработке Android-приложений.

Шаблон “координатор” часто используется в iOS-приложениях и был представлен Сорушем Ханлоу (Soroush Khanlou) с целью упростить навигацию по приложению. Есть мнение, что работа Соруша основана на подходе Application Controller, описанном в книге Patterns of Enterprise Application Architecture Мартином Фаулером (Martin Fowler).

Шаблон “координатор” призван решить следующие задачи:

  • борьба с Massive View Controller проблемой (о проблеме уже писали на хабре — прим. переводчика), которая зачастую проявляется с появлением God-Activity (активити с большим количеством обязанностей).
  • выделение логики навигации в отдельную сущность
  • переиспользование экранов приложения (активити/фрагментов) благодаря слабой связи с логикой навигации

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