Как стать автором
Обновить
474.58
Сначала показывать

Юнит-тестирование. Чип-тюнинг

Время на прочтение5 мин
Количество просмотров8.1K

image


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

Читать дальше →
Всего голосов 34: ↑31 и ↓3+28
Комментарии12

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

Время на прочтение11 мин
Количество просмотров9.6K


В предыдущей части мы обсудили, как реализовать простой экран с паттерном Model-View-Intent, использующим однонаправленный поток данных. В третьей части мы построим более сложный экран с MVI с помощью State Reducer.
Всего голосов 20: ↑19 и ↓1+18
Комментарии3

Data Modeling Zone EU 2017

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

Введение


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

Читать дальше →
Всего голосов 15: ↑9 и ↓6+3
Комментарии1

Нагрузочное тестирование на фреймворке Gatling

Время на прочтение14 мин
Количество просмотров24K

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


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


Gatling


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

Читать дальше →
Всего голосов 12: ↑6 и ↓60
Комментарии7

Apache Kafka и миллионы сообщений в секунду

Время на прочтение4 мин
Количество просмотров88K

Мы в компании любим и уважаем Apache Kafka, и в ознаменование выхода ее недавнего обновления я решил подготовить статью про ее производительность. А еще рассказать немного про то, как выжать из нее максимум.
Читать дальше →
Всего голосов 43: ↑38 и ↓5+33
Комментарии24

MVP – это не черновой вариант! Точно?

Время на прочтение8 мин
Количество просмотров22K


Что такое MVP?


MVP (minimum viable product — минимально жизнеспособный продукт) – это продукт, который разрабатывается с максимальной экономией денег и ресурсов, как правило, с единственной целью – проверки гипотезы. Гипотеза, как правило, заключается в необходимости и/или полезности этого продукта.


MVP ни в коем случае не означает “черновой вариант”, сделанный в спешке, который после завершения выбросят и будут писать с нуля.


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

Читать дальше →
Всего голосов 34: ↑27 и ↓7+20
Комментарии23

Octopus Deploy. Улучшаем мир в кровавом энтерпрайзе

Время на прочтение9 мин
Количество просмотров14K


Сегодня я хочу рассказать о системе деплоя Octopus Deploy. На данный момент на Хабре есть всего одна вводная статья на эту тему, поэтому в своем материале я хочу расширить описание системы, подробнее рассказать о таких важных понятиях как «жизненные циклы» (lifecycles) и «каналы» (channels), а также о том, как мы внедрили и используем Octopus в своей работе.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии9

Создание Tinkoff Design System. UI Kit, версионирование и витрина компонентов

Время на прочтение6 мин
Количество просмотров55K
image

В предыдущей публикации я рассказал о том, как мы пришли к пониманию необходимости создания дизайн-системы, и какой профит мы можем получить от ее внедрения. И, конечно, процессы создания и внедрения не такие простые, как кажутся на первый взгляд. Мы столкнулись с рядом серьезных проблем, которые нам предстояло решить. Именно о процессе создания и трудностях пойдет речь в этой статье.
Читать дальше →
Всего голосов 60: ↑44 и ↓16+28
Комментарии39

Пишем телеграм бота-парсера вакансий на JS

Время на прочтение7 мин
Количество просмотров33K


Тема создания ботов для Telegram становится все более популярной, привлекая программистов попробовать свои силы на этом поприще. У каждого периодически возникают идеи и задачи, которые можно решить, написав тематического бота. Для меня, как программиста на JS, пример такой актуальной задачи — мониторинг рынка вакансий по соответствующей тематике.

Однако одним из наиболее популярных языков и технологий в сфере создания ботов является Python, предлагающий программисту огромное количество хороших библиотек для обработки и парсинга различных источников информации в виде текста. Мне же захотелось сделать это именно на JavaScript — одном из моих любимых языков.
Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии8

Реактивные приложения с Model-View-Intent. Часть 2: View и Intent

Время на прочтение9 мин
Количество просмотров22K
В первой части мы обсудили что такое модель, ее связь с состоянием и то, как правильно спроектированная модель помогает решить некоторые проблемы в разработке под Android. В этой статье мы продолжим наш путь к созданию реактивных приложений с помощью паттерна Model-View-Intent.

Прежде, чем начать, вкратце обсудим основную идею MVI.

Model-View-Intent (MVI)


Этот паттерн был описан Андре Штальтцем (André Staltz) для JavaScript-фреймворка cycle.js. С теоретической и математической точки зрения MVI можно описать следующим образом:

image

Всего голосов 13: ↑12 и ↓1+11
Комментарии4

Мультиформатные баннеры в Tinkoff.ru и подход к верстке адаптивных баннеров в Google AdWords

Время на прочтение7 мин
Количество просмотров9.6K
Сегодня я расскажу о том, как удивительно устроены адаптивные баннеры в Google AdWords и что делать, если для рекламной кампании нарисовали только один баннер.

image

Реализация мультиформатного баннера, шаблон Leaderboard 1.

Мы обратили внимание, что проблема адаптивного баннера уже решена для медийных баннеров в AdWords, и детально исследовали эту технологию. Обнаружили много интересного, подробности — под катом.
Читать дальше →
Всего голосов 59: ↑30 и ↓29+1
Комментарии18

Проблемы React UI Kit-а и единой дизайн-системы, о которых вы не знали

Время на прочтение8 мин
Количество просмотров24K


2 сентября 2017 прошла конференция Moscow Frontend, где я на примере React UI Kit рассказывала о проблемах, которые встречаются при внедрении UI Kit в компании. Тема оказалась актуальнее, чем я могла предположить, поэтому решила опубликовать статью по этой же тематике, преследуя две цели: донести материал до людей, которые не смогли оказаться на конференции лично, и предоставить отличную возможность провести жаркую дискуссию на эту тему в комментариях.

