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

Введение

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-приложениях.
Читать полностью »

image

Многие сталкивались с проблемой реализации красивого отображения кнопок для UITableViewCell при сдвиге влево. Некоторые использовали стандартный функционал «из коробки», другие заморачивались над собственной реализацией, а кто-то обошелся Unicode-символами. В этой статье я расскажу как добиться максимальной кастомизации UITableViewRowAction.
Читать полностью »

Быстрые команды Siri

Одна из полезных (по моему мнению) фич iOS 12, представленных на WWDC 2018Siri Shortcuts.

Шорткат (англ. shortcut) — быстрая команда, короткий способ совершить какое-либо действие в обход стандартному сценарию.

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

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

Eclair — Java Spring библиотека декларативного логирования - 1

Вопросов о работе сервисов на этапах разработки, тестирования и поддержки очень много и все они на первый взгляд непохожи: «Что произошло?», «Был ли запрос?», «Какой формат даты?», «Почему сервис не отвечает?» и т.д.

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

Об одеяле и особенностях решения — далее.
Читать полностью »