• Как мы построили динамические отчеты на SSRS 2014


      Мы уже рассказывали, как помогли одной производственной компании трансформировать процессы корпоративного обучения и развития персонала. Сотрудники заказчика, которые тонули в бумажных документах и Excel-таблицах, получили удобное iPad-приложение и веб-портал. Одна из самых важных функций этого продукта – создание динамических отчетов, по которым руководители судят о работе сотрудников «в поле». Это огромные документы с десятками полей и средними размерами в 3000*1600 пикселей.

      В этой статье мы поговорим о том, как развернуть эту красоту на базе Microsoft SQL Server Reporting Services, почему такой бэкенд может плохо дружить с веб-порталом и какие хитрости помогут наладить их отношения. Вся бизнес-часть решения уже описана в предыдущей статье, поэтому здесь мы сосредоточимся на технических вопросах. Начнем!

      Читать дальше →
    • Xcode 11 и XCFrameworks: новый формат упаковки фреймворков


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


        В случае разработки под платформу iOS, да и в целом, экосистему Apple, есть два варианта подключать библиотеки в качестве зависимостей:


        1. Собирать их каждый раз при сборке приложения.
        2. Собирать их заранее, используя уже собранные зависимости.

        При выборе второго подхода становится логичным использовать CI/CD системы для сборки библиотек в готовые к употреблению артефакты.


        Однако, необходимость собирать библиотеки под несколько платформ или архитектур процессора в экосистеме Apple, зачастую, требует проводить не всегда тривиальные операции, как при сборке библиотеки, так и конечного продукта, который её использует.


        На этом фоне, было сложно не заметить и крайне интересно изучить, одно из нововведений от Apple, представленное на WWDC 2019 в рамках презентации Binary Frameworks in Swift — формат упаковки фреймворков — XCFramework.


        XCFramework имеет несколько преимуществ, в сравнении с устоявшимися подходами:


        1. Упаковка зависимостей под все целевые платформы и архитектуры в единый bundle из коробки.
        2. Подключение bundle в формате XCFramework, как единой зависимости для всех целевых платформ и архитектур.
        3. Отсутствие необходимости в сборке fat/universal фреймворка.
        4. Нет необходимости избавляться от x86_64 слайсов (slice) перед загрузкой конечных приложений в AppStore.

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

        Читать дальше →
        • +10
        • 4,9k
        • 2
      • Реализация пула соединений в WCF для .Net Core с использованием HttpClientFactory

          Наш продукт разрабатывается на платформе .Net Core 2.2 с использованием WCF 4.5 для взаимодействия с SOAP сервисом клиента. В процессе работы сервиса разработчики шины данных заметили высокую нагрузку на сервер. Далее стали появляться проблемы с доступом к сервису. В результате выяснили, что причина кроется в количестве активных соединений.

          Существует такая проблема как connection exhaustion. Она может возникать из-за нехватки доступных портов при установлении соединения или ограничения на количество соединений с внешним или внутренним сервисом. Есть два варианта решения:

          • Увеличение доступных ресурсов,
          • Уменьшение количества соединений.

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


          Читать дальше →
        • Цифровая трансформация обучения и аттестации полевых сотрудников

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

            Наш клиент — это федеральная компания-производитель. Её мерчендайзеры отвечают за наличие товаров в магазинах, представленность на полках, POSM материалы (реклама), знания продавца о продукции и др. Супервайзеры занимаются обучением, оценкой и контролем полевых сотрудников. Для этого есть корпоративные стандарты и четко регламентированный процесс.

            Раньше ценная информация о результатах обучения или аттестации фиксировалась только на бумаге. За день супервайзер вместе с мерчендайзером проходил 20 торговых точек и в каждой заполнял сводную бумажную анкету. Затем ее предстояло обработать, чтобы дать человеку обратную связь.



            Мы в True Engineering создали технологичный инструмент, который помогает супервайзерам спланировать развитие своей команды, зафиксировать результат и подвести итоги. В этой статье расскажем подробности.
            Читать дальше →
          • Мобильное приложение с автоматической генерацией форм: наш кейс

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



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

              Чтобы избежать многочасовой ручной работы по созданию форм, надо применить немного сообразительности и много динамического построения UI. В этой статье мы хотим поделиться способом, как решили эту задачу.
              Читать дальше →
            • Самые полезные доклады Mail.ru Design Conf × Dribbble Meetup 2019 по версии True Engineering

                В конце июня в Москве прошла крупная конференция о дизайне Mail.ru Design Conf × Dribbble Meetup 2019. Записи с трансляции уже в сети, поэтому мы выбрали самые интересные доклады, чтобы вам было удобно ориентироваться. Расскажем о них подробнее в статье.


                Читать дальше →
              • Выборочное логирование трафика для сервисов SOAP

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

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

                  В этой статье расскажем, как мы настроили выборочное логирование трафика для сервисов SOAP.


                  Читать дальше →
                • Как мы реализовали непрерывную доставку обновлений на платформу заказчика

                    Мы в True Engineering настроили процесс непрерывной доставки обновлений на сервера заказчика и хотим поделиться этим опытом.

                    Для начала мы разработали онлайн систему для заказчика и развернули её в собственном кластере Kubernetes. Теперь наше высоконагруженное решение переехало на платформу заказчика, для чего мы настроили полностью автоматический процесс Continuous Deployment. Благодаря этому, мы ускорили time-to-market – доставку изменений в продуктовую среду.

                    В этой статье мы расскажем обо всех этапах процесса Continuous Deployment (CD) или доставки обновлений на платформу заказчика:

                    1. как стартует этот процесс,
                    2. синхронизация с Git-репозиторием заказчика,
                    3. сборка бекенда и фронтенда,
                    4. автоматическое развертывание приложения в тестовой среде,
                    5. автоматическое развертывание на Prod.

                    В процессе поделимся деталями настройки.


                    Читать дальше →
                  • Обзор самых интересных докладов CodeFest 2019: версия True Engineering

                      В Новосибирске прошла юбилейная, десятая конференция CodeFest. Программа была очень насыщенной: десять секций о разработке, тестировании, дизайне, управлении и развитии. Сотрудники True Engineering два дня конспектировали доклады, теперь хотим поделиться этой пользой с вами.

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


                      Читать дальше →
                      • +14
                      • 4,5k
                      • 5
                    • Наш опыт создания API Gateway

                        Некоторые компании, в том числе наш заказчик, развивают продукт через партнерскую сеть. Например, крупные интернет-магазины интегрированы со службой доставки — вы заказываете товар и вскоре получаете трекинговый номер посылки. Другой пример — вместе с авиабилетом вы покупаете страховку или билет на аэроэкспресс.

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

                        Дано: экосистема и API-портал с интерфейсом, где пользователи зарегистрированы, получают информацию и т.п. Нам нужно сделать удобный и надежный API Gateway. В процессе нам нужно было обеспечить

                        • регистрацию,
                        • контроль подключения к API,
                        • мониторинг того, как пользователи используют конечную систему,
                        • учёт бизнес-показателей.



                        В статье мы расскажем о нашем опыте создания API Gateway, в ходе которого мы решали следующие задачи:

                        • аутентификация пользователя,
                        • авторизация пользователя,
                        • модификация исходного запроса,
                        • проксирование запроса,
                        • постобработка ответа.

                        Читать дальше →
                        • +8
                        • 10,2k
                        • 3
                      • Обзор самых интересных докладов DotNext 2018: версия EastBanc Technologies

                          Привет, хабровчане!

                          Мы вернулись с конференции для .NET-разработчиков DotNext и честно делимся впечатлениями про самые запомнившиеся доклады. Надеемся, наш отзыв пригодится тем, кто будет смотреть видеозаписи выступлений.

                          На сайте конференции опубликована часть презентаций, так что мы дополнили некоторые отзывы ссылками на них.


                          Читать дальше →
                        • Как составить стратегию тестирования: версия настоящих инженеров

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

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

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


                          Читать дальше →
                          • +11
                          • 29,8k
                          • 9
                        • Обзор самых интересных докладов Joker 2018: версия EastBanc Technologies

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

                            Надеемся, это поможет вам сориентироваться в видеозаписях с конференции, когда они появятся в открытом доступе. А пока мы добавили ссылки на презентации везде, где было возможно.



                            Читать дальше →
                            • +17
                            • 3,4k
                            • 3
                          • Как организовать CI/CD на проекте: от постановки задач до настройки конвейера развертывания

                            • Tutorial
                            В чем залог успешной настройки Continuous Delivery на проектах? Слаженная работа команд разработки, тестирования и инженеров по инфраструктуре. Спасибо, кэп, как говорится :) Но как это реализовать на практике? В этой статье поделимся нашими наработками, как это всё организовать и воплотить в жизнь.

                            Мы обобщили базовые основы в одну шпаргалку для себя и делимся с вами:


                            Опытные инженеры вряд ли узнают из статьи что-то новое, но надеемся, что начинающим специалистам эта информация пригодится.


                            Читать дальше →
                          • UI-тестирование: проверка системы на разных разрешениях

                              Тестирование длинных web-форм в различных браузерах и в разрешениях — не только крайне необходимый, но и раз уже на третий-четвертый — исключительно нудный и требующий концентрации процесс. А значит, это именно та область, которая сама просится в автоматизацию. Этим-то мы и занялись.

                              В этой статье на Хабр расскажем о нашем опыте тестирования больших экранов инструментами Protractor, Zalenium и Selenium-grid. Как мы поэтапно внедряли эти инструменты автоматического UI-тестирования и через какие сложности нам пришлось пройти.


                              Читать дальше →
                            • Найдена формула безболезненного перехода на .Net Core

                                На все про все достаточно 50 чашек кофе.


                                Помимо обозначенного выше эмпирического правила мы публикуем краткую заметку о моментах, на которые нужно обратить пристальное внимание, чтобы на бою и в процессах ничего не сломалось. Заметку составили по горячим следам релиза мобильного сервиса, совсем мигрировавшего на .Net Сore (начало было положено тут). Нам удалось выполнить эту операцию незаметно для заказчика, почти не останавливая основной процесс разработки.


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


                                Читать дальше →
                              • Как мы пишем статьи на Хабр: опыт разработчиков EastBanc Technologies

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

                                  Для начала достаточно ответить на два простых вопроса:

                                  • Зачем это мне?
                                  • Что я расскажу интересного и полезного хабраобществу?

                                  После чего можно взять план из этой статьи (или придумать свой) и сделать это.

                                  image

                                  Есть творческие этапы и технические. В этой статье поговорим о творческих. Рассмотрим:

                                  • Зачем писать статьи,
                                  • Откуда взять тему для статьи,
                                  • Где найти время, чтобы её написать,
                                  • Основные этапы работы над текстом,
                                  • Что делать, если статья «не идёт»,
                                  • И с чего начать, если ты ни разу не писал на Хабр.

                                  Надеемся, что текст пригодится и другим авторам Хабра, в том числе потенциальным.
                                  Читать дальше →
                                  • +11
                                  • 2,4k
                                  • 5
                                • Создание приложения на .NET Core и Kubernetes: наш опыт

                                    Всем привет!

                                    Сегодня расскажем об опыте одного из наших DevOps проектов. Мы решили реализовать новое приложение под Linux с использованием .Net Core на микросервисной архитектуре.

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

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

                                    Поэтому использовали такие технологии:

                                    • .Net Core для реализации микросервисов. В нашем проекте использовалась версия 2.0,
                                    • Kubernetes для оркестрации микросервисов,
                                    • Docker для создания образов микросервисов,
                                    • шина интеграции Rabbit MQ и Mass Transit,
                                    • Elasticsearch и Kibana для логирования,
                                    • TFS для реализации конвейера CI/CD.

                                    В этой статье поделимся подробностями нашего решения.



                                    Это расшифровка нашего выступления на .NET-митапе, вот ссылка на видео выступления.
                                    Читать дальше →
                                  • Как мы уместили таблицы в экран смартфона и унифицировали в рамках дизайн-системы

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

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

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

                                      Для дизайн-проектирования это ставит нам 2 задачи:

                                      1. Превратить большое в маленькое – перевести объемные списки в мобильное представление.



                                      2. Разработать подход к унификации – унифицировать мобильное представление для разных списков в рамках нашей экосистемы. Чтобы пользовательский опыт был единообразным, вне зависимости от модуля, с которым работает пользователь.

                                      В этой заметке поделимся тем, как мы подходили к решению задач перевода таблиц в списки и унификации представления разных списков.
                                      Читать дальше →
                                      • +20
                                      • 8,3k
                                      • 5
                                    • Что вас ждёт до, после и во время перехода на Kubernetes – бизнесу на заметку

                                        Всем привет!

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


                                        Читать дальше →