Приятный бонус заключается в том, что после выступления и дискуссий в кулуарах в моем материале к докладу появились дополнения и нововведения. Поэтому, даже если вы были на конференции, вам все равно будет интересно прочитать статью. В конце материала я оставила несколько вопросов, на которые я попрошу ответить в комментариях. Приятного чтения!
Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии39

Проверка внедрения зависимостей на Swift

Время на прочтение5 мин
Количество просмотров5.3K

image


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


В этой статье описаны несколько вариантов поиска пустых зависимостей. А в нашем репозитории есть небольшая библиотека, которая поможет в этом: TinkoffCreditSystems/InjectionsCheck

Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии2

Борьба за время сборки iOS-приложений

Время на прочтение4 мин
Количество просмотров12K
Чуть больше месяца назад мы выпустили iOS-приложение «Тинькофф Инвестиции». Приложение полностью написано на языке Swift, но имеет некоторые Objective-C-зависимости. Продукт быстро начал обрастать новой функциональностью, а вместе с тем время сборки проекта существенно увеличивалось. Когда мы пришли к тому, что после clean или значительных правок проект собирался дольше шести минут, мы осознали, что перемены необходимы.

image

На просторах интернета было найдено много действенных и не очень способов ускорить время сборки проекта. Особенно нас интересовало время сборки debug-версии, потому что работать становилось всё сложнее. Ниже я расскажу о методах, которые мы опробовали в рамках решения задачи, и результатах, которых мы добились. Хочу отметить, что долгое время сборки может зависеть от разных факторов, поэтому и методы для каждого проекта используются разные.
Читать дальше →
Всего голосов 24: ↑20 и ↓4+16
Комментарии16

Проблема сохранения контекста при асинхронном программировании в scala

Время на прочтение7 мин
Количество просмотров6.7K
В какой-то момент в проекте встает вопрос отслеживания хода выполнения операции, получения или складирование какой-то информации о ней. Для этого как нельзя лучше служит контекст операции, например, контекст клиентской сессии. Если вам интересно, как это можно сделать относительно безболезненно, прошу под кат.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии30

Формы и кастомные поля ввода в Angular 2+

Время на прочтение10 мин
Количество просмотров28K
imageМеня зовут Павел, я фронтенд-разработчик Tinkoff.ru. Наша команда занимается разработкой интернет-банка для юридических лиц. Фронтенд наших проектов был реализован с применением AngularJS, с которого мы перешли, частично с использованием Angular Upgrade, на новый Angular (ранее позиционировался как Angular 2).

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

В этой статье мы заглянем «под капот» реализации форм в Angular и разберёмся, как создавать кастомные поля ввода.

Предполагается, что читатель знаком с основами Angular, в частности, со связыванием данных и внедрением зависимостей (ссылки на официальные гайды на английском языке). На русском языке со связыванием данных и основами Angular в целом, включая работу с формами, можно познакомиться здесь. На Хабрахабре уже была статья про внедрение зависимостей в Angular, но нужно учитывать, что написана она была задолго до выхода релизной версии.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии14

Создание Tinkoff Design System. Первые шаги

Время на прочтение5 мин
Количество просмотров63K
В цикле статей Tinkoff Design System я расскажу, как мы строим нашу дизайн-систему по методологии Atomic Design.

Читать дальше →
Всего голосов 48: ↑40 и ↓8+32
Комментарии29

Визуализация простой геометрии в WPF

Время на прочтение4 мин
Количество просмотров10K

Что такое геометрия модели


Для работы с 3D моделями мы используем специальные конвейеры обработки — OpenGL и DirectX. Когда конвейеры строят картину, они используют информацию:

  • о модели — её материале, геометрии и текстурах,
  • о сцене — освещении и настройке камеры.

Любая модель начинается с геометрии. Геометрия модели — это набор точек в трехмерном пространстве и набор треугольников из этих точек. Треугольник компланарен — он лежит в плоскости, в отличие от фигур с большим числом точек, которые в общем случае не лежат в плоскости.

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

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

image
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии8

Реактивные приложения с Model-View-Intent. Часть 1: Модель

Время на прочтение9 мин
Количество просмотров32K
При работе с платформой Android я столкнулся со множеством проблем, потому что проектировал свои Модели неправильно. Мои приложения были недостаточно реактивными. Теперь используя RxJava и Model-View-Intent (MVI) я, наконец, добился нужного уровня реактивности. Об этом я пишу цикл статей. В первой части расскажу о модели и объясню, чем она важна.
Всего голосов 16: ↑16 и ↓0+16
Комментарии8

Автоматизация мобильных приложений с SeeTest Automation

Время на прочтение5 мин
Количество просмотров14K
Статья публикуется от имени Батеевой Екатерины, Neifmetus

image

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

В нашем банке мы тоже наблюдаем эту тенденцию: мобильное приложение по сравнению с интернет-банком используют на порядок больше пользователей. Поэтому остро встал вопрос автоматизации тестирования мобильного приложения. Несмотря на повсеместное использование мобильных приложений, средства для их автоматизированного тестирования далеко не идеальны. Кроме того, мы предъявляем к ним высокие требования. Например, самый популярный фреймворк Appium — open-source решение, поддерживающее платформы Android и iOS, — нам не подошел. Наши разработчики использовали много модных библиотек, и взаимодествовать с приложением иногда приходилось на более низком уровне. UI Automator и UI Automation оказались более сложными в развертывании, каждое приложение использовало свой язык для написания тестов, из-за чего возникали проблемы при перераспределении между платформами в команде автотестирования.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии9

Информация

Сайт
l.tbank.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия