company_banner
  • Верификация фотографий в ритейле с помощью Computer vision

      Вступление


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

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

      Обычно банки решают эту задачу с помощью верификации фотографии – сотрудники офиса просматривают фотографии и пытаются выявить недостоверные изображения.
      Мы захотели попробовать автоматизировать процесс и решить задачу с помощью нейросетей.
      Читать дальше →
      • +14
      • 1,9k
      • 7
    • The New iOS Mobile Enterprise. Часть #1: Кодогенерация для ресурсов

        Всем привет!


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


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


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


        Поехали!

        Читать дальше →
        • +15
        • 2,4k
        • 7
      • Оптимизация обработки событий в Angular

          Введение


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


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

          Читать дальше →
          • +35
          • 6,3k
          • 6
        • «Найди N отличий». Опыт тестирования верстки Tinkoff.ru

            Статья публикуется от имени Кочеткова Александра и Красс Снежаны

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



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



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

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

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

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

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


                Читать дальше →
                • +17
                • 9,7k
                • 4
              • Патчим AndroidX


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


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

                  Читать дальше →
                  • +20
                  • 5,2k
                  • 7
                • Как мы запустили регистрацию касс за наших клиентов

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



                    Мы решили избавить наших клиентов от всего этого ужаса, сделав сервис, регистрирующий все автоматически чуть ли не в один клик. Об этом сейчас и расскажем.
                    Читать дальше →
                  • Навигация в 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-приложениях.
                    Читать дальше →
                    • +16
                    • 6,2k
                    • 6
                  • Универсальное решение для UITableViewRowAction и UIContextualAction



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

                      • Tutorial


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


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


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

                      Читать дальше →
                      • +39
                      • 11,1k
                      • 5
                    • Eclair — Java Spring библиотека декларативного логирования



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

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

                        Об одеяле и особенностях решения — далее.
                        Читать дальше →
                      • Как мы в Тинькофф использовали Windows Hello для аутентификации пользователя

                          Windows Hello

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

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


                          После авторизации и создания ПИН-кода, аутентификацию пользователя можно переложить на плечи Windows Hello. Общая последовательность необходимых действий выглядит следующим образом:


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

                          Давайте рассмотрим каждый шаг подробнее на примерах кода.
                          Читать дальше →
                        • Как и зачем мы сделали свои банкоматы

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

                            Читать дальше →
                          • Генератор статических сайтов metalsmith

                            • Tutorial


                            С каждым годом происходит развитие технологий, используемых разработчиками front-end. И здесь речь идет не только о конкретных фреймворках и архитектурных паттернах для реализации клиентской логики в браузерах, но и о различных альтернативных инструментах, таких как, например, генераторы статических сайтов. Их основной целью является упрощение процесса создания статических сайтов. Безусловно они не являются универсальным инструментом, но в некоторых случаях они подходят как нельзя лучше:

                            • Прототип web-интерфейса
                            • Блог с редко обновляемым контентом
                            • Отдельная статическая часть другого web-приложения
                            • Сайт-визитка или landing-page
                            • Онлайн-документация
                            Читать дальше →
                            • +20
                            • 10,4k
                            • 3
                          • Юнит-тестирование. Чип-тюнинг

                            image


                            Не важно, какой подход применяется при написании тестов: TDD, BDD, или какой-то другой. Юнит- тесты это первичный защитный барьер, который помогает избежать багов. А хорошо описанные кейсы помогут коллегам понять, что происходит в проекте и не наломать дров в коде.

                            Читать дальше →
                          • Реактивные приложения с Model-View-Intent. Часть 3: State Reducer

                            • Перевод


                            В предыдущей части мы обсудили, как реализовать простой экран с паттерном Model-View-Intent, использующим однонаправленный поток данных. В третьей части мы построим более сложный экран с MVI с помощью State Reducer.
                            Читать дальше →
                            • +18
                            • 5,7k
                            • 3
                          • Data Modeling Zone EU 2017

                            В самом начале нового рабочего года — несколько слов об одном из событий года прошедшего.

                            Введение


                            Data Modeling Zone — франшиза, которая объединяет конференции по вопросам построения логической архитектуры баз данных. Последние несколько лет проводилась в США и Европе, а в этом году впервые пройдет в Австралии. В 2017 году под брендом DMZ было организовано два форума, оба прошли осенью: 16—18 октября — в Хартфорде, США, а 23—25 октября — в немецком Дюссельдорфе. Мне довелось принять участие в роли слушателя в последней из них. В этой статье представлен краткий обзор презентаций, которые я увидел на конференции, и мои впечатления о ней в целом.

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

                            Основная программа была представлена пятью треками:

                            • Foundational Data Modeling
                            • Agile and Requirements
                            • Big Data and Architecture
                            • Hands-On and Case Studies
                            • Advanced Data Modeling
                            каждый из которых был поделен на 11 временных слотов в течение двух дней. Временная нарезка у всех пяти треков была общая, что позволило комбинировать презентации из разных блоков.

                            1-й день


                            Регистрация


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

                            image

                            Читать дальше →
                          • Нагрузочное тестирование на фреймворке Gatling

                              Статья публикуется от имени Масленникова Сергея, sergeymasle


                              UPD. Добавлен раздел "Реализация расширения для Gatling"


                              Gatling


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

                              Читать дальше →
                            • Космическая съёмка Земли


                                Cпутниковый снимок в ложных цветах (зелёный, красный, ближний инфракрасный) с пространственным разрешением 3 метра и наложенной маской зданий из OpenStreetMap (спутниковая группировка PlanetScope)

                                Привет, Хабр! Мы постоянно расширяем источники данных, которые используем для аналитики, поэтому решили добавить ещё и спутниковые снимки. У нас аналитика по спутниковым снимкам полезна в продуктах для предпринимательства и инвестиций. В первом случае статистика по геоданным поможет понять, в каком месте стоит открывать торговые точки, во втором позволяет анализировать деятельность компаний. Например, для строительных компаний можно посчитать, сколько за месяц было построено этажей, для сельскохозяйственных компаний — сколько гектаров урожая взошло и т.д.

                                В этой статье я постараюсь дать примерное представление о космической съёмке Земли, расскажу о трудностях, с которыми можно столкнуться, начиная работу со спутниковыми снимками: предварительная обработка, алгоритмы для анализа и библиотеки Python для работы со спутниковыми снимками и геоданными. Так что все, кому интересна область компьютерного зрения, добро пожаловать под кат!
                                Читать дальше →

                              Самое читаемое